presetter 4.5.0 → 4.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/content.d.ts +77 -0
- package/lib/content.d.ts.map +1 -1
- package/lib/content.js +126 -1
- package/lib/directive.d.ts +23 -0
- package/lib/directive.d.ts.map +1 -1
- package/lib/directive.js +85 -1
- package/lib/error.d.ts +6 -0
- package/lib/error.d.ts.map +1 -1
- package/lib/error.js +21 -1
- package/lib/executable/entry.d.ts +5 -0
- package/lib/executable/entry.d.ts.map +1 -1
- package/lib/executable/entry.js +24 -1
- package/lib/executable/error.d.ts +4 -0
- package/lib/executable/error.d.ts.map +1 -1
- package/lib/executable/error.js +23 -1
- package/lib/executable/index.js +16 -1
- package/lib/index.js +16 -1
- package/lib/io.d.ts +39 -0
- package/lib/io.d.ts.map +1 -1
- package/lib/io.js +96 -11
- package/lib/package.d.ts +22 -0
- package/lib/package.d.ts.map +1 -1
- package/lib/package.js +53 -3
- package/lib/preset/content.d.ts +7 -0
- package/lib/preset/content.d.ts.map +1 -1
- package/lib/preset/content.js +20 -1
- package/lib/preset/context.d.ts +4 -0
- package/lib/preset/context.d.ts.map +1 -1
- package/lib/preset/context.js +19 -1
- package/lib/preset/graph.d.ts +17 -0
- package/lib/preset/graph.d.ts.map +1 -1
- package/lib/preset/graph.js +34 -1
- package/lib/preset/index.js +25 -1
- package/lib/preset/mapping.d.ts +6 -0
- package/lib/preset/mapping.d.ts.map +1 -1
- package/lib/preset/mapping.js +25 -2
- package/lib/preset/presetterRC.d.ts +19 -0
- package/lib/preset/presetterRC.d.ts.map +1 -1
- package/lib/preset/presetterRC.js +37 -1
- package/lib/preset/scripts.d.ts +4 -0
- package/lib/preset/scripts.d.ts.map +1 -1
- package/lib/preset/scripts.js +19 -1
- package/lib/preset/setup.d.ts +10 -0
- package/lib/preset/setup.d.ts.map +1 -1
- package/lib/preset/setup.js +38 -1
- package/lib/preset/unset.d.ts +3 -0
- package/lib/preset/unset.d.ts.map +1 -1
- package/lib/preset/unset.js +18 -1
- package/lib/resolution.d.ts +17 -0
- package/lib/resolution.d.ts.map +1 -1
- package/lib/resolution.js +33 -1
- package/lib/run.d.ts +7 -0
- package/lib/run.d.ts.map +1 -1
- package/lib/run.js +77 -1
- package/lib/scripts.d.ts +12 -0
- package/lib/scripts.d.ts.map +1 -1
- package/lib/scripts.js +50 -1
- package/lib/task.d.ts +18 -0
- package/lib/task.d.ts.map +1 -1
- package/lib/task.js +40 -2
- package/lib/template.d.ts +47 -0
- package/lib/template.d.ts.map +1 -1
- package/lib/template.js +96 -2
- package/lib/utilities/index.js +16 -1
- package/lib/utilities/mapValues.d.ts +6 -0
- package/lib/utilities/mapValues.d.ts.map +1 -1
- package/lib/utilities/mapValues.js +21 -1
- package/package.json +3 -3
package/lib/preset/content.js
CHANGED
@@ -1,7 +1,26 @@
|
|
1
|
+
/*
|
2
|
+
* *** MIT LICENSE ***
|
3
|
+
* -------------------------------------------------------------------------
|
4
|
+
* This code may be modified and distributed under the MIT license.
|
5
|
+
* See the LICENSE file for details.
|
6
|
+
* -------------------------------------------------------------------------
|
7
|
+
*
|
8
|
+
* @summary Collection of helpers for content generation
|
9
|
+
*
|
10
|
+
* @author Alvis HT Tang <alvis@hilbert.space>
|
11
|
+
* @license MIT
|
12
|
+
* @copyright Copyright (c) 2020 - All Rights Reserved.
|
13
|
+
* -------------------------------------------------------------------------
|
14
|
+
*/
|
1
15
|
import { resolveContext, resolveTemplate } from '../content.js';
|
2
16
|
import { linkFiles, writeFiles } from '../io.js';
|
3
17
|
import { getPresetGraph } from './graph.js';
|
4
18
|
import { getDestinationMap } from './mapping.js';
|
19
|
+
/**
|
20
|
+
* generate files from templates and link them to the target project root
|
21
|
+
* @param context context about the target project and any customization in .presetterrc
|
22
|
+
* @param options collection of options
|
23
|
+
*/
|
5
24
|
export async function bootstrapContent(context, options) {
|
6
25
|
const graph = await getPresetGraph(context);
|
7
26
|
const resolvedContext = await resolveContext({ graph, context });
|
@@ -10,4 +29,4 @@ export async function bootstrapContent(context, options) {
|
|
10
29
|
writeFiles(context.target.root, content, destinationMap, options);
|
11
30
|
linkFiles(context.target.root, destinationMap, options);
|
12
31
|
}
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFVOUM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBQ3BDLE9BQXNCLEVBQ3RCLE9BQTBCO0lBRTFCLE1BQU0sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTVDLE1BQU0sZUFBZSxHQUFHLE1BQU0sY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakUsTUFBTSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFFM0UsTUFBTSxjQUFjLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFFekUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxRCxDQUFDIn0=
|
package/lib/preset/context.d.ts
CHANGED
@@ -1,3 +1,7 @@
|
|
1
1
|
import type { PresetContext } from 'presetter-types';
|
2
|
+
/**
|
3
|
+
* get context about the target project and any customization in .presetterrc
|
4
|
+
* @returns context about the target project and any customization in .presetterrc
|
5
|
+
*/
|
2
6
|
export declare function getContext(): Promise<PresetContext>;
|
3
7
|
//# 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;
|
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"}
|
package/lib/preset/context.js
CHANGED
@@ -1,6 +1,24 @@
|
|
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
|
+
*/
|
1
15
|
import { dirname } from 'node:path';
|
2
16
|
import { getPackage } from '../package.js';
|
3
17
|
import { getPresetterRC } from './presetterRC.js';
|
18
|
+
/**
|
19
|
+
* get context about the target project and any customization in .presetterrc
|
20
|
+
* @returns context about the target project and any customization in .presetterrc
|
21
|
+
*/
|
4
22
|
export async function getContext() {
|
5
23
|
const { json, path } = await getPackage();
|
6
24
|
const root = dirname(path);
|
@@ -11,4 +29,4 @@ export async function getContext() {
|
|
11
29
|
custom,
|
12
30
|
};
|
13
31
|
}
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0M7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVO0lBQzlCLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxVQUFVLEVBQUUsQ0FBQztJQUMxQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3pELE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTFDLE9BQU87UUFDTCxNQUFNO1FBQ04sTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDIn0=
|
package/lib/preset/graph.d.ts
CHANGED
@@ -1,5 +1,22 @@
|
|
1
1
|
import type { PresetAsset, PresetContext, PresetGraph, PresetNode } from 'presetter-types';
|
2
|
+
/**
|
3
|
+
* get assets from a preset
|
4
|
+
* @param name name of the preset
|
5
|
+
* @param context context about the target project and customization in .presetterrc
|
6
|
+
* @returns assets from the preset
|
7
|
+
*/
|
2
8
|
export declare function getPresetAsset(name: string, context: PresetContext): Promise<PresetAsset>;
|
9
|
+
/**
|
10
|
+
* compute a graph of presets
|
11
|
+
* @param context context about the target project and customization in .presetterrc
|
12
|
+
* @returns resolved preset graph
|
13
|
+
*/
|
3
14
|
export declare function getPresetGraph(context: PresetContext): Promise<PresetGraph>;
|
15
|
+
/**
|
16
|
+
* resolve a preset as a node
|
17
|
+
* @param name name of the preset
|
18
|
+
* @param context context about the target project and customization in .presetterrc
|
19
|
+
* @returns resolved preset node
|
20
|
+
*/
|
4
21
|
export declare function getPresetNode(name: string, context: PresetContext): Promise<PresetNode>;
|
5
22
|
//# sourceMappingURL=graph.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../source/preset/graph.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACX,MAAM,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../source/preset/graph.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACX,MAAM,iBAAiB,CAAC;AAEzB;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,WAAW,CAAC,CAWtB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,WAAW,CAAC,CAOtB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,UAAU,CAAC,CASrB"}
|
package/lib/preset/graph.js
CHANGED
@@ -1,5 +1,26 @@
|
|
1
|
+
/*
|
2
|
+
* *** MIT LICENSE ***
|
3
|
+
* -------------------------------------------------------------------------
|
4
|
+
* This code may be modified and distributed under the MIT license.
|
5
|
+
* See the LICENSE file for details.
|
6
|
+
* -------------------------------------------------------------------------
|
7
|
+
*
|
8
|
+
* @summary Collection of helpers for prepare the preset graph
|
9
|
+
*
|
10
|
+
* @author Alvis HT Tang <alvis@hilbert.space>
|
11
|
+
* @license MIT
|
12
|
+
* @copyright Copyright (c) 2020 - All Rights Reserved.
|
13
|
+
* -------------------------------------------------------------------------
|
14
|
+
*/
|
15
|
+
/**
|
16
|
+
* get assets from a preset
|
17
|
+
* @param name name of the preset
|
18
|
+
* @param context context about the target project and customization in .presetterrc
|
19
|
+
* @returns assets from the preset
|
20
|
+
*/
|
1
21
|
export async function getPresetAsset(name, context) {
|
2
22
|
try {
|
23
|
+
// get the preset
|
3
24
|
const { default: getPresetAsset } = (await import(name));
|
4
25
|
return await getPresetAsset(context);
|
5
26
|
}
|
@@ -7,14 +28,26 @@ export async function getPresetAsset(name, context) {
|
|
7
28
|
throw new Error(`cannot resolve preset ${name}`);
|
8
29
|
}
|
9
30
|
}
|
31
|
+
/**
|
32
|
+
* compute a graph of presets
|
33
|
+
* @param context context about the target project and customization in .presetterrc
|
34
|
+
* @returns resolved preset graph
|
35
|
+
*/
|
10
36
|
export async function getPresetGraph(context) {
|
37
|
+
// get the preset name
|
11
38
|
const { preset } = context.custom;
|
12
39
|
const presets = Array.isArray(preset) ? preset : [preset];
|
13
40
|
return Promise.all(presets.map(async (name) => getPresetNode(name, context)));
|
14
41
|
}
|
42
|
+
/**
|
43
|
+
* resolve a preset as a node
|
44
|
+
* @param name name of the preset
|
45
|
+
* @param context context about the target project and customization in .presetterrc
|
46
|
+
* @returns resolved preset node
|
47
|
+
*/
|
15
48
|
export async function getPresetNode(name, context) {
|
16
49
|
const asset = await getPresetAsset(name, context);
|
17
50
|
const nodes = await Promise.all((asset.extends ?? []).map(async (extension) => getPresetNode(extension, context)));
|
18
51
|
return { name, asset, nodes };
|
19
52
|
}
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L2dyYXBoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFTSDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUNsQyxJQUFZLEVBQ1osT0FBc0I7SUFFdEIsSUFBSTtRQUNGLGlCQUFpQjtRQUNqQixNQUFNLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLENBRXRELENBQUM7UUFFRixPQUFPLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3RDO0lBQUMsTUFBTTtRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLElBQUksRUFBRSxDQUFDLENBQUM7S0FDbEQ7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUNsQyxPQUFzQjtJQUV0QixzQkFBc0I7SUFDdEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFFbEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTFELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUNqQyxJQUFZLEVBQ1osT0FBc0I7SUFFdEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sS0FBSyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDN0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FDNUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FDbEMsQ0FDRixDQUFDO0lBRUYsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDaEMsQ0FBQyJ9
|
package/lib/preset/index.js
CHANGED
@@ -1,4 +1,28 @@
|
|
1
|
+
/*
|
2
|
+
* *** MIT LICENSE ***
|
3
|
+
* -------------------------------------------------------------------------
|
4
|
+
* This code may be modified and distributed under the MIT license.
|
5
|
+
* See the LICENSE file for details.
|
6
|
+
* -------------------------------------------------------------------------
|
7
|
+
*
|
8
|
+
* @summary Collection of helpers for setting up a project
|
9
|
+
*
|
10
|
+
* @author Alvis HT Tang <alvis@hilbert.space>
|
11
|
+
* @license MIT
|
12
|
+
* @copyright Copyright (c) 2020 - All Rights Reserved.
|
13
|
+
* -------------------------------------------------------------------------
|
14
|
+
*/
|
15
|
+
// NOTE on resolution steps
|
16
|
+
// STEP 1 build a dependency tree of presets
|
17
|
+
// STEP 2 resolve variables from the tree
|
18
|
+
//
|
19
|
+
// for template resolution
|
20
|
+
// STEP 3 resolve template content from resolved variables
|
21
|
+
// STEP 4 resolve noSimlinks from resolved variables
|
22
|
+
//
|
23
|
+
// for script resolution
|
24
|
+
// STEP 3 resolve script content from resolved variables
|
1
25
|
export * from './scripts.js';
|
2
26
|
export * from './setup.js';
|
3
27
|
export * from './unset.js';
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCwyQkFBMkI7QUFDM0IsNENBQTRDO0FBQzVDLHlDQUF5QztBQUN6QyxFQUFFO0FBQ0YsMEJBQTBCO0FBQzFCLDBEQUEwRDtBQUMxRCxvREFBb0Q7QUFDcEQsRUFBRTtBQUNGLHdCQUF3QjtBQUN4Qix3REFBd0Q7QUFFeEQsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUMifQ==
|
package/lib/preset/mapping.d.ts
CHANGED
@@ -1,3 +1,9 @@
|
|
1
1
|
import type { ResolvedPresetContext, Template } from 'presetter-types';
|
2
|
+
/**
|
3
|
+
* compute the output paths of all configuration files to be generated
|
4
|
+
* @param template resolved template map
|
5
|
+
* @param context resolved context about the target project and customization
|
6
|
+
* @returns mapping of configuration symlinks to its real path
|
7
|
+
*/
|
2
8
|
export declare function getDestinationMap(template: Record<string, Template>, context: ResolvedPresetContext<'noSymlinks'>): Promise<Record<string, string>>;
|
3
9
|
//# sourceMappingURL=mapping.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../source/preset/mapping.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../source/preset/mapping.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEvE;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAClC,OAAO,EAAE,qBAAqB,CAAC,YAAY,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAqBjC"}
|
package/lib/preset/mapping.js
CHANGED
@@ -1,15 +1,38 @@
|
|
1
|
+
/*
|
2
|
+
* *** MIT LICENSE ***
|
3
|
+
* -------------------------------------------------------------------------
|
4
|
+
* This code may be modified and distributed under the MIT license.
|
5
|
+
* See the LICENSE file for details.
|
6
|
+
* -------------------------------------------------------------------------
|
7
|
+
*
|
8
|
+
* @summary Collection of helpers for mapping content to the target project
|
9
|
+
*
|
10
|
+
* @author Alvis HT Tang <alvis@hilbert.space>
|
11
|
+
* @license MIT
|
12
|
+
* @copyright Copyright (c) 2020 - All Rights Reserved.
|
13
|
+
* -------------------------------------------------------------------------
|
14
|
+
*/
|
1
15
|
import { resolve } from 'node:path';
|
2
16
|
import resolvePackage from 'resolve-pkg';
|
17
|
+
/**
|
18
|
+
* compute the output paths of all configuration files to be generated
|
19
|
+
* @param template resolved template map
|
20
|
+
* @param context resolved context about the target project and customization
|
21
|
+
* @returns mapping of configuration symlinks to its real path
|
22
|
+
*/
|
3
23
|
export async function getDestinationMap(template, context) {
|
4
24
|
const { custom: { noSymlinks }, target: { root, name }, } = context;
|
25
|
+
// make sure we use the path of presetter under the target project, not the one via npx
|
5
26
|
const presetterDir = resolvePackage('presetter', { cwd: root });
|
6
27
|
const outDir = resolve(presetterDir, '..', '.presetter', name);
|
7
28
|
const relativePaths = [...Object.keys(template)];
|
8
29
|
return Object.fromEntries([
|
9
30
|
...relativePaths.map((relativePath) => [
|
10
31
|
relativePath,
|
11
|
-
resolve(
|
32
|
+
resolve(
|
33
|
+
// output on the project root if it's specified as not a symlink
|
34
|
+
noSymlinks.includes(relativePath) ? context.target.root : outDir, relativePath),
|
12
35
|
]),
|
13
36
|
]);
|
14
37
|
}
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvbWFwcGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxPQUFPLGNBQWMsTUFBTSxhQUFhLENBQUM7QUFJekM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxRQUFrQyxFQUNsQyxPQUE0QztJQUU1QyxNQUFNLEVBQ0osTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQ3RCLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FDdkIsR0FBRyxPQUFPLENBQUM7SUFDWix1RkFBdUY7SUFDdkYsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFhLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUVoRSxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRWpELE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUN4QixHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQW9CLEVBQUUsQ0FBQztZQUN2RCxZQUFZO1lBQ1osT0FBTztZQUNMLGdFQUFnRTtZQUNoRSxVQUFVLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUNoRSxZQUFZLENBQ2I7U0FDRixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
|
@@ -1,6 +1,25 @@
|
|
1
1
|
import type { PresetterConfig } from 'presetter-types';
|
2
|
+
/**
|
3
|
+
* get presetter configuration files recursively from the current base up to the monorepo root, if there is one
|
4
|
+
* @param base the base directory to start searching for the configuration file
|
5
|
+
* @returns list of presetter configuration files
|
6
|
+
*/
|
2
7
|
export declare function getPresetterRCPaths(base: string): Promise<string[]>;
|
8
|
+
/**
|
9
|
+
* get the .presetterrc configuration file content
|
10
|
+
* @param root the base directory in which the configuration file should be located
|
11
|
+
* @returns content of the configuration file
|
12
|
+
*/
|
3
13
|
export declare function getPresetterRC(root: string): Promise<PresetterConfig>;
|
14
|
+
/**
|
15
|
+
* update .presetterrc configuration file content
|
16
|
+
* @param root the base directory in which the configuration file should be located
|
17
|
+
* @param config content to be merged with the existing configuration file
|
18
|
+
*/
|
4
19
|
export declare function updatePresetterRC(root: string, config: PresetterConfig): Promise<void>;
|
20
|
+
/**
|
21
|
+
* check that the configuration is valid
|
22
|
+
* @param value content from a configuration file
|
23
|
+
*/
|
5
24
|
export declare function assertPresetterRC(value: unknown): asserts value is PresetterConfig;
|
6
25
|
//# sourceMappingURL=presetterRC.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"presetterRC.d.ts","sourceRoot":"","sources":["../../source/preset/presetterRC.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"presetterRC.d.ts","sourceRoot":"","sources":["../../source/preset/presetterRC.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAQvD;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAazE;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAkB3E;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,eAAe,CAOlC"}
|
@@ -1,21 +1,48 @@
|
|
1
|
+
/*
|
2
|
+
* *** MIT LICENSE ***
|
3
|
+
* -------------------------------------------------------------------------
|
4
|
+
* This code may be modified and distributed under the MIT license.
|
5
|
+
* See the LICENSE file for details.
|
6
|
+
* -------------------------------------------------------------------------
|
7
|
+
*
|
8
|
+
* @summary Procedures for related to preset configuration
|
9
|
+
*
|
10
|
+
* @author Alvis HT Tang <alvis@hilbert.space>
|
11
|
+
* @license MIT
|
12
|
+
* @copyright Copyright (c) 2020 - All Rights Reserved.
|
13
|
+
* -------------------------------------------------------------------------
|
14
|
+
*/
|
1
15
|
import { existsSync, writeFileSync } from 'node:fs';
|
2
16
|
import { dirname, resolve } from 'node:path';
|
3
17
|
import { readPackageUp } from 'read-pkg-up';
|
4
18
|
import { loadFile } from '../io.js';
|
5
19
|
import { isJSON, merge } from '../template.js';
|
20
|
+
/** presetter configuration filename */
|
6
21
|
const PRESETTERRC = '.presetterrc';
|
7
22
|
const JSON_INDENT = 2;
|
23
|
+
/**
|
24
|
+
* get presetter configuration files recursively from the current base up to the monorepo root, if there is one
|
25
|
+
* @param base the base directory to start searching for the configuration file
|
26
|
+
* @returns list of presetter configuration files
|
27
|
+
*/
|
8
28
|
export async function getPresetterRCPaths(base) {
|
9
29
|
const filesFromBase = ['', '.json']
|
10
30
|
.map((ext) => resolve(base, `${PRESETTERRC}${ext}`))
|
11
31
|
.filter(existsSync);
|
12
32
|
const parent = await readPackageUp({ cwd: dirname(base) });
|
33
|
+
// if the base is the root of a monorepo, stop searching
|
13
34
|
const filesFromParent = parent?.path
|
14
35
|
? await getPresetterRCPaths(dirname(base))
|
15
36
|
: [];
|
16
37
|
return [...filesFromParent, ...filesFromBase];
|
17
38
|
}
|
39
|
+
/**
|
40
|
+
* get the .presetterrc configuration file content
|
41
|
+
* @param root the base directory in which the configuration file should be located
|
42
|
+
* @returns content of the configuration file
|
43
|
+
*/
|
18
44
|
export async function getPresetterRC(root) {
|
45
|
+
// locate all possible configuration files
|
19
46
|
const paths = await getPresetterRCPaths(root);
|
20
47
|
if (!paths.length) {
|
21
48
|
throw new Error('missing presetter configuration file');
|
@@ -25,14 +52,23 @@ export async function getPresetterRC(root) {
|
|
25
52
|
assertPresetterRC(mergedConfig);
|
26
53
|
return mergedConfig;
|
27
54
|
}
|
55
|
+
/**
|
56
|
+
* update .presetterrc configuration file content
|
57
|
+
* @param root the base directory in which the configuration file should be located
|
58
|
+
* @param config content to be merged with the existing configuration file
|
59
|
+
*/
|
28
60
|
export async function updatePresetterRC(root, config) {
|
29
61
|
const existingPresetterRC = await getPresetterRC(root).catch(() => ({}));
|
30
62
|
writeFileSync(resolve(root, `${PRESETTERRC}.json`), JSON.stringify(merge(existingPresetterRC, config), null, JSON_INDENT));
|
31
63
|
}
|
64
|
+
/**
|
65
|
+
* check that the configuration is valid
|
66
|
+
* @param value content from a configuration file
|
67
|
+
*/
|
32
68
|
export function assertPresetterRC(value) {
|
33
69
|
if (!isJSON(value) ||
|
34
70
|
(typeof value['preset'] !== 'string' && !Array.isArray(value['preset']))) {
|
35
71
|
throw new Error(`invalid presetter configuration file`);
|
36
72
|
}
|
37
73
|
}
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0dGVyUkMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L3ByZXNldHRlclJDLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFLNUMsdUNBQXVDO0FBQ3ZDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQztBQUVuQyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFFdEI7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsSUFBWTtJQUNwRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUM7U0FDaEMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDbkQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRCLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFM0Qsd0RBQXdEO0lBQ3hELE1BQU0sZUFBZSxHQUFHLE1BQU0sRUFBRSxJQUFJO1FBQ2xDLENBQUMsQ0FBQyxNQUFNLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRVAsT0FBTyxDQUFDLEdBQUcsZUFBZSxFQUFFLEdBQUcsYUFBYSxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FBQyxJQUFZO0lBQy9DLDBDQUEwQztJQUMxQyxNQUFNLEtBQUssR0FBRyxNQUFNLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTlDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztLQUN6RDtJQUVELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFjLENBQUMsQ0FBQztJQUV6RSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUNqQyxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLEVBQ3JELEVBQUUsQ0FDSCxDQUFDO0lBRUYsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFaEMsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxJQUFZLEVBQ1osTUFBdUI7SUFFdkIsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXpFLGFBQWEsQ0FDWCxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsV0FBVyxPQUFPLENBQUMsRUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUN0RSxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsS0FBYztJQUVkLElBQ0UsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2QsQ0FBQyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQ3hFO1FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyJ9
|
package/lib/preset/scripts.d.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../../source/preset/scripts.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../../source/preset/scripts.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAMlE"}
|
package/lib/preset/scripts.js
CHANGED
@@ -1,10 +1,28 @@
|
|
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 computing the final scripts
|
9
|
+
*
|
10
|
+
* @author Alvis HT Tang <alvis@hilbert.space>
|
11
|
+
* @license MIT
|
12
|
+
* @copyright Copyright (c) 2020 - All Rights Reserved.
|
13
|
+
* -------------------------------------------------------------------------
|
14
|
+
*/
|
1
15
|
import { resolveContext, resolveScripts } from '../content.js';
|
2
16
|
import { getContext } from './context.js';
|
3
17
|
import { getPresetGraph } from './graph.js';
|
18
|
+
/**
|
19
|
+
* get the merged scripts templates
|
20
|
+
* @returns scripts template
|
21
|
+
*/
|
4
22
|
export async function getScripts() {
|
5
23
|
const context = await getContext();
|
6
24
|
const graph = await getPresetGraph(context);
|
7
25
|
const resolvedContext = await resolveContext({ graph, context });
|
8
26
|
return resolveScripts({ graph, context: resolvedContext });
|
9
27
|
}
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wcmVzZXQvc2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXpDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsVUFBVTtJQUM5QixNQUFNLE9BQU8sR0FBRyxNQUFNLFVBQVUsRUFBRSxDQUFDO0lBQ25DLE1BQU0sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLE1BQU0sZUFBZSxHQUFHLE1BQU0sY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFFakUsT0FBTyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFDN0QsQ0FBQyJ9
|
package/lib/preset/setup.d.ts
CHANGED
@@ -1,7 +1,17 @@
|
|
1
|
+
/** collection of options for bootstrapping */
|
1
2
|
interface BootstrapOptions {
|
3
|
+
/** whether to skip all checks */
|
2
4
|
force?: boolean;
|
3
5
|
}
|
6
|
+
/**
|
7
|
+
* bootstrap the preset to the current project root
|
8
|
+
* @param options collection of options
|
9
|
+
*/
|
4
10
|
export declare function bootstrapPreset(options?: BootstrapOptions): Promise<void>;
|
11
|
+
/**
|
12
|
+
* adopt a preset to the project
|
13
|
+
* @param uris list of name or git url of the preset
|
14
|
+
*/
|
5
15
|
export declare function setupPreset(...uris: string[]): Promise<void>;
|
6
16
|
export {};
|
7
17
|
//# sourceMappingURL=setup.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../source/preset/setup.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../source/preset/setup.ts"],"names":[],"mappings":"AAgCA,8CAA8C;AAC9C,UAAU,gBAAgB;IACxB,iCAAiC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoClE"}
|
package/lib/preset/setup.js
CHANGED
@@ -1,3 +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
15
|
import { info } from 'node:console';
|
2
16
|
import { dirname } from 'node:path';
|
3
17
|
import { readPackage } from 'read-pkg';
|
@@ -6,17 +20,30 @@ import { arePeerPackagesAutoInstalled, getPackage, reifyDependencies, } from '..
|
|
6
20
|
import { bootstrapContent } from './content.js';
|
7
21
|
import { getContext } from './context.js';
|
8
22
|
import { updatePresetterRC } from './presetterRC.js';
|
23
|
+
/**
|
24
|
+
* bootstrap the preset to the current project root
|
25
|
+
* @param options collection of options
|
26
|
+
*/
|
9
27
|
export async function bootstrapPreset(options) {
|
10
28
|
const context = await getContext();
|
29
|
+
// install all related packages first
|
11
30
|
if (!arePeerPackagesAutoInstalled()) {
|
12
31
|
await reifyDependencies({ root: context.target.root });
|
13
32
|
}
|
33
|
+
// generate configurations
|
14
34
|
await bootstrapContent(context, options);
|
15
35
|
}
|
36
|
+
/**
|
37
|
+
* adopt a preset to the project
|
38
|
+
* @param uris list of name or git url of the preset
|
39
|
+
*/
|
16
40
|
export async function setupPreset(...uris) {
|
41
|
+
// NOTE: comparing packages before and after installation is the only reliable way
|
42
|
+
// to extract the name of the preset in case it's given as a git url or file path etc.
|
17
43
|
const { path } = await getPackage();
|
18
44
|
const root = dirname(path);
|
19
45
|
const packageBefore = (await readPackage({ cwd: root })).devDependencies;
|
46
|
+
// install presetter & the preset
|
20
47
|
info(`Installing ${uris.join(' ')}... it may take a few moment...`);
|
21
48
|
await reifyDependencies({
|
22
49
|
root,
|
@@ -24,20 +51,30 @@ export async function setupPreset(...uris) {
|
|
24
51
|
saveAs: 'dev',
|
25
52
|
lockFile: true,
|
26
53
|
});
|
54
|
+
// extract the name of the installed preset
|
27
55
|
const packageAfter = (await readPackage({ cwd: root })).devDependencies;
|
28
56
|
const newPackages = getNewPackages({ ...packageBefore }, { ...packageAfter });
|
29
57
|
const preset = newPackages.filter((name) => name !== 'presetter');
|
30
58
|
info('Updating .presetterrc.json & package.json');
|
59
|
+
// update .presetterrc.json
|
31
60
|
await updatePresetterRC(root, { preset });
|
61
|
+
// bootstrap configuration files with the new .presetterrc.json
|
32
62
|
const context = await getContext();
|
33
63
|
await bootstrapContent(context);
|
64
|
+
// insert post install script if not preset
|
34
65
|
const json = context.target.package;
|
35
66
|
const scripts = { prepare: 'presetter bootstrap', ...json.scripts };
|
36
67
|
const patched = { ...json, scripts };
|
37
68
|
await writePackage(root, patched);
|
38
69
|
info('Done. Enjoy coding!');
|
39
70
|
}
|
71
|
+
/**
|
72
|
+
* get a list of new packages installed by comparing the before and after state of devDependencies in package.json
|
73
|
+
* @param before before state of devDependencies in package.json
|
74
|
+
* @param after after state of devDependencies in package.json
|
75
|
+
* @returns list of new package names
|
76
|
+
*/
|
40
77
|
function getNewPackages(before, after) {
|
41
78
|
return Object.keys(after).filter((name) => !before[name]);
|
42
79
|
}
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L3NldHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXpDLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsVUFBVSxFQUNWLGlCQUFpQixHQUNsQixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVbEQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQ25DLE9BQTBCO0lBRTFCLE1BQU0sT0FBTyxHQUFHLE1BQU0sVUFBVSxFQUFFLENBQUM7SUFFbkMscUNBQXFDO0lBQ3JDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxFQUFFO1FBQ25DLE1BQU0saUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQ3hEO0lBRUQsMEJBQTBCO0lBQzFCLE1BQU0sZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxHQUFHLElBQWM7SUFDakQsa0ZBQWtGO0lBQ2xGLHNGQUFzRjtJQUN0RixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxVQUFVLEVBQUUsQ0FBQztJQUNwQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO0lBRXpFLGlDQUFpQztJQUNqQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0saUJBQWlCLENBQUM7UUFDdEIsSUFBSTtRQUNKLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUMzQixNQUFNLEVBQUUsS0FBSztRQUNiLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQyxDQUFDO0lBRUgsMkNBQTJDO0lBQzNDLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBTSxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztJQUN4RSxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsRUFBRSxHQUFHLGFBQWEsRUFBRSxFQUFFLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQztJQUVsRSxJQUFJLENBQUMsMkNBQTJDLENBQUMsQ0FBQztJQUNsRCwyQkFBMkI7SUFDM0IsTUFBTSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRTFDLCtEQUErRDtJQUMvRCxNQUFNLE9BQU8sR0FBRyxNQUFNLFVBQVUsRUFBRSxDQUFDO0lBQ25DLE1BQU0sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFaEMsMkNBQTJDO0lBQzNDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQ3BDLE1BQU0sT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BFLE1BQU0sT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDckMsTUFBTSxZQUFZLENBQUMsSUFBSSxFQUFFLE9BQStDLENBQUMsQ0FBQztJQUUxRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLGNBQWMsQ0FDckIsTUFBOEIsRUFDOUIsS0FBNkI7SUFFN0IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBa0IsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDNUUsQ0FBQyJ9
|
package/lib/preset/unset.d.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"unset.d.ts","sourceRoot":"","sources":["../../source/preset/unset.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"unset.d.ts","sourceRoot":"","sources":["../../source/preset/unset.ts"],"names":[],"mappings":"AAqBA;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAQjD"}
|
package/lib/preset/unset.js
CHANGED
@@ -1,8 +1,25 @@
|
|
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 unsetting 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
15
|
import { resolveContext, resolveTemplate } from '../content.js';
|
2
16
|
import { unlinkFiles } from '../io.js';
|
3
17
|
import { getContext } from './context.js';
|
4
18
|
import { getPresetGraph } from './graph.js';
|
5
19
|
import { getDestinationMap } from './mapping.js';
|
20
|
+
/**
|
21
|
+
* uninstall the preset from the current project root
|
22
|
+
*/
|
6
23
|
export async function unsetPreset() {
|
7
24
|
const context = await getContext();
|
8
25
|
const graph = await getPresetGraph(context);
|
@@ -11,4 +28,4 @@ export async function unsetPreset() {
|
|
11
28
|
const configurationLink = await getDestinationMap(content, resolvedContext);
|
12
29
|
unlinkFiles(context.target.root, configurationLink);
|
13
30
|
}
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcHJlc2V0L3Vuc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFOUM7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVc7SUFDL0IsTUFBTSxPQUFPLEdBQUcsTUFBTSxVQUFVLEVBQUUsQ0FBQztJQUNuQyxNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxNQUFNLGVBQWUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFFNUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDdEQsQ0FBQyJ9
|
package/lib/resolution.d.ts
CHANGED
@@ -1,5 +1,22 @@
|
|
1
1
|
import type { DynamicAsset, DynamicAssetField, Generator, PresetAsset, PresetterConfig, RequiredResolution, ResolvedPresetContext, Template } from 'presetter-types';
|
2
|
+
/**
|
3
|
+
* compute the corresponding field within the config field of .presetterrc
|
4
|
+
* @param filename link name
|
5
|
+
* @returns field name in config
|
6
|
+
*/
|
2
7
|
export declare function getConfigKey(filename: string): string;
|
8
|
+
/**
|
9
|
+
* resolve a dynamic asset content
|
10
|
+
* @param map a dynamic map to be resolved
|
11
|
+
* @param context arguments to be passed to the generator function
|
12
|
+
* @returns content of the resolved field
|
13
|
+
*/
|
3
14
|
export declare function loadDynamicMap<F extends DynamicAssetField>(map: PresetAsset[F], context: ResolvedPresetContext<RequiredResolution<F>>): Promise<Record<string, DynamicAsset<F>>>;
|
15
|
+
/**
|
16
|
+
* load a potentially dynamic content
|
17
|
+
* @param value content to be loaded
|
18
|
+
* @param context context to be supplied to the generator
|
19
|
+
* @returns resolved content
|
20
|
+
*/
|
4
21
|
export declare function loadDynamic<R extends Template | string[], K extends keyof PresetterConfig>(value: string | R | Generator<R, K>, context: ResolvedPresetContext<K>): Promise<R>;
|
5
22
|
//# sourceMappingURL=resolution.d.ts.map
|
package/lib/resolution.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resolution.d.ts","sourceRoot":"","sources":["../source/resolution.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,QAAQ,EACT,MAAM,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"resolution.d.ts","sourceRoot":"","sources":["../source/resolution.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,QAAQ,EACT,MAAM,iBAAiB,CAAC;AAEzB;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,iBAAiB,EAC9D,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GACpD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAgB1C;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,CAAC,SAAS,QAAQ,GAAG,MAAM,EAAE,EAC7B,CAAC,SAAS,MAAM,eAAe,EAE/B,KAAK,EACD,MAAM,GACN,CAAC,GACD,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,CAAC,CAAC,CAQZ"}
|