presetter 4.7.2 → 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 (134) hide show
  1. package/README.md +5 -5
  2. package/lib/debugger.d.ts +4 -0
  3. package/lib/debugger.d.ts.map +1 -0
  4. package/lib/debugger.js +4 -0
  5. package/lib/executable/entry.d.ts.map +1 -1
  6. package/lib/executable/entry.js +4 -43
  7. package/lib/executable/error.d.ts.map +1 -1
  8. package/lib/executable/error.js +1 -16
  9. package/lib/executable/index.js +2 -16
  10. package/lib/index.d.ts +4 -5
  11. package/lib/index.d.ts.map +1 -1
  12. package/lib/index.js +6 -21
  13. package/lib/io.d.ts +8 -42
  14. package/lib/io.d.ts.map +1 -1
  15. package/lib/io.js +24 -156
  16. package/lib/package.d.ts +2 -2
  17. package/lib/package.d.ts.map +1 -1
  18. package/lib/package.js +5 -20
  19. package/lib/preset/bootstrap.d.ts +5 -0
  20. package/lib/preset/bootstrap.d.ts.map +1 -0
  21. package/lib/preset/bootstrap.js +32 -0
  22. package/lib/preset/config/index.d.ts +3 -0
  23. package/lib/preset/config/index.d.ts.map +1 -0
  24. package/lib/preset/config/index.js +4 -0
  25. package/lib/preset/config/resolve.d.ts +8 -0
  26. package/lib/preset/config/resolve.d.ts.map +1 -0
  27. package/lib/preset/config/resolve.js +25 -0
  28. package/lib/preset/config/search.d.ts +7 -0
  29. package/lib/preset/config/search.d.ts.map +1 -0
  30. package/lib/preset/config/search.js +25 -0
  31. package/lib/preset/context.d.ts +2 -1
  32. package/lib/preset/context.d.ts.map +1 -1
  33. package/lib/preset/context.js +5 -24
  34. package/lib/preset/index.d.ts +5 -2
  35. package/lib/preset/index.d.ts.map +1 -1
  36. package/lib/preset/index.js +7 -18
  37. package/lib/preset/project.d.ts +8 -0
  38. package/lib/preset/project.d.ts.map +1 -0
  39. package/lib/preset/project.js +28 -0
  40. package/lib/preset/resolution/asset.d.ts +31 -0
  41. package/lib/preset/resolution/asset.d.ts.map +1 -0
  42. package/lib/preset/resolution/asset.js +78 -0
  43. package/lib/preset/resolution/content.d.ts +37 -0
  44. package/lib/preset/resolution/content.d.ts.map +1 -0
  45. package/lib/preset/resolution/content.js +55 -0
  46. package/lib/preset/resolution/debugger.d.ts +3 -0
  47. package/lib/preset/resolution/debugger.d.ts.map +1 -0
  48. package/lib/preset/resolution/debugger.js +3 -0
  49. package/lib/preset/resolution/index.d.ts +6 -0
  50. package/lib/preset/resolution/index.d.ts.map +1 -0
  51. package/lib/preset/resolution/index.js +7 -0
  52. package/lib/preset/resolution/object.d.ts +9 -0
  53. package/lib/preset/resolution/object.d.ts.map +1 -0
  54. package/lib/preset/resolution/object.js +10 -0
  55. package/lib/preset/resolution/preset.d.ts +9 -0
  56. package/lib/preset/resolution/preset.d.ts.map +1 -0
  57. package/lib/preset/resolution/preset.js +17 -0
  58. package/lib/preset/resolution/script.d.ts +9 -0
  59. package/lib/preset/resolution/script.d.ts.map +1 -0
  60. package/lib/preset/resolution/script.js +39 -0
  61. package/lib/preset/resolution/variable.d.ts +9 -0
  62. package/lib/preset/resolution/variable.d.ts.map +1 -0
  63. package/lib/preset/resolution/variable.js +33 -0
  64. package/lib/preset/scripts.d.ts.map +1 -1
  65. package/lib/preset/scripts.js +6 -20
  66. package/lib/resolve.d.ts +7 -0
  67. package/lib/resolve.d.ts.map +1 -0
  68. package/lib/resolve.js +27 -0
  69. package/lib/run.d.ts.map +1 -1
  70. package/lib/run.js +7 -19
  71. package/lib/scripts.d.ts.map +1 -1
  72. package/lib/scripts.js +8 -19
  73. package/lib/serialization.d.ts +15 -0
  74. package/lib/serialization.d.ts.map +1 -0
  75. package/lib/serialization.js +48 -0
  76. package/lib/task.d.ts.map +1 -1
  77. package/lib/task.js +5 -17
  78. package/lib/template/index.d.ts +3 -0
  79. package/lib/template/index.d.ts.map +1 -0
  80. package/lib/template/index.js +4 -0
  81. package/lib/template/merge.d.ts +33 -0
  82. package/lib/template/merge.d.ts.map +1 -0
  83. package/lib/template/merge.js +84 -0
  84. package/lib/template/substitute.d.ts +11 -0
  85. package/lib/template/substitute.d.ts.map +1 -0
  86. package/lib/template/substitute.js +19 -0
  87. package/lib/utilities/display.d.ts +15 -0
  88. package/lib/utilities/display.d.ts.map +1 -0
  89. package/lib/utilities/display.js +51 -0
  90. package/lib/utilities/index.d.ts +3 -1
  91. package/lib/utilities/index.d.ts.map +1 -1
  92. package/lib/utilities/index.js +5 -17
  93. package/lib/utilities/{mapValues.d.ts → mapping.d.ts} +1 -1
  94. package/lib/utilities/mapping.d.ts.map +1 -0
  95. package/lib/utilities/mapping.js +10 -0
  96. package/lib/utilities/object.d.ts +20 -0
  97. package/lib/utilities/object.d.ts.map +1 -0
  98. package/lib/utilities/object.js +37 -0
  99. package/package.json +21 -16
  100. package/lib/content.d.ts +0 -123
  101. package/lib/content.d.ts.map +0 -1
  102. package/lib/content.js +0 -241
  103. package/lib/directive.d.ts +0 -34
  104. package/lib/directive.d.ts.map +0 -1
  105. package/lib/directive.js +0 -172
  106. package/lib/error.d.ts +0 -8
  107. package/lib/error.d.ts.map +0 -1
  108. package/lib/error.js +0 -32
  109. package/lib/preset/content.d.ts +0 -14
  110. package/lib/preset/content.d.ts.map +0 -1
  111. package/lib/preset/content.js +0 -32
  112. package/lib/preset/graph.d.ts +0 -22
  113. package/lib/preset/graph.d.ts.map +0 -1
  114. package/lib/preset/graph.js +0 -53
  115. package/lib/preset/mapping.d.ts +0 -9
  116. package/lib/preset/mapping.d.ts.map +0 -1
  117. package/lib/preset/mapping.js +0 -38
  118. package/lib/preset/presetterRC.d.ts +0 -25
  119. package/lib/preset/presetterRC.d.ts.map +0 -1
  120. package/lib/preset/presetterRC.js +0 -74
  121. package/lib/preset/setup.d.ts +0 -17
  122. package/lib/preset/setup.d.ts.map +0 -1
  123. package/lib/preset/setup.js +0 -80
  124. package/lib/preset/unset.d.ts +0 -5
  125. package/lib/preset/unset.d.ts.map +0 -1
  126. package/lib/preset/unset.js +0 -31
  127. package/lib/resolution.d.ts +0 -22
  128. package/lib/resolution.d.ts.map +0 -1
  129. package/lib/resolution.js +0 -61
  130. package/lib/template.d.ts +0 -64
  131. package/lib/template.d.ts.map +0 -1
  132. package/lib/template.js +0 -199
  133. package/lib/utilities/mapValues.d.ts.map +0 -1
  134. package/lib/utilities/mapValues.js +0 -24
package/lib/package.js CHANGED
@@ -1,22 +1,8 @@
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 a package
9
- *
10
- * @author Alvis HT Tang <alvis@hilbert.space>
11
- * @license MIT
12
- * @copyright Copyright (c) 2019 - All Rights Reserved.
13
- * -------------------------------------------------------------------------
14
- */
15
1
  import { homedir } from 'node:os';
16
2
  import { resolve } from 'node:path';
3
+ import { readPackageUp } from 'read-pkg-up';
17
4
  import { Arborist } from '@npmcli/arborist';
18
5
  import Config from '@npmcli/config';
19
- import { readPackageUp } from 'read-pkg-up';
20
6
  const NPM_VERSION_FOR_PEER_INSTALLATION = 7;
21
7
  /**
22
8
  * indicate whether peer packages would be installed automatically
@@ -24,11 +10,10 @@ const NPM_VERSION_FOR_PEER_INSTALLATION = 7;
24
10
  */
25
11
  export function arePeerPackagesAutoInstalled() {
26
12
  // NOTE npm_config_user_agent should be in the form of 'npm/7.3.0 node/v15.5.0 darwin x64'
27
- /* istanbul ignore next */
28
- const [clientID] = process.env['npm_config_user_agent']?.split(' ') ?? [];
29
- /* istanbul ignore next */
13
+ const clientID = process.env.npm_config_user_agent?.split(' ')[0];
14
+ /* v8 ignore next */
30
15
  const [name, version] = clientID?.split('/') ?? [];
31
- /* istanbul ignore next */
16
+ /* v8 ignore next */
32
17
  const [major] = version?.split('.') ?? [];
33
18
  const isNPM = name === 'npm';
34
19
  const isNonNPM = name !== 'npm';
@@ -105,4 +90,4 @@ async function getNPMConfig() {
105
90
  await config.load();
106
91
  return config.flat;
107
92
  }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9wYWNrYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sTUFBTSxNQUFNLGdCQUFnQixDQUFDO0FBRXBDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJNUMsTUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7QUFVNUM7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLDRCQUE0QjtJQUMxQywwRkFBMEY7SUFFMUYsMEJBQTBCO0lBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FDZCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFLLEVBQWtCLENBQUM7SUFFMUUsMEJBQTBCO0lBQzFCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSyxFQUFrQixDQUFDO0lBRXBFLDBCQUEwQjtJQUMxQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSyxFQUFrQixDQUFDO0lBRTNELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxLQUFLLENBQUM7SUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxLQUFLLEtBQUssQ0FBQztJQUVoQyxPQUFPO0lBQ0wsaUZBQWlGO0lBQ2pGLFFBQVE7UUFDUixDQUFDLEtBQUs7WUFDSixLQUFLLEtBQUssU0FBUztZQUNuQixRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksaUNBQWlDLENBQUMsQ0FDeEQsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQUMsSUFBYTtJQUM1QyxnREFBZ0Q7SUFDaEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRW5FLGtEQUFrRDtJQUNsRCxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0tBQ3pEO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUN6QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsV0FBMEIsQ0FBQztJQUUvQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3hCLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUFDLElBTXZDO0lBQ0MsTUFBTSxFQUNKLElBQUksRUFDSixHQUFHLEdBQUcsRUFBRSxFQUNSLE1BQU0sR0FBRyxFQUFFLEVBQ1gsTUFBTSxHQUFHLE1BQU0sRUFDZixRQUFRLEdBQUcsS0FBSyxHQUNqQixHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUVoQiw0Q0FBNEM7SUFDNUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLEVBQUUsQ0FBQztJQUNwQyxNQUFNLGlCQUFpQixHQUFHLDRCQUE0QixFQUFFLENBQUMsQ0FBQyw0QkFBNEI7SUFDdEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUU1RSw4QkFBOEI7SUFDOUIsTUFBTSxVQUFVLEdBQUcsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3RDLEdBQUc7UUFDSCxFQUFFLEVBQUUsTUFBTTtRQUNWLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLElBQUk7S0FDYixDQUFDLENBQUM7SUFFSCxPQUFPLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtLQUNoQixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxLQUFLLFVBQVUsWUFBWTtJQUN6QixpQkFBaUI7SUFDakIsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUM7UUFDeEIsV0FBVyxFQUFFO1lBQ1gsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ25FLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1NBQ2xFO1FBQ0QsT0FBTyxFQUFFLEdBQUc7UUFDWixPQUFPLEVBQUUsQ0FDUCxNQUE4QixFQUM5QixlQUF1QyxFQUNqQyxFQUFFO1lBQ1IscUhBQXFIO1lBRXJILDBEQUEwRDtZQUMxRCxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6QyxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFcEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3JCLENBQUMifQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9wYWNrYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLE1BQU0sTUFBTSxnQkFBZ0IsQ0FBQztBQUlwQyxNQUFNLGlDQUFpQyxHQUFHLENBQUMsQ0FBQztBQVU1Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsNEJBQTRCO0lBQzFDLDBGQUEwRjtJQUUxRixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsRSxvQkFBb0I7SUFDcEIsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFLLEVBQWtCLENBQUM7SUFFcEUsb0JBQW9CO0lBQ3BCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFLLEVBQWtCLENBQUM7SUFFM0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEtBQUssQ0FBQztJQUM3QixNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssS0FBSyxDQUFDO0lBRWhDLE9BQU87SUFDTCxpRkFBaUY7SUFDakYsUUFBUTtRQUNSLENBQUMsS0FBSztZQUNKLEtBQUssS0FBSyxTQUFTO1lBQ25CLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxpQ0FBaUMsQ0FBQyxDQUN4RCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFD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
@@ -0,0 +1,5 @@
1
+ /**
2
+ * generate files from templates and place them to the target project root
3
+ */
4
+ export declare function bootstrap(): Promise<void>;
5
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../source/preset/bootstrap.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB/C"}
@@ -0,0 +1,32 @@
1
+ import { info } from 'node:console';
2
+ import { resolve } from 'node:path';
3
+ import { ensureFile } from '../io.js';
4
+ import { arePeerPackagesAutoInstalled, reifyDependencies } from '../package.js';
5
+ import { serialize } from '../serialization.js';
6
+ import { getContext } from './context.js';
7
+ import { resolveProjectPreset } from './project.js';
8
+ import { resolveAssets } from './resolution/index.js';
9
+ /**
10
+ * generate files from templates and place them to the target project root
11
+ */
12
+ export async function bootstrap() {
13
+ const context = await getContext();
14
+ // install all related packages first
15
+ if (!arePeerPackagesAutoInstalled()) {
16
+ await reifyDependencies({ root: context.root });
17
+ }
18
+ // generate configurations
19
+ const node = await resolveProjectPreset(context);
20
+ const assets = await resolveAssets(node, context);
21
+ for (const [name, asset] of Object.entries(assets)) {
22
+ if (asset === null) {
23
+ info(`Skipping ${name}`);
24
+ }
25
+ else {
26
+ const destination = resolve(context.root, name);
27
+ info(`Generating ${name}`);
28
+ ensureFile(destination, serialize(destination, asset));
29
+ }
30
+ }
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL3ByZXNldC9ib290c3RyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDbkMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxTQUFTO0lBQzdCLE1BQU0sT0FBTyxHQUFHLE1BQU0sVUFBVSxFQUFFLENBQUM7SUFFbkMscUNBQXFDO0lBQ3JDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLENBQUM7UUFDcEMsTUFBTSxpQkFBaUIsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsMEJBQTBCO0lBQzFCLE1BQU0sSUFBSSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakQsTUFBTSxNQUFNLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWxELEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkQsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWhELElBQUksQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUM7WUFFM0IsVUFBVSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekQsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIn0=
@@ -0,0 +1,3 @@
1
+ export * from './resolve.js';
2
+ export * from './search.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/preset/config/index.ts"],"names":[],"mappings":"AAEA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ /* v8 ignore start */
2
+ export * from './resolve.js';
3
+ export * from './search.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvcHJlc2V0L2NvbmZpZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUI7QUFFckIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxVQUFVLENBQUMifQ==
@@ -0,0 +1,8 @@
1
+ import type { Preset } from 'presetter-types';
2
+ /**
3
+ * resolve the presetter configuration from the project root
4
+ * @param root the root directory containing the project's package.json
5
+ * @returns the resolved presetter configuration
6
+ */
7
+ export declare function resolvePresetterConfig(root: string): Promise<Preset>;
8
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../source/preset/config/resolve.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB1E"}
@@ -0,0 +1,25 @@
1
+ import { createJiti } from 'jiti';
2
+ import debug from '../../debugger.js';
3
+ import { searchPresetterConfigs } from './search.js';
4
+ /**
5
+ * resolve the presetter configuration from the project root
6
+ * @param root the root directory containing the project's package.json
7
+ * @returns the resolved presetter configuration
8
+ */
9
+ export async function resolvePresetterConfig(root) {
10
+ const configPaths = await searchPresetterConfigs(root);
11
+ if (configPaths.length === 0) {
12
+ throw new Error('no presetter configuration file found');
13
+ }
14
+ // NOTE: the priority is given to the configuration file closest to the project root, from mts, ts, mjs then js
15
+ const closestConfigPath = configPaths[0];
16
+ debug(`loading presetter configuration from ${closestConfigPath}`);
17
+ const jiti = createJiti(root, {
18
+ debug: !!process.env.DEBUG?.includes('presetter'),
19
+ });
20
+ // get the preset
21
+ return jiti.import(closestConfigPath, {
22
+ default: true,
23
+ });
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9wcmVzZXQvY29uZmlnL3Jlc29sdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJbEQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsc0JBQXNCLENBQUMsSUFBWTtJQUN2RCxNQUFNLFdBQVcsR0FBRyxNQUFNLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXZELElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELCtHQUErRztJQUMvRyxNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV6QyxLQUFLLENBQUMsd0NBQXdDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNuRSxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFO1FBQzVCLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQztLQUNsRCxDQUFDLENBQUM7SUFFSCxpQkFBaUI7SUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFTLGlCQUFpQixFQUFFO1FBQzVDLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
@@ -0,0 +1,7 @@
1
+ /**
2
+ * get all potential presetter configuration files by searching from the current base up to the monorepo root, if there is one
3
+ * @param base the base directory to start searching for the configuration file
4
+ * @returns list of presetter configuration files
5
+ */
6
+ export declare function searchPresetterConfigs(base: string): Promise<string[]>;
7
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../source/preset/config/search.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAiB5E"}
@@ -0,0 +1,25 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { readPackageUp } from 'read-pkg-up';
4
+ import debug from '../../debugger.js';
5
+ /** presetter configuration filename */
6
+ const PRESETTER_CONFIG = 'presetter.config';
7
+ /**
8
+ * get all potential presetter configuration files by searching from the current base up to the monorepo root, if there is one
9
+ * @param base the base directory to start searching for the configuration file
10
+ * @returns list of presetter configuration files
11
+ */
12
+ export async function searchPresetterConfigs(base) {
13
+ debug(`searching for presetter configuration files from ${base}`);
14
+ const filesFromBase = ['.mts', '.ts', '.mjs', '.js']
15
+ .map((ext) => resolve(base, `${PRESETTER_CONFIG}${ext}`))
16
+ .filter(existsSync);
17
+ debug(`found ${filesFromBase.length} configuration files from ${base}`);
18
+ const parent = await readPackageUp({ cwd: dirname(base) });
19
+ // if the base is the root of a monorepo, stop searching
20
+ const filesFromParent = parent?.path
21
+ ? await searchPresetterConfigs(dirname(base))
22
+ : [];
23
+ return [...filesFromBase, ...filesFromParent];
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc291cmNlL3ByZXNldC9jb25maWcvc2VhcmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxPQUFPLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyx1Q0FBdUM7QUFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztBQUU1Qzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxJQUFZO0lBQ3ZELEtBQUssQ0FBQyxvREFBb0QsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVsRSxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQztTQUNqRCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQ3hELE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV0QixLQUFLLENBQUMsU0FBUyxhQUFhLENBQUMsTUFBTSw2QkFBNkIsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUV4RSxNQUFNLE1BQU0sR0FBRyxNQUFNLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTNELHdEQUF3RDtJQUN4RCxNQUFNLGVBQWUsR0FBRyxNQUFNLEVBQUUsSUFBSTtRQUNsQyxDQUFDLENBQUMsTUFBTSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVQLE9BQU8sQ0FBQyxHQUFHLGFBQWEsRUFBRSxHQUFHLGVBQWUsQ0FBQyxDQUFDO0FBQ2hELENBQUMifQ==
@@ -1,7 +1,8 @@
1
1
  import type { PresetContext } from 'presetter-types';
2
2
  /**
3
3
  * get context about the target project and any customization in .presetterrc
4
+ * @param cwd the current working directory
4
5
  * @returns context about the target project and any customization in .presetterrc
5
6
  */
6
- export declare function getContext(): Promise<PresetContext>;
7
+ export declare function getContext(cwd?: string): Promise<PresetContext>;
7
8
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../source/preset/context.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,CAUzD"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../source/preset/context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAKrE"}
@@ -1,32 +1,13 @@
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 concluding the target context
9
- *
10
- * @author Alvis HT Tang <alvis@hilbert.space>
11
- * @license MIT
12
- * @copyright Copyright (c) 2020 - All Rights Reserved.
13
- * -------------------------------------------------------------------------
14
- */
15
1
  import { dirname } from 'node:path';
16
2
  import { getPackage } from '../package.js';
17
- import { getPresetterRC } from './presetterRC.js';
18
3
  /**
19
4
  * get context about the target project and any customization in .presetterrc
5
+ * @param cwd the current working directory
20
6
  * @returns context about the target project and any customization in .presetterrc
21
7
  */
22
- export async function getContext() {
23
- const { json, path } = await getPackage();
8
+ export async function getContext(cwd) {
9
+ const { json, path } = await getPackage(cwd);
24
10
  const root = dirname(path);
25
- const target = { name: json.name, root, package: json };
26
- const custom = await getPresetterRC(root);
27
- return {
28
- target,
29
- custom,
30
- };
11
+ return { root, package: json };
31
12
  }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0M7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVO0lBQzlCLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxVQUFVLEVBQUUsQ0FBQztJQUMxQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3pELE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTFDLE9BQU87UUFDTCxNQUFNO1FBQ04sTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDIn0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFJeEM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsVUFBVSxDQUFDLEdBQVk7SUFDM0MsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFM0IsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDakMsQ0FBQyJ9
@@ -1,4 +1,7 @@
1
+ export * from './bootstrap.js';
2
+ export * from './config/index.js';
3
+ export * from './context.js';
4
+ export * from './project.js';
5
+ export * from './resolution/index.js';
1
6
  export * from './scripts.js';
2
- export * from './setup.js';
3
- export * from './unset.js';
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/preset/index.ts"],"names":[],"mappings":"AA0BA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/preset/index.ts"],"names":[],"mappings":"AAYA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
@@ -1,28 +1,17 @@
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
- */
1
+ /* v8 ignore start */
15
2
  // NOTE on resolution steps
16
3
  // STEP 1 build a dependency tree of presets
17
4
  // STEP 2 resolve variables from the tree
18
5
  //
19
6
  // for template resolution
20
7
  // STEP 3 resolve template content from resolved variables
21
- // STEP 4 resolve noSimlinks from resolved variables
22
8
  //
23
9
  // for script resolution
24
10
  // STEP 3 resolve script content from resolved variables
11
+ export * from './bootstrap.js';
12
+ export * from './config/index.js';
13
+ export * from './context.js';
14
+ export * from './project.js';
15
+ export * from './resolution/index.js';
25
16
  export * from './scripts.js';
26
- export * from './setup.js';
27
- export * from './unset.js';
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCwyQkFBMkI7QUFDM0IsNENBQTRDO0FBQzVDLHlDQUF5QztBQUN6QyxFQUFFO0FBQ0YsMEJBQTBCO0FBQzFCLDBEQUEwRDtBQUMxRCxvREFBb0Q7QUFDcEQsRUFBRTtBQUNGLHdCQUF3QjtBQUN4Qix3REFBd0Q7QUFFeEQsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUMifQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFxQjtBQUVyQiwyQkFBMkI7QUFDM0IsNENBQTRDO0FBQzVDLHlDQUF5QztBQUN6QyxFQUFFO0FBQ0YsMEJBQTBCO0FBQzFCLDBEQUEwRDtBQUMxRCxFQUFFO0FBQ0Ysd0JBQXdCO0FBQ3hCLHdEQUF3RDtBQUV4RCxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFdBQVcsQ0FBQyJ9
@@ -0,0 +1,8 @@
1
+ import type { PresetContext, PresetNode } from 'presetter-types';
2
+ /**
3
+ * resolve the project preset
4
+ * @param context context about the target project and customization in .presetterrc
5
+ * @returns assets from the preset
6
+ */
7
+ export declare function resolveProjectPreset(context: PresetContext): Promise<PresetNode>;
8
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../source/preset/project.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEjE;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,UAAU,CAAC,CAkBrB"}
@@ -0,0 +1,28 @@
1
+ import { xception } from 'xception';
2
+ import debug from '../debugger.js';
3
+ import { resolvePresetterConfig } from './config/index.js';
4
+ import { resolvePreset } from './resolution/index.js';
5
+ /**
6
+ * resolve the project preset
7
+ * @param context context about the target project and customization in .presetterrc
8
+ * @returns assets from the preset
9
+ */
10
+ export async function resolveProjectPreset(context) {
11
+ try {
12
+ debug(`resolving preset at ${context.root}`);
13
+ // get the preset
14
+ const preset = await resolvePresetterConfig(context.root);
15
+ debug(`preset loaded, resolving nodes...`);
16
+ return await resolvePreset(preset, context);
17
+ }
18
+ catch (cause) {
19
+ throw xception(cause, {
20
+ meta: { project: context.package.name, root: context.root },
21
+ });
22
+ /* v8 ignore start */
23
+ }
24
+ finally {
25
+ debug(`all nodes resolved`);
26
+ }
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvcHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXBDLE9BQU8sS0FBSyxNQUFNLGFBQWEsQ0FBQztBQUVoQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUk3Qzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxvQkFBb0IsQ0FDeEMsT0FBc0I7SUFFdEIsSUFBSSxDQUFDO1FBQ0gsS0FBSyxDQUFDLHVCQUF1QixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU3QyxpQkFBaUI7UUFDakIsTUFBTSxNQUFNLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUQsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFFM0MsT0FBTyxNQUFNLGFBQWEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDcEIsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFO1NBQzVELENBQUMsQ0FBQztRQUNILHFCQUFxQjtJQUN2QixDQUFDO1lBQVMsQ0FBQztRQUNULEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzlCLENBQUM7QUFDSCxDQUFDIn0=
@@ -0,0 +1,31 @@
1
+ import type { PresetContentContext, PresetContext, PresetNode, ResolvedPresetAsset, ResolvedPresetAssets, Variables } from 'presetter-types';
2
+ /**
3
+ * lists all asset names in a preset node
4
+ * @param node the preset node
5
+ * @param context the context in which the node is being resolved
6
+ * @returns an array of asset names
7
+ */
8
+ export declare function listAssetNames(node: PresetNode, context: PresetContentContext): string[];
9
+ /**
10
+ * resolves all assets for a given preset node
11
+ * @param node the preset node
12
+ * @param context the context in which the node is being resolved
13
+ * @returns a promise that resolves to the RESOLVED assets
14
+ */
15
+ export declare function resolveAssets(node: PresetNode, context: PresetContext): Promise<ResolvedPresetAssets>;
16
+ /**
17
+ * resolves a specific asset for a given preset node
18
+ * @param _ collection of arguments
19
+ * @param _.name the name of the asset
20
+ * @param _.node the preset node
21
+ * @param _.context the context in which the node is being resolved
22
+ * @param _.variables the variables to use during resolution
23
+ * @returns a promise that resolves to the RESOLVED asset
24
+ */
25
+ export declare function resolveAsset(_: {
26
+ name: string;
27
+ node: PresetNode;
28
+ context: PresetContext;
29
+ variables: Variables;
30
+ }): Promise<ResolvedPresetAsset | null | undefined>;
31
+ //# sourceMappingURL=asset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../../source/preset/resolution/asset.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAEzB;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,EAAE,CAaV;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAmB/B;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;CACtB,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC,CAoClD"}
@@ -0,0 +1,78 @@
1
+ import { prefixDisplay } from '../../utilities/index.js';
2
+ import { resolveNodeContent } from './content.js';
3
+ import Debug from './debugger.js';
4
+ import { resolveObject } from './object.js';
5
+ import { resolveVariables } from './variable.js';
6
+ /**
7
+ * lists all asset names in a preset node
8
+ * @param node the preset node
9
+ * @param context the context in which the node is being resolved
10
+ * @returns an array of asset names
11
+ */
12
+ export function listAssetNames(node, context) {
13
+ const assetsResolver = node.definition.assets ?? {};
14
+ const assets = assetsResolver instanceof Function
15
+ ? assetsResolver(context)
16
+ : assetsResolver;
17
+ return [
18
+ ...new Set([
19
+ ...Object.keys(assets),
20
+ ...node.nodes.flatMap((node) => listAssetNames(node, context)),
21
+ ]),
22
+ ];
23
+ }
24
+ /**
25
+ * resolves all assets for a given preset node
26
+ * @param node the preset node
27
+ * @param context the context in which the node is being resolved
28
+ * @returns a promise that resolves to the RESOLVED assets
29
+ */
30
+ export async function resolveAssets(node, context) {
31
+ const debug = Debug.extend('ASSETS').extend(node.definition.id);
32
+ // resolve variables for the node
33
+ const variables = await resolveVariables(node, context);
34
+ // list all asset names in the node
35
+ const names = listAssetNames(node, { ...context, variables });
36
+ debug('ASSET FILES\n%O', names);
37
+ // resolve each asset and return as an object
38
+ return Object.fromEntries(await Promise.all(names.map(async (name) => [
39
+ name,
40
+ await resolveAsset({ name, node, context, variables }),
41
+ ])));
42
+ }
43
+ /**
44
+ * resolves a specific asset for a given preset node
45
+ * @param _ collection of arguments
46
+ * @param _.name the name of the asset
47
+ * @param _.node the preset node
48
+ * @param _.context the context in which the node is being resolved
49
+ * @param _.variables the variables to use during resolution
50
+ * @returns a promise that resolves to the RESOLVED asset
51
+ */
52
+ export async function resolveAsset(_) {
53
+ const { name, node, context, variables } = _;
54
+ const debug = Debug.extend(name).extend(node.definition.id);
55
+ debug(`RESOLVING ASSET ${name} (INITIAL PASS)`);
56
+ // resolve the initial value of the asset
57
+ const initial = await resolveNodeContent({
58
+ name,
59
+ node,
60
+ context,
61
+ variables,
62
+ select: ({ assets }) => resolveObject(assets, { ...context, variables })?.[name],
63
+ });
64
+ debug(`RESOLVED ASSET ${name} (INITIAL PASS)\n${prefixDisplay('└─ ', initial)}`);
65
+ debug(`RESOLVING ASSET ${name} (FINAL PASS)`);
66
+ // resolve the final value of the asset, considering overrides
67
+ const final = await resolveNodeContent({
68
+ name,
69
+ node,
70
+ context,
71
+ initial,
72
+ variables,
73
+ select: ({ override }) => resolveObject(override?.assets, { ...context, variables })?.[name],
74
+ });
75
+ debug(`RESOLVED ASSET ${name} (FINAL PASS)\n${prefixDisplay('└─ ', final)}`);
76
+ return final;
77
+ }
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvcHJlc2V0L3Jlc29sdXRpb24vYXNzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMvQyxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUM7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFXOUM7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUM1QixJQUFnQixFQUNoQixPQUE2QjtJQUU3QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDcEQsTUFBTSxNQUFNLEdBQ1YsY0FBYyxZQUFZLFFBQVE7UUFDaEMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7UUFDekIsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUVyQixPQUFPO1FBQ0wsR0FBRyxJQUFJLEdBQUcsQ0FBQztZQUNULEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDdEIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMvRCxDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUNqQyxJQUFnQixFQUNoQixPQUFzQjtJQUV0QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRWhFLGlDQUFpQztJQUNqQyxNQUFNLFNBQVMsR0FBRyxNQUFNLGdCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUV4RCxtQ0FBbUM7SUFDbkMsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUQsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRWhDLDZDQUE2QztJQUM3QyxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQ3ZCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3hCLElBQUk7UUFDSixNQUFNLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO0tBQ3ZELENBQUMsQ0FDSCxDQUNzQixDQUFDO0FBQzVCLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUFDLENBS2xDO0lBQ0MsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTVELEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDO0lBRWhELHlDQUF5QztJQUN6QyxNQUFNLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO1FBQ3ZDLElBQUk7UUFDSixJQUFJO1FBQ0osT0FBTztRQUNQLFNBQVM7UUFDVCxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FDckIsYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7S0FDM0QsQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUNILGtCQUFrQixJQUFJLG9CQUFvQixhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQzFFLENBQUM7SUFFRixLQUFLLENBQUMsbUJBQW1CLElBQUksZUFBZSxDQUFDLENBQUM7SUFFOUMsOERBQThEO0lBQzlELE1BQU0sS0FBSyxHQUFHLE1BQU0sa0JBQWtCLENBQXNCO1FBQzFELElBQUk7UUFDSixJQUFJO1FBQ0osT0FBTztRQUNQLE9BQU87UUFDUCxTQUFTO1FBQ1QsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQ3ZCLGFBQWEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztLQUNyRSxDQUFDLENBQUM7SUFFSCxLQUFLLENBQUMsa0JBQWtCLElBQUksa0JBQWtCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTdFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyJ9
@@ -0,0 +1,37 @@
1
+ import type { PresetContent, PresetContext, PresetDefinition, PresetNode, Variables } from 'presetter-types';
2
+ /**
3
+ * loads a potentially dynamic content
4
+ * @param _ collection of arguments
5
+ * @param _.content content to be loaded
6
+ * @param _.current the current content
7
+ * @param _.variables the variables to use during resolution
8
+ * @param _.context the context in which the content is being resolved
9
+ * @returns a promise that resolves to the RESOLVED content
10
+ */
11
+ export declare function resolveContent<T>(_: {
12
+ content?: PresetContent<T>;
13
+ current?: T | null;
14
+ variables?: Variables;
15
+ context: PresetContext;
16
+ }): Promise<T | null | undefined>;
17
+ /**
18
+ * resolves the content of a node within a preset
19
+ * @template T the type of the content to be resolved
20
+ * @param _ collection of arguments
21
+ * @param _.name the name of the preset being resolved
22
+ * @param _.node the node to resolve
23
+ * @param _.context the context in which the node is being resolved
24
+ * @param _.initial an optional initial value to start the resolution with
25
+ * @param _.variables an optional record of variables to use during resolution
26
+ * @param _.select a function to select the content definition from the preset definition
27
+ * @returns a promise that resolves to the RESOLVED content of the node, which can be of type `T`, `null`, or `undefined`
28
+ */
29
+ export declare function resolveNodeContent<T>(_: {
30
+ name: string;
31
+ node: PresetNode;
32
+ context: PresetContext;
33
+ initial?: T | null;
34
+ variables?: Variables;
35
+ select: (definition: PresetDefinition) => PresetContent<T> | undefined;
36
+ }): Promise<T | null | undefined>;
37
+ //# sourceMappingURL=content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../source/preset/resolution/content.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,SAAS,EACV,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;IACzC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;CACxB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAchC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACxE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CA8BhC"}
@@ -0,0 +1,55 @@
1
+ import { loadFile } from '../../io.js';
2
+ import { merge } from '../../template/index.js';
3
+ import { prefixDisplay } from '../../utilities/index.js';
4
+ import Debug from './debugger.js';
5
+ /**
6
+ * loads a potentially dynamic content
7
+ * @param _ collection of arguments
8
+ * @param _.content content to be loaded
9
+ * @param _.current the current content
10
+ * @param _.variables the variables to use during resolution
11
+ * @param _.context the context in which the content is being resolved
12
+ * @returns a promise that resolves to the RESOLVED content
13
+ */
14
+ export async function resolveContent(_) {
15
+ const { content, current, variables = {}, context } = _;
16
+ // if content is a function, call it with the current content and context
17
+ if (content instanceof Function) {
18
+ return content(current, { ...context, variables });
19
+ }
20
+ // if content is a string, load the file content
21
+ const resolvedContent = typeof content === 'string' ? loadFile(content, variables) : content;
22
+ // merge the current content with the RESOLVED content
23
+ return merge(current, resolvedContent);
24
+ }
25
+ /**
26
+ * resolves the content of a node within a preset
27
+ * @template T the type of the content to be resolved
28
+ * @param _ collection of arguments
29
+ * @param _.name the name of the preset being resolved
30
+ * @param _.node the node to resolve
31
+ * @param _.context the context in which the node is being resolved
32
+ * @param _.initial an optional initial value to start the resolution with
33
+ * @param _.variables an optional record of variables to use during resolution
34
+ * @param _.select a function to select the content definition from the preset definition
35
+ * @returns a promise that resolves to the RESOLVED content of the node, which can be of type `T`, `null`, or `undefined`
36
+ */
37
+ export async function resolveNodeContent(_) {
38
+ const { name, node, context, initial, variables, select } = _;
39
+ const { definition, nodes } = node;
40
+ const debug = Debug.extend(name).extend(node.definition.id);
41
+ debug(`INCOMING (${name})\n${prefixDisplay('└─ ', initial)}`);
42
+ const current = await nodes.reduce(async (merged, node) => {
43
+ const initial = await merged;
44
+ const next = await resolveNodeContent({ ..._, node, initial });
45
+ return merge(initial, next);
46
+ }, initial);
47
+ // select the content from the definition
48
+ const content = select(definition);
49
+ debug(`COMBINING (${name})\n${prefixDisplay('└─ ', current)}\n${prefixDisplay('└─ ', content)}`);
50
+ // resolve dynamic content
51
+ const out = await resolveContent({ content, current, variables, context });
52
+ debug(`RETURNING (${name})\n${prefixDisplay('└─ ', out)}`);
53
+ return out;
54
+ }
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9wcmVzZXQvcmVzb2x1dGlvbi9jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUM7QUFVL0I7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FBSSxDQUt2QztJQUNDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRXhELHlFQUF5RTtJQUN6RSxJQUFJLE9BQU8sWUFBWSxRQUFRLEVBQUUsQ0FBQztRQUNoQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsTUFBTSxlQUFlLEdBQ25CLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBRTlFLHNEQUFzRDtJQUN0RCxPQUFPLEtBQUssQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUF5QixDQUFDO0FBQ2pFLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0JBQWtCLENBQUksQ0FPM0M7SUFDQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUQsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDbkMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUU1RCxLQUFLLENBQUMsYUFBYSxJQUFJLE1BQU0sYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFOUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUNoQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUUvRCxPQUFPLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUF5QixDQUFDO0lBQ3RELENBQUMsRUFDRCxPQUF3QyxDQUN6QyxDQUFDO0lBRUYseUNBQXlDO0lBQ3pDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVuQyxLQUFLLENBQ0gsY0FBYyxJQUFJLE1BQU0sYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQzFGLENBQUM7SUFFRiwwQkFBMEI7SUFDMUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxjQUFjLENBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRTlFLEtBQUssQ0FBQyxjQUFjLElBQUksTUFBTSxhQUFhLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUzRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMifQ==
@@ -0,0 +1,3 @@
1
+ declare const _default: import("debug").Debugger;
2
+ export default _default;
3
+ //# sourceMappingURL=debugger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugger.d.ts","sourceRoot":"","sources":["../../../source/preset/resolution/debugger.ts"],"names":[],"mappings":";AAEA,wBAA0C"}
@@ -0,0 +1,3 @@
1
+ import Debug from '../../debugger.js';
2
+ export default Debug.extend('resolution');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWdnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvcHJlc2V0L3Jlc29sdXRpb24vZGVidWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsZUFBZSxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDIn0=
@@ -0,0 +1,6 @@
1
+ export * from './asset.js';
2
+ export * from './object.js';
3
+ export * from './preset.js';
4
+ export * from './script.js';
5
+ export * from './variable.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/preset/resolution/index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ /* v8 ignore start */
2
+ export * from './asset.js';
3
+ export * from './object.js';
4
+ export * from './preset.js';
5
+ export * from './script.js';
6
+ export * from './variable.js';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvcHJlc2V0L3Jlc29sdXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXFCO0FBRXJCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDIn0=
@@ -0,0 +1,9 @@
1
+ import type { PresetContentContext, PresetObject } from 'presetter-types';
2
+ /**
3
+ * resolve an object
4
+ * @param object the object to resolve
5
+ * @param context the context in which the object is being resolved
6
+ * @returns the resolved object
7
+ */
8
+ export declare function resolveObject<T>(object: PresetObject<T>, context: PresetContentContext): T;
9
+ //# sourceMappingURL=object.d.ts.map