@devbie/newbie-cli 0.1.0-stage.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/dist/assemble/assets.d.ts +9 -0
- package/dist/assemble/assets.js +49 -0
- package/dist/assemble/assets.js.map +1 -0
- package/dist/assemble/dependencies.d.ts +10 -0
- package/dist/assemble/dependencies.js +36 -0
- package/dist/assemble/dependencies.js.map +1 -0
- package/dist/assemble/env.d.ts +15 -0
- package/dist/assemble/env.js +79 -0
- package/dist/assemble/env.js.map +1 -0
- package/dist/assemble/modules-copy.d.ts +13 -0
- package/dist/assemble/modules-copy.js +36 -0
- package/dist/assemble/modules-copy.js.map +1 -0
- package/dist/assemble/modules.d.ts +8 -0
- package/dist/assemble/modules.js +86 -0
- package/dist/assemble/modules.js.map +1 -0
- package/dist/assemble/pipeline.d.ts +17 -0
- package/dist/assemble/pipeline.js +143 -0
- package/dist/assemble/pipeline.js.map +1 -0
- package/dist/assemble/schema.d.ts +10 -0
- package/dist/assemble/schema.js +64 -0
- package/dist/assemble/schema.js.map +1 -0
- package/dist/assemble/types.d.ts +18 -0
- package/dist/assemble/types.js +3 -0
- package/dist/assemble/types.js.map +1 -0
- package/dist/commands/agent.d.ts +1 -0
- package/dist/commands/agent.js +16 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/apply.d.ts +6 -0
- package/dist/commands/apply.js +52 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/check.d.ts +2 -0
- package/dist/commands/check.js +37 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/config.d.ts +7 -0
- package/dist/commands/config.js +82 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create.d.ts +16 -0
- package/dist/commands/create.js +89 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/default.d.ts +2 -0
- package/dist/commands/default.js +69 -0
- package/dist/commands/default.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.js +145 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/env.d.ts +7 -0
- package/dist/commands/env.js +324 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/install.d.ts +4 -0
- package/dist/commands/install.js +45 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/shared.d.ts +19 -0
- package/dist/commands/shared.js +54 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/commands/status.d.ts +4 -0
- package/dist/commands/status.js +62 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update-template.d.ts +6 -0
- package/dist/commands/update-template.js +83 -0
- package/dist/commands/update-template.js.map +1 -0
- package/dist/commands/update.d.ts +6 -0
- package/dist/commands/update.js +129 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/constants/paths.d.ts +12 -0
- package/dist/constants/paths.js +19 -0
- package/dist/constants/paths.js.map +1 -0
- package/dist/core/assets.d.ts +8 -0
- package/dist/core/assets.js +30 -0
- package/dist/core/assets.js.map +1 -0
- package/dist/core/dependency-plan.d.ts +12 -0
- package/dist/core/dependency-plan.js +42 -0
- package/dist/core/dependency-plan.js.map +1 -0
- package/dist/core/drift.d.ts +9 -0
- package/dist/core/drift.js +34 -0
- package/dist/core/drift.js.map +1 -0
- package/dist/core/env-file.d.ts +19 -0
- package/dist/core/env-file.js +184 -0
- package/dist/core/env-file.js.map +1 -0
- package/dist/core/module-manifest.d.ts +19 -0
- package/dist/core/module-manifest.js +48 -0
- package/dist/core/module-manifest.js.map +1 -0
- package/dist/core/modules-state.d.ts +24 -0
- package/dist/core/modules-state.js +81 -0
- package/dist/core/modules-state.js.map +1 -0
- package/dist/core/prisma-schema.d.ts +3 -0
- package/dist/core/prisma-schema.js +38 -0
- package/dist/core/prisma-schema.js.map +1 -0
- package/dist/core/semver.d.ts +9 -0
- package/dist/core/semver.js +32 -0
- package/dist/core/semver.js.map +1 -0
- package/dist/core/template-sync.d.ts +19 -0
- package/dist/core/template-sync.js +97 -0
- package/dist/core/template-sync.js.map +1 -0
- package/dist/core/unified-diff.d.ts +1 -0
- package/dist/core/unified-diff.js +103 -0
- package/dist/core/unified-diff.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +202 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/check.d.ts +1 -0
- package/dist/lib/check.js +31 -0
- package/dist/lib/check.js.map +1 -0
- package/dist/lib/drift.d.ts +5 -0
- package/dist/lib/drift.js +142 -0
- package/dist/lib/drift.js.map +1 -0
- package/dist/lib/env-tool-config.d.ts +17 -0
- package/dist/lib/env-tool-config.js +32 -0
- package/dist/lib/env-tool-config.js.map +1 -0
- package/dist/lib/errors.d.ts +5 -0
- package/dist/lib/errors.js +20 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/exec.d.ts +13 -0
- package/dist/lib/exec.js +40 -0
- package/dist/lib/exec.js.map +1 -0
- package/dist/lib/fs-util.d.ts +1 -0
- package/dist/lib/fs-util.js +18 -0
- package/dist/lib/fs-util.js.map +1 -0
- package/dist/lib/issues.d.ts +8 -0
- package/dist/lib/issues.js +31 -0
- package/dist/lib/issues.js.map +1 -0
- package/dist/lib/loading.d.ts +1 -0
- package/dist/lib/loading.js +31 -0
- package/dist/lib/loading.js.map +1 -0
- package/dist/lib/module-install.d.ts +5 -0
- package/dist/lib/module-install.js +54 -0
- package/dist/lib/module-install.js.map +1 -0
- package/dist/lib/modules-state.d.ts +6 -0
- package/dist/lib/modules-state.js +51 -0
- package/dist/lib/modules-state.js.map +1 -0
- package/dist/lib/registry.d.ts +23 -0
- package/dist/lib/registry.js +182 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/sink.d.ts +10 -0
- package/dist/lib/sink.js +56 -0
- package/dist/lib/sink.js.map +1 -0
- package/dist/lib/version.d.ts +1 -0
- package/dist/lib/version.js +19 -0
- package/dist/lib/version.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runUpdate = runUpdate;
|
|
7
|
+
const figlet_1 = __importDefault(require("figlet"));
|
|
8
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
9
|
+
const colorette_1 = require("colorette");
|
|
10
|
+
const pipeline_1 = require("../assemble/pipeline");
|
|
11
|
+
const drift_1 = require("../core/drift");
|
|
12
|
+
const modules_state_1 = require("../core/modules-state");
|
|
13
|
+
const drift_2 = require("../lib/drift");
|
|
14
|
+
const fs_util_1 = require("../lib/fs-util");
|
|
15
|
+
const paths_1 = require("../constants/paths");
|
|
16
|
+
const modules_state_2 = require("../lib/modules-state");
|
|
17
|
+
const shared_1 = require("./shared");
|
|
18
|
+
const short = (commit) => commit ? commit.slice(0, 7) : "unknown";
|
|
19
|
+
async function runUpdate(options) {
|
|
20
|
+
console.info(figlet_1.default.textSync("Newbie", {
|
|
21
|
+
font: "Epic",
|
|
22
|
+
width: 80,
|
|
23
|
+
whitespaceBreak: true,
|
|
24
|
+
}));
|
|
25
|
+
const { ctx } = await (0, shared_1.createContext)(options, { fetch: true });
|
|
26
|
+
const { cwd, sink, registry, state } = ctx;
|
|
27
|
+
const keys = (0, modules_state_1.moduleKeys)(state);
|
|
28
|
+
if (keys.length === 0) {
|
|
29
|
+
console.info("\n[info] No modules are enabled.\n");
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const targetCommit = registry.sourceCommit;
|
|
33
|
+
const inspections = [];
|
|
34
|
+
for (const key of keys) {
|
|
35
|
+
process.stdout.write(`Checking ${key}...\r`);
|
|
36
|
+
const record = state.modules.find((entry) => entry.key === key);
|
|
37
|
+
const fromCommit = record?.sourceCommit ?? null;
|
|
38
|
+
const base = {
|
|
39
|
+
key,
|
|
40
|
+
status: "up-to-date",
|
|
41
|
+
fromCommit,
|
|
42
|
+
toCommit: targetCommit,
|
|
43
|
+
patchIds: [],
|
|
44
|
+
};
|
|
45
|
+
if (!(await (0, fs_util_1.fileExists)(cwd, `${paths_1.MODULES_DIR}/${key}`))) {
|
|
46
|
+
inspections.push({ ...base, status: "missing" });
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (fromCommit && targetCommit && fromCommit === targetCommit) {
|
|
50
|
+
inspections.push(base);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (fromCommit && !options.force) {
|
|
54
|
+
const pristine = await (0, drift_2.snapshotPristineModule)(registry, key, fromCommit);
|
|
55
|
+
if (pristine) {
|
|
56
|
+
const drift = (0, drift_1.diffSnapshots)(await (0, drift_2.snapshotInstalledModule)(cwd, key), pristine);
|
|
57
|
+
if (!drift.clean) {
|
|
58
|
+
inspections.push({
|
|
59
|
+
...base,
|
|
60
|
+
status: "drifted",
|
|
61
|
+
patchIds: (0, drift_1.driftPatchIds)(drift),
|
|
62
|
+
});
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
inspections.push({ ...base, status: "update-available" });
|
|
68
|
+
}
|
|
69
|
+
process.stdout.write("\x1b[2K\r");
|
|
70
|
+
for (const result of inspections) {
|
|
71
|
+
if (result.status === "missing") {
|
|
72
|
+
console.info((0, colorette_1.yellow)(`[skip] ${result.key}: directory missing; run 'newbie install'.`));
|
|
73
|
+
}
|
|
74
|
+
else if (result.status === "drifted") {
|
|
75
|
+
console.info((0, colorette_1.yellow)(`[skip] ${result.key}: local changes detected (${result.patchIds.length} file(s)); re-run with --force to overwrite.`));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const updatable = inspections.filter((result) => result.status === "update-available");
|
|
79
|
+
if (updatable.length === 0) {
|
|
80
|
+
console.info((0, colorette_1.green)("\n[info] All modules are up to date.\n"));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
let selected;
|
|
84
|
+
if (options.all || options.dryRun) {
|
|
85
|
+
selected = updatable;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
const selectedKeys = await (0, prompts_1.checkbox)({
|
|
89
|
+
message: "Which modules do you want to update:",
|
|
90
|
+
choices: updatable.map((result) => ({
|
|
91
|
+
value: result.key,
|
|
92
|
+
name: `${result.key} ${(0, colorette_1.inverse)(short(result.fromCommit))} -> ${(0, colorette_1.cyan)(short(result.toCommit))}`,
|
|
93
|
+
checked: true,
|
|
94
|
+
})),
|
|
95
|
+
pageSize: 100,
|
|
96
|
+
loop: true,
|
|
97
|
+
});
|
|
98
|
+
selected = updatable.filter((result) => selectedKeys.includes(result.key));
|
|
99
|
+
}
|
|
100
|
+
if (selected.length === 0) {
|
|
101
|
+
console.info("\n[info] No modules selected.\n");
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (!options.yes && !options.dryRun) {
|
|
105
|
+
const confirmed = await (0, prompts_1.select)({
|
|
106
|
+
message: `Do you want to UPDATE ${(0, colorette_1.cyan)(selected.map((result) => result.key).join(", "))}?`,
|
|
107
|
+
choices: [
|
|
108
|
+
{ name: "Yes", value: "yes" },
|
|
109
|
+
{ name: "No", value: "no" },
|
|
110
|
+
],
|
|
111
|
+
});
|
|
112
|
+
if (confirmed !== "yes") {
|
|
113
|
+
console.info("\n[info] Update cancelled.\n");
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const selectedKeys = selected.map((result) => result.key);
|
|
118
|
+
await (0, pipeline_1.runSteps)(ctx, {
|
|
119
|
+
added: selectedKeys,
|
|
120
|
+
removed: [],
|
|
121
|
+
enabledKeys: keys,
|
|
122
|
+
});
|
|
123
|
+
if (!sink.dryRun) {
|
|
124
|
+
await (0, modules_state_2.writeModulesState)(cwd, sink, ctx.state);
|
|
125
|
+
}
|
|
126
|
+
ctx.issues.assertEmpty();
|
|
127
|
+
console.info((0, colorette_1.bold)((0, colorette_1.green)("\nC O M P L E T E\n")));
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const MODULES_JSON = "modules.json";
|
|
2
|
+
export declare const MODULES_DIR = "src/modules";
|
|
3
|
+
export declare const MODULES_MODULE_TS = "src/modules/modules.module.ts";
|
|
4
|
+
export declare const MODULES_CONFIG_TS = "src/modules/modules.config.ts";
|
|
5
|
+
export declare const MODULE_MANIFEST_FILE = "newbie.module.json";
|
|
6
|
+
export declare const PRISMA_SCHEMA_MAIN = "prisma/schema.prisma";
|
|
7
|
+
export declare const PRISMA_SCHEMA_MODELS_DIR = "prisma/models";
|
|
8
|
+
export declare const ENV_PATH = ".env";
|
|
9
|
+
export declare const ENV_EXAMPLE_PATH = ".env.example";
|
|
10
|
+
export declare const NEST_CLI_JSON = "nest-cli.json";
|
|
11
|
+
export declare const REGISTRY_MODULES_DIR = "packages/modules";
|
|
12
|
+
export declare const ENV_TOOL_CONFIG_CANDIDATES: string[];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ENV_TOOL_CONFIG_CANDIDATES = exports.REGISTRY_MODULES_DIR = exports.NEST_CLI_JSON = exports.ENV_EXAMPLE_PATH = exports.ENV_PATH = exports.PRISMA_SCHEMA_MODELS_DIR = exports.PRISMA_SCHEMA_MAIN = exports.MODULE_MANIFEST_FILE = exports.MODULES_CONFIG_TS = exports.MODULES_MODULE_TS = exports.MODULES_DIR = exports.MODULES_JSON = void 0;
|
|
4
|
+
exports.MODULES_JSON = "modules.json";
|
|
5
|
+
exports.MODULES_DIR = "src/modules";
|
|
6
|
+
exports.MODULES_MODULE_TS = "src/modules/modules.module.ts";
|
|
7
|
+
exports.MODULES_CONFIG_TS = "src/modules/modules.config.ts";
|
|
8
|
+
exports.MODULE_MANIFEST_FILE = "newbie.module.json";
|
|
9
|
+
exports.PRISMA_SCHEMA_MAIN = "prisma/schema.prisma";
|
|
10
|
+
exports.PRISMA_SCHEMA_MODELS_DIR = "prisma/models";
|
|
11
|
+
exports.ENV_PATH = ".env";
|
|
12
|
+
exports.ENV_EXAMPLE_PATH = ".env.example";
|
|
13
|
+
exports.NEST_CLI_JSON = "nest-cli.json";
|
|
14
|
+
exports.REGISTRY_MODULES_DIR = "packages/modules";
|
|
15
|
+
exports.ENV_TOOL_CONFIG_CANDIDATES = [
|
|
16
|
+
".newbie/env.config.json",
|
|
17
|
+
".newbie-env-tool/.config/config.json",
|
|
18
|
+
];
|
|
19
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/constants/paths.ts"],"names":[],"mappings":";;;AAOa,QAAA,YAAY,GAAG,cAAc,CAAC;AAE9B,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,iBAAiB,GAAG,+BAA+B,CAAC;AACpD,QAAA,iBAAiB,GAAG,+BAA+B,CAAC;AAGpD,QAAA,oBAAoB,GAAG,oBAAoB,CAAC;AAE5C,QAAA,kBAAkB,GAAG,sBAAsB,CAAC;AAC5C,QAAA,wBAAwB,GAAG,eAAe,CAAC;AAE3C,QAAA,QAAQ,GAAG,MAAM,CAAC;AAClB,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAClC,QAAA,aAAa,GAAG,eAAe,CAAC;AAGhC,QAAA,oBAAoB,GAAG,kBAAkB,CAAC;AAG1C,QAAA,0BAA0B,GAAG;IACxC,yBAAyB;IACzB,sCAAsC;CACvC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type NestAsset = string | {
|
|
2
|
+
include: string;
|
|
3
|
+
outDir?: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function isSameAsset(a: NestAsset, b: NestAsset): boolean;
|
|
6
|
+
export declare function addAssets(existing: NestAsset[], additions: NestAsset[]): NestAsset[];
|
|
7
|
+
export declare function removeAssets(existing: NestAsset[], removals: NestAsset[]): NestAsset[];
|
|
8
|
+
export declare function dedupeAssets(assets: NestAsset[]): NestAsset[];
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSameAsset = isSameAsset;
|
|
4
|
+
exports.addAssets = addAssets;
|
|
5
|
+
exports.removeAssets = removeAssets;
|
|
6
|
+
exports.dedupeAssets = dedupeAssets;
|
|
7
|
+
function isSameAsset(a, b) {
|
|
8
|
+
if (typeof a === "string" || typeof b === "string") {
|
|
9
|
+
return a === b;
|
|
10
|
+
}
|
|
11
|
+
return a.include === b.include && (a.outDir ?? null) === (b.outDir ?? null);
|
|
12
|
+
}
|
|
13
|
+
function addAssets(existing, additions) {
|
|
14
|
+
const next = [...existing];
|
|
15
|
+
for (const asset of additions) {
|
|
16
|
+
if (!next.some((candidate) => isSameAsset(candidate, asset))) {
|
|
17
|
+
next.push(asset);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return next;
|
|
21
|
+
}
|
|
22
|
+
function removeAssets(existing, removals) {
|
|
23
|
+
return existing.filter((asset) => !removals.some((removal) => isSameAsset(asset, removal)));
|
|
24
|
+
}
|
|
25
|
+
function dedupeAssets(assets) {
|
|
26
|
+
return assets
|
|
27
|
+
.filter(Boolean)
|
|
28
|
+
.filter((asset, index, all) => all.findIndex((item) => isSameAsset(item, asset)) === index);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/core/assets.ts"],"names":[],"mappings":";;AAOA,kCAKC;AAGD,8BAWC;AAGD,oCAOC;AAGD,oCAOC;AAvCD,SAAgB,WAAW,CAAC,CAAY,EAAE,CAAY;IACpD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;AAC9E,CAAC;AAGD,SAAgB,SAAS,CACvB,QAAqB,EACrB,SAAsB;IAEtB,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAGD,SAAgB,YAAY,CAC1B,QAAqB,EACrB,QAAqB;IAErB,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CACpE,CAAC;AACJ,CAAC;AAGD,SAAgB,YAAY,CAAC,MAAmB;IAC9C,OAAO,MAAM;SACV,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CACL,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CACpB,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,KAAK,CAC9D,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface DependencyDecls {
|
|
2
|
+
dependencies?: Record<string, string>;
|
|
3
|
+
devDependencies?: Record<string, string>;
|
|
4
|
+
}
|
|
5
|
+
export declare function planDependencyRemovals(removedDecls: DependencyDecls[], enabledDecls: DependencyDecls[]): {
|
|
6
|
+
dependencies: string[];
|
|
7
|
+
devDependencies: string[];
|
|
8
|
+
};
|
|
9
|
+
export declare function buildInstallSpecs(decls: DependencyDecls[]): {
|
|
10
|
+
dependencies: string[];
|
|
11
|
+
devDependencies: string[];
|
|
12
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.planDependencyRemovals = planDependencyRemovals;
|
|
4
|
+
exports.buildInstallSpecs = buildInstallSpecs;
|
|
5
|
+
function planDependencyRemovals(removedDecls, enabledDecls) {
|
|
6
|
+
const keptDependencies = new Set();
|
|
7
|
+
const keptDevDependencies = new Set();
|
|
8
|
+
for (const decl of enabledDecls) {
|
|
9
|
+
Object.keys(decl.dependencies ?? {}).forEach((name) => keptDependencies.add(name));
|
|
10
|
+
Object.keys(decl.devDependencies ?? {}).forEach((name) => keptDevDependencies.add(name));
|
|
11
|
+
}
|
|
12
|
+
const removedDependencies = new Set();
|
|
13
|
+
const removedDevDependencies = new Set();
|
|
14
|
+
for (const decl of removedDecls) {
|
|
15
|
+
for (const name of Object.keys(decl.dependencies ?? {})) {
|
|
16
|
+
if (!keptDependencies.has(name))
|
|
17
|
+
removedDependencies.add(name);
|
|
18
|
+
}
|
|
19
|
+
for (const name of Object.keys(decl.devDependencies ?? {})) {
|
|
20
|
+
if (!keptDevDependencies.has(name))
|
|
21
|
+
removedDevDependencies.add(name);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
dependencies: [...removedDependencies],
|
|
26
|
+
devDependencies: [...removedDevDependencies],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function buildInstallSpecs(decls) {
|
|
30
|
+
const dependencies = [];
|
|
31
|
+
const devDependencies = [];
|
|
32
|
+
for (const decl of decls) {
|
|
33
|
+
for (const [name, range] of Object.entries(decl.dependencies ?? {})) {
|
|
34
|
+
dependencies.push(`${name}@${range}`);
|
|
35
|
+
}
|
|
36
|
+
for (const [name, range] of Object.entries(decl.devDependencies ?? {})) {
|
|
37
|
+
devDependencies.push(`${name}@${range}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return { dependencies, devDependencies };
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=dependency-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-plan.js","sourceRoot":"","sources":["../../src/core/dependency-plan.ts"],"names":[],"mappings":";;AAWA,wDAgCC;AAGD,8CAiBC;AApDD,SAAgB,sBAAsB,CACpC,YAA+B,EAC/B,YAA+B;IAE/B,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACpD,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAC3B,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACvD,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAC9B,CAAC;IACJ,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9C,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY,EAAE,CAAC,GAAG,mBAAmB,CAAC;QACtC,eAAe,EAAE,CAAC,GAAG,sBAAsB,CAAC;KAC7C,CAAC;AACJ,CAAC;AAGD,SAAgB,iBAAiB,CAAC,KAAwB;IAIxD,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;YACpE,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,CAAC;YACvE,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type FileSnapshot = ReadonlyMap<string, string>;
|
|
2
|
+
export interface DriftReport {
|
|
3
|
+
added: string[];
|
|
4
|
+
removed: string[];
|
|
5
|
+
changed: string[];
|
|
6
|
+
clean: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function diffSnapshots(local: FileSnapshot, pristine: FileSnapshot): DriftReport;
|
|
9
|
+
export declare function driftPatchIds(report: DriftReport): string[];
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.diffSnapshots = diffSnapshots;
|
|
4
|
+
exports.driftPatchIds = driftPatchIds;
|
|
5
|
+
function diffSnapshots(local, pristine) {
|
|
6
|
+
const added = [];
|
|
7
|
+
const removed = [];
|
|
8
|
+
const changed = [];
|
|
9
|
+
for (const [file, hash] of local) {
|
|
10
|
+
if (!pristine.has(file)) {
|
|
11
|
+
added.push(file);
|
|
12
|
+
}
|
|
13
|
+
else if (pristine.get(file) !== hash) {
|
|
14
|
+
changed.push(file);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
for (const file of pristine.keys()) {
|
|
18
|
+
if (!local.has(file))
|
|
19
|
+
removed.push(file);
|
|
20
|
+
}
|
|
21
|
+
added.sort();
|
|
22
|
+
removed.sort();
|
|
23
|
+
changed.sort();
|
|
24
|
+
return {
|
|
25
|
+
added,
|
|
26
|
+
removed,
|
|
27
|
+
changed,
|
|
28
|
+
clean: added.length === 0 && removed.length === 0 && changed.length === 0,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function driftPatchIds(report) {
|
|
32
|
+
return [...report.added, ...report.changed, ...report.removed].sort();
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=drift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/core/drift.ts"],"names":[],"mappings":";;AAsBA,sCA4BC;AAGD,sCAEC;AAjCD,SAAgB,aAAa,CAC3B,KAAmB,EACnB,QAAsB;IAEtB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,EAAE,CAAC;IACf,OAAO,CAAC,IAAI,EAAE,CAAC;IACf,OAAO;QACL,KAAK;QACL,OAAO;QACP,OAAO;QACP,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;KAC1E,CAAC;AACJ,CAAC;AAGD,SAAgB,aAAa,CAAC,MAAmB;IAC/C,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type EnvLine = {
|
|
2
|
+
kind: "blank";
|
|
3
|
+
} | {
|
|
4
|
+
kind: "comment";
|
|
5
|
+
text: string;
|
|
6
|
+
} | {
|
|
7
|
+
kind: "entry";
|
|
8
|
+
key: string;
|
|
9
|
+
value: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function parseEnv(content: string): EnvLine[];
|
|
12
|
+
export declare function serializeEnv(lines: EnvLine[]): string;
|
|
13
|
+
export declare function envValues(lines: EnvLine[]): Record<string, string>;
|
|
14
|
+
export declare function removeEnvKeys(lines: EnvLine[], keys: ReadonlySet<string>): EnvLine[];
|
|
15
|
+
export declare function upsertEnvSection(lines: EnvLine[], title: string, entries: Record<string, string>): EnvLine[];
|
|
16
|
+
export declare function pruneEmptySections(lines: EnvLine[]): EnvLine[];
|
|
17
|
+
export declare const MODULES_MARKER_START = "# @@newbie-modules-start";
|
|
18
|
+
export declare const MODULES_MARKER_END = "# @@newbie-modules-end";
|
|
19
|
+
export declare function replaceMarkedBlock(content: string, body: string): string;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MODULES_MARKER_END = exports.MODULES_MARKER_START = void 0;
|
|
4
|
+
exports.parseEnv = parseEnv;
|
|
5
|
+
exports.serializeEnv = serializeEnv;
|
|
6
|
+
exports.envValues = envValues;
|
|
7
|
+
exports.removeEnvKeys = removeEnvKeys;
|
|
8
|
+
exports.upsertEnvSection = upsertEnvSection;
|
|
9
|
+
exports.pruneEmptySections = pruneEmptySections;
|
|
10
|
+
exports.replaceMarkedBlock = replaceMarkedBlock;
|
|
11
|
+
const SINGLE_ENTRY_RE = /^\s*(?:export\s+)?([\w.-]+)\s*=\s*([\s\S]*?)\s*$/;
|
|
12
|
+
const SECTION_TITLE_RE = /^# ! (.+) variables\s*$/;
|
|
13
|
+
const DECORATION_RE = /^#\s*-{5,}\s*$/;
|
|
14
|
+
function parseEnv(content) {
|
|
15
|
+
const normalized = content.replace(/\r\n?/g, "\n");
|
|
16
|
+
const rawLines = normalized.split("\n");
|
|
17
|
+
if (rawLines.length > 0 && rawLines[rawLines.length - 1] === "") {
|
|
18
|
+
rawLines.pop();
|
|
19
|
+
}
|
|
20
|
+
const lines = [];
|
|
21
|
+
for (const raw of rawLines) {
|
|
22
|
+
if (raw.trim() === "") {
|
|
23
|
+
lines.push({ kind: "blank" });
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
if (raw.trimStart().startsWith("#")) {
|
|
27
|
+
lines.push({ kind: "comment", text: raw });
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const match = raw.match(SINGLE_ENTRY_RE);
|
|
31
|
+
if (!match) {
|
|
32
|
+
lines.push({ kind: "comment", text: raw });
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const [, key, rawValue] = match;
|
|
36
|
+
lines.push({ kind: "entry", key, value: unquote(rawValue.trim()) });
|
|
37
|
+
}
|
|
38
|
+
return lines;
|
|
39
|
+
}
|
|
40
|
+
function unquote(value) {
|
|
41
|
+
const quote = value[0];
|
|
42
|
+
if (quote === '"' || quote === "'" || quote === "`") {
|
|
43
|
+
if (value[value.length - 1] === quote) {
|
|
44
|
+
return value.slice(1, -1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
function serializeEnv(lines) {
|
|
50
|
+
const text = lines
|
|
51
|
+
.map((line) => {
|
|
52
|
+
if (line.kind === "blank")
|
|
53
|
+
return "";
|
|
54
|
+
if (line.kind === "comment")
|
|
55
|
+
return line.text;
|
|
56
|
+
return `${line.key}=${formatValue(line.value)}`;
|
|
57
|
+
})
|
|
58
|
+
.join("\n");
|
|
59
|
+
return text.length > 0 ? `${text}\n` : "";
|
|
60
|
+
}
|
|
61
|
+
function formatValue(value) {
|
|
62
|
+
if (value.includes("\n") ||
|
|
63
|
+
/^[\s]|[\s]$/.test(value) ||
|
|
64
|
+
value.includes("#")) {
|
|
65
|
+
return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
|
|
66
|
+
}
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
function envValues(lines) {
|
|
70
|
+
const result = {};
|
|
71
|
+
for (const line of lines) {
|
|
72
|
+
if (line.kind === "entry") {
|
|
73
|
+
result[line.key] = line.value;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
function removeEnvKeys(lines, keys) {
|
|
79
|
+
return lines.filter((line) => line.kind !== "entry" || !keys.has(line.key));
|
|
80
|
+
}
|
|
81
|
+
function findSectionRange(lines, title) {
|
|
82
|
+
const titleIndex = lines.findIndex((line) => line.kind === "comment" &&
|
|
83
|
+
line.text.match(SECTION_TITLE_RE)?.[1] === title);
|
|
84
|
+
if (titleIndex === -1)
|
|
85
|
+
return null;
|
|
86
|
+
let start = titleIndex;
|
|
87
|
+
if (titleIndex - 2 >= 0 &&
|
|
88
|
+
lines[titleIndex - 1].kind === "comment" &&
|
|
89
|
+
DECORATION_RE.test(lines[titleIndex - 1].text) &&
|
|
90
|
+
lines[titleIndex - 2].kind === "comment" &&
|
|
91
|
+
DECORATION_RE.test(lines[titleIndex - 2].text)) {
|
|
92
|
+
start = titleIndex - 2;
|
|
93
|
+
}
|
|
94
|
+
let end = lines.length;
|
|
95
|
+
for (let i = titleIndex + 1; i < lines.length; i++) {
|
|
96
|
+
const candidate = lines[i];
|
|
97
|
+
if (candidate.kind === "comment" &&
|
|
98
|
+
DECORATION_RE.test(candidate.text) &&
|
|
99
|
+
lines[i + 2]?.kind === "comment" &&
|
|
100
|
+
SECTION_TITLE_RE.test(lines[i + 2].text)) {
|
|
101
|
+
end = i;
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return { start, end };
|
|
106
|
+
}
|
|
107
|
+
function sectionHeader(title) {
|
|
108
|
+
return [
|
|
109
|
+
{ kind: "blank" },
|
|
110
|
+
{
|
|
111
|
+
kind: "comment",
|
|
112
|
+
text: "# ----------------------------------------------------------------------------------",
|
|
113
|
+
},
|
|
114
|
+
{ kind: "comment", text: `# ! ${title} variables` },
|
|
115
|
+
{
|
|
116
|
+
kind: "comment",
|
|
117
|
+
text: "# ----------------------------------------------------------------------------------",
|
|
118
|
+
},
|
|
119
|
+
];
|
|
120
|
+
}
|
|
121
|
+
function upsertEnvSection(lines, title, entries) {
|
|
122
|
+
const newKeys = Object.keys(entries);
|
|
123
|
+
if (newKeys.length === 0)
|
|
124
|
+
return lines;
|
|
125
|
+
const existingKeys = new Set(Object.keys(envValues(lines)));
|
|
126
|
+
const range = findSectionRange(lines, title);
|
|
127
|
+
if (!range) {
|
|
128
|
+
const next = [...lines];
|
|
129
|
+
next.push(...sectionHeader(title));
|
|
130
|
+
for (const key of newKeys) {
|
|
131
|
+
next.push({ kind: "entry", key, value: entries[key] });
|
|
132
|
+
}
|
|
133
|
+
return next;
|
|
134
|
+
}
|
|
135
|
+
const next = [...lines];
|
|
136
|
+
const insertAt = [];
|
|
137
|
+
for (const key of newKeys) {
|
|
138
|
+
if (!existingKeys.has(key)) {
|
|
139
|
+
insertAt.push({ kind: "entry", key, value: entries[key] });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
next.splice(range.end, 0, ...insertAt);
|
|
143
|
+
return next;
|
|
144
|
+
}
|
|
145
|
+
function pruneEmptySections(lines) {
|
|
146
|
+
const titles = [];
|
|
147
|
+
for (const line of lines) {
|
|
148
|
+
if (line.kind === "comment") {
|
|
149
|
+
const match = line.text.match(SECTION_TITLE_RE);
|
|
150
|
+
if (match)
|
|
151
|
+
titles.push(match[1]);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
let next = lines;
|
|
155
|
+
for (const title of titles) {
|
|
156
|
+
const range = findSectionRange(next, title);
|
|
157
|
+
if (!range)
|
|
158
|
+
continue;
|
|
159
|
+
const body = next.slice(range.start, range.end);
|
|
160
|
+
if (!body.some((line) => line.kind === "entry")) {
|
|
161
|
+
next = [...next.slice(0, range.start), ...next.slice(range.end)];
|
|
162
|
+
if (next[range.start]?.kind === "blank") {
|
|
163
|
+
next = [...next.slice(0, range.start), ...next.slice(range.start + 1)];
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return next;
|
|
168
|
+
}
|
|
169
|
+
exports.MODULES_MARKER_START = "# @@newbie-modules-start";
|
|
170
|
+
exports.MODULES_MARKER_END = "# @@newbie-modules-end";
|
|
171
|
+
function replaceMarkedBlock(content, body) {
|
|
172
|
+
const startIndex = content.indexOf(exports.MODULES_MARKER_START);
|
|
173
|
+
const endIndex = content.indexOf(exports.MODULES_MARKER_END);
|
|
174
|
+
const block = `${exports.MODULES_MARKER_START}\n${body}${exports.MODULES_MARKER_END}\n`;
|
|
175
|
+
if (startIndex !== -1 && endIndex !== -1 && startIndex < endIndex) {
|
|
176
|
+
const lineStart = content.lastIndexOf("\n", startIndex);
|
|
177
|
+
const blockStart = lineStart === -1 ? 0 : lineStart + 1;
|
|
178
|
+
const afterEnd = endIndex + exports.MODULES_MARKER_END.length;
|
|
179
|
+
return `${content.slice(0, blockStart)}${block}${content[afterEnd] === "\n" ? content.slice(afterEnd + 1) : content.slice(afterEnd)}`;
|
|
180
|
+
}
|
|
181
|
+
const separator = content.length === 0 || content.endsWith("\n") ? "" : "\n";
|
|
182
|
+
return `${content}${separator}\n${block}`;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=env-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-file.js","sourceRoot":"","sources":["../../src/core/env-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NestAsset } from "./assets";
|
|
2
|
+
export interface ModuleWiring {
|
|
3
|
+
file: string;
|
|
4
|
+
className: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ModuleManifest {
|
|
7
|
+
key: string;
|
|
8
|
+
module: ModuleWiring;
|
|
9
|
+
schema?: string;
|
|
10
|
+
"config-service"?: Record<string, unknown>;
|
|
11
|
+
env?: Record<string, string>;
|
|
12
|
+
dependencies?: Record<string, string>;
|
|
13
|
+
devDependencies?: Record<string, string>;
|
|
14
|
+
assets?: NestAsset[];
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
}
|
|
17
|
+
export declare function normalizeModuleManifest(raw: unknown, expectedKey?: string): ModuleManifest;
|
|
18
|
+
export declare function moduleImportLine(key: string, manifest: ModuleManifest): string;
|
|
19
|
+
export declare function sanitizeModuleNames(names: string[], knownKeys: ReadonlySet<string>): string[];
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeModuleManifest = normalizeModuleManifest;
|
|
4
|
+
exports.moduleImportLine = moduleImportLine;
|
|
5
|
+
exports.sanitizeModuleNames = sanitizeModuleNames;
|
|
6
|
+
function normalizeModuleManifest(raw, expectedKey) {
|
|
7
|
+
if (!raw || typeof raw !== "object") {
|
|
8
|
+
throw new Error("Invalid newbie.module.json: expected an object.");
|
|
9
|
+
}
|
|
10
|
+
const data = raw;
|
|
11
|
+
if (typeof data.key !== "string" || data.key.length === 0) {
|
|
12
|
+
throw new Error("Invalid newbie.module.json: string 'key' is required.");
|
|
13
|
+
}
|
|
14
|
+
if (expectedKey && data.key !== expectedKey) {
|
|
15
|
+
throw new Error(`Invalid newbie.module.json: key '${data.key}' does not match directory '${expectedKey}'.`);
|
|
16
|
+
}
|
|
17
|
+
const wiring = data.module;
|
|
18
|
+
if (!wiring ||
|
|
19
|
+
typeof wiring.file !== "string" ||
|
|
20
|
+
typeof wiring.className !== "string" ||
|
|
21
|
+
wiring.file.length === 0 ||
|
|
22
|
+
wiring.className.length === 0) {
|
|
23
|
+
throw new Error(`Invalid newbie.module.json for '${data.key}': module.file and module.className strings are required.`);
|
|
24
|
+
}
|
|
25
|
+
const manifest = {
|
|
26
|
+
...data,
|
|
27
|
+
key: data.key,
|
|
28
|
+
module: { file: wiring.file, className: wiring.className },
|
|
29
|
+
};
|
|
30
|
+
if (typeof data.schema !== "string")
|
|
31
|
+
delete manifest.schema;
|
|
32
|
+
return manifest;
|
|
33
|
+
}
|
|
34
|
+
function moduleImportLine(key, manifest) {
|
|
35
|
+
return `import {${manifest.module.className}} from './${key}/${manifest.module.file}';`;
|
|
36
|
+
}
|
|
37
|
+
function sanitizeModuleNames(names, knownKeys) {
|
|
38
|
+
const seen = new Set();
|
|
39
|
+
const result = [];
|
|
40
|
+
for (const name of names.map((name) => name.trim())) {
|
|
41
|
+
if (!knownKeys.has(name) || seen.has(name))
|
|
42
|
+
continue;
|
|
43
|
+
seen.add(name);
|
|
44
|
+
result.push(name);
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=module-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-manifest.js","sourceRoot":"","sources":["../../src/core/module-manifest.ts"],"names":[],"mappings":";;AA8BA,0DAsCC;AAGD,4CAKC;AAGD,kDAYC;AA7DD,SAAgB,uBAAuB,CACrC,GAAY,EACZ,WAAoB;IAEpB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,IAAI,GAAG,GAA8B,CAAC;IAE5C,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,WAAW,IAAI,IAAI,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,oCAAoC,IAAI,CAAC,GAAG,+BAA+B,WAAW,IAAI,CAC3F,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAA2C,CAAC;IAChE,IACE,CAAC,MAAM;QACP,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC/B,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QACpC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACxB,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAC7B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,mCAAmC,IAAI,CAAC,GAAG,2DAA2D,CACvG,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAmB;QAC/B,GAAI,IAAe;QACnB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE;KAC3D,CAAC;IACF,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAGD,SAAgB,gBAAgB,CAC9B,GAAW,EACX,QAAwB;IAExB,OAAO,WAAW,QAAQ,CAAC,MAAM,CAAC,SAAS,aAAa,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AAC1F,CAAC;AAGD,SAAgB,mBAAmB,CACjC,KAAe,EACf,SAA8B;IAE9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACrD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|