presetter 4.4.2 → 4.6.0
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/content.d.ts +78 -0
- package/lib/content.d.ts.map +1 -0
- package/lib/content.js +126 -1
- package/lib/directive.d.ts +24 -0
- package/lib/directive.d.ts.map +1 -0
- package/lib/directive.js +85 -1
- package/lib/error.d.ts +7 -0
- package/lib/error.d.ts.map +1 -0
- package/lib/error.js +21 -1
- package/lib/executable/entry.d.ts +6 -0
- package/lib/executable/entry.d.ts.map +1 -0
- package/lib/executable/entry.js +24 -1
- package/lib/executable/error.d.ts +5 -0
- package/lib/executable/error.d.ts.map +1 -0
- package/lib/executable/error.js +23 -1
- package/lib/executable/index.d.ts +1 -0
- package/lib/executable/index.d.ts.map +1 -0
- package/lib/executable/index.js +16 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +16 -1
- package/lib/io.d.ts +40 -0
- package/lib/io.d.ts.map +1 -0
- package/lib/io.js +96 -11
- package/lib/package.d.ts +23 -0
- package/lib/package.d.ts.map +1 -0
- package/lib/package.js +53 -3
- package/lib/preset/content.d.ts +8 -0
- package/lib/preset/content.d.ts.map +1 -0
- package/lib/preset/content.js +20 -1
- package/lib/preset/context.d.ts +5 -0
- package/lib/preset/context.d.ts.map +1 -0
- package/lib/preset/context.js +19 -1
- package/lib/preset/graph.d.ts +18 -0
- package/lib/preset/graph.d.ts.map +1 -0
- package/lib/preset/graph.js +34 -1
- package/lib/preset/index.d.ts +1 -0
- package/lib/preset/index.d.ts.map +1 -0
- package/lib/preset/index.js +25 -1
- package/lib/preset/mapping.d.ts +7 -0
- package/lib/preset/mapping.d.ts.map +1 -0
- package/lib/preset/mapping.js +27 -4
- package/lib/preset/presetterRC.d.ts +20 -0
- package/lib/preset/presetterRC.d.ts.map +1 -0
- package/lib/preset/presetterRC.js +37 -1
- package/lib/preset/scripts.d.ts +5 -0
- package/lib/preset/scripts.d.ts.map +1 -0
- package/lib/preset/scripts.js +19 -1
- package/lib/preset/setup.d.ts +11 -0
- package/lib/preset/setup.d.ts.map +1 -0
- package/lib/preset/setup.js +38 -1
- package/lib/preset/unset.d.ts +4 -0
- package/lib/preset/unset.d.ts.map +1 -0
- package/lib/preset/unset.js +18 -1
- package/lib/resolution.d.ts +18 -0
- package/lib/resolution.d.ts.map +1 -0
- package/lib/resolution.js +33 -1
- package/lib/run.d.ts +8 -0
- package/lib/run.d.ts.map +1 -0
- package/lib/run.js +77 -1
- package/lib/scripts.d.ts +13 -0
- package/lib/scripts.d.ts.map +1 -0
- package/lib/scripts.js +50 -1
- package/lib/task.d.ts +19 -0
- package/lib/task.d.ts.map +1 -0
- package/lib/task.js +40 -2
- package/lib/template.d.ts +48 -0
- package/lib/template.d.ts.map +1 -0
- package/lib/template.js +96 -2
- package/lib/utilities/index.d.ts +1 -0
- package/lib/utilities/index.d.ts.map +1 -0
- package/lib/utilities/index.js +16 -1
- package/lib/utilities/mapValues.d.ts +7 -0
- package/lib/utilities/mapValues.d.ts.map +1 -0
- 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,2 +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>;
|
7
|
+
//# sourceMappingURL=context.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../source/preset/context.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,CAUzD"}
|
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,4 +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>;
|
22
|
+
//# sourceMappingURL=graph.d.ts.map
|
@@ -0,0 +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;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.d.ts
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/preset/index.ts"],"names":[],"mappings":"AA0BA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
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,2 +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>>;
|
9
|
+
//# sourceMappingURL=mapping.d.ts.map
|
@@ -0,0 +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;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
|
-
const { custom: { noSymlinks }, target: { root }, } = context;
|
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
|
-
const outDir = resolve(presetterDir, '
|
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,5 +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;
|
25
|
+
//# sourceMappingURL=presetterRC.d.ts.map
|
@@ -0,0 +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;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
@@ -0,0 +1 @@
|
|
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,6 +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 {};
|
17
|
+
//# sourceMappingURL=setup.d.ts.map
|
@@ -0,0 +1 @@
|
|
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
@@ -0,0 +1 @@
|
|
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,4 +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>;
|
22
|
+
//# sourceMappingURL=resolution.d.ts.map
|
@@ -0,0 +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;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"}
|