@instantdb/admin 0.22.75 → 0.22.76
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/commonjs/__types__/typeUtils.d.ts +20 -0
- package/dist/commonjs/__types__/typeUtils.d.ts.map +1 -0
- package/dist/commonjs/__types__/typeUtils.js +5 -0
- package/dist/commonjs/__types__/typeUtils.js.map +1 -0
- package/dist/commonjs/__types__/typesTests.d.ts +2 -0
- package/dist/commonjs/__types__/typesTests.d.ts.map +1 -0
- package/dist/commonjs/__types__/typesTests.js +107 -0
- package/dist/commonjs/__types__/typesTests.js.map +1 -0
- package/dist/commonjs/index.d.ts +10 -8
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +15 -7
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/subscribe.d.ts +9 -9
- package/dist/commonjs/subscribe.d.ts.map +1 -1
- package/dist/commonjs/subscribe.js +2 -0
- package/dist/commonjs/subscribe.js.map +1 -1
- package/dist/esm/__types__/typeUtils.d.ts +20 -0
- package/dist/esm/__types__/typeUtils.d.ts.map +1 -0
- package/dist/esm/__types__/typeUtils.js +4 -0
- package/dist/esm/__types__/typeUtils.js.map +1 -0
- package/dist/esm/__types__/typesTests.d.ts +2 -0
- package/dist/esm/__types__/typesTests.d.ts.map +1 -0
- package/dist/esm/__types__/typesTests.js +105 -0
- package/dist/esm/__types__/typesTests.js.map +1 -0
- package/dist/esm/index.d.ts +10 -8
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +15 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/subscribe.d.ts +9 -9
- package/dist/esm/subscribe.d.ts.map +1 -1
- package/dist/esm/subscribe.js +2 -0
- package/dist/esm/subscribe.js.map +1 -1
- package/package.json +5 -3
- package/src/__types__/typeUtils.ts +39 -0
- package/src/__types__/typesTests.ts +139 -0
- package/src/index.ts +40 -20
- package/src/subscribe.ts +33 -26
- package/tsconfig.json +3 -2
- package/tsconfig.test.json +5 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { InstantAPIError,
|
|
1
|
+
import { InstantAPIError, InstantSchemaDef, InstaQLResponse, ValidQuery, PageInfoResponse } from '@instantdb/core';
|
|
2
2
|
export type SubscriptionReadyState = 'closed' | 'connecting' | 'open';
|
|
3
3
|
export type SubscribeQuerySessionInfo = {
|
|
4
4
|
machineId: string;
|
|
5
5
|
sessionId: string;
|
|
6
6
|
};
|
|
7
|
-
export type SubscribeQueryPayload<Schema extends InstantSchemaDef<any, any, any>, Q extends ValidQuery<Q, Schema>,
|
|
7
|
+
export type SubscribeQueryPayload<Schema extends InstantSchemaDef<any, any, any>, Q extends ValidQuery<Q, Schema>, UseDates extends boolean = false> = {
|
|
8
8
|
type: 'ok';
|
|
9
|
-
data: InstaQLResponse<Schema, Q,
|
|
10
|
-
pageInfo: PageInfoResponse<Q
|
|
9
|
+
data: InstaQLResponse<Schema, Q, UseDates>;
|
|
10
|
+
pageInfo: PageInfoResponse<Q> | undefined;
|
|
11
11
|
sessionInfo: SubscribeQuerySessionInfo | null;
|
|
12
12
|
} | {
|
|
13
13
|
type: 'error';
|
|
@@ -16,14 +16,14 @@ export type SubscribeQueryPayload<Schema extends InstantSchemaDef<any, any, any>
|
|
|
16
16
|
isClosed: boolean;
|
|
17
17
|
sessionInfo: SubscribeQuerySessionInfo | null;
|
|
18
18
|
};
|
|
19
|
-
export type SubscribeQueryCallback<Schema extends InstantSchemaDef<any, any, any>, Q extends ValidQuery<Q, Schema>,
|
|
20
|
-
export interface SubscribeQueryResponse<Schema extends InstantSchemaDef<any, any, any>, Q extends ValidQuery<Q, Schema>,
|
|
19
|
+
export type SubscribeQueryCallback<Schema extends InstantSchemaDef<any, any, any>, Q extends ValidQuery<Q, Schema>, UseDates extends boolean = false> = (payload: SubscribeQueryPayload<Schema, Q, UseDates>) => void;
|
|
20
|
+
export interface SubscribeQueryResponse<Schema extends InstantSchemaDef<any, any, any>, Q extends ValidQuery<Q, Schema>, UseDates extends boolean = false> {
|
|
21
21
|
/** Stop the subscription and close the connection. */
|
|
22
22
|
close(): void;
|
|
23
23
|
/** Warns when attempting to iterate synchronously */
|
|
24
24
|
[Symbol.iterator](): never;
|
|
25
25
|
/** Async iterator of query payloads */
|
|
26
|
-
[Symbol.asyncIterator](): AsyncIterableIterator<SubscribeQueryPayload<Schema, Q,
|
|
26
|
+
[Symbol.asyncIterator](): AsyncIterableIterator<SubscribeQueryPayload<Schema, Q, UseDates>>;
|
|
27
27
|
/** Ready state of the connection */
|
|
28
28
|
readonly readyState: SubscriptionReadyState;
|
|
29
29
|
/** `true` if the connection is closed and no more payloads will be delivered */
|
|
@@ -31,9 +31,9 @@ export interface SubscribeQueryResponse<Schema extends InstantSchemaDef<any, any
|
|
|
31
31
|
/** Debug info about the session. Will return null while the session is initializing. */
|
|
32
32
|
readonly sessionInfo: SubscribeQuerySessionInfo | null;
|
|
33
33
|
}
|
|
34
|
-
export declare function subscribe<Schema extends InstantSchemaDef<any, any, any>, Q extends ValidQuery<Q, Schema>,
|
|
34
|
+
export declare function subscribe<Schema extends InstantSchemaDef<any, any, any>, Q extends ValidQuery<Q, Schema>, UseDates extends boolean>(query: Q, cb: SubscribeQueryCallback<Schema, Q, UseDates> | undefined, opts: {
|
|
35
35
|
headers: HeadersInit;
|
|
36
36
|
inference: boolean;
|
|
37
37
|
apiURI: string;
|
|
38
|
-
}): SubscribeQueryResponse<Schema, Q,
|
|
38
|
+
}): SubscribeQueryResponse<Schema, Q, UseDates>;
|
|
39
39
|
//# sourceMappingURL=subscribe.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../src/subscribe.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,eAAe,
|
|
1
|
+
{"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../src/subscribe.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,eAAe,EAEf,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC;AAEtE,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAC/B,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9C,CAAC,SAAS,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAC/B,QAAQ,SAAS,OAAO,GAAG,KAAK,IAE9B;IACE,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3C,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1C,WAAW,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAC/C,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,eAAe,CAAC;IACvB,UAAU,EAAE,sBAAsB,CAAC;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAC/C,CAAC;AAEN,MAAM,MAAM,sBAAsB,CAChC,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9C,CAAC,SAAS,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAC/B,QAAQ,SAAS,OAAO,GAAG,KAAK,IAC9B,CAAC,OAAO,EAAE,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC;AAElE,MAAM,WAAW,sBAAsB,CACrC,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9C,CAAC,SAAS,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAC/B,QAAQ,SAAS,OAAO,GAAG,KAAK;IAEhC,sDAAsD;IACtD,KAAK,IAAI,IAAI,CAAC;IAEd,qDAAqD;IACrD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;IAE3B,uCAAuC;IACvC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAC7C,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAC3C,CAAC;IAEF,oCAAoC;IACpC,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAE5C,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,wFAAwF;IACxF,QAAQ,CAAC,WAAW,EAAE,yBAAyB,GAAG,IAAI,CAAC;CACxD;AAuJD,wBAAgB,SAAS,CACvB,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9C,CAAC,SAAS,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAC/B,QAAQ,SAAS,OAAO,EAExB,KAAK,EAAE,CAAC,EACR,EAAE,EAAE,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,SAAS,EAC3D,IAAI,EAAE;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjE,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAmN7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../src/subscribe.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventSource } from 'eventsource';\nimport version from './version.ts';\nimport {\n id,\n version as coreVersion,\n InstantAPIError,\n InstantConfig,\n InstantSchemaDef,\n InstaQLResponse,\n ValidQuery,\n PageInfoResponse,\n} from '@instantdb/core';\n\nexport type SubscriptionReadyState = 'closed' | 'connecting' | 'open';\n\nexport type SubscribeQuerySessionInfo = {\n machineId: string;\n sessionId: string;\n};\n\nexport type SubscribeQueryPayload<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n Config extends InstantConfig<Schema, boolean> = InstantConfig<Schema, false>,\n> =\n | {\n type: 'ok';\n data: InstaQLResponse<Schema, Q, Config['useDateObjects']>;\n pageInfo: PageInfoResponse<Q>;\n sessionInfo: SubscribeQuerySessionInfo | null;\n }\n | {\n type: 'error';\n error: InstantAPIError;\n readyState: SubscriptionReadyState;\n isClosed: boolean;\n sessionInfo: SubscribeQuerySessionInfo | null;\n };\n\nexport type SubscribeQueryCallback<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n Config extends InstantConfig<Schema, boolean> = InstantConfig<Schema, false>,\n> = (payload: SubscribeQueryPayload<Schema, Q, Config>) => void;\n\nexport interface SubscribeQueryResponse<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n Config extends InstantConfig<Schema, boolean> = InstantConfig<Schema, false>,\n> {\n /** Stop the subscription and close the connection. */\n close(): void;\n\n /** Warns when attempting to iterate synchronously */\n [Symbol.iterator](): never;\n\n /** Async iterator of query payloads */\n [Symbol.asyncIterator](): AsyncIterableIterator<\n SubscribeQueryPayload<Schema, Q, Config>\n >;\n\n /** Ready state of the connection */\n readonly readyState: SubscriptionReadyState;\n\n /** `true` if the connection is closed and no more payloads will be delivered */\n readonly isClosed: boolean;\n\n /** Debug info about the session. Will return null while the session is initializing. */\n readonly sessionInfo: SubscribeQuerySessionInfo | null;\n}\n\nfunction makeAsyncIterator<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n Config extends InstantConfig<Schema, boolean> = InstantConfig<Schema, false>,\n>(\n subscribe: (cb: SubscribeQueryCallback<Schema, Q, Config>) => void,\n subscribeOnClose: (cb: () => void) => void,\n unsubscribe: (cb: SubscribeQueryCallback<Schema, Q, Config>) => void,\n readyState: () => SubscriptionReadyState,\n): AsyncGenerator<SubscribeQueryPayload<Schema, Q, Config>> {\n let wakeup = null;\n let closed = false;\n\n const backlog: SubscribeQueryPayload<Schema, Q, Config>[] = [];\n const handler: SubscribeQueryCallback<Schema, Q, Config> = (\n data: SubscribeQueryPayload<Schema, Q, Config>,\n ): void => {\n backlog.push(data);\n if (backlog.length > 100) {\n // Remove the oldest item to prevent the backlog\n // from growing forever. This is okay for live queries,\n // but we need some other machanism if we use this for\n // event-based subscriptions.\n backlog.shift();\n }\n if (wakeup) {\n wakeup();\n wakeup = null;\n }\n };\n\n subscribe(handler);\n\n const done = () => {\n unsubscribe(handler);\n return Promise.resolve({ done: true, value: undefined });\n };\n\n const onClose = () => {\n closed = true;\n if (wakeup) {\n wakeup();\n }\n done();\n };\n\n subscribeOnClose(onClose);\n\n const next = async () => {\n while (true) {\n if (readyState() === 'closed' || closed) {\n return done();\n }\n\n const nextValue = backlog.shift();\n if (nextValue) {\n return { value: nextValue, done: false };\n }\n\n const p = new Promise((resolve) => {\n wakeup = resolve;\n });\n\n await p;\n }\n };\n\n return {\n next,\n return: done,\n throw(error) {\n unsubscribe(handler);\n return Promise.reject(error);\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n\nfunction esReadyState(es: EventSource): SubscriptionReadyState {\n switch (es.readyState) {\n case es.CLOSED: {\n return 'closed';\n }\n case es.CONNECTING: {\n return 'connecting';\n }\n case es.OPEN: {\n return 'open';\n }\n }\n}\n\nfunction multiReadFetchResponse(r) {\n let p = null;\n return {\n ...r,\n text() {\n if (!p) {\n p = r.text();\n }\n return p;\n },\n json() {\n if (!p) {\n p = r.text();\n }\n return p.then((x) => JSON.parse(x));\n },\n };\n}\n\ntype APIPageInfo = {\n [etype: string]: {\n 'start-cursor': [string, string, any, number];\n 'end-cursor': [string, string, any, number];\n 'has-next-page?': boolean;\n 'has-previous-page?': boolean;\n };\n};\n\nfunction formatPageInfo(\n pageInfo: APIPageInfo | null | undefined,\n): PageInfoResponse<any> | undefined {\n if (!pageInfo) {\n return undefined;\n }\n const res: PageInfoResponse<any> = {};\n\n for (const [k, v] of Object.entries(pageInfo)) {\n res[k] = {\n startCursor: v['start-cursor'],\n endCursor: v['end-cursor'],\n hasNextPage: v['has-next-page?'],\n hasPreviousPage: v['has-previous-page?'],\n };\n }\n\n return res;\n}\n\nexport function subscribe<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n Config extends InstantConfig<Schema, boolean> = InstantConfig<Schema, false>,\n>(\n query: Q,\n cb,\n opts: { headers: HeadersInit; inference: boolean; apiURI: string },\n): SubscribeQueryResponse<Schema, Q, Config> {\n let fetchErrorResponse;\n let closed = false;\n\n // Stable id that will stay the same across reconnects,\n // used for debugging\n const localConnectionId = id();\n\n const es = new EventSource(\n `${opts.apiURI}/admin/subscribe-query?local_connection_id=${localConnectionId}`,\n {\n fetch(input, init) {\n fetchErrorResponse = null;\n return fetch(input, {\n ...init,\n method: 'POST',\n headers: opts.headers,\n body: JSON.stringify({\n query: query,\n 'inference?': opts.inference,\n versions: {\n '@instantdb/admin': version,\n '@instantdb/core': coreVersion,\n },\n }),\n }).then((r) => {\n if (!r.ok) {\n fetchErrorResponse = multiReadFetchResponse(r);\n }\n return r;\n });\n },\n },\n );\n\n const subscribers: SubscribeQueryCallback<Schema, Q, Config>[] = [];\n const onCloseSubscribers = [];\n\n const subscribe = (cb) => {\n subscribers.push(cb);\n };\n\n const unsubscribe = (cb) => {\n subscribers.splice(subscribers.indexOf(cb), 1);\n };\n\n const subscribeOnClose = (cb) => {\n onCloseSubscribers.push(cb);\n };\n\n if (cb) {\n subscribe(cb);\n }\n\n let sessionParams: SubscribeQuerySessionInfo | null = null;\n\n function deliver(result: SubscribeQueryPayload<Schema, Q, Config>) {\n if (closed) {\n return;\n }\n for (const sub of subscribers) {\n try {\n sub(result);\n } catch (e) {\n console.error('Error in subscribeQuery callback', e);\n }\n }\n }\n\n function handleMessage(msg) {\n switch (msg.op) {\n case 'sse-init': {\n const machineId = msg['machine-id'];\n const sessionId = msg['session-id'];\n sessionParams = { machineId, sessionId };\n break;\n }\n case 'add-query-ok': {\n deliver({\n type: 'ok',\n data: msg.result,\n pageInfo: formatPageInfo(msg['result-meta']?.['page-info']),\n sessionInfo: sessionParams,\n });\n break;\n }\n case 'refresh-ok': {\n if (msg.computations.length) {\n deliver({\n type: 'ok',\n data: msg.computations[0]['instaql-result'],\n pageInfo: formatPageInfo(\n msg.computations[0]['result-meta']?.['page-info'],\n ),\n sessionInfo: sessionParams,\n });\n }\n break;\n }\n case 'error': {\n deliver({\n type: 'error',\n error: new InstantAPIError({ body: msg, status: msg.status }),\n get readyState() {\n return esReadyState(es);\n },\n get isClosed() {\n return esReadyState(es) === 'closed';\n },\n sessionInfo: sessionParams,\n });\n break;\n }\n }\n }\n\n es.onerror = (e) => {\n if (fetchErrorResponse) {\n fetchErrorResponse.text().then((t) => {\n let body = { type: undefined, message: t };\n try {\n body = JSON.parse(t);\n } catch (_e) {}\n deliver({\n type: 'error',\n error: new InstantAPIError({\n status: fetchErrorResponse.status,\n body,\n }),\n get readyState() {\n return esReadyState(es);\n },\n get isClosed() {\n return esReadyState(es) === 'closed';\n },\n sessionInfo: sessionParams,\n });\n });\n } else {\n const deliverError = () => {\n deliver({\n type: 'error',\n error: new InstantAPIError({\n status: e.code || 500,\n body: {\n type: undefined,\n message: e.message || 'Unknown error in subscribe query.',\n },\n }),\n get readyState() {\n return esReadyState(es);\n },\n get isClosed() {\n return esReadyState(es) === 'closed';\n },\n sessionInfo: sessionParams,\n });\n };\n if (es.readyState === EventSource.CLOSED) {\n deliverError();\n return;\n }\n\n setTimeout(() => {\n if (es.readyState !== EventSource.OPEN) {\n deliverError();\n }\n }, 5000);\n }\n };\n\n es.onmessage = (e) => {\n handleMessage(JSON.parse(e.data));\n };\n\n const close = () => {\n closed = true;\n for (const sub of onCloseSubscribers) {\n try {\n sub();\n } catch (e) {\n console.error('Error in onClose callback', e);\n }\n }\n es.close();\n };\n\n return {\n close: close,\n [Symbol.iterator]: () => {\n throw new Error(\n 'subscribeQuery does not support synchronous iteration. Use `for await` instead.',\n );\n },\n get sessionInfo() {\n return sessionParams;\n },\n get readyState() {\n return esReadyState(es);\n },\n get isClosed() {\n return esReadyState(es) === 'closed';\n },\n [Symbol.asyncIterator]: makeAsyncIterator.bind(\n this,\n subscribe,\n subscribeOnClose,\n unsubscribe,\n () => 1,\n ),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../src/subscribe.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventSource } from 'eventsource';\nimport version from './version.ts';\nimport {\n id,\n version as coreVersion,\n InstantAPIError,\n InstantConfig,\n InstantSchemaDef,\n InstaQLResponse,\n ValidQuery,\n PageInfoResponse,\n} from '@instantdb/core';\n\nexport type SubscriptionReadyState = 'closed' | 'connecting' | 'open';\n\nexport type SubscribeQuerySessionInfo = {\n machineId: string;\n sessionId: string;\n};\n\nexport type SubscribeQueryPayload<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean = false,\n> =\n | {\n type: 'ok';\n data: InstaQLResponse<Schema, Q, UseDates>;\n pageInfo: PageInfoResponse<Q> | undefined;\n sessionInfo: SubscribeQuerySessionInfo | null;\n }\n | {\n type: 'error';\n error: InstantAPIError;\n readyState: SubscriptionReadyState;\n isClosed: boolean;\n sessionInfo: SubscribeQuerySessionInfo | null;\n };\n\nexport type SubscribeQueryCallback<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean = false,\n> = (payload: SubscribeQueryPayload<Schema, Q, UseDates>) => void;\n\nexport interface SubscribeQueryResponse<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean = false,\n> {\n /** Stop the subscription and close the connection. */\n close(): void;\n\n /** Warns when attempting to iterate synchronously */\n [Symbol.iterator](): never;\n\n /** Async iterator of query payloads */\n [Symbol.asyncIterator](): AsyncIterableIterator<\n SubscribeQueryPayload<Schema, Q, UseDates>\n >;\n\n /** Ready state of the connection */\n readonly readyState: SubscriptionReadyState;\n\n /** `true` if the connection is closed and no more payloads will be delivered */\n readonly isClosed: boolean;\n\n /** Debug info about the session. Will return null while the session is initializing. */\n readonly sessionInfo: SubscribeQuerySessionInfo | null;\n}\n\nfunction makeAsyncIterator<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean = false,\n>(\n subscribe: (cb: SubscribeQueryCallback<Schema, Q, UseDates>) => void,\n subscribeOnClose: (cb: () => void) => void,\n unsubscribe: (cb: SubscribeQueryCallback<Schema, Q, UseDates>) => void,\n readyState: () => SubscriptionReadyState,\n): AsyncGenerator<SubscribeQueryPayload<Schema, Q, UseDates>> {\n let wakeup: (() => void) | null = null;\n let closed = false;\n\n const backlog: SubscribeQueryPayload<Schema, Q, UseDates>[] = [];\n const handler: SubscribeQueryCallback<Schema, Q, UseDates> = (\n data: SubscribeQueryPayload<Schema, Q, UseDates>,\n ): void => {\n backlog.push(data);\n if (backlog.length > 100) {\n // Remove the oldest item to prevent the backlog\n // from growing forever. This is okay for live queries,\n // but we need some other machanism if we use this for\n // event-based subscriptions.\n backlog.shift();\n }\n if (wakeup) {\n wakeup();\n wakeup = null;\n }\n };\n\n subscribe(handler);\n\n const done = (): Promise<{\n done: true;\n value: undefined;\n }> => {\n unsubscribe(handler);\n return Promise.resolve({ done: true, value: undefined });\n };\n\n const onClose = () => {\n closed = true;\n if (wakeup) {\n wakeup();\n }\n done();\n };\n\n subscribeOnClose(onClose);\n\n const next = async (): Promise<\n IteratorResult<SubscribeQueryPayload<Schema, Q, UseDates>, undefined>\n > => {\n while (true) {\n if (readyState() === 'closed' || closed) {\n return done();\n }\n\n const nextValue = backlog.shift();\n if (nextValue) {\n return { value: nextValue, done: false };\n }\n\n const p = new Promise<void>((resolve) => {\n wakeup = resolve;\n });\n\n await p;\n }\n };\n\n return {\n next,\n return: done,\n throw(error) {\n unsubscribe(handler);\n return Promise.reject(error);\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n\nfunction esReadyState(es: EventSource): SubscriptionReadyState {\n switch (es.readyState) {\n case es.CLOSED: {\n return 'closed';\n }\n case es.CONNECTING: {\n return 'connecting';\n }\n case es.OPEN: {\n return 'open';\n }\n default:\n return 'connecting';\n }\n}\n\nfunction multiReadFetchResponse(r: Response) {\n let p: null | Promise<string> = null;\n return {\n ...r,\n text() {\n if (!p) {\n p = r.text();\n }\n return p;\n },\n json() {\n if (!p) {\n p = r.text();\n }\n return p.then((x) => JSON.parse(x));\n },\n };\n}\n\ntype APIPageInfo = {\n [etype: string]: {\n 'start-cursor': [string, string, any, number];\n 'end-cursor': [string, string, any, number];\n 'has-next-page?': boolean;\n 'has-previous-page?': boolean;\n };\n};\n\nfunction formatPageInfo(\n pageInfo: APIPageInfo | null | undefined,\n): PageInfoResponse<any> | undefined {\n if (!pageInfo) {\n return undefined;\n }\n const res: PageInfoResponse<any> = {};\n\n for (const [k, v] of Object.entries(pageInfo)) {\n res[k] = {\n startCursor: v['start-cursor'],\n endCursor: v['end-cursor'],\n hasNextPage: v['has-next-page?'],\n hasPreviousPage: v['has-previous-page?'],\n };\n }\n\n return res;\n}\n\nexport function subscribe<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n>(\n query: Q,\n cb: SubscribeQueryCallback<Schema, Q, UseDates> | undefined,\n opts: { headers: HeadersInit; inference: boolean; apiURI: string },\n): SubscribeQueryResponse<Schema, Q, UseDates> {\n let fetchErrorResponse;\n let closed = false;\n\n // Stable id that will stay the same across reconnects,\n // used for debugging\n const localConnectionId = id();\n\n const es = new EventSource(\n `${opts.apiURI}/admin/subscribe-query?local_connection_id=${localConnectionId}`,\n {\n fetch(input, init) {\n fetchErrorResponse = null;\n return fetch(input, {\n ...init,\n method: 'POST',\n headers: opts.headers,\n body: JSON.stringify({\n query: query,\n 'inference?': opts.inference,\n versions: {\n '@instantdb/admin': version,\n '@instantdb/core': coreVersion,\n },\n }),\n }).then((r) => {\n if (!r.ok) {\n fetchErrorResponse = multiReadFetchResponse(r);\n }\n return r;\n });\n },\n },\n );\n\n const subscribers: SubscribeQueryCallback<Schema, Q, UseDates>[] = [];\n const onCloseSubscribers: (() => void)[] = [];\n\n const subscribe = (cb) => {\n subscribers.push(cb);\n };\n\n const unsubscribe = (cb) => {\n subscribers.splice(subscribers.indexOf(cb), 1);\n };\n\n const subscribeOnClose = (cb) => {\n onCloseSubscribers.push(cb);\n };\n\n if (cb) {\n subscribe(cb);\n }\n\n let sessionParams: SubscribeQuerySessionInfo | null = null;\n\n function deliver(result: SubscribeQueryPayload<Schema, Q, UseDates>) {\n if (closed) {\n return;\n }\n for (const sub of subscribers) {\n try {\n sub(result);\n } catch (e) {\n console.error('Error in subscribeQuery callback', e);\n }\n }\n }\n\n function handleMessage(msg) {\n switch (msg.op) {\n case 'sse-init': {\n const machineId = msg['machine-id'];\n const sessionId = msg['session-id'];\n sessionParams = { machineId, sessionId };\n break;\n }\n case 'add-query-ok': {\n deliver({\n type: 'ok',\n data: msg.result,\n pageInfo: formatPageInfo(msg['result-meta']?.['page-info']),\n sessionInfo: sessionParams,\n });\n break;\n }\n case 'refresh-ok': {\n if (msg.computations.length) {\n deliver({\n type: 'ok',\n data: msg.computations[0]['instaql-result'],\n pageInfo: formatPageInfo(\n msg.computations[0]['result-meta']?.['page-info'],\n ),\n sessionInfo: sessionParams,\n });\n }\n break;\n }\n case 'error': {\n deliver({\n type: 'error',\n error: new InstantAPIError({ body: msg, status: msg.status }),\n get readyState() {\n return esReadyState(es);\n },\n get isClosed() {\n return esReadyState(es) === 'closed';\n },\n sessionInfo: sessionParams,\n });\n break;\n }\n }\n }\n\n es.onerror = (e) => {\n if (fetchErrorResponse) {\n fetchErrorResponse.text().then((t) => {\n let body = { type: undefined, message: t };\n try {\n body = JSON.parse(t);\n } catch (_e) {}\n deliver({\n type: 'error',\n error: new InstantAPIError({\n status: fetchErrorResponse.status,\n body,\n }),\n get readyState() {\n return esReadyState(es);\n },\n get isClosed() {\n return esReadyState(es) === 'closed';\n },\n sessionInfo: sessionParams,\n });\n });\n } else {\n const deliverError = () => {\n deliver({\n type: 'error',\n error: new InstantAPIError({\n status: e.code || 500,\n body: {\n type: undefined,\n message: e.message || 'Unknown error in subscribe query.',\n },\n }),\n get readyState() {\n return esReadyState(es);\n },\n get isClosed() {\n return esReadyState(es) === 'closed';\n },\n sessionInfo: sessionParams,\n });\n };\n if (es.readyState === EventSource.CLOSED) {\n deliverError();\n return;\n }\n\n setTimeout(() => {\n if (es.readyState !== EventSource.OPEN) {\n deliverError();\n }\n }, 5000);\n }\n };\n\n es.onmessage = (e) => {\n handleMessage(JSON.parse(e.data));\n };\n\n const close = () => {\n closed = true;\n for (const sub of onCloseSubscribers) {\n try {\n sub();\n } catch (e) {\n console.error('Error in onClose callback', e);\n }\n }\n es.close();\n };\n\n return {\n close: close,\n [Symbol.iterator]: () => {\n throw new Error(\n 'subscribeQuery does not support synchronous iteration. Use `for await` instead.',\n );\n },\n get sessionInfo() {\n return sessionParams;\n },\n get readyState() {\n return esReadyState(es);\n },\n get isClosed() {\n return esReadyState(es) === 'closed';\n },\n [Symbol.asyncIterator]: makeAsyncIterator.bind(\n this,\n subscribe,\n subscribeOnClose,\n unsubscribe,\n () => 1,\n ),\n };\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type Expect<T extends true> = T;
|
|
2
|
+
export type ExpectTrue<T extends true> = T;
|
|
3
|
+
export type ExpectFalse<T extends false> = T;
|
|
4
|
+
export type IsTrue<T extends true> = T;
|
|
5
|
+
export type IsFalse<T extends false> = T;
|
|
6
|
+
export type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
|
|
7
|
+
export type NotEqual<X, Y> = true extends Equal<X, Y> ? false : true;
|
|
8
|
+
export type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
9
|
+
export type NotAny<T> = true extends IsAny<T> ? false : true;
|
|
10
|
+
export type Debug<T> = {
|
|
11
|
+
[K in keyof T]: T[K];
|
|
12
|
+
};
|
|
13
|
+
export type MergeInsertions<T> = T extends object ? {
|
|
14
|
+
[K in keyof T]: MergeInsertions<T[K]>;
|
|
15
|
+
} : T;
|
|
16
|
+
export type Alike<X, Y> = Equal<MergeInsertions<X>, MergeInsertions<Y>>;
|
|
17
|
+
export type ExpectExtends<VALUE, EXPECTED> = EXPECTED extends VALUE ? true : false;
|
|
18
|
+
export type ExpectValidArgs<FUNC extends (...args: any[]) => any, ARGS extends any[]> = ARGS extends Parameters<FUNC> ? true : false;
|
|
19
|
+
export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
20
|
+
//# sourceMappingURL=typeUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeUtils.d.ts","sourceRoot":"","sources":["../../../src/__types__/typeUtils.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;AACvC,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;AAC3C,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;AAC7C,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;AACvC,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;AAEzC,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,IACpB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAC/D,IAAI,GACJ,KAAK,CAAC;AACZ,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AAGrE,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AACtD,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AAE7D,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAChD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC7C;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACzC,CAAC,CAAC;AAEN,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAExE,MAAM,MAAM,aAAa,CAAC,KAAK,EAAE,QAAQ,IAAI,QAAQ,SAAS,KAAK,GAC/D,IAAI,GACJ,KAAK,CAAC;AACV,MAAM,MAAM,eAAe,CACzB,IAAI,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACpC,IAAI,SAAS,GAAG,EAAE,IAChB,IAAI,SAAS,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAEjD,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CACnC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CACvC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GAC1B,CAAC,GACD,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeUtils.js","sourceRoot":"","sources":["../../../src/__types__/typeUtils.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,gFAAgF","sourcesContent":["// Type testing utils from\n// https://github.com/type-challenges/type-challenges/blob/main/utils/index.d.ts\n\nexport type Expect<T extends true> = T;\nexport type ExpectTrue<T extends true> = T;\nexport type ExpectFalse<T extends false> = T;\nexport type IsTrue<T extends true> = T;\nexport type IsFalse<T extends false> = T;\n\nexport type Equal<X, Y> =\n (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2\n ? true\n : false;\nexport type NotEqual<X, Y> = true extends Equal<X, Y> ? false : true;\n\n// https://stackoverflow.com/questions/49927523/disallow-call-with-any/49928360#49928360\nexport type IsAny<T> = 0 extends 1 & T ? true : false;\nexport type NotAny<T> = true extends IsAny<T> ? false : true;\n\nexport type Debug<T> = { [K in keyof T]: T[K] };\nexport type MergeInsertions<T> = T extends object\n ? { [K in keyof T]: MergeInsertions<T[K]> }\n : T;\n\nexport type Alike<X, Y> = Equal<MergeInsertions<X>, MergeInsertions<Y>>;\n\nexport type ExpectExtends<VALUE, EXPECTED> = EXPECTED extends VALUE\n ? true\n : false;\nexport type ExpectValidArgs<\n FUNC extends (...args: any[]) => any,\n ARGS extends any[],\n> = ARGS extends Parameters<FUNC> ? true : false;\n\nexport type UnionToIntersection<U> = (\n U extends any ? (k: U) => void : never\n) extends (k: infer I) => void\n ? I\n : never;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typesTests.d.ts","sourceRoot":"","sources":["../../../src/__types__/typesTests.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { i, init } from "../index.js";
|
|
11
|
+
const schema = i.schema({
|
|
12
|
+
entities: {
|
|
13
|
+
tbl: i.entity({
|
|
14
|
+
d: i.date().indexed(),
|
|
15
|
+
dOptional: i.date().optional(),
|
|
16
|
+
}),
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
function _testUseDatesTest() {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
const db = init({
|
|
22
|
+
schema,
|
|
23
|
+
appId: '123',
|
|
24
|
+
useDateObjects: true,
|
|
25
|
+
});
|
|
26
|
+
const data = yield db.query({ tbl: {} });
|
|
27
|
+
const item = data === null || data === void 0 ? void 0 : data.tbl[0];
|
|
28
|
+
if (item) {
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function _testUseDatesFalseTest() {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
const db = init({
|
|
35
|
+
schema,
|
|
36
|
+
appId: '123',
|
|
37
|
+
useDateObjects: false,
|
|
38
|
+
});
|
|
39
|
+
const data = yield db.query({ tbl: {} });
|
|
40
|
+
const item = data === null || data === void 0 ? void 0 : data.tbl[0];
|
|
41
|
+
if (item) {
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function _testUseDatesUndefinedTest() {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
const db = init({
|
|
48
|
+
schema,
|
|
49
|
+
appId: '123',
|
|
50
|
+
});
|
|
51
|
+
const data = yield db.query({ tbl: {} });
|
|
52
|
+
const item = data === null || data === void 0 ? void 0 : data.tbl[0];
|
|
53
|
+
if (item) {
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function _testDataNoSchema() {
|
|
58
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
const db = init({
|
|
60
|
+
appId: '123',
|
|
61
|
+
});
|
|
62
|
+
const data = yield db.query({ tbl: {} });
|
|
63
|
+
const item = data === null || data === void 0 ? void 0 : data.tbl[0];
|
|
64
|
+
if (item) {
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function _testSubscribe() {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
// No useDateObjects
|
|
71
|
+
init({
|
|
72
|
+
appId: '123',
|
|
73
|
+
schema,
|
|
74
|
+
}).subscribeQuery({ tbl: {} }, (payload) => {
|
|
75
|
+
if (payload.type === 'ok') {
|
|
76
|
+
const item = payload.data.tbl[0];
|
|
77
|
+
if (item) {
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// UseDateObjects
|
|
82
|
+
init({
|
|
83
|
+
appId: '123',
|
|
84
|
+
schema,
|
|
85
|
+
useDateObjects: true,
|
|
86
|
+
}).subscribeQuery({ tbl: {} }, (payload) => {
|
|
87
|
+
if (payload.type === 'ok') {
|
|
88
|
+
const item = payload.data.tbl[0];
|
|
89
|
+
if (item) {
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
// No schema
|
|
94
|
+
init({
|
|
95
|
+
appId: '123',
|
|
96
|
+
}).subscribeQuery({ tbl: {} }, (payload) => {
|
|
97
|
+
if (payload.type === 'ok') {
|
|
98
|
+
const item = payload.data.tbl[0];
|
|
99
|
+
if (item) {
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=typesTests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typesTests.js","sourceRoot":"","sources":["../../../src/__types__/typesTests.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Equal, Expect, IsAny, NotAny } from './typeUtils.ts';\nimport { i, init } from '../index.ts';\n\nconst schema = i.schema({\n entities: {\n tbl: i.entity({\n d: i.date().indexed(),\n dOptional: i.date().optional(),\n }),\n },\n});\n\nasync function _testUseDatesTest() {\n const db = init({\n schema,\n appId: '123',\n useDateObjects: true,\n });\n\n const data = await db.query({ tbl: {} });\n const item = data?.tbl[0];\n if (item) {\n type t = typeof item.d;\n type _cases = [Expect<NotAny<t>>, Expect<Equal<t, Date>>];\n\n type tOpt = typeof item.dOptional;\n type _cases_2 = [\n Expect<NotAny<tOpt>>,\n Expect<Equal<tOpt, Date | undefined>>,\n ];\n }\n}\n\nasync function _testUseDatesFalseTest() {\n const db = init({\n schema,\n appId: '123',\n useDateObjects: false,\n });\n\n const data = await db.query({ tbl: {} });\n const item = data?.tbl[0];\n if (item) {\n type t = typeof item.d;\n type _cases = [Expect<NotAny<t>>, Expect<Equal<t, string | number>>];\n\n type tOpt = typeof item.dOptional;\n type _cases_2 = [\n Expect<NotAny<tOpt>>,\n Expect<Equal<tOpt, string | number | undefined>>,\n ];\n }\n}\n\nasync function _testUseDatesUndefinedTest() {\n const db = init({\n schema,\n appId: '123',\n });\n\n const data = await db.query({ tbl: {} });\n const item = data?.tbl[0];\n if (item) {\n type t = typeof item.d;\n type _cases = [Expect<NotAny<t>>, Expect<Equal<t, string | number>>];\n\n type tOpt = typeof item.dOptional;\n type _cases_2 = [\n Expect<NotAny<tOpt>>,\n Expect<Equal<tOpt, string | number | undefined>>,\n ];\n }\n}\n\nasync function _testDataNoSchema() {\n const db = init({\n appId: '123',\n });\n\n const data = await db.query({ tbl: {} });\n const item = data?.tbl[0];\n if (item) {\n type t = typeof item.d;\n type _cases = [Expect<IsAny<t>>, Expect<Equal<typeof item.id, string>>];\n }\n}\n\nasync function _testSubscribe() {\n // No useDateObjects\n init({\n appId: '123',\n schema,\n }).subscribeQuery({ tbl: {} }, (payload) => {\n if (payload.type === 'ok') {\n const item = payload.data.tbl[0];\n if (item) {\n type _cases = [\n Expect<Equal<typeof item.id, string>>,\n Expect<Equal<typeof item.d, string | number>>,\n Expect<Equal<typeof item.dOptional, string | number | undefined>>,\n ];\n }\n }\n });\n\n // UseDateObjects\n init({\n appId: '123',\n schema,\n useDateObjects: true,\n }).subscribeQuery({ tbl: {} }, (payload) => {\n if (payload.type === 'ok') {\n const item = payload.data.tbl[0];\n if (item) {\n type _cases = [\n Expect<Equal<typeof item.id, string>>,\n Expect<Equal<typeof item.d, Date>>,\n Expect<Equal<typeof item.dOptional, Date | undefined>>,\n ];\n }\n }\n });\n\n // No schema\n init({\n appId: '123',\n }).subscribeQuery({ tbl: {} }, (payload) => {\n if (payload.type === 'ok') {\n const item = payload.data.tbl[0];\n if (item) {\n type _cases = [\n Expect<Equal<typeof item.id, string>>,\n Expect<IsAny<typeof item.d>>,\n Expect<IsAny<typeof item.dOptional>>,\n ];\n }\n }\n });\n}\n"]}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export type InstantConfig<Schema extends InstantSchemaDef<any, any, any>, UseDat
|
|
|
23
23
|
adminToken?: string;
|
|
24
24
|
apiURI?: string;
|
|
25
25
|
schema?: Schema;
|
|
26
|
-
useDateObjects
|
|
26
|
+
useDateObjects: UseDates;
|
|
27
27
|
disableValidation?: boolean;
|
|
28
28
|
};
|
|
29
29
|
type InstantConfigFilled<Schema extends InstantSchemaDef<any, any, any>, UseDates extends boolean> = InstantConfig<Schema, UseDates> & {
|
|
@@ -69,7 +69,9 @@ type DebugTransactResult = {
|
|
|
69
69
|
* })
|
|
70
70
|
* // To learn more: https://instantdb.com/docs/modeling-data
|
|
71
71
|
*/
|
|
72
|
-
declare function init<Schema extends InstantSchemaDef<any, any, any> = InstantUnknownSchema, UseDates extends boolean = false>(config: InstantConfig<Schema, UseDates>
|
|
72
|
+
declare function init<Schema extends InstantSchemaDef<any, any, any> = InstantUnknownSchema, UseDates extends boolean = false>(config: Omit<InstantConfig<Schema, UseDates>, 'useDateObjects'> & {
|
|
73
|
+
useDateObjects?: UseDates;
|
|
74
|
+
}): InstantAdminDatabase<Schema, UseDates, InstantConfig<Schema, UseDates>>;
|
|
73
75
|
/**
|
|
74
76
|
* @deprecated
|
|
75
77
|
* `init_experimental` is deprecated. You can replace it with `init`.
|
|
@@ -351,8 +353,8 @@ type AdminQueryOpts = {
|
|
|
351
353
|
* @example
|
|
352
354
|
* const db = init({ appId: "my-app-id", adminToken: "my-admin-token" })
|
|
353
355
|
*/
|
|
354
|
-
declare class InstantAdminDatabase<Schema extends InstantSchemaDef<any, any, any>, Config extends InstantConfig<Schema,
|
|
355
|
-
config: InstantConfigFilled<Schema,
|
|
356
|
+
declare class InstantAdminDatabase<Schema extends InstantSchemaDef<any, any, any>, UseDates extends boolean = false, Config extends InstantConfig<Schema, UseDates> = InstantConfig<Schema, UseDates>> {
|
|
357
|
+
config: InstantConfigFilled<Schema, UseDates>;
|
|
356
358
|
auth: Auth;
|
|
357
359
|
storage: Storage;
|
|
358
360
|
rooms: Rooms<Schema>;
|
|
@@ -368,7 +370,7 @@ declare class InstantAdminDatabase<Schema extends InstantSchemaDef<any, any, any
|
|
|
368
370
|
* @example
|
|
369
371
|
* await db.asUser({email: "stopa@instantdb.com"}).query({ goals: {} })
|
|
370
372
|
*/
|
|
371
|
-
asUser: (opts: ImpersonationOpts) => InstantAdminDatabase<Schema, Config>;
|
|
373
|
+
asUser: (opts: ImpersonationOpts) => InstantAdminDatabase<Schema, UseDates, Config>;
|
|
372
374
|
/**
|
|
373
375
|
* Use this to query your data!
|
|
374
376
|
*
|
|
@@ -384,7 +386,7 @@ declare class InstantAdminDatabase<Schema extends InstantSchemaDef<any, any, any
|
|
|
384
386
|
* // all goals, _alongside_ their todos
|
|
385
387
|
* await db.query({ goals: { todos: {} } })
|
|
386
388
|
*/
|
|
387
|
-
query: <Q extends ValidQuery<Q, Schema>>(query: Q, opts?: AdminQueryOpts) => Promise<InstaQLResponse<Schema, Q,
|
|
389
|
+
query: <Q extends ValidQuery<Q, Schema>>(query: Q, opts?: AdminQueryOpts) => Promise<InstaQLResponse<Schema, Q, UseDates>>;
|
|
388
390
|
/**
|
|
389
391
|
* Use this to to get a live view of your data!
|
|
390
392
|
*
|
|
@@ -420,7 +422,7 @@ declare class InstantAdminDatabase<Schema extends InstantSchemaDef<any, any, any
|
|
|
420
422
|
* }
|
|
421
423
|
* });
|
|
422
424
|
*/
|
|
423
|
-
subscribeQuery<Q extends ValidQuery<Q, Schema>>(query: Q, cb?: SubscribeQueryCallback<Schema, Q,
|
|
425
|
+
subscribeQuery<Q extends ValidQuery<Q, Schema>>(query: Q, cb?: SubscribeQueryCallback<Schema, Q, UseDates>, opts?: AdminQueryOpts): SubscribeQueryResponse<Schema, Q, UseDates>;
|
|
424
426
|
/**
|
|
425
427
|
* Use this to write data! You can create, update, delete, and link objects
|
|
426
428
|
*
|
|
@@ -472,7 +474,7 @@ declare class InstantAdminDatabase<Schema extends InstantSchemaDef<any, any, any
|
|
|
472
474
|
[key: string]: any;
|
|
473
475
|
};
|
|
474
476
|
}) => Promise<{
|
|
475
|
-
result: InstaQLResponse<Schema, Q,
|
|
477
|
+
result: InstaQLResponse<Schema, Q, UseDates>;
|
|
476
478
|
checkResults: DebugCheckResult[];
|
|
477
479
|
}>;
|
|
478
480
|
/**
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EACL,EAAE,EACF,MAAM,EAEN,CAAC,EACD,EAAE,EAGF,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EAId,KAAK,IAAI,EACT,KAAK,KAAK,EAGV,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EAGrB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,UAAU,EAKf,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAGxB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAEL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AAExB,KAAK,gBAAgB,GAAG;IACtB,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,gFAAgF;IAChF,KAAK,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,KAAK,MAAM,GAAG;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,aAAa,CACvB,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9C,QAAQ,SAAS,OAAO,GAAG,KAAK,IAC9B;IACF,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -102,7 +102,7 @@ function jsonReject(rejectFn, res) {
|
|
|
102
102
|
function jsonFetch(input, init) {
|
|
103
103
|
return __awaiter(this, void 0, void 0, function* () {
|
|
104
104
|
const defaultFetchOpts = getDefaultFetchOpts();
|
|
105
|
-
const headers = Object.assign(Object.assign({}, (init.headers || {})), { 'Instant-Admin-Version': version, 'Instant-Core-Version': coreVersion });
|
|
105
|
+
const headers = Object.assign(Object.assign({}, ((init === null || init === void 0 ? void 0 : init.headers) || {})), { 'Instant-Admin-Version': version, 'Instant-Core-Version': coreVersion });
|
|
106
106
|
const res = yield fetch(input, Object.assign(Object.assign(Object.assign({}, defaultFetchOpts), init), { headers }));
|
|
107
107
|
if (res.status === 200) {
|
|
108
108
|
const json = yield res.json();
|
|
@@ -137,8 +137,13 @@ function jsonFetch(input, init) {
|
|
|
137
137
|
* })
|
|
138
138
|
* // To learn more: https://instantdb.com/docs/modeling-data
|
|
139
139
|
*/
|
|
140
|
-
function init(
|
|
141
|
-
|
|
140
|
+
function init(
|
|
141
|
+
// Allows config with missing `useDateObjects`, but keeps `UseDates`
|
|
142
|
+
// as a non-nullable in the InstantConfig type.
|
|
143
|
+
config) {
|
|
144
|
+
var _a;
|
|
145
|
+
const configStrict = Object.assign(Object.assign({}, config), { useDateObjects: ((_a = config.useDateObjects) !== null && _a !== void 0 ? _a : false) });
|
|
146
|
+
return new InstantAdminDatabase(configStrict);
|
|
142
147
|
}
|
|
143
148
|
/**
|
|
144
149
|
* @deprecated
|
|
@@ -366,10 +371,10 @@ class Storage {
|
|
|
366
371
|
duplex = 'half'; // one-way stream
|
|
367
372
|
}
|
|
368
373
|
if (isNodeReadable(file) || isWebReadable(file)) {
|
|
369
|
-
headers['content-length'] = metadata.fileSize.toString();
|
|
370
374
|
if (!metadata.fileSize) {
|
|
371
375
|
throw new Error('fileSize is required in metadata when uploading streams');
|
|
372
376
|
}
|
|
377
|
+
headers['content-length'] = metadata.fileSize.toString();
|
|
373
378
|
}
|
|
374
379
|
let options = Object.assign({ method: 'PUT', headers, body: file }, (duplex && { duplex }));
|
|
375
380
|
return jsonFetch(`${this.config.apiURI}/admin/storage/upload`, options);
|
|
@@ -414,12 +419,15 @@ class Storage {
|
|
|
414
419
|
filename: pathname,
|
|
415
420
|
}),
|
|
416
421
|
});
|
|
422
|
+
const headers = {};
|
|
423
|
+
const contentType = metadata.contentType;
|
|
424
|
+
if (contentType) {
|
|
425
|
+
headers['Content-Type'] = contentType;
|
|
426
|
+
}
|
|
417
427
|
const { ok } = yield fetch(presignedUrl, {
|
|
418
428
|
method: 'PUT',
|
|
419
429
|
body: file,
|
|
420
|
-
headers
|
|
421
|
-
'Content-Type': metadata.contentType,
|
|
422
|
-
},
|
|
430
|
+
headers,
|
|
423
431
|
});
|
|
424
432
|
return ok;
|
|
425
433
|
});
|