@party-stack/salesforce-ontology 0.4.0 → 0.4.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/README.md +22 -31
- package/lib/actionMetadata.d.ts +11 -9
- package/lib/actionMetadata.d.ts.map +1 -1
- package/lib/actionMetadata.js +19 -30
- package/lib/actionMetadata.js.map +1 -1
- package/lib/adapter/convertLoadSubsetOptions.d.ts +10 -8
- package/lib/adapter/convertLoadSubsetOptions.d.ts.map +1 -1
- package/lib/adapter/convertLoadSubsetOptions.js +110 -173
- package/lib/adapter/convertLoadSubsetOptions.js.map +1 -1
- package/lib/adapter/createSalesforceOntologyBackendAdapter.d.ts +14 -12
- package/lib/adapter/createSalesforceOntologyBackendAdapter.d.ts.map +1 -1
- package/lib/adapter/createSalesforceOntologyBackendAdapter.js +124 -191
- package/lib/adapter/createSalesforceOntologyBackendAdapter.js.map +1 -1
- package/lib/adapter/index.d.ts +5 -5
- package/lib/adapter/index.js +5 -5
- package/lib/adapter/objectCollectionOptions.d.ts +22 -23
- package/lib/adapter/objectCollectionOptions.d.ts.map +1 -1
- package/lib/adapter/objectCollectionOptions.js +198 -280
- package/lib/adapter/objectCollectionOptions.js.map +1 -1
- package/lib/adapter/salesforceCodec.d.ts +6 -5
- package/lib/adapter/salesforceCodec.d.ts.map +1 -1
- package/lib/adapter/salesforceCodec.js +126 -190
- package/lib/adapter/salesforceCodec.js.map +1 -1
- package/lib/config/index.d.ts +20 -18
- package/lib/config/index.d.ts.map +1 -1
- package/lib/config/index.js +148 -192
- package/lib/config/index.js.map +1 -1
- package/lib/connection.d.ts +35 -33
- package/lib/connection.d.ts.map +1 -1
- package/lib/connection.js +243 -299
- package/lib/connection.js.map +1 -1
- package/lib/crud.d.ts +5 -3
- package/lib/crud.d.ts.map +1 -1
- package/lib/crud.js +0 -1
- package/lib/index.d.ts +10 -5
- package/lib/index.js +10 -5
- package/lib/installation/createSalesforceBackendInstallation.d.ts +28 -26
- package/lib/installation/createSalesforceBackendInstallation.d.ts.map +1 -1
- package/lib/installation/createSalesforceBackendInstallation.js +75 -85
- package/lib/installation/createSalesforceBackendInstallation.js.map +1 -1
- package/lib/installation/index.d.ts +2 -2
- package/lib/installation/index.js +2 -2
- package/lib/meta/actionTypeCollectionOptions.d.ts +10 -8
- package/lib/meta/actionTypeCollectionOptions.d.ts.map +1 -1
- package/lib/meta/actionTypeCollectionOptions.js +105 -212
- package/lib/meta/actionTypeCollectionOptions.js.map +1 -1
- package/lib/meta/convertMetaActionType.d.ts +4 -2
- package/lib/meta/convertMetaActionType.d.ts.map +1 -1
- package/lib/meta/convertMetaActionType.js +32 -32
- package/lib/meta/convertMetaActionType.js.map +1 -1
- package/lib/meta/convertMetaLinkType.d.ts +4 -2
- package/lib/meta/convertMetaLinkType.d.ts.map +1 -1
- package/lib/meta/convertMetaLinkType.js +39 -45
- package/lib/meta/convertMetaLinkType.js.map +1 -1
- package/lib/meta/convertMetaLoadSubsetOptions.d.ts +12 -10
- package/lib/meta/convertMetaLoadSubsetOptions.d.ts.map +1 -1
- package/lib/meta/convertMetaLoadSubsetOptions.js +42 -58
- package/lib/meta/convertMetaLoadSubsetOptions.js.map +1 -1
- package/lib/meta/convertMetaObjectType.d.ts +4 -2
- package/lib/meta/convertMetaObjectType.d.ts.map +1 -1
- package/lib/meta/convertMetaObjectType.js +36 -40
- package/lib/meta/convertMetaObjectType.js.map +1 -1
- package/lib/meta/convertMetaQueryFunctionType.d.ts +4 -2
- package/lib/meta/convertMetaQueryFunctionType.d.ts.map +1 -1
- package/lib/meta/convertMetaQueryFunctionType.js +27 -25
- package/lib/meta/convertMetaQueryFunctionType.js.map +1 -1
- package/lib/meta/convertMetaTypeDef.d.ts +10 -8
- package/lib/meta/convertMetaTypeDef.d.ts.map +1 -1
- package/lib/meta/convertMetaTypeDef.js +196 -188
- package/lib/meta/convertMetaTypeDef.js.map +1 -1
- package/lib/meta/createSalesforceMetaOntologyBackendAdapter.d.ts +19 -17
- package/lib/meta/createSalesforceMetaOntologyBackendAdapter.d.ts.map +1 -1
- package/lib/meta/createSalesforceMetaOntologyBackendAdapter.js +38 -40
- package/lib/meta/createSalesforceMetaOntologyBackendAdapter.js.map +1 -1
- package/lib/meta/entityCollectionOptions.d.ts +10 -8
- package/lib/meta/entityCollectionOptions.d.ts.map +1 -1
- package/lib/meta/entityCollectionOptions.js +73 -82
- package/lib/meta/entityCollectionOptions.js.map +1 -1
- package/lib/meta/index.d.ts +7 -7
- package/lib/meta/index.js +7 -7
- package/lib/meta/queryFunctionTypeCollectionOptions.d.ts +7 -5
- package/lib/meta/queryFunctionTypeCollectionOptions.d.ts.map +1 -1
- package/lib/meta/queryFunctionTypeCollectionOptions.js +53 -91
- package/lib/meta/queryFunctionTypeCollectionOptions.js.map +1 -1
- package/lib/meta/synthesizeCrudActionTypes.d.ts +4 -2
- package/lib/meta/synthesizeCrudActionTypes.d.ts.map +1 -1
- package/lib/meta/synthesizeCrudActionTypes.js +77 -116
- package/lib/meta/synthesizeCrudActionTypes.js.map +1 -1
- package/lib/standardActions.d.ts +2 -0
- package/lib/standardActions.d.ts.map +1 -1
- package/lib/standardActions.js +22 -20
- package/lib/standardActions.js.map +1 -1
- package/lib/utils/AsyncIterable.d.ts +2 -0
- package/lib/utils/AsyncIterable.d.ts.map +1 -1
- package/lib/utils/AsyncIterable.js +20 -23
- package/lib/utils/AsyncIterable.js.map +1 -1
- package/lib/utils/ids.d.ts +2 -0
- package/lib/utils/ids.d.ts.map +1 -1
- package/lib/utils/ids.js +23 -19
- package/lib/utils/ids.js.map +1 -1
- package/package.json +14 -20
- package/lib/adapter/convertLoadSubsetOptions.test.d.ts +0 -2
- package/lib/adapter/convertLoadSubsetOptions.test.d.ts.map +0 -1
- package/lib/adapter/convertLoadSubsetOptions.test.js +0 -80
- package/lib/adapter/convertLoadSubsetOptions.test.js.map +0 -1
- package/lib/adapter/createSalesforceOntologyBackendAdapter.test.d.ts +0 -2
- package/lib/adapter/createSalesforceOntologyBackendAdapter.test.d.ts.map +0 -1
- package/lib/adapter/createSalesforceOntologyBackendAdapter.test.js +0 -394
- package/lib/adapter/createSalesforceOntologyBackendAdapter.test.js.map +0 -1
- package/lib/adapter/index.d.ts.map +0 -1
- package/lib/adapter/index.js.map +0 -1
- package/lib/adapter/objectCollectionOptions.test.d.ts +0 -2
- package/lib/adapter/objectCollectionOptions.test.d.ts.map +0 -1
- package/lib/adapter/objectCollectionOptions.test.js +0 -160
- package/lib/adapter/objectCollectionOptions.test.js.map +0 -1
- package/lib/adapter/salesforceCodec.test.d.ts +0 -2
- package/lib/adapter/salesforceCodec.test.d.ts.map +0 -1
- package/lib/adapter/salesforceCodec.test.js +0 -57
- package/lib/adapter/salesforceCodec.test.js.map +0 -1
- package/lib/config/index.test.d.ts +0 -2
- package/lib/config/index.test.d.ts.map +0 -1
- package/lib/config/index.test.js +0 -177
- package/lib/config/index.test.js.map +0 -1
- package/lib/connection.test.d.ts +0 -2
- package/lib/connection.test.d.ts.map +0 -1
- package/lib/connection.test.js +0 -189
- package/lib/connection.test.js.map +0 -1
- package/lib/crud.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/installation/createSalesforceBackendInstallation.test.d.ts +0 -2
- package/lib/installation/createSalesforceBackendInstallation.test.d.ts.map +0 -1
- package/lib/installation/createSalesforceBackendInstallation.test.js +0 -55
- package/lib/installation/createSalesforceBackendInstallation.test.js.map +0 -1
- package/lib/installation/index.d.ts.map +0 -1
- package/lib/installation/index.js.map +0 -1
- package/lib/meta/actionTypeCollectionOptions.test.d.ts +0 -2
- package/lib/meta/actionTypeCollectionOptions.test.d.ts.map +0 -1
- package/lib/meta/actionTypeCollectionOptions.test.js +0 -192
- package/lib/meta/actionTypeCollectionOptions.test.js.map +0 -1
- package/lib/meta/convertMetaActionType.test.d.ts +0 -2
- package/lib/meta/convertMetaActionType.test.d.ts.map +0 -1
- package/lib/meta/convertMetaActionType.test.js +0 -185
- package/lib/meta/convertMetaActionType.test.js.map +0 -1
- package/lib/meta/convertMetaObjectType.test.d.ts +0 -2
- package/lib/meta/convertMetaObjectType.test.d.ts.map +0 -1
- package/lib/meta/convertMetaObjectType.test.js +0 -187
- package/lib/meta/convertMetaObjectType.test.js.map +0 -1
- package/lib/meta/convertMetaQueryFunctionType.test.d.ts +0 -2
- package/lib/meta/convertMetaQueryFunctionType.test.d.ts.map +0 -1
- package/lib/meta/convertMetaQueryFunctionType.test.js +0 -58
- package/lib/meta/convertMetaQueryFunctionType.test.js.map +0 -1
- package/lib/meta/entityCollectionOptions.test.d.ts +0 -2
- package/lib/meta/entityCollectionOptions.test.d.ts.map +0 -1
- package/lib/meta/entityCollectionOptions.test.js +0 -120
- package/lib/meta/entityCollectionOptions.test.js.map +0 -1
- package/lib/meta/index.d.ts.map +0 -1
- package/lib/meta/index.js.map +0 -1
- package/lib/meta/queryFunctionTypeCollectionOptions.test.d.ts +0 -2
- package/lib/meta/queryFunctionTypeCollectionOptions.test.d.ts.map +0 -1
- package/lib/meta/queryFunctionTypeCollectionOptions.test.js +0 -71
- package/lib/meta/queryFunctionTypeCollectionOptions.test.js.map +0 -1
- package/lib/meta/synthesizeCrudActionTypes.test.d.ts +0 -2
- package/lib/meta/synthesizeCrudActionTypes.test.d.ts.map +0 -1
- package/lib/meta/synthesizeCrudActionTypes.test.js +0 -153
- package/lib/meta/synthesizeCrudActionTypes.test.js.map +0 -1
|
@@ -1,286 +1,204 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import { fromPagination, toArray } from "../utils/AsyncIterable.js";
|
|
2
|
+
import { buildSoqlQuery, convertLoadSubsetFilter, convertLoadSubsetOrderBy, isAlwaysFalseFilter, serializeSoqlLiteral } from "./convertLoadSubsetOptions.js";
|
|
3
|
+
import { BasicIndex, DeduplicatedLoadSubset } from "@tanstack/db";
|
|
4
|
+
//#region src/adapter/objectCollectionOptions.ts
|
|
4
5
|
async function fetchSalesforceObjects(client, objectType, selectedProperties, opts, decodeObject = (object) => object) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
limit: canPushOffset
|
|
34
|
-
? limit === undefined
|
|
35
|
-
? undefined
|
|
36
|
-
: offset + limit
|
|
37
|
-
: limit === undefined
|
|
38
|
-
? undefined
|
|
39
|
-
: offset + limit,
|
|
40
|
-
offset: canPushOffset ? offset : undefined,
|
|
41
|
-
});
|
|
42
|
-
const results = await AsyncIterable.toArray(AsyncIterable.fromPagination(async (_pageSize, pageToken) => {
|
|
43
|
-
if (pageToken) {
|
|
44
|
-
return client.queryMore(pageToken);
|
|
45
|
-
}
|
|
46
|
-
return client.query(soql);
|
|
47
|
-
}, (page) => (page.done ? undefined : page.nextRecordsUrl), (page) => page.records, 2_000, canPushOffset
|
|
48
|
-
? limit === undefined
|
|
49
|
-
? undefined
|
|
50
|
-
: limit
|
|
51
|
-
: limit === undefined
|
|
52
|
-
? undefined
|
|
53
|
-
: offset + limit));
|
|
54
|
-
const sliced = canPushOffset
|
|
55
|
-
? results
|
|
56
|
-
: results.slice(offset, limit === undefined ? undefined : offset + limit);
|
|
57
|
-
return sliced.map(decodeObject);
|
|
6
|
+
const offset = Math.max(0, Math.trunc(opts.offset ?? 0));
|
|
7
|
+
const limit = opts.limit === void 0 ? void 0 : Math.max(0, Math.trunc(opts.limit));
|
|
8
|
+
if (limit === 0) return [];
|
|
9
|
+
let where = convertLoadSubsetFilter(opts.where);
|
|
10
|
+
if (isAlwaysFalseFilter(where)) return [];
|
|
11
|
+
if (opts.cursor?.whereFrom) {
|
|
12
|
+
const cursorWhere = convertLoadSubsetFilter(opts.cursor.whereFrom);
|
|
13
|
+
if (isAlwaysFalseFilter(cursorWhere)) return [];
|
|
14
|
+
if (cursorWhere?.clause) where = where?.clause ? {
|
|
15
|
+
clause: `(${where.clause} AND ${cursorWhere.clause})`,
|
|
16
|
+
alwaysFalse: false
|
|
17
|
+
} : cursorWhere;
|
|
18
|
+
}
|
|
19
|
+
const canPushOffset = offset > 0 && offset <= 2e3 && (limit === void 0 || offset + limit <= 2e3);
|
|
20
|
+
const orderBy = convertLoadSubsetOrderBy(opts.orderBy);
|
|
21
|
+
const soql = buildSoqlQuery({
|
|
22
|
+
objectType,
|
|
23
|
+
selectedProperties,
|
|
24
|
+
where,
|
|
25
|
+
orderBy,
|
|
26
|
+
limit: canPushOffset ? limit === void 0 ? void 0 : offset + limit : limit === void 0 ? void 0 : offset + limit,
|
|
27
|
+
offset: canPushOffset ? offset : void 0
|
|
28
|
+
});
|
|
29
|
+
const results = await toArray(fromPagination(async (_pageSize, pageToken) => {
|
|
30
|
+
if (pageToken) return client.queryMore(pageToken);
|
|
31
|
+
return client.query(soql);
|
|
32
|
+
}, (page) => page.done ? void 0 : page.nextRecordsUrl, (page) => page.records, 2e3, canPushOffset ? limit === void 0 ? void 0 : limit : limit === void 0 ? void 0 : offset + limit));
|
|
33
|
+
return (canPushOffset ? results : results.slice(offset, limit === void 0 ? void 0 : offset + limit)).map(decodeObject);
|
|
58
34
|
}
|
|
59
35
|
function createSyncConfig(client, objectType, primaryKeyProperty, selectedProperties, subscribeToChangeEvents, decodeObject = (object) => object) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
const replayId = event.event
|
|
206
|
-
?.replayId;
|
|
207
|
-
if (replayId !==
|
|
208
|
-
undefined) {
|
|
209
|
-
collectionMetadata?.set(replayMetadataKey, replayId);
|
|
210
|
-
}
|
|
211
|
-
await commit();
|
|
212
|
-
loadSubsetDedupe?.reset();
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
await invalidate?.();
|
|
216
|
-
const replayId = event.event
|
|
217
|
-
?.replayId;
|
|
218
|
-
if (replayId !==
|
|
219
|
-
undefined &&
|
|
220
|
-
collectionMetadata) {
|
|
221
|
-
begin();
|
|
222
|
-
collectionMetadata.set(replayMetadataKey, replayId);
|
|
223
|
-
await commit();
|
|
224
|
-
}
|
|
225
|
-
})
|
|
226
|
-
.catch((error) => {
|
|
227
|
-
markError(error instanceof Error
|
|
228
|
-
? error
|
|
229
|
-
: new Error(String(error)));
|
|
230
|
-
});
|
|
231
|
-
}, typeof restoredReplayId ===
|
|
232
|
-
"number"
|
|
233
|
-
? {
|
|
234
|
-
replayId: restoredReplayId,
|
|
235
|
-
}
|
|
236
|
-
: undefined).then((subscription) => {
|
|
237
|
-
if (disposed) {
|
|
238
|
-
subscription.unsubscribe();
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
changeSubscription =
|
|
242
|
-
subscription;
|
|
243
|
-
}
|
|
244
|
-
}, (error) => {
|
|
245
|
-
markError(error instanceof Error
|
|
246
|
-
? error
|
|
247
|
-
: new Error(String(error)));
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
return {
|
|
251
|
-
loadSubset: loadSubsetDedupe.loadSubset,
|
|
252
|
-
cleanup: () => {
|
|
253
|
-
disposed = true;
|
|
254
|
-
changeSubscription?.unsubscribe();
|
|
255
|
-
void changeQueue.finally(() => {
|
|
256
|
-
loadSubsetDedupe?.reset();
|
|
257
|
-
loadSubsetDedupe = undefined;
|
|
258
|
-
invalidate = undefined;
|
|
259
|
-
refreshByKey = undefined;
|
|
260
|
-
deleteByKey = undefined;
|
|
261
|
-
});
|
|
262
|
-
},
|
|
263
|
-
};
|
|
264
|
-
},
|
|
265
|
-
};
|
|
266
|
-
return { sync, utils };
|
|
36
|
+
let loadSubsetDedupe;
|
|
37
|
+
let deleteByKey;
|
|
38
|
+
let refreshByKey;
|
|
39
|
+
let invalidate;
|
|
40
|
+
return {
|
|
41
|
+
sync: { sync: (params) => {
|
|
42
|
+
const { begin, write, commit, markError, markReady } = params;
|
|
43
|
+
const activeSubsets = /* @__PURE__ */ new Set();
|
|
44
|
+
const collectionMetadata = params.metadata?.collection;
|
|
45
|
+
const replayMetadataKey = `salesforce.cdc.${objectType}.replayId`;
|
|
46
|
+
const restoredReplayId = collectionMetadata?.get(replayMetadataKey);
|
|
47
|
+
let disposed = false;
|
|
48
|
+
let changeSubscription;
|
|
49
|
+
let changeQueue = Promise.resolve();
|
|
50
|
+
const upsertObject = (object) => {
|
|
51
|
+
const key = object.Id;
|
|
52
|
+
if (typeof key !== "string" && typeof key !== "number") throw new Error(`Salesforce object for ${objectType} is missing a string/number Id primary key.`);
|
|
53
|
+
const exists = params.collection.has(key);
|
|
54
|
+
const existing = exists ? params.collection.get(key) : void 0;
|
|
55
|
+
write({
|
|
56
|
+
type: exists ? "update" : "insert",
|
|
57
|
+
value: existing ? {
|
|
58
|
+
...existing,
|
|
59
|
+
...object
|
|
60
|
+
} : object
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
const loadSubset = async (opts, awaitApplication = true) => {
|
|
64
|
+
if (!activeSubsets.has(opts)) {
|
|
65
|
+
activeSubsets.add(opts);
|
|
66
|
+
opts.signal?.addEventListener("abort", () => activeSubsets.delete(opts), { once: true });
|
|
67
|
+
}
|
|
68
|
+
const objects = await fetchSalesforceObjects(client, objectType, selectedProperties, opts, decodeObject);
|
|
69
|
+
if (objects.length > 0) {
|
|
70
|
+
begin();
|
|
71
|
+
for (const object of objects) upsertObject(object);
|
|
72
|
+
const applied = commit();
|
|
73
|
+
if (applied instanceof Promise) {
|
|
74
|
+
if (awaitApplication) await applied;
|
|
75
|
+
else applied.catch((error) => {
|
|
76
|
+
if (!disposed) markError(error);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
loadSubsetDedupe = new DeduplicatedLoadSubset({ loadSubset: (options) => loadSubset(options) });
|
|
82
|
+
invalidate = async () => {
|
|
83
|
+
loadSubsetDedupe?.reset();
|
|
84
|
+
for (const subset of activeSubsets) if (!subset.signal?.aborted) await loadSubset(subset, false);
|
|
85
|
+
};
|
|
86
|
+
refreshByKey = async (key) => {
|
|
87
|
+
const object = (await client.query(buildSoqlQuery({
|
|
88
|
+
objectType,
|
|
89
|
+
selectedProperties,
|
|
90
|
+
where: {
|
|
91
|
+
clause: `${primaryKeyProperty} = ${serializeSoqlLiteral(key)}`,
|
|
92
|
+
alwaysFalse: false
|
|
93
|
+
},
|
|
94
|
+
limit: 1
|
|
95
|
+
}))).records[0];
|
|
96
|
+
if (!object) throw new Error(`Salesforce ${objectType} record "${key}" was not returned after a confirmed write.`);
|
|
97
|
+
begin();
|
|
98
|
+
upsertObject(decodeObject(object));
|
|
99
|
+
const applied = commit();
|
|
100
|
+
if (applied instanceof Promise) applied.catch((error) => {
|
|
101
|
+
if (!disposed) markError(error);
|
|
102
|
+
});
|
|
103
|
+
loadSubsetDedupe?.reset();
|
|
104
|
+
};
|
|
105
|
+
deleteByKey = (key) => {
|
|
106
|
+
begin();
|
|
107
|
+
write({
|
|
108
|
+
type: "delete",
|
|
109
|
+
key
|
|
110
|
+
});
|
|
111
|
+
const applied = commit();
|
|
112
|
+
if (applied instanceof Promise) applied.catch((error) => {
|
|
113
|
+
if (!disposed) markError(error);
|
|
114
|
+
});
|
|
115
|
+
loadSubsetDedupe?.reset();
|
|
116
|
+
return Promise.resolve();
|
|
117
|
+
};
|
|
118
|
+
markReady();
|
|
119
|
+
if (subscribeToChangeEvents) subscribeToChangeEvents(objectType, (event) => {
|
|
120
|
+
changeQueue = changeQueue.then(async () => {
|
|
121
|
+
if (disposed) return;
|
|
122
|
+
const header = event.payload.ChangeEventHeader;
|
|
123
|
+
if (header.changeType === "DELETE") {
|
|
124
|
+
begin();
|
|
125
|
+
for (const id of header.recordIds) write({
|
|
126
|
+
type: "delete",
|
|
127
|
+
key: id
|
|
128
|
+
});
|
|
129
|
+
const replayId = event.event?.replayId;
|
|
130
|
+
if (replayId !== void 0) collectionMetadata?.set(replayMetadataKey, replayId);
|
|
131
|
+
await commit();
|
|
132
|
+
loadSubsetDedupe?.reset();
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
await invalidate?.();
|
|
136
|
+
const replayId = event.event?.replayId;
|
|
137
|
+
if (replayId !== void 0 && collectionMetadata) {
|
|
138
|
+
begin();
|
|
139
|
+
collectionMetadata.set(replayMetadataKey, replayId);
|
|
140
|
+
await commit();
|
|
141
|
+
}
|
|
142
|
+
}).catch((error) => {
|
|
143
|
+
markError(error instanceof Error ? error : new Error(String(error)));
|
|
144
|
+
});
|
|
145
|
+
}, typeof restoredReplayId === "number" ? { replayId: restoredReplayId } : void 0).then((subscription) => {
|
|
146
|
+
if (disposed) subscription.unsubscribe();
|
|
147
|
+
else changeSubscription = subscription;
|
|
148
|
+
}, (error) => {
|
|
149
|
+
markError(error instanceof Error ? error : new Error(String(error)));
|
|
150
|
+
});
|
|
151
|
+
return {
|
|
152
|
+
loadSubset: loadSubsetDedupe.loadSubset,
|
|
153
|
+
cleanup: () => {
|
|
154
|
+
disposed = true;
|
|
155
|
+
changeSubscription?.unsubscribe();
|
|
156
|
+
changeQueue.finally(() => {
|
|
157
|
+
loadSubsetDedupe?.reset();
|
|
158
|
+
loadSubsetDedupe = void 0;
|
|
159
|
+
invalidate = void 0;
|
|
160
|
+
refreshByKey = void 0;
|
|
161
|
+
deleteByKey = void 0;
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
} },
|
|
166
|
+
utils: {
|
|
167
|
+
invalidate: () => {
|
|
168
|
+
if (!invalidate) throw new Error(`Salesforce ${objectType} collection is not ready.`);
|
|
169
|
+
return invalidate();
|
|
170
|
+
},
|
|
171
|
+
refreshByKey: (key) => {
|
|
172
|
+
if (!refreshByKey) throw new Error(`Salesforce ${objectType} collection is not ready.`);
|
|
173
|
+
return refreshByKey(key);
|
|
174
|
+
},
|
|
175
|
+
deleteByKey: (key) => {
|
|
176
|
+
if (!deleteByKey) throw new Error(`Salesforce ${objectType} collection is not ready.`);
|
|
177
|
+
return deleteByKey(key);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
};
|
|
267
181
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
182
|
+
function objectCollectionOptions(config) {
|
|
183
|
+
const { client, objectType, primaryKeyProperty, selectedProperties, subscribeToChangeEvents, decodeObject, schema, ...rest } = config;
|
|
184
|
+
const { sync, utils } = createSyncConfig(client, objectType, primaryKeyProperty, selectedProperties, subscribeToChangeEvents, decodeObject);
|
|
185
|
+
if (schema === void 0) return {
|
|
186
|
+
syncMode: "on-demand",
|
|
187
|
+
sync,
|
|
188
|
+
utils
|
|
189
|
+
};
|
|
190
|
+
return {
|
|
191
|
+
...rest,
|
|
192
|
+
schema,
|
|
193
|
+
defaultIndexType: BasicIndex,
|
|
194
|
+
autoIndex: "eager",
|
|
195
|
+
syncMode: "on-demand",
|
|
196
|
+
getKey: (object) => object[primaryKeyProperty],
|
|
197
|
+
sync,
|
|
198
|
+
utils
|
|
199
|
+
};
|
|
285
200
|
}
|
|
201
|
+
//#endregion
|
|
202
|
+
export { objectCollectionOptions };
|
|
203
|
+
|
|
286
204
|
//# sourceMappingURL=objectCollectionOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectCollectionOptions.js","sourceRoot":"","sources":["../../src/adapter/objectCollectionOptions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"objectCollectionOptions.js","names":["AsyncIterable.toArray","AsyncIterable.fromPagination"],"sources":["../../src/adapter/objectCollectionOptions.ts"],"sourcesContent":["import {\n BasicIndex,\n CollectionConfig,\n DeduplicatedLoadSubset,\n InferSchemaOutput,\n LoadSubsetOptions,\n StandardSchema,\n SyncConfig,\n UtilsRecord,\n} from \"@tanstack/db\";\nimport * as AsyncIterable from \"../utils/AsyncIterable.js\";\nimport {\n buildSoqlQuery,\n convertLoadSubsetFilter,\n convertLoadSubsetOrderBy,\n isAlwaysFalseFilter,\n serializeSoqlLiteral,\n} from \"./convertLoadSubsetOptions.js\";\nimport type {\n SalesforceChangeEvent,\n SalesforceChangeEventSubscription,\n SalesforceChangeEventSubscriptionOptions,\n SalesforceClient,\n} from \"@party-stack/salesforce-client\";\n\ntype WithRequired<T, K extends keyof T> = T & { [P in K]-?: T[P] };\n\ntype SalesforceObject = Record<string, unknown>;\n\nexport type SubscribeToSalesforceChangeEvents = (\n objectType: string,\n listener: (event: SalesforceChangeEvent) => void,\n options?: SalesforceChangeEventSubscriptionOptions\n) => Promise<SalesforceChangeEventSubscription>;\n\nexport interface ObjectCollectionUtils extends UtilsRecord {\n /**\n * Reset load-subset deduplication and await refetching active subsets.\n */\n invalidate: () => Promise<void>;\n /** Refetch one confirmed backend record and commit it locally. */\n refreshByKey: (key: string | number) => Promise<void>;\n /** Apply a confirmed backend deletion to the local collection. */\n deleteByKey: (key: string | number) => Promise<void>;\n}\n\nasync function fetchSalesforceObjects(\n client: SalesforceClient,\n objectType: string,\n selectedProperties: string[],\n opts: LoadSubsetOptions,\n decodeObject: (object: SalesforceObject) => SalesforceObject = (object) => object\n): Promise<SalesforceObject[]> {\n const offset = Math.max(0, Math.trunc(opts.offset ?? 0));\n const limit = opts.limit === undefined ? undefined : Math.max(0, Math.trunc(opts.limit));\n if (limit === 0) return [];\n\n let where = convertLoadSubsetFilter(opts.where);\n if (isAlwaysFalseFilter(where)) {\n return [];\n }\n\n if (opts.cursor?.whereFrom) {\n const cursorWhere = convertLoadSubsetFilter(opts.cursor.whereFrom);\n if (isAlwaysFalseFilter(cursorWhere)) {\n return [];\n }\n if (cursorWhere?.clause) {\n where = where?.clause\n ? { clause: `(${where.clause} AND ${cursorWhere.clause})`, alwaysFalse: false }\n : cursorWhere;\n }\n }\n\n // Salesforce OFFSET max is 2000. Prefer locator pagination for deep reads and\n // only push OFFSET when the caller requested a small local window.\n const canPushOffset = offset > 0 && offset <= 2000 && (limit === undefined || offset + limit <= 2000);\n const orderBy = convertLoadSubsetOrderBy(opts.orderBy);\n const soql = buildSoqlQuery({\n objectType,\n selectedProperties,\n where,\n orderBy,\n limit: canPushOffset\n ? limit === undefined\n ? undefined\n : offset + limit\n : limit === undefined\n ? undefined\n : offset + limit,\n offset: canPushOffset ? offset : undefined,\n });\n\n const results = await AsyncIterable.toArray(\n AsyncIterable.fromPagination(\n async (_pageSize, pageToken: string | undefined) => {\n if (pageToken) {\n return client.queryMore<SalesforceObject>(pageToken);\n }\n return client.query<SalesforceObject>(soql);\n },\n (page) => (page.done ? undefined : page.nextRecordsUrl),\n (page) => page.records,\n 2_000,\n canPushOffset\n ? limit === undefined\n ? undefined\n : limit\n : limit === undefined\n ? undefined\n : offset + limit\n )\n );\n\n const sliced = canPushOffset\n ? results\n : results.slice(offset, limit === undefined ? undefined : offset + limit);\n\n return sliced.map(decodeObject);\n}\n\nfunction createSyncConfig(\n client: SalesforceClient,\n objectType: string,\n primaryKeyProperty: string,\n selectedProperties: string[],\n subscribeToChangeEvents: SubscribeToSalesforceChangeEvents | undefined,\n decodeObject: (object: SalesforceObject) => SalesforceObject = (object) => object\n): { sync: SyncConfig<Record<string, unknown>, string | number>; utils: ObjectCollectionUtils } {\n let loadSubsetDedupe: DeduplicatedLoadSubset | undefined;\n let deleteByKey: ((key: string | number) => Promise<void>) | undefined;\n let refreshByKey: ((key: string | number) => Promise<void>) | undefined;\n let invalidate: (() => Promise<void>) | undefined;\n\n const utils: ObjectCollectionUtils = {\n invalidate: () => {\n if (!invalidate) {\n throw new Error(`Salesforce ${objectType} collection is not ready.`);\n }\n return invalidate();\n },\n refreshByKey: (key) => {\n if (!refreshByKey) {\n throw new Error(`Salesforce ${objectType} collection is not ready.`);\n }\n return refreshByKey(key);\n },\n deleteByKey: (key) => {\n if (!deleteByKey) {\n throw new Error(`Salesforce ${objectType} collection is not ready.`);\n }\n return deleteByKey(key);\n },\n };\n\n const sync: SyncConfig<Record<string, unknown>, string | number> = {\n sync: (params) => {\n const { begin, write, commit, markError, markReady } = params;\n const activeSubsets = new Set<LoadSubsetOptions>();\n const collectionMetadata = params.metadata?.collection;\n const replayMetadataKey = `salesforce.cdc.${objectType}.replayId`;\n const restoredReplayId = collectionMetadata?.get(replayMetadataKey);\n let disposed = false;\n let changeSubscription: SalesforceChangeEventSubscription | undefined;\n let changeQueue = Promise.resolve();\n\n const upsertObject = (object: SalesforceObject) => {\n const key = object.Id;\n if (typeof key !== \"string\" && typeof key !== \"number\") {\n throw new Error(\n `Salesforce object for ${objectType} is missing a string/number Id primary key.`\n );\n }\n const exists = params.collection.has(key);\n const existing = exists ? params.collection.get(key) : undefined;\n write({\n type: exists ? \"update\" : \"insert\",\n value: existing ? { ...existing, ...object } : object,\n });\n };\n\n const loadSubset = async (opts: LoadSubsetOptions, awaitApplication = true): Promise<void> => {\n if (!activeSubsets.has(opts)) {\n activeSubsets.add(opts);\n opts.signal?.addEventListener(\"abort\", () => activeSubsets.delete(opts), { once: true });\n }\n const objects = await fetchSalesforceObjects(\n client,\n objectType,\n selectedProperties,\n opts,\n decodeObject\n );\n if (objects.length > 0) {\n begin();\n for (const object of objects) {\n upsertObject(object);\n }\n const applied = commit();\n if (applied instanceof Promise) {\n if (awaitApplication) {\n await applied;\n } else {\n void applied.catch((error) => {\n if (!disposed) {\n markError(error);\n }\n });\n }\n }\n }\n };\n\n loadSubsetDedupe = new DeduplicatedLoadSubset({\n loadSubset: (options) => loadSubset(options),\n });\n invalidate = async () => {\n loadSubsetDedupe?.reset();\n for (const subset of activeSubsets) {\n if (!subset.signal?.aborted) {\n await loadSubset(subset, false);\n }\n }\n };\n refreshByKey = async (key) => {\n const result = await client.query<SalesforceObject>(\n buildSoqlQuery({\n objectType,\n selectedProperties,\n where: {\n clause: `${primaryKeyProperty} = ${serializeSoqlLiteral(key)}`,\n alwaysFalse: false,\n },\n limit: 1,\n })\n );\n const object = result.records[0];\n if (!object) {\n throw new Error(\n `Salesforce ${objectType} record \"${key}\" was not returned after a confirmed write.`\n );\n }\n begin();\n upsertObject(decodeObject(object));\n const applied = commit();\n if (applied instanceof Promise) {\n void applied.catch((error) => {\n if (!disposed) {\n markError(error);\n }\n });\n }\n loadSubsetDedupe?.reset();\n };\n deleteByKey = (key) => {\n begin();\n write({\n type: \"delete\",\n key,\n });\n const applied = commit();\n if (applied instanceof Promise) {\n void applied.catch((error) => {\n if (!disposed) {\n markError(error);\n }\n });\n }\n loadSubsetDedupe?.reset();\n return Promise.resolve();\n };\n markReady();\n if (subscribeToChangeEvents) {\n void subscribeToChangeEvents(\n objectType,\n (event) => {\n changeQueue = changeQueue\n .then(async () => {\n if (disposed) return;\n const header = event.payload.ChangeEventHeader;\n if (header.changeType === \"DELETE\") {\n begin();\n for (const id of header.recordIds) {\n write({\n type: \"delete\",\n key: id,\n });\n }\n const replayId = event.event?.replayId;\n if (replayId !== undefined) {\n collectionMetadata?.set(replayMetadataKey, replayId);\n }\n await commit();\n loadSubsetDedupe?.reset();\n return;\n }\n await invalidate?.();\n const replayId = event.event?.replayId;\n if (replayId !== undefined && collectionMetadata) {\n begin();\n collectionMetadata.set(replayMetadataKey, replayId);\n await commit();\n }\n })\n .catch((error: unknown) => {\n markError(error instanceof Error ? error : new Error(String(error)));\n });\n },\n typeof restoredReplayId === \"number\"\n ? {\n replayId: restoredReplayId,\n }\n : undefined\n ).then(\n (subscription) => {\n if (disposed) {\n subscription.unsubscribe();\n } else {\n changeSubscription = subscription;\n }\n },\n (error: unknown) => {\n markError(error instanceof Error ? error : new Error(String(error)));\n }\n );\n }\n\n return {\n loadSubset: loadSubsetDedupe.loadSubset,\n cleanup: () => {\n disposed = true;\n changeSubscription?.unsubscribe();\n void changeQueue.finally(() => {\n loadSubsetDedupe?.reset();\n loadSubsetDedupe = undefined;\n invalidate = undefined;\n refreshByKey = undefined;\n deleteByKey = undefined;\n });\n },\n };\n },\n };\n\n return { sync, utils };\n}\n\nexport interface ObjectCollectionOpts {\n client: SalesforceClient;\n objectType: string;\n primaryKeyProperty: string;\n selectedProperties: string[];\n subscribeToChangeEvents?: SubscribeToSalesforceChangeEvents;\n decodeObject?: (object: Record<string, unknown>) => Record<string, unknown>;\n}\n\nexport interface ObjectCollectionConfig<TSchema extends StandardSchema<SalesforceObject>>\n extends\n ObjectCollectionOpts,\n Omit<\n CollectionConfig<InferSchemaOutput<TSchema>, string | number, TSchema>,\n \"sync\" | \"syncMode\" | \"getKey\" | \"onInsert\" | \"onUpdate\" | \"onDelete\"\n > {\n schema: TSchema;\n}\n\nexport function objectCollectionOptions<TSchema extends StandardSchema<SalesforceObject>>(\n config: ObjectCollectionConfig<TSchema>\n): WithRequired<\n CollectionConfig<InferSchemaOutput<TSchema>, string | number, TSchema, ObjectCollectionUtils>,\n \"schema\"\n>;\nexport function objectCollectionOptions(config: ObjectCollectionOpts): {\n syncMode: \"on-demand\";\n sync: SyncConfig<Record<string, unknown>, string | number>;\n utils: ObjectCollectionUtils;\n};\n// oxlint-disable-next-line typescript/no-explicit-any\nexport function objectCollectionOptions(config: any): any {\n const {\n client,\n objectType,\n primaryKeyProperty,\n selectedProperties,\n subscribeToChangeEvents,\n decodeObject,\n schema,\n ...rest\n } = config as ObjectCollectionOpts & { schema?: StandardSchema<SalesforceObject> } & Record<\n string,\n unknown\n >;\n const { sync, utils } = createSyncConfig(\n client,\n objectType,\n primaryKeyProperty,\n selectedProperties,\n subscribeToChangeEvents,\n decodeObject\n );\n\n if (schema === undefined) {\n return { syncMode: \"on-demand\" as const, sync, utils };\n }\n\n return {\n ...rest,\n schema,\n defaultIndexType: BasicIndex,\n autoIndex: \"eager\",\n syncMode: \"on-demand\" as const,\n getKey: (object: Record<string, unknown>) =>\n (object as Record<string, string | number>)[primaryKeyProperty] as string | number,\n sync,\n utils,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { OntologyIR, TypeDef } from "@party-stack/ontology";
|
|
2
|
+
//#region src/adapter/salesforceCodec.d.ts
|
|
2
3
|
type SalesforceObjectRecord = Record<string, unknown>;
|
|
3
4
|
export interface SalesforceCodec {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
decodeObject: (objectType: string, object: SalesforceObjectRecord) => SalesforceObjectRecord;
|
|
6
|
+
decodeValue: (type: TypeDef, value: unknown) => unknown;
|
|
7
|
+
encodeValue: (type: TypeDef, value: unknown) => unknown;
|
|
7
8
|
}
|
|
8
9
|
export declare function createSalesforceCodec(ir: OntologyIR): SalesforceCodec;
|
|
9
|
-
|
|
10
|
+
//#endregion
|
|
10
11
|
//# sourceMappingURL=salesforceCodec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"salesforceCodec.d.ts","
|
|
1
|
+
{"version":3,"file":"salesforceCodec.d.ts","names":[],"sources":["../../src/adapter/salesforceCodec.ts"],"mappings":";;KAGK,yBAAyB;iBAEb;EACb,eAAe,oBAAoB,QAAQ,2BAA2B;EACtE,cAAc,MAAM,SAAS;EAC7B,cAAc,MAAM,SAAS;;wBAajB,sBAAsB,IAAI,aAAa"}
|