@decohere/create 0.0.1-dev.5 → 0.0.1-dev.50
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/commonjs/src/cli.js +3 -9
- package/commonjs/src/resolve-launch.js +53 -0
- package/commonjs/src/runner.js +104 -0
- package/commonjs/src/version.js +50 -0
- package/es6/src/cli.js +3 -9
- package/es6/src/resolve-launch.js +46 -0
- package/es6/src/runner.js +97 -0
- package/es6/src/version.js +32 -0
- package/pack-builder-tgz.mjs +177 -0
- package/package.json +8 -10
- package/types/src/resolve-launch.d.ts +10 -0
- package/types/src/runner.d.ts +5 -0
- package/types/src/version.d.ts +2 -0
- package/commonjs/src/scaffold.js +0 -48
- package/commonjs/src/templates.js +0 -64
- package/es6/src/scaffold.js +0 -38
- package/es6/src/templates.js +0 -40
- package/types/src/scaffold.d.ts +0 -4
- package/types/src/templates.d.ts +0 -4
package/commonjs/src/cli.js
CHANGED
|
@@ -3,13 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
const _scaffold = require("./scaffold.js");
|
|
9
|
-
const program = new _commander.Command();
|
|
10
|
-
program.name("decohere").description("Scaffold a new Decohere project").argument("[directory]", "Target directory (default: current directory)", ".").option("-y, --yes", "Skip confirmation prompts").action(async (directory, opts)=>{
|
|
11
|
-
await (0, _scaffold.scaffold)((0, _nodepath.resolve)(directory), opts);
|
|
12
|
-
});
|
|
13
|
-
program.parse();
|
|
6
|
+
const _runner = require("./runner.js");
|
|
7
|
+
(0, _runner.runInBuilder)(process.argv.slice(2));
|
|
14
8
|
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IHJ1bkluQnVpbGRlciB9IGZyb20gXCIuL3J1bm5lci5qc1wiO1xuXG5ydW5JbkJ1aWxkZXIocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKTtcbiJdLCJuYW1lcyI6WyJydW5JbkJ1aWxkZXIiLCJwcm9jZXNzIiwiYXJndiIsInNsaWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozt3QkFDNkI7QUFFN0JBLElBQUFBLG9CQUFZLEVBQUNDLFFBQVFDLElBQUksQ0FBQ0MsS0FBSyxDQUFDIn0=
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "resolveLaunch", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return resolveLaunch;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _nodepath = require("node:path");
|
|
12
|
+
function resolveLaunch(argv, cwd = process.cwd()) {
|
|
13
|
+
if (argv.length === 1 && (argv[0] === "--help" || argv[0] === "-h" || argv[0] === "--version")) {
|
|
14
|
+
return {
|
|
15
|
+
targetDir: cwd,
|
|
16
|
+
containerArgv: argv,
|
|
17
|
+
projectName: (0, _nodepath.basename)(cwd)
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
let directoryFlag;
|
|
21
|
+
const withoutD = [];
|
|
22
|
+
for(let i = 0; i < argv.length; i++){
|
|
23
|
+
const arg = argv[i];
|
|
24
|
+
if (arg === "-d") {
|
|
25
|
+
directoryFlag = argv[i + 1];
|
|
26
|
+
i++;
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (arg != null) withoutD.push(arg);
|
|
30
|
+
}
|
|
31
|
+
const isAdd = withoutD[0] === "webapi" && withoutD[1] === "add";
|
|
32
|
+
let positional;
|
|
33
|
+
let withoutPositional = withoutD;
|
|
34
|
+
if (!isAdd && withoutD[0] === "webapi" && withoutD[1] != null && !withoutD[1].startsWith("-")) {
|
|
35
|
+
positional = withoutD[1];
|
|
36
|
+
withoutPositional = [
|
|
37
|
+
withoutD[0],
|
|
38
|
+
...withoutD.slice(2)
|
|
39
|
+
];
|
|
40
|
+
}
|
|
41
|
+
const targetDir = (0, _nodepath.resolve)(cwd, positional?.trim() || directoryFlag?.trim() || ".");
|
|
42
|
+
return {
|
|
43
|
+
targetDir,
|
|
44
|
+
containerArgv: [
|
|
45
|
+
...withoutPositional,
|
|
46
|
+
"-d",
|
|
47
|
+
"."
|
|
48
|
+
],
|
|
49
|
+
projectName: (0, _nodepath.basename)(targetDir)
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvcmVzb2x2ZS1sYXVuY2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmFzZW5hbWUsIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmV4cG9ydCB0eXBlIExhdW5jaFBsYW4gPSB7XG5cdHRhcmdldERpcjogc3RyaW5nO1xuXHRjb250YWluZXJBcmd2OiBzdHJpbmdbXTtcblx0cHJvamVjdE5hbWU6IHN0cmluZztcbn07XG5cbi8qKlxuICogSG9zdCBgbnBtIGNyZWF0ZWAgYXJndiDihpIgZGlyZWN0b3J5IHRvIG1vdW50IGFuZCBhcmd2IGZvciB0aGUgaW4taW1hZ2UgQ0xJLlxuICogUG9zaXRpb25hbCBgd2ViYXBpIG15LWFwcGAgd2lucyBvdmVyIGAtZGAgKG5wbSB0cmVhdHMgYC1kYCBhcyBpdHMgb3duIGxvZ2xldmVsKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVMYXVuY2goYXJndjogc3RyaW5nW10sIGN3ZCA9IHByb2Nlc3MuY3dkKCkpOiBMYXVuY2hQbGFuIHtcblx0aWYgKFxuXHRcdGFyZ3YubGVuZ3RoID09PSAxICYmXG5cdFx0KGFyZ3ZbMF0gPT09IFwiLS1oZWxwXCIgfHwgYXJndlswXSA9PT0gXCItaFwiIHx8IGFyZ3ZbMF0gPT09IFwiLS12ZXJzaW9uXCIpXG5cdCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHR0YXJnZXREaXI6IGN3ZCxcblx0XHRcdGNvbnRhaW5lckFyZ3Y6IGFyZ3YsXG5cdFx0XHRwcm9qZWN0TmFtZTogYmFzZW5hbWUoY3dkKSxcblx0XHR9O1xuXHR9XG5cdGxldCBkaXJlY3RvcnlGbGFnOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGNvbnN0IHdpdGhvdXREOiBzdHJpbmdbXSA9IFtdO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3YubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBhcmcgPSBhcmd2W2ldO1xuXHRcdGlmIChhcmcgPT09IFwiLWRcIikge1xuXHRcdFx0ZGlyZWN0b3J5RmxhZyA9IGFyZ3ZbaSArIDFdO1xuXHRcdFx0aSsrO1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXHRcdGlmIChhcmcgIT0gbnVsbCkgd2l0aG91dEQucHVzaChhcmcpO1xuXHR9XG5cblx0Y29uc3QgaXNBZGQgPSB3aXRob3V0RFswXSA9PT0gXCJ3ZWJhcGlcIiAmJiB3aXRob3V0RFsxXSA9PT0gXCJhZGRcIjtcblx0bGV0IHBvc2l0aW9uYWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0bGV0IHdpdGhvdXRQb3NpdGlvbmFsID0gd2l0aG91dEQ7XG5cdGlmIChcblx0XHQhaXNBZGQgJiZcblx0XHR3aXRob3V0RFswXSA9PT0gXCJ3ZWJhcGlcIiAmJlxuXHRcdHdpdGhvdXREWzFdICE9IG51bGwgJiZcblx0XHQhd2l0aG91dERbMV0uc3RhcnRzV2l0aChcIi1cIilcblx0KSB7XG5cdFx0cG9zaXRpb25hbCA9IHdpdGhvdXREWzFdO1xuXHRcdHdpdGhvdXRQb3NpdGlvbmFsID0gW3dpdGhvdXREWzBdLCAuLi53aXRob3V0RC5zbGljZSgyKV07XG5cdH1cblxuXHRjb25zdCB0YXJnZXREaXIgPSByZXNvbHZlKGN3ZCwgcG9zaXRpb25hbD8udHJpbSgpIHx8IGRpcmVjdG9yeUZsYWc/LnRyaW0oKSB8fCBcIi5cIik7XG5cdHJldHVybiB7XG5cdFx0dGFyZ2V0RGlyLFxuXHRcdGNvbnRhaW5lckFyZ3Y6IFsuLi53aXRob3V0UG9zaXRpb25hbCwgXCItZFwiLCBcIi5cIl0sXG5cdFx0cHJvamVjdE5hbWU6IGJhc2VuYW1lKHRhcmdldERpciksXG5cdH07XG59XG4iXSwibmFtZXMiOlsicmVzb2x2ZUxhdW5jaCIsImFyZ3YiLCJjd2QiLCJwcm9jZXNzIiwibGVuZ3RoIiwidGFyZ2V0RGlyIiwiY29udGFpbmVyQXJndiIsInByb2plY3ROYW1lIiwiYmFzZW5hbWUiLCJkaXJlY3RvcnlGbGFnIiwid2l0aG91dEQiLCJpIiwiYXJnIiwicHVzaCIsImlzQWRkIiwicG9zaXRpb25hbCIsIndpdGhvdXRQb3NpdGlvbmFsIiwic3RhcnRzV2l0aCIsInNsaWNlIiwicmVzb2x2ZSIsInRyaW0iXSwibWFwcGluZ3MiOiI7Ozs7K0JBWWdCQTs7O2VBQUFBOzs7MEJBWmtCO0FBWTNCLFNBQVNBLGNBQWNDLElBQWMsRUFBRUMsTUFBTUMsUUFBUUQsR0FBRyxFQUFFO0lBQ2hFLElBQ0NELEtBQUtHLE1BQU0sS0FBSyxLQUNmSCxDQUFBQSxJQUFJLENBQUMsRUFBRSxLQUFLLFlBQVlBLElBQUksQ0FBQyxFQUFFLEtBQUssUUFBUUEsSUFBSSxDQUFDLEVBQUUsS0FBSyxXQUFVLEdBQ2xFO1FBQ0QsT0FBTztZQUNOSSxXQUFXSDtZQUNYSSxlQUFlTDtZQUNmTSxhQUFhQyxJQUFBQSxrQkFBUSxFQUFDTjtRQUN2QjtJQUNEO0lBQ0EsSUFBSU87SUFDSixNQUFNQyxXQUFxQixFQUFFO0lBQzdCLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJVixLQUFLRyxNQUFNLEVBQUVPLElBQUs7UUFDckMsTUFBTUMsTUFBTVgsSUFBSSxDQUFDVSxFQUFFO1FBQ25CLElBQUlDLFFBQVEsTUFBTTtZQUNqQkgsZ0JBQWdCUixJQUFJLENBQUNVLElBQUksRUFBRTtZQUMzQkE7WUFDQTtRQUNEO1FBQ0EsSUFBSUMsT0FBTyxNQUFNRixTQUFTRyxJQUFJLENBQUNEO0lBQ2hDO0lBRUEsTUFBTUUsUUFBUUosUUFBUSxDQUFDLEVBQUUsS0FBSyxZQUFZQSxRQUFRLENBQUMsRUFBRSxLQUFLO0lBQzFELElBQUlLO0lBQ0osSUFBSUMsb0JBQW9CTjtJQUN4QixJQUNDLENBQUNJLFNBQ0RKLFFBQVEsQ0FBQyxFQUFFLEtBQUssWUFDaEJBLFFBQVEsQ0FBQyxFQUFFLElBQUksUUFDZixDQUFDQSxRQUFRLENBQUMsRUFBRSxDQUFDTyxVQUFVLENBQUMsTUFDdkI7UUFDREYsYUFBYUwsUUFBUSxDQUFDLEVBQUU7UUFDeEJNLG9CQUFvQjtZQUFDTixRQUFRLENBQUMsRUFBRTtlQUFLQSxTQUFTUSxLQUFLLENBQUM7U0FBRztJQUN4RDtJQUVBLE1BQU1iLFlBQVljLElBQUFBLGlCQUFPLEVBQUNqQixLQUFLYSxZQUFZSyxVQUFVWCxlQUFlVyxVQUFVO0lBQzlFLE9BQU87UUFDTmY7UUFDQUMsZUFBZTtlQUFJVTtZQUFtQjtZQUFNO1NBQUk7UUFDaERULGFBQWFDLElBQUFBLGtCQUFRLEVBQUNIO0lBQ3ZCO0FBQ0QifQ==
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "runInBuilder", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return runInBuilder;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _nodechild_process = require("node:child_process");
|
|
12
|
+
const _nodefs = require("node:fs");
|
|
13
|
+
const _nodeos = require("node:os");
|
|
14
|
+
const _nodepath = require("node:path");
|
|
15
|
+
const _resolvelaunch = require("./resolve-launch.js");
|
|
16
|
+
const _version = require("./version.js");
|
|
17
|
+
const BUILDER_IMAGE = `${_version.CREATE_IMAGE_REPOSITORY}:${_version.CREATE_VERSION}`;
|
|
18
|
+
function runInBuilder(argv) {
|
|
19
|
+
const { targetDir, containerArgv, projectName } = (0, _resolvelaunch.resolveLaunch)(argv);
|
|
20
|
+
(0, _nodefs.mkdirSync)(targetDir, {
|
|
21
|
+
recursive: true
|
|
22
|
+
});
|
|
23
|
+
(0, _nodefs.mkdirSync)((0, _nodepath.resolve)(targetDir, ".devcontainer", "npm-auth"), {
|
|
24
|
+
recursive: true
|
|
25
|
+
});
|
|
26
|
+
try {
|
|
27
|
+
(0, _nodechild_process.execFileSync)("docker", [
|
|
28
|
+
"info"
|
|
29
|
+
], {
|
|
30
|
+
stdio: "pipe"
|
|
31
|
+
});
|
|
32
|
+
} catch {
|
|
33
|
+
console.error("\n Docker is required to scaffold a Decohere project.\n" + " Install Docker Desktop: https://www.docker.com/products/docker-desktop\n");
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
const hostUid = process.getuid?.();
|
|
37
|
+
const hostGid = process.getgid?.() ?? hostUid;
|
|
38
|
+
const runAsHostUser = hostUid != null && hostGid != null;
|
|
39
|
+
const npmCacheDir = (0, _nodepath.resolve)((0, _nodeos.homedir)(), ".cache/decohere-create/npm");
|
|
40
|
+
(0, _nodefs.mkdirSync)(npmCacheDir, {
|
|
41
|
+
recursive: true
|
|
42
|
+
});
|
|
43
|
+
const builderHome = "/tmp/decohere-create-home";
|
|
44
|
+
const volumes = [
|
|
45
|
+
"-v",
|
|
46
|
+
`${targetDir}:/workspace`,
|
|
47
|
+
"-v",
|
|
48
|
+
`${npmCacheDir}:/npm-cache`
|
|
49
|
+
];
|
|
50
|
+
const envArgs = [
|
|
51
|
+
"-e",
|
|
52
|
+
"DECOHERE_BUILDER=1",
|
|
53
|
+
"-e",
|
|
54
|
+
`DECOHERE_PROJECT_NAME=${projectName}`,
|
|
55
|
+
"-e",
|
|
56
|
+
"NPM_CONFIG_CACHE=/npm-cache",
|
|
57
|
+
"-e",
|
|
58
|
+
"NPM_CONFIG_PREFER_OFFLINE=true",
|
|
59
|
+
"-e",
|
|
60
|
+
`HOME=${builderHome}`
|
|
61
|
+
];
|
|
62
|
+
const npmrcPath = (0, _nodepath.resolve)((0, _nodeos.homedir)(), ".npmrc");
|
|
63
|
+
if ((0, _nodefs.existsSync)(npmrcPath)) {
|
|
64
|
+
volumes.push("-v", `${npmrcPath}:/tmp/host-npmrc:ro`);
|
|
65
|
+
envArgs.push("-e", "NPM_CONFIG_USERCONFIG=/tmp/host-npmrc");
|
|
66
|
+
}
|
|
67
|
+
const auth0ConfigDir = (0, _nodepath.resolve)((0, _nodeos.homedir)(), ".config/auth0");
|
|
68
|
+
if ((0, _nodefs.existsSync)(auth0ConfigDir)) {
|
|
69
|
+
volumes.push("-v", `${auth0ConfigDir}:${builderHome}/.config/auth0`);
|
|
70
|
+
}
|
|
71
|
+
const userArgs = [];
|
|
72
|
+
if (runAsHostUser) {
|
|
73
|
+
userArgs.push("--user", `${hostUid}:${hostGid}`);
|
|
74
|
+
} else if (hostUid != null) {
|
|
75
|
+
envArgs.push("-e", `HOST_UID=${hostUid}`);
|
|
76
|
+
if (hostGid != null) envArgs.push("-e", `HOST_GID=${hostGid}`);
|
|
77
|
+
}
|
|
78
|
+
console.log(" Running scaffolding in a sandboxed container...\n");
|
|
79
|
+
const ttyFlags = process.stdin.isTTY ? [
|
|
80
|
+
"-it"
|
|
81
|
+
] : [
|
|
82
|
+
"-i"
|
|
83
|
+
];
|
|
84
|
+
const result = (0, _nodechild_process.spawnSync)("docker", [
|
|
85
|
+
"run",
|
|
86
|
+
"--rm",
|
|
87
|
+
...ttyFlags,
|
|
88
|
+
...userArgs,
|
|
89
|
+
...volumes,
|
|
90
|
+
...envArgs,
|
|
91
|
+
"-w",
|
|
92
|
+
"/workspace",
|
|
93
|
+
BUILDER_IMAGE,
|
|
94
|
+
...containerArgv
|
|
95
|
+
], {
|
|
96
|
+
stdio: "inherit"
|
|
97
|
+
});
|
|
98
|
+
if (result.status === 0) {
|
|
99
|
+
console.log(`\n Scaffold complete!\n\n Open your project:\n\n code ${targetDir}\n`);
|
|
100
|
+
}
|
|
101
|
+
process.exit(result.status ?? 0);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvcnVubmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNGaWxlU3luYywgc3Bhd25TeW5jIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHJlc29sdmVMYXVuY2ggfSBmcm9tIFwiLi9yZXNvbHZlLWxhdW5jaC5qc1wiO1xuaW1wb3J0IHsgQ1JFQVRFX0lNQUdFX1JFUE9TSVRPUlksIENSRUFURV9WRVJTSU9OIH0gZnJvbSBcIi4vdmVyc2lvbi5qc1wiO1xuXG5jb25zdCBCVUlMREVSX0lNQUdFID0gYCR7Q1JFQVRFX0lNQUdFX1JFUE9TSVRPUll9OiR7Q1JFQVRFX1ZFUlNJT059YDtcblxuLyoqXG4gKiBQdWxsL3J1biB0aGUgRGVjb2hlcmUgQ0xJIGltYWdlLiBIb3N0IGBAZGVjb2hlcmUvY3JlYXRlYCBkb2VzIG5vdCBsb2FkIHRoZVxuICogYEBkZWNvaGVyZS9jbGlgIGRlcGVuZGVuY3kgdHJlZSDigJQgdGhhdCBsaXZlcyBpbiB0aGUgaW1hZ2Ugb25seS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkluQnVpbGRlcihhcmd2OiBzdHJpbmdbXSk6IG5ldmVyIHtcblx0Y29uc3QgeyB0YXJnZXREaXIsIGNvbnRhaW5lckFyZ3YsIHByb2plY3ROYW1lIH0gPSByZXNvbHZlTGF1bmNoKGFyZ3YpO1xuXHRta2RpclN5bmModGFyZ2V0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblx0bWtkaXJTeW5jKHJlc29sdmUodGFyZ2V0RGlyLCBcIi5kZXZjb250YWluZXJcIiwgXCJucG0tYXV0aFwiKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cblx0dHJ5IHtcblx0XHRleGVjRmlsZVN5bmMoXCJkb2NrZXJcIiwgW1wiaW5mb1wiXSwgeyBzdGRpbzogXCJwaXBlXCIgfSk7XG5cdH0gY2F0Y2gge1xuXHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcIlxcbiAgRG9ja2VyIGlzIHJlcXVpcmVkIHRvIHNjYWZmb2xkIGEgRGVjb2hlcmUgcHJvamVjdC5cXG5cIiArXG5cdFx0XHRcdFwiICBJbnN0YWxsIERvY2tlciBEZXNrdG9wOiBodHRwczovL3d3dy5kb2NrZXIuY29tL3Byb2R1Y3RzL2RvY2tlci1kZXNrdG9wXFxuXCIsXG5cdFx0KTtcblx0XHRwcm9jZXNzLmV4aXQoMSk7XG5cdH1cblxuXHRjb25zdCBob3N0VWlkID0gcHJvY2Vzcy5nZXR1aWQ/LigpO1xuXHRjb25zdCBob3N0R2lkID0gcHJvY2Vzcy5nZXRnaWQ/LigpID8/IGhvc3RVaWQ7XG5cdGNvbnN0IHJ1bkFzSG9zdFVzZXIgPSBob3N0VWlkICE9IG51bGwgJiYgaG9zdEdpZCAhPSBudWxsO1xuXG5cdGNvbnN0IG5wbUNhY2hlRGlyID0gcmVzb2x2ZShob21lZGlyKCksIFwiLmNhY2hlL2RlY29oZXJlLWNyZWF0ZS9ucG1cIik7XG5cdG1rZGlyU3luYyhucG1DYWNoZURpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cblx0Y29uc3QgYnVpbGRlckhvbWUgPSBcIi90bXAvZGVjb2hlcmUtY3JlYXRlLWhvbWVcIjtcblxuXHRjb25zdCB2b2x1bWVzOiBzdHJpbmdbXSA9IFtcblx0XHRcIi12XCIsXG5cdFx0YCR7dGFyZ2V0RGlyfTovd29ya3NwYWNlYCxcblx0XHRcIi12XCIsXG5cdFx0YCR7bnBtQ2FjaGVEaXJ9Oi9ucG0tY2FjaGVgLFxuXHRdO1xuXG5cdGNvbnN0IGVudkFyZ3M6IHN0cmluZ1tdID0gW1xuXHRcdFwiLWVcIixcblx0XHRcIkRFQ09IRVJFX0JVSUxERVI9MVwiLFxuXHRcdFwiLWVcIixcblx0XHRgREVDT0hFUkVfUFJPSkVDVF9OQU1FPSR7cHJvamVjdE5hbWV9YCxcblx0XHRcIi1lXCIsXG5cdFx0XCJOUE1fQ09ORklHX0NBQ0hFPS9ucG0tY2FjaGVcIixcblx0XHRcIi1lXCIsXG5cdFx0XCJOUE1fQ09ORklHX1BSRUZFUl9PRkZMSU5FPXRydWVcIixcblx0XHRcIi1lXCIsXG5cdFx0YEhPTUU9JHtidWlsZGVySG9tZX1gLFxuXHRdO1xuXG5cdGNvbnN0IG5wbXJjUGF0aCA9IHJlc29sdmUoaG9tZWRpcigpLCBcIi5ucG1yY1wiKTtcblx0aWYgKGV4aXN0c1N5bmMobnBtcmNQYXRoKSkge1xuXHRcdHZvbHVtZXMucHVzaChcIi12XCIsIGAke25wbXJjUGF0aH06L3RtcC9ob3N0LW5wbXJjOnJvYCk7XG5cdFx0ZW52QXJncy5wdXNoKFwiLWVcIiwgXCJOUE1fQ09ORklHX1VTRVJDT05GSUc9L3RtcC9ob3N0LW5wbXJjXCIpO1xuXHR9XG5cblx0Y29uc3QgYXV0aDBDb25maWdEaXIgPSByZXNvbHZlKGhvbWVkaXIoKSwgXCIuY29uZmlnL2F1dGgwXCIpO1xuXHRpZiAoZXhpc3RzU3luYyhhdXRoMENvbmZpZ0RpcikpIHtcblx0XHR2b2x1bWVzLnB1c2goXCItdlwiLCBgJHthdXRoMENvbmZpZ0Rpcn06JHtidWlsZGVySG9tZX0vLmNvbmZpZy9hdXRoMGApO1xuXHR9XG5cblx0Y29uc3QgdXNlckFyZ3M6IHN0cmluZ1tdID0gW107XG5cdGlmIChydW5Bc0hvc3RVc2VyKSB7XG5cdFx0dXNlckFyZ3MucHVzaChcIi0tdXNlclwiLCBgJHtob3N0VWlkfToke2hvc3RHaWR9YCk7XG5cdH0gZWxzZSBpZiAoaG9zdFVpZCAhPSBudWxsKSB7XG5cdFx0ZW52QXJncy5wdXNoKFwiLWVcIiwgYEhPU1RfVUlEPSR7aG9zdFVpZH1gKTtcblx0XHRpZiAoaG9zdEdpZCAhPSBudWxsKSBlbnZBcmdzLnB1c2goXCItZVwiLCBgSE9TVF9HSUQ9JHtob3N0R2lkfWApO1xuXHR9XG5cblx0Y29uc29sZS5sb2coXCIgIFJ1bm5pbmcgc2NhZmZvbGRpbmcgaW4gYSBzYW5kYm94ZWQgY29udGFpbmVyLi4uXFxuXCIpO1xuXG5cdGNvbnN0IHR0eUZsYWdzID0gcHJvY2Vzcy5zdGRpbi5pc1RUWSA/IFtcIi1pdFwiXSA6IFtcIi1pXCJdO1xuXG5cdGNvbnN0IHJlc3VsdCA9IHNwYXduU3luYyhcblx0XHRcImRvY2tlclwiLFxuXHRcdFtcblx0XHRcdFwicnVuXCIsXG5cdFx0XHRcIi0tcm1cIixcblx0XHRcdC4uLnR0eUZsYWdzLFxuXHRcdFx0Li4udXNlckFyZ3MsXG5cdFx0XHQuLi52b2x1bWVzLFxuXHRcdFx0Li4uZW52QXJncyxcblx0XHRcdFwiLXdcIixcblx0XHRcdFwiL3dvcmtzcGFjZVwiLFxuXHRcdFx0QlVJTERFUl9JTUFHRSxcblx0XHRcdC4uLmNvbnRhaW5lckFyZ3YsXG5cdFx0XSxcblx0XHR7IHN0ZGlvOiBcImluaGVyaXRcIiB9LFxuXHQpO1xuXG5cdGlmIChyZXN1bHQuc3RhdHVzID09PSAwKSB7XG5cdFx0Y29uc29sZS5sb2coYFxcbiAgU2NhZmZvbGQgY29tcGxldGUhXFxuXFxuICBPcGVuIHlvdXIgcHJvamVjdDpcXG5cXG4gICAgY29kZSAke3RhcmdldERpcn1cXG5gKTtcblx0fVxuXG5cdHByb2Nlc3MuZXhpdChyZXN1bHQuc3RhdHVzID8/IDApO1xufVxuIl0sIm5hbWVzIjpbInJ1bkluQnVpbGRlciIsIkJVSUxERVJfSU1BR0UiLCJDUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSIsIkNSRUFURV9WRVJTSU9OIiwiYXJndiIsInRhcmdldERpciIsImNvbnRhaW5lckFyZ3YiLCJwcm9qZWN0TmFtZSIsInJlc29sdmVMYXVuY2giLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXNvbHZlIiwiZXhlY0ZpbGVTeW5jIiwic3RkaW8iLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzIiwiZXhpdCIsImhvc3RVaWQiLCJnZXR1aWQiLCJob3N0R2lkIiwiZ2V0Z2lkIiwicnVuQXNIb3N0VXNlciIsIm5wbUNhY2hlRGlyIiwiaG9tZWRpciIsImJ1aWxkZXJIb21lIiwidm9sdW1lcyIsImVudkFyZ3MiLCJucG1yY1BhdGgiLCJleGlzdHNTeW5jIiwicHVzaCIsImF1dGgwQ29uZmlnRGlyIiwidXNlckFyZ3MiLCJsb2ciLCJ0dHlGbGFncyIsInN0ZGluIiwiaXNUVFkiLCJyZXN1bHQiLCJzcGF3blN5bmMiLCJzdGF0dXMiXSwibWFwcGluZ3MiOiI7Ozs7K0JBYWdCQTs7O2VBQUFBOzs7bUNBYndCO3dCQUNGO3dCQUNkOzBCQUNBOytCQUNNO3lCQUMwQjtBQUV4RCxNQUFNQyxnQkFBZ0IsR0FBR0MsZ0NBQXVCLENBQUMsQ0FBQyxFQUFFQyx1QkFBYyxFQUFFO0FBTTdELFNBQVNILGFBQWFJLElBQWM7SUFDMUMsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLGFBQWEsRUFBRUMsV0FBVyxFQUFFLEdBQUdDLElBQUFBLDRCQUFhLEVBQUNKO0lBQ2hFSyxJQUFBQSxpQkFBUyxFQUFDSixXQUFXO1FBQUVLLFdBQVc7SUFBSztJQUN2Q0QsSUFBQUEsaUJBQVMsRUFBQ0UsSUFBQUEsaUJBQU8sRUFBQ04sV0FBVyxpQkFBaUIsYUFBYTtRQUFFSyxXQUFXO0lBQUs7SUFFN0UsSUFBSTtRQUNIRSxJQUFBQSwrQkFBWSxFQUFDLFVBQVU7WUFBQztTQUFPLEVBQUU7WUFBRUMsT0FBTztRQUFPO0lBQ2xELEVBQUUsT0FBTTtRQUNQQyxRQUFRQyxLQUFLLENBQ1osNkRBQ0M7UUFFRkMsUUFBUUMsSUFBSSxDQUFDO0lBQ2Q7SUFFQSxNQUFNQyxVQUFVRixRQUFRRyxNQUFNO0lBQzlCLE1BQU1DLFVBQVVKLFFBQVFLLE1BQU0sUUFBUUg7SUFDdEMsTUFBTUksZ0JBQWdCSixXQUFXLFFBQVFFLFdBQVc7SUFFcEQsTUFBTUcsY0FBY1osSUFBQUEsaUJBQU8sRUFBQ2EsSUFBQUEsZUFBTyxLQUFJO0lBQ3ZDZixJQUFBQSxpQkFBUyxFQUFDYyxhQUFhO1FBQUViLFdBQVc7SUFBSztJQUV6QyxNQUFNZSxjQUFjO0lBRXBCLE1BQU1DLFVBQW9CO1FBQ3pCO1FBQ0EsR0FBR3JCLFVBQVUsV0FBVyxDQUFDO1FBQ3pCO1FBQ0EsR0FBR2tCLFlBQVksV0FBVyxDQUFDO0tBQzNCO0lBRUQsTUFBTUksVUFBb0I7UUFDekI7UUFDQTtRQUNBO1FBQ0EsQ0FBQyxzQkFBc0IsRUFBRXBCLGFBQWE7UUFDdEM7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLENBQUMsS0FBSyxFQUFFa0IsYUFBYTtLQUNyQjtJQUVELE1BQU1HLFlBQVlqQixJQUFBQSxpQkFBTyxFQUFDYSxJQUFBQSxlQUFPLEtBQUk7SUFDckMsSUFBSUssSUFBQUEsa0JBQVUsRUFBQ0QsWUFBWTtRQUMxQkYsUUFBUUksSUFBSSxDQUFDLE1BQU0sR0FBR0YsVUFBVSxtQkFBbUIsQ0FBQztRQUNwREQsUUFBUUcsSUFBSSxDQUFDLE1BQU07SUFDcEI7SUFFQSxNQUFNQyxpQkFBaUJwQixJQUFBQSxpQkFBTyxFQUFDYSxJQUFBQSxlQUFPLEtBQUk7SUFDMUMsSUFBSUssSUFBQUEsa0JBQVUsRUFBQ0UsaUJBQWlCO1FBQy9CTCxRQUFRSSxJQUFJLENBQUMsTUFBTSxHQUFHQyxlQUFlLENBQUMsRUFBRU4sWUFBWSxjQUFjLENBQUM7SUFDcEU7SUFFQSxNQUFNTyxXQUFxQixFQUFFO0lBQzdCLElBQUlWLGVBQWU7UUFDbEJVLFNBQVNGLElBQUksQ0FBQyxVQUFVLEdBQUdaLFFBQVEsQ0FBQyxFQUFFRSxTQUFTO0lBQ2hELE9BQU8sSUFBSUYsV0FBVyxNQUFNO1FBQzNCUyxRQUFRRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRVosU0FBUztRQUN4QyxJQUFJRSxXQUFXLE1BQU1PLFFBQVFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFVixTQUFTO0lBQzlEO0lBRUFOLFFBQVFtQixHQUFHLENBQUM7SUFFWixNQUFNQyxXQUFXbEIsUUFBUW1CLEtBQUssQ0FBQ0MsS0FBSyxHQUFHO1FBQUM7S0FBTSxHQUFHO1FBQUM7S0FBSztJQUV2RCxNQUFNQyxTQUFTQyxJQUFBQSw0QkFBUyxFQUN2QixVQUNBO1FBQ0M7UUFDQTtXQUNHSjtXQUNBRjtXQUNBTjtXQUNBQztRQUNIO1FBQ0E7UUFDQTFCO1dBQ0dLO0tBQ0gsRUFDRDtRQUFFTyxPQUFPO0lBQVU7SUFHcEIsSUFBSXdCLE9BQU9FLE1BQU0sS0FBSyxHQUFHO1FBQ3hCekIsUUFBUW1CLEdBQUcsQ0FBQyxDQUFDLDJEQUEyRCxFQUFFNUIsVUFBVSxFQUFFLENBQUM7SUFDeEY7SUFFQVcsUUFBUUMsSUFBSSxDQUFDb0IsT0FBT0UsTUFBTSxJQUFJO0FBQy9CIn0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get CREATE_IMAGE_REPOSITORY () {
|
|
13
|
+
return CREATE_IMAGE_REPOSITORY;
|
|
14
|
+
},
|
|
15
|
+
get CREATE_VERSION () {
|
|
16
|
+
return CREATE_VERSION;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _nodemodule = require("node:module");
|
|
20
|
+
const _nodepath = require("node:path");
|
|
21
|
+
const _nodeurl = require("node:url");
|
|
22
|
+
const _require = (0, _nodemodule.createRequire)(require("url").pathToFileURL(__filename).toString());
|
|
23
|
+
const DEFAULT_CREATE_VERSION = "0.0.1-dev";
|
|
24
|
+
const DEFAULT_CREATE_IMAGE_REPOSITORY = "ghcr.io/typesmiths/decohere/create";
|
|
25
|
+
function resolveCreateMetadata() {
|
|
26
|
+
let dir = (0, _nodepath.dirname)((0, _nodeurl.fileURLToPath)(require("url").pathToFileURL(__filename).toString()));
|
|
27
|
+
for(let i = 0; i < 5; i++){
|
|
28
|
+
try {
|
|
29
|
+
const pkg = _require((0, _nodepath.join)(dir, "package.json"));
|
|
30
|
+
if (pkg.name === "@decohere/create") {
|
|
31
|
+
return {
|
|
32
|
+
version: pkg.version ?? DEFAULT_CREATE_VERSION,
|
|
33
|
+
imageRepository: pkg.decohere?.dockerImageRepository ?? DEFAULT_CREATE_IMAGE_REPOSITORY
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
} catch {}
|
|
37
|
+
const parent = (0, _nodepath.dirname)(dir);
|
|
38
|
+
if (parent === dir) break;
|
|
39
|
+
dir = parent;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
version: DEFAULT_CREATE_VERSION,
|
|
43
|
+
imageRepository: DEFAULT_CREATE_IMAGE_REPOSITORY
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const createMetadata = resolveCreateMetadata();
|
|
47
|
+
const CREATE_VERSION = createMetadata.version;
|
|
48
|
+
const CREATE_IMAGE_REPOSITORY = createMetadata.imageRepository;
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvdmVyc2lvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gXCJub2RlOnVybFwiO1xuXG5jb25zdCBfcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcblxudHlwZSBDcmVhdGVQYWNrYWdlTWV0YWRhdGEgPSB7XG5cdG5hbWU/OiBzdHJpbmc7XG5cdHZlcnNpb24/OiBzdHJpbmc7XG5cdGRlY29oZXJlPzoge1xuXHRcdGRvY2tlckltYWdlUmVwb3NpdG9yeT86IHN0cmluZztcblx0fTtcbn07XG5cbmNvbnN0IERFRkFVTFRfQ1JFQVRFX1ZFUlNJT04gPSBcIjAuMC4xLWRldlwiO1xuY29uc3QgREVGQVVMVF9DUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSA9IFwiZ2hjci5pby90eXBlc21pdGhzL2RlY29oZXJlL2NyZWF0ZVwiO1xuXG5mdW5jdGlvbiByZXNvbHZlQ3JlYXRlTWV0YWRhdGEoKSB7XG5cdGxldCBkaXIgPSBkaXJuYW1lKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHBrZyA9IF9yZXF1aXJlKGpvaW4oZGlyLCBcInBhY2thZ2UuanNvblwiKSkgYXMgQ3JlYXRlUGFja2FnZU1ldGFkYXRhO1xuXHRcdFx0aWYgKHBrZy5uYW1lID09PSBcIkBkZWNvaGVyZS9jcmVhdGVcIikge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdHZlcnNpb246IHBrZy52ZXJzaW9uID8/IERFRkFVTFRfQ1JFQVRFX1ZFUlNJT04sXG5cdFx0XHRcdFx0aW1hZ2VSZXBvc2l0b3J5OlxuXHRcdFx0XHRcdFx0cGtnLmRlY29oZXJlPy5kb2NrZXJJbWFnZVJlcG9zaXRvcnkgPz8gREVGQVVMVF9DUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIHt9XG5cdFx0Y29uc3QgcGFyZW50ID0gZGlybmFtZShkaXIpO1xuXHRcdGlmIChwYXJlbnQgPT09IGRpcikgYnJlYWs7XG5cdFx0ZGlyID0gcGFyZW50O1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHR2ZXJzaW9uOiBERUZBVUxUX0NSRUFURV9WRVJTSU9OLFxuXHRcdGltYWdlUmVwb3NpdG9yeTogREVGQVVMVF9DUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSxcblx0fTtcbn1cblxuY29uc3QgY3JlYXRlTWV0YWRhdGEgPSByZXNvbHZlQ3JlYXRlTWV0YWRhdGEoKTtcblxuZXhwb3J0IGNvbnN0IENSRUFURV9WRVJTSU9OID0gY3JlYXRlTWV0YWRhdGEudmVyc2lvbjtcblxuZXhwb3J0IGNvbnN0IENSRUFURV9JTUFHRV9SRVBPU0lUT1JZID0gY3JlYXRlTWV0YWRhdGEuaW1hZ2VSZXBvc2l0b3J5O1xuIl0sIm5hbWVzIjpbIkNSRUFURV9JTUFHRV9SRVBPU0lUT1JZIiwiQ1JFQVRFX1ZFUlNJT04iLCJfcmVxdWlyZSIsImNyZWF0ZVJlcXVpcmUiLCJERUZBVUxUX0NSRUFURV9WRVJTSU9OIiwiREVGQVVMVF9DUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSIsInJlc29sdmVDcmVhdGVNZXRhZGF0YSIsImRpciIsImRpcm5hbWUiLCJmaWxlVVJMVG9QYXRoIiwiaSIsInBrZyIsImpvaW4iLCJuYW1lIiwidmVyc2lvbiIsImltYWdlUmVwb3NpdG9yeSIsImRlY29oZXJlIiwiZG9ja2VySW1hZ2VSZXBvc2l0b3J5IiwicGFyZW50IiwiY3JlYXRlTWV0YWRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBNkNhQTtlQUFBQTs7UUFGQUM7ZUFBQUE7Ozs0QkEzQ2lCOzBCQUNBO3lCQUNBO0FBRTlCLE1BQU1DLFdBQVdDLElBQUFBLHlCQUFhLEVBQUM7QUFVL0IsTUFBTUMseUJBQXlCO0FBQy9CLE1BQU1DLGtDQUFrQztBQUV4QyxTQUFTQztJQUNSLElBQUlDLE1BQU1DLElBQUFBLGlCQUFPLEVBQUNDLElBQUFBLHNCQUFhLEVBQUM7SUFDaEMsSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUksR0FBR0EsSUFBSztRQUMzQixJQUFJO1lBQ0gsTUFBTUMsTUFBTVQsU0FBU1UsSUFBQUEsY0FBSSxFQUFDTCxLQUFLO1lBQy9CLElBQUlJLElBQUlFLElBQUksS0FBSyxvQkFBb0I7Z0JBQ3BDLE9BQU87b0JBQ05DLFNBQVNILElBQUlHLE9BQU8sSUFBSVY7b0JBQ3hCVyxpQkFDQ0osSUFBSUssUUFBUSxFQUFFQyx5QkFBeUJaO2dCQUN6QztZQUNEO1FBQ0QsRUFBRSxPQUFNLENBQUM7UUFDVCxNQUFNYSxTQUFTVixJQUFBQSxpQkFBTyxFQUFDRDtRQUN2QixJQUFJVyxXQUFXWCxLQUFLO1FBQ3BCQSxNQUFNVztJQUNQO0lBRUEsT0FBTztRQUNOSixTQUFTVjtRQUNUVyxpQkFBaUJWO0lBQ2xCO0FBQ0Q7QUFFQSxNQUFNYyxpQkFBaUJiO0FBRWhCLE1BQU1MLGlCQUFpQmtCLGVBQWVMLE9BQU87QUFFN0MsTUFBTWQsMEJBQTBCbUIsZUFBZUosZUFBZSJ9
|
package/es6/src/cli.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import { scaffold } from "./scaffold.js";
|
|
5
|
-
const program = new Command();
|
|
6
|
-
program.name("decohere").description("Scaffold a new Decohere project").argument("[directory]", "Target directory (default: current directory)", ".").option("-y, --yes", "Skip confirmation prompts").action(async (directory, opts)=>{
|
|
7
|
-
await scaffold(resolve(directory), opts);
|
|
8
|
-
});
|
|
9
|
-
program.parse();
|
|
2
|
+
import { runInBuilder } from "./runner.js";
|
|
3
|
+
runInBuilder(process.argv.slice(2));
|
|
10
4
|
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IHJ1bkluQnVpbGRlciB9IGZyb20gXCIuL3J1bm5lci5qc1wiO1xuXG5ydW5JbkJ1aWxkZXIocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKTtcbiJdLCJuYW1lcyI6WyJydW5JbkJ1aWxkZXIiLCJwcm9jZXNzIiwiYXJndiIsInNsaWNlIl0sIm1hcHBpbmdzIjoiO0FBQ0EsU0FBU0EsWUFBWSxRQUFRLGNBQWM7QUFFM0NBLGFBQWFDLFFBQVFDLElBQUksQ0FBQ0MsS0FBSyxDQUFDIn0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { basename, resolve } from "node:path";
|
|
2
|
+
/**
|
|
3
|
+
* Host `npm create` argv → directory to mount and argv for the in-image CLI.
|
|
4
|
+
* Positional `webapi my-app` wins over `-d` (npm treats `-d` as its own loglevel).
|
|
5
|
+
*/ export function resolveLaunch(argv, cwd = process.cwd()) {
|
|
6
|
+
if (argv.length === 1 && (argv[0] === "--help" || argv[0] === "-h" || argv[0] === "--version")) {
|
|
7
|
+
return {
|
|
8
|
+
targetDir: cwd,
|
|
9
|
+
containerArgv: argv,
|
|
10
|
+
projectName: basename(cwd)
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
let directoryFlag;
|
|
14
|
+
const withoutD = [];
|
|
15
|
+
for(let i = 0; i < argv.length; i++){
|
|
16
|
+
const arg = argv[i];
|
|
17
|
+
if (arg === "-d") {
|
|
18
|
+
directoryFlag = argv[i + 1];
|
|
19
|
+
i++;
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (arg != null) withoutD.push(arg);
|
|
23
|
+
}
|
|
24
|
+
const isAdd = withoutD[0] === "webapi" && withoutD[1] === "add";
|
|
25
|
+
let positional;
|
|
26
|
+
let withoutPositional = withoutD;
|
|
27
|
+
if (!isAdd && withoutD[0] === "webapi" && withoutD[1] != null && !withoutD[1].startsWith("-")) {
|
|
28
|
+
positional = withoutD[1];
|
|
29
|
+
withoutPositional = [
|
|
30
|
+
withoutD[0],
|
|
31
|
+
...withoutD.slice(2)
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
const targetDir = resolve(cwd, positional?.trim() || directoryFlag?.trim() || ".");
|
|
35
|
+
return {
|
|
36
|
+
targetDir,
|
|
37
|
+
containerArgv: [
|
|
38
|
+
...withoutPositional,
|
|
39
|
+
"-d",
|
|
40
|
+
"."
|
|
41
|
+
],
|
|
42
|
+
projectName: basename(targetDir)
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvcmVzb2x2ZS1sYXVuY2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmFzZW5hbWUsIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmV4cG9ydCB0eXBlIExhdW5jaFBsYW4gPSB7XG5cdHRhcmdldERpcjogc3RyaW5nO1xuXHRjb250YWluZXJBcmd2OiBzdHJpbmdbXTtcblx0cHJvamVjdE5hbWU6IHN0cmluZztcbn07XG5cbi8qKlxuICogSG9zdCBgbnBtIGNyZWF0ZWAgYXJndiDihpIgZGlyZWN0b3J5IHRvIG1vdW50IGFuZCBhcmd2IGZvciB0aGUgaW4taW1hZ2UgQ0xJLlxuICogUG9zaXRpb25hbCBgd2ViYXBpIG15LWFwcGAgd2lucyBvdmVyIGAtZGAgKG5wbSB0cmVhdHMgYC1kYCBhcyBpdHMgb3duIGxvZ2xldmVsKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVMYXVuY2goYXJndjogc3RyaW5nW10sIGN3ZCA9IHByb2Nlc3MuY3dkKCkpOiBMYXVuY2hQbGFuIHtcblx0aWYgKFxuXHRcdGFyZ3YubGVuZ3RoID09PSAxICYmXG5cdFx0KGFyZ3ZbMF0gPT09IFwiLS1oZWxwXCIgfHwgYXJndlswXSA9PT0gXCItaFwiIHx8IGFyZ3ZbMF0gPT09IFwiLS12ZXJzaW9uXCIpXG5cdCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHR0YXJnZXREaXI6IGN3ZCxcblx0XHRcdGNvbnRhaW5lckFyZ3Y6IGFyZ3YsXG5cdFx0XHRwcm9qZWN0TmFtZTogYmFzZW5hbWUoY3dkKSxcblx0XHR9O1xuXHR9XG5cdGxldCBkaXJlY3RvcnlGbGFnOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGNvbnN0IHdpdGhvdXREOiBzdHJpbmdbXSA9IFtdO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3YubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBhcmcgPSBhcmd2W2ldO1xuXHRcdGlmIChhcmcgPT09IFwiLWRcIikge1xuXHRcdFx0ZGlyZWN0b3J5RmxhZyA9IGFyZ3ZbaSArIDFdO1xuXHRcdFx0aSsrO1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXHRcdGlmIChhcmcgIT0gbnVsbCkgd2l0aG91dEQucHVzaChhcmcpO1xuXHR9XG5cblx0Y29uc3QgaXNBZGQgPSB3aXRob3V0RFswXSA9PT0gXCJ3ZWJhcGlcIiAmJiB3aXRob3V0RFsxXSA9PT0gXCJhZGRcIjtcblx0bGV0IHBvc2l0aW9uYWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0bGV0IHdpdGhvdXRQb3NpdGlvbmFsID0gd2l0aG91dEQ7XG5cdGlmIChcblx0XHQhaXNBZGQgJiZcblx0XHR3aXRob3V0RFswXSA9PT0gXCJ3ZWJhcGlcIiAmJlxuXHRcdHdpdGhvdXREWzFdICE9IG51bGwgJiZcblx0XHQhd2l0aG91dERbMV0uc3RhcnRzV2l0aChcIi1cIilcblx0KSB7XG5cdFx0cG9zaXRpb25hbCA9IHdpdGhvdXREWzFdO1xuXHRcdHdpdGhvdXRQb3NpdGlvbmFsID0gW3dpdGhvdXREWzBdLCAuLi53aXRob3V0RC5zbGljZSgyKV07XG5cdH1cblxuXHRjb25zdCB0YXJnZXREaXIgPSByZXNvbHZlKGN3ZCwgcG9zaXRpb25hbD8udHJpbSgpIHx8IGRpcmVjdG9yeUZsYWc/LnRyaW0oKSB8fCBcIi5cIik7XG5cdHJldHVybiB7XG5cdFx0dGFyZ2V0RGlyLFxuXHRcdGNvbnRhaW5lckFyZ3Y6IFsuLi53aXRob3V0UG9zaXRpb25hbCwgXCItZFwiLCBcIi5cIl0sXG5cdFx0cHJvamVjdE5hbWU6IGJhc2VuYW1lKHRhcmdldERpciksXG5cdH07XG59XG4iXSwibmFtZXMiOlsiYmFzZW5hbWUiLCJyZXNvbHZlIiwicmVzb2x2ZUxhdW5jaCIsImFyZ3YiLCJjd2QiLCJwcm9jZXNzIiwibGVuZ3RoIiwidGFyZ2V0RGlyIiwiY29udGFpbmVyQXJndiIsInByb2plY3ROYW1lIiwiZGlyZWN0b3J5RmxhZyIsIndpdGhvdXREIiwiaSIsImFyZyIsInB1c2giLCJpc0FkZCIsInBvc2l0aW9uYWwiLCJ3aXRob3V0UG9zaXRpb25hbCIsInN0YXJ0c1dpdGgiLCJzbGljZSIsInRyaW0iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVEsRUFBRUMsT0FBTyxRQUFRLFlBQVk7QUFROUM7OztDQUdDLEdBQ0QsT0FBTyxTQUFTQyxjQUFjQyxJQUFjLEVBQUVDLE1BQU1DLFFBQVFELEdBQUcsRUFBRTtJQUNoRSxJQUNDRCxLQUFLRyxNQUFNLEtBQUssS0FDZkgsQ0FBQUEsSUFBSSxDQUFDLEVBQUUsS0FBSyxZQUFZQSxJQUFJLENBQUMsRUFBRSxLQUFLLFFBQVFBLElBQUksQ0FBQyxFQUFFLEtBQUssV0FBVSxHQUNsRTtRQUNELE9BQU87WUFDTkksV0FBV0g7WUFDWEksZUFBZUw7WUFDZk0sYUFBYVQsU0FBU0k7UUFDdkI7SUFDRDtJQUNBLElBQUlNO0lBQ0osTUFBTUMsV0FBcUIsRUFBRTtJQUM3QixJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVQsS0FBS0csTUFBTSxFQUFFTSxJQUFLO1FBQ3JDLE1BQU1DLE1BQU1WLElBQUksQ0FBQ1MsRUFBRTtRQUNuQixJQUFJQyxRQUFRLE1BQU07WUFDakJILGdCQUFnQlAsSUFBSSxDQUFDUyxJQUFJLEVBQUU7WUFDM0JBO1lBQ0E7UUFDRDtRQUNBLElBQUlDLE9BQU8sTUFBTUYsU0FBU0csSUFBSSxDQUFDRDtJQUNoQztJQUVBLE1BQU1FLFFBQVFKLFFBQVEsQ0FBQyxFQUFFLEtBQUssWUFBWUEsUUFBUSxDQUFDLEVBQUUsS0FBSztJQUMxRCxJQUFJSztJQUNKLElBQUlDLG9CQUFvQk47SUFDeEIsSUFDQyxDQUFDSSxTQUNESixRQUFRLENBQUMsRUFBRSxLQUFLLFlBQ2hCQSxRQUFRLENBQUMsRUFBRSxJQUFJLFFBQ2YsQ0FBQ0EsUUFBUSxDQUFDLEVBQUUsQ0FBQ08sVUFBVSxDQUFDLE1BQ3ZCO1FBQ0RGLGFBQWFMLFFBQVEsQ0FBQyxFQUFFO1FBQ3hCTSxvQkFBb0I7WUFBQ04sUUFBUSxDQUFDLEVBQUU7ZUFBS0EsU0FBU1EsS0FBSyxDQUFDO1NBQUc7SUFDeEQ7SUFFQSxNQUFNWixZQUFZTixRQUFRRyxLQUFLWSxZQUFZSSxVQUFVVixlQUFlVSxVQUFVO0lBQzlFLE9BQU87UUFDTmI7UUFDQUMsZUFBZTtlQUFJUztZQUFtQjtZQUFNO1NBQUk7UUFDaERSLGFBQWFULFNBQVNPO0lBQ3ZCO0FBQ0QifQ==
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { execFileSync, spawnSync } from "node:child_process";
|
|
2
|
+
import { existsSync, mkdirSync } from "node:fs";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { resolve } from "node:path";
|
|
5
|
+
import { resolveLaunch } from "./resolve-launch.js";
|
|
6
|
+
import { CREATE_IMAGE_REPOSITORY, CREATE_VERSION } from "./version.js";
|
|
7
|
+
const BUILDER_IMAGE = `${CREATE_IMAGE_REPOSITORY}:${CREATE_VERSION}`;
|
|
8
|
+
/**
|
|
9
|
+
* Pull/run the Decohere CLI image. Host `@decohere/create` does not load the
|
|
10
|
+
* `@decohere/cli` dependency tree — that lives in the image only.
|
|
11
|
+
*/ export function runInBuilder(argv) {
|
|
12
|
+
const { targetDir, containerArgv, projectName } = resolveLaunch(argv);
|
|
13
|
+
mkdirSync(targetDir, {
|
|
14
|
+
recursive: true
|
|
15
|
+
});
|
|
16
|
+
mkdirSync(resolve(targetDir, ".devcontainer", "npm-auth"), {
|
|
17
|
+
recursive: true
|
|
18
|
+
});
|
|
19
|
+
try {
|
|
20
|
+
execFileSync("docker", [
|
|
21
|
+
"info"
|
|
22
|
+
], {
|
|
23
|
+
stdio: "pipe"
|
|
24
|
+
});
|
|
25
|
+
} catch {
|
|
26
|
+
console.error("\n Docker is required to scaffold a Decohere project.\n" + " Install Docker Desktop: https://www.docker.com/products/docker-desktop\n");
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
const hostUid = process.getuid?.();
|
|
30
|
+
const hostGid = process.getgid?.() ?? hostUid;
|
|
31
|
+
const runAsHostUser = hostUid != null && hostGid != null;
|
|
32
|
+
const npmCacheDir = resolve(homedir(), ".cache/decohere-create/npm");
|
|
33
|
+
mkdirSync(npmCacheDir, {
|
|
34
|
+
recursive: true
|
|
35
|
+
});
|
|
36
|
+
const builderHome = "/tmp/decohere-create-home";
|
|
37
|
+
const volumes = [
|
|
38
|
+
"-v",
|
|
39
|
+
`${targetDir}:/workspace`,
|
|
40
|
+
"-v",
|
|
41
|
+
`${npmCacheDir}:/npm-cache`
|
|
42
|
+
];
|
|
43
|
+
const envArgs = [
|
|
44
|
+
"-e",
|
|
45
|
+
"DECOHERE_BUILDER=1",
|
|
46
|
+
"-e",
|
|
47
|
+
`DECOHERE_PROJECT_NAME=${projectName}`,
|
|
48
|
+
"-e",
|
|
49
|
+
"NPM_CONFIG_CACHE=/npm-cache",
|
|
50
|
+
"-e",
|
|
51
|
+
"NPM_CONFIG_PREFER_OFFLINE=true",
|
|
52
|
+
"-e",
|
|
53
|
+
`HOME=${builderHome}`
|
|
54
|
+
];
|
|
55
|
+
const npmrcPath = resolve(homedir(), ".npmrc");
|
|
56
|
+
if (existsSync(npmrcPath)) {
|
|
57
|
+
volumes.push("-v", `${npmrcPath}:/tmp/host-npmrc:ro`);
|
|
58
|
+
envArgs.push("-e", "NPM_CONFIG_USERCONFIG=/tmp/host-npmrc");
|
|
59
|
+
}
|
|
60
|
+
const auth0ConfigDir = resolve(homedir(), ".config/auth0");
|
|
61
|
+
if (existsSync(auth0ConfigDir)) {
|
|
62
|
+
volumes.push("-v", `${auth0ConfigDir}:${builderHome}/.config/auth0`);
|
|
63
|
+
}
|
|
64
|
+
const userArgs = [];
|
|
65
|
+
if (runAsHostUser) {
|
|
66
|
+
userArgs.push("--user", `${hostUid}:${hostGid}`);
|
|
67
|
+
} else if (hostUid != null) {
|
|
68
|
+
envArgs.push("-e", `HOST_UID=${hostUid}`);
|
|
69
|
+
if (hostGid != null) envArgs.push("-e", `HOST_GID=${hostGid}`);
|
|
70
|
+
}
|
|
71
|
+
console.log(" Running scaffolding in a sandboxed container...\n");
|
|
72
|
+
const ttyFlags = process.stdin.isTTY ? [
|
|
73
|
+
"-it"
|
|
74
|
+
] : [
|
|
75
|
+
"-i"
|
|
76
|
+
];
|
|
77
|
+
const result = spawnSync("docker", [
|
|
78
|
+
"run",
|
|
79
|
+
"--rm",
|
|
80
|
+
...ttyFlags,
|
|
81
|
+
...userArgs,
|
|
82
|
+
...volumes,
|
|
83
|
+
...envArgs,
|
|
84
|
+
"-w",
|
|
85
|
+
"/workspace",
|
|
86
|
+
BUILDER_IMAGE,
|
|
87
|
+
...containerArgv
|
|
88
|
+
], {
|
|
89
|
+
stdio: "inherit"
|
|
90
|
+
});
|
|
91
|
+
if (result.status === 0) {
|
|
92
|
+
console.log(`\n Scaffold complete!\n\n Open your project:\n\n code ${targetDir}\n`);
|
|
93
|
+
}
|
|
94
|
+
process.exit(result.status ?? 0);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvcnVubmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNGaWxlU3luYywgc3Bhd25TeW5jIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHJlc29sdmVMYXVuY2ggfSBmcm9tIFwiLi9yZXNvbHZlLWxhdW5jaC5qc1wiO1xuaW1wb3J0IHsgQ1JFQVRFX0lNQUdFX1JFUE9TSVRPUlksIENSRUFURV9WRVJTSU9OIH0gZnJvbSBcIi4vdmVyc2lvbi5qc1wiO1xuXG5jb25zdCBCVUlMREVSX0lNQUdFID0gYCR7Q1JFQVRFX0lNQUdFX1JFUE9TSVRPUll9OiR7Q1JFQVRFX1ZFUlNJT059YDtcblxuLyoqXG4gKiBQdWxsL3J1biB0aGUgRGVjb2hlcmUgQ0xJIGltYWdlLiBIb3N0IGBAZGVjb2hlcmUvY3JlYXRlYCBkb2VzIG5vdCBsb2FkIHRoZVxuICogYEBkZWNvaGVyZS9jbGlgIGRlcGVuZGVuY3kgdHJlZSDigJQgdGhhdCBsaXZlcyBpbiB0aGUgaW1hZ2Ugb25seS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkluQnVpbGRlcihhcmd2OiBzdHJpbmdbXSk6IG5ldmVyIHtcblx0Y29uc3QgeyB0YXJnZXREaXIsIGNvbnRhaW5lckFyZ3YsIHByb2plY3ROYW1lIH0gPSByZXNvbHZlTGF1bmNoKGFyZ3YpO1xuXHRta2RpclN5bmModGFyZ2V0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblx0bWtkaXJTeW5jKHJlc29sdmUodGFyZ2V0RGlyLCBcIi5kZXZjb250YWluZXJcIiwgXCJucG0tYXV0aFwiKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cblx0dHJ5IHtcblx0XHRleGVjRmlsZVN5bmMoXCJkb2NrZXJcIiwgW1wiaW5mb1wiXSwgeyBzdGRpbzogXCJwaXBlXCIgfSk7XG5cdH0gY2F0Y2gge1xuXHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcIlxcbiAgRG9ja2VyIGlzIHJlcXVpcmVkIHRvIHNjYWZmb2xkIGEgRGVjb2hlcmUgcHJvamVjdC5cXG5cIiArXG5cdFx0XHRcdFwiICBJbnN0YWxsIERvY2tlciBEZXNrdG9wOiBodHRwczovL3d3dy5kb2NrZXIuY29tL3Byb2R1Y3RzL2RvY2tlci1kZXNrdG9wXFxuXCIsXG5cdFx0KTtcblx0XHRwcm9jZXNzLmV4aXQoMSk7XG5cdH1cblxuXHRjb25zdCBob3N0VWlkID0gcHJvY2Vzcy5nZXR1aWQ/LigpO1xuXHRjb25zdCBob3N0R2lkID0gcHJvY2Vzcy5nZXRnaWQ/LigpID8/IGhvc3RVaWQ7XG5cdGNvbnN0IHJ1bkFzSG9zdFVzZXIgPSBob3N0VWlkICE9IG51bGwgJiYgaG9zdEdpZCAhPSBudWxsO1xuXG5cdGNvbnN0IG5wbUNhY2hlRGlyID0gcmVzb2x2ZShob21lZGlyKCksIFwiLmNhY2hlL2RlY29oZXJlLWNyZWF0ZS9ucG1cIik7XG5cdG1rZGlyU3luYyhucG1DYWNoZURpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cblx0Y29uc3QgYnVpbGRlckhvbWUgPSBcIi90bXAvZGVjb2hlcmUtY3JlYXRlLWhvbWVcIjtcblxuXHRjb25zdCB2b2x1bWVzOiBzdHJpbmdbXSA9IFtcblx0XHRcIi12XCIsXG5cdFx0YCR7dGFyZ2V0RGlyfTovd29ya3NwYWNlYCxcblx0XHRcIi12XCIsXG5cdFx0YCR7bnBtQ2FjaGVEaXJ9Oi9ucG0tY2FjaGVgLFxuXHRdO1xuXG5cdGNvbnN0IGVudkFyZ3M6IHN0cmluZ1tdID0gW1xuXHRcdFwiLWVcIixcblx0XHRcIkRFQ09IRVJFX0JVSUxERVI9MVwiLFxuXHRcdFwiLWVcIixcblx0XHRgREVDT0hFUkVfUFJPSkVDVF9OQU1FPSR7cHJvamVjdE5hbWV9YCxcblx0XHRcIi1lXCIsXG5cdFx0XCJOUE1fQ09ORklHX0NBQ0hFPS9ucG0tY2FjaGVcIixcblx0XHRcIi1lXCIsXG5cdFx0XCJOUE1fQ09ORklHX1BSRUZFUl9PRkZMSU5FPXRydWVcIixcblx0XHRcIi1lXCIsXG5cdFx0YEhPTUU9JHtidWlsZGVySG9tZX1gLFxuXHRdO1xuXG5cdGNvbnN0IG5wbXJjUGF0aCA9IHJlc29sdmUoaG9tZWRpcigpLCBcIi5ucG1yY1wiKTtcblx0aWYgKGV4aXN0c1N5bmMobnBtcmNQYXRoKSkge1xuXHRcdHZvbHVtZXMucHVzaChcIi12XCIsIGAke25wbXJjUGF0aH06L3RtcC9ob3N0LW5wbXJjOnJvYCk7XG5cdFx0ZW52QXJncy5wdXNoKFwiLWVcIiwgXCJOUE1fQ09ORklHX1VTRVJDT05GSUc9L3RtcC9ob3N0LW5wbXJjXCIpO1xuXHR9XG5cblx0Y29uc3QgYXV0aDBDb25maWdEaXIgPSByZXNvbHZlKGhvbWVkaXIoKSwgXCIuY29uZmlnL2F1dGgwXCIpO1xuXHRpZiAoZXhpc3RzU3luYyhhdXRoMENvbmZpZ0RpcikpIHtcblx0XHR2b2x1bWVzLnB1c2goXCItdlwiLCBgJHthdXRoMENvbmZpZ0Rpcn06JHtidWlsZGVySG9tZX0vLmNvbmZpZy9hdXRoMGApO1xuXHR9XG5cblx0Y29uc3QgdXNlckFyZ3M6IHN0cmluZ1tdID0gW107XG5cdGlmIChydW5Bc0hvc3RVc2VyKSB7XG5cdFx0dXNlckFyZ3MucHVzaChcIi0tdXNlclwiLCBgJHtob3N0VWlkfToke2hvc3RHaWR9YCk7XG5cdH0gZWxzZSBpZiAoaG9zdFVpZCAhPSBudWxsKSB7XG5cdFx0ZW52QXJncy5wdXNoKFwiLWVcIiwgYEhPU1RfVUlEPSR7aG9zdFVpZH1gKTtcblx0XHRpZiAoaG9zdEdpZCAhPSBudWxsKSBlbnZBcmdzLnB1c2goXCItZVwiLCBgSE9TVF9HSUQ9JHtob3N0R2lkfWApO1xuXHR9XG5cblx0Y29uc29sZS5sb2coXCIgIFJ1bm5pbmcgc2NhZmZvbGRpbmcgaW4gYSBzYW5kYm94ZWQgY29udGFpbmVyLi4uXFxuXCIpO1xuXG5cdGNvbnN0IHR0eUZsYWdzID0gcHJvY2Vzcy5zdGRpbi5pc1RUWSA/IFtcIi1pdFwiXSA6IFtcIi1pXCJdO1xuXG5cdGNvbnN0IHJlc3VsdCA9IHNwYXduU3luYyhcblx0XHRcImRvY2tlclwiLFxuXHRcdFtcblx0XHRcdFwicnVuXCIsXG5cdFx0XHRcIi0tcm1cIixcblx0XHRcdC4uLnR0eUZsYWdzLFxuXHRcdFx0Li4udXNlckFyZ3MsXG5cdFx0XHQuLi52b2x1bWVzLFxuXHRcdFx0Li4uZW52QXJncyxcblx0XHRcdFwiLXdcIixcblx0XHRcdFwiL3dvcmtzcGFjZVwiLFxuXHRcdFx0QlVJTERFUl9JTUFHRSxcblx0XHRcdC4uLmNvbnRhaW5lckFyZ3YsXG5cdFx0XSxcblx0XHR7IHN0ZGlvOiBcImluaGVyaXRcIiB9LFxuXHQpO1xuXG5cdGlmIChyZXN1bHQuc3RhdHVzID09PSAwKSB7XG5cdFx0Y29uc29sZS5sb2coYFxcbiAgU2NhZmZvbGQgY29tcGxldGUhXFxuXFxuICBPcGVuIHlvdXIgcHJvamVjdDpcXG5cXG4gICAgY29kZSAke3RhcmdldERpcn1cXG5gKTtcblx0fVxuXG5cdHByb2Nlc3MuZXhpdChyZXN1bHQuc3RhdHVzID8/IDApO1xufVxuIl0sIm5hbWVzIjpbImV4ZWNGaWxlU3luYyIsInNwYXduU3luYyIsImV4aXN0c1N5bmMiLCJta2RpclN5bmMiLCJob21lZGlyIiwicmVzb2x2ZSIsInJlc29sdmVMYXVuY2giLCJDUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSIsIkNSRUFURV9WRVJTSU9OIiwiQlVJTERFUl9JTUFHRSIsInJ1bkluQnVpbGRlciIsImFyZ3YiLCJ0YXJnZXREaXIiLCJjb250YWluZXJBcmd2IiwicHJvamVjdE5hbWUiLCJyZWN1cnNpdmUiLCJzdGRpbyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiaG9zdFVpZCIsImdldHVpZCIsImhvc3RHaWQiLCJnZXRnaWQiLCJydW5Bc0hvc3RVc2VyIiwibnBtQ2FjaGVEaXIiLCJidWlsZGVySG9tZSIsInZvbHVtZXMiLCJlbnZBcmdzIiwibnBtcmNQYXRoIiwicHVzaCIsImF1dGgwQ29uZmlnRGlyIiwidXNlckFyZ3MiLCJsb2ciLCJ0dHlGbGFncyIsInN0ZGluIiwiaXNUVFkiLCJyZXN1bHQiLCJzdGF0dXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFlBQVksRUFBRUMsU0FBUyxRQUFRLHFCQUFxQjtBQUM3RCxTQUFTQyxVQUFVLEVBQUVDLFNBQVMsUUFBUSxVQUFVO0FBQ2hELFNBQVNDLE9BQU8sUUFBUSxVQUFVO0FBQ2xDLFNBQVNDLE9BQU8sUUFBUSxZQUFZO0FBQ3BDLFNBQVNDLGFBQWEsUUFBUSxzQkFBc0I7QUFDcEQsU0FBU0MsdUJBQXVCLEVBQUVDLGNBQWMsUUFBUSxlQUFlO0FBRXZFLE1BQU1DLGdCQUFnQixHQUFHRix3QkFBd0IsQ0FBQyxFQUFFQyxnQkFBZ0I7QUFFcEU7OztDQUdDLEdBQ0QsT0FBTyxTQUFTRSxhQUFhQyxJQUFjO0lBQzFDLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxhQUFhLEVBQUVDLFdBQVcsRUFBRSxHQUFHUixjQUFjSztJQUNoRVIsVUFBVVMsV0FBVztRQUFFRyxXQUFXO0lBQUs7SUFDdkNaLFVBQVVFLFFBQVFPLFdBQVcsaUJBQWlCLGFBQWE7UUFBRUcsV0FBVztJQUFLO0lBRTdFLElBQUk7UUFDSGYsYUFBYSxVQUFVO1lBQUM7U0FBTyxFQUFFO1lBQUVnQixPQUFPO1FBQU87SUFDbEQsRUFBRSxPQUFNO1FBQ1BDLFFBQVFDLEtBQUssQ0FDWiw2REFDQztRQUVGQyxRQUFRQyxJQUFJLENBQUM7SUFDZDtJQUVBLE1BQU1DLFVBQVVGLFFBQVFHLE1BQU07SUFDOUIsTUFBTUMsVUFBVUosUUFBUUssTUFBTSxRQUFRSDtJQUN0QyxNQUFNSSxnQkFBZ0JKLFdBQVcsUUFBUUUsV0FBVztJQUVwRCxNQUFNRyxjQUFjckIsUUFBUUQsV0FBVztJQUN2Q0QsVUFBVXVCLGFBQWE7UUFBRVgsV0FBVztJQUFLO0lBRXpDLE1BQU1ZLGNBQWM7SUFFcEIsTUFBTUMsVUFBb0I7UUFDekI7UUFDQSxHQUFHaEIsVUFBVSxXQUFXLENBQUM7UUFDekI7UUFDQSxHQUFHYyxZQUFZLFdBQVcsQ0FBQztLQUMzQjtJQUVELE1BQU1HLFVBQW9CO1FBQ3pCO1FBQ0E7UUFDQTtRQUNBLENBQUMsc0JBQXNCLEVBQUVmLGFBQWE7UUFDdEM7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLENBQUMsS0FBSyxFQUFFYSxhQUFhO0tBQ3JCO0lBRUQsTUFBTUcsWUFBWXpCLFFBQVFELFdBQVc7SUFDckMsSUFBSUYsV0FBVzRCLFlBQVk7UUFDMUJGLFFBQVFHLElBQUksQ0FBQyxNQUFNLEdBQUdELFVBQVUsbUJBQW1CLENBQUM7UUFDcERELFFBQVFFLElBQUksQ0FBQyxNQUFNO0lBQ3BCO0lBRUEsTUFBTUMsaUJBQWlCM0IsUUFBUUQsV0FBVztJQUMxQyxJQUFJRixXQUFXOEIsaUJBQWlCO1FBQy9CSixRQUFRRyxJQUFJLENBQUMsTUFBTSxHQUFHQyxlQUFlLENBQUMsRUFBRUwsWUFBWSxjQUFjLENBQUM7SUFDcEU7SUFFQSxNQUFNTSxXQUFxQixFQUFFO0lBQzdCLElBQUlSLGVBQWU7UUFDbEJRLFNBQVNGLElBQUksQ0FBQyxVQUFVLEdBQUdWLFFBQVEsQ0FBQyxFQUFFRSxTQUFTO0lBQ2hELE9BQU8sSUFBSUYsV0FBVyxNQUFNO1FBQzNCUSxRQUFRRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRVYsU0FBUztRQUN4QyxJQUFJRSxXQUFXLE1BQU1NLFFBQVFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFUixTQUFTO0lBQzlEO0lBRUFOLFFBQVFpQixHQUFHLENBQUM7SUFFWixNQUFNQyxXQUFXaEIsUUFBUWlCLEtBQUssQ0FBQ0MsS0FBSyxHQUFHO1FBQUM7S0FBTSxHQUFHO1FBQUM7S0FBSztJQUV2RCxNQUFNQyxTQUFTckMsVUFDZCxVQUNBO1FBQ0M7UUFDQTtXQUNHa0M7V0FDQUY7V0FDQUw7V0FDQUM7UUFDSDtRQUNBO1FBQ0FwQjtXQUNHSTtLQUNILEVBQ0Q7UUFBRUcsT0FBTztJQUFVO0lBR3BCLElBQUlzQixPQUFPQyxNQUFNLEtBQUssR0FBRztRQUN4QnRCLFFBQVFpQixHQUFHLENBQUMsQ0FBQywyREFBMkQsRUFBRXRCLFVBQVUsRUFBRSxDQUFDO0lBQ3hGO0lBRUFPLFFBQVFDLElBQUksQ0FBQ2tCLE9BQU9DLE1BQU0sSUFBSTtBQUMvQiJ9
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
const _require = createRequire(import.meta.url);
|
|
5
|
+
const DEFAULT_CREATE_VERSION = "0.0.1-dev";
|
|
6
|
+
const DEFAULT_CREATE_IMAGE_REPOSITORY = "ghcr.io/typesmiths/decohere/create";
|
|
7
|
+
function resolveCreateMetadata() {
|
|
8
|
+
let dir = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
for(let i = 0; i < 5; i++){
|
|
10
|
+
try {
|
|
11
|
+
const pkg = _require(join(dir, "package.json"));
|
|
12
|
+
if (pkg.name === "@decohere/create") {
|
|
13
|
+
return {
|
|
14
|
+
version: pkg.version ?? DEFAULT_CREATE_VERSION,
|
|
15
|
+
imageRepository: pkg.decohere?.dockerImageRepository ?? DEFAULT_CREATE_IMAGE_REPOSITORY
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
} catch {}
|
|
19
|
+
const parent = dirname(dir);
|
|
20
|
+
if (parent === dir) break;
|
|
21
|
+
dir = parent;
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
version: DEFAULT_CREATE_VERSION,
|
|
25
|
+
imageRepository: DEFAULT_CREATE_IMAGE_REPOSITORY
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const createMetadata = resolveCreateMetadata();
|
|
29
|
+
export const CREATE_VERSION = createMetadata.version;
|
|
30
|
+
export const CREATE_IMAGE_REPOSITORY = createMetadata.imageRepository;
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvdmVyc2lvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gXCJub2RlOnVybFwiO1xuXG5jb25zdCBfcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcblxudHlwZSBDcmVhdGVQYWNrYWdlTWV0YWRhdGEgPSB7XG5cdG5hbWU/OiBzdHJpbmc7XG5cdHZlcnNpb24/OiBzdHJpbmc7XG5cdGRlY29oZXJlPzoge1xuXHRcdGRvY2tlckltYWdlUmVwb3NpdG9yeT86IHN0cmluZztcblx0fTtcbn07XG5cbmNvbnN0IERFRkFVTFRfQ1JFQVRFX1ZFUlNJT04gPSBcIjAuMC4xLWRldlwiO1xuY29uc3QgREVGQVVMVF9DUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSA9IFwiZ2hjci5pby90eXBlc21pdGhzL2RlY29oZXJlL2NyZWF0ZVwiO1xuXG5mdW5jdGlvbiByZXNvbHZlQ3JlYXRlTWV0YWRhdGEoKSB7XG5cdGxldCBkaXIgPSBkaXJuYW1lKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHBrZyA9IF9yZXF1aXJlKGpvaW4oZGlyLCBcInBhY2thZ2UuanNvblwiKSkgYXMgQ3JlYXRlUGFja2FnZU1ldGFkYXRhO1xuXHRcdFx0aWYgKHBrZy5uYW1lID09PSBcIkBkZWNvaGVyZS9jcmVhdGVcIikge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdHZlcnNpb246IHBrZy52ZXJzaW9uID8/IERFRkFVTFRfQ1JFQVRFX1ZFUlNJT04sXG5cdFx0XHRcdFx0aW1hZ2VSZXBvc2l0b3J5OlxuXHRcdFx0XHRcdFx0cGtnLmRlY29oZXJlPy5kb2NrZXJJbWFnZVJlcG9zaXRvcnkgPz8gREVGQVVMVF9DUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIHt9XG5cdFx0Y29uc3QgcGFyZW50ID0gZGlybmFtZShkaXIpO1xuXHRcdGlmIChwYXJlbnQgPT09IGRpcikgYnJlYWs7XG5cdFx0ZGlyID0gcGFyZW50O1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHR2ZXJzaW9uOiBERUZBVUxUX0NSRUFURV9WRVJTSU9OLFxuXHRcdGltYWdlUmVwb3NpdG9yeTogREVGQVVMVF9DUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSxcblx0fTtcbn1cblxuY29uc3QgY3JlYXRlTWV0YWRhdGEgPSByZXNvbHZlQ3JlYXRlTWV0YWRhdGEoKTtcblxuZXhwb3J0IGNvbnN0IENSRUFURV9WRVJTSU9OID0gY3JlYXRlTWV0YWRhdGEudmVyc2lvbjtcblxuZXhwb3J0IGNvbnN0IENSRUFURV9JTUFHRV9SRVBPU0lUT1JZID0gY3JlYXRlTWV0YWRhdGEuaW1hZ2VSZXBvc2l0b3J5O1xuIl0sIm5hbWVzIjpbImNyZWF0ZVJlcXVpcmUiLCJkaXJuYW1lIiwiam9pbiIsImZpbGVVUkxUb1BhdGgiLCJfcmVxdWlyZSIsInVybCIsIkRFRkFVTFRfQ1JFQVRFX1ZFUlNJT04iLCJERUZBVUxUX0NSRUFURV9JTUFHRV9SRVBPU0lUT1JZIiwicmVzb2x2ZUNyZWF0ZU1ldGFkYXRhIiwiZGlyIiwiaSIsInBrZyIsIm5hbWUiLCJ2ZXJzaW9uIiwiaW1hZ2VSZXBvc2l0b3J5IiwiZGVjb2hlcmUiLCJkb2NrZXJJbWFnZVJlcG9zaXRvcnkiLCJwYXJlbnQiLCJjcmVhdGVNZXRhZGF0YSIsIkNSRUFURV9WRVJTSU9OIiwiQ1JFQVRFX0lNQUdFX1JFUE9TSVRPUlkiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsUUFBUSxjQUFjO0FBQzVDLFNBQVNDLE9BQU8sRUFBRUMsSUFBSSxRQUFRLFlBQVk7QUFDMUMsU0FBU0MsYUFBYSxRQUFRLFdBQVc7QUFFekMsTUFBTUMsV0FBV0osY0FBYyxZQUFZSyxHQUFHO0FBVTlDLE1BQU1DLHlCQUF5QjtBQUMvQixNQUFNQyxrQ0FBa0M7QUFFeEMsU0FBU0M7SUFDUixJQUFJQyxNQUFNUixRQUFRRSxjQUFjLFlBQVlFLEdBQUc7SUFDL0MsSUFBSyxJQUFJSyxJQUFJLEdBQUdBLElBQUksR0FBR0EsSUFBSztRQUMzQixJQUFJO1lBQ0gsTUFBTUMsTUFBTVAsU0FBU0YsS0FBS08sS0FBSztZQUMvQixJQUFJRSxJQUFJQyxJQUFJLEtBQUssb0JBQW9CO2dCQUNwQyxPQUFPO29CQUNOQyxTQUFTRixJQUFJRSxPQUFPLElBQUlQO29CQUN4QlEsaUJBQ0NILElBQUlJLFFBQVEsRUFBRUMseUJBQXlCVDtnQkFDekM7WUFDRDtRQUNELEVBQUUsT0FBTSxDQUFDO1FBQ1QsTUFBTVUsU0FBU2hCLFFBQVFRO1FBQ3ZCLElBQUlRLFdBQVdSLEtBQUs7UUFDcEJBLE1BQU1RO0lBQ1A7SUFFQSxPQUFPO1FBQ05KLFNBQVNQO1FBQ1RRLGlCQUFpQlA7SUFDbEI7QUFDRDtBQUVBLE1BQU1XLGlCQUFpQlY7QUFFdkIsT0FBTyxNQUFNVyxpQkFBaUJELGVBQWVMLE9BQU8sQ0FBQztBQUVyRCxPQUFPLE1BQU1PLDBCQUEwQkYsZUFBZUosZUFBZSxDQUFDIn0=
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Vendor `@decohere/cli` for the builder image: resolve `@decohere/*` from
|
|
4
|
+
* dist/release via `file:` (not `overrides`), `npm install --install-links`,
|
|
5
|
+
* then tar the installed tree including `node_modules`. `--install-links`
|
|
6
|
+
* materializes `file:` packages (and their deps) instead of leaving symlinks
|
|
7
|
+
* whose nested installs live outside the create directory.
|
|
8
|
+
*/
|
|
9
|
+
import { spawnSync } from "node:child_process";
|
|
10
|
+
import { readdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
11
|
+
import { dirname, join, relative, resolve } from "node:path";
|
|
12
|
+
import { fileURLToPath } from "node:url";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @typedef {{ name: string, dir: string }} WorkspacePackage
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @param {string} rootDir
|
|
20
|
+
* @returns {WorkspacePackage[]}
|
|
21
|
+
*/
|
|
22
|
+
export function collectWorkspacePackages(rootDir) {
|
|
23
|
+
/** @type {WorkspacePackage[]} */
|
|
24
|
+
const found = [];
|
|
25
|
+
const walk = (dir) => {
|
|
26
|
+
let entries;
|
|
27
|
+
try {
|
|
28
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
29
|
+
} catch {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
for (const entry of entries) {
|
|
33
|
+
if (entry.name === "node_modules" || entry.name === ".git") continue;
|
|
34
|
+
const path = join(dir, entry.name);
|
|
35
|
+
if (entry.isDirectory()) {
|
|
36
|
+
walk(path);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (entry.name !== "package.json") continue;
|
|
40
|
+
const pkg = JSON.parse(readFileSync(path, "utf8"));
|
|
41
|
+
if (typeof pkg.name === "string" && pkg.name.startsWith("@decohere/")) {
|
|
42
|
+
found.push({ name: pkg.name, dir });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
walk(rootDir);
|
|
47
|
+
return found;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @param {string} fromDir
|
|
52
|
+
* @param {string} pkgDir
|
|
53
|
+
*/
|
|
54
|
+
export function fileSpec(fromDir, pkgDir) {
|
|
55
|
+
let rel = relative(fromDir, pkgDir) || ".";
|
|
56
|
+
rel = rel.replaceAll("\\", "/");
|
|
57
|
+
if (!rel.startsWith(".")) rel = `./${rel}`;
|
|
58
|
+
return `file:${rel}`;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Rewrite `@decohere/*` dependency specs to local `file:` paths.
|
|
63
|
+
* Must mutate `dependencies` (not `overrides`) — npm throws EOVERRIDE when an
|
|
64
|
+
* override conflicts with a direct dependency.
|
|
65
|
+
*
|
|
66
|
+
* @param {Record<string, unknown>} pkg
|
|
67
|
+
* @param {string} fromDir
|
|
68
|
+
* @param {WorkspacePackage[]} packages
|
|
69
|
+
*/
|
|
70
|
+
export function rewriteDecohereDepsToFile(pkg, fromDir, packages) {
|
|
71
|
+
const byName = new Map(packages.map((item) => [item.name, item.dir]));
|
|
72
|
+
const from = resolve(fromDir);
|
|
73
|
+
const rewrite = (deps) => {
|
|
74
|
+
if (deps == null || typeof deps !== "object" || Array.isArray(deps)) return deps;
|
|
75
|
+
const next = { .../** @type {Record<string, unknown>} */ (deps) };
|
|
76
|
+
for (const name of Object.keys(next)) {
|
|
77
|
+
const dir = byName.get(name);
|
|
78
|
+
if (dir == null || resolve(dir) === from) continue;
|
|
79
|
+
next[name] = fileSpec(fromDir, dir);
|
|
80
|
+
}
|
|
81
|
+
return next;
|
|
82
|
+
};
|
|
83
|
+
return {
|
|
84
|
+
...pkg,
|
|
85
|
+
dependencies: rewrite(pkg.dependencies),
|
|
86
|
+
optionalDependencies: rewrite(pkg.optionalDependencies),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function writeJson(path, value) {
|
|
91
|
+
writeFileSync(path, `${JSON.stringify(value, null, 2)}\n`);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function runNpm(cwd, args) {
|
|
95
|
+
const result = spawnSync("npm", args, { cwd, encoding: "utf8" });
|
|
96
|
+
if (result.status !== 0) {
|
|
97
|
+
throw new Error(
|
|
98
|
+
`npm ${args.join(" ")} failed (exit ${result.status}):\n${result.stderr}${result.stdout}`,
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
return result.stdout.trim();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function packInstalledTree(outDir, dest) {
|
|
105
|
+
const result = spawnSync(
|
|
106
|
+
"tar",
|
|
107
|
+
["--create", "--gzip", "--dereference", "--file", dest, "-C", outDir, "."],
|
|
108
|
+
{ encoding: "utf8" },
|
|
109
|
+
);
|
|
110
|
+
if (result.status !== 0) {
|
|
111
|
+
throw new Error(`tar failed (exit ${result.status}):\n${result.stderr}${result.stdout}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function packBuilderTgz(options) {
|
|
116
|
+
const outDir = resolve(options.outDir);
|
|
117
|
+
const workspaceOut = resolve(options.workspaceOut);
|
|
118
|
+
const dest = resolve(options.dest);
|
|
119
|
+
const packageJsonPath = join(outDir, "package.json");
|
|
120
|
+
const packages = collectWorkspacePackages(workspaceOut);
|
|
121
|
+
const originals = packages.map((pkg) => {
|
|
122
|
+
const path = join(pkg.dir, "package.json");
|
|
123
|
+
return { path, original: JSON.parse(readFileSync(path, "utf8")) };
|
|
124
|
+
});
|
|
125
|
+
const createOriginal = originals.find((entry) => entry.path === packageJsonPath)?.original;
|
|
126
|
+
if (createOriginal == null) {
|
|
127
|
+
throw new Error(`No @decohere package.json at ${packageJsonPath}`);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
try {
|
|
131
|
+
for (const { path, original } of originals) {
|
|
132
|
+
writeJson(path, rewriteDecohereDepsToFile(original, dirname(path), packages));
|
|
133
|
+
}
|
|
134
|
+
runNpm(outDir, ["install", "--omit=dev", "--ignore-scripts", "--install-links"]);
|
|
135
|
+
} finally {
|
|
136
|
+
for (const { path, original } of originals) {
|
|
137
|
+
writeJson(path, original);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
packInstalledTree(outDir, dest);
|
|
142
|
+
return dest;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function parseArgs(argv) {
|
|
146
|
+
/** @type {Record<string, string>} */
|
|
147
|
+
const parsed = {};
|
|
148
|
+
for (let i = 0; i < argv.length; i++) {
|
|
149
|
+
const arg = argv[i];
|
|
150
|
+
if (arg == null || !arg.startsWith("--")) continue;
|
|
151
|
+
const key = arg.slice(2);
|
|
152
|
+
const value = argv[i + 1];
|
|
153
|
+
if (value == null || value.startsWith("--")) {
|
|
154
|
+
throw new Error(`Missing value for --${key}`);
|
|
155
|
+
}
|
|
156
|
+
parsed[key] = value;
|
|
157
|
+
i++;
|
|
158
|
+
}
|
|
159
|
+
return parsed;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function main() {
|
|
163
|
+
const args = parseArgs(process.argv.slice(2));
|
|
164
|
+
const outDir = args["out-dir"];
|
|
165
|
+
const workspaceOut = args["workspace-out"];
|
|
166
|
+
const dest = args.dest;
|
|
167
|
+
if (outDir == null || workspaceOut == null || dest == null) {
|
|
168
|
+
throw new Error(
|
|
169
|
+
"Usage: pack-builder-tgz.mjs --out-dir <dir> --workspace-out <dir> --dest <create.tgz>",
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
packBuilderTgz({ outDir, workspaceOut, dest });
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (process.argv[1] != null && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
|
176
|
+
main();
|
|
177
|
+
}
|
package/package.json
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decohere/create",
|
|
3
|
-
"version": "0.0.1-dev.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.0.1-dev.50",
|
|
4
|
+
"description": "Download the Decohere scaffolder image and run it (npm create @decohere)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"decohere",
|
|
7
7
|
"create",
|
|
8
8
|
"scaffold",
|
|
9
|
-
"cli"
|
|
10
|
-
"forge",
|
|
11
|
-
"flux",
|
|
12
|
-
"typescript"
|
|
9
|
+
"cli"
|
|
13
10
|
],
|
|
14
11
|
"license": "ISC",
|
|
15
12
|
"author": "Typesmiths",
|
|
@@ -20,8 +17,9 @@
|
|
|
20
17
|
"scripts": {
|
|
21
18
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
22
19
|
},
|
|
23
|
-
"dependencies": {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
"dependencies": {},
|
|
21
|
+
"devDependencies": {},
|
|
22
|
+
"decohere": {
|
|
23
|
+
"dockerImageRepository": "ghcr.io/typesmiths/decohere/create"
|
|
24
|
+
}
|
|
27
25
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type LaunchPlan = {
|
|
2
|
+
targetDir: string;
|
|
3
|
+
containerArgv: string[];
|
|
4
|
+
projectName: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Host `npm create` argv → directory to mount and argv for the in-image CLI.
|
|
8
|
+
* Positional `webapi my-app` wins over `-d` (npm treats `-d` as its own loglevel).
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveLaunch(argv: string[], cwd?: string): LaunchPlan;
|
package/commonjs/src/scaffold.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "scaffold", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return scaffold;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _nodefs = require("node:fs");
|
|
12
|
-
const _promises = require("node:fs/promises");
|
|
13
|
-
const _nodepath = require("node:path");
|
|
14
|
-
const _promises1 = require("node:readline/promises");
|
|
15
|
-
const _templates = require("./templates.js");
|
|
16
|
-
async function scaffold(targetDir, opts) {
|
|
17
|
-
const name = (0, _nodepath.basename)(targetDir);
|
|
18
|
-
if ((0, _nodefs.existsSync)(targetDir) && (0, _nodefs.readdirSync)(targetDir).length > 0 && !opts.yes) {
|
|
19
|
-
const rl = (0, _promises1.createInterface)({
|
|
20
|
-
input: process.stdin,
|
|
21
|
-
output: process.stdout
|
|
22
|
-
});
|
|
23
|
-
const answer = await rl.question(`Directory "${name}" is not empty. Continue? [y/N] `);
|
|
24
|
-
rl.close();
|
|
25
|
-
if (!answer.trim().toLowerCase().startsWith("y")) {
|
|
26
|
-
console.log("Aborted.");
|
|
27
|
-
process.exit(0);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
await (0, _promises.mkdir)((0, _nodepath.join)(targetDir, "projects", "app", "src"), {
|
|
31
|
-
recursive: true
|
|
32
|
-
});
|
|
33
|
-
await Promise.all([
|
|
34
|
-
(0, _promises.writeFile)((0, _nodepath.join)(targetDir, "package.json"), (0, _templates.ROOT_PACKAGE_JSON)(name)),
|
|
35
|
-
(0, _promises.writeFile)((0, _nodepath.join)(targetDir, "tsconfig.json"), _templates.TSCONFIG),
|
|
36
|
-
(0, _promises.writeFile)((0, _nodepath.join)(targetDir, "projects", "app", "package.json"), (0, _templates.APP_PACKAGE_JSON)(name)),
|
|
37
|
-
(0, _promises.writeFile)((0, _nodepath.join)(targetDir, "projects", "app", "src", "main.ts"), _templates.MAIN_TS)
|
|
38
|
-
]);
|
|
39
|
-
console.log(`\nScaffolded ${name}. Next steps:\n`);
|
|
40
|
-
if ((0, _nodepath.basename)(targetDir) !== targetDir) {
|
|
41
|
-
console.log(` cd ${name}`);
|
|
42
|
-
}
|
|
43
|
-
console.log(" pnpm install");
|
|
44
|
-
console.log(" pnpm build # forge build");
|
|
45
|
-
console.log(" pnpm dev # flux serve\n");
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvY3JlYXRlL3NyYy9zY2FmZm9sZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkZGlyU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBta2Rpciwgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IGJhc2VuYW1lLCBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgY3JlYXRlSW50ZXJmYWNlIH0gZnJvbSBcIm5vZGU6cmVhZGxpbmUvcHJvbWlzZXNcIjtcbmltcG9ydCB7IEFQUF9QQUNLQUdFX0pTT04sIE1BSU5fVFMsIFJPT1RfUEFDS0FHRV9KU09OLCBUU0NPTkZJRyB9IGZyb20gXCIuL3RlbXBsYXRlcy5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjYWZmb2xkT3B0aW9ucyB7XG5cdHllcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzY2FmZm9sZCh0YXJnZXREaXI6IHN0cmluZywgb3B0czogU2NhZmZvbGRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IG5hbWUgPSBiYXNlbmFtZSh0YXJnZXREaXIpO1xuXG5cdGlmIChleGlzdHNTeW5jKHRhcmdldERpcikgJiYgcmVhZGRpclN5bmModGFyZ2V0RGlyKS5sZW5ndGggPiAwICYmICFvcHRzLnllcykge1xuXHRcdGNvbnN0IHJsID0gY3JlYXRlSW50ZXJmYWNlKHtcblx0XHRcdGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuXHRcdFx0b3V0cHV0OiBwcm9jZXNzLnN0ZG91dCxcblx0XHR9KTtcblx0XHRjb25zdCBhbnN3ZXIgPSBhd2FpdCBybC5xdWVzdGlvbihgRGlyZWN0b3J5IFwiJHtuYW1lfVwiIGlzIG5vdCBlbXB0eS4gQ29udGludWU/IFt5L05dIGApO1xuXHRcdHJsLmNsb3NlKCk7XG5cdFx0aWYgKCFhbnN3ZXIudHJpbSgpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcInlcIikpIHtcblx0XHRcdGNvbnNvbGUubG9nKFwiQWJvcnRlZC5cIik7XG5cdFx0XHRwcm9jZXNzLmV4aXQoMCk7XG5cdFx0fVxuXHR9XG5cblx0YXdhaXQgbWtkaXIoam9pbih0YXJnZXREaXIsIFwicHJvamVjdHNcIiwgXCJhcHBcIiwgXCJzcmNcIiksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG5cdGF3YWl0IFByb21pc2UuYWxsKFtcblx0XHR3cml0ZUZpbGUoam9pbih0YXJnZXREaXIsIFwicGFja2FnZS5qc29uXCIpLCBST09UX1BBQ0tBR0VfSlNPTihuYW1lKSksXG5cdFx0d3JpdGVGaWxlKGpvaW4odGFyZ2V0RGlyLCBcInRzY29uZmlnLmpzb25cIiksIFRTQ09ORklHKSxcblx0XHR3cml0ZUZpbGUoam9pbih0YXJnZXREaXIsIFwicHJvamVjdHNcIiwgXCJhcHBcIiwgXCJwYWNrYWdlLmpzb25cIiksIEFQUF9QQUNLQUdFX0pTT04obmFtZSkpLFxuXHRcdHdyaXRlRmlsZShqb2luKHRhcmdldERpciwgXCJwcm9qZWN0c1wiLCBcImFwcFwiLCBcInNyY1wiLCBcIm1haW4udHNcIiksIE1BSU5fVFMpLFxuXHRdKTtcblxuXHRjb25zb2xlLmxvZyhgXFxuU2NhZmZvbGRlZCAke25hbWV9LiBOZXh0IHN0ZXBzOlxcbmApO1xuXHRpZiAoYmFzZW5hbWUodGFyZ2V0RGlyKSAhPT0gdGFyZ2V0RGlyKSB7XG5cdFx0Y29uc29sZS5sb2coYCAgY2QgJHtuYW1lfWApO1xuXHR9XG5cdGNvbnNvbGUubG9nKFwiICBwbnBtIGluc3RhbGxcIik7XG5cdGNvbnNvbGUubG9nKFwiICBwbnBtIGJ1aWxkICAgICAjIGZvcmdlIGJ1aWxkXCIpO1xuXHRjb25zb2xlLmxvZyhcIiAgcG5wbSBkZXYgICAgICAgIyBmbHV4IHNlcnZlXFxuXCIpO1xufVxuIl0sIm5hbWVzIjpbInNjYWZmb2xkIiwidGFyZ2V0RGlyIiwib3B0cyIsIm5hbWUiLCJiYXNlbmFtZSIsImV4aXN0c1N5bmMiLCJyZWFkZGlyU3luYyIsImxlbmd0aCIsInllcyIsInJsIiwiY3JlYXRlSW50ZXJmYWNlIiwiaW5wdXQiLCJwcm9jZXNzIiwic3RkaW4iLCJvdXRwdXQiLCJzdGRvdXQiLCJhbnN3ZXIiLCJxdWVzdGlvbiIsImNsb3NlIiwidHJpbSIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsImNvbnNvbGUiLCJsb2ciLCJleGl0IiwibWtkaXIiLCJqb2luIiwicmVjdXJzaXZlIiwiUHJvbWlzZSIsImFsbCIsIndyaXRlRmlsZSIsIlJPT1RfUEFDS0FHRV9KU09OIiwiVFNDT05GSUciLCJBUFBfUEFDS0FHRV9KU09OIiwiTUFJTl9UUyJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFVc0JBOzs7ZUFBQUE7Ozt3QkFWa0I7MEJBQ1A7MEJBQ0Y7MkJBQ0M7MkJBQ3VDO0FBTWhFLGVBQWVBLFNBQVNDLFNBQWlCLEVBQUVDLElBQXFCO0lBQ3RFLE1BQU1DLE9BQU9DLElBQUFBLGtCQUFRLEVBQUNIO0lBRXRCLElBQUlJLElBQUFBLGtCQUFVLEVBQUNKLGNBQWNLLElBQUFBLG1CQUFXLEVBQUNMLFdBQVdNLE1BQU0sR0FBRyxLQUFLLENBQUNMLEtBQUtNLEdBQUcsRUFBRTtRQUM1RSxNQUFNQyxLQUFLQyxJQUFBQSwwQkFBZSxFQUFDO1lBQzFCQyxPQUFPQyxRQUFRQyxLQUFLO1lBQ3BCQyxRQUFRRixRQUFRRyxNQUFNO1FBQ3ZCO1FBQ0EsTUFBTUMsU0FBUyxNQUFNUCxHQUFHUSxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUVkLEtBQUssZ0NBQWdDLENBQUM7UUFDckZNLEdBQUdTLEtBQUs7UUFDUixJQUFJLENBQUNGLE9BQU9HLElBQUksR0FBR0MsV0FBVyxHQUFHQyxVQUFVLENBQUMsTUFBTTtZQUNqREMsUUFBUUMsR0FBRyxDQUFDO1lBQ1pYLFFBQVFZLElBQUksQ0FBQztRQUNkO0lBQ0Q7SUFFQSxNQUFNQyxJQUFBQSxlQUFLLEVBQUNDLElBQUFBLGNBQUksRUFBQ3pCLFdBQVcsWUFBWSxPQUFPLFFBQVE7UUFBRTBCLFdBQVc7SUFBSztJQUV6RSxNQUFNQyxRQUFRQyxHQUFHLENBQUM7UUFDakJDLElBQUFBLG1CQUFTLEVBQUNKLElBQUFBLGNBQUksRUFBQ3pCLFdBQVcsaUJBQWlCOEIsSUFBQUEsNEJBQWlCLEVBQUM1QjtRQUM3RDJCLElBQUFBLG1CQUFTLEVBQUNKLElBQUFBLGNBQUksRUFBQ3pCLFdBQVcsa0JBQWtCK0IsbUJBQVE7UUFDcERGLElBQUFBLG1CQUFTLEVBQUNKLElBQUFBLGNBQUksRUFBQ3pCLFdBQVcsWUFBWSxPQUFPLGlCQUFpQmdDLElBQUFBLDJCQUFnQixFQUFDOUI7UUFDL0UyQixJQUFBQSxtQkFBUyxFQUFDSixJQUFBQSxjQUFJLEVBQUN6QixXQUFXLFlBQVksT0FBTyxPQUFPLFlBQVlpQyxrQkFBTztLQUN2RTtJQUVEWixRQUFRQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUVwQixLQUFLLGVBQWUsQ0FBQztJQUNqRCxJQUFJQyxJQUFBQSxrQkFBUSxFQUFDSCxlQUFlQSxXQUFXO1FBQ3RDcUIsUUFBUUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFcEIsTUFBTTtJQUMzQjtJQUNBbUIsUUFBUUMsR0FBRyxDQUFDO0lBQ1pELFFBQVFDLEdBQUcsQ0FBQztJQUNaRCxRQUFRQyxHQUFHLENBQUM7QUFDYiJ9
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
get APP_PACKAGE_JSON () {
|
|
13
|
-
return APP_PACKAGE_JSON;
|
|
14
|
-
},
|
|
15
|
-
get MAIN_TS () {
|
|
16
|
-
return MAIN_TS;
|
|
17
|
-
},
|
|
18
|
-
get ROOT_PACKAGE_JSON () {
|
|
19
|
-
return ROOT_PACKAGE_JSON;
|
|
20
|
-
},
|
|
21
|
-
get TSCONFIG () {
|
|
22
|
-
return TSCONFIG;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
function ROOT_PACKAGE_JSON(name) {
|
|
26
|
-
return JSON.stringify({
|
|
27
|
-
name,
|
|
28
|
-
version: "0.0.1",
|
|
29
|
-
type: "module",
|
|
30
|
-
scripts: {
|
|
31
|
-
build: "forge build",
|
|
32
|
-
"build:watch": "forge build --watch",
|
|
33
|
-
dev: "flux serve"
|
|
34
|
-
},
|
|
35
|
-
devDependencies: {
|
|
36
|
-
"@decohere/terminal": "0.0.1-dev.14",
|
|
37
|
-
typescript: "^6.0.3"
|
|
38
|
-
}
|
|
39
|
-
}, null, 2);
|
|
40
|
-
}
|
|
41
|
-
function APP_PACKAGE_JSON(name) {
|
|
42
|
-
return JSON.stringify({
|
|
43
|
-
name: `@${name}/app`,
|
|
44
|
-
version: "0.0.1",
|
|
45
|
-
type: "module",
|
|
46
|
-
main: "src/main.ts"
|
|
47
|
-
}, null, 2);
|
|
48
|
-
}
|
|
49
|
-
const TSCONFIG = JSON.stringify({
|
|
50
|
-
compilerOptions: {
|
|
51
|
-
target: "ES2022",
|
|
52
|
-
module: "NodeNext",
|
|
53
|
-
moduleResolution: "NodeNext",
|
|
54
|
-
strict: true,
|
|
55
|
-
skipLibCheck: true
|
|
56
|
-
},
|
|
57
|
-
include: [
|
|
58
|
-
"projects"
|
|
59
|
-
]
|
|
60
|
-
}, null, 2);
|
|
61
|
-
const MAIN_TS = `console.log("Hello from Decohere!");
|
|
62
|
-
`;
|
|
63
|
-
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvY3JlYXRlL3NyYy90ZW1wbGF0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIFJPT1RfUEFDS0FHRV9KU09OKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBKU09OLnN0cmluZ2lmeShcblx0XHR7XG5cdFx0XHRuYW1lLFxuXHRcdFx0dmVyc2lvbjogXCIwLjAuMVwiLFxuXHRcdFx0dHlwZTogXCJtb2R1bGVcIixcblx0XHRcdHNjcmlwdHM6IHtcblx0XHRcdFx0YnVpbGQ6IFwiZm9yZ2UgYnVpbGRcIixcblx0XHRcdFx0XCJidWlsZDp3YXRjaFwiOiBcImZvcmdlIGJ1aWxkIC0td2F0Y2hcIixcblx0XHRcdFx0ZGV2OiBcImZsdXggc2VydmVcIixcblx0XHRcdH0sXG5cdFx0XHRkZXZEZXBlbmRlbmNpZXM6IHtcblx0XHRcdFx0XCJAZGVjb2hlcmUvdGVybWluYWxcIjogXCIwLjAuMS1kZXYuMTRcIixcblx0XHRcdFx0dHlwZXNjcmlwdDogXCJeNi4wLjNcIixcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRudWxsLFxuXHRcdDIsXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBUFBfUEFDS0FHRV9KU09OKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBKU09OLnN0cmluZ2lmeShcblx0XHR7XG5cdFx0XHRuYW1lOiBgQCR7bmFtZX0vYXBwYCxcblx0XHRcdHZlcnNpb246IFwiMC4wLjFcIixcblx0XHRcdHR5cGU6IFwibW9kdWxlXCIsXG5cdFx0XHRtYWluOiBcInNyYy9tYWluLnRzXCIsXG5cdFx0fSxcblx0XHRudWxsLFxuXHRcdDIsXG5cdCk7XG59XG5cbmV4cG9ydCBjb25zdCBUU0NPTkZJRyA9IEpTT04uc3RyaW5naWZ5KFxuXHR7XG5cdFx0Y29tcGlsZXJPcHRpb25zOiB7XG5cdFx0XHR0YXJnZXQ6IFwiRVMyMDIyXCIsXG5cdFx0XHRtb2R1bGU6IFwiTm9kZU5leHRcIixcblx0XHRcdG1vZHVsZVJlc29sdXRpb246IFwiTm9kZU5leHRcIixcblx0XHRcdHN0cmljdDogdHJ1ZSxcblx0XHRcdHNraXBMaWJDaGVjazogdHJ1ZSxcblx0XHR9LFxuXHRcdGluY2x1ZGU6IFtcInByb2plY3RzXCJdLFxuXHR9LFxuXHRudWxsLFxuXHQyLFxuKTtcblxuZXhwb3J0IGNvbnN0IE1BSU5fVFMgPSBgY29uc29sZS5sb2coXCJIZWxsbyBmcm9tIERlY29oZXJlIVwiKTtcbmA7XG4iXSwibmFtZXMiOlsiQVBQX1BBQ0tBR0VfSlNPTiIsIk1BSU5fVFMiLCJST09UX1BBQ0tBR0VfSlNPTiIsIlRTQ09ORklHIiwibmFtZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ2ZXJzaW9uIiwidHlwZSIsInNjcmlwdHMiLCJidWlsZCIsImRldiIsImRldkRlcGVuZGVuY2llcyIsInR5cGVzY3JpcHQiLCJtYWluIiwiY29tcGlsZXJPcHRpb25zIiwidGFyZ2V0IiwibW9kdWxlIiwibW9kdWxlUmVzb2x1dGlvbiIsInN0cmljdCIsInNraXBMaWJDaGVjayIsImluY2x1ZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBcUJnQkE7ZUFBQUE7O1FBNEJIQztlQUFBQTs7UUFqREdDO2VBQUFBOztRQWtDSEM7ZUFBQUE7OztBQWxDTixTQUFTRCxrQkFBa0JFLElBQVk7SUFDN0MsT0FBT0MsS0FBS0MsU0FBUyxDQUNwQjtRQUNDRjtRQUNBRyxTQUFTO1FBQ1RDLE1BQU07UUFDTkMsU0FBUztZQUNSQyxPQUFPO1lBQ1AsZUFBZTtZQUNmQyxLQUFLO1FBQ047UUFDQUMsaUJBQWlCO1lBQ2hCLHNCQUFzQjtZQUN0QkMsWUFBWTtRQUNiO0lBQ0QsR0FDQSxNQUNBO0FBRUY7QUFFTyxTQUFTYixpQkFBaUJJLElBQVk7SUFDNUMsT0FBT0MsS0FBS0MsU0FBUyxDQUNwQjtRQUNDRixNQUFNLENBQUMsQ0FBQyxFQUFFQSxLQUFLLElBQUksQ0FBQztRQUNwQkcsU0FBUztRQUNUQyxNQUFNO1FBQ05NLE1BQU07SUFDUCxHQUNBLE1BQ0E7QUFFRjtBQUVPLE1BQU1YLFdBQVdFLEtBQUtDLFNBQVMsQ0FDckM7SUFDQ1MsaUJBQWlCO1FBQ2hCQyxRQUFRO1FBQ1JDLFFBQVE7UUFDUkMsa0JBQWtCO1FBQ2xCQyxRQUFRO1FBQ1JDLGNBQWM7SUFDZjtJQUNBQyxTQUFTO1FBQUM7S0FBVztBQUN0QixHQUNBLE1BQ0E7QUFHTSxNQUFNcEIsVUFBVSxDQUFDO0FBQ3hCLENBQUMifQ==
|
package/es6/src/scaffold.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { existsSync, readdirSync } from "node:fs";
|
|
2
|
-
import { mkdir, writeFile } from "node:fs/promises";
|
|
3
|
-
import { basename, join } from "node:path";
|
|
4
|
-
import { createInterface } from "node:readline/promises";
|
|
5
|
-
import { APP_PACKAGE_JSON, MAIN_TS, ROOT_PACKAGE_JSON, TSCONFIG } from "./templates.js";
|
|
6
|
-
export async function scaffold(targetDir, opts) {
|
|
7
|
-
const name = basename(targetDir);
|
|
8
|
-
if (existsSync(targetDir) && readdirSync(targetDir).length > 0 && !opts.yes) {
|
|
9
|
-
const rl = createInterface({
|
|
10
|
-
input: process.stdin,
|
|
11
|
-
output: process.stdout
|
|
12
|
-
});
|
|
13
|
-
const answer = await rl.question(`Directory "${name}" is not empty. Continue? [y/N] `);
|
|
14
|
-
rl.close();
|
|
15
|
-
if (!answer.trim().toLowerCase().startsWith("y")) {
|
|
16
|
-
console.log("Aborted.");
|
|
17
|
-
process.exit(0);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
await mkdir(join(targetDir, "projects", "app", "src"), {
|
|
21
|
-
recursive: true
|
|
22
|
-
});
|
|
23
|
-
await Promise.all([
|
|
24
|
-
writeFile(join(targetDir, "package.json"), ROOT_PACKAGE_JSON(name)),
|
|
25
|
-
writeFile(join(targetDir, "tsconfig.json"), TSCONFIG),
|
|
26
|
-
writeFile(join(targetDir, "projects", "app", "package.json"), APP_PACKAGE_JSON(name)),
|
|
27
|
-
writeFile(join(targetDir, "projects", "app", "src", "main.ts"), MAIN_TS)
|
|
28
|
-
]);
|
|
29
|
-
console.log(`\nScaffolded ${name}. Next steps:\n`);
|
|
30
|
-
if (basename(targetDir) !== targetDir) {
|
|
31
|
-
console.log(` cd ${name}`);
|
|
32
|
-
}
|
|
33
|
-
console.log(" pnpm install");
|
|
34
|
-
console.log(" pnpm build # forge build");
|
|
35
|
-
console.log(" pnpm dev # flux serve\n");
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvY3JlYXRlL3NyYy9zY2FmZm9sZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkZGlyU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBta2Rpciwgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IGJhc2VuYW1lLCBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgY3JlYXRlSW50ZXJmYWNlIH0gZnJvbSBcIm5vZGU6cmVhZGxpbmUvcHJvbWlzZXNcIjtcbmltcG9ydCB7IEFQUF9QQUNLQUdFX0pTT04sIE1BSU5fVFMsIFJPT1RfUEFDS0FHRV9KU09OLCBUU0NPTkZJRyB9IGZyb20gXCIuL3RlbXBsYXRlcy5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjYWZmb2xkT3B0aW9ucyB7XG5cdHllcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzY2FmZm9sZCh0YXJnZXREaXI6IHN0cmluZywgb3B0czogU2NhZmZvbGRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IG5hbWUgPSBiYXNlbmFtZSh0YXJnZXREaXIpO1xuXG5cdGlmIChleGlzdHNTeW5jKHRhcmdldERpcikgJiYgcmVhZGRpclN5bmModGFyZ2V0RGlyKS5sZW5ndGggPiAwICYmICFvcHRzLnllcykge1xuXHRcdGNvbnN0IHJsID0gY3JlYXRlSW50ZXJmYWNlKHtcblx0XHRcdGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuXHRcdFx0b3V0cHV0OiBwcm9jZXNzLnN0ZG91dCxcblx0XHR9KTtcblx0XHRjb25zdCBhbnN3ZXIgPSBhd2FpdCBybC5xdWVzdGlvbihgRGlyZWN0b3J5IFwiJHtuYW1lfVwiIGlzIG5vdCBlbXB0eS4gQ29udGludWU/IFt5L05dIGApO1xuXHRcdHJsLmNsb3NlKCk7XG5cdFx0aWYgKCFhbnN3ZXIudHJpbSgpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcInlcIikpIHtcblx0XHRcdGNvbnNvbGUubG9nKFwiQWJvcnRlZC5cIik7XG5cdFx0XHRwcm9jZXNzLmV4aXQoMCk7XG5cdFx0fVxuXHR9XG5cblx0YXdhaXQgbWtkaXIoam9pbih0YXJnZXREaXIsIFwicHJvamVjdHNcIiwgXCJhcHBcIiwgXCJzcmNcIiksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG5cdGF3YWl0IFByb21pc2UuYWxsKFtcblx0XHR3cml0ZUZpbGUoam9pbih0YXJnZXREaXIsIFwicGFja2FnZS5qc29uXCIpLCBST09UX1BBQ0tBR0VfSlNPTihuYW1lKSksXG5cdFx0d3JpdGVGaWxlKGpvaW4odGFyZ2V0RGlyLCBcInRzY29uZmlnLmpzb25cIiksIFRTQ09ORklHKSxcblx0XHR3cml0ZUZpbGUoam9pbih0YXJnZXREaXIsIFwicHJvamVjdHNcIiwgXCJhcHBcIiwgXCJwYWNrYWdlLmpzb25cIiksIEFQUF9QQUNLQUdFX0pTT04obmFtZSkpLFxuXHRcdHdyaXRlRmlsZShqb2luKHRhcmdldERpciwgXCJwcm9qZWN0c1wiLCBcImFwcFwiLCBcInNyY1wiLCBcIm1haW4udHNcIiksIE1BSU5fVFMpLFxuXHRdKTtcblxuXHRjb25zb2xlLmxvZyhgXFxuU2NhZmZvbGRlZCAke25hbWV9LiBOZXh0IHN0ZXBzOlxcbmApO1xuXHRpZiAoYmFzZW5hbWUodGFyZ2V0RGlyKSAhPT0gdGFyZ2V0RGlyKSB7XG5cdFx0Y29uc29sZS5sb2coYCAgY2QgJHtuYW1lfWApO1xuXHR9XG5cdGNvbnNvbGUubG9nKFwiICBwbnBtIGluc3RhbGxcIik7XG5cdGNvbnNvbGUubG9nKFwiICBwbnBtIGJ1aWxkICAgICAjIGZvcmdlIGJ1aWxkXCIpO1xuXHRjb25zb2xlLmxvZyhcIiAgcG5wbSBkZXYgICAgICAgIyBmbHV4IHNlcnZlXFxuXCIpO1xufVxuIl0sIm5hbWVzIjpbImV4aXN0c1N5bmMiLCJyZWFkZGlyU3luYyIsIm1rZGlyIiwid3JpdGVGaWxlIiwiYmFzZW5hbWUiLCJqb2luIiwiY3JlYXRlSW50ZXJmYWNlIiwiQVBQX1BBQ0tBR0VfSlNPTiIsIk1BSU5fVFMiLCJST09UX1BBQ0tBR0VfSlNPTiIsIlRTQ09ORklHIiwic2NhZmZvbGQiLCJ0YXJnZXREaXIiLCJvcHRzIiwibmFtZSIsImxlbmd0aCIsInllcyIsInJsIiwiaW5wdXQiLCJwcm9jZXNzIiwic3RkaW4iLCJvdXRwdXQiLCJzdGRvdXQiLCJhbnN3ZXIiLCJxdWVzdGlvbiIsImNsb3NlIiwidHJpbSIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsImNvbnNvbGUiLCJsb2ciLCJleGl0IiwicmVjdXJzaXZlIiwiUHJvbWlzZSIsImFsbCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsVUFBVSxFQUFFQyxXQUFXLFFBQVEsVUFBVTtBQUNsRCxTQUFTQyxLQUFLLEVBQUVDLFNBQVMsUUFBUSxtQkFBbUI7QUFDcEQsU0FBU0MsUUFBUSxFQUFFQyxJQUFJLFFBQVEsWUFBWTtBQUMzQyxTQUFTQyxlQUFlLFFBQVEseUJBQXlCO0FBQ3pELFNBQVNDLGdCQUFnQixFQUFFQyxPQUFPLEVBQUVDLGlCQUFpQixFQUFFQyxRQUFRLFFBQVEsaUJBQWlCO0FBTXhGLE9BQU8sZUFBZUMsU0FBU0MsU0FBaUIsRUFBRUMsSUFBcUI7SUFDdEUsTUFBTUMsT0FBT1YsU0FBU1E7SUFFdEIsSUFBSVosV0FBV1ksY0FBY1gsWUFBWVcsV0FBV0csTUFBTSxHQUFHLEtBQUssQ0FBQ0YsS0FBS0csR0FBRyxFQUFFO1FBQzVFLE1BQU1DLEtBQUtYLGdCQUFnQjtZQUMxQlksT0FBT0MsUUFBUUMsS0FBSztZQUNwQkMsUUFBUUYsUUFBUUcsTUFBTTtRQUN2QjtRQUNBLE1BQU1DLFNBQVMsTUFBTU4sR0FBR08sUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFVixLQUFLLGdDQUFnQyxDQUFDO1FBQ3JGRyxHQUFHUSxLQUFLO1FBQ1IsSUFBSSxDQUFDRixPQUFPRyxJQUFJLEdBQUdDLFdBQVcsR0FBR0MsVUFBVSxDQUFDLE1BQU07WUFDakRDLFFBQVFDLEdBQUcsQ0FBQztZQUNaWCxRQUFRWSxJQUFJLENBQUM7UUFDZDtJQUNEO0lBRUEsTUFBTTdCLE1BQU1HLEtBQUtPLFdBQVcsWUFBWSxPQUFPLFFBQVE7UUFBRW9CLFdBQVc7SUFBSztJQUV6RSxNQUFNQyxRQUFRQyxHQUFHLENBQUM7UUFDakIvQixVQUFVRSxLQUFLTyxXQUFXLGlCQUFpQkgsa0JBQWtCSztRQUM3RFgsVUFBVUUsS0FBS08sV0FBVyxrQkFBa0JGO1FBQzVDUCxVQUFVRSxLQUFLTyxXQUFXLFlBQVksT0FBTyxpQkFBaUJMLGlCQUFpQk87UUFDL0VYLFVBQVVFLEtBQUtPLFdBQVcsWUFBWSxPQUFPLE9BQU8sWUFBWUo7S0FDaEU7SUFFRHFCLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRWhCLEtBQUssZUFBZSxDQUFDO0lBQ2pELElBQUlWLFNBQVNRLGVBQWVBLFdBQVc7UUFDdENpQixRQUFRQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUVoQixNQUFNO0lBQzNCO0lBQ0FlLFFBQVFDLEdBQUcsQ0FBQztJQUNaRCxRQUFRQyxHQUFHLENBQUM7SUFDWkQsUUFBUUMsR0FBRyxDQUFDO0FBQ2IifQ==
|
package/es6/src/templates.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export function ROOT_PACKAGE_JSON(name) {
|
|
2
|
-
return JSON.stringify({
|
|
3
|
-
name,
|
|
4
|
-
version: "0.0.1",
|
|
5
|
-
type: "module",
|
|
6
|
-
scripts: {
|
|
7
|
-
build: "forge build",
|
|
8
|
-
"build:watch": "forge build --watch",
|
|
9
|
-
dev: "flux serve"
|
|
10
|
-
},
|
|
11
|
-
devDependencies: {
|
|
12
|
-
"@decohere/terminal": "0.0.1-dev.14",
|
|
13
|
-
typescript: "^6.0.3"
|
|
14
|
-
}
|
|
15
|
-
}, null, 2);
|
|
16
|
-
}
|
|
17
|
-
export function APP_PACKAGE_JSON(name) {
|
|
18
|
-
return JSON.stringify({
|
|
19
|
-
name: `@${name}/app`,
|
|
20
|
-
version: "0.0.1",
|
|
21
|
-
type: "module",
|
|
22
|
-
main: "src/main.ts"
|
|
23
|
-
}, null, 2);
|
|
24
|
-
}
|
|
25
|
-
export const TSCONFIG = JSON.stringify({
|
|
26
|
-
compilerOptions: {
|
|
27
|
-
target: "ES2022",
|
|
28
|
-
module: "NodeNext",
|
|
29
|
-
moduleResolution: "NodeNext",
|
|
30
|
-
strict: true,
|
|
31
|
-
skipLibCheck: true
|
|
32
|
-
},
|
|
33
|
-
include: [
|
|
34
|
-
"projects"
|
|
35
|
-
]
|
|
36
|
-
}, null, 2);
|
|
37
|
-
export const MAIN_TS = `console.log("Hello from Decohere!");
|
|
38
|
-
`;
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvY3JlYXRlL3NyYy90ZW1wbGF0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIFJPT1RfUEFDS0FHRV9KU09OKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBKU09OLnN0cmluZ2lmeShcblx0XHR7XG5cdFx0XHRuYW1lLFxuXHRcdFx0dmVyc2lvbjogXCIwLjAuMVwiLFxuXHRcdFx0dHlwZTogXCJtb2R1bGVcIixcblx0XHRcdHNjcmlwdHM6IHtcblx0XHRcdFx0YnVpbGQ6IFwiZm9yZ2UgYnVpbGRcIixcblx0XHRcdFx0XCJidWlsZDp3YXRjaFwiOiBcImZvcmdlIGJ1aWxkIC0td2F0Y2hcIixcblx0XHRcdFx0ZGV2OiBcImZsdXggc2VydmVcIixcblx0XHRcdH0sXG5cdFx0XHRkZXZEZXBlbmRlbmNpZXM6IHtcblx0XHRcdFx0XCJAZGVjb2hlcmUvdGVybWluYWxcIjogXCIwLjAuMS1kZXYuMTRcIixcblx0XHRcdFx0dHlwZXNjcmlwdDogXCJeNi4wLjNcIixcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRudWxsLFxuXHRcdDIsXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBUFBfUEFDS0FHRV9KU09OKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBKU09OLnN0cmluZ2lmeShcblx0XHR7XG5cdFx0XHRuYW1lOiBgQCR7bmFtZX0vYXBwYCxcblx0XHRcdHZlcnNpb246IFwiMC4wLjFcIixcblx0XHRcdHR5cGU6IFwibW9kdWxlXCIsXG5cdFx0XHRtYWluOiBcInNyYy9tYWluLnRzXCIsXG5cdFx0fSxcblx0XHRudWxsLFxuXHRcdDIsXG5cdCk7XG59XG5cbmV4cG9ydCBjb25zdCBUU0NPTkZJRyA9IEpTT04uc3RyaW5naWZ5KFxuXHR7XG5cdFx0Y29tcGlsZXJPcHRpb25zOiB7XG5cdFx0XHR0YXJnZXQ6IFwiRVMyMDIyXCIsXG5cdFx0XHRtb2R1bGU6IFwiTm9kZU5leHRcIixcblx0XHRcdG1vZHVsZVJlc29sdXRpb246IFwiTm9kZU5leHRcIixcblx0XHRcdHN0cmljdDogdHJ1ZSxcblx0XHRcdHNraXBMaWJDaGVjazogdHJ1ZSxcblx0XHR9LFxuXHRcdGluY2x1ZGU6IFtcInByb2plY3RzXCJdLFxuXHR9LFxuXHRudWxsLFxuXHQyLFxuKTtcblxuZXhwb3J0IGNvbnN0IE1BSU5fVFMgPSBgY29uc29sZS5sb2coXCJIZWxsbyBmcm9tIERlY29oZXJlIVwiKTtcbmA7XG4iXSwibmFtZXMiOlsiUk9PVF9QQUNLQUdFX0pTT04iLCJuYW1lIiwiSlNPTiIsInN0cmluZ2lmeSIsInZlcnNpb24iLCJ0eXBlIiwic2NyaXB0cyIsImJ1aWxkIiwiZGV2IiwiZGV2RGVwZW5kZW5jaWVzIiwidHlwZXNjcmlwdCIsIkFQUF9QQUNLQUdFX0pTT04iLCJtYWluIiwiVFNDT05GSUciLCJjb21waWxlck9wdGlvbnMiLCJ0YXJnZXQiLCJtb2R1bGUiLCJtb2R1bGVSZXNvbHV0aW9uIiwic3RyaWN0Iiwic2tpcExpYkNoZWNrIiwiaW5jbHVkZSIsIk1BSU5fVFMiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sU0FBU0Esa0JBQWtCQyxJQUFZO0lBQzdDLE9BQU9DLEtBQUtDLFNBQVMsQ0FDcEI7UUFDQ0Y7UUFDQUcsU0FBUztRQUNUQyxNQUFNO1FBQ05DLFNBQVM7WUFDUkMsT0FBTztZQUNQLGVBQWU7WUFDZkMsS0FBSztRQUNOO1FBQ0FDLGlCQUFpQjtZQUNoQixzQkFBc0I7WUFDdEJDLFlBQVk7UUFDYjtJQUNELEdBQ0EsTUFDQTtBQUVGO0FBRUEsT0FBTyxTQUFTQyxpQkFBaUJWLElBQVk7SUFDNUMsT0FBT0MsS0FBS0MsU0FBUyxDQUNwQjtRQUNDRixNQUFNLENBQUMsQ0FBQyxFQUFFQSxLQUFLLElBQUksQ0FBQztRQUNwQkcsU0FBUztRQUNUQyxNQUFNO1FBQ05PLE1BQU07SUFDUCxHQUNBLE1BQ0E7QUFFRjtBQUVBLE9BQU8sTUFBTUMsV0FBV1gsS0FBS0MsU0FBUyxDQUNyQztJQUNDVyxpQkFBaUI7UUFDaEJDLFFBQVE7UUFDUkMsUUFBUTtRQUNSQyxrQkFBa0I7UUFDbEJDLFFBQVE7UUFDUkMsY0FBYztJQUNmO0lBQ0FDLFNBQVM7UUFBQztLQUFXO0FBQ3RCLEdBQ0EsTUFDQSxHQUNDO0FBRUYsT0FBTyxNQUFNQyxVQUFVLENBQUM7QUFDeEIsQ0FBQyxDQUFDIn0=
|
package/types/src/scaffold.d.ts
DELETED
package/types/src/templates.d.ts
DELETED