@decohere/create 0.0.1-dev.18 → 0.0.1-dev.19
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 +10 -6
- package/commonjs/src/domain/prompt.js +55 -0
- package/commonjs/src/models/package-json.model.js +2 -2
- package/commonjs/src/runner.js +56 -0
- package/commonjs/src/version.js +32 -0
- package/commonjs/src/webapi/features/auth.feature.js +2 -2
- package/commonjs/src/webapi/features/database.feature.js +3 -3
- package/commonjs/src/webapi/features/finalize.feature.js +11 -6
- package/commonjs/src/webapi/features/postman.feature.js +4 -4
- package/commonjs/src/webapi/models/api-package-json.model.js +2 -2
- package/es6/src/cli.js +10 -6
- package/es6/src/domain/prompt.js +37 -0
- package/es6/src/models/package-json.model.js +2 -2
- package/es6/src/runner.js +55 -0
- package/es6/src/version.js +22 -0
- package/es6/src/webapi/features/auth.feature.js +2 -2
- package/es6/src/webapi/features/database.feature.js +3 -3
- package/es6/src/webapi/features/finalize.feature.js +11 -6
- package/es6/src/webapi/features/postman.feature.js +4 -4
- package/es6/src/webapi/models/api-package-json.model.js +2 -2
- package/package.json +2 -2
- package/types/src/runner.d.ts +13 -0
- package/commonjs/v1/cli.js +0 -15
- package/commonjs/v1/domain/class-model.js +0 -106
- package/commonjs/v1/domain/compose.model.js +0 -74
- package/commonjs/v1/domain/context.js +0 -53
- package/commonjs/v1/domain/devcontainer.model.js +0 -116
- package/commonjs/v1/domain/dockerfile.model.js +0 -62
- package/commonjs/v1/domain/feature.js +0 -19
- package/commonjs/v1/domain/import-map.js +0 -74
- package/commonjs/v1/domain/index.js +0 -68
- package/commonjs/v1/domain/prompt.js +0 -45
- package/commonjs/v1/domain/workflow.js +0 -37
- package/commonjs/v1/features/api-core/feature.js +0 -103
- package/commonjs/v1/features/api-core/hello-controller.model.js +0 -100
- package/commonjs/v1/features/api-core/main-ts.model.js +0 -85
- package/commonjs/v1/features/api-core/scaffold-files.template.js +0 -158
- package/commonjs/v1/features/auth0/auth0-cli.js +0 -151
- package/commonjs/v1/features/auth0/feature.js +0 -187
- package/commonjs/v1/features/auth0/models.js +0 -14
- package/commonjs/v1/features/auth0/prod-config.template.js +0 -19
- package/commonjs/v1/features/cli-core/feature.js +0 -37
- package/commonjs/v1/features/cli-core/scaffold-files.template.js +0 -103
- package/commonjs/v1/features/devcontainer/feature.js +0 -38
- package/commonjs/v1/features/finalize/feature.js +0 -48
- package/commonjs/v1/features/postgresql/feature.js +0 -81
- package/commonjs/v1/features/postgresql/models.js +0 -14
- package/commonjs/v1/features/postman/collection.template.js +0 -80
- package/commonjs/v1/features/postman/environment.template.js +0 -24
- package/commonjs/v1/features/postman/feature.js +0 -192
- package/commonjs/v1/features/typeorm/feature.js +0 -66
- package/commonjs/v1/features/typeorm/scaffold-files.template.js +0 -80
- package/commonjs/v1/scaffold.js +0 -50
- package/commonjs/v1/version.js +0 -32
- package/commonjs/v1/workflows/api.js +0 -29
- package/commonjs/v1/workflows/cli.js +0 -19
- package/es6/v1/cli.js +0 -11
- package/es6/v1/domain/class-model.js +0 -104
- package/es6/v1/domain/compose.model.js +0 -61
- package/es6/v1/domain/context.js +0 -37
- package/es6/v1/domain/devcontainer.model.js +0 -104
- package/es6/v1/domain/dockerfile.model.js +0 -52
- package/es6/v1/domain/feature.js +0 -9
- package/es6/v1/domain/import-map.js +0 -64
- package/es6/v1/domain/index.js +0 -11
- package/es6/v1/domain/prompt.js +0 -27
- package/es6/v1/domain/workflow.js +0 -24
- package/es6/v1/features/api-core/feature.js +0 -93
- package/es6/v1/features/api-core/hello-controller.model.js +0 -96
- package/es6/v1/features/api-core/main-ts.model.js +0 -74
- package/es6/v1/features/api-core/scaffold-files.template.js +0 -116
- package/es6/v1/features/auth0/auth0-cli.js +0 -116
- package/es6/v1/features/auth0/feature.js +0 -136
- package/es6/v1/features/auth0/models.js +0 -4
- package/es6/v1/features/auth0/prod-config.template.js +0 -9
- package/es6/v1/features/cli-core/feature.js +0 -27
- package/es6/v1/features/cli-core/scaffold-files.template.js +0 -73
- package/es6/v1/features/devcontainer/feature.js +0 -28
- package/es6/v1/features/finalize/feature.js +0 -38
- package/es6/v1/features/postgresql/feature.js +0 -71
- package/es6/v1/features/postgresql/models.js +0 -4
- package/es6/v1/features/postman/collection.template.js +0 -70
- package/es6/v1/features/postman/environment.template.js +0 -14
- package/es6/v1/features/postman/feature.js +0 -141
- package/es6/v1/features/typeorm/feature.js +0 -56
- package/es6/v1/features/typeorm/scaffold-files.template.js +0 -56
- package/es6/v1/scaffold.js +0 -40
- package/es6/v1/version.js +0 -22
- package/es6/v1/workflows/api.js +0 -25
- package/es6/v1/workflows/cli.js +0 -9
- package/types/v1/cli.d.ts +0 -2
- package/types/v1/domain/class-model.d.ts +0 -70
- package/types/v1/domain/compose.model.d.ts +0 -25
- package/types/v1/domain/context.d.ts +0 -36
- package/types/v1/domain/devcontainer.model.d.ts +0 -35
- package/types/v1/domain/dockerfile.model.d.ts +0 -11
- package/types/v1/domain/feature.d.ts +0 -29
- package/types/v1/domain/import-map.d.ts +0 -24
- package/types/v1/domain/index.d.ts +0 -12
- package/types/v1/domain/workflow.d.ts +0 -14
- package/types/v1/features/api-core/feature.d.ts +0 -2
- package/types/v1/features/api-core/hello-controller.model.d.ts +0 -9
- package/types/v1/features/api-core/main-ts.model.d.ts +0 -31
- package/types/v1/features/api-core/scaffold-files.template.d.ts +0 -10
- package/types/v1/features/auth0/auth0-cli.d.ts +0 -22
- package/types/v1/features/auth0/feature.d.ts +0 -2
- package/types/v1/features/auth0/models.d.ts +0 -5
- package/types/v1/features/auth0/prod-config.template.d.ts +0 -1
- package/types/v1/features/cli-core/feature.d.ts +0 -2
- package/types/v1/features/cli-core/scaffold-files.template.d.ts +0 -6
- package/types/v1/features/devcontainer/feature.d.ts +0 -2
- package/types/v1/features/finalize/feature.d.ts +0 -2
- package/types/v1/features/postgresql/feature.d.ts +0 -2
- package/types/v1/features/postgresql/models.d.ts +0 -6
- package/types/v1/features/postman/collection.template.d.ts +0 -1
- package/types/v1/features/postman/environment.template.d.ts +0 -6
- package/types/v1/features/postman/feature.d.ts +0 -2
- package/types/v1/features/typeorm/feature.d.ts +0 -2
- package/types/v1/features/typeorm/scaffold-files.template.d.ts +0 -9
- package/types/v1/scaffold.d.ts +0 -3
- package/types/v1/workflows/api.d.ts +0 -8
- package/types/v1/workflows/cli.d.ts +0 -1
- /package/types/{v1 → src}/domain/prompt.d.ts +0 -0
- /package/types/{v1 → src}/version.d.ts +0 -0
|
@@ -1,158 +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 CONFIG_DEV_YAML () {
|
|
13
|
-
return CONFIG_DEV_YAML;
|
|
14
|
-
},
|
|
15
|
-
get GITIGNORE () {
|
|
16
|
-
return GITIGNORE;
|
|
17
|
-
},
|
|
18
|
-
get SAMPLE_CONFIG_TS () {
|
|
19
|
-
return SAMPLE_CONFIG_TS;
|
|
20
|
-
},
|
|
21
|
-
get SAMPLE_SERVICE_TS () {
|
|
22
|
-
return SAMPLE_SERVICE_TS;
|
|
23
|
-
},
|
|
24
|
-
get TSCONFIG () {
|
|
25
|
-
return TSCONFIG;
|
|
26
|
-
},
|
|
27
|
-
get VSCODE_LAUNCH_JSON () {
|
|
28
|
-
return VSCODE_LAUNCH_JSON;
|
|
29
|
-
},
|
|
30
|
-
get apiPackageJson () {
|
|
31
|
-
return apiPackageJson;
|
|
32
|
-
},
|
|
33
|
-
get configYaml () {
|
|
34
|
-
return configYaml;
|
|
35
|
-
},
|
|
36
|
-
get rootPackageJson () {
|
|
37
|
-
return rootPackageJson;
|
|
38
|
-
},
|
|
39
|
-
get vscodeSettingsJson () {
|
|
40
|
-
return vscodeSettingsJson;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
const _version = require("../../version.js");
|
|
44
|
-
function rootPackageJson(name) {
|
|
45
|
-
return JSON.stringify({
|
|
46
|
-
name: `${name}.api`,
|
|
47
|
-
version: "0.0.1",
|
|
48
|
-
type: "module",
|
|
49
|
-
scripts: {
|
|
50
|
-
build: "forge build",
|
|
51
|
-
"build:watch": "forge build --watch",
|
|
52
|
-
dev: "flux serve"
|
|
53
|
-
},
|
|
54
|
-
dependencies: {
|
|
55
|
-
"@decohere/cortex": _version.CREATE_VERSION,
|
|
56
|
-
"@decohere/crucible": _version.CREATE_VERSION,
|
|
57
|
-
"@decohere/nexus": _version.CREATE_VERSION,
|
|
58
|
-
"@decohere/protocol": _version.CREATE_VERSION,
|
|
59
|
-
"@decohere/scribe": _version.CREATE_VERSION,
|
|
60
|
-
"@decohere/scribe-pino": _version.CREATE_VERSION,
|
|
61
|
-
"pino-pretty": "^13.0.0"
|
|
62
|
-
},
|
|
63
|
-
devDependencies: {
|
|
64
|
-
"@decohere/terminal": _version.CREATE_VERSION,
|
|
65
|
-
typescript: "^6.0.3"
|
|
66
|
-
}
|
|
67
|
-
}, null, 2);
|
|
68
|
-
}
|
|
69
|
-
function apiPackageJson(name) {
|
|
70
|
-
return JSON.stringify({
|
|
71
|
-
name: `@${name}/api`,
|
|
72
|
-
version: "0.0.1",
|
|
73
|
-
type: "module",
|
|
74
|
-
main: "src/main.ts",
|
|
75
|
-
dependencies: {
|
|
76
|
-
"@decohere/cortex": _version.CREATE_VERSION,
|
|
77
|
-
"@decohere/crucible": _version.CREATE_VERSION
|
|
78
|
-
}
|
|
79
|
-
}, null, 2);
|
|
80
|
-
}
|
|
81
|
-
const TSCONFIG = JSON.stringify({
|
|
82
|
-
compilerOptions: {
|
|
83
|
-
target: "ES2022",
|
|
84
|
-
module: "NodeNext",
|
|
85
|
-
moduleResolution: "NodeNext",
|
|
86
|
-
strict: true,
|
|
87
|
-
skipLibCheck: true,
|
|
88
|
-
experimentalDecorators: true,
|
|
89
|
-
emitDecoratorMetadata: true
|
|
90
|
-
}
|
|
91
|
-
}, null, 2);
|
|
92
|
-
const VSCODE_LAUNCH_JSON = JSON.stringify({
|
|
93
|
-
version: "0.2.0",
|
|
94
|
-
configurations: [
|
|
95
|
-
{
|
|
96
|
-
name: "Build",
|
|
97
|
-
type: "node",
|
|
98
|
-
request: "launch",
|
|
99
|
-
runtimeExecutable: "pnpm",
|
|
100
|
-
runtimeArgs: [
|
|
101
|
-
"build"
|
|
102
|
-
],
|
|
103
|
-
console: "integratedTerminal",
|
|
104
|
-
cwd: `\${workspaceFolder}`
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
name: "Serve / Dev",
|
|
108
|
-
type: "node",
|
|
109
|
-
request: "launch",
|
|
110
|
-
runtimeExecutable: "pnpm",
|
|
111
|
-
runtimeArgs: [
|
|
112
|
-
"dev"
|
|
113
|
-
],
|
|
114
|
-
console: "integratedTerminal",
|
|
115
|
-
cwd: `\${workspaceFolder}`
|
|
116
|
-
}
|
|
117
|
-
]
|
|
118
|
-
}, null, 2);
|
|
119
|
-
function vscodeSettingsJson(name) {
|
|
120
|
-
return JSON.stringify({
|
|
121
|
-
"window.title": `${name}\${separator}\${activeEditorShort}`,
|
|
122
|
-
"window.titleSeparator": " | "
|
|
123
|
-
}, null, 2);
|
|
124
|
-
}
|
|
125
|
-
const GITIGNORE = `node_modules/
|
|
126
|
-
dist/
|
|
127
|
-
.env.local
|
|
128
|
-
.pnpm-store
|
|
129
|
-
`;
|
|
130
|
-
function configYaml() {
|
|
131
|
-
return `sample:\n greeting: Hello from configuration!\n`;
|
|
132
|
-
}
|
|
133
|
-
const CONFIG_DEV_YAML = `sample:
|
|
134
|
-
greeting: Hello from dev configuration!
|
|
135
|
-
`;
|
|
136
|
-
const SAMPLE_CONFIG_TS = `export class SampleConfig {
|
|
137
|
-
\tpublic greeting: string = "";
|
|
138
|
-
}
|
|
139
|
-
`;
|
|
140
|
-
const SAMPLE_SERVICE_TS = `import { inject, injectable } from "@decohere/crucible/decorators";
|
|
141
|
-
import { ConfigurationServiceToken } from "@decohere/nexus/configuration";
|
|
142
|
-
import type { IConfigurationService } from "@decohere/nexus/configuration";
|
|
143
|
-
import { SampleConfig } from "./sample.config.js";
|
|
144
|
-
|
|
145
|
-
@injectable()
|
|
146
|
-
export class SampleService {
|
|
147
|
-
\tpublic constructor(
|
|
148
|
-
\t\t@inject(ConfigurationServiceToken) private readonly config: IConfigurationService,
|
|
149
|
-
\t) {}
|
|
150
|
-
|
|
151
|
-
\tpublic async getGreeting(): Promise<string> {
|
|
152
|
-
\t\tconst config = await this.config.get(SampleConfig);
|
|
153
|
-
\t\treturn config.greeting;
|
|
154
|
-
\t}
|
|
155
|
-
}
|
|
156
|
-
`;
|
|
157
|
-
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9hcGktY29yZS9zY2FmZm9sZC1maWxlcy50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDUkVBVEVfVkVSU0lPTiB9IGZyb20gXCIuLi8uLi92ZXJzaW9uLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiByb290UGFja2FnZUpzb24obmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuXHRcdHtcblx0XHRcdG5hbWU6IGAke25hbWV9LmFwaWAsXG5cdFx0XHR2ZXJzaW9uOiBcIjAuMC4xXCIsXG5cdFx0XHR0eXBlOiBcIm1vZHVsZVwiLFxuXHRcdFx0c2NyaXB0czoge1xuXHRcdFx0XHRidWlsZDogXCJmb3JnZSBidWlsZFwiLFxuXHRcdFx0XHRcImJ1aWxkOndhdGNoXCI6IFwiZm9yZ2UgYnVpbGQgLS13YXRjaFwiLFxuXHRcdFx0XHRkZXY6IFwiZmx1eCBzZXJ2ZVwiLFxuXHRcdFx0fSxcblx0XHRcdGRlcGVuZGVuY2llczoge1xuXHRcdFx0XHRcIkBkZWNvaGVyZS9jb3J0ZXhcIjogQ1JFQVRFX1ZFUlNJT04sXG5cdFx0XHRcdFwiQGRlY29oZXJlL2NydWNpYmxlXCI6IENSRUFURV9WRVJTSU9OLFxuXHRcdFx0XHRcIkBkZWNvaGVyZS9uZXh1c1wiOiBDUkVBVEVfVkVSU0lPTixcblx0XHRcdFx0XCJAZGVjb2hlcmUvcHJvdG9jb2xcIjogQ1JFQVRFX1ZFUlNJT04sXG5cdFx0XHRcdFwiQGRlY29oZXJlL3NjcmliZVwiOiBDUkVBVEVfVkVSU0lPTixcblx0XHRcdFx0XCJAZGVjb2hlcmUvc2NyaWJlLXBpbm9cIjogQ1JFQVRFX1ZFUlNJT04sXG5cdFx0XHRcdFwicGluby1wcmV0dHlcIjogXCJeMTMuMC4wXCIsXG5cdFx0XHR9LFxuXHRcdFx0ZGV2RGVwZW5kZW5jaWVzOiB7XG5cdFx0XHRcdFwiQGRlY29oZXJlL3Rlcm1pbmFsXCI6IENSRUFURV9WRVJTSU9OLFxuXHRcdFx0XHR0eXBlc2NyaXB0OiBcIl42LjAuM1wiLFxuXHRcdFx0fSxcblx0XHR9LFxuXHRcdG51bGwsXG5cdFx0Mixcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwaVBhY2thZ2VKc29uKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBKU09OLnN0cmluZ2lmeShcblx0XHR7XG5cdFx0XHRuYW1lOiBgQCR7bmFtZX0vYXBpYCxcblx0XHRcdHZlcnNpb246IFwiMC4wLjFcIixcblx0XHRcdHR5cGU6IFwibW9kdWxlXCIsXG5cdFx0XHRtYWluOiBcInNyYy9tYWluLnRzXCIsXG5cdFx0XHRkZXBlbmRlbmNpZXM6IHtcblx0XHRcdFx0XCJAZGVjb2hlcmUvY29ydGV4XCI6IENSRUFURV9WRVJTSU9OLFxuXHRcdFx0XHRcIkBkZWNvaGVyZS9jcnVjaWJsZVwiOiBDUkVBVEVfVkVSU0lPTixcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRudWxsLFxuXHRcdDIsXG5cdCk7XG59XG5cbmV4cG9ydCBjb25zdCBUU0NPTkZJRyA9IEpTT04uc3RyaW5naWZ5KFxuXHR7XG5cdFx0Y29tcGlsZXJPcHRpb25zOiB7XG5cdFx0XHR0YXJnZXQ6IFwiRVMyMDIyXCIsXG5cdFx0XHRtb2R1bGU6IFwiTm9kZU5leHRcIixcblx0XHRcdG1vZHVsZVJlc29sdXRpb246IFwiTm9kZU5leHRcIixcblx0XHRcdHN0cmljdDogdHJ1ZSxcblx0XHRcdHNraXBMaWJDaGVjazogdHJ1ZSxcblx0XHRcdGV4cGVyaW1lbnRhbERlY29yYXRvcnM6IHRydWUsXG5cdFx0XHRlbWl0RGVjb3JhdG9yTWV0YWRhdGE6IHRydWUsXG5cdFx0fSxcblx0fSxcblx0bnVsbCxcblx0Mixcbik7XG5cbmV4cG9ydCBjb25zdCBWU0NPREVfTEFVTkNIX0pTT04gPSBKU09OLnN0cmluZ2lmeShcblx0e1xuXHRcdHZlcnNpb246IFwiMC4yLjBcIixcblx0XHRjb25maWd1cmF0aW9uczogW1xuXHRcdFx0e1xuXHRcdFx0XHRuYW1lOiBcIkJ1aWxkXCIsXG5cdFx0XHRcdHR5cGU6IFwibm9kZVwiLFxuXHRcdFx0XHRyZXF1ZXN0OiBcImxhdW5jaFwiLFxuXHRcdFx0XHRydW50aW1lRXhlY3V0YWJsZTogXCJwbnBtXCIsXG5cdFx0XHRcdHJ1bnRpbWVBcmdzOiBbXCJidWlsZFwiXSxcblx0XHRcdFx0Y29uc29sZTogXCJpbnRlZ3JhdGVkVGVybWluYWxcIixcblx0XHRcdFx0Y3dkOiBgXFwke3dvcmtzcGFjZUZvbGRlcn1gLFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0bmFtZTogXCJTZXJ2ZSAvIERldlwiLFxuXHRcdFx0XHR0eXBlOiBcIm5vZGVcIixcblx0XHRcdFx0cmVxdWVzdDogXCJsYXVuY2hcIixcblx0XHRcdFx0cnVudGltZUV4ZWN1dGFibGU6IFwicG5wbVwiLFxuXHRcdFx0XHRydW50aW1lQXJnczogW1wiZGV2XCJdLFxuXHRcdFx0XHRjb25zb2xlOiBcImludGVncmF0ZWRUZXJtaW5hbFwiLFxuXHRcdFx0XHRjd2Q6IGBcXCR7d29ya3NwYWNlRm9sZGVyfWAsXG5cdFx0XHR9LFxuXHRcdF0sXG5cdH0sXG5cdG51bGwsXG5cdDIsXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gdnNjb2RlU2V0dGluZ3NKc29uKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBKU09OLnN0cmluZ2lmeShcblx0XHR7XG5cdFx0XHRcIndpbmRvdy50aXRsZVwiOiBgJHtuYW1lfVxcJHtzZXBhcmF0b3J9XFwke2FjdGl2ZUVkaXRvclNob3J0fWAsXG5cdFx0XHRcIndpbmRvdy50aXRsZVNlcGFyYXRvclwiOiBcIiB8IFwiLFxuXHRcdH0sXG5cdFx0bnVsbCxcblx0XHQyLFxuXHQpO1xufVxuXG5leHBvcnQgY29uc3QgR0lUSUdOT1JFID0gYG5vZGVfbW9kdWxlcy9cbmRpc3QvXG4uZW52LmxvY2FsXG4ucG5wbS1zdG9yZVxuYDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ1lhbWwoKTogc3RyaW5nIHtcblx0cmV0dXJuIGBzYW1wbGU6XFxuICBncmVldGluZzogSGVsbG8gZnJvbSBjb25maWd1cmF0aW9uIVxcbmA7XG59XG5cbmV4cG9ydCBjb25zdCBDT05GSUdfREVWX1lBTUwgPSBgc2FtcGxlOlxuICBncmVldGluZzogSGVsbG8gZnJvbSBkZXYgY29uZmlndXJhdGlvbiFcbmA7XG5cbmV4cG9ydCBjb25zdCBTQU1QTEVfQ09ORklHX1RTID0gYGV4cG9ydCBjbGFzcyBTYW1wbGVDb25maWcge1xuXFx0cHVibGljIGdyZWV0aW5nOiBzdHJpbmcgPSBcIlwiO1xufVxuYDtcblxuZXhwb3J0IGNvbnN0IFNBTVBMRV9TRVJWSUNFX1RTID0gYGltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2VUb2tlbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBJQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB7IFNhbXBsZUNvbmZpZyB9IGZyb20gXCIuL3NhbXBsZS5jb25maWcuanNcIjtcblxuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNhbXBsZVNlcnZpY2Uge1xuXFx0cHVibGljIGNvbnN0cnVjdG9yKFxuXFx0XFx0QGluamVjdChDb25maWd1cmF0aW9uU2VydmljZVRva2VuKSBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogSUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuXFx0KSB7fVxuXG5cXHRwdWJsaWMgYXN5bmMgZ2V0R3JlZXRpbmcoKTogUHJvbWlzZTxzdHJpbmc+IHtcblxcdFxcdGNvbnN0IGNvbmZpZyA9IGF3YWl0IHRoaXMuY29uZmlnLmdldChTYW1wbGVDb25maWcpO1xuXFx0XFx0cmV0dXJuIGNvbmZpZy5ncmVldGluZztcblxcdH1cbn1cbmA7XG4iXSwibmFtZXMiOlsiQ09ORklHX0RFVl9ZQU1MIiwiR0lUSUdOT1JFIiwiU0FNUExFX0NPTkZJR19UUyIsIlNBTVBMRV9TRVJWSUNFX1RTIiwiVFNDT05GSUciLCJWU0NPREVfTEFVTkNIX0pTT04iLCJhcGlQYWNrYWdlSnNvbiIsImNvbmZpZ1lhbWwiLCJyb290UGFja2FnZUpzb24iLCJ2c2NvZGVTZXR0aW5nc0pzb24iLCJuYW1lIiwiSlNPTiIsInN0cmluZ2lmeSIsInZlcnNpb24iLCJ0eXBlIiwic2NyaXB0cyIsImJ1aWxkIiwiZGV2IiwiZGVwZW5kZW5jaWVzIiwiQ1JFQVRFX1ZFUlNJT04iLCJkZXZEZXBlbmRlbmNpZXMiLCJ0eXBlc2NyaXB0IiwibWFpbiIsImNvbXBpbGVyT3B0aW9ucyIsInRhcmdldCIsIm1vZHVsZSIsIm1vZHVsZVJlc29sdXRpb24iLCJzdHJpY3QiLCJza2lwTGliQ2hlY2siLCJleHBlcmltZW50YWxEZWNvcmF0b3JzIiwiZW1pdERlY29yYXRvck1ldGFkYXRhIiwiY29uZmlndXJhdGlvbnMiLCJyZXF1ZXN0IiwicnVudGltZUV4ZWN1dGFibGUiLCJydW50aW1lQXJncyIsImNvbnNvbGUiLCJjd2QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBa0hhQTtlQUFBQTs7UUFWQUM7ZUFBQUE7O1FBY0FDO2VBQUFBOztRQUtBQztlQUFBQTs7UUExRUFDO2VBQUFBOztRQWdCQUM7ZUFBQUE7O1FBakNHQztlQUFBQTs7UUE4RUFDO2VBQUFBOztRQTVHQUM7ZUFBQUE7O1FBMkZBQztlQUFBQTs7O3lCQTdGZTtBQUV4QixTQUFTRCxnQkFBZ0JFLElBQVk7SUFDM0MsT0FBT0MsS0FBS0MsU0FBUyxDQUNwQjtRQUNDRixNQUFNLEdBQUdBLEtBQUssSUFBSSxDQUFDO1FBQ25CRyxTQUFTO1FBQ1RDLE1BQU07UUFDTkMsU0FBUztZQUNSQyxPQUFPO1lBQ1AsZUFBZTtZQUNmQyxLQUFLO1FBQ047UUFDQUMsY0FBYztZQUNiLG9CQUFvQkMsdUJBQWM7WUFDbEMsc0JBQXNCQSx1QkFBYztZQUNwQyxtQkFBbUJBLHVCQUFjO1lBQ2pDLHNCQUFzQkEsdUJBQWM7WUFDcEMsb0JBQW9CQSx1QkFBYztZQUNsQyx5QkFBeUJBLHVCQUFjO1lBQ3ZDLGVBQWU7UUFDaEI7UUFDQUMsaUJBQWlCO1lBQ2hCLHNCQUFzQkQsdUJBQWM7WUFDcENFLFlBQVk7UUFDYjtJQUNELEdBQ0EsTUFDQTtBQUVGO0FBRU8sU0FBU2YsZUFBZUksSUFBWTtJQUMxQyxPQUFPQyxLQUFLQyxTQUFTLENBQ3BCO1FBQ0NGLE1BQU0sQ0FBQyxDQUFDLEVBQUVBLEtBQUssSUFBSSxDQUFDO1FBQ3BCRyxTQUFTO1FBQ1RDLE1BQU07UUFDTlEsTUFBTTtRQUNOSixjQUFjO1lBQ2Isb0JBQW9CQyx1QkFBYztZQUNsQyxzQkFBc0JBLHVCQUFjO1FBQ3JDO0lBQ0QsR0FDQSxNQUNBO0FBRUY7QUFFTyxNQUFNZixXQUFXTyxLQUFLQyxTQUFTLENBQ3JDO0lBQ0NXLGlCQUFpQjtRQUNoQkMsUUFBUTtRQUNSQyxRQUFRO1FBQ1JDLGtCQUFrQjtRQUNsQkMsUUFBUTtRQUNSQyxjQUFjO1FBQ2RDLHdCQUF3QjtRQUN4QkMsdUJBQXVCO0lBQ3hCO0FBQ0QsR0FDQSxNQUNBO0FBR00sTUFBTXpCLHFCQUFxQk0sS0FBS0MsU0FBUyxDQUMvQztJQUNDQyxTQUFTO0lBQ1RrQixnQkFBZ0I7UUFDZjtZQUNDckIsTUFBTTtZQUNOSSxNQUFNO1lBQ05rQixTQUFTO1lBQ1RDLG1CQUFtQjtZQUNuQkMsYUFBYTtnQkFBQzthQUFRO1lBQ3RCQyxTQUFTO1lBQ1RDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztRQUMzQjtRQUNBO1lBQ0MxQixNQUFNO1lBQ05JLE1BQU07WUFDTmtCLFNBQVM7WUFDVEMsbUJBQW1CO1lBQ25CQyxhQUFhO2dCQUFDO2FBQU07WUFDcEJDLFNBQVM7WUFDVEMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQzNCO0tBQ0E7QUFDRixHQUNBLE1BQ0E7QUFHTSxTQUFTM0IsbUJBQW1CQyxJQUFZO0lBQzlDLE9BQU9DLEtBQUtDLFNBQVMsQ0FDcEI7UUFDQyxnQkFBZ0IsR0FBR0YsS0FBSyxrQ0FBa0MsQ0FBQztRQUMzRCx5QkFBeUI7SUFDMUIsR0FDQSxNQUNBO0FBRUY7QUFFTyxNQUFNVCxZQUFZLENBQUM7Ozs7QUFJMUIsQ0FBQztBQUVNLFNBQVNNO0lBQ2YsT0FBTyxDQUFDLGdEQUFnRCxDQUFDO0FBQzFEO0FBRU8sTUFBTVAsa0JBQWtCLENBQUM7O0FBRWhDLENBQUM7QUFFTSxNQUFNRSxtQkFBbUIsQ0FBQzs7O0FBR2pDLENBQUM7QUFFTSxNQUFNQyxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWdCbEMsQ0FBQyJ9
|
|
@@ -1,151 +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 Auth0AuthError () {
|
|
13
|
-
return Auth0AuthError;
|
|
14
|
-
},
|
|
15
|
-
get REQUIRED_SCOPES () {
|
|
16
|
-
return REQUIRED_SCOPES;
|
|
17
|
-
},
|
|
18
|
-
get createApi () {
|
|
19
|
-
return createApi;
|
|
20
|
-
},
|
|
21
|
-
get createSpaApp () {
|
|
22
|
-
return createSpaApp;
|
|
23
|
-
},
|
|
24
|
-
get isInstalled () {
|
|
25
|
-
return isInstalled;
|
|
26
|
-
},
|
|
27
|
-
get listApis () {
|
|
28
|
-
return listApis;
|
|
29
|
-
},
|
|
30
|
-
get listTenants () {
|
|
31
|
-
return listTenants;
|
|
32
|
-
},
|
|
33
|
-
get login () {
|
|
34
|
-
return login;
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
const _nodechild_process = require("node:child_process");
|
|
38
|
-
const REQUIRED_SCOPES = "create:clients";
|
|
39
|
-
/** Hard timeout for any Management API call. Prevents indefinite hangs on token re-auth. */ const API_TIMEOUT_MS = 8_000;
|
|
40
|
-
class Auth0AuthError extends Error {
|
|
41
|
-
constructor(message){
|
|
42
|
-
super(message);
|
|
43
|
-
this.name = "Auth0AuthError";
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/** Returns true if an error or stderr output looks like an expired/missing token. */ function isAuthError(text) {
|
|
47
|
-
return text.includes("renew access token") || text.includes("log in") || text.includes("Unauthorized");
|
|
48
|
-
}
|
|
49
|
-
/** Run an auth0 CLI command with a hard timeout. Returns stdout on success, throws on failure. */ function runAuth0(args) {
|
|
50
|
-
const result = (0, _nodechild_process.spawnSync)("auth0", args, {
|
|
51
|
-
encoding: "utf8",
|
|
52
|
-
timeout: API_TIMEOUT_MS,
|
|
53
|
-
input: "",
|
|
54
|
-
stdio: "pipe"
|
|
55
|
-
});
|
|
56
|
-
if (result.error) {
|
|
57
|
-
// ETIMEDOUT means the process was killed by the timeout
|
|
58
|
-
const msg = result.error.message;
|
|
59
|
-
if (isAuthError(msg) || result.error.code === "ETIMEDOUT") {
|
|
60
|
-
throw new Auth0AuthError(msg);
|
|
61
|
-
}
|
|
62
|
-
throw result.error;
|
|
63
|
-
}
|
|
64
|
-
if (result.status !== 0) {
|
|
65
|
-
const stderr = result.stderr ?? "";
|
|
66
|
-
if (isAuthError(stderr)) throw new Auth0AuthError(stderr);
|
|
67
|
-
throw new Error(stderr || `auth0 exited with code ${result.status}`);
|
|
68
|
-
}
|
|
69
|
-
return result.stdout;
|
|
70
|
-
}
|
|
71
|
-
function isInstalled() {
|
|
72
|
-
try {
|
|
73
|
-
(0, _nodechild_process.execFileSync)("auth0", [
|
|
74
|
-
"--version"
|
|
75
|
-
], {
|
|
76
|
-
stdio: "pipe"
|
|
77
|
-
});
|
|
78
|
-
return true;
|
|
79
|
-
} catch {
|
|
80
|
-
return false;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
function listTenants() {
|
|
84
|
-
try {
|
|
85
|
-
const out = (0, _nodechild_process.execFileSync)("auth0", [
|
|
86
|
-
"tenants",
|
|
87
|
-
"list",
|
|
88
|
-
"--json"
|
|
89
|
-
], {
|
|
90
|
-
encoding: "utf8",
|
|
91
|
-
stdio: "pipe"
|
|
92
|
-
});
|
|
93
|
-
return JSON.parse(out);
|
|
94
|
-
} catch {
|
|
95
|
-
return [];
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
function login() {
|
|
99
|
-
const result = (0, _nodechild_process.spawnSync)("auth0", [
|
|
100
|
-
"login",
|
|
101
|
-
"--scopes",
|
|
102
|
-
REQUIRED_SCOPES
|
|
103
|
-
], {
|
|
104
|
-
stdio: "inherit"
|
|
105
|
-
});
|
|
106
|
-
return result.status === 0;
|
|
107
|
-
}
|
|
108
|
-
function listApis() {
|
|
109
|
-
try {
|
|
110
|
-
const out = runAuth0([
|
|
111
|
-
"apis",
|
|
112
|
-
"list",
|
|
113
|
-
"--json",
|
|
114
|
-
"--no-input"
|
|
115
|
-
]);
|
|
116
|
-
return JSON.parse(out);
|
|
117
|
-
} catch (err) {
|
|
118
|
-
if (err instanceof Auth0AuthError) throw err;
|
|
119
|
-
return [];
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
function createApi(name, identifier) {
|
|
123
|
-
const out = runAuth0([
|
|
124
|
-
"apis",
|
|
125
|
-
"create",
|
|
126
|
-
"--name",
|
|
127
|
-
name,
|
|
128
|
-
"--identifier",
|
|
129
|
-
identifier,
|
|
130
|
-
"--json",
|
|
131
|
-
"--no-input"
|
|
132
|
-
]);
|
|
133
|
-
return JSON.parse(out);
|
|
134
|
-
}
|
|
135
|
-
function createSpaApp(name, callbackUrl) {
|
|
136
|
-
const out = runAuth0([
|
|
137
|
-
"apps",
|
|
138
|
-
"create",
|
|
139
|
-
"--name",
|
|
140
|
-
name,
|
|
141
|
-
"--type",
|
|
142
|
-
"spa",
|
|
143
|
-
"--callbacks",
|
|
144
|
-
callbackUrl,
|
|
145
|
-
"--json",
|
|
146
|
-
"--no-input"
|
|
147
|
-
]);
|
|
148
|
-
return JSON.parse(out);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9hdXRoMC9hdXRoMC1jbGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY0ZpbGVTeW5jLCBzcGF3blN5bmMgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5cbmNvbnN0IFJFUVVJUkVEX1NDT1BFUyA9IFwiY3JlYXRlOmNsaWVudHNcIjtcbi8qKiBIYXJkIHRpbWVvdXQgZm9yIGFueSBNYW5hZ2VtZW50IEFQSSBjYWxsLiBQcmV2ZW50cyBpbmRlZmluaXRlIGhhbmdzIG9uIHRva2VuIHJlLWF1dGguICovXG5jb25zdCBBUElfVElNRU9VVF9NUyA9IDhfMDAwO1xuXG5leHBvcnQgY2xhc3MgQXV0aDBBdXRoRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcblx0XHRzdXBlcihtZXNzYWdlKTtcblx0XHR0aGlzLm5hbWUgPSBcIkF1dGgwQXV0aEVycm9yXCI7XG5cdH1cbn1cblxuLyoqIFJldHVybnMgdHJ1ZSBpZiBhbiBlcnJvciBvciBzdGRlcnIgb3V0cHV0IGxvb2tzIGxpa2UgYW4gZXhwaXJlZC9taXNzaW5nIHRva2VuLiAqL1xuZnVuY3Rpb24gaXNBdXRoRXJyb3IodGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdHJldHVybiAoXG5cdFx0dGV4dC5pbmNsdWRlcyhcInJlbmV3IGFjY2VzcyB0b2tlblwiKSB8fFxuXHRcdHRleHQuaW5jbHVkZXMoXCJsb2cgaW5cIikgfHxcblx0XHR0ZXh0LmluY2x1ZGVzKFwiVW5hdXRob3JpemVkXCIpXG5cdCk7XG59XG5cbi8qKiBSdW4gYW4gYXV0aDAgQ0xJIGNvbW1hbmQgd2l0aCBhIGhhcmQgdGltZW91dC4gUmV0dXJucyBzdGRvdXQgb24gc3VjY2VzcywgdGhyb3dzIG9uIGZhaWx1cmUuICovXG5mdW5jdGlvbiBydW5BdXRoMChhcmdzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG5cdGNvbnN0IHJlc3VsdCA9IHNwYXduU3luYyhcImF1dGgwXCIsIGFyZ3MsIHtcblx0XHRlbmNvZGluZzogXCJ1dGY4XCIsXG5cdFx0dGltZW91dDogQVBJX1RJTUVPVVRfTVMsXG5cdFx0aW5wdXQ6IFwiXCIsXG5cdFx0c3RkaW86IFwicGlwZVwiLFxuXHR9KTtcblxuXHRpZiAocmVzdWx0LmVycm9yKSB7XG5cdFx0Ly8gRVRJTUVET1VUIG1lYW5zIHRoZSBwcm9jZXNzIHdhcyBraWxsZWQgYnkgdGhlIHRpbWVvdXRcblx0XHRjb25zdCBtc2cgPSByZXN1bHQuZXJyb3IubWVzc2FnZTtcblx0XHRpZiAoaXNBdXRoRXJyb3IobXNnKSB8fCAocmVzdWx0LmVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSA9PT0gXCJFVElNRURPVVRcIikge1xuXHRcdFx0dGhyb3cgbmV3IEF1dGgwQXV0aEVycm9yKG1zZyk7XG5cdFx0fVxuXHRcdHRocm93IHJlc3VsdC5lcnJvcjtcblx0fVxuXG5cdGlmIChyZXN1bHQuc3RhdHVzICE9PSAwKSB7XG5cdFx0Y29uc3Qgc3RkZXJyID0gcmVzdWx0LnN0ZGVyciA/PyBcIlwiO1xuXHRcdGlmIChpc0F1dGhFcnJvcihzdGRlcnIpKSB0aHJvdyBuZXcgQXV0aDBBdXRoRXJyb3Ioc3RkZXJyKTtcblx0XHR0aHJvdyBuZXcgRXJyb3Ioc3RkZXJyIHx8IGBhdXRoMCBleGl0ZWQgd2l0aCBjb2RlICR7cmVzdWx0LnN0YXR1c31gKTtcblx0fVxuXG5cdHJldHVybiByZXN1bHQuc3Rkb3V0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGgwVGVuYW50IHtcblx0bmFtZTogc3RyaW5nO1xuXHRhY3RpdmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnN0YWxsZWQoKTogYm9vbGVhbiB7XG5cdHRyeSB7XG5cdFx0ZXhlY0ZpbGVTeW5jKFwiYXV0aDBcIiwgW1wiLS12ZXJzaW9uXCJdLCB7IHN0ZGlvOiBcInBpcGVcIiB9KTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0VGVuYW50cygpOiBBdXRoMFRlbmFudFtdIHtcblx0dHJ5IHtcblx0XHRjb25zdCBvdXQgPSBleGVjRmlsZVN5bmMoXCJhdXRoMFwiLCBbXCJ0ZW5hbnRzXCIsIFwibGlzdFwiLCBcIi0tanNvblwiXSwge1xuXHRcdFx0ZW5jb2Rpbmc6IFwidXRmOFwiLFxuXHRcdFx0c3RkaW86IFwicGlwZVwiLFxuXHRcdH0pO1xuXHRcdHJldHVybiBKU09OLnBhcnNlKG91dCkgYXMgQXV0aDBUZW5hbnRbXTtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2dpbigpOiBib29sZWFuIHtcblx0Y29uc3QgcmVzdWx0ID0gc3Bhd25TeW5jKFwiYXV0aDBcIiwgW1wibG9naW5cIiwgXCItLXNjb3Blc1wiLCBSRVFVSVJFRF9TQ09QRVNdLCB7XG5cdFx0c3RkaW86IFwiaW5oZXJpdFwiLFxuXHR9KTtcblx0cmV0dXJuIHJlc3VsdC5zdGF0dXMgPT09IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0QXBpcygpOiBBcnJheTx7IGlkZW50aWZpZXI6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+IHtcblx0dHJ5IHtcblx0XHRjb25zdCBvdXQgPSBydW5BdXRoMChbXCJhcGlzXCIsIFwibGlzdFwiLCBcIi0tanNvblwiLCBcIi0tbm8taW5wdXRcIl0pO1xuXHRcdHJldHVybiBKU09OLnBhcnNlKG91dCkgYXMgQXJyYXk8eyBpZGVudGlmaWVyOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9Pjtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKGVyciBpbnN0YW5jZW9mIEF1dGgwQXV0aEVycm9yKSB0aHJvdyBlcnI7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBcGkobmFtZTogc3RyaW5nLCBpZGVudGlmaWVyOiBzdHJpbmcpOiB7IGlkZW50aWZpZXI6IHN0cmluZyB9IHtcblx0Y29uc3Qgb3V0ID0gcnVuQXV0aDAoW1xuXHRcdFwiYXBpc1wiLFxuXHRcdFwiY3JlYXRlXCIsXG5cdFx0XCItLW5hbWVcIixcblx0XHRuYW1lLFxuXHRcdFwiLS1pZGVudGlmaWVyXCIsXG5cdFx0aWRlbnRpZmllcixcblx0XHRcIi0tanNvblwiLFxuXHRcdFwiLS1uby1pbnB1dFwiLFxuXHRdKTtcblx0cmV0dXJuIEpTT04ucGFyc2Uob3V0KSBhcyB7IGlkZW50aWZpZXI6IHN0cmluZyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3BhQXBwKG5hbWU6IHN0cmluZywgY2FsbGJhY2tVcmw6IHN0cmluZyk6IHsgY2xpZW50X2lkOiBzdHJpbmcgfSB7XG5cdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcblx0XHRcImFwcHNcIixcblx0XHRcImNyZWF0ZVwiLFxuXHRcdFwiLS1uYW1lXCIsXG5cdFx0bmFtZSxcblx0XHRcIi0tdHlwZVwiLFxuXHRcdFwic3BhXCIsXG5cdFx0XCItLWNhbGxiYWNrc1wiLFxuXHRcdGNhbGxiYWNrVXJsLFxuXHRcdFwiLS1qc29uXCIsXG5cdFx0XCItLW5vLWlucHV0XCIsXG5cdF0pO1xuXHRyZXR1cm4gSlNPTi5wYXJzZShvdXQpIGFzIHsgY2xpZW50X2lkOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IHsgUkVRVUlSRURfU0NPUEVTIH07XG4iXSwibmFtZXMiOlsiQXV0aDBBdXRoRXJyb3IiLCJSRVFVSVJFRF9TQ09QRVMiLCJjcmVhdGVBcGkiLCJjcmVhdGVTcGFBcHAiLCJpc0luc3RhbGxlZCIsImxpc3RBcGlzIiwibGlzdFRlbmFudHMiLCJsb2dpbiIsIkFQSV9USU1FT1VUX01TIiwiRXJyb3IiLCJtZXNzYWdlIiwibmFtZSIsImlzQXV0aEVycm9yIiwidGV4dCIsImluY2x1ZGVzIiwicnVuQXV0aDAiLCJhcmdzIiwicmVzdWx0Iiwic3Bhd25TeW5jIiwiZW5jb2RpbmciLCJ0aW1lb3V0IiwiaW5wdXQiLCJzdGRpbyIsImVycm9yIiwibXNnIiwiY29kZSIsInN0YXR1cyIsInN0ZGVyciIsInN0ZG91dCIsImV4ZWNGaWxlU3luYyIsIm91dCIsIkpTT04iLCJwYXJzZSIsImVyciIsImlkZW50aWZpZXIiLCJjYWxsYmFja1VybCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUFNYUE7ZUFBQUE7O1FBb0hKQztlQUFBQTs7UUE5Qk9DO2VBQUFBOztRQWNBQztlQUFBQTs7UUFwREFDO2VBQUFBOztRQTRCQUM7ZUFBQUE7O1FBbkJBQztlQUFBQTs7UUFZQUM7ZUFBQUE7OzttQ0EzRXdCO0FBRXhDLE1BQU1OLGtCQUFrQjtBQUN4QiwwRkFBMEYsR0FDMUYsTUFBTU8saUJBQWlCO0FBRWhCLE1BQU1SLHVCQUF1QlM7SUFDbkMsWUFBbUJDLE9BQWUsQ0FBRTtRQUNuQyxLQUFLLENBQUNBO1FBQ04sSUFBSSxDQUFDQyxJQUFJLEdBQUc7SUFDYjtBQUNEO0FBRUEsbUZBQW1GLEdBQ25GLFNBQVNDLFlBQVlDLElBQVk7SUFDaEMsT0FDQ0EsS0FBS0MsUUFBUSxDQUFDLHlCQUNkRCxLQUFLQyxRQUFRLENBQUMsYUFDZEQsS0FBS0MsUUFBUSxDQUFDO0FBRWhCO0FBRUEsZ0dBQWdHLEdBQ2hHLFNBQVNDLFNBQVNDLElBQWM7SUFDL0IsTUFBTUMsU0FBU0MsSUFBQUEsNEJBQVMsRUFBQyxTQUFTRixNQUFNO1FBQ3ZDRyxVQUFVO1FBQ1ZDLFNBQVNaO1FBQ1RhLE9BQU87UUFDUEMsT0FBTztJQUNSO0lBRUEsSUFBSUwsT0FBT00sS0FBSyxFQUFFO1FBQ2pCLHdEQUF3RDtRQUN4RCxNQUFNQyxNQUFNUCxPQUFPTSxLQUFLLENBQUNiLE9BQU87UUFDaEMsSUFBSUUsWUFBWVksUUFBUSxBQUFDUCxPQUFPTSxLQUFLLENBQTJCRSxJQUFJLEtBQUssYUFBYTtZQUNyRixNQUFNLElBQUl6QixlQUFld0I7UUFDMUI7UUFDQSxNQUFNUCxPQUFPTSxLQUFLO0lBQ25CO0lBRUEsSUFBSU4sT0FBT1MsTUFBTSxLQUFLLEdBQUc7UUFDeEIsTUFBTUMsU0FBU1YsT0FBT1UsTUFBTSxJQUFJO1FBQ2hDLElBQUlmLFlBQVllLFNBQVMsTUFBTSxJQUFJM0IsZUFBZTJCO1FBQ2xELE1BQU0sSUFBSWxCLE1BQU1rQixVQUFVLENBQUMsdUJBQXVCLEVBQUVWLE9BQU9TLE1BQU0sRUFBRTtJQUNwRTtJQUVBLE9BQU9ULE9BQU9XLE1BQU07QUFDckI7QUFPTyxTQUFTeEI7SUFDZixJQUFJO1FBQ0h5QixJQUFBQSwrQkFBWSxFQUFDLFNBQVM7WUFBQztTQUFZLEVBQUU7WUFBRVAsT0FBTztRQUFPO1FBQ3JELE9BQU87SUFDUixFQUFFLE9BQU07UUFDUCxPQUFPO0lBQ1I7QUFDRDtBQUVPLFNBQVNoQjtJQUNmLElBQUk7UUFDSCxNQUFNd0IsTUFBTUQsSUFBQUEsK0JBQVksRUFBQyxTQUFTO1lBQUM7WUFBVztZQUFRO1NBQVMsRUFBRTtZQUNoRVYsVUFBVTtZQUNWRyxPQUFPO1FBQ1I7UUFDQSxPQUFPUyxLQUFLQyxLQUFLLENBQUNGO0lBQ25CLEVBQUUsT0FBTTtRQUNQLE9BQU8sRUFBRTtJQUNWO0FBQ0Q7QUFFTyxTQUFTdkI7SUFDZixNQUFNVSxTQUFTQyxJQUFBQSw0QkFBUyxFQUFDLFNBQVM7UUFBQztRQUFTO1FBQVlqQjtLQUFnQixFQUFFO1FBQ3pFcUIsT0FBTztJQUNSO0lBQ0EsT0FBT0wsT0FBT1MsTUFBTSxLQUFLO0FBQzFCO0FBRU8sU0FBU3JCO0lBQ2YsSUFBSTtRQUNILE1BQU15QixNQUFNZixTQUFTO1lBQUM7WUFBUTtZQUFRO1lBQVU7U0FBYTtRQUM3RCxPQUFPZ0IsS0FBS0MsS0FBSyxDQUFDRjtJQUNuQixFQUFFLE9BQU9HLEtBQUs7UUFDYixJQUFJQSxlQUFlakMsZ0JBQWdCLE1BQU1pQztRQUN6QyxPQUFPLEVBQUU7SUFDVjtBQUNEO0FBRU8sU0FBUy9CLFVBQVVTLElBQVksRUFBRXVCLFVBQWtCO0lBQ3pELE1BQU1KLE1BQU1mLFNBQVM7UUFDcEI7UUFDQTtRQUNBO1FBQ0FKO1FBQ0E7UUFDQXVCO1FBQ0E7UUFDQTtLQUNBO0lBQ0QsT0FBT0gsS0FBS0MsS0FBSyxDQUFDRjtBQUNuQjtBQUVPLFNBQVMzQixhQUFhUSxJQUFZLEVBQUV3QixXQUFtQjtJQUM3RCxNQUFNTCxNQUFNZixTQUFTO1FBQ3BCO1FBQ0E7UUFDQTtRQUNBSjtRQUNBO1FBQ0E7UUFDQTtRQUNBd0I7UUFDQTtRQUNBO0tBQ0E7SUFDRCxPQUFPSixLQUFLQyxLQUFLLENBQUNGO0FBQ25CIn0=
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "auth0Feature", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return auth0Feature;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _promises = require("node:fs/promises");
|
|
12
|
-
const _nodepath = require("node:path");
|
|
13
|
-
const _index = require("../../domain/index.js");
|
|
14
|
-
const _auth0cli = /*#__PURE__*/ _interop_require_wildcard(require("./auth0-cli.js"));
|
|
15
|
-
const _models = require("./models.js");
|
|
16
|
-
const _prodconfigtemplate = require("./prod-config.template.js");
|
|
17
|
-
function _getRequireWildcardCache(nodeInterop) {
|
|
18
|
-
if (typeof WeakMap !== "function") return null;
|
|
19
|
-
var cacheBabelInterop = new WeakMap();
|
|
20
|
-
var cacheNodeInterop = new WeakMap();
|
|
21
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
22
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
23
|
-
})(nodeInterop);
|
|
24
|
-
}
|
|
25
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
|
26
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
27
|
-
return obj;
|
|
28
|
-
}
|
|
29
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
30
|
-
return {
|
|
31
|
-
default: obj
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
|
35
|
-
if (cache && cache.has(obj)) {
|
|
36
|
-
return cache.get(obj);
|
|
37
|
-
}
|
|
38
|
-
var newObj = {
|
|
39
|
-
__proto__: null
|
|
40
|
-
};
|
|
41
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
42
|
-
for(var key in obj){
|
|
43
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
44
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
45
|
-
if (desc && (desc.get || desc.set)) {
|
|
46
|
-
Object.defineProperty(newObj, key, desc);
|
|
47
|
-
} else {
|
|
48
|
-
newObj[key] = obj[key];
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
newObj.default = obj;
|
|
53
|
-
if (cache) {
|
|
54
|
-
cache.set(obj, newObj);
|
|
55
|
-
}
|
|
56
|
-
return newObj;
|
|
57
|
-
}
|
|
58
|
-
const enabled = (ctx)=>ctx.opts.idp === "auth0";
|
|
59
|
-
/**
|
|
60
|
-
* Resolve phase: drive the auth0 CLI to authenticate the user and gather an
|
|
61
|
-
* issuer + audience pair. Stored under AUTH0_CONFIG_KEY for downstream
|
|
62
|
-
* features (render, postman integrate).
|
|
63
|
-
*
|
|
64
|
-
* Skipped under --yes (non-interactive).
|
|
65
|
-
*/ async function resolve(ctx) {
|
|
66
|
-
if (ctx.opts.yes) return ctx;
|
|
67
|
-
if (!_auth0cli.isInstalled()) {
|
|
68
|
-
console.error("\n The Auth0 CLI is required for automated setup.\n" + " Install: brew install auth0/auth0-cli/auth0\n" + " Or visit: https://github.com/auth0/auth0-cli\n");
|
|
69
|
-
process.exit(1);
|
|
70
|
-
}
|
|
71
|
-
// Ensure both the regular and Management API tokens are valid before prompting.
|
|
72
|
-
process.stdout.write("\n Checking Auth0 credentials...");
|
|
73
|
-
let tenants = _auth0cli.listTenants();
|
|
74
|
-
if (tenants.length === 0) {
|
|
75
|
-
process.stdout.write(" not logged in.\n");
|
|
76
|
-
console.log(" Logging in to Auth0 (your browser will open)...");
|
|
77
|
-
if (!_auth0cli.login()) {
|
|
78
|
-
console.error("\n Auth0 login failed.");
|
|
79
|
-
process.exit(1);
|
|
80
|
-
}
|
|
81
|
-
tenants = _auth0cli.listTenants();
|
|
82
|
-
}
|
|
83
|
-
try {
|
|
84
|
-
_auth0cli.listApis(); // probes the Management API token
|
|
85
|
-
process.stdout.write(" ok.\n");
|
|
86
|
-
} catch (err) {
|
|
87
|
-
if (err instanceof _auth0cli.Auth0AuthError) {
|
|
88
|
-
process.stdout.write(" token expired.\n");
|
|
89
|
-
console.log(" Re-authenticating (your browser will open)...");
|
|
90
|
-
if (!_auth0cli.login()) {
|
|
91
|
-
console.error("\n Auth0 login failed.");
|
|
92
|
-
process.exit(1);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
const active = tenants.find((t)=>t.active) ?? tenants[0];
|
|
97
|
-
const issuerBaseUrl = `https://${active.name}`;
|
|
98
|
-
console.log(`\n ✓ Auth0 tenant: ${issuerBaseUrl}`);
|
|
99
|
-
process.stdout.write("\n Fetching Auth0 APIs...");
|
|
100
|
-
const userApis = _auth0cli.listApis().filter((a)=>!a.name.includes("Management API"));
|
|
101
|
-
process.stdout.write(` found ${userApis.length}.\n`);
|
|
102
|
-
const choices = [
|
|
103
|
-
{
|
|
104
|
-
label: `<new> https://api.${ctx.projectName}`,
|
|
105
|
-
existing: null
|
|
106
|
-
},
|
|
107
|
-
...userApis.map((a)=>({
|
|
108
|
-
label: `${a.name} — ${a.identifier}`,
|
|
109
|
-
existing: a.identifier
|
|
110
|
-
}))
|
|
111
|
-
];
|
|
112
|
-
const selected = await (0, _index.pick)("\n Select Auth0 API: ", choices, (c)=>c.label);
|
|
113
|
-
let audience;
|
|
114
|
-
if (!selected || selected.existing === null) {
|
|
115
|
-
const defaultId = `https://api.${ctx.projectName}`;
|
|
116
|
-
audience = await (0, _index.ask)(` API Identifier [${defaultId}]: `, defaultId);
|
|
117
|
-
console.log("\n Creating Auth0 API...");
|
|
118
|
-
audience = _auth0cli.createApi(`${ctx.projectName} API`, audience).identifier;
|
|
119
|
-
console.log(` ✓ API created: ${audience}`);
|
|
120
|
-
} else {
|
|
121
|
-
audience = selected.existing;
|
|
122
|
-
console.log(` ✓ Selected: ${audience}`);
|
|
123
|
-
}
|
|
124
|
-
return {
|
|
125
|
-
...ctx,
|
|
126
|
-
models: ctx.models.set(_models.AUTH0_CONFIG_KEY, {
|
|
127
|
-
issuerBaseUrl,
|
|
128
|
-
audience
|
|
129
|
-
})
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Configure phase: decorate all scaffolded controllers with auth guards.
|
|
134
|
-
* Adds `@Authorize`, `@AllowAnonymous`, and the `IPrincipalProvider`
|
|
135
|
-
* constructor param so each controller can expose the current principal.
|
|
136
|
-
*/ async function configure(ctx) {
|
|
137
|
-
if (!enabled(ctx)) return ctx;
|
|
138
|
-
for (const controller of ctx.controllers){
|
|
139
|
-
const resource = controller.className.replace(/Controller$/, "");
|
|
140
|
-
controller.addImport("@decohere/cortex", "AllowAnonymous", "Authorize", "IPrincipalProviderToken").addTypeImport("@decohere/cortex", "IPrincipalProvider").addImport("@decohere/crucible/decorators", "inject").decorateClass(`@Authorize("read", "${resource}")`).decorateMethod("getAll", "@AllowAnonymous()").decorateMethod("remove", `@Authorize("delete", "${resource}")`).addConstructorParam({
|
|
141
|
-
paramDecorators: [
|
|
142
|
-
"@inject(IPrincipalProviderToken)"
|
|
143
|
-
],
|
|
144
|
-
name: "principalProvider",
|
|
145
|
-
typeName: "IPrincipalProvider",
|
|
146
|
-
isPrivate: true,
|
|
147
|
-
isReadonly: true
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
return ctx;
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Render phase: append the auth section to config/config.prod.yaml. If no
|
|
154
|
-
* Auth0Config was gathered during resolve (e.g. --yes), env-var placeholders
|
|
155
|
-
* are written instead.
|
|
156
|
-
*/ async function render(ctx) {
|
|
157
|
-
const { targetDir } = ctx;
|
|
158
|
-
const auth0Config = ctx.models.get(_models.AUTH0_CONFIG_KEY);
|
|
159
|
-
// Append env-var placeholder auth block to the base config.yaml
|
|
160
|
-
const baseConfigPath = (0, _nodepath.join)(targetDir, "config", "config.yaml");
|
|
161
|
-
let baseExisting = "";
|
|
162
|
-
try {
|
|
163
|
-
baseExisting = await (0, _promises.readFile)(baseConfigPath, "utf8");
|
|
164
|
-
} catch {}
|
|
165
|
-
const baseStripped = baseExisting.replace(/^auth:[\s\S]*?(?=\n\S|\n*$)/m, "").trimEnd();
|
|
166
|
-
const baseFrag = (0, _prodconfigtemplate.auth0ConfigYaml)();
|
|
167
|
-
await (0, _promises.writeFile)(baseConfigPath, baseStripped ? `${baseStripped}\n${baseFrag}` : baseFrag);
|
|
168
|
-
// Append actual dev auth URLs to config.dev.yaml
|
|
169
|
-
const devConfigPath = (0, _nodepath.join)(targetDir, "config", "config.dev.yaml");
|
|
170
|
-
let devExisting = "";
|
|
171
|
-
try {
|
|
172
|
-
devExisting = await (0, _promises.readFile)(devConfigPath, "utf8");
|
|
173
|
-
} catch {}
|
|
174
|
-
const devStripped = devExisting.replace(/^auth:[\s\S]*?(?=\n\S|\n*$)/m, "").trimEnd();
|
|
175
|
-
const devFragment = (0, _prodconfigtemplate.auth0ConfigYaml)(auth0Config?.issuerBaseUrl, auth0Config?.audience);
|
|
176
|
-
await (0, _promises.writeFile)(devConfigPath, devStripped ? `${devStripped}\n\n${devFragment}` : devFragment);
|
|
177
|
-
return ctx;
|
|
178
|
-
}
|
|
179
|
-
const auth0Feature = {
|
|
180
|
-
name: "auth0",
|
|
181
|
-
enabled,
|
|
182
|
-
resolve,
|
|
183
|
-
configure,
|
|
184
|
-
render
|
|
185
|
-
};
|
|
186
|
-
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9hdXRoMC9mZWF0dXJlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGFzaywgdHlwZSBGZWF0dXJlLCBwaWNrLCB0eXBlIFNjYWZmb2xkQ29udGV4dCB9IGZyb20gXCIuLi8uLi9kb21haW4vaW5kZXguanNcIjtcbmltcG9ydCAqIGFzIGF1dGgwIGZyb20gXCIuL2F1dGgwLWNsaS5qc1wiO1xuaW1wb3J0IHsgQVVUSDBfQ09ORklHX0tFWSB9IGZyb20gXCIuL21vZGVscy5qc1wiO1xuaW1wb3J0IHsgYXV0aDBDb25maWdZYW1sIH0gZnJvbSBcIi4vcHJvZC1jb25maWcudGVtcGxhdGUuanNcIjtcblxuY29uc3QgZW5hYmxlZCA9IChjdHg6IFNjYWZmb2xkQ29udGV4dCkgPT4gY3R4Lm9wdHMuaWRwID09PSBcImF1dGgwXCI7XG5cbi8qKlxuICogUmVzb2x2ZSBwaGFzZTogZHJpdmUgdGhlIGF1dGgwIENMSSB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIgYW5kIGdhdGhlciBhblxuICogaXNzdWVyICsgYXVkaWVuY2UgcGFpci4gU3RvcmVkIHVuZGVyIEFVVEgwX0NPTkZJR19LRVkgZm9yIGRvd25zdHJlYW1cbiAqIGZlYXR1cmVzIChyZW5kZXIsIHBvc3RtYW4gaW50ZWdyYXRlKS5cbiAqXG4gKiBTa2lwcGVkIHVuZGVyIC0teWVzIChub24taW50ZXJhY3RpdmUpLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlKGN0eDogU2NhZmZvbGRDb250ZXh0KTogUHJvbWlzZTxTY2FmZm9sZENvbnRleHQ+IHtcblx0aWYgKGN0eC5vcHRzLnllcykgcmV0dXJuIGN0eDtcblxuXHRpZiAoIWF1dGgwLmlzSW5zdGFsbGVkKCkpIHtcblx0XHRjb25zb2xlLmVycm9yKFxuXHRcdFx0XCJcXG4gIFRoZSBBdXRoMCBDTEkgaXMgcmVxdWlyZWQgZm9yIGF1dG9tYXRlZCBzZXR1cC5cXG5cIiArXG5cdFx0XHRcdFwiICBJbnN0YWxsOiBicmV3IGluc3RhbGwgYXV0aDAvYXV0aDAtY2xpL2F1dGgwXFxuXCIgK1xuXHRcdFx0XHRcIiAgT3IgdmlzaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hdXRoMC9hdXRoMC1jbGlcXG5cIixcblx0XHQpO1xuXHRcdHByb2Nlc3MuZXhpdCgxKTtcblx0fVxuXG5cdC8vIEVuc3VyZSBib3RoIHRoZSByZWd1bGFyIGFuZCBNYW5hZ2VtZW50IEFQSSB0b2tlbnMgYXJlIHZhbGlkIGJlZm9yZSBwcm9tcHRpbmcuXG5cdHByb2Nlc3Muc3Rkb3V0LndyaXRlKFwiXFxuICBDaGVja2luZyBBdXRoMCBjcmVkZW50aWFscy4uLlwiKTtcblx0bGV0IHRlbmFudHMgPSBhdXRoMC5saXN0VGVuYW50cygpO1xuXHRpZiAodGVuYW50cy5sZW5ndGggPT09IDApIHtcblx0XHRwcm9jZXNzLnN0ZG91dC53cml0ZShcIiBub3QgbG9nZ2VkIGluLlxcblwiKTtcblx0XHRjb25zb2xlLmxvZyhcIiAgTG9nZ2luZyBpbiB0byBBdXRoMCAoeW91ciBicm93c2VyIHdpbGwgb3BlbikuLi5cIik7XG5cdFx0aWYgKCFhdXRoMC5sb2dpbigpKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKFwiXFxuICBBdXRoMCBsb2dpbiBmYWlsZWQuXCIpO1xuXHRcdFx0cHJvY2Vzcy5leGl0KDEpO1xuXHRcdH1cblx0XHR0ZW5hbnRzID0gYXV0aDAubGlzdFRlbmFudHMoKTtcblx0fVxuXG5cdHRyeSB7XG5cdFx0YXV0aDAubGlzdEFwaXMoKTsgLy8gcHJvYmVzIHRoZSBNYW5hZ2VtZW50IEFQSSB0b2tlblxuXHRcdHByb2Nlc3Muc3Rkb3V0LndyaXRlKFwiIG9rLlxcblwiKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKGVyciBpbnN0YW5jZW9mIGF1dGgwLkF1dGgwQXV0aEVycm9yKSB7XG5cdFx0XHRwcm9jZXNzLnN0ZG91dC53cml0ZShcIiB0b2tlbiBleHBpcmVkLlxcblwiKTtcblx0XHRcdGNvbnNvbGUubG9nKFwiICBSZS1hdXRoZW50aWNhdGluZyAoeW91ciBicm93c2VyIHdpbGwgb3BlbikuLi5cIik7XG5cdFx0XHRpZiAoIWF1dGgwLmxvZ2luKCkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihcIlxcbiAgQXV0aDAgbG9naW4gZmFpbGVkLlwiKTtcblx0XHRcdFx0cHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGFjdGl2ZSA9IHRlbmFudHMuZmluZCgodCkgPT4gdC5hY3RpdmUpID8/IHRlbmFudHNbMF07XG5cdGNvbnN0IGlzc3VlckJhc2VVcmwgPSBgaHR0cHM6Ly8ke2FjdGl2ZS5uYW1lfWA7XG5cdGNvbnNvbGUubG9nKGBcXG4gIOKckyBBdXRoMCB0ZW5hbnQ6ICR7aXNzdWVyQmFzZVVybH1gKTtcblxuXHRwcm9jZXNzLnN0ZG91dC53cml0ZShcIlxcbiAgRmV0Y2hpbmcgQXV0aDAgQVBJcy4uLlwiKTtcblx0Y29uc3QgdXNlckFwaXMgPSBhdXRoMC5saXN0QXBpcygpLmZpbHRlcigoYSkgPT4gIWEubmFtZS5pbmNsdWRlcyhcIk1hbmFnZW1lbnQgQVBJXCIpKTtcblx0cHJvY2Vzcy5zdGRvdXQud3JpdGUoYCBmb3VuZCAke3VzZXJBcGlzLmxlbmd0aH0uXFxuYCk7XG5cblx0dHlwZSBBcGlDaG9pY2UgPSB7IGxhYmVsOiBzdHJpbmc7IGV4aXN0aW5nOiBzdHJpbmcgfCBudWxsIH07XG5cdGNvbnN0IGNob2ljZXM6IEFwaUNob2ljZVtdID0gW1xuXHRcdHsgbGFiZWw6IGA8bmV3PiBodHRwczovL2FwaS4ke2N0eC5wcm9qZWN0TmFtZX1gLCBleGlzdGluZzogbnVsbCB9LFxuXHRcdC4uLnVzZXJBcGlzLm1hcCgoYSkgPT4gKHsgbGFiZWw6IGAke2EubmFtZX0g4oCUICR7YS5pZGVudGlmaWVyfWAsIGV4aXN0aW5nOiBhLmlkZW50aWZpZXIgfSkpLFxuXHRdO1xuXG5cdGNvbnN0IHNlbGVjdGVkID0gYXdhaXQgcGljayhcIlxcbiAgU2VsZWN0IEF1dGgwIEFQSTogXCIsIGNob2ljZXMsIChjKSA9PiBjLmxhYmVsKTtcblxuXHRsZXQgYXVkaWVuY2U6IHN0cmluZztcblx0aWYgKCFzZWxlY3RlZCB8fCBzZWxlY3RlZC5leGlzdGluZyA9PT0gbnVsbCkge1xuXHRcdGNvbnN0IGRlZmF1bHRJZCA9IGBodHRwczovL2FwaS4ke2N0eC5wcm9qZWN0TmFtZX1gO1xuXHRcdGF1ZGllbmNlID0gYXdhaXQgYXNrKGAgIEFQSSBJZGVudGlmaWVyIFske2RlZmF1bHRJZH1dOiBgLCBkZWZhdWx0SWQpO1xuXHRcdGNvbnNvbGUubG9nKFwiXFxuICBDcmVhdGluZyBBdXRoMCBBUEkuLi5cIik7XG5cdFx0YXVkaWVuY2UgPSBhdXRoMC5jcmVhdGVBcGkoYCR7Y3R4LnByb2plY3ROYW1lfSBBUElgLCBhdWRpZW5jZSkuaWRlbnRpZmllcjtcblx0XHRjb25zb2xlLmxvZyhgICDinJMgQVBJIGNyZWF0ZWQ6ICR7YXVkaWVuY2V9YCk7XG5cdH0gZWxzZSB7XG5cdFx0YXVkaWVuY2UgPSBzZWxlY3RlZC5leGlzdGluZztcblx0XHRjb25zb2xlLmxvZyhgICDinJMgU2VsZWN0ZWQ6ICR7YXVkaWVuY2V9YCk7XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdC4uLmN0eCxcblx0XHRtb2RlbHM6IGN0eC5tb2RlbHMuc2V0KEFVVEgwX0NPTkZJR19LRVksIHsgaXNzdWVyQmFzZVVybCwgYXVkaWVuY2UgfSksXG5cdH07XG59XG5cbi8qKlxuICogQ29uZmlndXJlIHBoYXNlOiBkZWNvcmF0ZSBhbGwgc2NhZmZvbGRlZCBjb250cm9sbGVycyB3aXRoIGF1dGggZ3VhcmRzLlxuICogQWRkcyBgQEF1dGhvcml6ZWAsIGBAQWxsb3dBbm9ueW1vdXNgLCBhbmQgdGhlIGBJUHJpbmNpcGFsUHJvdmlkZXJgXG4gKiBjb25zdHJ1Y3RvciBwYXJhbSBzbyBlYWNoIGNvbnRyb2xsZXIgY2FuIGV4cG9zZSB0aGUgY3VycmVudCBwcmluY2lwYWwuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNvbmZpZ3VyZShjdHg6IFNjYWZmb2xkQ29udGV4dCk6IFByb21pc2U8U2NhZmZvbGRDb250ZXh0PiB7XG5cdGlmICghZW5hYmxlZChjdHgpKSByZXR1cm4gY3R4O1xuXHRmb3IgKGNvbnN0IGNvbnRyb2xsZXIgb2YgY3R4LmNvbnRyb2xsZXJzKSB7XG5cdFx0Y29uc3QgcmVzb3VyY2UgPSBjb250cm9sbGVyLmNsYXNzTmFtZS5yZXBsYWNlKC9Db250cm9sbGVyJC8sIFwiXCIpO1xuXHRcdGNvbnRyb2xsZXJcblx0XHRcdC5hZGRJbXBvcnQoXCJAZGVjb2hlcmUvY29ydGV4XCIsIFwiQWxsb3dBbm9ueW1vdXNcIiwgXCJBdXRob3JpemVcIiwgXCJJUHJpbmNpcGFsUHJvdmlkZXJUb2tlblwiKVxuXHRcdFx0LmFkZFR5cGVJbXBvcnQoXCJAZGVjb2hlcmUvY29ydGV4XCIsIFwiSVByaW5jaXBhbFByb3ZpZGVyXCIpXG5cdFx0XHQuYWRkSW1wb3J0KFwiQGRlY29oZXJlL2NydWNpYmxlL2RlY29yYXRvcnNcIiwgXCJpbmplY3RcIilcblx0XHRcdC5kZWNvcmF0ZUNsYXNzKGBAQXV0aG9yaXplKFwicmVhZFwiLCBcIiR7cmVzb3VyY2V9XCIpYClcblx0XHRcdC5kZWNvcmF0ZU1ldGhvZChcImdldEFsbFwiLCBcIkBBbGxvd0Fub255bW91cygpXCIpXG5cdFx0XHQuZGVjb3JhdGVNZXRob2QoXCJyZW1vdmVcIiwgYEBBdXRob3JpemUoXCJkZWxldGVcIiwgXCIke3Jlc291cmNlfVwiKWApXG5cdFx0XHQuYWRkQ29uc3RydWN0b3JQYXJhbSh7XG5cdFx0XHRcdHBhcmFtRGVjb3JhdG9yczogW1wiQGluamVjdChJUHJpbmNpcGFsUHJvdmlkZXJUb2tlbilcIl0sXG5cdFx0XHRcdG5hbWU6IFwicHJpbmNpcGFsUHJvdmlkZXJcIixcblx0XHRcdFx0dHlwZU5hbWU6IFwiSVByaW5jaXBhbFByb3ZpZGVyXCIsXG5cdFx0XHRcdGlzUHJpdmF0ZTogdHJ1ZSxcblx0XHRcdFx0aXNSZWFkb25seTogdHJ1ZSxcblx0XHRcdH0pO1xuXHR9XG5cdHJldHVybiBjdHg7XG59XG5cbi8qKlxuICogUmVuZGVyIHBoYXNlOiBhcHBlbmQgdGhlIGF1dGggc2VjdGlvbiB0byBjb25maWcvY29uZmlnLnByb2QueWFtbC4gSWYgbm9cbiAqIEF1dGgwQ29uZmlnIHdhcyBnYXRoZXJlZCBkdXJpbmcgcmVzb2x2ZSAoZS5nLiAtLXllcyksIGVudi12YXIgcGxhY2Vob2xkZXJzXG4gKiBhcmUgd3JpdHRlbiBpbnN0ZWFkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZW5kZXIoY3R4OiBTY2FmZm9sZENvbnRleHQpOiBQcm9taXNlPFNjYWZmb2xkQ29udGV4dD4ge1xuXHRjb25zdCB7IHRhcmdldERpciB9ID0gY3R4O1xuXHRjb25zdCBhdXRoMENvbmZpZyA9IGN0eC5tb2RlbHMuZ2V0KEFVVEgwX0NPTkZJR19LRVkpO1xuXG5cdC8vIEFwcGVuZCBlbnYtdmFyIHBsYWNlaG9sZGVyIGF1dGggYmxvY2sgdG8gdGhlIGJhc2UgY29uZmlnLnlhbWxcblx0Y29uc3QgYmFzZUNvbmZpZ1BhdGggPSBqb2luKHRhcmdldERpciwgXCJjb25maWdcIiwgXCJjb25maWcueWFtbFwiKTtcblx0bGV0IGJhc2VFeGlzdGluZyA9IFwiXCI7XG5cdHRyeSB7XG5cdFx0YmFzZUV4aXN0aW5nID0gYXdhaXQgcmVhZEZpbGUoYmFzZUNvbmZpZ1BhdGgsIFwidXRmOFwiKTtcblx0fSBjYXRjaCB7fVxuXHRjb25zdCBiYXNlU3RyaXBwZWQgPSBiYXNlRXhpc3RpbmcucmVwbGFjZSgvXmF1dGg6W1xcc1xcU10qPyg/PVxcblxcU3xcXG4qJCkvbSwgXCJcIikudHJpbUVuZCgpO1xuXHRjb25zdCBiYXNlRnJhZyA9IGF1dGgwQ29uZmlnWWFtbCgpO1xuXHRhd2FpdCB3cml0ZUZpbGUoYmFzZUNvbmZpZ1BhdGgsIGJhc2VTdHJpcHBlZCA/IGAke2Jhc2VTdHJpcHBlZH1cXG4ke2Jhc2VGcmFnfWAgOiBiYXNlRnJhZyk7XG5cblx0Ly8gQXBwZW5kIGFjdHVhbCBkZXYgYXV0aCBVUkxzIHRvIGNvbmZpZy5kZXYueWFtbFxuXHRjb25zdCBkZXZDb25maWdQYXRoID0gam9pbih0YXJnZXREaXIsIFwiY29uZmlnXCIsIFwiY29uZmlnLmRldi55YW1sXCIpO1xuXHRsZXQgZGV2RXhpc3RpbmcgPSBcIlwiO1xuXHR0cnkge1xuXHRcdGRldkV4aXN0aW5nID0gYXdhaXQgcmVhZEZpbGUoZGV2Q29uZmlnUGF0aCwgXCJ1dGY4XCIpO1xuXHR9IGNhdGNoIHt9XG5cdGNvbnN0IGRldlN0cmlwcGVkID0gZGV2RXhpc3RpbmcucmVwbGFjZSgvXmF1dGg6W1xcc1xcU10qPyg/PVxcblxcU3xcXG4qJCkvbSwgXCJcIikudHJpbUVuZCgpO1xuXHRjb25zdCBkZXZGcmFnbWVudCA9IGF1dGgwQ29uZmlnWWFtbChhdXRoMENvbmZpZz8uaXNzdWVyQmFzZVVybCwgYXV0aDBDb25maWc/LmF1ZGllbmNlKTtcblx0YXdhaXQgd3JpdGVGaWxlKFxuXHRcdGRldkNvbmZpZ1BhdGgsXG5cdFx0ZGV2U3RyaXBwZWQgPyBgJHtkZXZTdHJpcHBlZH1cXG5cXG4ke2RldkZyYWdtZW50fWAgOiBkZXZGcmFnbWVudCxcblx0KTtcblxuXHRyZXR1cm4gY3R4O1xufVxuXG5leHBvcnQgY29uc3QgYXV0aDBGZWF0dXJlOiBGZWF0dXJlID0ge1xuXHRuYW1lOiBcImF1dGgwXCIsXG5cdGVuYWJsZWQsXG5cdHJlc29sdmUsXG5cdGNvbmZpZ3VyZSxcblx0cmVuZGVyLFxufTtcbiJdLCJuYW1lcyI6WyJhdXRoMEZlYXR1cmUiLCJlbmFibGVkIiwiY3R4Iiwib3B0cyIsImlkcCIsInJlc29sdmUiLCJ5ZXMiLCJhdXRoMCIsImlzSW5zdGFsbGVkIiwiY29uc29sZSIsImVycm9yIiwicHJvY2VzcyIsImV4aXQiLCJzdGRvdXQiLCJ3cml0ZSIsInRlbmFudHMiLCJsaXN0VGVuYW50cyIsImxlbmd0aCIsImxvZyIsImxvZ2luIiwibGlzdEFwaXMiLCJlcnIiLCJBdXRoMEF1dGhFcnJvciIsImFjdGl2ZSIsImZpbmQiLCJ0IiwiaXNzdWVyQmFzZVVybCIsIm5hbWUiLCJ1c2VyQXBpcyIsImZpbHRlciIsImEiLCJpbmNsdWRlcyIsImNob2ljZXMiLCJsYWJlbCIsInByb2plY3ROYW1lIiwiZXhpc3RpbmciLCJtYXAiLCJpZGVudGlmaWVyIiwic2VsZWN0ZWQiLCJwaWNrIiwiYyIsImF1ZGllbmNlIiwiZGVmYXVsdElkIiwiYXNrIiwiY3JlYXRlQXBpIiwibW9kZWxzIiwic2V0IiwiQVVUSDBfQ09ORklHX0tFWSIsImNvbmZpZ3VyZSIsImNvbnRyb2xsZXIiLCJjb250cm9sbGVycyIsInJlc291cmNlIiwiY2xhc3NOYW1lIiwicmVwbGFjZSIsImFkZEltcG9ydCIsImFkZFR5cGVJbXBvcnQiLCJkZWNvcmF0ZUNsYXNzIiwiZGVjb3JhdGVNZXRob2QiLCJhZGRDb25zdHJ1Y3RvclBhcmFtIiwicGFyYW1EZWNvcmF0b3JzIiwidHlwZU5hbWUiLCJpc1ByaXZhdGUiLCJpc1JlYWRvbmx5IiwicmVuZGVyIiwidGFyZ2V0RGlyIiwiYXV0aDBDb25maWciLCJnZXQiLCJiYXNlQ29uZmlnUGF0aCIsImpvaW4iLCJiYXNlRXhpc3RpbmciLCJyZWFkRmlsZSIsImJhc2VTdHJpcHBlZCIsInRyaW1FbmQiLCJiYXNlRnJhZyIsImF1dGgwQ29uZmlnWWFtbCIsIndyaXRlRmlsZSIsImRldkNvbmZpZ1BhdGgiLCJkZXZFeGlzdGluZyIsImRldlN0cmlwcGVkIiwiZGV2RnJhZ21lbnQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBdUphQTs7O2VBQUFBOzs7MEJBdkp1QjswQkFDZjt1QkFDeUM7a0VBQ3ZDO3dCQUNVO29DQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFaEMsTUFBTUMsVUFBVSxDQUFDQyxNQUF5QkEs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
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "AUTH0_CONFIG_KEY", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return AUTH0_CONFIG_KEY;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _index = require("../../domain/index.js");
|
|
12
|
-
const AUTH0_CONFIG_KEY = (0, _index.modelKey)("auth0-config");
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9hdXRoMC9tb2RlbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW9kZWxLZXkgfSBmcm9tIFwiLi4vLi4vZG9tYWluL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aDBDb25maWcge1xuXHRpc3N1ZXJCYXNlVXJsOiBzdHJpbmc7XG5cdGF1ZGllbmNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBBVVRIMF9DT05GSUdfS0VZID0gbW9kZWxLZXk8QXV0aDBDb25maWc+KFwiYXV0aDAtY29uZmlnXCIpO1xuIl0sIm5hbWVzIjpbIkFVVEgwX0NPTkZJR19LRVkiLCJtb2RlbEtleSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFPYUE7OztlQUFBQTs7O3VCQVBZO0FBT2xCLE1BQU1BLG1CQUFtQkMsSUFBQUEsZUFBUSxFQUFjIn0=
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "auth0ConfigYaml", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return auth0ConfigYaml;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
function auth0ConfigYaml(issuerBaseUrl, audience) {
|
|
12
|
-
// biome-ignore lint/suspicious/noTemplateCurlyInString: intentional YAML env-var placeholders
|
|
13
|
-
const issuer = issuerBaseUrl ?? "${AUTH0_ISSUER_BASE_URL}";
|
|
14
|
-
// biome-ignore lint/suspicious/noTemplateCurlyInString: intentional YAML env-var placeholders
|
|
15
|
-
const aud = audience ?? "${AUTH0_AUDIENCE}";
|
|
16
|
-
return `auth:\n discoveryUrl: ${issuer}\n audience: ${aud}\n`;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9hdXRoMC9wcm9kLWNvbmZpZy50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gYXV0aDBDb25maWdZYW1sKGlzc3VlckJhc2VVcmw/OiBzdHJpbmcsIGF1ZGllbmNlPzogc3RyaW5nKTogc3RyaW5nIHtcblx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub1RlbXBsYXRlQ3VybHlJblN0cmluZzogaW50ZW50aW9uYWwgWUFNTCBlbnYtdmFyIHBsYWNlaG9sZGVyc1xuXHRjb25zdCBpc3N1ZXIgPSBpc3N1ZXJCYXNlVXJsID8/IFwiJHtBVVRIMF9JU1NVRVJfQkFTRV9VUkx9XCI7XG5cdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9UZW1wbGF0ZUN1cmx5SW5TdHJpbmc6IGludGVudGlvbmFsIFlBTUwgZW52LXZhciBwbGFjZWhvbGRlcnNcblx0Y29uc3QgYXVkID0gYXVkaWVuY2UgPz8gXCIke0FVVEgwX0FVRElFTkNFfVwiO1xuXHRyZXR1cm4gYGF1dGg6XFxuICBkaXNjb3ZlcnlVcmw6ICR7aXNzdWVyfVxcbiAgYXVkaWVuY2U6ICR7YXVkfVxcbmA7XG59XG4iXSwibmFtZXMiOlsiYXV0aDBDb25maWdZYW1sIiwiaXNzdWVyQmFzZVVybCIsImF1ZGllbmNlIiwiaXNzdWVyIiwiYXVkIl0sIm1hcHBpbmdzIjoiOzs7OytCQUFnQkE7OztlQUFBQTs7O0FBQVQsU0FBU0EsZ0JBQWdCQyxhQUFzQixFQUFFQyxRQUFpQjtJQUN4RSw4RkFBOEY7SUFDOUYsTUFBTUMsU0FBU0YsaUJBQWlCO0lBQ2hDLDhGQUE4RjtJQUM5RixNQUFNRyxNQUFNRixZQUFZO0lBQ3hCLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRUMsT0FBTyxjQUFjLEVBQUVDLElBQUksRUFBRSxDQUFDO0FBQ2hFIn0=
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "cliCoreFeature", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return cliCoreFeature;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _promises = require("node:fs/promises");
|
|
12
|
-
const _nodepath = require("node:path");
|
|
13
|
-
const _scaffoldfilestemplate = require("./scaffold-files.template.js");
|
|
14
|
-
async function render(ctx) {
|
|
15
|
-
const { targetDir, projectName } = ctx;
|
|
16
|
-
await (0, _promises.mkdir)((0, _nodepath.join)(targetDir, ".vscode"), {
|
|
17
|
-
recursive: true
|
|
18
|
-
});
|
|
19
|
-
await (0, _promises.mkdir)((0, _nodepath.join)(targetDir, "projects", "app", "src"), {
|
|
20
|
-
recursive: true
|
|
21
|
-
});
|
|
22
|
-
await Promise.all([
|
|
23
|
-
(0, _promises.writeFile)((0, _nodepath.join)(targetDir, "package.json"), (0, _scaffoldfilestemplate.rootPackageJson)(projectName)),
|
|
24
|
-
(0, _promises.writeFile)((0, _nodepath.join)(targetDir, "tsconfig.json"), _scaffoldfilestemplate.TSCONFIG),
|
|
25
|
-
(0, _promises.writeFile)((0, _nodepath.join)(targetDir, "projects", "app", "package.json"), (0, _scaffoldfilestemplate.appPackageJson)(projectName)),
|
|
26
|
-
(0, _promises.writeFile)((0, _nodepath.join)(targetDir, "projects", "app", "src", "main.ts"), _scaffoldfilestemplate.MAIN_TS),
|
|
27
|
-
(0, _promises.writeFile)((0, _nodepath.join)(targetDir, ".vscode", "launch.json"), _scaffoldfilestemplate.VSCODE_LAUNCH_JSON),
|
|
28
|
-
(0, _promises.writeFile)((0, _nodepath.join)(targetDir, ".vscode", "settings.json"), (0, _scaffoldfilestemplate.vscodeSettingsJson)(projectName))
|
|
29
|
-
]);
|
|
30
|
-
return ctx;
|
|
31
|
-
}
|
|
32
|
-
const cliCoreFeature = {
|
|
33
|
-
name: "cli-core",
|
|
34
|
-
render
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9jbGktY29yZS9mZWF0dXJlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1rZGlyLCB3cml0ZUZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgRmVhdHVyZSwgU2NhZmZvbGRDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9pbmRleC5qc1wiO1xuaW1wb3J0IHtcblx0YXBwUGFja2FnZUpzb24sXG5cdE1BSU5fVFMsXG5cdHJvb3RQYWNrYWdlSnNvbixcblx0VFNDT05GSUcsXG5cdFZTQ09ERV9MQVVOQ0hfSlNPTixcblx0dnNjb2RlU2V0dGluZ3NKc29uLFxufSBmcm9tIFwiLi9zY2FmZm9sZC1maWxlcy50ZW1wbGF0ZS5qc1wiO1xuXG5hc3luYyBmdW5jdGlvbiByZW5kZXIoY3R4OiBTY2FmZm9sZENvbnRleHQpOiBQcm9taXNlPFNjYWZmb2xkQ29udGV4dD4ge1xuXHRjb25zdCB7IHRhcmdldERpciwgcHJvamVjdE5hbWUgfSA9IGN0eDtcblxuXHRhd2FpdCBta2Rpcihqb2luKHRhcmdldERpciwgXCIudnNjb2RlXCIpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblx0YXdhaXQgbWtkaXIoam9pbih0YXJnZXREaXIsIFwicHJvamVjdHNcIiwgXCJhcHBcIiwgXCJzcmNcIiksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG5cdGF3YWl0IFByb21pc2UuYWxsKFtcblx0XHR3cml0ZUZpbGUoam9pbih0YXJnZXREaXIsIFwicGFja2FnZS5qc29uXCIpLCByb290UGFja2FnZUpzb24ocHJvamVjdE5hbWUpKSxcblx0XHR3cml0ZUZpbGUoam9pbih0YXJnZXREaXIsIFwidHNjb25maWcuanNvblwiKSwgVFNDT05GSUcpLFxuXHRcdHdyaXRlRmlsZShqb2luKHRhcmdldERpciwgXCJwcm9qZWN0c1wiLCBcImFwcFwiLCBcInBhY2thZ2UuanNvblwiKSwgYXBwUGFja2FnZUpzb24ocHJvamVjdE5hbWUpKSxcblx0XHR3cml0ZUZpbGUoam9pbih0YXJnZXREaXIsIFwicHJvamVjdHNcIiwgXCJhcHBcIiwgXCJzcmNcIiwgXCJtYWluLnRzXCIpLCBNQUlOX1RTKSxcblx0XHR3cml0ZUZpbGUoam9pbih0YXJnZXREaXIsIFwiLnZzY29kZVwiLCBcImxhdW5jaC5qc29uXCIpLCBWU0NPREVfTEFVTkNIX0pTT04pLFxuXHRcdHdyaXRlRmlsZShqb2luKHRhcmdldERpciwgXCIudnNjb2RlXCIsIFwic2V0dGluZ3MuanNvblwiKSwgdnNjb2RlU2V0dGluZ3NKc29uKHByb2plY3ROYW1lKSksXG5cdF0pO1xuXG5cdHJldHVybiBjdHg7XG59XG5cbmV4cG9ydCBjb25zdCBjbGlDb3JlRmVhdHVyZTogRmVhdHVyZSA9IHtcblx0bmFtZTogXCJjbGktY29yZVwiLFxuXHRyZW5kZXIsXG59O1xuIl0sIm5hbWVzIjpbImNsaUNvcmVGZWF0dXJlIiwicmVuZGVyIiwiY3R4IiwidGFyZ2V0RGlyIiwicHJvamVjdE5hbWUiLCJta2RpciIsImpvaW4iLCJyZWN1cnNpdmUiLCJQcm9taXNlIiwiYWxsIiwid3JpdGVGaWxlIiwicm9vdFBhY2thZ2VKc29uIiwiVFNDT05GSUciLCJhcHBQYWNrYWdlSnNvbiIsIk1BSU5fVFMiLCJWU0NPREVfTEFVTkNIX0pTT04iLCJ2c2NvZGVTZXR0aW5nc0pzb24iLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7OytCQThCYUE7OztlQUFBQTs7OzBCQTlCb0I7MEJBQ1o7dUNBU2Q7QUFFUCxlQUFlQyxPQUFPQyxHQUFvQjtJQUN6QyxNQUFNLEVBQUVDLFNBQVMsRUFBRUMsV0FBVyxFQUFFLEdBQUdGO0lBRW5DLE1BQU1HLElBQUFBLGVBQUssRUFBQ0MsSUFBQUEsY0FBSSxFQUFDSCxXQUFXLFlBQVk7UUFBRUksV0FBVztJQUFLO0lBQzFELE1BQU1GLElBQUFBLGVBQUssRUFBQ0MsSUFBQUEsY0FBSSxFQUFDSCxXQUFXLFlBQVksT0FBTyxRQUFRO1FBQUVJLFdBQVc7SUFBSztJQUV6RSxNQUFNQyxRQUFRQyxHQUFHLENBQUM7UUFDakJDLElBQUFBLG1CQUFTLEVBQUNKLElBQUFBLGNBQUksRUFBQ0gsV0FBVyxpQkFBaUJRLElBQUFBLHNDQUFlLEVBQUNQO1FBQzNETSxJQUFBQSxtQkFBUyxFQUFDSixJQUFBQSxjQUFJLEVBQUNILFdBQVcsa0JBQWtCUywrQkFBUTtRQUNwREYsSUFBQUEsbUJBQVMsRUFBQ0osSUFBQUEsY0FBSSxFQUFDSCxXQUFXLFlBQVksT0FBTyxpQkFBaUJVLElBQUFBLHFDQUFjLEVBQUNUO1FBQzdFTSxJQUFBQSxtQkFBUyxFQUFDSixJQUFBQSxjQUFJLEVBQUNILFdBQVcsWUFBWSxPQUFPLE9BQU8sWUFBWVcsOEJBQU87UUFDdkVKLElBQUFBLG1CQUFTLEVBQUNKLElBQUFBLGNBQUksRUFBQ0gsV0FBVyxXQUFXLGdCQUFnQlkseUNBQWtCO1FBQ3ZFTCxJQUFBQSxtQkFBUyxFQUFDSixJQUFBQSxjQUFJLEVBQUNILFdBQVcsV0FBVyxrQkFBa0JhLElBQUFBLHlDQUFrQixFQUFDWjtLQUMxRTtJQUVELE9BQU9GO0FBQ1I7QUFFTyxNQUFNRixpQkFBMEI7SUFDdENpQixNQUFNO0lBQ05oQjtBQUNEIn0=
|