@effect/cluster 0.53.2 → 0.53.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.
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": [],
3
+ "main": "../dist/cjs/K8sHttpClient.js",
4
+ "module": "../dist/esm/K8sHttpClient.js",
5
+ "types": "../dist/dts/K8sHttpClient.d.ts"
6
+ }
@@ -3,13 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.make = exports.TypeId = void 0;
6
+ exports.makeK8sPod = exports.make = exports.TypeId = exports.CloseScope = void 0;
7
+ var Context = _interopRequireWildcard(require("effect/Context"));
7
8
  var Duration = _interopRequireWildcard(require("effect/Duration"));
8
9
  var Effect = _interopRequireWildcard(require("effect/Effect"));
9
10
  var _Function = require("effect/Function");
10
11
  var RcRef = _interopRequireWildcard(require("effect/RcRef"));
11
12
  var Scope = _interopRequireWildcard(require("effect/Scope"));
12
13
  var Entity = _interopRequireWildcard(require("./Entity.js"));
14
+ var K8sHttpClient = _interopRequireWildcard(require("./K8sHttpClient.js"));
13
15
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
16
  /**
15
17
  * @since 1.0.0
@@ -20,6 +22,15 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
20
22
  * @category Type ids
21
23
  */
22
24
  const TypeId = exports.TypeId = "~@effect/cluster/EntityResource";
25
+ /**
26
+ * A `Scope` that is only closed when the resource is explicitly closed.
27
+ *
28
+ * It is not closed during restarts, due to shard movement or node shutdowns.
29
+ *
30
+ * @since 1.0.0
31
+ * @category Scope
32
+ */
33
+ class CloseScope extends /*#__PURE__*/Context.Tag("@effect/cluster/EntityResource/CloseScope")() {}
23
34
  /**
24
35
  * A `EntityResource` is a resource that can be acquired inside a cluster
25
36
  * entity, which will keep the entity alive even across restarts.
@@ -33,29 +44,19 @@ const TypeId = exports.TypeId = "~@effect/cluster/EntityResource";
33
44
  * @since 1.0.0
34
45
  * @category Constructors
35
46
  */
47
+ exports.CloseScope = CloseScope;
36
48
  const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
37
- const shutdownMode = options.shutdownMode ?? "always";
38
49
  let shuttingDown = false;
39
50
  const ref = yield* RcRef.make({
40
51
  acquire: Effect.gen(function* () {
41
- let scope = yield* Effect.scope;
42
- if (shutdownMode === "explicit") {
43
- const closeable = yield* Scope.make();
44
- const context = yield* Effect.context();
45
- yield* Scope.addFinalizerExit(scope, Effect.fnUntraced(function* (exit) {
46
- if (shuttingDown) return;
47
- yield* Scope.close(closeable, exit);
48
- yield* Entity.keepAlive(false);
49
- }, Effect.provide(context)));
50
- scope = closeable;
51
- } else {
52
- yield* Effect.addFinalizer(() => {
53
- if (shuttingDown) return Effect.void;
54
- return Entity.keepAlive(false);
55
- });
56
- }
52
+ const closeable = yield* Scope.make();
53
+ yield* Effect.addFinalizer(Effect.fnUntraced(function* (exit) {
54
+ if (shuttingDown) return;
55
+ yield* Scope.close(closeable, exit);
56
+ yield* Entity.keepAlive(false);
57
+ }));
57
58
  yield* Entity.keepAlive(true);
58
- return yield* options.acquire.pipe(Scope.extend(scope));
59
+ return yield* options.acquire.pipe(Effect.provideService(CloseScope, closeable));
59
60
  }),
60
61
  idleTimeToLive: options.idleTimeToLive ?? Duration.infinity
61
62
  });
@@ -71,4 +72,18 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
71
72
  close: RcRef.invalidate(ref)
72
73
  });
73
74
  });
75
+ /**
76
+ * @since 1.0.0
77
+ * @category Kubernetes
78
+ */
79
+ const makeK8sPod = exports.makeK8sPod = /*#__PURE__*/Effect.fnUntraced(function* (spec, options) {
80
+ const createPod = yield* K8sHttpClient.makeCreatePod;
81
+ return yield* make({
82
+ ...options,
83
+ acquire: Effect.gen(function* () {
84
+ const scope = yield* CloseScope;
85
+ return yield* createPod(spec).pipe(Scope.extend(scope));
86
+ })
87
+ });
88
+ });
74
89
  //# sourceMappingURL=EntityResource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityResource.js","names":["Duration","_interopRequireWildcard","require","Effect","_Function","RcRef","Scope","Entity","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TypeId","exports","make","fnUntraced","options","shutdownMode","shuttingDown","ref","acquire","gen","scope","closeable","context","addFinalizerExit","exit","close","keepAlive","provide","addFinalizer","void","pipe","extend","idleTimeToLive","infinity","scoped","identity","invalidate"],"sources":["../../src/EntityResource.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"EntityResource.js","names":["Context","_interopRequireWildcard","require","Duration","Effect","_Function","RcRef","Scope","Entity","K8sHttpClient","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TypeId","exports","CloseScope","Tag","make","fnUntraced","options","shuttingDown","ref","acquire","gen","closeable","addFinalizer","exit","close","keepAlive","pipe","provideService","idleTimeToLive","infinity","void","scoped","identity","invalidate","makeK8sPod","spec","createPod","makeCreatePod","scope","extend"],"sources":["../../src/EntityResource.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.makeGetPods = exports.makeCreatePod = exports.layer = exports.PodStatus = exports.Pod = exports.K8sHttpClient = void 0;
7
+ var FileSystem = _interopRequireWildcard(require("@effect/platform/FileSystem"));
8
+ var HttpClient = _interopRequireWildcard(require("@effect/platform/HttpClient"));
9
+ var HttpClientRequest = _interopRequireWildcard(require("@effect/platform/HttpClientRequest"));
10
+ var HttpClientResponse = _interopRequireWildcard(require("@effect/platform/HttpClientResponse"));
11
+ var Context = _interopRequireWildcard(require("effect/Context"));
12
+ var Effect = _interopRequireWildcard(require("effect/Effect"));
13
+ var _Function = require("effect/Function");
14
+ var Layer = _interopRequireWildcard(require("effect/Layer"));
15
+ var Option = _interopRequireWildcard(require("effect/Option"));
16
+ var Schedule = _interopRequireWildcard(require("effect/Schedule"));
17
+ var Schema = _interopRequireWildcard(require("effect/Schema"));
18
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
19
+ /**
20
+ * @since 1.0.0
21
+ */
22
+
23
+ /**
24
+ * @since 1.0.0
25
+ * @category Tags
26
+ */
27
+ class K8sHttpClient extends /*#__PURE__*/Context.Tag("@effect/cluster/K8sHttpClient")() {}
28
+ /**
29
+ * @since 1.0.0
30
+ * @category Layers
31
+ */
32
+ exports.K8sHttpClient = K8sHttpClient;
33
+ const layer = exports.layer = /*#__PURE__*/Layer.effect(K8sHttpClient, /*#__PURE__*/Effect.gen(function* () {
34
+ const fs = yield* FileSystem.FileSystem;
35
+ const token = yield* fs.readFileString("/var/run/secrets/kubernetes.io/serviceaccount/token").pipe(Effect.option);
36
+ return (yield* HttpClient.HttpClient).pipe(HttpClient.mapRequest(HttpClientRequest.prependUrl("https://kubernetes.default.svc/api")), token._tag === "Some" ? HttpClient.mapRequest(HttpClientRequest.bearerToken(token.value.trim())) : _Function.identity, HttpClient.filterStatusOk, HttpClient.retryTransient({
37
+ schedule: Schedule.spaced(5000)
38
+ }));
39
+ }));
40
+ /**
41
+ * @since 1.0.0
42
+ * @category Constructors
43
+ */
44
+ const makeGetPods = exports.makeGetPods = /*#__PURE__*/Effect.fnUntraced(function* (options) {
45
+ const client = yield* K8sHttpClient;
46
+ const getPods = HttpClientRequest.get(options?.namespace ? `/v1/namespaces/${options.namespace}/pods` : "/v1/pods").pipe(HttpClientRequest.setUrlParam("fieldSelector", "status.phase=Running"), options?.labelSelector ? HttpClientRequest.setUrlParam("labelSelector", options.labelSelector) : _Function.identity);
47
+ return yield* client.execute(getPods).pipe(Effect.flatMap(HttpClientResponse.schemaBodyJson(PodList)), Effect.map(list => {
48
+ const pods = new Map();
49
+ for (let i = 0; i < list.items.length; i++) {
50
+ const pod = list.items[i];
51
+ pods.set(pod.status.podIP, pod);
52
+ }
53
+ return pods;
54
+ }), Effect.tapErrorCause(cause => Effect.logWarning("Failed to fetch pods from Kubernetes API", cause)), Effect.cachedWithTTL("10 seconds"));
55
+ });
56
+ /**
57
+ * @since 1.0.0
58
+ * @category Constructors
59
+ */
60
+ const makeCreatePod = exports.makeCreatePod = /*#__PURE__*/Effect.gen(function* () {
61
+ const client = yield* K8sHttpClient;
62
+ return Effect.fnUntraced(function* (spec) {
63
+ spec = {
64
+ apiVersion: "v1",
65
+ kind: "Pod",
66
+ metadata: {
67
+ namespace: "default",
68
+ ...spec.metadata
69
+ },
70
+ ...spec
71
+ };
72
+ const namespace = spec.metadata?.namespace ?? "default";
73
+ const name = spec.metadata.name;
74
+ const readPodRaw = HttpClientRequest.get(`/v1/namespaces/${namespace}/pods/${name}`).pipe(client.execute);
75
+ const readPod = readPodRaw.pipe(Effect.flatMap(HttpClientResponse.schemaBodyJson(Pod)), Effect.asSome, Effect.retry({
76
+ while: e => e._tag === "ParseError",
77
+ schedule: Schedule.spaced("1 seconds")
78
+ }), Effect.catchIf(err => err._tag === "ResponseError" && err.response.status === 404, () => Effect.succeedNone), Effect.orDie);
79
+ const isPodFound = readPodRaw.pipe(Effect.as(true), Effect.catchIf(err => err._tag === "ResponseError" && err.response.status === 404, () => Effect.succeed(false)));
80
+ const createPod = HttpClientRequest.post(`/v1/namespaces/${namespace}/pods`).pipe(HttpClientRequest.bodyUnsafeJson(spec), client.execute, Effect.catchIf(err => err._tag === "ResponseError" && err.response.status === 409, () => readPod), Effect.tapErrorCause(Effect.logInfo), Effect.orDie);
81
+ const deletePod = HttpClientRequest.del(`/v1/namespaces/${namespace}/pods/${name}`).pipe(client.execute, Effect.flatMap(res => res.json), Effect.catchIf(err => err._tag === "ResponseError" && err.response.status === 404, () => Effect.void), Effect.tapErrorCause(Effect.logInfo), Effect.orDie, Effect.asVoid);
82
+ yield* Effect.addFinalizer(Effect.fnUntraced(function* () {
83
+ yield* deletePod;
84
+ yield* isPodFound.pipe(Effect.repeat({
85
+ until: found => !found,
86
+ schedule: Schedule.spaced("3 seconds")
87
+ }), Effect.orDie);
88
+ }));
89
+ let opod = Option.none();
90
+ while (Option.isNone(opod) || !opod.value.isReady) {
91
+ if (Option.isNone(opod)) {
92
+ yield* createPod;
93
+ }
94
+ yield* Effect.sleep("3 seconds");
95
+ opod = yield* readPod;
96
+ }
97
+ return opod.value.status;
98
+ }, Effect.withSpan("K8sHttpClient.createPod"));
99
+ });
100
+ /**
101
+ * @since 1.0.0
102
+ * @category Schemas
103
+ */
104
+ class PodStatus extends /*#__PURE__*/Schema.Class("@effect/cluster/K8sHttpClient/PodStatus")({
105
+ phase: Schema.String,
106
+ conditions: /*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Struct({
107
+ type: Schema.String,
108
+ status: Schema.String,
109
+ lastTransitionTime: Schema.String
110
+ })),
111
+ podIP: Schema.String,
112
+ hostIP: Schema.String
113
+ }) {}
114
+ /**
115
+ * @since 1.0.0
116
+ * @category Schemas
117
+ */
118
+ exports.PodStatus = PodStatus;
119
+ class Pod extends /*#__PURE__*/Schema.Class("@effect/cluster/K8sHttpClient/Pod")({
120
+ status: PodStatus
121
+ }) {
122
+ get isReady() {
123
+ for (let i = 0; i < this.status.conditions.length; i++) {
124
+ const condition = this.status.conditions[i];
125
+ if (condition.type === "Ready") {
126
+ return condition.status === "True";
127
+ }
128
+ }
129
+ return false;
130
+ }
131
+ get isReadyOrInitializing() {
132
+ let initializedAt;
133
+ let readyAt;
134
+ for (let i = 0; i < this.status.conditions.length; i++) {
135
+ const condition = this.status.conditions[i];
136
+ switch (condition.type) {
137
+ case "Initialized":
138
+ {
139
+ if (condition.status !== "True") {
140
+ return true;
141
+ }
142
+ initializedAt = condition.lastTransitionTime;
143
+ break;
144
+ }
145
+ case "Ready":
146
+ {
147
+ if (condition.status === "True") {
148
+ return true;
149
+ }
150
+ readyAt = condition.lastTransitionTime;
151
+ break;
152
+ }
153
+ }
154
+ }
155
+ // if the pod is still booting up, consider it ready as it would have
156
+ // already registered itself with RunnerStorage by now
157
+ return initializedAt === readyAt;
158
+ }
159
+ }
160
+ exports.Pod = Pod;
161
+ const PodList = /*#__PURE__*/Schema.Struct({
162
+ items: /*#__PURE__*/Schema.Array(Pod)
163
+ });
164
+ //# sourceMappingURL=K8sHttpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"K8sHttpClient.js","names":["FileSystem","_interopRequireWildcard","require","HttpClient","HttpClientRequest","HttpClientResponse","Context","Effect","_Function","Layer","Option","Schedule","Schema","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","K8sHttpClient","Tag","exports","layer","effect","gen","fs","token","readFileString","pipe","option","mapRequest","prependUrl","_tag","bearerToken","value","trim","identity","filterStatusOk","retryTransient","schedule","spaced","makeGetPods","fnUntraced","options","client","getPods","namespace","setUrlParam","labelSelector","execute","flatMap","schemaBodyJson","PodList","map","list","pods","Map","items","length","pod","status","podIP","tapErrorCause","cause","logWarning","cachedWithTTL","makeCreatePod","spec","apiVersion","kind","metadata","name","readPodRaw","readPod","Pod","asSome","retry","while","catchIf","err","response","succeedNone","orDie","isPodFound","as","succeed","createPod","post","bodyUnsafeJson","logInfo","deletePod","del","res","json","void","asVoid","addFinalizer","repeat","until","found","opod","none","isNone","isReady","sleep","withSpan","PodStatus","Class","phase","String","conditions","Array","Struct","type","lastTransitionTime","hostIP","condition","isReadyOrInitializing","initializedAt","readyAt"],"sources":["../../src/K8sHttpClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -4,16 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.makePing = exports.makeK8s = exports.layerPing = exports.layerNoop = exports.layerK8s = exports.RunnerHealth = void 0;
7
- var FileSystem = _interopRequireWildcard(require("@effect/platform/FileSystem"));
8
- var HttpClient = _interopRequireWildcard(require("@effect/platform/HttpClient"));
9
- var HttpClientRequest = _interopRequireWildcard(require("@effect/platform/HttpClientRequest"));
10
- var HttpClientResponse = _interopRequireWildcard(require("@effect/platform/HttpClientResponse"));
11
7
  var Context = _interopRequireWildcard(require("effect/Context"));
12
8
  var Effect = _interopRequireWildcard(require("effect/Effect"));
13
- var _Function = require("effect/Function");
14
9
  var Layer = _interopRequireWildcard(require("effect/Layer"));
15
10
  var Schedule = _interopRequireWildcard(require("effect/Schedule"));
16
- var Schema = _interopRequireWildcard(require("effect/Schema"));
11
+ var K8s = _interopRequireWildcard(require("./K8sHttpClient.js"));
17
12
  var Runners = _interopRequireWildcard(require("./Runners.js"));
18
13
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
19
14
  /**
@@ -72,66 +67,11 @@ const layerPing = exports.layerPing = /*#__PURE__*/Layer.scoped(RunnerHealth, ma
72
67
  * @category Constructors
73
68
  */
74
69
  const makeK8s = exports.makeK8s = /*#__PURE__*/Effect.fnUntraced(function* (options) {
75
- const fs = yield* FileSystem.FileSystem;
76
- const token = yield* fs.readFileString("/var/run/secrets/kubernetes.io/serviceaccount/token").pipe(Effect.option);
77
- const client = (yield* HttpClient.HttpClient).pipe(HttpClient.filterStatusOk);
78
- const baseRequest = HttpClientRequest.get("https://kubernetes.default.svc/api").pipe(token._tag === "Some" ? HttpClientRequest.bearerToken(token.value.trim()) : _Function.identity);
79
- const getPods = baseRequest.pipe(HttpClientRequest.appendUrl(options?.namespace ? `/v1/namespaces/${options.namespace}/pods` : "/v1/pods"), HttpClientRequest.setUrlParam("fieldSelector", "status.phase=Running"), options?.labelSelector ? HttpClientRequest.setUrlParam("labelSelector", options.labelSelector) : _Function.identity);
80
- const allPods = yield* client.execute(getPods).pipe(Effect.flatMap(HttpClientResponse.schemaBodyJson(PodList)), Effect.map(list => {
81
- const pods = new Map();
82
- for (let i = 0; i < list.items.length; i++) {
83
- const pod = list.items[i];
84
- pods.set(pod.status.podIP, pod);
85
- }
86
- return pods;
87
- }), Effect.tapErrorCause(cause => Effect.logWarning("Failed to fetch pods from Kubernetes API", cause)), Effect.cachedWithTTL("10 seconds"));
70
+ const allPods = yield* K8s.makeGetPods(options);
88
71
  return RunnerHealth.of({
89
- isAlive: address => allPods.pipe(Effect.map(pods => pods.get(address.host)?.isReady ?? false), Effect.catchAllCause(() => Effect.succeed(true)))
72
+ isAlive: address => allPods.pipe(Effect.map(pods => pods.get(address.host)?.isReadyOrInitializing ?? false), Effect.catchAllCause(() => Effect.succeed(true)))
90
73
  });
91
74
  });
92
- class Pod extends /*#__PURE__*/Schema.Class("effect/cluster/RunnerHealth/Pod")({
93
- status: /*#__PURE__*/Schema.Struct({
94
- phase: Schema.String,
95
- conditions: /*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Struct({
96
- type: Schema.String,
97
- status: Schema.String,
98
- lastTransitionTime: Schema.String
99
- })),
100
- podIP: Schema.String
101
- })
102
- }) {
103
- get isReady() {
104
- let initializedAt;
105
- let readyAt;
106
- for (let i = 0; i < this.status.conditions.length; i++) {
107
- const condition = this.status.conditions[i];
108
- switch (condition.type) {
109
- case "Initialized":
110
- {
111
- if (condition.status !== "True") {
112
- return true;
113
- }
114
- initializedAt = condition.lastTransitionTime;
115
- break;
116
- }
117
- case "Ready":
118
- {
119
- if (condition.status === "True") {
120
- return true;
121
- }
122
- readyAt = condition.lastTransitionTime;
123
- break;
124
- }
125
- }
126
- }
127
- // if the pod is still booting up, consider it ready as it would have
128
- // already registered itself with RunnerStorage by now
129
- return initializedAt === readyAt;
130
- }
131
- }
132
- const PodList = /*#__PURE__*/Schema.Struct({
133
- items: /*#__PURE__*/Schema.Array(Pod)
134
- });
135
75
  /**
136
76
  * A layer which will check the Kubernetes API to see if a Runner is healthy.
137
77
  *
@@ -1 +1 @@
1
- {"version":3,"file":"RunnerHealth.js","names":["FileSystem","_interopRequireWildcard","require","HttpClient","HttpClientRequest","HttpClientResponse","Context","Effect","_Function","Layer","Schedule","Schema","Runners","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","RunnerHealth","Tag","exports","layerNoop","succeed","isAlive","makePing","gen","runners","schedule","spaced","address","ping","pipe","timeout","retry","times","isSuccess","of","layerPing","scoped","makeK8s","fnUntraced","options","fs","token","readFileString","option","client","filterStatusOk","baseRequest","_tag","bearerToken","value","trim","identity","getPods","appendUrl","namespace","setUrlParam","labelSelector","allPods","execute","flatMap","schemaBodyJson","PodList","map","list","pods","Map","items","length","pod","status","podIP","tapErrorCause","cause","logWarning","cachedWithTTL","host","isReady","catchAllCause","Pod","Class","Struct","phase","String","conditions","Array","type","lastTransitionTime","initializedAt","readyAt","condition","layerK8s","effect"],"sources":["../../src/RunnerHealth.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"RunnerHealth.js","names":["Context","_interopRequireWildcard","require","Effect","Layer","Schedule","K8s","Runners","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","RunnerHealth","Tag","exports","layerNoop","succeed","isAlive","makePing","gen","runners","schedule","spaced","address","ping","pipe","timeout","retry","times","isSuccess","of","layerPing","scoped","makeK8s","fnUntraced","options","allPods","makeGetPods","map","pods","host","isReadyOrInitializing","catchAllCause","layerK8s","effect"],"sources":["../../src/RunnerHealth.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/cjs/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.SqlRunnerStorage = exports.SqlMessageStorage = exports.SocketRunner = exports.Snowflake = exports.SingletonAddress = exports.Singleton = exports.ShardingRegistrationEvent = exports.ShardingConfig = exports.Sharding = exports.ShardId = exports.Runners = exports.RunnerStorage = exports.RunnerServer = exports.RunnerHealth = exports.RunnerAddress = exports.Runner = exports.Reply = exports.MessageStorage = exports.Message = exports.MachineId = exports.HttpRunner = exports.Envelope = exports.EntityType = exports.EntityResource = exports.EntityProxyServer = exports.EntityProxy = exports.EntityId = exports.EntityAddress = exports.Entity = exports.DeliverAt = exports.ClusterWorkflowEngine = exports.ClusterSchema = exports.ClusterMetrics = exports.ClusterError = exports.ClusterCron = void 0;
6
+ exports.SqlRunnerStorage = exports.SqlMessageStorage = exports.SocketRunner = exports.Snowflake = exports.SingletonAddress = exports.Singleton = exports.ShardingRegistrationEvent = exports.ShardingConfig = exports.Sharding = exports.ShardId = exports.Runners = exports.RunnerStorage = exports.RunnerServer = exports.RunnerHealth = exports.RunnerAddress = exports.Runner = exports.Reply = exports.MessageStorage = exports.Message = exports.MachineId = exports.K8sHttpClient = exports.HttpRunner = exports.Envelope = exports.EntityType = exports.EntityResource = exports.EntityProxyServer = exports.EntityProxy = exports.EntityId = exports.EntityAddress = exports.Entity = exports.DeliverAt = exports.ClusterWorkflowEngine = exports.ClusterSchema = exports.ClusterMetrics = exports.ClusterError = exports.ClusterCron = void 0;
7
7
  var _ClusterCron = _interopRequireWildcard(require("./ClusterCron.js"));
8
8
  exports.ClusterCron = _ClusterCron;
9
9
  var _ClusterError = _interopRequireWildcard(require("./ClusterError.js"));
@@ -34,6 +34,8 @@ var _Envelope = _interopRequireWildcard(require("./Envelope.js"));
34
34
  exports.Envelope = _Envelope;
35
35
  var _HttpRunner = _interopRequireWildcard(require("./HttpRunner.js"));
36
36
  exports.HttpRunner = _HttpRunner;
37
+ var _K8sHttpClient = _interopRequireWildcard(require("./K8sHttpClient.js"));
38
+ exports.K8sHttpClient = _K8sHttpClient;
37
39
  var _MachineId = _interopRequireWildcard(require("./MachineId.js"));
38
40
  exports.MachineId = _MachineId;
39
41
  var _Message = _interopRequireWildcard(require("./Message.js"));
@@ -1,10 +1,13 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
+ import * as Context from "effect/Context";
4
5
  import * as Duration from "effect/Duration";
5
6
  import * as Effect from "effect/Effect";
6
7
  import * as Scope from "effect/Scope";
8
+ import type * as v1 from "kubernetes-types/core/v1.d.ts";
7
9
  import * as Entity from "./Entity.js";
10
+ import * as K8sHttpClient from "./K8sHttpClient.js";
8
11
  import type { Sharding } from "./Sharding.js";
9
12
  /**
10
13
  * @since 1.0.0
@@ -25,6 +28,17 @@ export interface EntityResource<out A, out E = never> {
25
28
  readonly get: Effect.Effect<A, E, Scope.Scope>;
26
29
  readonly close: Effect.Effect<void>;
27
30
  }
31
+ declare const CloseScope_base: Context.TagClass<CloseScope, "@effect/cluster/EntityResource/CloseScope", Scope.Scope>;
32
+ /**
33
+ * A `Scope` that is only closed when the resource is explicitly closed.
34
+ *
35
+ * It is not closed during restarts, due to shard movement or node shutdowns.
36
+ *
37
+ * @since 1.0.0
38
+ * @category Scope
39
+ */
40
+ export declare class CloseScope extends CloseScope_base {
41
+ }
28
42
  /**
29
43
  * A `EntityResource` is a resource that can be acquired inside a cluster
30
44
  * entity, which will keep the entity alive even across restarts.
@@ -41,15 +55,13 @@ export interface EntityResource<out A, out E = never> {
41
55
  export declare const make: <A, E, R>(options: {
42
56
  readonly acquire: Effect.Effect<A, E, R>;
43
57
  readonly idleTimeToLive?: Duration.DurationInput | undefined;
44
- /**
45
- * When to close the resource Scope.
46
- *
47
- * If set to "explicit", the resource will only be cleaned up when either the
48
- * `idleTimeToLive` is reached, or the .close effect is called.
49
- *
50
- * Defaults to "always", which means the resource will be cleaned up when the
51
- * the parent Scope is closed.
52
- */
53
- readonly shutdownMode?: "explicit" | "always" | undefined;
54
- }) => Effect.Effect<EntityResource<A, E>, E, Scope.Scope | R | Sharding | Entity.CurrentAddress>;
58
+ }) => Effect.Effect<EntityResource<A, E>, E, Scope.Scope | Exclude<R, CloseScope> | Sharding | Entity.CurrentAddress>;
59
+ /**
60
+ * @since 1.0.0
61
+ * @category Kubernetes
62
+ */
63
+ export declare const makeK8sPod: (spec: v1.Pod, options?: {
64
+ readonly idleTimeToLive?: Duration.DurationInput | undefined;
65
+ } | undefined) => Effect.Effect<EntityResource<K8sHttpClient.PodStatus>, never, Scope.Scope | Sharding | Entity.CurrentAddress | K8sHttpClient.K8sHttpClient>;
66
+ export {};
55
67
  //# sourceMappingURL=EntityResource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityResource.d.ts","sourceRoot":"","sources":["../../src/EntityResource.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,MAA0C,CAAA;AAE/D;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,iCAAiC,CAAA;AAEtD;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK;IAClD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACpC;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAA;IAC5D;;;;;;;;OAQG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAA;CAC1D,KAAK,MAAM,CAAC,MAAM,CACjB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,CAAC,EACD,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC,cAAc,CAsDlD,CAAA"}
1
+ {"version":3,"file":"EntityResource.d.ts","sourceRoot":"","sources":["../../src/EntityResource.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,EAAE,MAAM,+BAA+B,CAAA;AACxD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,MAA0C,CAAA;AAE/D;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,iCAAiC,CAAA;AAEtD;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK;IAClD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACpC;;AAED;;;;;;;GAOG;AACH,qBAAa,UAAW,SAAQ,eAG7B;CAAG;AAEN;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAA;CAC7D,KAAK,MAAM,CAAC,MAAM,CACjB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,CAAC,EACD,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC,cAAc,CAyCvE,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,CACvB,IAAI,EAAE,EAAE,CAAC,GAAG,EACZ,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAA;CAC7D,GAAG,SAAS,KACV,MAAM,CAAC,MAAM,CAChB,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,EACvC,KAAK,EACL,KAAK,CAAC,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,CAc5E,CAAA"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as FileSystem from "@effect/platform/FileSystem";
5
+ import * as HttpClient from "@effect/platform/HttpClient";
6
+ import type * as HttpClientError from "@effect/platform/HttpClientError";
7
+ import * as Context from "effect/Context";
8
+ import * as Effect from "effect/Effect";
9
+ import * as Layer from "effect/Layer";
10
+ import type * as ParseResult from "effect/ParseResult";
11
+ import * as Schema from "effect/Schema";
12
+ import type * as v1 from "kubernetes-types/core/v1.d.ts";
13
+ declare const K8sHttpClient_base: Context.TagClass<K8sHttpClient, "@effect/cluster/K8sHttpClient", HttpClient.HttpClient>;
14
+ /**
15
+ * @since 1.0.0
16
+ * @category Tags
17
+ */
18
+ export declare class K8sHttpClient extends K8sHttpClient_base {
19
+ }
20
+ /**
21
+ * @since 1.0.0
22
+ * @category Layers
23
+ */
24
+ export declare const layer: Layer.Layer<K8sHttpClient, never, HttpClient.HttpClient | FileSystem.FileSystem>;
25
+ /**
26
+ * @since 1.0.0
27
+ * @category Constructors
28
+ */
29
+ export declare const makeGetPods: (options?: {
30
+ readonly namespace?: string | undefined;
31
+ readonly labelSelector?: string | undefined;
32
+ } | undefined) => Effect.Effect<Effect.Effect<Map<string, Pod>, HttpClientError.HttpClientError | ParseResult.ParseError, never>, never, K8sHttpClient>;
33
+ /**
34
+ * @since 1.0.0
35
+ * @category Constructors
36
+ */
37
+ export declare const makeCreatePod: Effect.Effect<(spec: v1.Pod) => Effect.Effect<PodStatus, never, import("effect/Scope").Scope>, never, K8sHttpClient>;
38
+ declare const PodStatus_base: Schema.Class<PodStatus, {
39
+ phase: typeof Schema.String;
40
+ conditions: Schema.Array$<Schema.Struct<{
41
+ type: typeof Schema.String;
42
+ status: typeof Schema.String;
43
+ lastTransitionTime: typeof Schema.String;
44
+ }>>;
45
+ podIP: typeof Schema.String;
46
+ hostIP: typeof Schema.String;
47
+ }, Schema.Struct.Encoded<{
48
+ phase: typeof Schema.String;
49
+ conditions: Schema.Array$<Schema.Struct<{
50
+ type: typeof Schema.String;
51
+ status: typeof Schema.String;
52
+ lastTransitionTime: typeof Schema.String;
53
+ }>>;
54
+ podIP: typeof Schema.String;
55
+ hostIP: typeof Schema.String;
56
+ }>, never, {
57
+ readonly phase: string;
58
+ } & {
59
+ readonly podIP: string;
60
+ } & {
61
+ readonly hostIP: string;
62
+ } & {
63
+ readonly conditions: readonly {
64
+ readonly type: string;
65
+ readonly status: string;
66
+ readonly lastTransitionTime: string;
67
+ }[];
68
+ }, {}, {}>;
69
+ /**
70
+ * @since 1.0.0
71
+ * @category Schemas
72
+ */
73
+ export declare class PodStatus extends PodStatus_base {
74
+ }
75
+ declare const Pod_base: Schema.Class<Pod, {
76
+ status: typeof PodStatus;
77
+ }, Schema.Struct.Encoded<{
78
+ status: typeof PodStatus;
79
+ }>, never, {
80
+ readonly status: PodStatus;
81
+ }, {}, {}>;
82
+ /**
83
+ * @since 1.0.0
84
+ * @category Schemas
85
+ */
86
+ export declare class Pod extends Pod_base {
87
+ get isReady(): boolean;
88
+ get isReadyOrInitializing(): boolean;
89
+ }
90
+ export {};
91
+ //# sourceMappingURL=K8sHttpClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"K8sHttpClient.d.ts","sourceRoot":"","sources":["../../src/K8sHttpClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,KAAK,eAAe,MAAM,kCAAkC,CAAA;AAGxE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,KAAK,WAAW,MAAM,oBAAoB,CAAA;AAEtD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,EAAE,MAAM,+BAA+B,CAAA;;AAExD;;;GAGG;AACH,qBAAa,aAAc,SAAQ,kBAGhC;CAAG;AAEN;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAC7B,aAAa,EACb,KAAK,EACL,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAiB9C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,CACxB,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5C,GAAG,SAAS,KACV,MAAM,CAAC,MAAM,CAChB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,eAAe,CAAC,eAAe,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,EAChG,KAAK,EACL,aAAa,CA2Bb,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,sHA6ExB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF;;;GAGG;AACH,qBAAa,SAAU,SAAQ,cAS7B;CAAG;;;;;;;;AAEL;;;GAGG;AACH,qBAAa,GAAI,SAAQ,QAEvB;IACA,IAAI,OAAO,IAAI,OAAO,CAQrB;IAED,IAAI,qBAAqB,IAAI,OAAO,CAyBnC;CACF"}