presetter 7.2.0 → 8.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 (86) hide show
  1. package/README.md +396 -87
  2. package/lib/context.d.ts +14 -0
  3. package/lib/context.d.ts.map +1 -0
  4. package/lib/context.js +53 -0
  5. package/lib/debugger.d.ts.map +1 -1
  6. package/lib/debugger.js +1 -1
  7. package/lib/executable/entry.d.ts.map +1 -1
  8. package/lib/executable/entry.js +3 -3
  9. package/lib/executable/error.d.ts.map +1 -1
  10. package/lib/executable/error.js +1 -1
  11. package/lib/executable/index.d.ts.map +1 -1
  12. package/lib/executable/index.js +1 -1
  13. package/lib/index.d.ts.map +1 -1
  14. package/lib/index.js +1 -1
  15. package/lib/io.d.ts.map +1 -1
  16. package/lib/io.js +1 -1
  17. package/lib/preset/bootstrap.d.ts.map +1 -1
  18. package/lib/preset/bootstrap.js +5 -10
  19. package/lib/preset/config/index.d.ts.map +1 -1
  20. package/lib/preset/config/index.js +1 -1
  21. package/lib/preset/config/resolve.d.ts.map +1 -1
  22. package/lib/preset/config/resolve.js +1 -1
  23. package/lib/preset/config/search.d.ts.map +1 -1
  24. package/lib/preset/config/search.js +4 -4
  25. package/lib/preset/index.d.ts +0 -1
  26. package/lib/preset/index.d.ts.map +1 -1
  27. package/lib/preset/index.js +1 -2
  28. package/lib/preset/project.d.ts +2 -2
  29. package/lib/preset/project.d.ts.map +1 -1
  30. package/lib/preset/project.js +6 -7
  31. package/lib/preset/resolution/asset.d.ts +3 -3
  32. package/lib/preset/resolution/asset.d.ts.map +1 -1
  33. package/lib/preset/resolution/asset.js +1 -1
  34. package/lib/preset/resolution/content.d.ts +3 -3
  35. package/lib/preset/resolution/content.d.ts.map +1 -1
  36. package/lib/preset/resolution/content.js +1 -1
  37. package/lib/preset/resolution/debugger.d.ts.map +1 -1
  38. package/lib/preset/resolution/debugger.js +1 -1
  39. package/lib/preset/resolution/index.d.ts.map +1 -1
  40. package/lib/preset/resolution/index.js +1 -1
  41. package/lib/preset/resolution/object.d.ts.map +1 -1
  42. package/lib/preset/resolution/object.js +1 -1
  43. package/lib/preset/resolution/preset.d.ts +2 -2
  44. package/lib/preset/resolution/preset.d.ts.map +1 -1
  45. package/lib/preset/resolution/preset.js +1 -1
  46. package/lib/preset/resolution/script.d.ts +2 -2
  47. package/lib/preset/resolution/script.d.ts.map +1 -1
  48. package/lib/preset/resolution/script.js +1 -1
  49. package/lib/preset/resolution/variable.d.ts +2 -2
  50. package/lib/preset/resolution/variable.d.ts.map +1 -1
  51. package/lib/preset/resolution/variable.js +1 -1
  52. package/lib/preset/scripts.d.ts.map +1 -1
  53. package/lib/preset/scripts.js +3 -3
  54. package/lib/resolve.d.ts.map +1 -1
  55. package/lib/resolve.js +6 -5
  56. package/lib/run.d.ts.map +1 -1
  57. package/lib/run.js +29 -23
  58. package/lib/scripts.d.ts.map +1 -1
  59. package/lib/scripts.js +1 -1
  60. package/lib/serialization.d.ts.map +1 -1
  61. package/lib/serialization.js +3 -3
  62. package/lib/task.d.ts.map +1 -1
  63. package/lib/task.js +1 -1
  64. package/lib/template/index.d.ts.map +1 -1
  65. package/lib/template/index.js +1 -1
  66. package/lib/template/merge.d.ts.map +1 -1
  67. package/lib/template/merge.js +1 -1
  68. package/lib/template/substitute.d.ts.map +1 -1
  69. package/lib/template/substitute.js +1 -1
  70. package/lib/utilities/display.d.ts.map +1 -1
  71. package/lib/utilities/display.js +1 -1
  72. package/lib/utilities/index.d.ts.map +1 -1
  73. package/lib/utilities/index.js +1 -1
  74. package/lib/utilities/mapping.d.ts.map +1 -1
  75. package/lib/utilities/mapping.js +1 -1
  76. package/lib/utilities/object.d.ts.map +1 -1
  77. package/lib/utilities/object.js +1 -1
  78. package/package.json +56 -36
  79. package/types/mvdan-sh/index.d.ts +44 -0
  80. package/types/npmcli__run-script/index.d.ts +27 -0
  81. package/lib/package.d.ts +0 -40
  82. package/lib/package.d.ts.map +0 -1
  83. package/lib/package.js +0 -93
  84. package/lib/preset/context.d.ts +0 -8
  85. package/lib/preset/context.d.ts.map +0 -1
  86. package/lib/preset/context.js +0 -13
package/lib/package.d.ts DELETED
@@ -1,40 +0,0 @@
1
- import type { PackageJson } from 'type-fest';
2
- /** package detail */
3
- export interface Package {
4
- /** path to the package.json */
5
- path: string;
6
- /** content of package.json */
7
- json: PackageJson;
8
- }
9
- /**
10
- * indicate whether peer packages would be installed automatically
11
- * @returns true for npm v7+
12
- */
13
- export declare function arePeerPackagesAutoInstalled(): boolean;
14
- /**
15
- * get scripts from the targeted project's package.json
16
- * @param root path to the project's root folder
17
- * @returns package detail
18
- */
19
- export declare function getPackage(root?: string): Promise<Package>;
20
- /**
21
- * reify packages for the target project
22
- * @param args list of packages and other options
23
- * @param args.root directory of the project package.json
24
- * @param args.add list of packages to be added
25
- * @param args.remove list of packages to be removed
26
- * @param args.saveAs type of dependency
27
- * @param args.lockFile indicate whether package-lock.json should be produced
28
- * @returns list of installed packages
29
- */
30
- export declare function reifyDependencies(args: {
31
- root: string;
32
- add?: string[];
33
- remove?: string[];
34
- saveAs?: 'dev' | 'peer' | 'optional' | 'prod';
35
- lockFile?: boolean;
36
- }): Promise<Array<{
37
- name: string;
38
- spec: string;
39
- }>>;
40
- //# sourceMappingURL=package.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../source/package.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,qBAAqB;AACrB,MAAM,WAAW,OAAO;IACtB,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI,OAAO,CAqBtD;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAahE;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CA2BjD"}
package/lib/package.js DELETED
@@ -1,93 +0,0 @@
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';
6
- const NPM_VERSION_FOR_PEER_INSTALLATION = 7;
7
- /**
8
- * indicate whether peer packages would be installed automatically
9
- * @returns true for npm v7+
10
- */
11
- export function arePeerPackagesAutoInstalled() {
12
- // NOTE npm_config_user_agent should be in the form of 'npm/7.3.0 node/v15.5.0 darwin x64'
13
- const clientID = process.env.npm_config_user_agent?.split(' ')[0];
14
- /* v8 ignore next */
15
- const [name, version] = clientID?.split('/') ?? [];
16
- /* v8 ignore next */
17
- const [major] = version?.split('.') ?? [];
18
- const isNPM = name === 'npm';
19
- const isNonNPM = name !== 'npm';
20
- return (
21
- // assume peer packages would be installed automatically if the client is not npm
22
- isNonNPM ||
23
- (isNPM &&
24
- major !== undefined &&
25
- parseInt(major) >= NPM_VERSION_FOR_PEER_INSTALLATION));
26
- }
27
- /**
28
- * get scripts from the targeted project's package.json
29
- * @param root path to the project's root folder
30
- * @returns package detail
31
- */
32
- export async function getPackage(root) {
33
- // try to find the target project's package.json
34
- const detail = await readPackageUp({ cwd: root, normalize: true });
35
- // throw an error if there's no package.json found
36
- if (!detail) {
37
- throw new Error("failed to find target's package.json");
38
- }
39
- const path = detail.path;
40
- const json = detail.packageJson;
41
- return { path, json };
42
- }
43
- /**
44
- * reify packages for the target project
45
- * @param args list of packages and other options
46
- * @param args.root directory of the project package.json
47
- * @param args.add list of packages to be added
48
- * @param args.remove list of packages to be removed
49
- * @param args.saveAs type of dependency
50
- * @param args.lockFile indicate whether package-lock.json should be produced
51
- * @returns list of installed packages
52
- */
53
- export async function reifyDependencies(args) {
54
- const { root, add = [], remove = [], saveAs = 'prod', lockFile = false, } = { ...args };
55
- // use arborist to install peer dependencies
56
- const config = await getNPMConfig();
57
- const workspacesEnabled = arePeerPackagesAutoInstalled(); // no workspace before npm 7
58
- const arborist = new Arborist({ path: root, workspacesEnabled, ...config });
59
- // don't write to the lockfile
60
- const actualTree = await arborist.reify({
61
- add,
62
- rm: remove,
63
- saveType: saveAs,
64
- save: lockFile,
65
- update: true,
66
- });
67
- return [...actualTree.edgesOut.values()].map((edge) => ({
68
- name: edge.name,
69
- spec: edge.spec,
70
- }));
71
- }
72
- /**
73
- * get the url of the package registry of the target project
74
- * @returns url of the registry
75
- */
76
- async function getNPMConfig() {
77
- // get npm config
78
- const config = new Config({
79
- definitions: {
80
- userconfig: { default: resolve(homedir(), '.npmrc'), type: String },
81
- registry: { default: 'https://registry.npmjs.org', type: String },
82
- },
83
- npmPath: '.',
84
- flatten: (config, flattenedConfig) => {
85
- // NOTE: this function is called multiple time for flattening the configs at multiple levels, user, project, cli etc.
86
- // ensure that higher level configs are always in priority
87
- Object.assign(flattenedConfig, config);
88
- },
89
- });
90
- await config.load();
91
- return config.flat;
92
- }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9wYWNrYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxNQUFNLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUk1QyxNQUFNLGlDQUFpQyxHQUFHLENBQUMsQ0FBQztBQVU1Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsNEJBQTRCO0lBQzFDLDBGQUEwRjtJQUUxRixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsRSxvQkFBb0I7SUFDcEIsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFLLEVBQWtCLENBQUM7SUFFcEUsb0JBQW9CO0lBQ3BCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFLLEVBQWtCLENBQUM7SUFFM0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEtBQUssQ0FBQztJQUM3QixNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssS0FBSyxDQUFDO0lBRWhDLE9BQU87SUFDTCxpRkFBaUY7SUFDakYsUUFBUTtRQUNSLENBQUMsS0FBSztZQUNKLEtBQUssS0FBSyxTQUFTO1lBQ25CLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxpQ0FBaUMsQ0FBQyxDQUN4RCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFD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
@@ -1,8 +0,0 @@
1
- import type { PresetContext } from 'presetter-types';
2
- /**
3
- * get context about the target project and any customization in .presetterrc
4
- * @param cwd the current working directory
5
- * @returns context about the target project and any customization in .presetterrc
6
- */
7
- export declare function getContext(cwd?: string): Promise<PresetContext>;
8
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
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,13 +0,0 @@
1
- import { dirname } from 'node:path';
2
- import { getPackage } from '../package.js';
3
- /**
4
- * get context about the target project and any customization in .presetterrc
5
- * @param cwd the current working directory
6
- * @returns context about the target project and any customization in .presetterrc
7
- */
8
- export async function getContext(cwd) {
9
- const { json, path } = await getPackage(cwd);
10
- const root = dirname(path);
11
- return { root, package: json };
12
- }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFJeEM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsVUFBVSxDQUFDLEdBQVk7SUFDM0MsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFM0IsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDakMsQ0FBQyJ9