@aurodesignsystem/auro-library 5.14.0 → 5.14.2

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 (45) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/bin/generateDocs.mjs +4 -210
  3. package/bin/generateDocs_index.mjs +4 -210
  4. package/dist/_chunks/chunk-2MOEVVSZ.mjs +308 -0
  5. package/dist/_chunks/chunk-H7YO7ERJ.mjs +69 -0
  6. package/dist/_chunks/chunk-JLCAYVRX.mjs +84 -0
  7. package/dist/_chunks/chunk-RKBXVLA5.mjs +5983 -0
  8. package/dist/_chunks/chunk-TDFKN2EP.mjs +38 -0
  9. package/dist/_chunks/chunk-UY4SIQT6.mjs +201 -0
  10. package/dist/_chunks/chunk-V7YBXHAI.mjs +32379 -0
  11. package/dist/bin/generateDocs.mjs +152 -0
  12. package/dist/bin/generateDocs_index.mjs +152 -0
  13. package/dist/build/generateDocs.mjs +18 -0
  14. package/dist/build/generateReadme.mjs +49 -0
  15. package/dist/build/generateWcaComponent.mjs +6657 -0
  16. package/dist/build/processors/defaultDocsProcessor.mjs +16 -0
  17. package/dist/build/processors/defaultDotGithubSync.mjs +12 -0
  18. package/dist/build/syncGithubFiles.mjs +18 -0
  19. package/dist/utils/auroTemplateFiller.mjs +8 -0
  20. package/dist/utils/sharedFileProcessorUtils.mjs +31 -0
  21. package/package.json +10 -5
  22. package/scripts/build/generateDocs.mjs +4 -24
  23. package/scripts/build/generateReadme.mjs +4 -60
  24. package/scripts/build/generateWcaComponent.mjs +4 -43
  25. package/scripts/build/postinstall.mjs +10 -10
  26. package/scripts/build/pre-commit.mjs +13 -7
  27. package/scripts/build/processors/defaultDocsProcessor.mjs +4 -83
  28. package/scripts/build/processors/defaultDotGithubSync.mjs +4 -83
  29. package/scripts/build/syncGithubFiles.mjs +4 -25
  30. package/scripts/runtime/floatingUI.mjs +2 -1
  31. package/scripts/runtime/generateUUID/generateUUID.mjs +41 -0
  32. package/scripts/runtime/generateUUID/index.mjs +1 -0
  33. package/scripts/utils/ansiColors.mjs +119 -0
  34. package/scripts/utils/auroLibraryUtils.mjs +87 -51
  35. package/scripts/utils/auroTemplateFiller.mjs +4 -178
  36. package/scripts/utils/logger.mjs +27 -16
  37. package/scripts/utils/sharedFileProcessorUtils.mjs +4 -270
  38. package/scripts/build/deprecatedProseToFieldPlugin.spec.js +0 -188
  39. package/scripts/runtime/ClickTracker/test/ClickTracker.test.js +0 -424
  40. package/scripts/runtime/FocusTrap/test/FocusTrap.test.js +0 -168
  41. package/scripts/runtime/Focusables/test/Focusables.test.js +0 -185
  42. package/scripts/runtime/dateUtilities/dateFormatter.test.js +0 -284
  43. package/scripts/runtime/dateUtilities/dateUtilities.test.js +0 -80
  44. package/scripts/runtime/floatingUI/test/floatingUI.test.js +0 -189
  45. package/scripts/runtime/floatingUI.test.js +0 -478
@@ -0,0 +1,119 @@
1
+ // Minimal stand-in for the slice of `chalk` this package used: `hex(color)(text)`
2
+ // and `hex(color).bold(text)`.
3
+ //
4
+ // auro-library is a runtime dependency of nearly every Auro component, so
5
+ // anything imported by a published script is installed into every downstream
6
+ // project. `chalk` was never actually declared as a dependency -- it only ever
7
+ // resolved by accident when a consumer happened to hoist one -- so these two
8
+ // helpers replace it rather than shipping a package for four call sites.
9
+ //
10
+ // Output is byte-identical to chalk for both supported forms, including
11
+ // chalk's decision about *when* to emit escapes at all.
12
+
13
+ const ESC = "\u001B";
14
+ const RESET_COLOR = `${ESC}[39m`;
15
+ const BOLD_ON = `${ESC}[1m`;
16
+ const BOLD_OFF = `${ESC}[22m`;
17
+
18
+ /**
19
+ * Whether to emit ANSI escapes, following the same precedence chalk uses:
20
+ * FORCE_COLOR wins, then NO_COLOR, then a dumb terminal, then TTY detection.
21
+ * Notably this means piped and CI output is plain text, which is what chalk
22
+ * already did here.
23
+ * @returns {boolean} True when escapes should be emitted.
24
+ */
25
+ function colorEnabled() {
26
+ const { FORCE_COLOR, NO_COLOR, TERM } = process.env;
27
+
28
+ if (FORCE_COLOR !== undefined) {
29
+ // An explicit `0`/`false` is a force-*off* in chalk's `supports-color`, not
30
+ // an absence of opinion -- it short-circuits ahead of TTY detection, so
31
+ // setting it yields plain text even on a terminal. A set-but-empty value is
32
+ // a force-*on*, which is why this tests the two off values rather than
33
+ // truthiness.
34
+ return FORCE_COLOR !== "0" && FORCE_COLOR !== "false";
35
+ }
36
+
37
+ if (NO_COLOR) {
38
+ return false;
39
+ }
40
+
41
+ if (TERM === "dumb") {
42
+ return false;
43
+ }
44
+
45
+ return Boolean(process.stdout?.isTTY);
46
+ }
47
+
48
+ /**
49
+ * Parse `#rgb` or `#rrggbb` into 8-bit channels.
50
+ * @param {string} hexColor - Hex color string, with or without a leading `#`.
51
+ * @returns {[number, number, number] | null} Channels, or null if unparseable.
52
+ */
53
+ function toRgb(hexColor) {
54
+ if (typeof hexColor !== "string") {
55
+ return null;
56
+ }
57
+
58
+ const raw = hexColor.replace(/^#/u, "");
59
+ const expanded =
60
+ raw.length === 3
61
+ ? raw
62
+ .split("")
63
+ .map((channel) => channel + channel)
64
+ .join("")
65
+ : raw;
66
+
67
+ if (!/^[0-9a-f]{6}$/iu.test(expanded)) {
68
+ return null;
69
+ }
70
+
71
+ return [
72
+ Number.parseInt(expanded.slice(0, 2), 16),
73
+ Number.parseInt(expanded.slice(2, 4), 16),
74
+ Number.parseInt(expanded.slice(4, 6), 16),
75
+ ];
76
+ }
77
+
78
+ /**
79
+ * Build a colorizer for a hex color.
80
+ *
81
+ * Unlike `chalk.hex`, an unparseable or missing color returns the text
82
+ * unchanged instead of throwing -- `Logger.auroLogger` reaches this path
83
+ * whenever it is handed a status it does not recognize.
84
+ * @param {string} hexColor - Hex color string, e.g. `#0096FF`.
85
+ * @returns {((text: string) => string) & {bold: (text: string) => string}} Colorizer with a `.bold` variant.
86
+ */
87
+ export function hex(hexColor) {
88
+ const rgb = toRgb(hexColor);
89
+
90
+ /**
91
+ * @param {string} text - Text to wrap.
92
+ * @param {boolean} bold - Whether to also apply bold.
93
+ * @returns {string} The wrapped text.
94
+ */
95
+ const paint = (text, bold) => {
96
+ const body = `${text}`;
97
+
98
+ // chalk short-circuits empty input rather than emitting a bare open/close
99
+ // pair, and every banner here is built by concatenating segments.
100
+ if (!rgb || body === "" || !colorEnabled()) {
101
+ return body;
102
+ }
103
+
104
+ const color = `${ESC}[38;2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
105
+ const open = bold ? `${color}${BOLD_ON}` : color;
106
+ const close = bold ? `${BOLD_OFF}${RESET_COLOR}` : RESET_COLOR;
107
+
108
+ // Re-open the style after every line break, the way chalk does, so the
109
+ // color survives anything that processes output line by line. The ASCII
110
+ // banners and the boxed `section` logs all rely on this.
111
+ return `${open}${body.replace(/(\r?\n)/gu, `${close}$1${open}`)}${close}`;
112
+ };
113
+
114
+ const colorize = (text) => paint(text, false);
115
+
116
+ colorize.bold = (text) => paint(text, true);
117
+
118
+ return colorize;
119
+ }
@@ -5,12 +5,12 @@
5
5
 
6
6
  /* eslint-disable arrow-parens, line-comment-position, no-console, no-inline-comments, no-magic-numbers, prefer-arrow-callback, require-unicode-regexp, jsdoc/require-description-complete-sentence, prefer-named-capture-group */
7
7
 
8
- import * as fs from 'fs';
9
- import * as path from 'path';
10
- import chalk from 'chalk';
11
- import { fileURLToPath } from 'url';
8
+ import * as fs from "fs";
9
+ import * as path from "path";
10
+ import { fileURLToPath } from "url";
11
+ import { hex } from "./ansiColors.mjs";
12
12
 
13
- import {Logger} from "./logger.mjs";
13
+ import { Logger } from "./logger.mjs";
14
14
 
15
15
  export default class AuroLibraryUtils {
16
16
  getDirname() {
@@ -20,12 +20,15 @@ export default class AuroLibraryUtils {
20
20
  get getProjectRootPath() {
21
21
  const currentDir = this.getDirname();
22
22
 
23
- if (!currentDir.includes('node_modules')) {
24
- Logger.warn(`Unable to determine best project root as node_modules \nis not in the directory path.\n\nAssuming - "${currentDir}"`, true);
23
+ if (!currentDir.includes("node_modules")) {
24
+ Logger.warn(
25
+ `Unable to determine best project root as node_modules \nis not in the directory path.\n\nAssuming - "${currentDir}"`,
26
+ true,
27
+ );
25
28
  return currentDir;
26
29
  }
27
30
 
28
- return currentDir.split('node_modules')[0];
31
+ return currentDir.split("node_modules")[0];
29
32
  }
30
33
 
31
34
  /**
@@ -36,7 +39,11 @@ export default class AuroLibraryUtils {
36
39
  */
37
40
  copyDirectory(srcDir, destDir, removeFiles) {
38
41
  if (!fs.existsSync(srcDir)) {
39
- this.auroLogger(`Source directory ${srcDir} does not exist`, 'error', false);
42
+ this.auroLogger(
43
+ `Source directory ${srcDir} does not exist`,
44
+ "error",
45
+ false,
46
+ );
40
47
  } else {
41
48
  // Removes all files from directory
42
49
  if (removeFiles && fs.existsSync(destDir)) {
@@ -44,16 +51,16 @@ export default class AuroLibraryUtils {
44
51
 
45
52
  let filesRemoved = 0;
46
53
 
47
- destFiles.forEach(file => {
54
+ destFiles.forEach((file) => {
48
55
  const filePath = path.join(destDir, file);
49
56
  fs.unlinkSync(filePath);
50
- this.auroLogger(`Removed file: ${file}`, 'success', false);
57
+ this.auroLogger(`Removed file: ${file}`, "success", false);
51
58
 
52
59
  filesRemoved += 1;
53
60
  });
54
61
 
55
62
  if (filesRemoved > 0) {
56
- this.auroLogger(`Removed ${filesRemoved} files`, 'success', false);
63
+ this.auroLogger(`Removed ${filesRemoved} files`, "success", false);
57
64
  }
58
65
  }
59
66
 
@@ -66,7 +73,7 @@ export default class AuroLibraryUtils {
66
73
  const files = fs.readdirSync(srcDir);
67
74
 
68
75
  // Copies over all files from source directory to destination directory
69
- files.forEach(file => {
76
+ files.forEach((file) => {
70
77
  const sourceFilePath = path.join(srcDir, file);
71
78
  const destFilePath = path.join(destDir, file);
72
79
 
@@ -77,11 +84,11 @@ export default class AuroLibraryUtils {
77
84
  } else {
78
85
  fs.copyFileSync(sourceFilePath, destFilePath);
79
86
 
80
- fs.readFile(destFilePath, 'utf8', (err, data) => {
87
+ fs.readFile(destFilePath, "utf8", (err, data) => {
81
88
  this.formatFileContents(data, destFilePath);
82
89
  });
83
90
 
84
- this.auroLogger(`Copied file: ${file}`, 'success');
91
+ this.auroLogger(`Copied file: ${file}`, "success");
85
92
  }
86
93
  });
87
94
  }
@@ -95,38 +102,50 @@ export default class AuroLibraryUtils {
95
102
  */
96
103
  auroLogger(message, status, section) {
97
104
  if (status) {
98
- const infoColor = '#0096FF'; // blue
99
- const successColor = '#4CBB17'; // green
100
- const errorColor = '#ff0000'; // red
105
+ const infoColor = "#0096FF"; // blue
106
+ const successColor = "#4CBB17"; // green
107
+ const errorColor = "#ff0000"; // red
101
108
 
102
- let color = undefined; // eslint-disable-line no-undef-init
109
+ let color; // eslint-disable-line no-undef-init
103
110
 
104
- if (status === 'info') {
111
+ if (status === "info") {
105
112
  color = infoColor;
106
- } else if (status === 'success') {
113
+ } else if (status === "success") {
107
114
  color = successColor;
108
- } else if (status === 'error') {
115
+ } else if (status === "error") {
109
116
  color = errorColor;
110
117
  }
111
118
 
112
119
  if (section) {
113
- console.log(chalk.hex(color)(`╭ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ──────────────────────────────╮\n`));
120
+ console.log(
121
+ hex(color)(
122
+ "╭ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ──────────────────────────────╮\n",
123
+ ),
124
+ );
114
125
  }
115
126
 
116
- console.log(chalk.hex(color)(message));
127
+ console.log(hex(color)(message));
117
128
 
118
129
  if (section) {
119
- console.log(chalk.hex(color)('\n╰─────────────────────────────── ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╯'));
130
+ console.log(
131
+ hex(color)(
132
+ "\n╰─────────────────────────────── ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╯",
133
+ ),
134
+ );
120
135
  }
121
136
  } else {
122
137
  if (section) {
123
- console.log(`╭ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ──────────────────────────────╮\n`);
138
+ console.log(
139
+ "╭ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ──────────────────────────────╮\n",
140
+ );
124
141
  }
125
142
 
126
143
  console.log(message);
127
144
 
128
145
  if (section) {
129
- console.log(`\n╰─────────────────────────────── ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╯`);
146
+ console.log(
147
+ "\n╰─────────────────────────────── ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╯",
148
+ );
130
149
  }
131
150
  }
132
151
  }
@@ -136,31 +155,40 @@ export default class AuroLibraryUtils {
136
155
  * @returns {Object} result - Object containing data from package.json.
137
156
  */
138
157
  nameExtraction() {
139
- let packageJson = fs.readFileSync('package.json', 'utf8', function(err) {
158
+ let packageJson = fs.readFileSync("package.json", "utf8", (err) => {
140
159
  if (err) {
141
- console.log('ERROR: Unable to read package.json file', err);
160
+ console.log("ERROR: Unable to read package.json file", err);
142
161
  }
143
162
  });
144
163
 
145
164
  packageJson = JSON.parse(packageJson);
146
165
 
147
166
  const pName = packageJson.name;
148
- const npmStart = pName.indexOf('@');
149
- const namespaceStart = pName.indexOf('/');
150
- const nameStart = pName.indexOf('-');
167
+ const npmStart = pName.indexOf("@");
168
+ const namespaceStart = pName.indexOf("/");
169
+ const nameStart = pName.indexOf("-");
151
170
 
152
171
  return {
153
- 'abstractNodeVersion': packageJson.engines.node.substring(2),
154
- 'branchName': packageJson.release.branch,
155
- 'npm': pName.substring(npmStart, namespaceStart),
156
- 'namespace': pName.substring(namespaceStart + 1, nameStart),
157
- 'namespaceCap': pName.substring(namespaceStart + 1)[0].toUpperCase() + pName.substring(namespaceStart + 2, nameStart),
158
- 'name': pName.substring(nameStart + 1),
159
- 'nameCap': pName.substring(nameStart + 1)[0].toUpperCase() + pName.substring(nameStart + 2),
160
- 'version': packageJson.version,
161
- 'tokensVersion': packageJson.peerDependencies['@aurodesignsystem/design-tokens'].substring(1),
162
- 'wcssVersion': packageJson.peerDependencies['@aurodesignsystem/webcorestylesheets'].substring(1)
163
-
172
+ abstractNodeVersion: packageJson.engines.node.substring(2),
173
+ branchName: packageJson.release.branch,
174
+ npm: pName.substring(npmStart, namespaceStart),
175
+ namespace: pName.substring(namespaceStart + 1, nameStart),
176
+ namespaceCap:
177
+ pName.substring(namespaceStart + 1)[0].toUpperCase() +
178
+ pName.substring(namespaceStart + 2, nameStart),
179
+ name: pName.substring(nameStart + 1),
180
+ nameCap:
181
+ pName.substring(nameStart + 1)[0].toUpperCase() +
182
+ pName.substring(nameStart + 2),
183
+ version: packageJson.version,
184
+ tokensVersion:
185
+ packageJson.peerDependencies?.[
186
+ "@aurodesignsystem/design-tokens"
187
+ ]?.substring(1) ?? "",
188
+ wcssVersion:
189
+ packageJson.peerDependencies?.[
190
+ "@aurodesignsystem/webcorestylesheets"
191
+ ]?.substring(1) ?? "",
164
192
  };
165
193
  }
166
194
 
@@ -177,7 +205,10 @@ export default class AuroLibraryUtils {
177
205
  /**
178
206
  * Replace placeholder strings.
179
207
  */
180
- result = result.replace(/\[abstractNodeVersion]/g, nameExtractionData.abstractNodeVersion);
208
+ result = result.replace(
209
+ /\[abstractNodeVersion]/g,
210
+ nameExtractionData.abstractNodeVersion,
211
+ );
181
212
  result = result.replace(/\[branchName]/g, nameExtractionData.branchName);
182
213
  result = result.replace(/\[npm]/g, nameExtractionData.npm);
183
214
  result = result.replace(/\[name](?!\()/g, nameExtractionData.name);
@@ -191,16 +222,21 @@ export default class AuroLibraryUtils {
191
222
  /**
192
223
  * Cleanup line breaks.
193
224
  */
194
- result = result.replace(/(\r\n|\r|\n)[\s]+(\r\n|\r|\n)/g, '\r\n\r\n'); // Replace lines containing only whitespace with a carriage return.
195
- result = result.replace(/>(\r\n|\r|\n){2,}/g, '>\r\n'); // Remove empty lines directly after a closing html tag.
196
- result = result.replace(/>(\r\n|\r|\n)```/g, '>\r\n\r\n```'); // Ensure an empty line before code samples.
197
- result = result.replace(/>(\r\n|\r|\n){2,}```(\r\n|\r|\n)/g, '>\r\n```\r\n'); // Ensure no empty lines before close of code sample.
198
- result = result.replace(/([^(\r\n|\r|\n)])(\r?\n|\r(?!\n))+#/g, "$1\r\n\r\n#"); // Ensure empty line before header sections.
225
+ result = result.replace(/(\r\n|\r|\n)[\s]+(\r\n|\r|\n)/g, "\r\n\r\n"); // Replace lines containing only whitespace with a carriage return.
226
+ result = result.replace(/>(\r\n|\r|\n){2,}/g, ">\r\n"); // Remove empty lines directly after a closing html tag.
227
+ result = result.replace(/>(\r\n|\r|\n)```/g, ">\r\n\r\n```"); // Ensure an empty line before code samples.
228
+ result = result.replace(
229
+ />(\r\n|\r|\n){2,}```(\r\n|\r|\n)/g,
230
+ ">\r\n```\r\n",
231
+ ); // Ensure no empty lines before close of code sample.
232
+ result = result.replace(
233
+ /([^(\r\n|\r|\n)])(\r?\n|\r(?!\n))+#/g,
234
+ "$1\r\n\r\n#",
235
+ ); // Ensure empty line before header sections.
199
236
 
200
237
  /**
201
238
  * Write the result to the destination file.
202
239
  */
203
- fs.writeFileSync(destination, result, { encoding: 'utf8'});
240
+ fs.writeFileSync(destination, result, { encoding: "utf8" });
204
241
  }
205
242
  }
206
-
@@ -1,178 +1,4 @@
1
- // eslint-disable
2
- import Handlebars from "handlebars"
3
- import fs from "node:fs/promises";
4
-
5
- // declare package.json type with jsdoc
6
- /**
7
- * @typedef {Object} ExamplePackageJson
8
- * @property {string} name - Name of the package.
9
- * @property {string} version - Version of the package.
10
- * @property {Record<string, string>} peerDependencies - Peer dependencies of the package.
11
- */
12
-
13
- // declare extracted names type with jsdoc
14
- /**
15
- * @typedef {Object} ExtractedNames
16
- * @property {string} npm - NPM of the package.
17
- * @property {string} namespace - Namespace of the package.
18
- * @property {string} namespaceCap - Capitalized namespace of the package.
19
- * @property {string} name - Name of the package.
20
- * @property {string} nameCap - Capitalized name of the package.
21
- * @property {string} version - Version of the package.
22
- * @property {string} tokensVersion - Version of the design tokens.
23
- * @property {string} wcssVersion - Version of the webcorestylesheets.
24
- */
25
-
26
-
27
- export class AuroTemplateFiller {
28
- static designTokenPackage = '@aurodesignsystem/design-tokens';
29
- static webCoreStylesheetsPackage = '@aurodesignsystem/webcorestylesheets';
30
-
31
- constructor () {
32
- /** @type {ExtractedNames} */
33
- this.values = null;
34
- }
35
-
36
- async prepare() {
37
- await this.extractNames()
38
- }
39
-
40
- /**
41
- * Extract various data for filling template files from the package.json file.
42
- * @returns {Promise<ExtractedNames>}
43
- */
44
- async extractNames() {
45
- const packageJsonData = await fs.readFile('package.json', 'utf8');
46
-
47
- /** @type {ExamplePackageJson} */
48
- const parsedPackageJson = JSON.parse(packageJsonData);
49
-
50
- const pName = parsedPackageJson.name;
51
- const pVersion = parsedPackageJson.version;
52
- const pdtVersion = parsedPackageJson.peerDependencies?.[AuroTemplateFiller.designTokenPackage].substring(1) ?? '';
53
- const wcssVersion = parsedPackageJson.peerDependencies?.[AuroTemplateFiller.webCoreStylesheetsPackage].substring(1) ?? '';
54
-
55
- const npmStart = pName.indexOf('@');
56
- const namespaceStart = pName.indexOf('/');
57
- const nameStart = pName.indexOf('-');
58
- const packageNamespace = pName.substring(namespaceStart + 1, nameStart);
59
-
60
- if (nameStart === -1) {
61
- throw new Error(`No name can be derived from package.json "name" field: '${pName}'. Expected pattern with \`-\` split like [\`@aurodesignsystem/auro-component\` or \`@aurodesignsystem/eslint-config\`, etc.]`);
62
- }
63
-
64
- this.values = {
65
- 'npm': pName.substring(npmStart, namespaceStart),
66
- 'namespace': packageNamespace,
67
- 'namespaceCap': pName.substring(namespaceStart + 1)[0].toUpperCase() + pName.substring(namespaceStart + 2, nameStart),
68
- 'name': pName.substring(nameStart + 1),
69
- 'nameCap': pName.substring(nameStart + 1)[0].toUpperCase() + pName.substring(nameStart + 2),
70
- 'version': pVersion,
71
- 'tokensVersion': pdtVersion,
72
- wcssVersion
73
- };
74
- }
75
-
76
- /**
77
- * @param {string} template - The string to use to run variable replacement
78
- * @param {object} extraVars - Additional variables to use in the template
79
- * @return {string}
80
- */
81
- replaceTemplateValues(template, extraVars = {}) {
82
- const compileResult = Handlebars.compile(template);
83
-
84
- // replace all handlebars placeholders FIRST, then apply legacy replacements
85
- let result = compileResult({
86
- // TODO: consider replacing some of these with handlebars helpers
87
- name: this.values.name,
88
- Name: this.values.nameCap,
89
- namespace: this.values.namespace,
90
- Namespace: this.values.namespaceCap,
91
- Version: this.values.version,
92
- dtVersion: this.values.tokensVersion,
93
- wcssVersion: this.values.wcssVersion,
94
- ...extraVars
95
- }, {
96
- helpers: {
97
- 'capitalize': (str) => str.charAt(0).toUpperCase() + str.slice(1),
98
- // Hard codes `auro-*` with whatever string is passed in.
99
- 'withAuroNamespace': (str) => `auro-${str}`,
100
- // Recreats the string from package.json: auro-component, eslint-config, etc.
101
- 'packageName': () => `${this.values['namespace']}-${this.values['name']}`
102
- }
103
- })
104
-
105
- /**
106
- * Old legacy template variables. We used to use `[varName]` and are now using handlebars `{{varName}}`.
107
- * @type {[{pattern: RegExp, replacement: string},{pattern: RegExp, replacement: string},{pattern: RegExp, replacement: string},{pattern: RegExp, replacement: string},{pattern: RegExp, replacement: string},null,null,null]}
108
- */
109
- const legacyTemplateVariables = [
110
- {
111
- pattern: /\[npm\]/gu,
112
- replacement: this.values.npm
113
- },
114
- {
115
- pattern: /\[name\](?!\()/gu,
116
- replacement: this.values.name
117
- },
118
- {
119
- pattern: /\[Name\](?!\()/gu,
120
- replacement: this.values.nameCap
121
- },
122
- {
123
- pattern: /\[namespace\]/gu,
124
- replacement: this.values.namespace
125
- },
126
- {
127
- pattern: /\[Namespace\]/gu,
128
- replacement: this.values.namespaceCap
129
- },
130
- {
131
- pattern: /\[Version\]/gu,
132
- replacement: this.values.version
133
- },
134
- {
135
- pattern: /\[dtVersion\]/gu,
136
- replacement: this.values.tokensVersion
137
- },
138
- {
139
- pattern: /\[wcssVersion\]/gu,
140
- replacement: this.values.wcssVersion
141
- }
142
- ];
143
-
144
- /**
145
- * Replace legacy placeholder strings.
146
- */
147
- for (const { pattern, replacement } of legacyTemplateVariables) {
148
- result = result.replace(pattern, replacement);
149
- }
150
-
151
- /**
152
- * Cleanup line breaks.
153
- */
154
- result = result.replace(/(\r\n|\r|\n)[\s]+(\r\n|\r|\n)/g, '\r\n\r\n'); // Replace lines containing only whitespace with a carriage return.
155
- result = result.replace(/>(\r\n|\r|\n){2,}/g, '>\r\n'); // Remove empty lines directly after a closing html tag.
156
- result = result.replace(/>(\r\n|\r|\n)```/g, '>\r\n\r\n```'); // Ensure an empty line before code samples.
157
- result = result.replace(/>(\r\n|\r|\n){2,}```(\r\n|\r|\n)/g, '>\r\n```\r\n'); // Ensure no empty lines before close of code sample.
158
- result = result.replace(/([^(\r\n|\r|\n)])(\r?\n|\r(?!\n))+#/g, "$1\r\n\r\n#"); // Ensure empty line before header sections.
159
-
160
- return result;
161
- }
162
-
163
-
164
- /**
165
- *
166
- * @param {string} content
167
- */
168
- formatApiTable(content) {
169
- let result = `${content}`;
170
-
171
- result = result
172
- .replace(/\r\n|\r|\n####\s`([a-zA-Z]*)`/g, `\r\n#### <a name="$1"></a>\`$1\`<a href="#" style="float: right; font-size: 1rem; font-weight: 100;">back to top</a>`)
173
- .replace(/\r\n|\r|\n\|\s`([a-zA-Z]*)`/g, '\r\n| [$1](#$1)')
174
- .replace(/\| \[\]\(#\)/g, "");
175
-
176
- return result
177
- }
178
- }
1
+ // Shim for the pre-compiled build. Do not edit.
2
+ // Generated by build/bundleDocsScripts.mjs from src/utils/auroTemplateFiller.mjs.
3
+ // Edit that file, then run `npm run build:bundles`.
4
+ export * from "../../dist/utils/auroTemplateFiller.mjs";
@@ -1,9 +1,8 @@
1
1
  /* eslint-disable no-inline-comments, no-console, line-comment-position */
2
2
 
3
- import chalk from 'chalk';
3
+ import { hex } from "./ansiColors.mjs";
4
4
 
5
5
  export class Logger {
6
-
7
6
  /**
8
7
  * Logs out messages in a readable format.
9
8
  * @param {String} message - Message to be logged.
@@ -12,41 +11,53 @@ export class Logger {
12
11
  */
13
12
  static auroLogger(message, status, section) {
14
13
  if (status !== false) {
15
- const infoColor = '#0096FF'; // blue
16
- const successColor = '#4CBB17'; // green
17
- const errorColor = '#ff0000'; // red
18
- const warningColor = '#FFA500'; // orange
14
+ const infoColor = "#0096FF"; // blue
15
+ const successColor = "#4CBB17"; // green
16
+ const errorColor = "#ff0000"; // red
17
+ const warningColor = "#FFA500"; // orange
19
18
 
20
- let color = undefined; // eslint-disable-line no-undef-init
19
+ let color; // eslint-disable-line no-undef-init
21
20
 
22
- if (status === 'info') {
21
+ if (status === "info") {
23
22
  color = infoColor;
24
- } else if (status === 'success') {
23
+ } else if (status === "success") {
25
24
  color = successColor;
26
- } else if (status === 'error') {
25
+ } else if (status === "error") {
27
26
  color = errorColor;
28
- } else if (status === 'warn') {
27
+ } else if (status === "warn") {
29
28
  color = warningColor;
30
29
  }
31
30
 
32
31
  if (section) {
33
- console.log(chalk.hex(color)(`╭ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ──────────────────────────────╮\n`));
32
+ console.log(
33
+ hex(color)(
34
+ "╭ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ──────────────────────────────╮\n",
35
+ ),
36
+ );
34
37
  }
35
38
 
36
- console.log(chalk.hex(color)(message));
39
+ console.log(hex(color)(message));
37
40
 
38
41
  if (section) {
39
- console.log(chalk.hex(color)('\n╰─────────────────────────────── ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╯'));
42
+ console.log(
43
+ hex(color)(
44
+ "\n╰─────────────────────────────── ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╯",
45
+ ),
46
+ );
40
47
  }
41
48
  } else {
42
49
  if (section) {
43
- console.log(`╭ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ──────────────────────────────╮\n`);
50
+ console.log(
51
+ "╭ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ──────────────────────────────╮\n",
52
+ );
44
53
  }
45
54
 
46
55
  console.log(message);
47
56
 
48
57
  if (section) {
49
- console.log(`\n╰─────────────────────────────── ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╯`);
58
+ console.log(
59
+ "\n╰─────────────────────────────── ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╯",
60
+ );
50
61
  }
51
62
  }
52
63
  }