@party-stack/foundry-ontology 0.17.0 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/adapter/convertLoadSubsetOptions.d.ts +2 -0
- package/lib/adapter/convertLoadSubsetOptions.d.ts.map +1 -1
- package/lib/adapter/convertLoadSubsetOptions.js +158 -191
- package/lib/adapter/convertLoadSubsetOptions.js.map +1 -1
- package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts +17 -15
- package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts.map +1 -1
- package/lib/adapter/createFoundryOntologyBackendAdapter.js +288 -400
- package/lib/adapter/createFoundryOntologyBackendAdapter.js.map +1 -1
- package/lib/adapter/foundryActionValidation.d.ts +17 -15
- package/lib/adapter/foundryActionValidation.d.ts.map +1 -1
- package/lib/adapter/foundryActionValidation.js +206 -305
- package/lib/adapter/foundryActionValidation.js.map +1 -1
- package/lib/adapter/foundryCodec.d.ts +10 -9
- package/lib/adapter/foundryCodec.d.ts.map +1 -1
- package/lib/adapter/foundryCodec.js +180 -287
- package/lib/adapter/foundryCodec.js.map +1 -1
- package/lib/adapter/foundryMediaId.d.ts +6 -4
- package/lib/adapter/foundryMediaId.d.ts.map +1 -1
- package/lib/adapter/foundryMediaId.js +31 -32
- package/lib/adapter/foundryMediaId.js.map +1 -1
- package/lib/adapter/index.d.ts +4 -4
- package/lib/adapter/index.js +4 -4
- package/lib/adapter/objectCollectionOptions.d.ts +17 -18
- package/lib/adapter/objectCollectionOptions.d.ts.map +1 -1
- package/lib/adapter/objectCollectionOptions.js +417 -538
- package/lib/adapter/objectCollectionOptions.js.map +1 -1
- package/lib/config/applyAttachmentConstraintOverrides.d.ts +6 -4
- package/lib/config/applyAttachmentConstraintOverrides.d.ts.map +1 -1
- package/lib/config/applyAttachmentConstraintOverrides.js +45 -49
- package/lib/config/applyAttachmentConstraintOverrides.js.map +1 -1
- package/lib/config/index.d.ts +17 -15
- package/lib/config/index.d.ts.map +1 -1
- package/lib/config/index.js +56 -81
- package/lib/config/index.js.map +1 -1
- package/lib/connection.d.ts +28 -26
- package/lib/connection.d.ts.map +1 -1
- package/lib/connection.js +183 -215
- package/lib/connection.js.map +1 -1
- package/lib/index.d.ts +9 -5
- package/lib/index.js +9 -5
- package/lib/installation/createFoundryBackendInstallation.d.ts +21 -20
- package/lib/installation/createFoundryBackendInstallation.d.ts.map +1 -1
- package/lib/installation/createFoundryBackendInstallation.js +52 -62
- package/lib/installation/createFoundryBackendInstallation.js.map +1 -1
- package/lib/installation/index.d.ts +2 -2
- package/lib/installation/index.js +2 -2
- package/lib/meta/actionTypeCollectionOptions.d.ts +8 -6
- package/lib/meta/actionTypeCollectionOptions.d.ts.map +1 -1
- package/lib/meta/actionTypeCollectionOptions.js +49 -49
- package/lib/meta/actionTypeCollectionOptions.js.map +1 -1
- package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts +3 -1
- package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts.map +1 -1
- package/lib/meta/convertActionTypeLoadSubsetOptions.js +69 -75
- package/lib/meta/convertActionTypeLoadSubsetOptions.js.map +1 -1
- package/lib/meta/convertMetaActionType.d.ts +7 -5
- package/lib/meta/convertMetaActionType.d.ts.map +1 -1
- package/lib/meta/convertMetaActionType.js +458 -581
- package/lib/meta/convertMetaActionType.js.map +1 -1
- package/lib/meta/convertMetaLinkType.d.ts +4 -2
- package/lib/meta/convertMetaLinkType.d.ts.map +1 -1
- package/lib/meta/convertMetaLinkType.js +37 -43
- package/lib/meta/convertMetaLinkType.js.map +1 -1
- package/lib/meta/convertMetaObjectType.d.ts +4 -2
- package/lib/meta/convertMetaObjectType.d.ts.map +1 -1
- package/lib/meta/convertMetaObjectType.js +34 -35
- package/lib/meta/convertMetaObjectType.js.map +1 -1
- package/lib/meta/convertMetaQueryFunctionType.d.ts +4 -2
- package/lib/meta/convertMetaQueryFunctionType.d.ts.map +1 -1
- package/lib/meta/convertMetaQueryFunctionType.js +113 -94
- package/lib/meta/convertMetaQueryFunctionType.js.map +1 -1
- package/lib/meta/convertMetaTypeDef.d.ts +4 -2
- package/lib/meta/convertMetaTypeDef.d.ts.map +1 -1
- package/lib/meta/convertMetaTypeDef.js +178 -176
- package/lib/meta/convertMetaTypeDef.js.map +1 -1
- package/lib/meta/convertMetaValueType.d.ts +4 -2
- package/lib/meta/convertMetaValueType.d.ts.map +1 -1
- package/lib/meta/convertMetaValueType.js +11 -7
- package/lib/meta/convertMetaValueType.js.map +1 -1
- package/lib/meta/convertOmsActionParameterMetadata.d.ts +4 -2
- package/lib/meta/convertOmsActionParameterMetadata.d.ts.map +1 -1
- package/lib/meta/convertOmsActionParameterMetadata.js +107 -163
- package/lib/meta/convertOmsActionParameterMetadata.js.map +1 -1
- package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts +7 -5
- package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts.map +1 -1
- package/lib/meta/createFoundryMetaOntologyBackendAdapter.js +39 -41
- package/lib/meta/createFoundryMetaOntologyBackendAdapter.js.map +1 -1
- package/lib/meta/entityCollectionOptions.d.ts +12 -11
- package/lib/meta/entityCollectionOptions.d.ts.map +1 -1
- package/lib/meta/entityCollectionOptions.js +59 -62
- package/lib/meta/entityCollectionOptions.js.map +1 -1
- package/lib/meta/foundryAttachmentMetadata.d.ts +2 -0
- package/lib/meta/foundryAttachmentMetadata.d.ts.map +1 -1
- package/lib/meta/foundryAttachmentMetadata.js +13 -14
- package/lib/meta/foundryAttachmentMetadata.js.map +1 -1
- package/lib/meta/index.d.ts +5 -5
- package/lib/meta/index.js +5 -5
- package/lib/meta/loadActionTypeOmsMetadata.d.ts +5 -4
- package/lib/meta/loadActionTypeOmsMetadata.d.ts.map +1 -1
- package/lib/meta/loadActionTypeOmsMetadata.js +102 -139
- package/lib/meta/loadActionTypeOmsMetadata.js.map +1 -1
- package/lib/meta/queryFunctionTypeCollectionOptions.d.ts +7 -5
- package/lib/meta/queryFunctionTypeCollectionOptions.d.ts.map +1 -1
- package/lib/meta/queryFunctionTypeCollectionOptions.js +47 -49
- package/lib/meta/queryFunctionTypeCollectionOptions.js.map +1 -1
- package/lib/stagedWrites.d.ts +26 -24
- package/lib/stagedWrites.d.ts.map +1 -1
- package/lib/stagedWrites.js +55 -66
- package/lib/stagedWrites.js.map +1 -1
- package/lib/users/createFoundryAdminOntologyRoute.d.ts +47 -17366
- package/lib/users/createFoundryAdminOntologyRoute.d.ts.map +1 -1
- package/lib/users/createFoundryAdminOntologyRoute.js +29 -37
- package/lib/users/createFoundryAdminOntologyRoute.js.map +1 -1
- package/lib/users/createFoundryUsersIntegration.d.ts +6 -4
- package/lib/users/createFoundryUsersIntegration.d.ts.map +1 -1
- package/lib/users/createFoundryUsersIntegration.js +28 -30
- package/lib/users/createFoundryUsersIntegration.js.map +1 -1
- package/lib/users/foundryUser.d.ts +4 -2
- package/lib/users/foundryUser.d.ts.map +1 -1
- package/lib/users/foundryUser.js +69 -74
- package/lib/users/foundryUser.js.map +1 -1
- package/lib/users/index.d.ts +5 -5
- package/lib/users/index.js +5 -5
- package/lib/users/userCollectionOptions.d.ts +13 -12
- package/lib/users/userCollectionOptions.d.ts.map +1 -1
- package/lib/users/userCollectionOptions.js +82 -100
- package/lib/users/userCollectionOptions.js.map +1 -1
- package/lib/utils/AsyncIterable.d.ts +2 -0
- package/lib/utils/AsyncIterable.d.ts.map +1 -1
- package/lib/utils/AsyncIterable.js +26 -34
- package/lib/utils/AsyncIterable.js.map +1 -1
- package/lib/utils/actionTypeName.d.ts +2 -0
- package/lib/utils/actionTypeName.d.ts.map +1 -1
- package/lib/utils/actionTypeName.js +9 -7
- package/lib/utils/actionTypeName.js.map +1 -1
- package/lib/utils/chunk.d.ts +2 -0
- package/lib/utils/chunk.d.ts.map +1 -1
- package/lib/utils/chunk.js +8 -6
- package/lib/utils/chunk.js.map +1 -1
- package/package.json +21 -27
- package/lib/adapter/convertLoadSubsetOptions.test.d.ts +0 -2
- package/lib/adapter/convertLoadSubsetOptions.test.d.ts.map +0 -1
- package/lib/adapter/convertLoadSubsetOptions.test.js +0 -213
- package/lib/adapter/convertLoadSubsetOptions.test.js.map +0 -1
- package/lib/adapter/createFoundryOntologyBackendAdapter.test.d.ts +0 -2
- package/lib/adapter/createFoundryOntologyBackendAdapter.test.d.ts.map +0 -1
- package/lib/adapter/createFoundryOntologyBackendAdapter.test.js +0 -628
- package/lib/adapter/createFoundryOntologyBackendAdapter.test.js.map +0 -1
- package/lib/adapter/foundryActionValidation.test.d.ts +0 -2
- package/lib/adapter/foundryActionValidation.test.d.ts.map +0 -1
- package/lib/adapter/foundryActionValidation.test.js +0 -243
- package/lib/adapter/foundryActionValidation.test.js.map +0 -1
- package/lib/adapter/foundryCodec.test.d.ts +0 -2
- package/lib/adapter/foundryCodec.test.d.ts.map +0 -1
- package/lib/adapter/foundryCodec.test.js +0 -137
- package/lib/adapter/foundryCodec.test.js.map +0 -1
- package/lib/adapter/foundryMediaId.test.d.ts +0 -2
- package/lib/adapter/foundryMediaId.test.d.ts.map +0 -1
- package/lib/adapter/foundryMediaId.test.js +0 -23
- package/lib/adapter/foundryMediaId.test.js.map +0 -1
- package/lib/adapter/index.d.ts.map +0 -1
- package/lib/adapter/index.js.map +0 -1
- package/lib/adapter/objectCollectionOptions.test.d.ts +0 -2
- package/lib/adapter/objectCollectionOptions.test.d.ts.map +0 -1
- package/lib/adapter/objectCollectionOptions.test.js +0 -1289
- package/lib/adapter/objectCollectionOptions.test.js.map +0 -1
- package/lib/config/connectionPull.test.d.ts +0 -2
- package/lib/config/connectionPull.test.d.ts.map +0 -1
- package/lib/config/connectionPull.test.js +0 -151
- package/lib/config/connectionPull.test.js.map +0 -1
- package/lib/config/index.test.d.ts +0 -2
- package/lib/config/index.test.d.ts.map +0 -1
- package/lib/config/index.test.js +0 -182
- package/lib/config/index.test.js.map +0 -1
- package/lib/connection.test.d.ts +0 -2
- package/lib/connection.test.d.ts.map +0 -1
- package/lib/connection.test.js +0 -162
- package/lib/connection.test.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/installation/createFoundryBackendInstallation.test.d.ts +0 -2
- package/lib/installation/createFoundryBackendInstallation.test.d.ts.map +0 -1
- package/lib/installation/createFoundryBackendInstallation.test.js +0 -83
- package/lib/installation/createFoundryBackendInstallation.test.js.map +0 -1
- package/lib/installation/index.d.ts.map +0 -1
- package/lib/installation/index.js.map +0 -1
- package/lib/meta/actionTypeCollectionOptions.test.d.ts +0 -2
- package/lib/meta/actionTypeCollectionOptions.test.d.ts.map +0 -1
- package/lib/meta/actionTypeCollectionOptions.test.js +0 -24
- package/lib/meta/actionTypeCollectionOptions.test.js.map +0 -1
- package/lib/meta/actionTypeIdQuery.test.d.ts +0 -2
- package/lib/meta/actionTypeIdQuery.test.d.ts.map +0 -1
- package/lib/meta/actionTypeIdQuery.test.js +0 -131
- package/lib/meta/actionTypeIdQuery.test.js.map +0 -1
- package/lib/meta/convertActionTypeLoadSubsetOptions.test.d.ts +0 -2
- package/lib/meta/convertActionTypeLoadSubsetOptions.test.d.ts.map +0 -1
- package/lib/meta/convertActionTypeLoadSubsetOptions.test.js +0 -138
- package/lib/meta/convertActionTypeLoadSubsetOptions.test.js.map +0 -1
- package/lib/meta/convertMetaActionType.test.d.ts +0 -2
- package/lib/meta/convertMetaActionType.test.d.ts.map +0 -1
- package/lib/meta/convertMetaActionType.test.js +0 -1565
- package/lib/meta/convertMetaActionType.test.js.map +0 -1
- package/lib/meta/convertMetaLinkType.test.d.ts +0 -2
- package/lib/meta/convertMetaLinkType.test.d.ts.map +0 -1
- package/lib/meta/convertMetaLinkType.test.js +0 -110
- package/lib/meta/convertMetaLinkType.test.js.map +0 -1
- package/lib/meta/convertMetaObjectType.test.d.ts +0 -2
- package/lib/meta/convertMetaObjectType.test.d.ts.map +0 -1
- package/lib/meta/convertMetaObjectType.test.js +0 -250
- package/lib/meta/convertMetaObjectType.test.js.map +0 -1
- package/lib/meta/convertMetaQueryFunctionType.test.d.ts +0 -2
- package/lib/meta/convertMetaQueryFunctionType.test.d.ts.map +0 -1
- package/lib/meta/convertMetaQueryFunctionType.test.js +0 -134
- package/lib/meta/convertMetaQueryFunctionType.test.js.map +0 -1
- package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.d.ts +0 -2
- package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.d.ts.map +0 -1
- package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.js +0 -49
- package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.js.map +0 -1
- package/lib/meta/entityCollectionOptions.test.d.ts +0 -2
- package/lib/meta/entityCollectionOptions.test.d.ts.map +0 -1
- package/lib/meta/entityCollectionOptions.test.js +0 -98
- package/lib/meta/entityCollectionOptions.test.js.map +0 -1
- package/lib/meta/index.d.ts.map +0 -1
- package/lib/meta/index.js.map +0 -1
- package/lib/meta/loadActionTypeOmsMetadata.test.d.ts +0 -2
- package/lib/meta/loadActionTypeOmsMetadata.test.d.ts.map +0 -1
- package/lib/meta/loadActionTypeOmsMetadata.test.js +0 -218
- package/lib/meta/loadActionTypeOmsMetadata.test.js.map +0 -1
- package/lib/stagedWrites.test.d.ts +0 -2
- package/lib/stagedWrites.test.d.ts.map +0 -1
- package/lib/stagedWrites.test.js +0 -71
- package/lib/stagedWrites.test.js.map +0 -1
- package/lib/users/createFoundryUsersIntegration.test.d.ts +0 -2
- package/lib/users/createFoundryUsersIntegration.test.d.ts.map +0 -1
- package/lib/users/createFoundryUsersIntegration.test.js +0 -32
- package/lib/users/createFoundryUsersIntegration.test.js.map +0 -1
- package/lib/users/foundryUser.test.d.ts +0 -2
- package/lib/users/foundryUser.test.d.ts.map +0 -1
- package/lib/users/foundryUser.test.js +0 -45
- package/lib/users/foundryUser.test.js.map +0 -1
- package/lib/users/index.d.ts.map +0 -1
- package/lib/users/index.js.map +0 -1
- package/lib/users/userCollectionOptions.test.d.ts +0 -2
- package/lib/users/userCollectionOptions.test.d.ts.map +0 -1
- package/lib/users/userCollectionOptions.test.js +0 -18
- package/lib/users/userCollectionOptions.test.js.map +0 -1
- package/lib/utils/AsyncIterable.test.d.ts +0 -2
- package/lib/utils/AsyncIterable.test.d.ts.map +0 -1
- package/lib/utils/AsyncIterable.test.js +0 -17
- package/lib/utils/AsyncIterable.test.js.map +0 -1
- package/lib/utils/actionTypeName.test.d.ts +0 -2
- package/lib/utils/actionTypeName.test.d.ts.map +0 -1
- package/lib/utils/actionTypeName.test.js +0 -30
- package/lib/utils/actionTypeName.test.js.map +0 -1
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import { OntologyObjectV2 } from "@osdk/foundry.ontologies";
|
|
2
|
+
import { OntologyIR, TypeDef } from "@party-stack/ontology";
|
|
3
|
+
import { MediaReference } from "@osdk/foundry.core";
|
|
4
|
+
//#region src/adapter/foundryCodec.d.ts
|
|
4
5
|
type FoundryObjectRecord = Record<string, unknown>;
|
|
5
6
|
/** @deprecated Use {@link FoundryCodec} instead. */
|
|
6
7
|
export type FoundryObjectDecoder = FoundryCodec;
|
|
7
8
|
/** @deprecated Use {@link createFoundryCodec} instead. */
|
|
8
9
|
export declare const createFoundryObjectDecoder: typeof createFoundryCodec;
|
|
9
10
|
export interface FoundryCodec {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
decodeObject: (objectType: string, object: OntologyObjectV2 | FoundryObjectRecord) => FoundryObjectRecord;
|
|
12
|
+
decodeEditObject: (objectType: string, object: FoundryObjectRecord) => FoundryObjectRecord;
|
|
13
|
+
decodeValue: (type: TypeDef, value: unknown) => unknown;
|
|
14
|
+
encodeValue: (type: TypeDef, value: unknown) => unknown;
|
|
14
15
|
}
|
|
15
16
|
export declare function createFoundryCodec(ir: OntologyIR, options?: {
|
|
16
|
-
|
|
17
|
+
resolveMediaReference?: (id: string) => MediaReference | undefined;
|
|
17
18
|
}): FoundryCodec;
|
|
18
|
-
|
|
19
|
+
//#endregion
|
|
19
20
|
//# sourceMappingURL=foundryCodec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foundryCodec.d.ts","
|
|
1
|
+
{"version":3,"file":"foundryCodec.d.ts","names":[],"sources":["../../src/adapter/foundryCodec.ts"],"mappings":";;;;KAWK,sBAAsB;;YAEf,uBAAuB;;qBAGtB,mCAA0B;iBAEtB;EACb,eAAe,oBAAoB,QAAQ,mBAAmB,wBAAwB;EACtF,mBAAmB,oBAAoB,QAAQ,wBAAwB;EACvE,cAAc,MAAM,SAAS;EAC7B,cAAc,MAAM,SAAS;;wBAGjB,mBACZ,IAAI,YACJ;EACI,yBAAyB,eAAe;IAE7C"}
|
|
@@ -1,309 +1,202 @@
|
|
|
1
|
-
import { Temporal } from "temporal-polyfill";
|
|
2
1
|
import { getFoundryAttachmentKind } from "../meta/foundryAttachmentMetadata.js";
|
|
3
|
-
import { decodeFoundryMediaId, foundryMediaIdToReference, mediaReferenceToFoundryMediaId
|
|
2
|
+
import { decodeFoundryMediaId, foundryMediaIdToReference, mediaReferenceToFoundryMediaId } from "./foundryMediaId.js";
|
|
3
|
+
import { Temporal } from "temporal-polyfill";
|
|
4
|
+
//#region src/adapter/foundryCodec.ts
|
|
4
5
|
/** @deprecated Use {@link createFoundryCodec} instead. */
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
switch (resolvedType.kind) {
|
|
119
|
-
case "string":
|
|
120
|
-
case "boolean":
|
|
121
|
-
case "integer":
|
|
122
|
-
case "float":
|
|
123
|
-
case "double":
|
|
124
|
-
return value;
|
|
125
|
-
case "date":
|
|
126
|
-
return value instanceof Temporal.PlainDate ? value.toString() : value;
|
|
127
|
-
case "timestamp":
|
|
128
|
-
if (value instanceof Temporal.Instant)
|
|
129
|
-
return value.toString();
|
|
130
|
-
if (value instanceof Temporal.PlainDateTime)
|
|
131
|
-
return value.toString();
|
|
132
|
-
return value;
|
|
133
|
-
case "geopoint":
|
|
134
|
-
return encodeGeoPoint(value);
|
|
135
|
-
case "attachment":
|
|
136
|
-
return encodeAttachment(value, resolvedType.value.meta, options?.resolveMediaReference);
|
|
137
|
-
case "objectReference":
|
|
138
|
-
case "unknown":
|
|
139
|
-
return value;
|
|
140
|
-
case "list":
|
|
141
|
-
return Array.isArray(value)
|
|
142
|
-
? value.map((item) => encodeValue(resolvedType.value.elementType, item))
|
|
143
|
-
: value;
|
|
144
|
-
case "map":
|
|
145
|
-
if (!isPlainObject(value))
|
|
146
|
-
return value;
|
|
147
|
-
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => [
|
|
148
|
-
key,
|
|
149
|
-
encodeValue(resolvedType.value.valueType, entryValue),
|
|
150
|
-
]));
|
|
151
|
-
case "struct":
|
|
152
|
-
if (!isPlainObject(value))
|
|
153
|
-
return value;
|
|
154
|
-
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => {
|
|
155
|
-
const field = resolvedType.value.fields.find((f) => f.name === key);
|
|
156
|
-
return [key, field ? encodeValue(field.type, entryValue) : entryValue];
|
|
157
|
-
}));
|
|
158
|
-
case "optional":
|
|
159
|
-
return encodeValue(resolvedType.value.type, value);
|
|
160
|
-
case "union":
|
|
161
|
-
case "result":
|
|
162
|
-
return value;
|
|
163
|
-
case "ref":
|
|
164
|
-
return encodeValue(resolveType(resolvedType), value);
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
|
-
return {
|
|
168
|
-
decodeObject: (objectTypeName, object) => {
|
|
169
|
-
const objectType = objectTypes.get(objectTypeName);
|
|
170
|
-
if (!objectType) {
|
|
171
|
-
return object;
|
|
172
|
-
}
|
|
173
|
-
return decodeObjectType(objectType, object);
|
|
174
|
-
},
|
|
175
|
-
decodeEditObject: (objectTypeName, object) => {
|
|
176
|
-
const objectType = objectTypes.get(objectTypeName);
|
|
177
|
-
if (!objectType) {
|
|
178
|
-
return object;
|
|
179
|
-
}
|
|
180
|
-
return decodeObjectType(objectType, object, true);
|
|
181
|
-
},
|
|
182
|
-
decodeValue,
|
|
183
|
-
encodeValue,
|
|
184
|
-
};
|
|
6
|
+
const createFoundryObjectDecoder = createFoundryCodec;
|
|
7
|
+
function createFoundryCodec(ir, options) {
|
|
8
|
+
const objectTypes = new Map(ir.objectTypes.map((objectType) => [objectType.name, objectType]));
|
|
9
|
+
const namedTypes = new Map(ir.types.map((type) => [type.name, type.type]));
|
|
10
|
+
const resolveType = (type, seen = /* @__PURE__ */ new Set()) => {
|
|
11
|
+
if (type.kind !== "ref") return type;
|
|
12
|
+
const name = type.value.name;
|
|
13
|
+
if (seen.has(name)) throw new Error(`Circular ontology type reference "${name}".`);
|
|
14
|
+
const resolved = namedTypes.get(name);
|
|
15
|
+
if (!resolved) throw new Error(`Unknown ontology type reference "${name}".`);
|
|
16
|
+
return resolveType(resolved, /* @__PURE__ */ new Set([...seen, name]));
|
|
17
|
+
};
|
|
18
|
+
const decodeValue = (type, value, context = {
|
|
19
|
+
editHistory: false,
|
|
20
|
+
optional: false
|
|
21
|
+
}) => {
|
|
22
|
+
const resolvedType = resolveType(type);
|
|
23
|
+
if (resolvedType.kind === "optional") {
|
|
24
|
+
if (value === void 0 || value === null || context.editHistory && isNullEditHistoryValue(value)) return;
|
|
25
|
+
return decodeValue(resolvedType.value.type, value, {
|
|
26
|
+
...context,
|
|
27
|
+
optional: true
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
if (value === void 0 || value === null) return value;
|
|
31
|
+
if (context.editHistory) value = unwrapEditHistoryValue(resolvedType, value);
|
|
32
|
+
switch (resolvedType.kind) {
|
|
33
|
+
case "string": return value;
|
|
34
|
+
case "boolean": return typeof value === "string" ? value === "true" : value;
|
|
35
|
+
case "integer":
|
|
36
|
+
case "float":
|
|
37
|
+
case "double": return typeof value === "string" ? Number(value) : value;
|
|
38
|
+
case "date": return typeof value === "string" ? Temporal.PlainDate.from(value) : value;
|
|
39
|
+
case "timestamp":
|
|
40
|
+
if (typeof value === "string") return Temporal.Instant.from(value);
|
|
41
|
+
if (typeof value === "number") return Temporal.Instant.fromEpochMilliseconds(value);
|
|
42
|
+
return value;
|
|
43
|
+
case "geopoint": return decodeGeoPoint(value);
|
|
44
|
+
case "attachment": return decodeAttachment(value, resolvedType.value.meta, context.optional);
|
|
45
|
+
case "objectReference": return value;
|
|
46
|
+
case "list": return Array.isArray(value) ? value.map((item) => decodeValue(resolvedType.value.elementType, item, context)) : value;
|
|
47
|
+
case "map":
|
|
48
|
+
if (!isPlainObject(value)) return value;
|
|
49
|
+
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => [decodeValue(resolvedType.value.keyType, key, context), decodeValue(resolvedType.value.valueType, entryValue, context)]));
|
|
50
|
+
case "struct":
|
|
51
|
+
if (!isPlainObject(value)) return value;
|
|
52
|
+
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => {
|
|
53
|
+
const field = resolvedType.value.fields.find((candidate) => candidate.name === key);
|
|
54
|
+
return [key, field ? decodeValue(field.type, entryValue, context) : entryValue];
|
|
55
|
+
}));
|
|
56
|
+
case "union":
|
|
57
|
+
case "result": return value;
|
|
58
|
+
case "ref": return decodeValue(resolveType(resolvedType), value);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const decodeObjectType = (objectType, object, editHistory = false) => {
|
|
62
|
+
return Object.fromEntries(Object.entries(object).map(([key, value]) => {
|
|
63
|
+
const property = objectType.properties.find((candidate) => candidate.name === key);
|
|
64
|
+
return [key, property ? decodeValue(property.type, value, {
|
|
65
|
+
editHistory,
|
|
66
|
+
optional: false
|
|
67
|
+
}) : value];
|
|
68
|
+
}));
|
|
69
|
+
};
|
|
70
|
+
const encodeValue = (type, value) => {
|
|
71
|
+
if (value === void 0) return void 0;
|
|
72
|
+
if (value === null) return null;
|
|
73
|
+
const resolvedType = resolveType(type);
|
|
74
|
+
switch (resolvedType.kind) {
|
|
75
|
+
case "string":
|
|
76
|
+
case "boolean":
|
|
77
|
+
case "integer":
|
|
78
|
+
case "float":
|
|
79
|
+
case "double": return value;
|
|
80
|
+
case "date": return value instanceof Temporal.PlainDate ? value.toString() : value;
|
|
81
|
+
case "timestamp":
|
|
82
|
+
if (value instanceof Temporal.Instant) return value.toString();
|
|
83
|
+
if (value instanceof Temporal.PlainDateTime) return value.toString();
|
|
84
|
+
return value;
|
|
85
|
+
case "geopoint": return encodeGeoPoint(value);
|
|
86
|
+
case "attachment": return encodeAttachment(value, resolvedType.value.meta, options?.resolveMediaReference);
|
|
87
|
+
case "objectReference":
|
|
88
|
+
case "unknown": return value;
|
|
89
|
+
case "list": return Array.isArray(value) ? value.map((item) => encodeValue(resolvedType.value.elementType, item)) : value;
|
|
90
|
+
case "map":
|
|
91
|
+
if (!isPlainObject(value)) return value;
|
|
92
|
+
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => [key, encodeValue(resolvedType.value.valueType, entryValue)]));
|
|
93
|
+
case "struct":
|
|
94
|
+
if (!isPlainObject(value)) return value;
|
|
95
|
+
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => {
|
|
96
|
+
const field = resolvedType.value.fields.find((f) => f.name === key);
|
|
97
|
+
return [key, field ? encodeValue(field.type, entryValue) : entryValue];
|
|
98
|
+
}));
|
|
99
|
+
case "optional": return encodeValue(resolvedType.value.type, value);
|
|
100
|
+
case "union":
|
|
101
|
+
case "result": return value;
|
|
102
|
+
case "ref": return encodeValue(resolveType(resolvedType), value);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
return {
|
|
106
|
+
decodeObject: (objectTypeName, object) => {
|
|
107
|
+
const objectType = objectTypes.get(objectTypeName);
|
|
108
|
+
if (!objectType) return object;
|
|
109
|
+
return decodeObjectType(objectType, object);
|
|
110
|
+
},
|
|
111
|
+
decodeEditObject: (objectTypeName, object) => {
|
|
112
|
+
const objectType = objectTypes.get(objectTypeName);
|
|
113
|
+
if (!objectType) return object;
|
|
114
|
+
return decodeObjectType(objectType, object, true);
|
|
115
|
+
},
|
|
116
|
+
decodeValue,
|
|
117
|
+
encodeValue
|
|
118
|
+
};
|
|
185
119
|
}
|
|
186
120
|
function encodeGeoPoint(value) {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
121
|
+
if (isPlainObject(value) && typeof value.lat === "number" && typeof value.lon === "number") return {
|
|
122
|
+
type: "Point",
|
|
123
|
+
coordinates: [value.lon, value.lat]
|
|
124
|
+
};
|
|
125
|
+
return value;
|
|
191
126
|
}
|
|
192
127
|
function decodeGeoPoint(value) {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
return value;
|
|
128
|
+
if (isPlainObject(value) && value.type === "Point" && Array.isArray(value.coordinates)) {
|
|
129
|
+
const coordinates = value.coordinates;
|
|
130
|
+
const lon = coordinates[0];
|
|
131
|
+
const lat = coordinates[1];
|
|
132
|
+
if (typeof lat === "number" && typeof lon === "number") return {
|
|
133
|
+
lat,
|
|
134
|
+
lon
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
if (isPlainObject(value) && typeof value.lat === "number" && typeof value.lon === "number") return value;
|
|
138
|
+
return value;
|
|
205
139
|
}
|
|
206
140
|
function isNullEditHistoryValue(value) {
|
|
207
|
-
|
|
141
|
+
return value === "NullPropertyValue{}";
|
|
208
142
|
}
|
|
209
143
|
function unwrapEditHistoryValue(type, value) {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
lon: Number(match[2]),
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
if (type.kind === "attachment" &&
|
|
234
|
-
getFoundryAttachmentKind(type.value.meta) !== "media" &&
|
|
235
|
-
isPlainObject(value) &&
|
|
236
|
-
value.type === "attachment" &&
|
|
237
|
-
typeof value.attachment === "string") {
|
|
238
|
-
return { rid: value.attachment };
|
|
239
|
-
}
|
|
240
|
-
if (type.kind === "attachment" &&
|
|
241
|
-
getFoundryAttachmentKind(type.value.meta) === "media" &&
|
|
242
|
-
isPlainObject(value) &&
|
|
243
|
-
value.type === "mediaReference" &&
|
|
244
|
-
isPlainObject(value.mediaReference)) {
|
|
245
|
-
return value.mediaReference;
|
|
246
|
-
}
|
|
247
|
-
return value;
|
|
144
|
+
if (isPlainObject(value) && typeof value.type === "string" && "value" in value && [
|
|
145
|
+
"stringValue",
|
|
146
|
+
"integerValue",
|
|
147
|
+
"doubleValue",
|
|
148
|
+
"longValue",
|
|
149
|
+
"booleanValue",
|
|
150
|
+
"dateValue",
|
|
151
|
+
"timestampValue"
|
|
152
|
+
].includes(value.type)) return value.value;
|
|
153
|
+
if (type.kind === "geopoint" && typeof value === "string") {
|
|
154
|
+
const match = /^GeoPointPropertyValue\{latitude:\s*(-?[\d.]+),\s*longitude:\s*(-?[\d.]+)\}$/.exec(value);
|
|
155
|
+
if (match) return {
|
|
156
|
+
lat: Number(match[1]),
|
|
157
|
+
lon: Number(match[2])
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
if (type.kind === "attachment" && getFoundryAttachmentKind(type.value.meta) !== "media" && isPlainObject(value) && value.type === "attachment" && typeof value.attachment === "string") return { rid: value.attachment };
|
|
161
|
+
if (type.kind === "attachment" && getFoundryAttachmentKind(type.value.meta) === "media" && isPlainObject(value) && value.type === "mediaReference" && isPlainObject(value.mediaReference)) return value.mediaReference;
|
|
162
|
+
return value;
|
|
248
163
|
}
|
|
249
164
|
function decodeAttachment(value, meta, optional) {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
if (decoded !== undefined || optional) {
|
|
255
|
-
return decoded;
|
|
256
|
-
}
|
|
257
|
-
throw new Error(`Invalid required Foundry ${kind} value.`);
|
|
165
|
+
const kind = getFoundryAttachmentKind(meta);
|
|
166
|
+
const decoded = kind === "media" ? decodeMediaReference(value) : decodeFoundryAttachment(value);
|
|
167
|
+
if (decoded !== void 0 || optional) return decoded;
|
|
168
|
+
throw new Error(`Invalid required Foundry ${kind} value.`);
|
|
258
169
|
}
|
|
259
170
|
function decodeFoundryAttachment(value) {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
}
|
|
264
|
-
return { id: attachment.rid };
|
|
171
|
+
const attachment = value;
|
|
172
|
+
if (typeof attachment?.rid !== "string") return;
|
|
173
|
+
return { id: attachment.rid };
|
|
265
174
|
}
|
|
266
175
|
function decodeMediaReference(value) {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
const id = mediaReferenceToFoundryMediaId(mediaReference);
|
|
276
|
-
if (!decodeFoundryMediaId(id)) {
|
|
277
|
-
return undefined;
|
|
278
|
-
}
|
|
279
|
-
return {
|
|
280
|
-
id,
|
|
281
|
-
type: mediaReference.mimeType,
|
|
282
|
-
};
|
|
176
|
+
if (!isPlainObject(value) || typeof value.mimeType !== "string" || !isPlainObject(value.reference) || value.reference.type !== "mediaSetViewItem" || !isPlainObject(value.reference.mediaSetViewItem)) return;
|
|
177
|
+
const mediaReference = value;
|
|
178
|
+
const id = mediaReferenceToFoundryMediaId(mediaReference);
|
|
179
|
+
if (!decodeFoundryMediaId(id)) return;
|
|
180
|
+
return {
|
|
181
|
+
id,
|
|
182
|
+
type: mediaReference.mimeType
|
|
183
|
+
};
|
|
283
184
|
}
|
|
284
185
|
function encodeAttachment(value, meta, resolveMediaReference) {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
const resolved = resolveMediaReference?.(value.id);
|
|
295
|
-
if (resolved)
|
|
296
|
-
return resolved;
|
|
297
|
-
const id = decodeFoundryMediaId(value.id);
|
|
298
|
-
if (!id) {
|
|
299
|
-
throw new Error(`Invalid Foundry media attachment id "${value.id}".`);
|
|
300
|
-
}
|
|
301
|
-
if (typeof value.type !== "string") {
|
|
302
|
-
throw new Error(`Foundry media attachment "${value.id}" is missing its MIME type.`);
|
|
303
|
-
}
|
|
304
|
-
return foundryMediaIdToReference(id, value.type);
|
|
186
|
+
if (!isPlainObject(value)) return value;
|
|
187
|
+
if (typeof value.id !== "string") throw new Error("Invalid Foundry attachment value: expected an attachment with a string id.");
|
|
188
|
+
if (getFoundryAttachmentKind(meta) !== "media") return value.id;
|
|
189
|
+
const resolved = resolveMediaReference?.(value.id);
|
|
190
|
+
if (resolved) return resolved;
|
|
191
|
+
const id = decodeFoundryMediaId(value.id);
|
|
192
|
+
if (!id) throw new Error(`Invalid Foundry media attachment id "${value.id}".`);
|
|
193
|
+
if (typeof value.type !== "string") throw new Error(`Foundry media attachment "${value.id}" is missing its MIME type.`);
|
|
194
|
+
return foundryMediaIdToReference(id, value.type);
|
|
305
195
|
}
|
|
306
196
|
function isPlainObject(value) {
|
|
307
|
-
|
|
197
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
308
198
|
}
|
|
199
|
+
//#endregion
|
|
200
|
+
export { createFoundryCodec, createFoundryObjectDecoder };
|
|
201
|
+
|
|
309
202
|
//# sourceMappingURL=foundryCodec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foundryCodec.js","sourceRoot":"","sources":["../../src/adapter/foundryCodec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"foundryCodec.js","names":[],"sources":["../../src/adapter/foundryCodec.ts"],"sourcesContent":["import { Temporal } from \"temporal-polyfill\";\nimport { getFoundryAttachmentKind } from \"../meta/foundryAttachmentMetadata.js\";\nimport {\n decodeFoundryMediaId,\n foundryMediaIdToReference,\n mediaReferenceToFoundryMediaId,\n} from \"./foundryMediaId.js\";\nimport type { MediaReference } from \"@osdk/foundry.core\";\nimport type { AttachmentProperty, OntologyObjectV2 } from \"@osdk/foundry.ontologies\";\nimport type { ObjectTypeDef, OntologyIR, TypeDef } from \"@party-stack/ontology\";\n\ntype FoundryObjectRecord = Record<string, unknown>;\n/** @deprecated Use {@link FoundryCodec} instead. */\nexport type FoundryObjectDecoder = FoundryCodec;\n\n/** @deprecated Use {@link createFoundryCodec} instead. */\nexport const createFoundryObjectDecoder = createFoundryCodec;\n\nexport interface FoundryCodec {\n decodeObject: (objectType: string, object: OntologyObjectV2 | FoundryObjectRecord) => FoundryObjectRecord;\n decodeEditObject: (objectType: string, object: FoundryObjectRecord) => FoundryObjectRecord;\n decodeValue: (type: TypeDef, value: unknown) => unknown;\n encodeValue: (type: TypeDef, value: unknown) => unknown;\n}\n\nexport function createFoundryCodec(\n ir: OntologyIR,\n options?: {\n resolveMediaReference?: (id: string) => MediaReference | undefined;\n }\n): FoundryCodec {\n const objectTypes = new Map(ir.objectTypes.map((objectType) => [objectType.name, objectType]));\n const namedTypes = new Map(ir.types.map((type) => [type.name, type.type]));\n\n const resolveType = (type: TypeDef, seen = new Set<string>()): TypeDef => {\n if (type.kind !== \"ref\") {\n return type;\n }\n\n const name = type.value.name;\n if (seen.has(name)) {\n throw new Error(`Circular ontology type reference \"${name}\".`);\n }\n\n const resolved = namedTypes.get(name);\n if (!resolved) {\n throw new Error(`Unknown ontology type reference \"${name}\".`);\n }\n\n return resolveType(resolved, new Set([...seen, name]));\n };\n\n const decodeValue = (\n type: TypeDef,\n value: unknown,\n context: { editHistory: boolean; optional: boolean } = {\n editHistory: false,\n optional: false,\n }\n ): unknown => {\n const resolvedType = resolveType(type);\n\n if (resolvedType.kind === \"optional\") {\n if (\n value === undefined ||\n value === null ||\n (context.editHistory && isNullEditHistoryValue(value))\n ) {\n return undefined;\n }\n return decodeValue(resolvedType.value.type, value, {\n ...context,\n optional: true,\n });\n }\n\n if (value === undefined || value === null) {\n return value;\n }\n if (context.editHistory) {\n value = unwrapEditHistoryValue(resolvedType, value);\n }\n\n switch (resolvedType.kind) {\n case \"string\":\n return value;\n case \"boolean\":\n return typeof value === \"string\" ? value === \"true\" : value;\n case \"integer\":\n case \"float\":\n case \"double\":\n return typeof value === \"string\" ? Number(value) : value;\n case \"date\":\n return typeof value === \"string\" ? Temporal.PlainDate.from(value) : value;\n case \"timestamp\":\n if (typeof value === \"string\") return Temporal.Instant.from(value);\n if (typeof value === \"number\") return Temporal.Instant.fromEpochMilliseconds(value);\n return value;\n case \"geopoint\":\n return decodeGeoPoint(value);\n case \"attachment\":\n return decodeAttachment(value, resolvedType.value.meta, context.optional);\n case \"objectReference\":\n return value;\n case \"list\":\n return Array.isArray(value)\n ? value.map((item) => decodeValue(resolvedType.value.elementType, item, context))\n : value;\n case \"map\":\n if (!isPlainObject(value)) {\n return value;\n }\n return Object.fromEntries(\n Object.entries(value).map(([key, entryValue]) => [\n decodeValue(resolvedType.value.keyType, key, context),\n decodeValue(resolvedType.value.valueType, entryValue, context),\n ])\n );\n case \"struct\":\n if (!isPlainObject(value)) {\n return value;\n }\n return Object.fromEntries(\n Object.entries(value).map(([key, entryValue]) => {\n const field = resolvedType.value.fields.find((candidate) => candidate.name === key);\n return [key, field ? decodeValue(field.type, entryValue, context) : entryValue];\n })\n );\n case \"union\":\n case \"result\":\n return value;\n case \"ref\":\n return decodeValue(resolveType(resolvedType), value);\n }\n };\n\n const decodeObjectType = (\n objectType: ObjectTypeDef,\n object: FoundryObjectRecord,\n editHistory = false\n ): FoundryObjectRecord => {\n return Object.fromEntries(\n Object.entries(object).map(([key, value]) => {\n const property = objectType.properties.find((candidate) => candidate.name === key);\n return [\n key,\n property\n ? decodeValue(property.type, value, {\n editHistory,\n optional: false,\n })\n : value,\n ];\n })\n );\n };\n\n const encodeValue = (type: TypeDef, value: unknown): unknown => {\n if (value === undefined) return undefined;\n if (value === null) return null;\n\n const resolvedType = resolveType(type);\n\n switch (resolvedType.kind) {\n case \"string\":\n case \"boolean\":\n case \"integer\":\n case \"float\":\n case \"double\":\n return value;\n case \"date\":\n return value instanceof Temporal.PlainDate ? value.toString() : value;\n case \"timestamp\":\n if (value instanceof Temporal.Instant) return value.toString();\n if (value instanceof Temporal.PlainDateTime) return value.toString();\n return value;\n case \"geopoint\":\n return encodeGeoPoint(value);\n case \"attachment\":\n return encodeAttachment(value, resolvedType.value.meta, options?.resolveMediaReference);\n case \"objectReference\":\n case \"unknown\":\n return value;\n case \"list\":\n return Array.isArray(value)\n ? value.map((item) => encodeValue(resolvedType.value.elementType, item))\n : value;\n case \"map\":\n if (!isPlainObject(value)) return value;\n return Object.fromEntries(\n Object.entries(value).map(([key, entryValue]) => [\n key,\n encodeValue(resolvedType.value.valueType, entryValue),\n ])\n );\n case \"struct\":\n if (!isPlainObject(value)) return value;\n return Object.fromEntries(\n Object.entries(value).map(([key, entryValue]) => {\n const field = resolvedType.value.fields.find((f) => f.name === key);\n return [key, field ? encodeValue(field.type, entryValue) : entryValue];\n })\n );\n case \"optional\":\n return encodeValue(resolvedType.value.type, value);\n case \"union\":\n case \"result\":\n return value;\n case \"ref\":\n return encodeValue(resolveType(resolvedType), value);\n }\n };\n\n return {\n decodeObject: (objectTypeName, object) => {\n const objectType = objectTypes.get(objectTypeName);\n if (!objectType) {\n return object;\n }\n\n return decodeObjectType(objectType, object);\n },\n decodeEditObject: (objectTypeName, object) => {\n const objectType = objectTypes.get(objectTypeName);\n if (!objectType) {\n return object;\n }\n\n return decodeObjectType(objectType, object, true);\n },\n decodeValue,\n encodeValue,\n };\n}\n\nfunction encodeGeoPoint(value: unknown): unknown {\n if (isPlainObject(value) && typeof value.lat === \"number\" && typeof value.lon === \"number\") {\n return { type: \"Point\", coordinates: [value.lon, value.lat] };\n }\n return value;\n}\n\nfunction decodeGeoPoint(value: unknown): unknown {\n if (isPlainObject(value) && value.type === \"Point\" && Array.isArray(value.coordinates)) {\n const coordinates = value.coordinates as unknown[];\n const lon = coordinates[0];\n const lat = coordinates[1];\n if (typeof lat === \"number\" && typeof lon === \"number\") {\n return { lat, lon };\n }\n }\n\n if (isPlainObject(value) && typeof value.lat === \"number\" && typeof value.lon === \"number\") {\n return value;\n }\n\n return value;\n}\n\nfunction isNullEditHistoryValue(value: unknown): boolean {\n return value === \"NullPropertyValue{}\";\n}\n\nfunction unwrapEditHistoryValue(type: TypeDef, value: unknown): unknown {\n if (\n isPlainObject(value) &&\n typeof value.type === \"string\" &&\n \"value\" in value &&\n [\n \"stringValue\",\n \"integerValue\",\n \"doubleValue\",\n \"longValue\",\n \"booleanValue\",\n \"dateValue\",\n \"timestampValue\",\n ].includes(value.type)\n ) {\n return value.value;\n }\n if (type.kind === \"geopoint\" && typeof value === \"string\") {\n const match = /^GeoPointPropertyValue\\{latitude:\\s*(-?[\\d.]+),\\s*longitude:\\s*(-?[\\d.]+)\\}$/.exec(\n value\n );\n if (match) {\n return {\n lat: Number(match[1]),\n lon: Number(match[2]),\n };\n }\n }\n if (\n type.kind === \"attachment\" &&\n getFoundryAttachmentKind(type.value.meta) !== \"media\" &&\n isPlainObject(value) &&\n value.type === \"attachment\" &&\n typeof value.attachment === \"string\"\n ) {\n return { rid: value.attachment };\n }\n if (\n type.kind === \"attachment\" &&\n getFoundryAttachmentKind(type.value.meta) === \"media\" &&\n isPlainObject(value) &&\n value.type === \"mediaReference\" &&\n isPlainObject(value.mediaReference)\n ) {\n return value.mediaReference;\n }\n return value;\n}\n\nfunction decodeAttachment(\n value: unknown,\n meta: Record<string, unknown> | undefined,\n optional: boolean\n): unknown {\n const kind = getFoundryAttachmentKind(meta);\n const decoded = kind === \"media\" ? decodeMediaReference(value) : decodeFoundryAttachment(value);\n if (decoded !== undefined || optional) {\n return decoded;\n }\n throw new Error(`Invalid required Foundry ${kind} value.`);\n}\n\nfunction decodeFoundryAttachment(value: unknown): unknown {\n const attachment = value as Partial<AttachmentProperty>;\n if (typeof attachment?.rid !== \"string\") {\n return undefined;\n }\n return { id: attachment.rid };\n}\n\nfunction decodeMediaReference(value: unknown): unknown {\n if (\n !isPlainObject(value) ||\n typeof value.mimeType !== \"string\" ||\n !isPlainObject(value.reference) ||\n value.reference.type !== \"mediaSetViewItem\" ||\n !isPlainObject(value.reference.mediaSetViewItem)\n ) {\n return undefined;\n }\n const mediaReference = value as unknown as MediaReference;\n const id = mediaReferenceToFoundryMediaId(mediaReference);\n if (!decodeFoundryMediaId(id)) {\n return undefined;\n }\n return {\n id,\n type: mediaReference.mimeType,\n };\n}\n\nfunction encodeAttachment(\n value: unknown,\n meta?: Record<string, unknown>,\n resolveMediaReference?: (id: string) => MediaReference | undefined\n): unknown {\n if (!isPlainObject(value)) {\n return value;\n }\n if (typeof value.id !== \"string\") {\n throw new Error(\"Invalid Foundry attachment value: expected an attachment with a string id.\");\n }\n if (getFoundryAttachmentKind(meta) !== \"media\") {\n return value.id;\n }\n const resolved = resolveMediaReference?.(value.id);\n if (resolved) return resolved;\n const id = decodeFoundryMediaId(value.id);\n if (!id) {\n throw new Error(`Invalid Foundry media attachment id \"${value.id}\".`);\n }\n if (typeof value.type !== \"string\") {\n throw new Error(`Foundry media attachment \"${value.id}\" is missing its MIME type.`);\n }\n return foundryMediaIdToReference(id, value.type);\n}\n\nfunction isPlainObject(value: unknown): value is FoundryObjectRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { MediaItemRid, MediaReference, MediaSetRid, MediaSetViewRid } from "@osdk/foundry.core";
|
|
2
|
+
//#region src/adapter/foundryMediaId.d.ts
|
|
2
3
|
export interface FoundryMediaId {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
mediaSetRid: MediaSetRid;
|
|
5
|
+
mediaSetViewRid: MediaSetViewRid;
|
|
6
|
+
mediaItemRid: MediaItemRid;
|
|
6
7
|
}
|
|
7
8
|
export declare function encodeFoundryMediaId(value: FoundryMediaId): string;
|
|
8
9
|
export declare function decodeFoundryMediaId(value: string): FoundryMediaId | undefined;
|
|
9
10
|
export declare function mediaReferenceToFoundryMediaId(value: MediaReference): string;
|
|
10
11
|
export declare function foundryMediaIdToReference(id: FoundryMediaId, mimeType: string): MediaReference;
|
|
12
|
+
//#endregion
|
|
11
13
|
//# sourceMappingURL=foundryMediaId.d.ts.map
|