@decohere/create 0.0.1-dev.40 → 0.0.1-dev.41
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
CHANGED
|
@@ -3,7 +3,24 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
function _export(target, all) {
|
|
7
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
_export(exports, {
|
|
13
|
+
get createProgram () {
|
|
14
|
+
return createProgram;
|
|
15
|
+
},
|
|
16
|
+
get runCreate () {
|
|
17
|
+
return runCreate;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
const _nodepath = require("node:path");
|
|
21
|
+
const _nodeurl = require("node:url");
|
|
6
22
|
const _commander = require("commander");
|
|
23
|
+
const _resolvetargetdir = require("./resolve-target-dir.js");
|
|
7
24
|
const _runner = require("./runner.js");
|
|
8
25
|
const _createapi = require("./webapi/create-api.js");
|
|
9
26
|
function _getRequireWildcardCache(nodeInterop) {
|
|
@@ -47,54 +64,59 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
47
64
|
}
|
|
48
65
|
return newObj;
|
|
49
66
|
}
|
|
50
|
-
|
|
51
|
-
program
|
|
52
|
-
program.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
67
|
+
function createProgram() {
|
|
68
|
+
const program = new _commander.Command();
|
|
69
|
+
program.exitOverride();
|
|
70
|
+
program.name("decohere").description("Scaffold a new Decohere project").option("-d <directory>", "Target directory (default: current directory)", ".");
|
|
71
|
+
program.command("webapi").argument("[directory]", "Target directory (default: -d or current directory)").option("--database <provider>", "Database provider: none | postgres/typeorm").option("--auth <provider>", "Auth provider: none | auth0").option("--postman <provider>", "Postman provider: none | local | api").option("-y, --yes", "Install dependencies without prompting").option("--install <mode>", "Dependency install mode: ask | yes | no", "ask").action(async (directory, _opts, cmd)=>{
|
|
72
|
+
const opts = cmd.optsWithGlobals();
|
|
73
|
+
const installMode = String(opts.install ?? "ask").toLowerCase();
|
|
74
|
+
const normalized = {
|
|
75
|
+
d: (0, _resolvetargetdir.resolveTargetDir)(directory, typeof opts.d === "string" ? opts.d : undefined),
|
|
76
|
+
databaseProvider: opts.database,
|
|
77
|
+
authProvider: opts.auth,
|
|
78
|
+
postmanProvider: opts.postman,
|
|
79
|
+
installDependencies: opts.yes === true ? "yes" : installMode === "yes" || installMode === "no" ? installMode : undefined
|
|
80
|
+
};
|
|
81
|
+
if (process.env.DECOHERE_BUILDER !== "1") {
|
|
82
|
+
(0, _runner.runInBuilder)(normalized);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const { closePrompt } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("./domain/prompt.js")));
|
|
86
|
+
try {
|
|
87
|
+
await (0, _createapi.scaffoldApi)(normalized);
|
|
88
|
+
} finally{
|
|
89
|
+
closePrompt();
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
return program;
|
|
93
|
+
}
|
|
94
|
+
async function runCreate(argv) {
|
|
95
|
+
await createProgram().parseAsync(argv, {
|
|
96
|
+
from: "user"
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
function isCliEntry() {
|
|
100
|
+
const entry = process.argv[1];
|
|
101
|
+
if (!entry) {
|
|
102
|
+
return false;
|
|
65
103
|
}
|
|
66
|
-
|
|
104
|
+
return require("url").pathToFileURL(__filename).toString() === (0, _nodeurl.pathToFileURL)((0, _nodepath.resolve)(entry)).href;
|
|
105
|
+
}
|
|
106
|
+
async function main() {
|
|
67
107
|
try {
|
|
68
|
-
await (
|
|
108
|
+
await createProgram().parseAsync(process.argv);
|
|
69
109
|
} catch (err) {
|
|
110
|
+
if (err instanceof _commander.CommanderError) {
|
|
111
|
+
process.exit(err.exitCode);
|
|
112
|
+
}
|
|
70
113
|
console.error(err);
|
|
71
|
-
process.
|
|
72
|
-
} finally{
|
|
73
|
-
// Always release readline's stdin hold (even on errors / early abort).
|
|
74
|
-
closePrompt();
|
|
114
|
+
process.exit(1);
|
|
75
115
|
}
|
|
76
|
-
// Builder runs under docker -it; exit explicitly so the container stops.
|
|
77
116
|
process.exit(process.exitCode ?? 0);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
// .option("-i, --idp <provider>", "Identity provider to configure (api only): auth0")
|
|
83
|
-
// .option("-p, --postman", "Configure a Postman workspace, collection, and environment")
|
|
84
|
-
// .action(
|
|
85
|
-
// async (
|
|
86
|
-
// directory: string,
|
|
87
|
-
// opts: {
|
|
88
|
-
// yes?: boolean;
|
|
89
|
-
// template?: "api" | "cli";
|
|
90
|
-
// database?: "typeorm";
|
|
91
|
-
// idp?: "auth0";
|
|
92
|
-
// postman?: boolean;
|
|
93
|
-
// },
|
|
94
|
-
// ) => {
|
|
95
|
-
// await scaffold(resolve(directory), opts);
|
|
96
|
-
// },
|
|
97
|
-
// );
|
|
98
|
-
program.parse();
|
|
117
|
+
}
|
|
118
|
+
if (isCliEntry()) {
|
|
119
|
+
void main();
|
|
120
|
+
}
|
|
99
121
|
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5pbXBvcnQgeyBDb21tYW5kLCBDb21tYW5kZXJFcnJvciB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IHJlc29sdmVUYXJnZXREaXIgfSBmcm9tIFwiLi9yZXNvbHZlLXRhcmdldC1kaXIuanNcIjtcbmltcG9ydCB7IHJ1bkluQnVpbGRlciB9IGZyb20gXCIuL3J1bm5lci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBBcGlPcHRpb25zIH0gZnJvbSBcIi4vd2ViYXBpL2NyZWF0ZS1hcGkuanNcIjtcbmltcG9ydCB7IHNjYWZmb2xkQXBpIH0gZnJvbSBcIi4vd2ViYXBpL2NyZWF0ZS1hcGkuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb2dyYW0oKTogQ29tbWFuZCB7XG5cdGNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXHRwcm9ncmFtLmV4aXRPdmVycmlkZSgpO1xuXHRwcm9ncmFtXG5cdFx0Lm5hbWUoXCJkZWNvaGVyZVwiKVxuXHRcdC5kZXNjcmlwdGlvbihcIlNjYWZmb2xkIGEgbmV3IERlY29oZXJlIHByb2plY3RcIilcblx0XHQub3B0aW9uKFwiLWQgPGRpcmVjdG9yeT5cIiwgXCJUYXJnZXQgZGlyZWN0b3J5IChkZWZhdWx0OiBjdXJyZW50IGRpcmVjdG9yeSlcIiwgXCIuXCIpO1xuXG5cdHByb2dyYW1cblx0XHQuY29tbWFuZChcIndlYmFwaVwiKVxuXHRcdC5hcmd1bWVudChcIltkaXJlY3RvcnldXCIsIFwiVGFyZ2V0IGRpcmVjdG9yeSAoZGVmYXVsdDogLWQgb3IgY3VycmVudCBkaXJlY3RvcnkpXCIpXG5cdFx0Lm9wdGlvbihcIi0tZGF0YWJhc2UgPHByb3ZpZGVyPlwiLCBcIkRhdGFiYXNlIHByb3ZpZGVyOiBub25lIHwgcG9zdGdyZXMvdHlwZW9ybVwiKVxuXHRcdC5vcHRpb24oXCItLWF1dGggPHByb3ZpZGVyPlwiLCBcIkF1dGggcHJvdmlkZXI6IG5vbmUgfCBhdXRoMFwiKVxuXHRcdC5vcHRpb24oXCItLXBvc3RtYW4gPHByb3ZpZGVyPlwiLCBcIlBvc3RtYW4gcHJvdmlkZXI6IG5vbmUgfCBsb2NhbCB8IGFwaVwiKVxuXHRcdC5vcHRpb24oXCIteSwgLS15ZXNcIiwgXCJJbnN0YWxsIGRlcGVuZGVuY2llcyB3aXRob3V0IHByb21wdGluZ1wiKVxuXHRcdC5vcHRpb24oXCItLWluc3RhbGwgPG1vZGU+XCIsIFwiRGVwZW5kZW5jeSBpbnN0YWxsIG1vZGU6IGFzayB8IHllcyB8IG5vXCIsIFwiYXNrXCIpXG5cdFx0LmFjdGlvbihhc3luYyAoZGlyZWN0b3J5OiBzdHJpbmcgfCB1bmRlZmluZWQsIF9vcHRzOiB1bmtub3duLCBjbWQ6IENvbW1hbmQpID0+IHtcblx0XHRcdGNvbnN0IG9wdHMgPSBjbWQub3B0c1dpdGhHbG9iYWxzKCk7XG5cdFx0XHRjb25zdCBpbnN0YWxsTW9kZSA9IFN0cmluZyhvcHRzLmluc3RhbGwgPz8gXCJhc2tcIikudG9Mb3dlckNhc2UoKTtcblx0XHRcdGNvbnN0IG5vcm1hbGl6ZWQ6IEFwaU9wdGlvbnMgPSB7XG5cdFx0XHRcdGQ6IHJlc29sdmVUYXJnZXREaXIoZGlyZWN0b3J5LCB0eXBlb2Ygb3B0cy5kID09PSBcInN0cmluZ1wiID8gb3B0cy5kIDogdW5kZWZpbmVkKSxcblx0XHRcdFx0ZGF0YWJhc2VQcm92aWRlcjogb3B0cy5kYXRhYmFzZSxcblx0XHRcdFx0YXV0aFByb3ZpZGVyOiBvcHRzLmF1dGgsXG5cdFx0XHRcdHBvc3RtYW5Qcm92aWRlcjogb3B0cy5wb3N0bWFuLFxuXHRcdFx0XHRpbnN0YWxsRGVwZW5kZW5jaWVzOlxuXHRcdFx0XHRcdG9wdHMueWVzID09PSB0cnVlXG5cdFx0XHRcdFx0XHQ/IFwieWVzXCJcblx0XHRcdFx0XHRcdDogaW5zdGFsbE1vZGUgPT09IFwieWVzXCIgfHwgaW5zdGFsbE1vZGUgPT09IFwibm9cIlxuXHRcdFx0XHRcdFx0XHQ/IGluc3RhbGxNb2RlXG5cdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdFx0fTtcblxuXHRcdFx0aWYgKHByb2Nlc3MuZW52LkRFQ09IRVJFX0JVSUxERVIgIT09IFwiMVwiKSB7XG5cdFx0XHRcdHJ1bkluQnVpbGRlcihub3JtYWxpemVkKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCB7IGNsb3NlUHJvbXB0IH0gPSBhd2FpdCBpbXBvcnQoXCIuL2RvbWFpbi9wcm9tcHQuanNcIik7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRhd2FpdCBzY2FmZm9sZEFwaShub3JtYWxpemVkKTtcblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdGNsb3NlUHJvbXB0KCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0cmV0dXJuIHByb2dyYW07XG59XG5cbi8qKiBQYXJzZSBhcmd2IGFzIHRoZSBwdWJsaXNoZWQgYmluIGRvZXMgKGBmcm9tOiBcInVzZXJcImAgPSBubyBub2RlL3NjcmlwdCBwcmVmaXgpLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkNyZWF0ZShhcmd2OiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuXHRhd2FpdCBjcmVhdGVQcm9ncmFtKCkucGFyc2VBc3luYyhhcmd2LCB7IGZyb206IFwidXNlclwiIH0pO1xufVxuXG5mdW5jdGlvbiBpc0NsaUVudHJ5KCk6IGJvb2xlYW4ge1xuXHRjb25zdCBlbnRyeSA9IHByb2Nlc3MuYXJndlsxXTtcblx0aWYgKCFlbnRyeSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gaW1wb3J0Lm1ldGEudXJsID09PSBwYXRoVG9GaWxlVVJMKHJlc29sdmUoZW50cnkpKS5ocmVmO1xufVxuXG5hc3luYyBmdW5jdGlvbiBtYWluKCk6IFByb21pc2U8dm9pZD4ge1xuXHR0cnkge1xuXHRcdGF3YWl0IGNyZWF0ZVByb2dyYW0oKS5wYXJzZUFzeW5jKHByb2Nlc3MuYXJndik7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdGlmIChlcnIgaW5zdGFuY2VvZiBDb21tYW5kZXJFcnJvcikge1xuXHRcdFx0cHJvY2Vzcy5leGl0KGVyci5leGl0Q29kZSk7XG5cdFx0fVxuXHRcdGNvbnNvbGUuZXJyb3IoZXJyKTtcblx0XHRwcm9jZXNzLmV4aXQoMSk7XG5cdH1cblx0cHJvY2Vzcy5leGl0KHByb2Nlc3MuZXhpdENvZGUgPz8gMCk7XG59XG5cbmlmIChpc0NsaUVudHJ5KCkpIHtcblx0dm9pZCBtYWluKCk7XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlUHJvZ3JhbSIsInJ1bkNyZWF0ZSIsInByb2dyYW0iLCJDb21tYW5kIiwiZXhpdE92ZXJyaWRlIiwibmFtZSIsImRlc2NyaXB0aW9uIiwib3B0aW9uIiwiY29tbWFuZCIsImFyZ3VtZW50IiwiYWN0aW9uIiwiZGlyZWN0b3J5IiwiX29wdHMiLCJjbWQiLCJvcHRzIiwib3B0c1dpdGhHbG9iYWxzIiwiaW5zdGFsbE1vZGUiLCJTdHJpbmciLCJpbnN0YWxsIiwidG9Mb3dlckNhc2UiLCJub3JtYWxpemVkIiwiZCIsInJlc29sdmVUYXJnZXREaXIiLCJ1bmRlZmluZWQiLCJkYXRhYmFzZVByb3ZpZGVyIiwiZGF0YWJhc2UiLCJhdXRoUHJvdmlkZXIiLCJhdXRoIiwicG9zdG1hblByb3ZpZGVyIiwicG9zdG1hbiIsImluc3RhbGxEZXBlbmRlbmNpZXMiLCJ5ZXMiLCJwcm9jZXNzIiwiZW52IiwiREVDT0hFUkVfQlVJTERFUiIsInJ1bkluQnVpbGRlciIsImNsb3NlUHJvbXB0Iiwic2NhZmZvbGRBcGkiLCJhcmd2IiwicGFyc2VBc3luYyIsImZyb20iLCJpc0NsaUVudHJ5IiwiZW50cnkiLCJwYXRoVG9GaWxlVVJMIiwicmVzb2x2ZSIsImhyZWYiLCJtYWluIiwiZXJyIiwiQ29tbWFuZGVyRXJyb3IiLCJleGl0IiwiZXhpdENvZGUiLCJjb25zb2xlIiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztRQVNnQkE7ZUFBQUE7O1FBaURNQztlQUFBQTs7OzBCQXpERTt5QkFDTTsyQkFDVTtrQ0FDUDt3QkFDSjsyQkFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXJCLFNBQVNEO0lBQ2YsTUFBTUUsVUFBVSxJQUFJQyxrQkFBTztJQUMzQkQsUUFBUUUsWUFBWTtJQUNwQkYsUUFDRUcsSUFBSSxDQUFDLFlBQ0xDLFdBQVcsQ0FBQyxtQ0FDWkMsTUFBTSxDQUFDLGtCQUFrQixpREFBaUQ7SUFFNUVMLFFBQ0VNLE9BQU8sQ0FBQyxVQUNSQyxRQUFRLENBQUMsZUFBZSx1REFDeEJGLE1BQU0sQ0FBQyx5QkFBeUIsOENBQ2hDQSxNQUFNLENBQUMscUJBQXFCLCtCQUM1QkEsTUFBTSxDQUFDLHdCQUF3Qix3Q0FDL0JBLE1BQU0sQ0FBQyxhQUFhLDBDQUNwQkEsTUFBTSxDQUFDLG9CQUFvQiwyQ0FBMkMsT0FDdEVHLE1BQU0sQ0FBQyxPQUFPQyxXQUErQkMsT0FBZ0JDO1FBQzdELE1BQU1DLE9BQU9ELElBQUlFLGVBQWU7UUFDaEMsTUFBTUMsY0FBY0MsT0FBT0gsS0FBS0ksT0FBTyxJQUFJLE9BQU9DLFdBQVc7UUFDN0QsTUFBTUMsYUFBeUI7WUFDOUJDLEdBQUdDLElBQUFBLGtDQUFnQixFQUFDWCxXQUFXLE9BQU9HLEtBQUtPLENBQUMsS0FBSyxXQUFXUCxLQUFLTyxDQUFDLEdBQUdFO1lBQ3JFQyxrQkFBa0JWLEtBQUtXLFFBQVE7WUFDL0JDLGNBQWNaLEtBQUthLElBQUk7WUFDdkJDLGlCQUFpQmQsS0FBS2UsT0FBTztZQUM3QkMscUJBQ0NoQixLQUFLaUIsR0FBRyxLQUFLLE9BQ1YsUUFDQWYsZ0JBQWdCLFNBQVNBLGdCQUFnQixPQUN4Q0EsY0FDQU87UUFDTjtRQUVBLElBQUlTLFFBQVFDLEdBQUcsQ0FBQ0MsZ0JBQWdCLEtBQUssS0FBSztZQUN6Q0MsSUFBQUEsb0JBQVksRUFBQ2Y7WUFDYjtRQUNEO1FBRUEsTUFBTSxFQUFFZ0IsV0FBVyxFQUFFLEdBQUcsTUFBTSxtRUFBQSxRQUFPO1FBQ3JDLElBQUk7WUFDSCxNQUFNQyxJQUFBQSxzQkFBVyxFQUFDakI7UUFDbkIsU0FBVTtZQUNUZ0I7UUFDRDtJQUNEO0lBRUQsT0FBT2xDO0FBQ1I7QUFHTyxlQUFlRCxVQUFVcUMsSUFBYztJQUM3QyxNQUFNdEMsZ0JBQWdCdUMsVUFBVSxDQUFDRCxNQUFNO1FBQUVFLE1BQU07SUFBTztBQUN2RDtBQUVBLFNBQVNDO0lBQ1IsTUFBTUMsUUFBUVYsUUFBUU0sSUFBSSxDQUFDLEVBQUU7SUFDN0IsSUFBSSxDQUFDSSxPQUFPO1FBQ1gsT0FBTztJQUNSO0lBQ0EsT0FBTyx3REFBb0JDLElBQUFBLHNCQUFhLEVBQUNDLElBQUFBLGlCQUFPLEVBQUNGLFFBQVFHLElBQUk7QUFDOUQ7QUFFQSxlQUFlQztJQUNkLElBQUk7UUFDSCxNQUFNOUMsZ0JBQWdCdUMsVUFBVSxDQUFDUCxRQUFRTSxJQUFJO0lBQzlDLEVBQUUsT0FBT1MsS0FBSztRQUNiLElBQUlBLGVBQWVDLHlCQUFjLEVBQUU7WUFDbENoQixRQUFRaUIsSUFBSSxDQUFDRixJQUFJRyxRQUFRO1FBQzFCO1FBQ0FDLFFBQVFDLEtBQUssQ0FBQ0w7UUFDZGYsUUFBUWlCLElBQUksQ0FBQztJQUNkO0lBQ0FqQixRQUFRaUIsSUFBSSxDQUFDakIsUUFBUWtCLFFBQVEsSUFBSTtBQUNsQztBQUVBLElBQUlULGNBQWM7SUFDakIsS0FBS0s7QUFDTiJ9
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve scaffold destination: positional `webapi my-app` wins over `-d`.
|
|
3
|
+
* `npm create … webapi -d my-app` drops `-d` (npm loglevel) and forwards `my-app`.
|
|
4
|
+
*/ "use strict";
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
Object.defineProperty(exports, "resolveTargetDir", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function() {
|
|
11
|
+
return resolveTargetDir;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
function resolveTargetDir(positional, flag) {
|
|
15
|
+
const dir = positional?.trim() || flag?.trim() || ".";
|
|
16
|
+
return dir;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvcmVzb2x2ZS10YXJnZXQtZGlyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVzb2x2ZSBzY2FmZm9sZCBkZXN0aW5hdGlvbjogcG9zaXRpb25hbCBgd2ViYXBpIG15LWFwcGAgd2lucyBvdmVyIGAtZGAuXG4gKiBgbnBtIGNyZWF0ZSDigKYgd2ViYXBpIC1kIG15LWFwcGAgZHJvcHMgYC1kYCAobnBtIGxvZ2xldmVsKSBhbmQgZm9yd2FyZHMgYG15LWFwcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVGFyZ2V0RGlyKHBvc2l0aW9uYWw/OiBzdHJpbmcsIGZsYWc/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBkaXIgPSBwb3NpdGlvbmFsPy50cmltKCkgfHwgZmxhZz8udHJpbSgpIHx8IFwiLlwiO1xuXHRyZXR1cm4gZGlyO1xufVxuIl0sIm5hbWVzIjpbInJlc29sdmVUYXJnZXREaXIiLCJwb3NpdGlvbmFsIiwiZmxhZyIsImRpciIsInRyaW0iXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQzs7OzsrQkFDZUE7OztlQUFBQTs7O0FBQVQsU0FBU0EsaUJBQWlCQyxVQUFtQixFQUFFQyxJQUFhO0lBQ2xFLE1BQU1DLE1BQU1GLFlBQVlHLFVBQVVGLE1BQU1FLFVBQVU7SUFDbEQsT0FBT0Q7QUFDUiJ9
|
package/es6/src/cli.js
CHANGED
|
@@ -1,55 +1,63 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { pathToFileURL } from "node:url";
|
|
4
|
+
import { Command, CommanderError } from "commander";
|
|
5
|
+
import { resolveTargetDir } from "./resolve-target-dir.js";
|
|
3
6
|
import { runInBuilder } from "./runner.js";
|
|
4
7
|
import { scaffoldApi } from "./webapi/create-api.js";
|
|
5
|
-
|
|
6
|
-
program
|
|
7
|
-
program.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
export function createProgram() {
|
|
9
|
+
const program = new Command();
|
|
10
|
+
program.exitOverride();
|
|
11
|
+
program.name("decohere").description("Scaffold a new Decohere project").option("-d <directory>", "Target directory (default: current directory)", ".");
|
|
12
|
+
program.command("webapi").argument("[directory]", "Target directory (default: -d or current directory)").option("--database <provider>", "Database provider: none | postgres/typeorm").option("--auth <provider>", "Auth provider: none | auth0").option("--postman <provider>", "Postman provider: none | local | api").option("-y, --yes", "Install dependencies without prompting").option("--install <mode>", "Dependency install mode: ask | yes | no", "ask").action(async (directory, _opts, cmd)=>{
|
|
13
|
+
const opts = cmd.optsWithGlobals();
|
|
14
|
+
const installMode = String(opts.install ?? "ask").toLowerCase();
|
|
15
|
+
const normalized = {
|
|
16
|
+
d: resolveTargetDir(directory, typeof opts.d === "string" ? opts.d : undefined),
|
|
17
|
+
databaseProvider: opts.database,
|
|
18
|
+
authProvider: opts.auth,
|
|
19
|
+
postmanProvider: opts.postman,
|
|
20
|
+
installDependencies: opts.yes === true ? "yes" : installMode === "yes" || installMode === "no" ? installMode : undefined
|
|
21
|
+
};
|
|
22
|
+
if (process.env.DECOHERE_BUILDER !== "1") {
|
|
23
|
+
runInBuilder(normalized);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const { closePrompt } = await import("./domain/prompt.js");
|
|
27
|
+
try {
|
|
28
|
+
await scaffoldApi(normalized);
|
|
29
|
+
} finally{
|
|
30
|
+
closePrompt();
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
return program;
|
|
34
|
+
}
|
|
35
|
+
/** Parse argv as the published bin does (`from: "user"` = no node/script prefix). */ export async function runCreate(argv) {
|
|
36
|
+
await createProgram().parseAsync(argv, {
|
|
37
|
+
from: "user"
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function isCliEntry() {
|
|
41
|
+
const entry = process.argv[1];
|
|
42
|
+
if (!entry) {
|
|
43
|
+
return false;
|
|
20
44
|
}
|
|
21
|
-
|
|
45
|
+
return import.meta.url === pathToFileURL(resolve(entry)).href;
|
|
46
|
+
}
|
|
47
|
+
async function main() {
|
|
22
48
|
try {
|
|
23
|
-
await
|
|
49
|
+
await createProgram().parseAsync(process.argv);
|
|
24
50
|
} catch (err) {
|
|
51
|
+
if (err instanceof CommanderError) {
|
|
52
|
+
process.exit(err.exitCode);
|
|
53
|
+
}
|
|
25
54
|
console.error(err);
|
|
26
|
-
process.
|
|
27
|
-
} finally{
|
|
28
|
-
// Always release readline's stdin hold (even on errors / early abort).
|
|
29
|
-
closePrompt();
|
|
55
|
+
process.exit(1);
|
|
30
56
|
}
|
|
31
|
-
// Builder runs under docker -it; exit explicitly so the container stops.
|
|
32
57
|
process.exit(process.exitCode ?? 0);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
// .option("-i, --idp <provider>", "Identity provider to configure (api only): auth0")
|
|
38
|
-
// .option("-p, --postman", "Configure a Postman workspace, collection, and environment")
|
|
39
|
-
// .action(
|
|
40
|
-
// async (
|
|
41
|
-
// directory: string,
|
|
42
|
-
// opts: {
|
|
43
|
-
// yes?: boolean;
|
|
44
|
-
// template?: "api" | "cli";
|
|
45
|
-
// database?: "typeorm";
|
|
46
|
-
// idp?: "auth0";
|
|
47
|
-
// postman?: boolean;
|
|
48
|
-
// },
|
|
49
|
-
// ) => {
|
|
50
|
-
// await scaffold(resolve(directory), opts);
|
|
51
|
-
// },
|
|
52
|
-
// );
|
|
53
|
-
program.parse();
|
|
58
|
+
}
|
|
59
|
+
if (isCliEntry()) {
|
|
60
|
+
void main();
|
|
61
|
+
}
|
|
54
62
|
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5pbXBvcnQgeyBDb21tYW5kLCBDb21tYW5kZXJFcnJvciB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IHJlc29sdmVUYXJnZXREaXIgfSBmcm9tIFwiLi9yZXNvbHZlLXRhcmdldC1kaXIuanNcIjtcbmltcG9ydCB7IHJ1bkluQnVpbGRlciB9IGZyb20gXCIuL3J1bm5lci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBBcGlPcHRpb25zIH0gZnJvbSBcIi4vd2ViYXBpL2NyZWF0ZS1hcGkuanNcIjtcbmltcG9ydCB7IHNjYWZmb2xkQXBpIH0gZnJvbSBcIi4vd2ViYXBpL2NyZWF0ZS1hcGkuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb2dyYW0oKTogQ29tbWFuZCB7XG5cdGNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXHRwcm9ncmFtLmV4aXRPdmVycmlkZSgpO1xuXHRwcm9ncmFtXG5cdFx0Lm5hbWUoXCJkZWNvaGVyZVwiKVxuXHRcdC5kZXNjcmlwdGlvbihcIlNjYWZmb2xkIGEgbmV3IERlY29oZXJlIHByb2plY3RcIilcblx0XHQub3B0aW9uKFwiLWQgPGRpcmVjdG9yeT5cIiwgXCJUYXJnZXQgZGlyZWN0b3J5IChkZWZhdWx0OiBjdXJyZW50IGRpcmVjdG9yeSlcIiwgXCIuXCIpO1xuXG5cdHByb2dyYW1cblx0XHQuY29tbWFuZChcIndlYmFwaVwiKVxuXHRcdC5hcmd1bWVudChcIltkaXJlY3RvcnldXCIsIFwiVGFyZ2V0IGRpcmVjdG9yeSAoZGVmYXVsdDogLWQgb3IgY3VycmVudCBkaXJlY3RvcnkpXCIpXG5cdFx0Lm9wdGlvbihcIi0tZGF0YWJhc2UgPHByb3ZpZGVyPlwiLCBcIkRhdGFiYXNlIHByb3ZpZGVyOiBub25lIHwgcG9zdGdyZXMvdHlwZW9ybVwiKVxuXHRcdC5vcHRpb24oXCItLWF1dGggPHByb3ZpZGVyPlwiLCBcIkF1dGggcHJvdmlkZXI6IG5vbmUgfCBhdXRoMFwiKVxuXHRcdC5vcHRpb24oXCItLXBvc3RtYW4gPHByb3ZpZGVyPlwiLCBcIlBvc3RtYW4gcHJvdmlkZXI6IG5vbmUgfCBsb2NhbCB8IGFwaVwiKVxuXHRcdC5vcHRpb24oXCIteSwgLS15ZXNcIiwgXCJJbnN0YWxsIGRlcGVuZGVuY2llcyB3aXRob3V0IHByb21wdGluZ1wiKVxuXHRcdC5vcHRpb24oXCItLWluc3RhbGwgPG1vZGU+XCIsIFwiRGVwZW5kZW5jeSBpbnN0YWxsIG1vZGU6IGFzayB8IHllcyB8IG5vXCIsIFwiYXNrXCIpXG5cdFx0LmFjdGlvbihhc3luYyAoZGlyZWN0b3J5OiBzdHJpbmcgfCB1bmRlZmluZWQsIF9vcHRzOiB1bmtub3duLCBjbWQ6IENvbW1hbmQpID0+IHtcblx0XHRcdGNvbnN0IG9wdHMgPSBjbWQub3B0c1dpdGhHbG9iYWxzKCk7XG5cdFx0XHRjb25zdCBpbnN0YWxsTW9kZSA9IFN0cmluZyhvcHRzLmluc3RhbGwgPz8gXCJhc2tcIikudG9Mb3dlckNhc2UoKTtcblx0XHRcdGNvbnN0IG5vcm1hbGl6ZWQ6IEFwaU9wdGlvbnMgPSB7XG5cdFx0XHRcdGQ6IHJlc29sdmVUYXJnZXREaXIoZGlyZWN0b3J5LCB0eXBlb2Ygb3B0cy5kID09PSBcInN0cmluZ1wiID8gb3B0cy5kIDogdW5kZWZpbmVkKSxcblx0XHRcdFx0ZGF0YWJhc2VQcm92aWRlcjogb3B0cy5kYXRhYmFzZSxcblx0XHRcdFx0YXV0aFByb3ZpZGVyOiBvcHRzLmF1dGgsXG5cdFx0XHRcdHBvc3RtYW5Qcm92aWRlcjogb3B0cy5wb3N0bWFuLFxuXHRcdFx0XHRpbnN0YWxsRGVwZW5kZW5jaWVzOlxuXHRcdFx0XHRcdG9wdHMueWVzID09PSB0cnVlXG5cdFx0XHRcdFx0XHQ/IFwieWVzXCJcblx0XHRcdFx0XHRcdDogaW5zdGFsbE1vZGUgPT09IFwieWVzXCIgfHwgaW5zdGFsbE1vZGUgPT09IFwibm9cIlxuXHRcdFx0XHRcdFx0XHQ/IGluc3RhbGxNb2RlXG5cdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdFx0fTtcblxuXHRcdFx0aWYgKHByb2Nlc3MuZW52LkRFQ09IRVJFX0JVSUxERVIgIT09IFwiMVwiKSB7XG5cdFx0XHRcdHJ1bkluQnVpbGRlcihub3JtYWxpemVkKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCB7IGNsb3NlUHJvbXB0IH0gPSBhd2FpdCBpbXBvcnQoXCIuL2RvbWFpbi9wcm9tcHQuanNcIik7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRhd2FpdCBzY2FmZm9sZEFwaShub3JtYWxpemVkKTtcblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdGNsb3NlUHJvbXB0KCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0cmV0dXJuIHByb2dyYW07XG59XG5cbi8qKiBQYXJzZSBhcmd2IGFzIHRoZSBwdWJsaXNoZWQgYmluIGRvZXMgKGBmcm9tOiBcInVzZXJcImAgPSBubyBub2RlL3NjcmlwdCBwcmVmaXgpLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkNyZWF0ZShhcmd2OiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuXHRhd2FpdCBjcmVhdGVQcm9ncmFtKCkucGFyc2VBc3luYyhhcmd2LCB7IGZyb206IFwidXNlclwiIH0pO1xufVxuXG5mdW5jdGlvbiBpc0NsaUVudHJ5KCk6IGJvb2xlYW4ge1xuXHRjb25zdCBlbnRyeSA9IHByb2Nlc3MuYXJndlsxXTtcblx0aWYgKCFlbnRyeSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gaW1wb3J0Lm1ldGEudXJsID09PSBwYXRoVG9GaWxlVVJMKHJlc29sdmUoZW50cnkpKS5ocmVmO1xufVxuXG5hc3luYyBmdW5jdGlvbiBtYWluKCk6IFByb21pc2U8dm9pZD4ge1xuXHR0cnkge1xuXHRcdGF3YWl0IGNyZWF0ZVByb2dyYW0oKS5wYXJzZUFzeW5jKHByb2Nlc3MuYXJndik7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdGlmIChlcnIgaW5zdGFuY2VvZiBDb21tYW5kZXJFcnJvcikge1xuXHRcdFx0cHJvY2Vzcy5leGl0KGVyci5leGl0Q29kZSk7XG5cdFx0fVxuXHRcdGNvbnNvbGUuZXJyb3IoZXJyKTtcblx0XHRwcm9jZXNzLmV4aXQoMSk7XG5cdH1cblx0cHJvY2Vzcy5leGl0KHByb2Nlc3MuZXhpdENvZGUgPz8gMCk7XG59XG5cbmlmIChpc0NsaUVudHJ5KCkpIHtcblx0dm9pZCBtYWluKCk7XG59XG4iXSwibmFtZXMiOlsicmVzb2x2ZSIsInBhdGhUb0ZpbGVVUkwiLCJDb21tYW5kIiwiQ29tbWFuZGVyRXJyb3IiLCJyZXNvbHZlVGFyZ2V0RGlyIiwicnVuSW5CdWlsZGVyIiwic2NhZmZvbGRBcGkiLCJjcmVhdGVQcm9ncmFtIiwicHJvZ3JhbSIsImV4aXRPdmVycmlkZSIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsIm9wdGlvbiIsImNvbW1hbmQiLCJhcmd1bWVudCIsImFjdGlvbiIsImRpcmVjdG9yeSIsIl9vcHRzIiwiY21kIiwib3B0cyIsIm9wdHNXaXRoR2xvYmFscyIsImluc3RhbGxNb2RlIiwiU3RyaW5nIiwiaW5zdGFsbCIsInRvTG93ZXJDYXNlIiwibm9ybWFsaXplZCIsImQiLCJ1bmRlZmluZWQiLCJkYXRhYmFzZVByb3ZpZGVyIiwiZGF0YWJhc2UiLCJhdXRoUHJvdmlkZXIiLCJhdXRoIiwicG9zdG1hblByb3ZpZGVyIiwicG9zdG1hbiIsImluc3RhbGxEZXBlbmRlbmNpZXMiLCJ5ZXMiLCJwcm9jZXNzIiwiZW52IiwiREVDT0hFUkVfQlVJTERFUiIsImNsb3NlUHJvbXB0IiwicnVuQ3JlYXRlIiwiYXJndiIsInBhcnNlQXN5bmMiLCJmcm9tIiwiaXNDbGlFbnRyeSIsImVudHJ5IiwidXJsIiwiaHJlZiIsIm1haW4iLCJlcnIiLCJleGl0IiwiZXhpdENvZGUiLCJjb25zb2xlIiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7QUFDQSxTQUFTQSxPQUFPLFFBQVEsWUFBWTtBQUNwQyxTQUFTQyxhQUFhLFFBQVEsV0FBVztBQUN6QyxTQUFTQyxPQUFPLEVBQUVDLGNBQWMsUUFBUSxZQUFZO0FBQ3BELFNBQVNDLGdCQUFnQixRQUFRLDBCQUEwQjtBQUMzRCxTQUFTQyxZQUFZLFFBQVEsY0FBYztBQUUzQyxTQUFTQyxXQUFXLFFBQVEseUJBQXlCO0FBRXJELE9BQU8sU0FBU0M7SUFDZixNQUFNQyxVQUFVLElBQUlOO0lBQ3BCTSxRQUFRQyxZQUFZO0lBQ3BCRCxRQUNFRSxJQUFJLENBQUMsWUFDTEMsV0FBVyxDQUFDLG1DQUNaQyxNQUFNLENBQUMsa0JBQWtCLGlEQUFpRDtJQUU1RUosUUFDRUssT0FBTyxDQUFDLFVBQ1JDLFFBQVEsQ0FBQyxlQUFlLHVEQUN4QkYsTUFBTSxDQUFDLHlCQUF5Qiw4Q0FDaENBLE1BQU0sQ0FBQyxxQkFBcUIsK0JBQzVCQSxNQUFNLENBQUMsd0JBQXdCLHdDQUMvQkEsTUFBTSxDQUFDLGFBQWEsMENBQ3BCQSxNQUFNLENBQUMsb0JBQW9CLDJDQUEyQyxPQUN0RUcsTUFBTSxDQUFDLE9BQU9DLFdBQStCQyxPQUFnQkM7UUFDN0QsTUFBTUMsT0FBT0QsSUFBSUUsZUFBZTtRQUNoQyxNQUFNQyxjQUFjQyxPQUFPSCxLQUFLSSxPQUFPLElBQUksT0FBT0MsV0FBVztRQUM3RCxNQUFNQyxhQUF5QjtZQUM5QkMsR0FBR3RCLGlCQUFpQlksV0FBVyxPQUFPRyxLQUFLTyxDQUFDLEtBQUssV0FBV1AsS0FBS08sQ0FBQyxHQUFHQztZQUNyRUMsa0JBQWtCVCxLQUFLVSxRQUFRO1lBQy9CQyxjQUFjWCxLQUFLWSxJQUFJO1lBQ3ZCQyxpQkFBaUJiLEtBQUtjLE9BQU87WUFDN0JDLHFCQUNDZixLQUFLZ0IsR0FBRyxLQUFLLE9BQ1YsUUFDQWQsZ0JBQWdCLFNBQVNBLGdCQUFnQixPQUN4Q0EsY0FDQU07UUFDTjtRQUVBLElBQUlTLFFBQVFDLEdBQUcsQ0FBQ0MsZ0JBQWdCLEtBQUssS0FBSztZQUN6Q2pDLGFBQWFvQjtZQUNiO1FBQ0Q7UUFFQSxNQUFNLEVBQUVjLFdBQVcsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDO1FBQ3JDLElBQUk7WUFDSCxNQUFNakMsWUFBWW1CO1FBQ25CLFNBQVU7WUFDVGM7UUFDRDtJQUNEO0lBRUQsT0FBTy9CO0FBQ1I7QUFFQSxtRkFBbUYsR0FDbkYsT0FBTyxlQUFlZ0MsVUFBVUMsSUFBYztJQUM3QyxNQUFNbEMsZ0JBQWdCbUMsVUFBVSxDQUFDRCxNQUFNO1FBQUVFLE1BQU07SUFBTztBQUN2RDtBQUVBLFNBQVNDO0lBQ1IsTUFBTUMsUUFBUVQsUUFBUUssSUFBSSxDQUFDLEVBQUU7SUFDN0IsSUFBSSxDQUFDSSxPQUFPO1FBQ1gsT0FBTztJQUNSO0lBQ0EsT0FBTyxZQUFZQyxHQUFHLEtBQUs3QyxjQUFjRCxRQUFRNkMsUUFBUUUsSUFBSTtBQUM5RDtBQUVBLGVBQWVDO0lBQ2QsSUFBSTtRQUNILE1BQU16QyxnQkFBZ0JtQyxVQUFVLENBQUNOLFFBQVFLLElBQUk7SUFDOUMsRUFBRSxPQUFPUSxLQUFLO1FBQ2IsSUFBSUEsZUFBZTlDLGdCQUFnQjtZQUNsQ2lDLFFBQVFjLElBQUksQ0FBQ0QsSUFBSUUsUUFBUTtRQUMxQjtRQUNBQyxRQUFRQyxLQUFLLENBQUNKO1FBQ2RiLFFBQVFjLElBQUksQ0FBQztJQUNkO0lBQ0FkLFFBQVFjLElBQUksQ0FBQ2QsUUFBUWUsUUFBUSxJQUFJO0FBQ2xDO0FBRUEsSUFBSVAsY0FBYztJQUNqQixLQUFLSTtBQUNOIn0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve scaffold destination: positional `webapi my-app` wins over `-d`.
|
|
3
|
+
* `npm create … webapi -d my-app` drops `-d` (npm loglevel) and forwards `my-app`.
|
|
4
|
+
*/ export function resolveTargetDir(positional, flag) {
|
|
5
|
+
const dir = positional?.trim() || flag?.trim() || ".";
|
|
6
|
+
return dir;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvcmVzb2x2ZS10YXJnZXQtZGlyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVzb2x2ZSBzY2FmZm9sZCBkZXN0aW5hdGlvbjogcG9zaXRpb25hbCBgd2ViYXBpIG15LWFwcGAgd2lucyBvdmVyIGAtZGAuXG4gKiBgbnBtIGNyZWF0ZSDigKYgd2ViYXBpIC1kIG15LWFwcGAgZHJvcHMgYC1kYCAobnBtIGxvZ2xldmVsKSBhbmQgZm9yd2FyZHMgYG15LWFwcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVGFyZ2V0RGlyKHBvc2l0aW9uYWw/OiBzdHJpbmcsIGZsYWc/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBkaXIgPSBwb3NpdGlvbmFsPy50cmltKCkgfHwgZmxhZz8udHJpbSgpIHx8IFwiLlwiO1xuXHRyZXR1cm4gZGlyO1xufVxuIl0sIm5hbWVzIjpbInJlc29sdmVUYXJnZXREaXIiLCJwb3NpdGlvbmFsIiwiZmxhZyIsImRpciIsInRyaW0iXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELE9BQU8sU0FBU0EsaUJBQWlCQyxVQUFtQixFQUFFQyxJQUFhO0lBQ2xFLE1BQU1DLE1BQU1GLFlBQVlHLFVBQVVGLE1BQU1FLFVBQVU7SUFDbEQsT0FBT0Q7QUFDUiJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decohere/create",
|
|
3
|
-
"version": "0.0.1-dev.
|
|
3
|
+
"version": "0.0.1-dev.41",
|
|
4
4
|
"description": "Scaffold a new Decohere project — build with Forge, serve with Flux",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"decohere",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@decohere/nexus": "0.0.1-dev.
|
|
24
|
+
"@decohere/nexus": "0.0.1-dev.41",
|
|
25
25
|
"commander": "^13.1.0",
|
|
26
26
|
"openapi-to-postmanv2": "^5.0.0"
|
|
27
27
|
},
|
package/types/src/cli.d.ts
CHANGED
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
export declare function createProgram(): Command;
|
|
4
|
+
/** Parse argv as the published bin does (`from: "user"` = no node/script prefix). */
|
|
5
|
+
export declare function runCreate(argv: string[]): Promise<void>;
|