@openclaw/crabline 0.1.0 → 0.1.3
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/README.md +68 -1
- package/dist/src/cli/program.js +62 -12
- package/dist/src/cli/program.js.map +1 -1
- package/dist/src/fake-servers/http.d.ts +30 -0
- package/dist/src/fake-servers/http.js +130 -0
- package/dist/src/fake-servers/http.js.map +1 -0
- package/dist/src/fake-servers/index.d.ts +21 -6
- package/dist/src/fake-servers/index.js +19 -5
- package/dist/src/fake-servers/index.js.map +1 -1
- package/dist/src/fake-servers/slack.d.ts +34 -0
- package/dist/src/fake-servers/slack.js +445 -0
- package/dist/src/fake-servers/slack.js.map +1 -0
- package/dist/src/fake-servers/telegram.js +3 -20
- package/dist/src/fake-servers/telegram.js.map +1 -1
- package/dist/src/fake-servers/whatsapp-socket-factory.d.ts +34 -0
- package/dist/src/fake-servers/whatsapp-socket-factory.js +225 -0
- package/dist/src/fake-servers/whatsapp-socket-factory.js.map +1 -0
- package/dist/src/fake-servers/whatsapp.d.ts +96 -0
- package/dist/src/fake-servers/whatsapp.js +474 -0
- package/dist/src/fake-servers/whatsapp.js.map +1 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/openclaw/bridges/slack.d.ts +1 -0
- package/dist/src/openclaw/bridges/slack.js +150 -0
- package/dist/src/openclaw/bridges/slack.js.map +1 -0
- package/dist/src/openclaw/bridges/telegram.d.ts +1 -0
- package/dist/src/openclaw/bridges/telegram.js +137 -0
- package/dist/src/openclaw/bridges/telegram.js.map +1 -0
- package/dist/src/openclaw/bridges/whatsapp.d.ts +1 -0
- package/dist/src/openclaw/bridges/whatsapp.js +115 -0
- package/dist/src/openclaw/bridges/whatsapp.js.map +1 -0
- package/dist/src/openclaw/shared.d.ts +125 -0
- package/dist/src/openclaw/shared.js +78 -0
- package/dist/src/openclaw/shared.js.map +1 -0
- package/dist/src/openclaw.d.ts +3 -76
- package/dist/src/openclaw.js +31 -196
- package/dist/src/openclaw.js.map +1 -1
- package/dist/src/providers/builtin/native-local-mock.d.ts +2 -5
- package/dist/src/providers/builtin/native-local-mock.js.map +1 -1
- package/dist/src/providers/builtin/slack.js +1 -10
- package/dist/src/providers/builtin/slack.js.map +1 -1
- package/dist/src/providers/native-ids.d.ts +5 -0
- package/dist/src/providers/native-ids.js +2 -0
- package/dist/src/providers/native-ids.js.map +1 -0
- package/dist/src/providers/slack-ids.d.ts +6 -0
- package/dist/src/providers/slack-ids.js +24 -0
- package/dist/src/providers/slack-ids.js.map +1 -0
- package/docs/channel-setup.md +82 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -15,7 +15,8 @@ provider APIs that OpenClaw live adapters can target during deterministic QA.
|
|
|
15
15
|
`whatsapp`, and `zalo`
|
|
16
16
|
- a `script` bridge for channels that are still exercised by external commands
|
|
17
17
|
- per-provider local webhook endpoints for inbound events
|
|
18
|
-
- fake provider servers for live-adapter smoke tests, starting with
|
|
18
|
+
- fake provider servers for live-adapter smoke tests, starting with Slack,
|
|
19
|
+
Telegram, and WhatsApp
|
|
19
20
|
- JSONL recorder files for deterministic wait/watch behavior
|
|
20
21
|
- nonce-based `send`, `roundtrip`, `agent`, `probe`, `run`, `watch`, and
|
|
21
22
|
`doctor` commands
|
|
@@ -124,6 +125,30 @@ commands for `probe`, `send`, `waitForInbound`, or `watch`.
|
|
|
124
125
|
preferred Smoke CI path because OpenClaw still uses its normal channel adapter,
|
|
125
126
|
but the provider endpoint is local and deterministic.
|
|
126
127
|
|
|
128
|
+
Slack:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
crabline --json serve slack --ready-file .crabline/slack-server.json
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
The JSON manifest contains:
|
|
135
|
+
|
|
136
|
+
- `endpoints.apiRoot`: set OpenClaw's Slack API override / `SLACK_API_URL` to
|
|
137
|
+
this value
|
|
138
|
+
- `botToken`: set OpenClaw `channels.slack.botToken` to this value
|
|
139
|
+
- `signingSecret`: set OpenClaw `channels.slack.signingSecret` to this value
|
|
140
|
+
- `adminToken`: send this as the `X-Crabline-Admin-Token` header when posting
|
|
141
|
+
test user messages
|
|
142
|
+
- `endpoints.adminInboundUrl`: authenticated POST endpoint for Events API-shaped
|
|
143
|
+
test user messages
|
|
144
|
+
- `endpoints.eventsUrl`: local Slack Events API endpoint
|
|
145
|
+
- `recorderPath`: JSONL file of fake provider API/admin traffic
|
|
146
|
+
|
|
147
|
+
The admin token is generated randomly unless `--admin-token <token>` is
|
|
148
|
+
provided. Implemented Slack Web API endpoints include `auth.test`,
|
|
149
|
+
`chat.postMessage`, `conversations.open`, `conversations.info`,
|
|
150
|
+
`conversations.history`, and `conversations.replies`.
|
|
151
|
+
|
|
127
152
|
Telegram:
|
|
128
153
|
|
|
129
154
|
```bash
|
|
@@ -150,6 +175,46 @@ Implemented Telegram Bot API endpoints include `getMe`, `sendMessage`,
|
|
|
150
175
|
`deleteWebhook`, `setWebhook`, `setMyCommands`, `deleteMyCommands`,
|
|
151
176
|
`sendChatAction`, and `answerCallbackQuery`.
|
|
152
177
|
|
|
178
|
+
WhatsApp:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
crabline --json serve whatsapp --ready-file .crabline/whatsapp-server.json
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
The JSON manifest contains:
|
|
185
|
+
|
|
186
|
+
- `endpoints.apiRoot`: Crabline WhatsApp fake provider API root
|
|
187
|
+
- `accessToken`: bearer token for fake provider requests
|
|
188
|
+
- `adminToken`: send this as the `X-Crabline-Admin-Token` header when posting
|
|
189
|
+
test user messages
|
|
190
|
+
- `selfJid`: fake authenticated WhatsApp user JID
|
|
191
|
+
- `env.CRABLINE_WHATSAPP_ACCESS_TOKEN`: access token for the runtime socket
|
|
192
|
+
factory
|
|
193
|
+
- `env.CRABLINE_WHATSAPP_API_ROOT`: API root for the runtime socket factory
|
|
194
|
+
- `env.CRABLINE_WHATSAPP_RECORDER_PATH`: recorder file followed by the runtime
|
|
195
|
+
socket factory for cross-process inbound delivery
|
|
196
|
+
- `env.CRABLINE_WHATSAPP_SELF_JID`: fake authenticated WhatsApp user JID for
|
|
197
|
+
the runtime socket factory
|
|
198
|
+
- `endpoints.adminInboundUrl`: authenticated POST endpoint for test user
|
|
199
|
+
messages; subscribed Baileys mock sockets receive them as `messages.upsert`
|
|
200
|
+
- `endpoints.messagesUrl`: fake text send endpoint used by the Baileys-shaped
|
|
201
|
+
mock
|
|
202
|
+
- `endpoints.presenceUrl`: fake presence endpoint used by
|
|
203
|
+
`sendPresenceUpdate`
|
|
204
|
+
- `recorderPath`: JSONL file of fake provider API/admin traffic
|
|
205
|
+
|
|
206
|
+
Use the package subpath `@openclaw/crabline/whatsapp-socket-factory` when a
|
|
207
|
+
runtime needs a Baileys-style module with `createWhatsAppSocket()`. The module
|
|
208
|
+
reads the `CRABLINE_WHATSAPP_*` env vars emitted by the manifest, sends outbound
|
|
209
|
+
traffic to the fake provider API, and follows the recorder for inbound
|
|
210
|
+
`messages.upsert` events. The admin token is generated randomly unless
|
|
211
|
+
`--admin-token <token>` is provided.
|
|
212
|
+
|
|
213
|
+
OpenClaw bridge callers should post injected user messages with the
|
|
214
|
+
`providerUrl`, `providerHeaders`, and `providerBody` returned by
|
|
215
|
+
`createOpenClawCrablineInbound()`. For direct in-process tests, the started fake
|
|
216
|
+
server also exposes `createBaileysMockSocket()`.
|
|
217
|
+
|
|
153
218
|
## Target IDs
|
|
154
219
|
|
|
155
220
|
Built-in providers accept native channel identifiers. Crabline does not add
|
|
@@ -174,6 +239,8 @@ Examples:
|
|
|
174
239
|
- Slack threads: `1700000000.000100`
|
|
175
240
|
- Telegram chats: `-1001234567890` or `@channelusername`
|
|
176
241
|
- Telegram topics: `42`
|
|
242
|
+
- WhatsApp users: `15551234567@s.whatsapp.net`
|
|
243
|
+
- WhatsApp groups: `120363001234567890@g.us`
|
|
177
244
|
- Discord channels and threads: Discord snowflake ids such as
|
|
178
245
|
`123456789012345678`
|
|
179
246
|
|
package/dist/src/cli/program.js
CHANGED
|
@@ -6,7 +6,30 @@ import { createRegistry } from "../providers/registry.js";
|
|
|
6
6
|
import { formatJson, formatRunResultText } from "../core/reporters.js";
|
|
7
7
|
import { computeExitCode, runFixtureCommand, runSuite } from "../core/run.js";
|
|
8
8
|
import { CrablineError, ensureErrorMessage } from "../core/errors.js";
|
|
9
|
-
import {
|
|
9
|
+
import { isCrablineFakeProviderChannel, startCrablineFakeProviderServer, } from "../fake-servers/index.js";
|
|
10
|
+
const SERVE_PARAM_FACTORIES = {
|
|
11
|
+
slack: (shared, commandOptions) => ({
|
|
12
|
+
...shared,
|
|
13
|
+
adminToken: commandOptions.adminToken,
|
|
14
|
+
botToken: commandOptions.botToken,
|
|
15
|
+
channel: "slack",
|
|
16
|
+
signingSecret: commandOptions.signingSecret,
|
|
17
|
+
}),
|
|
18
|
+
telegram: (shared, commandOptions) => ({
|
|
19
|
+
...shared,
|
|
20
|
+
adminToken: commandOptions.adminToken,
|
|
21
|
+
botToken: commandOptions.botToken,
|
|
22
|
+
botUsername: commandOptions.botUsername,
|
|
23
|
+
channel: "telegram",
|
|
24
|
+
}),
|
|
25
|
+
whatsapp: (shared, commandOptions) => ({
|
|
26
|
+
...shared,
|
|
27
|
+
accessToken: commandOptions.accessToken,
|
|
28
|
+
adminToken: commandOptions.adminToken,
|
|
29
|
+
channel: "whatsapp",
|
|
30
|
+
selfJid: commandOptions.selfJid,
|
|
31
|
+
}),
|
|
32
|
+
};
|
|
10
33
|
function print(value) {
|
|
11
34
|
process.stdout.write(`${value}\n`);
|
|
12
35
|
}
|
|
@@ -152,14 +175,17 @@ export function createProgram(setExitCode = (code) => {
|
|
|
152
175
|
.option("--host <host>", "Bind host", "127.0.0.1")
|
|
153
176
|
.option("--port <port>", "Bind port", "0")
|
|
154
177
|
.option("--admin-token <token>", "Admin token for inbound test messages")
|
|
155
|
-
.option("--
|
|
178
|
+
.option("--access-token <token>", "Fake WhatsApp access token")
|
|
179
|
+
.option("--bot-token <token>", "Fake Telegram or Slack bot token")
|
|
156
180
|
.option("--bot-username <username>", "Fake Telegram bot username", "crabline_bot")
|
|
157
181
|
.option("--recorder <path>", "JSONL recorder path")
|
|
158
182
|
.option("--ready-file <path>", "Write the server runtime manifest to this path")
|
|
183
|
+
.option("--self-jid <jid>", "Fake WhatsApp self JID")
|
|
184
|
+
.option("--signing-secret <secret>", "Fake Slack signing secret")
|
|
159
185
|
.option("--once", "Start, print the runtime manifest, and stop immediately", false)
|
|
160
186
|
.action(async (provider, commandOptions) => {
|
|
161
187
|
const options = program.opts();
|
|
162
|
-
if (provider
|
|
188
|
+
if (!isCrablineFakeProviderChannel(provider)) {
|
|
163
189
|
throw new CrablineError(`Unsupported fake provider server: ${provider}`, {
|
|
164
190
|
kind: "config",
|
|
165
191
|
});
|
|
@@ -170,14 +196,17 @@ export function createProgram(setExitCode = (code) => {
|
|
|
170
196
|
kind: "config",
|
|
171
197
|
});
|
|
172
198
|
}
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
199
|
+
const factory = SERVE_PARAM_FACTORIES[provider];
|
|
200
|
+
if (!factory) {
|
|
201
|
+
throw new CrablineError(`Unsupported fake provider server: ${provider}`, {
|
|
202
|
+
kind: "config",
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
const server = await startCrablineFakeProviderServer(factory({
|
|
177
206
|
host: commandOptions.host,
|
|
178
207
|
port,
|
|
179
208
|
recorderPath: commandOptions.recorder,
|
|
180
|
-
});
|
|
209
|
+
}, commandOptions));
|
|
181
210
|
const payload = formatJson(server.manifest);
|
|
182
211
|
if (commandOptions.readyFile) {
|
|
183
212
|
await fs.mkdir(nodePath.dirname(commandOptions.readyFile), { recursive: true });
|
|
@@ -214,14 +243,35 @@ function waitForShutdown(close) {
|
|
|
214
243
|
});
|
|
215
244
|
}
|
|
216
245
|
function renderServeText(manifest) {
|
|
217
|
-
|
|
246
|
+
const lines = [
|
|
218
247
|
`${manifest.provider} fake server ready`,
|
|
219
248
|
` apiRoot: ${manifest.endpoints.apiRoot}`,
|
|
220
|
-
` adminToken: ${manifest.adminToken}`,
|
|
221
|
-
` botToken: ${manifest.botToken}`,
|
|
222
249
|
` inbound: ${manifest.endpoints.adminInboundUrl}`,
|
|
223
250
|
` recorder: ${manifest.recorderPath}`,
|
|
224
|
-
]
|
|
251
|
+
];
|
|
252
|
+
const providerFields = renderServeProviderFields(manifest);
|
|
253
|
+
if (!providerFields) {
|
|
254
|
+
throw new CrablineError(`Unsupported fake provider server: ${String(manifest.provider)}`, {
|
|
255
|
+
kind: "config",
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
lines.splice(2, 0, ...providerFields);
|
|
259
|
+
return lines.join("\n");
|
|
260
|
+
}
|
|
261
|
+
function renderServeProviderFields(manifest) {
|
|
262
|
+
if (manifest.provider === "telegram") {
|
|
263
|
+
return [` adminToken: ${manifest.adminToken}`, ` botToken: ${manifest.botToken}`];
|
|
264
|
+
}
|
|
265
|
+
if (manifest.provider === "whatsapp") {
|
|
266
|
+
return [
|
|
267
|
+
` adminToken: ${manifest.adminToken}`,
|
|
268
|
+
` accessToken: ${manifest.accessToken}`,
|
|
269
|
+
` messages: ${manifest.endpoints.messagesUrl}`,
|
|
270
|
+
` presence: ${manifest.endpoints.presenceUrl}`,
|
|
271
|
+
` selfJid: ${manifest.selfJid}`,
|
|
272
|
+
];
|
|
273
|
+
}
|
|
274
|
+
return undefined;
|
|
225
275
|
}
|
|
226
276
|
function renderProvidersText(payload) {
|
|
227
277
|
const lines = ["configured providers:"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/cli/program.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,GAIhC,MAAM,0BAA0B,CAAC;AAkClC,MAAM,qBAAqB,GAAG;IAC5B,KAAK,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;QAClC,GAAG,MAAM;QACT,UAAU,EAAE,cAAc,CAAC,UAAU;QACrC,QAAQ,EAAE,cAAc,CAAC,QAAQ;QACjC,OAAO,EAAE,OAAO;QAChB,aAAa,EAAE,cAAc,CAAC,aAAa;KAC5C,CAAC;IACF,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;QACrC,GAAG,MAAM;QACT,UAAU,EAAE,cAAc,CAAC,UAAU;QACrC,QAAQ,EAAE,cAAc,CAAC,QAAQ;QACjC,WAAW,EAAE,cAAc,CAAC,WAAW;QACvC,OAAO,EAAE,UAAU;KACpB,CAAC;IACF,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;QACrC,GAAG,MAAM;QACT,WAAW,EAAE,cAAc,CAAC,WAAW;QACvC,UAAU,EAAE,cAAc,CAAC,UAAU;QACrC,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE,cAAc,CAAC,OAAO;KAChC,CAAC;CAC8D,CAAC;AAEnE,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,OAAsB,EACtB,MAAyE;IAEzE,OAAO,MAAM,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,WAAW,GAAgB,CAAC,IAAI,EAAE,EAAE;IAClC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1B,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,yBAAyB,EAAE,KAAK,CAAC;SAClD,kBAAkB,EAAE,CAAC;IAExB,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAmB,CAAC;QAChD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG;YACd,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpE,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,EAAE;gBACF,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YACH,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B,CAAC;QACF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,eAAe,CAAC;SAC5B,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAmB,CAAC;QAChD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxD,KAAK,CACH,OAAO,CAAC,IAAI;YACV,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC/B,CAAC,CAAC,QAAQ,CAAC,QAAQ;iBACd,GAAG,CACF,CAAC,OAAO,EAAE,EAAE,CACV,GAAG,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,aAAa,OAAO,CAAC,QAAQ,WAAW,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAC3F;iBACA,IAAI,CAAC,IAAI,CAAC,CAClB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,2BAA2B,CAAC;SACpC,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAmB,CAAC;QAChD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,OAAO,GACX,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,iBAAiB,CAAC;YACjE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,iBAAiB,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,aAAa,CAAC,yBAAyB,iBAAiB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,QAAQ;YACR,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,OAAO;YACrB,QAAQ;SACT,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEL,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAU,EAAE,CAAC;QAC3D,OAAO;aACJ,OAAO,CAAC,GAAG,IAAI,cAAc,CAAC;aAC9B,WAAW,CAAC,GAAG,IAAI,YAAY,CAAC;aAChC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAmB,CAAC;YAChD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9D,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;gBACrC,SAAS;gBACT,QAAQ;gBACR,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,QAAQ;aACT,CAAC,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;YACvE,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAmB,CAAC;QAChD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;YAC5B,UAAU;YACV,QAAQ;YACR,YAAY,EAAE,IAAI;YAClB,QAAQ;SACT,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,KAAK,CAAC,SAAS,CAAC;SAChB,WAAW,CAAC,6EAA6E,CAAC;SAC1F,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAmB,CAAC;QAChD,MAAM,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;YACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,aAAa,CAAC,oBAAoB,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/E,CAAC;YAED,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACtF,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACpB,MAAM,IAAI,aAAa,CAAC,aAAa,OAAO,CAAC,QAAQ,6BAA6B,EAAE;oBAClF,IAAI,EAAE,QAAQ;iBACf,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC;oBACzC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAE;oBAC7C,OAAO;oBACP,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,OAAO,CAAC,QAAQ;oBAC5B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;iBAC5B,CAAC,EAAE,CAAC;oBACH,KAAK,CACH,OAAO,CAAC,IAAI;wBACV,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;wBACrB,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAC1D,CAAC;gBACJ,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,MAAM,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,qEAAqE,CAAC;SAClF,MAAM,CAAC,eAAe,EAAE,WAAW,EAAE,WAAW,CAAC;SACjD,MAAM,CAAC,eAAe,EAAE,WAAW,EAAE,GAAG,CAAC;SACzC,MAAM,CAAC,uBAAuB,EAAE,uCAAuC,CAAC;SACxE,MAAM,CAAC,wBAAwB,EAAE,4BAA4B,CAAC;SAC9D,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;SACjE,MAAM,CAAC,2BAA2B,EAAE,4BAA4B,EAAE,cAAc,CAAC;SACjF,MAAM,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;SAClD,MAAM,CAAC,qBAAqB,EAAE,gDAAgD,CAAC;SAC/E,MAAM,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;SACpD,MAAM,CAAC,2BAA2B,EAAE,2BAA2B,CAAC;SAChE,MAAM,CAAC,QAAQ,EAAE,yDAAyD,EAAE,KAAK,CAAC;SAClF,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAmC,EAAE,EAAE;QAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAmB,CAAC;QAChD,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,aAAa,CAAC,qCAAqC,QAAQ,EAAE,EAAE;gBACvE,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;YACzD,MAAM,IAAI,aAAa,CAAC,6BAA6B,cAAc,CAAC,IAAI,EAAE,EAAE;gBAC1E,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,aAAa,CAAC,qCAAqC,QAAQ,EAAE,EAAE;gBACvE,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAClD,OAAO,CACL;YACE,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,IAAI;YACJ,YAAY,EAAE,cAAc,CAAC,QAAQ;SACtC,EACD,cAAc,CACf,CACF,CAAC;QACF,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,cAAc,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChF,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC;QACvE,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjE,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;YACxB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAmB,CAAC;QAChD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACjC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnF,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,KAA0B;IACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,QAAsC;IAC7D,MAAM,KAAK,GAAG;QACZ,GAAG,QAAQ,CAAC,QAAQ,oBAAoB;QACxC,cAAc,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE;QAC1C,cAAc,QAAQ,CAAC,SAAS,CAAC,eAAe,EAAE;QAClD,eAAe,QAAQ,CAAC,YAAY,EAAE;KACvC,CAAC;IACF,MAAM,cAAc,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,aAAa,CAAC,qCAAqC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE;YACxF,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAsC;IACvE,IAAI,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO,CAAC,iBAAiB,QAAQ,CAAC,UAAU,EAAE,EAAE,eAAe,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO;YACL,iBAAiB,QAAQ,CAAC,UAAU,EAAE;YACtC,kBAAkB,QAAQ,CAAC,WAAW,EAAE;YACxC,eAAe,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;YAC/C,eAAe,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;YAC/C,cAAc,QAAQ,CAAC,OAAO,EAAE;SACjC,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAc5B;IACC,MAAM,KAAK,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CACR,KAAK,QAAQ,CAAC,EAAE,aAAa,QAAQ,CAAC,QAAQ,YAAY,QAAQ,CAAC,OAAO,WAAW,QAAQ,CAAC,MAAM,aAAa,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACnJ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,CAAC,QAAQ,WAAW,KAAK,CAAC,MAAM,aAAa,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CACjG,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,QAAQ,CAAC,QAA8D;IAC9E,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAErB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,EAAE,gCAAgC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzF,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,EAAE,gBAAgB,OAAO,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACxE,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,YAAY,UAAU,gBAAgB,OAAO,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACpC,QAAQ,CAAC,IAAI,CAAC,YAAY,UAAU,+BAA+B,CAAC,CAAC;YACvE,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,UAAU,yCAAyC,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAED,KAAK,UAAU,CAAC;IAClB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc;IACzC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QACrC,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC,QAAQ,CAAC;QACxB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type IncomingMessage, type Server, type ServerResponse } from "node:http";
|
|
2
|
+
export type FakeServerRequestEvent = {
|
|
3
|
+
at: string;
|
|
4
|
+
body?: unknown;
|
|
5
|
+
method: string;
|
|
6
|
+
path: string;
|
|
7
|
+
query: Record<string, string>;
|
|
8
|
+
type: "admin" | "api";
|
|
9
|
+
};
|
|
10
|
+
export declare const ADMIN_TOKEN_HEADER = "x-crabline-admin-token";
|
|
11
|
+
export declare function jsonResponse(value: unknown, status?: number): Response;
|
|
12
|
+
export declare function readBody(request: IncomingMessage): Promise<Buffer>;
|
|
13
|
+
export declare function parseRequestBody(request: IncomingMessage): Promise<Record<string, unknown>>;
|
|
14
|
+
export declare function queryRecord(url: URL): Record<string, string>;
|
|
15
|
+
export declare function writeResponse(response: ServerResponse, fetchResponse: Response): Promise<void>;
|
|
16
|
+
export declare function closeServer(server: Server): Promise<void>;
|
|
17
|
+
export declare function startHttpJsonServer(params: {
|
|
18
|
+
handle: (request: IncomingMessage) => Promise<Response>;
|
|
19
|
+
host: string;
|
|
20
|
+
port: number;
|
|
21
|
+
serverName: string;
|
|
22
|
+
}): Promise<{
|
|
23
|
+
baseUrl: string;
|
|
24
|
+
close(): Promise<void>;
|
|
25
|
+
}>;
|
|
26
|
+
export declare function readString(value: unknown): string | undefined;
|
|
27
|
+
export declare function readTrimmedString(value: unknown): string | undefined;
|
|
28
|
+
export declare function readInteger(value: unknown): number | undefined;
|
|
29
|
+
export declare function hasAdminToken(request: IncomingMessage, expectedToken: string): boolean;
|
|
30
|
+
export declare function adminAuthError(): Response;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { createServer } from "node:http";
|
|
2
|
+
import { timingSafeEqual } from "node:crypto";
|
|
3
|
+
import { CrablineError } from "../core/errors.js";
|
|
4
|
+
export const ADMIN_TOKEN_HEADER = "x-crabline-admin-token";
|
|
5
|
+
export function jsonResponse(value, status = 200) {
|
|
6
|
+
return Response.json(value, { status });
|
|
7
|
+
}
|
|
8
|
+
export async function readBody(request) {
|
|
9
|
+
const chunks = [];
|
|
10
|
+
for await (const chunk of request) {
|
|
11
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
12
|
+
}
|
|
13
|
+
return Buffer.concat(chunks);
|
|
14
|
+
}
|
|
15
|
+
export async function parseRequestBody(request) {
|
|
16
|
+
const body = await readBody(request);
|
|
17
|
+
if (body.length === 0) {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
const contentType = request.headers["content-type"] ?? "";
|
|
21
|
+
const includesJson = Array.isArray(contentType)
|
|
22
|
+
? contentType.some((entry) => entry.includes("json"))
|
|
23
|
+
: contentType.includes("json");
|
|
24
|
+
if (includesJson) {
|
|
25
|
+
return JSON.parse(body.toString("utf8"));
|
|
26
|
+
}
|
|
27
|
+
const params = new URLSearchParams(body.toString("utf8"));
|
|
28
|
+
return Object.fromEntries(params.entries());
|
|
29
|
+
}
|
|
30
|
+
export function queryRecord(url) {
|
|
31
|
+
return Object.fromEntries(url.searchParams.entries());
|
|
32
|
+
}
|
|
33
|
+
export async function writeResponse(response, fetchResponse) {
|
|
34
|
+
response.statusCode = fetchResponse.status;
|
|
35
|
+
for (const [name, value] of fetchResponse.headers) {
|
|
36
|
+
response.setHeader(name, value);
|
|
37
|
+
}
|
|
38
|
+
response.end(Buffer.from(await fetchResponse.arrayBuffer()));
|
|
39
|
+
}
|
|
40
|
+
export function closeServer(server) {
|
|
41
|
+
return new Promise((resolve, reject) => {
|
|
42
|
+
server.close((error) => {
|
|
43
|
+
if (error) {
|
|
44
|
+
reject(error);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
resolve();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
export async function startHttpJsonServer(params) {
|
|
52
|
+
const server = createServer(async (request, response) => {
|
|
53
|
+
try {
|
|
54
|
+
await writeResponse(response, await params.handle(request));
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
await writeResponse(response, jsonResponse({
|
|
58
|
+
error: error instanceof Error ? error.message : String(error),
|
|
59
|
+
ok: false,
|
|
60
|
+
}, 500));
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
await new Promise((resolve, reject) => {
|
|
64
|
+
server.once("error", reject);
|
|
65
|
+
server.listen(params.port, params.host, () => {
|
|
66
|
+
server.off("error", reject);
|
|
67
|
+
resolve();
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
const address = server.address();
|
|
71
|
+
if (!address || typeof address === "string") {
|
|
72
|
+
throw new CrablineError(`Unable to resolve ${params.serverName} fake server address.`, {
|
|
73
|
+
kind: "connectivity",
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
baseUrl: `http://${params.host}:${address.port}`,
|
|
78
|
+
async close() {
|
|
79
|
+
await closeServer(server);
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export function readString(value) {
|
|
84
|
+
if (typeof value === "string" && value.length > 0) {
|
|
85
|
+
return value;
|
|
86
|
+
}
|
|
87
|
+
if (typeof value === "number" || typeof value === "bigint") {
|
|
88
|
+
return value.toString();
|
|
89
|
+
}
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
export function readTrimmedString(value) {
|
|
93
|
+
const stringValue = readString(value)?.trim();
|
|
94
|
+
return stringValue ? stringValue : undefined;
|
|
95
|
+
}
|
|
96
|
+
export function readInteger(value) {
|
|
97
|
+
const stringValue = readTrimmedString(value);
|
|
98
|
+
if (!stringValue || !/^-?\d+$/u.test(stringValue)) {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
return Number(stringValue);
|
|
102
|
+
}
|
|
103
|
+
function readBearerToken(authorization) {
|
|
104
|
+
if (!authorization) {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
const trimmed = authorization.trimStart();
|
|
108
|
+
if (trimmed.slice(0, 7).toLowerCase() !== "bearer ") {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
return trimmed.slice(7);
|
|
112
|
+
}
|
|
113
|
+
export function hasAdminToken(request, expectedToken) {
|
|
114
|
+
const header = request.headers[ADMIN_TOKEN_HEADER];
|
|
115
|
+
const directToken = Array.isArray(header) ? header[0] : header;
|
|
116
|
+
const providedToken = directToken ?? readBearerToken(request.headers.authorization);
|
|
117
|
+
if (!providedToken) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
const provided = Buffer.from(providedToken);
|
|
121
|
+
const expected = Buffer.from(expectedToken);
|
|
122
|
+
return provided.length === expected.length && timingSafeEqual(provided, expected);
|
|
123
|
+
}
|
|
124
|
+
export function adminAuthError() {
|
|
125
|
+
return new Response("unauthorized", {
|
|
126
|
+
headers: { "www-authenticate": "Bearer" },
|
|
127
|
+
status: 401,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/fake-servers/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAWlD,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAE3D,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,MAAM,GAAG,GAAG;IACvD,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB;IACrD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAwB;IAC7D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QAC7C,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA4B,CAAC;IACtE,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAQ;IAClC,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAwB,EACxB,aAAuB;IAEvB,QAAQ,CAAC,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;QAClD,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACrB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAKzC;IACC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,aAAa,CACjB,QAAQ,EACR,YAAY,CACV;gBACE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,EAAE,EAAE,KAAK;aACV,EACD,GAAG,CACJ,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,aAAa,CAAC,qBAAqB,MAAM,CAAC,UAAU,uBAAuB,EAAE;YACrF,IAAI,EAAE,cAAc;SACrB,CAAC,CAAC;IACL,CAAC;IACD,OAAO;QACL,OAAO,EAAE,UAAU,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;QAChD,KAAK,CAAC,KAAK;YACT,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IAC9C,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,eAAe,CAAC,aAAiC;IACxD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;IAC1C,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAwB,EAAE,aAAqB;IAC3E,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,aAAa,GAAG,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACpF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,QAAQ,CAAC,cAAc,EAAE;QAClC,OAAO,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE;QACzC,MAAM,EAAE,GAAG;KACZ,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,10 +1,25 @@
|
|
|
1
|
+
import { type SlackFakeServerManifest, type StartedSlackFakeServer, type StartSlackFakeServerParams } from "./slack.js";
|
|
1
2
|
import { type StartedTelegramFakeServer, type StartTelegramFakeServerParams, type TelegramFakeServerManifest } from "./telegram.js";
|
|
2
|
-
|
|
3
|
+
import { type StartedWhatsAppFakeServer, type StartWhatsAppFakeServerParams, type WhatsAppFakeServerManifest } from "./whatsapp.js";
|
|
4
|
+
export declare const CRABLINE_FAKE_PROVIDER_CHANNELS: readonly ["slack", "telegram", "whatsapp"];
|
|
3
5
|
export type CrablineFakeProviderChannel = (typeof CRABLINE_FAKE_PROVIDER_CHANNELS)[number];
|
|
4
|
-
export type CrablineFakeProviderManifest = TelegramFakeServerManifest;
|
|
5
|
-
export type StartedCrablineFakeProviderServer = StartedTelegramFakeServer;
|
|
6
|
-
export type StartCrablineFakeProviderServerParams =
|
|
7
|
-
channel:
|
|
8
|
-
}
|
|
6
|
+
export type CrablineFakeProviderManifest = SlackFakeServerManifest | TelegramFakeServerManifest | WhatsAppFakeServerManifest;
|
|
7
|
+
export type StartedCrablineFakeProviderServer = StartedSlackFakeServer | StartedTelegramFakeServer | StartedWhatsAppFakeServer;
|
|
8
|
+
export type StartCrablineFakeProviderServerParams = (StartSlackFakeServerParams & {
|
|
9
|
+
channel: "slack";
|
|
10
|
+
}) | (StartTelegramFakeServerParams & {
|
|
11
|
+
channel: "telegram";
|
|
12
|
+
}) | (StartWhatsAppFakeServerParams & {
|
|
13
|
+
channel: "whatsapp";
|
|
14
|
+
});
|
|
9
15
|
export declare function isCrablineFakeProviderChannel(value: string): value is CrablineFakeProviderChannel;
|
|
16
|
+
export declare function startCrablineFakeProviderServer(params: StartSlackFakeServerParams & {
|
|
17
|
+
channel: "slack";
|
|
18
|
+
}): Promise<StartedSlackFakeServer>;
|
|
19
|
+
export declare function startCrablineFakeProviderServer(params: StartTelegramFakeServerParams & {
|
|
20
|
+
channel: "telegram";
|
|
21
|
+
}): Promise<StartedTelegramFakeServer>;
|
|
22
|
+
export declare function startCrablineFakeProviderServer(params: StartWhatsAppFakeServerParams & {
|
|
23
|
+
channel: "whatsapp";
|
|
24
|
+
}): Promise<StartedWhatsAppFakeServer>;
|
|
10
25
|
export declare function startCrablineFakeProviderServer(params: StartCrablineFakeProviderServerParams): Promise<StartedCrablineFakeProviderServer>;
|
|
@@ -1,12 +1,26 @@
|
|
|
1
|
+
import { startSlackFakeServer, } from "./slack.js";
|
|
1
2
|
import { startTelegramFakeServer, } from "./telegram.js";
|
|
2
|
-
|
|
3
|
+
import { startWhatsAppFakeServer, } from "./whatsapp.js";
|
|
4
|
+
import { CrablineError } from "../core/errors.js";
|
|
5
|
+
export const CRABLINE_FAKE_PROVIDER_CHANNELS = Object.freeze([
|
|
6
|
+
"slack",
|
|
7
|
+
"telegram",
|
|
8
|
+
"whatsapp",
|
|
9
|
+
]);
|
|
10
|
+
const CRABLINE_FAKE_PROVIDER_CHANNEL_SET = new Set(CRABLINE_FAKE_PROVIDER_CHANNELS);
|
|
3
11
|
export function isCrablineFakeProviderChannel(value) {
|
|
4
|
-
return
|
|
12
|
+
return CRABLINE_FAKE_PROVIDER_CHANNEL_SET.has(value);
|
|
5
13
|
}
|
|
6
14
|
export async function startCrablineFakeProviderServer(params) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return await startTelegramFakeServer(params);
|
|
15
|
+
if (params.channel === "slack") {
|
|
16
|
+
return await startSlackFakeServer(params);
|
|
10
17
|
}
|
|
18
|
+
if (params.channel === "telegram") {
|
|
19
|
+
return await startTelegramFakeServer(params);
|
|
20
|
+
}
|
|
21
|
+
if (params.channel === "whatsapp") {
|
|
22
|
+
return await startWhatsAppFakeServer(params);
|
|
23
|
+
}
|
|
24
|
+
throw new CrablineError("Unsupported fake provider server.", { kind: "config" });
|
|
11
25
|
}
|
|
12
26
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fake-servers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GAIxB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fake-servers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAIrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,GAIxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,uBAAuB,GAIxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3D,OAAO;IACP,UAAU;IACV,UAAU;CACF,CAAC,CAAC;AAmBZ,MAAM,kCAAkC,GAAG,IAAI,GAAG,CAAS,+BAA+B,CAAC,CAAC;AAE5F,MAAM,UAAU,6BAA6B,CAAC,KAAa;IACzD,OAAO,kCAAkC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC;AAcD,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,MAA6C;IAE7C,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,IAAI,aAAa,CAAC,mCAAmC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type SlackFakeServerManifest = {
|
|
2
|
+
adminToken: string;
|
|
3
|
+
baseUrl: string;
|
|
4
|
+
botToken: string;
|
|
5
|
+
endpoints: {
|
|
6
|
+
adminInboundUrl: string;
|
|
7
|
+
apiRoot: string;
|
|
8
|
+
eventsUrl: string;
|
|
9
|
+
};
|
|
10
|
+
env: {
|
|
11
|
+
SLACK_API_URL: string;
|
|
12
|
+
SLACK_BOT_TOKEN: string;
|
|
13
|
+
SLACK_SIGNING_SECRET: string;
|
|
14
|
+
};
|
|
15
|
+
provider: "slack";
|
|
16
|
+
recorderPath: string;
|
|
17
|
+
signingSecret: string;
|
|
18
|
+
version: 1;
|
|
19
|
+
};
|
|
20
|
+
export type StartedSlackFakeServer = {
|
|
21
|
+
close(): Promise<void>;
|
|
22
|
+
manifest: SlackFakeServerManifest;
|
|
23
|
+
};
|
|
24
|
+
export type StartSlackFakeServerParams = {
|
|
25
|
+
adminToken?: string | undefined;
|
|
26
|
+
botId?: string | undefined;
|
|
27
|
+
botToken?: string | undefined;
|
|
28
|
+
botUserId?: string | undefined;
|
|
29
|
+
host?: string | undefined;
|
|
30
|
+
port?: number | undefined;
|
|
31
|
+
recorderPath?: string | undefined;
|
|
32
|
+
signingSecret?: string | undefined;
|
|
33
|
+
};
|
|
34
|
+
export declare function startSlackFakeServer(params?: StartSlackFakeServerParams): Promise<StartedSlackFakeServer>;
|