@decohere/create 0.0.1-dev.16 → 0.0.1-dev.18
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 +26 -5
- package/commonjs/src/models/compose.model.js +82 -0
- package/commonjs/src/models/config-yaml.model.js +34 -0
- package/commonjs/src/models/const.js +29 -0
- package/commonjs/src/models/container-image.model.js +88 -0
- package/commonjs/src/models/dev-container.model.js +73 -0
- package/commonjs/src/models/env-file.model.js +33 -0
- package/commonjs/src/models/gitignore.model.js +32 -0
- package/commonjs/src/models/launch-json.model.js +52 -0
- package/commonjs/src/models/package-json.model.js +64 -0
- package/commonjs/src/models/project.model.js +126 -0
- package/commonjs/src/models/source-file.js +6 -0
- package/commonjs/src/models/tsconfig.model.js +34 -0
- package/commonjs/src/models/vscode-settings.model.js +31 -0
- package/commonjs/src/services/scaffold.service.js +62 -0
- package/commonjs/src/webapi/create-api.js +169 -0
- package/commonjs/src/webapi/features/auth.feature.js +166 -0
- package/commonjs/src/webapi/features/auth0-cli.js +151 -0
- package/commonjs/src/webapi/features/database.feature.js +151 -0
- package/commonjs/src/webapi/features/finalize.feature.js +46 -0
- package/commonjs/src/webapi/features/postman.feature.js +309 -0
- package/commonjs/src/webapi/models/api-package-json.model.js +57 -0
- package/commonjs/src/webapi/models/auth-config.model.js +23 -0
- package/commonjs/src/webapi/models/controller-source-file.model.js +180 -0
- package/commonjs/src/webapi/models/main-source-file.model.js +132 -0
- package/commonjs/src/webapi/models/sample-files.model.js +60 -0
- package/commonjs/v1/cli.js +15 -0
- package/commonjs/v1/domain/class-model.js +106 -0
- package/commonjs/v1/domain/compose.model.js +74 -0
- package/commonjs/v1/domain/context.js +53 -0
- package/commonjs/v1/domain/devcontainer.model.js +116 -0
- package/commonjs/v1/domain/dockerfile.model.js +62 -0
- package/commonjs/v1/domain/feature.js +19 -0
- package/commonjs/v1/domain/import-map.js +74 -0
- package/commonjs/v1/domain/index.js +68 -0
- package/commonjs/v1/domain/prompt.js +45 -0
- package/commonjs/v1/domain/workflow.js +37 -0
- package/commonjs/v1/features/api-core/feature.js +103 -0
- package/commonjs/v1/features/api-core/hello-controller.model.js +100 -0
- package/commonjs/v1/features/api-core/main-ts.model.js +85 -0
- package/commonjs/v1/features/api-core/scaffold-files.template.js +158 -0
- package/commonjs/v1/features/auth0/auth0-cli.js +151 -0
- package/commonjs/v1/features/auth0/feature.js +187 -0
- package/commonjs/v1/features/auth0/models.js +14 -0
- package/commonjs/v1/features/auth0/prod-config.template.js +19 -0
- package/commonjs/v1/features/cli-core/feature.js +37 -0
- package/commonjs/v1/features/cli-core/scaffold-files.template.js +103 -0
- package/commonjs/v1/features/devcontainer/feature.js +38 -0
- package/commonjs/v1/features/finalize/feature.js +48 -0
- package/commonjs/v1/features/postgresql/feature.js +81 -0
- package/commonjs/v1/features/postgresql/models.js +14 -0
- package/commonjs/v1/features/postman/collection.template.js +80 -0
- package/commonjs/v1/features/postman/environment.template.js +24 -0
- package/commonjs/v1/features/postman/feature.js +192 -0
- package/commonjs/v1/features/typeorm/feature.js +66 -0
- package/commonjs/v1/features/typeorm/scaffold-files.template.js +80 -0
- package/commonjs/v1/scaffold.js +50 -0
- package/commonjs/v1/version.js +32 -0
- package/commonjs/v1/workflows/api.js +29 -0
- package/commonjs/v1/workflows/cli.js +19 -0
- package/es6/src/cli.js +26 -5
- package/es6/src/models/compose.model.js +77 -0
- package/es6/src/models/config-yaml.model.js +30 -0
- package/es6/src/models/const.js +19 -0
- package/es6/src/models/container-image.model.js +84 -0
- package/es6/src/models/dev-container.model.js +68 -0
- package/es6/src/models/env-file.model.js +29 -0
- package/es6/src/models/gitignore.model.js +22 -0
- package/es6/src/models/launch-json.model.js +42 -0
- package/es6/src/models/package-json.model.js +60 -0
- package/es6/src/models/project.model.js +111 -0
- package/es6/src/models/source-file.js +3 -0
- package/es6/src/models/tsconfig.model.js +24 -0
- package/es6/src/models/vscode-settings.model.js +21 -0
- package/es6/src/services/scaffold.service.js +52 -0
- package/es6/src/webapi/create-api.js +151 -0
- package/es6/src/webapi/features/auth.feature.js +115 -0
- package/es6/src/webapi/features/auth0-cli.js +116 -0
- package/es6/src/webapi/features/database.feature.js +141 -0
- package/es6/src/webapi/features/finalize.feature.js +36 -0
- package/es6/src/webapi/features/postman.feature.js +258 -0
- package/es6/src/webapi/models/api-package-json.model.js +52 -0
- package/es6/src/webapi/models/auth-config.model.js +19 -0
- package/es6/src/webapi/models/controller-source-file.model.js +171 -0
- package/es6/src/webapi/models/main-source-file.model.js +128 -0
- package/es6/src/webapi/models/sample-files.model.js +42 -0
- package/es6/v1/cli.js +11 -0
- package/es6/v1/domain/class-model.js +104 -0
- package/es6/v1/domain/compose.model.js +61 -0
- package/es6/v1/domain/context.js +37 -0
- package/es6/v1/domain/devcontainer.model.js +104 -0
- package/es6/v1/domain/dockerfile.model.js +52 -0
- package/es6/v1/domain/feature.js +9 -0
- package/es6/v1/domain/import-map.js +64 -0
- package/es6/v1/domain/index.js +11 -0
- package/es6/v1/domain/prompt.js +27 -0
- package/es6/v1/domain/workflow.js +24 -0
- package/es6/v1/features/api-core/feature.js +93 -0
- package/es6/v1/features/api-core/hello-controller.model.js +96 -0
- package/es6/v1/features/api-core/main-ts.model.js +74 -0
- package/es6/v1/features/api-core/scaffold-files.template.js +116 -0
- package/es6/v1/features/auth0/auth0-cli.js +116 -0
- package/es6/v1/features/auth0/feature.js +136 -0
- package/es6/v1/features/auth0/models.js +4 -0
- package/es6/v1/features/auth0/prod-config.template.js +9 -0
- package/es6/v1/features/cli-core/feature.js +27 -0
- package/es6/v1/features/cli-core/scaffold-files.template.js +73 -0
- package/es6/v1/features/devcontainer/feature.js +28 -0
- package/es6/v1/features/finalize/feature.js +38 -0
- package/es6/v1/features/postgresql/feature.js +71 -0
- package/es6/v1/features/postgresql/models.js +4 -0
- package/es6/v1/features/postman/collection.template.js +70 -0
- package/es6/v1/features/postman/environment.template.js +14 -0
- package/es6/v1/features/postman/feature.js +141 -0
- package/es6/v1/features/typeorm/feature.js +56 -0
- package/es6/v1/features/typeorm/scaffold-files.template.js +56 -0
- package/es6/v1/scaffold.js +40 -0
- package/es6/v1/version.js +22 -0
- package/es6/v1/workflows/api.js +25 -0
- package/es6/v1/workflows/cli.js +9 -0
- package/package.json +2 -2
- package/types/src/models/compose.model.d.ts +32 -0
- package/types/src/models/config-yaml.model.d.ts +16 -0
- package/types/src/models/const.d.ts +17 -0
- package/types/src/models/container-image.model.d.ts +15 -0
- package/types/src/models/dev-container.model.d.ts +21 -0
- package/types/src/models/env-file.model.d.ts +14 -0
- package/types/src/models/gitignore.model.d.ts +6 -0
- package/types/src/models/launch-json.model.d.ts +5 -0
- package/types/src/models/package-json.model.d.ts +18 -0
- package/types/src/models/project.model.d.ts +55 -0
- package/types/src/models/source-file.d.ts +11 -0
- package/types/src/models/tsconfig.model.d.ts +5 -0
- package/types/src/models/vscode-settings.model.d.ts +7 -0
- package/types/src/services/scaffold.service.d.ts +22 -0
- package/types/src/webapi/create-api.d.ts +7 -0
- package/types/src/webapi/features/auth.feature.d.ts +7 -0
- package/types/src/webapi/features/auth0-cli.d.ts +22 -0
- package/types/src/webapi/features/database.feature.d.ts +5 -0
- package/types/src/webapi/features/finalize.feature.d.ts +2 -0
- package/types/src/webapi/features/postman.feature.d.ts +7 -0
- package/types/src/webapi/models/api-package-json.model.d.ts +17 -0
- package/types/src/webapi/models/auth-config.model.d.ts +18 -0
- package/types/src/webapi/models/controller-source-file.model.d.ts +42 -0
- package/types/src/webapi/models/main-source-file.model.d.ts +36 -0
- package/types/src/webapi/models/sample-files.model.d.ts +7 -0
- package/types/v1/cli.d.ts +2 -0
- package/types/v1/domain/class-model.d.ts +70 -0
- package/types/v1/domain/compose.model.d.ts +25 -0
- package/types/v1/domain/context.d.ts +36 -0
- package/types/v1/domain/devcontainer.model.d.ts +35 -0
- package/types/v1/domain/dockerfile.model.d.ts +11 -0
- package/types/v1/domain/feature.d.ts +29 -0
- package/types/v1/domain/import-map.d.ts +24 -0
- package/types/v1/domain/index.d.ts +12 -0
- package/types/v1/domain/prompt.d.ts +2 -0
- package/types/v1/domain/workflow.d.ts +14 -0
- package/types/v1/features/api-core/feature.d.ts +2 -0
- package/types/v1/features/api-core/hello-controller.model.d.ts +9 -0
- package/types/v1/features/api-core/main-ts.model.d.ts +31 -0
- package/types/v1/features/api-core/scaffold-files.template.d.ts +10 -0
- package/types/v1/features/auth0/auth0-cli.d.ts +22 -0
- package/types/v1/features/auth0/feature.d.ts +2 -0
- package/types/v1/features/auth0/models.d.ts +5 -0
- package/types/v1/features/auth0/prod-config.template.d.ts +1 -0
- package/types/v1/features/cli-core/feature.d.ts +2 -0
- package/types/v1/features/cli-core/scaffold-files.template.d.ts +6 -0
- package/types/v1/features/devcontainer/feature.d.ts +2 -0
- package/types/v1/features/finalize/feature.d.ts +2 -0
- package/types/v1/features/postgresql/feature.d.ts +2 -0
- package/types/v1/features/postgresql/models.d.ts +6 -0
- package/types/v1/features/postman/collection.template.d.ts +1 -0
- package/types/v1/features/postman/environment.template.d.ts +6 -0
- package/types/v1/features/postman/feature.d.ts +2 -0
- package/types/v1/features/typeorm/feature.d.ts +2 -0
- package/types/v1/features/typeorm/scaffold-files.template.d.ts +9 -0
- package/types/v1/scaffold.d.ts +3 -0
- package/types/v1/version.d.ts +2 -0
- package/types/v1/workflows/api.d.ts +8 -0
- package/types/v1/workflows/cli.d.ts +1 -0
- package/commonjs/src/scaffold.js +0 -89
- package/commonjs/src/templates.js +0 -305
- package/es6/src/scaffold.js +0 -79
- package/es6/src/templates.js +0 -245
- package/types/src/scaffold.d.ts +0 -6
- package/types/src/templates.d.ts +0 -20
|
@@ -0,0 +1,19 @@
|
|
|
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=
|
|
@@ -0,0 +1,37 @@
|
|
|
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=
|
|
@@ -0,0 +1,103 @@
|
|
|
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 MAIN_TS () {
|
|
13
|
+
return MAIN_TS;
|
|
14
|
+
},
|
|
15
|
+
get TSCONFIG () {
|
|
16
|
+
return TSCONFIG;
|
|
17
|
+
},
|
|
18
|
+
get VSCODE_LAUNCH_JSON () {
|
|
19
|
+
return VSCODE_LAUNCH_JSON;
|
|
20
|
+
},
|
|
21
|
+
get appPackageJson () {
|
|
22
|
+
return appPackageJson;
|
|
23
|
+
},
|
|
24
|
+
get rootPackageJson () {
|
|
25
|
+
return rootPackageJson;
|
|
26
|
+
},
|
|
27
|
+
get vscodeSettingsJson () {
|
|
28
|
+
return vscodeSettingsJson;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
const _version = require("../../version.js");
|
|
32
|
+
const TSCONFIG = JSON.stringify({
|
|
33
|
+
compilerOptions: {
|
|
34
|
+
target: "ES2022",
|
|
35
|
+
module: "NodeNext",
|
|
36
|
+
moduleResolution: "NodeNext",
|
|
37
|
+
strict: true,
|
|
38
|
+
skipLibCheck: true
|
|
39
|
+
},
|
|
40
|
+
include: [
|
|
41
|
+
"projects"
|
|
42
|
+
]
|
|
43
|
+
}, null, 2);
|
|
44
|
+
const VSCODE_LAUNCH_JSON = JSON.stringify({
|
|
45
|
+
version: "0.2.0",
|
|
46
|
+
configurations: [
|
|
47
|
+
{
|
|
48
|
+
name: "Build",
|
|
49
|
+
type: "node",
|
|
50
|
+
request: "launch",
|
|
51
|
+
runtimeExecutable: "pnpm",
|
|
52
|
+
runtimeArgs: [
|
|
53
|
+
"build"
|
|
54
|
+
],
|
|
55
|
+
console: "integratedTerminal",
|
|
56
|
+
cwd: `\${workspaceFolder}`
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "Serve / Dev",
|
|
60
|
+
type: "node",
|
|
61
|
+
request: "launch",
|
|
62
|
+
runtimeExecutable: "pnpm",
|
|
63
|
+
runtimeArgs: [
|
|
64
|
+
"dev"
|
|
65
|
+
],
|
|
66
|
+
console: "integratedTerminal",
|
|
67
|
+
cwd: `\${workspaceFolder}`
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}, null, 2);
|
|
71
|
+
function rootPackageJson(name) {
|
|
72
|
+
return JSON.stringify({
|
|
73
|
+
name,
|
|
74
|
+
version: "0.0.1",
|
|
75
|
+
type: "module",
|
|
76
|
+
scripts: {
|
|
77
|
+
build: "forge build",
|
|
78
|
+
"build:watch": "forge build --watch",
|
|
79
|
+
dev: "flux serve"
|
|
80
|
+
},
|
|
81
|
+
devDependencies: {
|
|
82
|
+
"@decohere/terminal": _version.CREATE_VERSION,
|
|
83
|
+
typescript: "^6.0.3"
|
|
84
|
+
}
|
|
85
|
+
}, null, 2);
|
|
86
|
+
}
|
|
87
|
+
function appPackageJson(name) {
|
|
88
|
+
return JSON.stringify({
|
|
89
|
+
name: `@${name}/app`,
|
|
90
|
+
version: "0.0.1",
|
|
91
|
+
type: "module",
|
|
92
|
+
main: "src/main.ts"
|
|
93
|
+
}, null, 2);
|
|
94
|
+
}
|
|
95
|
+
function vscodeSettingsJson(name) {
|
|
96
|
+
return JSON.stringify({
|
|
97
|
+
"window.title": `${name}\${separator}\${activeEditorShort}`,
|
|
98
|
+
"window.titleSeparator": " | "
|
|
99
|
+
}, null, 2);
|
|
100
|
+
}
|
|
101
|
+
const MAIN_TS = `console.log("Hello from Decohere!");\n`;
|
|
102
|
+
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9jbGktY29yZS9zY2FmZm9sZC1maWxlcy50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDUkVBVEVfVkVSU0lPTiB9IGZyb20gXCIuLi8uLi92ZXJzaW9uLmpzXCI7XG5cbmV4cG9ydCBjb25zdCBUU0NPTkZJRyA9IEpTT04uc3RyaW5naWZ5KFxuXHR7XG5cdFx0Y29tcGlsZXJPcHRpb25zOiB7XG5cdFx0XHR0YXJnZXQ6IFwiRVMyMDIyXCIsXG5cdFx0XHRtb2R1bGU6IFwiTm9kZU5leHRcIixcblx0XHRcdG1vZHVsZVJlc29sdXRpb246IFwiTm9kZU5leHRcIixcblx0XHRcdHN0cmljdDogdHJ1ZSxcblx0XHRcdHNraXBMaWJDaGVjazogdHJ1ZSxcblx0XHR9LFxuXHRcdGluY2x1ZGU6IFtcInByb2plY3RzXCJdLFxuXHR9LFxuXHRudWxsLFxuXHQyLFxuKTtcblxuZXhwb3J0IGNvbnN0IFZTQ09ERV9MQVVOQ0hfSlNPTiA9IEpTT04uc3RyaW5naWZ5KFxuXHR7XG5cdFx0dmVyc2lvbjogXCIwLjIuMFwiLFxuXHRcdGNvbmZpZ3VyYXRpb25zOiBbXG5cdFx0XHR7XG5cdFx0XHRcdG5hbWU6IFwiQnVpbGRcIixcblx0XHRcdFx0dHlwZTogXCJub2RlXCIsXG5cdFx0XHRcdHJlcXVlc3Q6IFwibGF1bmNoXCIsXG5cdFx0XHRcdHJ1bnRpbWVFeGVjdXRhYmxlOiBcInBucG1cIixcblx0XHRcdFx0cnVudGltZUFyZ3M6IFtcImJ1aWxkXCJdLFxuXHRcdFx0XHRjb25zb2xlOiBcImludGVncmF0ZWRUZXJtaW5hbFwiLFxuXHRcdFx0XHRjd2Q6IGBcXCR7d29ya3NwYWNlRm9sZGVyfWAsXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRuYW1lOiBcIlNlcnZlIC8gRGV2XCIsXG5cdFx0XHRcdHR5cGU6IFwibm9kZVwiLFxuXHRcdFx0XHRyZXF1ZXN0OiBcImxhdW5jaFwiLFxuXHRcdFx0XHRydW50aW1lRXhlY3V0YWJsZTogXCJwbnBtXCIsXG5cdFx0XHRcdHJ1bnRpbWVBcmdzOiBbXCJkZXZcIl0sXG5cdFx0XHRcdGNvbnNvbGU6IFwiaW50ZWdyYXRlZFRlcm1pbmFsXCIsXG5cdFx0XHRcdGN3ZDogYFxcJHt3b3Jrc3BhY2VGb2xkZXJ9YCxcblx0XHRcdH0sXG5cdFx0XSxcblx0fSxcblx0bnVsbCxcblx0Mixcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiByb290UGFja2FnZUpzb24obmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuXHRcdHtcblx0XHRcdG5hbWUsXG5cdFx0XHR2ZXJzaW9uOiBcIjAuMC4xXCIsXG5cdFx0XHR0eXBlOiBcIm1vZHVsZVwiLFxuXHRcdFx0c2NyaXB0czoge1xuXHRcdFx0XHRidWlsZDogXCJmb3JnZSBidWlsZFwiLFxuXHRcdFx0XHRcImJ1aWxkOndhdGNoXCI6IFwiZm9yZ2UgYnVpbGQgLS13YXRjaFwiLFxuXHRcdFx0XHRkZXY6IFwiZmx1eCBzZXJ2ZVwiLFxuXHRcdFx0fSxcblx0XHRcdGRldkRlcGVuZGVuY2llczoge1xuXHRcdFx0XHRcIkBkZWNvaGVyZS90ZXJtaW5hbFwiOiBDUkVBVEVfVkVSU0lPTixcblx0XHRcdFx0dHlwZXNjcmlwdDogXCJeNi4wLjNcIixcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRudWxsLFxuXHRcdDIsXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBQYWNrYWdlSnNvbihuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkoXG5cdFx0e1xuXHRcdFx0bmFtZTogYEAke25hbWV9L2FwcGAsXG5cdFx0XHR2ZXJzaW9uOiBcIjAuMC4xXCIsXG5cdFx0XHR0eXBlOiBcIm1vZHVsZVwiLFxuXHRcdFx0bWFpbjogXCJzcmMvbWFpbi50c1wiLFxuXHRcdH0sXG5cdFx0bnVsbCxcblx0XHQyLFxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdnNjb2RlU2V0dGluZ3NKc29uKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBKU09OLnN0cmluZ2lmeShcblx0XHR7XG5cdFx0XHRcIndpbmRvdy50aXRsZVwiOiBgJHtuYW1lfVxcJHtzZXBhcmF0b3J9XFwke2FjdGl2ZUVkaXRvclNob3J0fWAsXG5cdFx0XHRcIndpbmRvdy50aXRsZVNlcGFyYXRvclwiOiBcIiB8IFwiLFxuXHRcdH0sXG5cdFx0bnVsbCxcblx0XHQyLFxuXHQpO1xufVxuXG5leHBvcnQgY29uc3QgTUFJTl9UUyA9IGBjb25zb2xlLmxvZyhcIkhlbGxvIGZyb20gRGVjb2hlcmUhXCIpO1xcbmA7XG4iXSwibmFtZXMiOlsiTUFJTl9UUyIsIlRTQ09ORklHIiwiVlNDT0RFX0xBVU5DSF9KU09OIiwiYXBwUGFja2FnZUpzb24iLCJyb290UGFja2FnZUpzb24iLCJ2c2NvZGVTZXR0aW5nc0pzb24iLCJKU09OIiwic3RyaW5naWZ5IiwiY29tcGlsZXJPcHRpb25zIiwidGFyZ2V0IiwibW9kdWxlIiwibW9kdWxlUmVzb2x1dGlvbiIsInN0cmljdCIsInNraXBMaWJDaGVjayIsImluY2x1ZGUiLCJ2ZXJzaW9uIiwiY29uZmlndXJhdGlvbnMiLCJuYW1lIiwidHlwZSIsInJlcXVlc3QiLCJydW50aW1lRXhlY3V0YWJsZSIsInJ1bnRpbWVBcmdzIiwiY29uc29sZSIsImN3ZCIsInNjcmlwdHMiLCJidWlsZCIsImRldiIsImRldkRlcGVuZGVuY2llcyIsIkNSRUFURV9WRVJTSU9OIiwidHlwZXNjcmlwdCIsIm1haW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBMEZhQTtlQUFBQTs7UUF4RkFDO2VBQUFBOztRQWVBQztlQUFBQTs7UUFpREdDO2VBQUFBOztRQXJCQUM7ZUFBQUE7O1FBa0NBQztlQUFBQTs7O3lCQS9FZTtBQUV4QixNQUFNSixXQUFXSyxLQUFLQyxTQUFTLENBQ3JDO0lBQ0NDLGlCQUFpQjtRQUNoQkMsUUFBUTtRQUNSQyxRQUFRO1FBQ1JDLGtCQUFrQjtRQUNsQkMsUUFBUTtRQUNSQyxjQUFjO0lBQ2Y7SUFDQUMsU0FBUztRQUFDO0tBQVc7QUFDdEIsR0FDQSxNQUNBO0FBR00sTUFBTVoscUJBQXFCSSxLQUFLQyxTQUFTLENBQy9DO0lBQ0NRLFNBQVM7SUFDVEMsZ0JBQWdCO1FBQ2Y7WUFDQ0MsTUFBTTtZQUNOQyxNQUFNO1lBQ05DLFNBQVM7WUFDVEMsbUJBQW1CO1lBQ25CQyxhQUFhO2dCQUFDO2FBQVE7WUFDdEJDLFNBQVM7WUFDVEMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQzNCO1FBQ0E7WUFDQ04sTUFBTTtZQUNOQyxNQUFNO1lBQ05DLFNBQVM7WUFDVEMsbUJBQW1CO1lBQ25CQyxhQUFhO2dCQUFDO2FBQU07WUFDcEJDLFNBQVM7WUFDVEMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQzNCO0tBQ0E7QUFDRixHQUNBLE1BQ0E7QUFHTSxTQUFTbkIsZ0JBQWdCYSxJQUFZO0lBQzNDLE9BQU9YLEtBQUtDLFNBQVMsQ0FDcEI7UUFDQ1U7UUFDQUYsU0FBUztRQUNURyxNQUFNO1FBQ05NLFNBQVM7WUFDUkMsT0FBTztZQUNQLGVBQWU7WUFDZkMsS0FBSztRQUNOO1FBQ0FDLGlCQUFpQjtZQUNoQixzQkFBc0JDLHVCQUFjO1lBQ3BDQyxZQUFZO1FBQ2I7SUFDRCxHQUNBLE1BQ0E7QUFFRjtBQUVPLFNBQVMxQixlQUFlYyxJQUFZO0lBQzFDLE9BQU9YLEtBQUtDLFNBQVMsQ0FDcEI7UUFDQ1UsTUFBTSxDQUFDLENBQUMsRUFBRUEsS0FBSyxJQUFJLENBQUM7UUFDcEJGLFNBQVM7UUFDVEcsTUFBTTtRQUNOWSxNQUFNO0lBQ1AsR0FDQSxNQUNBO0FBRUY7QUFFTyxTQUFTekIsbUJBQW1CWSxJQUFZO0lBQzlDLE9BQU9YLEtBQUtDLFNBQVMsQ0FDcEI7UUFDQyxnQkFBZ0IsR0FBR1UsS0FBSyxrQ0FBa0MsQ0FBQztRQUMzRCx5QkFBeUI7SUFDMUIsR0FDQSxNQUNBO0FBRUY7QUFFTyxNQUFNakIsVUFBVSxDQUFDLHNDQUFzQyxDQUFDIn0=
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "devcontainerFeature", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return devcontainerFeature;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _promises = require("node:fs/promises");
|
|
12
|
+
const _nodepath = require("node:path");
|
|
13
|
+
const _composemodel = require("../../domain/compose.model.js");
|
|
14
|
+
const _devcontainermodel = require("../../domain/devcontainer.model.js");
|
|
15
|
+
async function render(ctx) {
|
|
16
|
+
const model = ctx.models.get(_devcontainermodel.DEVCONTAINER_KEY);
|
|
17
|
+
if (!model) return ctx;
|
|
18
|
+
const dir = (0, _nodepath.join)(ctx.targetDir, ".devcontainer");
|
|
19
|
+
await (0, _promises.mkdir)(dir, {
|
|
20
|
+
recursive: true
|
|
21
|
+
});
|
|
22
|
+
await (0, _promises.writeFile)((0, _nodepath.join)(dir, "devcontainer.json"), model.render());
|
|
23
|
+
const compose = ctx.models.get(_composemodel.COMPOSE_KEY);
|
|
24
|
+
if (compose) {
|
|
25
|
+
await (0, _promises.writeFile)((0, _nodepath.join)(dir, "docker-compose.yml"), compose.render());
|
|
26
|
+
const dockerfile = model.dockerfile;
|
|
27
|
+
if (dockerfile) {
|
|
28
|
+
await (0, _promises.writeFile)((0, _nodepath.join)(dir, "Dockerfile"), dockerfile.render());
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return ctx;
|
|
32
|
+
}
|
|
33
|
+
const devcontainerFeature = {
|
|
34
|
+
name: "devcontainer",
|
|
35
|
+
render
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9kZXZjb250YWluZXIvZmVhdHVyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBta2Rpciwgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBDT01QT1NFX0tFWSB9IGZyb20gXCIuLi8uLi9kb21haW4vY29tcG9zZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgREVWQ09OVEFJTkVSX0tFWSB9IGZyb20gXCIuLi8uLi9kb21haW4vZGV2Y29udGFpbmVyLm1vZGVsLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmUsIFNjYWZmb2xkQ29udGV4dCB9IGZyb20gXCIuLi8uLi9kb21haW4vaW5kZXguanNcIjtcblxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyKGN0eDogU2NhZmZvbGRDb250ZXh0KTogUHJvbWlzZTxTY2FmZm9sZENvbnRleHQ+IHtcblx0Y29uc3QgbW9kZWwgPSBjdHgubW9kZWxzLmdldChERVZDT05UQUlORVJfS0VZKTtcblx0aWYgKCFtb2RlbCkgcmV0dXJuIGN0eDtcblxuXHRjb25zdCBkaXIgPSBqb2luKGN0eC50YXJnZXREaXIsIFwiLmRldmNvbnRhaW5lclwiKTtcblx0YXdhaXQgbWtkaXIoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblx0YXdhaXQgd3JpdGVGaWxlKGpvaW4oZGlyLCBcImRldmNvbnRhaW5lci5qc29uXCIpLCBtb2RlbC5yZW5kZXIoKSk7XG5cblx0Y29uc3QgY29tcG9zZSA9IGN0eC5tb2RlbHMuZ2V0KENPTVBPU0VfS0VZKTtcblx0aWYgKGNvbXBvc2UpIHtcblx0XHRhd2FpdCB3cml0ZUZpbGUoam9pbihkaXIsIFwiZG9ja2VyLWNvbXBvc2UueW1sXCIpLCBjb21wb3NlLnJlbmRlcigpKTtcblx0XHRjb25zdCBkb2NrZXJmaWxlID0gbW9kZWwuZG9ja2VyZmlsZTtcblx0XHRpZiAoZG9ja2VyZmlsZSkge1xuXHRcdFx0YXdhaXQgd3JpdGVGaWxlKGpvaW4oZGlyLCBcIkRvY2tlcmZpbGVcIiksIGRvY2tlcmZpbGUucmVuZGVyKCkpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjdHg7XG59XG5cbmV4cG9ydCBjb25zdCBkZXZjb250YWluZXJGZWF0dXJlOiBGZWF0dXJlID0ge1xuXHRuYW1lOiBcImRldmNvbnRhaW5lclwiLFxuXHRyZW5kZXIsXG59O1xuIl0sIm5hbWVzIjpbImRldmNvbnRhaW5lckZlYXR1cmUiLCJyZW5kZXIiLCJjdHgiLCJtb2RlbCIsIm1vZGVscyIsImdldCIsIkRFVkNPTlRBSU5FUl9LRVkiLCJkaXIiLCJqb2luIiwidGFyZ2V0RGlyIiwibWtkaXIiLCJyZWN1cnNpdmUiLCJ3cml0ZUZpbGUiLCJjb21wb3NlIiwiQ09NUE9TRV9LRVkiLCJkb2NrZXJmaWxlIiwibmFtZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkEwQmFBOzs7ZUFBQUE7OzswQkExQm9COzBCQUNaOzhCQUNPO21DQUNLO0FBR2pDLGVBQWVDLE9BQU9DLEdBQW9CO0lBQ3pDLE1BQU1DLFFBQVFELElBQUlFLE1BQU0sQ0FBQ0MsR0FBRyxDQUFDQyxtQ0FBZ0I7SUFDN0MsSUFBSSxDQUFDSCxPQUFPLE9BQU9EO0lBRW5CLE1BQU1LLE1BQU1DLElBQUFBLGNBQUksRUFBQ04sSUFBSU8sU0FBUyxFQUFFO0lBQ2hDLE1BQU1DLElBQUFBLGVBQUssRUFBQ0gsS0FBSztRQUFFSSxXQUFXO0lBQUs7SUFDbkMsTUFBTUMsSUFBQUEsbUJBQVMsRUFBQ0osSUFBQUEsY0FBSSxFQUFDRCxLQUFLLHNCQUFzQkosTUFBTUYsTUFBTTtJQUU1RCxNQUFNWSxVQUFVWCxJQUFJRSxNQUFNLENBQUNDLEdBQUcsQ0FBQ1MseUJBQVc7SUFDMUMsSUFBSUQsU0FBUztRQUNaLE1BQU1ELElBQUFBLG1CQUFTLEVBQUNKLElBQUFBLGNBQUksRUFBQ0QsS0FBSyx1QkFBdUJNLFFBQVFaLE1BQU07UUFDL0QsTUFBTWMsYUFBYVosTUFBTVksVUFBVTtRQUNuQyxJQUFJQSxZQUFZO1lBQ2YsTUFBTUgsSUFBQUEsbUJBQVMsRUFBQ0osSUFBQUEsY0FBSSxFQUFDRCxLQUFLLGVBQWVRLFdBQVdkLE1BQU07UUFDM0Q7SUFDRDtJQUVBLE9BQU9DO0FBQ1I7QUFFTyxNQUFNRixzQkFBK0I7SUFDM0NnQixNQUFNO0lBQ05mO0FBQ0QifQ==
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "finalizeFeature", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return finalizeFeature;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _nodepath = require("node:path");
|
|
12
|
+
const _interop = require("@decohere/nexus/interop");
|
|
13
|
+
const _index = require("../../domain/index.js");
|
|
14
|
+
async function finalize(ctx) {
|
|
15
|
+
let pm = (0, _interop.detectPackageManager)(ctx.targetDir);
|
|
16
|
+
if (pm == null) {
|
|
17
|
+
pm = await (0, _interop.promptForPackageManager)();
|
|
18
|
+
}
|
|
19
|
+
let shouldInstall;
|
|
20
|
+
if (ctx.opts.yes) {
|
|
21
|
+
shouldInstall = true;
|
|
22
|
+
} else {
|
|
23
|
+
const answer = await (0, _index.ask)("\nInstall dependencies now? [yes/no] (yes): ", "yes");
|
|
24
|
+
shouldInstall = answer.toLowerCase() !== "no";
|
|
25
|
+
}
|
|
26
|
+
if (shouldInstall) {
|
|
27
|
+
console.log(`\nScaffolded ${ctx.projectName}. Installing dependencies...\n`);
|
|
28
|
+
await pm.install({
|
|
29
|
+
cwd: ctx.targetDir
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
console.log(`\nDone! ${shouldInstall ? "Next" : "To get started:"} steps:\n`);
|
|
33
|
+
if ((0, _nodepath.basename)(ctx.targetDir) !== ctx.targetDir) {
|
|
34
|
+
console.log(` cd ${ctx.projectName}`);
|
|
35
|
+
}
|
|
36
|
+
if (!shouldInstall) {
|
|
37
|
+
console.log(` ${pm.name} install`);
|
|
38
|
+
}
|
|
39
|
+
console.log(" pnpm build # forge build");
|
|
40
|
+
console.log(" pnpm dev # flux serve\n");
|
|
41
|
+
return ctx;
|
|
42
|
+
}
|
|
43
|
+
const finalizeFeature = {
|
|
44
|
+
name: "finalize",
|
|
45
|
+
finalize
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9maW5hbGl6ZS9mZWF0dXJlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgZGV0ZWN0UGFja2FnZU1hbmFnZXIsIHByb21wdEZvclBhY2thZ2VNYW5hZ2VyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pbnRlcm9wXCI7XG5pbXBvcnQgeyBhc2ssIHR5cGUgRmVhdHVyZSwgdHlwZSBTY2FmZm9sZENvbnRleHQgfSBmcm9tIFwiLi4vLi4vZG9tYWluL2luZGV4LmpzXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbmFsaXplKGN0eDogU2NhZmZvbGRDb250ZXh0KTogUHJvbWlzZTxTY2FmZm9sZENvbnRleHQ+IHtcblx0bGV0IHBtID0gZGV0ZWN0UGFja2FnZU1hbmFnZXIoY3R4LnRhcmdldERpcik7XG5cdGlmIChwbSA9PSBudWxsKSB7XG5cdFx0cG0gPSBhd2FpdCBwcm9tcHRGb3JQYWNrYWdlTWFuYWdlcigpO1xuXHR9XG5cblx0bGV0IHNob3VsZEluc3RhbGw6IGJvb2xlYW47XG5cdGlmIChjdHgub3B0cy55ZXMpIHtcblx0XHRzaG91bGRJbnN0YWxsID0gdHJ1ZTtcblx0fSBlbHNlIHtcblx0XHRjb25zdCBhbnN3ZXIgPSBhd2FpdCBhc2soXCJcXG5JbnN0YWxsIGRlcGVuZGVuY2llcyBub3c/IFt5ZXMvbm9dICh5ZXMpOiBcIiwgXCJ5ZXNcIik7XG5cdFx0c2hvdWxkSW5zdGFsbCA9IGFuc3dlci50b0xvd2VyQ2FzZSgpICE9PSBcIm5vXCI7XG5cdH1cblxuXHRpZiAoc2hvdWxkSW5zdGFsbCkge1xuXHRcdGNvbnNvbGUubG9nKGBcXG5TY2FmZm9sZGVkICR7Y3R4LnByb2plY3ROYW1lfS4gSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuLi5cXG5gKTtcblx0XHRhd2FpdCBwbS5pbnN0YWxsKHsgY3dkOiBjdHgudGFyZ2V0RGlyIH0pO1xuXHR9XG5cblx0Y29uc29sZS5sb2coYFxcbkRvbmUhICR7c2hvdWxkSW5zdGFsbCA/IFwiTmV4dFwiIDogXCJUbyBnZXQgc3RhcnRlZDpcIn0gc3RlcHM6XFxuYCk7XG5cdGlmIChiYXNlbmFtZShjdHgudGFyZ2V0RGlyKSAhPT0gY3R4LnRhcmdldERpcikge1xuXHRcdGNvbnNvbGUubG9nKGAgIGNkICR7Y3R4LnByb2plY3ROYW1lfWApO1xuXHR9XG5cdGlmICghc2hvdWxkSW5zdGFsbCkge1xuXHRcdGNvbnNvbGUubG9nKGAgICR7cG0ubmFtZX0gaW5zdGFsbGApO1xuXHR9XG5cdGNvbnNvbGUubG9nKFwiICBwbnBtIGJ1aWxkICAgICAjIGZvcmdlIGJ1aWxkXCIpO1xuXHRjb25zb2xlLmxvZyhcIiAgcG5wbSBkZXYgICAgICAgIyBmbHV4IHNlcnZlXFxuXCIpO1xuXHRyZXR1cm4gY3R4O1xufVxuXG5leHBvcnQgY29uc3QgZmluYWxpemVGZWF0dXJlOiBGZWF0dXJlID0ge1xuXHRuYW1lOiBcImZpbmFsaXplXCIsXG5cdGZpbmFsaXplLFxufTtcbiJdLCJuYW1lcyI6WyJmaW5hbGl6ZUZlYXR1cmUiLCJmaW5hbGl6ZSIsImN0eCIsInBtIiwiZGV0ZWN0UGFja2FnZU1hbmFnZXIiLCJ0YXJnZXREaXIiLCJwcm9tcHRGb3JQYWNrYWdlTWFuYWdlciIsInNob3VsZEluc3RhbGwiLCJvcHRzIiwieWVzIiwiYW5zd2VyIiwiYXNrIiwidG9Mb3dlckNhc2UiLCJjb25zb2xlIiwibG9nIiwicHJvamVjdE5hbWUiLCJpbnN0YWxsIiwiY3dkIiwiYmFzZW5hbWUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7OytCQW1DYUE7OztlQUFBQTs7OzBCQW5DWTt5QkFDcUM7dUJBQ047QUFFeEQsZUFBZUMsU0FBU0MsR0FBb0I7SUFDM0MsSUFBSUMsS0FBS0MsSUFBQUEsNkJBQW9CLEVBQUNGLElBQUlHLFNBQVM7SUFDM0MsSUFBSUYsTUFBTSxNQUFNO1FBQ2ZBLEtBQUssTUFBTUcsSUFBQUEsZ0NBQXVCO0lBQ25DO0lBRUEsSUFBSUM7SUFDSixJQUFJTCxJQUFJTSxJQUFJLENBQUNDLEdBQUcsRUFBRTtRQUNqQkYsZ0JBQWdCO0lBQ2pCLE9BQU87UUFDTixNQUFNRyxTQUFTLE1BQU1DLElBQUFBLFVBQUcsRUFBQyxnREFBZ0Q7UUFDekVKLGdCQUFnQkcsT0FBT0UsV0FBVyxPQUFPO0lBQzFDO0lBRUEsSUFBSUwsZUFBZTtRQUNsQk0sUUFBUUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFWixJQUFJYSxXQUFXLENBQUMsOEJBQThCLENBQUM7UUFDM0UsTUFBTVosR0FBR2EsT0FBTyxDQUFDO1lBQUVDLEtBQUtmLElBQUlHLFNBQVM7UUFBQztJQUN2QztJQUVBUSxRQUFRQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUVQLGdCQUFnQixTQUFTLGtCQUFrQixTQUFTLENBQUM7SUFDNUUsSUFBSVcsSUFBQUEsa0JBQVEsRUFBQ2hCLElBQUlHLFNBQVMsTUFBTUgsSUFBSUcsU0FBUyxFQUFFO1FBQzlDUSxRQUFRQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUVaLElBQUlhLFdBQVcsRUFBRTtJQUN0QztJQUNBLElBQUksQ0FBQ1IsZUFBZTtRQUNuQk0sUUFBUUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFWCxHQUFHZ0IsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNuQztJQUNBTixRQUFRQyxHQUFHLENBQUM7SUFDWkQsUUFBUUMsR0FBRyxDQUFDO0lBQ1osT0FBT1o7QUFDUjtBQUVPLE1BQU1GLGtCQUEyQjtJQUN2Q21CLE1BQU07SUFDTmxCO0FBQ0QifQ==
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "postgresqlFeature", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return postgresqlFeature;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _nodecrypto = require("node:crypto");
|
|
12
|
+
const _promises = require("node:fs/promises");
|
|
13
|
+
const _nodepath = require("node:path");
|
|
14
|
+
const _composemodel = require("../../domain/compose.model.js");
|
|
15
|
+
const _devcontainermodel = require("../../domain/devcontainer.model.js");
|
|
16
|
+
const _models = require("./models.js");
|
|
17
|
+
const enabled = (ctx)=>ctx.opts.database === "typeorm";
|
|
18
|
+
async function configure(ctx) {
|
|
19
|
+
const devcontainer = ctx.models.get(_devcontainermodel.DEVCONTAINER_KEY);
|
|
20
|
+
const nodeModulesVolume = `${ctx.projectName}-node-modules`;
|
|
21
|
+
const db = `${ctx.projectName}_dev`;
|
|
22
|
+
const user = "postgres";
|
|
23
|
+
const password = (0, _nodecrypto.randomBytes)(16).toString("hex");
|
|
24
|
+
const compose = new _composemodel.ComposeModel().addService("devcontainer", {
|
|
25
|
+
build: ".",
|
|
26
|
+
volumes: [
|
|
27
|
+
`\${HOME}/.npm/${ctx.projectName}:/home/node/.npm`,
|
|
28
|
+
`${nodeModulesVolume}:/workspace/node_modules`
|
|
29
|
+
],
|
|
30
|
+
environment: {
|
|
31
|
+
NPM_CONFIG_USERCONFIG: "/home/node/.npm/.npmrc"
|
|
32
|
+
},
|
|
33
|
+
command: "sleep infinity"
|
|
34
|
+
}).addService("postgres", {
|
|
35
|
+
image: "postgres:16",
|
|
36
|
+
restart: "unless-stopped",
|
|
37
|
+
environment: {
|
|
38
|
+
// biome-ignore lint/suspicious/noTemplateCurlyInString: Docker Compose reads these from .env
|
|
39
|
+
POSTGRES_DB: "${POSTGRES_DB}",
|
|
40
|
+
// biome-ignore lint/suspicious/noTemplateCurlyInString: Docker Compose reads these from .env
|
|
41
|
+
POSTGRES_USER: "${POSTGRES_USER}",
|
|
42
|
+
// biome-ignore lint/suspicious/noTemplateCurlyInString: Docker Compose reads these from .env
|
|
43
|
+
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
|
|
44
|
+
},
|
|
45
|
+
ports: [
|
|
46
|
+
"5432:5432"
|
|
47
|
+
],
|
|
48
|
+
volumes: [
|
|
49
|
+
"postgres-data:/var/lib/postgresql/data"
|
|
50
|
+
]
|
|
51
|
+
}).addVolume(nodeModulesVolume).addVolume("postgres-data");
|
|
52
|
+
devcontainer?.useCompose();
|
|
53
|
+
const creds = {
|
|
54
|
+
db,
|
|
55
|
+
user,
|
|
56
|
+
password
|
|
57
|
+
};
|
|
58
|
+
return {
|
|
59
|
+
...ctx,
|
|
60
|
+
models: ctx.models.set(_composemodel.COMPOSE_KEY, compose).set(_models.POSTGRES_CREDS_KEY, creds)
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
async function render(ctx) {
|
|
64
|
+
const creds = ctx.models.get(_models.POSTGRES_CREDS_KEY);
|
|
65
|
+
if (!creds) return ctx;
|
|
66
|
+
const devcontainerDir = (0, _nodepath.join)(ctx.targetDir, ".devcontainer");
|
|
67
|
+
await (0, _promises.mkdir)(devcontainerDir, {
|
|
68
|
+
recursive: true
|
|
69
|
+
});
|
|
70
|
+
const envContent = `POSTGRES_DB=${creds.db}\nPOSTGRES_USER=${creds.user}\nPOSTGRES_PASSWORD=${creds.password}\n`;
|
|
71
|
+
await (0, _promises.writeFile)((0, _nodepath.join)(devcontainerDir, ".env"), envContent);
|
|
72
|
+
return ctx;
|
|
73
|
+
}
|
|
74
|
+
const postgresqlFeature = {
|
|
75
|
+
name: "postgresql",
|
|
76
|
+
enabled,
|
|
77
|
+
configure,
|
|
78
|
+
render
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9wb3N0Z3Jlc3FsL2ZlYXR1cmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7IG1rZGlyLCB3cml0ZUZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IENPTVBPU0VfS0VZLCBDb21wb3NlTW9kZWwgfSBmcm9tIFwiLi4vLi4vZG9tYWluL2NvbXBvc2UubW9kZWwuanNcIjtcbmltcG9ydCB7IERFVkNPTlRBSU5FUl9LRVkgfSBmcm9tIFwiLi4vLi4vZG9tYWluL2RldmNvbnRhaW5lci5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBGZWF0dXJlLCBTY2FmZm9sZENvbnRleHQgfSBmcm9tIFwiLi4vLi4vZG9tYWluL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBQT1NUR1JFU19DUkVEU19LRVkgfSBmcm9tIFwiLi9tb2RlbHMuanNcIjtcblxuY29uc3QgZW5hYmxlZCA9IChjdHg6IFNjYWZmb2xkQ29udGV4dCkgPT4gY3R4Lm9wdHMuZGF0YWJhc2UgPT09IFwidHlwZW9ybVwiO1xuXG5hc3luYyBmdW5jdGlvbiBjb25maWd1cmUoY3R4OiBTY2FmZm9sZENvbnRleHQpOiBQcm9taXNlPFNjYWZmb2xkQ29udGV4dD4ge1xuXHRjb25zdCBkZXZjb250YWluZXIgPSBjdHgubW9kZWxzLmdldChERVZDT05UQUlORVJfS0VZKTtcblx0Y29uc3Qgbm9kZU1vZHVsZXNWb2x1bWUgPSBgJHtjdHgucHJvamVjdE5hbWV9LW5vZGUtbW9kdWxlc2A7XG5cblx0Y29uc3QgZGIgPSBgJHtjdHgucHJvamVjdE5hbWV9X2RldmA7XG5cdGNvbnN0IHVzZXIgPSBcInBvc3RncmVzXCI7XG5cdGNvbnN0IHBhc3N3b3JkID0gcmFuZG9tQnl0ZXMoMTYpLnRvU3RyaW5nKFwiaGV4XCIpO1xuXG5cdGNvbnN0IGNvbXBvc2UgPSBuZXcgQ29tcG9zZU1vZGVsKClcblx0XHQuYWRkU2VydmljZShcImRldmNvbnRhaW5lclwiLCB7XG5cdFx0XHRidWlsZDogXCIuXCIsXG5cdFx0XHR2b2x1bWVzOiBbXG5cdFx0XHRcdGBcXCR7SE9NRX0vLm5wbS8ke2N0eC5wcm9qZWN0TmFtZX06L2hvbWUvbm9kZS8ubnBtYCxcblx0XHRcdFx0YCR7bm9kZU1vZHVsZXNWb2x1bWV9Oi93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzYCxcblx0XHRcdF0sXG5cdFx0XHRlbnZpcm9ubWVudDoge1xuXHRcdFx0XHROUE1fQ09ORklHX1VTRVJDT05GSUc6IFwiL2hvbWUvbm9kZS8ubnBtLy5ucG1yY1wiLFxuXHRcdFx0fSxcblx0XHRcdGNvbW1hbmQ6IFwic2xlZXAgaW5maW5pdHlcIixcblx0XHR9KVxuXHRcdC5hZGRTZXJ2aWNlKFwicG9zdGdyZXNcIiwge1xuXHRcdFx0aW1hZ2U6IFwicG9zdGdyZXM6MTZcIixcblx0XHRcdHJlc3RhcnQ6IFwidW5sZXNzLXN0b3BwZWRcIixcblx0XHRcdGVudmlyb25tZW50OiB7XG5cdFx0XHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9UZW1wbGF0ZUN1cmx5SW5TdHJpbmc6IERvY2tlciBDb21wb3NlIHJlYWRzIHRoZXNlIGZyb20gLmVudlxuXHRcdFx0XHRQT1NUR1JFU19EQjogXCIke1BPU1RHUkVTX0RCfVwiLFxuXHRcdFx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vVGVtcGxhdGVDdXJseUluU3RyaW5nOiBEb2NrZXIgQ29tcG9zZSByZWFkcyB0aGVzZSBmcm9tIC5lbnZcblx0XHRcdFx0UE9TVEdSRVNfVVNFUjogXCIke1BPU1RHUkVTX1VTRVJ9XCIsXG5cdFx0XHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9UZW1wbGF0ZUN1cmx5SW5TdHJpbmc6IERvY2tlciBDb21wb3NlIHJlYWRzIHRoZXNlIGZyb20gLmVudlxuXHRcdFx0XHRQT1NUR1JFU19QQVNTV09SRDogXCIke1BPU1RHUkVTX1BBU1NXT1JEfVwiLFxuXHRcdFx0fSxcblx0XHRcdHBvcnRzOiBbXCI1NDMyOjU0MzJcIl0sXG5cdFx0XHR2b2x1bWVzOiBbXCJwb3N0Z3Jlcy1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YVwiXSxcblx0XHR9KVxuXHRcdC5hZGRWb2x1bWUobm9kZU1vZHVsZXNWb2x1bWUpXG5cdFx0LmFkZFZvbHVtZShcInBvc3RncmVzLWRhdGFcIik7XG5cblx0ZGV2Y29udGFpbmVyPy51c2VDb21wb3NlKCk7XG5cblx0Y29uc3QgY3JlZHMgPSB7IGRiLCB1c2VyLCBwYXNzd29yZCB9O1xuXHRyZXR1cm4ge1xuXHRcdC4uLmN0eCxcblx0XHRtb2RlbHM6IGN0eC5tb2RlbHMuc2V0KENPTVBPU0VfS0VZLCBjb21wb3NlKS5zZXQoUE9TVEdSRVNfQ1JFRFNfS0VZLCBjcmVkcyksXG5cdH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlcihjdHg6IFNjYWZmb2xkQ29udGV4dCk6IFByb21pc2U8U2NhZmZvbGRDb250ZXh0PiB7XG5cdGNvbnN0IGNyZWRzID0gY3R4Lm1vZGVscy5nZXQoUE9TVEdSRVNfQ1JFRFNfS0VZKTtcblx0aWYgKCFjcmVkcykgcmV0dXJuIGN0eDtcblxuXHRjb25zdCBkZXZjb250YWluZXJEaXIgPSBqb2luKGN0eC50YXJnZXREaXIsIFwiLmRldmNvbnRhaW5lclwiKTtcblx0YXdhaXQgbWtkaXIoZGV2Y29udGFpbmVyRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblx0Y29uc3QgZW52Q29udGVudCA9IGBQT1NUR1JFU19EQj0ke2NyZWRzLmRifVxcblBPU1RHUkVTX1VTRVI9JHtjcmVkcy51c2VyfVxcblBPU1RHUkVTX1BBU1NXT1JEPSR7Y3JlZHMucGFzc3dvcmR9XFxuYDtcblx0YXdhaXQgd3JpdGVGaWxlKGpvaW4oZGV2Y29udGFpbmVyRGlyLCBcIi5lbnZcIiksIGVudkNvbnRlbnQpO1xuXG5cdHJldHVybiBjdHg7XG59XG5cbmV4cG9ydCBjb25zdCBwb3N0Z3Jlc3FsRmVhdHVyZTogRmVhdHVyZSA9IHtcblx0bmFtZTogXCJwb3N0Z3Jlc3FsXCIsXG5cdGVuYWJsZWQsXG5cdGNvbmZpZ3VyZSxcblx0cmVuZGVyLFxufTtcbiJdLCJuYW1lcyI6WyJwb3N0Z3Jlc3FsRmVhdHVyZSIsImVuYWJsZWQiLCJjdHgiLCJvcHRzIiwiZGF0YWJhc2UiLCJjb25maWd1cmUiLCJkZXZjb250YWluZXIiLCJtb2RlbHMiLCJnZXQiLCJERVZDT05UQUlORVJfS0VZIiwibm9kZU1vZHVsZXNWb2x1bWUiLCJwcm9qZWN0TmFtZSIsImRiIiwidXNlciIsInBhc3N3b3JkIiwicmFuZG9tQnl0ZXMiLCJ0b1N0cmluZyIsImNvbXBvc2UiLCJDb21wb3NlTW9kZWwiLCJhZGRTZXJ2aWNlIiwiYnVpbGQiLCJ2b2x1bWVzIiwiZW52aXJvbm1lbnQiLCJOUE1fQ09ORklHX1VTRVJDT05GSUciLCJjb21tYW5kIiwiaW1hZ2UiLCJyZXN0YXJ0IiwiUE9TVEdSRVNfREIiLCJQT1NUR1JFU19VU0VSIiwiUE9TVEdSRVNfUEFTU1dPUkQiLCJwb3J0cyIsImFkZFZvbHVtZSIsInVzZUNvbXBvc2UiLCJjcmVkcyIsInNldCIsIkNPTVBPU0VfS0VZIiwiUE9TVEdSRVNfQ1JFRFNfS0VZIiwicmVuZGVyIiwiZGV2Y29udGFpbmVyRGlyIiwiam9pbiIsInRhcmdldERpciIsIm1rZGlyIiwicmVjdXJzaXZlIiwiZW52Q29udGVudCIsIndyaXRlRmlsZSIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7K0JBb0VhQTs7O2VBQUFBOzs7NEJBcEVlOzBCQUNLOzBCQUNaOzhCQUNxQjttQ0FDVDt3QkFFRTtBQUVuQyxNQUFNQyxVQUFVLENBQUNDLE1BQXlCQSxJQUFJQyxJQUFJLENBQUNDLFFBQVEsS0FBSztBQUVoRSxlQUFlQyxVQUFVSCxHQUFvQjtJQUM1QyxNQUFNSSxlQUFlSixJQUFJSyxNQUFNLENBQUNDLEdBQUcsQ0FBQ0MsbUNBQWdCO0lBQ3BELE1BQU1DLG9CQUFvQixHQUFHUixJQUFJUyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBRTNELE1BQU1DLEtBQUssR0FBR1YsSUFBSVMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUNuQyxNQUFNRSxPQUFPO0lBQ2IsTUFBTUMsV0FBV0MsSUFBQUEsdUJBQVcsRUFBQyxJQUFJQyxRQUFRLENBQUM7SUFFMUMsTUFBTUMsVUFBVSxJQUFJQywwQkFBWSxHQUM5QkMsVUFBVSxDQUFDLGdCQUFnQjtRQUMzQkMsT0FBTztRQUNQQyxTQUFTO1lBQ1IsQ0FBQyxjQUFjLEVBQUVuQixJQUFJUyxXQUFXLENBQUMsZ0JBQWdCLENBQUM7WUFDbEQsR0FBR0Qsa0JBQWtCLHdCQUF3QixDQUFDO1NBQzlDO1FBQ0RZLGFBQWE7WUFDWkMsdUJBQXVCO1FBQ3hCO1FBQ0FDLFNBQVM7SUFDVixHQUNDTCxVQUFVLENBQUMsWUFBWTtRQUN2Qk0sT0FBTztRQUNQQyxTQUFTO1FBQ1RKLGFBQWE7WUFDWiw2RkFBNkY7WUFDN0ZLLGFBQWE7WUFDYiw2RkFBNkY7WUFDN0ZDLGVBQWU7WUFDZiw2RkFBNkY7WUFDN0ZDLG1CQUFtQjtRQUNwQjtRQUNBQyxPQUFPO1lBQUM7U0FBWTtRQUNwQlQsU0FBUztZQUFDO1NBQXlDO0lBQ3BELEdBQ0NVLFNBQVMsQ0FBQ3JCLG1CQUNWcUIsU0FBUyxDQUFDO0lBRVp6QixjQUFjMEI7SUFFZCxNQUFNQyxRQUFRO1FBQUVyQjtRQUFJQztRQUFNQztJQUFTO0lBQ25DLE9BQU87UUFDTixHQUFHWixHQUFHO1FBQ05LLFFBQVFMLElBQUlLLE1BQU0sQ0FBQzJCLEdBQUcsQ0FBQ0MseUJBQVcsRUFBRWxCLFNBQVNpQixHQUFHLENBQUNFLDBCQUFrQixFQUFFSDtJQUN0RTtBQUNEO0FBRUEsZUFBZUksT0FBT25DLEdBQW9CO0lBQ3pDLE1BQU0rQixRQUFRL0IsSUFBSUssTUFBTSxDQUFDQyxHQUFHLENBQUM0QiwwQkFBa0I7SUFDL0MsSUFBSSxDQUFDSCxPQUFPLE9BQU8vQjtJQUVuQixNQUFNb0Msa0JBQWtCQyxJQUFBQSxjQUFJLEVBQUNyQyxJQUFJc0MsU0FBUyxFQUFFO0lBQzVDLE1BQU1DLElBQUFBLGVBQUssRUFBQ0gsaUJBQWlCO1FBQUVJLFdBQVc7SUFBSztJQUMvQyxNQUFNQyxhQUFhLENBQUMsWUFBWSxFQUFFVixNQUFNckIsRUFBRSxDQUFDLGdCQUFnQixFQUFFcUIsTUFBTXBCLElBQUksQ0FBQyxvQkFBb0IsRUFBRW9CLE1BQU1uQixRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ2hILE1BQU04QixJQUFBQSxtQkFBUyxFQUFDTCxJQUFBQSxjQUFJLEVBQUNELGlCQUFpQixTQUFTSztJQUUvQyxPQUFPekM7QUFDUjtBQUVPLE1BQU1GLG9CQUE2QjtJQUN6QzZDLE1BQU07SUFDTjVDO0lBQ0FJO0lBQ0FnQztBQUNEIn0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "POSTGRES_CREDS_KEY", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return POSTGRES_CREDS_KEY;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _context = require("../../domain/context.js");
|
|
12
|
+
const POSTGRES_CREDS_KEY = (0, _context.modelKey)("postgres-creds");
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9wb3N0Z3Jlc3FsL21vZGVscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb2RlbEtleSB9IGZyb20gXCIuLi8uLi9kb21haW4vY29udGV4dC5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RncmVzQ3JlZHMge1xuXHRkYjogc3RyaW5nO1xuXHR1c2VyOiBzdHJpbmc7XG5cdHBhc3N3b3JkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBQT1NUR1JFU19DUkVEU19LRVkgPSBtb2RlbEtleTxQb3N0Z3Jlc0NyZWRzPihcInBvc3RncmVzLWNyZWRzXCIpO1xuIl0sIm5hbWVzIjpbIlBPU1RHUkVTX0NSRURTX0tFWSIsIm1vZGVsS2V5Il0sIm1hcHBpbmdzIjoiOzs7OytCQVFhQTs7O2VBQUFBOzs7eUJBUlk7QUFRbEIsTUFBTUEscUJBQXFCQyxJQUFBQSxpQkFBUSxFQUFnQiJ9
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "buildPostmanCollection", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return buildPostmanCollection;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
function buildPostmanCollection(projectName, withAuth0) {
|
|
12
|
+
const auth = withAuth0 ? {
|
|
13
|
+
type: "oauth2",
|
|
14
|
+
oauth2: [
|
|
15
|
+
{
|
|
16
|
+
key: "grant_type",
|
|
17
|
+
value: "authorization_code_with_pkce",
|
|
18
|
+
type: "string"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
key: "authUrl",
|
|
22
|
+
value: "https://{{auth0Domain}}/authorize?audience={{auth0Audience}}",
|
|
23
|
+
type: "string"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
key: "accessTokenUrl",
|
|
27
|
+
value: "https://{{auth0Domain}}/oauth/token",
|
|
28
|
+
type: "string"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
key: "clientId",
|
|
32
|
+
value: "{{auth0ClientId}}",
|
|
33
|
+
type: "string"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
key: "scope",
|
|
37
|
+
value: "openid profile email",
|
|
38
|
+
type: "string"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
key: "addTokenTo",
|
|
42
|
+
value: "header",
|
|
43
|
+
type: "string"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
key: "challengeAlgorithm",
|
|
47
|
+
value: "S256",
|
|
48
|
+
type: "string"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
} : undefined;
|
|
52
|
+
return {
|
|
53
|
+
info: {
|
|
54
|
+
name: `${projectName} WebAPI`,
|
|
55
|
+
schema: "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
|
|
56
|
+
},
|
|
57
|
+
...auth ? {
|
|
58
|
+
auth
|
|
59
|
+
} : {},
|
|
60
|
+
item: [
|
|
61
|
+
{
|
|
62
|
+
name: "Hello",
|
|
63
|
+
request: {
|
|
64
|
+
method: "GET",
|
|
65
|
+
url: {
|
|
66
|
+
raw: "{{baseUrl}}/hello",
|
|
67
|
+
host: [
|
|
68
|
+
"{{baseUrl}}"
|
|
69
|
+
],
|
|
70
|
+
path: [
|
|
71
|
+
"hello"
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9wb3N0bWFuL2NvbGxlY3Rpb24udGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUG9zdG1hbkNvbGxlY3Rpb24ocHJvamVjdE5hbWU6IHN0cmluZywgd2l0aEF1dGgwOiBib29sZWFuKTogdW5rbm93biB7XG5cdGNvbnN0IGF1dGggPSB3aXRoQXV0aDBcblx0XHQ/IHtcblx0XHRcdFx0dHlwZTogXCJvYXV0aDJcIixcblx0XHRcdFx0b2F1dGgyOiBbXG5cdFx0XHRcdFx0eyBrZXk6IFwiZ3JhbnRfdHlwZVwiLCB2YWx1ZTogXCJhdXRob3JpemF0aW9uX2NvZGVfd2l0aF9wa2NlXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRrZXk6IFwiYXV0aFVybFwiLFxuXHRcdFx0XHRcdFx0dmFsdWU6IFwiaHR0cHM6Ly97e2F1dGgwRG9tYWlufX0vYXV0aG9yaXplP2F1ZGllbmNlPXt7YXV0aDBBdWRpZW5jZX19XCIsXG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0a2V5OiBcImFjY2Vzc1Rva2VuVXJsXCIsXG5cdFx0XHRcdFx0XHR2YWx1ZTogXCJodHRwczovL3t7YXV0aDBEb21haW59fS9vYXV0aC90b2tlblwiLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHsga2V5OiBcImNsaWVudElkXCIsIHZhbHVlOiBcInt7YXV0aDBDbGllbnRJZH19XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJzY29wZVwiLCB2YWx1ZTogXCJvcGVuaWQgcHJvZmlsZSBlbWFpbFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiYWRkVG9rZW5Ub1wiLCB2YWx1ZTogXCJoZWFkZXJcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHsga2V5OiBcImNoYWxsZW5nZUFsZ29yaXRobVwiLCB2YWx1ZTogXCJTMjU2XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XSxcblx0XHRcdH1cblx0XHQ6IHVuZGVmaW5lZDtcblxuXHRyZXR1cm4ge1xuXHRcdGluZm86IHtcblx0XHRcdG5hbWU6IGAke3Byb2plY3ROYW1lfSBXZWJBUElgLFxuXHRcdFx0c2NoZW1hOiBcImh0dHBzOi8vc2NoZW1hLmdldHBvc3RtYW4uY29tL2pzb24vY29sbGVjdGlvbi92Mi4xLjAvY29sbGVjdGlvbi5qc29uXCIsXG5cdFx0fSxcblx0XHQuLi4oYXV0aCA/IHsgYXV0aCB9IDoge30pLFxuXHRcdGl0ZW06IFtcblx0XHRcdHtcblx0XHRcdFx0bmFtZTogXCJIZWxsb1wiLFxuXHRcdFx0XHRyZXF1ZXN0OiB7XG5cdFx0XHRcdFx0bWV0aG9kOiBcIkdFVFwiLFxuXHRcdFx0XHRcdHVybDogeyByYXc6IFwie3tiYXNlVXJsfX0vaGVsbG9cIiwgaG9zdDogW1wie3tiYXNlVXJsfX1cIl0sIHBhdGg6IFtcImhlbGxvXCJdIH0sXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdF0sXG5cdH07XG59XG4iXSwibmFtZXMiOlsiYnVpbGRQb3N0bWFuQ29sbGVjdGlvbiIsInByb2plY3ROYW1lIiwid2l0aEF1dGgwIiwiYXV0aCIsInR5cGUiLCJvYXV0aDIiLCJrZXkiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImluZm8iLCJuYW1lIiwic2NoZW1hIiwiaXRlbSIsInJlcXVlc3QiLCJtZXRob2QiLCJ1cmwiLCJyYXciLCJob3N0IiwicGF0aCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFBZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLHVCQUF1QkMsV0FBbUIsRUFBRUMsU0FBa0I7SUFDN0UsTUFBTUMsT0FBT0QsWUFDVjtRQUNBRSxNQUFNO1FBQ05DLFFBQVE7WUFDUDtnQkFBRUMsS0FBSztnQkFBY0MsT0FBTztnQkFBZ0NILE1BQU07WUFBUztZQUMzRTtnQkFDQ0UsS0FBSztnQkFDTEMsT0FBTztnQkFDUEgsTUFBTTtZQUNQO1lBQ0E7Z0JBQ0NFLEtBQUs7Z0JBQ0xDLE9BQU87Z0JBQ1BILE1BQU07WUFDUDtZQUNBO2dCQUFFRSxLQUFLO2dCQUFZQyxPQUFPO2dCQUFxQkgsTUFBTTtZQUFTO1lBQzlEO2dCQUFFRSxLQUFLO2dCQUFTQyxPQUFPO2dCQUF3QkgsTUFBTTtZQUFTO1lBQzlEO2dCQUFFRSxLQUFLO2dCQUFjQyxPQUFPO2dCQUFVSCxNQUFNO1lBQVM7WUFDckQ7Z0JBQUVFLEtBQUs7Z0JBQXNCQyxPQUFPO2dCQUFRSCxNQUFNO1lBQVM7U0FDM0Q7SUFDRixJQUNDSTtJQUVILE9BQU87UUFDTkMsTUFBTTtZQUNMQyxNQUFNLEdBQUdULFlBQVksT0FBTyxDQUFDO1lBQzdCVSxRQUFRO1FBQ1Q7UUFDQSxHQUFJUixPQUFPO1lBQUVBO1FBQUssSUFBSSxDQUFDLENBQUM7UUFDeEJTLE1BQU07WUFDTDtnQkFDQ0YsTUFBTTtnQkFDTkcsU0FBUztvQkFDUkMsUUFBUTtvQkFDUkMsS0FBSzt3QkFBRUMsS0FBSzt3QkFBcUJDLE1BQU07NEJBQUM7eUJBQWM7d0JBQUVDLE1BQU07NEJBQUM7eUJBQVE7b0JBQUM7Z0JBQ3pFO1lBQ0Q7U0FDQTtJQUNGO0FBQ0QifQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "postmanEnvironmentYaml", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return postmanEnvironmentYaml;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
function postmanEnvironmentYaml(name, opts) {
|
|
12
|
+
const auth0Section = opts?.auth0Domain ? `${[
|
|
13
|
+
" - key: auth0Domain",
|
|
14
|
+
` value: ${opts.auth0Domain}`,
|
|
15
|
+
" - key: auth0Audience",
|
|
16
|
+
` value: '${opts.auth0Audience ?? ""}'`,
|
|
17
|
+
" - key: auth0ClientId",
|
|
18
|
+
` value: '${opts.auth0ClientId ?? ""}'`,
|
|
19
|
+
" description: Client ID of the Auth0 SPA application used by Postman for PKCE authentication"
|
|
20
|
+
].join("\n")}\n` : "";
|
|
21
|
+
return `name: ${name}\nvalues:\n - key: baseUrl\n value: 'http://localhost:3000'\n${auth0Section}`;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9wb3N0bWFuL2Vudmlyb25tZW50LnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUG9zdG1hbkVudk9wdGlvbnMge1xuXHRhdXRoMERvbWFpbj86IHN0cmluZztcblx0YXV0aDBBdWRpZW5jZT86IHN0cmluZztcblx0YXV0aDBDbGllbnRJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc3RtYW5FbnZpcm9ubWVudFlhbWwobmFtZTogc3RyaW5nLCBvcHRzPzogUG9zdG1hbkVudk9wdGlvbnMpOiBzdHJpbmcge1xuXHRjb25zdCBhdXRoMFNlY3Rpb24gPSBvcHRzPy5hdXRoMERvbWFpblxuXHRcdD8gYCR7W1xuXHRcdFx0XHRcIiAgLSBrZXk6IGF1dGgwRG9tYWluXCIsXG5cdFx0XHRcdGAgICAgdmFsdWU6ICR7b3B0cy5hdXRoMERvbWFpbn1gLFxuXHRcdFx0XHRcIiAgLSBrZXk6IGF1dGgwQXVkaWVuY2VcIixcblx0XHRcdFx0YCAgICB2YWx1ZTogJyR7b3B0cy5hdXRoMEF1ZGllbmNlID8/IFwiXCJ9J2AsXG5cdFx0XHRcdFwiICAtIGtleTogYXV0aDBDbGllbnRJZFwiLFxuXHRcdFx0XHRgICAgIHZhbHVlOiAnJHtvcHRzLmF1dGgwQ2xpZW50SWQgPz8gXCJcIn0nYCxcblx0XHRcdFx0XCIgICAgZGVzY3JpcHRpb246IENsaWVudCBJRCBvZiB0aGUgQXV0aDAgU1BBIGFwcGxpY2F0aW9uIHVzZWQgYnkgUG9zdG1hbiBmb3IgUEtDRSBhdXRoZW50aWNhdGlvblwiLFxuXHRcdFx0XS5qb2luKFwiXFxuXCIpfVxcbmBcblx0XHQ6IFwiXCI7XG5cdHJldHVybiBgbmFtZTogJHtuYW1lfVxcbnZhbHVlczpcXG4gIC0ga2V5OiBiYXNlVXJsXFxuICAgIHZhbHVlOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwJ1xcbiR7YXV0aDBTZWN0aW9ufWA7XG59XG4iXSwibmFtZXMiOlsicG9zdG1hbkVudmlyb25tZW50WWFtbCIsIm5hbWUiLCJvcHRzIiwiYXV0aDBTZWN0aW9uIiwiYXV0aDBEb21haW4iLCJhdXRoMEF1ZGllbmNlIiwiYXV0aDBDbGllbnRJZCIsImpvaW4iXSwibWFwcGluZ3MiOiI7Ozs7K0JBTWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSx1QkFBdUJDLElBQVksRUFBRUMsSUFBd0I7SUFDNUUsTUFBTUMsZUFBZUQsTUFBTUUsY0FDeEIsR0FBRztRQUNIO1FBQ0EsQ0FBQyxXQUFXLEVBQUVGLEtBQUtFLFdBQVcsRUFBRTtRQUNoQztRQUNBLENBQUMsWUFBWSxFQUFFRixLQUFLRyxhQUFhLElBQUksR0FBRyxDQUFDLENBQUM7UUFDMUM7UUFDQSxDQUFDLFlBQVksRUFBRUgsS0FBS0ksYUFBYSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQzFDO0tBQ0EsQ0FBQ0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQ2Y7SUFDSCxPQUFPLENBQUMsTUFBTSxFQUFFTixLQUFLLGlFQUFpRSxFQUFFRSxjQUFjO0FBQ3ZHIn0=
|