@party-stack/foundry-ontology 0.19.0 → 0.20.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/README.md +53 -32
- package/lib/adapter/backend.d.ts +35 -0
- package/lib/adapter/backend.d.ts.map +1 -0
- package/lib/adapter/backend.js +210 -0
- package/lib/adapter/backend.js.map +1 -0
- package/lib/adapter/encrypted.d.ts +12 -0
- package/lib/adapter/encrypted.d.ts.map +1 -0
- package/lib/adapter/encrypted.js +79 -0
- package/lib/adapter/encrypted.js.map +1 -0
- package/lib/adapter/foundryActionError.d.ts +7 -0
- package/lib/adapter/foundryActionError.d.ts.map +1 -0
- package/lib/adapter/foundryActionError.js +61 -0
- package/lib/adapter/foundryActionError.js.map +1 -0
- package/lib/adapter/foundryActionValidation.d.ts +4 -3
- package/lib/adapter/foundryActionValidation.d.ts.map +1 -1
- package/lib/adapter/foundryActionValidation.js +71 -25
- package/lib/adapter/foundryActionValidation.js.map +1 -1
- package/lib/adapter/foundryCodec.d.ts +2 -5
- package/lib/adapter/foundryCodec.d.ts.map +1 -1
- package/lib/adapter/foundryCodec.js +19 -7
- package/lib/adapter/foundryCodec.js.map +1 -1
- package/lib/adapter/foundryObjectSearch.d.ts +13 -0
- package/lib/adapter/foundryObjectSearch.d.ts.map +1 -0
- package/lib/adapter/foundryObjectSearch.js +57 -0
- package/lib/adapter/foundryObjectSearch.js.map +1 -0
- package/lib/adapter/index.d.ts +3 -4
- package/lib/adapter/index.js +3 -4
- package/lib/adapter/likeFilter.d.ts +10 -0
- package/lib/adapter/likeFilter.d.ts.map +1 -0
- package/lib/adapter/likeFilter.js +87 -0
- package/lib/adapter/likeFilter.js.map +1 -0
- package/lib/adapter/makeFoundryOntologyBackend.d.ts +76 -0
- package/lib/adapter/makeFoundryOntologyBackend.d.ts.map +1 -0
- package/lib/adapter/makeFoundryOntologyBackend.js +505 -0
- package/lib/adapter/makeFoundryOntologyBackend.js.map +1 -0
- package/lib/adapter/subsetFilter.d.ts +14 -0
- package/lib/adapter/subsetFilter.d.ts.map +1 -0
- package/lib/adapter/subsetFilter.js +105 -0
- package/lib/adapter/subsetFilter.js.map +1 -0
- package/lib/adapter/uploads.d.ts +25 -0
- package/lib/adapter/uploads.d.ts.map +1 -0
- package/lib/adapter/uploads.js +78 -0
- package/lib/adapter/uploads.js.map +1 -0
- package/lib/backend.d.ts +80 -0
- package/lib/backend.d.ts.map +1 -0
- package/lib/backend.js +34 -0
- package/lib/backend.js.map +1 -0
- package/lib/config/index.d.ts +8 -12
- package/lib/config/index.d.ts.map +1 -1
- package/lib/config/index.js +49 -52
- package/lib/config/index.js.map +1 -1
- package/lib/connectionOptions.d.ts +9 -0
- package/lib/connectionOptions.d.ts.map +1 -0
- package/lib/connectionOptions.js +1 -0
- package/lib/context.d.ts +21 -0
- package/lib/context.d.ts.map +1 -0
- package/lib/context.js +16 -0
- package/lib/context.js.map +1 -0
- package/lib/index.d.ts +7 -7
- package/lib/index.js +6 -7
- package/lib/meta/backend.d.ts +10 -0
- package/lib/meta/backend.d.ts.map +1 -0
- package/lib/meta/backend.js +161 -0
- package/lib/meta/backend.js.map +1 -0
- package/lib/meta/convertMetaActionType.d.ts +3 -2
- package/lib/meta/convertMetaActionType.d.ts.map +1 -1
- package/lib/meta/convertMetaActionType.js +3 -3
- package/lib/meta/convertMetaActionType.js.map +1 -1
- package/lib/meta/convertMetaLinkType.d.ts +2 -2
- package/lib/meta/convertMetaLinkType.d.ts.map +1 -1
- package/lib/meta/convertMetaLinkType.js +13 -13
- package/lib/meta/convertMetaLinkType.js.map +1 -1
- package/lib/meta/convertMetaObjectType.d.ts +2 -2
- package/lib/meta/convertMetaObjectType.d.ts.map +1 -1
- package/lib/meta/convertMetaObjectType.js +5 -1
- package/lib/meta/convertMetaObjectType.js.map +1 -1
- package/lib/meta/convertMetaQueryFunctionType.d.ts +1 -1
- package/lib/meta/convertMetaQueryFunctionType.js.map +1 -1
- package/lib/meta/convertMetaTypeDef.d.ts +1 -1
- package/lib/meta/convertMetaTypeDef.d.ts.map +1 -1
- package/lib/meta/convertMetaTypeDef.js +7 -1
- package/lib/meta/convertMetaTypeDef.js.map +1 -1
- package/lib/meta/convertMetaValueType.d.ts +2 -2
- package/lib/meta/convertMetaValueType.d.ts.map +1 -1
- package/lib/meta/convertMetaValueType.js.map +1 -1
- package/lib/meta/convertOmsActionParameterMetadata.d.ts +1 -1
- package/lib/meta/convertOmsActionParameterMetadata.js +1 -1
- package/lib/meta/convertOmsActionParameterMetadata.js.map +1 -1
- package/lib/meta/index.d.ts +2 -4
- package/lib/meta/index.js +2 -4
- package/lib/meta/listObjectTypes.d.ts +6 -0
- package/lib/meta/listObjectTypes.d.ts.map +1 -0
- package/lib/meta/listObjectTypes.js +13 -0
- package/lib/meta/listObjectTypes.js.map +1 -0
- package/lib/meta/loadActions.d.ts +7 -0
- package/lib/meta/loadActions.d.ts.map +1 -0
- package/lib/meta/loadActions.js +20 -0
- package/lib/meta/loadActions.js.map +1 -0
- package/lib/meta/loadEntities.d.ts +9 -0
- package/lib/meta/loadEntities.d.ts.map +1 -0
- package/lib/meta/loadEntities.js +73 -0
- package/lib/meta/loadEntities.js.map +1 -0
- package/lib/meta/loadQueryFunctions.d.ts +11 -0
- package/lib/meta/loadQueryFunctions.d.ts.map +1 -0
- package/lib/meta/loadQueryFunctions.js +18 -0
- package/lib/meta/loadQueryFunctions.js.map +1 -0
- package/lib/meta/planMetaLookup.d.ts +12 -0
- package/lib/meta/planMetaLookup.d.ts.map +1 -0
- package/lib/meta/planMetaLookup.js +44 -0
- package/lib/meta/planMetaLookup.js.map +1 -0
- package/lib/platform.d.ts +78 -0
- package/lib/platform.d.ts.map +1 -0
- package/lib/platform.js +116 -0
- package/lib/platform.js.map +1 -0
- package/lib/platformCollections.d.ts +68 -0
- package/lib/platformCollections.d.ts.map +1 -0
- package/lib/platformCollections.js +7 -0
- package/lib/platformCollections.js.map +1 -0
- package/lib/serviceConnector.d.ts +8 -0
- package/lib/serviceConnector.d.ts.map +1 -0
- package/lib/serviceConnector.js +105 -0
- package/lib/serviceConnector.js.map +1 -0
- package/lib/stagedWrites.d.ts +3 -2
- package/lib/stagedWrites.d.ts.map +1 -1
- package/lib/stagedWrites.js +30 -3
- package/lib/stagedWrites.js.map +1 -1
- package/lib/users/admin.d.ts +105 -0
- package/lib/users/admin.d.ts.map +1 -0
- package/lib/users/admin.js +35 -0
- package/lib/users/admin.js.map +1 -0
- package/lib/users/createFoundryUsersIntegration.d.ts +2 -2
- package/lib/users/createFoundryUsersIntegration.d.ts.map +1 -1
- package/lib/users/createFoundryUsersIntegration.js +4 -6
- package/lib/users/createFoundryUsersIntegration.js.map +1 -1
- package/lib/users/foundryUser.d.ts +2 -2
- package/lib/users/foundryUser.js +1 -1
- package/lib/users/foundryUser.js.map +1 -1
- package/lib/users/index.d.ts +2 -3
- package/lib/users/index.js +2 -3
- package/lib/users/loadUserSubset.d.ts +8 -0
- package/lib/users/loadUserSubset.d.ts.map +1 -0
- package/lib/users/loadUserSubset.js +166 -0
- package/lib/users/loadUserSubset.js.map +1 -0
- package/lib/utils/AsyncIterable.d.ts +1 -1
- package/lib/utils/AsyncIterable.d.ts.map +1 -1
- package/lib/utils/AsyncIterable.js +11 -0
- package/lib/utils/AsyncIterable.js.map +1 -1
- package/package.json +16 -15
- package/lib/adapter/convertLoadSubsetOptions.d.ts +0 -8
- package/lib/adapter/convertLoadSubsetOptions.d.ts.map +0 -1
- package/lib/adapter/convertLoadSubsetOptions.js +0 -178
- package/lib/adapter/convertLoadSubsetOptions.js.map +0 -1
- package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts +0 -29
- package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts.map +0 -1
- package/lib/adapter/createFoundryOntologyBackendAdapter.js +0 -311
- package/lib/adapter/createFoundryOntologyBackendAdapter.js.map +0 -1
- package/lib/adapter/objectCollectionOptions.d.ts +0 -33
- package/lib/adapter/objectCollectionOptions.d.ts.map +0 -1
- package/lib/adapter/objectCollectionOptions.js +0 -482
- package/lib/adapter/objectCollectionOptions.js.map +0 -1
- package/lib/config/applyAttachmentConstraintOverrides.d.ts +0 -10
- package/lib/config/applyAttachmentConstraintOverrides.d.ts.map +0 -1
- package/lib/config/applyAttachmentConstraintOverrides.js +0 -50
- package/lib/config/applyAttachmentConstraintOverrides.js.map +0 -1
- package/lib/connection.d.ts +0 -38
- package/lib/connection.d.ts.map +0 -1
- package/lib/connection.js +0 -195
- package/lib/connection.js.map +0 -1
- package/lib/installation/createFoundryBackendInstallation.d.ts +0 -29
- package/lib/installation/createFoundryBackendInstallation.d.ts.map +0 -1
- package/lib/installation/createFoundryBackendInstallation.js +0 -60
- package/lib/installation/createFoundryBackendInstallation.js.map +0 -1
- package/lib/installation/index.d.ts +0 -2
- package/lib/installation/index.js +0 -1
- package/lib/meta/actionTypeCollectionOptions.d.ts +0 -14
- package/lib/meta/actionTypeCollectionOptions.d.ts.map +0 -1
- package/lib/meta/actionTypeCollectionOptions.js +0 -58
- package/lib/meta/actionTypeCollectionOptions.js.map +0 -1
- package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts +0 -7
- package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts.map +0 -1
- package/lib/meta/convertActionTypeLoadSubsetOptions.js +0 -84
- package/lib/meta/convertActionTypeLoadSubsetOptions.js.map +0 -1
- package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts +0 -11
- package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts.map +0 -1
- package/lib/meta/createFoundryMetaOntologyBackendAdapter.js +0 -43
- package/lib/meta/createFoundryMetaOntologyBackendAdapter.js.map +0 -1
- package/lib/meta/entityCollectionOptions.d.ts +0 -25
- package/lib/meta/entityCollectionOptions.d.ts.map +0 -1
- package/lib/meta/entityCollectionOptions.js +0 -69
- package/lib/meta/entityCollectionOptions.js.map +0 -1
- package/lib/meta/queryFunctionTypeCollectionOptions.d.ts +0 -12
- package/lib/meta/queryFunctionTypeCollectionOptions.d.ts.map +0 -1
- package/lib/meta/queryFunctionTypeCollectionOptions.js +0 -59
- package/lib/meta/queryFunctionTypeCollectionOptions.js.map +0 -1
- package/lib/users/createFoundryAdminOntologyRoute.d.ts +0 -55
- package/lib/users/createFoundryAdminOntologyRoute.d.ts.map +0 -1
- package/lib/users/createFoundryAdminOntologyRoute.js +0 -33
- package/lib/users/createFoundryAdminOntologyRoute.js.map +0 -1
- package/lib/users/userCollectionOptions.d.ts +0 -25
- package/lib/users/userCollectionOptions.d.ts.map +0 -1
- package/lib/users/userCollectionOptions.js +0 -94
- package/lib/users/userCollectionOptions.js.map +0 -1
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { toFoundryActionTypeName } from "../utils/actionTypeName.js";
|
|
2
|
-
import { parseOrderByExpression, parseWhereExpression } from "@tanstack/db";
|
|
3
|
-
//#region src/meta/convertActionTypeLoadSubsetOptions.ts
|
|
4
|
-
const FILTER_FIELDS = {
|
|
5
|
-
id: "actionTypeRid",
|
|
6
|
-
name: "actionTypeApiName",
|
|
7
|
-
displayName: "actionTypeDisplayName"
|
|
8
|
-
};
|
|
9
|
-
const LIKE_FIELDS = {
|
|
10
|
-
name: FILTER_FIELDS.name,
|
|
11
|
-
displayName: FILTER_FIELDS.displayName
|
|
12
|
-
};
|
|
13
|
-
const ORDER_BY_FIELDS = { displayName: "actionTypeDisplayName" };
|
|
14
|
-
function getFilterField(field) {
|
|
15
|
-
const name = field.join(".");
|
|
16
|
-
if (name && Object.hasOwn(FILTER_FIELDS, name)) return name;
|
|
17
|
-
throw new Error(`Foundry ActionType search does not support filtering by "${name}".`);
|
|
18
|
-
}
|
|
19
|
-
function getLikeField(field) {
|
|
20
|
-
const name = field.join(".");
|
|
21
|
-
if (name && Object.hasOwn(LIKE_FIELDS, name)) return name;
|
|
22
|
-
throw new Error(`Foundry ActionType search does not support LIKE filtering by "${name}".`);
|
|
23
|
-
}
|
|
24
|
-
function eq$1(field, value) {
|
|
25
|
-
const name = getFilterField(field);
|
|
26
|
-
if (name === "id") return {
|
|
27
|
-
type: "actionTypeRid",
|
|
28
|
-
value
|
|
29
|
-
};
|
|
30
|
-
return {
|
|
31
|
-
type: FILTER_FIELDS[name],
|
|
32
|
-
value: {
|
|
33
|
-
type: "exact",
|
|
34
|
-
value: name === "name" ? toFoundryActionTypeName(value) : value
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
function like(field, value) {
|
|
39
|
-
const name = getLikeField(field);
|
|
40
|
-
const queries = value.split("%").filter(Boolean).map((term) => ({
|
|
41
|
-
type: LIKE_FIELDS[name],
|
|
42
|
-
value: {
|
|
43
|
-
type: "contains",
|
|
44
|
-
value: name === "name" ? toFoundryActionTypeName(term) : term
|
|
45
|
-
}
|
|
46
|
-
}));
|
|
47
|
-
return queries.length === 1 ? queries[0] : {
|
|
48
|
-
type: "and",
|
|
49
|
-
value: queries
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
function convertActionTypeLoadSubsetFilter(filter) {
|
|
53
|
-
return parseWhereExpression(filter, { handlers: {
|
|
54
|
-
and: (...filters) => ({
|
|
55
|
-
type: "and",
|
|
56
|
-
value: filters
|
|
57
|
-
}),
|
|
58
|
-
or: (...filters) => ({
|
|
59
|
-
type: "or",
|
|
60
|
-
value: filters
|
|
61
|
-
}),
|
|
62
|
-
eq: eq$1,
|
|
63
|
-
in: (field, values) => ({
|
|
64
|
-
type: "or",
|
|
65
|
-
value: values.map((value) => eq$1(field, value))
|
|
66
|
-
}),
|
|
67
|
-
like,
|
|
68
|
-
ilike: like
|
|
69
|
-
} }) ?? void 0;
|
|
70
|
-
}
|
|
71
|
-
function convertActionTypeLoadSubsetOrderBy(orderBy) {
|
|
72
|
-
const ordering = orderBy ? parseOrderByExpression(orderBy) : [];
|
|
73
|
-
const { field, direction } = ordering[0] ?? {};
|
|
74
|
-
const name = field?.join(".");
|
|
75
|
-
if (ordering.length !== 1 || !name || !Object.hasOwn(ORDER_BY_FIELDS, name)) return;
|
|
76
|
-
return {
|
|
77
|
-
field: ORDER_BY_FIELDS[name],
|
|
78
|
-
direction
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
//#endregion
|
|
82
|
-
export { convertActionTypeLoadSubsetFilter, convertActionTypeLoadSubsetOrderBy };
|
|
83
|
-
|
|
84
|
-
//# sourceMappingURL=convertActionTypeLoadSubsetOptions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convertActionTypeLoadSubsetOptions.js","names":["eq"],"sources":["../../src/meta/convertActionTypeLoadSubsetOptions.ts"],"sourcesContent":["import { FieldPath, LoadSubsetOptions, parseOrderByExpression, parseWhereExpression } from \"@tanstack/db\";\nimport { toFoundryActionTypeName } from \"../utils/actionTypeName.js\";\nimport type {\n ActionTypeSearchJsonQueryV2,\n ActionTypeSortByV2,\n SearchActionTypesOrderByV2,\n} from \"@osdk/foundry.ontologies\";\nimport type { MetaActionType } from \"@party-stack/ontology\";\n\nconst FILTER_FIELDS = {\n id: \"actionTypeRid\",\n name: \"actionTypeApiName\",\n displayName: \"actionTypeDisplayName\",\n} as const satisfies Partial<Record<keyof MetaActionType, ActionTypeSearchJsonQueryV2[\"type\"]>>;\n\nconst LIKE_FIELDS = {\n name: FILTER_FIELDS.name,\n displayName: FILTER_FIELDS.displayName,\n} as const satisfies Pick<typeof FILTER_FIELDS, \"name\" | \"displayName\">;\n\nconst ORDER_BY_FIELDS = {\n displayName: \"actionTypeDisplayName\",\n} as const satisfies Partial<Record<keyof MetaActionType, ActionTypeSortByV2>>;\n\nfunction getFilterField(field: FieldPath): keyof typeof FILTER_FIELDS {\n const name = field.join(\".\");\n if (name && Object.hasOwn(FILTER_FIELDS, name)) {\n return name as keyof typeof FILTER_FIELDS;\n }\n throw new Error(`Foundry ActionType search does not support filtering by \"${name}\".`);\n}\n\nfunction getLikeField(field: FieldPath): keyof typeof LIKE_FIELDS {\n const name = field.join(\".\");\n if (name && Object.hasOwn(LIKE_FIELDS, name)) {\n return name as keyof typeof LIKE_FIELDS;\n }\n throw new Error(`Foundry ActionType search does not support LIKE filtering by \"${name}\".`);\n}\n\nfunction eq(field: FieldPath, value: unknown): ActionTypeSearchJsonQueryV2 {\n const name = getFilterField(field);\n if (name === \"id\") {\n return {\n type: \"actionTypeRid\",\n value: value as string,\n };\n }\n return {\n type: FILTER_FIELDS[name],\n value: {\n type: \"exact\",\n value: name === \"name\" ? toFoundryActionTypeName(value as string) : (value as string),\n },\n };\n}\n\nfunction like(field: FieldPath, value: string): ActionTypeSearchJsonQueryV2 {\n const name = getLikeField(field);\n const terms = value.split(\"%\").filter(Boolean);\n const queries: ActionTypeSearchJsonQueryV2[] = terms.map((term) => ({\n type: LIKE_FIELDS[name],\n value: {\n type: \"contains\",\n value: name === \"name\" ? toFoundryActionTypeName(term) : term,\n },\n }));\n\n return queries.length === 1 ? queries[0]! : { type: \"and\", value: queries };\n}\n\nexport function convertActionTypeLoadSubsetFilter(\n filter: LoadSubsetOptions[\"where\"]\n): ActionTypeSearchJsonQueryV2 | undefined {\n return (\n parseWhereExpression<ActionTypeSearchJsonQueryV2>(filter, {\n handlers: {\n and: (...filters: ActionTypeSearchJsonQueryV2[]) => ({\n type: \"and\",\n value: filters,\n }),\n or: (...filters: ActionTypeSearchJsonQueryV2[]) => ({\n type: \"or\",\n value: filters,\n }),\n eq,\n in: (field: FieldPath, values: unknown[]) => ({\n type: \"or\",\n value: values.map((value) => eq(field, value)),\n }),\n like,\n ilike: like,\n },\n }) ?? undefined\n );\n}\n\nexport function convertActionTypeLoadSubsetOrderBy(\n orderBy: LoadSubsetOptions[\"orderBy\"]\n): SearchActionTypesOrderByV2 | undefined {\n const ordering = orderBy ? parseOrderByExpression(orderBy) : [];\n const { field, direction } = ordering[0] ?? {};\n const name = field?.join(\".\");\n if (ordering.length !== 1 || !name || !Object.hasOwn(ORDER_BY_FIELDS, name)) {\n return undefined;\n }\n\n return {\n field: ORDER_BY_FIELDS[name as keyof typeof ORDER_BY_FIELDS],\n direction,\n };\n}\n"],"mappings":";;;AASA,MAAM,gBAAgB;CAClB,IAAI;CACJ,MAAM;CACN,aAAa;AACjB;AAEA,MAAM,cAAc;CAChB,MAAM,cAAc;CACpB,aAAa,cAAc;AAC/B;AAEA,MAAM,kBAAkB,EACpB,aAAa,wBACjB;AAEA,SAAS,eAAe,OAA8C;CAClE,MAAM,OAAO,MAAM,KAAK,GAAG;CAC3B,IAAI,QAAQ,OAAO,OAAO,eAAe,IAAI,GACzC,OAAO;CAEX,MAAM,IAAI,MAAM,4DAA4D,KAAK,GAAG;AACxF;AAEA,SAAS,aAAa,OAA4C;CAC9D,MAAM,OAAO,MAAM,KAAK,GAAG;CAC3B,IAAI,QAAQ,OAAO,OAAO,aAAa,IAAI,GACvC,OAAO;CAEX,MAAM,IAAI,MAAM,iEAAiE,KAAK,GAAG;AAC7F;AAEA,SAASA,KAAG,OAAkB,OAA6C;CACvE,MAAM,OAAO,eAAe,KAAK;CACjC,IAAI,SAAS,MACT,OAAO;EACH,MAAM;EACC;CACX;CAEJ,OAAO;EACH,MAAM,cAAc;EACpB,OAAO;GACH,MAAM;GACN,OAAO,SAAS,SAAS,wBAAwB,KAAe,IAAK;EACzE;CACJ;AACJ;AAEA,SAAS,KAAK,OAAkB,OAA4C;CACxE,MAAM,OAAO,aAAa,KAAK;CAE/B,MAAM,UADQ,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,OACa,CAAC,CAAC,KAAK,UAAU;EAChE,MAAM,YAAY;EAClB,OAAO;GACH,MAAM;GACN,OAAO,SAAS,SAAS,wBAAwB,IAAI,IAAI;EAC7D;CACJ,EAAE;CAEF,OAAO,QAAQ,WAAW,IAAI,QAAQ,KAAM;EAAE,MAAM;EAAO,OAAO;CAAQ;AAC9E;AAEA,SAAgB,kCACZ,QACuC;CACvC,OACI,qBAAkD,QAAQ,EACtD,UAAU;EACN,MAAM,GAAG,aAA4C;GACjD,MAAM;GACN,OAAO;EACX;EACA,KAAK,GAAG,aAA4C;GAChD,MAAM;GACN,OAAO;EACX;EACA,IAAA;EACA,KAAK,OAAkB,YAAuB;GAC1C,MAAM;GACN,OAAO,OAAO,KAAK,UAAUA,KAAG,OAAO,KAAK,CAAC;EACjD;EACA;EACA,OAAO;CACX,EACJ,CAAC,KAAK,KAAA;AAEd;AAEA,SAAgB,mCACZ,SACsC;CACtC,MAAM,WAAW,UAAU,uBAAuB,OAAO,IAAI,CAAC;CAC9D,MAAM,EAAE,OAAO,cAAc,SAAS,MAAM,CAAC;CAC7C,MAAM,OAAO,OAAO,KAAK,GAAG;CAC5B,IAAI,SAAS,WAAW,KAAK,CAAC,QAAQ,CAAC,OAAO,OAAO,iBAAiB,IAAI,GACtE;CAGJ,OAAO;EACH,OAAO,gBAAgB;EACvB;CACJ;AACJ"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { OntologyClient } from "@party-stack/foundry-client";
|
|
2
|
-
import { OntologyBackendAdapter } from "@party-stack/ontology";
|
|
3
|
-
//#region src/meta/createFoundryMetaOntologyBackendAdapter.d.ts
|
|
4
|
-
export interface CreateFoundryMetaOntologyBackendAdapterOpts {
|
|
5
|
-
client: OntologyClient;
|
|
6
|
-
/** Polling interval in milliseconds, or false to disable polling. Defaults to no polling. */
|
|
7
|
-
refetchInterval?: number | false;
|
|
8
|
-
}
|
|
9
|
-
export declare function createFoundryMetaOntologyBackendAdapter(opts: CreateFoundryMetaOntologyBackendAdapterOpts): OntologyBackendAdapter;
|
|
10
|
-
//#endregion
|
|
11
|
-
//# sourceMappingURL=createFoundryMetaOntologyBackendAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createFoundryMetaOntologyBackendAdapter.d.ts","names":[],"sources":["../../src/meta/createFoundryMetaOntologyBackendAdapter.ts"],"mappings":";;;iBAYiB;EACb,QAAQ;;EAER;;wBAGY,wCACZ,MAAM,8CACP"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { actionTypeCollectionOptions } from "./actionTypeCollectionOptions.js";
|
|
2
|
-
import { createMetaEntityCollection, linkTypeCollectionOptions, objectTypeCollectionOptions, valueTypeCollectionOptions } from "./entityCollectionOptions.js";
|
|
3
|
-
import { queryFunctionTypeCollectionOptions } from "./queryFunctionTypeCollectionOptions.js";
|
|
4
|
-
import { notImplemented } from "@bobbyfidz/panic";
|
|
5
|
-
//#region src/meta/createFoundryMetaOntologyBackendAdapter.ts
|
|
6
|
-
function createFoundryMetaOntologyBackendAdapter(opts) {
|
|
7
|
-
const metadata = createMetaEntityCollection({
|
|
8
|
-
client: opts.client,
|
|
9
|
-
refetchInterval: opts.refetchInterval
|
|
10
|
-
});
|
|
11
|
-
return {
|
|
12
|
-
name: "foundry-metadata",
|
|
13
|
-
getCollectionOptions: (objectType) => {
|
|
14
|
-
switch (objectType) {
|
|
15
|
-
case "ObjectType": return objectTypeCollectionOptions(metadata);
|
|
16
|
-
case "ValueType": return valueTypeCollectionOptions(metadata);
|
|
17
|
-
case "LinkType": return linkTypeCollectionOptions(metadata);
|
|
18
|
-
case "ActionType": return actionTypeCollectionOptions({
|
|
19
|
-
client: opts.client,
|
|
20
|
-
refetchInterval: opts.refetchInterval
|
|
21
|
-
});
|
|
22
|
-
case "QueryFunctionType": return queryFunctionTypeCollectionOptions({
|
|
23
|
-
client: opts.client,
|
|
24
|
-
refetchInterval: opts.refetchInterval
|
|
25
|
-
});
|
|
26
|
-
default: throw new Error(`Unsupported Foundry metadata object type "${objectType}".`);
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
applyAction: () => {
|
|
30
|
-
notImplemented();
|
|
31
|
-
},
|
|
32
|
-
runQueryFunction: () => {
|
|
33
|
-
notImplemented();
|
|
34
|
-
},
|
|
35
|
-
cleanup: async () => {
|
|
36
|
-
await metadata.cleanup();
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
//#endregion
|
|
41
|
-
export { createFoundryMetaOntologyBackendAdapter };
|
|
42
|
-
|
|
43
|
-
//# sourceMappingURL=createFoundryMetaOntologyBackendAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createFoundryMetaOntologyBackendAdapter.js","names":[],"sources":["../../src/meta/createFoundryMetaOntologyBackendAdapter.ts"],"sourcesContent":["import { notImplemented } from \"@bobbyfidz/panic\";\nimport { actionTypeCollectionOptions } from \"./actionTypeCollectionOptions.js\";\nimport {\n createMetaEntityCollection,\n linkTypeCollectionOptions,\n objectTypeCollectionOptions,\n valueTypeCollectionOptions,\n} from \"./entityCollectionOptions.js\";\nimport { queryFunctionTypeCollectionOptions } from \"./queryFunctionTypeCollectionOptions.js\";\nimport type { OntologyClient } from \"@party-stack/foundry-client\";\nimport type { OntologyBackendAdapter } from \"@party-stack/ontology\";\n\nexport interface CreateFoundryMetaOntologyBackendAdapterOpts {\n client: OntologyClient;\n /** Polling interval in milliseconds, or false to disable polling. Defaults to no polling. */\n refetchInterval?: number | false;\n}\n\nexport function createFoundryMetaOntologyBackendAdapter(\n opts: CreateFoundryMetaOntologyBackendAdapterOpts\n): OntologyBackendAdapter {\n const metadata = createMetaEntityCollection({\n client: opts.client,\n refetchInterval: opts.refetchInterval,\n });\n\n return {\n name: \"foundry-metadata\",\n getCollectionOptions: (objectType: string) => {\n switch (objectType) {\n case \"ObjectType\":\n return objectTypeCollectionOptions(metadata);\n case \"ValueType\":\n return valueTypeCollectionOptions(metadata);\n case \"LinkType\":\n return linkTypeCollectionOptions(metadata);\n case \"ActionType\":\n return actionTypeCollectionOptions({\n client: opts.client,\n refetchInterval: opts.refetchInterval,\n });\n case \"QueryFunctionType\":\n return queryFunctionTypeCollectionOptions({\n client: opts.client,\n refetchInterval: opts.refetchInterval,\n });\n default:\n throw new Error(`Unsupported Foundry metadata object type \"${objectType}\".`);\n }\n },\n applyAction: () => {\n notImplemented();\n },\n runQueryFunction: () => {\n notImplemented();\n },\n cleanup: async () => {\n await metadata.cleanup();\n },\n };\n}\n"],"mappings":";;;;;AAkBA,SAAgB,wCACZ,MACsB;CACtB,MAAM,WAAW,2BAA2B;EACxC,QAAQ,KAAK;EACb,iBAAiB,KAAK;CAC1B,CAAC;CAED,OAAO;EACH,MAAM;EACN,uBAAuB,eAAuB;GAC1C,QAAQ,YAAR;IACI,KAAK,cACD,OAAO,4BAA4B,QAAQ;IAC/C,KAAK,aACD,OAAO,2BAA2B,QAAQ;IAC9C,KAAK,YACD,OAAO,0BAA0B,QAAQ;IAC7C,KAAK,cACD,OAAO,4BAA4B;KAC/B,QAAQ,KAAK;KACb,iBAAiB,KAAK;IAC1B,CAAC;IACL,KAAK,qBACD,OAAO,mCAAmC;KACtC,QAAQ,KAAK;KACb,iBAAiB,KAAK;IAC1B,CAAC;IACL,SACI,MAAM,IAAI,MAAM,6CAA6C,WAAW,GAAG;GACnF;EACJ;EACA,mBAAmB;GACf,eAAe;EACnB;EACA,wBAAwB;GACpB,eAAe;EACnB;EACA,SAAS,YAAY;GACjB,MAAM,SAAS,QAAQ;EAC3B;CACJ;AACJ"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { OntologyClient } from "@party-stack/foundry-client";
|
|
2
|
-
import { MetaLinkType, MetaObjectType, MetaValueType, OntologyCollectionOptions } from "@party-stack/ontology";
|
|
3
|
-
//#region src/meta/entityCollectionOptions.d.ts
|
|
4
|
-
type MetaEntity = {
|
|
5
|
-
entityType: "ObjectType";
|
|
6
|
-
entity: MetaObjectType;
|
|
7
|
-
} | {
|
|
8
|
-
entityType: "ValueType";
|
|
9
|
-
entity: MetaValueType;
|
|
10
|
-
} | {
|
|
11
|
-
entityType: "LinkType";
|
|
12
|
-
entity: MetaLinkType;
|
|
13
|
-
};
|
|
14
|
-
export interface MetaEntityStoreOpts {
|
|
15
|
-
client: OntologyClient;
|
|
16
|
-
refetchInterval?: number | false;
|
|
17
|
-
}
|
|
18
|
-
export declare function createMetaEntityCollection(opts: MetaEntityStoreOpts): import("@tanstack/db").Collection<MetaEntity, string | number, import("@tanstack/query-db-collection").QueryCollectionUtils<MetaEntity, string | number, MetaEntity, unknown>, never, MetaEntity> & import("@tanstack/db").NonSingleResult;
|
|
19
|
-
export type MetaEntityCollection = ReturnType<typeof createMetaEntityCollection>;
|
|
20
|
-
export declare function objectTypeCollectionOptions(metadata: MetaEntityCollection): OntologyCollectionOptions;
|
|
21
|
-
export declare function valueTypeCollectionOptions(metadata: MetaEntityCollection): OntologyCollectionOptions;
|
|
22
|
-
export declare function linkTypeCollectionOptions(metadata: MetaEntityCollection): OntologyCollectionOptions;
|
|
23
|
-
//#endregion
|
|
24
|
-
export {};
|
|
25
|
-
//# sourceMappingURL=entityCollectionOptions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entityCollectionOptions.d.ts","names":[],"sources":["../../src/meta/entityCollectionOptions.ts"],"mappings":";;;KAeK;EACG;EAA0B,QAAQ;;EAClC;EAAyB,QAAQ;;EACjC;EAAwB,QAAQ;;iBAEvB;EACb,QAAQ;EACR;;wBAGY,2BAA2B,MAAM,6CAAmB,WAAA,qEAAA,qBAAA,6BAAA,6BAAA,qCAAA;YAwCxD,uBAAuB,kBAAkB;wBAErC,4BAA4B,UAAU,uBAAuB;wBAM7D,2BAA2B,UAAU,uBAAuB;wBAM5D,0BAA0B,UAAU,uBAAuB"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { convertFoundryMetaLinkTypes } from "./convertMetaLinkType.js";
|
|
2
|
-
import { convertFoundryMetaObjectType } from "./convertMetaObjectType.js";
|
|
3
|
-
import { convertFoundryMetaValueType } from "./convertMetaValueType.js";
|
|
4
|
-
import { OntologiesV2 } from "@osdk/foundry.ontologies";
|
|
5
|
-
import { Query, createCollection, eq, liveQueryCollectionOptions } from "@tanstack/db";
|
|
6
|
-
import { QueryClient } from "@tanstack/query-core";
|
|
7
|
-
import { queryCollectionOptions } from "@tanstack/query-db-collection";
|
|
8
|
-
//#region src/meta/entityCollectionOptions.ts
|
|
9
|
-
function createMetaEntityCollection(opts) {
|
|
10
|
-
return createCollection(queryCollectionOptions({
|
|
11
|
-
queryClient: new QueryClient(),
|
|
12
|
-
getKey: (row) => {
|
|
13
|
-
switch (row.entityType) {
|
|
14
|
-
case "ObjectType":
|
|
15
|
-
case "ValueType": return `${row.entityType}:${row.entity.name}`;
|
|
16
|
-
case "LinkType": return `${row.entityType}:${row.entity.id}`;
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
queryKey: [
|
|
20
|
-
"foundry",
|
|
21
|
-
"ontology",
|
|
22
|
-
"metadata"
|
|
23
|
-
],
|
|
24
|
-
syncMode: "eager",
|
|
25
|
-
refetchInterval: opts.refetchInterval,
|
|
26
|
-
queryFn: async () => {
|
|
27
|
-
const loaded = await loadFoundryMetaOntology(opts.client);
|
|
28
|
-
return [
|
|
29
|
-
...loaded.objectTypes.map((entity) => ({
|
|
30
|
-
entityType: "ObjectType",
|
|
31
|
-
entity,
|
|
32
|
-
...entity
|
|
33
|
-
})),
|
|
34
|
-
...loaded.valueTypes.map((entity) => ({
|
|
35
|
-
entityType: "ValueType",
|
|
36
|
-
entity,
|
|
37
|
-
...entity
|
|
38
|
-
})),
|
|
39
|
-
...loaded.linkTypes.map((entity) => ({
|
|
40
|
-
entityType: "LinkType",
|
|
41
|
-
entity,
|
|
42
|
-
...entity
|
|
43
|
-
}))
|
|
44
|
-
];
|
|
45
|
-
}
|
|
46
|
-
}));
|
|
47
|
-
}
|
|
48
|
-
function objectTypeCollectionOptions(metadata) {
|
|
49
|
-
return liveQueryCollectionOptions({ query: new Query().from({ metadata }).where(({ metadata }) => eq(metadata.entityType, "ObjectType")) });
|
|
50
|
-
}
|
|
51
|
-
function valueTypeCollectionOptions(metadata) {
|
|
52
|
-
return liveQueryCollectionOptions({ query: new Query().from({ metadata }).where(({ metadata }) => eq(metadata.entityType, "ValueType")) });
|
|
53
|
-
}
|
|
54
|
-
function linkTypeCollectionOptions(metadata) {
|
|
55
|
-
return liveQueryCollectionOptions({ query: new Query().from({ metadata }).where(({ metadata }) => eq(metadata.entityType, "LinkType")) });
|
|
56
|
-
}
|
|
57
|
-
async function loadFoundryMetaOntology(client) {
|
|
58
|
-
const ontology = await OntologiesV2.getFullMetadata(client, client.ontologyRid);
|
|
59
|
-
const objectTypeMetadata = Object.values(ontology.objectTypes);
|
|
60
|
-
return {
|
|
61
|
-
objectTypes: objectTypeMetadata.map((metadata) => convertFoundryMetaObjectType(metadata)),
|
|
62
|
-
valueTypes: Object.values(ontology.valueTypes).map(convertFoundryMetaValueType),
|
|
63
|
-
linkTypes: convertFoundryMetaLinkTypes(objectTypeMetadata)
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
//#endregion
|
|
67
|
-
export { createMetaEntityCollection, linkTypeCollectionOptions, objectTypeCollectionOptions, valueTypeCollectionOptions };
|
|
68
|
-
|
|
69
|
-
//# sourceMappingURL=entityCollectionOptions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entityCollectionOptions.js","names":[],"sources":["../../src/meta/entityCollectionOptions.ts"],"sourcesContent":["import { OntologiesV2 } from \"@osdk/foundry.ontologies\";\nimport { createCollection, eq, liveQueryCollectionOptions, Query } from \"@tanstack/db\";\nimport { QueryClient } from \"@tanstack/query-core\";\nimport { queryCollectionOptions } from \"@tanstack/query-db-collection\";\nimport { convertFoundryMetaLinkTypes } from \"./convertMetaLinkType.js\";\nimport { convertFoundryMetaObjectType } from \"./convertMetaObjectType.js\";\nimport { convertFoundryMetaValueType } from \"./convertMetaValueType.js\";\nimport type { OntologyClient } from \"@party-stack/foundry-client\";\nimport type {\n MetaLinkType,\n MetaObjectType,\n MetaValueType,\n OntologyCollectionOptions,\n} from \"@party-stack/ontology\";\n\ntype MetaEntity =\n | { entityType: \"ObjectType\"; entity: MetaObjectType }\n | { entityType: \"ValueType\"; entity: MetaValueType }\n | { entityType: \"LinkType\"; entity: MetaLinkType };\n\nexport interface MetaEntityStoreOpts {\n client: OntologyClient;\n refetchInterval?: number | false;\n}\n\nexport function createMetaEntityCollection(opts: MetaEntityStoreOpts) {\n return createCollection(\n queryCollectionOptions<MetaEntity>({\n queryClient: new QueryClient(),\n getKey: (row) => {\n switch (row.entityType) {\n case \"ObjectType\":\n case \"ValueType\":\n return `${row.entityType}:${row.entity.name}`;\n case \"LinkType\":\n return `${row.entityType}:${row.entity.id}`;\n }\n },\n queryKey: [\"foundry\", \"ontology\", \"metadata\"],\n syncMode: \"eager\",\n refetchInterval: opts.refetchInterval,\n queryFn: async () => {\n const loaded = await loadFoundryMetaOntology(opts.client);\n return [\n ...loaded.objectTypes.map((entity) => ({\n entityType: \"ObjectType\" as const,\n entity,\n ...entity,\n })),\n ...loaded.valueTypes.map((entity) => ({\n entityType: \"ValueType\" as const,\n entity,\n ...entity,\n })),\n ...loaded.linkTypes.map((entity) => ({\n entityType: \"LinkType\" as const,\n entity,\n ...entity,\n })),\n ];\n },\n })\n );\n}\n\nexport type MetaEntityCollection = ReturnType<typeof createMetaEntityCollection>;\n\nexport function objectTypeCollectionOptions(metadata: MetaEntityCollection): OntologyCollectionOptions {\n return liveQueryCollectionOptions({\n query: new Query().from({ metadata }).where(({ metadata }) => eq(metadata.entityType, \"ObjectType\")),\n }) as unknown as OntologyCollectionOptions;\n}\n\nexport function valueTypeCollectionOptions(metadata: MetaEntityCollection): OntologyCollectionOptions {\n return liveQueryCollectionOptions({\n query: new Query().from({ metadata }).where(({ metadata }) => eq(metadata.entityType, \"ValueType\")),\n }) as unknown as OntologyCollectionOptions;\n}\n\nexport function linkTypeCollectionOptions(metadata: MetaEntityCollection): OntologyCollectionOptions {\n return liveQueryCollectionOptions({\n query: new Query().from({ metadata }).where(({ metadata }) => eq(metadata.entityType, \"LinkType\")),\n }) as unknown as OntologyCollectionOptions;\n}\n\nasync function loadFoundryMetaOntology(client: OntologyClient): Promise<{\n objectTypes: MetaObjectType[];\n valueTypes: MetaValueType[];\n linkTypes: MetaLinkType[];\n}> {\n const ontology = await OntologiesV2.getFullMetadata(client, client.ontologyRid);\n const objectTypeMetadata = Object.values(ontology.objectTypes);\n\n const objectTypes = objectTypeMetadata.map((metadata) => convertFoundryMetaObjectType(metadata));\n const valueTypes = Object.values(ontology.valueTypes).map(convertFoundryMetaValueType);\n const linkTypes = convertFoundryMetaLinkTypes(objectTypeMetadata);\n\n return {\n objectTypes,\n valueTypes,\n linkTypes,\n };\n}\n"],"mappings":";;;;;;;;AAyBA,SAAgB,2BAA2B,MAA2B;CAClE,OAAO,iBACH,uBAAmC;EAC/B,aAAa,IAAI,YAAY;EAC7B,SAAS,QAAQ;GACb,QAAQ,IAAI,YAAZ;IACI,KAAK;IACL,KAAK,aACD,OAAO,GAAG,IAAI,WAAW,GAAG,IAAI,OAAO;IAC3C,KAAK,YACD,OAAO,GAAG,IAAI,WAAW,GAAG,IAAI,OAAO;GAC/C;EACJ;EACA,UAAU;GAAC;GAAW;GAAY;EAAU;EAC5C,UAAU;EACV,iBAAiB,KAAK;EACtB,SAAS,YAAY;GACjB,MAAM,SAAS,MAAM,wBAAwB,KAAK,MAAM;GACxD,OAAO;IACH,GAAG,OAAO,YAAY,KAAK,YAAY;KACnC,YAAY;KACZ;KACA,GAAG;IACP,EAAE;IACF,GAAG,OAAO,WAAW,KAAK,YAAY;KAClC,YAAY;KACZ;KACA,GAAG;IACP,EAAE;IACF,GAAG,OAAO,UAAU,KAAK,YAAY;KACjC,YAAY;KACZ;KACA,GAAG;IACP,EAAE;GACN;EACJ;CACJ,CAAC,CACL;AACJ;AAIA,SAAgB,4BAA4B,UAA2D;CACnG,OAAO,2BAA2B,EAC9B,OAAO,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,YAAY,YAAY,CAAC,EACvG,CAAC;AACL;AAEA,SAAgB,2BAA2B,UAA2D;CAClG,OAAO,2BAA2B,EAC9B,OAAO,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,YAAY,WAAW,CAAC,EACtG,CAAC;AACL;AAEA,SAAgB,0BAA0B,UAA2D;CACjG,OAAO,2BAA2B,EAC9B,OAAO,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,YAAY,UAAU,CAAC,EACrG,CAAC;AACL;AAEA,eAAe,wBAAwB,QAIpC;CACC,MAAM,WAAW,MAAM,aAAa,gBAAgB,QAAQ,OAAO,WAAW;CAC9E,MAAM,qBAAqB,OAAO,OAAO,SAAS,WAAW;CAM7D,OAAO;EACH,aALgB,mBAAmB,KAAK,aAAa,6BAA6B,QAAQ,CAKhF;EACV,YALe,OAAO,OAAO,SAAS,UAAU,CAAC,CAAC,IAAI,2BAK7C;EACT,WALc,4BAA4B,kBAKlC;CACZ;AACJ"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { OntologyClient } from "@party-stack/foundry-client";
|
|
2
|
-
import { OntologyCollectionOptions } from "@party-stack/ontology";
|
|
3
|
-
import { QueryClient } from "@tanstack/query-core";
|
|
4
|
-
//#region src/meta/queryFunctionTypeCollectionOptions.d.ts
|
|
5
|
-
export interface QueryFunctionTypeCollectionOpts {
|
|
6
|
-
client: OntologyClient;
|
|
7
|
-
refetchInterval?: number | false;
|
|
8
|
-
queryClient?: QueryClient;
|
|
9
|
-
}
|
|
10
|
-
export declare function queryFunctionTypeCollectionOptions(opts: QueryFunctionTypeCollectionOpts): OntologyCollectionOptions;
|
|
11
|
-
//#endregion
|
|
12
|
-
//# sourceMappingURL=queryFunctionTypeCollectionOptions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queryFunctionTypeCollectionOptions.d.ts","names":[],"sources":["../../src/meta/queryFunctionTypeCollectionOptions.ts"],"mappings":";;;;iBAUiB;EACb,QAAQ;EACR;EACA,cAAc;;wBA2BF,mCACZ,MAAM,kCACP"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { fromPagination, toArray } from "../utils/AsyncIterable.js";
|
|
2
|
-
import { convertFoundryMetaQueryFunctionType } from "./convertMetaQueryFunctionType.js";
|
|
3
|
-
import { QueryTypes } from "@osdk/foundry.ontologies";
|
|
4
|
-
import { parseWhereExpression } from "@tanstack/db";
|
|
5
|
-
import { QueryClient } from "@tanstack/query-core";
|
|
6
|
-
import { queryCollectionOptions } from "@tanstack/query-db-collection";
|
|
7
|
-
//#region src/meta/queryFunctionTypeCollectionOptions.ts
|
|
8
|
-
async function listQueryFunctionTypes(opts) {
|
|
9
|
-
return toArray(fromPagination((pageSize, pageToken) => QueryTypes.list(opts.client, opts.client.ontologyRid, {
|
|
10
|
-
pageSize,
|
|
11
|
-
pageToken
|
|
12
|
-
}), (page) => page.nextPageToken, (page) => page.data, 100));
|
|
13
|
-
}
|
|
14
|
-
async function getQueryFunctionTypes(opts, names) {
|
|
15
|
-
const uniqueNames = Array.from(new Set(names));
|
|
16
|
-
if (uniqueNames.length === 0) return [];
|
|
17
|
-
return Promise.all(uniqueNames.map((name) => QueryTypes.get(opts.client, opts.client.ontologyRid, name)));
|
|
18
|
-
}
|
|
19
|
-
function queryFunctionTypeCollectionOptions(opts) {
|
|
20
|
-
return queryCollectionOptions({
|
|
21
|
-
queryClient: opts.queryClient ?? new QueryClient(),
|
|
22
|
-
getKey: (row) => row.name,
|
|
23
|
-
queryKey: [
|
|
24
|
-
"foundry",
|
|
25
|
-
"ontology",
|
|
26
|
-
"queryFunctionTypes"
|
|
27
|
-
],
|
|
28
|
-
syncMode: "on-demand",
|
|
29
|
-
refetchInterval: opts.refetchInterval,
|
|
30
|
-
queryFn: async (ctx) => {
|
|
31
|
-
const query = convertQueryFunctionTypeQuery(ctx.meta?.loadSubsetOptions);
|
|
32
|
-
return (query.type === "getBatch" ? await getQueryFunctionTypes(opts, query.names) : await listQueryFunctionTypes(opts)).map(convertFoundryMetaQueryFunctionType);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
function convertQueryFunctionTypeQuery(options) {
|
|
37
|
-
if (!options?.where) return { type: "list" };
|
|
38
|
-
return parseWhereExpression(options.where, {
|
|
39
|
-
handlers: {
|
|
40
|
-
eq: (field, value) => {
|
|
41
|
-
if (field.join(".") === "name") return {
|
|
42
|
-
type: "getBatch",
|
|
43
|
-
names: [String(value)]
|
|
44
|
-
};
|
|
45
|
-
},
|
|
46
|
-
in: (field, value) => {
|
|
47
|
-
if (field.join(".") === "name") return {
|
|
48
|
-
type: "getBatch",
|
|
49
|
-
names: value.filter((candidate) => candidate !== null && candidate !== void 0).map(String)
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
onUnknownOperator: () => void 0
|
|
54
|
-
}) ?? void 0 ?? { type: "list" };
|
|
55
|
-
}
|
|
56
|
-
//#endregion
|
|
57
|
-
export { queryFunctionTypeCollectionOptions };
|
|
58
|
-
|
|
59
|
-
//# sourceMappingURL=queryFunctionTypeCollectionOptions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queryFunctionTypeCollectionOptions.js","names":["AsyncIterable.toArray","AsyncIterable.fromPagination"],"sources":["../../src/meta/queryFunctionTypeCollectionOptions.ts"],"sourcesContent":["import { QueryTypes } from \"@osdk/foundry.ontologies\";\nimport { FieldPath, LoadSubsetOptions, parseWhereExpression } from \"@tanstack/db\";\nimport { QueryClient } from \"@tanstack/query-core\";\nimport { queryCollectionOptions } from \"@tanstack/query-db-collection\";\nimport * as AsyncIterable from \"../utils/AsyncIterable.js\";\nimport { convertFoundryMetaQueryFunctionType } from \"./convertMetaQueryFunctionType.js\";\nimport type { QueryTypeV2 } from \"@osdk/foundry.ontologies\";\nimport type { OntologyClient } from \"@party-stack/foundry-client\";\nimport type { OntologyCollectionOptions, QueryFunctionTypeDef } from \"@party-stack/ontology\";\n\nexport interface QueryFunctionTypeCollectionOpts {\n client: OntologyClient;\n refetchInterval?: number | false;\n queryClient?: QueryClient;\n}\n\nasync function listQueryFunctionTypes(opts: QueryFunctionTypeCollectionOpts): Promise<QueryTypeV2[]> {\n return AsyncIterable.toArray(\n AsyncIterable.fromPagination(\n (pageSize, pageToken: string | undefined) =>\n QueryTypes.list(opts.client, opts.client.ontologyRid, {\n pageSize,\n pageToken,\n }),\n (page) => page.nextPageToken,\n (page) => page.data,\n 100\n )\n );\n}\n\nasync function getQueryFunctionTypes(\n opts: QueryFunctionTypeCollectionOpts,\n names: string[]\n): Promise<QueryTypeV2[]> {\n const uniqueNames = Array.from(new Set(names));\n if (uniqueNames.length === 0) return [];\n return Promise.all(uniqueNames.map((name) => QueryTypes.get(opts.client, opts.client.ontologyRid, name)));\n}\n\nexport function queryFunctionTypeCollectionOptions(\n opts: QueryFunctionTypeCollectionOpts\n): OntologyCollectionOptions {\n return queryCollectionOptions<QueryFunctionTypeDef>({\n queryClient: opts.queryClient ?? new QueryClient(),\n getKey: (row: { name: string }) => row.name,\n queryKey: [\"foundry\", \"ontology\", \"queryFunctionTypes\"],\n syncMode: \"on-demand\",\n refetchInterval: opts.refetchInterval,\n queryFn: async (ctx): Promise<QueryFunctionTypeDef[]> => {\n const query = convertQueryFunctionTypeQuery(ctx.meta?.loadSubsetOptions);\n const queryFunctionTypes =\n query.type === \"getBatch\"\n ? await getQueryFunctionTypes(opts, query.names)\n : await listQueryFunctionTypes(opts);\n return queryFunctionTypes.map(convertFoundryMetaQueryFunctionType);\n },\n }) as unknown as OntologyCollectionOptions;\n}\n\ntype QueryFunctionTypeQuery = { type: \"getBatch\"; names: string[] } | { type: \"list\" };\n\nfunction convertQueryFunctionTypeQuery(options?: LoadSubsetOptions): QueryFunctionTypeQuery {\n if (!options?.where) {\n return { type: \"list\" };\n }\n\n const batchQuery =\n parseWhereExpression<QueryFunctionTypeQuery | undefined>(options.where, {\n handlers: {\n eq: (field: FieldPath, value: unknown) => {\n if (field.join(\".\") === \"name\") {\n return { type: \"getBatch\", names: [String(value)] };\n }\n },\n in: (field: FieldPath, value: unknown[]) => {\n if (field.join(\".\") === \"name\") {\n return {\n type: \"getBatch\",\n names: value\n .filter((candidate) => candidate !== null && candidate !== undefined)\n .map(String),\n };\n }\n },\n },\n onUnknownOperator: () => undefined,\n }) ?? undefined;\n\n return batchQuery ?? { type: \"list\" };\n}\n"],"mappings":";;;;;;;AAgBA,eAAe,uBAAuB,MAA+D;CACjG,OAAOA,QACHC,gBACK,UAAU,cACP,WAAW,KAAK,KAAK,QAAQ,KAAK,OAAO,aAAa;EAClD;EACA;CACJ,CAAC,IACJ,SAAS,KAAK,gBACd,SAAS,KAAK,MACf,GACJ,CACJ;AACJ;AAEA,eAAe,sBACX,MACA,OACsB;CACtB,MAAM,cAAc,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC;CAC7C,IAAI,YAAY,WAAW,GAAG,OAAO,CAAC;CACtC,OAAO,QAAQ,IAAI,YAAY,KAAK,SAAS,WAAW,IAAI,KAAK,QAAQ,KAAK,OAAO,aAAa,IAAI,CAAC,CAAC;AAC5G;AAEA,SAAgB,mCACZ,MACyB;CACzB,OAAO,uBAA6C;EAChD,aAAa,KAAK,eAAe,IAAI,YAAY;EACjD,SAAS,QAA0B,IAAI;EACvC,UAAU;GAAC;GAAW;GAAY;EAAoB;EACtD,UAAU;EACV,iBAAiB,KAAK;EACtB,SAAS,OAAO,QAAyC;GACrD,MAAM,QAAQ,8BAA8B,IAAI,MAAM,iBAAiB;GAKvE,QAHI,MAAM,SAAS,aACT,MAAM,sBAAsB,MAAM,MAAM,KAAK,IAC7C,MAAM,uBAAuB,IAAI,EAAA,CACjB,IAAI,mCAAmC;EACrE;CACJ,CAAC;AACL;AAIA,SAAS,8BAA8B,SAAqD;CACxF,IAAI,CAAC,SAAS,OACV,OAAO,EAAE,MAAM,OAAO;CAyB1B,OArBI,qBAAyD,QAAQ,OAAO;EACpE,UAAU;GACN,KAAK,OAAkB,UAAmB;IACtC,IAAI,MAAM,KAAK,GAAG,MAAM,QACpB,OAAO;KAAE,MAAM;KAAY,OAAO,CAAC,OAAO,KAAK,CAAC;IAAE;GAE1D;GACA,KAAK,OAAkB,UAAqB;IACxC,IAAI,MAAM,KAAK,GAAG,MAAM,QACpB,OAAO;KACH,MAAM;KACN,OAAO,MACF,QAAQ,cAAc,cAAc,QAAQ,cAAc,KAAA,CAAS,CAAC,CACpE,IAAI,MAAM;IACnB;GAER;EACJ;EACA,yBAAyB,KAAA;CAC7B,CAAC,KAAK,KAAA,KAEW,EAAE,MAAM,OAAO;AACxC"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { FoundryOntologyRoute } from "../installation/createFoundryBackendInstallation.js";
|
|
2
|
-
//#region src/users/createFoundryAdminOntologyRoute.d.ts
|
|
3
|
-
export declare const foundryAdminOntology: {
|
|
4
|
-
types: never[];
|
|
5
|
-
objectTypes: {
|
|
6
|
-
name: string;
|
|
7
|
-
displayName: string;
|
|
8
|
-
pluralDisplayName: string;
|
|
9
|
-
primaryKey: string;
|
|
10
|
-
title?: string;
|
|
11
|
-
icon?: {
|
|
12
|
-
name: import("@party-stack/ontology").IconName;
|
|
13
|
-
meta?: {
|
|
14
|
-
[x: string]: unknown;
|
|
15
|
-
} | undefined;
|
|
16
|
-
} | undefined;
|
|
17
|
-
color?: string;
|
|
18
|
-
properties: {
|
|
19
|
-
name: string;
|
|
20
|
-
displayName: string;
|
|
21
|
-
type: import("@party-stack/ontology").TypeDef;
|
|
22
|
-
description?: string;
|
|
23
|
-
deprecated?: {
|
|
24
|
-
message: string;
|
|
25
|
-
} | undefined;
|
|
26
|
-
}[];
|
|
27
|
-
description?: string;
|
|
28
|
-
deprecated?: {
|
|
29
|
-
message: string;
|
|
30
|
-
} | undefined;
|
|
31
|
-
}[];
|
|
32
|
-
linkTypes: never[];
|
|
33
|
-
actionTypes: never[];
|
|
34
|
-
queryFunctionTypes: never[];
|
|
35
|
-
contextType: {
|
|
36
|
-
kind: "struct";
|
|
37
|
-
value: {
|
|
38
|
-
fields: {
|
|
39
|
-
name: "user";
|
|
40
|
-
displayName: "User";
|
|
41
|
-
type: {
|
|
42
|
-
kind: "objectReference";
|
|
43
|
-
value: {
|
|
44
|
-
objectType: "FoundryUser";
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
}[];
|
|
48
|
-
};
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
export declare function createFoundryAdminOntologyRoute(options?: {
|
|
52
|
-
ontologyId?: string;
|
|
53
|
-
}): FoundryOntologyRoute;
|
|
54
|
-
//#endregion
|
|
55
|
-
//# sourceMappingURL=createFoundryAdminOntologyRoute.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createFoundryAdminOntologyRoute.d.ts","names":[],"sources":["../../src/users/createFoundryAdminOntologyRoute.ts"],"mappings":";;qBAgBa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAmBG,gCACZ;EACI;IAEL"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { createFoundryOntologyRoute } from "../installation/createFoundryBackendInstallation.js";
|
|
2
|
-
import { foundryUserObjectType } from "./foundryUser.js";
|
|
3
|
-
import { createFoundryUsersIntegration } from "./createFoundryUsersIntegration.js";
|
|
4
|
-
import { defineOntology, o } from "@party-stack/ontology";
|
|
5
|
-
//#region src/users/createFoundryAdminOntologyRoute.ts
|
|
6
|
-
const foundryUserIdentityLens = { operations: [o.LensOp.select({ properties: foundryUserObjectType.properties.map((property) => property.name) })] };
|
|
7
|
-
const foundryAdminOntology = defineOntology({
|
|
8
|
-
types: [],
|
|
9
|
-
objectTypes: [foundryUserObjectType],
|
|
10
|
-
linkTypes: [],
|
|
11
|
-
actionTypes: [],
|
|
12
|
-
queryFunctionTypes: [],
|
|
13
|
-
contextType: o.struct({ fields: [{
|
|
14
|
-
name: "user",
|
|
15
|
-
displayName: "User",
|
|
16
|
-
type: o.objectReference({ objectType: "FoundryUser" })
|
|
17
|
-
}] })
|
|
18
|
-
});
|
|
19
|
-
function createFoundryAdminOntologyRoute(options = {}) {
|
|
20
|
-
const ontologyId = options.ontologyId ?? "admin";
|
|
21
|
-
return createFoundryOntologyRoute({
|
|
22
|
-
ontologyId,
|
|
23
|
-
ir: foundryAdminOntology,
|
|
24
|
-
users: createFoundryUsersIntegration({
|
|
25
|
-
objectType: "FoundryUser",
|
|
26
|
-
lens: foundryUserIdentityLens
|
|
27
|
-
})
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
//#endregion
|
|
31
|
-
export { createFoundryAdminOntologyRoute, foundryAdminOntology };
|
|
32
|
-
|
|
33
|
-
//# sourceMappingURL=createFoundryAdminOntologyRoute.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createFoundryAdminOntologyRoute.js","names":[],"sources":["../../src/users/createFoundryAdminOntologyRoute.ts"],"sourcesContent":["import { defineOntology, o } from \"@party-stack/ontology\";\nimport {\n createFoundryOntologyRoute,\n type FoundryOntologyRoute,\n} from \"../installation/createFoundryBackendInstallation.js\";\nimport { createFoundryUsersIntegration } from \"./createFoundryUsersIntegration.js\";\nimport { foundryUserObjectType } from \"./foundryUser.js\";\n\nconst foundryUserIdentityLens = {\n operations: [\n o.LensOp.select({\n properties: foundryUserObjectType.properties.map((property) => property.name),\n }),\n ],\n};\n\nexport const foundryAdminOntology = defineOntology({\n types: [],\n objectTypes: [foundryUserObjectType],\n linkTypes: [],\n actionTypes: [],\n queryFunctionTypes: [],\n contextType: o.struct({\n fields: [\n {\n name: \"user\",\n displayName: \"User\",\n type: o.objectReference({\n objectType: \"FoundryUser\",\n }),\n },\n ],\n }),\n});\n\nexport function createFoundryAdminOntologyRoute(\n options: {\n ontologyId?: string;\n } = {}\n): FoundryOntologyRoute {\n const ontologyId = options.ontologyId ?? \"admin\";\n return createFoundryOntologyRoute({\n ontologyId,\n ir: foundryAdminOntology,\n users: createFoundryUsersIntegration({\n objectType: \"FoundryUser\",\n lens: foundryUserIdentityLens,\n }),\n });\n}\n"],"mappings":";;;;;AAQA,MAAM,0BAA0B,EAC5B,YAAY,CACR,EAAE,OAAO,OAAO,EACZ,YAAY,sBAAsB,WAAW,KAAK,aAAa,SAAS,IAAI,EAChF,CAAC,CACL,EACJ;AAEA,MAAa,uBAAuB,eAAe;CAC/C,OAAO,CAAC;CACR,aAAa,CAAC,qBAAqB;CACnC,WAAW,CAAC;CACZ,aAAa,CAAC;CACd,oBAAoB,CAAC;CACrB,aAAa,EAAE,OAAO,EAClB,QAAQ,CACJ;EACI,MAAM;EACN,aAAa;EACb,MAAM,EAAE,gBAAgB,EACpB,YAAY,cAChB,CAAC;CACL,CACJ,EACJ,CAAC;AACL,CAAC;AAED,SAAgB,gCACZ,UAEI,CAAC,GACe;CACpB,MAAM,aAAa,QAAQ,cAAc;CACzC,OAAO,2BAA2B;EAC9B;EACA,IAAI;EACJ,OAAO,8BAA8B;GACjC,YAAY;GACZ,MAAM;EACV,CAAC;CACL,CAAC;AACL"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Client } from "@party-stack/foundry-client";
|
|
2
|
-
import { LoadSubsetOptions } from "@tanstack/db";
|
|
3
|
-
import { Lens } from "@party-stack/ontology";
|
|
4
|
-
//#region src/users/userCollectionOptions.d.ts
|
|
5
|
-
type UsersQuery = {
|
|
6
|
-
type: "getBatch";
|
|
7
|
-
ids: string[];
|
|
8
|
-
} | {
|
|
9
|
-
type: "search";
|
|
10
|
-
query: string;
|
|
11
|
-
} | {
|
|
12
|
-
type: "list";
|
|
13
|
-
};
|
|
14
|
-
export interface UserCollectionOpts {
|
|
15
|
-
client: Client;
|
|
16
|
-
lens: Lens;
|
|
17
|
-
}
|
|
18
|
-
export declare function userCollectionOptions({ client, lens }: UserCollectionOpts): import("@tanstack/db").CollectionConfig<Record<string, unknown>, string | number, never, import("@tanstack/query-db-collection").QueryCollectionUtils<Record<string, unknown>, string | number, Record<string, unknown>, unknown>> & {
|
|
19
|
-
schema?: never;
|
|
20
|
-
utils: import("@tanstack/query-db-collection").QueryCollectionUtils<Record<string, unknown>, string | number, Record<string, unknown>, unknown>;
|
|
21
|
-
};
|
|
22
|
-
export declare function convertQuery(options: LoadSubsetOptions | undefined, lens: Lens): UsersQuery;
|
|
23
|
-
//#endregion
|
|
24
|
-
export {};
|
|
25
|
-
//# sourceMappingURL=userCollectionOptions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"userCollectionOptions.d.ts","names":[],"sources":["../../src/users/userCollectionOptions.ts"],"mappings":";;;;KAUK;EAAe;EAAkB;;EAAoB;EAAgB;;EAAoB;;iBAM7E;EACb,QAAQ;EACR,MAAM;;wBAGM,wBAAwB,QAAQ,QAAQ,4CAAkB,iBAAA,yFAAA,qBAAA,0CAAA;;;;wBAkE1D,aAAa,SAAS,+BAA+B,MAAM,OAAO"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { fromPagination, toArray } from "../utils/AsyncIterable.js";
|
|
2
|
-
import { foundryUserProfilePictureAttachment } from "./foundryUser.js";
|
|
3
|
-
import { chunk } from "../utils/chunk.js";
|
|
4
|
-
import { parseOrderByExpression, parseWhereExpression } from "@tanstack/db";
|
|
5
|
-
import { applyLensToObject, mapTargetPathToSourceWithLens } from "@party-stack/ontology";
|
|
6
|
-
import { Users } from "@osdk/foundry.admin";
|
|
7
|
-
import { QueryClient } from "@tanstack/query-core";
|
|
8
|
-
import { queryCollectionOptions } from "@tanstack/query-db-collection";
|
|
9
|
-
//#region src/users/userCollectionOptions.ts
|
|
10
|
-
function rewriteFieldPath(field, lens) {
|
|
11
|
-
return mapTargetPathToSourceWithLens(field.map(String), lens);
|
|
12
|
-
}
|
|
13
|
-
function userCollectionOptions({ client, lens }) {
|
|
14
|
-
const project = (user) => applyLensToObject({
|
|
15
|
-
...user,
|
|
16
|
-
profilePicture: foundryUserProfilePictureAttachment(user.id)
|
|
17
|
-
}, lens);
|
|
18
|
-
return queryCollectionOptions({
|
|
19
|
-
queryClient: new QueryClient(),
|
|
20
|
-
getKey: (user) => user.id,
|
|
21
|
-
queryKey: ["foundry", "users"],
|
|
22
|
-
syncMode: "on-demand",
|
|
23
|
-
queryFn: async (ctx) => {
|
|
24
|
-
const loadSubsetOptions = ctx.meta?.loadSubsetOptions;
|
|
25
|
-
const query = convertQuery(loadSubsetOptions, lens);
|
|
26
|
-
if (query.type === "getBatch") {
|
|
27
|
-
const chunks = chunk(query.ids, 500);
|
|
28
|
-
return (await Promise.all(chunks.map((chunk) => Users.getBatch(client, chunk.map((userId) => ({ userId })))))).flatMap((result) => Object.values(result.data)).map(project);
|
|
29
|
-
}
|
|
30
|
-
const queryString = query.type === "search" ? query.query : "";
|
|
31
|
-
let limit;
|
|
32
|
-
if (query.type === "search") {
|
|
33
|
-
const orderBy = parseOrderByExpression(loadSubsetOptions?.orderBy);
|
|
34
|
-
if (orderBy.length === 0 || orderBy.length === 1 && orderBy[0].field.join(".") === "id" && orderBy[0].direction === "asc") limit = loadSubsetOptions?.limit;
|
|
35
|
-
}
|
|
36
|
-
return (await toArray(fromPagination((pageSize, pageToken) => Users.search(client, {
|
|
37
|
-
pageSize,
|
|
38
|
-
pageToken,
|
|
39
|
-
where: {
|
|
40
|
-
type: "queryString",
|
|
41
|
-
value: queryString
|
|
42
|
-
}
|
|
43
|
-
}), (page) => page.nextPageToken, (page) => page.data, 1e4, limit))).map(project);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
function convertQuery(options, lens) {
|
|
48
|
-
if (!options) return { type: "list" };
|
|
49
|
-
const maybeBatchQuery = parseWhereExpression(options.where, {
|
|
50
|
-
handlers: {
|
|
51
|
-
eq: (field, value) => {
|
|
52
|
-
field = rewriteFieldPath(field, lens);
|
|
53
|
-
if (field.join(".") === "id") return {
|
|
54
|
-
type: "getBatch",
|
|
55
|
-
ids: [value]
|
|
56
|
-
};
|
|
57
|
-
},
|
|
58
|
-
in: (field, value) => {
|
|
59
|
-
field = rewriteFieldPath(field, lens);
|
|
60
|
-
if (field.join(".") === "id") return {
|
|
61
|
-
type: "getBatch",
|
|
62
|
-
ids: value.filter((v) => v !== null && v !== void 0)
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
onUnknownOperator: () => void 0
|
|
67
|
-
}) ?? void 0;
|
|
68
|
-
if (maybeBatchQuery) return maybeBatchQuery;
|
|
69
|
-
const maybeSearchQuery = parseWhereExpression(options.where, {
|
|
70
|
-
handlers: {
|
|
71
|
-
or: (...queries) => {
|
|
72
|
-
if (queries.length > 0 && queries.every((query) => query?.type === "search") && queries.every((query) => query.query === queries[0].query)) return queries[0];
|
|
73
|
-
},
|
|
74
|
-
like: (field, value) => getLikeQuery(rewriteFieldPath(field, lens), value),
|
|
75
|
-
ilike: (field, value) => getLikeQuery(rewriteFieldPath(field, lens), value)
|
|
76
|
-
},
|
|
77
|
-
onUnknownOperator: () => void 0
|
|
78
|
-
}) ?? void 0;
|
|
79
|
-
if (maybeSearchQuery) return maybeSearchQuery;
|
|
80
|
-
return { type: "list" };
|
|
81
|
-
}
|
|
82
|
-
function getLikeQuery(field, value) {
|
|
83
|
-
return getLikeQueryForTargetField(field, value, "username") ?? getLikeQueryForTargetField(field, value, "givenName") ?? getLikeQueryForTargetField(field, value, "familyName");
|
|
84
|
-
}
|
|
85
|
-
function getLikeQueryForTargetField(field, value, targetField) {
|
|
86
|
-
if (field.join(".") === targetField && value.endsWith("%") && !value.startsWith("%") && !value.includes("_")) return {
|
|
87
|
-
type: "search",
|
|
88
|
-
query: value.replace("%", "")
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
//#endregion
|
|
92
|
-
export { convertQuery, userCollectionOptions };
|
|
93
|
-
|
|
94
|
-
//# sourceMappingURL=userCollectionOptions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"userCollectionOptions.js","names":["AsyncIterable.toArray","AsyncIterable.fromPagination"],"sources":["../../src/users/userCollectionOptions.ts"],"sourcesContent":["import { User, Users } from \"@osdk/foundry.admin\";\nimport { applyLensToObject, mapTargetPathToSourceWithLens, type Lens } from \"@party-stack/ontology\";\nimport { FieldPath, LoadSubsetOptions, parseOrderByExpression, parseWhereExpression } from \"@tanstack/db\";\nimport { QueryClient } from \"@tanstack/query-core\";\nimport { queryCollectionOptions } from \"@tanstack/query-db-collection\";\nimport * as AsyncIterable from \"../utils/AsyncIterable.js\";\nimport { chunk } from \"../utils/chunk.js\";\nimport { foundryUserProfilePictureAttachment } from \"./foundryUser.js\";\nimport type { Client } from \"@party-stack/foundry-client\";\n\ntype UsersQuery = { type: \"getBatch\"; ids: string[] } | { type: \"search\"; query: string } | { type: \"list\" };\n\nfunction rewriteFieldPath(field: FieldPath, lens: Lens): FieldPath {\n return mapTargetPathToSourceWithLens(field.map(String), lens);\n}\n\nexport interface UserCollectionOpts {\n client: Client;\n lens: Lens;\n}\n\nexport function userCollectionOptions({ client, lens }: UserCollectionOpts) {\n const project = (user: User) =>\n applyLensToObject(\n {\n ...user,\n profilePicture: foundryUserProfilePictureAttachment(user.id),\n },\n lens\n );\n return queryCollectionOptions<Record<string, unknown>>({\n queryClient: new QueryClient(),\n getKey: (user) => user.id as string,\n queryKey: [\"foundry\", \"users\"],\n syncMode: \"on-demand\",\n queryFn: async (ctx) => {\n const loadSubsetOptions = ctx.meta?.loadSubsetOptions;\n\n const query = convertQuery(loadSubsetOptions, lens);\n\n if (query.type === \"getBatch\") {\n // The max batch size here is 500 (https://www.palantir.com/docs/foundry/api/v2/admin-v2-resources/users/get-users-batch)\n const chunks = chunk(query.ids, 500);\n const results = await Promise.all(\n chunks.map((chunk) =>\n Users.getBatch(\n client,\n chunk.map((userId) => ({ userId }))\n )\n )\n );\n return results.flatMap((result) => Object.values(result.data)).map(project);\n }\n\n const queryString = query.type === \"search\" ? query.query : \"\";\n let limit: number | undefined;\n if (query.type === \"search\") {\n const orderBy = parseOrderByExpression(loadSubsetOptions?.orderBy);\n if (\n orderBy.length === 0 ||\n (orderBy.length === 1 &&\n orderBy[0]!.field.join(\".\") === \"id\" &&\n orderBy[0]!.direction === \"asc\")\n ) {\n limit = loadSubsetOptions?.limit;\n }\n }\n\n const users = await AsyncIterable.toArray(\n AsyncIterable.fromPagination(\n (pageSize, pageToken: string | undefined) =>\n Users.search(client, {\n pageSize,\n pageToken,\n where: { type: \"queryString\", value: queryString },\n }),\n (page) => page.nextPageToken,\n (page) => page.data,\n 10_000,\n limit\n )\n );\n return users.map(project);\n },\n });\n}\n\nexport function convertQuery(options: LoadSubsetOptions | undefined, lens: Lens): UsersQuery {\n if (!options) {\n return { type: \"list\" };\n }\n\n const maybeBatchQuery =\n parseWhereExpression<UsersQuery | undefined>(options.where, {\n handlers: {\n eq: (field: FieldPath, value: unknown) => {\n field = rewriteFieldPath(field, lens);\n if (field.join(\".\") === \"id\") {\n return { type: \"getBatch\", ids: [value as string] };\n }\n },\n in: (field: FieldPath, value: unknown[]) => {\n field = rewriteFieldPath(field, lens);\n if (field.join(\".\") === \"id\") {\n return {\n type: \"getBatch\",\n ids: value.filter((v) => v !== null && v !== undefined) as string[],\n };\n }\n },\n },\n onUnknownOperator: () => undefined,\n }) ?? undefined;\n if (maybeBatchQuery) {\n return maybeBatchQuery;\n }\n\n const maybeSearchQuery =\n parseWhereExpression<UsersQuery | undefined>(options.where, {\n handlers: {\n or: (...queries: (UsersQuery | undefined)[]) => {\n if (\n queries.length > 0 &&\n queries.every(\n (query): query is Extract<UsersQuery, { type: \"search\" }> =>\n query?.type === \"search\"\n ) &&\n queries.every((query) => query.query === queries[0]!.query)\n ) {\n // Foundry's user search applies one query across the supported name fields,\n // so ORs over those fields can share one server-side search when their terms match.\n return queries[0];\n }\n },\n like: (field: FieldPath, value: string) => getLikeQuery(rewriteFieldPath(field, lens), value),\n ilike: (field: FieldPath, value: string) =>\n getLikeQuery(rewriteFieldPath(field, lens), value),\n },\n onUnknownOperator: () => undefined,\n }) ?? undefined;\n if (maybeSearchQuery) {\n return maybeSearchQuery;\n }\n\n return { type: \"list\" };\n}\n\nfunction getLikeQuery(field: FieldPath, value: string) {\n return (\n getLikeQueryForTargetField(field, value, \"username\") ??\n getLikeQueryForTargetField(field, value, \"givenName\") ??\n getLikeQueryForTargetField(field, value, \"familyName\")\n );\n}\n\nfunction getLikeQueryForTargetField(\n field: FieldPath,\n value: string,\n targetField: string\n): UsersQuery | undefined {\n if (\n field.join(\".\") === targetField &&\n value.endsWith(\"%\") &&\n !value.startsWith(\"%\") &&\n !value.includes(\"_\")\n ) {\n return { type: \"search\", query: value.replace(\"%\", \"\") };\n }\n}\n"],"mappings":";;;;;;;;;AAYA,SAAS,iBAAiB,OAAkB,MAAuB;CAC/D,OAAO,8BAA8B,MAAM,IAAI,MAAM,GAAG,IAAI;AAChE;AAOA,SAAgB,sBAAsB,EAAE,QAAQ,QAA4B;CACxE,MAAM,WAAW,SACb,kBACI;EACI,GAAG;EACH,gBAAgB,oCAAoC,KAAK,EAAE;CAC/D,GACA,IACJ;CACJ,OAAO,uBAAgD;EACnD,aAAa,IAAI,YAAY;EAC7B,SAAS,SAAS,KAAK;EACvB,UAAU,CAAC,WAAW,OAAO;EAC7B,UAAU;EACV,SAAS,OAAO,QAAQ;GACpB,MAAM,oBAAoB,IAAI,MAAM;GAEpC,MAAM,QAAQ,aAAa,mBAAmB,IAAI;GAElD,IAAI,MAAM,SAAS,YAAY;IAE3B,MAAM,SAAS,MAAM,MAAM,KAAK,GAAG;IASnC,QAAO,MARe,QAAQ,IAC1B,OAAO,KAAK,UACR,MAAM,SACF,QACA,MAAM,KAAK,YAAY,EAAE,OAAO,EAAE,CACtC,CACJ,CACJ,EAAA,CACe,SAAS,WAAW,OAAO,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO;GAC9E;GAEA,MAAM,cAAc,MAAM,SAAS,WAAW,MAAM,QAAQ;GAC5D,IAAI;GACJ,IAAI,MAAM,SAAS,UAAU;IACzB,MAAM,UAAU,uBAAuB,mBAAmB,OAAO;IACjE,IACI,QAAQ,WAAW,KAClB,QAAQ,WAAW,KAChB,QAAQ,EAAE,CAAE,MAAM,KAAK,GAAG,MAAM,QAChC,QAAQ,EAAE,CAAE,cAAc,OAE9B,QAAQ,mBAAmB;GAEnC;GAgBA,QAAO,MAdaA,QAChBC,gBACK,UAAU,cACP,MAAM,OAAO,QAAQ;IACjB;IACA;IACA,OAAO;KAAE,MAAM;KAAe,OAAO;IAAY;GACrD,CAAC,IACJ,SAAS,KAAK,gBACd,SAAS,KAAK,MACf,KACA,KACJ,CACJ,EAAA,CACa,IAAI,OAAO;EAC5B;CACJ,CAAC;AACL;AAEA,SAAgB,aAAa,SAAwC,MAAwB;CACzF,IAAI,CAAC,SACD,OAAO,EAAE,MAAM,OAAO;CAG1B,MAAM,kBACF,qBAA6C,QAAQ,OAAO;EACxD,UAAU;GACN,KAAK,OAAkB,UAAmB;IACtC,QAAQ,iBAAiB,OAAO,IAAI;IACpC,IAAI,MAAM,KAAK,GAAG,MAAM,MACpB,OAAO;KAAE,MAAM;KAAY,KAAK,CAAC,KAAe;IAAE;GAE1D;GACA,KAAK,OAAkB,UAAqB;IACxC,QAAQ,iBAAiB,OAAO,IAAI;IACpC,IAAI,MAAM,KAAK,GAAG,MAAM,MACpB,OAAO;KACH,MAAM;KACN,KAAK,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM,KAAA,CAAS;IAC1D;GAER;EACJ;EACA,yBAAyB,KAAA;CAC7B,CAAC,KAAK,KAAA;CACV,IAAI,iBACA,OAAO;CAGX,MAAM,mBACF,qBAA6C,QAAQ,OAAO;EACxD,UAAU;GACN,KAAK,GAAG,YAAwC;IAC5C,IACI,QAAQ,SAAS,KACjB,QAAQ,OACH,UACG,OAAO,SAAS,QACxB,KACA,QAAQ,OAAO,UAAU,MAAM,UAAU,QAAQ,EAAE,CAAE,KAAK,GAI1D,OAAO,QAAQ;GAEvB;GACA,OAAO,OAAkB,UAAkB,aAAa,iBAAiB,OAAO,IAAI,GAAG,KAAK;GAC5F,QAAQ,OAAkB,UACtB,aAAa,iBAAiB,OAAO,IAAI,GAAG,KAAK;EACzD;EACA,yBAAyB,KAAA;CAC7B,CAAC,KAAK,KAAA;CACV,IAAI,kBACA,OAAO;CAGX,OAAO,EAAE,MAAM,OAAO;AAC1B;AAEA,SAAS,aAAa,OAAkB,OAAe;CACnD,OACI,2BAA2B,OAAO,OAAO,UAAU,KACnD,2BAA2B,OAAO,OAAO,WAAW,KACpD,2BAA2B,OAAO,OAAO,YAAY;AAE7D;AAEA,SAAS,2BACL,OACA,OACA,aACsB;CACtB,IACI,MAAM,KAAK,GAAG,MAAM,eACpB,MAAM,SAAS,GAAG,KAClB,CAAC,MAAM,WAAW,GAAG,KACrB,CAAC,MAAM,SAAS,GAAG,GAEnB,OAAO;EAAE,MAAM;EAAU,OAAO,MAAM,QAAQ,KAAK,EAAE;CAAE;AAE/D"}
|