@decohere/create 0.0.1-dev.18 → 0.0.1-dev.20
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
package/commonjs/v1/cli.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
const _nodepath = require("node:path");
|
|
7
|
-
const _commander = require("commander");
|
|
8
|
-
const _scaffold = require("./scaffold.js");
|
|
9
|
-
const program = new _commander.Command();
|
|
10
|
-
program.name("decohere").description("Scaffold a new Decohere project").argument("[directory]", "Target directory (default: current directory)", ".").option("-y, --yes", "Skip confirmation prompts").option("-t, --template <template>", "Project template: api (default) or cli").option("-d, --database <provider>", "Database provider to include (api only): typeorm").option("-i, --idp <provider>", "Identity provider to configure (api only): auth0").option("-p, --postman", "Configure a Postman workspace, collection, and environment").action(async (directory, opts)=>{
|
|
11
|
-
await (0, _scaffold.scaffold)((0, _nodepath.resolve)(directory), opts);
|
|
12
|
-
});
|
|
13
|
-
program.parse();
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9jbGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBzY2FmZm9sZCB9IGZyb20gXCIuL3NjYWZmb2xkLmpzXCI7XG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG5wcm9ncmFtXG5cdC5uYW1lKFwiZGVjb2hlcmVcIilcblx0LmRlc2NyaXB0aW9uKFwiU2NhZmZvbGQgYSBuZXcgRGVjb2hlcmUgcHJvamVjdFwiKVxuXHQuYXJndW1lbnQoXCJbZGlyZWN0b3J5XVwiLCBcIlRhcmdldCBkaXJlY3RvcnkgKGRlZmF1bHQ6IGN1cnJlbnQgZGlyZWN0b3J5KVwiLCBcIi5cIilcblx0Lm9wdGlvbihcIi15LCAtLXllc1wiLCBcIlNraXAgY29uZmlybWF0aW9uIHByb21wdHNcIilcblx0Lm9wdGlvbihcIi10LCAtLXRlbXBsYXRlIDx0ZW1wbGF0ZT5cIiwgXCJQcm9qZWN0IHRlbXBsYXRlOiBhcGkgKGRlZmF1bHQpIG9yIGNsaVwiKVxuXHQub3B0aW9uKFwiLWQsIC0tZGF0YWJhc2UgPHByb3ZpZGVyPlwiLCBcIkRhdGFiYXNlIHByb3ZpZGVyIHRvIGluY2x1ZGUgKGFwaSBvbmx5KTogdHlwZW9ybVwiKVxuXHQub3B0aW9uKFwiLWksIC0taWRwIDxwcm92aWRlcj5cIiwgXCJJZGVudGl0eSBwcm92aWRlciB0byBjb25maWd1cmUgKGFwaSBvbmx5KTogYXV0aDBcIilcblx0Lm9wdGlvbihcIi1wLCAtLXBvc3RtYW5cIiwgXCJDb25maWd1cmUgYSBQb3N0bWFuIHdvcmtzcGFjZSwgY29sbGVjdGlvbiwgYW5kIGVudmlyb25tZW50XCIpXG5cdC5hY3Rpb24oXG5cdFx0YXN5bmMgKFxuXHRcdFx0ZGlyZWN0b3J5OiBzdHJpbmcsXG5cdFx0XHRvcHRzOiB7XG5cdFx0XHRcdHllcz86IGJvb2xlYW47XG5cdFx0XHRcdHRlbXBsYXRlPzogXCJhcGlcIiB8IFwiY2xpXCI7XG5cdFx0XHRcdGRhdGFiYXNlPzogXCJ0eXBlb3JtXCI7XG5cdFx0XHRcdGlkcD86IFwiYXV0aDBcIjtcblx0XHRcdFx0cG9zdG1hbj86IGJvb2xlYW47XG5cdFx0XHR9LFxuXHRcdCkgPT4ge1xuXHRcdFx0YXdhaXQgc2NhZmZvbGQocmVzb2x2ZShkaXJlY3RvcnkpLCBvcHRzKTtcblx0XHR9LFxuXHQpO1xuXG5wcm9ncmFtLnBhcnNlKCk7XG4iXSwibmFtZXMiOlsicHJvZ3JhbSIsIkNvbW1hbmQiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJhcmd1bWVudCIsIm9wdGlvbiIsImFjdGlvbiIsImRpcmVjdG9yeSIsIm9wdHMiLCJzY2FmZm9sZCIsInJlc29sdmUiLCJwYXJzZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7MEJBQ3dCOzJCQUNBOzBCQUNDO0FBRXpCLE1BQU1BLFVBQVUsSUFBSUMsa0JBQU87QUFFM0JELFFBQ0VFLElBQUksQ0FBQyxZQUNMQyxXQUFXLENBQUMsbUNBQ1pDLFFBQVEsQ0FBQyxlQUFlLGlEQUFpRCxLQUN6RUMsTUFBTSxDQUFDLGFBQWEsNkJBQ3BCQSxNQUFNLENBQUMsNkJBQTZCLDBDQUNwQ0EsTUFBTSxDQUFDLDZCQUE2QixvREFDcENBLE1BQU0sQ0FBQyx3QkFBd0Isb0RBQy9CQSxNQUFNLENBQUMsaUJBQWlCLDhEQUN4QkMsTUFBTSxDQUNOLE9BQ0NDLFdBQ0FDO0lBUUEsTUFBTUMsSUFBQUEsa0JBQVEsRUFBQ0MsSUFBQUEsaUJBQU8sRUFBQ0gsWUFBWUM7QUFDcEM7QUFHRlIsUUFBUVcsS0FBSyJ9
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "ClassModel", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return ClassModel;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _importmap = require("./import-map.js");
|
|
12
|
-
class ClassModel {
|
|
13
|
-
className;
|
|
14
|
-
fileName;
|
|
15
|
-
_imports = new _importmap.ImportMap();
|
|
16
|
-
_classDecorators = [];
|
|
17
|
-
_constructorParams = [];
|
|
18
|
-
_bodyClasses = [];
|
|
19
|
-
_methods = [];
|
|
20
|
-
constructor(className, fileName){
|
|
21
|
-
this.className = className;
|
|
22
|
-
this.fileName = fileName;
|
|
23
|
-
}
|
|
24
|
-
// ── imports ──────────────────────────────────────────────────────────────
|
|
25
|
-
/**
|
|
26
|
-
* Add named value imports from `pkg`.
|
|
27
|
-
* Called with no names, registers a side-effect `import "pkg"`.
|
|
28
|
-
*/ addImport(pkg, ...names) {
|
|
29
|
-
this._imports.add(pkg, ...names);
|
|
30
|
-
return this;
|
|
31
|
-
}
|
|
32
|
-
/** Add named type-only imports from `pkg`. */ addTypeImport(pkg, ...names) {
|
|
33
|
-
this._imports.addType(pkg, ...names);
|
|
34
|
-
return this;
|
|
35
|
-
}
|
|
36
|
-
// ── class-level ──────────────────────────────────────────────────────────
|
|
37
|
-
/** Prepend a class-level decorator (goes above any already-registered ones). */ decorateClass(decorator) {
|
|
38
|
-
if (!this._classDecorators.includes(decorator)) {
|
|
39
|
-
this._classDecorators.unshift(decorator);
|
|
40
|
-
}
|
|
41
|
-
return this;
|
|
42
|
-
}
|
|
43
|
-
addBodyClass(def) {
|
|
44
|
-
this._bodyClasses.push(def);
|
|
45
|
-
return this;
|
|
46
|
-
}
|
|
47
|
-
addConstructorParam(param) {
|
|
48
|
-
this._constructorParams.push(param);
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
// ── methods ──────────────────────────────────────────────────────────────
|
|
52
|
-
defineMethod(def) {
|
|
53
|
-
this._methods.push({
|
|
54
|
-
name: def.name,
|
|
55
|
-
decorators: [
|
|
56
|
-
...def.decorators
|
|
57
|
-
],
|
|
58
|
-
isAsync: def.isAsync ?? false,
|
|
59
|
-
params: def.params ?? [],
|
|
60
|
-
body: def.body
|
|
61
|
-
});
|
|
62
|
-
return this;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Prepend a decorator onto an existing method.
|
|
66
|
-
* Silently ignored if `methodName` is not found, so features are
|
|
67
|
-
* resilient to controllers that don't expose a particular method.
|
|
68
|
-
*/ decorateMethod(methodName, ...decorators) {
|
|
69
|
-
const method = this._methods.find((m)=>m.name === methodName);
|
|
70
|
-
if (method) method.decorators.unshift(...decorators);
|
|
71
|
-
return this;
|
|
72
|
-
}
|
|
73
|
-
// ── rendering ─────────────────────────────────────────────────────────────
|
|
74
|
-
render() {
|
|
75
|
-
const importLines = this._imports.render();
|
|
76
|
-
const bodyClassBlocks = this._bodyClasses.map((bc)=>{
|
|
77
|
-
const fields = bc.fields.map((f)=>`\t${f.decorator}\n\tpublic ${f.name}!: ${f.typeName};`).join("\n");
|
|
78
|
-
return `class ${bc.name} {\n${fields}\n}`;
|
|
79
|
-
});
|
|
80
|
-
const constructorParams = this._constructorParams.map((p)=>{
|
|
81
|
-
const prefix = p.paramDecorators.length > 0 ? `${p.paramDecorators.join(" ")} ` : "";
|
|
82
|
-
const access = `${p.isPrivate ? "private " : ""}${p.isReadonly ? "readonly " : ""}`;
|
|
83
|
-
return `\t\t${prefix}${access}${p.name}: ${p.typeName},`;
|
|
84
|
-
}).join("\n");
|
|
85
|
-
const methodBlocks = this._methods.map((m)=>{
|
|
86
|
-
const decorators = m.decorators.map((d)=>`\t${d}`).join("\n");
|
|
87
|
-
const params = m.params.map((p)=>p.decorator ? `${p.decorator} ${p.name}: ${p.typeName}` : `${p.name}: ${p.typeName}`).join(", ");
|
|
88
|
-
const asyncKw = m.isAsync ? "async " : "";
|
|
89
|
-
return `${decorators}\n\tpublic ${asyncKw}${m.name}(${params}) {\n\t\t${m.body}\n\t}`;
|
|
90
|
-
});
|
|
91
|
-
const sections = [
|
|
92
|
-
importLines.join("\n"),
|
|
93
|
-
...bodyClassBlocks,
|
|
94
|
-
[
|
|
95
|
-
...this._classDecorators,
|
|
96
|
-
`export class ${this.className} {`
|
|
97
|
-
].join("\n"),
|
|
98
|
-
`\tpublic constructor(\n${constructorParams}\n\t) {}`,
|
|
99
|
-
...methodBlocks,
|
|
100
|
-
"}"
|
|
101
|
-
];
|
|
102
|
-
return `${sections.join("\n\n")}\n`;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9kb21haW4vY2xhc3MtbW9kZWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW1wb3J0TWFwIH0gZnJvbSBcIi4vaW1wb3J0LW1hcC5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdG9yUGFyYW0ge1xuXHQvKiogZS5nLiBbXCJAaW5qZWN0KElQcmluY2lwYWxQcm92aWRlclRva2VuKVwiXSAqL1xuXHRwYXJhbURlY29yYXRvcnM6IHN0cmluZ1tdO1xuXHRuYW1lOiBzdHJpbmc7XG5cdHR5cGVOYW1lOiBzdHJpbmc7XG5cdGlzUHJpdmF0ZTogYm9vbGVhbjtcblx0aXNSZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXRob2RQYXJhbSB7XG5cdC8qKiBlLmcuIGBAUXVlcnkoXCJmaWx0ZXJcIilgICovXG5cdGRlY29yYXRvcj86IHN0cmluZztcblx0bmFtZTogc3RyaW5nO1xuXHR0eXBlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1ldGhvZERlZiB7XG5cdC8qKiBCYXNlIEhUVFAgZGVjb3JhdG9yKHMpLCBlLmcuIFtcIkBHZXQoKVwiXS4gUmVuZGVyZWQgYm90dG9tLW1vc3QuICovXG5cdGRlY29yYXRvcnM6IHN0cmluZ1tdO1xuXHRuYW1lOiBzdHJpbmc7XG5cdGlzQXN5bmM/OiBib29sZWFuO1xuXHRwYXJhbXM/OiBNZXRob2RQYXJhbVtdO1xuXHRib2R5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9keUNsYXNzRmllbGQge1xuXHRkZWNvcmF0b3I6IHN0cmluZztcblx0bmFtZTogc3RyaW5nO1xuXHR0eXBlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvZHlDbGFzc0RlZiB7XG5cdG5hbWU6IHN0cmluZztcblx0ZmllbGRzOiBCb2R5Q2xhc3NGaWVsZFtdO1xufVxuXG5pbnRlcmZhY2UgTWV0aG9kIGV4dGVuZHMgUmVxdWlyZWQ8TWV0aG9kRGVmPiB7fVxuXG4vKipcbiAqIEEgbGl2ZSwgbXV0YWJsZSBtb2RlbCBvZiBhIGdlbmVyYXRlZCBUeXBlU2NyaXB0IGNsYXNzLlxuICpcbiAqIEZlYXR1cmVzIGNhbGwgdGhlIGZsdWVudCBBUEkgdG8gY29udHJpYnV0ZSBpbXBvcnRzLCBkZWNvcmF0b3JzLCBjb25zdHJ1Y3RvclxuICogcGFyYW1zLCBhbmQgbWV0aG9kIGRlY29yYXRvcnMuICBXaGVuIGFsbCBjb25maWd1cmUgcGhhc2VzIGFyZSBkb25lLCBgcmVuZGVyKClgXG4gKiBwcm9kdWNlcyB0aGUgZmluYWwgVHlwZVNjcmlwdCBzb3VyY2UuXG4gKlxuICogU3ViY2xhc3MgdG8gbW9kZWwgY29udHJvbGxlcnMsIHNlcnZpY2VzLCByZXBvc2l0b3JpZXMsIGV0Yy5cbiAqL1xuZXhwb3J0IGNsYXNzIENsYXNzTW9kZWwge1xuXHRwdWJsaWMgcmVhZG9ubHkgY2xhc3NOYW1lOiBzdHJpbmc7XG5cdHB1YmxpYyByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xuXG5cdHByb3RlY3RlZCByZWFkb25seSBfaW1wb3J0cyA9IG5ldyBJbXBvcnRNYXAoKTtcblx0cHJpdmF0ZSByZWFkb25seSBfY2xhc3NEZWNvcmF0b3JzOiBzdHJpbmdbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jb25zdHJ1Y3RvclBhcmFtczogQ29uc3RydWN0b3JQYXJhbVtdID0gW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX2JvZHlDbGFzc2VzOiBCb2R5Q2xhc3NEZWZbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9tZXRob2RzOiBNZXRob2RbXSA9IFtdO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihjbGFzc05hbWU6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZykge1xuXHRcdHRoaXMuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuXHRcdHRoaXMuZmlsZU5hbWUgPSBmaWxlTmFtZTtcblx0fVxuXG5cdC8vIOKUgOKUgCBpbXBvcnRzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5cdC8qKlxuXHQgKiBBZGQgbmFtZWQgdmFsdWUgaW1wb3J0cyBmcm9tIGBwa2dgLlxuXHQgKiBDYWxsZWQgd2l0aCBubyBuYW1lcywgcmVnaXN0ZXJzIGEgc2lkZS1lZmZlY3QgYGltcG9ydCBcInBrZ1wiYC5cblx0ICovXG5cdHB1YmxpYyBhZGRJbXBvcnQocGtnOiBzdHJpbmcsIC4uLm5hbWVzOiBzdHJpbmdbXSk6IHRoaXMge1xuXHRcdHRoaXMuX2ltcG9ydHMuYWRkKHBrZywgLi4ubmFtZXMpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqIEFkZCBuYW1lZCB0eXBlLW9ubHkgaW1wb3J0cyBmcm9tIGBwa2dgLiAqL1xuXHRwdWJsaWMgYWRkVHlwZUltcG9ydChwa2c6IHN0cmluZywgLi4ubmFtZXM6IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0dGhpcy5faW1wb3J0cy5hZGRUeXBlKHBrZywgLi4ubmFtZXMpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0Ly8g4pSA4pSAIGNsYXNzLWxldmVsIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5cdC8qKiBQcmVwZW5kIGEgY2xhc3MtbGV2ZWwgZGVjb3JhdG9yIChnb2VzIGFib3ZlIGFueSBhbHJlYWR5LXJlZ2lzdGVyZWQgb25lcykuICovXG5cdHB1YmxpYyBkZWNvcmF0ZUNsYXNzKGRlY29yYXRvcjogc3RyaW5nKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9jbGFzc0RlY29yYXRvcnMuaW5jbHVkZXMoZGVjb3JhdG9yKSkge1xuXHRcdFx0dGhpcy5fY2xhc3NEZWNvcmF0b3JzLnVuc2hpZnQoZGVjb3JhdG9yKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgYWRkQm9keUNsYXNzKGRlZjogQm9keUNsYXNzRGVmKTogdGhpcyB7XG5cdFx0dGhpcy5fYm9keUNsYXNzZXMucHVzaChkZWYpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGFkZENvbnN0cnVjdG9yUGFyYW0ocGFyYW06IENvbnN0cnVjdG9yUGFyYW0pOiB0aGlzIHtcblx0XHR0aGlzLl9jb25zdHJ1Y3RvclBhcmFtcy5wdXNoKHBhcmFtKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8vIOKUgOKUgCBtZXRob2RzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5cdHB1YmxpYyBkZWZpbmVNZXRob2QoZGVmOiBNZXRob2REZWYpOiB0aGlzIHtcblx0XHR0aGlzLl9tZXRob2RzLnB1c2goe1xuXHRcdFx0bmFtZTogZGVmLm5hbWUsXG5cdFx0XHRkZWNvcmF0b3JzOiBbLi4uZGVmLmRlY29yYXRvcnNdLFxuXHRcdFx0aXNBc3luYzogZGVmLmlzQXN5bmMgPz8gZmFsc2UsXG5cdFx0XHRwYXJhbXM6IGRlZi5wYXJhbXMgPz8gW10sXG5cdFx0XHRib2R5OiBkZWYuYm9keSxcblx0XHR9KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBQcmVwZW5kIGEgZGVjb3JhdG9yIG9udG8gYW4gZXhpc3RpbmcgbWV0aG9kLlxuXHQgKiBTaWxlbnRseSBpZ25vcmVkIGlmIGBtZXRob2ROYW1lYCBpcyBub3QgZm91bmQsIHNvIGZlYXR1cmVzIGFyZVxuXHQgKiByZXNpbGllbnQgdG8gY29udHJvbGxlcnMgdGhhdCBkb24ndCBleHBvc2UgYSBwYXJ0aWN1bGFyIG1ldGhvZC5cblx0ICovXG5cdHB1YmxpYyBkZWNvcmF0ZU1ldGhvZChtZXRob2ROYW1lOiBzdHJpbmcsIC4uLmRlY29yYXRvcnM6IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0Y29uc3QgbWV0aG9kID0gdGhpcy5fbWV0aG9kcy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG1ldGhvZE5hbWUpO1xuXHRcdGlmIChtZXRob2QpIG1ldGhvZC5kZWNvcmF0b3JzLnVuc2hpZnQoLi4uZGVjb3JhdG9ycyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvLyDilIDilIAgcmVuZGVyaW5nIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5cdHB1YmxpYyByZW5kZXIoKTogc3RyaW5nIHtcblx0XHRjb25zdCBpbXBvcnRMaW5lcyA9IHRoaXMuX2ltcG9ydHMucmVuZGVyKCk7XG5cblx0XHRjb25zdCBib2R5Q2xhc3NCbG9ja3MgPSB0aGlzLl9ib2R5Q2xhc3Nlcy5tYXAoKGJjKSA9PiB7XG5cdFx0XHRjb25zdCBmaWVsZHMgPSBiYy5maWVsZHNcblx0XHRcdFx0Lm1hcCgoZikgPT4gYFxcdCR7Zi5kZWNvcmF0b3J9XFxuXFx0cHVibGljICR7Zi5uYW1lfSE6ICR7Zi50eXBlTmFtZX07YClcblx0XHRcdFx0LmpvaW4oXCJcXG5cIik7XG5cdFx0XHRyZXR1cm4gYGNsYXNzICR7YmMubmFtZX0ge1xcbiR7ZmllbGRzfVxcbn1gO1xuXHRcdH0pO1xuXG5cdFx0Y29uc3QgY29uc3RydWN0b3JQYXJhbXMgPSB0aGlzLl9jb25zdHJ1Y3RvclBhcmFtc1xuXHRcdFx0Lm1hcCgocCkgPT4ge1xuXHRcdFx0XHRjb25zdCBwcmVmaXggPSBwLnBhcmFtRGVjb3JhdG9ycy5sZW5ndGggPiAwID8gYCR7cC5wYXJhbURlY29yYXRvcnMuam9pbihcIiBcIil9IGAgOiBcIlwiO1xuXHRcdFx0XHRjb25zdCBhY2Nlc3MgPSBgJHtwLmlzUHJpdmF0ZSA/IFwicHJpdmF0ZSBcIiA6IFwiXCJ9JHtwLmlzUmVhZG9ubHkgPyBcInJlYWRvbmx5IFwiIDogXCJcIn1gO1xuXHRcdFx0XHRyZXR1cm4gYFxcdFxcdCR7cHJlZml4fSR7YWNjZXNzfSR7cC5uYW1lfTogJHtwLnR5cGVOYW1lfSxgO1xuXHRcdFx0fSlcblx0XHRcdC5qb2luKFwiXFxuXCIpO1xuXG5cdFx0Y29uc3QgbWV0aG9kQmxvY2tzID0gdGhpcy5fbWV0aG9kcy5tYXAoKG0pID0+IHtcblx0XHRcdGNvbnN0IGRlY29yYXRvcnMgPSBtLmRlY29yYXRvcnMubWFwKChkKSA9PiBgXFx0JHtkfWApLmpvaW4oXCJcXG5cIik7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBtLnBhcmFtc1xuXHRcdFx0XHQubWFwKChwKSA9PlxuXHRcdFx0XHRcdHAuZGVjb3JhdG9yID8gYCR7cC5kZWNvcmF0b3J9ICR7cC5uYW1lfTogJHtwLnR5cGVOYW1lfWAgOiBgJHtwLm5hbWV9OiAke3AudHlwZU5hbWV9YCxcblx0XHRcdFx0KVxuXHRcdFx0XHQuam9pbihcIiwgXCIpO1xuXHRcdFx0Y29uc3QgYXN5bmNLdyA9IG0uaXNBc3luYyA/IFwiYXN5bmMgXCIgOiBcIlwiO1xuXHRcdFx0cmV0dXJuIGAke2RlY29yYXRvcnN9XFxuXFx0cHVibGljICR7YXN5bmNLd30ke20ubmFtZX0oJHtwYXJhbXN9KSB7XFxuXFx0XFx0JHttLmJvZHl9XFxuXFx0fWA7XG5cdFx0fSk7XG5cblx0XHRjb25zdCBzZWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0XHRpbXBvcnRMaW5lcy5qb2luKFwiXFxuXCIpLFxuXHRcdFx0Li4uYm9keUNsYXNzQmxvY2tzLFxuXHRcdFx0Wy4uLnRoaXMuX2NsYXNzRGVjb3JhdG9ycywgYGV4cG9ydCBjbGFzcyAke3RoaXMuY2xhc3NOYW1lfSB7YF0uam9pbihcIlxcblwiKSxcblx0XHRcdGBcXHRwdWJsaWMgY29uc3RydWN0b3IoXFxuJHtjb25zdHJ1Y3RvclBhcmFtc31cXG5cXHQpIHt9YCxcblx0XHRcdC4uLm1ldGhvZEJsb2Nrcyxcblx0XHRcdFwifVwiLFxuXHRcdF07XG5cblx0XHRyZXR1cm4gYCR7c2VjdGlvbnMuam9pbihcIlxcblxcblwiKX1cXG5gO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiQ2xhc3NNb2RlbCIsImNsYXNzTmFtZSIsImZpbGVOYW1lIiwiX2ltcG9ydHMiLCJJbXBvcnRNYXAiLCJfY2xhc3NEZWNvcmF0b3JzIiwiX2NvbnN0cnVjdG9yUGFyYW1zIiwiX2JvZHlDbGFzc2VzIiwiX21ldGhvZHMiLCJhZGRJbXBvcnQiLCJwa2ciLCJuYW1lcyIsImFkZCIsImFkZFR5cGVJbXBvcnQiLCJhZGRUeXBlIiwiZGVjb3JhdGVDbGFzcyIsImRlY29yYXRvciIsImluY2x1ZGVzIiwidW5zaGlmdCIsImFkZEJvZHlDbGFzcyIsImRlZiIsInB1c2giLCJhZGRDb25zdHJ1Y3RvclBhcmFtIiwicGFyYW0iLCJkZWZpbmVNZXRob2QiLCJuYW1lIiwiZGVjb3JhdG9ycyIsImlzQXN5bmMiLCJwYXJhbXMiLCJib2R5IiwiZGVjb3JhdGVNZXRob2QiLCJtZXRob2ROYW1lIiwibWV0aG9kIiwiZmluZCIsIm0iLCJyZW5kZXIiLCJpbXBvcnRMaW5lcyIsImJvZHlDbGFzc0Jsb2NrcyIsIm1hcCIsImJjIiwiZmllbGRzIiwiZiIsInR5cGVOYW1lIiwiam9pbiIsImNvbnN0cnVjdG9yUGFyYW1zIiwicCIsInByZWZpeCIsInBhcmFtRGVjb3JhdG9ycyIsImxlbmd0aCIsImFjY2VzcyIsImlzUHJpdmF0ZSIsImlzUmVhZG9ubHkiLCJtZXRob2RCbG9ja3MiLCJkIiwiYXN5bmNLdyIsInNlY3Rpb25zIl0sIm1hcHBpbmdzIjoiOzs7OytCQWlEYUE7OztlQUFBQTs7OzJCQWpEYTtBQWlEbkIsTUFBTUE7SUFDSUMsVUFBa0I7SUFDbEJDLFNBQWlCO0lBRWRDLFdBQVcsSUFBSUMsb0JBQVMsR0FBRztJQUM3QkMsbUJBQTZCLEVBQUUsQ0FBQztJQUNoQ0MscUJBQXlDLEVBQUUsQ0FBQztJQUM1Q0MsZUFBK0IsRUFBRSxDQUFDO0lBQ2xDQyxXQUFxQixFQUFFLENBQUM7SUFFekMsWUFBbUJQLFNBQWlCLEVBQUVDLFFBQWdCLENBQUU7UUFDdkQsSUFBSSxDQUFDRCxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsUUFBUSxHQUFHQTtJQUNqQjtJQUVBLDRFQUE0RTtJQUU1RTs7O0VBR0MsR0FDRCxBQUFPTyxVQUFVQyxHQUFXLEVBQUUsR0FBR0MsS0FBZSxFQUFRO1FBQ3ZELElBQUksQ0FBQ1IsUUFBUSxDQUFDUyxHQUFHLENBQUNGLFFBQVFDO1FBQzFCLE9BQU8sSUFBSTtJQUNaO0lBRUEsNENBQTRDLEdBQzVDLEFBQU9FLGNBQWNILEdBQVcsRUFBRSxHQUFHQyxLQUFlLEVBQVE7UUFDM0QsSUFBSSxDQUFDUixRQUFRLENBQUNXLE9BQU8sQ0FBQ0osUUFBUUM7UUFDOUIsT0FBTyxJQUFJO0lBQ1o7SUFFQSw0RUFBNEU7SUFFNUUsOEVBQThFLEdBQzlFLEFBQU9JLGNBQWNDLFNBQWlCLEVBQVE7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQ1gsZ0JBQWdCLENBQUNZLFFBQVEsQ0FBQ0QsWUFBWTtZQUMvQyxJQUFJLENBQUNYLGdCQUFnQixDQUFDYSxPQUFPLENBQUNGO1FBQy9CO1FBQ0EsT0FB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
|
|
@@ -1,74 +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 COMPOSE_KEY () {
|
|
13
|
-
return COMPOSE_KEY;
|
|
14
|
-
},
|
|
15
|
-
get ComposeModel () {
|
|
16
|
-
return ComposeModel;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
const _context = require("./context.js");
|
|
20
|
-
const COMPOSE_KEY = (0, _context.modelKey)("compose");
|
|
21
|
-
class ComposeModel {
|
|
22
|
-
_services = new Map();
|
|
23
|
-
_volumes = new Set();
|
|
24
|
-
addService(name, config) {
|
|
25
|
-
this._services.set(name, config);
|
|
26
|
-
return this;
|
|
27
|
-
}
|
|
28
|
-
addVolume(name) {
|
|
29
|
-
this._volumes.add(name);
|
|
30
|
-
return this;
|
|
31
|
-
}
|
|
32
|
-
render() {
|
|
33
|
-
const lines = [
|
|
34
|
-
"services:"
|
|
35
|
-
];
|
|
36
|
-
for (const [name, svc] of this._services){
|
|
37
|
-
lines.push(` ${name}:`);
|
|
38
|
-
if (svc.build) lines.push(` build: ${svc.build}`);
|
|
39
|
-
if (svc.image) lines.push(` image: ${svc.image}`);
|
|
40
|
-
if (svc.command) lines.push(` command: ${svc.command}`);
|
|
41
|
-
if (svc.restart) lines.push(` restart: ${svc.restart}`);
|
|
42
|
-
if (svc.env_file && svc.env_file.length > 0) {
|
|
43
|
-
lines.push(" env_file:");
|
|
44
|
-
for (const f of svc.env_file)lines.push(` - ${f}`);
|
|
45
|
-
}
|
|
46
|
-
if (svc.environment && Object.keys(svc.environment).length > 0) {
|
|
47
|
-
lines.push(" environment:");
|
|
48
|
-
for (const [k, v] of Object.entries(svc.environment)){
|
|
49
|
-
lines.push(` ${k}: ${v}`);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
if (svc.ports && svc.ports.length > 0) {
|
|
53
|
-
lines.push(" ports:");
|
|
54
|
-
for (const p of svc.ports)lines.push(` - "${p}"`);
|
|
55
|
-
}
|
|
56
|
-
if (svc.volumes && svc.volumes.length > 0) {
|
|
57
|
-
lines.push(" volumes:");
|
|
58
|
-
for (const v of svc.volumes)lines.push(` - ${v}`);
|
|
59
|
-
}
|
|
60
|
-
if (svc.depends_on && svc.depends_on.length > 0) {
|
|
61
|
-
lines.push(" depends_on:");
|
|
62
|
-
for (const d of svc.depends_on)lines.push(` - ${d}`);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
if (this._volumes.size > 0) {
|
|
66
|
-
lines.push("");
|
|
67
|
-
lines.push("volumes:");
|
|
68
|
-
for (const v of this._volumes)lines.push(` ${v}:`);
|
|
69
|
-
}
|
|
70
|
-
return `${lines.join("\n")}\n`;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9kb21haW4vY29tcG9zZS5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb2RlbEtleSB9IGZyb20gXCIuL2NvbnRleHQuanNcIjtcblxuZXhwb3J0IGNvbnN0IENPTVBPU0VfS0VZID0gbW9kZWxLZXk8Q29tcG9zZU1vZGVsPihcImNvbXBvc2VcIik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9zZVNlcnZpY2Uge1xuXHRidWlsZD86IHN0cmluZztcblx0aW1hZ2U/OiBzdHJpbmc7XG5cdGVudl9maWxlPzogc3RyaW5nW107XG5cdGVudmlyb25tZW50PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblx0cG9ydHM/OiBzdHJpbmdbXTtcblx0dm9sdW1lcz86IHN0cmluZ1tdO1xuXHRjb21tYW5kPzogc3RyaW5nO1xuXHRyZXN0YXJ0Pzogc3RyaW5nO1xuXHRkZXBlbmRzX29uPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTGl2ZSBidWlsZGVyIGZvciBgZG9ja2VyLWNvbXBvc2UueW1sYC5cbiAqXG4gKiBGZWF0dXJlcyBjYWxsIGBhZGRTZXJ2aWNlYCAvIGBhZGRWb2x1bWVgIGluIHRoZWlyIGBjb25maWd1cmVgIHBoYXNlcy5cbiAqIFRoZSBkZXZjb250YWluZXIgYHJlbmRlcmAgcGhhc2UgY2FsbHMgYHJlbmRlcigpYCBhbmQgd3JpdGVzIHRoZSBmaWxlLlxuICovXG5leHBvcnQgY2xhc3MgQ29tcG9zZU1vZGVsIHtcblx0cHJpdmF0ZSByZWFkb25seSBfc2VydmljZXM6IE1hcDxzdHJpbmcsIENvbXBvc2VTZXJ2aWNlPiA9IG5ldyBNYXAoKTtcblx0cHJpdmF0ZSByZWFkb25seSBfdm9sdW1lczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cblx0cHVibGljIGFkZFNlcnZpY2UobmFtZTogc3RyaW5nLCBjb25maWc6IENvbXBvc2VTZXJ2aWNlKTogdGhpcyB7XG5cdFx0dGhpcy5fc2VydmljZXMuc2V0KG5hbWUsIGNvbmZpZyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgYWRkVm9sdW1lKG5hbWU6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX3ZvbHVtZXMuYWRkKG5hbWUpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHJlbmRlcigpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtcInNlcnZpY2VzOlwiXTtcblxuXHRcdGZvciAoY29uc3QgW25hbWUsIHN2Y10gb2YgdGhpcy5fc2VydmljZXMpIHtcblx0XHRcdGxpbmVzLnB1c2goYCAgJHtuYW1lfTpgKTtcblx0XHRcdGlmIChzdmMuYnVpbGQpIGxpbmVzLnB1c2goYCAgICBidWlsZDogJHtzdmMuYnVpbGR9YCk7XG5cdFx0XHRpZiAoc3ZjLmltYWdlKSBsaW5lcy5wdXNoKGAgICAgaW1hZ2U6ICR7c3ZjLmltYWdlfWApO1xuXHRcdFx0aWYgKHN2Yy5jb21tYW5kKSBsaW5lcy5wdXNoKGAgICAgY29tbWFuZDogJHtzdmMuY29tbWFuZH1gKTtcblx0XHRcdGlmIChzdmMucmVzdGFydCkgbGluZXMucHVzaChgICAgIHJlc3RhcnQ6ICR7c3ZjLnJlc3RhcnR9YCk7XG5cblx0XHRcdGlmIChzdmMuZW52X2ZpbGUgJiYgc3ZjLmVudl9maWxlLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0bGluZXMucHVzaChcIiAgICBlbnZfZmlsZTpcIik7XG5cdFx0XHRcdGZvciAoY29uc3QgZiBvZiBzdmMuZW52X2ZpbGUpIGxpbmVzLnB1c2goYCAgICAgIC0gJHtmfWApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc3ZjLmVudmlyb25tZW50ICYmIE9iamVjdC5rZXlzKHN2Yy5lbnZpcm9ubWVudCkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRsaW5lcy5wdXNoKFwiICAgIGVudmlyb25tZW50OlwiKTtcblx0XHRcdFx0Zm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoc3ZjLmVudmlyb25tZW50KSkge1xuXHRcdFx0XHRcdGxpbmVzLnB1c2goYCAgICAgICR7a306ICR7dn1gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc3ZjLnBvcnRzICYmIHN2Yy5wb3J0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGxpbmVzLnB1c2goXCIgICAgcG9ydHM6XCIpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHAgb2Ygc3ZjLnBvcnRzKSBsaW5lcy5wdXNoKGAgICAgICAtIFwiJHtwfVwiYCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzdmMudm9sdW1lcyAmJiBzdmMudm9sdW1lcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGxpbmVzLnB1c2goXCIgICAgdm9sdW1lczpcIik7XG5cdFx0XHRcdGZvciAoY29uc3QgdiBvZiBzdmMudm9sdW1lcykgbGluZXMucHVzaChgICAgICAgLSAke3Z9YCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzdmMuZGVwZW5kc19vbiAmJiBzdmMuZGVwZW5kc19vbi5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGxpbmVzLnB1c2goXCIgICAgZGVwZW5kc19vbjpcIik7XG5cdFx0XHRcdGZvciAoY29uc3QgZCBvZiBzdmMuZGVwZW5kc19vbikgbGluZXMucHVzaChgICAgICAgLSAke2R9YCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX3ZvbHVtZXMuc2l6ZSA+IDApIHtcblx0XHRcdGxpbmVzLnB1c2goXCJcIik7XG5cdFx0XHRsaW5lcy5wdXNoKFwidm9sdW1lczpcIik7XG5cdFx0XHRmb3IgKGNvbnN0IHYgb2YgdGhpcy5fdm9sdW1lcykgbGluZXMucHVzaChgICAke3Z9OmApO1xuXHRcdH1cblxuXHRcdHJldHVybiBgJHtsaW5lcy5qb2luKFwiXFxuXCIpfVxcbmA7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJDT01QT1NFX0tFWSIsIkNvbXBvc2VNb2RlbCIsIm1vZGVsS2V5IiwiX3NlcnZpY2VzIiwiTWFwIiwiX3ZvbHVtZXMiLCJTZXQiLCJhZGRTZXJ2aWNlIiwibmFtZSIsImNvbmZpZyIsInNldCIsImFkZFZvbHVtZSIsImFkZCIsInJlbmRlciIsImxpbmVzIiwic3ZjIiwicHVzaCIsImJ1aWxkIiwiaW1hZ2UiLCJjb21tYW5kIiwicmVzdGFydCIsImVudl9maWxlIiwibGVuZ3RoIiwiZiIsImVudmlyb25tZW50IiwiT2JqZWN0Iiwia2V5cyIsImsiLCJ2IiwiZW50cmllcyIsInBvcnRzIiwicCIsInZvbHVtZXMiLCJkZXBlbmRzX29uIiwiZCIsInNpemUiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztRQUVhQTtlQUFBQTs7UUFvQkFDO2VBQUFBOzs7eUJBdEJZO0FBRWxCLE1BQU1ELGNBQWNFLElBQUFBLGlCQUFRLEVBQWU7QUFvQjNDLE1BQU1EO0lBQ0tFLFlBQXlDLElBQUlDLE1BQU07SUFDbkRDLFdBQXdCLElBQUlDLE1BQU07SUFFNUNDLFdBQVdDLElBQVksRUFBRUMsTUFBc0IsRUFBUTtRQUM3RCxJQUFJLENBQUNOLFNBQVMsQ0FBQ08sR0FBRyxDQUFDRixNQUFNQztRQUN6QixPQUFPLElBQUk7SUFDWjtJQUVPRSxVQUFVSCxJQUFZLEVBQVE7UUFDcEMsSUFBSSxDQUFDSCxRQUFRLENBQUNPLEdBQUcsQ0FBQ0o7UUFDbEIsT0FBTyxJQUFJO0lBQ1o7SUFFT0ssU0FBaUI7UUFDdkIsTUFBTUMsUUFBa0I7WUFBQztTQUFZO1FBRXJDLEtBQUssTUFBTSxDQUFDTixNQUFNTyxJQUFJLElBQUksSUFBSSxDQUFDWixTQUFTLENBQUU7WUFDekNXLE1BQU1FLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRVIsS0FBSyxDQUFDLENBQUM7WUFDdkIsSUFBSU8sSUFBSUUsS0FBSyxFQUFFSCxNQUFNRSxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUVELElBQUlFLEtBQUssRUFBRTtZQUNuRCxJQUFJRixJQUFJRyxLQUFLLEVBQUVKLE1BQU1FLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRUQsSUFBSUcsS0FBSyxFQUFFO1lBQ25ELElBQUlILElBQUlJLE9BQU8sRUFBRUwsTUFBTUUsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFRCxJQUFJSSxPQUFPLEVBQUU7WUFDekQsSUFBSUosSUFBSUssT0FBTyxFQUFFTixNQUFNRSxJQUFJLENBQUMsQ0FBQyxhQUFhLEVBQUVELElBQUlLLE9BQU8sRUFBRTtZQUV6RCxJQUFJTCxJQUFJTSxRQUFRLElBQUlOLElBQUlNLFFBQVEsQ0FBQ0MsTUFBTSxHQUFHLEdBQUc7Z0JBQzVDUixNQUFNRSxJQUFJLENBQUM7Z0JBQ1gsS0FBSyxNQUFNTyxLQUFLUixJQUFJTSxRQUFRLENBQUVQLE1BQU1FLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRU8sR0FBRztZQUN4RDtZQUVBLElBQUlSLElBQUlTLFdBQVcsSUFBSUMsT0FBT0MsSUFBSSxDQUFDWCxJQUFJUyxXQUFXLEVBQUVGLE1BQU0sR0FBRyxHQUFHO2dCQUMvRFIsTUFBTUUsSUFBSSxDQUFDO2dCQUNYLEtBQUssTUFBTSxDQUFDVyxHQUFHQyxFQUFFLElBQUlILE9BQU9JLE9BQU8sQ0FBQ2QsSUFBSVMsV0FBVyxFQUFHO29CQUNyRFYsTUFBTUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFVyxFQUFFLEVBQUUsRUFBRUMsR0FBRztnQkFDOUI7WUFDRDtZQUVBLElBQUliLElBQUllLEtBQUssSUFBSWYsSUFBSWUsS0FBSyxDQUFDUixNQUFNLEdBQUcsR0FBRztnQkFDdENSLE1BQU1FLElBQUksQ0FBQztnQkFDWCxLQUFLLE1BQU1lLEtBQUtoQixJQUFJZSxLQUFLLENBQUVoQixNQUFNRSxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUVlLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZEO1lBRUEsSUFBSWhCLElBQUlpQixPQUFPLElBQUlqQixJQUFJaUIsT0FBTyxDQUFDVixNQUFNLEdBQUcsR0FBRztnQkFDMUNSLE1BQU1FLElBQUksQ0FBQztnQkFDWCxLQUFLLE1BQU1ZLEtBQUtiLElBQUlpQixPQUFPLENBQUVsQixNQUFNRSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUVZLEdBQUc7WUFDdkQ7WUFFQSxJQUFJYixJQUFJa0IsVUFBVSxJQUFJbEIsSUFBSWtCLFVBQVUsQ0FBQ1gsTUFBTSxHQUFHLEdBQUc7Z0JBQ2hEUixNQUFNRSxJQUFJLENBQUM7Z0JBQ1gsS0FBSyxNQUFNa0IsS0FBS25CLElBQUlrQixVQUFVLENBQUVuQixNQUFNRSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUVrQixHQUFHO1lBQzFEO1FBQ0Q7UUFFQSxJQUFJLElBQUksQ0FBQzdCLFFBQVEsQ0FBQzhCLElBQUksR0FBRyxHQUFHO1lBQzNCckIsTUFBTUUsSUFBSSxDQUFDO1lBQ1hGLE1BQU1FLElBQUksQ0FBQztZQUNYLEtBQUssTUFBTVksS0FBSyxJQUFJLENBQUN2QixRQUFRLENBQUVTLE1BQU1FLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRVksRUFBRSxDQUFDLENBQUM7UUFDcEQ7UUFFQSxPQUFPLEdBQUdkLE1BQU1zQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDL0I7QUFDRCJ9
|
|
@@ -1,53 +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 FeatureModelStore () {
|
|
13
|
-
return FeatureModelStore;
|
|
14
|
-
},
|
|
15
|
-
get createContext () {
|
|
16
|
-
return createContext;
|
|
17
|
-
},
|
|
18
|
-
get modelKey () {
|
|
19
|
-
return modelKey;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
const _nodepath = require("node:path");
|
|
23
|
-
function modelKey(name) {
|
|
24
|
-
return {
|
|
25
|
-
_sym: Symbol(name)
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
class FeatureModelStore {
|
|
29
|
-
_store;
|
|
30
|
-
constructor(store){
|
|
31
|
-
this._store = store ?? new Map();
|
|
32
|
-
}
|
|
33
|
-
get(key) {
|
|
34
|
-
return this._store.get(key._sym);
|
|
35
|
-
}
|
|
36
|
-
set(key, value) {
|
|
37
|
-
const next = new Map(this._store);
|
|
38
|
-
next.set(key._sym, value);
|
|
39
|
-
return new FeatureModelStore(next);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
function createContext(targetDir, opts, template = "api") {
|
|
43
|
-
return {
|
|
44
|
-
projectName: (0, _nodepath.basename)(targetDir),
|
|
45
|
-
targetDir,
|
|
46
|
-
opts,
|
|
47
|
-
template,
|
|
48
|
-
models: new FeatureModelStore(),
|
|
49
|
-
controllers: []
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9kb21haW4vY29udGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiYXNlbmFtZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgQ2xhc3NNb2RlbCB9IGZyb20gXCIuL2NsYXNzLW1vZGVsLmpzXCI7XG5cbi8qKiBUeXBlLXNhZmUga2V5IGZvciBhIHZhbHVlIGluIHRoZSBGZWF0dXJlTW9kZWxTdG9yZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZU1vZGVsS2V5PFQ+IHtcblx0cmVhZG9ubHkgX3N5bTogc3ltYm9sO1xuXHRyZWFkb25seSBfdHlwZT86IFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbEtleTxUPihuYW1lPzogc3RyaW5nKTogRmVhdHVyZU1vZGVsS2V5PFQ+IHtcblx0cmV0dXJuIHsgX3N5bTogU3ltYm9sKG5hbWUpIH07XG59XG5cbi8qKlxuICogSW1tdXRhYmxlIHR5cGVkIHN0b3JlIG9mIGZlYXR1cmUgbW9kZWxzLiBFYWNoIGZlYXR1cmUgZGVmaW5lcyBpdHMgb3duIGtleXNcbiAqICh0eXBlZCB2aWEgYG1vZGVsS2V5PFQ+KClgKSBhbmQgd3JpdGVzIHRvIC8gcmVhZHMgZnJvbSB0aGUgc3RvcmUgZHVyaW5nIHRoZVxuICogYGNvbmZpZ3VyZWAgYW5kIGByZW5kZXJgIHBoYXNlcy4gVGhlIHN0b3JlIGlzIHRoZSBvbmx5IG1lY2hhbmlzbSBieSB3aGljaFxuICogZmVhdHVyZXMgY29tbXVuaWNhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBGZWF0dXJlTW9kZWxTdG9yZSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3N0b3JlOiBSZWFkb25seU1hcDxzeW1ib2wsIHVua25vd24+O1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihzdG9yZT86IFJlYWRvbmx5TWFwPHN5bWJvbCwgdW5rbm93bj4pIHtcblx0XHR0aGlzLl9zdG9yZSA9IHN0b3JlID8/IG5ldyBNYXAoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXQ8VD4oa2V5OiBGZWF0dXJlTW9kZWxLZXk8VD4pOiBUIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fc3RvcmUuZ2V0KGtleS5fc3ltKSBhcyBUIHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0cHVibGljIHNldDxUPihrZXk6IEZlYXR1cmVNb2RlbEtleTxUPiwgdmFsdWU6IFQpOiBGZWF0dXJlTW9kZWxTdG9yZSB7XG5cdFx0Y29uc3QgbmV4dCA9IG5ldyBNYXAodGhpcy5fc3RvcmUpO1xuXHRcdG5leHQuc2V0KGtleS5fc3ltLCB2YWx1ZSk7XG5cdFx0cmV0dXJuIG5ldyBGZWF0dXJlTW9kZWxTdG9yZShuZXh0KTtcblx0fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjYWZmb2xkT3B0aW9ucyB7XG5cdHllcz86IGJvb2xlYW47XG5cdHRlbXBsYXRlPzogXCJhcGlcIiB8IFwiY2xpXCI7XG5cdGRhdGFiYXNlPzogXCJ0eXBlb3JtXCI7XG5cdGlkcD86IFwiYXV0aDBcIjtcblx0cG9zdG1hbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NhZmZvbGRDb250ZXh0IHtcblx0cHJvamVjdE5hbWU6IHN0cmluZztcblx0dGFyZ2V0RGlyOiBzdHJpbmc7XG5cdG9wdHM6IFNjYWZmb2xkT3B0aW9ucztcblx0dGVtcGxhdGU6IFwiYXBpXCIgfCBcImNsaVwiO1xuXHRtb2RlbHM6IEZlYXR1cmVNb2RlbFN0b3JlO1xuXHQvKiogTGl2ZSBjb250cm9sbGVyIG1vZGVscyB0aGF0IGZlYXR1cmVzIGNvbnRyaWJ1dGUgdG8gZHVyaW5nIGNvbmZpZ3VyZS4gKi9cblx0Y29udHJvbGxlcnM6IENsYXNzTW9kZWxbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQoXG5cdHRhcmdldERpcjogc3RyaW5nLFxuXHRvcHRzOiBTY2FmZm9sZE9wdGlvbnMsXG5cdHRlbXBsYXRlOiBcImFwaVwiIHwgXCJjbGlcIiA9IFwiYXBpXCIsXG4pOiBTY2FmZm9sZENvbnRleHQge1xuXHRyZXR1cm4ge1xuXHRcdHByb2plY3ROYW1lOiBiYXNlbmFtZSh0YXJnZXREaXIpLFxuXHRcdHRhcmdldERpcixcblx0XHRvcHRzLFxuXHRcdHRlbXBsYXRlLFxuXHRcdG1vZGVsczogbmV3IEZlYXR1cmVNb2RlbFN0b3JlKCksXG5cdFx0Y29udHJvbGxlcnM6IFtdLFxuXHR9O1xufVxuIl0sIm5hbWVzIjpbIkZlYXR1cmVNb2RlbFN0b3JlIiwiY3JlYXRlQ29udGV4dCIsIm1vZGVsS2V5IiwibmFtZSIsIl9zeW0iLCJTeW1ib2wiLCJfc3RvcmUiLCJzdG9yZSIsIk1hcCIsImdldCIsImtleSIsInNldCIsInZhbHVlIiwibmV4dCIsInRhcmdldERpciIsIm9wdHMiLCJ0ZW1wbGF0ZSIsInByb2plY3ROYW1lIiwiYmFzZW5hbWUiLCJtb2RlbHMiLCJjb250cm9sbGVycyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUFtQmFBO2VBQUFBOztRQW9DR0M7ZUFBQUE7O1FBOUNBQztlQUFBQTs7OzBCQVRTO0FBU2xCLFNBQVNBLFNBQVlDLElBQWE7SUFDeEMsT0FBTztRQUFFQyxNQUFNQyxPQUFPRjtJQUFNO0FBQzdCO0FBUU8sTUFBTUg7SUFDS00sT0FBcUM7SUFFdEQsWUFBbUJDLEtBQW9DLENBQUU7UUFDeEQsSUFBSSxDQUFDRCxNQUFNLEdBQUdDLFNBQVMsSUFBSUM7SUFDNUI7SUFFT0MsSUFBT0MsR0FBdUIsRUFBaUI7UUFDckQsT0FBTyxJQUFJLENBQUNKLE1BQU0sQ0FBQ0csR0FBRyxDQUFDQyxJQUFJTixJQUFJO0lBQ2hDO0lBRU9PLElBQU9ELEdBQXVCLEVBQUVFLEtBQVEsRUFBcUI7UUFDbkUsTUFBTUMsT0FBTyxJQUFJTCxJQUFJLElBQUksQ0FBQ0YsTUFBTTtRQUNoQ08sS0FBS0YsR0FBRyxDQUFDRCxJQUFJTixJQUFJLEVBQUVRO1FBQ25CLE9BQU8sSUFBSVosa0JBQWtCYTtJQUM5QjtBQUNEO0FBb0JPLFNBQVNaLGNBQ2ZhLFNBQWlCLEVBQ2pCQyxJQUFxQixFQUNyQkMsV0FBMEIsS0FBSztJQUUvQixPQUFPO1FBQ05DLGFBQWFDLElBQUFBLGtCQUFRLEVBQUNKO1FBQ3RCQTtRQUNBQztRQUNBQztRQUNBRyxRQUFRLElBQUluQjtRQUNab0IsYUFBYSxFQUFFO0lBQ2hCO0FBQ0QifQ==
|
|
@@ -1,116 +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 DEVCONTAINER_KEY () {
|
|
13
|
-
return DEVCONTAINER_KEY;
|
|
14
|
-
},
|
|
15
|
-
get DevcontainerModel () {
|
|
16
|
-
return DevcontainerModel;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
const _context = require("./context.js");
|
|
20
|
-
const _dockerfilemodel = require("./dockerfile.model.js");
|
|
21
|
-
const DEVCONTAINER_KEY = (0, _context.modelKey)("devcontainer");
|
|
22
|
-
class DevcontainerModel {
|
|
23
|
-
_name;
|
|
24
|
-
_image;
|
|
25
|
-
_composeFile = null;
|
|
26
|
-
_composeService = "app";
|
|
27
|
-
_dockerfile = null;
|
|
28
|
-
_extensions = [];
|
|
29
|
-
_ports = [];
|
|
30
|
-
_postCreateCommands = [];
|
|
31
|
-
_postStartCommands = [];
|
|
32
|
-
_devcontainerFeatures = new Map();
|
|
33
|
-
constructor(name, image = "node:24"){
|
|
34
|
-
this._name = name;
|
|
35
|
-
this._image = image;
|
|
36
|
-
}
|
|
37
|
-
get image() {
|
|
38
|
-
return this._image;
|
|
39
|
-
}
|
|
40
|
-
setImage(image) {
|
|
41
|
-
this._image = image;
|
|
42
|
-
return this;
|
|
43
|
-
}
|
|
44
|
-
/** Switch to Docker Compose mode. Call from a feature that adds a compose service. */ useCompose(file = "docker-compose.yml", service = "devcontainer") {
|
|
45
|
-
this._composeFile = file;
|
|
46
|
-
this._composeService = service;
|
|
47
|
-
this._dockerfile = new _dockerfilemodel.DockerfileModel();
|
|
48
|
-
return this;
|
|
49
|
-
}
|
|
50
|
-
/** The Dockerfile model, available only when in compose mode. */ get dockerfile() {
|
|
51
|
-
return this._dockerfile;
|
|
52
|
-
}
|
|
53
|
-
addExtension(...ids) {
|
|
54
|
-
for (const id of ids){
|
|
55
|
-
if (!this._extensions.includes(id)) this._extensions.push(id);
|
|
56
|
-
}
|
|
57
|
-
return this;
|
|
58
|
-
}
|
|
59
|
-
forwardPort(...ports) {
|
|
60
|
-
for (const port of ports){
|
|
61
|
-
if (!this._ports.includes(port)) this._ports.push(port);
|
|
62
|
-
}
|
|
63
|
-
return this;
|
|
64
|
-
}
|
|
65
|
-
addPostCreateCommand(cmd) {
|
|
66
|
-
if (!this._postCreateCommands.includes(cmd)) this._postCreateCommands.push(cmd);
|
|
67
|
-
return this;
|
|
68
|
-
}
|
|
69
|
-
addPostStartCommand(cmd) {
|
|
70
|
-
if (!this._postStartCommands.includes(cmd)) this._postStartCommands.push(cmd);
|
|
71
|
-
return this;
|
|
72
|
-
}
|
|
73
|
-
/** Add a devcontainer Feature, e.g. `ghcr.io/devcontainers/features/node:1`. */ addFeature(id, options = {}) {
|
|
74
|
-
this._devcontainerFeatures.set(id, options);
|
|
75
|
-
return this;
|
|
76
|
-
}
|
|
77
|
-
render() {
|
|
78
|
-
const obj = {
|
|
79
|
-
name: this._name
|
|
80
|
-
};
|
|
81
|
-
if (this._composeFile) {
|
|
82
|
-
obj.dockerComposeFile = [
|
|
83
|
-
this._composeFile
|
|
84
|
-
];
|
|
85
|
-
obj.service = this._composeService;
|
|
86
|
-
obj.workspaceFolder = "/workspace";
|
|
87
|
-
obj.mounts = [
|
|
88
|
-
"source=..,target=/workspace,type=bind,consistency=cached"
|
|
89
|
-
];
|
|
90
|
-
} else {
|
|
91
|
-
obj.image = this._image;
|
|
92
|
-
}
|
|
93
|
-
if (this._devcontainerFeatures.size > 0) {
|
|
94
|
-
obj.features = Object.fromEntries(this._devcontainerFeatures);
|
|
95
|
-
}
|
|
96
|
-
if (this._extensions.length > 0) {
|
|
97
|
-
obj.customizations = {
|
|
98
|
-
vscode: {
|
|
99
|
-
extensions: this._extensions
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
if (this._ports.length > 0) {
|
|
104
|
-
obj.forwardPorts = this._ports;
|
|
105
|
-
}
|
|
106
|
-
if (this._postCreateCommands.length > 0) {
|
|
107
|
-
obj.postCreateCommand = this._postCreateCommands.length === 1 ? this._postCreateCommands[0] : this._postCreateCommands.join(" && ");
|
|
108
|
-
}
|
|
109
|
-
if (this._postStartCommands.length > 0) {
|
|
110
|
-
obj.postStartCommand = this._postStartCommands.length === 1 ? this._postStartCommands[0] : this._postStartCommands.join(" && ");
|
|
111
|
-
}
|
|
112
|
-
return `${JSON.stringify(obj, null, 2)}\n`;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9kb21haW4vZGV2Y29udGFpbmVyLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1vZGVsS2V5IH0gZnJvbSBcIi4vY29udGV4dC5qc1wiO1xuaW1wb3J0IHsgRG9ja2VyZmlsZU1vZGVsIH0gZnJvbSBcIi4vZG9ja2VyZmlsZS5tb2RlbC5qc1wiO1xuXG5leHBvcnQgY29uc3QgREVWQ09OVEFJTkVSX0tFWSA9IG1vZGVsS2V5PERldmNvbnRhaW5lck1vZGVsPihcImRldmNvbnRhaW5lclwiKTtcblxuLyoqXG4gKiBMaXZlIGJ1aWxkZXIgZm9yIGAuZGV2Y29udGFpbmVyL2RldmNvbnRhaW5lci5qc29uYC5cbiAqXG4gKiBUaGUgYXBpLWNvcmUgZmVhdHVyZSBjcmVhdGVzIGFuIGluc3RhbmNlIGluIGl0cyBgY29uZmlndXJlYCBwaGFzZS5cbiAqIE90aGVyIGZlYXR1cmVzICh0eXBlb3JtLCBhdXRoMCwg4oCmKSBjYWxsIGBhZGRFeHRlbnNpb25gIC8gYGFkZEZlYXR1cmVgIC8gZXRjLlxuICogaW4gdGhlaXIgb3duIGBjb25maWd1cmVgIHBoYXNlcy4gIFRoZSBkZXZjb250YWluZXIgYHJlbmRlcmAgcGhhc2UgY2FsbHMgYHJlbmRlcigpYC5cbiAqL1xuZXhwb3J0IGNsYXNzIERldmNvbnRhaW5lck1vZGVsIHtcblx0cHJpdmF0ZSByZWFkb25seSBfbmFtZTogc3RyaW5nO1xuXHRwcml2YXRlIF9pbWFnZTogc3RyaW5nO1xuXHRwcml2YXRlIF9jb21wb3NlRmlsZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgX2NvbXBvc2VTZXJ2aWNlID0gXCJhcHBcIjtcblx0cHJpdmF0ZSBfZG9ja2VyZmlsZTogRG9ja2VyZmlsZU1vZGVsIHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2V4dGVuc2lvbnM6IHN0cmluZ1tdID0gW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX3BvcnRzOiBudW1iZXJbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9wb3N0Q3JlYXRlQ29tbWFuZHM6IHN0cmluZ1tdID0gW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX3Bvc3RTdGFydENvbW1hbmRzOiBzdHJpbmdbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9kZXZjb250YWluZXJGZWF0dXJlczogTWFwPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID0gbmV3IE1hcCgpO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIGltYWdlID0gXCJub2RlOjI0XCIpIHtcblx0XHR0aGlzLl9uYW1lID0gbmFtZTtcblx0XHR0aGlzLl9pbWFnZSA9IGltYWdlO1xuXHR9XG5cblx0cHVibGljIGdldCBpbWFnZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLl9pbWFnZTtcblx0fVxuXG5cdHB1YmxpYyBzZXRJbWFnZShpbWFnZTogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5faW1hZ2UgPSBpbWFnZTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBTd2l0Y2ggdG8gRG9ja2VyIENvbXBvc2UgbW9kZS4gQ2FsbCBmcm9tIGEgZmVhdHVyZSB0aGF0IGFkZHMgYSBjb21wb3NlIHNlcnZpY2UuICovXG5cdHB1YmxpYyB1c2VDb21wb3NlKGZpbGUgPSBcImRvY2tlci1jb21wb3NlLnltbFwiLCBzZXJ2aWNlID0gXCJkZXZjb250YWluZXJcIik6IHRoaXMge1xuXHRcdHRoaXMuX2NvbXBvc2VGaWxlID0gZmlsZTtcblx0XHR0aGlzLl9jb21wb3NlU2VydmljZSA9IHNlcnZpY2U7XG5cdFx0dGhpcy5fZG9ja2VyZmlsZSA9IG5ldyBEb2NrZXJmaWxlTW9kZWwoKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBUaGUgRG9ja2VyZmlsZSBtb2RlbCwgYXZhaWxhYmxlIG9ubHkgd2hlbiBpbiBjb21wb3NlIG1vZGUuICovXG5cdHB1YmxpYyBnZXQgZG9ja2VyZmlsZSgpOiBEb2NrZXJmaWxlTW9kZWwgfCBudWxsIHtcblx0XHRyZXR1cm4gdGhpcy5fZG9ja2VyZmlsZTtcblx0fVxuXG5cdHB1YmxpYyBhZGRFeHRlbnNpb24oLi4uaWRzOiBzdHJpbmdbXSk6IHRoaXMge1xuXHRcdGZvciAoY29uc3QgaWQgb2YgaWRzKSB7XG5cdFx0XHRpZiAoIXRoaXMuX2V4dGVuc2lvbnMuaW5jbHVkZXMoaWQpKSB0aGlzLl9leHRlbnNpb25zLnB1c2goaWQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBmb3J3YXJkUG9ydCguLi5wb3J0czogbnVtYmVyW10pOiB0aGlzIHtcblx0XHRmb3IgKGNvbnN0IHBvcnQgb2YgcG9ydHMpIHtcblx0XHRcdGlmICghdGhpcy5fcG9ydHMuaW5jbHVkZXMocG9ydCkpIHRoaXMuX3BvcnRzLnB1c2gocG9ydCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGFkZFBvc3RDcmVhdGVDb21tYW5kKGNtZDogc3RyaW5nKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9wb3N0Q3JlYXRlQ29tbWFuZHMuaW5jbHVkZXMoY21kKSkgdGhpcy5fcG9zdENyZWF0ZUNvbW1hbmRzLnB1c2goY21kKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBhZGRQb3N0U3RhcnRDb21tYW5kKGNtZDogc3RyaW5nKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9wb3N0U3RhcnRDb21tYW5kcy5pbmNsdWRlcyhjbWQpKSB0aGlzLl9wb3N0U3RhcnRDb21tYW5kcy5wdXNoKGNtZCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKiogQWRkIGEgZGV2Y29udGFpbmVyIEZlYXR1cmUsIGUuZy4gYGdoY3IuaW8vZGV2Y29udGFpbmVycy9mZWF0dXJlcy9ub2RlOjFgLiAqL1xuXHRwdWJsaWMgYWRkRmVhdHVyZShpZDogc3RyaW5nLCBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9KTogdGhpcyB7XG5cdFx0dGhpcy5fZGV2Y29udGFpbmVyRmVhdHVyZXMuc2V0KGlkLCBvcHRpb25zKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyByZW5kZXIoKTogc3RyaW5nIHtcblx0XHRjb25zdCBvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0geyBuYW1lOiB0aGlzLl9uYW1lIH07XG5cblx0XHRpZiAodGhpcy5fY29tcG9zZUZpbGUpIHtcblx0XHRcdG9iai5kb2NrZXJDb21wb3NlRmlsZSA9IFt0aGlzLl9jb21wb3NlRmlsZV07XG5cdFx0XHRvYmouc2VydmljZSA9IHRoaXMuX2NvbXBvc2VTZXJ2aWNlO1xuXHRcdFx0b2JqLndvcmtzcGFjZUZvbGRlciA9IFwiL3dvcmtzcGFjZVwiO1xuXHRcdFx0b2JqLm1vdW50cyA9IFtcInNvdXJjZT0uLix0YXJnZXQ9L3dvcmtzcGFjZSx0eXBlPWJpbmQsY29uc2lzdGVuY3k9Y2FjaGVkXCJdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvYmouaW1hZ2UgPSB0aGlzLl9pbWFnZTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fZGV2Y29udGFpbmVyRmVhdHVyZXMuc2l6ZSA+IDApIHtcblx0XHRcdG9iai5mZWF0dXJlcyA9IE9iamVjdC5mcm9tRW50cmllcyh0aGlzLl9kZXZjb250YWluZXJGZWF0dXJlcyk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX2V4dGVuc2lvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0b2JqLmN1c3RvbWl6YXRpb25zID0ge1xuXHRcdFx0XHR2c2NvZGU6IHtcblx0XHRcdFx0XHRleHRlbnNpb25zOiB0aGlzLl9leHRlbnNpb25zLFxuXHRcdFx0XHR9LFxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fcG9ydHMubGVuZ3RoID4gMCkge1xuXHRcdFx0b2JqLmZvcndhcmRQb3J0cyA9IHRoaXMuX3BvcnRzO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9wb3N0Q3JlYXRlQ29tbWFuZHMubGVuZ3RoID4gMCkge1xuXHRcdFx0b2JqLnBvc3RDcmVhdGVDb21tYW5kID1cblx0XHRcdFx0dGhpcy5fcG9zdENyZWF0ZUNvbW1hbmRzLmxlbmd0aCA9PT0gMVxuXHRcdFx0XHRcdD8gdGhpcy5fcG9zdENyZWF0ZUNvbW1hbmRzWzBdXG5cdFx0XHRcdFx0OiB0aGlzLl9wb3N0Q3JlYXRlQ29tbWFuZHMuam9pbihcIiAmJiBcIik7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX3Bvc3RTdGFydENvbW1hbmRzLmxlbmd0aCA+IDApIHtcblx0XHRcdG9iai5wb3N0U3RhcnRDb21tYW5kID1cblx0XHRcdFx0dGhpcy5fcG9zdFN0YXJ0Q29tbWFuZHMubGVuZ3RoID09PSAxXG5cdFx0XHRcdFx0PyB0aGlzLl9wb3N0U3RhcnRDb21tYW5kc1swXVxuXHRcdFx0XHRcdDogdGhpcy5fcG9zdFN0YXJ0Q29tbWFuZHMuam9pbihcIiAmJiBcIik7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGAke0pTT04uc3RyaW5naWZ5KG9iaiwgbnVsbCwgMil9XFxuYDtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkRFVkNPTlRBSU5FUl9LRVkiLCJEZXZjb250YWluZXJNb2RlbCIsIm1vZGVsS2V5IiwiX25hbWUiLCJfaW1hZ2UiLCJfY29tcG9zZUZpbGUiLCJfY29tcG9zZVNlcnZpY2UiLCJfZG9ja2VyZmlsZSIsIl9leHRlbnNpb25zIiwiX3BvcnRzIiwiX3Bvc3RDcmVhdGVDb21tYW5kcyIsIl9wb3N0U3RhcnRDb21tYW5kcyIsIl9kZXZjb250YWluZXJGZWF0dXJlcyIsIk1hcCIsIm5hbWUiLCJpbWFnZSIsInNldEltYWdlIiwidXNlQ29tcG9zZSIsImZpbGUiLCJzZXJ2aWNlIiwiRG9ja2VyZmlsZU1vZGVsIiwiZG9ja2VyZmlsZSIsImFkZEV4dGVuc2lvbiIsImlkcyIsImlkIiwiaW5jbHVkZXMiLCJwdXNoIiwiZm9yd2FyZFBvcnQiLCJwb3J0cyIsInBvcnQiLCJhZGRQb3N0Q3JlYXRlQ29tbWFuZCIsImNtZCIsImFkZFBvc3RTdGFydENvbW1hbmQiLCJhZGRGZWF0dXJlIiwib3B0aW9ucyIsInNldCIsInJlbmRlciIsIm9iaiIsImRvY2tlckNvbXBvc2VGaWxlIiwid29ya3NwYWNlRm9sZGVyIiwibW91bnRzIiwic2l6ZSIsImZlYXR1cmVzIiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJsZW5ndGgiLCJjdXN0b21pemF0aW9ucyIsInZzY29kZSIsImV4dGVuc2lvbnMiLCJmb3J3YXJkUG9ydHMiLCJwb3N0Q3JlYXRlQ29tbWFuZCIsImpvaW4iLCJwb3N0U3RhcnRDb21tYW5kIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUFHYUE7ZUFBQUE7O1FBU0FDO2VBQUFBOzs7eUJBWlk7aUNBQ087QUFFekIsTUFBTUQsbUJBQW1CRSxJQUFBQSxpQkFBUSxFQUFvQjtBQVNyRCxNQUFNRDtJQUNLRSxNQUFjO0lBQ3ZCQyxPQUFlO0lBQ2ZDLGVBQThCLEtBQUs7SUFDbkNDLGtCQUFrQixNQUFNO0lBQ3hCQyxjQUFzQyxLQUFLO0lBQ2xDQyxjQUF3QixFQUFFLENBQUM7SUFDM0JDLFNBQW1CLEVBQUUsQ0FBQztJQUN0QkMsc0JBQWdDLEVBQUUsQ0FBQztJQUNuQ0MscUJBQStCLEVBQUUsQ0FBQztJQUNsQ0Msd0JBQThELElBQUlDLE1BQU07SUFFekYsWUFBbUJDLElBQVksRUFBRUMsUUFBUSxTQUFTLENBQUU7UUFDbkQsSUFBSSxDQUFDWixLQUFLLEdBQUdXO1FBQ2IsSUFBSSxDQUFDVixNQUFNLEdBQUdXO0lBQ2Y7SUFFQSxJQUFXQSxRQUFnQjtRQUMxQixPQUFPLElBQUksQ0FBQ1gsTUFBTTtJQUNuQjtJQUVPWSxTQUFTRCxLQUFhLEVBQVE7UUFDcEMsSUFBSSxDQUFDWCxNQUFNLEdBQUdXO1FBQ2QsT0FBTyxJQUFJO0lBQ1o7SUFFQSxvRkFBb0YsR0FDcEYsQUFBT0UsV0FBV0MsT0FBTyxvQkFBb0IsRUFBRUMsVUFBVSxjQUFj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
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "DockerfileModel", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return DockerfileModel;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
class DockerfileModel {
|
|
12
|
-
_baseImage;
|
|
13
|
-
_runs = [];
|
|
14
|
-
constructor(baseImage = "node:24"){
|
|
15
|
-
this._baseImage = baseImage;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Append a RUN instruction executed as root, inserted after the base
|
|
19
|
-
* toolchain setup and before the USER switch.
|
|
20
|
-
*/ addRun(cmd) {
|
|
21
|
-
this._runs.push(cmd);
|
|
22
|
-
return this;
|
|
23
|
-
}
|
|
24
|
-
render() {
|
|
25
|
-
const extras = this._runs.length > 0 ? `\n${this._runs.map((cmd)=>`RUN ${cmd}`).join("\n\n")}\n` : "";
|
|
26
|
-
return `FROM ${this._baseImage}
|
|
27
|
-
|
|
28
|
-
ARG USERNAME=node
|
|
29
|
-
|
|
30
|
-
# System tools: jq + ripgrep for scripting/search, python3 for AI tooling,
|
|
31
|
-
# gh for GitHub workflows, curl/gnupg for package sources.
|
|
32
|
-
RUN apt-get update \\
|
|
33
|
-
&& apt-get install -y --no-install-recommends ca-certificates curl gnupg jq ripgrep python3 \\
|
|
34
|
-
&& curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg -o /usr/share/keyrings/githubcli-archive-keyring.gpg \\
|
|
35
|
-
&& chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \\
|
|
36
|
-
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list \\
|
|
37
|
-
&& apt-get update \\
|
|
38
|
-
&& apt-get install -y --no-install-recommends gh \\
|
|
39
|
-
&& rm -rf /var/lib/apt/lists/*
|
|
40
|
-
|
|
41
|
-
RUN npm install --global npm@latest \\
|
|
42
|
-
&& npm add --global pnpm@10
|
|
43
|
-
|
|
44
|
-
RUN mkdir -p /home/\${USERNAME}/.config/pnpm /home/\${USERNAME}/.pnpm-store \\
|
|
45
|
-
&& chown -R \${USERNAME}:\${USERNAME} /home/\${USERNAME}/.config /home/\${USERNAME}/.pnpm-store \\
|
|
46
|
-
&& printf "store-dir=/home/\${USERNAME}/.pnpm-store\\n" > /home/\${USERNAME}/.config/pnpm/rc
|
|
47
|
-
|
|
48
|
-
# Pre-create workspace node_modules so the named volume mount is owned by the user
|
|
49
|
-
RUN mkdir -p /workspace/node_modules && chown \${USERNAME}:\${USERNAME} /workspace/node_modules
|
|
50
|
-
|
|
51
|
-
RUN mkdir /commandhistory && touch /commandhistory/.bash_history \\
|
|
52
|
-
&& chown -R \${USERNAME} /commandhistory
|
|
53
|
-
|
|
54
|
-
RUN SNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \\
|
|
55
|
-
&& echo "$SNIPPET" >> "/home/\${USERNAME}/.bashrc"
|
|
56
|
-
${extras}
|
|
57
|
-
USER \${USERNAME}
|
|
58
|
-
`;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9kb21haW4vZG9ja2VyZmlsZS5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRG9ja2VyZmlsZU1vZGVsIHtcblx0cHJpdmF0ZSByZWFkb25seSBfYmFzZUltYWdlOiBzdHJpbmc7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3J1bnM6IHN0cmluZ1tdID0gW107XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKGJhc2VJbWFnZSA9IFwibm9kZToyNFwiKSB7XG5cdFx0dGhpcy5fYmFzZUltYWdlID0gYmFzZUltYWdlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFwcGVuZCBhIFJVTiBpbnN0cnVjdGlvbiBleGVjdXRlZCBhcyByb290LCBpbnNlcnRlZCBhZnRlciB0aGUgYmFzZVxuXHQgKiB0b29sY2hhaW4gc2V0dXAgYW5kIGJlZm9yZSB0aGUgVVNFUiBzd2l0Y2guXG5cdCAqL1xuXHRwdWJsaWMgYWRkUnVuKGNtZDogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fcnVucy5wdXNoKGNtZCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgcmVuZGVyKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgZXh0cmFzID1cblx0XHRcdHRoaXMuX3J1bnMubGVuZ3RoID4gMCA/IGBcXG4ke3RoaXMuX3J1bnMubWFwKChjbWQpID0+IGBSVU4gJHtjbWR9YCkuam9pbihcIlxcblxcblwiKX1cXG5gIDogXCJcIjtcblxuXHRcdHJldHVybiBgRlJPTSAke3RoaXMuX2Jhc2VJbWFnZX1cblxuQVJHIFVTRVJOQU1FPW5vZGVcblxuIyBTeXN0ZW0gdG9vbHM6IGpxICsgcmlwZ3JlcCBmb3Igc2NyaXB0aW5nL3NlYXJjaCwgcHl0aG9uMyBmb3IgQUkgdG9vbGluZyxcbiMgZ2ggZm9yIEdpdEh1YiB3b3JrZmxvd3MsIGN1cmwvZ251cGcgZm9yIHBhY2thZ2Ugc291cmNlcy5cblJVTiBhcHQtZ2V0IHVwZGF0ZSBcXFxcXG4gICAgJiYgYXB0LWdldCBpbnN0YWxsIC15IC0tbm8taW5zdGFsbC1yZWNvbW1lbmRzIGNhLWNlcnRpZmljYXRlcyBjdXJsIGdudXBnIGpxIHJpcGdyZXAgcHl0aG9uMyBcXFxcXG4gICAgJiYgY3VybCAtZnNTTCBodHRwczovL2NsaS5naXRodWIuY29tL3BhY2thZ2VzL2dpdGh1YmNsaS1hcmNoaXZlLWtleXJpbmcuZ3BnIC1vIC91c3Ivc2hhcmUva2V5cmluZ3MvZ2l0aHViY2xpLWFyY2hpdmUta2V5cmluZy5ncGcgXFxcXFxuICAgICYmIGNobW9kIGdvK3IgL3Vzci9zaGFyZS9rZXlyaW5ncy9naXRodWJjbGktYXJjaGl2ZS1rZXlyaW5nLmdwZyBcXFxcXG4gICAgJiYgZWNobyBcImRlYiBbYXJjaD0kKGRwa2cgLS1wcmludC1hcmNoaXRlY3R1cmUpIHNpZ25lZC1ieT0vdXNyL3NoYXJlL2tleXJpbmdzL2dpdGh1YmNsaS1hcmNoaXZlLWtleXJpbmcuZ3BnXSBodHRwczovL2NsaS5naXRodWIuY29tL3BhY2thZ2VzIHN0YWJsZSBtYWluXCIgPiAvZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9naXRodWItY2xpLmxpc3QgXFxcXFxuICAgICYmIGFwdC1nZXQgdXBkYXRlIFxcXFxcbiAgICAmJiBhcHQtZ2V0IGluc3RhbGwgLXkgLS1uby1pbnN0YWxsLXJlY29tbWVuZHMgZ2ggXFxcXFxuICAgICYmIHJtIC1yZiAvdmFyL2xpYi9hcHQvbGlzdHMvKlxuXG5SVU4gbnBtIGluc3RhbGwgLS1nbG9iYWwgbnBtQGxhdGVzdCBcXFxcXG4gICAgJiYgbnBtIGFkZCAtLWdsb2JhbCBwbnBtQDEwXG5cblJVTiBta2RpciAtcCAvaG9tZS9cXCR7VVNFUk5BTUV9Ly5jb25maWcvcG5wbSAvaG9tZS9cXCR7VVNFUk5BTUV9Ly5wbnBtLXN0b3JlIFxcXFxcbiAgICAmJiBjaG93biAtUiBcXCR7VVNFUk5BTUV9OlxcJHtVU0VSTkFNRX0gL2hvbWUvXFwke1VTRVJOQU1FfS8uY29uZmlnIC9ob21lL1xcJHtVU0VSTkFNRX0vLnBucG0tc3RvcmUgXFxcXFxuICAgICYmIHByaW50ZiBcInN0b3JlLWRpcj0vaG9tZS9cXCR7VVNFUk5BTUV9Ly5wbnBtLXN0b3JlXFxcXG5cIiA+IC9ob21lL1xcJHtVU0VSTkFNRX0vLmNvbmZpZy9wbnBtL3JjXG5cbiMgUHJlLWNyZWF0ZSB3b3Jrc3BhY2Ugbm9kZV9tb2R1bGVzIHNvIHRoZSBuYW1lZCB2b2x1bWUgbW91bnQgaXMgb3duZWQgYnkgdGhlIHVzZXJcblJVTiBta2RpciAtcCAvd29ya3NwYWNlL25vZGVfbW9kdWxlcyAmJiBjaG93biBcXCR7VVNFUk5BTUV9OlxcJHtVU0VSTkFNRX0gL3dvcmtzcGFjZS9ub2RlX21vZHVsZXNcblxuUlVOIG1rZGlyIC9jb21tYW5kaGlzdG9yeSAmJiB0b3VjaCAvY29tbWFuZGhpc3RvcnkvLmJhc2hfaGlzdG9yeSBcXFxcXG4gICAgJiYgY2hvd24gLVIgXFwke1VTRVJOQU1FfSAvY29tbWFuZGhpc3RvcnlcblxuUlVOIFNOSVBQRVQ9XCJleHBvcnQgUFJPTVBUX0NPTU1BTkQ9J2hpc3RvcnkgLWEnICYmIGV4cG9ydCBISVNURklMRT0vY29tbWFuZGhpc3RvcnkvLmJhc2hfaGlzdG9yeVwiIFxcXFxcbiAgICAmJiBlY2hvIFwiJFNOSVBQRVRcIiA+PiBcIi9ob21lL1xcJHtVU0VSTkFNRX0vLmJhc2hyY1wiXG4ke2V4dHJhc31cblVTRVIgXFwke1VTRVJOQU1FfVxuYDtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkRvY2tlcmZpbGVNb2RlbCIsIl9iYXNlSW1hZ2UiLCJfcnVucyIsImJhc2VJbWFnZSIsImFkZFJ1biIsImNtZCIsInB1c2giLCJyZW5kZXIiLCJleHRyYXMiLCJsZW5ndGgiLCJtYXAiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7OytCQUFhQTs7O2VBQUFBOzs7QUFBTixNQUFNQTtJQUNLQyxXQUFtQjtJQUNuQkMsUUFBa0IsRUFBRSxDQUFDO0lBRXRDLFlBQW1CQyxZQUFZLFNBQVMsQ0FBRTtRQUN6QyxJQUFJLENBQUNGLFVBQVUsR0FBR0U7SUFDbkI7SUFFQTs7O0VBR0MsR0FDRCxBQUFPQyxPQUFPQyxHQUFXLEVBQVE7UUFDaEMsSUFBSSxDQUFDSCxLQUFLLENBQUNJLElBQUksQ0FBQ0Q7UUFDaEIsT0FBTyxJQUFJO0lBQ1o7SUFFT0UsU0FBaUI7UUFDdkIsTUFBTUMsU0FDTCxJQUFJLENBQUNOLEtBQUssQ0FBQ08sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDUCxLQUFLLENBQUNRLEdBQUcsQ0FBQyxDQUFDTCxNQUFRLENBQUMsSUFBSSxFQUFFQSxLQUFLLEVBQUVNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHO1FBRXZGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDVixVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThCakMsRUFBRU8sT0FBTzs7QUFFVCxDQUFDO0lBQ0E7QUFDRCJ9
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "PHASES", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return PHASES;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const PHASES = [
|
|
12
|
-
"resolve",
|
|
13
|
-
"configure",
|
|
14
|
-
"render",
|
|
15
|
-
"integrate",
|
|
16
|
-
"finalize"
|
|
17
|
-
];
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9kb21haW4vZmVhdHVyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNjYWZmb2xkQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHQuanNcIjtcblxuZXhwb3J0IHR5cGUgU2NhZmZvbGRTdGVwID0gKGN0eDogU2NhZmZvbGRDb250ZXh0KSA9PiBQcm9taXNlPFNjYWZmb2xkQ29udGV4dD47XG5cbi8qKlxuICogQSBGZWF0dXJlIGlzIGEgc2VsZi1jb250YWluZWQgdW5pdCBvZiBzY2FmZm9sZGluZyBiZWhhdmlvci4gRWFjaCBmZWF0dXJlXG4gKiBtYXkgY29udHJpYnV0ZSB0byBvbmUgb3IgbW9yZSBwaGFzZXMuIFBoYXNlcyBydW4gaW4gb3JkZXIgYWNyb3NzIGFsbFxuICogZmVhdHVyZXMsIHNvIGFueSBjcm9zcy1mZWF0dXJlIGRlcGVuZGVuY3kgb24gc2hhcmVkIG1vZGVscyBpcyBuYXR1cmFsbHlcbiAqIHNhdGlzZmllZCAoZS5nLiBgdHlwZW9ybS5jb25maWd1cmVgIHJ1bnMgYmVmb3JlIGBhcGlDb3JlLnJlbmRlcmApLlxuICpcbiAqIFBoYXNlcyAoaW4gZXhlY3V0aW9uIG9yZGVyKTpcbiAqICAgMS4gcmVzb2x2ZSAgIOKAlCBpbnRlcmFjdGl2ZSBwcm9tcHRzOyBtYXkgdXBkYXRlIGN0eC5vcHRzIG9yIHNlZWQgbW9kZWxzXG4gKiAgIDIuIGNvbmZpZ3VyZSDigJQgcHVyZSBtb2RlbCBjb250cmlidXRpb25zIHRvIHRoZSBGZWF0dXJlTW9kZWxTdG9yZVxuICogICAzLiByZW5kZXIgICAg4oCUIHJlYWQgbW9kZWxzLCB3cml0ZSBmaWxlcyB0byBkaXNrXG4gKiAgIDQuIGludGVncmF0ZSDigJQgZXh0ZXJuYWwgc3lzdGVtIGNhbGxzIChDTEkgYmluYXJpZXMsIFJFU1QgQVBJcylcbiAqICAgNS4gZmluYWxpemUgIOKAlCBpbnN0YWxsIGRlcHMsIHByaW50IG5leHQgc3RlcHMsIGV0Yy5cbiAqXG4gKiBgZW5hYmxlZChjdHgpYCBpcyByZS1ldmFsdWF0ZWQgYmVmb3JlIGVhY2ggcGhhc2Ugc28gZmVhdHVyZXMgY2FuIG9wdCBpblxuICogYmFzZWQgb24gb3B0aW9ucyBzZXQgYnkgZWFybGllciBgcmVzb2x2ZWAgcGhhc2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmUge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGVuYWJsZWQ/OiAoY3R4OiBTY2FmZm9sZENvbnRleHQpID0+IGJvb2xlYW47XG5cdHJlc29sdmU/OiBTY2FmZm9sZFN0ZXA7XG5cdGNvbmZpZ3VyZT86IFNjYWZmb2xkU3RlcDtcblx0cmVuZGVyPzogU2NhZmZvbGRTdGVwO1xuXHRpbnRlZ3JhdGU/OiBTY2FmZm9sZFN0ZXA7XG5cdGZpbmFsaXplPzogU2NhZmZvbGRTdGVwO1xufVxuXG5leHBvcnQgdHlwZSBQaGFzZSA9IFwicmVzb2x2ZVwiIHwgXCJjb25maWd1cmVcIiB8IFwicmVuZGVyXCIgfCBcImludGVncmF0ZVwiIHwgXCJmaW5hbGl6ZVwiO1xuXG5leHBvcnQgY29uc3QgUEhBU0VTOiByZWFkb25seSBQaGFzZVtdID0gW1xuXHRcInJlc29sdmVcIixcblx0XCJjb25maWd1cmVcIixcblx0XCJyZW5kZXJcIixcblx0XCJpbnRlZ3JhdGVcIixcblx0XCJmaW5hbGl6ZVwiLFxuXTtcbiJdLCJuYW1lcyI6WyJQSEFTRVMiXSwibWFwcGluZ3MiOiI7Ozs7K0JBZ0NhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSxTQUEyQjtJQUN2QztJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0EifQ==
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Groups imports from the same package, rendering mixed value+type imports
|
|
3
|
-
* as `import { A, type B } from "pkg"` rather than two separate statements.
|
|
4
|
-
*/ "use strict";
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
Object.defineProperty(exports, "ImportMap", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function() {
|
|
11
|
-
return ImportMap;
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
class ImportMap {
|
|
15
|
-
_packages = new Map();
|
|
16
|
-
_entry(pkg) {
|
|
17
|
-
const existing = this._packages.get(pkg);
|
|
18
|
-
if (existing) return existing;
|
|
19
|
-
const e = {
|
|
20
|
-
named: new Set(),
|
|
21
|
-
types: new Set(),
|
|
22
|
-
sideEffect: false
|
|
23
|
-
};
|
|
24
|
-
this._packages.set(pkg, e);
|
|
25
|
-
return e;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Add named value imports.
|
|
29
|
-
* Called with no names, registers a side-effect `import "pkg"`.
|
|
30
|
-
*/ add(pkg, ...names) {
|
|
31
|
-
const e = this._entry(pkg);
|
|
32
|
-
if (names.length === 0) e.sideEffect = true;
|
|
33
|
-
else for (const n of names)e.named.add(n);
|
|
34
|
-
return this;
|
|
35
|
-
}
|
|
36
|
-
/** Add type-only named imports. */ addType(pkg, ...names) {
|
|
37
|
-
const e = this._entry(pkg);
|
|
38
|
-
for (const n of names)e.types.add(n);
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Render to an array of import statement strings (insertion order preserved).
|
|
43
|
-
*
|
|
44
|
-
* - All-type package → `import type { A, B } from "pkg";`
|
|
45
|
-
* - All-value package → `import { A, B } from "pkg";`
|
|
46
|
-
* - Mixed package → `import { A, type B } from "pkg";`
|
|
47
|
-
* - Side-effect only → `import "pkg";`
|
|
48
|
-
*/ render() {
|
|
49
|
-
const lines = [];
|
|
50
|
-
for (const [pkg, e] of this._packages){
|
|
51
|
-
if (e.sideEffect) lines.push(`import "${pkg}";`);
|
|
52
|
-
const named = [
|
|
53
|
-
...e.named
|
|
54
|
-
].sort();
|
|
55
|
-
const types = [
|
|
56
|
-
...e.types
|
|
57
|
-
].sort();
|
|
58
|
-
if (named.length === 0 && types.length > 0) {
|
|
59
|
-
lines.push(`import type { ${types.join(", ")} } from "${pkg}";`);
|
|
60
|
-
} else if (named.length > 0 && types.length === 0) {
|
|
61
|
-
lines.push(`import { ${named.join(", ")} } from "${pkg}";`);
|
|
62
|
-
} else if (named.length > 0 && types.length > 0) {
|
|
63
|
-
const all = [
|
|
64
|
-
...named,
|
|
65
|
-
...types.map((t)=>`type ${t}`)
|
|
66
|
-
].join(", ");
|
|
67
|
-
lines.push(`import { ${all} } from "${pkg}";`);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return lines;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9kb21haW4vaW1wb3J0LW1hcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdyb3VwcyBpbXBvcnRzIGZyb20gdGhlIHNhbWUgcGFja2FnZSwgcmVuZGVyaW5nIG1peGVkIHZhbHVlK3R5cGUgaW1wb3J0c1xuICogYXMgYGltcG9ydCB7IEEsIHR5cGUgQiB9IGZyb20gXCJwa2dcImAgcmF0aGVyIHRoYW4gdHdvIHNlcGFyYXRlIHN0YXRlbWVudHMuXG4gKi9cblxuaW50ZXJmYWNlIFBhY2thZ2VFbnRyeSB7XG5cdG5hbWVkOiBTZXQ8c3RyaW5nPjtcblx0dHlwZXM6IFNldDxzdHJpbmc+O1xuXHRzaWRlRWZmZWN0OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgSW1wb3J0TWFwIHtcblx0cHJpdmF0ZSByZWFkb25seSBfcGFja2FnZXMgPSBuZXcgTWFwPHN0cmluZywgUGFja2FnZUVudHJ5PigpO1xuXG5cdHByaXZhdGUgX2VudHJ5KHBrZzogc3RyaW5nKTogUGFja2FnZUVudHJ5IHtcblx0XHRjb25zdCBleGlzdGluZyA9IHRoaXMuX3BhY2thZ2VzLmdldChwa2cpO1xuXHRcdGlmIChleGlzdGluZykgcmV0dXJuIGV4aXN0aW5nO1xuXHRcdGNvbnN0IGU6IFBhY2thZ2VFbnRyeSA9IHsgbmFtZWQ6IG5ldyBTZXQoKSwgdHlwZXM6IG5ldyBTZXQoKSwgc2lkZUVmZmVjdDogZmFsc2UgfTtcblx0XHR0aGlzLl9wYWNrYWdlcy5zZXQocGtnLCBlKTtcblx0XHRyZXR1cm4gZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgbmFtZWQgdmFsdWUgaW1wb3J0cy5cblx0ICogQ2FsbGVkIHdpdGggbm8gbmFtZXMsIHJlZ2lzdGVycyBhIHNpZGUtZWZmZWN0IGBpbXBvcnQgXCJwa2dcImAuXG5cdCAqL1xuXHRwdWJsaWMgYWRkKHBrZzogc3RyaW5nLCAuLi5uYW1lczogc3RyaW5nW10pOiB0aGlzIHtcblx0XHRjb25zdCBlID0gdGhpcy5fZW50cnkocGtnKTtcblx0XHRpZiAobmFtZXMubGVuZ3RoID09PSAwKSBlLnNpZGVFZmZlY3QgPSB0cnVlO1xuXHRcdGVsc2UgZm9yIChjb25zdCBuIG9mIG5hbWVzKSBlLm5hbWVkLmFkZChuKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBBZGQgdHlwZS1vbmx5IG5hbWVkIGltcG9ydHMuICovXG5cdHB1YmxpYyBhZGRUeXBlKHBrZzogc3RyaW5nLCAuLi5uYW1lczogc3RyaW5nW10pOiB0aGlzIHtcblx0XHRjb25zdCBlID0gdGhpcy5fZW50cnkocGtnKTtcblx0XHRmb3IgKGNvbnN0IG4gb2YgbmFtZXMpIGUudHlwZXMuYWRkKG4pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbmRlciB0byBhbiBhcnJheSBvZiBpbXBvcnQgc3RhdGVtZW50IHN0cmluZ3MgKGluc2VydGlvbiBvcmRlciBwcmVzZXJ2ZWQpLlxuXHQgKlxuXHQgKiAtIEFsbC10eXBlIHBhY2thZ2UgIOKGkiBgaW1wb3J0IHR5cGUgeyBBLCBCIH0gZnJvbSBcInBrZ1wiO2Bcblx0ICogLSBBbGwtdmFsdWUgcGFja2FnZSDihpIgYGltcG9ydCB7IEEsIEIgfSBmcm9tIFwicGtnXCI7YFxuXHQgKiAtIE1peGVkIHBhY2thZ2UgICAgIOKGkiBgaW1wb3J0IHsgQSwgdHlwZSBCIH0gZnJvbSBcInBrZ1wiO2Bcblx0ICogLSBTaWRlLWVmZmVjdCBvbmx5ICDihpIgYGltcG9ydCBcInBrZ1wiO2Bcblx0ICovXG5cdHB1YmxpYyByZW5kZXIoKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGZvciAoY29uc3QgW3BrZywgZV0gb2YgdGhpcy5fcGFja2FnZXMpIHtcblx0XHRcdGlmIChlLnNpZGVFZmZlY3QpIGxpbmVzLnB1c2goYGltcG9ydCBcIiR7cGtnfVwiO2ApO1xuXG5cdFx0XHRjb25zdCBuYW1lZCA9IFsuLi5lLm5hbWVkXS5zb3J0KCk7XG5cdFx0XHRjb25zdCB0eXBlcyA9IFsuLi5lLnR5cGVzXS5zb3J0KCk7XG5cblx0XHRcdGlmIChuYW1lZC5sZW5ndGggPT09IDAgJiYgdHlwZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRsaW5lcy5wdXNoKGBpbXBvcnQgdHlwZSB7ICR7dHlwZXMuam9pbihcIiwgXCIpfSB9IGZyb20gXCIke3BrZ31cIjtgKTtcblx0XHRcdH0gZWxzZSBpZiAobmFtZWQubGVuZ3RoID4gMCAmJiB0eXBlcy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0bGluZXMucHVzaChgaW1wb3J0IHsgJHtuYW1lZC5qb2luKFwiLCBcIil9IH0gZnJvbSBcIiR7cGtnfVwiO2ApO1xuXHRcdFx0fSBlbHNlIGlmIChuYW1lZC5sZW5ndGggPiAwICYmIHR5cGVzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y29uc3QgYWxsID0gWy4uLm5hbWVkLCAuLi50eXBlcy5tYXAoKHQpID0+IGB0eXBlICR7dH1gKV0uam9pbihcIiwgXCIpO1xuXHRcdFx0XHRsaW5lcy5wdXNoKGBpbXBvcnQgeyAke2FsbH0gfSBmcm9tIFwiJHtwa2d9XCI7YCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBsaW5lcztcblx0fVxufVxuIl0sIm5hbWVzIjpbIkltcG9ydE1hcCIsIl9wYWNrYWdlcyIsIk1hcCIsIl9lbnRyeSIsInBrZyIsImV4aXN0aW5nIiwiZ2V0IiwiZSIsIm5hbWVkIiwiU2V0IiwidHlwZXMiLCJzaWRlRWZmZWN0Iiwic2V0IiwiYWRkIiwibmFtZXMiLCJsZW5ndGgiLCJuIiwiYWRkVHlwZSIsInJlbmRlciIsImxpbmVzIiwicHVzaCIsInNvcnQiLCJqb2luIiwiYWxsIiwibWFwIiwidCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDOzs7OytCQVFZQTs7O2VBQUFBOzs7QUFBTixNQUFNQTtJQUNLQyxZQUFZLElBQUlDLE1BQTRCO0lBRXJEQyxPQUFPQyxHQUFXLEVBQWdCO1FBQ3pDLE1BQU1DLFdBQVcsSUFBSSxDQUFDSixTQUFTLENBQUNLLEdBQUcsQ0FBQ0Y7UUFDcEMsSUFBSUMsVUFBVSxPQUFPQTtRQUNyQixNQUFNRSxJQUFrQjtZQUFFQyxPQUFPLElBQUlDO1lBQU9DLE9BQU8sSUFBSUQ7WUFBT0UsWUFBWTtRQUFNO1FBQ2hGLElBQUksQ0FBQ1YsU0FBUyxDQUFDVyxHQUFHLENBQUNSLEtBQUtHO1FBQ3hCLE9BQU9BO0lBQ1I7SUFFQTs7O0VBR0MsR0FDRCxBQUFPTSxJQUFJVCxHQUFXLEVBQUUsR0FBR1UsS0FBZSxFQUFRO1FBQ2pELE1BQU1QLElBQUksSUFBSSxDQUFDSixNQUFNLENBQUNDO1FBQ3RCLElBQUlVLE1BQU1DLE1BQU0sS0FBSyxHQUFHUixFQUFFSSxVQUFVLEdBQUc7YUFDbEMsS0FBSyxNQUFNSyxLQUFLRixNQUFPUCxFQUFFQyxLQUFLLENBQUNLLEdBQUcsQ0FBQ0c7UUFDeEMsT0FBTyxJQUFJO0lBQ1o7SUFFQSxpQ0FBaUMsR0FDakMsQUFBT0MsUUFBUWIsR0FBVyxFQUFFLEdBQUdVLEtBQWUsRUFBUTtRQUNyRCxNQUFNUCxJQUFJLElBQUksQ0FBQ0osTUFBTSxDQUFDQztRQUN0QixLQUFLLE1BQU1ZLEtBQUtGLE1BQU9QLEVBQUVHLEtBQUssQ0FBQ0csR0FBRyxDQUFDRztRQUNuQyxPQUFPLElBQUk7SUFDWjtJQUVBOzs7Ozs7O0VBT0MsR0FDRCxBQUFPRSxTQUFtQjtRQUN6QixNQUFNQyxRQUFrQixFQUFFO1FBQzFCLEtBQUssTUFBTSxDQUFDZixLQUFLRyxFQUFFLElBQUksSUFBSSxDQUFDTixTQUFTLENBQUU7WUFDdEMsSUFBSU0sRUFBRUksVUFBVSxFQUFFUSxNQUFNQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUVoQixJQUFJLEVBQUUsQ0FBQztZQUUvQyxNQUFNSSxRQUFRO21CQUFJRCxFQUFFQyxLQUFLO2FBQUMsQ0FBQ2EsSUFBSTtZQUMvQixNQUFNWCxRQUFRO21CQUFJSCxFQUFFRyxLQUFLO2FBQUMsQ0FBQ1csSUFBSTtZQUUvQixJQUFJYixNQUFNTyxNQUFNLEtBQUssS0FBS0wsTUFBTUssTUFBTSxHQUFHLEdBQUc7Z0JBQzNDSSxNQUFNQyxJQUFJLENBQUMsQ0FBQyxjQUFjLEVBQUVWLE1BQU1ZLElBQUksQ0FBQyxNQUFNLFNBQVMsRUFBRWxCLElBQUksRUFBRSxDQUFDO1lBQ2hFLE9BQU8sSUFBSUksTUFBTU8sTUFBTSxHQUFHLEtBQUtMLE1BQU1LLE1BQU0sS0FBSyxHQUFHO2dCQUNsREksTUFBTUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFWixNQUFNYyxJQUFJLENBQUMsTUFBTSxTQUFTLEVBQUVsQixJQUFJLEVBQUUsQ0FBQztZQUMzRCxPQUFPLElBQUlJLE1BQU1PLE1BQU0sR0FBRyxLQUFLTCxNQUFNSyxNQUFNLEdBQUcsR0FBRztnQkFDaEQsTUFBTVEsTUFBTTt1QkFBSWY7dUJBQVVFLE1BQU1jLEdBQUcsQ0FBQyxDQUFDQyxJQUFNLENBQUMsS0FBSyxFQUFFQSxHQUFHO2lCQUFFLENBQUNILElBQUksQ0FBQztnQkFDOURILE1BQU1DLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRUcsSUFBSSxTQUFTLEVBQUVuQixJQUFJLEVBQUUsQ0FBQztZQUM5QztRQUNEO1FBQ0EsT0FBT2U7SUFDUjtBQUNEIn0=
|