@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.
@@ -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
- const program = new _commander.Command();
51
- program.name("decohere").description("Scaffold a new Decohere project").option("-d <directory>", "Target directory (default: current directory)", ".");
52
- program.command("webapi").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 (_name, cmd)=>{
53
- const opts = cmd.optsWithGlobals();
54
- const installMode = String(opts.install ?? "ask").toLowerCase();
55
- const normalized = {
56
- d: opts.d,
57
- databaseProvider: opts.database,
58
- authProvider: opts.auth,
59
- postmanProvider: opts.postman,
60
- installDependencies: opts.yes === true ? "yes" : installMode === "yes" || installMode === "no" ? installMode : undefined
61
- };
62
- if (process.env.DECOHERE_BUILDER !== "1") {
63
- (0, _runner.runInBuilder)(normalized);
64
- return;
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
- const { closePrompt } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("./domain/prompt.js")));
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 (0, _createapi.scaffoldApi)(normalized);
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.exitCode = 1;
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
- // .option("-y, --yes", "Skip confirmation prompts")
80
- // .option("-t, --template <template>", "Project template: api (default) or cli")
81
- // .option("-d, --database <provider>", "Database provider to include (api only): typeorm")
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBydW5JbkJ1aWxkZXIgfSBmcm9tIFwiLi9ydW5uZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgQXBpT3B0aW9ucyB9IGZyb20gXCIuL3dlYmFwaS9jcmVhdGUtYXBpLmpzXCI7XG5pbXBvcnQgeyBzY2FmZm9sZEFwaSB9IGZyb20gXCIuL3dlYmFwaS9jcmVhdGUtYXBpLmpzXCI7XG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG5wcm9ncmFtXG5cdC5uYW1lKFwiZGVjb2hlcmVcIilcblx0LmRlc2NyaXB0aW9uKFwiU2NhZmZvbGQgYSBuZXcgRGVjb2hlcmUgcHJvamVjdFwiKVxuXHQub3B0aW9uKFwiLWQgPGRpcmVjdG9yeT5cIiwgXCJUYXJnZXQgZGlyZWN0b3J5IChkZWZhdWx0OiBjdXJyZW50IGRpcmVjdG9yeSlcIiwgXCIuXCIpO1xuXG5wcm9ncmFtXG5cdC5jb21tYW5kKFwid2ViYXBpXCIpXG5cdC5vcHRpb24oXCItLWRhdGFiYXNlIDxwcm92aWRlcj5cIiwgXCJEYXRhYmFzZSBwcm92aWRlcjogbm9uZSB8IHBvc3RncmVzL3R5cGVvcm1cIilcblx0Lm9wdGlvbihcIi0tYXV0aCA8cHJvdmlkZXI+XCIsIFwiQXV0aCBwcm92aWRlcjogbm9uZSB8IGF1dGgwXCIpXG5cdC5vcHRpb24oXCItLXBvc3RtYW4gPHByb3ZpZGVyPlwiLCBcIlBvc3RtYW4gcHJvdmlkZXI6IG5vbmUgfCBsb2NhbCB8IGFwaVwiKVxuXHQub3B0aW9uKFwiLXksIC0teWVzXCIsIFwiSW5zdGFsbCBkZXBlbmRlbmNpZXMgd2l0aG91dCBwcm9tcHRpbmdcIilcblx0Lm9wdGlvbihcIi0taW5zdGFsbCA8bW9kZT5cIiwgXCJEZXBlbmRlbmN5IGluc3RhbGwgbW9kZTogYXNrIHwgeWVzIHwgbm9cIiwgXCJhc2tcIilcblx0LmFjdGlvbihhc3luYyAoX25hbWUsIGNtZDogQ29tbWFuZCkgPT4ge1xuXHRcdGNvbnN0IG9wdHMgPSBjbWQub3B0c1dpdGhHbG9iYWxzKCk7XG5cdFx0Y29uc3QgaW5zdGFsbE1vZGUgPSBTdHJpbmcob3B0cy5pbnN0YWxsID8/IFwiYXNrXCIpLnRvTG93ZXJDYXNlKCk7XG5cdFx0Y29uc3Qgbm9ybWFsaXplZDogQXBpT3B0aW9ucyA9IHtcblx0XHRcdGQ6IG9wdHMuZCxcblx0XHRcdGRhdGFiYXNlUHJvdmlkZXI6IG9wdHMuZGF0YWJhc2UsXG5cdFx0XHRhdXRoUHJvdmlkZXI6IG9wdHMuYXV0aCxcblx0XHRcdHBvc3RtYW5Qcm92aWRlcjogb3B0cy5wb3N0bWFuLFxuXHRcdFx0aW5zdGFsbERlcGVuZGVuY2llczpcblx0XHRcdFx0b3B0cy55ZXMgPT09IHRydWVcblx0XHRcdFx0XHQ/IFwieWVzXCJcblx0XHRcdFx0XHQ6IGluc3RhbGxNb2RlID09PSBcInllc1wiIHx8IGluc3RhbGxNb2RlID09PSBcIm5vXCJcblx0XHRcdFx0XHRcdD8gaW5zdGFsbE1vZGVcblx0XHRcdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdH07XG5cblx0XHRpZiAocHJvY2Vzcy5lbnYuREVDT0hFUkVfQlVJTERFUiAhPT0gXCIxXCIpIHtcblx0XHRcdHJ1bkluQnVpbGRlcihub3JtYWxpemVkKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCB7IGNsb3NlUHJvbXB0IH0gPSBhd2FpdCBpbXBvcnQoXCIuL2RvbWFpbi9wcm9tcHQuanNcIik7XG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IHNjYWZmb2xkQXBpKG5vcm1hbGl6ZWQpO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0Y29uc29sZS5lcnJvcihlcnIpO1xuXHRcdFx0cHJvY2Vzcy5leGl0Q29kZSA9IDE7XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdC8vIEFsd2F5cyByZWxlYXNlIHJlYWRsaW5lJ3Mgc3RkaW4gaG9sZCAoZXZlbiBvbiBlcnJvcnMgLyBlYXJseSBhYm9ydCkuXG5cdFx0XHRjbG9zZVByb21wdCgpO1xuXHRcdH1cblx0XHQvLyBCdWlsZGVyIHJ1bnMgdW5kZXIgZG9ja2VyIC1pdDsgZXhpdCBleHBsaWNpdGx5IHNvIHRoZSBjb250YWluZXIgc3RvcHMuXG5cdFx0cHJvY2Vzcy5leGl0KHByb2Nlc3MuZXhpdENvZGUgPz8gMCk7XG5cdH0pO1xuXG4vLyAub3B0aW9uKFwiLXksIC0teWVzXCIsIFwiU2tpcCBjb25maXJtYXRpb24gcHJvbXB0c1wiKVxuLy8gLm9wdGlvbihcIi10LCAtLXRlbXBsYXRlIDx0ZW1wbGF0ZT5cIiwgXCJQcm9qZWN0IHRlbXBsYXRlOiBhcGkgKGRlZmF1bHQpIG9yIGNsaVwiKVxuLy8gLm9wdGlvbihcIi1kLCAtLWRhdGFiYXNlIDxwcm92aWRlcj5cIiwgXCJEYXRhYmFzZSBwcm92aWRlciB0byBpbmNsdWRlIChhcGkgb25seSk6IHR5cGVvcm1cIilcbi8vIC5vcHRpb24oXCItaSwgLS1pZHAgPHByb3ZpZGVyPlwiLCBcIklkZW50aXR5IHByb3ZpZGVyIHRvIGNvbmZpZ3VyZSAoYXBpIG9ubHkpOiBhdXRoMFwiKVxuLy8gLm9wdGlvbihcIi1wLCAtLXBvc3RtYW5cIiwgXCJDb25maWd1cmUgYSBQb3N0bWFuIHdvcmtzcGFjZSwgY29sbGVjdGlvbiwgYW5kIGVudmlyb25tZW50XCIpXG4vLyAuYWN0aW9uKFxuLy8gXHRhc3luYyAoXG4vLyBcdFx0ZGlyZWN0b3J5OiBzdHJpbmcsXG4vLyBcdFx0b3B0czoge1xuLy8gXHRcdFx0eWVzPzogYm9vbGVhbjtcbi8vIFx0XHRcdHRlbXBsYXRlPzogXCJhcGlcIiB8IFwiY2xpXCI7XG4vLyBcdFx0XHRkYXRhYmFzZT86IFwidHlwZW9ybVwiO1xuLy8gXHRcdFx0aWRwPzogXCJhdXRoMFwiO1xuLy8gXHRcdFx0cG9zdG1hbj86IGJvb2xlYW47XG4vLyBcdFx0fSxcbi8vIFx0KSA9PiB7XG4vLyBcdFx0YXdhaXQgc2NhZmZvbGQocmVzb2x2ZShkaXJlY3RvcnkpLCBvcHRzKTtcbi8vIFx0fSxcbi8vICk7XG5cbnByb2dyYW0ucGFyc2UoKTtcbiJdLCJuYW1lcyI6WyJwcm9ncmFtIiwiQ29tbWFuZCIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsIm9wdGlvbiIsImNvbW1hbmQiLCJhY3Rpb24iLCJfbmFtZSIsImNtZCIsIm9wdHMiLCJvcHRzV2l0aEdsb2JhbHMiLCJpbnN0YWxsTW9kZSIsIlN0cmluZyIsImluc3RhbGwiLCJ0b0xvd2VyQ2FzZSIsIm5vcm1hbGl6ZWQiLCJkIiwiZGF0YWJhc2VQcm92aWRlciIsImRhdGFiYXNlIiwiYXV0aFByb3ZpZGVyIiwiYXV0aCIsInBvc3RtYW5Qcm92aWRlciIsInBvc3RtYW4iLCJpbnN0YWxsRGVwZW5kZW5jaWVzIiwieWVzIiwidW5kZWZpbmVkIiwicHJvY2VzcyIsImVudiIsIkRFQ09IRVJFX0JVSUxERVIiLCJydW5JbkJ1aWxkZXIiLCJjbG9zZVByb21wdCIsInNjYWZmb2xkQXBpIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwiZXhpdENvZGUiLCJleGl0IiwicGFyc2UiXSwibWFwcGluZ3MiOiI7Ozs7OzJCQUN3Qjt3QkFDSzsyQkFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVCLE1BQU1BLFVBQVUsSUFBSUMsa0JBQU87QUFFM0JELFFBQ0VFLElBQUksQ0FBQyxZQUNMQyxXQUFXLENBQUMsbUNBQ1pDLE1BQU0sQ0FBQyxrQkFBa0IsaURBQWlEO0FBRTVFSixRQUNFSyxPQUFPLENBQUMsVUFDUkQsTUFBTSxDQUFDLHlCQUF5Qiw4Q0FDaENBLE1BQU0sQ0FBQyxxQkFBcUIsK0JBQzVCQSxNQUFNLENBQUMsd0JBQXdCLHdDQUMvQkEsTUFBTSxDQUFDLGFBQWEsMENBQ3BCQSxNQUFNLENBQUMsb0JBQW9CLDJDQUEyQyxPQUN0RUUsTUFBTSxDQUFDLE9BQU9DLE9BQU9DO0lBQ3JCLE1BQU1DLE9BQU9ELElBQUlFLGVBQWU7SUFDaEMsTUFBTUMsY0FBY0MsT0FBT0gsS0FBS0ksT0FBTyxJQUFJLE9BQU9DLFdBQVc7SUFDN0QsTUFBTUMsYUFBeUI7UUFDOUJDLEdBQUdQLEtBQUtPLENBQUM7UUFDVEMsa0JBQWtCUixLQUFLUyxRQUFRO1FBQy9CQyxjQUFjVixLQUFLVyxJQUFJO1FBQ3ZCQyxpQkFBaUJaLEtBQUthLE9BQU87UUFDN0JDLHFCQUNDZCxLQUFLZSxHQUFHLEtBQUssT0FDVixRQUNBYixnQkFBZ0IsU0FBU0EsZ0JBQWdCLE9BQ3hDQSxjQUNBYztJQUNOO0lBRUEsSUFBSUMsUUFBUUMsR0FBRyxDQUFDQyxnQkFBZ0IsS0FBSyxLQUFLO1FBQ3pDQyxJQUFBQSxvQkFBWSxFQUFDZDtRQUNiO0lBQ0Q7SUFFQSxNQUFNLEVBQUVlLFdBQVcsRUFBRSxHQUFHLE1BQU0sbUVBQUEsUUFBTztJQUNyQyxJQUFJO1FBQ0gsTUFBTUMsSUFBQUEsc0JBQVcsRUFBQ2hCO0lBQ25CLEVBQUUsT0FBT2lCLEtBQUs7UUFDYkMsUUFBUUMsS0FBSyxDQUFDRjtRQUNkTixRQUFRUyxRQUFRLEdBQUc7SUFDcEIsU0FBVTtRQUNULHVFQUF1RTtRQUN2RUw7SUFDRDtJQUNBLHlFQUF5RTtJQUN6RUosUUFBUVUsSUFBSSxDQUFDVixRQUFRUyxRQUFRLElBQUk7QUFDbEM7QUFFRCxvREFBb0Q7QUFDcEQsaUZBQWlGO0FBQ2pGLDJGQUEyRjtBQUMzRixzRkFBc0Y7QUFDdEYseUZBQXlGO0FBQ3pGLFdBQVc7QUFDWCxXQUFXO0FBQ1gsdUJBQXVCO0FBQ3ZCLFlBQVk7QUFDWixvQkFBb0I7QUFDcEIsK0JBQStCO0FBQy9CLDJCQUEyQjtBQUMzQixvQkFBb0I7QUFDcEIsd0JBQXdCO0FBQ3hCLE9BQU87QUFDUCxVQUFVO0FBQ1YsOENBQThDO0FBQzlDLE1BQU07QUFDTixLQUFLO0FBRUxuQyxRQUFRcUMsS0FBSyJ9
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 { Command } from "commander";
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
- const program = new Command();
6
- program.name("decohere").description("Scaffold a new Decohere project").option("-d <directory>", "Target directory (default: current directory)", ".");
7
- program.command("webapi").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 (_name, cmd)=>{
8
- const opts = cmd.optsWithGlobals();
9
- const installMode = String(opts.install ?? "ask").toLowerCase();
10
- const normalized = {
11
- d: opts.d,
12
- databaseProvider: opts.database,
13
- authProvider: opts.auth,
14
- postmanProvider: opts.postman,
15
- installDependencies: opts.yes === true ? "yes" : installMode === "yes" || installMode === "no" ? installMode : undefined
16
- };
17
- if (process.env.DECOHERE_BUILDER !== "1") {
18
- runInBuilder(normalized);
19
- return;
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
- const { closePrompt } = await import("./domain/prompt.js");
45
+ return import.meta.url === pathToFileURL(resolve(entry)).href;
46
+ }
47
+ async function main() {
22
48
  try {
23
- await scaffoldApi(normalized);
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.exitCode = 1;
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
- // .option("-y, --yes", "Skip confirmation prompts")
35
- // .option("-t, --template <template>", "Project template: api (default) or cli")
36
- // .option("-d, --database <provider>", "Database provider to include (api only): typeorm")
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBydW5JbkJ1aWxkZXIgfSBmcm9tIFwiLi9ydW5uZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgQXBpT3B0aW9ucyB9IGZyb20gXCIuL3dlYmFwaS9jcmVhdGUtYXBpLmpzXCI7XG5pbXBvcnQgeyBzY2FmZm9sZEFwaSB9IGZyb20gXCIuL3dlYmFwaS9jcmVhdGUtYXBpLmpzXCI7XG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG5wcm9ncmFtXG5cdC5uYW1lKFwiZGVjb2hlcmVcIilcblx0LmRlc2NyaXB0aW9uKFwiU2NhZmZvbGQgYSBuZXcgRGVjb2hlcmUgcHJvamVjdFwiKVxuXHQub3B0aW9uKFwiLWQgPGRpcmVjdG9yeT5cIiwgXCJUYXJnZXQgZGlyZWN0b3J5IChkZWZhdWx0OiBjdXJyZW50IGRpcmVjdG9yeSlcIiwgXCIuXCIpO1xuXG5wcm9ncmFtXG5cdC5jb21tYW5kKFwid2ViYXBpXCIpXG5cdC5vcHRpb24oXCItLWRhdGFiYXNlIDxwcm92aWRlcj5cIiwgXCJEYXRhYmFzZSBwcm92aWRlcjogbm9uZSB8IHBvc3RncmVzL3R5cGVvcm1cIilcblx0Lm9wdGlvbihcIi0tYXV0aCA8cHJvdmlkZXI+XCIsIFwiQXV0aCBwcm92aWRlcjogbm9uZSB8IGF1dGgwXCIpXG5cdC5vcHRpb24oXCItLXBvc3RtYW4gPHByb3ZpZGVyPlwiLCBcIlBvc3RtYW4gcHJvdmlkZXI6IG5vbmUgfCBsb2NhbCB8IGFwaVwiKVxuXHQub3B0aW9uKFwiLXksIC0teWVzXCIsIFwiSW5zdGFsbCBkZXBlbmRlbmNpZXMgd2l0aG91dCBwcm9tcHRpbmdcIilcblx0Lm9wdGlvbihcIi0taW5zdGFsbCA8bW9kZT5cIiwgXCJEZXBlbmRlbmN5IGluc3RhbGwgbW9kZTogYXNrIHwgeWVzIHwgbm9cIiwgXCJhc2tcIilcblx0LmFjdGlvbihhc3luYyAoX25hbWUsIGNtZDogQ29tbWFuZCkgPT4ge1xuXHRcdGNvbnN0IG9wdHMgPSBjbWQub3B0c1dpdGhHbG9iYWxzKCk7XG5cdFx0Y29uc3QgaW5zdGFsbE1vZGUgPSBTdHJpbmcob3B0cy5pbnN0YWxsID8/IFwiYXNrXCIpLnRvTG93ZXJDYXNlKCk7XG5cdFx0Y29uc3Qgbm9ybWFsaXplZDogQXBpT3B0aW9ucyA9IHtcblx0XHRcdGQ6IG9wdHMuZCxcblx0XHRcdGRhdGFiYXNlUHJvdmlkZXI6IG9wdHMuZGF0YWJhc2UsXG5cdFx0XHRhdXRoUHJvdmlkZXI6IG9wdHMuYXV0aCxcblx0XHRcdHBvc3RtYW5Qcm92aWRlcjogb3B0cy5wb3N0bWFuLFxuXHRcdFx0aW5zdGFsbERlcGVuZGVuY2llczpcblx0XHRcdFx0b3B0cy55ZXMgPT09IHRydWVcblx0XHRcdFx0XHQ/IFwieWVzXCJcblx0XHRcdFx0XHQ6IGluc3RhbGxNb2RlID09PSBcInllc1wiIHx8IGluc3RhbGxNb2RlID09PSBcIm5vXCJcblx0XHRcdFx0XHRcdD8gaW5zdGFsbE1vZGVcblx0XHRcdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdH07XG5cblx0XHRpZiAocHJvY2Vzcy5lbnYuREVDT0hFUkVfQlVJTERFUiAhPT0gXCIxXCIpIHtcblx0XHRcdHJ1bkluQnVpbGRlcihub3JtYWxpemVkKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCB7IGNsb3NlUHJvbXB0IH0gPSBhd2FpdCBpbXBvcnQoXCIuL2RvbWFpbi9wcm9tcHQuanNcIik7XG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IHNjYWZmb2xkQXBpKG5vcm1hbGl6ZWQpO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0Y29uc29sZS5lcnJvcihlcnIpO1xuXHRcdFx0cHJvY2Vzcy5leGl0Q29kZSA9IDE7XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdC8vIEFsd2F5cyByZWxlYXNlIHJlYWRsaW5lJ3Mgc3RkaW4gaG9sZCAoZXZlbiBvbiBlcnJvcnMgLyBlYXJseSBhYm9ydCkuXG5cdFx0XHRjbG9zZVByb21wdCgpO1xuXHRcdH1cblx0XHQvLyBCdWlsZGVyIHJ1bnMgdW5kZXIgZG9ja2VyIC1pdDsgZXhpdCBleHBsaWNpdGx5IHNvIHRoZSBjb250YWluZXIgc3RvcHMuXG5cdFx0cHJvY2Vzcy5leGl0KHByb2Nlc3MuZXhpdENvZGUgPz8gMCk7XG5cdH0pO1xuXG4vLyAub3B0aW9uKFwiLXksIC0teWVzXCIsIFwiU2tpcCBjb25maXJtYXRpb24gcHJvbXB0c1wiKVxuLy8gLm9wdGlvbihcIi10LCAtLXRlbXBsYXRlIDx0ZW1wbGF0ZT5cIiwgXCJQcm9qZWN0IHRlbXBsYXRlOiBhcGkgKGRlZmF1bHQpIG9yIGNsaVwiKVxuLy8gLm9wdGlvbihcIi1kLCAtLWRhdGFiYXNlIDxwcm92aWRlcj5cIiwgXCJEYXRhYmFzZSBwcm92aWRlciB0byBpbmNsdWRlIChhcGkgb25seSk6IHR5cGVvcm1cIilcbi8vIC5vcHRpb24oXCItaSwgLS1pZHAgPHByb3ZpZGVyPlwiLCBcIklkZW50aXR5IHByb3ZpZGVyIHRvIGNvbmZpZ3VyZSAoYXBpIG9ubHkpOiBhdXRoMFwiKVxuLy8gLm9wdGlvbihcIi1wLCAtLXBvc3RtYW5cIiwgXCJDb25maWd1cmUgYSBQb3N0bWFuIHdvcmtzcGFjZSwgY29sbGVjdGlvbiwgYW5kIGVudmlyb25tZW50XCIpXG4vLyAuYWN0aW9uKFxuLy8gXHRhc3luYyAoXG4vLyBcdFx0ZGlyZWN0b3J5OiBzdHJpbmcsXG4vLyBcdFx0b3B0czoge1xuLy8gXHRcdFx0eWVzPzogYm9vbGVhbjtcbi8vIFx0XHRcdHRlbXBsYXRlPzogXCJhcGlcIiB8IFwiY2xpXCI7XG4vLyBcdFx0XHRkYXRhYmFzZT86IFwidHlwZW9ybVwiO1xuLy8gXHRcdFx0aWRwPzogXCJhdXRoMFwiO1xuLy8gXHRcdFx0cG9zdG1hbj86IGJvb2xlYW47XG4vLyBcdFx0fSxcbi8vIFx0KSA9PiB7XG4vLyBcdFx0YXdhaXQgc2NhZmZvbGQocmVzb2x2ZShkaXJlY3RvcnkpLCBvcHRzKTtcbi8vIFx0fSxcbi8vICk7XG5cbnByb2dyYW0ucGFyc2UoKTtcbiJdLCJuYW1lcyI6WyJDb21tYW5kIiwicnVuSW5CdWlsZGVyIiwic2NhZmZvbGRBcGkiLCJwcm9ncmFtIiwibmFtZSIsImRlc2NyaXB0aW9uIiwib3B0aW9uIiwiY29tbWFuZCIsImFjdGlvbiIsIl9uYW1lIiwiY21kIiwib3B0cyIsIm9wdHNXaXRoR2xvYmFscyIsImluc3RhbGxNb2RlIiwiU3RyaW5nIiwiaW5zdGFsbCIsInRvTG93ZXJDYXNlIiwibm9ybWFsaXplZCIsImQiLCJkYXRhYmFzZVByb3ZpZGVyIiwiZGF0YWJhc2UiLCJhdXRoUHJvdmlkZXIiLCJhdXRoIiwicG9zdG1hblByb3ZpZGVyIiwicG9zdG1hbiIsImluc3RhbGxEZXBlbmRlbmNpZXMiLCJ5ZXMiLCJ1bmRlZmluZWQiLCJwcm9jZXNzIiwiZW52IiwiREVDT0hFUkVfQlVJTERFUiIsImNsb3NlUHJvbXB0IiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwiZXhpdENvZGUiLCJleGl0IiwicGFyc2UiXSwibWFwcGluZ3MiOiI7QUFDQSxTQUFTQSxPQUFPLFFBQVEsWUFBWTtBQUNwQyxTQUFTQyxZQUFZLFFBQVEsY0FBYztBQUUzQyxTQUFTQyxXQUFXLFFBQVEseUJBQXlCO0FBRXJELE1BQU1DLFVBQVUsSUFBSUg7QUFFcEJHLFFBQ0VDLElBQUksQ0FBQyxZQUNMQyxXQUFXLENBQUMsbUNBQ1pDLE1BQU0sQ0FBQyxrQkFBa0IsaURBQWlEO0FBRTVFSCxRQUNFSSxPQUFPLENBQUMsVUFDUkQsTUFBTSxDQUFDLHlCQUF5Qiw4Q0FDaENBLE1BQU0sQ0FBQyxxQkFBcUIsK0JBQzVCQSxNQUFNLENBQUMsd0JBQXdCLHdDQUMvQkEsTUFBTSxDQUFDLGFBQWEsMENBQ3BCQSxNQUFNLENBQUMsb0JBQW9CLDJDQUEyQyxPQUN0RUUsTUFBTSxDQUFDLE9BQU9DLE9BQU9DO0lBQ3JCLE1BQU1DLE9BQU9ELElBQUlFLGVBQWU7SUFDaEMsTUFBTUMsY0FBY0MsT0FBT0gsS0FBS0ksT0FBTyxJQUFJLE9BQU9DLFdBQVc7SUFDN0QsTUFBTUMsYUFBeUI7UUFDOUJDLEdBQUdQLEtBQUtPLENBQUM7UUFDVEMsa0JBQWtCUixLQUFLUyxRQUFRO1FBQy9CQyxjQUFjVixLQUFLVyxJQUFJO1FBQ3ZCQyxpQkFBaUJaLEtBQUthLE9BQU87UUFDN0JDLHFCQUNDZCxLQUFLZSxHQUFHLEtBQUssT0FDVixRQUNBYixnQkFBZ0IsU0FBU0EsZ0JBQWdCLE9BQ3hDQSxjQUNBYztJQUNOO0lBRUEsSUFBSUMsUUFBUUMsR0FBRyxDQUFDQyxnQkFBZ0IsS0FBSyxLQUFLO1FBQ3pDN0IsYUFBYWdCO1FBQ2I7SUFDRDtJQUVBLE1BQU0sRUFBRWMsV0FBVyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUM7SUFDckMsSUFBSTtRQUNILE1BQU03QixZQUFZZTtJQUNuQixFQUFFLE9BQU9lLEtBQUs7UUFDYkMsUUFBUUMsS0FBSyxDQUFDRjtRQUNkSixRQUFRTyxRQUFRLEdBQUc7SUFDcEIsU0FBVTtRQUNULHVFQUF1RTtRQUN2RUo7SUFDRDtJQUNBLHlFQUF5RTtJQUN6RUgsUUFBUVEsSUFBSSxDQUFDUixRQUFRTyxRQUFRLElBQUk7QUFDbEM7QUFFRCxvREFBb0Q7QUFDcEQsaUZBQWlGO0FBQ2pGLDJGQUEyRjtBQUMzRixzRkFBc0Y7QUFDdEYseUZBQXlGO0FBQ3pGLFdBQVc7QUFDWCxXQUFXO0FBQ1gsdUJBQXVCO0FBQ3ZCLFlBQVk7QUFDWixvQkFBb0I7QUFDcEIsK0JBQStCO0FBQy9CLDJCQUEyQjtBQUMzQixvQkFBb0I7QUFDcEIsd0JBQXdCO0FBQ3hCLE9BQU87QUFDUCxVQUFVO0FBQ1YsOENBQThDO0FBQzlDLE1BQU07QUFDTixLQUFLO0FBRUxoQyxRQUFRa0MsS0FBSyJ9
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.40",
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.40",
24
+ "@decohere/nexus": "0.0.1-dev.41",
25
25
  "commander": "^13.1.0",
26
26
  "openapi-to-postmanv2": "^5.0.0"
27
27
  },
@@ -1,2 +1,5 @@
1
1
  #!/usr/bin/env node
2
- export {};
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>;
@@ -0,0 +1,5 @@
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
+ */
5
+ export declare function resolveTargetDir(positional?: string, flag?: string): string;