@party-stack/salesforce-ontology 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -31
- package/lib/actionMetadata.d.ts +11 -9
- package/lib/actionMetadata.d.ts.map +1 -1
- package/lib/actionMetadata.js +19 -30
- package/lib/actionMetadata.js.map +1 -1
- package/lib/adapter/convertLoadSubsetOptions.d.ts +10 -8
- package/lib/adapter/convertLoadSubsetOptions.d.ts.map +1 -1
- package/lib/adapter/convertLoadSubsetOptions.js +110 -173
- package/lib/adapter/convertLoadSubsetOptions.js.map +1 -1
- package/lib/adapter/createSalesforceOntologyBackendAdapter.d.ts +14 -12
- package/lib/adapter/createSalesforceOntologyBackendAdapter.d.ts.map +1 -1
- package/lib/adapter/createSalesforceOntologyBackendAdapter.js +124 -191
- package/lib/adapter/createSalesforceOntologyBackendAdapter.js.map +1 -1
- package/lib/adapter/index.d.ts +5 -5
- package/lib/adapter/index.js +5 -5
- package/lib/adapter/objectCollectionOptions.d.ts +22 -22
- package/lib/adapter/objectCollectionOptions.d.ts.map +1 -1
- package/lib/adapter/objectCollectionOptions.js +198 -280
- package/lib/adapter/objectCollectionOptions.js.map +1 -1
- package/lib/adapter/salesforceCodec.d.ts +6 -4
- package/lib/adapter/salesforceCodec.d.ts.map +1 -1
- package/lib/adapter/salesforceCodec.js +126 -190
- package/lib/adapter/salesforceCodec.js.map +1 -1
- package/lib/config/index.d.ts +20 -18
- package/lib/config/index.d.ts.map +1 -1
- package/lib/config/index.js +148 -192
- package/lib/config/index.js.map +1 -1
- package/lib/connection.d.ts +35 -33
- package/lib/connection.d.ts.map +1 -1
- package/lib/connection.js +243 -299
- package/lib/connection.js.map +1 -1
- package/lib/crud.d.ts +5 -3
- package/lib/crud.d.ts.map +1 -1
- package/lib/crud.js +0 -1
- package/lib/index.d.ts +10 -5
- package/lib/index.js +10 -5
- package/lib/installation/createSalesforceBackendInstallation.d.ts +28 -26
- package/lib/installation/createSalesforceBackendInstallation.d.ts.map +1 -1
- package/lib/installation/createSalesforceBackendInstallation.js +75 -85
- package/lib/installation/createSalesforceBackendInstallation.js.map +1 -1
- package/lib/installation/index.d.ts +2 -2
- package/lib/installation/index.js +1 -2
- package/lib/meta/actionTypeCollectionOptions.d.ts +10 -8
- package/lib/meta/actionTypeCollectionOptions.d.ts.map +1 -1
- package/lib/meta/actionTypeCollectionOptions.js +105 -212
- package/lib/meta/actionTypeCollectionOptions.js.map +1 -1
- package/lib/meta/convertMetaActionType.d.ts +4 -2
- package/lib/meta/convertMetaActionType.d.ts.map +1 -1
- package/lib/meta/convertMetaActionType.js +32 -32
- package/lib/meta/convertMetaActionType.js.map +1 -1
- package/lib/meta/convertMetaLinkType.d.ts +4 -2
- package/lib/meta/convertMetaLinkType.d.ts.map +1 -1
- package/lib/meta/convertMetaLinkType.js +39 -45
- package/lib/meta/convertMetaLinkType.js.map +1 -1
- package/lib/meta/convertMetaLoadSubsetOptions.d.ts +12 -10
- package/lib/meta/convertMetaLoadSubsetOptions.d.ts.map +1 -1
- package/lib/meta/convertMetaLoadSubsetOptions.js +42 -58
- package/lib/meta/convertMetaLoadSubsetOptions.js.map +1 -1
- package/lib/meta/convertMetaObjectType.d.ts +4 -2
- package/lib/meta/convertMetaObjectType.d.ts.map +1 -1
- package/lib/meta/convertMetaObjectType.js +36 -40
- package/lib/meta/convertMetaObjectType.js.map +1 -1
- package/lib/meta/convertMetaQueryFunctionType.d.ts +4 -2
- package/lib/meta/convertMetaQueryFunctionType.d.ts.map +1 -1
- package/lib/meta/convertMetaQueryFunctionType.js +27 -25
- package/lib/meta/convertMetaQueryFunctionType.js.map +1 -1
- package/lib/meta/convertMetaTypeDef.d.ts +10 -8
- package/lib/meta/convertMetaTypeDef.d.ts.map +1 -1
- package/lib/meta/convertMetaTypeDef.js +196 -188
- package/lib/meta/convertMetaTypeDef.js.map +1 -1
- package/lib/meta/createSalesforceMetaOntologyBackendAdapter.d.ts +19 -17
- package/lib/meta/createSalesforceMetaOntologyBackendAdapter.d.ts.map +1 -1
- package/lib/meta/createSalesforceMetaOntologyBackendAdapter.js +38 -40
- package/lib/meta/createSalesforceMetaOntologyBackendAdapter.js.map +1 -1
- package/lib/meta/entityCollectionOptions.d.ts +10 -8
- package/lib/meta/entityCollectionOptions.d.ts.map +1 -1
- package/lib/meta/entityCollectionOptions.js +73 -82
- package/lib/meta/entityCollectionOptions.js.map +1 -1
- package/lib/meta/index.d.ts +7 -7
- package/lib/meta/index.js +7 -7
- package/lib/meta/queryFunctionTypeCollectionOptions.d.ts +7 -5
- package/lib/meta/queryFunctionTypeCollectionOptions.d.ts.map +1 -1
- package/lib/meta/queryFunctionTypeCollectionOptions.js +53 -91
- package/lib/meta/queryFunctionTypeCollectionOptions.js.map +1 -1
- package/lib/meta/synthesizeCrudActionTypes.d.ts +4 -2
- package/lib/meta/synthesizeCrudActionTypes.d.ts.map +1 -1
- package/lib/meta/synthesizeCrudActionTypes.js +77 -116
- package/lib/meta/synthesizeCrudActionTypes.js.map +1 -1
- package/lib/standardActions.d.ts +2 -0
- package/lib/standardActions.d.ts.map +1 -1
- package/lib/standardActions.js +22 -20
- package/lib/standardActions.js.map +1 -1
- package/lib/utils/AsyncIterable.d.ts +2 -0
- package/lib/utils/AsyncIterable.d.ts.map +1 -1
- package/lib/utils/AsyncIterable.js +20 -23
- package/lib/utils/AsyncIterable.js.map +1 -1
- package/lib/utils/ids.d.ts +2 -0
- package/lib/utils/ids.d.ts.map +1 -1
- package/lib/utils/ids.js +23 -19
- package/lib/utils/ids.js.map +1 -1
- package/package.json +18 -24
- package/lib/adapter/convertLoadSubsetOptions.test.d.ts +0 -2
- package/lib/adapter/convertLoadSubsetOptions.test.d.ts.map +0 -1
- package/lib/adapter/convertLoadSubsetOptions.test.js +0 -80
- package/lib/adapter/convertLoadSubsetOptions.test.js.map +0 -1
- package/lib/adapter/createSalesforceOntologyBackendAdapter.test.d.ts +0 -2
- package/lib/adapter/createSalesforceOntologyBackendAdapter.test.d.ts.map +0 -1
- package/lib/adapter/createSalesforceOntologyBackendAdapter.test.js +0 -394
- package/lib/adapter/createSalesforceOntologyBackendAdapter.test.js.map +0 -1
- package/lib/adapter/index.d.ts.map +0 -1
- package/lib/adapter/index.js.map +0 -1
- package/lib/adapter/objectCollectionOptions.test.d.ts +0 -2
- package/lib/adapter/objectCollectionOptions.test.d.ts.map +0 -1
- package/lib/adapter/objectCollectionOptions.test.js +0 -160
- package/lib/adapter/objectCollectionOptions.test.js.map +0 -1
- package/lib/adapter/salesforceCodec.test.d.ts +0 -2
- package/lib/adapter/salesforceCodec.test.d.ts.map +0 -1
- package/lib/adapter/salesforceCodec.test.js +0 -57
- package/lib/adapter/salesforceCodec.test.js.map +0 -1
- package/lib/config/index.test.d.ts +0 -2
- package/lib/config/index.test.d.ts.map +0 -1
- package/lib/config/index.test.js +0 -177
- package/lib/config/index.test.js.map +0 -1
- package/lib/connection.test.d.ts +0 -2
- package/lib/connection.test.d.ts.map +0 -1
- package/lib/connection.test.js +0 -189
- package/lib/connection.test.js.map +0 -1
- package/lib/crud.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/installation/createSalesforceBackendInstallation.test.d.ts +0 -2
- package/lib/installation/createSalesforceBackendInstallation.test.d.ts.map +0 -1
- package/lib/installation/createSalesforceBackendInstallation.test.js +0 -55
- package/lib/installation/createSalesforceBackendInstallation.test.js.map +0 -1
- package/lib/installation/index.d.ts.map +0 -1
- package/lib/installation/index.js.map +0 -1
- package/lib/meta/actionTypeCollectionOptions.test.d.ts +0 -2
- package/lib/meta/actionTypeCollectionOptions.test.d.ts.map +0 -1
- package/lib/meta/actionTypeCollectionOptions.test.js +0 -192
- package/lib/meta/actionTypeCollectionOptions.test.js.map +0 -1
- package/lib/meta/convertMetaActionType.test.d.ts +0 -2
- package/lib/meta/convertMetaActionType.test.d.ts.map +0 -1
- package/lib/meta/convertMetaActionType.test.js +0 -185
- package/lib/meta/convertMetaActionType.test.js.map +0 -1
- package/lib/meta/convertMetaObjectType.test.d.ts +0 -2
- package/lib/meta/convertMetaObjectType.test.d.ts.map +0 -1
- package/lib/meta/convertMetaObjectType.test.js +0 -187
- package/lib/meta/convertMetaObjectType.test.js.map +0 -1
- package/lib/meta/convertMetaQueryFunctionType.test.d.ts +0 -2
- package/lib/meta/convertMetaQueryFunctionType.test.d.ts.map +0 -1
- package/lib/meta/convertMetaQueryFunctionType.test.js +0 -58
- package/lib/meta/convertMetaQueryFunctionType.test.js.map +0 -1
- package/lib/meta/entityCollectionOptions.test.d.ts +0 -2
- package/lib/meta/entityCollectionOptions.test.d.ts.map +0 -1
- package/lib/meta/entityCollectionOptions.test.js +0 -120
- package/lib/meta/entityCollectionOptions.test.js.map +0 -1
- package/lib/meta/index.d.ts.map +0 -1
- package/lib/meta/index.js.map +0 -1
- package/lib/meta/queryFunctionTypeCollectionOptions.test.d.ts +0 -2
- package/lib/meta/queryFunctionTypeCollectionOptions.test.d.ts.map +0 -1
- package/lib/meta/queryFunctionTypeCollectionOptions.test.js +0 -71
- package/lib/meta/queryFunctionTypeCollectionOptions.test.js.map +0 -1
- package/lib/meta/synthesizeCrudActionTypes.test.d.ts +0 -2
- package/lib/meta/synthesizeCrudActionTypes.test.d.ts.map +0 -1
- package/lib/meta/synthesizeCrudActionTypes.test.js +0 -153
- package/lib/meta/synthesizeCrudActionTypes.test.js.map +0 -1
|
@@ -1,201 +1,137 @@
|
|
|
1
1
|
import { Temporal } from "temporal-polyfill";
|
|
2
|
+
//#region src/adapter/salesforceCodec.ts
|
|
2
3
|
function isPlainObject(value) {
|
|
3
|
-
|
|
4
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
4
5
|
}
|
|
5
6
|
function stripAttributes(object) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return rest;
|
|
7
|
+
const { attributes, ...rest } = object;
|
|
8
|
+
return rest;
|
|
9
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
|
-
return value;
|
|
116
|
-
case "timestamp":
|
|
117
|
-
if (value instanceof Temporal.Instant)
|
|
118
|
-
return value.toString();
|
|
119
|
-
if (value instanceof Date)
|
|
120
|
-
return value.toISOString();
|
|
121
|
-
return value;
|
|
122
|
-
case "geopoint":
|
|
123
|
-
return encodeGeoPoint(value);
|
|
124
|
-
case "list":
|
|
125
|
-
if (!Array.isArray(value))
|
|
126
|
-
return value;
|
|
127
|
-
// Multipicklist wire format uses semicolon delimiters for string lists.
|
|
128
|
-
if (resolvedType.value.elementType.kind === "string") {
|
|
129
|
-
return value
|
|
130
|
-
.map((item) => encodeValue(resolvedType.value.elementType, item))
|
|
131
|
-
.filter((item) => {
|
|
132
|
-
return (typeof item === "string" ||
|
|
133
|
-
typeof item === "number" ||
|
|
134
|
-
typeof item === "boolean");
|
|
135
|
-
})
|
|
136
|
-
.join(";");
|
|
137
|
-
}
|
|
138
|
-
return value.map((item) => encodeValue(resolvedType.value.elementType, item));
|
|
139
|
-
case "map":
|
|
140
|
-
if (!isPlainObject(value))
|
|
141
|
-
return value;
|
|
142
|
-
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => [
|
|
143
|
-
encodeValue(resolvedType.value.keyType, key),
|
|
144
|
-
encodeValue(resolvedType.value.valueType, entryValue),
|
|
145
|
-
]));
|
|
146
|
-
case "struct":
|
|
147
|
-
if (!isPlainObject(value))
|
|
148
|
-
return value;
|
|
149
|
-
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => {
|
|
150
|
-
const field = resolvedType.value.fields.find((candidate) => candidate.name === key);
|
|
151
|
-
return [key, field ? encodeValue(field.type, entryValue) : entryValue];
|
|
152
|
-
}));
|
|
153
|
-
case "optional":
|
|
154
|
-
return encodeValue(resolvedType.value.type, value);
|
|
155
|
-
case "attachment":
|
|
156
|
-
case "union":
|
|
157
|
-
case "result":
|
|
158
|
-
return value;
|
|
159
|
-
case "ref":
|
|
160
|
-
return encodeValue(resolveType(resolvedType), value);
|
|
161
|
-
}
|
|
162
|
-
};
|
|
163
|
-
const decodeObjectType = (objectType, object) => {
|
|
164
|
-
const cleaned = stripAttributes(object);
|
|
165
|
-
return Object.fromEntries(objectType.properties.map((property) => [
|
|
166
|
-
property.name,
|
|
167
|
-
decodeValue(property.type, cleaned[property.name]),
|
|
168
|
-
]));
|
|
169
|
-
};
|
|
170
|
-
return {
|
|
171
|
-
decodeObject: (objectTypeName, object) => {
|
|
172
|
-
const objectType = objectTypes.get(objectTypeName);
|
|
173
|
-
if (!objectType) {
|
|
174
|
-
throw new Error(`Unknown object type "${objectTypeName}".`);
|
|
175
|
-
}
|
|
176
|
-
return decodeObjectType(objectType, object);
|
|
177
|
-
},
|
|
178
|
-
decodeValue,
|
|
179
|
-
encodeValue,
|
|
180
|
-
};
|
|
10
|
+
function createSalesforceCodec(ir) {
|
|
11
|
+
const objectTypes = new Map(ir.objectTypes.map((objectType) => [objectType.name, objectType]));
|
|
12
|
+
const namedTypes = new Map(ir.types.map((type) => [type.name, type.type]));
|
|
13
|
+
const resolveType = (type, seen = /* @__PURE__ */ new Set()) => {
|
|
14
|
+
if (type.kind !== "ref") return type;
|
|
15
|
+
const name = type.value.name;
|
|
16
|
+
if (seen.has(name)) throw new Error(`Circular ontology type reference "${name}".`);
|
|
17
|
+
const resolved = namedTypes.get(name);
|
|
18
|
+
if (!resolved) throw new Error(`Unknown ontology type reference "${name}".`);
|
|
19
|
+
return resolveType(resolved, /* @__PURE__ */ new Set([...seen, name]));
|
|
20
|
+
};
|
|
21
|
+
const decodeValue = (type, value) => {
|
|
22
|
+
const resolvedType = resolveType(type);
|
|
23
|
+
if (value === void 0 || value === null) {
|
|
24
|
+
if (resolvedType.kind === "optional") return;
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
switch (resolvedType.kind) {
|
|
28
|
+
case "string": return value;
|
|
29
|
+
case "boolean": return typeof value === "string" ? value === "true" : value;
|
|
30
|
+
case "integer":
|
|
31
|
+
case "float":
|
|
32
|
+
case "double": return typeof value === "string" ? Number(value) : value;
|
|
33
|
+
case "date": return typeof value === "string" ? Temporal.PlainDate.from(value) : value;
|
|
34
|
+
case "timestamp":
|
|
35
|
+
if (typeof value === "string") return Temporal.Instant.from(value.endsWith("Z") || value.includes("+") ? value : `${value}Z`);
|
|
36
|
+
if (typeof value === "number") return Temporal.Instant.fromEpochMilliseconds(value);
|
|
37
|
+
return value;
|
|
38
|
+
case "geopoint": return decodeGeoPoint(value);
|
|
39
|
+
case "objectReference": return value;
|
|
40
|
+
case "list":
|
|
41
|
+
if (typeof value === "string") return value.split(";").filter((entry) => entry.length > 0).map((item) => decodeValue(resolvedType.value.elementType, item));
|
|
42
|
+
return Array.isArray(value) ? value.map((item) => decodeValue(resolvedType.value.elementType, item)) : value;
|
|
43
|
+
case "map":
|
|
44
|
+
if (!isPlainObject(value)) return value;
|
|
45
|
+
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => [decodeValue(resolvedType.value.keyType, key), decodeValue(resolvedType.value.valueType, entryValue)]));
|
|
46
|
+
case "struct":
|
|
47
|
+
if (!isPlainObject(value)) return value;
|
|
48
|
+
return Object.fromEntries(Object.entries(stripAttributes(value)).map(([key, entryValue]) => {
|
|
49
|
+
const field = resolvedType.value.fields.find((candidate) => candidate.name === key);
|
|
50
|
+
return [key, field ? decodeValue(field.type, entryValue) : entryValue];
|
|
51
|
+
}));
|
|
52
|
+
case "optional": return decodeValue(resolvedType.value.type, value);
|
|
53
|
+
case "attachment":
|
|
54
|
+
case "union":
|
|
55
|
+
case "result":
|
|
56
|
+
case "unknown": return value;
|
|
57
|
+
case "ref": return decodeValue(resolveType(resolvedType), value);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const encodeValue = (type, value) => {
|
|
61
|
+
const resolvedType = resolveType(type);
|
|
62
|
+
if (value === void 0 || value === null) return null;
|
|
63
|
+
switch (resolvedType.kind) {
|
|
64
|
+
case "string":
|
|
65
|
+
case "boolean":
|
|
66
|
+
case "integer":
|
|
67
|
+
case "float":
|
|
68
|
+
case "double":
|
|
69
|
+
case "objectReference":
|
|
70
|
+
case "unknown": return value;
|
|
71
|
+
case "date":
|
|
72
|
+
if (value instanceof Temporal.PlainDate) return value.toString();
|
|
73
|
+
if (value instanceof Date) return value.toISOString().slice(0, 10);
|
|
74
|
+
return value;
|
|
75
|
+
case "timestamp":
|
|
76
|
+
if (value instanceof Temporal.Instant) return value.toString();
|
|
77
|
+
if (value instanceof Date) return value.toISOString();
|
|
78
|
+
return value;
|
|
79
|
+
case "geopoint": return encodeGeoPoint(value);
|
|
80
|
+
case "list":
|
|
81
|
+
if (!Array.isArray(value)) return value;
|
|
82
|
+
if (resolvedType.value.elementType.kind === "string") return value.map((item) => encodeValue(resolvedType.value.elementType, item)).filter((item) => {
|
|
83
|
+
return typeof item === "string" || typeof item === "number" || typeof item === "boolean";
|
|
84
|
+
}).join(";");
|
|
85
|
+
return value.map((item) => encodeValue(resolvedType.value.elementType, item));
|
|
86
|
+
case "map":
|
|
87
|
+
if (!isPlainObject(value)) return value;
|
|
88
|
+
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => [encodeValue(resolvedType.value.keyType, key), encodeValue(resolvedType.value.valueType, entryValue)]));
|
|
89
|
+
case "struct":
|
|
90
|
+
if (!isPlainObject(value)) return value;
|
|
91
|
+
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => {
|
|
92
|
+
const field = resolvedType.value.fields.find((candidate) => candidate.name === key);
|
|
93
|
+
return [key, field ? encodeValue(field.type, entryValue) : entryValue];
|
|
94
|
+
}));
|
|
95
|
+
case "optional": return encodeValue(resolvedType.value.type, value);
|
|
96
|
+
case "attachment":
|
|
97
|
+
case "union":
|
|
98
|
+
case "result": return value;
|
|
99
|
+
case "ref": return encodeValue(resolveType(resolvedType), value);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
const decodeObjectType = (objectType, object) => {
|
|
103
|
+
const cleaned = stripAttributes(object);
|
|
104
|
+
return Object.fromEntries(objectType.properties.map((property) => [property.name, decodeValue(property.type, cleaned[property.name])]));
|
|
105
|
+
};
|
|
106
|
+
return {
|
|
107
|
+
decodeObject: (objectTypeName, object) => {
|
|
108
|
+
const objectType = objectTypes.get(objectTypeName);
|
|
109
|
+
if (!objectType) throw new Error(`Unknown object type "${objectTypeName}".`);
|
|
110
|
+
return decodeObjectType(objectType, object);
|
|
111
|
+
},
|
|
112
|
+
decodeValue,
|
|
113
|
+
encodeValue
|
|
114
|
+
};
|
|
181
115
|
}
|
|
182
116
|
function decodeGeoPoint(value) {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
117
|
+
if (isPlainObject(value)) {
|
|
118
|
+
const lat = value.latitude ?? value.lat;
|
|
119
|
+
const lon = value.longitude ?? value.lon;
|
|
120
|
+
if (typeof lat === "number" && typeof lon === "number") return {
|
|
121
|
+
lat,
|
|
122
|
+
lon
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
return value;
|
|
191
126
|
}
|
|
192
127
|
function encodeGeoPoint(value) {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
199
|
-
return value;
|
|
128
|
+
if (isPlainObject(value) && typeof value.lat === "number" && typeof value.lon === "number") return {
|
|
129
|
+
latitude: value.lat,
|
|
130
|
+
longitude: value.lon
|
|
131
|
+
};
|
|
132
|
+
return value;
|
|
200
133
|
}
|
|
134
|
+
//#endregion
|
|
135
|
+
export { createSalesforceCodec };
|
|
136
|
+
|
|
201
137
|
//# sourceMappingURL=salesforceCodec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"salesforceCodec.js","sourceRoot":"","sources":["../../src/adapter/salesforceCodec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"salesforceCodec.js","names":[],"sources":["../../src/adapter/salesforceCodec.ts"],"sourcesContent":["import { Temporal } from \"temporal-polyfill\";\nimport type { ObjectTypeDef, OntologyIR, TypeDef } from \"@party-stack/ontology\";\n\ntype SalesforceObjectRecord = Record<string, unknown>;\n\nexport interface SalesforceCodec {\n decodeObject: (objectType: string, object: SalesforceObjectRecord) => SalesforceObjectRecord;\n decodeValue: (type: TypeDef, value: unknown) => unknown;\n encodeValue: (type: TypeDef, value: unknown) => unknown;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction stripAttributes(object: SalesforceObjectRecord): SalesforceObjectRecord {\n const { attributes, ...rest } = object;\n void attributes;\n return rest;\n}\n\nexport function createSalesforceCodec(ir: OntologyIR): SalesforceCodec {\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 = (type: TypeDef, value: unknown): unknown => {\n const resolvedType = resolveType(type);\n\n if (value === undefined || value === null) {\n if (resolvedType.kind === \"optional\") {\n return undefined;\n }\n return 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\") {\n // Salesforce datetime wire format is typically ISO-8601.\n return Temporal.Instant.from(\n value.endsWith(\"Z\") || value.includes(\"+\") ? value : `${value}Z`\n );\n }\n if (typeof value === \"number\") return Temporal.Instant.fromEpochMilliseconds(value);\n return value;\n case \"geopoint\":\n return decodeGeoPoint(value);\n case \"objectReference\":\n return value;\n case \"list\":\n if (typeof value === \"string\") {\n // Multipicklist values are semicolon-delimited.\n return value\n .split(\";\")\n .filter((entry) => entry.length > 0)\n .map((item) => decodeValue(resolvedType.value.elementType, item));\n }\n return Array.isArray(value)\n ? value.map((item) => decodeValue(resolvedType.value.elementType, item))\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),\n decodeValue(resolvedType.value.valueType, entryValue),\n ])\n );\n case \"struct\":\n if (!isPlainObject(value)) {\n return value;\n }\n return Object.fromEntries(\n Object.entries(stripAttributes(value)).map(([key, entryValue]) => {\n const field = resolvedType.value.fields.find((candidate) => candidate.name === key);\n return [key, field ? decodeValue(field.type, entryValue) : entryValue];\n })\n );\n case \"optional\":\n return decodeValue(resolvedType.value.type, value);\n case \"attachment\":\n case \"union\":\n case \"result\":\n case \"unknown\":\n return value;\n case \"ref\":\n return decodeValue(resolveType(resolvedType), value);\n }\n };\n\n const encodeValue = (type: TypeDef, value: unknown): unknown => {\n const resolvedType = resolveType(type);\n\n if (value === undefined || value === null) {\n return null;\n }\n\n switch (resolvedType.kind) {\n case \"string\":\n case \"boolean\":\n case \"integer\":\n case \"float\":\n case \"double\":\n case \"objectReference\":\n case \"unknown\":\n return value;\n case \"date\":\n if (value instanceof Temporal.PlainDate) return value.toString();\n if (value instanceof Date) return value.toISOString().slice(0, 10);\n return value;\n case \"timestamp\":\n if (value instanceof Temporal.Instant) return value.toString();\n if (value instanceof Date) return value.toISOString();\n return value;\n case \"geopoint\":\n return encodeGeoPoint(value);\n case \"list\":\n if (!Array.isArray(value)) return value;\n // Multipicklist wire format uses semicolon delimiters for string lists.\n if (resolvedType.value.elementType.kind === \"string\") {\n return value\n .map((item) => encodeValue(resolvedType.value.elementType, item))\n .filter((item): item is string | number | boolean => {\n return (\n typeof item === \"string\" ||\n typeof item === \"number\" ||\n typeof item === \"boolean\"\n );\n })\n .join(\";\");\n }\n return value.map((item) => encodeValue(resolvedType.value.elementType, item));\n case \"map\":\n if (!isPlainObject(value)) return value;\n return Object.fromEntries(\n Object.entries(value).map(([key, entryValue]) => [\n encodeValue(resolvedType.value.keyType, 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((candidate) => candidate.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 \"attachment\":\n case \"union\":\n case \"result\":\n return value;\n case \"ref\":\n return encodeValue(resolveType(resolvedType), value);\n }\n };\n\n const decodeObjectType = (\n objectType: ObjectTypeDef,\n object: SalesforceObjectRecord\n ): SalesforceObjectRecord => {\n const cleaned = stripAttributes(object);\n return Object.fromEntries(\n objectType.properties.map((property) => [\n property.name,\n decodeValue(property.type, cleaned[property.name]),\n ])\n );\n };\n\n return {\n decodeObject: (objectTypeName, object) => {\n const objectType = objectTypes.get(objectTypeName);\n if (!objectType) {\n throw new Error(`Unknown object type \"${objectTypeName}\".`);\n }\n return decodeObjectType(objectType, object);\n },\n decodeValue,\n encodeValue,\n };\n}\n\nfunction decodeGeoPoint(value: unknown): unknown {\n if (isPlainObject(value)) {\n const lat = value.latitude ?? value.lat;\n const lon = value.longitude ?? value.lon;\n if (typeof lat === \"number\" && typeof lon === \"number\") {\n return { lat, lon };\n }\n }\n return value;\n}\n\nfunction encodeGeoPoint(value: unknown): unknown {\n if (isPlainObject(value) && typeof value.lat === \"number\" && typeof value.lon === \"number\") {\n return {\n latitude: value.lat,\n longitude: value.lon,\n };\n }\n return value;\n}\n"],"mappings":"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"}
|
package/lib/config/index.d.ts
CHANGED
|
@@ -1,28 +1,30 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import { SalesforceAuthenticationClient, SalesforceOAuthConnectionOptions } from "../connection.js";
|
|
2
|
+
import { SalesforceCrudActionTypeSelection } from "../crud.js";
|
|
3
|
+
import { OntologyIR, OntologyPullConfig, OntologyPullSource } from "@party-stack/ontology";
|
|
4
|
+
//#region src/config/index.d.ts
|
|
4
5
|
export interface SalesforceOntologyPullConnectionOptions {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
oauth?: SalesforceOAuthConnectionOptions;
|
|
7
|
+
token?: string;
|
|
8
|
+
userId?: string;
|
|
8
9
|
}
|
|
9
10
|
export interface CreateSalesforceOntologyPullSourceOptions {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
instanceUrl: string;
|
|
12
|
+
apiVersion: string;
|
|
13
|
+
ontologyId: string;
|
|
14
|
+
objectTypeNames: string[];
|
|
15
|
+
flowActionTypeNames?: string[];
|
|
16
|
+
standardActionTypeNames?: string[];
|
|
17
|
+
standardQueryFunctionTypeNames?: string[];
|
|
18
|
+
crudActionTypes?: readonly SalesforceCrudActionTypeSelection[];
|
|
19
|
+
connection: SalesforceOntologyPullConnectionOptions;
|
|
20
|
+
transformPulledOntology?: (ontology: OntologyIR) => OntologyIR | Promise<OntologyIR>;
|
|
20
21
|
}
|
|
21
22
|
export declare function createSalesforceOntologyPullSource(options: CreateSalesforceOntologyPullSourceOptions): OntologyPullSource<SalesforceAuthenticationClient>;
|
|
22
23
|
export type SalesforceOntologyPullConfig = OntologyPullConfig<SalesforceAuthenticationClient>;
|
|
23
24
|
export interface CreateSalesforceOntologyPullConfigOptions extends CreateSalesforceOntologyPullSourceOptions {
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
flowActionTypeNames: string[];
|
|
26
|
+
queryFunctionTypeNames?: string[];
|
|
26
27
|
}
|
|
27
28
|
export declare function createSalesforceOntologyPullConfig(options: CreateSalesforceOntologyPullConfigOptions): SalesforceOntologyPullConfig;
|
|
29
|
+
//#endregion
|
|
28
30
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/config/index.ts"],"mappings":";;;;iBAUiB;EACb,QAAQ;EACR;EACA;;iBAGa;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA,2BAA2B;EAC3B,YAAY;EACZ,2BAA2B,UAAU,eAAe,aAAa,QAAQ;;wBAuG7D,mCACZ,SAAS,4CACV,mBAAmB;YAkEV,+BAA+B,mBAAmB;iBAE7C,kDAAkD;EAC/D;EACA;;wBAGY,mCACZ,SAAS,4CACV"}
|