@robono/server 0.2.0 → 0.3.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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0
4
+
5
+ - Added required per-operation authorization to the safe backend adapter.
6
+ - Sensitive adapter operations now deny access unless the child app explicitly authorizes them.
7
+ - Added the consumer-runnable `robono-sandbox-test` command to the published package.
8
+
3
9
  ## 0.2.0
4
10
 
5
11
  - Added authenticated end-to-end push diagnostic reporting.
package/README.md CHANGED
@@ -2,7 +2,16 @@
2
2
 
3
3
  Provider-neutral Node/TypeScript SDK for connecting an existing private network to Robono. It has no user interface and does not depend on Loop, Sendbird, or another messaging provider.
4
4
 
5
- The package handles authenticated API calls, typed inputs and responses, understandable errors, timeouts, limited retries, idempotency, negotiated restrictions, speech transforms, and signed webhook verification. It is ESM-only and requires Node.js 18 or newer.
5
+ The package handles authenticated API calls, typed inputs and responses, understandable errors, timeouts, limited retries, idempotency, negotiated restrictions, speech transforms, and signed webhook verification. It is ESM-only and is officially tested on Node.js 18 or newer and Deno 2.x through Deno's npm compatibility, including Supabase Edge Functions.
6
+
7
+ In Deno or a Supabase Edge Function, import the published package with:
8
+
9
+ ```ts
10
+ import {
11
+ createRobonoBackendAdapter,
12
+ RobonoServer,
13
+ } from "npm:@robono/server@0.3.0";
14
+ ```
6
15
 
7
16
  ## Install
8
17
 
@@ -114,24 +123,60 @@ Keep the Robono key on your server. The included adapter authenticates your own
114
123
  const handleRobono = createRobonoBackendAdapter({
115
124
  robono,
116
125
  authenticate: request => yourAuth.requireUser(request).id,
126
+ authorize: async ({ action, userId, input }) => {
127
+ return yourPolicy.canPerform({ action, userId, input });
128
+ },
117
129
  });
118
130
  ```
119
131
 
120
132
  Mount `handleRobono` at `/robono/*`. The adapter replaces any user id supplied by the browser or phone with the identity returned by your authentication code.
121
133
 
134
+ `authenticate` proves who the user is. The required `authorize` callback decides
135
+ whether that user may perform the exact operation. Check the child app's own
136
+ guardian approval, relationship status, messaging restrictions, and available
137
+ translation or AI credits. The adapter denies the request when authorization is
138
+ missing or returns false.
139
+
140
+ For a child account, deny `network_connections.respond` through the client
141
+ adapter. After the guardian approves in the child app's own protected backend,
142
+ call `robono.networkConnections.respond()` from that backend with the approved
143
+ child's stable ID. Hiding an approval button from the child is not an
144
+ authorization control.
145
+
122
146
  The adapter is based on standard Web `Request` and `Response` objects, so it can be mounted in Express, Fastify, Next.js, serverless functions, or another Node-compatible framework with a small framework wrapper.
123
147
 
124
148
  The child SDK uses separate `networkConnections` / `networkMessages` methods for network-to-network communication and `robonoConnections` / `robonoMessages` methods for Phone / Robono. This keeps the two workflows explicit while allowing the child app to present them in one friend picker.
125
149
 
150
+ ## Identifiers and mixed API/SDK use
151
+
152
+ The SDK calls the same public API and records as direct REST requests. Existing
153
+ `connection_id` and `robono_message_id` values remain valid when the same
154
+ integration and stable external user IDs are used.
155
+
156
+ Phone / Robono records use `connection_id` and `robono_message_id`. App-to-app
157
+ network records use `bridge_connection_id` and `bridge_message_id`. These are
158
+ different relationship types; there is no conversion or mapping between them.
159
+
160
+ Direct REST and SDK calls may coexist. Use the same stable
161
+ `external_message_id` for the same logical message so Robono returns the
162
+ existing record. The SDK also supplies an idempotency key for writes. Process
163
+ incoming webhooks through one ingress and atomically deduplicate by `event_id`;
164
+ automated retries preserve that event ID.
165
+
166
+ The server SDK covers both Phone / Robono and app-to-app operations. The React
167
+ Native and Web SDKs are optional headless clients. Their automatic state
168
+ synchronization, push handling, and polling recovery are primarily for
169
+ app-to-app bridge state.
170
+
126
171
  ## Stateful sandbox test
127
172
 
128
- Create isolated Network A and Network B credentials in the Robono developer portal, then run:
173
+ Create isolated Network A and Network B credentials in the Robono developer portal, then run this command from any project:
129
174
 
130
175
  ```bash
131
176
  ROBONO_SANDBOX_KEY_A=rbn_test_... \
132
177
  ROBONO_SANDBOX_KEY_B=rbn_test_... \
133
178
  ROBONO_SANDBOX_NETWORK_B_ID=... \
134
- npm run test:sandbox
179
+ npx --package @robono/server robono-sandbox-test
135
180
  ```
136
181
 
137
182
  The test creates and accepts a connection, sends and retrieves a message, records a read receipt, synchronizes state, and disconnects. Set Network B to “Push fails” in the portal to prove polling recovery; the final output then reports `accepted_via: "polling"`.
package/dist/adapter.d.ts CHANGED
@@ -1,9 +1,16 @@
1
1
  import type { RobonoServer } from "./client.js";
2
2
  import type { JsonObject } from "./types.js";
3
+ export type RobonoAuthorizationAction = "networks.list" | "network_connections.request" | "network_connections.respond" | "network_connections.list" | "network_connections.disconnect" | "network_connections.update" | "robono_connections.create" | "robono_connections.update_profile" | "robono_connections.disconnect" | "network_messages.send" | "network_messages.list" | "network_messages.mark" | "robono_messages.send" | "speech_transforms.create";
4
+ export interface RobonoAuthorizationContext {
5
+ action: RobonoAuthorizationAction;
6
+ userId: string;
7
+ input: JsonObject;
8
+ request: Request;
9
+ }
3
10
  export interface RobonoBackendAdapterOptions {
4
11
  robono: RobonoServer;
5
12
  authenticate: (request: Request) => string | Promise<string>;
6
- authorizeSpeechTransform?: (request: Request, externalUserId: string, input: JsonObject) => boolean | Promise<boolean>;
13
+ authorize: (context: RobonoAuthorizationContext) => boolean | Promise<boolean>;
7
14
  maxRequestBytes?: number;
8
15
  }
9
16
  export declare function createRobonoBackendAdapter(options: RobonoBackendAdapterOptions): (request: Request) => Promise<Response>;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,wBAAwB,CAAC,EAAE,CACzB,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,UAAU,KACd,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,IAIP,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CAsPlE"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,yBAAyB,GACjC,eAAe,GACf,6BAA6B,GAC7B,6BAA6B,GAC7B,0BAA0B,GAC1B,gCAAgC,GAChC,4BAA4B,GAC5B,2BAA2B,GAC3B,mCAAmC,GACnC,+BAA+B,GAC/B,uBAAuB,GACvB,uBAAuB,GACvB,uBAAuB,GACvB,sBAAsB,GACtB,0BAA0B,CAAC;AAE/B,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,yBAAyB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,SAAS,EAAE,CACT,OAAO,EAAE,0BAA0B,KAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAmBD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,IAIP,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CAgQlE"}
package/dist/adapter.js CHANGED
@@ -1,4 +1,20 @@
1
1
  import { RobonoError } from "./errors.js";
2
+ const authorizationActions = {
3
+ "/networks": "networks.list",
4
+ "/network-connections": "network_connections.request",
5
+ "/network-connections/respond": "network_connections.respond",
6
+ "/network-connections/list": "network_connections.list",
7
+ "/network-connections/disconnect": "network_connections.disconnect",
8
+ "/network-connections/update": "network_connections.update",
9
+ "/connections": "robono_connections.create",
10
+ "/connections/profile": "robono_connections.update_profile",
11
+ "/connections/disconnect": "robono_connections.disconnect",
12
+ "/network-messages": "network_messages.send",
13
+ "/network-messages/list": "network_messages.list",
14
+ "/network-messages/events": "network_messages.mark",
15
+ "/messages": "robono_messages.send",
16
+ "/transforms/speech": "speech_transforms.create",
17
+ };
2
18
  export function createRobonoBackendAdapter(options) {
3
19
  const maxRequestBytes = positiveInteger(options.maxRequestBytes, 1_000_000);
4
20
  return async function handle(request) {
@@ -14,6 +30,20 @@ export function createRobonoBackendAdapter(options) {
14
30
  }
15
31
  const body = await readBody(request, maxRequestBytes);
16
32
  const path = normalizedAdapterPath(new URL(request.url).pathname);
33
+ const action = authorizationActions[path];
34
+ if (!action) {
35
+ return responseError(404, "adapter_route_not_found", "Robono adapter route was not found.", requestId);
36
+ }
37
+ const authorizationInput = inputWithAuthenticatedUser(action, body, externalUserId);
38
+ const authorized = await options.authorize?.({
39
+ action,
40
+ userId: externalUserId,
41
+ input: authorizationInput,
42
+ request,
43
+ }) ?? false;
44
+ if (!authorized) {
45
+ return responseError(403, "operation_not_authorized", "The child app did not authorize this operation for the signed-in user.", requestId);
46
+ }
17
47
  const requestOptions = { requestId };
18
48
  if (path === "/networks") {
19
49
  return responseJson(await options.robono.directory.list({}, requestOptions));
@@ -121,13 +151,9 @@ export function createRobonoBackendAdapter(options) {
121
151
  }, requestOptions));
122
152
  }
123
153
  if (path === "/transforms/speech") {
124
- const allowed = await options.authorizeSpeechTransform?.(request, externalUserId, body) ?? true;
125
- if (!allowed) {
126
- return responseError(403, "speech_transform_not_allowed", "Speech transforms are not allowed for this child app user.", requestId);
127
- }
128
154
  return responseJson(await options.robono.transforms.speech(body, requestOptions));
129
155
  }
130
- return responseError(404, "adapter_route_not_found", "Robono adapter route was not found.", requestId);
156
+ throw new Error("Authorized adapter route has no handler.");
131
157
  }
132
158
  catch (error) {
133
159
  if (error instanceof RobonoError) {
@@ -143,6 +169,27 @@ export function createRobonoBackendAdapter(options) {
143
169
  }
144
170
  };
145
171
  }
172
+ function inputWithAuthenticatedUser(action, input, userId) {
173
+ if (action === "network_connections.request") {
174
+ return { ...input, source_external_user_id: userId };
175
+ }
176
+ if (action === "network_connections.respond") {
177
+ return { ...input, target_external_user_id: userId };
178
+ }
179
+ if (action === "network_connections.list" ||
180
+ action === "network_connections.disconnect" ||
181
+ action === "network_connections.update" ||
182
+ action === "robono_connections.create" ||
183
+ action === "robono_connections.update_profile" ||
184
+ action === "robono_connections.disconnect" ||
185
+ action === "network_messages.send" ||
186
+ action === "network_messages.list" ||
187
+ action === "network_messages.mark" ||
188
+ action === "robono_messages.send") {
189
+ return { ...input, external_user_id: userId };
190
+ }
191
+ return { ...input };
192
+ }
146
193
  async function assertConnectionBelongsToUser(robono, connectionId, externalUserId, requestId) {
147
194
  const result = await robono.networkConnections.list({
148
195
  external_user_id: externalUserId,
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { RobonoServer } from "./client.js";
2
2
  export { createRobonoBackendAdapter } from "./adapter.js";
3
- export type { RobonoBackendAdapterOptions } from "./adapter.js";
3
+ export type { RobonoAuthorizationAction, RobonoAuthorizationContext, RobonoBackendAdapterOptions, } from "./adapter.js";
4
4
  export { RobonoError, RobonoWebhookError } from "./errors.js";
5
5
  export { assertMessageAllowed, isMessageAllowed, restrictionsFor, } from "./restrictions.js";
6
6
  export { verifyRobonoWebhook } from "./webhooks.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,YAAY,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,mBAAmB,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,YAAY,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,mBAAmB,YAAY,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAM1D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=sandbox-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-test.d.ts","sourceRoot":"","sources":["../src/sandbox-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,96 @@
1
+ #!/usr/bin/env node
2
+ import { RobonoServer } from "./client.js";
3
+ const keyA = requiredEnvironmentVariable("ROBONO_SANDBOX_KEY_A");
4
+ const keyB = requiredEnvironmentVariable("ROBONO_SANDBOX_KEY_B");
5
+ const networkBId = requiredEnvironmentVariable("ROBONO_SANDBOX_NETWORK_B_ID");
6
+ const baseUrl = process.env.ROBONO_SANDBOX_BASE_URL?.trim() ||
7
+ "https://api.robono.com/v1";
8
+ const networkA = new RobonoServer({ apiKey: keyA, baseUrl });
9
+ const networkB = new RobonoServer({ apiKey: keyB, baseUrl });
10
+ const runId = Date.now().toString(36);
11
+ const userA = `sandbox-a-${runId}`;
12
+ const userB = `sandbox-b-${runId}`;
13
+ let bridgeConnectionId = null;
14
+ try {
15
+ const directory = await networkA.directory.list();
16
+ const target = directory.directory.find((item) => item.id === networkBId);
17
+ assert(target, "Network B is not visible to Network A.");
18
+ assert(!directory.directory.some((item) => item.type === "robono_phone"), "The isolated sandbox unexpectedly exposed Phone / Robono.");
19
+ const requested = await networkA.networkConnections.request({
20
+ target_app_id: target.id,
21
+ source_external_user_id: userA,
22
+ source_display_name: "Alex",
23
+ target_identifier: `B-FRIEND-${runId}`,
24
+ });
25
+ bridgeConnectionId = requested.bridge_connection_id;
26
+ assert(requested.status === "pending_target_approval", `Expected a pending request; received ${requested.status}.`);
27
+ const pending = await networkB.networkConnections.list({
28
+ status: "pending",
29
+ });
30
+ assert(pending.connections.some((item) => item.bridge_connection_id === bridgeConnectionId), "Network B did not receive the pending connection.");
31
+ const accepted = await networkB.networkConnections.respond({
32
+ bridge_connection_id: bridgeConnectionId,
33
+ status: "accepted",
34
+ target_external_user_id: userB,
35
+ target_display_name: "Bailey",
36
+ });
37
+ assert(accepted.status === "accepted", `Network B did not accept the connection; received ${accepted.status}.`);
38
+ const sent = await networkA.messages.send({
39
+ bridge_connection_id: bridgeConnectionId,
40
+ external_user_id: userA,
41
+ external_message_id: `message-${runId}`,
42
+ message_kind: "text",
43
+ text_body: "Hello from the Robono stateful sandbox.",
44
+ });
45
+ assert(sent.bridge_message_id, "Robono did not return a bridge message ID.");
46
+ const received = await networkB.messages.list({
47
+ bridge_connection_id: bridgeConnectionId,
48
+ external_user_id: userB,
49
+ });
50
+ const inbound = received.messages.find((item) => item.bridge_message_id === sent.bridge_message_id);
51
+ assert(inbound, "Network B could not retrieve the sent message.");
52
+ assert(inbound.direction === "inbound", "The retrieved message is not inbound.");
53
+ assert(inbound.accepted_via === "push" || inbound.accepted_via === "polling", "The message does not show whether push or polling accepted it.");
54
+ await networkB.messages.mark({
55
+ bridge_connection_id: bridgeConnectionId,
56
+ bridge_message_id: sent.bridge_message_id,
57
+ event: "read",
58
+ });
59
+ const synchronized = await networkA.messages.list({
60
+ bridge_connection_id: bridgeConnectionId,
61
+ external_user_id: userA,
62
+ });
63
+ assert(synchronized.messages.find((item) => item.bridge_message_id === sent.bridge_message_id)?.status === "read", "The read event did not synchronize to Network A.");
64
+ console.log(JSON.stringify({
65
+ ok: true,
66
+ bridge_connection_id: bridgeConnectionId,
67
+ bridge_message_id: sent.bridge_message_id,
68
+ accepted_via: inbound.accepted_via,
69
+ }, null, 2));
70
+ }
71
+ catch (error) {
72
+ console.error(error instanceof Error ? error.message : "The sandbox test failed.");
73
+ process.exitCode = 1;
74
+ }
75
+ finally {
76
+ if (bridgeConnectionId) {
77
+ await networkA.networkConnections.disconnect({
78
+ bridge_connection_id: bridgeConnectionId,
79
+ external_user_id: userA,
80
+ reason: "sandbox_test_complete",
81
+ }).catch(() => undefined);
82
+ }
83
+ }
84
+ function requiredEnvironmentVariable(name) {
85
+ const value = process.env[name]?.trim();
86
+ if (!value) {
87
+ console.error(`Set ${name}. Create Network A and Network B test credentials in the Robono Sandbox first.`);
88
+ process.exit(1);
89
+ }
90
+ return value;
91
+ }
92
+ function assert(value, message) {
93
+ if (!value)
94
+ throw new Error(message);
95
+ }
96
+ //# sourceMappingURL=sandbox-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-test.js","sourceRoot":"","sources":["../src/sandbox-test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robono/server",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Provider-neutral server SDK for the Robono Bridge API.",
5
5
  "keywords": [
6
6
  "robono",
@@ -23,6 +23,9 @@
23
23
  "import": "./dist/index.js"
24
24
  }
25
25
  },
26
+ "bin": {
27
+ "robono-sandbox-test": "dist/sandbox-test.js"
28
+ },
26
29
  "files": [
27
30
  "dist",
28
31
  "README.md",
@@ -33,7 +36,8 @@
33
36
  "build": "tsc -p tsconfig.json",
34
37
  "typecheck": "tsc -p tsconfig.json --noEmit",
35
38
  "test": "npm run build && node --test test/*.test.mjs",
36
- "test:sandbox": "npm run build && node test/sandbox.e2e.mjs",
39
+ "test:deno": "npm run build && deno test test/deno_compat_test.ts",
40
+ "test:sandbox": "npm run build && node dist/sandbox-test.js",
37
41
  "prepublishOnly": "npm test"
38
42
  },
39
43
  "engines": {