js-build-tools 6.0.0 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +134 -27
  2. package/dist/build.js +9 -3
  3. package/dist/build.min.js +1 -1
  4. package/dist/bundle.js +4 -3
  5. package/dist/bundle.min.js +1 -1
  6. package/dist/bundleMinify.js +2 -1
  7. package/dist/bundleMinify.min.js +1 -1
  8. package/dist/copyFiles.js +47 -0
  9. package/dist/copyFiles.min.js +1 -0
  10. package/dist/copyFonts.js +2 -1
  11. package/dist/copyFonts.min.js +1 -1
  12. package/dist/default.js +2 -1
  13. package/dist/default.min.js +1 -1
  14. package/dist/distMinify.js +2 -1
  15. package/dist/distMinify.min.js +1 -1
  16. package/dist/jsdocDocs.js +15 -0
  17. package/dist/jsdocDocs.min.js +1 -0
  18. package/dist/partials/addToReadme.js +3 -2
  19. package/dist/partials/beginWatcher.js +2 -1
  20. package/dist/partials/clean.js +2 -1
  21. package/dist/partials/copyFor.js +10 -2
  22. package/dist/partials/distFor.js +2 -1
  23. package/dist/partials/distForSrc.js +2 -1
  24. package/dist/partials/distSeries.js +2 -1
  25. package/dist/partials/imagesFor.js +2 -1
  26. package/dist/partials/jsdocDocsFor.js +155 -0
  27. package/dist/partials/neostandardLint.js +31 -12
  28. package/dist/partials/readmeTemplate.js +2 -1
  29. package/dist/partials/runOnChange.js +2 -1
  30. package/dist/partials/sassFor.js +2 -1
  31. package/dist/partials/tsFor.js +2 -1
  32. package/dist/partials/typeDocsFor.js +2 -1
  33. package/dist/sourceLint.js +4 -2
  34. package/dist/sourceLint.min.js +1 -1
  35. package/dist/test-helpers/neostandardLintWithRealNeostandard.js +5 -3
  36. package/dist/test-helpers/setUp.js +2 -1
  37. package/dist/testFull.js +2 -1
  38. package/dist/testFull.min.js +1 -1
  39. package/dist/testHelpers.js +2 -1
  40. package/dist/testHelpers.min.js +1 -1
  41. package/dist/testQuick.js +2 -1
  42. package/dist/testQuick.min.js +1 -1
  43. package/dist/utilities/dotNotate.js +3 -1
  44. package/dist/utilities/getBundleConfigs.js +3 -2
  45. package/dist/watchTest.js +2 -1
  46. package/dist/watchTest.min.js +1 -1
  47. package/functions/build.mjs +7 -2
  48. package/functions/build.test.mjs +50 -1
  49. package/functions/bundle.mjs +2 -2
  50. package/functions/copyFiles.mjs +32 -0
  51. package/functions/copyFiles.test.mjs +78 -0
  52. package/functions/jsdocDocs.mjs +10 -0
  53. package/functions/partials/addToReadme.mjs +1 -1
  54. package/functions/partials/copyFor.mjs +4 -1
  55. package/functions/partials/jsdocDocsFor.mjs +132 -0
  56. package/functions/partials/jsdocDocsFor.test.mjs +101 -0
  57. package/functions/partials/neostandardLint.mjs +19 -7
  58. package/functions/partials/neostandardLint.test.mjs +9 -1
  59. package/functions/sourceLint.mjs +1 -1
  60. package/functions/sourceLint.test.mjs +24 -0
  61. package/functions/test-helpers/neostandardLintWithRealNeostandard.mjs +7 -5
  62. package/functions/utilities/dotNotate.mjs +3 -1
  63. package/functions/utilities/dotNotate.test.mjs +34 -0
  64. package/functions/utilities/getBundleConfigs.mjs +1 -1
  65. package/gulp.config.mjs +42 -5
  66. package/gulpfile.base.mjs +2 -0
  67. package/package.json +11 -1
@@ -10,7 +10,8 @@ var _gulp = require("gulp");
10
10
  var _distForSrc = require("./distForSrc.js");
11
11
  var gulpConfig = _interopRequireWildcard(require("../../gulp.config.js"));
12
12
  var _through = _interopRequireDefault(require("through2"));
13
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ var cache;
14
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
14
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
16
  /**
16
17
  * Build the distribution for a given source pattern.
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.distForSrc = void 0;
8
8
  var gulpConfig = _interopRequireWildcard(require("../../gulp.config.js"));
9
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
9
+ var cache;
10
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
10
11
  /**
11
12
  * Retrieve the correct distFor search path based on TS Config.
12
13
  * @memberOf module:partials
@@ -10,7 +10,8 @@ var _distFor = require("./distFor.js");
10
10
  var _distForSrc = require("./distForSrc.js");
11
11
  var _gulp = require("gulp");
12
12
  var _tsFor = require("./tsFor.js");
13
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ var cache;
14
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
14
15
  /**
15
16
  * When using TypeScript, ensure that we process the ts first then run babel (dist)
16
17
  * @memberOf module:partials
@@ -10,7 +10,8 @@ var _loadPeer = require("./loadPeer.js");
10
10
  var _gulp = require("gulp");
11
11
  var _nodePath = _interopRequireDefault(require("node:path"));
12
12
  var gulpConfig = _interopRequireWildcard(require("../../gulp.config.js"));
13
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ var cache;
14
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
14
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
16
  const installHint = 'Add it to your project with: npm install --save-dev github:jheagle/gulp-imagemin#common-js-compatibility ' + '(the CommonJS-compatible fork - upstream gulp-imagemin is ESM-only and cannot be require()d by this package\'s CommonJS build).';
16
17
 
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/esnext.weak-map.delete-all.js");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.resolveJsdocTheme = exports.resolveJsdocBin = exports.jsdocDocsFor = void 0;
8
+ require("core-js/modules/es.json.stringify.js");
9
+ require("core-js/modules/esnext.iterator.constructor.js");
10
+ require("core-js/modules/esnext.iterator.find.js");
11
+ require("core-js/modules/esnext.iterator.map.js");
12
+ var _nodeFs = _interopRequireDefault(require("node:fs"));
13
+ var _nodeOs = _interopRequireDefault(require("node:os"));
14
+ var _nodePath = _interopRequireDefault(require("node:path"));
15
+ var _nodeModule = require("node:module");
16
+ var _nodeChild_process = require("node:child_process");
17
+ var _nodeUtil = require("node:util");
18
+ var gulpConfig = _interopRequireWildcard(require("../../gulp.config.js"));
19
+ var _removeDirectory = require("./removeDirectory.js");
20
+ var _jsdocBase = _interopRequireDefault(require("../../jsdoc.base.js"));
21
+ var cache;
22
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
23
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
24
+ // jsdoc.base.js is CommonJS (it's also required directly by consuming projects' own .jsdoc.conf.js, and by this
25
+ // project's own legacy htmldocs script) - Node's ESM loader imports a CJS module's module.exports as the default
26
+ // export directly, no createRequire/import.meta needed (import.meta.url tripped up this project's own Babel CJS
27
+ // transform, which Jest relies on to run .mjs test files - confirmed by removing it and nothing else changing).
28
+
29
+ const execFileAsync = (0, _nodeUtil.promisify)(_nodeChild_process.execFile);
30
+ const jsdocInstallHint = 'Install it in your project with: npm install --save-dev jsdoc';
31
+ const themeInstallHint = name => `Install it in your project with: npm install --save-dev ${name}`;
32
+
33
+ /**
34
+ * Resolve the installed directory of an optional peer dependency, from the project being built rather than from
35
+ * this package. Deliberately not requirePeer/importPeer's own `require(name + '/package.json')` approach - that
36
+ * breaks for any package whose own package.json restricts its exports map and does not expose that subpath
37
+ * (clean-jsdoc-theme does; confirmed live, not assumed - resolving its own package.json throws
38
+ * ERR_PACKAGE_PATH_NOT_EXPORTED in plain Node, and a differently-shaped MODULE_NOT_FOUND under Jest's own
39
+ * resolver, which still is not "not installed" either way). Walking Node's own real module-lookup directories
40
+ * (require.resolve.paths) and checking each on disk sidesteps the exports map entirely - this only ever reads
41
+ * whether `<dir>/<name>/package.json` exists, never asks the module system to resolve a restricted subpath.
42
+ * @memberOf module:partials
43
+ * @param {string} name - The package name.
44
+ * @param {Object} options
45
+ * @param {string} options.task
46
+ * @param {string} options.installHint
47
+ * @param {string} [options.projectPath=process.cwd()]
48
+ * @returns {string}
49
+ * @throws {Error} With install instructions when the package is not installed.
50
+ */
51
+ const resolvePeerDir = (name, {
52
+ task,
53
+ installHint,
54
+ projectPath = process.cwd()
55
+ }) => {
56
+ const req = (0, _nodeModule.createRequire)(_nodePath.default.join(projectPath, 'package.json'));
57
+ const found = (req.resolve.paths(name) || []).map(dir => _nodePath.default.join(dir, name)).find(dir => _nodeFs.default.existsSync(_nodePath.default.join(dir, 'package.json')));
58
+ if (!found) {
59
+ throw new Error(`The ${task} task needs the optional peer dependency ${name}, which is not installed. ${installHint}`);
60
+ }
61
+ return found;
62
+ };
63
+
64
+ /**
65
+ * Resolve jsdoc's own CLI entry point. jsdoc has no stable programmatic Node API for generating HTML docs (unlike
66
+ * TypeDoc's Application.bootstrap()/convert()/generateDocs()) - gulp-jsdoc3, the established gulp wrapper, is
67
+ * stale, and its own README admits jsdoc does not support piped input in the first place, a real anti-pattern for
68
+ * this project's own gulp-stream conventions. Running its real CLI via child_process is the portable way in -
69
+ * confirmed via `npm view jsdoc bin`, which reports "jsdoc.js" at the package root.
70
+ * @memberOf module:partials
71
+ * @param {string} [projectPath=process.cwd()]
72
+ * @returns {string}
73
+ */
74
+ const resolveJsdocBin = (projectPath = process.cwd()) => _nodePath.default.join(resolvePeerDir('jsdoc', {
75
+ task: 'docs',
76
+ installHint: jsdocInstallHint,
77
+ projectPath
78
+ }), 'jsdoc.js');
79
+
80
+ /**
81
+ * Resolve a jsdoc theme package's own template directory, for jsdoc's own opts.template config key. Not
82
+ * necessarily the package's own root - clean-jsdoc-theme's own docs say to point opts.template at its `dist`
83
+ * subdirectory specifically, confirmed by reading its real README rather than assuming every theme follows the
84
+ * classic jsdoc template layout (a bare package root with its own tmpl/static folders) - clean-jsdoc-theme does
85
+ * not (it is a modern, self-contained, server-rendered theme with no such folders at its package root at all).
86
+ * @memberOf module:partials
87
+ * @param {string} name
88
+ * @param {string} [projectPath=process.cwd()]
89
+ * @returns {string}
90
+ */
91
+ exports.resolveJsdocBin = resolveJsdocBin;
92
+ const resolveJsdocTheme = (name, projectPath = process.cwd()) => {
93
+ const packageDir = resolvePeerDir(name, {
94
+ task: 'docs',
95
+ installHint: themeInstallHint(name),
96
+ projectPath
97
+ });
98
+ return name === 'clean-jsdoc-theme' ? _nodePath.default.join(packageDir, 'dist') : packageDir;
99
+ };
100
+
101
+ /**
102
+ * Generate the HTML documentation of a plain-JavaScript project with jsdoc, using jsdoc.base.js's own shared
103
+ * config (plugins, includePattern/excludePattern) as the starting point rather than a parallel one - the same
104
+ * base a project's own .jsdoc.conf.js has always been able to extend, just with source.include and the output
105
+ * options generated here instead of hand-maintained per project. Configure this with 'docs.from', 'docs.to',
106
+ * 'docs.index', 'docs.theme' and 'docs.title'.
107
+ * @memberOf module:partials
108
+ * @param {string} [srcPath=gulpConfig.get('docs.from')] - The directory (or glob) holding the JS source.
109
+ * @param {string} [outPath=gulpConfig.get('docs.to')] - The directory the documentation is generated into (cleared first).
110
+ * @param {function(string, Array<string>): Promise<Object>} [runJsdoc] - Runs the jsdoc CLI, tests can inject a stand-in.
111
+ * @returns {Function} A gulp task, it accepts an optional callback and returns a promise.
112
+ */
113
+ exports.resolveJsdocTheme = resolveJsdocTheme;
114
+ const jsdocDocsFor = (srcPath = gulpConfig.get('docs.from'), outPath = gulpConfig.get('docs.to'), runJsdoc = (bin, args) => execFileAsync(process.execPath, [bin, ...args])) => {
115
+ if (gulpConfig.get('docs.enabled') === false) {
116
+ return () => {};
117
+ }
118
+ return done => {
119
+ const generate = async () => {
120
+ const theme = gulpConfig.get('docs.theme') || 'clean-jsdoc-theme';
121
+ const themeDir = resolveJsdocTheme(theme);
122
+ const indexFile = gulpConfig.get('docs.index');
123
+ await (0, _removeDirectory.removeDirectory)(outPath);
124
+ const config = {
125
+ ..._jsdocBase.default,
126
+ source: {
127
+ ..._jsdocBase.default.source,
128
+ include: [_nodePath.default.resolve(srcPath)]
129
+ },
130
+ opts: {
131
+ destination: _nodePath.default.resolve(outPath),
132
+ // jsdoc does not recurse into source.include's own subdirectories by default - without this, only
133
+ // the top level of docs.from would ever be scanned. Confirmed from clean-jsdoc-theme's own README
134
+ // quick-start example, which sets this explicitly, not assumed from jsdoc's own classic defaults.
135
+ recurse: true,
136
+ template: themeDir,
137
+ ...(indexFile && _nodeFs.default.existsSync(indexFile) ? {
138
+ readme: _nodePath.default.resolve(indexFile)
139
+ } : {})
140
+ }
141
+ };
142
+ const workDir = _nodeFs.default.mkdtempSync(_nodePath.default.join(_nodeOs.default.tmpdir(), 'jsdocdocs-'));
143
+ try {
144
+ const configPath = _nodePath.default.join(workDir, 'jsdoc.conf.json');
145
+ _nodeFs.default.writeFileSync(configPath, JSON.stringify(config));
146
+ const bin = resolveJsdocBin();
147
+ await runJsdoc(bin, ['-c', configPath]);
148
+ } finally {
149
+ await (0, _removeDirectory.removeDirectory)(workDir);
150
+ }
151
+ };
152
+ return typeof done === 'function' ? generate().then(() => done(), done) : generate();
153
+ };
154
+ };
155
+ exports.jsdocDocsFor = jsdocDocsFor;
@@ -14,9 +14,7 @@ var _loadPeer = require("./loadPeer.js");
14
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
15
  // neostandard (js-build-tools' chosen style - a maintained, TypeScript-aware successor to `standard`, see
16
16
  // https://github.com/neostandard/neostandard) ships ESM-only, see importModule for how it is imported.
17
- const importNeostandard = () => (0, _loadPeer.importModule)('neostandard').then(({
18
- neostandard
19
- }) => neostandard);
17
+ const importNeostandard = () => (0, _loadPeer.importModule)('neostandard');
20
18
 
21
19
  /**
22
20
  * Read the `env` a project already declared for Standard (the `standard` field in its package.json), so a project
@@ -33,27 +31,44 @@ const readEnv = cwd => {
33
31
  };
34
32
 
35
33
  /**
36
- * Build an ESLint instance configured with neostandard, honoring the project's own package.json `standard.env`.
34
+ * Build an ESLint instance configured with neostandard, honoring the project's own package.json `standard.env`,
35
+ * plus an optional layer of rule overrides (see gulp.config.mjs's `lint.rules`) for a rule that is wrong for this
36
+ * project specifically rather than something to fix in its code - for example a test fixture whose content
37
+ * neostandard mistakes for a real syntax problem. Scoped to the same files neostandard itself lints (its own
38
+ * `defaultFilePatterns.all`), per neostandard's own guidance: an unscoped rule-tweak layer would otherwise apply
39
+ * to every lintable file, including ones from an unrelated plugin this project never defined.
37
40
  * @param {Object} options
38
41
  * @param {string} options.cwd
39
42
  * @param {boolean} options.ts
40
43
  * @param {boolean} options.fix
44
+ * @param {Object<string, *>} [options.rules={}]
41
45
  * @returns {Promise<import('eslint').ESLint>}
42
46
  */
43
47
  const buildEslint = async ({
44
48
  cwd,
45
49
  ts,
46
- fix
50
+ fix,
51
+ rules = {}
47
52
  }) => {
48
- const neostandard = await importNeostandard();
53
+ const {
54
+ neostandard,
55
+ defaultFilePatterns
56
+ } = await importNeostandard();
57
+ const baseConfig = neostandard({
58
+ ts,
59
+ env: readEnv(cwd)
60
+ });
61
+ if (Object.keys(rules).length) {
62
+ baseConfig.push({
63
+ files: defaultFilePatterns.all,
64
+ rules
65
+ });
66
+ }
49
67
  return new _eslint.ESLint({
50
68
  cwd,
51
69
  fix,
52
70
  overrideConfigFile: true,
53
- baseConfig: neostandard({
54
- ts,
55
- env: readEnv(cwd)
56
- })
71
+ baseConfig
57
72
  });
58
73
  };
59
74
 
@@ -88,6 +103,8 @@ const printFileReport = (file, result) => {
88
103
  * @param {Object} [options={}]
89
104
  * @param {boolean} [options.fix=true] - Apply neostandard's automatic fixes to the file contents.
90
105
  * @param {boolean} [options.ts=false] - Lint `.ts` files too, with type-aware rules (see neostandard's `ts` option).
106
+ * @param {Object<string, *>} [options.rules={}] - ESLint rule overrides layered on top of neostandard's own rules
107
+ * (see gulp.config.mjs's `lint.rules`).
91
108
  * @param {function(Object): Promise<{lintText: Function}>} [loadEslint] - Resolves an ESLint-shaped linter. Real
92
109
  * callers should never need to pass this - it exists so tests can supply a stand-in, since this project's
93
110
  * CommonJS-transform-based Jest setup cannot execute a real dynamic import() of neostandard (ESM-only).
@@ -95,7 +112,8 @@ const printFileReport = (file, result) => {
95
112
  */
96
113
  const neostandardLint = ({
97
114
  fix = true,
98
- ts = false
115
+ ts = false,
116
+ rules = {}
99
117
  } = {}, loadEslint = buildEslint) => {
100
118
  const totals = {
101
119
  errors: 0,
@@ -115,7 +133,8 @@ const neostandardLint = ({
115
133
  eslintPromise = loadEslint({
116
134
  cwd: file.cwd,
117
135
  ts,
118
- fix
136
+ fix,
137
+ rules
119
138
  });
120
139
  }
121
140
  eslintPromise.then(eslint => eslint.lintText(file.contents.toString(), {
@@ -9,7 +9,8 @@ var _gulp = require("gulp");
9
9
  var gulpConfig = _interopRequireWildcard(require("../../gulp.config.js"));
10
10
  var _gulpRename = _interopRequireDefault(require("gulp-rename"));
11
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ var cache;
13
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
13
14
  /**
14
15
  * Copy a readme template into the README.md file.
15
16
  * @memberOf module:partials
@@ -10,7 +10,8 @@ var _bundle = require("../bundle.js");
10
10
  var _distSeries = require("./distSeries.js");
11
11
  var _gulp = require("gulp");
12
12
  var _testQuick = require("../testQuick.js");
13
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ var cache;
14
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
14
15
  /**
15
16
  * Run this function when the watched files are modified.
16
17
  * 1. Find the sub-folders within src path
@@ -14,7 +14,8 @@ var _gulpRename = _interopRequireDefault(require("gulp-rename"));
14
14
  var sass = _interopRequireWildcard(require("sass"));
15
15
  var _gulpSass = _interopRequireDefault(require("gulp-sass"));
16
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
17
+ var cache;
18
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
18
19
  const runSass = (0, _gulpSass.default)(sass);
19
20
 
20
21
  /**
@@ -9,7 +9,8 @@ var _gulp = require("gulp");
9
9
  var _nodePath = _interopRequireDefault(require("node:path"));
10
10
  var gulpConfig = _interopRequireWildcard(require("../../gulp.config.js"));
11
11
  var _loadPeer = require("./loadPeer.js");
12
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ var cache;
13
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
13
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
15
  // gulp-ts-compile ships ESM-only (no CJS build - see its own package.json), see importModule for how it is imported.
15
16
  const importGulpTsCompile = () => (0, _loadPeer.importModule)('gulp-ts-compile');
@@ -20,7 +20,8 @@ var gulpConfig = _interopRequireWildcard(require("../../gulp.config.js"));
20
20
  var _loadPeer = require("./loadPeer.js");
21
21
  var _tsFor = require("./tsFor.js");
22
22
  var _removeDirectory = require("./removeDirectory.js");
23
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
23
+ var cache;
24
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
24
25
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
25
26
  const installHint = 'Install it in your project with: npm install --save-dev typedoc';
26
27
 
@@ -8,7 +8,8 @@ exports.sourceLint = void 0;
8
8
  var gulpConfig = _interopRequireWildcard(require("../gulp.config.js"));
9
9
  var _gulp = require("gulp");
10
10
  var _neostandardLint = require("./partials/neostandardLint.js");
11
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ var cache;
12
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
12
13
  /**
13
14
  * Applies neostandard linting (js-build-tools' chosen style) to the real, hand-written source - not the compiled
14
15
  * dist/browser output, which is generated and so was never going to pass a hand-authored-code style check (every
@@ -27,7 +28,8 @@ const sourceLint = () => {
27
28
  }
28
29
  return (0, _gulp.src)(patterns).pipe((0, _neostandardLint.neostandardLint)({
29
30
  fix: true,
30
- ts
31
+ ts,
32
+ rules: gulpConfig.get('lint.rules')
31
33
  })).pipe((0, _gulp.dest)(srcPath));
32
34
  };
33
35
  exports.sourceLint = sourceLint;
@@ -1 +1 @@
1
- "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.sourceLint=void 0;var gulpConfig=_interopRequireWildcard(require("../gulp.config.js")),_gulp=require("gulp"),_neostandardLint=require("./partials/neostandardLint.js");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var i,o,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(i=t?n:r){if(i.has(e))return i.get(e);i.set(e,u)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?i(u,t,o):u[t]=e[t]);return u})(e,t)}const sourceLint=()=>{const e=gulpConfig.get("srcPath"),t=gulpConfig.get("typescript.enabled"),r=[`${e}/**/*.js`];return t&&r.push(`${e}/**/*.ts`),(0,_gulp.src)(r).pipe((0,_neostandardLint.neostandardLint)({fix:!0,ts:t})).pipe((0,_gulp.dest)(e))};exports.sourceLint=sourceLint;
1
+ "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.sourceLint=void 0;var cache,gulpConfig=_interopRequireWildcard(require("../gulp.config.js")),_gulp=require("gulp"),_neostandardLint=require("./partials/neostandardLint.js");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var r,n,i=Object.defineProperty,s={__proto__:null,default:e};if(Object(e)!==e)return s;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,s)}for(n in e)"default"!==n&&{}.hasOwnProperty.call(e,n)&&((r=i&&Object.getOwnPropertyDescriptor(e,n))&&(r.get||r.set)?i(s,n,r):s[n]=e[n]);return s}const sourceLint=()=>{const e=gulpConfig.get("srcPath"),t=gulpConfig.get("typescript.enabled"),r=[`${e}/**/*.js`];return t&&r.push(`${e}/**/*.ts`),(0,_gulp.src)(r).pipe((0,_neostandardLint.neostandardLint)({fix:!0,ts:t,rules:gulpConfig.get("lint.rules")})).pipe((0,_gulp.dest)(e))};exports.sourceLint=sourceLint;
@@ -11,7 +11,7 @@ var _nodePath = _interopRequireDefault(require("node:path"));
11
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
12
  // Jest's CommonJS transform cannot load `neostandard` (ESM-only) or run a real dynamic import(), so tests that need
13
13
  // genuine neostandard behavior run the actual package in a plain Node subprocess instead of faking it.
14
- const script = 'import { readFileSync } from \'node:fs\'\n' + 'import { ESLint } from \'eslint\'\n' + 'import { neostandard } from \'neostandard\'\n' + 'const { text, filePath, cwd, fix, ts, env } = JSON.parse(readFileSync(0, \'utf8\'))\n' + 'const eslint = new ESLint({ cwd, fix, overrideConfigFile: true, baseConfig: neostandard({ ts, env }) })\n' + 'process.stdout.write(JSON.stringify(await eslint.lintText(text, { filePath })))\n';
14
+ const script = 'import { readFileSync } from \'node:fs\'\n' + 'import { ESLint } from \'eslint\'\n' + 'import { neostandard, defaultFilePatterns } from \'neostandard\'\n' + 'const { text, filePath, cwd, fix, ts, env, rules } = JSON.parse(readFileSync(0, \'utf8\'))\n' + 'const baseConfig = neostandard({ ts, env })\n' + 'if (Object.keys(rules).length) { baseConfig.push({ files: defaultFilePatterns.all, rules }) }\n' + 'const eslint = new ESLint({ cwd, fix, overrideConfigFile: true, baseConfig })\n' + 'process.stdout.write(JSON.stringify(await eslint.lintText(text, { filePath })))\n';
15
15
  const readEnv = cwd => {
16
16
  try {
17
17
  return JSON.parse(_nodeFs.default.readFileSync(_nodePath.default.join(cwd, 'package.json'), 'utf8')).standard?.env ?? [];
@@ -22,7 +22,8 @@ const readEnv = cwd => {
22
22
  const loadEslintViaSubprocess = ({
23
23
  cwd,
24
24
  ts,
25
- fix
25
+ fix,
26
+ rules = {}
26
27
  }) => Promise.resolve({
27
28
  lintText: (text, {
28
29
  filePath
@@ -33,7 +34,8 @@ const loadEslintViaSubprocess = ({
33
34
  cwd,
34
35
  fix,
35
36
  ts,
36
- env: readEnv(cwd)
37
+ env: readEnv(cwd),
38
+ rules
37
39
  }),
38
40
  encoding: 'utf8',
39
41
  cwd,
@@ -51,7 +51,8 @@ exports.setDefaults = void 0;
51
51
  var gulpConfig = _interopRequireWildcard(require("../../gulp.config.js"));
52
52
  exports.gulpConfig = gulpConfig;
53
53
  var _testFilesystem = require("test-filesystem");
54
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
54
+ var cache;
55
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
55
56
  // Import the configurations and override some of them to direct to the temp directory.
56
57
 
57
58
  let tempDir = 'test-temp/';
package/dist/testFull.js CHANGED
@@ -7,7 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.testFull = void 0;
8
8
  var gulpConfig = _interopRequireWildcard(require("../gulp.config.js"));
9
9
  var _jest = require("jest");
10
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
+ var cache;
11
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
11
12
  /**
12
13
  * Run all tests with jest.
13
14
  * Configure where tests are located by using 'testPath'.
@@ -1 +1 @@
1
- "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.testFull=void 0;var gulpConfig=_interopRequireWildcard(require("../gulp.config.js")),_jest=require("jest");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var o,u,i={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return i;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,i)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((u=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(u.get||u.set)?o(i,t,u):i[t]=e[t]);return i})(e,t)}const testFull=()=>{let e=gulpConfig.get("test.path");return Array.isArray(e)||(e=[e]),(0,_jest.runCLI)(gulpConfig.get("test.options"),e)};exports.testFull=testFull;
1
+ "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.testFull=void 0;var cache,gulpConfig=_interopRequireWildcard(require("../gulp.config.js")),_jest=require("jest");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var r,s,u=Object.defineProperty,c={__proto__:null,default:e};if(Object(e)!==e)return c;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,c)}for(s in e)"default"!==s&&{}.hasOwnProperty.call(e,s)&&((r=u&&Object.getOwnPropertyDescriptor(e,s))&&(r.get||r.set)?u(c,s,r):c[s]=e[s]);return c}const testFull=()=>{let e=gulpConfig.get("test.path");return Array.isArray(e)||(e=[e]),(0,_jest.runCLI)(gulpConfig.get("test.options"),e)};exports.testFull=testFull;
@@ -7,4 +7,5 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.testHelpers = void 0;
8
8
  var _testHelpers = _interopRequireWildcard(require("./test-helpers/setUp.js"));
9
9
  exports.testHelpers = _testHelpers;
10
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
+ var cache;
11
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
@@ -1 +1 @@
1
- "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.testHelpers=void 0;var _testHelpers=_interopRequireWildcard(require("./test-helpers/setUp.js"));function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,s=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var o,n,i={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return i;if(o=t?s:r){if(o.has(e))return o.get(e);o.set(e,i)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((n=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(n.get||n.set)?o(i,t,n):i[t]=e[t]);return i})(e,t)}exports.testHelpers=_testHelpers;
1
+ "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.testHelpers=void 0;var cache,_testHelpers=_interopRequireWildcard(require("./test-helpers/setUp.js"));function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var r,s,c=Object.defineProperty,a={__proto__:null,default:e};if(Object(e)!==e)return a;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,a)}for(s in e)"default"!==s&&{}.hasOwnProperty.call(e,s)&&((r=c&&Object.getOwnPropertyDescriptor(e,s))&&(r.get||r.set)?c(a,s,r):a[s]=e[s]);return a}exports.testHelpers=_testHelpers;
package/dist/testQuick.js CHANGED
@@ -7,7 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.testQuick = void 0;
8
8
  var gulpConfig = _interopRequireWildcard(require("../gulp.config.js"));
9
9
  var _jest = require("jest");
10
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
+ var cache;
11
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
11
12
  /**
12
13
  * Run the Jest tests for files which have been modified (based on git status).
13
14
  * Configure where tests are located by using 'testPath'.
@@ -1 +1 @@
1
- "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.testQuick=void 0;var gulpConfig=_interopRequireWildcard(require("../gulp.config.js")),_jest=require("jest");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,o,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(n=t?i:r){if(n.has(e))return n.get(e);n.set(e,u)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?n(u,t,o):u[t]=e[t]);return u})(e,t)}const testQuick=()=>{let e=gulpConfig.get("test.path");return Array.isArray(e)||(e=[e]),(0,_jest.runCLI)({onlyChanged:!0},e)};exports.testQuick=testQuick;
1
+ "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.testQuick=void 0;var cache,gulpConfig=_interopRequireWildcard(require("../gulp.config.js")),_jest=require("jest");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var r,c,i=Object.defineProperty,a={__proto__:null,default:e};if(Object(e)!==e)return a;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,a)}for(c in e)"default"!==c&&{}.hasOwnProperty.call(e,c)&&((r=i&&Object.getOwnPropertyDescriptor(e,c))&&(r.get||r.set)?i(a,c,r):a[c]=e[c]);return a}const testQuick=()=>{let e=gulpConfig.get("test.path");return Array.isArray(e)||(e=[e]),(0,_jest.runCLI)({onlyChanged:!0},e)};exports.testQuick=testQuick;
@@ -53,7 +53,9 @@ const performDotNotate = (arrayObject, didRetain, prepend = '', results = {}) =>
53
53
  if (didRetain(currentKey, value, results)) {
54
54
  continue;
55
55
  }
56
- if ((0, _isObject.isObject)(value)) {
56
+ // An empty object/array has no keys to flatten into - recursing into one would silently drop currentKey
57
+ // from the result entirely, rather than keeping it as the empty value it actually is. Treat it as a leaf.
58
+ if ((0, _isObject.isObject)(value) && Object.keys(value).length) {
57
59
  performDotNotate(value, didRetain, `${currentKey}.`, results);
58
60
  continue;
59
61
  }
@@ -8,7 +8,8 @@ exports.getBundleConfigs = void 0;
8
8
  require("core-js/modules/esnext.iterator.constructor.js");
9
9
  require("core-js/modules/esnext.iterator.map.js");
10
10
  var gulpConfig = _interopRequireWildcard(require("../../gulp.config.js"));
11
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ var cache;
12
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
12
13
  /**
13
14
  * Build the full list of bundles to produce for this project: the primary bundle (browser.name /
14
15
  * dist.main / browser.ignore / browser.exclude, exactly as before browser.bundles existed) plus
@@ -25,7 +26,7 @@ const getBundleConfigs = () => {
25
26
  ignore: gulpConfig.get('browser.ignore'),
26
27
  exclude: gulpConfig.get('browser.exclude')
27
28
  };
28
- const additional = gulpConfig.get('browser.bundles') || [];
29
+ const additional = gulpConfig.get('browser.bundles');
29
30
  return [primary, ...additional.map(bundleConfig => ({
30
31
  name: bundleConfig.name,
31
32
  main: bundleConfig.main || primary.main,
package/dist/watchTest.js CHANGED
@@ -8,7 +8,8 @@ exports.watchTest = void 0;
8
8
  var gulpConfig = _interopRequireWildcard(require("../gulp.config.js"));
9
9
  var _gulp = require("gulp");
10
10
  var _testQuick = require("./testQuick.js");
11
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ var cache;
12
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
12
13
  /**
13
14
  * Watch for changes and run the tests.
14
15
  * @memberOf module:js-build-tools
@@ -1 +1 @@
1
- "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.watchTest=void 0;var gulpConfig=_interopRequireWildcard(require("../gulp.config.js")),_gulp=require("gulp"),_testQuick=require("./testQuick.js");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var u,n,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(u=t?i:r){if(u.has(e))return u.get(e);u.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((n=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(n.get||n.set)?u(o,t,n):o[t]=e[t]);return o})(e,t)}const watchTest=()=>(0,_gulp.watch)(gulpConfig.get("test.watch"),{ignoreInitial:!1},_testQuick.testQuick);exports.watchTest=watchTest;
1
+ "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.watchTest=void 0;var cache,gulpConfig=_interopRequireWildcard(require("../gulp.config.js")),_gulp=require("gulp"),_testQuick=require("./testQuick.js");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var r,c,i=Object.defineProperty,a={__proto__:null,default:e};if(Object(e)!==e)return a;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,a)}for(c in e)"default"!==c&&{}.hasOwnProperty.call(e,c)&&((r=i&&Object.getOwnPropertyDescriptor(e,c))&&(r.get||r.set)?i(a,c,r):a[c]=e[c]);return a}const watchTest=()=>(0,_gulp.watch)(gulpConfig.get("test.watch"),{ignoreInitial:!1},_testQuick.testQuick);exports.watchTest=watchTest;
@@ -3,6 +3,7 @@ import { bundleMinify } from './bundleMinify.mjs'
3
3
  import { clean, distSeries } from './partials.mjs'
4
4
  import { compileReadme } from './compileReadme.mjs'
5
5
  import { typeDocs } from './typeDocs.mjs'
6
+ import { jsdocDocs } from './jsdocDocs.mjs'
6
7
  import { distMinify } from './distMinify.mjs'
7
8
  import { sourceLint } from './sourceLint.mjs'
8
9
  import { parallel, series } from 'gulp'
@@ -22,9 +23,13 @@ import { testFull } from './testFull.mjs'
22
23
  export const build = (done = null) => {
23
24
  const buildActions = [distSeries(), distMinify]
24
25
  const generateDocs = gulpConfig.get('docs.enabled')
26
+ // docs.method picks the engine explicitly; left unset (false, the default), it's inferred from
27
+ // typescript.enabled - every existing TypeScript project's config, which never sets method, keeps producing
28
+ // TypeDoc output exactly as it always has.
29
+ const docsMethod = gulpConfig.get('docs.method') || (gulpConfig.get('typescript.enabled') ? 'typedoc' : 'jsdoc')
25
30
  if (generateDocs) {
26
- // The documentation is generated from the TypeScript source itself, the readme is written by hand
27
- buildActions.push(typeDocs)
31
+ // The documentation is generated from the source itself, the readme is written by hand
32
+ buildActions.push(docsMethod === 'jsdoc' ? jsdocDocs : typeDocs)
28
33
  } else if (gulpConfig.get('typescript.enabled')) {
29
34
  // For ts usage, we need to run the readme on the dist directly since that is where the .js files are located
30
35
  buildActions.push(compileReadme)