@decaf-ts/utils 0.2.12 → 0.3.1
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.
- package/LICENSE.md +21 -157
- package/README.md +403 -12
- package/bin/build-scripts.cjs +236 -52
- package/bin/tag-release.cjs +168 -47
- package/bin/tag-release.sh +6 -0
- package/bin/update-scripts.cjs +207 -47
- package/dist/utils.cjs +364 -70
- package/dist/utils.esm.cjs +364 -70
- package/lib/cli/command.cjs +2 -2
- package/lib/cli/command.d.ts +1 -1
- package/lib/cli/commands/build-scripts.cjs +8 -6
- package/lib/cli/constants.cjs +3 -1
- package/lib/cli/constants.d.ts +2 -0
- package/lib/cli/types.cjs +1 -1
- package/lib/cli/types.d.ts +2 -0
- package/lib/esm/bin/build-scripts.js +2 -2
- package/lib/esm/bin/tag-release.js +2 -2
- package/lib/esm/bin/update-scripts.js +2 -2
- package/lib/esm/cli/command.d.ts +1 -1
- package/lib/esm/cli/command.js +7 -7
- package/lib/esm/cli/commands/build-scripts.js +11 -9
- package/lib/esm/cli/commands/index.js +4 -4
- package/lib/esm/cli/commands/tag-release.js +5 -5
- package/lib/esm/cli/commands/update-scripts.js +4 -4
- package/lib/esm/cli/constants.d.ts +2 -0
- package/lib/esm/cli/constants.js +3 -1
- package/lib/esm/cli/index.js +4 -4
- package/lib/esm/cli/types.d.ts +2 -0
- package/lib/esm/cli/types.js +1 -1
- package/lib/esm/index.d.ts +4 -4
- package/lib/esm/index.js +10 -10
- package/lib/esm/input/index.js +3 -3
- package/lib/esm/input/input.d.ts +65 -19
- package/lib/esm/input/input.js +61 -22
- package/lib/esm/input/types.d.ts +7 -7
- package/lib/esm/input/types.js +1 -1
- package/lib/esm/output/common.d.ts +2 -0
- package/lib/esm/output/common.js +4 -1
- package/lib/esm/output/index.js +2 -2
- package/lib/esm/utils/constants.d.ts +12 -6
- package/lib/esm/utils/constants.js +13 -7
- package/lib/esm/utils/environment.d.ts +13 -0
- package/lib/esm/utils/environment.js +16 -3
- package/lib/esm/utils/fs.d.ts +111 -5
- package/lib/esm/utils/fs.js +114 -8
- package/lib/esm/utils/http.d.ts +1 -1
- package/lib/esm/utils/http.js +2 -2
- package/lib/esm/utils/index.js +8 -8
- package/lib/esm/utils/md.d.ts +15 -15
- package/lib/esm/utils/md.js +1 -1
- package/lib/esm/utils/tests.d.ts +26 -3
- package/lib/esm/utils/tests.js +40 -2
- package/lib/esm/utils/text.d.ts +33 -7
- package/lib/esm/utils/text.js +34 -8
- package/lib/esm/utils/timeout.d.ts +11 -0
- package/lib/esm/utils/timeout.js +12 -1
- package/lib/esm/utils/types.d.ts +33 -2
- package/lib/esm/utils/types.js +1 -1
- package/lib/esm/utils/utils.d.ts +44 -2
- package/lib/esm/utils/utils.js +23 -5
- package/lib/esm/utils/web.d.ts +3 -2
- package/lib/esm/utils/web.js +4 -3
- package/lib/esm/writers/OutputWriter.d.ts +2 -2
- package/lib/esm/writers/OutputWriter.js +1 -1
- package/lib/esm/writers/RegexpOutputWriter.d.ts +51 -10
- package/lib/esm/writers/RegexpOutputWriter.js +53 -12
- package/lib/esm/writers/StandardOutputWriter.d.ts +49 -10
- package/lib/esm/writers/StandardOutputWriter.js +51 -12
- package/lib/esm/writers/index.js +5 -5
- package/lib/esm/writers/types.d.ts +2 -2
- package/lib/esm/writers/types.js +1 -1
- package/lib/index.cjs +5 -5
- package/lib/index.d.ts +4 -4
- package/lib/input/input.cjs +61 -22
- package/lib/input/input.d.ts +65 -19
- package/lib/input/types.cjs +1 -1
- package/lib/input/types.d.ts +7 -7
- package/lib/output/common.cjs +4 -1
- package/lib/output/common.d.ts +2 -0
- package/lib/utils/constants.cjs +13 -7
- package/lib/utils/constants.d.ts +12 -6
- package/lib/utils/environment.cjs +14 -1
- package/lib/utils/environment.d.ts +13 -0
- package/lib/utils/fs.cjs +112 -6
- package/lib/utils/fs.d.ts +111 -5
- package/lib/utils/http.cjs +2 -2
- package/lib/utils/http.d.ts +1 -1
- package/lib/utils/md.cjs +1 -1
- package/lib/utils/md.d.ts +15 -15
- package/lib/utils/tests.cjs +39 -1
- package/lib/utils/tests.d.ts +26 -3
- package/lib/utils/text.cjs +34 -8
- package/lib/utils/text.d.ts +33 -7
- package/lib/utils/timeout.cjs +12 -1
- package/lib/utils/timeout.d.ts +11 -0
- package/lib/utils/types.cjs +1 -1
- package/lib/utils/types.d.ts +33 -2
- package/lib/utils/utils.cjs +21 -3
- package/lib/utils/utils.d.ts +44 -2
- package/lib/utils/web.cjs +4 -3
- package/lib/utils/web.d.ts +3 -2
- package/lib/writers/OutputWriter.cjs +1 -1
- package/lib/writers/OutputWriter.d.ts +2 -2
- package/lib/writers/RegexpOutputWriter.cjs +52 -11
- package/lib/writers/RegexpOutputWriter.d.ts +51 -10
- package/lib/writers/StandardOutputWriter.cjs +50 -11
- package/lib/writers/StandardOutputWriter.d.ts +49 -10
- package/lib/writers/types.cjs +1 -1
- package/lib/writers/types.d.ts +2 -2
- package/package.json +2 -2
package/lib/esm/cli/constants.js
CHANGED
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
* @property {Object} banner - Banner display option.
|
|
28
28
|
* @property {string} banner.type - The type of the banner option (boolean).
|
|
29
29
|
* @property {boolean} banner.default - The default value for banner display (false).
|
|
30
|
+
* @memberOf module:utils
|
|
30
31
|
*/
|
|
31
32
|
export const DefaultCommandOptions = {
|
|
32
33
|
verbose: {
|
|
@@ -67,10 +68,11 @@ export const DefaultCommandOptions = {
|
|
|
67
68
|
* @const DefaultCommandValues
|
|
68
69
|
* @typedef {Object} DefaultCommandValues
|
|
69
70
|
* @property {unknown} [key: string] - The default value for each option in DefaultCommandOptions.
|
|
71
|
+
* @memberOf module:utils
|
|
70
72
|
*/
|
|
71
73
|
export const DefaultCommandValues = Object.keys(DefaultCommandOptions).reduce((acc, key) => {
|
|
72
74
|
acc[key] =
|
|
73
75
|
DefaultCommandOptions[key].default;
|
|
74
76
|
return acc;
|
|
75
77
|
}, {});
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ25DLE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEdBQUc7UUFDVixPQUFPLEVBQUUsU0FBUztLQUNuQjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEdBQUc7UUFDVixPQUFPLEVBQUUsU0FBUztLQUNuQjtJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEdBQUc7UUFDVixPQUFPLEVBQUUsS0FBSztLQUNmO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLFFBQVE7UUFDZCxPQUFPLEVBQUUsTUFBTTtLQUNoQjtJQUNELFFBQVEsRUFBRTtRQUNSLElBQUksRUFBRSxTQUFTO1FBQ2YsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELFNBQVMsRUFBRTtRQUNULElBQUksRUFBRSxTQUFTO1FBQ2YsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELE1BQU0sRUFBRTtRQUNOLElBQUksRUFBRSxTQUFTO1FBQ2YsT0FBTyxFQUFFLElBQUk7S0FDZDtDQUNGLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBRTdCLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQzNDLENBQUMsR0FBd0QsRUFBRSxHQUFXLEVBQUUsRUFBRTtJQUN4RSxHQUFHLENBQUMsR0FBeUMsQ0FBQztRQUM1QyxxQkFBcUIsQ0FBQyxHQUF5QyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQzNFLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxFQUNELEVBQXdELENBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBEZWZhdWx0IGNvbW1hbmQgb3B0aW9ucyBmb3IgQ0xJIGNvbW1hbmRzLlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIGFuZCBkZWZhdWx0IHZhbHVlcyBmb3IgY29tbW9uIGNvbW1hbmQtbGluZSBvcHRpb25zIHVzZWQgYWNyb3NzIHZhcmlvdXMgQ0xJIGNvbW1hbmRzLlxuICogQGNvbnN0IERlZmF1bHRDb21tYW5kT3B0aW9uc1xuICogQHR5cGVkZWYge09iamVjdH0gRGVmYXVsdENvbW1hbmRPcHRpb25zXG4gKiBAcHJvcGVydHkge09iamVjdH0gdmVyYm9zZSAtIFZlcmJvc2l0eSBsZXZlbCBvcHRpb24uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdmVyYm9zZS50eXBlIC0gVGhlIHR5cGUgb2YgdGhlIHZlcmJvc2Ugb3B0aW9uIChudW1iZXIpLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHZlcmJvc2Uuc2hvcnQgLSBUaGUgc2hvcnQgZmxhZyBmb3IgdGhlIHZlcmJvc2Ugb3B0aW9uIChWKS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB2ZXJib3NlLmRlZmF1bHQgLSBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdmVyYm9zaXR5ICgwKS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSB2ZXJzaW9uIC0gVmVyc2lvbiBkaXNwbGF5IG9wdGlvbi5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2ZXJzaW9uLnR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgdmVyc2lvbiBvcHRpb24gKGJvb2xlYW4pLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHZlcnNpb24uc2hvcnQgLSBUaGUgc2hvcnQgZmxhZyBmb3IgdGhlIHZlcnNpb24gb3B0aW9uICh2KS5cbiAqIEBwcm9wZXJ0eSB7dW5kZWZpbmVkfSB2ZXJzaW9uLmRlZmF1bHQgLSBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdmVyc2lvbiBkaXNwbGF5ICh1bmRlZmluZWQpLlxuICogQHByb3BlcnR5IHtPYmplY3R9IGhlbHAgLSBIZWxwIGRpc3BsYXkgb3B0aW9uLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGhlbHAudHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBoZWxwIG9wdGlvbiAoYm9vbGVhbikuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaGVscC5zaG9ydCAtIFRoZSBzaG9ydCBmbGFnIGZvciB0aGUgaGVscCBvcHRpb24gKGgpLlxuICogQHByb3BlcnR5IHtib29sZWFufSBoZWxwLmRlZmF1bHQgLSBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgaGVscCBkaXNwbGF5IChmYWxzZSkuXG4gKiBAcHJvcGVydHkge09iamVjdH0gbG9nTGV2ZWwgLSBMb2cgbGV2ZWwgb3B0aW9uLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGxvZ0xldmVsLnR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgbG9nTGV2ZWwgb3B0aW9uIChzdHJpbmcpLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGxvZ0xldmVsLmRlZmF1bHQgLSBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgbG9nIGxldmVsIChcImluZm9cIikuXG4gKiBAcHJvcGVydHkge09iamVjdH0gbG9nU3R5bGUgLSBMb2cgc3R5bGluZyBvcHRpb24uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbG9nU3R5bGUudHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBsb2dTdHlsZSBvcHRpb24gKGJvb2xlYW4pLlxuICogQHByb3BlcnR5IHtib29sZWFufSBsb2dTdHlsZS5kZWZhdWx0IC0gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIGxvZyBzdHlsaW5nICh0cnVlKS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSB0aW1lc3RhbXAgLSBUaW1lc3RhbXAgZGlzcGxheSBvcHRpb24uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGltZXN0YW1wLnR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgdGltZXN0YW1wIG9wdGlvbiAoYm9vbGVhbikuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHRpbWVzdGFtcC5kZWZhdWx0IC0gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRpbWVzdGFtcCBkaXNwbGF5ICh0cnVlKS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBiYW5uZXIgLSBCYW5uZXIgZGlzcGxheSBvcHRpb24uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYmFubmVyLnR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgYmFubmVyIG9wdGlvbiAoYm9vbGVhbikuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGJhbm5lci5kZWZhdWx0IC0gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIGJhbm5lciBkaXNwbGF5IChmYWxzZSkuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0Q29tbWFuZE9wdGlvbnMgPSB7XG4gIHZlcmJvc2U6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBzaG9ydDogXCJWXCIsXG4gICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICB9LFxuICB2ZXJzaW9uOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgc2hvcnQ6IFwidlwiLFxuICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgfSxcbiAgaGVscDoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIHNob3J0OiBcImhcIixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgbG9nTGV2ZWw6IHtcbiAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIGRlZmF1bHQ6IFwiaW5mb1wiLFxuICB9LFxuICBsb2dTdHlsZToge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gIH0sXG4gIHRpbWVzdGFtcDoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gIH0sXG4gIGJhbm5lcjoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gIH0sXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWZhdWx0IGNvbW1hbmQgdmFsdWVzIGRlcml2ZWQgZnJvbSBEZWZhdWx0Q29tbWFuZE9wdGlvbnMuXG4gKiBAc3VtbWFyeSBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiBhbGwgb3B0aW9ucyBkZWZpbmVkIGluIERlZmF1bHRDb21tYW5kT3B0aW9ucy5cbiAqIEBjb25zdCBEZWZhdWx0Q29tbWFuZFZhbHVlc1xuICogQHR5cGVkZWYge09iamVjdH0gRGVmYXVsdENvbW1hbmRWYWx1ZXNcbiAqIEBwcm9wZXJ0eSB7dW5rbm93bn0gW2tleTogc3RyaW5nXSAtIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIG9wdGlvbiBpbiBEZWZhdWx0Q29tbWFuZE9wdGlvbnMuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0Q29tbWFuZFZhbHVlczoge1xuICBbayBpbiBrZXlvZiB0eXBlb2YgRGVmYXVsdENvbW1hbmRPcHRpb25zXTogdW5rbm93bjtcbn0gPSBPYmplY3Qua2V5cyhEZWZhdWx0Q29tbWFuZE9wdGlvbnMpLnJlZHVjZShcbiAgKGFjYzogUmVjb3JkPGtleW9mIHR5cGVvZiBEZWZhdWx0Q29tbWFuZE9wdGlvbnMsIHVua25vd24+LCBrZXk6IHN0cmluZykgPT4ge1xuICAgIGFjY1trZXkgYXMga2V5b2YgdHlwZW9mIERlZmF1bHRDb21tYW5kT3B0aW9uc10gPVxuICAgICAgRGVmYXVsdENvbW1hbmRPcHRpb25zW2tleSBhcyBrZXlvZiB0eXBlb2YgRGVmYXVsdENvbW1hbmRPcHRpb25zXS5kZWZhdWx0O1xuICAgIHJldHVybiBhY2M7XG4gIH0sXG4gIHt9IGFzIFJlY29yZDxrZXlvZiB0eXBlb2YgRGVmYXVsdENvbW1hbmRWYWx1ZXMsIHVua25vd24+XG4pO1xuIl19
|
package/lib/esm/cli/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from "./command";
|
|
2
|
-
export * from "./constants";
|
|
3
|
-
export * from "./types";
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from "./command.js";
|
|
2
|
+
export * from "./constants.js";
|
|
3
|
+
export * from "./types.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZCQUEwQjtBQUMxQiwrQkFBNEI7QUFDNUIsMkJBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuIl19
|
package/lib/esm/cli/types.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { LoggingConfig } from "@decaf-ts/logging";
|
|
|
8
8
|
* @property {boolean} [version] - Flag to show version information.
|
|
9
9
|
* @property {boolean} [banner] - Flag to show banner.
|
|
10
10
|
* @property {boolean} [help] - Flag to show help information.
|
|
11
|
+
* @memberOf module:utils
|
|
11
12
|
*/
|
|
12
13
|
export type InputOptions = {
|
|
13
14
|
verbose?: number;
|
|
@@ -20,6 +21,7 @@ export type InputOptions = {
|
|
|
20
21
|
* @summary Combines input options, input option configurations, and logging configurations into a single type.
|
|
21
22
|
* @template I - The type of additional input options specific to the command.
|
|
22
23
|
* @typedef {Object} CommandOptions
|
|
24
|
+
* @memberOf module:utils
|
|
23
25
|
*/
|
|
24
26
|
export type CommandOptions<I> = I & Partial<{
|
|
25
27
|
[k in keyof InputOptions]: ParseArgsOptionConfig;
|
package/lib/esm/cli/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzZUFyZ3NPcHRpb25Db25maWcgfSBmcm9tIFwiLi4vaW5wdXQvdHlwZXNcIjtcbmltcG9ydCB7IExvZ2dpbmdDb25maWcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBpbnB1dCBvcHRpb25zLlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGlucHV0IG9wdGlvbnMgZm9yIENMSSBjb21tYW5kcy5cbiAqIEBpbnRlcmZhY2UgSW5wdXRPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3ZlcmJvc2VdIC0gVGhlIHZlcmJvc2l0eSBsZXZlbC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3ZlcnNpb25dIC0gRmxhZyB0byBzaG93IHZlcnNpb24gaW5mb3JtYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtiYW5uZXJdIC0gRmxhZyB0byBzaG93IGJhbm5lci5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2hlbHBdIC0gRmxhZyB0byBzaG93IGhlbHAgaW5mb3JtYXRpb24uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIElucHV0T3B0aW9ucyA9IHtcbiAgdmVyYm9zZT86IG51bWJlcjtcbiAgdmVyc2lvbj86IGJvb2xlYW47XG4gIGJhbm5lcj86IGJvb2xlYW47XG4gIGhlbHA/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSBkZWZpbml0aW9uIGZvciBjb21tYW5kIG9wdGlvbnMuXG4gKiBAc3VtbWFyeSBDb21iaW5lcyBpbnB1dCBvcHRpb25zLCBpbnB1dCBvcHRpb24gY29uZmlndXJhdGlvbnMsIGFuZCBsb2dnaW5nIGNvbmZpZ3VyYXRpb25zIGludG8gYSBzaW5nbGUgdHlwZS5cbiAqIEB0ZW1wbGF0ZSBJIC0gVGhlIHR5cGUgb2YgYWRkaXRpb25hbCBpbnB1dCBvcHRpb25zIHNwZWNpZmljIHRvIHRoZSBjb21tYW5kLlxuICogQHR5cGVkZWYge09iamVjdH0gQ29tbWFuZE9wdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dXRpbHNcbiAqL1xuZXhwb3J0IHR5cGUgQ29tbWFuZE9wdGlvbnM8ST4gPSBJICZcbiAgUGFydGlhbDx7IFtrIGluIGtleW9mIElucHV0T3B0aW9uc106IFBhcnNlQXJnc09wdGlvbkNvbmZpZyB9PiAmXG4gIFBhcnRpYWw8eyBbayBpbiBrZXlvZiBMb2dnaW5nQ29uZmlnXTogUGFyc2VBcmdzT3B0aW9uQ29uZmlnIH0+O1xuIl19
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export * from "./output";
|
|
|
4
4
|
export * from "./utils";
|
|
5
5
|
export * from "./writers";
|
|
6
6
|
/**
|
|
7
|
-
* @module
|
|
7
|
+
* @module utils
|
|
8
8
|
* @description
|
|
9
9
|
* This module serves a light version of Decaf CLI tool, providing a comprehensive set of utilities
|
|
10
10
|
* and functionalities for command-line interface operations. It encompasses several key components:
|
|
@@ -31,9 +31,9 @@ export * from "./writers";
|
|
|
31
31
|
* @description Represents the current version of the module.
|
|
32
32
|
* @summary This constant stores the version number of the @asdasdasd/utils module.
|
|
33
33
|
* The actual version number is replaced during the build process,
|
|
34
|
-
* with the placeholder "0.
|
|
34
|
+
* with the placeholder "0.3.1" being substituted with the current version.
|
|
35
35
|
*
|
|
36
36
|
* @const VERSION
|
|
37
|
-
* @memberOf module
|
|
37
|
+
* @memberOf module:utils
|
|
38
38
|
*/
|
|
39
|
-
export declare const VERSION = "0.
|
|
39
|
+
export declare const VERSION = "0.3.1";
|
package/lib/esm/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export * from "./cli";
|
|
2
|
-
export * from "./input";
|
|
3
|
-
export * from "./output";
|
|
4
|
-
export * from "./utils";
|
|
5
|
-
export * from "./writers";
|
|
1
|
+
export * from "./cli/index.js";
|
|
2
|
+
export * from "./input/index.js";
|
|
3
|
+
export * from "./output/index.js";
|
|
4
|
+
export * from "./utils/index.js";
|
|
5
|
+
export * from "./writers/index.js";
|
|
6
6
|
/**
|
|
7
|
-
* @module
|
|
7
|
+
* @module utils
|
|
8
8
|
* @description
|
|
9
9
|
* This module serves a light version of Decaf CLI tool, providing a comprehensive set of utilities
|
|
10
10
|
* and functionalities for command-line interface operations. It encompasses several key components:
|
|
@@ -31,10 +31,10 @@ export * from "./writers";
|
|
|
31
31
|
* @description Represents the current version of the module.
|
|
32
32
|
* @summary This constant stores the version number of the @asdasdasd/utils module.
|
|
33
33
|
* The actual version number is replaced during the build process,
|
|
34
|
-
* with the placeholder "0.
|
|
34
|
+
* with the placeholder "0.3.1" being substituted with the current version.
|
|
35
35
|
*
|
|
36
36
|
* @const VERSION
|
|
37
|
-
* @memberOf module
|
|
37
|
+
* @memberOf module:utils
|
|
38
38
|
*/
|
|
39
|
-
export const VERSION = "0.
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
export const VERSION = "0.3.1";
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQXNCO0FBQ3RCLGlDQUF3QjtBQUN4QixrQ0FBeUI7QUFDekIsaUNBQXdCO0FBQ3hCLG1DQUEwQjtBQUUxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFFSDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jbGlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2lucHV0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vdXRwdXRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93cml0ZXJzXCI7XG5cbi8qKlxuICogQG1vZHVsZSB1dGlsc1xuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIG1vZHVsZSBzZXJ2ZXMgYSBsaWdodCB2ZXJzaW9uIG9mIERlY2FmIENMSSB0b29sLCBwcm92aWRpbmcgYSBjb21wcmVoZW5zaXZlIHNldCBvZiB1dGlsaXRpZXNcbiAqIGFuZCBmdW5jdGlvbmFsaXRpZXMgZm9yIGNvbW1hbmQtbGluZSBpbnRlcmZhY2Ugb3BlcmF0aW9ucy4gSXQgZW5jb21wYXNzZXMgc2V2ZXJhbCBrZXkgY29tcG9uZW50czpcbiAqXG4gKiAxLiBJbnB1dCBIYW5kbGluZzogTWFuYWdlcyB1c2VyIGlucHV0IGFuZCBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHByb2Nlc3NpbmcuXG4gKiAyLiBVdGlsaXR5IEZ1bmN0aW9uczogT2ZmZXJzIGEgY29sbGVjdGlvbiBvZiBoZWxwZXIgZnVuY3Rpb25zIGFuZCBjb25zdGFudHMgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucy5cbiAqIDMuIFR5cGUgRGVmaW5pdGlvbnM6IERlZmluZXMgY3VzdG9tIHR5cGVzIGFuZCBpbnRlcmZhY2VzIHVzZWQgdGhyb3VnaG91dCB0aGUgbW9kdWxlLlxuICogNC4gT3V0cHV0IE1hbmFnZW1lbnQ6IFByb3ZpZGVzIGRpZmZlcmVudCBvdXRwdXQgd3JpdGluZyBzdHJhdGVnaWVzIGZvciBmbGV4aWJsZSBjb25zb2xlIG91dHB1dCBoYW5kbGluZy5cbiAqXG4gKiBUaGUgbW9kdWxlIGlzIGRlc2lnbmVkIHRvIGZhY2lsaXRhdGUgdGhlIGNyZWF0aW9uIG9mIHJvYnVzdCBDTEkgYXBwbGljYXRpb25zIGJ5IG9mZmVyaW5nOlxuICogLSBTdGFuZGFyZGl6ZWQgaW5wdXQgcGFyc2luZyBhbmQgdmFsaWRhdGlvblxuICogLSBDb25zaXN0ZW50IG91dHB1dCBmb3JtYXR0aW5nIGFuZCBoYW5kbGluZ1xuICogLSBSZXVzYWJsZSB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgY29tbW9uIENMSSB0YXNrc1xuICogLSBFeHRlbnNpYmxlIGFyY2hpdGVjdHVyZSBmb3IgYWRkaW5nIG5ldyBjb21tYW5kcyBhbmQgZmVhdHVyZXNcbiAqXG4gKiBJdCBzdXBwb3J0cyB2YXJpb3VzIG91dHB1dCBtb2RlcywgaW5jbHVkaW5nIHN0YW5kYXJkIGNvbnNvbGUgb3V0cHV0IGFuZCByZWd1bGFyIGV4cHJlc3Npb24tYmFzZWQgb3V0cHV0LFxuICogYWxsb3dpbmcgZm9yIHZlcnNhdGlsZSBkYXRhIHByZXNlbnRhdGlvbiBhbmQgcHJvY2Vzc2luZy4gVGhlIG1vZHVsYXIgc3RydWN0dXJlIGVuYWJsZXMgZWFzeSBtYWludGVuYW5jZVxuICogYW5kIGV4dGVuc2lvbiBvZiB0aGUgQ0xJIGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgZGV2ZWxvcGVycyBidWlsZGluZyBjb21wbGV4IGNvbW1hbmQtbGluZSB0b29scyB0aGF0IHJlcXVpcmVcbiAqIHN0cnVjdHVyZWQgaW5wdXQgaGFuZGxpbmcsIGZsZXhpYmxlIG91dHB1dCBmb3JtYXR0aW5nLCBhbmQgYSByaWNoIHNldCBvZiB1dGlsaXR5IGZ1bmN0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIG1vZHVsZS5cbiAqIEBzdW1tYXJ5IFRoaXMgY29uc3RhbnQgc3RvcmVzIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgQGFzZGFzZGFzZC91dGlscyBtb2R1bGUuXG4gKiBUaGUgYWN0dWFsIHZlcnNpb24gbnVtYmVyIGlzIHJlcGxhY2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcyxcbiAqIHdpdGggdGhlIHBsYWNlaG9sZGVyIFwiIyNWRVJTSU9OIyNcIiBiZWluZyBzdWJzdGl0dXRlZCB3aXRoIHRoZSBjdXJyZW50IHZlcnNpb24uXG4gKlxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6dXRpbHNcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG4iXX0=
|
package/lib/esm/input/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from "./input.js";
|
|
2
|
+
export * from "./types.js";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5wdXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkJBQXdCO0FBQ3hCLDJCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW5wdXQnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG4iXX0=
|
package/lib/esm/input/input.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Answers, Choice, Falsy, InitialReturnValue, PrevCaller, PromptObject, PromptType, ValueOrFunc } from "prompts";
|
|
2
2
|
import { Writable, Readable } from "stream";
|
|
3
|
-
import {
|
|
3
|
+
import { ParseArgsOptionsConfig, ParseArgsResult } from "./types";
|
|
4
4
|
/**
|
|
5
5
|
* @description Represents a user input prompt with various configuration options.
|
|
6
6
|
* @summary This class provides a flexible interface for creating and managing user input prompts.
|
|
@@ -13,6 +13,49 @@ import { Kleur, ParseArgsOptionsConfig, ParseArgsResult } from "./types";
|
|
|
13
13
|
* @param name - The name of the prompt, used as the key in the returned answers object.
|
|
14
14
|
*
|
|
15
15
|
* @class
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { UserInput } from '@decaf-ts/utils';
|
|
19
|
+
*
|
|
20
|
+
* // Create a simple text input
|
|
21
|
+
* const nameInput = new UserInput('name')
|
|
22
|
+
* .setMessage('What is your name?')
|
|
23
|
+
* .setInitial('User');
|
|
24
|
+
*
|
|
25
|
+
* // Create a number input with validation
|
|
26
|
+
* const ageInput = new UserInput('age')
|
|
27
|
+
* .setType('number')
|
|
28
|
+
* .setMessage('How old are you?')
|
|
29
|
+
* .setMin(0)
|
|
30
|
+
* .setMax(120);
|
|
31
|
+
*
|
|
32
|
+
* // Ask for input and process the results
|
|
33
|
+
* async function getUserInfo() {
|
|
34
|
+
* const answers = await UserInput.ask([nameInput, ageInput]);
|
|
35
|
+
* console.log(`Hello ${answers.name}, you are ${answers.age} years old.`);
|
|
36
|
+
* }
|
|
37
|
+
*
|
|
38
|
+
* getUserInfo();
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @mermaid
|
|
42
|
+
* sequenceDiagram
|
|
43
|
+
* participant Client
|
|
44
|
+
* participant UserInput
|
|
45
|
+
* participant PromptLibrary
|
|
46
|
+
*
|
|
47
|
+
* Client->>UserInput: new UserInput(name)
|
|
48
|
+
* Client->>UserInput: setMessage(message)
|
|
49
|
+
* Client->>UserInput: setType(type)
|
|
50
|
+
* Client->>UserInput: setInitial(initial)
|
|
51
|
+
* Client->>UserInput: Other configuration methods
|
|
52
|
+
*
|
|
53
|
+
* Client->>UserInput: ask()
|
|
54
|
+
* UserInput->>PromptLibrary: prompts(question)
|
|
55
|
+
* PromptLibrary->>Client: Display prompt
|
|
56
|
+
* Client->>PromptLibrary: User provides input
|
|
57
|
+
* PromptLibrary->>UserInput: Return answers
|
|
58
|
+
* UserInput->>Client: Return processed answers
|
|
16
59
|
*/
|
|
17
60
|
export declare class UserInput<R extends string = string> implements PromptObject<R> {
|
|
18
61
|
private static readonly logger;
|
|
@@ -56,7 +99,6 @@ export declare class UserInput<R extends string = string> implements PromptObjec
|
|
|
56
99
|
* @summary A function called when the state of the prompt changes.
|
|
57
100
|
*/
|
|
58
101
|
onState?: PrevCaller<R, void> | undefined;
|
|
59
|
-
onRender?: ((kleur: Kleur) => void) | undefined;
|
|
60
102
|
/**
|
|
61
103
|
* @description The minimum value for number inputs.
|
|
62
104
|
* @summary The lowest number the user can input.
|
|
@@ -102,6 +144,10 @@ export declare class UserInput<R extends string = string> implements PromptObjec
|
|
|
102
144
|
* @summary The style applied to non-selected options.
|
|
103
145
|
*/
|
|
104
146
|
inactive?: string | PrevCaller<R, string | Falsy> | undefined;
|
|
147
|
+
/**
|
|
148
|
+
* @description The available choices for select, multiselect, or autocomplete inputs.
|
|
149
|
+
* @summary An array of options that the user can select from in choice-based prompts.
|
|
150
|
+
*/
|
|
105
151
|
choices?: Choice[] | PrevCaller<R, Choice[] | Falsy> | undefined;
|
|
106
152
|
/**
|
|
107
153
|
* @description The hint text for the prompt.
|
|
@@ -134,12 +180,6 @@ export declare class UserInput<R extends string = string> implements PromptObjec
|
|
|
134
180
|
* @summary The input stream used by the prompt.
|
|
135
181
|
*/
|
|
136
182
|
stdin?: Readable | undefined;
|
|
137
|
-
/**
|
|
138
|
-
* @description Creates a new UserInput instance.
|
|
139
|
-
* @summary Initializes a new UserInput object with the given name.
|
|
140
|
-
*
|
|
141
|
-
* @param name - The name of the prompt.
|
|
142
|
-
*/
|
|
143
183
|
constructor(name: ValueOrFunc<R>);
|
|
144
184
|
/**
|
|
145
185
|
* @description Sets the type of the prompt.
|
|
@@ -197,14 +237,6 @@ export declare class UserInput<R extends string = string> implements PromptObjec
|
|
|
197
237
|
* @returns This UserInput instance for method chaining.
|
|
198
238
|
*/
|
|
199
239
|
setOnState(value: PrevCaller<R, void> | undefined): this;
|
|
200
|
-
/**
|
|
201
|
-
* @description Sets the onRender callback of the prompt.
|
|
202
|
-
* @summary Configures a function to be called when the prompt is rendered.
|
|
203
|
-
*
|
|
204
|
-
* @param value - The onRender callback function.
|
|
205
|
-
* @returns This UserInput instance for method chaining.
|
|
206
|
-
*/
|
|
207
|
-
setOnRender(value: ((kleur: Kleur) => void) | undefined): this;
|
|
208
240
|
/**
|
|
209
241
|
* @description Sets the minimum value for number inputs.
|
|
210
242
|
* @summary Configures the lowest number the user can input.
|
|
@@ -277,6 +309,13 @@ export declare class UserInput<R extends string = string> implements PromptObjec
|
|
|
277
309
|
* @returns This UserInput instance for method chaining.
|
|
278
310
|
*/
|
|
279
311
|
setInactive(value: string | PrevCaller<R, string | Falsy> | undefined): this;
|
|
312
|
+
/**
|
|
313
|
+
* @description Sets the choices for select, multiselect, or autocomplete inputs.
|
|
314
|
+
* @summary Configures the available options that the user can select from in choice-based prompts.
|
|
315
|
+
*
|
|
316
|
+
* @param value - The array of choices or a function to determine the choices.
|
|
317
|
+
* @returns This UserInput instance for method chaining.
|
|
318
|
+
*/
|
|
280
319
|
setChoices(value: Choice[] | PrevCaller<R, Choice[] | Falsy> | undefined): this;
|
|
281
320
|
/**
|
|
282
321
|
* @description Sets the hint text for the prompt.
|
|
@@ -294,6 +333,13 @@ export declare class UserInput<R extends string = string> implements PromptObjec
|
|
|
294
333
|
* @returns This UserInput instance for method chaining.
|
|
295
334
|
*/
|
|
296
335
|
setWarn(value: string | PrevCaller<R, string | Falsy> | undefined): this;
|
|
336
|
+
/**
|
|
337
|
+
* @description Sets the suggestion function for autocomplete inputs.
|
|
338
|
+
* @summary Configures a function that provides suggestions based on the user's input and available choices.
|
|
339
|
+
*
|
|
340
|
+
* @param value - A function that takes the current input and available choices and returns a Promise resolving to suggestions.
|
|
341
|
+
* @returns This UserInput instance for method chaining.
|
|
342
|
+
*/
|
|
297
343
|
setSuggest(value: ((input: any, choices: Choice[]) => Promise<any>) | undefined): this;
|
|
298
344
|
/**
|
|
299
345
|
* @description Sets the limit for list inputs.
|
|
@@ -388,8 +434,8 @@ export declare class UserInput<R extends string = string> implements PromptObjec
|
|
|
388
434
|
* @template R - The type of the expected result.
|
|
389
435
|
* @param input - The UserInput instance to use for prompting.
|
|
390
436
|
* @param test - A function to validate the user's input.
|
|
437
|
+
* @param defaultConfirmation - The default value for the confirmation prompt (true for yes, false for no).
|
|
391
438
|
* @param limit - The maximum number of attempts allowed (default is 1).
|
|
392
|
-
* @param defaultConfirmation
|
|
393
439
|
* @return A Promise that resolves to the valid input or undefined if the limit is reached.
|
|
394
440
|
*
|
|
395
441
|
* @mermaid
|
|
@@ -431,7 +477,7 @@ export declare class UserInput<R extends string = string> implements PromptObjec
|
|
|
431
477
|
* @param test - A function to validate the user's input.
|
|
432
478
|
* @param mask - The character used to mask the input (optional, for password-like inputs).
|
|
433
479
|
* @param initial - The initial value presented to the user (optional).
|
|
434
|
-
* @param defaultConfirmation
|
|
480
|
+
* @param defaultConfirmation - The default value for the confirmation prompt (true for yes, false for no).
|
|
435
481
|
* @param limit - The maximum number of attempts allowed (default is -1, meaning unlimited).
|
|
436
482
|
* @return A Promise that resolves to the valid input or undefined if the limit is reached.
|
|
437
483
|
*/
|
|
@@ -446,7 +492,7 @@ export declare class UserInput<R extends string = string> implements PromptObjec
|
|
|
446
492
|
* @param min - The minimum allowed value (optional).
|
|
447
493
|
* @param max - The maximum allowed value (optional).
|
|
448
494
|
* @param initial - The initial value presented to the user (optional).
|
|
449
|
-
* @param defaultConfirmation
|
|
495
|
+
* @param defaultConfirmation - The default value for the confirmation prompt (true for yes, false for no).
|
|
450
496
|
* @param limit - The maximum number of attempts allowed (default is -1, meaning unlimited).
|
|
451
497
|
* @return A Promise that resolves to the valid input or undefined if the limit is reached.
|
|
452
498
|
*/
|