@start9labs/start-sdk 0.4.0-beta.3 → 0.4.0-beta.4

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 (49) hide show
  1. package/base/lib/Effects.d.ts +3 -0
  2. package/base/lib/actions/setupActions.js +7 -7
  3. package/base/lib/actions/setupActions.js.map +1 -1
  4. package/base/lib/dependencies/setupDependencies.js +5 -7
  5. package/base/lib/dependencies/setupDependencies.js.map +1 -1
  6. package/base/lib/interfaces/setupInterfaces.js +7 -9
  7. package/base/lib/interfaces/setupInterfaces.js.map +1 -1
  8. package/base/lib/util/GetSystemSmtp.js +7 -2
  9. package/base/lib/util/GetSystemSmtp.js.map +1 -1
  10. package/base/lib/util/getServiceInterface.d.ts +10 -0
  11. package/base/lib/util/getServiceInterface.js +41 -1
  12. package/base/lib/util/getServiceInterface.js.map +1 -1
  13. package/base/lib/util/getServiceInterfaces.js +6 -1
  14. package/base/lib/util/getServiceInterfaces.js.map +1 -1
  15. package/package/lib/StartSdk.d.ts +21 -10
  16. package/package/lib/StartSdk.js +23 -4
  17. package/package/lib/StartSdk.js.map +1 -1
  18. package/package/lib/backup/Backups.d.ts +6 -0
  19. package/package/lib/backup/Backups.js +7 -1
  20. package/package/lib/backup/Backups.js.map +1 -1
  21. package/package/lib/health/checkFns/runHealthScript.d.ts +2 -1
  22. package/package/lib/health/checkFns/runHealthScript.js.map +1 -1
  23. package/package/lib/mainFn/CommandController.d.ts +6 -8
  24. package/package/lib/mainFn/CommandController.js +14 -17
  25. package/package/lib/mainFn/CommandController.js.map +1 -1
  26. package/package/lib/mainFn/Daemon.d.ts +7 -9
  27. package/package/lib/mainFn/Daemon.js.map +1 -1
  28. package/package/lib/mainFn/Daemons.d.ts +8 -11
  29. package/package/lib/mainFn/Daemons.js +0 -1
  30. package/package/lib/mainFn/Daemons.js.map +1 -1
  31. package/package/lib/mainFn/HealthDaemon.d.ts +3 -3
  32. package/package/lib/mainFn/HealthDaemon.js.map +1 -1
  33. package/package/lib/mainFn/Mounts.d.ts +13 -5
  34. package/package/lib/mainFn/Mounts.js +35 -22
  35. package/package/lib/mainFn/Mounts.js.map +1 -1
  36. package/package/lib/store/getStore.js +7 -2
  37. package/package/lib/store/getStore.js.map +1 -1
  38. package/package/lib/test/output.sdk.d.ts +128 -8
  39. package/package/lib/util/Drop.js +3 -1
  40. package/package/lib/util/Drop.js.map +1 -1
  41. package/package/lib/util/GetSslCertificate.js +7 -2
  42. package/package/lib/util/GetSslCertificate.js.map +1 -1
  43. package/package/lib/util/SubContainer.d.ts +38 -13
  44. package/package/lib/util/SubContainer.js +88 -78
  45. package/package/lib/util/SubContainer.js.map +1 -1
  46. package/package/lib/util/fileHelper.d.ts +2 -2
  47. package/package/lib/util/fileHelper.js +7 -7
  48. package/package/lib/util/fileHelper.js.map +1 -1
  49. package/package.json +1 -1
@@ -113,7 +113,7 @@ export declare const sdk: {
113
113
  s9pk: string;
114
114
  };
115
115
  };
116
- }>;
116
+ }, never> | null;
117
117
  }, name?: string) => Promise<{
118
118
  stdout: string | Buffer;
119
119
  stderr: string | Buffer;
@@ -170,7 +170,7 @@ export declare const sdk: {
170
170
  successMessage?: string | undefined;
171
171
  errorMessage?: string | undefined;
172
172
  }) => Promise<import("../health/checkFns").HealthCheckResult>;
173
- runHealthScript: (runCommand: string[], subcontainer: import("..").SubContainer, { timeout, errorMessage, message, }?: {
173
+ runHealthScript: <Manifest extends import("../types").SDKManifest>(runCommand: string[], subcontainer: import("..").SubContainer<Manifest>, { timeout, errorMessage, message, }?: {
174
174
  timeout?: number | undefined;
175
175
  errorMessage?: string | undefined;
176
176
  message?: ((res: string) => string) | undefined;
@@ -796,7 +796,7 @@ export declare const sdk: {
796
796
  s9pk: string;
797
797
  };
798
798
  };
799
- }>;
799
+ }, never>;
800
800
  };
801
801
  Backups: {
802
802
  volumes: (...volumeNames: never[]) => import("../backup/Backups").Backups<{
@@ -989,14 +989,134 @@ export declare const sdk: {
989
989
  of(effects: import("../types").Effects, image: {
990
990
  imageId: "main";
991
991
  sharedRun?: boolean;
992
- }, name: string): Promise<import("..").SubContainer>;
992
+ }, mounts: import("../mainFn/Mounts").Mounts<{
993
+ id: "testOutput";
994
+ title: string;
995
+ license: string;
996
+ replaces: never[];
997
+ wrapperRepo: string;
998
+ upstreamRepo: string;
999
+ supportSite: string;
1000
+ marketingSite: string;
1001
+ donationUrl: null;
1002
+ description: {
1003
+ short: string;
1004
+ long: string;
1005
+ };
1006
+ containers: {};
1007
+ images: {
1008
+ main: {
1009
+ source: {
1010
+ dockerTag: string;
1011
+ };
1012
+ arch: ["aarch64", "x86_64"];
1013
+ emulateMissingAs: "aarch64";
1014
+ };
1015
+ };
1016
+ volumes: never[];
1017
+ assets: never[];
1018
+ alerts: {
1019
+ install: null;
1020
+ update: null;
1021
+ uninstall: null;
1022
+ restore: null;
1023
+ start: null;
1024
+ stop: null;
1025
+ };
1026
+ dependencies: {
1027
+ "remote-test": {
1028
+ description: string;
1029
+ optional: false;
1030
+ s9pk: string;
1031
+ };
1032
+ };
1033
+ }, never> | null, name: string): Promise<import("..").SubContainer<import("../types").SDKManifest, import("../types").Effects>>;
993
1034
  with<T>(effects: import("../types").Effects, image: {
994
1035
  imageId: "main";
995
1036
  sharedRun?: boolean;
996
- }, mounts: {
997
- options: import("../util/SubContainer").MountOptions;
998
- mountpoint: string;
999
- }[], name: string, fn: (subContainer: import("..").SubContainer) => Promise<T>): Promise<T>;
1037
+ }, mounts: import("../mainFn/Mounts").Mounts<{
1038
+ id: "testOutput";
1039
+ title: string;
1040
+ license: string;
1041
+ replaces: never[];
1042
+ wrapperRepo: string;
1043
+ upstreamRepo: string;
1044
+ supportSite: string;
1045
+ marketingSite: string;
1046
+ donationUrl: null;
1047
+ description: {
1048
+ short: string;
1049
+ long: string;
1050
+ };
1051
+ containers: {};
1052
+ images: {
1053
+ main: {
1054
+ source: {
1055
+ dockerTag: string;
1056
+ };
1057
+ arch: ["aarch64", "x86_64"];
1058
+ emulateMissingAs: "aarch64";
1059
+ };
1060
+ };
1061
+ volumes: never[];
1062
+ assets: never[];
1063
+ alerts: {
1064
+ install: null;
1065
+ update: null;
1066
+ uninstall: null;
1067
+ restore: null;
1068
+ start: null;
1069
+ stop: null;
1070
+ };
1071
+ dependencies: {
1072
+ "remote-test": {
1073
+ description: string;
1074
+ optional: false;
1075
+ s9pk: string;
1076
+ };
1077
+ };
1078
+ }, never> | null, name: string, fn: (subContainer: import("..").SubContainer<{
1079
+ id: "testOutput";
1080
+ title: string;
1081
+ license: string;
1082
+ replaces: never[];
1083
+ wrapperRepo: string;
1084
+ upstreamRepo: string;
1085
+ supportSite: string;
1086
+ marketingSite: string;
1087
+ donationUrl: null;
1088
+ description: {
1089
+ short: string;
1090
+ long: string;
1091
+ };
1092
+ containers: {};
1093
+ images: {
1094
+ main: {
1095
+ source: {
1096
+ dockerTag: string;
1097
+ };
1098
+ arch: ["aarch64", "x86_64"];
1099
+ emulateMissingAs: "aarch64";
1100
+ };
1101
+ };
1102
+ volumes: never[];
1103
+ assets: never[];
1104
+ alerts: {
1105
+ install: null;
1106
+ update: null;
1107
+ uninstall: null;
1108
+ restore: null;
1109
+ start: null;
1110
+ stop: null;
1111
+ };
1112
+ dependencies: {
1113
+ "remote-test": {
1114
+ description: string;
1115
+ optional: false;
1116
+ s9pk: string;
1117
+ };
1118
+ };
1119
+ }, import("../types").Effects>) => Promise<T>): Promise<T>;
1000
1120
  };
1001
1121
  List: {
1002
1122
  text: typeof import("../../../base/lib/actions/input/builder").List.text;
@@ -22,7 +22,9 @@ class Drop {
22
22
  exports.Drop = Drop;
23
23
  Drop.weak = {};
24
24
  Drop.registry = new FinalizationRegistry((id) => {
25
- Drop.weak[id].drop();
25
+ const weak = Drop.weak[id];
26
+ if (weak)
27
+ weak.drop();
26
28
  });
27
29
  Drop.idCtr = 0;
28
30
  //# sourceMappingURL=Drop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Drop.js","sourceRoot":"","sources":["../../../../package/lib/util/Drop.ts"],"names":[],"mappings":";;;AAAA,MAAsB,IAAI;IAQxB;QACE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IACS,IAAI;QACZ,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC5E,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAChC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI;QACF,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3B,CAAC;;AAxBH,oBAyBC;AAxBgB,SAAI,GAA2B,EAAE,CAAA;AACjC,aAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,EAAU,EAAE,EAAE;IAChE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AACtB,CAAC,CAAC,CAAA;AACa,UAAK,GAAW,CAAC,CAAA"}
1
+ {"version":3,"file":"Drop.js","sourceRoot":"","sources":["../../../../package/lib/util/Drop.ts"],"names":[],"mappings":";;;AAAA,MAAsB,IAAI;IASxB;QACE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IACS,IAAI;QACZ,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC5E,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAChC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI;QACF,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3B,CAAC;;AAzBH,oBA0BC;AAzBgB,SAAI,GAA2B,EAAE,CAAA;AACjC,aAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,EAAU,EAAE,EAAE;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC1B,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,EAAE,CAAA;AACvB,CAAC,CAAC,CAAA;AACa,UAAK,GAAW,CAAC,CAAA"}
@@ -31,10 +31,15 @@ class GetSslCertificate {
31
31
  * Watches the SSL Certificate for the given hostnames if permitted. Returns an async iterator that yields whenever the value changes
32
32
  */
33
33
  async *watch() {
34
- while (true) {
35
- let callback;
34
+ const resolveCell = { resolve: () => { } };
35
+ this.effects.onLeaveContext(() => {
36
+ resolveCell.resolve();
37
+ });
38
+ while (this.effects.isInContext) {
39
+ let callback = () => { };
36
40
  const waitForNext = new Promise((resolve) => {
37
41
  callback = resolve;
42
+ resolveCell.resolve = resolve;
38
43
  });
39
44
  yield await this.effects.getSslCertificate({
40
45
  hostnames: this.hostnames,
@@ -1 +1 @@
1
- {"version":3,"file":"GetSslCertificate.js","sourceRoot":"","sources":["../../../../package/lib/util/GetSslCertificate.ts"],"names":[],"mappings":";;;AAGA,MAAa,iBAAiB;IAC5B,YACW,OAAgB,EAChB,SAAmB,EACnB,SAAuB;QAFvB,YAAO,GAAP,OAAO,CAAS;QAChB,cAAS,GAAT,SAAS,CAAU;QACnB,cAAS,GAAT,SAAS,CAAc;IAC/B,CAAC;IAEJ;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;YACpC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EACN,IAAI,CAAC,OAAO,CAAC,UAAU;gBACvB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;SAC/D,CAAC,CAAA;IACJ,CAAC;IACD;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;YACpC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,KAAK;QACV,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,QAAoB,CAAA;YACxB,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAChD,QAAQ,GAAG,OAAO,CAAA;YACpB,CAAC,CAAC,CAAA;YACF,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;gBACzC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE;aAC3B,CAAC,CAAA;YACF,MAAM,WAAW,CAAA;QACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CACN,QAGyB;QAEzB,CAAC;QAAA,CAAC,KAAK,IAAI,EAAE;YACX,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACvC,IAAI,CAAC;oBACH,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAA;gBACvB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CACX,+DAA+D,EAC/D,CAAC,CACF,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC/B,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CACX,OAAO,CAAC,KAAK,CACX,+DAA+D,EAC/D,CAAC,CACF,CACF,CAAA;IACL,CAAC;CACF;AA5ED,8CA4EC"}
1
+ {"version":3,"file":"GetSslCertificate.js","sourceRoot":"","sources":["../../../../package/lib/util/GetSslCertificate.ts"],"names":[],"mappings":";;;AAGA,MAAa,iBAAiB;IAC5B,YACW,OAAgB,EAChB,SAAmB,EACnB,SAAuB;QAFvB,YAAO,GAAP,OAAO,CAAS;QAChB,cAAS,GAAT,SAAS,CAAU;QACnB,cAAS,GAAT,SAAS,CAAc;IAC/B,CAAC;IAEJ;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;YACpC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EACN,IAAI,CAAC,OAAO,CAAC,UAAU;gBACvB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;SAC/D,CAAC,CAAA;IACJ,CAAC;IACD;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;YACpC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,KAAK;QACV,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAA;QACzC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE;YAC/B,WAAW,CAAC,OAAO,EAAE,CAAA;QACvB,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,QAAQ,GAAe,GAAG,EAAE,GAAE,CAAC,CAAA;YACnC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAChD,QAAQ,GAAG,OAAO,CAAA;gBAClB,WAAW,CAAC,OAAO,GAAG,OAAO,CAAA;YAC/B,CAAC,CAAC,CAAA;YACF,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;gBACzC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE;aAC3B,CAAC,CAAA;YACF,MAAM,WAAW,CAAA;QACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CACN,QAGyB;QAEzB,CAAC;QAAA,CAAC,KAAK,IAAI,EAAE;YACX,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACvC,IAAI,CAAC;oBACH,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAA;gBACvB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CACX,+DAA+D,EAC/D,CAAC,CACF,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC/B,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CACX,OAAO,CAAC,KAAK,CACX,+DAA+D,EAC/D,CAAC,CACF,CACF,CAAA;IACL,CAAC;CACF;AAjFD,8CAiFC"}
@@ -1,6 +1,9 @@
1
1
  import * as T from "../../../base/lib/types";
2
2
  import * as cp from "child_process";
3
3
  import { Buffer } from "node:buffer";
4
+ import { Drop } from "./Drop";
5
+ import { Mounts } from "../mainFn/Mounts";
6
+ import { BackupEffects } from "../backup/Backups";
4
7
  export declare const execFile: typeof cp.execFile.__promisify__;
5
8
  type ExecResults = {
6
9
  exitCode: number | null;
@@ -28,31 +31,44 @@ export interface ExecSpawnable {
28
31
  * Implements:
29
32
  * @see {@link ExecSpawnable}
30
33
  */
31
- export declare class SubContainer implements ExecSpawnable {
32
- readonly effects: T.Effects;
34
+ export declare class SubContainer<Manifest extends T.SDKManifest, Effects extends T.Effects = T.Effects> extends Drop implements ExecSpawnable {
35
+ readonly effects: Effects;
33
36
  readonly imageId: T.ImageId;
34
37
  readonly rootfs: string;
35
38
  readonly guid: T.Guid;
36
- private static finalizationEffects;
37
- private static registry;
39
+ private destroyed;
38
40
  private leader;
39
41
  private leaderExited;
40
42
  private waitProc;
41
43
  private constructor();
42
- static of(effects: T.Effects, image: {
43
- imageId: T.ImageId;
44
+ static of<Manifest extends T.SDKManifest, Effects extends T.Effects>(effects: Effects, image: {
45
+ imageId: keyof Manifest["images"] & T.ImageId;
44
46
  sharedRun?: boolean;
45
- }, name: string): Promise<SubContainer>;
46
- static with<T>(effects: T.Effects, image: {
47
- imageId: T.ImageId;
47
+ }, mounts: (Effects extends BackupEffects ? Mounts<Manifest, {
48
+ subpath: string | null;
49
+ mountpoint: string;
50
+ }> : Mounts<Manifest, never>) | null, name: string): Promise<SubContainer<T.SDKManifest, Effects>>;
51
+ static with<Manifest extends T.SDKManifest, T, Effects extends T.Effects>(effects: Effects, image: {
52
+ imageId: keyof Manifest["images"] & T.ImageId;
48
53
  sharedRun?: boolean;
49
- }, mounts: {
50
- options: MountOptions;
54
+ }, mounts: (Effects extends BackupEffects ? Mounts<Manifest, {
55
+ subpath: string | null;
56
+ mountpoint: string;
57
+ }> : Mounts<Manifest, never>) | null, name: string, fn: (subContainer: SubContainer<Manifest, Effects>) => Promise<T>): Promise<T>;
58
+ mount(mounts: Effects extends BackupEffects ? Mounts<Manifest, {
59
+ subpath: string | null;
51
60
  mountpoint: string;
52
- }[], name: string, fn: (subContainer: SubContainer) => Promise<T>): Promise<T>;
53
- mount(options: MountOptions, path: string): Promise<SubContainer>;
61
+ }> : Mounts<Manifest, never>): Promise<SubContainer<Manifest, Effects>>;
54
62
  private killLeader;
55
63
  get destroy(): () => Promise<null>;
64
+ onDrop(): void;
65
+ /**
66
+ * @description run a command inside this subcontainer
67
+ * @param commands an array representing the command and args to execute
68
+ * @param options
69
+ * @param timeoutMs how long to wait before killing the command in ms
70
+ * @returns
71
+ */
56
72
  exec(command: string[], options?: CommandOptions & ExecOptions, timeoutMs?: number | null): Promise<{
57
73
  exitCode: number | null;
58
74
  exitSignal: NodeJS.Signals | null;
@@ -75,10 +91,19 @@ export declare class SubContainerHandle implements ExecSpawnable {
75
91
  spawn(command: string[], options?: CommandOptions & StdioOptions): Promise<cp.ChildProcess>;
76
92
  }
77
93
  export type CommandOptions = {
94
+ /**
95
+ * Environment variables to set for this command
96
+ */
78
97
  env?: {
79
98
  [variable: string]: string;
80
99
  };
100
+ /**
101
+ * the working directory to run this command in
102
+ */
81
103
  cwd?: string;
104
+ /**
105
+ * the user to run this command as
106
+ */
82
107
  user?: string;
83
108
  };
84
109
  export type StdioOptions = {
@@ -32,7 +32,6 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
- var _a;
36
35
  Object.defineProperty(exports, "__esModule", { value: true });
37
36
  exports.ExitError = exports.SubContainerHandle = exports.SubContainer = exports.execFile = void 0;
38
37
  const fs = __importStar(require("fs/promises"));
@@ -40,6 +39,7 @@ const cp = __importStar(require("child_process"));
40
39
  const util_1 = require("util");
41
40
  const node_buffer_1 = require("node:buffer");
42
41
  const once_1 = require("../../../base/lib/util/once");
42
+ const Drop_1 = require("./Drop");
43
43
  exports.execFile = (0, util_1.promisify)(cp.execFile);
44
44
  const False = () => false;
45
45
  const TIMES_TO_WAIT_FOR_PROC = 100;
@@ -49,15 +49,15 @@ const TIMES_TO_WAIT_FOR_PROC = 100;
49
49
  * Implements:
50
50
  * @see {@link ExecSpawnable}
51
51
  */
52
- class SubContainer {
52
+ class SubContainer extends Drop_1.Drop {
53
53
  constructor(effects, imageId, rootfs, guid) {
54
+ super();
54
55
  this.effects = effects;
55
56
  this.imageId = imageId;
56
57
  this.rootfs = rootfs;
57
58
  this.guid = guid;
59
+ this.destroyed = false;
58
60
  this.leaderExited = false;
59
- if (!_a.finalizationEffects.effects)
60
- _a.finalizationEffects.effects = effects;
61
61
  this.leaderExited = false;
62
62
  this.leader = cp.spawn("start-cli", ["subcontainer", "launch", rootfs], {
63
63
  killSignal: "SIGKILL",
@@ -82,83 +82,90 @@ class SubContainer {
82
82
  resolve(null);
83
83
  }));
84
84
  }
85
- static async of(effects, image, name) {
85
+ static async of(effects, image, mounts, name) {
86
86
  const { imageId, sharedRun } = image;
87
87
  const [rootfs, guid] = await effects.subcontainer.createFs({
88
88
  imageId,
89
89
  name,
90
90
  });
91
- const res = new _a(effects, imageId, rootfs, guid);
92
- _a.registry.register(res, guid, res);
93
- const shared = ["dev", "sys"];
94
- if (!!sharedRun) {
95
- shared.push("run");
91
+ const res = new SubContainer(effects, imageId, rootfs, guid);
92
+ try {
93
+ if (mounts) {
94
+ await res.mount(mounts);
95
+ }
96
+ const shared = ["dev", "sys"];
97
+ if (!!sharedRun) {
98
+ shared.push("run");
99
+ }
100
+ await fs.mkdir(`${rootfs}/etc`, { recursive: true });
101
+ await fs.copyFile("/etc/resolv.conf", `${rootfs}/etc/resolv.conf`);
102
+ for (const dirPart of shared) {
103
+ const from = `/${dirPart}`;
104
+ const to = `${rootfs}/${dirPart}`;
105
+ await fs.mkdir(from, { recursive: true });
106
+ await fs.mkdir(to, { recursive: true });
107
+ await (0, exports.execFile)("mount", ["--rbind", from, to]);
108
+ }
109
+ return res;
96
110
  }
97
- await fs.mkdir(`${rootfs}/etc`, { recursive: true });
98
- await fs.copyFile("/etc/resolv.conf", `${rootfs}/etc/resolv.conf`);
99
- for (const dirPart of shared) {
100
- const from = `/${dirPart}`;
101
- const to = `${rootfs}/${dirPart}`;
102
- await fs.mkdir(from, { recursive: true });
103
- await fs.mkdir(to, { recursive: true });
104
- await (0, exports.execFile)("mount", ["--rbind", from, to]);
111
+ finally {
112
+ await res.destroy();
105
113
  }
106
- return res;
107
114
  }
108
115
  static async with(effects, image, mounts, name, fn) {
109
- const subContainer = await _a.of(effects, image, name);
116
+ const subContainer = await SubContainer.of(effects, image, mounts, name);
110
117
  try {
111
- for (let mount of mounts) {
112
- await subContainer.mount(mount.options, mount.mountpoint);
113
- }
114
118
  return await fn(subContainer);
115
119
  }
116
120
  finally {
117
121
  await subContainer.destroy();
118
122
  }
119
123
  }
120
- async mount(options, path) {
121
- path = path.startsWith("/")
122
- ? `${this.rootfs}${path}`
123
- : `${this.rootfs}/${path}`;
124
- if (options.type === "volume") {
125
- const subpath = options.subpath
126
- ? options.subpath.startsWith("/")
127
- ? options.subpath
128
- : `/${options.subpath}`
129
- : "/";
130
- const from = `/media/startos/volumes/${options.id}${subpath}`;
131
- await fs.mkdir(from, { recursive: true });
132
- await fs.mkdir(path, { recursive: true });
133
- await (0, exports.execFile)("mount", ["--bind", from, path]);
134
- }
135
- else if (options.type === "assets") {
136
- const subpath = options.subpath
137
- ? options.subpath.startsWith("/")
138
- ? options.subpath
139
- : `/${options.subpath}`
140
- : "/";
141
- const from = `/media/startos/assets/${subpath}`;
142
- await fs.mkdir(from, { recursive: true });
143
- await fs.mkdir(path, { recursive: true });
144
- await (0, exports.execFile)("mount", ["--bind", from, path]);
145
- }
146
- else if (options.type === "pointer") {
147
- await this.effects.mount({ location: path, target: options });
148
- }
149
- else if (options.type === "backup") {
150
- const subpath = options.subpath
151
- ? options.subpath.startsWith("/")
152
- ? options.subpath
153
- : `/${options.subpath}`
154
- : "/";
155
- const from = `/media/startos/backup${subpath}`;
156
- await fs.mkdir(from, { recursive: true });
157
- await fs.mkdir(path, { recursive: true });
158
- await (0, exports.execFile)("mount", ["--bind", from, path]);
159
- }
160
- else {
161
- throw new Error(`unknown type ${options.type}`);
124
+ async mount(mounts) {
125
+ for (let mount of mounts.build()) {
126
+ let { options, mountpoint } = mount;
127
+ const path = mountpoint.startsWith("/")
128
+ ? `${this.rootfs}${mountpoint}`
129
+ : `${this.rootfs}/${mountpoint}`;
130
+ if (options.type === "volume") {
131
+ const subpath = options.subpath
132
+ ? options.subpath.startsWith("/")
133
+ ? options.subpath
134
+ : `/${options.subpath}`
135
+ : "/";
136
+ const from = `/media/startos/volumes/${options.id}${subpath}`;
137
+ await fs.mkdir(from, { recursive: true });
138
+ await fs.mkdir(path, { recursive: true });
139
+ await (0, exports.execFile)("mount", ["--bind", from, path]);
140
+ }
141
+ else if (options.type === "assets") {
142
+ const subpath = options.subpath
143
+ ? options.subpath.startsWith("/")
144
+ ? options.subpath
145
+ : `/${options.subpath}`
146
+ : "/";
147
+ const from = `/media/startos/assets/${subpath}`;
148
+ await fs.mkdir(from, { recursive: true });
149
+ await fs.mkdir(path, { recursive: true });
150
+ await (0, exports.execFile)("mount", ["--bind", from, path]);
151
+ }
152
+ else if (options.type === "pointer") {
153
+ await this.effects.mount({ location: path, target: options });
154
+ }
155
+ else if (options.type === "backup") {
156
+ const subpath = options.subpath
157
+ ? options.subpath.startsWith("/")
158
+ ? options.subpath
159
+ : `/${options.subpath}`
160
+ : "/";
161
+ const from = `/media/startos/backup${subpath}`;
162
+ await fs.mkdir(from, { recursive: true });
163
+ await fs.mkdir(path, { recursive: true });
164
+ await (0, exports.execFile)("mount", ["--bind", from, path]);
165
+ }
166
+ else {
167
+ throw new Error(`unknown type ${options.type}`);
168
+ }
162
169
  }
163
170
  return this;
164
171
  }
@@ -184,13 +191,25 @@ class SubContainer {
184
191
  }
185
192
  get destroy() {
186
193
  return async () => {
187
- const guid = this.guid;
188
- await this.killLeader();
189
- await this.effects.subcontainer.destroyFs({ guid });
190
- _a.registry.unregister(this);
194
+ if (!this.destroyed) {
195
+ const guid = this.guid;
196
+ await this.killLeader();
197
+ await this.effects.subcontainer.destroyFs({ guid });
198
+ this.destroyed = true;
199
+ }
191
200
  return null;
192
201
  };
193
202
  }
203
+ onDrop() {
204
+ this.destroy();
205
+ }
206
+ /**
207
+ * @description run a command inside this subcontainer
208
+ * @param commands an array representing the command and args to execute
209
+ * @param options
210
+ * @param timeoutMs how long to wait before killing the command in ms
211
+ * @returns
212
+ */
194
213
  async exec(command, options, timeoutMs = 30000) {
195
214
  await this.waitProc();
196
215
  const imageMeta = await fs
@@ -343,15 +362,6 @@ class SubContainer {
343
362
  }
344
363
  }
345
364
  exports.SubContainer = SubContainer;
346
- _a = SubContainer;
347
- SubContainer.finalizationEffects = {};
348
- SubContainer.registry = new FinalizationRegistry((guid) => {
349
- if (_a.finalizationEffects.effects) {
350
- _a.finalizationEffects.effects.subcontainer
351
- .destroyFs({ guid })
352
- .catch((e) => console.error("failed to cleanup SubContainer", guid, e));
353
- }
354
- });
355
365
  /**
356
366
  * Take an subcontainer but remove the ability to add the mounts and the destroy function.
357
367
  * Lets other functions, like health checks, to not destroy the parents.
@@ -1 +1 @@
1
- {"version":3,"file":"SubContainer.js","sourceRoot":"","sources":["../../../../package/lib/util/SubContainer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubContainer.js","sourceRoot":"","sources":["../../../../package/lib/util/SubContainer.ts"],"names":[],"mappings":"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"}
@@ -65,8 +65,8 @@ export declare class FileHelper<A> {
65
65
  get read(): {
66
66
  once: () => Promise<A | null>;
67
67
  const: (effects: T.Effects) => Promise<A | null>;
68
- watch: () => AsyncGenerator<Awaited<A> | null, null, unknown>;
69
- onChange: (callback: (value: A | null, error?: Error) => void | Promise<void>) => void;
68
+ watch: (effects: T.Effects) => AsyncGenerator<Awaited<A> | null, null, unknown>;
69
+ onChange: (effects: T.Effects, callback: (value: A | null, error?: Error) => void | Promise<void>) => void;
70
70
  };
71
71
  /**
72
72
  * Accepts full structured data and overwrites the existing file on disk if it exists.
@@ -169,7 +169,7 @@ class FileHelper {
169
169
  return this.validate(data);
170
170
  }
171
171
  async readConst(effects) {
172
- const watch = this.readWatch();
172
+ const watch = this.readWatch(effects);
173
173
  const res = await watch.next();
174
174
  if (effects.constRetry) {
175
175
  if (!this.consts.includes(effects.constRetry))
@@ -181,9 +181,9 @@ class FileHelper {
181
181
  }
182
182
  return res.value;
183
183
  }
184
- async *readWatch() {
184
+ async *readWatch(effects) {
185
185
  let res;
186
- while (true) {
186
+ while (effects.isInContext) {
187
187
  if (await exists(this.path)) {
188
188
  const ctrl = new AbortController();
189
189
  const watch = fs.watch(this.path, {
@@ -209,10 +209,10 @@ class FileHelper {
209
209
  }
210
210
  return null;
211
211
  }
212
- readOnChange(callback) {
212
+ readOnChange(effects, callback) {
213
213
  ;
214
214
  (async () => {
215
- for await (const value of this.readWatch()) {
215
+ for await (const value of this.readWatch(effects)) {
216
216
  try {
217
217
  await callback(value);
218
218
  }
@@ -228,8 +228,8 @@ class FileHelper {
228
228
  return {
229
229
  once: () => this.readOnce(),
230
230
  const: (effects) => this.readConst(effects),
231
- watch: () => this.readWatch(),
232
- onChange: (callback) => this.readOnChange(callback),
231
+ watch: (effects) => this.readWatch(effects),
232
+ onChange: (effects, callback) => this.readOnChange(effects, callback),
233
233
  };
234
234
  }
235
235
  /**