on-zero 0.6.16 → 0.6.18
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/dist/cjs/createZeroClient.cjs +27 -0
- package/dist/cjs/createZeroClient.connection.test.cjs +58 -0
- package/dist/cjs/createZeroClient.connection.test.native.js +58 -0
- package/dist/cjs/createZeroClient.connection.test.native.js.map +1 -1
- package/dist/cjs/createZeroClient.native.js +28 -0
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/createZeroServer.native.js.map +1 -1
- package/dist/cjs/createZeroServer.test.cjs +98 -0
- package/dist/cjs/createZeroServer.test.native.js +104 -0
- package/dist/cjs/createZeroServer.test.native.js.map +1 -1
- package/dist/cjs/createZeroServerCore.cjs +2 -1
- package/dist/cjs/createZeroServerCore.native.js +2 -3
- package/dist/cjs/createZeroServerCore.native.js.map +1 -1
- package/dist/esm/createZeroClient.connection.test.mjs +58 -0
- package/dist/esm/createZeroClient.connection.test.mjs.map +1 -1
- package/dist/esm/createZeroClient.connection.test.native.js +58 -0
- package/dist/esm/createZeroClient.connection.test.native.js.map +1 -1
- package/dist/esm/createZeroClient.mjs +27 -0
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +28 -0
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/createZeroServer.mjs.map +1 -1
- package/dist/esm/createZeroServer.native.js.map +1 -1
- package/dist/esm/createZeroServer.test.mjs +98 -0
- package/dist/esm/createZeroServer.test.mjs.map +1 -1
- package/dist/esm/createZeroServer.test.native.js +104 -0
- package/dist/esm/createZeroServer.test.native.js.map +1 -1
- package/dist/esm/createZeroServerCore.mjs +2 -1
- package/dist/esm/createZeroServerCore.mjs.map +1 -1
- package/dist/esm/createZeroServerCore.native.js +2 -3
- package/dist/esm/createZeroServerCore.native.js.map +1 -1
- package/package.json +2 -2
- package/readme.md +8 -1
- package/src/createZeroClient.connection.test.tsx +56 -0
- package/src/createZeroClient.tsx +38 -0
- package/src/createZeroServer.test.ts +106 -0
- package/src/createZeroServer.ts +2 -0
- package/src/createZeroServerCore.ts +12 -6
- package/test-fixtures/server-return-types.ts +12 -0
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/createZeroServer.d.ts +1 -1
- package/types/createZeroServer.d.ts.map +1 -1
- package/types/createZeroServerCore.d.ts +8 -5
- package/types/createZeroServerCore.d.ts.map +1 -1
|
@@ -213,6 +213,112 @@ describe('createZeroServer mutation recovery', () => {
|
|
|
213
213
|
consoleError.mockRestore()
|
|
214
214
|
})
|
|
215
215
|
|
|
216
|
+
test('registers a promise that settles every background task with the request scheduler', async () => {
|
|
217
|
+
const pg = new FakePgClient()
|
|
218
|
+
const error = new Error('background failed')
|
|
219
|
+
const consoleError = vi.spyOn(console, 'error').mockImplementation(() => {})
|
|
220
|
+
let releaseSibling!: () => void
|
|
221
|
+
const siblingGate = new Promise<void>((resolve) => {
|
|
222
|
+
releaseSibling = resolve
|
|
223
|
+
})
|
|
224
|
+
let siblingFinished = false
|
|
225
|
+
let scheduled: Promise<void> | undefined
|
|
226
|
+
const zeroServer = createZeroServer({
|
|
227
|
+
schema: zeroHttpFixtureSchema,
|
|
228
|
+
models: {
|
|
229
|
+
project: {
|
|
230
|
+
mutate: {
|
|
231
|
+
touch: async ({ server }) => {
|
|
232
|
+
server?.enqueueTask(async () => {
|
|
233
|
+
throw error
|
|
234
|
+
})
|
|
235
|
+
server?.enqueueTask(async () => {
|
|
236
|
+
await siblingGate
|
|
237
|
+
siblingFinished = true
|
|
238
|
+
})
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
createServerActions: () => ({}),
|
|
244
|
+
pool: pg as any,
|
|
245
|
+
})
|
|
246
|
+
|
|
247
|
+
const result = await zeroServer.handleMutationRequest({
|
|
248
|
+
authData: null,
|
|
249
|
+
request: pushRequest(1),
|
|
250
|
+
scheduleBackgroundTask: (promise) => {
|
|
251
|
+
scheduled = promise
|
|
252
|
+
},
|
|
253
|
+
})
|
|
254
|
+
|
|
255
|
+
expect((result.response as any).mutations[0].result).toEqual({})
|
|
256
|
+
expect(scheduled).toBeInstanceOf(Promise)
|
|
257
|
+
expect(siblingFinished).toBe(false)
|
|
258
|
+
|
|
259
|
+
let scheduledSettled = false
|
|
260
|
+
void scheduled!.then(() => {
|
|
261
|
+
scheduledSettled = true
|
|
262
|
+
})
|
|
263
|
+
await Promise.resolve()
|
|
264
|
+
expect(scheduledSettled).toBe(false)
|
|
265
|
+
|
|
266
|
+
releaseSibling()
|
|
267
|
+
await scheduled
|
|
268
|
+
|
|
269
|
+
expect(siblingFinished).toBe(true)
|
|
270
|
+
expect(consoleError).toHaveBeenCalledWith('[on-zero] async task failed', error)
|
|
271
|
+
consoleError.mockRestore()
|
|
272
|
+
})
|
|
273
|
+
|
|
274
|
+
test('awaits background tasks when the request has no scheduler', async () => {
|
|
275
|
+
const pg = new FakePgClient()
|
|
276
|
+
let markTaskStarted!: () => void
|
|
277
|
+
const taskStarted = new Promise<void>((resolve) => {
|
|
278
|
+
markTaskStarted = resolve
|
|
279
|
+
})
|
|
280
|
+
let releaseTask!: () => void
|
|
281
|
+
const taskGate = new Promise<void>((resolve) => {
|
|
282
|
+
releaseTask = resolve
|
|
283
|
+
})
|
|
284
|
+
const zeroServer = createZeroServer({
|
|
285
|
+
schema: zeroHttpFixtureSchema,
|
|
286
|
+
models: {
|
|
287
|
+
project: {
|
|
288
|
+
mutate: {
|
|
289
|
+
touch: async ({ server }) => {
|
|
290
|
+
server?.enqueueTask(async () => {
|
|
291
|
+
markTaskStarted()
|
|
292
|
+
await taskGate
|
|
293
|
+
})
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
createServerActions: () => ({}),
|
|
299
|
+
pool: pg as any,
|
|
300
|
+
})
|
|
301
|
+
|
|
302
|
+
let responseResolved = false
|
|
303
|
+
const resultPromise = zeroServer
|
|
304
|
+
.handleMutationRequest({
|
|
305
|
+
authData: null,
|
|
306
|
+
request: pushRequest(1),
|
|
307
|
+
})
|
|
308
|
+
.then((result) => {
|
|
309
|
+
responseResolved = true
|
|
310
|
+
return result
|
|
311
|
+
})
|
|
312
|
+
|
|
313
|
+
await taskStarted
|
|
314
|
+
await Promise.resolve()
|
|
315
|
+
expect(responseResolved).toBe(false)
|
|
316
|
+
|
|
317
|
+
releaseTask()
|
|
318
|
+
const result = await resultPromise
|
|
319
|
+
expect((result.response as any).mutations[0].result).toEqual({})
|
|
320
|
+
})
|
|
321
|
+
|
|
216
322
|
test('persists alreadyProcessed duplicate results for zero-cache recovery rows', async () => {
|
|
217
323
|
const pg = new FakePgClient()
|
|
218
324
|
const zeroServer = createZeroServer({
|
package/src/createZeroServer.ts
CHANGED
|
@@ -15,6 +15,8 @@ import type { Schema as ZeroSchema } from '@rocicorp/zero'
|
|
|
15
15
|
import type { NodePgTransaction } from '@rocicorp/zero/server/adapters/pg'
|
|
16
16
|
|
|
17
17
|
export type {
|
|
18
|
+
BackgroundTaskScheduler,
|
|
19
|
+
HandleMutationRequestOptions,
|
|
18
20
|
ValidateMutationArgs,
|
|
19
21
|
ValidateMutationFn,
|
|
20
22
|
ValidateQueryArgs,
|
|
@@ -34,6 +34,15 @@ type PushRequestBody = {
|
|
|
34
34
|
clientGroupID?: unknown
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
export type BackgroundTaskScheduler = (promise: Promise<void>) => void
|
|
38
|
+
|
|
39
|
+
export type HandleMutationRequestOptions = {
|
|
40
|
+
authData: AuthData | null
|
|
41
|
+
request: Request
|
|
42
|
+
scheduleBackgroundTask?: BackgroundTaskScheduler
|
|
43
|
+
skipAsyncTasks?: boolean
|
|
44
|
+
}
|
|
45
|
+
|
|
37
46
|
export type PersistAlreadyProcessedArgs = {
|
|
38
47
|
clientGroupID: string
|
|
39
48
|
mutations: AlreadyProcessedMutation[]
|
|
@@ -82,12 +91,9 @@ export function createZeroServerCore<
|
|
|
82
91
|
const handleMutationRequest = async ({
|
|
83
92
|
authData,
|
|
84
93
|
request,
|
|
94
|
+
scheduleBackgroundTask,
|
|
85
95
|
skipAsyncTasks,
|
|
86
|
-
}: {
|
|
87
|
-
authData: AuthData | null
|
|
88
|
-
request: Request
|
|
89
|
-
skipAsyncTasks?: boolean
|
|
90
|
-
}) => {
|
|
96
|
+
}: HandleMutationRequestOptions) => {
|
|
91
97
|
const tasks = createAsyncTaskCollector()
|
|
92
98
|
const recoveryRequest = request.clone()
|
|
93
99
|
const mutators = createMutators({
|
|
@@ -115,7 +121,7 @@ export function createZeroServerCore<
|
|
|
115
121
|
...entry,
|
|
116
122
|
task: () => runWithAuthScope(authData, entry.task),
|
|
117
123
|
}))
|
|
118
|
-
await runAsyncTaskEntries(entries, { background:
|
|
124
|
+
await runAsyncTaskEntries(entries, { background: scheduleBackgroundTask })
|
|
119
125
|
}
|
|
120
126
|
|
|
121
127
|
return {
|
|
@@ -2,6 +2,8 @@ import {
|
|
|
2
2
|
createZeroServer,
|
|
3
3
|
runAsyncTaskEntries,
|
|
4
4
|
type AsyncTaskEntry,
|
|
5
|
+
type BackgroundTaskScheduler,
|
|
6
|
+
type HandleMutationRequestOptions,
|
|
5
7
|
} from 'on-zero/server'
|
|
6
8
|
import { createZeroSQLiteServer, type SqlStatementMetadata } from 'on-zero/sqlite'
|
|
7
9
|
|
|
@@ -55,6 +57,16 @@ void runAsyncTaskEntries(taskEntries, {
|
|
|
55
57
|
},
|
|
56
58
|
})
|
|
57
59
|
|
|
60
|
+
const scheduleBackgroundTask: BackgroundTaskScheduler = (promise) => {
|
|
61
|
+
void promise
|
|
62
|
+
}
|
|
63
|
+
const mutationRequest: HandleMutationRequestOptions = {
|
|
64
|
+
authData,
|
|
65
|
+
request: new Request('https://example.com/api/zero/push'),
|
|
66
|
+
scheduleBackgroundTask,
|
|
67
|
+
}
|
|
68
|
+
void postgresServer.handleMutationRequest(mutationRequest)
|
|
69
|
+
|
|
58
70
|
postgresServer.mutate.project.create(
|
|
59
71
|
{ id: 'pg' },
|
|
60
72
|
{ authData: { email: authData.email, id: authData.id, role: authData.role } },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createZeroClient.d.ts","sourceRoot":"","sources":["../src/createZeroClient.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA8B,IAAI,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAO/E,OAAO,EAAoC,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAClF,OAAO,EAQL,KAAK,OAAO,EACZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAEd,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAE3B,MAAM,6BAA6B,CAAA;AAKpC,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAMhE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAClF,OAAO,KAAK,EACV,gBAAgB,EAChB,KAAK,EACL,GAAG,EAEH,WAAW,EACX,MAAM,IAAI,UAAU,EACrB,MAAM,gBAAgB,CAAA;AAEvB,KAAK,cAAc,GAAG;IAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAEvE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;AAMpF,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,iBAAiB,GAAG,kBAAkB,CAAA;AAEtF,MAAM,MAAM,uBAAuB,CACjC,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,IAC1B;IACF,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,cAAc,CAAA;IAC9B,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IAIvC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,kBAAkB,CAAC,MAAM,SAAS,UAAU,IAAI,CAAC,KAAK,EAAE;IAClE,eAAe,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC1C,aAAa,EAAE,gBAAgB,CAAA;IAC/B,OAAO,EAAE,MAAM,GAAG,CAAA;IAClB,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;CAC7B,KAAK,YAAY,CAAC,MAAM,CAAC,CAAA;AA+B1B,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,UAAU,EAAE,MAAM,SAAS,aAAa,EACtF,OAAO,EAAE,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC;;;;kBAqZpC,SAAS;;kBAUT,OAAO;oBAIL,WAAW;yBAGN,MAAM;8BAGF,OAAO,CAAC,IAAI,CAAC;gCAIX,qBAAqB,KAAK,IAAI;uBAGtC,oBAAoB;qCAGP,MAAM,KAAK,OAAO;6BAG1B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;4BAI3B,OAAO;;;
|
|
1
|
+
{"version":3,"file":"createZeroClient.d.ts","sourceRoot":"","sources":["../src/createZeroClient.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import type { ZeroServer, ZeroServerCommonOptions } from './createZeroServerCore
|
|
|
2
2
|
import type { GenericModels } from './types';
|
|
3
3
|
import type { Schema as ZeroSchema } from '@rocicorp/zero';
|
|
4
4
|
import type { NodePgTransaction } from '@rocicorp/zero/server/adapters/pg';
|
|
5
|
-
export type { ValidateMutationArgs, ValidateMutationFn, ValidateQueryArgs, ValidateQueryFn, } from './createZeroServerCore';
|
|
5
|
+
export type { BackgroundTaskScheduler, HandleMutationRequestOptions, ValidateMutationArgs, ValidateMutationFn, ValidateQueryArgs, ValidateQueryFn, } from './createZeroServerCore';
|
|
6
6
|
export declare function createZeroServer<Schema extends ZeroSchema, Models extends GenericModels, ServerActions extends Record<string, unknown>>({ database, pool: externalPool, ...options }: ZeroServerCommonOptions<Schema, Models, ServerActions> & {
|
|
7
7
|
/**
|
|
8
8
|
* Optional pre-built Pool-like object, such as a PGlite wrapper.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createZeroServer.d.ts","sourceRoot":"","sources":["../src/createZeroServer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,UAAU,EACV,uBAAuB,EAExB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAE1E,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,wBAAwB,CAAA;AAE/B,wBAAgB,gBAAgB,CAC9B,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,EAC5B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7C,EACA,QAAQ,EACR,IAAI,EAAE,YAAY,EAClB,GAAG,OAAO,EACX,EAAE,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG;IAC1D;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CA8B5C"}
|
|
1
|
+
{"version":3,"file":"createZeroServer.d.ts","sourceRoot":"","sources":["../src/createZeroServer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,UAAU,EACV,uBAAuB,EAExB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAE1E,YAAY,EACV,uBAAuB,EACvB,4BAA4B,EAC5B,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,wBAAwB,CAAA;AAE/B,wBAAgB,gBAAgB,CAC9B,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,EAC5B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7C,EACA,QAAQ,EACR,IAAI,EAAE,YAAY,EAClB,GAAG,OAAO,EACX,EAAE,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG;IAC1D;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CA8B5C"}
|
|
@@ -11,6 +11,13 @@ type AlreadyProcessedMutation = {
|
|
|
11
11
|
details?: unknown;
|
|
12
12
|
};
|
|
13
13
|
};
|
|
14
|
+
export type BackgroundTaskScheduler = (promise: Promise<void>) => void;
|
|
15
|
+
export type HandleMutationRequestOptions = {
|
|
16
|
+
authData: AuthData | null;
|
|
17
|
+
request: Request;
|
|
18
|
+
scheduleBackgroundTask?: BackgroundTaskScheduler;
|
|
19
|
+
skipAsyncTasks?: boolean;
|
|
20
|
+
};
|
|
14
21
|
export type PersistAlreadyProcessedArgs = {
|
|
15
22
|
clientGroupID: string;
|
|
16
23
|
mutations: AlreadyProcessedMutation[];
|
|
@@ -24,11 +31,7 @@ export declare function createZeroServerCore<Schema extends ZeroSchema, Models e
|
|
|
24
31
|
transaction: <CB extends (tx: import("./types").Transaction) => Promise<any>, Returns extends CB extends (tx: import("./types").Transaction) => Promise<infer X> ? X : never>(query: CB) => Promise<Returns>;
|
|
25
32
|
mutate: import("./createZeroDirectServer").ServerMutate<Models>;
|
|
26
33
|
query: <R>(cb: (q: import("./types").QueryBuilder) => import("@rocicorp/zero").Query<any, Schema, R>, authData?: {} | null | undefined) => Promise<import("@rocicorp/zero").HumanReadable<R>>;
|
|
27
|
-
handleMutationRequest: ({ authData, request, skipAsyncTasks, }: {
|
|
28
|
-
authData: AuthData | null;
|
|
29
|
-
request: Request;
|
|
30
|
-
skipAsyncTasks?: boolean;
|
|
31
|
-
}) => Promise<{
|
|
34
|
+
handleMutationRequest: ({ authData, request, scheduleBackgroundTask, skipAsyncTasks, }: HandleMutationRequestOptions) => Promise<{
|
|
32
35
|
response: {
|
|
33
36
|
userID?: string | null | undefined;
|
|
34
37
|
kind: "MutateResponse";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createZeroServerCore.d.ts","sourceRoot":"","sources":["../src/createZeroServerCore.ts"],"names":[],"mappings":"AAMA,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAA;AAKjC,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE1D,KAAK,wBAAwB,GAAG;IAC9B,EAAE,EAAE;QACF,QAAQ,EAAE,MAAM,CAAA;QAChB,EAAE,EAAE,MAAM,CAAA;KACX,CAAA;IACD,MAAM,EAAE;QACN,KAAK,EAAE,kBAAkB,CAAA;QACzB,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAA;CACF,CAAA;AAMD,MAAM,MAAM,2BAA2B,GAAG;IACxC,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,wBAAwB,EAAE,CAAA;IACrC,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,KAAK,qBAAqB,CACxB,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,EAC5B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC3C,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG;IAC3D,cAAc,EAAE,MAAM,kBAAkB,CAAA;IACxC,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/E,CAAA;AAED,wBAAgB,oBAAoB,CAClC,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,EAC5B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7C,EACA,cAAc,EACd,mBAAmB,EACnB,qBAA6B,EAC7B,qBAAqB,EACrB,MAAM,EACN,SAAS,EAAE,kBAAkB,EAC7B,uBAAuB,EACvB,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,aAAa,GACd,EAAE,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC;;;;
|
|
1
|
+
{"version":3,"file":"createZeroServerCore.d.ts","sourceRoot":"","sources":["../src/createZeroServerCore.ts"],"names":[],"mappings":"AAMA,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAA;AAKjC,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE1D,KAAK,wBAAwB,GAAG;IAC9B,EAAE,EAAE;QACF,QAAQ,EAAE,MAAM,CAAA;QAChB,EAAE,EAAE,MAAM,CAAA;KACX,CAAA;IACD,MAAM,EAAE;QACN,KAAK,EAAE,kBAAkB,CAAA;QACzB,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAA;CACF,CAAA;AAMD,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA;AAEtE,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,sBAAsB,CAAC,EAAE,uBAAuB,CAAA;IAChD,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,wBAAwB,EAAE,CAAA;IACrC,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,KAAK,qBAAqB,CACxB,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,EAC5B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC3C,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG;IAC3D,cAAc,EAAE,MAAM,kBAAkB,CAAA;IACxC,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/E,CAAA;AAED,wBAAgB,oBAAoB,CAClC,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,EAC5B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7C,EACA,cAAc,EACd,mBAAmB,EACnB,qBAA6B,EAC7B,qBAAqB,EACrB,MAAM,EACN,SAAS,EAAE,kBAAkB,EAC7B,uBAAuB,EACvB,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,aAAa,GACd,EAAE,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC;;;;4FAmBlD,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAwC5B;QACD,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;QACzB,OAAO,EAAE,OAAO,CAAA;KACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCF;AAED,MAAM,MAAM,UAAU,CACpB,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,EAC5B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC3C,UAAU,CAAC,OAAO,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;AAuE1E,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,0BAA0B,CAAA"}
|