@instantdb/core 0.22.60 → 0.22.61-experimental.delay-looking-at-store.19555739599.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.map +1 -1
- package/dist/commonjs/SyncTable.d.ts.map +1 -1
- package/dist/commonjs/SyncTable.js +19 -8
- package/dist/commonjs/SyncTable.js.map +1 -1
- package/dist/esm/Reactor.d.ts.map +1 -1
- package/dist/esm/SyncTable.d.ts.map +1 -1
- package/dist/esm/SyncTable.js +19 -8
- package/dist/esm/SyncTable.js.map +1 -1
- package/dist/standalone/index.js +318 -311
- package/dist/standalone/index.umd.cjs +3 -3
- package/package.json +2 -2
- package/src/SyncTable.ts +24 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"AA8KA;;GAEG;AACH,6BAFwD,UAAU,SAArD,OAAQ,eAAe,EAAE,eAAgB;IA8DpD,sJAgHC;IA3KD,WAAM;IACN,mBAAiB;IACjB,qBAAoB;IACpB,eAA2B;IAE3B,8BAA8B;IAC9B,0CAAU;IAEV,8BAA8B;IAC9B,mCAAG;IAEH,wEAAwE;IACxE,UADW,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,GAAG,CAAC;QAAC,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;KAAE,CAAC,CAAC,CACtD;IACd,gFAAgF;IAChF,eADW,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC,CACzD;IACnB,eAAa;IACb,gBAAc;IACd,wBAAsB;IACtB,2BAAyB;IACzB,YAAO;IACP,qCAAkC;IAClC,yBAA2B;IAC3B,4BAAwB;IACxB,yBAAyB;IACzB,YADW,UAAU,CACV;IACX,4BAA4B;IAC5B,gBADW,aAAa,CACF;IAEtB,qCAAqC;IACrC,cADW,sBAAsB,CACpB;IACb,6BAA6B;IAC7B,OADW,OAAO,GAAG,IAAI,CACZ;IACb,qBAAsB;IACtB,mBAAqB;IACrB,yDAAyD;IACzD,wBADW,OAAO,CAAC,IAAI,GAAG;QAAC,KAAK,EAAE;YAAC,OAAO,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,CAAC,CACvB;IAE9B,+DAA+D;IAC/D,YADW,IAAI,GAAG,OAAO,sBAAsB,EAAE,SAAS,CACxC;IAElB,yCAAyC;IACzC,mBADU,gBAAgB,GAAG,SAAS,CACpB;IAElB,iEAAiE;IACjE,QADW,MAAM,CAAC,MAAM,EAAE;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAC,CAAC,CACjD;IACZ,sCAAsC;IACtC,oBADW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACV;IACxB,cAAe;IACf,uBAAqB;IACrB,mBAAoB;IACpB;;;;MAA4E;IAC5E,wBAAsB;IACtB,uBAAwB;IACxB,qBAAqB;IACrB,MADW,MAAM,CACZ;IACL,8BAAyB;IACzB,sCAAiC;IACjC,oCAAsC;IAYpC,qBAAwD;IAYxD,cAAmE;IAsCnE,sBAeC;IA0GH,sBAKC;IAxED,gCAOC;IAED;;;;MAMC;IAED,mCAIC;IAED,iCA0CC;IASD;;;;OAIG;IACH,2BAJW,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAI,OAAO,WACxD,MAAM,aACN;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAC,QA+B5E;IAED,wCAIC;IAED,aAAc,QAAG,EAAE,aAAQ,EAAE,cAAS,SAmBpC;IAEF,0CAgBC;IAED,4CA+OC;IA7NK,gBAAmC;IA+NzC,yBAEC;IAED,sCAMC;IAED;;;;OAIG;IACH,6BAJW,SAAS,GAAG,OAAO,WACnB,MAAM,YACN;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAC,QAoB3E;IAED,oCAqEC;IAED,oEAKC;IAED,4BAOC;IAKD,oBAAqB,MAAC,SAGpB;IAEF,0CASC;IAED;
|
|
1
|
+
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncTable.d.ts","sourceRoot":"","sources":["../../src/SyncTable.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA2B9C,KAAK,QAAQ,GAAG;IACd,EAAE,EAAE,YAAY,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,KAAK,MAAM,GAAG;IACZ,EAAE,EAAE,aAAa,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,EAAE,EAAE,cAAc,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7C,KAAK,cAAc,GAAG;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAE5C,KAAK,gBAAgB,GAAG;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;CAC9B,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE;YAAE,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC5D,EAAE,CAAC;CACL,CAAC;AAEF,KAAK,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;AAEvD,KAAK,MAAM,GAAG;IAAE,cAAc,EAAE,OAAO,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"SyncTable.d.ts","sourceRoot":"","sources":["../../src/SyncTable.ts"],"names":[],"mappings":"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"}
|
|
@@ -150,8 +150,22 @@ function changedFieldsOfChanges(store, changes) {
|
|
|
150
150
|
function subData(sub, entities) {
|
|
151
151
|
return { [sub.table]: entities.map((e) => e.entity) };
|
|
152
152
|
}
|
|
153
|
-
|
|
154
|
-
|
|
153
|
+
// Updates the sub order field type if it hasn't been set
|
|
154
|
+
// and returns the type. We have to wait until the attrs
|
|
155
|
+
// are loaded before we can determine the type.
|
|
156
|
+
function orderFieldTypeMutative(sub, createStore) {
|
|
157
|
+
var _a;
|
|
158
|
+
if (sub.orderFieldType) {
|
|
159
|
+
return sub.orderFieldType;
|
|
160
|
+
}
|
|
161
|
+
const orderFieldType = sub.orderField === 'serverCreatedAt'
|
|
162
|
+
? 'number'
|
|
163
|
+
: (_a = s.getAttrByFwdIdentName(createStore([]), sub.table, sub.orderField)) === null || _a === void 0 ? void 0 : _a['checked-data-type'];
|
|
164
|
+
sub.orderFieldType = orderFieldType;
|
|
165
|
+
return orderFieldType;
|
|
166
|
+
}
|
|
167
|
+
function sortEntitiesInPlace(sub, orderFieldType, entities) {
|
|
168
|
+
const dataType = orderFieldType;
|
|
155
169
|
if (sub.orderField === 'serverCreatedAt') {
|
|
156
170
|
entities.sort(sub.orderDirection === 'asc'
|
|
157
171
|
? function compareEntities(a, b) {
|
|
@@ -256,7 +270,7 @@ class SyncTable {
|
|
|
256
270
|
}
|
|
257
271
|
initSubscription(query, hash, cb) {
|
|
258
272
|
return __awaiter(this, void 0, void 0, function* () {
|
|
259
|
-
var _a, _b, _c, _d
|
|
273
|
+
var _a, _b, _c, _d;
|
|
260
274
|
// Wait for storage to load so that we know if we already have an existing subscription
|
|
261
275
|
yield this.subs.waitForKeyToLoad(hash);
|
|
262
276
|
const existingSub = this.subs.currentValue[hash];
|
|
@@ -274,9 +288,6 @@ class SyncTable {
|
|
|
274
288
|
const table = Object.keys(query)[0];
|
|
275
289
|
const orderBy = ((_d = (_c = query[table]) === null || _c === void 0 ? void 0 : _c.$) === null || _d === void 0 ? void 0 : _d.order) || { serverCreatedAt: 'asc' };
|
|
276
290
|
const [orderField, orderDirection] = Object.entries(orderBy)[0];
|
|
277
|
-
const orderFieldType = orderField === 'serverCreatedAt'
|
|
278
|
-
? 'number'
|
|
279
|
-
: (_e = s.getAttrByFwdIdentName(this.createStore([]), table, orderField)) === null || _e === void 0 ? void 0 : _e['checked-data-type'];
|
|
280
291
|
this.subs.updateInPlace((prev) => {
|
|
281
292
|
prev[hash] = {
|
|
282
293
|
query,
|
|
@@ -284,7 +295,6 @@ class SyncTable {
|
|
|
284
295
|
table,
|
|
285
296
|
orderDirection,
|
|
286
297
|
orderField,
|
|
287
|
-
orderFieldType,
|
|
288
298
|
createdAt: Date.now(),
|
|
289
299
|
updatedAt: Date.now(),
|
|
290
300
|
};
|
|
@@ -497,7 +507,8 @@ class SyncTable {
|
|
|
497
507
|
removed.push(entities[idx].entity);
|
|
498
508
|
entities.splice(idx, 1);
|
|
499
509
|
}
|
|
500
|
-
|
|
510
|
+
const orderFieldType = orderFieldTypeMutative(sub, this.createStore);
|
|
511
|
+
sortEntitiesInPlace(sub, orderFieldType, entities);
|
|
501
512
|
this.notifyCbs(hash, {
|
|
502
513
|
type: CallbackEventType.SyncTransaction,
|
|
503
514
|
data: subData(sub, (_c = sub.values) === null || _c === void 0 ? void 0 : _c.entities),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncTable.js","sourceRoot":"","sources":["../../src/SyncTable.ts"],"names":[],"mappings":"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","sourcesContent":["import { PersistedObject } from './utils/PersistedObject.ts';\nimport * as s from './store.js';\nimport weakHash from './utils/weakHash.ts';\nimport uuid from './utils/uuid.ts';\nimport { Logger } from './Reactor.js';\nimport instaql, { compareOrder } from './instaql.js';\nimport { InstaQLResponse, ValidQuery } from './queryTypes.ts';\nimport { EntitiesDef, IContainEntitiesAndLinks } from './schemaTypes.ts';\nimport { StorageInterface } from './index.ts';\n\ntype SubState = {\n txId?: number;\n subscriptionId: string;\n token: string;\n};\n\ntype Sub = {\n query: any;\n hash: string;\n table: string;\n orderField: string;\n orderDirection: 'asc' | 'desc';\n orderFieldType: 'string' | 'number' | 'date' | 'boolean';\n state?: SubState;\n values?: {\n attrs: Record<string, any>;\n entities: Array<{ entity: any; store: any; serverCreatedAt: number }>;\n };\n createdAt: number;\n updatedAt: number;\n};\n\n// We could make a better type for this if we had a return type for s.toJSON\ntype SubInStorage = Sub;\n\ntype StartMsg = {\n op: 'start-sync';\n q: string;\n};\n\ntype EndMsg = {\n op: 'remove-sync';\n 'subscription-id': string;\n 'keep-subscription': boolean;\n};\n\ntype ResyncMsg = {\n op: 'resync-table';\n 'subscription-id': string;\n 'tx-id': number;\n token: string;\n};\n\ntype SendMsg = StartMsg | EndMsg | ResyncMsg;\n\ntype StartSyncOkMsg = {\n 'subscription-id': string;\n 'client-event-id': string;\n q: string;\n token: string;\n};\n\ntype Triple = [string, string, any, number];\n\ntype SyncLoadBatchMsg = {\n 'subscription-id': string;\n 'join-rows': Array<Triple[]>;\n};\n\ntype SyncInitFinishMsg = {\n 'subscription-id': string;\n 'tx-id': number;\n};\n\ntype SyncUpdateTriplesMsg = {\n 'subscription-id': string;\n txes: {\n 'tx-id': number;\n changes: { action: 'added' | 'removed'; triple: Triple }[];\n }[];\n};\n\ntype TrySend = (eventId: string, msg: SendMsg) => void;\n\ntype Config = { useDateObjects: boolean };\n\n// Modifies the data in place because it comes directly from storage\nfunction syncSubFromStorage(sub: SubInStorage, useDateObjects: boolean): Sub {\n const values = sub.values;\n if (values) {\n for (const e of values.entities || []) {\n e.store.useDateObjects = useDateObjects;\n e.store.attrs = values.attrs;\n e.store = s.fromJSON(e.store);\n }\n }\n\n return sub;\n}\n\nfunction syncSubToStorage(_k: string, sub: Sub): SubInStorage {\n if (sub.values?.entities) {\n const entities = [];\n for (const e of sub.values?.entities) {\n const store = s.toJSON(e.store);\n // We'll store the attrs once on values, and put the\n // attrs back into the store on hydration\n delete store['attrs'];\n entities.push({ ...e, store });\n }\n return { ...sub, values: { ...sub.values, entities } };\n } else {\n return sub;\n }\n}\n\nfunction onMergeSub(\n _key: string,\n storageSub: SubInStorage | null,\n inMemorySub: Sub | null,\n): Sub {\n const storageTxId = storageSub?.state.txId;\n const memoryTxId = inMemorySub?.state.txId;\n\n if (storageTxId && (!memoryTxId || storageTxId > memoryTxId)) {\n return storageSub;\n }\n\n if (memoryTxId && (!storageTxId || memoryTxId > storageTxId)) {\n return inMemorySub;\n }\n\n return storageSub || inMemorySub;\n}\n\nfunction queryEntity(sub: Sub, store: any) {\n const res = instaql({ store, pageInfo: null, aggregate: null }, sub.query);\n return res.data[sub.table][0];\n}\n\nfunction getServerCreatedAt(sub: Sub, store: any, entityId: string): number {\n const aid = s.getAttrByFwdIdentName(store, sub.table, 'id')?.id;\n if (!aid) {\n return -1;\n }\n const t = s.getInMap(store.eav, [entityId, aid, entityId]);\n if (!t) {\n return -1;\n }\n return t[3];\n}\n\nfunction applyChangesToStore(\n store: any,\n changes: SyncUpdateTriplesMsg['txes'][number]['changes'],\n): void {\n for (const { action, triple } of changes) {\n switch (action) {\n case 'added':\n s.addTriple(store, triple);\n break;\n case 'removed':\n s.retractTriple(store, triple);\n break;\n }\n }\n}\n\nfunction changedFieldsOfChanges(\n store: any,\n changes: SyncUpdateTriplesMsg['txes'][number]['changes'],\n): {\n [eid: string]: SyncTransaction<\n any,\n any,\n any\n >['updated'][number]['changedFields'];\n} {\n // This will be more complicated when we include links, we can either add a\n // changedLinks field or we can have something like 'bookshelves.title`\n const changedFields = {};\n for (const { action, triple } of changes) {\n const [e, a, v] = triple;\n const field = store.attrs[a]?.['forward-identity']?.[2];\n if (!field) continue;\n\n const fields = changedFields[e] ?? {};\n changedFields[e] = fields;\n\n const oldNew = fields[field] ?? {};\n fields[field] = oldNew;\n\n switch (action) {\n case 'added':\n oldNew.newValue = v;\n break;\n case 'removed':\n // Only take the first thing that was removed, in case we modified things in the middle\n if (oldNew.oldValue === undefined) {\n oldNew.oldValue = v;\n }\n break;\n }\n }\n return changedFields;\n}\n\nfunction subData(sub: Sub, entities: NonNullable<Sub['values']['entities']>) {\n return { [sub.table]: entities.map((e) => e.entity) };\n}\n\nfunction sortEntitiesInPlace(\n sub: Sub,\n entities: NonNullable<Sub['values']['entities']>,\n) {\n const dataType = sub.orderFieldType;\n if (sub.orderField === 'serverCreatedAt') {\n entities.sort(\n sub.orderDirection === 'asc'\n ? function compareEntities(a, b) {\n return compareOrder(\n a.entity.id,\n a.serverCreatedAt,\n b.entity.id,\n b.serverCreatedAt,\n dataType,\n );\n }\n : function compareEntities(b, a) {\n return compareOrder(\n a.entity.id,\n a.serverCreatedAt,\n b.entity.id,\n b.serverCreatedAt,\n dataType,\n );\n },\n );\n return;\n }\n\n const field = sub.orderField;\n\n entities.sort(\n sub.orderDirection === 'asc'\n ? function compareEntities(a, b) {\n return compareOrder(\n a.entity.id,\n a.entity[field],\n b.entity.id,\n b.entity[field],\n dataType,\n );\n }\n : function compareEntities(b, a) {\n return compareOrder(\n a.entity.id,\n a.entity[field],\n b.entity.id,\n b.entity[field],\n dataType,\n );\n },\n );\n}\n\nexport enum CallbackEventType {\n InitialSyncBatch = 'InitialSyncBatch',\n InitialSyncComplete = 'InitialSyncComplete',\n LoadFromStorage = 'LoadFromStorage',\n SyncTransaction = 'SyncTransaction',\n Error = 'Error',\n}\n\ntype QueryEntities<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> = InstaQLResponse<Schema, Q, UseDates>[keyof InstaQLResponse<\n Schema,\n Q,\n UseDates\n>];\n\ntype QueryEntity<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> = QueryEntities<Schema, Q, UseDates> extends (infer E)[] ? E : never;\n\ntype ChangedFields<Entity> = {\n [K in keyof Entity]?: {\n oldValue: Entity[K];\n newValue: Entity[K];\n };\n};\n\nexport interface BaseCallbackEvent<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> {\n type: CallbackEventType;\n data: InstaQLResponse<Schema, Q, UseDates>;\n}\n\nexport interface InitialSyncBatch<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> extends BaseCallbackEvent<Schema, Q, UseDates> {\n type: CallbackEventType.InitialSyncBatch;\n batch: QueryEntities<Schema, Q, UseDates>;\n}\n\nexport interface InitialSyncComplete<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> extends BaseCallbackEvent<Schema, Q, UseDates> {\n type: CallbackEventType.InitialSyncComplete;\n}\n\nexport interface SyncTransaction<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> extends BaseCallbackEvent<Schema, Q, UseDates> {\n type: CallbackEventType.SyncTransaction;\n added: QueryEntities<Schema, Q, UseDates>;\n removed: QueryEntities<Schema, Q, UseDates>;\n updated: {\n oldEntity: QueryEntity<Schema, Q, UseDates>;\n newEntity: QueryEntity<Schema, Q, UseDates>;\n changedFields: ChangedFields<QueryEntity<Schema, Q, UseDates>>;\n }[];\n}\n\nexport interface LoadFromStorage<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> extends BaseCallbackEvent<Schema, Q, UseDates> {\n type: CallbackEventType.LoadFromStorage;\n}\n\nexport interface SetupError<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> extends BaseCallbackEvent<Schema, Q, UseDates> {\n type: CallbackEventType.Error;\n error: { message: string; hint?: any; type: string; status: number };\n}\n\nexport type CallbackEvent<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> =\n | InitialSyncBatch<Schema, Q, UseDates>\n | InitialSyncComplete<Schema, Q, UseDates>\n | SyncTransaction<Schema, Q, UseDates>\n | LoadFromStorage<Schema, Q, UseDates>\n | SetupError<Schema, Q, UseDates>;\n\nexport type SyncTableCallback<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> = (event: CallbackEvent<Schema, Q, UseDates>) => void;\n\nexport class SyncTable {\n private trySend: TrySend;\n private subs: PersistedObject<string, Sub, SubInStorage>;\n // Using any for the SyncCallback because we'd need Reactor to be typed\n private callbacks: { [hash: string]: SyncTableCallback<any, any, any>[] } =\n {};\n private config: Config;\n private idToHash: { [subscriptionId: string]: string } = {};\n private log: Logger;\n private createStore: (triples: Triple[]) => any;\n\n constructor(\n trySend: TrySend,\n storage: StorageInterface,\n config: Config,\n log: Logger,\n createStore: (triples: Triple[]) => any,\n ) {\n this.trySend = trySend;\n this.config = config;\n this.log = log;\n this.createStore = createStore;\n\n this.subs = new PersistedObject<string, Sub, SubInStorage>({\n persister: storage,\n merge: onMergeSub,\n serialize: syncSubToStorage,\n parse: (_key, x) => syncSubFromStorage(x, this.config.useDateObjects),\n objectSize: (sub) => sub.values?.entities.length || 0,\n logger: log,\n gc: {\n maxAgeMs: 1000 * 60 * 60 * 24 * 7 * 52, // 1 year\n maxEntries: 1000,\n // Size of each sub is the number of entity\n maxSize: 1_000_000, // 1 million entities\n },\n });\n }\n\n public beforeUnload() {\n this.subs.flush();\n }\n\n public subscribe(\n q: any,\n cb: SyncTableCallback<any, any, any>,\n ): (\n opts?: { keepSubscription?: boolean | null | undefined } | null | undefined,\n ) => void {\n const hash = weakHash(q);\n this.callbacks[hash] = this.callbacks[hash] || [];\n this.callbacks[hash].push(cb);\n\n this.initSubscription(q, hash, cb);\n\n return (opts?: { keepSubscription?: boolean | null | undefined }) => {\n this.unsubscribe(hash, cb, opts?.keepSubscription);\n };\n }\n\n private unsubscribe(\n hash: string,\n cb: SyncTableCallback<any, any, any>,\n keepSubscription: boolean | null | undefined,\n ) {\n const cbs = (this.callbacks[hash] || []).filter((x) => x !== cb);\n this.callbacks[hash] = cbs;\n\n if (!cbs.length) {\n delete this.callbacks[hash];\n const sub = this.subs.currentValue[hash];\n if (sub?.state) {\n this.clearSubscriptionData(sub.state.subscriptionId, keepSubscription);\n }\n if (!keepSubscription) {\n this.subs.updateInPlace((prev) => {\n delete prev[hash];\n });\n }\n }\n }\n\n private sendStart(query: string) {\n this.trySend(uuid(), {\n op: 'start-sync',\n q: query,\n });\n }\n\n private sendResync(sub: Sub, state: SubState) {\n // Make sure we can find the hash from the subscriptionId\n this.idToHash[state.subscriptionId] = sub.hash;\n this.trySend(state.subscriptionId, {\n op: 'resync-table',\n 'subscription-id': state.subscriptionId,\n 'tx-id': state.txId,\n token: state.token,\n });\n }\n\n private sendRemove(state: SubState, keepSubscription: boolean) {\n this.trySend(uuid(), {\n op: 'remove-sync',\n 'subscription-id': state.subscriptionId,\n 'keep-subscription': keepSubscription,\n });\n }\n\n private async initSubscription(\n query: any,\n hash: string,\n cb?: SyncTableCallback<any, any, any>,\n ) {\n // Wait for storage to load so that we know if we already have an existing subscription\n await this.subs.waitForKeyToLoad(hash);\n const existingSub = this.subs.currentValue[hash];\n\n if (existingSub && existingSub.state && existingSub.state.txId) {\n this.sendResync(existingSub, existingSub.state);\n\n if (existingSub.values?.entities && cb) {\n const k = Object.keys(query)[0];\n cb({\n type: CallbackEventType.LoadFromStorage,\n data: subData(existingSub, existingSub.values?.entities),\n });\n }\n\n return;\n }\n\n const table = Object.keys(query)[0];\n const orderBy = query[table]?.$?.order || { serverCreatedAt: 'asc' };\n const [orderField, orderDirection] = Object.entries(orderBy)[0] as [\n string,\n 'asc' | 'desc',\n ];\n\n const orderFieldType =\n orderField === 'serverCreatedAt'\n ? 'number'\n : s.getAttrByFwdIdentName(this.createStore([]), table, orderField)?.[\n 'checked-data-type'\n ];\n\n this.subs.updateInPlace((prev) => {\n prev[hash] = {\n query,\n hash: hash,\n table,\n orderDirection,\n orderField,\n orderFieldType,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n };\n });\n\n this.sendStart(query);\n }\n\n public async flushPending() {\n for (const hash of Object.keys(this.callbacks)) {\n await this.subs.waitForKeyToLoad(hash);\n const sub = this.subs.currentValue[hash];\n if (sub) {\n await this.initSubscription(sub.query, sub.hash);\n } else {\n this.log.error('Missing sub for hash in flushPending', hash);\n }\n }\n }\n\n public onStartSyncOk(msg: StartSyncOkMsg) {\n const subscriptionId = msg['subscription-id'];\n const q = msg.q;\n const hash = weakHash(q);\n\n this.idToHash[subscriptionId] = hash;\n\n this.subs.updateInPlace((prev) => {\n const sub = prev[hash];\n if (!sub) {\n this.log.error(\n 'Missing sub for hash',\n hash,\n 'subscription-id',\n subscriptionId,\n 'query',\n q,\n );\n return prev;\n }\n\n sub.state = {\n subscriptionId: subscriptionId,\n token: msg.token,\n };\n });\n }\n\n private notifyCbs(hash: string, event: CallbackEvent<any, any, any>) {\n for (const cb of this.callbacks[hash] || []) {\n cb(event);\n }\n }\n\n public onSyncLoadBatch(msg: SyncLoadBatchMsg) {\n const subscriptionId = msg['subscription-id'];\n const joinRows = msg['join-rows'];\n const hash = this.idToHash[subscriptionId];\n if (!hash) {\n this.log.error('Missing hash for subscription', msg);\n return;\n }\n\n const batch = [];\n const sub = this.subs.currentValue[hash];\n if (!sub) {\n this.log.error('Missing sub for hash', hash, msg);\n return;\n }\n\n const values = sub.values ?? {\n entities: [],\n attrs: this.createStore([]).attrs,\n };\n sub.values = values;\n const entities = values.entities;\n\n for (const entRows of joinRows) {\n const store = this.createStore(entRows);\n values.attrs = store.attrs;\n const entity = queryEntity(sub, store);\n entities.push({\n store,\n entity,\n serverCreatedAt: getServerCreatedAt(sub, store, entity.id),\n });\n batch.push(entity);\n }\n\n this.subs.updateInPlace((prev) => {\n prev[hash] = sub;\n // Make sure we write a field or mutative won't\n // see the change because sub === prev[hash]\n prev[hash].updatedAt = Date.now();\n });\n\n if (sub.values) {\n this.notifyCbs(hash, {\n type: CallbackEventType.InitialSyncBatch,\n data: subData(sub, sub.values.entities),\n batch,\n });\n }\n }\n\n public onSyncInitFinish(msg: SyncInitFinishMsg) {\n const subscriptionId = msg['subscription-id'];\n const hash = this.idToHash[subscriptionId];\n if (!hash) {\n this.log.error('Missing hash for subscription', msg);\n return;\n }\n this.subs.updateInPlace((prev) => {\n const sub = prev[hash];\n if (!sub) {\n this.log.error('Missing sub for hash', hash, msg);\n return;\n }\n const state = sub.state;\n if (!state) {\n this.log.error('Sub never set init, missing result', sub, msg);\n return prev;\n }\n state.txId = msg['tx-id'];\n sub.updatedAt = Date.now();\n });\n\n const sub = this.subs.currentValue[hash];\n\n if (sub) {\n this.notifyCbs(hash, {\n type: CallbackEventType.InitialSyncComplete,\n data: subData(sub, sub.values?.entities || []),\n });\n }\n }\n\n public onSyncUpdateTriples(msg: SyncUpdateTriplesMsg) {\n const subscriptionId = msg['subscription-id'];\n const hash = this.idToHash[subscriptionId];\n if (!hash) {\n this.log.error('Missing hash for subscription', msg);\n return;\n }\n\n const sub = this.subs.currentValue[hash];\n if (!sub) {\n this.log.error('Missing sub for hash', hash, msg);\n return;\n }\n\n const state = sub.state;\n if (!state) {\n this.log.error('Missing state for sub', sub, msg);\n return;\n }\n\n for (const tx of msg.txes) {\n if (state.txId >= tx['tx-id']) {\n continue;\n }\n state.txId = tx['tx-id'];\n const idxesToDelete = [];\n // Note: this won't work as well when links are involved\n const byEid: {\n [eid: string]: SyncUpdateTriplesMsg['txes'][number]['changes'];\n } = {};\n for (const change of tx.changes) {\n const eidChanges = byEid[change.triple[0]] ?? [];\n byEid[change.triple[0]] = eidChanges;\n eidChanges.push(change);\n }\n\n const values = sub.values ?? {\n entities: [],\n attrs: this.createStore([]).attrs,\n };\n const entities = values.entities;\n sub.values = values;\n\n const updated: SyncTransaction<any, any, any>['updated'] = [];\n // Update the existing stores, if we already know about this entity\n eidLoop: for (const [eid, changes] of Object.entries(byEid)) {\n for (const [entIdx, ent] of Object.entries(entities)) {\n if (s.hasEntity(ent.store, eid)) {\n applyChangesToStore(ent.store, changes);\n const entity = queryEntity(sub, ent.store);\n const changedFields = changedFieldsOfChanges(ent.store, changes)[\n eid\n ];\n for (const [k, { oldValue, newValue }] of Object.entries(\n changedFields || {},\n )) {\n if (oldValue === newValue) {\n delete changedFields[k];\n }\n }\n if (entity) {\n updated.push({\n oldEntity: ent.entity,\n newEntity: entity,\n changedFields: changedFields || {},\n });\n ent.entity = entity;\n } else {\n idxesToDelete.push(entIdx);\n }\n delete byEid[eid];\n continue eidLoop;\n }\n }\n }\n\n const added = [];\n // If we have anything left in byEid, then this must be a new entity we don't know about\n for (const [_eid, changes] of Object.entries(byEid)) {\n const store = this.createStore([]);\n values.attrs = store.attrs;\n applyChangesToStore(store, changes);\n const entity = queryEntity(sub, store);\n if (!entity) {\n this.log.error('No entity found after applying change', {\n sub,\n changes,\n store,\n });\n continue;\n }\n entities.push({\n store,\n entity,\n serverCreatedAt: getServerCreatedAt(sub, store, entity.id),\n });\n added.push(entity);\n }\n\n const removed = [];\n\n for (const idx of idxesToDelete.sort().reverse()) {\n removed.push(entities[idx].entity);\n entities.splice(idx, 1);\n }\n\n sortEntitiesInPlace(sub, entities);\n this.notifyCbs(hash, {\n type: CallbackEventType.SyncTransaction,\n data: subData(sub, sub.values?.entities),\n added,\n removed,\n updated,\n });\n }\n this.subs.updateInPlace((prev) => {\n prev[hash] = sub;\n // Make sure we write a field or mutative won't\n // see the change because sub === prev[hash]\n prev[hash].updatedAt = Date.now();\n });\n }\n\n private clearSubscriptionData(\n subscriptionId: string,\n keepSubscription: boolean,\n ) {\n const hash = this.idToHash[subscriptionId];\n if (hash) {\n delete this.idToHash[subscriptionId];\n const sub = this.subs.currentValue[hash];\n if (sub.state) {\n this.sendRemove(sub.state, keepSubscription);\n }\n if (keepSubscription) {\n this.subs.unloadKey(hash);\n } else {\n this.subs.updateInPlace((prev) => {\n delete prev[hash];\n });\n }\n if (sub) {\n return sub;\n }\n }\n }\n\n public onStartSyncError(msg: {\n op: 'error';\n 'original-event': StartMsg;\n 'client-event-id': string;\n status: number;\n type: string;\n message?: string;\n hint?: any;\n }) {\n const hash = weakHash(msg['original-event']['q']);\n const error = {\n message: msg.message || 'Uh-oh, something went wrong. Ping Joe & Stopa.',\n status: msg.status,\n type: msg.type,\n hint: msg.hint,\n };\n\n const k = Object.keys(msg['original-event']['q'])[0];\n this.notifyCbs(hash, {\n type: CallbackEventType.Error,\n data: { [k]: [] },\n error,\n });\n }\n\n public onResyncError(msg: {\n op: 'error';\n 'original-event': ResyncMsg;\n status: number;\n type: string;\n }) {\n // Clear the subscription and start from scrath on any resync error\n // This can happen if the auth changed and we need to refetch with the\n // new auth or if the subscription is too far behind.\n const subscriptionId = msg['original-event']['subscription-id'];\n const removedSub = this.clearSubscriptionData(subscriptionId, false);\n if (removedSub) {\n this.initSubscription(removedSub.query, removedSub.hash);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SyncTable.js","sourceRoot":"","sources":["../../src/SyncTable.ts"],"names":[],"mappings":"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","sourcesContent":["import { PersistedObject } from './utils/PersistedObject.ts';\nimport * as s from './store.js';\nimport weakHash from './utils/weakHash.ts';\nimport uuid from './utils/uuid.ts';\nimport { Logger } from './Reactor.js';\nimport instaql, { compareOrder } from './instaql.js';\nimport { InstaQLResponse, ValidQuery } from './queryTypes.ts';\nimport { EntitiesDef, IContainEntitiesAndLinks } from './schemaTypes.ts';\nimport { StorageInterface } from './index.ts';\n\ntype SubState = {\n txId?: number;\n subscriptionId: string;\n token: string;\n};\n\ntype Sub = {\n query: any;\n hash: string;\n table: string;\n orderField: string;\n orderDirection: 'asc' | 'desc';\n orderFieldType?: 'string' | 'number' | 'date' | 'boolean';\n state?: SubState;\n values?: {\n attrs: Record<string, any>;\n entities: Array<{ entity: any; store: any; serverCreatedAt: number }>;\n };\n createdAt: number;\n updatedAt: number;\n};\n\n// We could make a better type for this if we had a return type for s.toJSON\ntype SubInStorage = Sub;\n\ntype StartMsg = {\n op: 'start-sync';\n q: string;\n};\n\ntype EndMsg = {\n op: 'remove-sync';\n 'subscription-id': string;\n 'keep-subscription': boolean;\n};\n\ntype ResyncMsg = {\n op: 'resync-table';\n 'subscription-id': string;\n 'tx-id': number;\n token: string;\n};\n\ntype SendMsg = StartMsg | EndMsg | ResyncMsg;\n\ntype StartSyncOkMsg = {\n 'subscription-id': string;\n 'client-event-id': string;\n q: string;\n token: string;\n};\n\ntype Triple = [string, string, any, number];\n\ntype SyncLoadBatchMsg = {\n 'subscription-id': string;\n 'join-rows': Array<Triple[]>;\n};\n\ntype SyncInitFinishMsg = {\n 'subscription-id': string;\n 'tx-id': number;\n};\n\ntype SyncUpdateTriplesMsg = {\n 'subscription-id': string;\n txes: {\n 'tx-id': number;\n changes: { action: 'added' | 'removed'; triple: Triple }[];\n }[];\n};\n\ntype TrySend = (eventId: string, msg: SendMsg) => void;\n\ntype Config = { useDateObjects: boolean };\n\n// Modifies the data in place because it comes directly from storage\nfunction syncSubFromStorage(sub: SubInStorage, useDateObjects: boolean): Sub {\n const values = sub.values;\n if (values) {\n for (const e of values.entities || []) {\n e.store.useDateObjects = useDateObjects;\n e.store.attrs = values.attrs;\n e.store = s.fromJSON(e.store);\n }\n }\n\n return sub;\n}\n\nfunction syncSubToStorage(_k: string, sub: Sub): SubInStorage {\n if (sub.values?.entities) {\n const entities = [];\n for (const e of sub.values?.entities) {\n const store = s.toJSON(e.store);\n // We'll store the attrs once on values, and put the\n // attrs back into the store on hydration\n delete store['attrs'];\n entities.push({ ...e, store });\n }\n return { ...sub, values: { ...sub.values, entities } };\n } else {\n return sub;\n }\n}\n\nfunction onMergeSub(\n _key: string,\n storageSub: SubInStorage | null,\n inMemorySub: Sub | null,\n): Sub {\n const storageTxId = storageSub?.state.txId;\n const memoryTxId = inMemorySub?.state.txId;\n\n if (storageTxId && (!memoryTxId || storageTxId > memoryTxId)) {\n return storageSub;\n }\n\n if (memoryTxId && (!storageTxId || memoryTxId > storageTxId)) {\n return inMemorySub;\n }\n\n return storageSub || inMemorySub;\n}\n\nfunction queryEntity(sub: Sub, store: any) {\n const res = instaql({ store, pageInfo: null, aggregate: null }, sub.query);\n return res.data[sub.table][0];\n}\n\nfunction getServerCreatedAt(sub: Sub, store: any, entityId: string): number {\n const aid = s.getAttrByFwdIdentName(store, sub.table, 'id')?.id;\n if (!aid) {\n return -1;\n }\n const t = s.getInMap(store.eav, [entityId, aid, entityId]);\n if (!t) {\n return -1;\n }\n return t[3];\n}\n\nfunction applyChangesToStore(\n store: any,\n changes: SyncUpdateTriplesMsg['txes'][number]['changes'],\n): void {\n for (const { action, triple } of changes) {\n switch (action) {\n case 'added':\n s.addTriple(store, triple);\n break;\n case 'removed':\n s.retractTriple(store, triple);\n break;\n }\n }\n}\n\nfunction changedFieldsOfChanges(\n store: any,\n changes: SyncUpdateTriplesMsg['txes'][number]['changes'],\n): {\n [eid: string]: SyncTransaction<\n any,\n any,\n any\n >['updated'][number]['changedFields'];\n} {\n // This will be more complicated when we include links, we can either add a\n // changedLinks field or we can have something like 'bookshelves.title`\n const changedFields = {};\n for (const { action, triple } of changes) {\n const [e, a, v] = triple;\n const field = store.attrs[a]?.['forward-identity']?.[2];\n if (!field) continue;\n\n const fields = changedFields[e] ?? {};\n changedFields[e] = fields;\n\n const oldNew = fields[field] ?? {};\n fields[field] = oldNew;\n\n switch (action) {\n case 'added':\n oldNew.newValue = v;\n break;\n case 'removed':\n // Only take the first thing that was removed, in case we modified things in the middle\n if (oldNew.oldValue === undefined) {\n oldNew.oldValue = v;\n }\n break;\n }\n }\n return changedFields;\n}\n\nfunction subData(sub: Sub, entities: NonNullable<Sub['values']['entities']>) {\n return { [sub.table]: entities.map((e) => e.entity) };\n}\n\n// Updates the sub order field type if it hasn't been set\n// and returns the type. We have to wait until the attrs\n// are loaded before we can determine the type.\nfunction orderFieldTypeMutative(sub: Sub, createStore) {\n if (sub.orderFieldType) {\n return sub.orderFieldType;\n }\n const orderFieldType =\n sub.orderField === 'serverCreatedAt'\n ? 'number'\n : s.getAttrByFwdIdentName(createStore([]), sub.table, sub.orderField)?.[\n 'checked-data-type'\n ];\n\n sub.orderFieldType = orderFieldType;\n return orderFieldType;\n}\n\nfunction sortEntitiesInPlace(\n sub: Sub,\n orderFieldType: NonNullable<Sub['orderFieldType']>,\n entities: NonNullable<Sub['values']['entities']>,\n) {\n const dataType = orderFieldType;\n if (sub.orderField === 'serverCreatedAt') {\n entities.sort(\n sub.orderDirection === 'asc'\n ? function compareEntities(a, b) {\n return compareOrder(\n a.entity.id,\n a.serverCreatedAt,\n b.entity.id,\n b.serverCreatedAt,\n dataType,\n );\n }\n : function compareEntities(b, a) {\n return compareOrder(\n a.entity.id,\n a.serverCreatedAt,\n b.entity.id,\n b.serverCreatedAt,\n dataType,\n );\n },\n );\n return;\n }\n\n const field = sub.orderField;\n\n entities.sort(\n sub.orderDirection === 'asc'\n ? function compareEntities(a, b) {\n return compareOrder(\n a.entity.id,\n a.entity[field],\n b.entity.id,\n b.entity[field],\n dataType,\n );\n }\n : function compareEntities(b, a) {\n return compareOrder(\n a.entity.id,\n a.entity[field],\n b.entity.id,\n b.entity[field],\n dataType,\n );\n },\n );\n}\n\nexport enum CallbackEventType {\n InitialSyncBatch = 'InitialSyncBatch',\n InitialSyncComplete = 'InitialSyncComplete',\n LoadFromStorage = 'LoadFromStorage',\n SyncTransaction = 'SyncTransaction',\n Error = 'Error',\n}\n\ntype QueryEntities<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> = InstaQLResponse<Schema, Q, UseDates>[keyof InstaQLResponse<\n Schema,\n Q,\n UseDates\n>];\n\ntype QueryEntity<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> = QueryEntities<Schema, Q, UseDates> extends (infer E)[] ? E : never;\n\ntype ChangedFields<Entity> = {\n [K in keyof Entity]?: {\n oldValue: Entity[K];\n newValue: Entity[K];\n };\n};\n\nexport interface BaseCallbackEvent<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> {\n type: CallbackEventType;\n data: InstaQLResponse<Schema, Q, UseDates>;\n}\n\nexport interface InitialSyncBatch<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> extends BaseCallbackEvent<Schema, Q, UseDates> {\n type: CallbackEventType.InitialSyncBatch;\n batch: QueryEntities<Schema, Q, UseDates>;\n}\n\nexport interface InitialSyncComplete<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> extends BaseCallbackEvent<Schema, Q, UseDates> {\n type: CallbackEventType.InitialSyncComplete;\n}\n\nexport interface SyncTransaction<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> extends BaseCallbackEvent<Schema, Q, UseDates> {\n type: CallbackEventType.SyncTransaction;\n added: QueryEntities<Schema, Q, UseDates>;\n removed: QueryEntities<Schema, Q, UseDates>;\n updated: {\n oldEntity: QueryEntity<Schema, Q, UseDates>;\n newEntity: QueryEntity<Schema, Q, UseDates>;\n changedFields: ChangedFields<QueryEntity<Schema, Q, UseDates>>;\n }[];\n}\n\nexport interface LoadFromStorage<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> extends BaseCallbackEvent<Schema, Q, UseDates> {\n type: CallbackEventType.LoadFromStorage;\n}\n\nexport interface SetupError<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> extends BaseCallbackEvent<Schema, Q, UseDates> {\n type: CallbackEventType.Error;\n error: { message: string; hint?: any; type: string; status: number };\n}\n\nexport type CallbackEvent<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> =\n | InitialSyncBatch<Schema, Q, UseDates>\n | InitialSyncComplete<Schema, Q, UseDates>\n | SyncTransaction<Schema, Q, UseDates>\n | LoadFromStorage<Schema, Q, UseDates>\n | SetupError<Schema, Q, UseDates>;\n\nexport type SyncTableCallback<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> = (event: CallbackEvent<Schema, Q, UseDates>) => void;\n\nexport class SyncTable {\n private trySend: TrySend;\n private subs: PersistedObject<string, Sub, SubInStorage>;\n // Using any for the SyncCallback because we'd need Reactor to be typed\n private callbacks: { [hash: string]: SyncTableCallback<any, any, any>[] } =\n {};\n private config: Config;\n private idToHash: { [subscriptionId: string]: string } = {};\n private log: Logger;\n private createStore: (triples: Triple[]) => any;\n\n constructor(\n trySend: TrySend,\n storage: StorageInterface,\n config: Config,\n log: Logger,\n createStore: (triples: Triple[]) => any,\n ) {\n this.trySend = trySend;\n this.config = config;\n this.log = log;\n this.createStore = createStore;\n\n this.subs = new PersistedObject<string, Sub, SubInStorage>({\n persister: storage,\n merge: onMergeSub,\n serialize: syncSubToStorage,\n parse: (_key, x) => syncSubFromStorage(x, this.config.useDateObjects),\n objectSize: (sub) => sub.values?.entities.length || 0,\n logger: log,\n gc: {\n maxAgeMs: 1000 * 60 * 60 * 24 * 7 * 52, // 1 year\n maxEntries: 1000,\n // Size of each sub is the number of entity\n maxSize: 1_000_000, // 1 million entities\n },\n });\n }\n\n public beforeUnload() {\n this.subs.flush();\n }\n\n public subscribe(\n q: any,\n cb: SyncTableCallback<any, any, any>,\n ): (\n opts?: { keepSubscription?: boolean | null | undefined } | null | undefined,\n ) => void {\n const hash = weakHash(q);\n this.callbacks[hash] = this.callbacks[hash] || [];\n this.callbacks[hash].push(cb);\n\n this.initSubscription(q, hash, cb);\n\n return (opts?: { keepSubscription?: boolean | null | undefined }) => {\n this.unsubscribe(hash, cb, opts?.keepSubscription);\n };\n }\n\n private unsubscribe(\n hash: string,\n cb: SyncTableCallback<any, any, any>,\n keepSubscription: boolean | null | undefined,\n ) {\n const cbs = (this.callbacks[hash] || []).filter((x) => x !== cb);\n this.callbacks[hash] = cbs;\n\n if (!cbs.length) {\n delete this.callbacks[hash];\n const sub = this.subs.currentValue[hash];\n if (sub?.state) {\n this.clearSubscriptionData(sub.state.subscriptionId, keepSubscription);\n }\n if (!keepSubscription) {\n this.subs.updateInPlace((prev) => {\n delete prev[hash];\n });\n }\n }\n }\n\n private sendStart(query: string) {\n this.trySend(uuid(), {\n op: 'start-sync',\n q: query,\n });\n }\n\n private sendResync(sub: Sub, state: SubState) {\n // Make sure we can find the hash from the subscriptionId\n this.idToHash[state.subscriptionId] = sub.hash;\n this.trySend(state.subscriptionId, {\n op: 'resync-table',\n 'subscription-id': state.subscriptionId,\n 'tx-id': state.txId,\n token: state.token,\n });\n }\n\n private sendRemove(state: SubState, keepSubscription: boolean) {\n this.trySend(uuid(), {\n op: 'remove-sync',\n 'subscription-id': state.subscriptionId,\n 'keep-subscription': keepSubscription,\n });\n }\n\n private async initSubscription(\n query: any,\n hash: string,\n cb?: SyncTableCallback<any, any, any>,\n ) {\n // Wait for storage to load so that we know if we already have an existing subscription\n await this.subs.waitForKeyToLoad(hash);\n const existingSub = this.subs.currentValue[hash];\n\n if (existingSub && existingSub.state && existingSub.state.txId) {\n this.sendResync(existingSub, existingSub.state);\n\n if (existingSub.values?.entities && cb) {\n const k = Object.keys(query)[0];\n cb({\n type: CallbackEventType.LoadFromStorage,\n data: subData(existingSub, existingSub.values?.entities),\n });\n }\n\n return;\n }\n\n const table = Object.keys(query)[0];\n const orderBy = query[table]?.$?.order || { serverCreatedAt: 'asc' };\n const [orderField, orderDirection] = Object.entries(orderBy)[0] as [\n string,\n 'asc' | 'desc',\n ];\n\n this.subs.updateInPlace((prev) => {\n prev[hash] = {\n query,\n hash: hash,\n table,\n orderDirection,\n orderField,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n };\n });\n\n this.sendStart(query);\n }\n\n public async flushPending() {\n for (const hash of Object.keys(this.callbacks)) {\n await this.subs.waitForKeyToLoad(hash);\n const sub = this.subs.currentValue[hash];\n if (sub) {\n await this.initSubscription(sub.query, sub.hash);\n } else {\n this.log.error('Missing sub for hash in flushPending', hash);\n }\n }\n }\n\n public onStartSyncOk(msg: StartSyncOkMsg) {\n const subscriptionId = msg['subscription-id'];\n const q = msg.q;\n const hash = weakHash(q);\n\n this.idToHash[subscriptionId] = hash;\n\n this.subs.updateInPlace((prev) => {\n const sub = prev[hash];\n if (!sub) {\n this.log.error(\n 'Missing sub for hash',\n hash,\n 'subscription-id',\n subscriptionId,\n 'query',\n q,\n );\n return prev;\n }\n\n sub.state = {\n subscriptionId: subscriptionId,\n token: msg.token,\n };\n });\n }\n\n private notifyCbs(hash: string, event: CallbackEvent<any, any, any>) {\n for (const cb of this.callbacks[hash] || []) {\n cb(event);\n }\n }\n\n public onSyncLoadBatch(msg: SyncLoadBatchMsg) {\n const subscriptionId = msg['subscription-id'];\n const joinRows = msg['join-rows'];\n const hash = this.idToHash[subscriptionId];\n if (!hash) {\n this.log.error('Missing hash for subscription', msg);\n return;\n }\n\n const batch = [];\n const sub = this.subs.currentValue[hash];\n if (!sub) {\n this.log.error('Missing sub for hash', hash, msg);\n return;\n }\n\n const values = sub.values ?? {\n entities: [],\n attrs: this.createStore([]).attrs,\n };\n sub.values = values;\n const entities = values.entities;\n\n for (const entRows of joinRows) {\n const store = this.createStore(entRows);\n values.attrs = store.attrs;\n const entity = queryEntity(sub, store);\n entities.push({\n store,\n entity,\n serverCreatedAt: getServerCreatedAt(sub, store, entity.id),\n });\n batch.push(entity);\n }\n\n this.subs.updateInPlace((prev) => {\n prev[hash] = sub;\n // Make sure we write a field or mutative won't\n // see the change because sub === prev[hash]\n prev[hash].updatedAt = Date.now();\n });\n\n if (sub.values) {\n this.notifyCbs(hash, {\n type: CallbackEventType.InitialSyncBatch,\n data: subData(sub, sub.values.entities),\n batch,\n });\n }\n }\n\n public onSyncInitFinish(msg: SyncInitFinishMsg) {\n const subscriptionId = msg['subscription-id'];\n const hash = this.idToHash[subscriptionId];\n if (!hash) {\n this.log.error('Missing hash for subscription', msg);\n return;\n }\n this.subs.updateInPlace((prev) => {\n const sub = prev[hash];\n if (!sub) {\n this.log.error('Missing sub for hash', hash, msg);\n return;\n }\n const state = sub.state;\n if (!state) {\n this.log.error('Sub never set init, missing result', sub, msg);\n return prev;\n }\n state.txId = msg['tx-id'];\n sub.updatedAt = Date.now();\n });\n\n const sub = this.subs.currentValue[hash];\n\n if (sub) {\n this.notifyCbs(hash, {\n type: CallbackEventType.InitialSyncComplete,\n data: subData(sub, sub.values?.entities || []),\n });\n }\n }\n\n public onSyncUpdateTriples(msg: SyncUpdateTriplesMsg) {\n const subscriptionId = msg['subscription-id'];\n const hash = this.idToHash[subscriptionId];\n if (!hash) {\n this.log.error('Missing hash for subscription', msg);\n return;\n }\n\n const sub = this.subs.currentValue[hash];\n if (!sub) {\n this.log.error('Missing sub for hash', hash, msg);\n return;\n }\n\n const state = sub.state;\n if (!state) {\n this.log.error('Missing state for sub', sub, msg);\n return;\n }\n\n for (const tx of msg.txes) {\n if (state.txId >= tx['tx-id']) {\n continue;\n }\n state.txId = tx['tx-id'];\n const idxesToDelete = [];\n // Note: this won't work as well when links are involved\n const byEid: {\n [eid: string]: SyncUpdateTriplesMsg['txes'][number]['changes'];\n } = {};\n for (const change of tx.changes) {\n const eidChanges = byEid[change.triple[0]] ?? [];\n byEid[change.triple[0]] = eidChanges;\n eidChanges.push(change);\n }\n\n const values = sub.values ?? {\n entities: [],\n attrs: this.createStore([]).attrs,\n };\n const entities = values.entities;\n sub.values = values;\n\n const updated: SyncTransaction<any, any, any>['updated'] = [];\n // Update the existing stores, if we already know about this entity\n eidLoop: for (const [eid, changes] of Object.entries(byEid)) {\n for (const [entIdx, ent] of Object.entries(entities)) {\n if (s.hasEntity(ent.store, eid)) {\n applyChangesToStore(ent.store, changes);\n const entity = queryEntity(sub, ent.store);\n const changedFields = changedFieldsOfChanges(ent.store, changes)[\n eid\n ];\n for (const [k, { oldValue, newValue }] of Object.entries(\n changedFields || {},\n )) {\n if (oldValue === newValue) {\n delete changedFields[k];\n }\n }\n if (entity) {\n updated.push({\n oldEntity: ent.entity,\n newEntity: entity,\n changedFields: changedFields || {},\n });\n ent.entity = entity;\n } else {\n idxesToDelete.push(entIdx);\n }\n delete byEid[eid];\n continue eidLoop;\n }\n }\n }\n\n const added = [];\n // If we have anything left in byEid, then this must be a new entity we don't know about\n for (const [_eid, changes] of Object.entries(byEid)) {\n const store = this.createStore([]);\n values.attrs = store.attrs;\n applyChangesToStore(store, changes);\n const entity = queryEntity(sub, store);\n if (!entity) {\n this.log.error('No entity found after applying change', {\n sub,\n changes,\n store,\n });\n continue;\n }\n entities.push({\n store,\n entity,\n serverCreatedAt: getServerCreatedAt(sub, store, entity.id),\n });\n added.push(entity);\n }\n\n const removed = [];\n\n for (const idx of idxesToDelete.sort().reverse()) {\n removed.push(entities[idx].entity);\n entities.splice(idx, 1);\n }\n\n const orderFieldType = orderFieldTypeMutative(sub, this.createStore);\n\n sortEntitiesInPlace(sub, orderFieldType, entities);\n this.notifyCbs(hash, {\n type: CallbackEventType.SyncTransaction,\n data: subData(sub, sub.values?.entities),\n added,\n removed,\n updated,\n });\n }\n this.subs.updateInPlace((prev) => {\n prev[hash] = sub;\n // Make sure we write a field or mutative won't\n // see the change because sub === prev[hash]\n prev[hash].updatedAt = Date.now();\n });\n }\n\n private clearSubscriptionData(\n subscriptionId: string,\n keepSubscription: boolean,\n ) {\n const hash = this.idToHash[subscriptionId];\n if (hash) {\n delete this.idToHash[subscriptionId];\n const sub = this.subs.currentValue[hash];\n if (sub.state) {\n this.sendRemove(sub.state, keepSubscription);\n }\n if (keepSubscription) {\n this.subs.unloadKey(hash);\n } else {\n this.subs.updateInPlace((prev) => {\n delete prev[hash];\n });\n }\n if (sub) {\n return sub;\n }\n }\n }\n\n public onStartSyncError(msg: {\n op: 'error';\n 'original-event': StartMsg;\n 'client-event-id': string;\n status: number;\n type: string;\n message?: string;\n hint?: any;\n }) {\n const hash = weakHash(msg['original-event']['q']);\n const error = {\n message: msg.message || 'Uh-oh, something went wrong. Ping Joe & Stopa.',\n status: msg.status,\n type: msg.type,\n hint: msg.hint,\n };\n\n const k = Object.keys(msg['original-event']['q'])[0];\n this.notifyCbs(hash, {\n type: CallbackEventType.Error,\n data: { [k]: [] },\n error,\n });\n }\n\n public onResyncError(msg: {\n op: 'error';\n 'original-event': ResyncMsg;\n status: number;\n type: string;\n }) {\n // Clear the subscription and start from scrath on any resync error\n // This can happen if the auth changed and we need to refetch with the\n // new auth or if the subscription is too far behind.\n const subscriptionId = msg['original-event']['subscription-id'];\n const removedSub = this.clearSubscriptionData(subscriptionId, false);\n if (removedSub) {\n this.initSubscription(removedSub.query, removedSub.hash);\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"AA8KA;;GAEG;AACH,6BAFwD,UAAU,SAArD,OAAQ,eAAe,EAAE,eAAgB;IA8DpD,sJAgHC;IA3KD,WAAM;IACN,mBAAiB;IACjB,qBAAoB;IACpB,eAA2B;IAE3B,8BAA8B;IAC9B,0CAAU;IAEV,8BAA8B;IAC9B,mCAAG;IAEH,wEAAwE;IACxE,UADW,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,GAAG,CAAC;QAAC,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;KAAE,CAAC,CAAC,CACtD;IACd,gFAAgF;IAChF,eADW,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC,CACzD;IACnB,eAAa;IACb,gBAAc;IACd,wBAAsB;IACtB,2BAAyB;IACzB,YAAO;IACP,qCAAkC;IAClC,yBAA2B;IAC3B,4BAAwB;IACxB,yBAAyB;IACzB,YADW,UAAU,CACV;IACX,4BAA4B;IAC5B,gBADW,aAAa,CACF;IAEtB,qCAAqC;IACrC,cADW,sBAAsB,CACpB;IACb,6BAA6B;IAC7B,OADW,OAAO,GAAG,IAAI,CACZ;IACb,qBAAsB;IACtB,mBAAqB;IACrB,yDAAyD;IACzD,wBADW,OAAO,CAAC,IAAI,GAAG;QAAC,KAAK,EAAE;YAAC,OAAO,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,CAAC,CACvB;IAE9B,+DAA+D;IAC/D,YADW,IAAI,GAAG,OAAO,sBAAsB,EAAE,SAAS,CACxC;IAElB,yCAAyC;IACzC,mBADU,gBAAgB,GAAG,SAAS,CACpB;IAElB,iEAAiE;IACjE,QADW,MAAM,CAAC,MAAM,EAAE;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAC,CAAC,CACjD;IACZ,sCAAsC;IACtC,oBADW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACV;IACxB,cAAe;IACf,uBAAqB;IACrB,mBAAoB;IACpB;;;;MAA4E;IAC5E,wBAAsB;IACtB,uBAAwB;IACxB,qBAAqB;IACrB,MADW,MAAM,CACZ;IACL,8BAAyB;IACzB,sCAAiC;IACjC,oCAAsC;IAYpC,qBAAwD;IAYxD,cAAmE;IAsCnE,sBAeC;IA0GH,sBAKC;IAxED,gCAOC;IAED;;;;MAMC;IAED,mCAIC;IAED,iCA0CC;IASD;;;;OAIG;IACH,2BAJW,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAI,OAAO,WACxD,MAAM,aACN;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAC,QA+B5E;IAED,wCAIC;IAED,aAAc,QAAG,EAAE,aAAQ,EAAE,cAAS,SAmBpC;IAEF,0CAgBC;IAED,4CA+OC;IA7NK,gBAAmC;IA+NzC,yBAEC;IAED,sCAMC;IAED;;;;OAIG;IACH,6BAJW,SAAS,GAAG,OAAO,WACnB,MAAM,YACN;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAC,QAoB3E;IAED,oCAqEC;IAED,oEAKC;IAED,4BAOC;IAKD,oBAAqB,MAAC,SAGpB;IAEF,0CASC;IAED;
|
|
1
|
+
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncTable.d.ts","sourceRoot":"","sources":["../../src/SyncTable.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA2B9C,KAAK,QAAQ,GAAG;IACd,EAAE,EAAE,YAAY,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,KAAK,MAAM,GAAG;IACZ,EAAE,EAAE,aAAa,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,EAAE,EAAE,cAAc,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7C,KAAK,cAAc,GAAG;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAE5C,KAAK,gBAAgB,GAAG;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;CAC9B,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE;YAAE,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC5D,EAAE,CAAC;CACL,CAAC;AAEF,KAAK,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;AAEvD,KAAK,MAAM,GAAG;IAAE,cAAc,EAAE,OAAO,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"SyncTable.d.ts","sourceRoot":"","sources":["../../src/SyncTable.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/SyncTable.js
CHANGED
|
@@ -111,8 +111,22 @@ function changedFieldsOfChanges(store, changes) {
|
|
|
111
111
|
function subData(sub, entities) {
|
|
112
112
|
return { [sub.table]: entities.map((e) => e.entity) };
|
|
113
113
|
}
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
// Updates the sub order field type if it hasn't been set
|
|
115
|
+
// and returns the type. We have to wait until the attrs
|
|
116
|
+
// are loaded before we can determine the type.
|
|
117
|
+
function orderFieldTypeMutative(sub, createStore) {
|
|
118
|
+
var _a;
|
|
119
|
+
if (sub.orderFieldType) {
|
|
120
|
+
return sub.orderFieldType;
|
|
121
|
+
}
|
|
122
|
+
const orderFieldType = sub.orderField === 'serverCreatedAt'
|
|
123
|
+
? 'number'
|
|
124
|
+
: (_a = s.getAttrByFwdIdentName(createStore([]), sub.table, sub.orderField)) === null || _a === void 0 ? void 0 : _a['checked-data-type'];
|
|
125
|
+
sub.orderFieldType = orderFieldType;
|
|
126
|
+
return orderFieldType;
|
|
127
|
+
}
|
|
128
|
+
function sortEntitiesInPlace(sub, orderFieldType, entities) {
|
|
129
|
+
const dataType = orderFieldType;
|
|
116
130
|
if (sub.orderField === 'serverCreatedAt') {
|
|
117
131
|
entities.sort(sub.orderDirection === 'asc'
|
|
118
132
|
? function compareEntities(a, b) {
|
|
@@ -217,7 +231,7 @@ export class SyncTable {
|
|
|
217
231
|
}
|
|
218
232
|
initSubscription(query, hash, cb) {
|
|
219
233
|
return __awaiter(this, void 0, void 0, function* () {
|
|
220
|
-
var _a, _b, _c, _d
|
|
234
|
+
var _a, _b, _c, _d;
|
|
221
235
|
// Wait for storage to load so that we know if we already have an existing subscription
|
|
222
236
|
yield this.subs.waitForKeyToLoad(hash);
|
|
223
237
|
const existingSub = this.subs.currentValue[hash];
|
|
@@ -235,9 +249,6 @@ export class SyncTable {
|
|
|
235
249
|
const table = Object.keys(query)[0];
|
|
236
250
|
const orderBy = ((_d = (_c = query[table]) === null || _c === void 0 ? void 0 : _c.$) === null || _d === void 0 ? void 0 : _d.order) || { serverCreatedAt: 'asc' };
|
|
237
251
|
const [orderField, orderDirection] = Object.entries(orderBy)[0];
|
|
238
|
-
const orderFieldType = orderField === 'serverCreatedAt'
|
|
239
|
-
? 'number'
|
|
240
|
-
: (_e = s.getAttrByFwdIdentName(this.createStore([]), table, orderField)) === null || _e === void 0 ? void 0 : _e['checked-data-type'];
|
|
241
252
|
this.subs.updateInPlace((prev) => {
|
|
242
253
|
prev[hash] = {
|
|
243
254
|
query,
|
|
@@ -245,7 +256,6 @@ export class SyncTable {
|
|
|
245
256
|
table,
|
|
246
257
|
orderDirection,
|
|
247
258
|
orderField,
|
|
248
|
-
orderFieldType,
|
|
249
259
|
createdAt: Date.now(),
|
|
250
260
|
updatedAt: Date.now(),
|
|
251
261
|
};
|
|
@@ -458,7 +468,8 @@ export class SyncTable {
|
|
|
458
468
|
removed.push(entities[idx].entity);
|
|
459
469
|
entities.splice(idx, 1);
|
|
460
470
|
}
|
|
461
|
-
|
|
471
|
+
const orderFieldType = orderFieldTypeMutative(sub, this.createStore);
|
|
472
|
+
sortEntitiesInPlace(sub, orderFieldType, entities);
|
|
462
473
|
this.notifyCbs(hash, {
|
|
463
474
|
type: CallbackEventType.SyncTransaction,
|
|
464
475
|
data: subData(sub, (_c = sub.values) === null || _c === void 0 ? void 0 : _c.entities),
|