@instantdb/core 0.22.92-experimental.drewh-ssr.20347788876.1 → 0.22.92-experimental.drewh-explorer-docs.20350147917.1
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/Reactor.d.ts +1 -13
- package/dist/commonjs/Reactor.d.ts.map +1 -1
- package/dist/commonjs/Reactor.js +5 -71
- package/dist/commonjs/Reactor.js.map +1 -1
- package/dist/commonjs/index.d.ts +1 -5
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +1 -7
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/reactorTypes.d.ts +4 -5
- package/dist/commonjs/reactorTypes.d.ts.map +1 -1
- package/dist/commonjs/reactorTypes.js.map +1 -1
- package/dist/esm/Reactor.d.ts +1 -13
- package/dist/esm/Reactor.d.ts.map +1 -1
- package/dist/esm/Reactor.js +5 -71
- package/dist/esm/Reactor.js.map +1 -1
- package/dist/esm/index.d.ts +1 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/reactorTypes.d.ts +4 -5
- package/dist/esm/reactorTypes.d.ts.map +1 -1
- package/dist/esm/reactorTypes.js.map +1 -1
- package/dist/standalone/index.js +2373 -2706
- package/dist/standalone/index.umd.cjs +3 -3
- package/package.json +2 -2
- package/src/Reactor.js +6 -86
- package/src/index.ts +0 -9
- package/src/reactorTypes.ts +4 -5
- package/__tests__/src/serializeSchema.test.ts +0 -123
- package/dist/commonjs/createRouteHandler.d.ts +0 -6
- package/dist/commonjs/createRouteHandler.d.ts.map +0 -1
- package/dist/commonjs/createRouteHandler.js +0 -66
- package/dist/commonjs/createRouteHandler.js.map +0 -1
- package/dist/commonjs/framework.d.ts +0 -77
- package/dist/commonjs/framework.d.ts.map +0 -1
- package/dist/commonjs/framework.js +0 -210
- package/dist/commonjs/framework.js.map +0 -1
- package/dist/commonjs/parseSchemaFromJSON.d.ts +0 -3
- package/dist/commonjs/parseSchemaFromJSON.d.ts.map +0 -1
- package/dist/commonjs/parseSchemaFromJSON.js +0 -148
- package/dist/commonjs/parseSchemaFromJSON.js.map +0 -1
- package/dist/esm/createRouteHandler.d.ts +0 -6
- package/dist/esm/createRouteHandler.d.ts.map +0 -1
- package/dist/esm/createRouteHandler.js +0 -62
- package/dist/esm/createRouteHandler.js.map +0 -1
- package/dist/esm/framework.d.ts +0 -77
- package/dist/esm/framework.d.ts.map +0 -1
- package/dist/esm/framework.js +0 -170
- package/dist/esm/framework.js.map +0 -1
- package/dist/esm/parseSchemaFromJSON.d.ts +0 -3
- package/dist/esm/parseSchemaFromJSON.d.ts.map +0 -1
- package/dist/esm/parseSchemaFromJSON.js +0 -144
- package/dist/esm/parseSchemaFromJSON.js.map +0 -1
- package/src/createRouteHandler.ts +0 -56
- package/src/framework.ts +0 -295
- package/src/parseSchemaFromJSON.ts +0 -176
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instantdb/core",
|
|
3
|
-
"version": "0.22.92-experimental.drewh-
|
|
3
|
+
"version": "0.22.92-experimental.drewh-explorer-docs.20350147917.1",
|
|
4
4
|
"description": "Instant's core local abstraction",
|
|
5
5
|
"homepage": "https://github.com/instantdb/instant/tree/main/client/packages/core",
|
|
6
6
|
"repository": {
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"mutative": "^1.0.10",
|
|
55
55
|
"uuid": "^11.1.0",
|
|
56
|
-
"@instantdb/version": "0.22.92-experimental.drewh-
|
|
56
|
+
"@instantdb/version": "0.22.92-experimental.drewh-explorer-docs.20350147917.1"
|
|
57
57
|
},
|
|
58
58
|
"scripts": {
|
|
59
59
|
"test": "vitest",
|
package/src/Reactor.js
CHANGED
|
@@ -348,17 +348,7 @@ export default class Reactor {
|
|
|
348
348
|
this._oauthCallbackResponse = this._oauthLoginInit();
|
|
349
349
|
|
|
350
350
|
// kick off a request to cache it
|
|
351
|
-
this.getCurrentUser()
|
|
352
|
-
this.syncUserToEndpoint(userInfo.user);
|
|
353
|
-
});
|
|
354
|
-
|
|
355
|
-
setInterval(
|
|
356
|
-
async () => {
|
|
357
|
-
const currentUser = await this.getCurrentUser();
|
|
358
|
-
this.syncUserToEndpoint(currentUser.user);
|
|
359
|
-
},
|
|
360
|
-
1000 * 60 * 20,
|
|
361
|
-
);
|
|
351
|
+
this.getCurrentUser();
|
|
362
352
|
|
|
363
353
|
NetworkListener.getIsOnline().then((isOnline) => {
|
|
364
354
|
this._isOnline = isOnline;
|
|
@@ -559,43 +549,6 @@ export default class Reactor {
|
|
|
559
549
|
}
|
|
560
550
|
}
|
|
561
551
|
|
|
562
|
-
/**
|
|
563
|
-
* Does the same thing as add-query-ok
|
|
564
|
-
* but called as a result of receiving query info from ssr
|
|
565
|
-
* @param {any} q
|
|
566
|
-
* @param {{ triples: any; pageInfo: any; }} result
|
|
567
|
-
* @param {boolean} enableCardinalityInference
|
|
568
|
-
*/
|
|
569
|
-
_addQueryData(q, result, enableCardinalityInference) {
|
|
570
|
-
if (!this.attrs) {
|
|
571
|
-
throw new Error('Attrs in reactor have not been set');
|
|
572
|
-
}
|
|
573
|
-
const queryHash = weakHash(q);
|
|
574
|
-
const attrsStore = this.ensureAttrs();
|
|
575
|
-
const store = s.createStore(
|
|
576
|
-
this.attrs,
|
|
577
|
-
result.triples,
|
|
578
|
-
enableCardinalityInference,
|
|
579
|
-
this.config.useDateObjects,
|
|
580
|
-
);
|
|
581
|
-
this.querySubs.updateInPlace((prev) => {
|
|
582
|
-
prev[queryHash] = {
|
|
583
|
-
result: {
|
|
584
|
-
store,
|
|
585
|
-
attrsStore,
|
|
586
|
-
pageInfo: result.pageInfo,
|
|
587
|
-
processedTxId: undefined,
|
|
588
|
-
isExternal: true,
|
|
589
|
-
},
|
|
590
|
-
q,
|
|
591
|
-
};
|
|
592
|
-
});
|
|
593
|
-
this._cleanupPendingMutationsQueries();
|
|
594
|
-
this.notifyOne(queryHash);
|
|
595
|
-
this.notifyOneQueryOnce(queryHash);
|
|
596
|
-
this._cleanupPendingMutationsTimeout();
|
|
597
|
-
}
|
|
598
|
-
|
|
599
552
|
_handleReceive(connId, msg) {
|
|
600
553
|
// opt-out, enabled by default if schema
|
|
601
554
|
const enableCardinalityInference =
|
|
@@ -1268,7 +1221,7 @@ export default class Reactor {
|
|
|
1268
1221
|
}
|
|
1269
1222
|
|
|
1270
1223
|
/** Runs instaql on a query and a store */
|
|
1271
|
-
dataForQuery(hash
|
|
1224
|
+
dataForQuery(hash) {
|
|
1272
1225
|
const errorMessage = this._errorMessage;
|
|
1273
1226
|
if (errorMessage) {
|
|
1274
1227
|
return { error: errorMessage };
|
|
@@ -1292,26 +1245,15 @@ export default class Reactor {
|
|
|
1292
1245
|
return cached;
|
|
1293
1246
|
}
|
|
1294
1247
|
|
|
1295
|
-
|
|
1296
|
-
let attrsStore = result.attrsStore;
|
|
1297
|
-
const { pageInfo, aggregate, processedTxId } = result;
|
|
1248
|
+
const { store, attrsStore, pageInfo, aggregate, processedTxId } = result;
|
|
1298
1249
|
const mutations = this._rewriteMutationsSorted(
|
|
1299
1250
|
attrsStore,
|
|
1300
1251
|
pendingMutations,
|
|
1301
1252
|
);
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
store,
|
|
1305
|
-
attrsStore,
|
|
1306
|
-
mutations,
|
|
1307
|
-
processedTxId,
|
|
1308
|
-
);
|
|
1309
|
-
|
|
1310
|
-
store = optimisticResult.store;
|
|
1311
|
-
attrsStore = optimisticResult.attrsStore;
|
|
1312
|
-
}
|
|
1253
|
+
const { store: newStore, attrsStore: newAttrsStore } =
|
|
1254
|
+
this._applyOptimisticUpdates(store, attrsStore, mutations, processedTxId);
|
|
1313
1255
|
const resp = instaql(
|
|
1314
|
-
{ store:
|
|
1256
|
+
{ store: newStore, attrsStore: newAttrsStore, pageInfo, aggregate },
|
|
1315
1257
|
q,
|
|
1316
1258
|
);
|
|
1317
1259
|
|
|
@@ -2047,29 +1989,7 @@ export default class Reactor {
|
|
|
2047
1989
|
}
|
|
2048
1990
|
}
|
|
2049
1991
|
|
|
2050
|
-
async syncUserToEndpoint(user) {
|
|
2051
|
-
if (this.config.firstPartyPath) {
|
|
2052
|
-
try {
|
|
2053
|
-
fetch(this.config.firstPartyPath + '/', {
|
|
2054
|
-
method: 'POST',
|
|
2055
|
-
body: JSON.stringify({
|
|
2056
|
-
type: 'sync-user',
|
|
2057
|
-
appId: this.config.appId,
|
|
2058
|
-
user: user,
|
|
2059
|
-
}),
|
|
2060
|
-
headers: {
|
|
2061
|
-
'Content-Type': 'application/json',
|
|
2062
|
-
},
|
|
2063
|
-
});
|
|
2064
|
-
} catch (error) {
|
|
2065
|
-
console.error('Error syncing user with external endpoint', error);
|
|
2066
|
-
}
|
|
2067
|
-
}
|
|
2068
|
-
}
|
|
2069
|
-
|
|
2070
1992
|
updateUser(newUser) {
|
|
2071
|
-
this.syncUserToEndpoint(newUser);
|
|
2072
|
-
|
|
2073
1993
|
const newV = { error: undefined, user: newUser };
|
|
2074
1994
|
this._currentUserCached = { isLoading: false, ...newV };
|
|
2075
1995
|
this._dataForQueryCache = {};
|
package/src/index.ts
CHANGED
|
@@ -20,13 +20,10 @@ import {
|
|
|
20
20
|
validateTransactions,
|
|
21
21
|
TransactionValidationError,
|
|
22
22
|
} from './transactionValidation.ts';
|
|
23
|
-
|
|
24
23
|
import {
|
|
25
24
|
StorageInterface,
|
|
26
25
|
type StorageInterfaceStoreName,
|
|
27
26
|
} from './utils/PersistedObject.ts';
|
|
28
|
-
import { createInstantRouteHandler } from './createRouteHandler.ts';
|
|
29
|
-
import { parseSchemaFromJSON } from './parseSchemaFromJSON.ts';
|
|
30
27
|
|
|
31
28
|
import type {
|
|
32
29
|
PresenceOpts,
|
|
@@ -106,7 +103,6 @@ import type {
|
|
|
106
103
|
} from './schemaTypes.ts';
|
|
107
104
|
import type { InstantRules } from './rulesTypes.ts';
|
|
108
105
|
import type { UploadFileResponse, DeleteFileResponse } from './StorageAPI.ts';
|
|
109
|
-
import { FrameworkClient, type FrameworkConfig } from './framework.ts';
|
|
110
106
|
|
|
111
107
|
import type {
|
|
112
108
|
ExchangeCodeForTokenParams,
|
|
@@ -157,7 +153,6 @@ export type InstantConfig<
|
|
|
157
153
|
appId: string;
|
|
158
154
|
schema?: S;
|
|
159
155
|
websocketURI?: string;
|
|
160
|
-
firstPartyPath?: string;
|
|
161
156
|
apiURI?: string;
|
|
162
157
|
devtool?: boolean | DevtoolConfig;
|
|
163
158
|
verbose?: boolean;
|
|
@@ -908,9 +903,7 @@ export {
|
|
|
908
903
|
validateQuery,
|
|
909
904
|
QueryValidationError,
|
|
910
905
|
validateTransactions,
|
|
911
|
-
parseSchemaFromJSON,
|
|
912
906
|
TransactionValidationError,
|
|
913
|
-
FrameworkClient,
|
|
914
907
|
|
|
915
908
|
// error
|
|
916
909
|
InstantAPIError,
|
|
@@ -1026,7 +1019,6 @@ export {
|
|
|
1026
1019
|
|
|
1027
1020
|
// SSE
|
|
1028
1021
|
type EventSourceType,
|
|
1029
|
-
type FrameworkConfig,
|
|
1030
1022
|
|
|
1031
1023
|
// sync table types
|
|
1032
1024
|
type SyncTableCallback,
|
|
@@ -1043,5 +1035,4 @@ export {
|
|
|
1043
1035
|
// storage (e.g. indexeddb) interface
|
|
1044
1036
|
StorageInterface,
|
|
1045
1037
|
type StorageInterfaceStoreName,
|
|
1046
|
-
createInstantRouteHandler,
|
|
1047
1038
|
};
|
package/src/reactorTypes.ts
CHANGED
|
@@ -6,13 +6,12 @@ export type QuerySubResult = {
|
|
|
6
6
|
attrsStore: AttrsStore;
|
|
7
7
|
pageInfo?: PageInfoResponse<any> | null | undefined;
|
|
8
8
|
aggregate?: any;
|
|
9
|
-
processedTxId
|
|
10
|
-
isExternal?: boolean;
|
|
9
|
+
processedTxId: number;
|
|
11
10
|
};
|
|
12
11
|
|
|
13
12
|
export type QuerySub = {
|
|
14
13
|
q: Object;
|
|
15
|
-
eventId
|
|
14
|
+
eventId: string;
|
|
16
15
|
lastAccessed?: number | null | undefined;
|
|
17
16
|
result?: QuerySubResult;
|
|
18
17
|
};
|
|
@@ -22,12 +21,12 @@ export type QuerySubResultInStorage = {
|
|
|
22
21
|
attrsStore: AttrsStoreJson;
|
|
23
22
|
pageInfo?: PageInfoResponse<any> | null | undefined;
|
|
24
23
|
aggregate?: any;
|
|
25
|
-
processedTxId
|
|
24
|
+
processedTxId: number;
|
|
26
25
|
};
|
|
27
26
|
|
|
28
27
|
export type QuerySubInStorage = {
|
|
29
28
|
q: Object;
|
|
30
|
-
eventId
|
|
29
|
+
eventId: string;
|
|
31
30
|
lastAccessed?: number | null | undefined;
|
|
32
31
|
result?: QuerySubResultInStorage;
|
|
33
32
|
};
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { expect, test } from 'vitest';
|
|
2
|
-
import { i } from '../../src/schema';
|
|
3
|
-
import { parseSchemaFromJSON } from '../../src/parseSchemaFromJSON';
|
|
4
|
-
import { InstantSchemaDef } from '../../src/schemaTypes';
|
|
5
|
-
|
|
6
|
-
const schema = i.schema({
|
|
7
|
-
entities: {
|
|
8
|
-
users: i.entity({
|
|
9
|
-
name: i.string(),
|
|
10
|
-
email: i.string().indexed().unique(),
|
|
11
|
-
bio: i.string().optional(),
|
|
12
|
-
// this is a convenient way to typecheck custom JSON fields
|
|
13
|
-
// though we should probably have a backend solution for this
|
|
14
|
-
stuff: i.json<{ custom: string }>(),
|
|
15
|
-
junk: i.any(),
|
|
16
|
-
}),
|
|
17
|
-
posts: i.entity({
|
|
18
|
-
title: i.string().optional(),
|
|
19
|
-
body: i.string(),
|
|
20
|
-
}),
|
|
21
|
-
comments: i.entity({
|
|
22
|
-
body: i.string().indexed(),
|
|
23
|
-
likes: i.number(),
|
|
24
|
-
}),
|
|
25
|
-
|
|
26
|
-
birthdays: i.entity({
|
|
27
|
-
date: i.date(),
|
|
28
|
-
message: i.string(),
|
|
29
|
-
prizes: i.json<string | number>(),
|
|
30
|
-
}),
|
|
31
|
-
},
|
|
32
|
-
links: {
|
|
33
|
-
usersPosts: {
|
|
34
|
-
forward: {
|
|
35
|
-
on: 'users',
|
|
36
|
-
has: 'many',
|
|
37
|
-
label: 'posts',
|
|
38
|
-
},
|
|
39
|
-
reverse: {
|
|
40
|
-
on: 'posts',
|
|
41
|
-
has: 'one',
|
|
42
|
-
label: 'author',
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
postsComments: {
|
|
46
|
-
forward: {
|
|
47
|
-
on: 'posts',
|
|
48
|
-
has: 'many',
|
|
49
|
-
label: 'comments',
|
|
50
|
-
},
|
|
51
|
-
reverse: {
|
|
52
|
-
on: 'comments',
|
|
53
|
-
has: 'one',
|
|
54
|
-
label: 'post',
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
friendships: {
|
|
58
|
-
forward: {
|
|
59
|
-
on: 'users',
|
|
60
|
-
has: 'many',
|
|
61
|
-
label: 'friends',
|
|
62
|
-
},
|
|
63
|
-
reverse: {
|
|
64
|
-
on: 'users',
|
|
65
|
-
has: 'many',
|
|
66
|
-
label: '_friends',
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
referrals: {
|
|
70
|
-
forward: {
|
|
71
|
-
on: 'users',
|
|
72
|
-
has: 'many',
|
|
73
|
-
label: 'referred',
|
|
74
|
-
},
|
|
75
|
-
reverse: {
|
|
76
|
-
on: 'users',
|
|
77
|
-
has: 'one',
|
|
78
|
-
label: 'referrer',
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
rooms: {
|
|
83
|
-
chat: {
|
|
84
|
-
presence: i.entity({
|
|
85
|
-
name: i.string(),
|
|
86
|
-
status: i.string(),
|
|
87
|
-
}),
|
|
88
|
-
topics: {
|
|
89
|
-
sendEmoji: i.entity({
|
|
90
|
-
emoji: i.string(),
|
|
91
|
-
}),
|
|
92
|
-
},
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
type AnySchema = InstantSchemaDef<any, any, any>;
|
|
98
|
-
|
|
99
|
-
// compare schemas by stringifying them with json and comparing the strings
|
|
100
|
-
const compareSchemas = (schema1: AnySchema, schema2: AnySchema) => {
|
|
101
|
-
expect(JSON.stringify(schema1, null, 2)).toBe(
|
|
102
|
-
JSON.stringify(schema2, null, 2),
|
|
103
|
-
);
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
test('ability to parse stringified schema into real schema object', () => {
|
|
107
|
-
const stringified = JSON.stringify(schema, null, 2);
|
|
108
|
-
const parsed = JSON.parse(stringified);
|
|
109
|
-
console.log(stringified);
|
|
110
|
-
|
|
111
|
-
const otherSide = parseSchemaFromJSON(parsed);
|
|
112
|
-
|
|
113
|
-
compareSchemas(schema, otherSide);
|
|
114
|
-
|
|
115
|
-
expect(schema.entities.comments.links).toEqual(
|
|
116
|
-
otherSide.entities.comments.links,
|
|
117
|
-
);
|
|
118
|
-
expect(schema.entities.comments.asType).toEqual(
|
|
119
|
-
otherSide.entities.comments.asType,
|
|
120
|
-
);
|
|
121
|
-
|
|
122
|
-
expect(schema).toStrictEqual(otherSide);
|
|
123
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createRouteHandler.d.ts","sourceRoot":"","sources":["../../src/createRouteHandler.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,GAAI,QAAQ;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE;gBA6B7C,OAAO;CAwB5B,CAAC"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.createInstantRouteHandler = void 0;
|
|
13
|
-
const createInstantRouteHandler = (config) => {
|
|
14
|
-
function createUserSyncResponse(user) {
|
|
15
|
-
if (user && user.refresh_token) {
|
|
16
|
-
return new Response(JSON.stringify({ ok: true }), {
|
|
17
|
-
headers: {
|
|
18
|
-
'Content-Type': 'application/json',
|
|
19
|
-
// 7 day expiry
|
|
20
|
-
'Set-Cookie': `instant_user_${config.appId}=${JSON.stringify(user)}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=604800`,
|
|
21
|
-
},
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
return new Response(JSON.stringify({ ok: true }), {
|
|
26
|
-
headers: {
|
|
27
|
-
'Content-Type': 'application/json',
|
|
28
|
-
// remove the cookie (some browsers)
|
|
29
|
-
'Set-Cookie': `instant_user_${config.appId}=; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=-1`,
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
function errorResponse(status, message) {
|
|
35
|
-
return new Response(JSON.stringify({ ok: false, error: message }), {
|
|
36
|
-
status,
|
|
37
|
-
headers: { 'Content-Type': 'application/json' },
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
POST: (req) => __awaiter(void 0, void 0, void 0, function* () {
|
|
42
|
-
var _a;
|
|
43
|
-
let body;
|
|
44
|
-
try {
|
|
45
|
-
body = yield req.json();
|
|
46
|
-
}
|
|
47
|
-
catch (_b) {
|
|
48
|
-
return errorResponse(400, 'Invalid JSON body');
|
|
49
|
-
}
|
|
50
|
-
if (!body.type) {
|
|
51
|
-
return errorResponse(400, 'Missing "type" field');
|
|
52
|
-
}
|
|
53
|
-
if (body.appId !== config.appId) {
|
|
54
|
-
return errorResponse(403, 'App ID mismatch');
|
|
55
|
-
}
|
|
56
|
-
switch (body.type) {
|
|
57
|
-
case 'sync-user':
|
|
58
|
-
return createUserSyncResponse((_a = body.user) !== null && _a !== void 0 ? _a : null);
|
|
59
|
-
default:
|
|
60
|
-
return errorResponse(400, `Unknown type: ${body.type}`);
|
|
61
|
-
}
|
|
62
|
-
}),
|
|
63
|
-
};
|
|
64
|
-
};
|
|
65
|
-
exports.createInstantRouteHandler = createInstantRouteHandler;
|
|
66
|
-
//# sourceMappingURL=createRouteHandler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createRouteHandler.js","sourceRoot":"","sources":["../../src/createRouteHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEO,MAAM,yBAAyB,GAAG,CAAC,MAAyB,EAAE,EAAE;IACrE,SAAS,sBAAsB,CAAC,IAAiB;QAC/C,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/B,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;gBAChD,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,eAAe;oBACf,YAAY,EAAE,gBAAgB,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,6DAA6D;iBAChI;aACF,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;gBAChD,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,oCAAoC;oBACpC,YAAY,EAAE,gBAAgB,MAAM,CAAC,KAAK,0DAA0D;iBACrG;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,SAAS,aAAa,CAAC,MAAc,EAAE,OAAe;QACpD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;YACjE,MAAM;YACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI,EAAE,CAAO,GAAY,EAAE,EAAE;;YAC3B,IAAI,IAA2D,CAAC;YAChE,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC;YAAC,WAAM,CAAC;gBACP,OAAO,aAAa,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,aAAa,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YAC/C,CAAC;YAED,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,WAAW;oBACd,OAAO,sBAAsB,CAAC,MAAA,IAAI,CAAC,IAAI,mCAAI,IAAI,CAAC,CAAC;gBACnD;oBACE,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAA;KACF,CAAC;AACJ,CAAC,CAAC;AArDW,QAAA,yBAAyB,6BAqDpC","sourcesContent":["import type { User } from './clientTypes.js';\n\nexport const createInstantRouteHandler = (config: { appId: string }) => {\n function createUserSyncResponse(user: User | null) {\n if (user && user.refresh_token) {\n return new Response(JSON.stringify({ ok: true }), {\n headers: {\n 'Content-Type': 'application/json',\n // 7 day expiry\n 'Set-Cookie': `instant_user_${config.appId}=${JSON.stringify(user)}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=604800`,\n },\n });\n } else {\n return new Response(JSON.stringify({ ok: true }), {\n headers: {\n 'Content-Type': 'application/json',\n // remove the cookie (some browsers)\n 'Set-Cookie': `instant_user_${config.appId}=; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=-1`,\n },\n });\n }\n }\n\n function errorResponse(status: number, message: string) {\n return new Response(JSON.stringify({ ok: false, error: message }), {\n status,\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n return {\n POST: async (req: Request) => {\n let body: { type?: string; appId?: string; user?: User | null };\n try {\n body = await req.json();\n } catch {\n return errorResponse(400, 'Invalid JSON body');\n }\n\n if (!body.type) {\n return errorResponse(400, 'Missing \"type\" field');\n }\n\n if (body.appId !== config.appId) {\n return errorResponse(403, 'App ID mismatch');\n }\n\n switch (body.type) {\n case 'sync-user':\n return createUserSyncResponse(body.user ?? null);\n default:\n return errorResponse(400, `Unknown type: ${body.type}`);\n }\n },\n };\n};\n"]}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { InstantCoreDatabase, InstantDBAttr } from './index.ts';
|
|
2
|
-
import { RuleParams } from './schemaTypes.ts';
|
|
3
|
-
export declare const isServer: boolean;
|
|
4
|
-
export type FrameworkConfig = {
|
|
5
|
-
token?: string | null;
|
|
6
|
-
db: InstantCoreDatabase<any, any>;
|
|
7
|
-
};
|
|
8
|
-
type QueryPromise = {
|
|
9
|
-
type: 'http';
|
|
10
|
-
triples: any;
|
|
11
|
-
attrs: any;
|
|
12
|
-
queryHash: any;
|
|
13
|
-
query: any;
|
|
14
|
-
pageInfo?: any;
|
|
15
|
-
} | {
|
|
16
|
-
type: 'session';
|
|
17
|
-
queryResult: any;
|
|
18
|
-
};
|
|
19
|
-
export declare class FrameworkClient {
|
|
20
|
-
private params;
|
|
21
|
-
private db;
|
|
22
|
-
resultMap: Map<string, {
|
|
23
|
-
status: 'pending' | 'success' | 'error';
|
|
24
|
-
type: 'http' | 'session';
|
|
25
|
-
promise?: Promise<QueryPromise> | null;
|
|
26
|
-
data?: any;
|
|
27
|
-
error?: any;
|
|
28
|
-
}>;
|
|
29
|
-
private queryResolvedCallbacks;
|
|
30
|
-
constructor(params: FrameworkConfig);
|
|
31
|
-
subscribe: (callback: (result: {
|
|
32
|
-
triples: any;
|
|
33
|
-
attrs: any;
|
|
34
|
-
queryHash: string;
|
|
35
|
-
pageInfo?: any;
|
|
36
|
-
}) => void) => void;
|
|
37
|
-
addQueryResult: (queryKey: string, value: any) => void;
|
|
38
|
-
query: (_query: any, opts?: {
|
|
39
|
-
ruleParams: RuleParams;
|
|
40
|
-
}) => {
|
|
41
|
-
type: "http" | "session";
|
|
42
|
-
status: "pending" | "success" | "error";
|
|
43
|
-
promise?: Promise<QueryPromise>;
|
|
44
|
-
data?: any;
|
|
45
|
-
error?: any;
|
|
46
|
-
};
|
|
47
|
-
getExistingResultForQuery: (_query: any, opts?: {
|
|
48
|
-
ruleParams: RuleParams;
|
|
49
|
-
}) => {
|
|
50
|
-
status: "pending" | "success" | "error";
|
|
51
|
-
type: "http" | "session";
|
|
52
|
-
promise?: Promise<QueryPromise> | null;
|
|
53
|
-
data?: any;
|
|
54
|
-
error?: any;
|
|
55
|
-
} | undefined;
|
|
56
|
-
completeIsomorphic: (query: any, triples: any[], attrs: InstantDBAttr[], pageInfo?: any) => {
|
|
57
|
-
data: any;
|
|
58
|
-
pageInfo?: any;
|
|
59
|
-
aggregate?: any;
|
|
60
|
-
};
|
|
61
|
-
hashQuery: (_query: any, opts?: {
|
|
62
|
-
ruleParams: RuleParams;
|
|
63
|
-
}) => {
|
|
64
|
-
hash: string;
|
|
65
|
-
query: any;
|
|
66
|
-
};
|
|
67
|
-
getTriplesAndAttrsForQuery: (query: any) => Promise<{
|
|
68
|
-
triples: any[];
|
|
69
|
-
attrs: InstantDBAttr[];
|
|
70
|
-
query: any;
|
|
71
|
-
queryHash: string;
|
|
72
|
-
type: "http";
|
|
73
|
-
pageInfo?: any;
|
|
74
|
-
}>;
|
|
75
|
-
}
|
|
76
|
-
export {};
|
|
77
|
-
//# sourceMappingURL=framework.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../src/framework.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,EACnB,aAAa,EAEd,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,eAAO,MAAM,QAAQ,SAAwD,CAAC;AAE9E,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,EAAE,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CACnC,CAAC;AAEF,KAAK,YAAY,GACb;IACE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,GAAG,CAAC;CAClB,CAAC;AAEN,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,EAAE,CAAgC;IACnC,SAAS,EAAE,GAAG,CACnB,MAAM,EACN;QACE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;QACxC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,KAAK,CAAC,EAAE,GAAG,CAAC;KACb,CACF,CAAa;IAEd,OAAO,CAAC,sBAAsB,CAMX;gBAEP,MAAM,EAAE,eAAe;IAe5B,SAAS,GACd,UAAU,CAAC,MAAM,EAAE;QACjB,OAAO,EAAE,GAAG,CAAC;QACb,KAAK,EAAE,GAAG,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,GAAG,CAAC;KAChB,KAAK,IAAI,UAGV;IAGK,cAAc,GAAI,UAAU,MAAM,EAAE,OAAO,GAAG,UAoBnD;IAEK,KAAK,GACV,QAAQ,GAAG,EACX,OAAO;QACL,UAAU,EAAE,UAAU,CAAC;KACxB,KACA;QACD,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;QACxC,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,KAAK,CAAC,EAAE,GAAG,CAAC;KACb,CA4DC;IAEK,yBAAyB,GAC9B,QAAQ,GAAG,EACX,OAAO;QACL,UAAU,EAAE,UAAU,CAAC;KACxB;gBA9IS,SAAS,GAAG,SAAS,GAAG,OAAO;cACjC,MAAM,GAAG,SAAS;kBACd,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;eAC/B,GAAG;gBACF,GAAG;kBA8Ib;IAEK,kBAAkB,GACvB,OAAO,GAAG,EACV,SAAS,GAAG,EAAE,EACd,OAAO,aAAa,EAAE,EACtB,WAAW,GAAG;;;;MAqCd;IAEK,SAAS,GACd,QAAQ,GAAG,EACX,OAAO;QACL,UAAU,EAAE,UAAU,CAAC;KACxB,KACA;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAM7B;IAEK,0BAA0B,GAC/B,OAAO,GAAG,KACT,OAAO,CAAC;QACT,OAAO,EAAE,GAAG,EAAE,CAAC;QACf,KAAK,EAAE,aAAa,EAAE,CAAC;QACvB,KAAK,EAAE,GAAG,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,GAAG,CAAC;KAChB,CAAC,CA0CA;CACH"}
|