@eudiplo/cli 8.0.1 → 8.0.2-main.4c3e735

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.
Files changed (58) hide show
  1. package/README.md +5 -1
  2. package/dist/commands/config/validate/schemas.d.ts.map +1 -1
  3. package/dist/commands/config/validate/schemas.js +3 -3
  4. package/dist/commands/config/validate/schemas.js.map +1 -1
  5. package/dist/commands/deployment/action.d.ts +1 -1
  6. package/dist/commands/deployment/action.d.ts.map +1 -1
  7. package/dist/commands/deployment/action.js.map +1 -1
  8. package/dist/commands/deployment/index.d.ts.map +1 -1
  9. package/dist/commands/deployment/index.js +7 -4
  10. package/dist/commands/deployment/index.js.map +1 -1
  11. package/dist/commands/open/action.d.ts +9 -0
  12. package/dist/commands/open/action.d.ts.map +1 -0
  13. package/dist/commands/open/action.js +41 -0
  14. package/dist/commands/open/action.js.map +1 -0
  15. package/dist/commands/open/index.d.ts +5 -0
  16. package/dist/commands/open/index.d.ts.map +1 -0
  17. package/dist/commands/open/index.js +15 -0
  18. package/dist/commands/open/index.js.map +1 -0
  19. package/dist/commands/upgrade/action.d.ts +3 -0
  20. package/dist/commands/upgrade/action.d.ts.map +1 -0
  21. package/dist/commands/upgrade/action.js +95 -0
  22. package/dist/commands/upgrade/action.js.map +1 -0
  23. package/dist/commands/upgrade/index.d.ts +5 -0
  24. package/dist/commands/upgrade/index.d.ts.map +1 -0
  25. package/dist/commands/upgrade/index.js +15 -0
  26. package/dist/commands/upgrade/index.js.map +1 -0
  27. package/dist/index.js +632 -87
  28. package/dist/runtime.d.ts.map +1 -1
  29. package/dist/runtime.js +4 -0
  30. package/dist/runtime.js.map +1 -1
  31. package/dist/sea-assets.d.ts +1 -0
  32. package/dist/sea-assets.d.ts.map +1 -1
  33. package/dist/sea-assets.js +17 -0
  34. package/dist/sea-assets.js.map +1 -1
  35. package/dist/services/browser.d.ts +30 -0
  36. package/dist/services/browser.d.ts.map +1 -0
  37. package/dist/services/browser.js +102 -0
  38. package/dist/services/browser.js.map +1 -0
  39. package/dist/services/compose-args.d.ts +28 -0
  40. package/dist/services/compose-args.d.ts.map +1 -0
  41. package/dist/services/compose-args.js +117 -0
  42. package/dist/services/compose-args.js.map +1 -0
  43. package/dist/services/compose-project.d.ts.map +1 -1
  44. package/dist/services/compose-project.js +5 -5
  45. package/dist/services/compose-project.js.map +1 -1
  46. package/dist/services/compose-upgrade.d.ts +40 -0
  47. package/dist/services/compose-upgrade.d.ts.map +1 -0
  48. package/dist/services/compose-upgrade.js +102 -0
  49. package/dist/services/compose-upgrade.js.map +1 -0
  50. package/dist/services/deployment-drivers.d.ts +8 -1
  51. package/dist/services/deployment-drivers.d.ts.map +1 -1
  52. package/dist/services/deployment-drivers.js +85 -19
  53. package/dist/services/deployment-drivers.js.map +1 -1
  54. package/dist/types.d.ts +1 -0
  55. package/dist/types.d.ts.map +1 -1
  56. package/package.json +1 -1
  57. package/templates/schemas/KeyChainConfigFile.schema.json +7 -3
  58. package/templates/schemas/KeyChainImportDto.schema.json +7 -3
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAC;AAcpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAsB,MAAM,CACxB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,cAAiC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED,wBAAgB,aAAa,CACzB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACxC,OAAO,CAsCT"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAC;AAgBpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAsB,MAAM,CACxB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,cAAiC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED,wBAAgB,aAAa,CACzB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACxC,OAAO,CAwCT"}
package/dist/runtime.js CHANGED
@@ -8,7 +8,9 @@ import { createDeploymentCommands } from "./commands/deployment/index.js";
8
8
  import { createDoctorCommand } from "./commands/doctor/index.js";
9
9
  import { createInitCommand } from "./commands/init/index.js";
10
10
  import { createInstanceCommand } from "./commands/instance/index.js";
11
+ import { createOpenCommand } from "./commands/open/index.js";
11
12
  import { createStatusCommand } from "./commands/status/index.js";
13
+ import { createUpgradeCommand } from "./commands/upgrade/index.js";
12
14
  import { createVersionCommand, versionText } from "./commands/version/index.js";
13
15
  export async function runCli(args, context = defaultContext()) {
14
16
  let actionExitCode = 0;
@@ -40,6 +42,8 @@ export function createProgram(context, setExitCode) {
40
42
  for (const command of createDeploymentCommands(context, setExitCode)) {
41
43
  program.addCommand(command);
42
44
  }
45
+ program.addCommand(createUpgradeCommand(context, setExitCode));
46
+ program.addCommand(createOpenCommand(context, setExitCode));
43
47
  program.addCommand(createInstanceCommand(context, setExitCode));
44
48
  program.addCommand(createConfigCommand(context, setExitCode));
45
49
  program.addCommand(createDoctorCommand(context, setExitCode));
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  type CliAssetFallback = URL | (() => URL);
2
+ export declare function templateAssetUrl(relativePath: string): URL;
2
3
  export declare function readCliTextAsset(assetKey: string, fileUrl: CliAssetFallback): Promise<string>;
3
4
  export declare function readCliBinaryAsset(assetKey: string, fileUrl: CliAssetFallback): Promise<Uint8Array>;
4
5
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"sea-assets.d.ts","sourceRoot":"","sources":["../src/sea-assets.ts"],"names":[],"mappings":"AAGA,KAAK,gBAAgB,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAE1C,wBAAsB,gBAAgB,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED,wBAAsB,kBAAkB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAarB"}
1
+ {"version":3,"file":"sea-assets.d.ts","sourceRoot":"","sources":["../src/sea-assets.ts"],"names":[],"mappings":"AAGA,KAAK,gBAAgB,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAiB1C,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,CAE1D;AAED,wBAAsB,gBAAgB,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED,wBAAsB,kBAAkB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAarB"}
@@ -1,5 +1,22 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import { getAsset, isSea } from "node:sea";
3
+ /**
4
+ * Base URL for the `templates/` directory, computed relative to this module.
5
+ *
6
+ * This file lives at the same directory depth as `index.ts` (the CLI entry
7
+ * point), so its `import.meta.url` stays stable whether the build preserves
8
+ * the original `src/` folder structure (`pnpm build`) or bundles everything
9
+ * into a single `dist/index.js` (`build:publish` / `build:sea`): esbuild
10
+ * rewrites every bundled module's `import.meta.url` to the output file's URL,
11
+ * which sits at the same depth. Consumers must derive template asset URLs
12
+ * from this constant rather than computing their own relative path from
13
+ * `import.meta.url`, since their original source depth is not preserved once
14
+ * bundled.
15
+ */
16
+ const templatesBaseUrl = new URL("../templates/", import.meta.url);
17
+ export function templateAssetUrl(relativePath) {
18
+ return new URL(relativePath, templatesBaseUrl);
19
+ }
3
20
  export async function readCliTextAsset(assetKey, fileUrl) {
4
21
  if (isSea()) {
5
22
  return getAsset(assetKey, "utf8");
@@ -1 +1 @@
1
- {"version":3,"file":"sea-assets.js","sourceRoot":"","sources":["../src/sea-assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAI3C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,QAAgB,EAChB,OAAyB;IAEzB,IAAI,KAAK,EAAE,EAAE,CAAC;QACV,OAAO,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAW,CAAC;IAChD,CAAC;IAED,OAAO,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACpC,QAAgB,EAChB,OAAyB;IAEzB,IAAI,KAAK,EAAE,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAsC,CAAC;QACtE,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YAC/B,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,eAAe,CAAC,QAA0B;IAC/C,OAAO,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"sea-assets.js","sourceRoot":"","sources":["../src/sea-assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAI3C;;;;;;;;;;;;GAYG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAEnE,MAAM,UAAU,gBAAgB,CAAC,YAAoB;IACjD,OAAO,IAAI,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,QAAgB,EAChB,OAAyB;IAEzB,IAAI,KAAK,EAAE,EAAE,CAAC;QACV,OAAO,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAW,CAAC;IAChD,CAAC;IAED,OAAO,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACpC,QAAgB,EAChB,OAAyB;IAEzB,IAAI,KAAK,EAAE,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAsC,CAAC;QACtE,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YAC/B,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,eAAe,CAAC,QAA0B;IAC/C,OAAO,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClE,CAAC"}
@@ -0,0 +1,30 @@
1
+ export interface BrowserLauncher {
2
+ command: string;
3
+ args: string[];
4
+ }
5
+ export interface LauncherEnvironment {
6
+ platform: NodeJS.Platform;
7
+ env: NodeJS.ProcessEnv;
8
+ /** Resolves an executable name on PATH, or undefined when absent. */
9
+ which: (name: string) => Promise<string | undefined>;
10
+ }
11
+ /**
12
+ * Only web URLs are ever handed to a launcher. Instance URLs are validated
13
+ * when they are registered, but a hand-edited config must not be able to turn
14
+ * `open` into "run whatever this file:// or custom-scheme URL points at".
15
+ */
16
+ export declare function assertWebUrl(value: string): URL;
17
+ /**
18
+ * Picks how to open a URL in a browser, or returns undefined when this
19
+ * environment has no usable browser (SSH sessions, containers, CI). Every
20
+ * launcher receives the URL as a single argv entry; no shell ever parses it.
21
+ */
22
+ export declare function chooseLauncher(url: string, { platform, env, which }: LauncherEnvironment): Promise<BrowserLauncher | undefined>;
23
+ /**
24
+ * Starts the launcher detached. Resolves true once it has been spawned and
25
+ * false when it could not be started, so the caller can fall back to
26
+ * printing the URL.
27
+ */
28
+ export declare function launchBrowser(launcher: BrowserLauncher): Promise<boolean>;
29
+ export declare function pathLookup(env: NodeJS.ProcessEnv, platform?: NodeJS.Platform): (name: string) => Promise<string | undefined>;
30
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/services/browser.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,qEAAqE;IACrE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACxD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAa/C;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAChC,GAAG,EAAE,MAAM,EACX,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,mBAAmB,GAC9C,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAwCtC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAYzE;AAED,wBAAgB,UAAU,CACtB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC7C,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoB/C"}
@@ -0,0 +1,102 @@
1
+ import { spawn } from "node:child_process";
2
+ import { access } from "node:fs/promises";
3
+ import { delimiter, join } from "node:path";
4
+ /**
5
+ * Only web URLs are ever handed to a launcher. Instance URLs are validated
6
+ * when they are registered, but a hand-edited config must not be able to turn
7
+ * `open` into "run whatever this file:// or custom-scheme URL points at".
8
+ */
9
+ export function assertWebUrl(value) {
10
+ let url;
11
+ try {
12
+ url = new URL(value);
13
+ }
14
+ catch {
15
+ throw new Error(`${value} is not a valid absolute URL.`);
16
+ }
17
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
18
+ throw new Error(`Refusing to open ${value}: only http and https URLs are supported.`);
19
+ }
20
+ return url;
21
+ }
22
+ /**
23
+ * Picks how to open a URL in a browser, or returns undefined when this
24
+ * environment has no usable browser (SSH sessions, containers, CI). Every
25
+ * launcher receives the URL as a single argv entry; no shell ever parses it.
26
+ */
27
+ export async function chooseLauncher(url, { platform, env, which }) {
28
+ // $BROWSER is the conventional user override. Only a bare command is
29
+ // honoured; anything with arguments or placeholders is ignored rather
30
+ // than split, so the value is never interpreted by a shell.
31
+ const browser = env.BROWSER?.trim();
32
+ if (browser && !/\s|%s/.test(browser)) {
33
+ const command = await which(browser);
34
+ if (command) {
35
+ return { command, args: [url] };
36
+ }
37
+ }
38
+ if (platform === "darwin") {
39
+ return { command: "open", args: [url] };
40
+ }
41
+ if (platform === "win32") {
42
+ // Avoids `cmd /c start`, where "&" in a query string would be parsed.
43
+ return {
44
+ command: "rundll32.exe",
45
+ args: ["url.dll,FileProtocolHandler", url],
46
+ };
47
+ }
48
+ // WSL: open the Windows browser when wslu is installed.
49
+ if (env.WSL_DISTRO_NAME) {
50
+ const wslview = await which("wslview");
51
+ if (wslview) {
52
+ return { command: wslview, args: [url] };
53
+ }
54
+ }
55
+ if (env.DISPLAY || env.WAYLAND_DISPLAY) {
56
+ const xdgOpen = await which("xdg-open");
57
+ if (xdgOpen) {
58
+ return { command: xdgOpen, args: [url] };
59
+ }
60
+ }
61
+ return undefined;
62
+ }
63
+ /**
64
+ * Starts the launcher detached. Resolves true once it has been spawned and
65
+ * false when it could not be started, so the caller can fall back to
66
+ * printing the URL.
67
+ */
68
+ export function launchBrowser(launcher) {
69
+ return new Promise((resolveLaunch) => {
70
+ const child = spawn(launcher.command, launcher.args, {
71
+ detached: true,
72
+ stdio: "ignore",
73
+ });
74
+ child.once("error", () => resolveLaunch(false));
75
+ child.once("spawn", () => {
76
+ child.unref();
77
+ resolveLaunch(true);
78
+ });
79
+ });
80
+ }
81
+ export function pathLookup(env, platform = process.platform) {
82
+ const extensions = platform === "win32"
83
+ ? ["", ...(env.PATHEXT ?? ".EXE;.CMD;.BAT;.COM").split(";")]
84
+ : [""];
85
+ return async (name) => {
86
+ const entries = (env.PATH ?? "").split(delimiter).filter(Boolean);
87
+ for (const entry of entries) {
88
+ for (const extension of extensions) {
89
+ const candidate = join(entry, `${name}${extension}`);
90
+ try {
91
+ await access(candidate);
92
+ return candidate;
93
+ }
94
+ catch {
95
+ // keep looking
96
+ }
97
+ }
98
+ }
99
+ return undefined;
100
+ };
101
+ }
102
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/services/browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { InstanceConfig } from "../types.js";
2
+ export interface ComposeLogOptions {
3
+ follow?: boolean;
4
+ tail?: number;
5
+ since?: string;
6
+ }
7
+ export declare function assertServiceName(service: string): void;
8
+ export declare function assertSince(since: string): void;
9
+ /**
10
+ * Options shared by every Compose invocation for an instance: env file,
11
+ * compose files, profiles and project name, all resolved against the
12
+ * project directory.
13
+ */
14
+ export declare function buildComposeBaseArgs(instance: InstanceConfig, projectDirectory: string, composeFiles: string[]): string[];
15
+ export declare function buildComposePsArgs(): string[];
16
+ export declare function buildComposeListServicesArgs(): string[];
17
+ export declare function buildComposeLogsArgs(service: string | undefined, options?: ComposeLogOptions): string[];
18
+ export declare function buildComposePullArgs(service: string | undefined): string[];
19
+ export declare function buildComposeUpArgs(): string[];
20
+ export declare function buildComposeRestartArgs(service: string | undefined): string[];
21
+ /**
22
+ * Parses `compose config --services` output. `podman compose` can print a
23
+ * provider notice before delegating, so anything that is not a valid service
24
+ * name is dropped rather than trusted.
25
+ */
26
+ export declare function parseServiceList(stdout: string): string[];
27
+ export declare function assertKnownService(service: string, known: string[]): void;
28
+ //# sourceMappingURL=compose-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-args.d.ts","sourceRoot":"","sources":["../../src/services/compose-args.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAuBlD,MAAM,WAAW,iBAAiB;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMvD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAS/C;AAQD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,cAAc,EACxB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EAAE,GACvB,MAAM,EAAE,CAeV;AAED,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED,wBAAgB,4BAA4B,IAAI,MAAM,EAAE,CAEvD;AAED,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,GAAE,iBAAsB,GAChC,MAAM,EAAE,CAkBV;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAO1E;AAED,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAO7E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAMzD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAMzE"}
@@ -0,0 +1,117 @@
1
+ import { resolve } from "node:path";
2
+ /**
3
+ * Argument construction for `docker compose` and `podman compose`.
4
+ *
5
+ * Both runtimes accept the same subcommands and flags used here, so the
6
+ * builders are runtime-agnostic: the runtime only decides which executable
7
+ * receives the argv. Every value that comes from the user is validated before
8
+ * it is placed in the argv, so it can never be read as an extra option.
9
+ */
10
+ // Compose service names: must start with a letter or digit, then letters,
11
+ // digits, dots, underscores or dashes. Rejecting a leading "-" is what keeps
12
+ // a service name from being parsed as a flag.
13
+ const SERVICE_NAME = /^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/;
14
+ // Go-style durations as accepted by `compose logs --since`, e.g. 10m, 1h30m.
15
+ const DURATION = /^(\d+(\.\d+)?(ns|us|µs|ms|s|m|h))+$/;
16
+ // RFC 3339 / ISO 8601 timestamps, e.g. 2026-09-01 or 2026-09-01T12:00:00Z.
17
+ const TIMESTAMP = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})?)?$/;
18
+ export function assertServiceName(service) {
19
+ if (!SERVICE_NAME.test(service)) {
20
+ throw new Error(`Invalid service name ${JSON.stringify(service)}. Service names start with a letter or digit and contain only letters, digits, ".", "_" and "-".`);
21
+ }
22
+ }
23
+ export function assertSince(since) {
24
+ const isDuration = DURATION.test(since);
25
+ const isTimestamp = TIMESTAMP.test(since) && !Number.isNaN(Date.parse(since));
26
+ if (!isDuration && !isTimestamp) {
27
+ throw new Error(`Invalid --since value ${JSON.stringify(since)}. Use a duration such as 10m or 2h30m, or a timestamp such as 2026-09-01T12:00:00Z.`);
28
+ }
29
+ }
30
+ function assertTail(tail) {
31
+ if (!Number.isInteger(tail) || tail < 0) {
32
+ throw new Error("--tail must be a whole number of lines, 0 or more.");
33
+ }
34
+ }
35
+ /**
36
+ * Options shared by every Compose invocation for an instance: env file,
37
+ * compose files, profiles and project name, all resolved against the
38
+ * project directory.
39
+ */
40
+ export function buildComposeBaseArgs(instance, projectDirectory, composeFiles) {
41
+ const args = ["compose"];
42
+ if (instance.envFile) {
43
+ args.push("--env-file", resolve(projectDirectory, instance.envFile));
44
+ }
45
+ for (const composeFile of composeFiles) {
46
+ args.push("-f", resolve(projectDirectory, composeFile));
47
+ }
48
+ for (const profile of instance.composeProfiles ?? []) {
49
+ args.push("--profile", profile);
50
+ }
51
+ if (instance.projectName) {
52
+ args.push("--project-name", instance.projectName);
53
+ }
54
+ return args;
55
+ }
56
+ export function buildComposePsArgs() {
57
+ return ["ps"];
58
+ }
59
+ export function buildComposeListServicesArgs() {
60
+ return ["config", "--services"];
61
+ }
62
+ export function buildComposeLogsArgs(service, options = {}) {
63
+ const args = ["logs"];
64
+ if (options.follow === true) {
65
+ args.push("--follow");
66
+ }
67
+ if (options.tail !== undefined) {
68
+ assertTail(options.tail);
69
+ args.push("--tail", String(options.tail));
70
+ }
71
+ if (options.since !== undefined) {
72
+ assertSince(options.since);
73
+ args.push("--since", options.since);
74
+ }
75
+ if (service !== undefined) {
76
+ assertServiceName(service);
77
+ args.push(service);
78
+ }
79
+ return args;
80
+ }
81
+ export function buildComposePullArgs(service) {
82
+ const args = ["pull"];
83
+ if (service !== undefined) {
84
+ assertServiceName(service);
85
+ args.push(service);
86
+ }
87
+ return args;
88
+ }
89
+ export function buildComposeUpArgs() {
90
+ return ["up", "-d"];
91
+ }
92
+ export function buildComposeRestartArgs(service) {
93
+ const args = ["restart"];
94
+ if (service !== undefined) {
95
+ assertServiceName(service);
96
+ args.push(service);
97
+ }
98
+ return args;
99
+ }
100
+ /**
101
+ * Parses `compose config --services` output. `podman compose` can print a
102
+ * provider notice before delegating, so anything that is not a valid service
103
+ * name is dropped rather than trusted.
104
+ */
105
+ export function parseServiceList(stdout) {
106
+ return stdout
107
+ .split(/\r?\n/)
108
+ .map((line) => line.trim())
109
+ .filter((line) => SERVICE_NAME.test(line))
110
+ .sort();
111
+ }
112
+ export function assertKnownService(service, known) {
113
+ if (!known.includes(service)) {
114
+ throw new Error(`Unknown service ${service}. Services in this project: ${known.join(", ") || "none"}.`);
115
+ }
116
+ }
117
+ //# sourceMappingURL=compose-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-args.js","sourceRoot":"","sources":["../../src/services/compose-args.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compose-project.d.ts","sourceRoot":"","sources":["../../src/services/compose-project.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAC7D,eAAO,MAAM,8BAA8B,kCAAkC,CAAC;AAC9E,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AACjD,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAC/D,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C,eAAO,MAAM,mBAAmB,gBAA2C,CAAC;AAG5E,KAAK,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;AACvC,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,CAAC;AACpD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,IAAI,CAAC;AAC5C,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC;AAExC,UAAU,iBAAiB;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAoCnE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CA2B7D;AA2DD,wBAAgB,eAAe,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAKzD;AAED,wBAAgB,6BAA6B,IAAI,MAAM,CAOtD;AAED,wBAAsB,qBAAqB,CACvC,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED,wBAAsB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlE"}
1
+ {"version":3,"file":"compose-project.d.ts","sourceRoot":"","sources":["../../src/services/compose-project.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAC7D,eAAO,MAAM,8BAA8B,kCAAkC,CAAC;AAC9E,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AACjD,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAC/D,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C,eAAO,MAAM,mBAAmB,gBAA2C,CAAC;AAG5E,KAAK,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;AACvC,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,CAAC;AACpD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,IAAI,CAAC;AAC5C,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC;AAExC,UAAU,iBAAiB;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAoCnE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CA2B7D;AA2DD,wBAAgB,eAAe,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAKzD;AAED,wBAAgB,6BAA6B,IAAI,MAAM,CAOtD;AAED,wBAAsB,qBAAqB,CACvC,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED,wBAAsB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlE"}
@@ -1,7 +1,7 @@
1
1
  import { randomBytes } from "node:crypto";
2
2
  import { cp, mkdir, readdir, readFile, rm, writeFile } from "node:fs/promises";
3
3
  import { dirname, join } from "node:path";
4
- import { readCliBinaryAsset, readCliTextAsset } from "../sea-assets.js";
4
+ import { readCliBinaryAsset, readCliTextAsset, templateAssetUrl, } from "../sea-assets.js";
5
5
  export const defaultComposeFileName = "eudiplo.compose.yaml";
6
6
  export const defaultComposeOverrideFileName = "eudiplo.compose.override.yaml";
7
7
  export const defaultEnvFileName = ".eudiplo.env";
@@ -114,7 +114,7 @@ export function resolveImageTag(imageTagOverride) {
114
114
  return "latest";
115
115
  }
116
116
  export async function createComposeFile() {
117
- return readCliTextAsset("templates/docker-compose.yml", new URL("../../templates/docker-compose.yml", import.meta.url));
117
+ return readCliTextAsset("templates/docker-compose.yml", templateAssetUrl("docker-compose.yml"));
118
118
  }
119
119
  export function createNoClientComposeOverride() {
120
120
  return [
@@ -138,7 +138,7 @@ export async function copyBundledDemoConfig(targetDirectory, force) {
138
138
  recursive: true,
139
139
  mode: 0o700,
140
140
  });
141
- const contents = await readCliBinaryAsset(`templates/demo-config/${normalized}`, new URL(`../../templates/demo-config/${normalized}`, import.meta.url));
141
+ const contents = await readCliBinaryAsset(`templates/demo-config/${normalized}`, templateAssetUrl(`demo-config/${normalized}`));
142
142
  await writeFile(destinationPath, contents, { mode: 0o600 });
143
143
  }
144
144
  return;
@@ -161,7 +161,7 @@ export async function hasFiles(directory) {
161
161
  }
162
162
  async function readDemoConfigManifest() {
163
163
  try {
164
- const manifestText = await readCliTextAsset(demoConfigManifestAssetKey, new URL("../../templates/demo-config.manifest.json", import.meta.url));
164
+ const manifestText = await readCliTextAsset(demoConfigManifestAssetKey, templateAssetUrl("demo-config.manifest.json"));
165
165
  const parsed = JSON.parse(manifestText);
166
166
  if (Array.isArray(parsed) &&
167
167
  parsed.every((item) => typeof item === "string")) {
@@ -170,7 +170,7 @@ async function readDemoConfigManifest() {
170
170
  }
171
171
  catch {
172
172
  try {
173
- const localManifest = await readFile(new URL("../../templates/demo-config.manifest.json", import.meta.url), "utf8");
173
+ const localManifest = await readFile(templateAssetUrl("demo-config.manifest.json"), "utf8");
174
174
  const parsed = JSON.parse(localManifest);
175
175
  if (Array.isArray(parsed) &&
176
176
  parsed.every((item) => typeof item === "string")) {
@@ -1 +1 @@
1
- {"version":3,"file":"compose-project.js","sourceRoot":"","sources":["../../src/services/compose-project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compose-project.js","sourceRoot":"","sources":["../../src/services/compose-project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Application upgrades for Compose instances.
3
+ *
4
+ * The CLI manages exactly two lines in the instance env file:
5
+ * EUDIPLO_IMAGE and EUDIPLO_CLIENT_IMAGE, pointing at the official images.
6
+ * An upgrade rewrites the tag on those lines and nothing else: every other
7
+ * byte of the file, including comments, ordering, user keys and line
8
+ * endings, is kept as it was.
9
+ */
10
+ declare const managedImages: {
11
+ readonly EUDIPLO_IMAGE: "ghcr.io/openwallet-foundation/eudiplo";
12
+ readonly EUDIPLO_CLIENT_IMAGE: "ghcr.io/openwallet-foundation/eudiplo-client";
13
+ };
14
+ type ManagedKey = keyof typeof managedImages;
15
+ interface ImageChange {
16
+ key: ManagedKey;
17
+ repository: string;
18
+ from: string;
19
+ to: string;
20
+ }
21
+ interface UpgradePlan {
22
+ changes: ImageChange[];
23
+ /** The env file with only the managed tags replaced. */
24
+ content: string;
25
+ }
26
+ export declare function assertImageTag(tag: string): void;
27
+ /**
28
+ * Plans a tag change for the managed image lines. Refuses rather than
29
+ * guesses when a line has been customised (another registry, a digest, or
30
+ * no tag), because that line is then user-managed.
31
+ */
32
+ export declare function planImageUpgrade(content: string, tag: string): UpgradePlan;
33
+ /**
34
+ * Notes to show before an upgrade: the migration guide for every major
35
+ * version crossed, a downgrade warning, or a pointer to the guide index when
36
+ * the tags are not plain versions (e.g. "latest").
37
+ */
38
+ export declare function migrationNotes(from: string, to: string): string[];
39
+ export {};
40
+ //# sourceMappingURL=compose-upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-upgrade.d.ts","sourceRoot":"","sources":["../../src/services/compose-upgrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,QAAA,MAAM,aAAa;aACf,aAAa,EAAE,uCAAuC;aACtD,oBAAoB,EAAE,8CAA8C;CAC9D,CAAC;AAEX,KAAK,UAAU,GAAG,MAAM,OAAO,aAAa,CAAC;AAE7C,UAAU,WAAW;IACjB,GAAG,EAAE,UAAU,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACd;AAED,UAAU,WAAW;IACjB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;CACnB;AAKD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAMhD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAiD1E;AA0BD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAwBjE"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Application upgrades for Compose instances.
3
+ *
4
+ * The CLI manages exactly two lines in the instance env file:
5
+ * EUDIPLO_IMAGE and EUDIPLO_CLIENT_IMAGE, pointing at the official images.
6
+ * An upgrade rewrites the tag on those lines and nothing else: every other
7
+ * byte of the file, including comments, ordering, user keys and line
8
+ * endings, is kept as it was.
9
+ */
10
+ const managedImages = {
11
+ EUDIPLO_IMAGE: "ghcr.io/openwallet-foundation/eudiplo",
12
+ EUDIPLO_CLIENT_IMAGE: "ghcr.io/openwallet-foundation/eudiplo-client",
13
+ };
14
+ // OCI tag grammar: up to 128 characters, no leading "." or "-".
15
+ const TAG = /^[A-Za-z0-9_][A-Za-z0-9_.-]{0,127}$/;
16
+ export function assertImageTag(tag) {
17
+ if (!TAG.test(tag)) {
18
+ throw new Error(`Invalid image tag ${JSON.stringify(tag)}. Tags contain letters, digits, "_", "." and "-", and cannot start with "." or "-".`);
19
+ }
20
+ }
21
+ /**
22
+ * Plans a tag change for the managed image lines. Refuses rather than
23
+ * guesses when a line has been customised (another registry, a digest, or
24
+ * no tag), because that line is then user-managed.
25
+ */
26
+ export function planImageUpgrade(content, tag) {
27
+ assertImageTag(tag);
28
+ const found = new Set();
29
+ const changes = [];
30
+ // Split on "\n" only, so "\r" stays attached to its line and CRLF files
31
+ // are written back with CRLF.
32
+ const lines = content.split("\n").map((line) => {
33
+ const match = /^(EUDIPLO_IMAGE|EUDIPLO_CLIENT_IMAGE)=(.*?)(\r?)$/.exec(line);
34
+ if (!match) {
35
+ return line;
36
+ }
37
+ const key = match[1];
38
+ const value = match[2];
39
+ const lineEnding = match[3];
40
+ const repository = managedImages[key];
41
+ if (found.has(key)) {
42
+ throw new Error(`${key} is defined more than once in the env file.`);
43
+ }
44
+ found.add(key);
45
+ const prefix = `${repository}:`;
46
+ const current = value.startsWith(prefix)
47
+ ? value.slice(prefix.length)
48
+ : undefined;
49
+ if (current === undefined || !TAG.test(current)) {
50
+ throw new Error(`${key} is set to ${value}, which is not a CLI-managed image. Update it yourself, or restore ${prefix}<tag> to let the CLI manage it.`);
51
+ }
52
+ if (current !== tag) {
53
+ changes.push({ key, repository, from: current, to: tag });
54
+ }
55
+ return `${key}=${prefix}${tag}${lineEnding}`;
56
+ });
57
+ if (!found.has("EUDIPLO_IMAGE")) {
58
+ throw new Error("The env file does not define EUDIPLO_IMAGE, so there is no CLI-managed image to upgrade.");
59
+ }
60
+ return { changes, content: lines.join("\n") };
61
+ }
62
+ function parseVersion(tag) {
63
+ const match = /^v?(\d+)\.(\d+)\.(\d+)$/.exec(tag);
64
+ if (!match) {
65
+ return undefined;
66
+ }
67
+ return {
68
+ major: Number(match[1]),
69
+ minor: Number(match[2]),
70
+ patch: Number(match[3]),
71
+ };
72
+ }
73
+ function compareVersions(a, b) {
74
+ return a.major - b.major || a.minor - b.minor || a.patch - b.patch;
75
+ }
76
+ const migrationBaseUrl = "https://docs.eudiplo.dev/migration";
77
+ /**
78
+ * Notes to show before an upgrade: the migration guide for every major
79
+ * version crossed, a downgrade warning, or a pointer to the guide index when
80
+ * the tags are not plain versions (e.g. "latest").
81
+ */
82
+ export function migrationNotes(from, to) {
83
+ const fromVersion = parseVersion(from);
84
+ const toVersion = parseVersion(to);
85
+ if (!fromVersion || !toVersion) {
86
+ return [
87
+ `Cannot compare ${from} and ${to} as versions. Check the release notes and ${migrationBaseUrl} before continuing.`,
88
+ ];
89
+ }
90
+ const order = compareVersions(fromVersion, toVersion);
91
+ if (order > 0) {
92
+ return [
93
+ `${to} is older than ${from}. Downgrades are not supported once database migrations have run; restore a backup instead if you need to go back.`,
94
+ ];
95
+ }
96
+ const notes = [];
97
+ for (let major = fromVersion.major + 1; major <= toVersion.major; major++) {
98
+ notes.push(`Major version ${major}: read ${migrationBaseUrl}/${major - 1}.x-to-${major}.0 first.`);
99
+ }
100
+ return notes;
101
+ }
102
+ //# sourceMappingURL=compose-upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-upgrade.js","sourceRoot":"","sources":["../../src/services/compose-upgrade.ts"],"names":[],"mappings":"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"}