@devbie/newbie-cli 1.5.0 → 1.7.0
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/README.md +40 -21
- package/dist/assemble/deploy.d.ts +14 -0
- package/dist/assemble/deploy.js +77 -0
- package/dist/assemble/deploy.js.map +1 -0
- package/dist/assemble/modules-copy.js +1 -1
- package/dist/assemble/modules-copy.js.map +1 -1
- package/dist/assemble/pipeline.js +3 -3
- package/dist/assemble/pipeline.js.map +1 -1
- package/dist/commands/assemble.d.ts +5 -0
- package/dist/commands/assemble.js +37 -0
- package/dist/commands/assemble.js.map +1 -0
- package/dist/commands/update-template.js +53 -15
- package/dist/commands/update-template.js.map +1 -1
- package/dist/constants/paths.d.ts +2 -0
- package/dist/constants/paths.js +3 -1
- package/dist/constants/paths.js.map +1 -1
- package/dist/core/caddyfile-modules.d.ts +2 -0
- package/dist/core/caddyfile-modules.js +23 -0
- package/dist/core/caddyfile-modules.js.map +1 -0
- package/dist/core/datastore-registry.d.ts +30 -0
- package/dist/core/datastore-registry.js +86 -0
- package/dist/core/datastore-registry.js.map +1 -0
- package/dist/core/deploy-compose.d.ts +5 -0
- package/dist/core/deploy-compose.js +113 -0
- package/dist/core/deploy-compose.js.map +1 -0
- package/dist/core/layer-lint.d.ts +1 -1
- package/dist/core/layer-lint.js +15 -4
- package/dist/core/layer-lint.js.map +1 -1
- package/dist/core/module-manifest.d.ts +1 -2
- package/dist/core/module-manifest.js +8 -0
- package/dist/core/module-manifest.js.map +1 -1
- package/dist/core/template-sync.d.ts +32 -13
- package/dist/core/template-sync.js +177 -65
- package/dist/core/template-sync.js.map +1 -1
- package/dist/index.js +12 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/drift.js +2 -2
- package/dist/lib/drift.js.map +1 -1
- package/dist/lib/version.js.map +1 -1
- package/package.json +1 -1
- package/dist/assemble/assets.d.ts +0 -9
- package/dist/assemble/assets.js +0 -49
- package/dist/assemble/assets.js.map +0 -1
- package/dist/core/assets.d.ts +0 -8
- package/dist/core/assets.js +0 -30
- package/dist/core/assets.js.map +0 -1
package/README.md
CHANGED
|
@@ -80,6 +80,18 @@ requirements).
|
|
|
80
80
|
| ----------- | -------------------------- |
|
|
81
81
|
| `-y, --yes` | Skip confirmation prompts. |
|
|
82
82
|
|
|
83
|
+
#### `newbie assemble`
|
|
84
|
+
|
|
85
|
+
Regenerate the module-derived deploy assets from the installed module set:
|
|
86
|
+
`deploy/compose.modules.yml` (datastore services rendered from the CLI
|
|
87
|
+
datastore registry, ADR-008) and the `@@newbie-modules` route block of
|
|
88
|
+
`deploy/Caddyfile.tmpl` (one `handle /<key>/*` block per module declaring
|
|
89
|
+
`publicNamespace`). The same renders run as a step of install/apply/update.
|
|
90
|
+
|
|
91
|
+
| Option | Description |
|
|
92
|
+
| --------- | -------------------------------------------------------------------------- |
|
|
93
|
+
| `--check` | CI gate: print the diff and exit non-zero when the generated assets drift. |
|
|
94
|
+
|
|
83
95
|
#### `newbie config`
|
|
84
96
|
|
|
85
97
|
View or edit the enabled-module list in `modules.json` without touching project
|
|
@@ -135,14 +147,19 @@ Print machine-readable project state as JSON.
|
|
|
135
147
|
|
|
136
148
|
#### `newbie update-template`
|
|
137
149
|
|
|
138
|
-
Diff framework-
|
|
139
|
-
|
|
150
|
+
Diff framework-owned template files against the template, driven by the
|
|
151
|
+
ADR-009 ownership registry: whole-file sync for `main.ts`, `tsconfig*`,
|
|
152
|
+
`nest-cli.json`, `prisma.config.ts` and the static `deploy/` stack; block sync
|
|
153
|
+
for the `@@newbie-framework` blocks of `.env.example`, `.gitignore` and
|
|
154
|
+
`prisma/schema.prisma`. Generated (`newbie assemble` products) and
|
|
155
|
+
template-shipped host-owned files are skipped.
|
|
140
156
|
|
|
141
157
|
| Option | Description |
|
|
142
158
|
| ----------------------- | ----------------------------------------------------------------- |
|
|
143
159
|
| `--template-path <dir>` | Use a local template directory instead of cloning the repository. |
|
|
144
160
|
| `--template-ref <ref>` | Git ref (e.g. a template tag) to sync from. |
|
|
145
|
-
| `--write` | Apply the template version of differing
|
|
161
|
+
| `--write` | Apply the template version of differing template files. |
|
|
162
|
+
| `--check` | CI gate: print the diff and exit non-zero when files drift. |
|
|
146
163
|
|
|
147
164
|
#### `newbie agent`
|
|
148
165
|
|
|
@@ -169,9 +186,11 @@ registry checkout, not a consuming project).
|
|
|
169
186
|
|
|
170
187
|
#### `newbie dev lint`
|
|
171
188
|
|
|
172
|
-
Enforce the module layering rules (`
|
|
173
|
-
across registry sources: upward dependencies and same-layer
|
|
174
|
-
errors; same-layer dependencies are warnings for review.
|
|
189
|
+
Enforce the module layering rules (`feature` -> `capability` -> `infrastructure`
|
|
190
|
+
-> `datastore`) across registry sources: upward dependencies and same-layer
|
|
191
|
+
import cycles are errors; same-layer dependencies are warnings for review. A
|
|
192
|
+
`datastore` module must additionally be listed in the CLI datastore registry
|
|
193
|
+
(see ADR-008 D3).
|
|
175
194
|
|
|
176
195
|
### Module-provided commands
|
|
177
196
|
|
|
@@ -201,21 +220,21 @@ export; they never import framework internals by relative path.
|
|
|
201
220
|
|
|
202
221
|
Every registry module carries a `newbie.module.json` at its root:
|
|
203
222
|
|
|
204
|
-
| Field | Type | Description
|
|
205
|
-
| -------------------- | -------- |
|
|
206
|
-
| `key` | string | Module key; must match the directory name.
|
|
207
|
-
| `layer` | string | Architectural layer (`
|
|
208
|
-
| `module.file` | string | NestJS module file without extension, e.g. `account.module`.
|
|
209
|
-
| `module.className` | string | Exported NestJS module class name, e.g. `AccountModule`.
|
|
210
|
-
| `schema` | string | Project-relative path of the Prisma model fragment; absent = no models.
|
|
211
|
-
| `config-service` | object | Config keys merged into the generated `modules.config.ts`.
|
|
212
|
-
| `env` | object | Environment variables the module requires (doctor reports missing ones).
|
|
213
|
-
| `dependencies` | object | npm dependencies merged into the consuming project's `package.json`.
|
|
214
|
-
| `devDependencies` | object | npm devDependencies merged into the consuming project's `package.json`.
|
|
215
|
-
| `moduleDependencies` | string[] | Registry module keys imported via `@modules/<key>`; installs expand to the transitive closure.
|
|
216
|
-
| `
|
|
217
|
-
| `
|
|
218
|
-
| `
|
|
223
|
+
| Field | Type | Description |
|
|
224
|
+
| -------------------- | -------- | --------------------------------------------------------------------------------------------------------------- |
|
|
225
|
+
| `key` | string | Module key; must match the directory name. |
|
|
226
|
+
| `layer` | string | Architectural layer (`feature` / `capability` / `infrastructure` / `datastore`); absent for framework-specials. |
|
|
227
|
+
| `module.file` | string | NestJS module file without extension, e.g. `account.module`. |
|
|
228
|
+
| `module.className` | string | Exported NestJS module class name, e.g. `AccountModule`. |
|
|
229
|
+
| `schema` | string | Project-relative path of the Prisma model fragment; absent = no models. |
|
|
230
|
+
| `config-service` | object | Config keys merged into the generated `modules.config.ts`. |
|
|
231
|
+
| `env` | object | Environment variables the module requires (doctor reports missing ones). |
|
|
232
|
+
| `dependencies` | object | npm dependencies merged into the consuming project's `package.json`. |
|
|
233
|
+
| `devDependencies` | object | npm devDependencies merged into the consuming project's `package.json`. |
|
|
234
|
+
| `moduleDependencies` | string[] | Registry module keys imported via `@modules/<key>`; installs expand to the transitive closure. |
|
|
235
|
+
| `cli` | string | Command namespace this module exposes (see "Module-provided commands"). |
|
|
236
|
+
| `sdk` | string | Package name of the companion SDK shipped alongside the module (pairing record for tooling). |
|
|
237
|
+
| `publicNamespace` | boolean | Claim the public URL namespace `/<key>/*`; assemble renders a Caddy handle block (ADR-008). |
|
|
219
238
|
|
|
220
239
|
## Global options
|
|
221
240
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IssueBag } from "../lib/issues";
|
|
2
|
+
import { Sink } from "../lib/sink";
|
|
3
|
+
export interface DeployRenderPlan {
|
|
4
|
+
path: string;
|
|
5
|
+
current: string | null;
|
|
6
|
+
next: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function planDeployRenders(params: {
|
|
9
|
+
cwd: string;
|
|
10
|
+
sink: Sink;
|
|
11
|
+
issues: IssueBag;
|
|
12
|
+
enabledKeys: string[];
|
|
13
|
+
}): Promise<DeployRenderPlan[]>;
|
|
14
|
+
export declare function applyDeployRenders(sink: Sink, plans: DeployRenderPlan[]): Promise<void>;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.planDeployRenders = planDeployRenders;
|
|
7
|
+
exports.applyDeployRenders = applyDeployRenders;
|
|
8
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const caddyfile_modules_1 = require("../core/caddyfile-modules");
|
|
11
|
+
const deploy_compose_1 = require("../core/deploy-compose");
|
|
12
|
+
const datastore_registry_1 = require("../core/datastore-registry");
|
|
13
|
+
const paths_1 = require("../constants/paths");
|
|
14
|
+
const errors_1 = require("../lib/errors");
|
|
15
|
+
const issues_1 = require("../lib/issues");
|
|
16
|
+
const module_install_1 = require("../lib/module-install");
|
|
17
|
+
async function readOrNull(file) {
|
|
18
|
+
try {
|
|
19
|
+
return await promises_1.default.readFile(file, "utf8");
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function hasMigrator(cwd, key) {
|
|
26
|
+
try {
|
|
27
|
+
await promises_1.default.stat(node_path_1.default.resolve(cwd, paths_1.MODULES_DIR, key, "migration", "migrate-cli.ts"));
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async function planDeployRenders(params) {
|
|
35
|
+
const { cwd, sink, issues, enabledKeys } = params;
|
|
36
|
+
const datastores = [];
|
|
37
|
+
const publicNamespaces = [];
|
|
38
|
+
for (const key of enabledKeys) {
|
|
39
|
+
const manifest = await (0, module_install_1.readInstalledManifest)(cwd, key);
|
|
40
|
+
if (manifest === null) {
|
|
41
|
+
(0, issues_1.reportIssue)(issues, sink, `Missing newbie.module.json for '${key}'; it was skipped in the deploy asset render.`);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (manifest.layer === "datastore") {
|
|
45
|
+
if (!(0, datastore_registry_1.isRegisteredDatastore)(key)) {
|
|
46
|
+
throw new errors_1.CliError(`Module '${key}' declares layer "datastore" but is not listed in the CLI datastore registry (ADR-008 D3).`);
|
|
47
|
+
}
|
|
48
|
+
datastores.push({ key, hasMigrator: await hasMigrator(cwd, key) });
|
|
49
|
+
}
|
|
50
|
+
if (manifest.publicNamespace === true) {
|
|
51
|
+
publicNamespaces.push(key);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const plans = [];
|
|
55
|
+
const composeNext = (0, deploy_compose_1.buildComposeModulesYaml)(datastores);
|
|
56
|
+
const composeCurrent = await readOrNull(node_path_1.default.resolve(cwd, paths_1.DEPLOY_COMPOSE_MODULES));
|
|
57
|
+
if (composeCurrent !== composeNext) {
|
|
58
|
+
plans.push({ path: paths_1.DEPLOY_COMPOSE_MODULES, current: composeCurrent, next: composeNext });
|
|
59
|
+
}
|
|
60
|
+
const caddyCurrent = await readOrNull(node_path_1.default.resolve(cwd, paths_1.DEPLOY_CADDYFILE_TMPL));
|
|
61
|
+
if (caddyCurrent !== null) {
|
|
62
|
+
const caddyNext = (0, caddyfile_modules_1.spliceModulesBlock)(caddyCurrent, (0, caddyfile_modules_1.renderPublicNamespaceBody)(publicNamespaces));
|
|
63
|
+
if (caddyNext === null) {
|
|
64
|
+
(0, issues_1.reportIssue)(issues, sink, `${paths_1.DEPLOY_CADDYFILE_TMPL} is missing the @@newbie-modules markers; the module route block was skipped.`);
|
|
65
|
+
}
|
|
66
|
+
else if (caddyNext !== caddyCurrent) {
|
|
67
|
+
plans.push({ path: paths_1.DEPLOY_CADDYFILE_TMPL, current: caddyCurrent, next: caddyNext });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return plans;
|
|
71
|
+
}
|
|
72
|
+
async function applyDeployRenders(sink, plans) {
|
|
73
|
+
for (const plan of plans) {
|
|
74
|
+
await sink.writeText(plan.path, plan.next);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/assemble/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ function assertModuleKeySafe(key) {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
async function addModules(params) {
|
|
21
|
-
const {
|
|
21
|
+
const { sink, registry, keys } = params;
|
|
22
22
|
for (const key of keys) {
|
|
23
23
|
assertModuleKeySafe(key);
|
|
24
24
|
await sink.copy((0, registry_1.moduleRootInRegistry)(registry.root, key), node_path_1.default.posix.join(paths_1.MODULES_DIR, key));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules-copy.js","sourceRoot":"","sources":["../../src/assemble/modules-copy.ts"],"names":[],"mappings":";;;;;AAWA,kDAMC;AAOD,gCAWC;AAGD,sCAMC;AA5CD,0DAA6B;AAE7B,8CAAiD;AACjD,8CAAyE;AACzE,0CAAyC;AAOzC,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,MAAM,QAAQ,GAAG,mBAAI,CAAC,OAAO,CAAC,mBAAW,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,mBAAI,CAAC,QAAQ,CAAC,mBAAW,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,mBAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpG,MAAM,IAAI,iBAAQ,CAAC,uCAAuC,mBAAW,KAAK,GAAG,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAOM,KAAK,UAAU,UAAU,CAAC,MAKhC;IACC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"modules-copy.js","sourceRoot":"","sources":["../../src/assemble/modules-copy.ts"],"names":[],"mappings":";;;;;AAWA,kDAMC;AAOD,gCAWC;AAGD,sCAMC;AA5CD,0DAA6B;AAE7B,8CAAiD;AACjD,8CAAyE;AACzE,0CAAyC;AAOzC,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,MAAM,QAAQ,GAAG,mBAAI,CAAC,OAAO,CAAC,mBAAW,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,mBAAI,CAAC,QAAQ,CAAC,mBAAW,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,mBAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpG,MAAM,IAAI,iBAAQ,CAAC,uCAAuC,mBAAW,KAAK,GAAG,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAOM,KAAK,UAAU,UAAU,CAAC,MAKhC;IACC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAA,+BAAoB,EAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,mBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAGM,KAAK,UAAU,aAAa,CAAC,MAAsC;IACxE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
|
|
@@ -18,9 +18,9 @@ const errors_1 = require("../lib/errors");
|
|
|
18
18
|
const registry_1 = require("../lib/registry");
|
|
19
19
|
const modules_state_2 = require("../lib/modules-state");
|
|
20
20
|
const dependencies_1 = require("./dependencies");
|
|
21
|
+
const deploy_1 = require("./deploy");
|
|
21
22
|
const env_1 = require("./env");
|
|
22
23
|
const module_graph_1 = require("./module-graph");
|
|
23
|
-
const assets_1 = require("./assets");
|
|
24
24
|
const modules_1 = require("./modules");
|
|
25
25
|
const modules_copy_1 = require("./modules-copy");
|
|
26
26
|
const schema_1 = require("./schema");
|
|
@@ -109,10 +109,10 @@ async function runSteps(ctx, changes) {
|
|
|
109
109
|
enabledKeys,
|
|
110
110
|
skipPrismaGenerate,
|
|
111
111
|
});
|
|
112
|
-
step("Update nestjs assets");
|
|
113
|
-
await (0, assets_1.assembleNestJsAssets)({ cwd, sink, issues, added, removed });
|
|
114
112
|
step("Update nestjs modules");
|
|
115
113
|
await (0, modules_1.assembleNestJsModules)({ cwd, sink, issues, enabledKeys });
|
|
114
|
+
step("Update deploy assets");
|
|
115
|
+
await (0, deploy_1.applyDeployRenders)(sink, await (0, deploy_1.planDeployRenders)({ cwd, sink, issues, enabledKeys }));
|
|
116
116
|
step("Update package dependencies");
|
|
117
117
|
await (0, dependencies_1.assembleDependencies)({
|
|
118
118
|
cwd,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/assemble/pipeline.ts"],"names":[],"mappings":";;;;;AA+DA,sDAmBC;AAqCD,
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/assemble/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runAssemble = runAssemble;
|
|
4
|
+
const colorette_1 = require("colorette");
|
|
5
|
+
const deploy_1 = require("../assemble/deploy");
|
|
6
|
+
const modules_state_1 = require("../core/modules-state");
|
|
7
|
+
const unified_diff_1 = require("../core/unified-diff");
|
|
8
|
+
const errors_1 = require("../lib/errors");
|
|
9
|
+
const shared_1 = require("./shared");
|
|
10
|
+
async function runAssemble(options) {
|
|
11
|
+
const { ctx, sink } = await (0, shared_1.createContext)(options, { fetch: false });
|
|
12
|
+
const enabledKeys = (0, modules_state_1.moduleKeys)(ctx.state);
|
|
13
|
+
const plans = await (0, deploy_1.planDeployRenders)({ cwd: ctx.cwd, sink, issues: ctx.issues, enabledKeys });
|
|
14
|
+
if (plans.length === 0) {
|
|
15
|
+
console.info((0, colorette_1.green)((0, colorette_1.bold)("✓ Deploy assets are up to date with the installed module set.")));
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (options.check) {
|
|
19
|
+
for (const plan of plans) {
|
|
20
|
+
console.info((0, colorette_1.bold)(`\n# ${plan.path} (${plan.current === null ? "missing in project" : "drifts from render"})`));
|
|
21
|
+
const aLabel = plan.current === null ? "/dev/null" : `a/${plan.path}`;
|
|
22
|
+
process.stdout.write((0, unified_diff_1.unifiedDiff)(plan.current ?? "", plan.next, aLabel, `b/${plan.path}`));
|
|
23
|
+
}
|
|
24
|
+
throw new errors_1.CliError(`${plans.length} deploy asset(s) drift from the installed module set. ` + "Run `newbie assemble` to regenerate.");
|
|
25
|
+
}
|
|
26
|
+
for (const plan of plans) {
|
|
27
|
+
console.info(` ${plan.path}`);
|
|
28
|
+
}
|
|
29
|
+
await (0, deploy_1.applyDeployRenders)(sink, plans);
|
|
30
|
+
if (options.dryRun) {
|
|
31
|
+
console.info("[dry-run] no files were modified");
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
console.info((0, colorette_1.green)((0, colorette_1.bold)("\n✓ Deploy assets updated.")));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=assemble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assemble.js","sourceRoot":"","sources":["../../src/commands/assemble.ts"],"names":[],"mappings":";;AAoBA,kCA+BC;AAnDD,yCAAwC;AAExC,+CAA2E;AAC3E,yDAAmD;AACnD,uDAAmD;AACnD,0CAAyC;AACzC,qCAAwD;AAcjD,KAAK,UAAU,WAAW,CAAC,OAAwB;IACxD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,sBAAa,EAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,IAAA,0BAAU,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE1C,MAAM,KAAK,GAAG,MAAM,IAAA,0BAAiB,EAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAE/F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,IAAA,iBAAK,EAAC,IAAA,gBAAI,EAAC,+DAA+D,CAAC,CAAC,CAAC,CAAC;QAC3F,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,IAAA,gBAAI,EAAC,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;YAChH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,0BAAW,EAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,IAAI,iBAAQ,CAChB,GAAG,KAAK,CAAC,MAAM,wDAAwD,GAAG,sCAAsC,CACjH,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,IAAA,2BAAkB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,IAAA,iBAAK,EAAC,IAAA,gBAAI,EAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}
|
|
@@ -18,12 +18,13 @@ function matchesPathFilter(filePath, filter) {
|
|
|
18
18
|
return true;
|
|
19
19
|
return filePath === normalized || filePath.startsWith(`${normalized}/`);
|
|
20
20
|
}
|
|
21
|
-
function
|
|
21
|
+
function filterTemplateFiles(paths) {
|
|
22
|
+
const syncable = template_sync_1.TEMPLATE_FILES.filter(template_sync_1.isSyncableTemplateFile);
|
|
22
23
|
if (!paths || paths.length === 0)
|
|
23
|
-
return
|
|
24
|
-
const selected =
|
|
24
|
+
return syncable;
|
|
25
|
+
const selected = syncable.filter((file) => paths.some((p) => matchesPathFilter(file.path, p)));
|
|
25
26
|
if (selected.length === 0) {
|
|
26
|
-
throw new errors_1.CliError(`No
|
|
27
|
+
throw new errors_1.CliError(`No framework-managed template files match the path filter: ${paths.join(", ")}`);
|
|
27
28
|
}
|
|
28
29
|
return selected;
|
|
29
30
|
}
|
|
@@ -35,10 +36,46 @@ async function readOrNull(root, rel) {
|
|
|
35
36
|
return null;
|
|
36
37
|
}
|
|
37
38
|
}
|
|
39
|
+
function isScanIgnored(relPath) {
|
|
40
|
+
const segments = relPath.split("/");
|
|
41
|
+
if (segments.some((segment) => template_sync_1.TEMPLATE_SCAN_IGNORED_DIRECTORIES.has(segment)))
|
|
42
|
+
return true;
|
|
43
|
+
const base = segments[segments.length - 1];
|
|
44
|
+
if (template_sync_1.TEMPLATE_SCAN_IGNORED_FILES.has(base))
|
|
45
|
+
return true;
|
|
46
|
+
return template_sync_1.TEMPLATE_SCAN_IGNORED_SUFFIXES.some((suffix) => base.endsWith(suffix));
|
|
47
|
+
}
|
|
48
|
+
async function listTemplateFiles(root) {
|
|
49
|
+
const found = [];
|
|
50
|
+
async function walk(relDir) {
|
|
51
|
+
const dirents = await promises_1.default.readdir(node_path_1.default.join(root, relDir), { withFileTypes: true });
|
|
52
|
+
for (const dirent of dirents) {
|
|
53
|
+
const relPath = relDir === "" ? dirent.name : `${relDir}/${dirent.name}`;
|
|
54
|
+
if (dirent.isDirectory()) {
|
|
55
|
+
if (template_sync_1.TEMPLATE_SCAN_IGNORED_DIRECTORIES.has(dirent.name))
|
|
56
|
+
continue;
|
|
57
|
+
await walk(relPath);
|
|
58
|
+
}
|
|
59
|
+
else if (dirent.isFile() && !isScanIgnored(relPath)) {
|
|
60
|
+
found.push(relPath);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
await walk("");
|
|
65
|
+
return found;
|
|
66
|
+
}
|
|
67
|
+
async function assertTemplateRegistryComplete(templateRoot) {
|
|
68
|
+
const unclassified = (0, template_sync_1.findUnclassifiedTemplateFiles)(await listTemplateFiles(templateRoot));
|
|
69
|
+
if (unclassified.length === 0)
|
|
70
|
+
return;
|
|
71
|
+
throw new errors_1.CliError(`Template file(s) missing from the ownership registry (ADR-009 D4):\n - ${unclassified.join("\n - ")}\n` +
|
|
72
|
+
"Classify each one in TEMPLATE_FILES (packages/cli/src/core/template-sync.ts).");
|
|
73
|
+
}
|
|
38
74
|
function printChangeDiff(change) {
|
|
39
75
|
const label = change.file.path;
|
|
40
76
|
if (change.kind === "missing-markers") {
|
|
41
|
-
|
|
77
|
+
const markers = (0, template_sync_1.frameworkMarkers)(change.file.markerSyntax);
|
|
78
|
+
console.warn((0, colorette_1.yellow)(`! ${label}: framework markers (${markers.start} / ${markers.end}) ` +
|
|
42
79
|
"not found; skipping. Add them back to re-enable template sync."));
|
|
43
80
|
return;
|
|
44
81
|
}
|
|
@@ -54,40 +91,41 @@ async function runUpdateTemplate(options) {
|
|
|
54
91
|
}
|
|
55
92
|
const cwd = node_path_1.default.resolve(options.cwd);
|
|
56
93
|
const sink = (0, sink_1.createSink)(cwd, options.dryRun);
|
|
57
|
-
const
|
|
94
|
+
const templateFiles = filterTemplateFiles(options.paths);
|
|
58
95
|
const scope = options.paths && options.paths.length > 0 ? options.paths.join(", ") : null;
|
|
59
96
|
const template = await (0, create_1.resolveTemplate)(options);
|
|
60
97
|
console.info((0, colorette_1.cyan)(`Template source: ${template.source}`));
|
|
61
98
|
if (scope) {
|
|
62
|
-
console.info((0, colorette_1.cyan)(`Scope: ${scope} (${
|
|
99
|
+
console.info((0, colorette_1.cyan)(`Scope: ${scope} (${templateFiles.length} template files)`));
|
|
63
100
|
}
|
|
101
|
+
await assertTemplateRegistryComplete(template.root);
|
|
64
102
|
const projectFiles = new Map();
|
|
65
|
-
const
|
|
66
|
-
for (const file of
|
|
103
|
+
const templateContents = new Map();
|
|
104
|
+
for (const file of templateFiles) {
|
|
67
105
|
projectFiles.set(file.path, await readOrNull(cwd, file.path));
|
|
68
|
-
|
|
106
|
+
templateContents.set(file.path, await readOrNull(template.root, file.path));
|
|
69
107
|
}
|
|
70
108
|
let changes;
|
|
71
109
|
try {
|
|
72
|
-
changes = (0, template_sync_1.planTemplateSync)(projectFiles, templateFiles);
|
|
110
|
+
changes = (0, template_sync_1.planTemplateSync)(projectFiles, templateContents, templateFiles);
|
|
73
111
|
}
|
|
74
112
|
catch (error) {
|
|
75
113
|
throw new errors_1.CliError(error.message);
|
|
76
114
|
}
|
|
77
115
|
if (changes.length === 0) {
|
|
78
116
|
const suffix = scope ? ` (scope: ${scope})` : "";
|
|
79
|
-
console.info((0, colorette_1.green)((0, colorette_1.bold)(`✓ Project
|
|
117
|
+
console.info((0, colorette_1.green)((0, colorette_1.bold)(`✓ Project template files are up to date with the template${suffix}.`)));
|
|
80
118
|
return;
|
|
81
119
|
}
|
|
82
120
|
const actionable = changes.filter((c) => c.kind !== "missing-markers");
|
|
83
121
|
for (const change of changes) {
|
|
84
122
|
printChangeDiff(change);
|
|
85
123
|
}
|
|
86
|
-
console.info(`\n${actionable.length}
|
|
124
|
+
console.info(`\n${actionable.length} template file(s) to sync: ` +
|
|
87
125
|
actionable.map((c) => `${c.file.path} (${c.kind})`).join(", "));
|
|
88
126
|
const writeCommand = scope ? `newbie update-template --write ${scope}` : "newbie update-template --write";
|
|
89
127
|
if (options.check) {
|
|
90
|
-
throw new errors_1.CliError(`${changes.length}
|
|
128
|
+
throw new errors_1.CliError(`${changes.length} template file(s) drift from the template ` +
|
|
91
129
|
`(${actionable.length} auto-fixable). ` +
|
|
92
130
|
`Run \`${writeCommand}\` to apply the template version.`);
|
|
93
131
|
}
|
|
@@ -106,7 +144,7 @@ async function runUpdateTemplate(options) {
|
|
|
106
144
|
console.info("[dry-run] no files were modified");
|
|
107
145
|
}
|
|
108
146
|
else {
|
|
109
|
-
console.info((0, colorette_1.green)((0, colorette_1.bold)("\n✓
|
|
147
|
+
console.info((0, colorette_1.green)((0, colorette_1.bold)("\n✓ Template files updated.")));
|
|
110
148
|
console.info("Review with `git diff`, then commit on a branch and open a PR.");
|
|
111
149
|
}
|
|
112
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-template.js","sourceRoot":"","sources":["../../src/commands/update-template.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"update-template.js","sourceRoot":"","sources":["../../src/commands/update-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,5 +9,7 @@ export declare const ENV_PATH = ".env";
|
|
|
9
9
|
export declare const ENV_EXAMPLE_PATH = ".env.example";
|
|
10
10
|
export declare const NEST_CLI_JSON = "nest-cli.json";
|
|
11
11
|
export declare const PACKAGE_JSON_PATH = "package.json";
|
|
12
|
+
export declare const DEPLOY_COMPOSE_MODULES = "deploy/compose.modules.yml";
|
|
13
|
+
export declare const DEPLOY_CADDYFILE_TMPL = "deploy/Caddyfile.tmpl";
|
|
12
14
|
export declare const REGISTRY_MODULES_DIR = "packages/modules";
|
|
13
15
|
export declare const ENV_TOOL_CONFIG_CANDIDATES: string[];
|
package/dist/constants/paths.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ENV_TOOL_CONFIG_CANDIDATES = exports.REGISTRY_MODULES_DIR = exports.PACKAGE_JSON_PATH = exports.NEST_CLI_JSON = exports.ENV_EXAMPLE_PATH = exports.ENV_PATH = exports.PRISMA_SCHEMA_MODELS_DIR = exports.PRISMA_SCHEMA_MAIN = exports.MODULE_MANIFEST_FILE = exports.MODULES_CONFIG_TS = exports.MODULES_MODULE_TS = exports.MODULES_DIR = exports.MODULES_JSON = void 0;
|
|
3
|
+
exports.ENV_TOOL_CONFIG_CANDIDATES = exports.REGISTRY_MODULES_DIR = exports.DEPLOY_CADDYFILE_TMPL = exports.DEPLOY_COMPOSE_MODULES = exports.PACKAGE_JSON_PATH = exports.NEST_CLI_JSON = exports.ENV_EXAMPLE_PATH = exports.ENV_PATH = exports.PRISMA_SCHEMA_MODELS_DIR = exports.PRISMA_SCHEMA_MAIN = exports.MODULE_MANIFEST_FILE = exports.MODULES_CONFIG_TS = exports.MODULES_MODULE_TS = exports.MODULES_DIR = exports.MODULES_JSON = void 0;
|
|
4
4
|
exports.MODULES_JSON = "modules.json";
|
|
5
5
|
exports.MODULES_DIR = "src/modules";
|
|
6
6
|
exports.MODULES_MODULE_TS = "src/modules/modules.module.ts";
|
|
@@ -12,6 +12,8 @@ exports.ENV_PATH = ".env";
|
|
|
12
12
|
exports.ENV_EXAMPLE_PATH = ".env.example";
|
|
13
13
|
exports.NEST_CLI_JSON = "nest-cli.json";
|
|
14
14
|
exports.PACKAGE_JSON_PATH = "package.json";
|
|
15
|
+
exports.DEPLOY_COMPOSE_MODULES = "deploy/compose.modules.yml";
|
|
16
|
+
exports.DEPLOY_CADDYFILE_TMPL = "deploy/Caddyfile.tmpl";
|
|
15
17
|
exports.REGISTRY_MODULES_DIR = "packages/modules";
|
|
16
18
|
exports.ENV_TOOL_CONFIG_CANDIDATES = [".newbie/env.config.json", ".newbie-env-tool/.config/config.json"];
|
|
17
19
|
//# sourceMappingURL=paths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/constants/paths.ts"],"names":[],"mappings":";;;AAOa,QAAA,YAAY,GAAG,cAAc,CAAC;AAE9B,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,iBAAiB,GAAG,+BAA+B,CAAC;AACpD,QAAA,iBAAiB,GAAG,+BAA+B,CAAC;AAGpD,QAAA,oBAAoB,GAAG,oBAAoB,CAAC;AAE5C,QAAA,kBAAkB,GAAG,sBAAsB,CAAC;AAC5C,QAAA,wBAAwB,GAAG,eAAe,CAAC;AAE3C,QAAA,QAAQ,GAAG,MAAM,CAAC;AAClB,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAClC,QAAA,aAAa,GAAG,eAAe,CAAC;AAChC,QAAA,iBAAiB,GAAG,cAAc,CAAC;AAGnC,QAAA,oBAAoB,GAAG,kBAAkB,CAAC;AAG1C,QAAA,0BAA0B,GAAG,CAAC,yBAAyB,EAAE,sCAAsC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/constants/paths.ts"],"names":[],"mappings":";;;AAOa,QAAA,YAAY,GAAG,cAAc,CAAC;AAE9B,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,iBAAiB,GAAG,+BAA+B,CAAC;AACpD,QAAA,iBAAiB,GAAG,+BAA+B,CAAC;AAGpD,QAAA,oBAAoB,GAAG,oBAAoB,CAAC;AAE5C,QAAA,kBAAkB,GAAG,sBAAsB,CAAC;AAC5C,QAAA,wBAAwB,GAAG,eAAe,CAAC;AAE3C,QAAA,QAAQ,GAAG,MAAM,CAAC;AAClB,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAClC,QAAA,aAAa,GAAG,eAAe,CAAC;AAChC,QAAA,iBAAiB,GAAG,cAAc,CAAC;AAGnC,QAAA,sBAAsB,GAAG,4BAA4B,CAAC;AAEtD,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAGhD,QAAA,oBAAoB,GAAG,kBAAkB,CAAC;AAG1C,QAAA,0BAA0B,GAAG,CAAC,yBAAyB,EAAE,sCAAsC,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderPublicNamespaceBody = renderPublicNamespaceBody;
|
|
4
|
+
exports.spliceModulesBlock = spliceModulesBlock;
|
|
5
|
+
const env_file_1 = require("./env-file");
|
|
6
|
+
function renderPublicNamespaceBody(keys) {
|
|
7
|
+
return [...keys]
|
|
8
|
+
.sort(env_file_1.compareStrings)
|
|
9
|
+
.map((key) => `\thandle /${key}/* {\n\t\treverse_proxy backend:3000\n\t}\n`)
|
|
10
|
+
.join("\n");
|
|
11
|
+
}
|
|
12
|
+
function spliceModulesBlock(content, body) {
|
|
13
|
+
const startIndex = content.indexOf(env_file_1.MODULES_MARKER_START);
|
|
14
|
+
const endIndex = content.indexOf(env_file_1.MODULES_MARKER_END);
|
|
15
|
+
if (startIndex === -1 || endIndex === -1 || endIndex < startIndex)
|
|
16
|
+
return null;
|
|
17
|
+
const lineStart = content.lastIndexOf("\n", startIndex);
|
|
18
|
+
const blockStart = lineStart === -1 ? 0 : lineStart + 1;
|
|
19
|
+
const afterEnd = endIndex + env_file_1.MODULES_MARKER_END.length;
|
|
20
|
+
const block = `${env_file_1.MODULES_MARKER_START}\n${body}${env_file_1.MODULES_MARKER_END}\n`;
|
|
21
|
+
return `${content.slice(0, blockStart)}${block}${content[afterEnd] === "\n" ? content.slice(afterEnd + 1) : content.slice(afterEnd)}`;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=caddyfile-modules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caddyfile-modules.js","sourceRoot":"","sources":["../../src/core/caddyfile-modules.ts"],"names":[],"mappings":";;AAkBA,8DAKC;AAUD,gDAYC;AAlCD,yCAAsF;AAOtF,SAAgB,yBAAyB,CAAC,IAAc;IACtD,OAAO,CAAC,GAAG,IAAI,CAAC;SACb,IAAI,CAAC,yBAAc,CAAC;SACpB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,GAAG,6CAA6C,CAAC;SAC3E,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAUD,SAAgB,kBAAkB,CAAC,OAAe,EAAE,IAAY;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,+BAAoB,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,6BAAkB,CAAC,CAAC;IACrD,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,UAAU;QAAE,OAAO,IAAI,CAAC;IAE/E,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,QAAQ,GAAG,6BAAkB,CAAC,MAAM,CAAC;IACtD,MAAM,KAAK,GAAG,GAAG,+BAAoB,KAAK,IAAI,GAAG,6BAAkB,IAAI,CAAC;IACxE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,KAAK,GAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CACnF,EAAE,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface ComposeHealthcheck {
|
|
2
|
+
test: string[];
|
|
3
|
+
interval: string;
|
|
4
|
+
timeout: string;
|
|
5
|
+
retries: number;
|
|
6
|
+
}
|
|
7
|
+
export interface ComposeServiceSpec {
|
|
8
|
+
image: string;
|
|
9
|
+
restart?: "unless-stopped" | "no";
|
|
10
|
+
command?: string[];
|
|
11
|
+
envFile?: boolean;
|
|
12
|
+
environment?: Record<string, string>;
|
|
13
|
+
volumes?: string[];
|
|
14
|
+
ulimits?: Record<string, {
|
|
15
|
+
soft: string;
|
|
16
|
+
hard: string;
|
|
17
|
+
}>;
|
|
18
|
+
healthcheck?: ComposeHealthcheck;
|
|
19
|
+
profiles?: string[];
|
|
20
|
+
dependsOn?: Record<string, {
|
|
21
|
+
condition: "service_healthy" | "service_completed_successfully";
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
export interface DatastoreDefinition {
|
|
25
|
+
service: ComposeServiceSpec | null;
|
|
26
|
+
backupEngine: "mongodb" | "redis" | "clickhouse" | null;
|
|
27
|
+
backupHelper?: ComposeServiceSpec;
|
|
28
|
+
}
|
|
29
|
+
export declare const DATASTORE_REGISTRY: Readonly<Record<string, DatastoreDefinition>>;
|
|
30
|
+
export declare function isRegisteredDatastore(key: string): boolean;
|