little-durable-objects 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +9 -0
- package/README.md +49 -0
- package/dist/host/actorModule.d.ts +4 -0
- package/dist/host/actorModule.d.ts.map +1 -0
- package/dist/host/actorModule.js +54 -0
- package/dist/host/actorModule.js.map +1 -0
- package/dist/host/session.d.ts +20 -0
- package/dist/host/session.d.ts.map +1 -0
- package/dist/host/session.js +220 -0
- package/dist/host/session.js.map +1 -0
- package/dist/host/worker/entrypoint.d.ts +2 -0
- package/dist/host/worker/entrypoint.d.ts.map +1 -0
- package/dist/host/worker/entrypoint.js +26 -0
- package/dist/host/worker/entrypoint.js.map +1 -0
- package/dist/host/worker/runtime.d.ts +14 -0
- package/dist/host/worker/runtime.d.ts.map +1 -0
- package/dist/host/worker/runtime.js +77 -0
- package/dist/host/worker/runtime.js.map +1 -0
- package/dist/host/worker/supervisor.d.ts +21 -0
- package/dist/host/worker/supervisor.d.ts.map +1 -0
- package/dist/host/worker/supervisor.js +190 -0
- package/dist/host/worker/supervisor.js.map +1 -0
- package/dist/host.d.ts +2 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +2 -0
- package/dist/host.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/modal.d.ts +29 -0
- package/dist/providers/modal.d.ts.map +1 -0
- package/dist/providers/modal.js +193 -0
- package/dist/providers/modal.js.map +1 -0
- package/dist/providers/modalCli.d.ts +3 -0
- package/dist/providers/modalCli.d.ts.map +1 -0
- package/dist/providers/modalCli.js +18 -0
- package/dist/providers/modalCli.js.map +1 -0
- package/dist/providers/types.d.ts +31 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +2 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/regions.d.ts +59 -0
- package/dist/regions.d.ts.map +1 -0
- package/dist/regions.js +46 -0
- package/dist/regions.js.map +1 -0
- package/dist/shared/actor.d.ts +28 -0
- package/dist/shared/actor.d.ts.map +1 -0
- package/dist/shared/actor.js +105 -0
- package/dist/shared/actor.js.map +1 -0
- package/dist/shared/errors.d.ts +25 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +48 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/invocationContext.d.ts +4 -0
- package/dist/shared/invocationContext.d.ts.map +1 -0
- package/dist/shared/invocationContext.js +10 -0
- package/dist/shared/invocationContext.js.map +1 -0
- package/dist/shared/types.d.ts +123 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +111 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/workflow/client.d.ts +23 -0
- package/dist/workflow/client.d.ts.map +1 -0
- package/dist/workflow/client.js +49 -0
- package/dist/workflow/client.js.map +1 -0
- package/dist/workflow/remoteClient.d.ts +26 -0
- package/dist/workflow/remoteClient.d.ts.map +1 -0
- package/dist/workflow/remoteClient.js +136 -0
- package/dist/workflow/remoteClient.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../workflow/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAGrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAOrD,MAAM,aAAa,GAAG,IAAI,iBAAiB,EAAwB,CAAA;AAEnE,SAAS,WAAW;IAChB,OAAO,aAAa,CAAC,QAAQ,EAAE,IAAI,cAAc,CAAC,GAAG,EAAE,CAAA;AAC3D,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAoC;IACjE,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;AACrC,CAAC;AAED,SAAS,0BAA0B,CAAI,OAA+B,EAAE,SAAkB;IACtF,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,0BAA0B;IACpB,MAAM,GAAyB,IAAI,iBAAiB,EAAE,CAAA;IAE9D,GAAG;QACC,OAAO,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IAED,SAAS,CAAC,OAAoC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;CACJ;AAED,MAAM,cAAc,GAAG,IAAI,0BAA0B,EAAE,CAAA;AAEvD,MAAM,eAAe;IACA,UAAU,GAAG,IAAI,wBAAwB,EAAE,CAAA;IAC3C,SAAS,CAAc;IACvB,UAAU,CAAkB;IAE7C,YAAY,OAA+B;QACvC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;QAC5E,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,OAAe,EAAE,MAAc,EAAE,IAAwB;QACrF,MAAM,SAAS,GAAG,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QACxE,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;QACrE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;YAAE,MAAM,IAAI,kBAAkB,CAAC,sCAAsC,CAAC,CAAA;QACxG,MAAM,OAAO,GAA2B;YACpC,SAAS;YACT,SAAS,EAAE,sBAAsB,CAAC,YAAY,EAAE,SAAS,CAAC;YAC1D,OAAO,EAAE,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC;YACpD,MAAM,EAAE,sBAAsB,CAAC,cAAc,EAAE,MAAM,CAAC;YACtD,IAAI,EAAE,cAAc;SACvB,CAAA;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC;CACJ;AAiBD,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
declare class RemoteActorClient {
|
|
2
|
+
private readonly serializer;
|
|
3
|
+
private settingsValue;
|
|
4
|
+
private readonly environment;
|
|
5
|
+
private readonly fetchRequest;
|
|
6
|
+
private readonly requestId;
|
|
7
|
+
constructor(options?: DurableObjectsClientOptions, dependencies?: RemoteActorClientDependencies);
|
|
8
|
+
invoke(actorType: string, actorId: string, method: string, args: readonly unknown[]): Promise<unknown>;
|
|
9
|
+
private send;
|
|
10
|
+
private result;
|
|
11
|
+
private get settings();
|
|
12
|
+
private jsonArguments;
|
|
13
|
+
}
|
|
14
|
+
interface DurableObjectsClientOptions {
|
|
15
|
+
readonly token: string;
|
|
16
|
+
readonly namespaceId: string;
|
|
17
|
+
readonly controlPlaneUrl: string;
|
|
18
|
+
}
|
|
19
|
+
interface RemoteActorClientDependencies {
|
|
20
|
+
readonly environment?: NodeJS.ProcessEnv;
|
|
21
|
+
readonly fetch?: typeof globalThis.fetch;
|
|
22
|
+
readonly requestId?: () => string;
|
|
23
|
+
}
|
|
24
|
+
export { RemoteActorClient };
|
|
25
|
+
export type { DurableObjectsClientOptions, RemoteActorClientDependencies };
|
|
26
|
+
//# sourceMappingURL=remoteClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remoteClient.d.ts","sourceRoot":"","sources":["../../workflow/remoteClient.ts"],"names":[],"mappings":"AA4BA,cAAM,iBAAiB;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;gBAE5B,OAAO,CAAC,EAAE,2BAA2B,EAAE,YAAY,GAAE,6BAAkC;IAO7F,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;YAS9F,IAAI;YAqBJ,MAAM;IAgBpB,OAAO,KAAK,QAAQ,GAUnB;IAED,OAAO,CAAC,aAAa;CAKxB;AA6CD,UAAU,2BAA2B;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CACnC;AAED,UAAU,6BAA6B;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,MAAM,CAAA;CACpC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAC5B,YAAY,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,CAAA"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ActorConfigurationError, ActorInvocationError, ActorProtocolError } from "../shared/errors.js";
|
|
3
|
+
import { currentActorInvocation } from "../shared/invocationContext.js";
|
|
4
|
+
import { JsonActorStateSerializer, validateActorComponent } from "../shared/types.js";
|
|
5
|
+
const namespaceIdSchema = z.string().regex(/^[A-Za-z0-9._-]+$/u);
|
|
6
|
+
const remoteSettingsSchema = z.object({
|
|
7
|
+
DURABLE_OBJECT_TOKEN: z.string().trim().min(1),
|
|
8
|
+
DURABLE_OBJECT_NAMESPACE_ID: namespaceIdSchema,
|
|
9
|
+
DURABLE_OBJECT_CONTROL_PLANE_URL: z.string().url()
|
|
10
|
+
});
|
|
11
|
+
const clientOptionsSchema = z.object({
|
|
12
|
+
token: z.string().trim().min(1),
|
|
13
|
+
namespaceId: namespaceIdSchema,
|
|
14
|
+
controlPlaneUrl: z.string().url()
|
|
15
|
+
});
|
|
16
|
+
const errorDocumentSchema = z.object({
|
|
17
|
+
error: z.object({
|
|
18
|
+
code: z.string().min(1),
|
|
19
|
+
message: z.string(),
|
|
20
|
+
requestId: z.string().optional()
|
|
21
|
+
})
|
|
22
|
+
});
|
|
23
|
+
class RemoteActorClient {
|
|
24
|
+
serializer = new JsonActorStateSerializer();
|
|
25
|
+
settingsValue;
|
|
26
|
+
environment;
|
|
27
|
+
fetchRequest;
|
|
28
|
+
requestId;
|
|
29
|
+
constructor(options, dependencies = {}) {
|
|
30
|
+
this.environment = dependencies.environment ?? process.env;
|
|
31
|
+
this.fetchRequest = dependencies.fetch ?? globalThis.fetch;
|
|
32
|
+
this.requestId = dependencies.requestId ?? (() => globalThis.crypto.randomUUID());
|
|
33
|
+
this.settingsValue = options === undefined ? undefined : configuredSettings(options);
|
|
34
|
+
}
|
|
35
|
+
async invoke(actorType, actorId, method, args) {
|
|
36
|
+
const requestId = validateActorComponent("request ID", this.requestId());
|
|
37
|
+
if (currentActorInvocation() !== undefined) {
|
|
38
|
+
throw new ActorInvocationError("actor_error", requestId, "actor-to-actor calls are not available");
|
|
39
|
+
}
|
|
40
|
+
const response = await this.send(requestId, actorType, actorId, method, args);
|
|
41
|
+
return this.result(response, requestId);
|
|
42
|
+
}
|
|
43
|
+
async send(requestId, actorType, actorId, method, args) {
|
|
44
|
+
try {
|
|
45
|
+
return await this.fetchRequest(invocationUrl(this.settings, actorType, actorId), {
|
|
46
|
+
method: "POST",
|
|
47
|
+
headers: {
|
|
48
|
+
accept: "application/json",
|
|
49
|
+
authorization: `Bearer ${this.settings.token}`,
|
|
50
|
+
"content-type": "application/json"
|
|
51
|
+
},
|
|
52
|
+
body: JSON.stringify({
|
|
53
|
+
requestId,
|
|
54
|
+
method: validateActorComponent("actor method", method),
|
|
55
|
+
args: this.jsonArguments(args)
|
|
56
|
+
})
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
61
|
+
throw new ActorInvocationError("outcome_unknown", requestId, `control-plane HTTP request failed after dispatch: ${message}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async result(response, requestId) {
|
|
65
|
+
const document = await responseDocument(response);
|
|
66
|
+
if (response.ok) {
|
|
67
|
+
if (isObject(document) && Object.hasOwn(document, "result"))
|
|
68
|
+
return document.result;
|
|
69
|
+
throw new ActorProtocolError("control-plane response did not contain an actor result");
|
|
70
|
+
}
|
|
71
|
+
if (response.status === 401 || response.status === 403) {
|
|
72
|
+
throw new ActorInvocationError("unauthenticated", requestId, "the durable-object workflow token was rejected");
|
|
73
|
+
}
|
|
74
|
+
const failure = errorDocumentSchema.safeParse(document);
|
|
75
|
+
if (!failure.success) {
|
|
76
|
+
throw new ActorProtocolError(`control-plane HTTP ${response.status} response did not contain a valid error`);
|
|
77
|
+
}
|
|
78
|
+
throw new ActorInvocationError(failure.data.error.code, failure.data.error.requestId ?? requestId, failure.data.error.message);
|
|
79
|
+
}
|
|
80
|
+
get settings() {
|
|
81
|
+
if (this.settingsValue !== undefined)
|
|
82
|
+
return this.settingsValue;
|
|
83
|
+
const result = remoteSettingsSchema.safeParse(this.environment);
|
|
84
|
+
if (!result.success)
|
|
85
|
+
throw new ActorConfigurationError(`remote actor settings are invalid: ${result.error.message}`);
|
|
86
|
+
this.settingsValue = {
|
|
87
|
+
token: result.data.DURABLE_OBJECT_TOKEN,
|
|
88
|
+
namespaceId: result.data.DURABLE_OBJECT_NAMESPACE_ID,
|
|
89
|
+
controlPlaneUrl: validateOrigin(result.data.DURABLE_OBJECT_CONTROL_PLANE_URL)
|
|
90
|
+
};
|
|
91
|
+
return this.settingsValue;
|
|
92
|
+
}
|
|
93
|
+
jsonArguments(args) {
|
|
94
|
+
const value = this.serializer.clone(args, "actor arguments");
|
|
95
|
+
if (!Array.isArray(value))
|
|
96
|
+
throw new ActorProtocolError("actor arguments must be a JSON array");
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function configuredSettings(options) {
|
|
101
|
+
const result = clientOptionsSchema.safeParse(options);
|
|
102
|
+
if (!result.success)
|
|
103
|
+
throw new ActorConfigurationError(`durable-object client settings are invalid: ${result.error.message}`);
|
|
104
|
+
return { ...result.data, controlPlaneUrl: validateOrigin(result.data.controlPlaneUrl) };
|
|
105
|
+
}
|
|
106
|
+
function validateOrigin(origin) {
|
|
107
|
+
let url;
|
|
108
|
+
try {
|
|
109
|
+
url = new URL(origin);
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
throw new ActorConfigurationError(`actor HTTP origin is invalid: ${origin}`, { cause: error });
|
|
113
|
+
}
|
|
114
|
+
if (!/^https?:$/u.test(url.protocol) || !url.hostname || url.username || url.password || url.pathname !== "/" || url.search || url.hash) {
|
|
115
|
+
throw new ActorConfigurationError(`actor control-plane URL must be an HTTP or HTTPS origin: ${origin}`);
|
|
116
|
+
}
|
|
117
|
+
return url.origin;
|
|
118
|
+
}
|
|
119
|
+
function invocationUrl(settings, actorType, actorId) {
|
|
120
|
+
const actor = validateActorComponent("actor type", actorType);
|
|
121
|
+
const id = validateActorComponent("actor ID", actorId);
|
|
122
|
+
return `${settings.controlPlaneUrl}/v1/namespaces/${encodeURIComponent(settings.namespaceId)}/actors/${encodeURIComponent(actor)}/${encodeURIComponent(id)}/invocations`;
|
|
123
|
+
}
|
|
124
|
+
async function responseDocument(response) {
|
|
125
|
+
try {
|
|
126
|
+
return (await response.json());
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
throw new ActorProtocolError(`control-plane HTTP ${response.status} response was not valid JSON`, { cause: error });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function isObject(value) {
|
|
133
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
134
|
+
}
|
|
135
|
+
export { RemoteActorClient };
|
|
136
|
+
//# sourceMappingURL=remoteClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remoteClient.js","sourceRoot":"","sources":["../../workflow/remoteClient.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "little-durable-objects",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Provider-neutral durable objects for sandbox compute",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"engines": {
|
|
9
|
+
"node": ">=20"
|
|
10
|
+
},
|
|
11
|
+
"packageManager": "pnpm@10.17.1",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"actors",
|
|
14
|
+
"distributed-systems",
|
|
15
|
+
"durable-objects",
|
|
16
|
+
"modal",
|
|
17
|
+
"serverless"
|
|
18
|
+
],
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/TerseAI/little-durable-objects.git",
|
|
22
|
+
"directory": "npm"
|
|
23
|
+
},
|
|
24
|
+
"homepage": "https://github.com/TerseAI/little-durable-objects#readme",
|
|
25
|
+
"bugs": {
|
|
26
|
+
"url": "https://github.com/TerseAI/little-durable-objects/issues"
|
|
27
|
+
},
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
},
|
|
31
|
+
"main": "dist/index.js",
|
|
32
|
+
"types": "dist/index.d.ts",
|
|
33
|
+
"bin": {
|
|
34
|
+
"little-durable-objects-modal": "./dist/providers/modalCli.js"
|
|
35
|
+
},
|
|
36
|
+
"exports": {
|
|
37
|
+
".": {
|
|
38
|
+
"types": "./dist/index.d.ts",
|
|
39
|
+
"import": "./dist/index.js"
|
|
40
|
+
},
|
|
41
|
+
"./host": {
|
|
42
|
+
"types": "./dist/host.d.ts",
|
|
43
|
+
"import": "./dist/host.js"
|
|
44
|
+
},
|
|
45
|
+
"./modal": {
|
|
46
|
+
"types": "./dist/providers/modal.d.ts",
|
|
47
|
+
"import": "./dist/providers/modal.js"
|
|
48
|
+
},
|
|
49
|
+
"./providers": {
|
|
50
|
+
"types": "./dist/providers/types.d.ts",
|
|
51
|
+
"import": "./dist/providers/types.js"
|
|
52
|
+
},
|
|
53
|
+
"./regions": {
|
|
54
|
+
"types": "./dist/regions.d.ts",
|
|
55
|
+
"import": "./dist/regions.js"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"files": [
|
|
59
|
+
"dist",
|
|
60
|
+
"README.md",
|
|
61
|
+
"LICENSE.md"
|
|
62
|
+
],
|
|
63
|
+
"scripts": {
|
|
64
|
+
"build": "tsc -p tsconfig.build.json",
|
|
65
|
+
"check": "pnpm run format:check && pnpm run test && pnpm run package:check",
|
|
66
|
+
"clean": "rm -rf dist .test-dist",
|
|
67
|
+
"package:check": "node scripts/check-package.mjs",
|
|
68
|
+
"prepack": "pnpm run clean && pnpm run build && pnpm run package:check",
|
|
69
|
+
"test": "pnpm run clean && pnpm run build && tsc -p tsconfig.test.json && node --test --test-concurrency=1 .test-dist/*.test.js .test-dist/shared/*.test.js .test-dist/workflow/*.test.js .test-dist/host/*.test.js .test-dist/host/worker/*.test.js .test-dist/providers/*.test.js",
|
|
70
|
+
"format": "prettier --config ../.prettierrc --write \"*.ts\" \"{fixtures,host,providers,shared,workflow}/**/*.ts\" \"scripts/*.mjs\"",
|
|
71
|
+
"format:check": "prettier --config ../.prettierrc --check \"*.ts\" \"{fixtures,host,providers,shared,workflow}/**/*.ts\" \"scripts/*.mjs\""
|
|
72
|
+
},
|
|
73
|
+
"dependencies": {
|
|
74
|
+
"modal": "^0.7.2",
|
|
75
|
+
"tsx": "^4.0.0",
|
|
76
|
+
"zod": "^4.3.6"
|
|
77
|
+
},
|
|
78
|
+
"devDependencies": {
|
|
79
|
+
"@types/node": "^22.0.0",
|
|
80
|
+
"typescript": "^5.0.0"
|
|
81
|
+
}
|
|
82
|
+
}
|