Commit cb3d2700f41af1e6d401336f60cdb9d2dd05c9a5

Darren Embry 2023-11-24T13:50:30

helper files

diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..ba8d172
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,51 @@
+# Options for EditorConfig, a file format for specifying indentation
+# size, tabs vs. spaces, and other aspects of coding styles.  Most
+# editors and IDEs support EditorConfig, either out of the box or via
+# available plugins.  <https://editorconfig.org/>
+
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+indent_style = space
+indent_size = 3
+trim_trailing_whitespace = true
+
+# Markdown specifies indent_size = 4 for code blocks; if you mess with
+# this then you will have a bad time.
+[*.md]
+trim_trailing_whitespace = false
+indent_size = 4
+
+[{*.yml,*.yaml}]
+indent_size = 2
+
+# Yarn generates and edits these files with indent_size = 2.  Do not
+# taunt happy fun yarn.
+[yarn.lock]
+indent_size = 2
+
+# NPM generates and edits these files with indent_size = 4.  Do not
+# mess with npm.
+[{package.json,package-lock.json}]
+indent_size = 2
+
+# Composer generates and edits these files with indent_size = 4.  Do
+# not troll composer.
+[{composer.json,composer.lock}]
+indent_size = 4
+
+# This file format requires hard tabs.  You do **not** want to deviate
+# from 8-space tabs when dealing with archaic file formats that
+# literally predate disco.
+[Makefile]
+indent_style = tab
+indent_size = 8
+
+# You need indent_size = 4 to comply with PSR-12.  PSR-2, its
+# predecessor, also specifies indent_size = 4.
+[*.php]
+indent_size = 4
+indent_style = space
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..cda1199
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,75 @@
+### BEGIN EXPRESS STOCK .gitignore ###
+
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Typescript v1 declaration files
+typings/
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+
+# next.js build output
+.next
+
+### END EXPRESS STOCK .gitignore ###
+
+# editor temporary/backup files
+*~
+\#*#
+.*#
+.*~
+
+# other things
+.idea/
+.vscode/
diff --git a/.jshintrc b/.jshintrc
new file mode 100644
index 0000000..cedc418
--- /dev/null
+++ b/.jshintrc
@@ -0,0 +1,94 @@
+/*!
+ * .jshintrc --- Configuration file for JSHint, the JavaScript code
+ * quality checking tool.
+ *
+ * https://jshint.com/
+ *
+ * https://jshint.com/docs/options/ has complete documentation about
+ * all JSHint options.
+ *
+ * This configuration is for JavaScript files executed by the
+ * Node.js runtime.
+ *
+ * IF YOU ARE USING NODE 12.x --- change the "esversion" to 2019,
+ * as it only supports ECMAScript 10th edition.
+ */
+
+{
+   // ENFORCING OPTIONS
+   "bitwise":            true,       // prohibit bitwise operators: `& | ^ ~ << >> >>>`
+   "curly":              true,       // enforce use of curly brackets for all loops and conditionals
+   "eqeqeq":             true,       // prohibit use of `==` and `!=`; use `===` and `!==`
+   "esversion":          2020,       // ECMAScript 11, for Node.js 14.x.
+   "forin":              true,       // `for in` loops must filter items
+   "freeze":             true,       // prohibit extending or overwriting prototypes of native objects
+   "futurehostile":      true,       // warn about use of future reserved words
+   "latedef":            "nofunc",   // prohibit use of variables before they're defined; "nofunc" allows use of functions
+   "leanswitch":         true,       // prohibit unnecessary `switch` clauses
+   // "maxcomplexity":   0,          // cyclomatic complexity
+   // "maxdepth":        0,          // code nesting depth
+   // "maxerr":          50,         // number of warnings before jshint gives up
+   // "maxparams":       0,          // number of formal parameters for each function
+   // "maxstatements":   0,          // number of statements per function
+   "noarg":              true,       // prohibit `arguments.caller` and `arguments.callee`
+   "nocomma":            true,       // prohibit comma operator
+   "nonbsp":             true,       // warn about U+00A0 NO-BREAK SPACE characters
+   "nonew":              true,       // prohibit use of constructors entirely for side effects
+   "noreturnawait":      true,       // prohibit use of the unnecessary `return await x;` construct
+   "regexpu":            false,      // would warn about regexps without a /u flag
+   "shadow":             "inner",    // warn about variable shadowing in same scope
+   "singleGroups":       false,      // would prohibit unnecessary ( ) groups
+   "strict":             false,      // disable strict mode warnings
+   "trailingcomma":      false,      // would warn about arrays and objects without trailing commas
+   "undef":              true,       // prohibit use of variables not explicitly declared
+   "unused":             "vars",     // warn about unused variables (not function parameters)
+   "varstmt":            true,       // prohibit `var` statements; use `let` or `const`
+   "globals":            { "URL": true, "URLSearchParams": true }, // things that are defined in Node that jshint doesn't think are.
+   // "predef":          [],         // whitelist of vars implicitly defined in the environment
+
+   // RELAXING OPTIONS
+   "asi":                false,      // would shut up about missing semicolons
+   "boss":               false,      // would shut up about use of assignments `=` where comparisons `===` are expected
+   "debug":              false,      // would shut up about the `debugger` statement
+   "elision":            false,      // would shut up about ES3 array elision
+   "eqnull":             true,       // would shut up about `== null` comparisons, often useful to check for `null` or `undefined`
+   "evil":               false,      // would shut up about the use of `eval`
+   "expr":               false,      // would shut up about use of expressions as statements
+   "funcscope":          false,      // would shut up about `var`-declared variables used outside blocks
+   "iterator":           false,      // would shut up about `__iterator__` property
+   "lastsemic":          false,      // would shut up about omitting the last semicolon
+   "loopfunc":           false,      // would shut up about the use of functions inside loops
+   "moz":                false,      // would shut up about the use of Mozilla JavaScript extensions
+   "notypeof":           false,      // would shut up about invalid `typeof` values
+   "noyield":            false,      // would shut up about generator functions without `yield` statements
+   "plusplus":           false,      // prohibit the use of `++` and `--`
+   "proto":              false,      // would shut up about the `__proto__` property
+   "scripturl":          false,      // would shut up about script-targeted URLs, e.g., `javascript:`
+   "supernew":           false,      // would shut up about certain weird `new` constructions
+   "validthis":          false,      // would shut up about the use of `this` in non-constructor functions
+   "withstmt":           false,      // if you enable shutting up about `with` statements, your code is bad and you should feel bad.
+
+   // ENVIRONMENTS
+   "browser":            false,      // modern browser globals
+   "devel":              false,      // poor man's browser debugging: `alert confirm console Debug opera prompt`
+   "node":               true,       // Node, the runtime environment
+
+   "browserify":         false,      // globals available when using Browserify
+   "couch":              false,      // CouchDB, the document database
+   "dojo":               false,      // Dojo, the toolkit
+   "jasmine":            false,      // Jasmine, the unit testing framework
+   "jquery":             false,      // jQuery, the library (`$` and `jQuery`)
+   "mocha":              false,      // Mocha, the unit testing framework
+   "module":             false,      // ES6 modules, enables strict mode
+   "mootools":           false,      // MooTools, the framework
+   "nonstandard":        false,      // nonstandard globals: `escape` and `unescape`
+   "phantom":            false,      // PhantomJS, the runtime environment
+   "prototypejs":        false,      // Prototype, the framework
+   "qunit":              false,      // QUnit, the unit testing framework
+   "rhino":              false,      // Rhino, the runtime environment
+   "shelljs":            false,      // ShellJS, the library
+   "typed":              false,      // typed array constructors
+   "worker":             false,      // Web Workers
+   "wsh":                false,      // Windows Script Host
+   "yui":                false       // YUI, the framework
+}