@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,50 +0,0 @@
|
|
|
1
|
-
import { invariant } from "@bobbyfidz/panic";
|
|
2
|
-
//#region src/config/applyAttachmentConstraintOverrides.ts
|
|
3
|
-
function withAttachmentConstraint(type, constraint) {
|
|
4
|
-
switch (type.kind) {
|
|
5
|
-
case "attachment": return {
|
|
6
|
-
...type,
|
|
7
|
-
value: {
|
|
8
|
-
...type.value,
|
|
9
|
-
constraint
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
case "optional": return {
|
|
13
|
-
...type,
|
|
14
|
-
value: { type: withAttachmentConstraint(type.value.type, constraint) }
|
|
15
|
-
};
|
|
16
|
-
case "list": return {
|
|
17
|
-
...type,
|
|
18
|
-
value: { elementType: withAttachmentConstraint(type.value.elementType, constraint) }
|
|
19
|
-
};
|
|
20
|
-
default: throw new Error(`Foundry attachment constraint target resolved to "${type.kind}", not an attachment.`);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function applyAttachmentConstraintOverrides(ontology, overrides) {
|
|
24
|
-
for (const override of overrides) {
|
|
25
|
-
const target = override.target;
|
|
26
|
-
switch (target.kind) {
|
|
27
|
-
case "objectProperty": {
|
|
28
|
-
const objectType = ontology.objectTypes.find((candidate) => candidate.name === target.objectType);
|
|
29
|
-
invariant(objectType, `Unknown object type "${target.objectType}" in attachment constraint override.`);
|
|
30
|
-
const property = objectType.properties.find((candidate) => candidate.name === target.property);
|
|
31
|
-
invariant(property, `Unknown property "${target.property}" on "${target.objectType}" in attachment constraint override.`);
|
|
32
|
-
property.type = withAttachmentConstraint(property.type, override.constraint);
|
|
33
|
-
break;
|
|
34
|
-
}
|
|
35
|
-
case "actionParameter": {
|
|
36
|
-
const actionType = ontology.actionTypes.find((candidate) => candidate.name === target.actionType);
|
|
37
|
-
invariant(actionType, `Unknown action type "${target.actionType}" in attachment constraint override.`);
|
|
38
|
-
const parameter = actionType.parameters.find((candidate) => candidate.name === target.parameter);
|
|
39
|
-
invariant(parameter, `Unknown parameter "${target.parameter}" on "${target.actionType}" in attachment constraint override.`);
|
|
40
|
-
parameter.type = withAttachmentConstraint(parameter.type, override.constraint);
|
|
41
|
-
break;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return ontology;
|
|
46
|
-
}
|
|
47
|
-
//#endregion
|
|
48
|
-
export { applyAttachmentConstraintOverrides };
|
|
49
|
-
|
|
50
|
-
//# sourceMappingURL=applyAttachmentConstraintOverrides.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"applyAttachmentConstraintOverrides.js","names":[],"sources":["../../src/config/applyAttachmentConstraintOverrides.ts"],"sourcesContent":["import { invariant } from \"@bobbyfidz/panic\";\nimport type { AttachmentConstraint, OntologyIR, TypeDef } from \"@party-stack/ontology\";\nimport type { OntologyAttachmentBindingTarget } from \"@party-stack/ontology/utils\";\n\n// TODO: Remove these overrides once Foundry datasources expose mediaSetRid and\n// media-set schemas can drive constraints directly. See:\n// ../../../../specs/2026-08-05-foundry-media-support/README.md\n\nexport interface FoundryAttachmentConstraintOverride {\n target: OntologyAttachmentBindingTarget;\n constraint: AttachmentConstraint;\n}\n\nfunction withAttachmentConstraint(type: TypeDef, constraint: AttachmentConstraint): TypeDef {\n switch (type.kind) {\n case \"attachment\":\n return {\n ...type,\n value: {\n ...type.value,\n constraint,\n },\n };\n case \"optional\":\n return {\n ...type,\n value: {\n type: withAttachmentConstraint(type.value.type, constraint),\n },\n };\n case \"list\":\n return {\n ...type,\n value: {\n elementType: withAttachmentConstraint(type.value.elementType, constraint),\n },\n };\n default:\n throw new Error(\n `Foundry attachment constraint target resolved to \"${type.kind}\", not an attachment.`\n );\n }\n}\n\nexport function applyAttachmentConstraintOverrides(\n ontology: OntologyIR,\n overrides: FoundryAttachmentConstraintOverride[]\n): OntologyIR {\n for (const override of overrides) {\n const target = override.target;\n switch (target.kind) {\n case \"objectProperty\": {\n const objectType = ontology.objectTypes.find(\n (candidate) => candidate.name === target.objectType\n );\n invariant(\n objectType,\n `Unknown object type \"${target.objectType}\" in attachment constraint override.`\n );\n const property = objectType.properties.find(\n (candidate) => candidate.name === target.property\n );\n invariant(\n property,\n `Unknown property \"${target.property}\" on \"${target.objectType}\" in attachment constraint override.`\n );\n property.type = withAttachmentConstraint(property.type, override.constraint);\n break;\n }\n case \"actionParameter\": {\n const actionType = ontology.actionTypes.find(\n (candidate) => candidate.name === target.actionType\n );\n invariant(\n actionType,\n `Unknown action type \"${target.actionType}\" in attachment constraint override.`\n );\n const parameter = actionType.parameters.find(\n (candidate) => candidate.name === target.parameter\n );\n invariant(\n parameter,\n `Unknown parameter \"${target.parameter}\" on \"${target.actionType}\" in attachment constraint override.`\n );\n parameter.type = withAttachmentConstraint(parameter.type, override.constraint);\n break;\n }\n }\n }\n return ontology;\n}\n"],"mappings":";;AAaA,SAAS,yBAAyB,MAAe,YAA2C;CACxF,QAAQ,KAAK,MAAb;EACI,KAAK,cACD,OAAO;GACH,GAAG;GACH,OAAO;IACH,GAAG,KAAK;IACR;GACJ;EACJ;EACJ,KAAK,YACD,OAAO;GACH,GAAG;GACH,OAAO,EACH,MAAM,yBAAyB,KAAK,MAAM,MAAM,UAAU,EAC9D;EACJ;EACJ,KAAK,QACD,OAAO;GACH,GAAG;GACH,OAAO,EACH,aAAa,yBAAyB,KAAK,MAAM,aAAa,UAAU,EAC5E;EACJ;EACJ,SACI,MAAM,IAAI,MACN,qDAAqD,KAAK,KAAK,sBACnE;CACR;AACJ;AAEA,SAAgB,mCACZ,UACA,WACU;CACV,KAAK,MAAM,YAAY,WAAW;EAC9B,MAAM,SAAS,SAAS;EACxB,QAAQ,OAAO,MAAf;GACI,KAAK,kBAAkB;IACnB,MAAM,aAAa,SAAS,YAAY,MACnC,cAAc,UAAU,SAAS,OAAO,UAC7C;IACA,UACI,YACA,wBAAwB,OAAO,WAAW,qCAC9C;IACA,MAAM,WAAW,WAAW,WAAW,MAClC,cAAc,UAAU,SAAS,OAAO,QAC7C;IACA,UACI,UACA,qBAAqB,OAAO,SAAS,QAAQ,OAAO,WAAW,qCACnE;IACA,SAAS,OAAO,yBAAyB,SAAS,MAAM,SAAS,UAAU;IAC3E;GACJ;GACA,KAAK,mBAAmB;IACpB,MAAM,aAAa,SAAS,YAAY,MACnC,cAAc,UAAU,SAAS,OAAO,UAC7C;IACA,UACI,YACA,wBAAwB,OAAO,WAAW,qCAC9C;IACA,MAAM,YAAY,WAAW,WAAW,MACnC,cAAc,UAAU,SAAS,OAAO,SAC7C;IACA,UACI,WACA,sBAAsB,OAAO,UAAU,QAAQ,OAAO,WAAW,qCACrE;IACA,UAAU,OAAO,yBAAyB,UAAU,MAAM,SAAS,UAAU;IAC7E;GACJ;EACJ;CACJ;CACA,OAAO;AACX"}
|
package/lib/connection.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { BackendConnectionAdapterProvider, Connection } from "@party-stack/connections";
|
|
2
|
-
import { BrowserAuthenticationPresentation } from "@party-stack/runtime";
|
|
3
|
-
//#region src/connection.d.ts
|
|
4
|
-
export interface FoundryOAuthConnectionOptions {
|
|
5
|
-
clientId: string;
|
|
6
|
-
redirectUrl: string;
|
|
7
|
-
scopes?: string[];
|
|
8
|
-
fetch?: typeof globalThis.fetch;
|
|
9
|
-
dangerouslyPersistSecrets?: boolean;
|
|
10
|
-
}
|
|
11
|
-
export interface FoundryClientCredentialsConnectionOptions {
|
|
12
|
-
clientId: string;
|
|
13
|
-
clientSecret: string;
|
|
14
|
-
userId?: string;
|
|
15
|
-
scopes?: string[];
|
|
16
|
-
fetch?: typeof globalThis.fetch;
|
|
17
|
-
}
|
|
18
|
-
export interface CreateFoundryConnectionAdapterOptions {
|
|
19
|
-
baseUrl: string;
|
|
20
|
-
oauth?: FoundryOAuthConnectionOptions;
|
|
21
|
-
clientCredentials?: FoundryClientCredentialsConnectionOptions;
|
|
22
|
-
token?: string;
|
|
23
|
-
}
|
|
24
|
-
export interface FoundryAuthenticationClient {
|
|
25
|
-
completeOAuthRedirect(url: string): Promise<Connection<"active"> | undefined>;
|
|
26
|
-
signIn: {
|
|
27
|
-
oauth(options?: {
|
|
28
|
-
browserPresentation?: BrowserAuthenticationPresentation;
|
|
29
|
-
}): Promise<Connection<"active">>;
|
|
30
|
-
clientCredentials(): Promise<Connection<"active">>;
|
|
31
|
-
apiToken(options?: {
|
|
32
|
-
token?: string;
|
|
33
|
-
}): Promise<Connection<"active">>;
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
export declare function createFoundryConnectionAdapter(options: CreateFoundryConnectionAdapterOptions): BackendConnectionAdapterProvider<FoundryAuthenticationClient>;
|
|
37
|
-
//#endregion
|
|
38
|
-
//# sourceMappingURL=connection.d.ts.map
|
package/lib/connection.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","names":[],"sources":["../src/connection.ts"],"mappings":";;;iBAsBiB;EACb;EACA;EACA;EACA,eAAe,WAAW;EAC1B;;iBAGa;EACb;EACA;EACA;EACA;EACA,eAAe,WAAW;;iBAGb;EACb;EACA,QAAQ;EACR,oBAAoB;EACpB;;iBAGa;EACb,sBAAsB,cAAc,QAAQ;EAC5C;IACI,MAAM;MACF,sBAAsB;QACtB,QAAQ;IACZ,qBAAqB,QAAQ;IAC7B,SAAS;MAAY;QAAmB,QAAQ;;;wBA2PxC,+BACZ,SAAS,wCACV,iCAAiC"}
|
package/lib/connection.js
DELETED
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
import { withHttpAuthenticationErrorHandling, withHttpRetryHandling } from "@party-stack/connections";
|
|
2
|
-
import { unauthenticated } from "@party-stack/errors";
|
|
3
|
-
import { createFoundryFetch, createFoundryWebSocket, getTokenDetails } from "@party-stack/foundry-client";
|
|
4
|
-
import { createClientCredentialsOAuthClient, createPublicOAuthClient } from "@party-stack/oauth";
|
|
5
|
-
//#region src/connection.ts
|
|
6
|
-
const DEFAULT_SCOPES = [
|
|
7
|
-
"api:use-ontologies-read",
|
|
8
|
-
"api:use-ontologies-write",
|
|
9
|
-
"api:use-mediasets-read",
|
|
10
|
-
"api:use-mediasets-write",
|
|
11
|
-
"ontology:view-unredacted-action-type",
|
|
12
|
-
"ontology:view-object-type"
|
|
13
|
-
];
|
|
14
|
-
function activeState(expiresAt, refreshable) {
|
|
15
|
-
return expiresAt === void 0 ? { status: "active" } : {
|
|
16
|
-
status: "active",
|
|
17
|
-
expiration: {
|
|
18
|
-
expiresAt,
|
|
19
|
-
refreshable
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
function createFoundryEgressWrapper(options) {
|
|
24
|
-
return (handlers) => {
|
|
25
|
-
const fetch = createFoundryFetch({
|
|
26
|
-
baseUrl: options.baseUrl,
|
|
27
|
-
tokenProvider: options.tokenProvider,
|
|
28
|
-
fetch: (input, init) => handlers.fetch(new Request(input, init))
|
|
29
|
-
});
|
|
30
|
-
const createWebSocket = createFoundryWebSocket({
|
|
31
|
-
baseUrl: options.baseUrl,
|
|
32
|
-
tokenProvider: options.tokenProvider,
|
|
33
|
-
createWebSocket: (url, protocols) => handlers.createWebSocket(url, protocols)
|
|
34
|
-
});
|
|
35
|
-
return withHttpAuthenticationErrorHandling(withHttpRetryHandling({
|
|
36
|
-
fetch: (request) => fetch(request),
|
|
37
|
-
createWebSocket
|
|
38
|
-
}));
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
async function createFoundryConnectionAdapterInstance(options, context) {
|
|
42
|
-
let tokenActive = Boolean(options.token);
|
|
43
|
-
const publicOauth = options.oauth ? await createPublicOAuthClient({
|
|
44
|
-
clientId: options.oauth.clientId,
|
|
45
|
-
redirectUrl: options.oauth.redirectUrl,
|
|
46
|
-
scopes: [.../* @__PURE__ */ new Set(["offline_access", ...options.oauth.scopes ?? DEFAULT_SCOPES])],
|
|
47
|
-
authorizationServer: {
|
|
48
|
-
issuer: new URL("multipass/", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
|
|
49
|
-
authorizationEndpoint: new URL("multipass/api/oauth2/authorize", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
|
|
50
|
-
tokenEndpoint: new URL("multipass/api/oauth2/token", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
|
|
51
|
-
revocationEndpoint: new URL("multipass/api/oauth2/revoke_token", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString()
|
|
52
|
-
},
|
|
53
|
-
runtime: context.runtime,
|
|
54
|
-
fetch: options.oauth.fetch,
|
|
55
|
-
dangerouslyPersistSecrets: options.oauth.dangerouslyPersistSecrets,
|
|
56
|
-
resolveUserId: (token) => getTokenDetails(token).userId
|
|
57
|
-
}) : void 0;
|
|
58
|
-
const clientCredentialsOauth = options.clientCredentials ? createClientCredentialsOAuthClient({
|
|
59
|
-
clientId: options.clientCredentials.clientId,
|
|
60
|
-
clientSecret: options.clientCredentials.clientSecret,
|
|
61
|
-
tokenEndpoint: new URL("multipass/api/oauth2/token", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
|
|
62
|
-
tokenEndpointAuthMethod: "client_secret_basic",
|
|
63
|
-
revocationEndpoint: new URL("multipass/api/oauth2/revoke_token", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
|
|
64
|
-
scopes: options.clientCredentials.scopes ?? DEFAULT_SCOPES,
|
|
65
|
-
fetch: options.clientCredentials.fetch,
|
|
66
|
-
resolveUserId: (token) => options.clientCredentials?.userId ?? getTokenDetails(token).userId
|
|
67
|
-
}) : void 0;
|
|
68
|
-
const createTokenSession = (candidate) => {
|
|
69
|
-
const token = candidate ?? options.token;
|
|
70
|
-
if (!token) throw new Error("Foundry API token connections are not configured.");
|
|
71
|
-
const { userId, expiresAt } = getTokenDetails(token);
|
|
72
|
-
return {
|
|
73
|
-
connection: {
|
|
74
|
-
userId,
|
|
75
|
-
state: activeState(expiresAt, false)
|
|
76
|
-
},
|
|
77
|
-
session: {
|
|
78
|
-
disconnect() {
|
|
79
|
-
if (token === options.token) tokenActive = false;
|
|
80
|
-
return Promise.resolve();
|
|
81
|
-
},
|
|
82
|
-
egress: createFoundryEgressWrapper({
|
|
83
|
-
baseUrl: options.baseUrl,
|
|
84
|
-
tokenProvider: () => Promise.resolve(token)
|
|
85
|
-
})
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
};
|
|
89
|
-
const createClientCredentialsSession = async (oauth, forceRefresh = false) => {
|
|
90
|
-
const oauthSession = forceRefresh ? await oauth.refresh() : await oauth.getSession();
|
|
91
|
-
return {
|
|
92
|
-
connection: {
|
|
93
|
-
userId: oauthSession.userId,
|
|
94
|
-
state: activeState(oauthSession.expiration?.expiresAt, true)
|
|
95
|
-
},
|
|
96
|
-
session: {
|
|
97
|
-
refresh: () => createClientCredentialsSession(oauth, true),
|
|
98
|
-
disconnect: () => oauth.revoke(),
|
|
99
|
-
egress: createFoundryEgressWrapper({
|
|
100
|
-
baseUrl: options.baseUrl,
|
|
101
|
-
tokenProvider: () => oauth.getAccessToken()
|
|
102
|
-
})
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
};
|
|
106
|
-
const createPublicSession = (oauthSession) => {
|
|
107
|
-
const userId = oauthSession.userId;
|
|
108
|
-
return {
|
|
109
|
-
connection: {
|
|
110
|
-
userId,
|
|
111
|
-
state: activeState(oauthSession.expiration?.expiresAt, oauthSession.expiration?.refreshable ?? false)
|
|
112
|
-
},
|
|
113
|
-
session: {
|
|
114
|
-
async refresh() {
|
|
115
|
-
if (!publicOauth) throw unauthenticated("Foundry public OAuth is not configured.");
|
|
116
|
-
return createPublicSession(await publicOauth.refresh(userId));
|
|
117
|
-
},
|
|
118
|
-
async disconnect() {
|
|
119
|
-
await publicOauth?.revoke(userId);
|
|
120
|
-
},
|
|
121
|
-
egress: createFoundryEgressWrapper({
|
|
122
|
-
baseUrl: options.baseUrl,
|
|
123
|
-
tokenProvider: () => {
|
|
124
|
-
if (!publicOauth) throw unauthenticated("Foundry public OAuth is not configured.");
|
|
125
|
-
return publicOauth.getAccessToken(userId);
|
|
126
|
-
}
|
|
127
|
-
})
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
};
|
|
131
|
-
return {
|
|
132
|
-
name: "foundry",
|
|
133
|
-
createAuthenticationClient(controller) {
|
|
134
|
-
return {
|
|
135
|
-
async completeOAuthRedirect(url) {
|
|
136
|
-
if (!publicOauth) return;
|
|
137
|
-
const session = await publicOauth.completeRedirect(url);
|
|
138
|
-
if (!session) return;
|
|
139
|
-
const connectionSession = createPublicSession(session);
|
|
140
|
-
await controller.connect(connectionSession);
|
|
141
|
-
return connectionSession.connection;
|
|
142
|
-
},
|
|
143
|
-
signIn: {
|
|
144
|
-
async oauth(authenticationOptions = {}) {
|
|
145
|
-
if (!publicOauth) throw new Error("Foundry public OAuth is not configured.");
|
|
146
|
-
const session = await publicOauth.signIn({ browserPresentation: authenticationOptions.browserPresentation });
|
|
147
|
-
const connectionSession = createPublicSession(session);
|
|
148
|
-
await controller.connect(connectionSession);
|
|
149
|
-
return connectionSession.connection;
|
|
150
|
-
},
|
|
151
|
-
async clientCredentials() {
|
|
152
|
-
if (!clientCredentialsOauth) throw new Error("Foundry client credentials are not configured.");
|
|
153
|
-
if (typeof window !== "undefined") throw new Error("Foundry client credentials cannot run in a browser.");
|
|
154
|
-
const session = await createClientCredentialsSession(clientCredentialsOauth);
|
|
155
|
-
await controller.connect(session);
|
|
156
|
-
return session.connection;
|
|
157
|
-
},
|
|
158
|
-
async apiToken(authenticationOptions = {}) {
|
|
159
|
-
const session = createTokenSession(authenticationOptions.token);
|
|
160
|
-
if (authenticationOptions.token === void 0 && options.token) tokenActive = true;
|
|
161
|
-
await controller.connect(session);
|
|
162
|
-
return session.connection;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
};
|
|
166
|
-
},
|
|
167
|
-
async restoreConnections() {
|
|
168
|
-
const restored = /* @__PURE__ */ new Map();
|
|
169
|
-
if (tokenActive && options.token) {
|
|
170
|
-
const session = createTokenSession();
|
|
171
|
-
restored.set(session.connection.userId, session);
|
|
172
|
-
}
|
|
173
|
-
if (publicOauth) for (const oauthSession of await publicOauth.restoreSessions()) {
|
|
174
|
-
const session = createPublicSession(oauthSession);
|
|
175
|
-
restored.set(session.connection.userId, session);
|
|
176
|
-
}
|
|
177
|
-
if (clientCredentialsOauth && typeof window === "undefined") {
|
|
178
|
-
const session = await createClientCredentialsSession(clientCredentialsOauth);
|
|
179
|
-
restored.set(session.connection.userId, session);
|
|
180
|
-
}
|
|
181
|
-
return [...restored.values()];
|
|
182
|
-
},
|
|
183
|
-
async cleanup() {
|
|
184
|
-
await publicOauth?.cleanup();
|
|
185
|
-
clientCredentialsOauth?.cleanup();
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
function createFoundryConnectionAdapter(options) {
|
|
190
|
-
return (context) => createFoundryConnectionAdapterInstance(options, context);
|
|
191
|
-
}
|
|
192
|
-
//#endregion
|
|
193
|
-
export { createFoundryConnectionAdapter };
|
|
194
|
-
|
|
195
|
-
//# sourceMappingURL=connection.js.map
|
package/lib/connection.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","names":[],"sources":["../src/connection.ts"],"sourcesContent":["import {\n type BackendConnectionAdapter,\n type BackendConnectionAdapterContext,\n type BackendConnectionAdapterProvider,\n type Connection,\n type ConnectionEgressHandlers,\n type ConnectionSession,\n type EstablishedConnection,\n withHttpAuthenticationErrorHandling,\n withHttpRetryHandling,\n} from \"@party-stack/connections\";\nimport { unauthenticated } from \"@party-stack/errors\";\nimport { createFoundryFetch, createFoundryWebSocket, getTokenDetails } from \"@party-stack/foundry-client\";\nimport {\n createClientCredentialsOAuthClient,\n createPublicOAuthClient,\n type ClientCredentialsOAuthClient,\n type OAuthSession,\n type PublicOAuthClient,\n} from \"@party-stack/oauth\";\nimport type { BrowserAuthenticationPresentation } from \"@party-stack/runtime\";\n\nexport interface FoundryOAuthConnectionOptions {\n clientId: string;\n redirectUrl: string;\n scopes?: string[];\n fetch?: typeof globalThis.fetch;\n dangerouslyPersistSecrets?: boolean;\n}\n\nexport interface FoundryClientCredentialsConnectionOptions {\n clientId: string;\n clientSecret: string;\n userId?: string;\n scopes?: string[];\n fetch?: typeof globalThis.fetch;\n}\n\nexport interface CreateFoundryConnectionAdapterOptions {\n baseUrl: string;\n oauth?: FoundryOAuthConnectionOptions;\n clientCredentials?: FoundryClientCredentialsConnectionOptions;\n token?: string;\n}\n\nexport interface FoundryAuthenticationClient {\n completeOAuthRedirect(url: string): Promise<Connection<\"active\"> | undefined>;\n signIn: {\n oauth(options?: {\n browserPresentation?: BrowserAuthenticationPresentation;\n }): Promise<Connection<\"active\">>;\n clientCredentials(): Promise<Connection<\"active\">>;\n apiToken(options?: { token?: string }): Promise<Connection<\"active\">>;\n };\n}\n\nconst DEFAULT_SCOPES = [\n \"api:use-ontologies-read\",\n \"api:use-ontologies-write\",\n \"api:use-mediasets-read\",\n \"api:use-mediasets-write\",\n \"ontology:view-unredacted-action-type\",\n \"ontology:view-object-type\",\n];\n\nfunction activeState(expiresAt: number | undefined, refreshable: boolean): Connection<\"active\">[\"state\"] {\n return expiresAt === undefined\n ? { status: \"active\" }\n : {\n status: \"active\",\n expiration: {\n expiresAt,\n refreshable,\n },\n };\n}\n\nfunction createFoundryEgressWrapper(options: {\n baseUrl: string;\n tokenProvider: () => Promise<string>;\n}): (handlers: ConnectionEgressHandlers) => ConnectionEgressHandlers {\n return (handlers) => {\n const fetch = createFoundryFetch({\n baseUrl: options.baseUrl,\n tokenProvider: options.tokenProvider,\n fetch: (input, init) => handlers.fetch(new Request(input, init)),\n });\n const createWebSocket = createFoundryWebSocket({\n baseUrl: options.baseUrl,\n tokenProvider: options.tokenProvider,\n createWebSocket: (url, protocols) => handlers.createWebSocket(url, protocols),\n });\n return withHttpAuthenticationErrorHandling(\n withHttpRetryHandling({\n fetch: (request) => fetch(request),\n createWebSocket,\n })\n );\n };\n}\n\nasync function createFoundryConnectionAdapterInstance(\n options: CreateFoundryConnectionAdapterOptions,\n context: BackendConnectionAdapterContext\n): Promise<BackendConnectionAdapter<FoundryAuthenticationClient>> {\n let tokenActive = Boolean(options.token);\n const publicOauth: PublicOAuthClient | undefined = options.oauth\n ? await createPublicOAuthClient({\n clientId: options.oauth.clientId,\n redirectUrl: options.oauth.redirectUrl,\n scopes: [...new Set([\"offline_access\", ...(options.oauth.scopes ?? DEFAULT_SCOPES)])],\n authorizationServer: {\n issuer: new URL(\n \"multipass/\",\n options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`\n ).toString(),\n authorizationEndpoint: new URL(\n \"multipass/api/oauth2/authorize\",\n options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`\n ).toString(),\n tokenEndpoint: new URL(\n \"multipass/api/oauth2/token\",\n options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`\n ).toString(),\n revocationEndpoint: new URL(\n \"multipass/api/oauth2/revoke_token\",\n options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`\n ).toString(),\n },\n runtime: context.runtime,\n fetch: options.oauth.fetch,\n dangerouslyPersistSecrets: options.oauth.dangerouslyPersistSecrets,\n resolveUserId: (token) => getTokenDetails(token).userId,\n })\n : undefined;\n const clientCredentialsOauth: ClientCredentialsOAuthClient | undefined = options.clientCredentials\n ? createClientCredentialsOAuthClient({\n clientId: options.clientCredentials.clientId,\n clientSecret: options.clientCredentials.clientSecret,\n tokenEndpoint: new URL(\n \"multipass/api/oauth2/token\",\n options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`\n ).toString(),\n tokenEndpointAuthMethod: \"client_secret_basic\",\n revocationEndpoint: new URL(\n \"multipass/api/oauth2/revoke_token\",\n options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`\n ).toString(),\n scopes: options.clientCredentials.scopes ?? DEFAULT_SCOPES,\n fetch: options.clientCredentials.fetch,\n resolveUserId: (token) => options.clientCredentials?.userId ?? getTokenDetails(token).userId,\n })\n : undefined;\n\n const createTokenSession = (candidate?: string): EstablishedConnection => {\n const token = candidate ?? options.token;\n if (!token) {\n throw new Error(\"Foundry API token connections are not configured.\");\n }\n const { userId, expiresAt } = getTokenDetails(token);\n const connection: Connection<\"active\"> = {\n userId,\n state: activeState(expiresAt, false),\n };\n const session: ConnectionSession = {\n disconnect() {\n if (token === options.token) {\n tokenActive = false;\n }\n return Promise.resolve();\n },\n egress: createFoundryEgressWrapper({\n baseUrl: options.baseUrl,\n tokenProvider: () => Promise.resolve(token),\n }),\n };\n return { connection, session };\n };\n\n const createClientCredentialsSession = async (\n oauth: ClientCredentialsOAuthClient,\n forceRefresh = false\n ): Promise<EstablishedConnection> => {\n const oauthSession = forceRefresh ? await oauth.refresh() : await oauth.getSession();\n const userId = oauthSession.userId;\n const connection: Connection<\"active\"> = {\n userId,\n state: activeState(oauthSession.expiration?.expiresAt, true),\n };\n const session: ConnectionSession = {\n refresh: () => createClientCredentialsSession(oauth, true),\n disconnect: () => oauth.revoke(),\n egress: createFoundryEgressWrapper({\n baseUrl: options.baseUrl,\n tokenProvider: () => oauth.getAccessToken(),\n }),\n };\n return { connection, session };\n };\n\n const createPublicSession = (oauthSession: OAuthSession): EstablishedConnection => {\n const userId = oauthSession.userId;\n const connection: Connection<\"active\"> = {\n userId,\n state: activeState(\n oauthSession.expiration?.expiresAt,\n oauthSession.expiration?.refreshable ?? false\n ),\n };\n const session: ConnectionSession = {\n async refresh() {\n if (!publicOauth) {\n throw unauthenticated(\"Foundry public OAuth is not configured.\");\n }\n return createPublicSession(await publicOauth.refresh(userId));\n },\n async disconnect() {\n await publicOauth?.revoke(userId);\n },\n egress: createFoundryEgressWrapper({\n baseUrl: options.baseUrl,\n tokenProvider: () => {\n if (!publicOauth) {\n throw unauthenticated(\"Foundry public OAuth is not configured.\");\n }\n return publicOauth.getAccessToken(userId);\n },\n }),\n };\n return { connection, session };\n };\n\n return {\n name: \"foundry\",\n createAuthenticationClient(controller) {\n return {\n async completeOAuthRedirect(url) {\n if (!publicOauth) return;\n const session = await publicOauth.completeRedirect(url);\n if (!session) return;\n const connectionSession = createPublicSession(session);\n await controller.connect(connectionSession);\n return connectionSession.connection;\n },\n signIn: {\n async oauth(authenticationOptions = {}) {\n if (!publicOauth) {\n throw new Error(\"Foundry public OAuth is not configured.\");\n }\n const session = await publicOauth.signIn({\n browserPresentation: authenticationOptions.browserPresentation,\n });\n const connectionSession = createPublicSession(session);\n await controller.connect(connectionSession);\n return connectionSession.connection;\n },\n async clientCredentials() {\n if (!clientCredentialsOauth) {\n throw new Error(\"Foundry client credentials are not configured.\");\n }\n if (typeof window !== \"undefined\") {\n throw new Error(\"Foundry client credentials cannot run in a browser.\");\n }\n const session = await createClientCredentialsSession(clientCredentialsOauth);\n await controller.connect(session);\n return session.connection;\n },\n async apiToken(authenticationOptions = {}) {\n const session = createTokenSession(authenticationOptions.token);\n if (authenticationOptions.token === undefined && options.token) {\n tokenActive = true;\n }\n await controller.connect(session);\n return session.connection;\n },\n },\n };\n },\n async restoreConnections() {\n const restored = new Map<string, EstablishedConnection>();\n if (tokenActive && options.token) {\n const session = createTokenSession();\n restored.set(session.connection.userId, session);\n }\n if (publicOauth) {\n for (const oauthSession of await publicOauth.restoreSessions()) {\n const session = createPublicSession(oauthSession);\n restored.set(session.connection.userId, session);\n }\n }\n if (clientCredentialsOauth && typeof window === \"undefined\") {\n const session = await createClientCredentialsSession(clientCredentialsOauth);\n restored.set(session.connection.userId, session);\n }\n return [...restored.values()];\n },\n async cleanup() {\n await publicOauth?.cleanup();\n clientCredentialsOauth?.cleanup();\n },\n };\n}\n\nexport function createFoundryConnectionAdapter(\n options: CreateFoundryConnectionAdapterOptions\n): BackendConnectionAdapterProvider<FoundryAuthenticationClient> {\n return (context) => createFoundryConnectionAdapterInstance(options, context);\n}\n"],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { FoundryUsersIntegration } from "../adapter/createFoundryOntologyBackendAdapter.js";
|
|
2
|
-
import { CreateFoundryConnectionAdapterOptions, FoundryAuthenticationClient } from "../connection.js";
|
|
3
|
-
import { BackendConnectionAdapterProvider } from "@party-stack/connections";
|
|
4
|
-
import { LiveOntologyWrites, OntologyBackendInstallation, OntologyIR, OntologyRoute } from "@party-stack/ontology";
|
|
5
|
-
import { RuntimeAdapterProvider } from "@party-stack/runtime";
|
|
6
|
-
//#region src/installation/createFoundryBackendInstallation.d.ts
|
|
7
|
-
export type FoundryConnectionOptions = Omit<CreateFoundryConnectionAdapterOptions, "baseUrl">;
|
|
8
|
-
export type FoundryOntologyRoute = (baseUrl: string) => OntologyRoute;
|
|
9
|
-
export interface CreateFoundryBackendInstallationOptions<AuthenticationClient extends object = FoundryAuthenticationClient> {
|
|
10
|
-
installationId?: string;
|
|
11
|
-
baseUrl: string;
|
|
12
|
-
runtime: RuntimeAdapterProvider;
|
|
13
|
-
connections: FoundryConnectionOptions | BackendConnectionAdapterProvider<AuthenticationClient>;
|
|
14
|
-
routes: readonly FoundryOntologyRoute[];
|
|
15
|
-
createContext?: (userId: string, ontologyId: string) => Record<string, unknown>;
|
|
16
|
-
}
|
|
17
|
-
export declare function createFoundryOntologyRoute(options: {
|
|
18
|
-
ontologyId: string;
|
|
19
|
-
ir?: OntologyIR;
|
|
20
|
-
users?: FoundryUsersIntegration | ((userId: string) => FoundryUsersIntegration);
|
|
21
|
-
live?: boolean;
|
|
22
|
-
persistObjects?: boolean;
|
|
23
|
-
writes?: LiveOntologyWrites;
|
|
24
|
-
/** Metadata polling interval in milliseconds, or false to disable. Only applies when IR is omitted. */
|
|
25
|
-
metaRefetchInterval?: number | false;
|
|
26
|
-
}): FoundryOntologyRoute;
|
|
27
|
-
export declare function createFoundryBackendInstallation<AuthenticationClient extends object = FoundryAuthenticationClient>(options: CreateFoundryBackendInstallationOptions<AuthenticationClient>): Promise<OntologyBackendInstallation<AuthenticationClient>>;
|
|
28
|
-
//#endregion
|
|
29
|
-
//# sourceMappingURL=createFoundryBackendInstallation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createFoundryBackendInstallation.d.ts","names":[],"sources":["../../src/installation/createFoundryBackendInstallation.ts"],"mappings":";;;;;;YAwBY,2BAA2B,KAAK;YAChC,wBAAwB,oBAAoB;iBAEvC,wCACb,sCAAsC;EAEtC;EACA;EACA,SAAS;EACT,aAAa,2BAA2B,iCAAiC;EACzE,iBAAiB;EACjB,iBAAiB,gBAAgB,uBAAuB;;wBA8B5C,2BAA2B;EACvC;EACA,KAAK;EACL,QAAQ,4BAA4B,mBAAmB;EACvD;EACA;EACA,SAAS;;EAET;IACA;wBA+BY,iCACZ,sCAAsC,6BAEtC,SAAS,wCAAwC,wBAClD,QAAQ,4BAA4B"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { createFoundryConnectionAdapter } from "../connection.js";
|
|
2
|
-
import { createFoundryOntologyBackend } from "../adapter/createFoundryOntologyBackendAdapter.js";
|
|
3
|
-
import { createFoundryMetaOntologyBackendAdapter } from "../meta/createFoundryMetaOntologyBackendAdapter.js";
|
|
4
|
-
import { createOntologyClient } from "@party-stack/foundry-client";
|
|
5
|
-
import { createMetaOntologyConfiguration, createOntologyBackendInstallation } from "@party-stack/ontology";
|
|
6
|
-
//#region src/installation/createFoundryBackendInstallation.ts
|
|
7
|
-
function createConnectionOntologyClient(baseUrl, ontologyId, egress) {
|
|
8
|
-
return createOntologyClient({
|
|
9
|
-
baseUrl,
|
|
10
|
-
ontologyRid: ontologyId,
|
|
11
|
-
tokenProvider: () => Promise.resolve("party-stack"),
|
|
12
|
-
fetch: egress.fetch,
|
|
13
|
-
createWebSocket: (url, protocols) => egress.createWebSocket(url, protocols)
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
function configureFoundryMeta(baseUrl, options, metaRefetchInterval) {
|
|
17
|
-
const client = createConnectionOntologyClient(baseUrl, options.ontologyId, options.egress);
|
|
18
|
-
return createMetaOntologyConfiguration({ backend: () => createFoundryMetaOntologyBackendAdapter({
|
|
19
|
-
client,
|
|
20
|
-
refetchInterval: metaRefetchInterval
|
|
21
|
-
}) });
|
|
22
|
-
}
|
|
23
|
-
function createFoundryOntologyRoute(options) {
|
|
24
|
-
return (baseUrl) => {
|
|
25
|
-
const route = { matches: (ontologyId) => ontologyId === options.ontologyId };
|
|
26
|
-
const ir = options.ir;
|
|
27
|
-
if (ir) route.configure = ({ connection, egress }) => {
|
|
28
|
-
const client = createConnectionOntologyClient(baseUrl, options.ontologyId, egress);
|
|
29
|
-
return {
|
|
30
|
-
ir,
|
|
31
|
-
backend: createFoundryOntologyBackend({
|
|
32
|
-
client,
|
|
33
|
-
users: typeof options.users === "function" ? options.users(connection.userId) : options.users,
|
|
34
|
-
live: options.live
|
|
35
|
-
}),
|
|
36
|
-
persistObjects: options.persistObjects,
|
|
37
|
-
writes: options.writes
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
else route.configureMeta = (configureOptions) => configureFoundryMeta(baseUrl, configureOptions, options.metaRefetchInterval);
|
|
41
|
-
return route;
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
function createFoundryBackendInstallation(options) {
|
|
45
|
-
const connectionAdapter = typeof options.connections === "function" ? options.connections : createFoundryConnectionAdapter({
|
|
46
|
-
...options.connections,
|
|
47
|
-
baseUrl: options.baseUrl
|
|
48
|
-
});
|
|
49
|
-
return createOntologyBackendInstallation({
|
|
50
|
-
installationId: options.installationId ?? new URL(options.baseUrl).origin,
|
|
51
|
-
connections: connectionAdapter,
|
|
52
|
-
runtime: options.runtime,
|
|
53
|
-
routes: options.routes.map((route) => route(options.baseUrl)),
|
|
54
|
-
createContext: options.createContext
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
//#endregion
|
|
58
|
-
export { createFoundryBackendInstallation, createFoundryOntologyRoute };
|
|
59
|
-
|
|
60
|
-
//# sourceMappingURL=createFoundryBackendInstallation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createFoundryBackendInstallation.js","names":[],"sources":["../../src/installation/createFoundryBackendInstallation.ts"],"sourcesContent":["import { createOntologyClient } from \"@party-stack/foundry-client\";\nimport {\n createMetaOntologyConfiguration,\n createOntologyBackendInstallation,\n type LiveOntologyWrites,\n type OntologyBackendInstallation,\n type ConfigureOntologyOptions,\n type OntologyConfiguration,\n type OntologyRoute,\n} from \"@party-stack/ontology\";\nimport {\n createFoundryOntologyBackend,\n type FoundryUsersIntegration,\n} from \"../adapter/createFoundryOntologyBackendAdapter.js\";\nimport {\n createFoundryConnectionAdapter,\n type CreateFoundryConnectionAdapterOptions,\n type FoundryAuthenticationClient,\n} from \"../connection.js\";\nimport { createFoundryMetaOntologyBackendAdapter } from \"../meta/createFoundryMetaOntologyBackendAdapter.js\";\nimport type { BackendConnectionAdapterProvider, ConnectionEgress } from \"@party-stack/connections\";\nimport type { OntologyIR } from \"@party-stack/ontology\";\nimport type { RuntimeAdapterProvider } from \"@party-stack/runtime\";\n\nexport type FoundryConnectionOptions = Omit<CreateFoundryConnectionAdapterOptions, \"baseUrl\">;\nexport type FoundryOntologyRoute = (baseUrl: string) => OntologyRoute;\n\nexport interface CreateFoundryBackendInstallationOptions<\n AuthenticationClient extends object = FoundryAuthenticationClient,\n> {\n installationId?: string;\n baseUrl: string;\n runtime: RuntimeAdapterProvider;\n connections: FoundryConnectionOptions | BackendConnectionAdapterProvider<AuthenticationClient>;\n routes: readonly FoundryOntologyRoute[];\n createContext?: (userId: string, ontologyId: string) => Record<string, unknown>;\n}\n\nfunction createConnectionOntologyClient(baseUrl: string, ontologyId: string, egress: ConnectionEgress) {\n return createOntologyClient({\n baseUrl,\n ontologyRid: ontologyId,\n // ConnectionEgress replaces this placeholder Authorization\n // header with the active connection token before network access.\n tokenProvider: () => Promise.resolve(\"party-stack\"),\n fetch: egress.fetch,\n createWebSocket: (url, protocols) => egress.createWebSocket(url, protocols),\n });\n}\n\nfunction configureFoundryMeta(\n baseUrl: string,\n options: ConfigureOntologyOptions,\n metaRefetchInterval?: number | false\n): OntologyConfiguration {\n const client = createConnectionOntologyClient(baseUrl, options.ontologyId, options.egress);\n return createMetaOntologyConfiguration({\n backend: () =>\n createFoundryMetaOntologyBackendAdapter({\n client,\n refetchInterval: metaRefetchInterval,\n }),\n });\n}\n\nexport function createFoundryOntologyRoute(options: {\n ontologyId: string;\n ir?: OntologyIR;\n users?: FoundryUsersIntegration | ((userId: string) => FoundryUsersIntegration);\n live?: boolean;\n persistObjects?: boolean;\n writes?: LiveOntologyWrites;\n /** Metadata polling interval in milliseconds, or false to disable. Only applies when IR is omitted. */\n metaRefetchInterval?: number | false;\n}): FoundryOntologyRoute {\n return (baseUrl) => {\n const route: OntologyRoute = {\n matches: (ontologyId) => ontologyId === options.ontologyId,\n };\n const ir = options.ir;\n if (ir) {\n route.configure = ({ connection, egress }) => {\n const client = createConnectionOntologyClient(baseUrl, options.ontologyId, egress);\n return {\n ir,\n backend: createFoundryOntologyBackend({\n client,\n users:\n typeof options.users === \"function\"\n ? options.users(connection.userId)\n : options.users,\n live: options.live,\n }),\n persistObjects: options.persistObjects,\n writes: options.writes,\n };\n };\n } else {\n route.configureMeta = (configureOptions) =>\n configureFoundryMeta(baseUrl, configureOptions, options.metaRefetchInterval);\n }\n return route;\n };\n}\n\nexport function createFoundryBackendInstallation<\n AuthenticationClient extends object = FoundryAuthenticationClient,\n>(\n options: CreateFoundryBackendInstallationOptions<AuthenticationClient>\n): Promise<OntologyBackendInstallation<AuthenticationClient>> {\n const connectionAdapter =\n typeof options.connections === \"function\"\n ? options.connections\n : (createFoundryConnectionAdapter({\n ...options.connections,\n baseUrl: options.baseUrl,\n }) as BackendConnectionAdapterProvider<AuthenticationClient>);\n return createOntologyBackendInstallation<AuthenticationClient>({\n installationId: options.installationId ?? new URL(options.baseUrl).origin,\n connections: connectionAdapter,\n runtime: options.runtime,\n routes: options.routes.map((route) => route(options.baseUrl)),\n createContext: options.createContext,\n });\n}\n"],"mappings":";;;;;;AAsCA,SAAS,+BAA+B,SAAiB,YAAoB,QAA0B;CACnG,OAAO,qBAAqB;EACxB;EACA,aAAa;EAGb,qBAAqB,QAAQ,QAAQ,aAAa;EAClD,OAAO,OAAO;EACd,kBAAkB,KAAK,cAAc,OAAO,gBAAgB,KAAK,SAAS;CAC9E,CAAC;AACL;AAEA,SAAS,qBACL,SACA,SACA,qBACqB;CACrB,MAAM,SAAS,+BAA+B,SAAS,QAAQ,YAAY,QAAQ,MAAM;CACzF,OAAO,gCAAgC,EACnC,eACI,wCAAwC;EACpC;EACA,iBAAiB;CACrB,CAAC,EACT,CAAC;AACL;AAEA,SAAgB,2BAA2B,SASlB;CACrB,QAAQ,YAAY;EAChB,MAAM,QAAuB,EACzB,UAAU,eAAe,eAAe,QAAQ,WACpD;EACA,MAAM,KAAK,QAAQ;EACnB,IAAI,IACA,MAAM,aAAa,EAAE,YAAY,aAAa;GAC1C,MAAM,SAAS,+BAA+B,SAAS,QAAQ,YAAY,MAAM;GACjF,OAAO;IACH;IACA,SAAS,6BAA6B;KAClC;KACA,OACI,OAAO,QAAQ,UAAU,aACnB,QAAQ,MAAM,WAAW,MAAM,IAC/B,QAAQ;KAClB,MAAM,QAAQ;IAClB,CAAC;IACD,gBAAgB,QAAQ;IACxB,QAAQ,QAAQ;GACpB;EACJ;OAEA,MAAM,iBAAiB,qBACnB,qBAAqB,SAAS,kBAAkB,QAAQ,mBAAmB;EAEnF,OAAO;CACX;AACJ;AAEA,SAAgB,iCAGZ,SAC0D;CAC1D,MAAM,oBACF,OAAO,QAAQ,gBAAgB,aACzB,QAAQ,cACP,+BAA+B;EAC5B,GAAG,QAAQ;EACX,SAAS,QAAQ;CACrB,CAAC;CACX,OAAO,kCAAwD;EAC3D,gBAAgB,QAAQ,kBAAkB,IAAI,IAAI,QAAQ,OAAO,CAAC,CAAC;EACnE,aAAa;EACb,SAAS,QAAQ;EACjB,QAAQ,QAAQ,OAAO,KAAK,UAAU,MAAM,QAAQ,OAAO,CAAC;EAC5D,eAAe,QAAQ;CAC3B,CAAC;AACL"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { CreateFoundryBackendInstallationOptions, FoundryConnectionOptions, FoundryOntologyRoute, createFoundryBackendInstallation, createFoundryOntologyRoute } from "./createFoundryBackendInstallation.js";
|
|
2
|
-
export { type CreateFoundryBackendInstallationOptions, type FoundryConnectionOptions, type FoundryOntologyRoute, createFoundryBackendInstallation, createFoundryOntologyRoute };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { createFoundryBackendInstallation, createFoundryOntologyRoute } from "./createFoundryBackendInstallation.js";
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { OntologyClient } from "@party-stack/foundry-client";
|
|
2
|
-
import { ActionTypeV2 } from "@osdk/foundry.ontologies";
|
|
3
|
-
import { OntologyCollectionOptions } from "@party-stack/ontology";
|
|
4
|
-
import { QueryClient } from "@tanstack/query-core";
|
|
5
|
-
//#region src/meta/actionTypeCollectionOptions.d.ts
|
|
6
|
-
export interface ActionTypeCollectionOpts {
|
|
7
|
-
client: OntologyClient;
|
|
8
|
-
refetchInterval?: number | false;
|
|
9
|
-
queryClient?: QueryClient;
|
|
10
|
-
}
|
|
11
|
-
export declare function isNotDeclarativeActionType(actionType: ActionTypeV2): boolean;
|
|
12
|
-
export declare function actionTypeCollectionOptions(opts: ActionTypeCollectionOpts): OntologyCollectionOptions;
|
|
13
|
-
//#endregion
|
|
14
|
-
//# sourceMappingURL=actionTypeCollectionOptions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"actionTypeCollectionOptions.d.ts","names":[],"sources":["../../src/meta/actionTypeCollectionOptions.ts"],"mappings":";;;;;iBAmBiB;EACb,QAAQ;EACR;EACA,cAAc;;wBAIF,2BAA2B,YAAY;wBA+EvC,4BAA4B,MAAM,2BAA2B"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { fromBatches, fromPagination, toArray } from "../utils/AsyncIterable.js";
|
|
2
|
-
import { convertFoundryMetaActionType } from "./convertMetaActionType.js";
|
|
3
|
-
import { convertActionTypeLoadSubsetFilter, convertActionTypeLoadSubsetOrderBy } from "./convertActionTypeLoadSubsetOptions.js";
|
|
4
|
-
import { loadActionTypeOmsMetadata } from "./loadActionTypeOmsMetadata.js";
|
|
5
|
-
import { ActionTypesFullMetadata, ActionTypesV2 } from "@osdk/foundry.ontologies";
|
|
6
|
-
import { QueryClient } from "@tanstack/query-core";
|
|
7
|
-
import { queryCollectionOptions } from "@tanstack/query-db-collection";
|
|
8
|
-
//#region src/meta/actionTypeCollectionOptions.ts
|
|
9
|
-
function isNotDeclarativeActionType(actionType) {
|
|
10
|
-
return actionType.operations.length === 0;
|
|
11
|
-
}
|
|
12
|
-
async function searchActionTypes(client, options) {
|
|
13
|
-
const where = convertActionTypeLoadSubsetFilter(options?.where);
|
|
14
|
-
const orderBy = convertActionTypeLoadSubsetOrderBy(options?.orderBy);
|
|
15
|
-
const canPushDownPagination = !options?.orderBy || orderBy !== void 0;
|
|
16
|
-
const offset = canPushDownPagination ? options?.offset ?? 0 : 0;
|
|
17
|
-
const limit = canPushDownPagination ? options?.limit : void 0;
|
|
18
|
-
return (await toArray(fromPagination((pageSize, pageToken) => ActionTypesV2.search(client, client.ontologyRid, {
|
|
19
|
-
where,
|
|
20
|
-
orderBy,
|
|
21
|
-
pageSize,
|
|
22
|
-
pageToken,
|
|
23
|
-
fuzziness: { type: "off" }
|
|
24
|
-
}, { preview: true }), (page) => page.nextPageToken, (page) => page.data, 100, limit === void 0 ? void 0 : offset + limit))).slice(offset, limit === void 0 ? void 0 : offset + limit);
|
|
25
|
-
}
|
|
26
|
-
async function loadActionTypesFullMetadata(client, actionTypes) {
|
|
27
|
-
const declarativeActionTypes = actionTypes.filter((actionType) => !isNotDeclarativeActionType(actionType));
|
|
28
|
-
const fullMetadataByApiName = /* @__PURE__ */ new Map();
|
|
29
|
-
const fullMetadata = await toArray(fromBatches(declarativeActionTypes, async (batch) => (await ActionTypesFullMetadata.getFullMetadataBatch(client, client.ontologyRid, { requests: batch.map((actionType) => ({ actionType: actionType.apiName })) }, { preview: true })).data, 100));
|
|
30
|
-
for (const metadata of fullMetadata) fullMetadataByApiName.set(metadata.actionType.apiName, metadata);
|
|
31
|
-
return actionTypes.map((actionType) => fullMetadataByApiName.get(actionType.apiName) ?? {
|
|
32
|
-
actionType,
|
|
33
|
-
fullLogicRules: []
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
function actionTypeCollectionOptions(opts) {
|
|
37
|
-
return queryCollectionOptions({
|
|
38
|
-
queryClient: opts.queryClient ?? new QueryClient(),
|
|
39
|
-
getKey: (row) => row.name,
|
|
40
|
-
queryKey: [
|
|
41
|
-
"foundry",
|
|
42
|
-
"ontology",
|
|
43
|
-
"actionTypes"
|
|
44
|
-
],
|
|
45
|
-
syncMode: "on-demand",
|
|
46
|
-
refetchInterval: opts.refetchInterval,
|
|
47
|
-
queryFn: async (ctx) => {
|
|
48
|
-
const actionTypes = await searchActionTypes(opts.client, ctx.meta?.loadSubsetOptions);
|
|
49
|
-
const actionTypeMetadata = await loadActionTypesFullMetadata(opts.client, actionTypes);
|
|
50
|
-
const omsMetadata = await loadActionTypeOmsMetadata(opts.client, actionTypeMetadata.map((metadata) => metadata.actionType.rid));
|
|
51
|
-
return actionTypeMetadata.map((metadata) => convertFoundryMetaActionType(metadata, omsMetadata.get(metadata.actionType.rid)));
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
//#endregion
|
|
56
|
-
export { actionTypeCollectionOptions, isNotDeclarativeActionType };
|
|
57
|
-
|
|
58
|
-
//# sourceMappingURL=actionTypeCollectionOptions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"actionTypeCollectionOptions.js","names":["AsyncIterable.toArray","AsyncIterable.fromPagination","AsyncIterable.fromBatches"],"sources":["../../src/meta/actionTypeCollectionOptions.ts"],"sourcesContent":["import {\n ActionTypesFullMetadata,\n ActionTypesV2,\n type ActionTypeFullMetadata,\n type ActionTypeV2,\n} from \"@osdk/foundry.ontologies\";\nimport { QueryClient } from \"@tanstack/query-core\";\nimport { queryCollectionOptions } from \"@tanstack/query-db-collection\";\nimport * as AsyncIterable from \"../utils/AsyncIterable.js\";\nimport {\n convertActionTypeLoadSubsetFilter,\n convertActionTypeLoadSubsetOrderBy,\n} from \"./convertActionTypeLoadSubsetOptions.js\";\nimport { convertFoundryMetaActionType } from \"./convertMetaActionType.js\";\nimport { loadActionTypeOmsMetadata } from \"./loadActionTypeOmsMetadata.js\";\nimport type { OntologyClient } from \"@party-stack/foundry-client\";\nimport type { MetaActionType, OntologyCollectionOptions } from \"@party-stack/ontology\";\nimport type { LoadSubsetOptions } from \"@tanstack/db\";\n\nexport interface ActionTypeCollectionOpts {\n client: OntologyClient;\n refetchInterval?: number | false;\n queryClient?: QueryClient;\n}\n\n// These 404 for some reason on full metadata calls right now but we don't need them right now.\nexport function isNotDeclarativeActionType(actionType: ActionTypeV2): boolean {\n return actionType.operations.length === 0;\n}\n\nasync function searchActionTypes(\n client: OntologyClient,\n options?: LoadSubsetOptions\n): Promise<ActionTypeV2[]> {\n const where = convertActionTypeLoadSubsetFilter(options?.where);\n const orderBy = convertActionTypeLoadSubsetOrderBy(options?.orderBy);\n const canPushDownPagination = !options?.orderBy || orderBy !== undefined;\n const offset = canPushDownPagination ? (options?.offset ?? 0) : 0;\n const limit = canPushDownPagination ? options?.limit : undefined;\n\n const results = await AsyncIterable.toArray(\n AsyncIterable.fromPagination(\n (pageSize, pageToken: string | undefined) =>\n ActionTypesV2.search(\n client,\n client.ontologyRid,\n {\n where,\n orderBy,\n pageSize,\n pageToken,\n fuzziness: { type: \"off\" },\n },\n { preview: true }\n ),\n (page) => page.nextPageToken,\n (page) => page.data,\n 100,\n limit === undefined ? undefined : offset + limit\n )\n );\n\n return results.slice(offset, limit === undefined ? undefined : offset + limit);\n}\n\nasync function loadActionTypesFullMetadata(\n client: OntologyClient,\n actionTypes: ActionTypeV2[]\n): Promise<ActionTypeFullMetadata[]> {\n const declarativeActionTypes = actionTypes.filter(\n (actionType) => !isNotDeclarativeActionType(actionType)\n );\n const fullMetadataByApiName = new Map<string, ActionTypeFullMetadata>();\n const fullMetadata = await AsyncIterable.toArray(\n AsyncIterable.fromBatches(\n declarativeActionTypes,\n async (batch) =>\n (\n await ActionTypesFullMetadata.getFullMetadataBatch(\n client,\n client.ontologyRid,\n {\n requests: batch.map((actionType) => ({\n actionType: actionType.apiName,\n })),\n },\n { preview: true }\n )\n ).data,\n 100\n )\n );\n for (const metadata of fullMetadata) {\n fullMetadataByApiName.set(metadata.actionType.apiName, metadata);\n }\n\n return actionTypes.map(\n (actionType) =>\n fullMetadataByApiName.get(actionType.apiName) ?? {\n actionType,\n fullLogicRules: [],\n }\n );\n}\n\nexport function actionTypeCollectionOptions(opts: ActionTypeCollectionOpts): OntologyCollectionOptions {\n return queryCollectionOptions<MetaActionType>({\n queryClient: opts.queryClient ?? new QueryClient(),\n getKey: (row) => row.name,\n queryKey: [\"foundry\", \"ontology\", \"actionTypes\"],\n syncMode: \"on-demand\",\n refetchInterval: opts.refetchInterval,\n queryFn: async (ctx) => {\n const actionTypes = await searchActionTypes(opts.client, ctx.meta?.loadSubsetOptions);\n const actionTypeMetadata = await loadActionTypesFullMetadata(opts.client, actionTypes);\n const omsMetadata = await loadActionTypeOmsMetadata(\n opts.client,\n actionTypeMetadata.map((metadata) => metadata.actionType.rid)\n );\n return actionTypeMetadata.map((metadata) =>\n convertFoundryMetaActionType(metadata, omsMetadata.get(metadata.actionType.rid))\n );\n },\n }) as unknown as OntologyCollectionOptions;\n}\n"],"mappings":";;;;;;;;AA0BA,SAAgB,2BAA2B,YAAmC;CAC1E,OAAO,WAAW,WAAW,WAAW;AAC5C;AAEA,eAAe,kBACX,QACA,SACuB;CACvB,MAAM,QAAQ,kCAAkC,SAAS,KAAK;CAC9D,MAAM,UAAU,mCAAmC,SAAS,OAAO;CACnE,MAAM,wBAAwB,CAAC,SAAS,WAAW,YAAY,KAAA;CAC/D,MAAM,SAAS,wBAAyB,SAAS,UAAU,IAAK;CAChE,MAAM,QAAQ,wBAAwB,SAAS,QAAQ,KAAA;CAwBvD,QAAO,MAtBeA,QAClBC,gBACK,UAAU,cACP,cAAc,OACV,QACA,OAAO,aACP;EACI;EACA;EACA;EACA;EACA,WAAW,EAAE,MAAM,MAAM;CAC7B,GACA,EAAE,SAAS,KAAK,CACpB,IACH,SAAS,KAAK,gBACd,SAAS,KAAK,MACf,KACA,UAAU,KAAA,IAAY,KAAA,IAAY,SAAS,KAC/C,CACJ,EAAA,CAEe,MAAM,QAAQ,UAAU,KAAA,IAAY,KAAA,IAAY,SAAS,KAAK;AACjF;AAEA,eAAe,4BACX,QACA,aACiC;CACjC,MAAM,yBAAyB,YAAY,QACtC,eAAe,CAAC,2BAA2B,UAAU,CAC1D;CACA,MAAM,wCAAwB,IAAI,IAAoC;CACtE,MAAM,eAAe,MAAMD,QACvBE,YACI,wBACA,OAAO,WAEC,MAAM,wBAAwB,qBAC1B,QACA,OAAO,aACP,EACI,UAAU,MAAM,KAAK,gBAAgB,EACjC,YAAY,WAAW,QAC3B,EAAE,EACN,GACA,EAAE,SAAS,KAAK,CACpB,EAAA,CACF,MACN,GACJ,CACJ;CACA,KAAK,MAAM,YAAY,cACnB,sBAAsB,IAAI,SAAS,WAAW,SAAS,QAAQ;CAGnE,OAAO,YAAY,KACd,eACG,sBAAsB,IAAI,WAAW,OAAO,KAAK;EAC7C;EACA,gBAAgB,CAAC;CACrB,CACR;AACJ;AAEA,SAAgB,4BAA4B,MAA2D;CACnG,OAAO,uBAAuC;EAC1C,aAAa,KAAK,eAAe,IAAI,YAAY;EACjD,SAAS,QAAQ,IAAI;EACrB,UAAU;GAAC;GAAW;GAAY;EAAa;EAC/C,UAAU;EACV,iBAAiB,KAAK;EACtB,SAAS,OAAO,QAAQ;GACpB,MAAM,cAAc,MAAM,kBAAkB,KAAK,QAAQ,IAAI,MAAM,iBAAiB;GACpF,MAAM,qBAAqB,MAAM,4BAA4B,KAAK,QAAQ,WAAW;GACrF,MAAM,cAAc,MAAM,0BACtB,KAAK,QACL,mBAAmB,KAAK,aAAa,SAAS,WAAW,GAAG,CAChE;GACA,OAAO,mBAAmB,KAAK,aAC3B,6BAA6B,UAAU,YAAY,IAAI,SAAS,WAAW,GAAG,CAAC,CACnF;EACJ;CACJ,CAAC;AACL"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { ActionTypeSearchJsonQueryV2, SearchActionTypesOrderByV2 } from "@osdk/foundry.ontologies";
|
|
2
|
-
import { LoadSubsetOptions } from "@tanstack/db";
|
|
3
|
-
//#region src/meta/convertActionTypeLoadSubsetOptions.d.ts
|
|
4
|
-
export declare function convertActionTypeLoadSubsetFilter(filter: LoadSubsetOptions["where"]): ActionTypeSearchJsonQueryV2 | undefined;
|
|
5
|
-
export declare function convertActionTypeLoadSubsetOrderBy(orderBy: LoadSubsetOptions["orderBy"]): SearchActionTypesOrderByV2 | undefined;
|
|
6
|
-
//#endregion
|
|
7
|
-
//# sourceMappingURL=convertActionTypeLoadSubsetOptions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convertActionTypeLoadSubsetOptions.d.ts","names":[],"sources":["../../src/meta/convertActionTypeLoadSubsetOptions.ts"],"mappings":";;;wBAuEgB,kCACZ,QAAQ,6BACT;wBAwBa,mCACZ,SAAS,+BACV"}
|