presetter 5.0.0 → 6.0.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 (130) hide show
  1. package/lib/executable/entry.d.ts.map +1 -1
  2. package/lib/executable/entry.js +4 -43
  3. package/lib/executable/error.d.ts.map +1 -1
  4. package/lib/executable/error.js +1 -15
  5. package/lib/executable/index.js +1 -15
  6. package/lib/index.d.ts +4 -5
  7. package/lib/index.d.ts.map +1 -1
  8. package/lib/index.js +5 -20
  9. package/lib/io.d.ts +8 -42
  10. package/lib/io.d.ts.map +1 -1
  11. package/lib/io.js +24 -156
  12. package/lib/package.d.ts +2 -2
  13. package/lib/package.d.ts.map +1 -1
  14. package/lib/package.js +3 -17
  15. package/lib/preset/bootstrap.d.ts +5 -0
  16. package/lib/preset/bootstrap.d.ts.map +1 -0
  17. package/lib/preset/bootstrap.js +32 -0
  18. package/lib/preset/config/index.d.ts +3 -0
  19. package/lib/preset/config/index.d.ts.map +1 -0
  20. package/lib/preset/config/index.js +4 -0
  21. package/lib/preset/config/resolve.d.ts +8 -0
  22. package/lib/preset/config/resolve.d.ts.map +1 -0
  23. package/lib/preset/config/resolve.js +25 -0
  24. package/lib/preset/config/search.d.ts +7 -0
  25. package/lib/preset/config/search.d.ts.map +1 -0
  26. package/lib/preset/config/search.js +25 -0
  27. package/lib/preset/context.d.ts +2 -1
  28. package/lib/preset/context.d.ts.map +1 -1
  29. package/lib/preset/context.js +5 -24
  30. package/lib/preset/index.d.ts +5 -2
  31. package/lib/preset/index.d.ts.map +1 -1
  32. package/lib/preset/index.js +6 -18
  33. package/lib/preset/project.d.ts +8 -0
  34. package/lib/preset/project.d.ts.map +1 -0
  35. package/lib/preset/project.js +28 -0
  36. package/lib/preset/resolution/asset.d.ts +31 -0
  37. package/lib/preset/resolution/asset.d.ts.map +1 -0
  38. package/lib/preset/resolution/asset.js +78 -0
  39. package/lib/preset/resolution/content.d.ts +37 -0
  40. package/lib/preset/resolution/content.d.ts.map +1 -0
  41. package/lib/preset/resolution/content.js +55 -0
  42. package/lib/preset/resolution/debugger.d.ts +3 -0
  43. package/lib/preset/resolution/debugger.d.ts.map +1 -0
  44. package/lib/preset/resolution/debugger.js +3 -0
  45. package/lib/preset/resolution/index.d.ts +6 -0
  46. package/lib/preset/resolution/index.d.ts.map +1 -0
  47. package/lib/preset/resolution/index.js +7 -0
  48. package/lib/preset/resolution/object.d.ts +9 -0
  49. package/lib/preset/resolution/object.d.ts.map +1 -0
  50. package/lib/preset/resolution/object.js +10 -0
  51. package/lib/preset/resolution/preset.d.ts +9 -0
  52. package/lib/preset/resolution/preset.d.ts.map +1 -0
  53. package/lib/preset/resolution/preset.js +17 -0
  54. package/lib/preset/resolution/script.d.ts +9 -0
  55. package/lib/preset/resolution/script.d.ts.map +1 -0
  56. package/lib/preset/resolution/script.js +39 -0
  57. package/lib/preset/resolution/variable.d.ts +9 -0
  58. package/lib/preset/resolution/variable.d.ts.map +1 -0
  59. package/lib/preset/resolution/variable.js +33 -0
  60. package/lib/preset/scripts.d.ts.map +1 -1
  61. package/lib/preset/scripts.js +5 -22
  62. package/lib/resolve.d.ts +7 -0
  63. package/lib/resolve.d.ts.map +1 -0
  64. package/lib/resolve.js +27 -0
  65. package/lib/run.d.ts.map +1 -1
  66. package/lib/run.js +4 -19
  67. package/lib/scripts.d.ts.map +1 -1
  68. package/lib/scripts.js +3 -18
  69. package/lib/serialization.d.ts +15 -0
  70. package/lib/serialization.d.ts.map +1 -0
  71. package/lib/serialization.js +48 -0
  72. package/lib/task.d.ts.map +1 -1
  73. package/lib/task.js +1 -16
  74. package/lib/template/index.d.ts +3 -0
  75. package/lib/template/index.d.ts.map +1 -0
  76. package/lib/template/index.js +4 -0
  77. package/lib/template/merge.d.ts +33 -0
  78. package/lib/template/merge.d.ts.map +1 -0
  79. package/lib/template/merge.js +84 -0
  80. package/lib/template/substitute.d.ts +11 -0
  81. package/lib/template/substitute.d.ts.map +1 -0
  82. package/lib/template/substitute.js +19 -0
  83. package/lib/utilities/display.d.ts +15 -0
  84. package/lib/utilities/display.d.ts.map +1 -0
  85. package/lib/utilities/display.js +51 -0
  86. package/lib/utilities/index.d.ts +3 -1
  87. package/lib/utilities/index.d.ts.map +1 -1
  88. package/lib/utilities/index.js +4 -16
  89. package/lib/utilities/{mapValues.d.ts → mapping.d.ts} +1 -1
  90. package/lib/utilities/mapping.d.ts.map +1 -0
  91. package/lib/utilities/mapping.js +10 -0
  92. package/lib/utilities/object.d.ts +20 -0
  93. package/lib/utilities/object.d.ts.map +1 -0
  94. package/lib/utilities/object.js +37 -0
  95. package/package.json +10 -7
  96. package/lib/content.d.ts +0 -123
  97. package/lib/content.d.ts.map +0 -1
  98. package/lib/content.js +0 -244
  99. package/lib/directive.d.ts +0 -34
  100. package/lib/directive.d.ts.map +0 -1
  101. package/lib/directive.js +0 -172
  102. package/lib/error.d.ts +0 -8
  103. package/lib/error.d.ts.map +0 -1
  104. package/lib/error.js +0 -32
  105. package/lib/preset/content.d.ts +0 -14
  106. package/lib/preset/content.d.ts.map +0 -1
  107. package/lib/preset/content.js +0 -32
  108. package/lib/preset/graph.d.ts +0 -22
  109. package/lib/preset/graph.d.ts.map +0 -1
  110. package/lib/preset/graph.js +0 -53
  111. package/lib/preset/mapping.d.ts +0 -9
  112. package/lib/preset/mapping.d.ts.map +0 -1
  113. package/lib/preset/mapping.js +0 -41
  114. package/lib/preset/presetterRC.d.ts +0 -25
  115. package/lib/preset/presetterRC.d.ts.map +0 -1
  116. package/lib/preset/presetterRC.js +0 -76
  117. package/lib/preset/setup.d.ts +0 -17
  118. package/lib/preset/setup.d.ts.map +0 -1
  119. package/lib/preset/setup.js +0 -80
  120. package/lib/preset/unset.d.ts +0 -5
  121. package/lib/preset/unset.d.ts.map +0 -1
  122. package/lib/preset/unset.js +0 -31
  123. package/lib/resolution.d.ts +0 -22
  124. package/lib/resolution.d.ts.map +0 -1
  125. package/lib/resolution.js +0 -61
  126. package/lib/template.d.ts +0 -64
  127. package/lib/template.d.ts.map +0 -1
  128. package/lib/template.js +0 -199
  129. package/lib/utilities/mapValues.d.ts.map +0 -1
  130. package/lib/utilities/mapValues.js +0 -24
package/lib/directive.js DELETED
@@ -1,172 +0,0 @@
1
- /*
2
- * *** MIT LICENSE ***
3
- * -------------------------------------------------------------------------
4
- * This code may be modified and distributed under the MIT license.
5
- * See the LICENSE file for details.
6
- * -------------------------------------------------------------------------
7
- *
8
- * @summary Collection of helpers for parsing configuration
9
- *
10
- * @author Alvis HT Tang <alvis@hilbert.space>
11
- * @license MIT
12
- * @copyright Copyright (c) 2021 - All Rights Reserved.
13
- * -------------------------------------------------------------------------
14
- */
15
- /** syntax for an apply directive */
16
- const applyRegex = /^@apply ((\.+\/|@)?[a-zA-Z]+[a-zA-Z0-9_/.-]*[a-zA-Z0-9_]+)(\[([a-zA-Z]+[a-zA-Z0-9_.]*)\])?$/;
17
- /** syntax for an import directive */
18
- const importRegex = /^@import ((\.+\/|@)?[a-zA-Z]+[a-zA-Z0-9_/.-]*[a-zA-Z0-9_]+)(\[([a-zA-Z]+[a-zA-Z0-9_.]*)\])?$/;
19
- /**
20
- * indicate whether the given value is an apply directive
21
- * @param value value to be tested
22
- * @returns true if the value is an apply directive
23
- */
24
- export function isApplyDirective(value) {
25
- return typeof value === 'string' && !!applyRegex.exec(value);
26
- }
27
- /**
28
- * indicate whether the given value is an import directive
29
- * @param value value to be tested
30
- * @returns true if the value is an import directive
31
- */
32
- export function isImportDirective(value) {
33
- return typeof value === 'string' && !!importRegex.exec(value);
34
- }
35
- /**
36
- * indicate whether the given value is a directive
37
- * @param value value to be tested
38
- * @returns true if the value is a directive
39
- */
40
- export function isDirective(value) {
41
- return isApplyDirective(value) || isImportDirective(value);
42
- }
43
- /**
44
- * resolve directives from configuration options
45
- * @param config configuration options
46
- * @param context background context about the configuration
47
- * @returns resolved configuration options with directive replaced
48
- */
49
- export function resolveDirective(config, context) {
50
- const packages = new Set();
51
- const stringifiedConfig = stringifyConfigObject(config, {
52
- ...context,
53
- packages,
54
- });
55
- const importMap = Object.fromEntries([...packages.values()].map((packageName, key) => [
56
- packageName,
57
- `import${key}`,
58
- ]));
59
- return { importMap, stringifiedConfig };
60
- }
61
- /**
62
- * resolve an apply directive
63
- * @param directiveMeta a potential directive in the form of [directive, options]
64
- * @param context shared context passed from the upstream
65
- * @returns resolved string or null if no directive is found
66
- */
67
- function resolveApplyDirective(directiveMeta, context) {
68
- const [directive, ...args] = directiveMeta;
69
- const { packages } = context;
70
- if (typeof directive === 'string') {
71
- const match = applyRegex.exec(directive);
72
- if (match) {
73
- const [_, packageName, _prefix, _importBracket, importName] = match;
74
- const resolvedArgs = args.map((arg) => stringifyValue(arg, context));
75
- const argsExpression = `[${resolvedArgs.join(', ')}]`;
76
- const resolvedName = registerUsage(packages, packageName, importName);
77
- return `${resolvedName}(...(${argsExpression} as const))`;
78
- }
79
- }
80
- // return null for a non-match
81
- return null;
82
- }
83
- /**
84
- * resolve an import directive
85
- * @param directive a potential directive string
86
- * @param context shared context passed from the upstream
87
- * @returns resolved string or null if no directive is found
88
- */
89
- function resolveImportDirective(directive, context) {
90
- const { packages } = context;
91
- const match = importRegex.exec(directive);
92
- if (match) {
93
- const [_, packageName, _prefix, _importBracket, importName] = match;
94
- return registerUsage(packages, packageName, importName);
95
- }
96
- // return null for a non-match
97
- return null;
98
- }
99
- /**
100
- * stringify a value which has a type object
101
- * @param value the value to be stringified
102
- * @param context shared context passed from the upstream
103
- * @returns stringified value
104
- */
105
- function stringifyObjectValue(value, context) {
106
- if (Array.isArray(value)) {
107
- return (resolveApplyDirective(value, context) ??
108
- stringifyConfigArray(value, context));
109
- }
110
- else if (value !== null) {
111
- return stringifyConfigObject(value, context);
112
- }
113
- else {
114
- return 'null';
115
- }
116
- }
117
- /**
118
- * stringify an array
119
- * @param config an object to be parsed
120
- * @param context shared context passed from the upstream
121
- * @returns stringified object
122
- */
123
- function stringifyConfigArray(config, context) {
124
- const values = config.map((value) => stringifyValue(value, context));
125
- return `[${values.join(', ')}]`;
126
- }
127
- /**
128
- * stringify an object
129
- * @param config an object to be parsed
130
- * @param context shared context passed from the upstream
131
- * @returns stringified object
132
- */
133
- function stringifyConfigObject(config, context) {
134
- const values = Object.entries(config).map(([key, value]) => {
135
- return `${JSON.stringify(key)}: ${stringifyValue(value, context)}`;
136
- });
137
- return `{${values.join(', ')}}`;
138
- }
139
- /**
140
- * stringify a value
141
- * @param value the value to be stringified
142
- * @param context shared context passed from the upstream
143
- * @returns stringified value
144
- */
145
- function stringifyValue(value, context) {
146
- switch (typeof value) {
147
- case 'string':
148
- return resolveImportDirective(value, context) ?? JSON.stringify(value);
149
- case 'object':
150
- return stringifyObjectValue(value, context);
151
- case 'boolean':
152
- case 'number':
153
- default:
154
- return JSON.stringify(value);
155
- }
156
- }
157
- /**
158
- * add the needed package name to the registry and return its resolved name
159
- * @param packages package registry
160
- * @param packageName name of the package to be imported
161
- * @param importName named import to be used
162
- * @returns resolved symbol
163
- */
164
- function registerUsage(packages, packageName, importName) {
165
- // add package and import to the register
166
- packages.add(packageName);
167
- // replace the directive with the value path
168
- const packageKey = [...packages.values()].findIndex((name) => name === packageName);
169
- const named = importName ? `.${importName}` : '';
170
- return `import${packageKey}${named}`;
171
- }
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL2RpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBa0JILG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsR0FDZCw2RkFBNkYsQ0FBQztBQUVoRyxxQ0FBcUM7QUFDckMsTUFBTSxXQUFXLEdBQ2YsOEZBQThGLENBQUM7QUFFakc7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFjO0lBQzdDLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWM7SUFDOUMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixLQUFjO0lBRWQsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLE1BQStCLEVBQy9CLE9BQXNCO0lBS3RCLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDbkMsTUFBTSxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUU7UUFDdEQsR0FBRyxPQUFPO1FBQ1YsUUFBUTtLQUNULENBQUMsQ0FBQztJQUVILE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ2xDLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FB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
package/lib/error.d.ts DELETED
@@ -1,8 +0,0 @@
1
- /**
2
- * prepend a rejected error message with a better explanation
3
- * @param promise a promise to be resolved
4
- * @param message a custom message to be prepended to any rejected message
5
- * @returns wrapped error
6
- */
7
- export declare function wrap<T>(promise: Promise<T>, message: string): Promise<T>;
8
- //# sourceMappingURL=error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../source/error.ts"],"names":[],"mappings":"AAeA;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,CAAC,EAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,CAAC,CAUZ"}
package/lib/error.js DELETED
@@ -1,32 +0,0 @@
1
- /*
2
- * *** MIT LICENSE ***
3
- * -------------------------------------------------------------------------
4
- * This code may be modified and distributed under the MIT license.
5
- * See the LICENSE file for details.
6
- * -------------------------------------------------------------------------
7
- *
8
- * @summary Helpers for handling errors
9
- *
10
- * @author Alvis HT Tang <alvis@hilbert.space>
11
- * @license MIT
12
- * @copyright Copyright (c) 2020 - All Rights Reserved.
13
- * -------------------------------------------------------------------------
14
- */
15
- /**
16
- * prepend a rejected error message with a better explanation
17
- * @param promise a promise to be resolved
18
- * @param message a custom message to be prepended to any rejected message
19
- * @returns wrapped error
20
- */
21
- export async function wrap(promise, message) {
22
- try {
23
- return await promise;
24
- }
25
- catch (error) {
26
- if (error instanceof Error) {
27
- error.message = `${message}: ${error.message}`;
28
- }
29
- throw error;
30
- }
31
- }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUVIOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxJQUFJLENBQ3hCLE9BQW1CLEVBQ25CLE9BQWU7SUFFZixJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sT0FBTyxDQUFDO0lBQ3ZCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakQsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMifQ==
@@ -1,14 +0,0 @@
1
- import type { PresetContext } from 'presetter-types';
2
- /** collection of options for bootstrapping */
3
- interface BootstrapOptions {
4
- /** whether to skip all checks */
5
- force?: boolean;
6
- }
7
- /**
8
- * generate files from templates and link them to the target project root
9
- * @param context context about the target project and any customization in .presetterrc
10
- * @param options collection of options
11
- */
12
- export declare function bootstrapContent(context: PresetContext, options?: BootstrapOptions): Promise<void>;
13
- export {};
14
- //# sourceMappingURL=content.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../source/preset/content.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,8CAA8C;AAC9C,UAAU,gBAAgB;IACxB,iCAAiC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -1,32 +0,0 @@
1
- /*
2
- * *** MIT LICENSE ***
3
- * -------------------------------------------------------------------------
4
- * This code may be modified and distributed under the MIT license.
5
- * See the LICENSE file for details.
6
- * -------------------------------------------------------------------------
7
- *
8
- * @summary Collection of helpers for content generation
9
- *
10
- * @author Alvis HT Tang <alvis@hilbert.space>
11
- * @license MIT
12
- * @copyright Copyright (c) 2020 - All Rights Reserved.
13
- * -------------------------------------------------------------------------
14
- */
15
- import { resolveContext, resolveTemplate } from '../content.js';
16
- import { linkFiles, writeFiles } from '../io.js';
17
- import { getPresetGraph } from './graph.js';
18
- import { getDestinationMap } from './mapping.js';
19
- /**
20
- * generate files from templates and link them to the target project root
21
- * @param context context about the target project and any customization in .presetterrc
22
- * @param options collection of options
23
- */
24
- export async function bootstrapContent(context, options) {
25
- const graph = await getPresetGraph(context);
26
- const resolvedContext = await resolveContext({ graph, context });
27
- const content = await resolveTemplate({ graph, context: resolvedContext });
28
- const destinationMap = await getDestinationMap(content, resolvedContext);
29
- writeFiles(context.target.root, content, destinationMap, options);
30
- linkFiles(context.target.root, destinationMap, options);
31
- }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFVOUM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBQ3BDLE9BQXNCLEVBQ3RCLE9BQTBCO0lBRTFCLE1BQU0sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTVDLE1BQU0sZUFBZSxHQUFHLE1BQU0sY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakUsTUFBTSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFFM0UsTUFBTSxjQUFjLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFFekUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxRCxDQUFDIn0=
@@ -1,22 +0,0 @@
1
- import type { PresetAsset, PresetContext, PresetGraph, PresetNode } from 'presetter-types';
2
- /**
3
- * get assets from a preset
4
- * @param name name of the preset
5
- * @param context context about the target project and customization in .presetterrc
6
- * @returns assets from the preset
7
- */
8
- export declare function getPresetAsset(name: string, context: PresetContext): Promise<PresetAsset>;
9
- /**
10
- * compute a graph of presets
11
- * @param context context about the target project and customization in .presetterrc
12
- * @returns resolved preset graph
13
- */
14
- export declare function getPresetGraph(context: PresetContext): Promise<PresetGraph>;
15
- /**
16
- * resolve a preset as a node
17
- * @param name name of the preset
18
- * @param context context about the target project and customization in .presetterrc
19
- * @returns resolved preset node
20
- */
21
- export declare function getPresetNode(name: string, context: PresetContext): Promise<PresetNode>;
22
- //# sourceMappingURL=graph.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../source/preset/graph.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACX,MAAM,iBAAiB,CAAC;AAEzB;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,WAAW,CAAC,CAWtB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,WAAW,CAAC,CAOtB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,UAAU,CAAC,CASrB"}
@@ -1,53 +0,0 @@
1
- /*
2
- * *** MIT LICENSE ***
3
- * -------------------------------------------------------------------------
4
- * This code may be modified and distributed under the MIT license.
5
- * See the LICENSE file for details.
6
- * -------------------------------------------------------------------------
7
- *
8
- * @summary Collection of helpers for prepare the preset graph
9
- *
10
- * @author Alvis HT Tang <alvis@hilbert.space>
11
- * @license MIT
12
- * @copyright Copyright (c) 2020 - All Rights Reserved.
13
- * -------------------------------------------------------------------------
14
- */
15
- /**
16
- * get assets from a preset
17
- * @param name name of the preset
18
- * @param context context about the target project and customization in .presetterrc
19
- * @returns assets from the preset
20
- */
21
- export async function getPresetAsset(name, context) {
22
- try {
23
- // get the preset
24
- const { default: getPresetAsset } = (await import(name));
25
- return await getPresetAsset(context);
26
- }
27
- catch {
28
- throw new Error(`cannot resolve preset ${name}`);
29
- }
30
- }
31
- /**
32
- * compute a graph of presets
33
- * @param context context about the target project and customization in .presetterrc
34
- * @returns resolved preset graph
35
- */
36
- export async function getPresetGraph(context) {
37
- // get the preset name
38
- const { preset } = context.custom;
39
- const presets = Array.isArray(preset) ? preset : [preset];
40
- return Promise.all(presets.map(async (name) => getPresetNode(name, context)));
41
- }
42
- /**
43
- * resolve a preset as a node
44
- * @param name name of the preset
45
- * @param context context about the target project and customization in .presetterrc
46
- * @returns resolved preset node
47
- */
48
- export async function getPresetNode(name, context) {
49
- const asset = await getPresetAsset(name, context);
50
- const nodes = await Promise.all((asset.extends ?? []).map(async (extension) => getPresetNode(extension, context)));
51
- return { name, asset, nodes };
52
- }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L2dyYXBoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFTSDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUNsQyxJQUFZLEVBQ1osT0FBc0I7SUFFdEIsSUFBSSxDQUFDO1FBQ0gsaUJBQWlCO1FBQ2pCLE1BQU0sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FFdEQsQ0FBQztRQUVGLE9BQU8sTUFBTSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2xDLE9BQXNCO0lBRXRCLHNCQUFzQjtJQUN0QixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUVsQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFMUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQ2pDLElBQVksRUFDWixPQUFzQjtJQUV0QixNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUM3QixDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUM1QyxhQUFhLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUNsQyxDQUNGLENBQUM7SUFFRixPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNoQyxDQUFDIn0=
@@ -1,9 +0,0 @@
1
- import type { ResolvedPresetContext, Template } from 'presetter-types';
2
- /**
3
- * compute the output paths of all configuration files to be generated
4
- * @param template resolved template map
5
- * @param context resolved context about the target project and customization
6
- * @returns mapping of configuration symlinks to its real path
7
- */
8
- export declare function getDestinationMap(template: Record<string, Template>, context: ResolvedPresetContext<'noSymlinks'>): Promise<Record<string, string>>;
9
- //# sourceMappingURL=mapping.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../source/preset/mapping.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEvE;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAClC,OAAO,EAAE,qBAAqB,CAAC,YAAY,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAyBjC"}
@@ -1,41 +0,0 @@
1
- /*
2
- * *** MIT LICENSE ***
3
- * -------------------------------------------------------------------------
4
- * This code may be modified and distributed under the MIT license.
5
- * See the LICENSE file for details.
6
- * -------------------------------------------------------------------------
7
- *
8
- * @summary Collection of helpers for mapping content to the target project
9
- *
10
- * @author Alvis HT Tang <alvis@hilbert.space>
11
- * @license MIT
12
- * @copyright Copyright (c) 2020 - All Rights Reserved.
13
- * -------------------------------------------------------------------------
14
- */
15
- import { resolve } from 'node:path';
16
- import resolvePackage from 'resolve-pkg';
17
- import debug from '../debugger.js';
18
- /**
19
- * compute the output paths of all configuration files to be generated
20
- * @param template resolved template map
21
- * @param context resolved context about the target project and customization
22
- * @returns mapping of configuration symlinks to its real path
23
- */
24
- export async function getDestinationMap(template, context) {
25
- const { custom: { noSymlinks }, target: { root, name }, } = context;
26
- // make sure we use the path of presetter under the target project, not the one via npx
27
- const presetterDir = resolvePackage('presetter', { cwd: root });
28
- const outDir = resolve(presetterDir, '..', '.presetter', name);
29
- const relativePaths = [...Object.keys(template)];
30
- const map = Object.fromEntries([
31
- ...relativePaths.map((relativePath) => [
32
- relativePath,
33
- resolve(
34
- // output on the project root if it's specified as not a symlink
35
- noSymlinks.includes(relativePath) ? context.target.root : outDir, relativePath),
36
- ]),
37
- ]);
38
- debug('DESTINATION MAP\n%O', map);
39
- return map;
40
- }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvbWFwcGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxPQUFPLGNBQWMsTUFBTSxhQUFhLENBQUM7QUFFekMsT0FBTyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBSWhDOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsUUFBa0MsRUFDbEMsT0FBNEM7SUFFNUMsTUFBTSxFQUNKLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUN0QixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQ3ZCLEdBQUcsT0FBTyxDQUFDO0lBQ1osdUZBQXVGO0lBQ3ZGLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBYSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFaEUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVqRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQzdCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBb0IsRUFBRSxDQUFDO1lBQ3ZELFlBQVk7WUFDWixPQUFPO1lBQ0wsZ0VBQWdFO1lBQ2hFLFVBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQ2hFLFlBQVksQ0FDYjtTQUNGLENBQUM7S0FDSCxDQUFDLENBQUM7SUFFSCxLQUFLLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFbEMsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIn0=
@@ -1,25 +0,0 @@
1
- import type { PresetterConfig } from 'presetter-types';
2
- /**
3
- * get presetter configuration files recursively from the current base up to the monorepo root, if there is one
4
- * @param base the base directory to start searching for the configuration file
5
- * @returns list of presetter configuration files
6
- */
7
- export declare function getPresetterRCPaths(base: string): Promise<string[]>;
8
- /**
9
- * get the .presetterrc configuration file content
10
- * @param root the base directory in which the configuration file should be located
11
- * @returns content of the configuration file
12
- */
13
- export declare function getPresetterRC(root: string): Promise<PresetterConfig>;
14
- /**
15
- * update .presetterrc configuration file content
16
- * @param root the base directory in which the configuration file should be located
17
- * @param config content to be merged with the existing configuration file
18
- */
19
- export declare function updatePresetterRC(root: string, config: PresetterConfig): Promise<void>;
20
- /**
21
- * check that the configuration is valid
22
- * @param value content from a configuration file
23
- */
24
- export declare function assertPresetterRC(value: unknown): asserts value is PresetterConfig;
25
- //# sourceMappingURL=presetterRC.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"presetterRC.d.ts","sourceRoot":"","sources":["../../source/preset/presetterRC.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAQvD;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAazE;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAoB3E;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,eAAe,CAOlC"}
@@ -1,76 +0,0 @@
1
- /*
2
- * *** MIT LICENSE ***
3
- * -------------------------------------------------------------------------
4
- * This code may be modified and distributed under the MIT license.
5
- * See the LICENSE file for details.
6
- * -------------------------------------------------------------------------
7
- *
8
- * @summary Procedures for related to preset configuration
9
- *
10
- * @author Alvis HT Tang <alvis@hilbert.space>
11
- * @license MIT
12
- * @copyright Copyright (c) 2020 - All Rights Reserved.
13
- * -------------------------------------------------------------------------
14
- */
15
- import { existsSync, writeFileSync } from 'node:fs';
16
- import { dirname, resolve } from 'node:path';
17
- import { readPackageUp } from 'read-pkg-up';
18
- import debug from '../debugger.js';
19
- import { loadFile } from '../io.js';
20
- import { isJSON, merge } from '../template.js';
21
- /** presetter configuration filename */
22
- const PRESETTERRC = '.presetterrc';
23
- const JSON_INDENT = 2;
24
- /**
25
- * get presetter configuration files recursively from the current base up to the monorepo root, if there is one
26
- * @param base the base directory to start searching for the configuration file
27
- * @returns list of presetter configuration files
28
- */
29
- export async function getPresetterRCPaths(base) {
30
- const filesFromBase = ['', '.json']
31
- .map((ext) => resolve(base, `${PRESETTERRC}${ext}`))
32
- .filter(existsSync);
33
- const parent = await readPackageUp({ cwd: dirname(base) });
34
- // if the base is the root of a monorepo, stop searching
35
- const filesFromParent = parent?.path
36
- ? await getPresetterRCPaths(dirname(base))
37
- : [];
38
- return [...filesFromParent, ...filesFromBase];
39
- }
40
- /**
41
- * get the .presetterrc configuration file content
42
- * @param root the base directory in which the configuration file should be located
43
- * @returns content of the configuration file
44
- */
45
- export async function getPresetterRC(root) {
46
- // locate all possible configuration files
47
- const paths = await getPresetterRCPaths(root);
48
- if (!paths.length) {
49
- throw new Error('missing presetter configuration file');
50
- }
51
- const configs = paths.map((path) => loadFile(path, 'json'));
52
- const mergedConfig = configs.reduce((mergedConfig, config) => merge(mergedConfig, config), {});
53
- assertPresetterRC(mergedConfig);
54
- debug('MERGED CONFIGURATION PROVIDED BY PROJECT\n%O', mergedConfig);
55
- return mergedConfig;
56
- }
57
- /**
58
- * update .presetterrc configuration file content
59
- * @param root the base directory in which the configuration file should be located
60
- * @param config content to be merged with the existing configuration file
61
- */
62
- export async function updatePresetterRC(root, config) {
63
- const existingPresetterRC = await getPresetterRC(root).catch(() => ({}));
64
- writeFileSync(resolve(root, `${PRESETTERRC}.json`), JSON.stringify(merge(existingPresetterRC, config), null, JSON_INDENT));
65
- }
66
- /**
67
- * check that the configuration is valid
68
- * @param value content from a configuration file
69
- */
70
- export function assertPresetterRC(value) {
71
- if (!isJSON(value) ||
72
- (typeof value['preset'] !== 'string' && !Array.isArray(value['preset']))) {
73
- throw new Error(`invalid presetter configuration file`);
74
- }
75
- }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0dGVyUkMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L3ByZXNldHRlclJDLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sS0FBSyxNQUFNLGFBQWEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSzVDLHVDQUF1QztBQUN2QyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFFbkMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBRXRCOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLG1CQUFtQixDQUFDLElBQVk7SUFDcEQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDO1NBQ2hDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLFdBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQ25ELE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV0QixNQUFNLE1BQU0sR0FBRyxNQUFNLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTNELHdEQUF3RDtJQUN4RCxNQUFNLGVBQWUsR0FBRyxNQUFNLEVBQUUsSUFBSTtRQUNsQyxDQUFDLENBQUMsTUFBTSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVQLE9BQU8sQ0FBQyxHQUFHLGVBQWUsRUFBRSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQUMsSUFBWTtJQUMvQywwQ0FBMEM7SUFDMUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU5QyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQWMsQ0FBQyxDQUFDO0lBRXpFLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQ2pDLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsRUFDckQsRUFBRSxDQUNILENBQUM7SUFFRixpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUVoQyxLQUFLLENBQUMsOENBQThDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFcEUsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxJQUFZLEVBQ1osTUFBdUI7SUFFdkIsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXpFLGFBQWEsQ0FDWCxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsV0FBVyxPQUFPLENBQUMsRUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUN0RSxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsS0FBYztJQUVkLElBQ0UsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2QsQ0FBQyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQ3hFLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztBQUNILENBQUMifQ==
@@ -1,17 +0,0 @@
1
- /** collection of options for bootstrapping */
2
- interface BootstrapOptions {
3
- /** whether to skip all checks */
4
- force?: boolean;
5
- }
6
- /**
7
- * bootstrap the preset to the current project root
8
- * @param options collection of options
9
- */
10
- export declare function bootstrapPreset(options?: BootstrapOptions): Promise<void>;
11
- /**
12
- * adopt a preset to the project
13
- * @param uris list of name or git url of the preset
14
- */
15
- export declare function setupPreset(...uris: string[]): Promise<void>;
16
- export {};
17
- //# sourceMappingURL=setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../source/preset/setup.ts"],"names":[],"mappings":"AAiCA,8CAA8C;AAC9C,UAAU,gBAAgB;IACxB,iCAAiC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoClE"}
@@ -1,80 +0,0 @@
1
- /*
2
- * *** MIT LICENSE ***
3
- * -------------------------------------------------------------------------
4
- * This code may be modified and distributed under the MIT license.
5
- * See the LICENSE file for details.
6
- * -------------------------------------------------------------------------
7
- *
8
- * @summary Collection of helpers for setting up a project
9
- *
10
- * @author Alvis HT Tang <alvis@hilbert.space>
11
- * @license MIT
12
- * @copyright Copyright (c) 2020 - All Rights Reserved.
13
- * -------------------------------------------------------------------------
14
- */
15
- import { info } from 'node:console';
16
- import { dirname } from 'node:path';
17
- import { readPackage } from 'read-pkg';
18
- import { writePackage } from 'write-pkg';
19
- import { arePeerPackagesAutoInstalled, getPackage, reifyDependencies, } from '../package.js';
20
- import { bootstrapContent } from './content.js';
21
- import { getContext } from './context.js';
22
- import { updatePresetterRC } from './presetterRC.js';
23
- /**
24
- * bootstrap the preset to the current project root
25
- * @param options collection of options
26
- */
27
- export async function bootstrapPreset(options) {
28
- const context = await getContext();
29
- // install all related packages first
30
- if (!arePeerPackagesAutoInstalled()) {
31
- await reifyDependencies({ root: context.target.root });
32
- }
33
- // generate configurations
34
- await bootstrapContent(context, options);
35
- }
36
- /**
37
- * adopt a preset to the project
38
- * @param uris list of name or git url of the preset
39
- */
40
- export async function setupPreset(...uris) {
41
- // NOTE: comparing packages before and after installation is the only reliable way
42
- // to extract the name of the preset in case it's given as a git url or file path etc.
43
- const { path } = await getPackage();
44
- const root = dirname(path);
45
- const packageBefore = (await readPackage({ cwd: root })).devDependencies;
46
- // install presetter & the preset
47
- info(`Installing ${uris.join(' ')}... it may take a few moment...`);
48
- await reifyDependencies({
49
- root,
50
- add: ['presetter', ...uris],
51
- saveAs: 'dev',
52
- lockFile: true,
53
- });
54
- // extract the name of the installed preset
55
- const packageAfter = (await readPackage({ cwd: root })).devDependencies;
56
- const newPackages = getNewPackages({ ...packageBefore }, { ...packageAfter });
57
- const preset = newPackages.filter((name) => name !== 'presetter');
58
- info('Updating .presetterrc.json & package.json');
59
- // update .presetterrc.json
60
- await updatePresetterRC(root, { preset });
61
- // bootstrap configuration files with the new .presetterrc.json
62
- const context = await getContext();
63
- await bootstrapContent(context);
64
- // insert post install script if not preset
65
- const json = context.target.package;
66
- const scripts = { prepare: 'presetter bootstrap', ...json.scripts };
67
- const patched = { ...json, scripts };
68
- await writePackage(root, patched);
69
- info('Done. Enjoy coding!');
70
- }
71
- /**
72
- * get a list of new packages installed by comparing the before and after state of devDependencies in package.json
73
- * @param before before state of devDependencies in package.json
74
- * @param after after state of devDependencies in package.json
75
- * @returns list of new package names
76
- */
77
- function getNewPackages(before, after) {
78
- return Object.keys(after).filter((name) => !before[name]);
79
- }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L3NldHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXpDLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsVUFBVSxFQUNWLGlCQUFpQixHQUNsQixNQUFNLFlBQVksQ0FBQztBQUVwQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVbEQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQ25DLE9BQTBCO0lBRTFCLE1BQU0sT0FBTyxHQUFHLE1BQU0sVUFBVSxFQUFFLENBQUM7SUFFbkMscUNBQXFDO0lBQ3JDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLENBQUM7UUFDcEMsTUFBTSxpQkFBaUIsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixNQUFNLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQUMsR0FBRyxJQUFjO0lBQ2pELGtGQUFrRjtJQUNsRixzRkFBc0Y7SUFDdEYsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sVUFBVSxFQUFFLENBQUM7SUFDcEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBTSxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztJQUV6RSxpQ0FBaUM7SUFDakMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUNwRSxNQUFNLGlCQUFpQixDQUFDO1FBQ3RCLElBQUk7UUFDSixHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDM0IsTUFBTSxFQUFFLEtBQUs7UUFDYixRQUFRLEVBQUUsSUFBSTtLQUNmLENBQUMsQ0FBQztJQUVILDJDQUEyQztJQUMzQyxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQU0sV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7SUFDeEUsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsRUFBRSxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUM5RSxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUM7SUFFbEUsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDbEQsMkJBQTJCO0lBQzNCLE1BQU0saUJBQWlCLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUUxQywrREFBK0Q7SUFDL0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxVQUFVLEVBQUUsQ0FBQztJQUNuQyxNQUFNLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWhDLDJDQUEyQztJQUMzQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUNwQyxNQUFNLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwRSxNQUFNLE9BQU8sR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3JDLE1BQU0sWUFBWSxDQUFDLElBQUksRUFBRSxPQUErQyxDQUFDLENBQUM7SUFFMUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxjQUFjLENBQ3JCLE1BQThCLEVBQzlCLEtBQTZCO0lBRTdCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQWtCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzVFLENBQUMifQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * uninstall the preset from the current project root
3
- */
4
- export declare function unsetPreset(): Promise<void>;
5
- //# sourceMappingURL=unset.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unset.d.ts","sourceRoot":"","sources":["../../source/preset/unset.ts"],"names":[],"mappings":"AAqBA;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAQjD"}