presetter 3.1.0 → 3.3.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.
package/README.md CHANGED
@@ -4,14 +4,14 @@
4
4
 
5
5
  🏄🏻 _Setup build settings from a template, quick and right!_
6
6
 
7
- •   [Quick Start](#quick-start)   •   [Usage](#usage)   •   [Customisation](#customisation)   •
7
+ •   [Quick Start](#quick-start)   •   [Usage](#usage)   •   [Customization](#customization)   •
8
8
 
9
9
  [![npm](https://img.shields.io/npm/v/presetter?style=flat-square)](https://github.com/alvis/presetter/releases)
10
10
  [![build](https://img.shields.io/github/workflow/status/alvis/presetter/code%20test?style=flat-square)](https://github.com/alvis/presetter/actions)
11
11
  [![maintainability](https://img.shields.io/codeclimate/maintainability/alvis/presetter?style=flat-square)](https://codeclimate.com/github/alvis/presetter/maintainability)
12
12
  [![coverage](https://img.shields.io/codeclimate/coverage/alvis/presetter?style=flat-square)](https://codeclimate.com/github/alvis/presetter/test_coverage)
13
13
  [![security](https://img.shields.io/snyk/vulnerabilities/github/alvis/presetter/packages/presetter/package.json.svg?style=flat-square)](https://snyk.io/test/github/alvis/presetter?targetFile=packages/presetter/package.json&style=flat-square)
14
- [![dependencies](https://img.shields.io/david/alvis/presetter?path=packages/presetter&style=flat-square)](https://david-dm.org/alvis/presetter?path=packages/presetter)
14
+ [![dependencies](https://img.shields.io/librariesio/release/npm/presetter-presetter?style=flat-square)](https://libraries.io/npm/presetter-presetter)
15
15
  [![license](https://img.shields.io/github/license/alvis/presetter.svg?style=flat-square)](https://github.com/alvis/presetter/blob/master/LICENSE)
16
16
 
17
17
  </div>
@@ -21,7 +21,7 @@ How many dev dependencies you have to install before you can kick start a projec
21
21
 
22
22
  What's more, what if you want to update configs for all projects? :man_facepalming:
23
23
 
24
- **Presetter is a utility for setting up building tools for your project from a template.** This means with just only two dev packages, namely this package and your favourite template preset, all essential development packages, such as typescript, eslint and jest, together with their configuration files provided by the preset, are automatically setup for you upon the project's initialisation.
24
+ **Presetter is a utility for setting up building tools for your project from a template.** This means with just only two dev packages, namely this package and your favorite template preset, all essential development packages, such as typescript, eslint and jest, together with their configuration files provided by the preset, are automatically setup for you upon the project's initialization.
25
25
 
26
26
  ---
27
27
 
@@ -128,13 +128,13 @@ _PROTIPS_: Install `presetter` globally via `npm install -g presetter` and you c
128
128
 
129
129
  ---
130
130
 
131
- ## Customisation
131
+ ## Customization
132
132
 
133
- Presetter support customisation in two ways.
133
+ Presetter support customization in two ways.
134
134
 
135
- #### Preset Customisation
135
+ #### Preset Customization
136
136
 
137
- If your preset support customisation, you can supply the customisation parameter via the `config` field in `.presetterrc`.
137
+ If your preset support customization, you can supply the customization parameter via the `config` field in `.presetterrc`.
138
138
  e.g. For [presetter-preset-essentials](https://github.com/alvis/presetter/tree/master/packages/preset-essentials), you can adding an expression to `.gitignore` with the following in `.presetterrc`:
139
139
 
140
140
  ```json
package/lib/content.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { DynamicAsset, DynamicAssetField, PresetAsset, PresetContext, RequiredResolution, ResolvedPresetContext, Template } from './types';
2
- export declare function customise(template: Template, custom?: string[] | Record<string, unknown>): Template;
2
+ export declare function customize(template: Template, custom?: string[] | Record<string, unknown>): Template;
3
3
  export declare function generateContent(assets: PresetAsset[], context: PresetContext): Promise<Record<string, Template>>;
4
4
  export declare function getConfigKey(filename: string): string;
5
5
  export declare function getVariable(assets: PresetAsset[], context: PresetContext): Record<string, string>;
package/lib/content.js CHANGED
@@ -1,141 +1,70 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.customise = customise;
7
- exports.generateContent = generateContent;
8
- exports.getConfigKey = getConfigKey;
9
- exports.getVariable = getVariable;
10
- exports.resolveContext = resolveContext;
11
- exports.resolveDynamicMap = resolveDynamicMap;
12
-
13
- var _path = require("path");
14
-
15
- var _io = require("./io");
16
-
17
- var _template = require("./template");
18
-
19
- /*
20
- * *** MIT LICENSE ***
21
- * -------------------------------------------------------------------------
22
- * This code may be modified and distributed under the MIT license.
23
- * See the LICENSE file for details.
24
- * -------------------------------------------------------------------------
25
- *
26
- * @summary Collection of config related helpers
27
- *
28
- * @author Alvis HT Tang <alvis@hilbert.space>
29
- * @license MIT
30
- * @copyright Copyright (c) 2021 - All Rights Reserved.
31
- * -------------------------------------------------------------------------
32
- */
33
-
34
- /**
35
- * customise the template with customisation from .presetterrc
36
- * @param template template configuration
37
- * @param custom content to be merged with the template configuration
38
- * @returns customised configuration
39
- */
40
- function customise(template, custom) {
41
- if (typeof template === 'string' && Array.isArray(custom)) {
42
- return (0, _template.merge)(template.split('\n'), custom).join('\n');
43
- } else if (typeof template === 'object' && !Array.isArray(custom)) {
44
- return (0, _template.merge)(template, custom);
45
- } else {
46
- return template;
47
- }
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveDynamicMap = exports.resolveContext = exports.getVariable = exports.getConfigKey = exports.generateContent = exports.customize = void 0;
4
+ const path_1 = require("path");
5
+ const io_1 = require("./io");
6
+ const template_1 = require("./template");
7
+ function customize(template, custom) {
8
+ if (typeof template === 'string' && Array.isArray(custom)) {
9
+ return (0, template_1.merge)(template.split('\n'), custom).join('\n');
10
+ }
11
+ else if (typeof template === 'object' && !Array.isArray(custom)) {
12
+ return (0, template_1.merge)(template, custom);
13
+ }
14
+ else {
15
+ return template;
16
+ }
48
17
  }
49
- /**
50
- * generate configuration content from preset with user customisation
51
- * @param assets list of preset assets
52
- * @param context context about the target project and any customisation in .presetterrc
53
- * @returns a map of configuration content
54
- */
55
-
56
-
18
+ exports.customize = customize;
57
19
  async function generateContent(assets, context) {
58
- const resolvedContext = await resolveContext(assets, context);
59
- const resolvedTemplate = await resolveDynamicMap(assets, resolvedContext, 'template'); // merge templates with custom configuration
60
-
61
- const custom = Object.fromEntries(await Promise.all(Object.entries(resolvedTemplate).map(async ([relativePath, templateConfig]) => {
62
- const customConfig = resolvedContext.custom.config[getConfigKey(relativePath)];
63
- return [relativePath, customise(templateConfig, customConfig)];
64
- })));
65
- return (0, _template.template)(custom, resolvedContext.custom.variable);
20
+ const resolvedContext = await resolveContext(assets, context);
21
+ const resolvedTemplate = await resolveDynamicMap(assets, resolvedContext, 'template');
22
+ const custom = Object.fromEntries(await Promise.all(Object.entries(resolvedTemplate).map(async ([relativePath, templateConfig]) => {
23
+ const customConfig = resolvedContext.custom.config[getConfigKey(relativePath)];
24
+ return [relativePath, customize(templateConfig, customConfig)];
25
+ })));
26
+ return (0, template_1.template)(custom, resolvedContext.custom.variable);
66
27
  }
67
- /**
68
- * compute the corresponding field within the config field of .presetterrc
69
- * @param filename symlink name
70
- * @returns field name in config
71
- */
72
-
73
-
28
+ exports.generateContent = generateContent;
74
29
  function getConfigKey(filename) {
75
- return (0, _path.basename)(filename, (0, _path.extname)(filename)).replace(/^\./, '').replace(/rc$/, '').replace(/\.config$/, '');
30
+ return (0, path_1.basename)(filename, (0, path_1.extname)(filename))
31
+ .replace(/^\./, '')
32
+ .replace(/rc$/, '')
33
+ .replace(/\.config$/, '');
76
34
  }
77
- /**
78
- * combine the default variables from presets with custom variables
79
- * @param assets list of preset assets
80
- * @param context context about the target project and any customisation in .presetterrc
81
- * @returns combined variables
82
- */
83
-
84
-
35
+ exports.getConfigKey = getConfigKey;
85
36
  function getVariable(assets, context) {
86
- const variables = assets.map(asset => asset.variable).filter(variable => !!variable);
87
- const variableFromPresets = variables.reduce((merged, variable) => (0, _template.merge)(merged, variable), {});
88
- const variableWithCustomConfig = (0, _template.merge)(variableFromPresets, context.custom.variable);
89
- return { ...variableWithCustomConfig
90
- };
37
+ const variables = assets
38
+ .map((asset) => asset.variable)
39
+ .filter((variable) => !!variable);
40
+ const variableFromPresets = variables.reduce((merged, variable) => (0, template_1.merge)(merged, variable), {});
41
+ const variableWithCustomConfig = (0, template_1.merge)(variableFromPresets, context.custom.variable);
42
+ return Object.assign({}, variableWithCustomConfig);
91
43
  }
92
- /**
93
- * resolve context values which may be dynamic
94
- * @param assets list of preset assets
95
- * @param context context about the target project and any customisation in .presetterrc
96
- * @returns a context with no further dynamic content
97
- */
98
-
99
-
44
+ exports.getVariable = getVariable;
100
45
  async function resolveContext(assets, context) {
101
- var _context$custom$noSym;
102
-
103
- const variableContext = { ...context,
104
- custom: { ...context.custom,
105
- variable: getVariable(assets, context)
106
- }
107
- };
108
- const config = (0, _template.merge)(await resolveDynamicMap(assets, variableContext, 'supplementaryConfig'), context.custom.config);
109
- const customList = (_context$custom$noSym = context.custom.noSymlinks) !== null && _context$custom$noSym !== void 0 ? _context$custom$noSym : [];
110
- const assetList = assets.map(async ({
111
- noSymlinks
112
- }) => (0, _io.loadDynamic)(noSymlinks !== null && noSymlinks !== void 0 ? noSymlinks : [], variableContext));
113
- const noSymlinks = [...(await Promise.all(assetList)), ...customList].flat();
114
- return { ...variableContext,
115
- custom: { ...variableContext.custom,
116
- config,
117
- noSymlinks: [...new Set(noSymlinks)]
118
- }
119
- };
46
+ var _a;
47
+ const variableContext = Object.assign(Object.assign({}, context), { custom: Object.assign(Object.assign({}, context.custom), { variable: getVariable(assets, context) }) });
48
+ const config = (0, template_1.merge)(await resolveDynamicMap(assets, variableContext, 'supplementaryConfig'), context.custom.config);
49
+ const customList = (_a = context.custom.noSymlinks) !== null && _a !== void 0 ? _a : [];
50
+ const assetList = assets.map(async ({ noSymlinks }) => (0, io_1.loadDynamic)(noSymlinks !== null && noSymlinks !== void 0 ? noSymlinks : [], variableContext));
51
+ const noSymlinks = [...(await Promise.all(assetList)), ...customList].flat();
52
+ return Object.assign(Object.assign({}, variableContext), { custom: Object.assign(Object.assign({}, variableContext.custom), { config, noSymlinks: [...new Set(noSymlinks)] }) });
120
53
  }
121
- /**
122
- * resolve a dynamic asset content
123
- * @param assets list of preset assets
124
- * @param context arguments to be passed to the generator function
125
- * @param field field name of PresetAsset to be resolved
126
- * @returns content of the resolved field
127
- */
128
-
129
-
54
+ exports.resolveContext = resolveContext;
130
55
  async function resolveDynamicMap(assets, context, field) {
131
- // load templated configuration from presets
132
- const templates = await Promise.all(assets.map(async asset => {
133
- const content = asset[field];
134
- return Object.fromEntries(await Promise.all(Object.entries(content instanceof Function ? await content(context) : { ...content
135
- }).map(async ([relativePath, value]) => [relativePath, // load a file if it's a valid path only
136
- typeof value === 'string' && (0, _path.isAbsolute)(value) ? await (0, _io.loadFile)(value) : await (0, _io.loadDynamic)(value, context)])));
137
- })); // merge all maps
138
-
139
- return templates.reduce((merged, map) => (0, _template.merge)(merged, map), {});
56
+ const templates = await Promise.all(assets.map(async (asset) => {
57
+ const content = asset[field];
58
+ return Object.fromEntries(await Promise.all(Object.entries(content instanceof Function
59
+ ? await content(context)
60
+ : Object.assign({}, content)).map(async ([relativePath, value]) => [
61
+ relativePath,
62
+ typeof value === 'string' && (0, path_1.isAbsolute)(value)
63
+ ? await (0, io_1.loadFile)(value)
64
+ : await (0, io_1.loadDynamic)(value, context),
65
+ ])));
66
+ }));
67
+ return templates.reduce((merged, map) => (0, template_1.merge)(merged, map), {});
140
68
  }
141
- //# sourceMappingURL=content.js.map
69
+ exports.resolveDynamicMap = resolveDynamicMap;
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWVBLCtCQUFxRDtBQUVyRCw2QkFBNkM7QUFDN0MseUNBQTZDO0FBa0I3QyxTQUFnQixTQUFTLENBQ3ZCLFFBQWtCLEVBQ2xCLE1BQTJDO0lBRTNDLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDekQsT0FBTyxJQUFBLGdCQUFLLEVBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkQ7U0FBTSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDakUsT0FBTyxJQUFBLGdCQUFLLEVBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ2hDO1NBQU07UUFDTCxPQUFPLFFBQVEsQ0FBQztLQUNqQjtBQUNILENBQUM7QUFYRCw4QkFXQztBQU9NLEtBQUssVUFBVSxlQUFlLENBQ25DLE1BQXFCLEVBQ3JCLE9BQXNCO0lBRXRCLE1BQU0sZUFBZSxHQUFHLE1BQU0sY0FBYyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUU5RCxNQUFNLGdCQUFnQixHQUFHLE1BQU0saUJBQWlCLENBQzlDLE1BQU0sRUFDTixlQUFlLEVBQ2YsVUFBVSxDQUNYLENBQUM7SUFHRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUMvQixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FDbEMsS0FBSyxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxFQUErQixFQUFFO1FBQ3BF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
package/lib/directive.js CHANGED
@@ -1,222 +1,93 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.isApplyDirective = isApplyDirective;
7
- exports.isDirective = isDirective;
8
- exports.isImportDirective = isImportDirective;
9
- exports.resolveDirective = resolveDirective;
10
-
11
- /*
12
- * *** MIT LICENSE ***
13
- * -------------------------------------------------------------------------
14
- * This code may be modified and distributed under the MIT license.
15
- * See the LICENSE file for details.
16
- * -------------------------------------------------------------------------
17
- *
18
- * @summary Collection of helpers for parsing configuration
19
- *
20
- * @author Alvis HT Tang <alvis@hilbert.space>
21
- * @license MIT
22
- * @copyright Copyright (c) 2021 - All Rights Reserved.
23
- * -------------------------------------------------------------------------
24
- */
25
-
26
- /** syntax for an apply direc ti ve */
27
-
28
- /** syntax for an import directive */
29
-
30
- /** context that pass down to all parsers */
31
-
32
- /** syntax for an apply directive */
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveDirective = exports.isDirective = exports.isImportDirective = exports.isApplyDirective = void 0;
33
4
  const applyRegex = /^@apply ((\.+\/|@)?[a-zA-Z]+[a-zA-Z0-9_/.-]*[a-zA-Z0-9_]+)(\[([a-zA-Z]+[a-zA-Z0-9_.]*)\])?$/;
34
- /** syntax for an import directive */
35
-
36
5
  const importRegex = /^@import ((\.+\/|@)?[a-zA-Z]+[a-zA-Z0-9_/.-]*[a-zA-Z0-9_]+)(\[([a-zA-Z]+[a-zA-Z0-9_.]*)\])?$/;
37
- /**
38
- * indicate whether the given value is an apply directive
39
- * @param value value to be tested
40
- * @returns true if the value is an apply directive
41
- */
42
-
43
6
  function isApplyDirective(value) {
44
- return typeof value === 'string' && !!applyRegex.exec(value);
7
+ return typeof value === 'string' && !!applyRegex.exec(value);
45
8
  }
46
- /**
47
- * indicate whether the given value is an import directive
48
- * @param value value to be tested
49
- * @returns true if the value is an import directive
50
- */
51
-
52
-
9
+ exports.isApplyDirective = isApplyDirective;
53
10
  function isImportDirective(value) {
54
- return typeof value === 'string' && !!importRegex.exec(value);
11
+ return typeof value === 'string' && !!importRegex.exec(value);
55
12
  }
56
- /**
57
- * indicate whether the given value is a directive
58
- * @param value value to be tested
59
- * @returns true if the value is a directive
60
- */
61
-
62
-
13
+ exports.isImportDirective = isImportDirective;
63
14
  function isDirective(value) {
64
- return isApplyDirective(value) || isImportDirective(value);
15
+ return isApplyDirective(value) || isImportDirective(value);
65
16
  }
66
- /**
67
- * resolve directives from configuration options
68
- * @param config configuration options
69
- * @param context background context about the configuration
70
- * @returns resolved configuration options with directive replaced
71
- */
72
-
73
-
17
+ exports.isDirective = isDirective;
74
18
  function resolveDirective(config, context) {
75
- const packages = new Set();
76
- const stringifiedConfig = stringifyConfigObject(config, { ...context,
77
- packages
78
- });
79
- const importMap = Object.fromEntries([...packages.values()].map((packageName, key) => [packageName, `import${key}`]));
80
- return {
81
- importMap,
82
- stringifiedConfig
83
- };
19
+ const packages = new Set();
20
+ const stringifiedConfig = stringifyConfigObject(config, Object.assign(Object.assign({}, context), { packages }));
21
+ const importMap = Object.fromEntries([...packages.values()].map((packageName, key) => [
22
+ packageName,
23
+ `import${key}`,
24
+ ]));
25
+ return { importMap, stringifiedConfig };
84
26
  }
85
- /**
86
- * resolve an apply directive
87
- * @param directiveMeta a potential directive in the form of [directive, options]
88
- * @param context shared context passed from the upstream
89
- * @returns resolved string or null if no directive is found
90
- */
91
-
92
-
27
+ exports.resolveDirective = resolveDirective;
93
28
  function resolveApplyDirective(directiveMeta, context) {
94
- const [directive, ...args] = directiveMeta;
95
- const {
96
- packages
97
- } = context;
98
-
99
- if (typeof directive === 'string') {
100
- const match = applyRegex.exec(directive);
101
-
102
- if (match) {
103
- const [_, packageName, _prefix, _importBracket, importName] = match;
104
- const resolvedArgs = args.map(arg => stringifyValue(arg, context));
105
- const argsExpression = `[${resolvedArgs.join(', ')}]`;
106
- const resolvedName = registerUsage(packages, packageName, importName);
107
- return `${resolvedName}(...(${argsExpression} as const))`;
29
+ const [directive, ...args] = directiveMeta;
30
+ const { packages } = context;
31
+ if (typeof directive === 'string') {
32
+ const match = applyRegex.exec(directive);
33
+ if (match) {
34
+ const [_, packageName, _prefix, _importBracket, importName] = match;
35
+ const resolvedArgs = args.map((arg) => stringifyValue(arg, context));
36
+ const argsExpression = `[${resolvedArgs.join(', ')}]`;
37
+ const resolvedName = registerUsage(packages, packageName, importName);
38
+ return `${resolvedName}(...(${argsExpression} as const))`;
39
+ }
108
40
  }
109
- } // return null for a non-match
110
-
111
-
112
- return null;
41
+ return null;
113
42
  }
114
- /**
115
- * resolve an import directive
116
- * @param directive a potential directive string
117
- * @param context shared context passed from the upstream
118
- * @returns resolved string or null if no directive is found
119
- */
120
-
121
-
122
43
  function resolveImportDirective(directive, context) {
123
- const {
124
- packages
125
- } = context;
126
- const match = importRegex.exec(directive);
127
-
128
- if (match) {
129
- const [_, packageName, _prefix, _importBracket, importName] = match;
130
- return registerUsage(packages, packageName, importName);
131
- } // return null for a non-match
132
-
133
-
134
- return null;
44
+ const { packages } = context;
45
+ const match = importRegex.exec(directive);
46
+ if (match) {
47
+ const [_, packageName, _prefix, _importBracket, importName] = match;
48
+ return registerUsage(packages, packageName, importName);
49
+ }
50
+ return null;
135
51
  }
136
- /**
137
- * stringify a value which has a type object
138
- * @param value the value to be stringified
139
- * @param context shared context passed from the upstream
140
- * @returns stringified value
141
- */
142
-
143
-
144
52
  function stringifyObjectValue(value, context) {
145
- if (Array.isArray(value)) {
146
- var _resolveApplyDirectiv;
147
-
148
- return (_resolveApplyDirectiv = resolveApplyDirective(value, context)) !== null && _resolveApplyDirectiv !== void 0 ? _resolveApplyDirectiv : stringifyConfigArray(value, context);
149
- } else if (value !== null) {
150
- return stringifyConfigObject(value, context);
151
- } else {
152
- return 'null';
153
- }
53
+ var _a;
54
+ if (Array.isArray(value)) {
55
+ return ((_a = resolveApplyDirective(value, context)) !== null && _a !== void 0 ? _a : stringifyConfigArray(value, context));
56
+ }
57
+ else if (value !== null) {
58
+ return stringifyConfigObject(value, context);
59
+ }
60
+ else {
61
+ return 'null';
62
+ }
154
63
  }
155
- /**
156
- * stringify an array
157
- * @param config an object to be parsed
158
- * @param context shared context passed from the upstream
159
- * @returns stringified object
160
- */
161
-
162
-
163
64
  function stringifyConfigArray(config, context) {
164
- const values = config.map(value => stringifyValue(value, context));
165
- return `[${values.join(', ')}]`;
65
+ const values = config.map((value) => stringifyValue(value, context));
66
+ return `[${values.join(', ')}]`;
166
67
  }
167
- /**
168
- * stringify an object
169
- * @param config an object to be parsed
170
- * @param context shared context passed from the upstream
171
- * @returns stringified object
172
- */
173
-
174
-
175
68
  function stringifyConfigObject(config, context) {
176
- const values = Object.entries(config).map(([key, value]) => {
177
- return `${JSON.stringify(key)}: ${stringifyValue(value, context)}`;
178
- });
179
- return `{${values.join(', ')}}`;
69
+ const values = Object.entries(config).map(([key, value]) => {
70
+ return `${JSON.stringify(key)}: ${stringifyValue(value, context)}`;
71
+ });
72
+ return `{${values.join(', ')}}`;
180
73
  }
181
- /**
182
- * stringify a value
183
- * @param value the value to be stringified
184
- * @param context shared context passed from the upstream
185
- * @returns stringified value
186
- */
187
-
188
-
189
74
  function stringifyValue(value, context) {
190
- var _resolveImportDirecti;
191
-
192
- switch (typeof value) {
193
- case 'string':
194
- return (_resolveImportDirecti = resolveImportDirective(value, context)) !== null && _resolveImportDirecti !== void 0 ? _resolveImportDirecti : JSON.stringify(value);
195
-
196
- case 'object':
197
- return stringifyObjectValue(value, context);
198
-
199
- case 'boolean':
200
- case 'number':
201
- default:
202
- return JSON.stringify(value);
203
- }
75
+ var _a;
76
+ switch (typeof value) {
77
+ case 'string':
78
+ return (_a = resolveImportDirective(value, context)) !== null && _a !== void 0 ? _a : JSON.stringify(value);
79
+ case 'object':
80
+ return stringifyObjectValue(value, context);
81
+ case 'boolean':
82
+ case 'number':
83
+ default:
84
+ return JSON.stringify(value);
85
+ }
204
86
  }
205
- /**
206
- * add the needed package name to the registry and return its resolved name
207
- * @param packages package registry
208
- * @param packageName name of the package to be imported
209
- * @param importName named import to be used
210
- * @returns resolved symbol
211
- */
212
-
213
-
214
87
  function registerUsage(packages, packageName, importName) {
215
- // add package and import to the register
216
- packages.add(packageName); // replace the directive with the value path
217
-
218
- const packageKey = [...packages.values()].findIndex(name => name === packageName);
219
- const named = importName ? `.${importName}` : '';
220
- return `import${packageKey}${named}`;
88
+ packages.add(packageName);
89
+ const packageKey = [...packages.values()].findIndex((name) => name === packageName);
90
+ const named = importName ? `.${importName}` : '';
91
+ return `import${packageKey}${named}`;
221
92
  }
222
- //# sourceMappingURL=directive.js.map
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL2RpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnQ0EsTUFBTSxVQUFVLEdBQ2QsNkZBQTZGLENBQUM7QUFHaEcsTUFBTSxXQUFXLEdBQ2YsOEZBQThGLENBQUM7QUFPakcsU0FBZ0IsZ0JBQWdCLENBQUMsS0FBYztJQUM3QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRkQsNENBRUM7QUFPRCxTQUFnQixpQkFBaUIsQ0FBQyxLQUFjO0lBQzlDLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFGRCw4Q0FFQztBQU9ELFNBQWdCLFdBQVcsQ0FDekIsS0FBYztJQUVkLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUpELGtDQUlDO0FBUUQsU0FBZ0IsZ0JBQWdCLENBQzlCLE1BQStCLEVBQy9CLE9BQXNCO0lBS3RCLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDbkMsTUFBTSxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLGtDQUNqRCxPQUFPLEtBQ1YsUUFBUSxJQUNSLENBQUM7SUFFSCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUNsQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDL0MsV0FBVztRQUNYLFNBQVMsR0FBRyxFQUFFO0tBQ2YsQ0FBQyxDQUNILENBQUM7SUFFRixPQUFPLEVB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
package/lib/error.js CHANGED
@@ -1,40 +1,16 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.wrap = wrap;
7
-
8
- /*
9
- * *** MIT LICENSE ***
10
- * -------------------------------------------------------------------------
11
- * This code may be modified and distributed under the MIT license.
12
- * See the LICENSE file for details.
13
- * -------------------------------------------------------------------------
14
- *
15
- * @summary Helpers for handling errors
16
- *
17
- * @author Alvis HT Tang <alvis@hilbert.space>
18
- * @license MIT
19
- * @copyright Copyright (c) 2020 - All Rights Reserved.
20
- * -------------------------------------------------------------------------
21
- */
22
-
23
- /**
24
- * prepend a rejected error message with a better explanation
25
- * @param promise a promise to be resolved
26
- * @param message a custom message to be prepended to any rejected message
27
- * @returns wrapped error
28
- */
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wrap = void 0;
29
4
  async function wrap(promise, message) {
30
- try {
31
- return await promise;
32
- } catch (error) {
33
- if (error instanceof Error) {
34
- error.message = `${message}: ${error.message}`;
5
+ try {
6
+ return await promise;
7
+ }
8
+ catch (error) {
9
+ if (error instanceof Error) {
10
+ error.message = `${message}: ${error.message}`;
11
+ }
12
+ throw error;
35
13
  }
36
-
37
- throw error;
38
- }
39
14
  }
40
- //# sourceMappingURL=error.js.map
15
+ exports.wrap = wrap;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBcUJPLEtBQUssVUFBVSxJQUFJLENBQ3hCLE9BQW1CLEVBQ25CLE9BQWU7SUFFZixJQUFJO1FBQ0YsT0FBTyxNQUFNLE9BQU8sQ0FBQztLQUN0QjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO1lBQzFCLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxPQUFPLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hEO1FBRUQsTUFBTSxLQUFLLENBQUM7S0FDYjtBQUNILENBQUM7QUFiRCxvQkFhQyJ9