@party-stack/foundry-ontology 0.1.0
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/LICENSE +21 -0
- package/README.md +1 -0
- package/lib/adapter/convertLoadSubsetOptions.d.ts +5 -0
- package/lib/adapter/convertLoadSubsetOptions.d.ts.map +1 -0
- package/lib/adapter/convertLoadSubsetOptions.js +90 -0
- package/lib/adapter/convertLoadSubsetOptions.js.map +1 -0
- package/lib/adapter/createAction.d.ts +9 -0
- package/lib/adapter/createAction.d.ts.map +1 -0
- package/lib/adapter/createAction.js +42 -0
- package/lib/adapter/createAction.js.map +1 -0
- package/lib/adapter/createObjectCollection.d.ts +23 -0
- package/lib/adapter/createObjectCollection.d.ts.map +1 -0
- package/lib/adapter/createObjectCollection.js +117 -0
- package/lib/adapter/createObjectCollection.js.map +1 -0
- package/lib/adapter/foundryCodec.d.ts +8 -0
- package/lib/adapter/foundryCodec.d.ts.map +1 -0
- package/lib/adapter/foundryCodec.js +108 -0
- package/lib/adapter/foundryCodec.js.map +1 -0
- package/lib/adapter/index.d.ts +3 -0
- package/lib/adapter/index.d.ts.map +1 -0
- package/lib/adapter/index.js +3 -0
- package/lib/adapter/index.js.map +1 -0
- package/lib/adapter/sync/ObjectSetSubscription.d.ts +35 -0
- package/lib/adapter/sync/ObjectSetSubscription.d.ts.map +1 -0
- package/lib/adapter/sync/ObjectSetSubscription.js +2 -0
- package/lib/adapter/sync/ObjectSetSubscription.js.map +1 -0
- package/lib/adapter/sync/ObjectSetWatcherManager.d.ts +11 -0
- package/lib/adapter/sync/ObjectSetWatcherManager.d.ts.map +1 -0
- package/lib/adapter/sync/ObjectSetWatcherManager.js +86 -0
- package/lib/adapter/sync/ObjectSetWatcherManager.js.map +1 -0
- package/lib/adapter/sync/effection-utils/useValueSignal.d.ts +4 -0
- package/lib/adapter/sync/effection-utils/useValueSignal.d.ts.map +1 -0
- package/lib/adapter/sync/effection-utils/useValueSignal.js +31 -0
- package/lib/adapter/sync/effection-utils/useValueSignal.js.map +1 -0
- package/lib/adapter/sync/useObjectSetWatcherConnection.d.ts +10 -0
- package/lib/adapter/sync/useObjectSetWatcherConnection.d.ts.map +1 -0
- package/lib/adapter/sync/useObjectSetWatcherConnection.js +184 -0
- package/lib/adapter/sync/useObjectSetWatcherConnection.js.map +1 -0
- package/lib/adapter/sync/useObjectSetWatcherSession.d.ts +9 -0
- package/lib/adapter/sync/useObjectSetWatcherSession.d.ts.map +1 -0
- package/lib/adapter/sync/useObjectSetWatcherSession.js +69 -0
- package/lib/adapter/sync/useObjectSetWatcherSession.js.map +1 -0
- package/lib/config/index.d.ts +10 -0
- package/lib/config/index.d.ts.map +1 -0
- package/lib/config/index.js +40 -0
- package/lib/config/index.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -0
- package/lib/meta/createOntologyMetadataCollections.d.ts +7 -0
- package/lib/meta/createOntologyMetadataCollections.d.ts.map +1 -0
- package/lib/meta/createOntologyMetadataCollections.js +304 -0
- package/lib/meta/createOntologyMetadataCollections.js.map +1 -0
- package/lib/meta/index.d.ts +2 -0
- package/lib/meta/index.d.ts.map +1 -0
- package/lib/meta/index.js +2 -0
- package/lib/meta/index.js.map +1 -0
- package/lib/users/createUserCollection.d.ts +7 -0
- package/lib/users/createUserCollection.d.ts.map +1 -0
- package/lib/users/createUserCollection.js +93 -0
- package/lib/users/createUserCollection.js.map +1 -0
- package/lib/users/index.d.ts +2 -0
- package/lib/users/index.d.ts.map +1 -0
- package/lib/users/index.js +2 -0
- package/lib/users/index.js.map +1 -0
- package/lib/utils/AsyncIterable.d.ts +3 -0
- package/lib/utils/AsyncIterable.d.ts.map +1 -0
- package/lib/utils/AsyncIterable.js +27 -0
- package/lib/utils/AsyncIterable.js.map +1 -0
- package/lib/utils/chunk.d.ts +2 -0
- package/lib/utils/chunk.d.ts.map +1 -0
- package/lib/utils/chunk.js +8 -0
- package/lib/utils/chunk.js.map +1 -0
- package/lib/utils/client.d.ts +11 -0
- package/lib/utils/client.d.ts.map +1 -0
- package/lib/utils/client.js +22 -0
- package/lib/utils/client.js.map +1 -0
- package/package.json +67 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Robert Fidler
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# foundry-ontology
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { SearchJsonQueryV2, SearchOrderByV2 } from "@osdk/foundry.ontologies";
|
|
2
|
+
import { LoadSubsetOptions } from "@tanstack/db";
|
|
3
|
+
export declare function convertLoadSubsetFilter(filter: LoadSubsetOptions["where"]): SearchJsonQueryV2 | undefined;
|
|
4
|
+
export declare function convertLoadSubsetOrderBy(orderBy: LoadSubsetOptions["orderBy"]): SearchOrderByV2 | undefined;
|
|
5
|
+
//# sourceMappingURL=convertLoadSubsetOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertLoadSubsetOptions.d.ts","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,iBAAiB,EACjB,eAAe,EAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAa,iBAAiB,EAAgD,MAAM,cAAc,CAAC;AAkB1G,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,iBAAiB,GAAG,SAAS,CAgEzG;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,eAAe,GAAG,SAAS,CAS3G"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { parseOrderByExpression, parseWhereExpression } from "@tanstack/db";
|
|
2
|
+
function fieldPathToPropertyIdentifier(fieldPath) {
|
|
3
|
+
if (fieldPath.length === 1) {
|
|
4
|
+
return {
|
|
5
|
+
type: "property",
|
|
6
|
+
apiName: fieldPath[0],
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
else if (fieldPath.length === 2) {
|
|
10
|
+
return {
|
|
11
|
+
type: "structField",
|
|
12
|
+
propertyApiName: fieldPath[0],
|
|
13
|
+
structFieldApiName: fieldPath[1],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
throw new Error(`Invalid field path: ${fieldPath.join(".")}`);
|
|
17
|
+
}
|
|
18
|
+
export function convertLoadSubsetFilter(filter) {
|
|
19
|
+
return (parseWhereExpression(filter, {
|
|
20
|
+
handlers: {
|
|
21
|
+
and: (...filters) => ({ type: "and", value: filters }),
|
|
22
|
+
or: (...filters) => ({ type: "or", value: filters }),
|
|
23
|
+
not: (filter) => ({ type: "not", value: filter }),
|
|
24
|
+
eq: (field, value) => ({
|
|
25
|
+
type: "eq",
|
|
26
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
27
|
+
value,
|
|
28
|
+
}),
|
|
29
|
+
gt: (field, value) => ({
|
|
30
|
+
type: "gt",
|
|
31
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
32
|
+
value,
|
|
33
|
+
}),
|
|
34
|
+
gte: (field, value) => ({
|
|
35
|
+
type: "gte",
|
|
36
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
37
|
+
value,
|
|
38
|
+
}),
|
|
39
|
+
lt: (field, value) => ({
|
|
40
|
+
type: "lt",
|
|
41
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
42
|
+
value,
|
|
43
|
+
}),
|
|
44
|
+
lte: (field, value) => ({
|
|
45
|
+
type: "lte",
|
|
46
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
47
|
+
value,
|
|
48
|
+
}),
|
|
49
|
+
isNull: (field) => ({
|
|
50
|
+
type: "isNull",
|
|
51
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
52
|
+
value: true,
|
|
53
|
+
}),
|
|
54
|
+
in: (field, value) => ({
|
|
55
|
+
type: "in",
|
|
56
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
57
|
+
value: value.filter((v) => v !== null && v !== undefined),
|
|
58
|
+
}),
|
|
59
|
+
ilike: (field, value) => value !== "%"
|
|
60
|
+
? {
|
|
61
|
+
type: "wildcard",
|
|
62
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
63
|
+
// https://github.com/TanStack/db/blob/dab41aec8d8fa042384b4c0f878b3731c1d4a2b0/packages/db/src/query/compiler/evaluators.ts#L479-L481
|
|
64
|
+
// https://www.palantir.com/docs/foundry/object-explorer/search-syntax#wildcards
|
|
65
|
+
value: value.toLowerCase().replace("_", "?").replace("%", "*"),
|
|
66
|
+
}
|
|
67
|
+
: { type: "and", value: [] },
|
|
68
|
+
like: (field, value) =>
|
|
69
|
+
// We can copy the ilike logic -- this will return slightly more results but still better than querying everything.
|
|
70
|
+
value !== "%"
|
|
71
|
+
? {
|
|
72
|
+
type: "wildcard",
|
|
73
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
74
|
+
value: value.toLowerCase().replace("_", "?").replace("%", "*"),
|
|
75
|
+
}
|
|
76
|
+
: { type: "and", value: [] },
|
|
77
|
+
},
|
|
78
|
+
}) ?? undefined);
|
|
79
|
+
}
|
|
80
|
+
export function convertLoadSubsetOrderBy(orderBy) {
|
|
81
|
+
return orderBy
|
|
82
|
+
? {
|
|
83
|
+
fields: parseOrderByExpression(orderBy).map((ordering) => ({
|
|
84
|
+
field: ordering.field[0],
|
|
85
|
+
direction: ordering.direction,
|
|
86
|
+
})),
|
|
87
|
+
}
|
|
88
|
+
: undefined;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=convertLoadSubsetOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertLoadSubsetOptions.js","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ActionTypeFullMetadata } from "@osdk/foundry.ontologies";
|
|
2
|
+
import { Collection } from "@tanstack/db";
|
|
3
|
+
import { OntologyClient } from "../utils/client";
|
|
4
|
+
export declare function createAction<Parameters extends Record<string, unknown>>(opts: {
|
|
5
|
+
client: OntologyClient;
|
|
6
|
+
actionType: ActionTypeFullMetadata;
|
|
7
|
+
objectCollections: Record<string, Collection>;
|
|
8
|
+
}): (variables: Parameters) => import("@tanstack/db").Transaction;
|
|
9
|
+
//# sourceMappingURL=createAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAction.d.ts","sourceRoot":"","sources":["../../src/adapter/createAction.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,sBAAsB,EAGzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAA0B,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAWjD,wBAAgB,YAAY,CAAC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE;IAC3E,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,sBAAsB,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACjD,iEAqCA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import { Actions, } from "@osdk/foundry.ontologies";
|
|
3
|
+
import { createOptimisticAction } from "@tanstack/db";
|
|
4
|
+
function getProperties(rule) {
|
|
5
|
+
const properties = {};
|
|
6
|
+
return properties;
|
|
7
|
+
}
|
|
8
|
+
export function createAction(opts) {
|
|
9
|
+
return createOptimisticAction({
|
|
10
|
+
onMutate: (parameters) => {
|
|
11
|
+
const optimisticRules = opts.actionType.fullLogicRules.filter((rule) => rule.type === "createObject" ||
|
|
12
|
+
rule.type === "modifyObject" ||
|
|
13
|
+
rule.type === "deleteObject" ||
|
|
14
|
+
rule.type === "createOrModifyObjectV2");
|
|
15
|
+
for (const rule of optimisticRules) {
|
|
16
|
+
switch (rule.type) {
|
|
17
|
+
case "createObject": {
|
|
18
|
+
const collection = opts.objectCollections[rule.objectTypeApiName];
|
|
19
|
+
collection.insert(getProperties(rule));
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
case "modifyObject": {
|
|
23
|
+
const collection = opts.objectCollections[rule.objectToModify];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
mutationFn: async (parameters) => {
|
|
29
|
+
const { edits } = await Actions.apply(opts.client, opts.client.ontologyRid, opts.actionType.actionType.apiName, {
|
|
30
|
+
parameters,
|
|
31
|
+
options: { mode: "VALIDATE_AND_EXECUTE", returnEdits: "ALL_V2_WITH_DELETIONS" },
|
|
32
|
+
});
|
|
33
|
+
// actually request final objects
|
|
34
|
+
// loop through edits and write them directly to collection
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
// in optimisticAction, optimistic update is discarded when mutationFn completes.
|
|
39
|
+
// we're supposed to make sure collection syncs in the new data before mutationFn completes?
|
|
40
|
+
// if not a function-backed action, we provide the optimistic flag
|
|
41
|
+
// objectCollections: Record<string, ObjectCollection>
|
|
42
|
+
//# sourceMappingURL=createAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAction.js","sourceRoot":"","sources":["../../src/adapter/createAction.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EACH,OAAO,GAIV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAc,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGlE,SAAS,aAAa,CAAC,IAGtB;IACG,MAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,YAAY,CAA6C,IAIxE;IACG,OAAO,sBAAsB,CAAa;QACtC,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE;YACrB,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CACzD,CAAC,IAAI,EAAE,EAAE,CACL,IAAI,CAAC,IAAI,KAAK,cAAc;gBAC5B,IAAI,CAAC,IAAI,KAAK,cAAc;gBAC5B,IAAI,CAAC,IAAI,KAAK,cAAc;gBAC5B,IAAI,CAAC,IAAI,KAAK,wBAAwB,CAC7C,CAAC;YACF,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;gBACjC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;oBAChB,KAAK,cAAc,CAAC,CAAC,CAAC;wBAClB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAE,CAAC;wBACnE,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;wBACvC,MAAM;oBACV,CAAC;oBACD,KAAK,cAAc,CAAC,CAAC,CAAC;wBAClB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBACnE,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,CACjC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,CAAC,WAAW,EACvB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAClC;gBACI,UAAU;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,uBAAuB,EAAE;aAClF,CACJ,CAAC;YACF,iCAAiC;YACjC,2DAA2D;QAC/D,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AAED,iFAAiF;AACjF,4FAA4F;AAE5F,kEAAkE;AAElE,sDAAsD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { OntologyObjectV2 } from "@osdk/foundry.ontologies";
|
|
2
|
+
import { Collection, CollectionConfig, InferSchemaOutput, StandardSchema, SyncConfig, UtilsRecord } from "@tanstack/db";
|
|
3
|
+
import type { OntologyAdapter, OntologyIR } from "@party-stack/ontology";
|
|
4
|
+
import { OntologyClient } from "../utils/client.js";
|
|
5
|
+
interface OntologyObject extends OntologyObjectV2 {
|
|
6
|
+
__primaryKey: string | number;
|
|
7
|
+
}
|
|
8
|
+
type FoundryObject = OntologyObject & Record<string, unknown>;
|
|
9
|
+
export interface ObjectCollectionConfig<TSchema extends StandardSchema<OntologyObject>> extends Omit<CollectionConfig<InferSchemaOutput<TSchema>, string | number, TSchema>, "sync" | "syncMode" | "getKey" | "onInsert" | "onUpdate" | "onDelete"> {
|
|
10
|
+
client: OntologyClient;
|
|
11
|
+
objectType: string;
|
|
12
|
+
schema: TSchema;
|
|
13
|
+
}
|
|
14
|
+
export interface ObjectCollectionUtils extends UtilsRecord {
|
|
15
|
+
}
|
|
16
|
+
export declare function createFoundryObjectSyncConfig(client: OntologyClient, objectType: string, decodeObject?: (object: FoundryObject) => FoundryObject): SyncConfig<Record<string, unknown>, string | number>;
|
|
17
|
+
export declare function createFoundryOntologyAdapter(opts: {
|
|
18
|
+
client: OntologyClient;
|
|
19
|
+
ir?: OntologyIR;
|
|
20
|
+
}): OntologyAdapter;
|
|
21
|
+
export declare function createObjectCollection<TSchema extends StandardSchema<OntologyObject>>(config: ObjectCollectionConfig<TSchema>): Collection<InferSchemaOutput<TSchema>, string | number, ObjectCollectionUtils, TSchema>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=createObjectCollection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createObjectCollection.d.ts","sourceRoot":"","sources":["../../src/adapter/createObjectCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EACH,UAAU,EACV,gBAAgB,EAGhB,iBAAiB,EAEjB,cAAc,EACd,UAAU,EACV,WAAW,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAOpD,UAAU,cAAe,SAAQ,gBAAgB;IAC7C,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AAED,KAAK,aAAa,GAAG,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9D,MAAM,WAAW,sBAAsB,CAAC,OAAO,SAAS,cAAc,CAAC,cAAc,CAAC,CAClF,SAAQ,IAAI,CACR,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EACtE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CACxE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACnB;AAGD,MAAM,WAAW,qBAAsB,SAAQ,WAAW;CAAG;AAE7D,wBAAgB,6BAA6B,CACzC,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,GAAE,CAAC,MAAM,EAAE,aAAa,KAAK,aAAkC,GAC5E,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAqGtD;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IAC/C,MAAM,EAAE,cAAc,CAAC;IACvB,EAAE,CAAC,EAAE,UAAU,CAAC;CACnB,GAAG,eAAe,CAYlB;AAsBD,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,cAAc,CAAC,cAAc,CAAC,EACjF,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,GACxC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { OntologyObjectsV2 } from "@osdk/foundry.ontologies";
|
|
2
|
+
import { createCollection, DeduplicatedLoadSubset, } from "@tanstack/db";
|
|
3
|
+
import * as AsyncIterable from "../utils/AsyncIterable.js";
|
|
4
|
+
import { convertLoadSubsetFilter, convertLoadSubsetOrderBy } from "./convertLoadSubsetOptions.js";
|
|
5
|
+
import { createFoundryObjectDecoder } from "./foundryCodec.js";
|
|
6
|
+
import { getObjectSetWatcherManager } from "./sync/ObjectSetWatcherManager.js";
|
|
7
|
+
export function createFoundryObjectSyncConfig(client, objectType, decodeObject = (object) => object) {
|
|
8
|
+
return {
|
|
9
|
+
sync: (params) => {
|
|
10
|
+
const { begin, write, commit, markReady, collection } = params;
|
|
11
|
+
const upsertObject = (object) => {
|
|
12
|
+
const existingObject = collection._state.syncedData.get(object.__primaryKey);
|
|
13
|
+
if (existingObject) {
|
|
14
|
+
write({ type: "update", value: object, previousValue: existingObject });
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
write({ type: "insert", value: object });
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const deleteObject = (object) => {
|
|
21
|
+
const existingObject = collection._state.syncedData.get(object.__primaryKey);
|
|
22
|
+
if (existingObject) {
|
|
23
|
+
write({ type: "delete", value: object, previousValue: existingObject });
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const fetchObjects = async (opts) => {
|
|
27
|
+
const where = convertLoadSubsetFilter(opts.where);
|
|
28
|
+
// Short-circuit this case since it should be no results but Foundry returns everything.
|
|
29
|
+
if (where?.type === "in" && where.value.length === 0) {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
const results = await AsyncIterable.toArray(AsyncIterable.fromPagination((pageSize, pageToken) => OntologyObjectsV2.search(client, client.ontologyRid, objectType, {
|
|
33
|
+
snapshot: true,
|
|
34
|
+
where,
|
|
35
|
+
excludeRid: true,
|
|
36
|
+
// We select all properties right now.
|
|
37
|
+
select: [],
|
|
38
|
+
selectV2: [],
|
|
39
|
+
pageSize,
|
|
40
|
+
pageToken,
|
|
41
|
+
orderBy: convertLoadSubsetOrderBy(opts.orderBy),
|
|
42
|
+
}), (page) => page.nextPageToken, (page) => page.data, 10_000, opts.limit));
|
|
43
|
+
return results.map(decodeObject);
|
|
44
|
+
};
|
|
45
|
+
const loadSubset = async (opts) => {
|
|
46
|
+
const objects = await fetchObjects(opts);
|
|
47
|
+
if (objects.length > 0) {
|
|
48
|
+
begin();
|
|
49
|
+
for (const object of objects) {
|
|
50
|
+
upsertObject(object);
|
|
51
|
+
}
|
|
52
|
+
commit();
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
const loadSubsetDedupe = new DeduplicatedLoadSubset({ loadSubset });
|
|
56
|
+
const objectSetWatcherManager = getObjectSetWatcherManager(client);
|
|
57
|
+
const unsubscribe = objectSetWatcherManager.subscribe({ type: "base", objectType }, (message) => {
|
|
58
|
+
switch (message.type) {
|
|
59
|
+
case "change": {
|
|
60
|
+
begin();
|
|
61
|
+
for (const update of message.updates) {
|
|
62
|
+
if (update.type === "object") {
|
|
63
|
+
const object = decodeObject(update.object);
|
|
64
|
+
switch (update.state) {
|
|
65
|
+
case "ADDED_OR_UPDATED": {
|
|
66
|
+
upsertObject(object);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
case "REMOVED": {
|
|
70
|
+
deleteObject(object);
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
commit();
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
case "refresh": {
|
|
80
|
+
loadSubsetDedupe.reset();
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
markReady();
|
|
86
|
+
return {
|
|
87
|
+
loadSubset: loadSubsetDedupe.loadSubset,
|
|
88
|
+
cleanup: unsubscribe,
|
|
89
|
+
};
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export function createFoundryOntologyAdapter(opts) {
|
|
94
|
+
const decoder = opts.ir ? createFoundryObjectDecoder(opts.ir) : null;
|
|
95
|
+
return {
|
|
96
|
+
name: "foundry",
|
|
97
|
+
getCollectionOptions: (objectType) => ({
|
|
98
|
+
syncMode: "on-demand",
|
|
99
|
+
sync: createFoundryObjectSyncConfig(opts.client, objectType, (object) => decoder ? decoder.decodeObject(objectType, object) : object),
|
|
100
|
+
}),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function objectCollectionOptions(config) {
|
|
104
|
+
const { client, objectType, schema, ...rest } = config;
|
|
105
|
+
const sync = createFoundryObjectSyncConfig(client, objectType);
|
|
106
|
+
return {
|
|
107
|
+
...rest,
|
|
108
|
+
schema,
|
|
109
|
+
syncMode: "on-demand",
|
|
110
|
+
getKey: (object) => object.__primaryKey,
|
|
111
|
+
sync,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
export function createObjectCollection(config) {
|
|
115
|
+
return createCollection(objectCollectionOptions(config));
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=createObjectCollection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createObjectCollection.js","sourceRoot":"","sources":["../../src/adapter/createObjectCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { OntologyIR } from "@party-stack/ontology";
|
|
2
|
+
type FoundryObjectRecord = Record<string, unknown>;
|
|
3
|
+
export interface FoundryObjectDecoder {
|
|
4
|
+
decodeObject: (objectType: string, object: FoundryObjectRecord) => FoundryObjectRecord;
|
|
5
|
+
}
|
|
6
|
+
export declare function createFoundryObjectDecoder(ir: OntologyIR): FoundryObjectDecoder;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=foundryCodec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foundryCodec.d.ts","sourceRoot":"","sources":["../../src/adapter/foundryCodec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,UAAU,EAAW,MAAM,uBAAuB,CAAC;AAEhF,KAAK,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD,MAAM,WAAW,oBAAoB;IACjC,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,KAAK,mBAAmB,CAAC;CAC1F;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,UAAU,GAAG,oBAAoB,CAsG/E"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Temporal } from "temporal-polyfill";
|
|
2
|
+
export function createFoundryObjectDecoder(ir) {
|
|
3
|
+
const objectTypes = new Map(ir.objectTypes.map((objectType) => [objectType.name, objectType]));
|
|
4
|
+
const namedTypes = new Map(ir.types.map((type) => [type.name, type.type]));
|
|
5
|
+
const resolveType = (type, seen = new Set()) => {
|
|
6
|
+
if (type.kind !== "ref") {
|
|
7
|
+
return type;
|
|
8
|
+
}
|
|
9
|
+
const name = type.value.name;
|
|
10
|
+
if (seen.has(name)) {
|
|
11
|
+
throw new Error(`Circular ontology type reference "${name}".`);
|
|
12
|
+
}
|
|
13
|
+
const resolved = namedTypes.get(name);
|
|
14
|
+
if (!resolved) {
|
|
15
|
+
throw new Error(`Unknown ontology type reference "${name}".`);
|
|
16
|
+
}
|
|
17
|
+
return resolveType(resolved, new Set([...seen, name]));
|
|
18
|
+
};
|
|
19
|
+
const decodeValue = (type, value) => {
|
|
20
|
+
const resolvedType = resolveType(type);
|
|
21
|
+
if (value === undefined || value === null) {
|
|
22
|
+
if (resolvedType.kind === "optional") {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
switch (resolvedType.kind) {
|
|
28
|
+
case "string":
|
|
29
|
+
return value;
|
|
30
|
+
case "boolean":
|
|
31
|
+
return typeof value === "string" ? value === "true" : value;
|
|
32
|
+
case "integer":
|
|
33
|
+
case "float":
|
|
34
|
+
case "double":
|
|
35
|
+
return typeof value === "string" ? Number(value) : value;
|
|
36
|
+
case "date":
|
|
37
|
+
return typeof value === "string" ? Temporal.PlainDate.from(value) : value;
|
|
38
|
+
case "timestamp":
|
|
39
|
+
return typeof value === "string" ? Temporal.Instant.from(value) : value;
|
|
40
|
+
case "geopoint":
|
|
41
|
+
return decodeGeoPoint(value);
|
|
42
|
+
case "attachment":
|
|
43
|
+
return value;
|
|
44
|
+
case "list":
|
|
45
|
+
return Array.isArray(value)
|
|
46
|
+
? value.map((item) => decodeValue(resolvedType.value.elementType, item))
|
|
47
|
+
: value;
|
|
48
|
+
case "map":
|
|
49
|
+
if (!isPlainObject(value)) {
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => [
|
|
53
|
+
decodeValue(resolvedType.value.keyType, key),
|
|
54
|
+
decodeValue(resolvedType.value.valueType, entryValue),
|
|
55
|
+
]));
|
|
56
|
+
case "struct":
|
|
57
|
+
if (!isPlainObject(value)) {
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => {
|
|
61
|
+
const field = resolvedType.value.fields.find((candidate) => candidate.name === key);
|
|
62
|
+
return [key, field ? decodeValue(field.type, entryValue) : entryValue];
|
|
63
|
+
}));
|
|
64
|
+
case "optional":
|
|
65
|
+
return decodeValue(resolvedType.value.type, value);
|
|
66
|
+
case "union":
|
|
67
|
+
case "result":
|
|
68
|
+
return value;
|
|
69
|
+
case "ref":
|
|
70
|
+
return decodeValue(resolveType(resolvedType), value);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const decodeObjectType = (objectType, object) => {
|
|
74
|
+
return Object.fromEntries(Object.entries(object).map(([key, value]) => {
|
|
75
|
+
const property = objectType.properties.find((candidate) => candidate.name === key);
|
|
76
|
+
return [key, property ? decodeValue(property.type, value) : value];
|
|
77
|
+
}));
|
|
78
|
+
};
|
|
79
|
+
return {
|
|
80
|
+
decodeObject: (objectTypeName, object) => {
|
|
81
|
+
const objectType = objectTypes.get(objectTypeName);
|
|
82
|
+
if (!objectType) {
|
|
83
|
+
return object;
|
|
84
|
+
}
|
|
85
|
+
return decodeObjectType(objectType, object);
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function decodeGeoPoint(value) {
|
|
90
|
+
if (isPlainObject(value) && value.type === "Point" && Array.isArray(value.coordinates)) {
|
|
91
|
+
const coordinates = value.coordinates;
|
|
92
|
+
const lon = coordinates[0];
|
|
93
|
+
const lat = coordinates[1];
|
|
94
|
+
if (typeof lat === "number" && typeof lon === "number") {
|
|
95
|
+
return { lat, lon };
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (isPlainObject(value) &&
|
|
99
|
+
typeof value.lat === "number" &&
|
|
100
|
+
typeof value.lon === "number") {
|
|
101
|
+
return value;
|
|
102
|
+
}
|
|
103
|
+
return value;
|
|
104
|
+
}
|
|
105
|
+
function isPlainObject(value) {
|
|
106
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=foundryCodec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foundryCodec.js","sourceRoot":"","sources":["../../src/adapter/foundryCodec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ObjectSetStreamSubscribeRequest, ObjectSetUpdate } from "@osdk/foundry.ontologies";
|
|
2
|
+
export interface ObjectSetSubscription extends ObjectSetStreamSubscribeRequest {
|
|
3
|
+
id: string;
|
|
4
|
+
}
|
|
5
|
+
export type ObjectSetSubscriptionStateUpdateStatus = "open" | "closed" | "qos" | "error";
|
|
6
|
+
export interface ObjectSetSubscriptionsStateUpdateMessage {
|
|
7
|
+
subscriptionId: string;
|
|
8
|
+
status: ObjectSetSubscriptionStateUpdateStatus;
|
|
9
|
+
}
|
|
10
|
+
export interface ObjectSetSubscriptionsStateUpdateMessages {
|
|
11
|
+
type: "state";
|
|
12
|
+
updates: ObjectSetSubscriptionsStateUpdateMessage[];
|
|
13
|
+
}
|
|
14
|
+
export interface ObjectSetSubscriptionsChangeMessage {
|
|
15
|
+
type: "change";
|
|
16
|
+
subscriptionId: string;
|
|
17
|
+
updates: ObjectSetUpdate[];
|
|
18
|
+
}
|
|
19
|
+
export interface ObjectSetSubscriptionsRefreshMessage {
|
|
20
|
+
type: "refresh";
|
|
21
|
+
subscriptionId: string;
|
|
22
|
+
objectType: string;
|
|
23
|
+
}
|
|
24
|
+
export type ObjectSetSubscriptionsMessage = ObjectSetSubscriptionsStateUpdateMessages | ObjectSetSubscriptionsChangeMessage | ObjectSetSubscriptionsRefreshMessage;
|
|
25
|
+
export type ObjectSetSubscriptionMessage = {
|
|
26
|
+
type: "change";
|
|
27
|
+
updates: ObjectSetUpdate[];
|
|
28
|
+
} | {
|
|
29
|
+
type: "refresh";
|
|
30
|
+
objectType: string;
|
|
31
|
+
} | {
|
|
32
|
+
type: "state";
|
|
33
|
+
status: ObjectSetSubscriptionStateUpdateStatus;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=ObjectSetSubscription.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectSetSubscription.d.ts","sourceRoot":"","sources":["../../../src/adapter/sync/ObjectSetSubscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE5F,MAAM,WAAW,qBAAsB,SAAQ,+BAA+B;IAC1E,EAAE,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,sCAAsC,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEzF,MAAM,WAAW,wCAAwC;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,sCAAsC,CAAC;CAClD;AAED,MAAM,WAAW,yCAAyC;IACtD,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,wCAAwC,EAAE,CAAC;CACvD;AAED,MAAM,WAAW,mCAAmC;IAChD,IAAI,EAAE,QAAQ,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,oCAAoC;IACjD,IAAI,EAAE,SAAS,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,6BAA6B,GACnC,yCAAyC,GACzC,mCAAmC,GACnC,oCAAoC,CAAC;AAE3C,MAAM,MAAM,4BAA4B,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,sCAAsC,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectSetSubscription.js","sourceRoot":"","sources":["../../../src/adapter/sync/ObjectSetSubscription.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ObjectSet } from "@osdk/foundry.ontologies";
|
|
2
|
+
import { OntologyClient } from "../../utils/client.js";
|
|
3
|
+
import { ObjectSetSubscriptionMessage } from "./ObjectSetSubscription.js";
|
|
4
|
+
export declare class ObjectSetWatcherManager {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(client: OntologyClient);
|
|
7
|
+
subscribe(objectSet: ObjectSet, callback: (data: ObjectSetSubscriptionMessage) => void): () => void;
|
|
8
|
+
stop(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare function getObjectSetWatcherManager(client: OntologyClient): ObjectSetWatcherManager;
|
|
11
|
+
//# sourceMappingURL=ObjectSetWatcherManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectSetWatcherManager.d.ts","sourceRoot":"","sources":["../../../src/adapter/sync/ObjectSetWatcherManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAyB,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAGjG,qBAAa,uBAAuB;;gBAOpB,MAAM,EAAE,cAAc;IAgDlC,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,4BAA4B,KAAK,IAAI,GAAG,MAAM,IAAI;IAqB7F,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAO9B;AAGD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,cAAc,GAAG,uBAAuB,CAO1F"}
|