presetter 3.5.4 → 4.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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -3
  3. package/bin/cli.js +5 -0
  4. package/bin/run-p.js +6 -0
  5. package/bin/run-s.js +6 -0
  6. package/bin/{run → run.js} +4 -2
  7. package/lib/content.d.ts +1 -1
  8. package/lib/content.js +58 -66
  9. package/lib/directive.d.ts +3 -3
  10. package/lib/directive.js +12 -17
  11. package/lib/error.js +2 -6
  12. package/lib/executable/entry.d.ts +1 -1
  13. package/lib/executable/entry.js +57 -24
  14. package/lib/executable/error.js +12 -19
  15. package/lib/executable/index.js +5 -6
  16. package/lib/index.d.ts +6 -6
  17. package/lib/index.js +7 -23
  18. package/lib/io.d.ts +7 -4
  19. package/lib/io.js +53 -57
  20. package/lib/package.d.ts +3 -5
  21. package/lib/package.js +18 -31
  22. package/lib/preset/content.d.ts +6 -0
  23. package/lib/preset/content.js +13 -0
  24. package/lib/preset/context.d.ts +2 -0
  25. package/lib/preset/context.js +14 -0
  26. package/lib/preset/graph.d.ts +4 -0
  27. package/lib/preset/graph.js +20 -0
  28. package/lib/preset/index.d.ts +3 -0
  29. package/lib/preset/index.js +4 -0
  30. package/lib/preset/mapping.d.ts +2 -0
  31. package/lib/preset/mapping.js +15 -0
  32. package/lib/preset/presetterRC.d.ts +5 -0
  33. package/lib/preset/presetterRC.js +38 -0
  34. package/lib/preset/scripts.d.ts +1 -0
  35. package/lib/preset/scripts.js +10 -0
  36. package/lib/preset/setup.d.ts +6 -0
  37. package/lib/preset/setup.js +43 -0
  38. package/lib/preset/unset.d.ts +1 -0
  39. package/lib/preset/unset.js +14 -0
  40. package/lib/resolution.d.ts +1 -1
  41. package/lib/resolution.js +11 -17
  42. package/lib/run.d.ts +5 -1
  43. package/lib/run.js +68 -74
  44. package/lib/scripts.d.ts +3 -3
  45. package/lib/scripts.js +13 -15
  46. package/lib/task.d.ts +8 -0
  47. package/lib/task.js +37 -0
  48. package/lib/template.d.ts +6 -6
  49. package/lib/template.js +25 -35
  50. package/lib/utilities/index.d.ts +1 -0
  51. package/lib/utilities/index.js +2 -0
  52. package/lib/utilities/mapValues.d.ts +1 -0
  53. package/lib/utilities/mapValues.js +4 -0
  54. package/package.json +35 -43
  55. package/bin/cli +0 -3
  56. package/lib/preset.d.ts +0 -15
  57. package/lib/preset.js +0 -188
  58. package/lib/types.d.ts +0 -73
  59. package/lib/types.js +0 -3
@@ -1,6 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const entry_1 = require("./entry");
4
- const error_1 = require("./error");
5
- (0, entry_1.entry)().catch(error_1.handleError);
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvZXhlY3V0YWJsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlCQSxtQ0FBZ0M7QUFDaEMsbUNBQXNDO0FBRXRDLElBQUEsYUFBSyxHQUFFLENBQUMsS0FBSyxDQUFDLG1CQUFXLENBQUMsQ0FBQyJ9
1
+ import { entry } from './entry.js';
2
+ import { handleError } from './error.js';
3
+ const [, , ...args] = process.argv;
4
+ entry(args).catch(handleError);
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvZXhlY3V0YWJsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxFQUFFLEFBQUQsRUFBRyxHQUFHLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFFbkMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyJ9
package/lib/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export * from './content';
2
- export * from './directive';
3
- export * from './io';
4
- export * from './resolution';
5
- export * from './template';
6
- export * from './types';
1
+ export * from 'presetter-types';
2
+ export * from './content.js';
3
+ export * from './directive.js';
4
+ export * from './io.js';
5
+ export * from './resolution.js';
6
+ export * from './template.js';
package/lib/index.js CHANGED
@@ -1,23 +1,7 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./content"), exports);
18
- __exportStar(require("./directive"), exports);
19
- __exportStar(require("./io"), exports);
20
- __exportStar(require("./resolution"), exports);
21
- __exportStar(require("./template"), exports);
22
- __exportStar(require("./types"), exports);
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSwyQ0FBeUI7QUFDekIsNkNBQTJCO0FBQzNCLHNDQUFvQjtBQUNwQiw4Q0FBNEI7QUFDNUIsNENBQTBCO0FBRTFCLHlDQUF1QiJ9
1
+ export * from 'presetter-types';
2
+ export * from './content.js';
3
+ export * from './directive.js';
4
+ export * from './io.js';
5
+ export * from './resolution.js';
6
+ export * from './template.js';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLGNBQWMsaUJBQWlCLENBQUM7QUFFaEMsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxNQUFNLENBQUM7QUFDckIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxZQUFZLENBQUMifQ==
package/lib/io.d.ts CHANGED
@@ -1,7 +1,10 @@
1
- import type { Template } from './types';
1
+ import type { Template } from 'presetter-types';
2
+ export interface IOOptions {
3
+ force?: boolean;
4
+ }
2
5
  export declare function loadFile(path: string, defaultFormat?: 'json' | 'yaml'): Record<string, unknown>;
3
6
  export declare function loadFile(path: string, defaultFormat?: 'text'): string;
4
7
  export declare function serializeContent(destination: string, content: Template): string;
5
- export declare function writeFiles(root: string, config: Record<string, Template>, pathMap: Record<string, string>): void;
6
- export declare function linkFiles(root: string, configurationLink: Record<string, string>): void;
7
- export declare function unlinkFiles(root: string, configurationLink: Record<string, string>): void;
8
+ export declare function writeFiles(root: string, config: Record<string, Template>, pathMap: Record<string, string>, options?: IOOptions): void;
9
+ export declare function linkFiles(root: string, configurationLink: Record<string, string>, options?: IOOptions): void;
10
+ export declare function unlinkFiles(root: string, configurationLink: Record<string, string>, options?: IOOptions): void;
package/lib/io.js CHANGED
@@ -1,94 +1,90 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unlinkFiles = exports.linkFiles = exports.writeFiles = exports.serializeContent = exports.loadFile = void 0;
4
- const console_1 = require("console");
5
- const fs_1 = require("fs");
6
- const js_yaml_1 = require("js-yaml");
7
- const path_1 = require("path");
1
+ import { info } from 'node:console';
2
+ import { lstatSync, mkdirSync, readFileSync, readlinkSync, symlinkSync, unlinkSync, writeFileSync, } from 'node:fs';
3
+ import { basename, dirname, extname, relative, resolve } from 'node:path';
4
+ import { dump, load } from 'js-yaml';
8
5
  const INDENT = 2;
9
- function loadFile(path, defaultFormat = 'text') {
10
- const content = (0, fs_1.readFileSync)(path).toString();
11
- switch ((0, path_1.extname)(path) || `.${defaultFormat}`) {
6
+ export function loadFile(path, defaultFormat = 'text') {
7
+ const content = readFileSync(path).toString();
8
+ switch (extname(path) || `.${defaultFormat}`) {
12
9
  case '.json':
13
10
  return JSON.parse(content);
14
11
  case '.yaml':
15
12
  case '.yml':
16
- return (0, js_yaml_1.load)(content);
13
+ return load(content);
17
14
  default:
18
15
  return content;
19
16
  }
20
17
  }
21
- exports.loadFile = loadFile;
22
- function serializeContent(destination, content) {
18
+ export function serializeContent(destination, content) {
23
19
  if (typeof content === 'string') {
24
20
  return content;
25
21
  }
26
- switch ((0, path_1.extname)(destination)) {
22
+ switch (extname(destination)) {
27
23
  case '.yaml':
28
24
  case '.yml':
29
- return (0, js_yaml_1.dump)(content);
25
+ return dump(content);
30
26
  case '.json':
31
27
  default:
32
28
  return JSON.stringify(content, null, INDENT);
33
29
  }
34
30
  }
35
- exports.serializeContent = serializeContent;
36
- function writeFiles(root, config, pathMap) {
31
+ export function writeFiles(root, config, pathMap, options) {
32
+ const { force = false } = { ...options };
37
33
  for (const [key, content] of Object.entries(config)) {
38
34
  const destination = pathMap[key];
39
- if (!(0, fs_1.existsSync)(destination) ||
40
- destination !== (0, path_1.resolve)(root, key)) {
41
- (0, console_1.info)(`Generating ${key}`);
42
- (0, fs_1.mkdirSync)((0, path_1.dirname)(destination), { recursive: true });
43
- (0, fs_1.writeFileSync)(destination, serializeContent(destination, content));
35
+ if (force ||
36
+ !lstatSync(destination, { throwIfNoEntry: false }) ||
37
+ destination !== resolve(root, key)) {
38
+ info(`Generating ${key}`);
39
+ ensureFile(destination, serializeContent(destination, content));
44
40
  }
45
41
  else {
46
- (0, console_1.info)(`Skipping ${key}`);
42
+ info(`Skipping ${key}`);
47
43
  }
48
44
  }
49
45
  }
50
- exports.writeFiles = writeFiles;
51
- function linkFiles(root, configurationLink) {
46
+ export function linkFiles(root, configurationLink, options) {
47
+ const { force = false } = { ...options };
52
48
  for (const [file, destination] of Object.entries(configurationLink)) {
53
- const link = (0, path_1.resolve)(root, file);
54
- const to = (0, path_1.relative)((0, path_1.dirname)(link), destination);
55
- if (!linkExists(link) &&
56
- !(0, fs_1.existsSync)(link) &&
57
- to !== (0, path_1.basename)(to)) {
58
- (0, console_1.info)(`Linking ${(0, path_1.relative)(root, link)} => ${to}`);
59
- (0, fs_1.mkdirSync)((0, path_1.dirname)(link), { recursive: true });
60
- (0, fs_1.symlinkSync)(to, link);
61
- }
62
- else if (to !== (0, path_1.basename)(to)) {
63
- (0, console_1.info)(`Skipping ${(0, path_1.relative)(root, link)} => ${to}`);
49
+ const path = resolve(root, file);
50
+ const to = relative(dirname(path), destination);
51
+ const pathStat = lstatSync(path, { throwIfNoEntry: false });
52
+ if (to !== basename(to) &&
53
+ (!pathStat || pathStat.isSymbolicLink() || force)) {
54
+ info(`Linking ${relative(root, path)} => ${to}`);
55
+ ensureLink(path, to);
64
56
  }
65
57
  }
66
58
  }
67
- exports.linkFiles = linkFiles;
68
- function unlinkFiles(root, configurationLink) {
59
+ export function unlinkFiles(root, configurationLink, options) {
60
+ const { force = false } = { ...options };
69
61
  for (const [name, destination] of Object.entries(configurationLink)) {
70
- try {
71
- const link = (0, fs_1.readlinkSync)((0, path_1.resolve)(root, name));
72
- const to = (0, path_1.relative)(root, destination);
73
- if (link === to) {
74
- (0, console_1.info)(`Removing ${name}`);
75
- (0, fs_1.unlinkSync)((0, path_1.resolve)(root, name));
76
- continue;
77
- }
78
- }
79
- catch (_a) {
62
+ const link = resolveLink(resolve(root, name));
63
+ const to = relative(root, destination);
64
+ if (link === to || force) {
65
+ info(`Removing ${name}`);
66
+ unlinkSync(resolve(root, name));
67
+ continue;
80
68
  }
81
- (0, console_1.info)(`Skipping ${name}`);
69
+ info(`Skipping ${name}`);
82
70
  }
83
71
  }
84
- exports.unlinkFiles = unlinkFiles;
85
- function linkExists(path) {
86
- try {
87
- (0, fs_1.lstatSync)(path);
88
- return true;
72
+ function resolveLink(path) {
73
+ const pathStat = lstatSync(path, { throwIfNoEntry: false });
74
+ return pathStat?.isSymbolicLink() ? readlinkSync(path) : null;
75
+ }
76
+ function ensureLink(path, to) {
77
+ mkdirSync(dirname(path), { recursive: true });
78
+ if (lstatSync(path, { throwIfNoEntry: false })) {
79
+ unlinkSync(path);
89
80
  }
90
- catch (_a) {
91
- return false;
81
+ symlinkSync(to, path);
82
+ }
83
+ function ensureFile(path, content) {
84
+ mkdirSync(dirname(path), { recursive: true });
85
+ if (lstatSync(path, { throwIfNoEntry: false })) {
86
+ unlinkSync(path);
92
87
  }
88
+ writeFileSync(path, content);
93
89
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvaW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZUEscUNBQStCO0FBQy9CLDJCQVNZO0FBQ1oscUNBQXFDO0FBQ3JDLCtCQUFxRTtBQUtyRSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFhakIsU0FBZ0IsUUFBUSxDQUN0QixJQUFZLEVBQ1osZ0JBQTBDLE1BQU07SUFFaEQsTUFBTSxPQUFPLEdBQUcsSUFBQSxpQkFBWSxFQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRzlDLFFBQVEsSUFBQSxjQUFPLEVBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxhQUFhLEVBQUUsRUFBRTtRQUM1QyxLQUFLLE9BQU87WUFDVixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUE0QixDQUFDO1FBQ3hELEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxNQUFNO1lBQ1QsT0FBTyxJQUFBLGNBQUksRUFBQyxPQUFPLENBQTRCLENBQUM7UUFDbEQ7WUFDRSxPQUFPLE9BQU8sQ0FBQztLQUNsQjtBQUNILENBQUM7QUFoQkQsNEJBZ0JDO0FBUUQsU0FBZ0IsZ0JBQWdCLENBQzlCLFdBQW1CLEVBQ25CLE9BQWlCO0lBRWpCLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO1FBQy9CLE9BQU8sT0FBTyxDQUFDO0tBQ2hCO0lBRUQsUUFBUSxJQUFBLGNBQU8sRUFBQyxXQUFXLENBQUMsRUFBRTtRQUM1QixLQUFLLE9BQU8sQ0FBQztRQUNiLEtBQUssTUFBTTtZQUNULE9BQU8sSUFBQSxjQUFJLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsS0FBSyxPQUFPLENBQUM7UUFDYjtZQUNFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ2hEO0FBQ0gsQ0FBQztBQWhCRCw0Q0FnQkM7QUFRRCxTQUFnQixV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
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvaW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLFdBQVcsRUFDWCxVQUFVLEVBQ1YsYUFBYSxHQUNkLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBV3JDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQztBQWFqQixNQUFNLFVBQVUsUUFBUSxDQUN0QixJQUFZLEVBQ1osZ0JBQTBDLE1BQU07SUFFaEQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRzlDLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksYUFBYSxFQUFFLEVBQUU7UUFDNUMsS0FBSyxPQUFPO1lBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUN4RCxLQUFLLE9BQU8sQ0FBQztRQUNiLEtBQUssTUFBTTtZQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUNsRDtZQUNFLE9BQU8sT0FBTyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQztBQVFELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsV0FBbUIsRUFDbkIsT0FBaUI7SUFFakIsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7UUFDL0IsT0FBTyxPQUFPLENBQUM7S0FDaEI7SUFFRCxRQUFRLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUM1QixLQUFLLE9B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
package/lib/package.d.ts CHANGED
@@ -1,9 +1,7 @@
1
- import type { NormalizedPackageJson } from 'read-pkg-up';
2
- export declare type Package = {
1
+ import type { PackageJson } from 'type-fest';
2
+ export type Package = {
3
3
  path: string;
4
- json: NormalizedPackageJson & {
5
- scripts: Record<string, string>;
6
- };
4
+ json: PackageJson;
7
5
  };
8
6
  export declare function arePeerPackagesAutoInstalled(): boolean;
9
7
  export declare function getPackage(root?: string): Promise<Package>;
package/lib/package.js CHANGED
@@ -1,21 +1,13 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.reifyDependencies = exports.getPackage = exports.arePeerPackagesAutoInstalled = void 0;
7
- const arborist_1 = require("@npmcli/arborist");
8
- const config_1 = __importDefault(require("@npmcli/config"));
9
- const lodash_1 = require("lodash");
10
- const os_1 = require("os");
11
- const path_1 = require("path");
12
- const read_pkg_up_1 = __importDefault(require("read-pkg-up"));
1
+ import { homedir } from 'node:os';
2
+ import { resolve } from 'node:path';
3
+ import { Arborist } from '@npmcli/arborist';
4
+ import Config from '@npmcli/config';
5
+ import { readPackageUp } from 'read-pkg-up';
13
6
  const NPM_VERSION_FOR_PEER_INSTALLATION = 7;
14
- function arePeerPackagesAutoInstalled() {
15
- var _a, _b, _c, _d;
16
- const [clientID] = (_b = (_a = process.env['npm_config_user_agent']) === null || _a === void 0 ? void 0 : _a.split(' ')) !== null && _b !== void 0 ? _b : [];
17
- const [name, version] = (_c = clientID === null || clientID === void 0 ? void 0 : clientID.split('/')) !== null && _c !== void 0 ? _c : [];
18
- const [major] = (_d = version === null || version === void 0 ? void 0 : version.split('.')) !== null && _d !== void 0 ? _d : [];
7
+ export function arePeerPackagesAutoInstalled() {
8
+ const [clientID] = process.env['npm_config_user_agent']?.split(' ') ?? [];
9
+ const [name, version] = clientID?.split('/') ?? [];
10
+ const [major] = version?.split('.') ?? [];
19
11
  const isNPM = name === 'npm';
20
12
  const isNonNPM = name !== 'npm';
21
13
  return (isNonNPM ||
@@ -23,24 +15,20 @@ function arePeerPackagesAutoInstalled() {
23
15
  major !== undefined &&
24
16
  parseInt(major) >= NPM_VERSION_FOR_PEER_INSTALLATION));
25
17
  }
26
- exports.arePeerPackagesAutoInstalled = arePeerPackagesAutoInstalled;
27
- async function getPackage(root) {
28
- const detail = await (0, read_pkg_up_1.default)({ cwd: root, normalize: true });
18
+ export async function getPackage(root) {
19
+ const detail = await readPackageUp({ cwd: root, normalize: true });
29
20
  if (!detail) {
30
21
  throw new Error("failed to find target's package.json");
31
22
  }
32
23
  const path = detail.path;
33
- const json = (0, lodash_1.defaultsDeep)(detail.packageJson, {
34
- scripts: {},
35
- });
24
+ const json = detail.packageJson;
36
25
  return { path, json };
37
26
  }
38
- exports.getPackage = getPackage;
39
- async function reifyDependencies(args) {
40
- const { root, add = [], remove = [], saveAs = 'prod', lockFile = false, } = Object.assign({}, args);
27
+ export async function reifyDependencies(args) {
28
+ const { root, add = [], remove = [], saveAs = 'prod', lockFile = false, } = { ...args };
41
29
  const config = await getNPMConfig();
42
30
  const workspacesEnabled = arePeerPackagesAutoInstalled();
43
- const arborist = new arborist_1.Arborist(Object.assign({ path: root, workspacesEnabled }, config));
31
+ const arborist = new Arborist({ path: root, workspacesEnabled, ...config });
44
32
  const actualTree = await arborist.reify({
45
33
  add,
46
34
  rm: remove,
@@ -53,11 +41,10 @@ async function reifyDependencies(args) {
53
41
  spec: edge.spec,
54
42
  }));
55
43
  }
56
- exports.reifyDependencies = reifyDependencies;
57
44
  async function getNPMConfig() {
58
- const config = new config_1.default({
45
+ const config = new Config({
59
46
  definitions: {
60
- userconfig: { default: (0, path_1.resolve)((0, os_1.homedir)(), '.npmrc'), type: String },
47
+ userconfig: { default: resolve(homedir(), '.npmrc'), type: String },
61
48
  registry: { default: 'https://registry.npmjs.org', type: String },
62
49
  },
63
50
  npmPath: '.',
@@ -68,4 +55,4 @@ async function getNPMConfig() {
68
55
  await config.load();
69
56
  return config.flat;
70
57
  }
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9wYWNrYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQWVBLCtDQUE0QztBQUM1Qyw0REFBb0M7QUFDcEMsbUNBQXNDO0FBQ3RDLDJCQUE2QjtBQUM3QiwrQkFBK0I7QUFDL0IsOERBQTRDO0FBSTVDLE1BQU0saUNBQWlDLEdBQUcsQ0FBQyxDQUFDO0FBYzVDLFNBQWdCLDRCQUE0Qjs7SUFJMUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUNkLE1BQUEsTUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLDBDQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsbUNBQUssRUFBa0IsQ0FBQztJQUcxRSxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsbUNBQUssRUFBa0IsQ0FBQztJQUdwRSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxtQ0FBSyxFQUFrQixDQUFDO0lBRTNELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxLQUFLLENBQUM7SUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxLQUFLLEtBQUssQ0FBQztJQUVoQyxPQUFPLENBRUwsUUFBUTtRQUNSLENBQUMsS0FBSztZQUNKLEtBQUssS0FBSyxTQUFTO1lBQ25CLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxpQ0FBaUMsQ0FBQyxDQUN4RCxDQUFDO0FBQ0osQ0FBQztBQXZCRCxvRUF1QkM7QUFPTSxLQUFLLFVBQVUsVUFBVSxDQUFDLElBQWE7SUFFNUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLHFCQUFpQixFQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUd2RSxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0tBQ3pEO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUN6QixNQUFNLElBQUksR0FBRyxJQUFBLHFCQUFZLEVBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtRQUM1QyxPQUFPLEVBQUUsRUFBRTtLQUNaLENBQW9CLENBQUM7SUFFdEIsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN4QixDQUFDO0FBZkQsZ0NBZUM7QUFZTSxLQUFLLFVBQVUsaUJBQWlCLENBQUMsSUFNdkM7SUFDQyxNQUFNLEVBQ0osSUFBSSxFQUNKLEdBQUcsR0FBRyxFQUFFLEVBQ1IsTUFBTSxHQUFHLEVBQUUsRUFDWCxNQUFNLEdBQUcsTUFBTSxFQUNmLFFBQVEsR0FBRyxLQUFLLEdBQ2pCLHFCQUFRLElBQUksQ0FBRSxDQUFDO0lBR2hCLE1BQU0sTUFBTSxHQUFHLE1BQU0sWUFBWSxFQUFFLENBQUM7SUFDcEMsTUFBTSxpQkFBaUIsR0FBRyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3pELE1BQU0sUUFBUSxHQUFHLElBQUksbUJBQVEsaUJBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxpQkFBaUIsSUFBSyxNQUFNLEVBQUcsQ0FBQztJQUc1RSxNQUFNLFVBQVUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDdEMsR0FBRztRQUNILEVBQUUsRUFBRSxNQUFNO1FBQ1YsUUFBUSxFQUFFLE1BQU07UUFDaEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsSUFBSTtLQUNiLENBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO0tBQ2hCLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQWpDRCw4Q0FpQ0M7QUFNRCxLQUFLLFVBQVUsWUFBWTtJQUV6QixNQUFNLE1BQU0sR0FBRyxJQUFJLGdCQUFNLENBQUM7UUFDeEIsV0FBVyxFQUFFO1lBQ1gsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUEsY0FBTyxFQUFDLElBQUEsWUFBTyxHQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUNuRSxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtTQUNsRTtRQUNELE9BQU8sRUFBRSxHQUFHO1FBQ1osT0FBTyxFQUFFLENBQ1AsTUFBOEIsRUFDOUIsZUFBdUMsRUFDakMsRUFBRTtZQUlSLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLENBQUM7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVwQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDckIsQ0FBQyJ9
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9wYWNrYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxNQUFNLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUk1QyxNQUFNLGlDQUFpQyxHQUFHLENBQUMsQ0FBQztBQWM1QyxNQUFNLFVBQVUsNEJBQTRCO0lBSTFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FDZCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFLLEVBQWtCLENBQUM7SUFHMUUsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFLLEVBQWtCLENBQUM7SUFHcEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUssRUFBa0IsQ0FBQztJQUUzRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssS0FBSyxDQUFDO0lBQzdCLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxLQUFLLENBQUM7SUFFaEMsT0FBTyxDQUVMLFFBQVE7UUFDUixDQUFDLEtBQUs7WUFDSixLQUFLLEtBQUssU0FBUztZQUNuQixRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksaUNBQWlDLENBQUMsQ0FDeEQsQ0FBQztBQUNKLENBQUM7QUFPRCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVUsQ0FBQyxJQUFhO0lBRTVDLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUduRSxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0tBQ3pEO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUN6QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsV0FBMEIsQ0FBQztJQUUvQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3hCLENBQUM7QUFZRCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUFDLElBTXZDO0lBQ0MsTUFBTSxFQUNKLElBQUksRUFDSixHQUFHLEdBQUcsRUFBRSxFQUNSLE1BQU0sR0FBRyxFQUFFLEVBQ1gsTUFBTSxHQUFHLE1BQU0sRUFDZixRQUFRLEdBQUcsS0FBSyxHQUNqQixHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUdoQixNQUFNLE1BQU0sR0FBRyxNQUFNLFlBQVksRUFBRSxDQUFDO0lBQ3BDLE1BQU0saUJBQWlCLEdBQUcsNEJBQTRCLEVBQUUsQ0FBQztJQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRzVFLE1BQU0sVUFBVSxHQUFHLE1BQU0sUUFBUSxDQUFDLEtBQUssQ0FBQztRQUN0QyxHQUFHO1FBQ0gsRUFBRSxFQUFFLE1BQU07UUFDVixRQUFRLEVBQUUsTUFBTTtRQUNoQixJQUFJLEVBQUUsUUFBUTtRQUNkLE1BQU0sRUFBRSxJQUFJO0tBQ2IsQ0FBQyxDQUFDO0lBRUgsT0FBTyxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7S0FDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBTUQsS0FBSyxVQUFVLFlBQVk7SUFFekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUM7UUFDeEIsV0FBVyxFQUFFO1lBQ1gsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ25FLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1NBQ2xFO1FBQ0QsT0FBTyxFQUFFLEdBQUc7UUFDWixPQUFPLEVBQUUsQ0FDUCxNQUE4QixFQUM5QixlQUF1QyxFQUNqQyxFQUFFO1lBSVIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekMsQ0FBQztLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRXBCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztBQUNyQixDQUFDIn0=
@@ -0,0 +1,6 @@
1
+ import type { PresetContext } from 'presetter-types';
2
+ interface BootstrapOptions {
3
+ force?: boolean;
4
+ }
5
+ export declare function bootstrapContent(context: PresetContext, options?: BootstrapOptions): Promise<void>;
6
+ export {};
@@ -0,0 +1,13 @@
1
+ import { resolveContext, resolveTemplate } from '../content.js';
2
+ import { linkFiles, writeFiles } from '../io.js';
3
+ import { getPresetGraph } from './graph.js';
4
+ import { getDestinationMap } from './mapping.js';
5
+ export async function bootstrapContent(context, options) {
6
+ const graph = await getPresetGraph(context);
7
+ const resolvedContext = await resolveContext({ graph, context });
8
+ const content = await resolveTemplate({ graph, context: resolvedContext });
9
+ const destinationMap = await getDestinationMap(content, resolvedContext);
10
+ writeFiles(context.target.root, content, destinationMap, options);
11
+ linkFiles(context.target.root, destinationMap, options);
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQWU5QyxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUNwQyxPQUFzQixFQUN0QixPQUEwQjtJQUUxQixNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU1QyxNQUFNLGVBQWUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBRTNFLE1BQU0sY0FBYyxHQUFHLE1BQU0saUJBQWlCLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBRXpFLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xFLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDMUQsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ import type { PresetContext } from 'presetter-types';
2
+ export declare function getContext(): Promise<PresetContext>;
@@ -0,0 +1,14 @@
1
+ import { dirname } from 'node:path';
2
+ import { getPackage } from '../package.js';
3
+ import { getPresetterRC } from './presetterRC.js';
4
+ export async function getContext() {
5
+ const { json, path } = await getPackage();
6
+ const root = dirname(path);
7
+ const target = { name: json.name, root, package: json };
8
+ const custom = await getPresetterRC(root);
9
+ return {
10
+ target,
11
+ custom,
12
+ };
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVEvQyxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVU7SUFDOUIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLFVBQVUsRUFBRSxDQUFDO0lBQzFDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDekQsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFMUMsT0FBTztRQUNMLE1BQU07UUFDTixNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUMifQ==
@@ -0,0 +1,4 @@
1
+ import type { PresetAsset, PresetContext, PresetGraph, PresetNode } from 'presetter-types';
2
+ export declare function getPresetAsset(name: string, context: PresetContext): Promise<PresetAsset>;
3
+ export declare function getPresetGraph(context: PresetContext): Promise<PresetGraph>;
4
+ export declare function getPresetNode(name: string, context: PresetContext): Promise<PresetNode>;
@@ -0,0 +1,20 @@
1
+ export async function getPresetAsset(name, context) {
2
+ try {
3
+ const { default: getPresetAsset } = (await import(name));
4
+ return await getPresetAsset(context);
5
+ }
6
+ catch {
7
+ throw new Error(`cannot resolve preset ${name}`);
8
+ }
9
+ }
10
+ export async function getPresetGraph(context) {
11
+ const { preset } = context.custom;
12
+ const presets = Array.isArray(preset) ? preset : [preset];
13
+ return Promise.all(presets.map(async (name) => getPresetNode(name, context)));
14
+ }
15
+ export async function getPresetNode(name, context) {
16
+ const asset = await getPresetAsset(name, context);
17
+ const nodes = await Promise.all((asset.extends ?? []).map(async (extension) => getPresetNode(extension, context)));
18
+ return { name, asset, nodes };
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L2dyYXBoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCQSxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FDbEMsSUFBWSxFQUNaLE9BQXNCO0lBRXRCLElBQUk7UUFFRixNQUFNLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLENBRXRELENBQUM7UUFFRixPQUFPLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3RDO0lBQUMsTUFBTTtRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLElBQUksRUFBRSxDQUFDLENBQUM7S0FDbEQ7QUFDSCxDQUFDO0FBT0QsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2xDLE9BQXNCO0lBR3RCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBRWxDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUxRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBUUQsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQ2pDLElBQVksRUFDWixPQUFzQjtJQUV0QixNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUM3QixDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUM1QyxhQUFhLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUNsQyxDQUNGLENBQUM7SUFFRixPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNoQyxDQUFDIn0=
@@ -0,0 +1,3 @@
1
+ export * from './scripts.js';
2
+ export * from './setup.js';
3
+ export * from './unset.js';
@@ -0,0 +1,4 @@
1
+ export * from './scripts.js';
2
+ export * from './setup.js';
3
+ export * from './unset.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBCQSxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFNBQVMsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ import type { ResolvedPresetContext, Template } from 'presetter-types';
2
+ export declare function getDestinationMap(template: Record<string, Template>, context: ResolvedPresetContext<'noSymlinks'>): Promise<Record<string, string>>;
@@ -0,0 +1,15 @@
1
+ import { resolve } from 'node:path';
2
+ import resolvePackage from 'resolve-pkg';
3
+ export async function getDestinationMap(template, context) {
4
+ const { custom: { noSymlinks }, target: { root }, } = context;
5
+ const presetterDir = resolvePackage('presetter', { cwd: root });
6
+ const outDir = resolve(presetterDir, 'generated', context.target.name);
7
+ const relativePaths = [...Object.keys(template)];
8
+ return Object.fromEntries([
9
+ ...relativePaths.map((relativePath) => [
10
+ relativePath,
11
+ resolve(noSymlinks.includes(relativePath) ? context.target.root : outDir, relativePath),
12
+ ]),
13
+ ]);
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvbWFwcGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sY0FBYyxNQUFNLGFBQWEsQ0FBQztBQVV6QyxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxRQUFrQyxFQUNsQyxPQUE0QztJQUU1QyxNQUFNLEVBQ0osTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQ3RCLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxHQUNqQixHQUFHLE9BQU8sQ0FBQztJQUVaLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBYSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhFLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFakQsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3hCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBb0IsRUFBRSxDQUFDO1lBQ3ZELFlBQVk7WUFDWixPQUFPLENBRUwsVUFBVSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFDaEUsWUFBWSxDQUNiO1NBQ0YsQ0FBQztLQUNILENBQUMsQ0FBQztBQUNMLENBQUMifQ==
@@ -0,0 +1,5 @@
1
+ import type { PresetterConfig } from 'presetter-types';
2
+ export declare function getPresetterRCPaths(base: string): Promise<string[]>;
3
+ export declare function getPresetterRC(root: string): Promise<PresetterConfig>;
4
+ export declare function updatePresetterRC(root: string, config: PresetterConfig): Promise<void>;
5
+ export declare function assertPresetterRC(value: unknown): asserts value is PresetterConfig;
@@ -0,0 +1,38 @@
1
+ import { existsSync, writeFileSync } from 'node:fs';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { readPackageUp } from 'read-pkg-up';
4
+ import { loadFile } from '../io.js';
5
+ import { isJSON, merge } from '../template.js';
6
+ const PRESETTERRC = '.presetterrc';
7
+ const JSON_INDENT = 2;
8
+ export async function getPresetterRCPaths(base) {
9
+ const filesFromBase = ['', '.json']
10
+ .map((ext) => resolve(base, `${PRESETTERRC}${ext}`))
11
+ .filter(existsSync);
12
+ const parent = await readPackageUp({ cwd: dirname(base) });
13
+ const filesFromParent = parent?.path
14
+ ? await getPresetterRCPaths(dirname(base))
15
+ : [];
16
+ return [...filesFromParent, ...filesFromBase];
17
+ }
18
+ export async function getPresetterRC(root) {
19
+ const paths = await getPresetterRCPaths(root);
20
+ if (!paths.length) {
21
+ throw new Error('missing presetter configuration file');
22
+ }
23
+ const configs = paths.map((path) => loadFile(path, 'json'));
24
+ const mergedConfig = configs.reduce((mergedConfig, config) => merge(mergedConfig, config), {});
25
+ assertPresetterRC(mergedConfig);
26
+ return mergedConfig;
27
+ }
28
+ export async function updatePresetterRC(root, config) {
29
+ const existingPresetterRC = await getPresetterRC(root).catch(() => ({}));
30
+ writeFileSync(resolve(root, `${PRESETTERRC}.json`), JSON.stringify(merge(existingPresetterRC, config), null, JSON_INDENT));
31
+ }
32
+ export function assertPresetterRC(value) {
33
+ if (!isJSON(value) ||
34
+ (typeof value['preset'] !== 'string' && !Array.isArray(value['preset']))) {
35
+ throw new Error(`invalid presetter configuration file`);
36
+ }
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0dGVyUkMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L3ByZXNldHRlclJDLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNqQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQU01QyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFFbkMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBT3RCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsSUFBWTtJQUNwRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUM7U0FDaEMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDbkQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRCLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFHM0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxFQUFFLElBQUk7UUFDbEMsQ0FBQyxDQUFDLE1BQU0sbUJBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFUCxPQUFPLENBQUMsR0FBRyxlQUFlLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBT0QsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQUMsSUFBWTtJQUUvQyxNQUFNLEtBQUssR0FBRyxNQUFNLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTlDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztLQUN6RDtJQUVELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFjLENBQUMsQ0FBQztJQUV6RSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUNqQyxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLEVBQ3JELEVBQUUsQ0FDSCxDQUFDO0lBRUYsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFaEMsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQU9ELE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLElBQVksRUFDWixNQUF1QjtJQUV2QixNQUFNLG1CQUFtQixHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFekUsYUFBYSxDQUNYLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxXQUFXLE9BQU8sQ0FBQyxFQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQ3RFLENBQUM7QUFDSixDQUFDO0FBTUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixLQUFjO0lBRWQsSUFDRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDZCxDQUFDLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFDeEU7UUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7S0FDekQ7QUFDSCxDQUFDIn0=
@@ -0,0 +1 @@
1
+ export declare function getScripts(): Promise<Record<string, string>>;
@@ -0,0 +1,10 @@
1
+ import { resolveContext, resolveScripts } from '../content.js';
2
+ import { getContext } from './context.js';
3
+ import { getPresetGraph } from './graph.js';
4
+ export async function getScripts() {
5
+ const context = await getContext();
6
+ const graph = await getPresetGraph(context);
7
+ const resolvedContext = await resolveContext({ graph, context });
8
+ return resolveScripts({ graph, context: resolvedContext });
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvc2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFNekMsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVO0lBQzlCLE1BQU0sT0FBTyxHQUFHLE1BQU0sVUFBVSxFQUFFLENBQUM7SUFDbkMsTUFBTSxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsTUFBTSxlQUFlLEdBQUcsTUFBTSxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUVqRSxPQUFPLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztBQUM3RCxDQUFDIn0=
@@ -0,0 +1,6 @@
1
+ interface BootstrapOptions {
2
+ force?: boolean;
3
+ }
4
+ export declare function bootstrapPreset(options?: BootstrapOptions): Promise<void>;
5
+ export declare function setupPreset(...uris: string[]): Promise<void>;
6
+ export {};
@@ -0,0 +1,43 @@
1
+ import { info } from 'node:console';
2
+ import { dirname } from 'node:path';
3
+ import { readPackage } from 'read-pkg';
4
+ import { writePackage } from 'write-pkg';
5
+ import { arePeerPackagesAutoInstalled, getPackage, reifyDependencies, } from '../package.js';
6
+ import { bootstrapContent } from './content.js';
7
+ import { getContext } from './context.js';
8
+ import { updatePresetterRC } from './presetterRC.js';
9
+ export async function bootstrapPreset(options) {
10
+ const context = await getContext();
11
+ if (!arePeerPackagesAutoInstalled()) {
12
+ await reifyDependencies({ root: context.target.root });
13
+ }
14
+ await bootstrapContent(context, options);
15
+ }
16
+ export async function setupPreset(...uris) {
17
+ const { path } = await getPackage();
18
+ const root = dirname(path);
19
+ const packageBefore = (await readPackage({ cwd: root })).devDependencies;
20
+ info(`Installing ${uris.join(' ')}... it may take a few moment...`);
21
+ await reifyDependencies({
22
+ root,
23
+ add: ['presetter', ...uris],
24
+ saveAs: 'dev',
25
+ lockFile: true,
26
+ });
27
+ const packageAfter = (await readPackage({ cwd: root })).devDependencies;
28
+ const newPackages = getNewPackages({ ...packageBefore }, { ...packageAfter });
29
+ const preset = newPackages.filter((name) => name !== 'presetter');
30
+ info('Updating .presetterrc.json & package.json');
31
+ await updatePresetterRC(root, { preset });
32
+ const context = await getContext();
33
+ await bootstrapContent(context);
34
+ const json = context.target.package;
35
+ const scripts = { prepare: 'presetter bootstrap', ...json.scripts };
36
+ const patched = { ...json, scripts };
37
+ await writePackage(root, patched);
38
+ info('Done. Enjoy coding!');
39
+ }
40
+ function getNewPackages(before, after) {
41
+ return Object.keys(after).filter((name) => !before[name]);
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L3NldHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekMsT0FBTyxFQUNMLDRCQUE0QixFQUM1QixVQUFVLEVBQ1YsaUJBQWlCLEdBQ2xCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWNsRCxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FDbkMsT0FBMEI7SUFFMUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxVQUFVLEVBQUUsQ0FBQztJQUduQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsRUFBRTtRQUNuQyxNQUFNLGlCQUFpQixDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUN4RDtJQUdELE1BQU0sZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFNRCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxHQUFHLElBQWM7SUFHakQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sVUFBVSxFQUFFLENBQUM7SUFDcEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBTSxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztJQUd6RSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0saUJBQWlCLENBQUM7UUFDdEIsSUFBSTtRQUNKLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUMzQixNQUFNLEVBQUUsS0FBSztRQUNiLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQyxDQUFDO0lBR0gsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO0lBQ3hFLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxFQUFFLEdBQUcsYUFBYSxFQUFFLEVBQUUsRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDOUUsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDO0lBRWxFLElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBRWxELE1BQU0saUJBQWlCLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUcxQyxNQUFNLE9BQU8sR0FBRyxNQUFNLFVBQVUsRUFBRSxDQUFDO0lBQ25DLE1BQU0sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFHaEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDcEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEUsTUFBTSxPQUFPLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNyQyxNQUFNLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBK0MsQ0FBQyxDQUFDO0lBRTFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFRRCxTQUFTLGNBQWMsQ0FDckIsTUFBOEIsRUFDOUIsS0FBNkI7SUFFN0IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBa0IsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDNUUsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ export declare function unsetPreset(): Promise<void>;
@@ -0,0 +1,14 @@
1
+ import { resolveContext, resolveTemplate } from '../content.js';
2
+ import { unlinkFiles } from '../io.js';
3
+ import { getContext } from './context.js';
4
+ import { getPresetGraph } from './graph.js';
5
+ import { getDestinationMap } from './mapping.js';
6
+ export async function unsetPreset() {
7
+ const context = await getContext();
8
+ const graph = await getPresetGraph(context);
9
+ const resolvedContext = await resolveContext({ graph, context });
10
+ const content = await resolveTemplate({ graph, context: resolvedContext });
11
+ const configurationLink = await getDestinationMap(content, resolvedContext);
12
+ unlinkFiles(context.target.root, configurationLink);
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L3Vuc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUs5QyxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVc7SUFDL0IsTUFBTSxPQUFPLEdBQUcsTUFBTSxVQUFVLEVBQUUsQ0FBQztJQUNuQyxNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxNQUFNLGVBQWUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFFNUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDdEQsQ0FBQyJ9
@@ -1,4 +1,4 @@
1
- import type { DynamicAsset, DynamicAssetField, Generator, PresetAsset, PresetterConfig, RequiredResolution, ResolvedPresetContext, Template } from './types';
1
+ import type { DynamicAsset, DynamicAssetField, Generator, PresetAsset, PresetterConfig, RequiredResolution, ResolvedPresetContext, Template } from 'presetter-types';
2
2
  export declare function getConfigKey(filename: string): string;
3
3
  export declare function loadDynamicMap<F extends DynamicAssetField>(map: PresetAsset[F], context: ResolvedPresetContext<RequiredResolution<F>>): Promise<Record<string, DynamicAsset<F>>>;
4
4
  export declare function loadDynamic<R extends Template | string[], K extends keyof PresetterConfig>(value: string | R | Generator<R, K>, context: ResolvedPresetContext<K>): Promise<R>;