@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,6 +1,8 @@
|
|
|
1
1
|
import { SearchJsonQueryV2, SearchOrderByV2 } from "@osdk/foundry.ontologies";
|
|
2
2
|
import { LoadSubsetOptions } from "@tanstack/db";
|
|
3
|
+
//#region src/adapter/convertLoadSubsetOptions.d.ts
|
|
3
4
|
export declare function isAlwaysFalseFilter(filter: SearchJsonQueryV2 | undefined): boolean;
|
|
4
5
|
export declare function convertLoadSubsetFilter(filter: LoadSubsetOptions["where"]): SearchJsonQueryV2 | undefined;
|
|
5
6
|
export declare function convertLoadSubsetOrderBy(orderBy: LoadSubsetOptions["orderBy"]): SearchOrderByV2 | undefined;
|
|
7
|
+
//#endregion
|
|
6
8
|
//# sourceMappingURL=convertLoadSubsetOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertLoadSubsetOptions.d.ts","
|
|
1
|
+
{"version":3,"file":"convertLoadSubsetOptions.d.ts","names":[],"sources":["../../src/adapter/convertLoadSubsetOptions.ts"],"mappings":";;;wBA8JgB,oBAAoB,QAAQ;wBAI5B,wBAAwB,QAAQ,6BAA6B;wBA4F7D,yBAAyB,SAAS,+BAA+B"}
|
|
@@ -1,211 +1,178 @@
|
|
|
1
1
|
import { parseOrderByExpression, parseWhereExpression } from "@tanstack/db";
|
|
2
2
|
import { Temporal } from "temporal-polyfill";
|
|
3
|
-
|
|
4
|
-
const
|
|
3
|
+
//#region src/adapter/convertLoadSubsetOptions.ts
|
|
4
|
+
const ALWAYS_FALSE_FILTER = {
|
|
5
|
+
type: "or",
|
|
6
|
+
value: []
|
|
7
|
+
};
|
|
8
|
+
const ALWAYS_TRUE_FILTER = {
|
|
9
|
+
type: "and",
|
|
10
|
+
value: []
|
|
11
|
+
};
|
|
5
12
|
function pushdown(query, safeToNegate = true) {
|
|
6
|
-
|
|
13
|
+
return {
|
|
14
|
+
query,
|
|
15
|
+
safeToNegate
|
|
16
|
+
};
|
|
7
17
|
}
|
|
8
18
|
function parseLikePattern(pattern) {
|
|
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
|
-
literal += character;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
flushLiteral();
|
|
42
|
-
return parts;
|
|
19
|
+
const parts = [];
|
|
20
|
+
let literal = "";
|
|
21
|
+
const flushLiteral = () => {
|
|
22
|
+
if (literal) {
|
|
23
|
+
parts.push({
|
|
24
|
+
type: "literal",
|
|
25
|
+
value: literal
|
|
26
|
+
});
|
|
27
|
+
literal = "";
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
for (let index = 0; index < pattern.length; index++) {
|
|
31
|
+
const character = pattern[index];
|
|
32
|
+
if (character === "\\") {
|
|
33
|
+
const escaped = pattern[index + 1];
|
|
34
|
+
if (escaped === "%" || escaped === "_" || escaped === "\\") {
|
|
35
|
+
literal += escaped;
|
|
36
|
+
index++;
|
|
37
|
+
} else literal += character;
|
|
38
|
+
} else if (character === "%") {
|
|
39
|
+
flushLiteral();
|
|
40
|
+
parts.push({ type: "many" });
|
|
41
|
+
} else if (character === "_") {
|
|
42
|
+
flushLiteral();
|
|
43
|
+
parts.push({ type: "single" });
|
|
44
|
+
} else literal += character;
|
|
45
|
+
}
|
|
46
|
+
flushLiteral();
|
|
47
|
+
return parts;
|
|
43
48
|
}
|
|
44
49
|
function escapeFoundryWildcardLiteral(value) {
|
|
45
|
-
|
|
50
|
+
return value.replace(/[\\*?]/g, "\\$&");
|
|
46
51
|
}
|
|
47
52
|
function convertLikeFilter(field, value) {
|
|
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
|
-
if (part.type === "many")
|
|
73
|
-
return "*";
|
|
74
|
-
if (part.type === "single")
|
|
75
|
-
return "?";
|
|
76
|
-
return escapeFoundryWildcardLiteral(part.value);
|
|
77
|
-
})
|
|
78
|
-
.join("");
|
|
79
|
-
return pushdown({
|
|
80
|
-
type: "wildcard",
|
|
81
|
-
propertyIdentifier,
|
|
82
|
-
value: wildcard,
|
|
83
|
-
});
|
|
53
|
+
const parts = parseLikePattern(value.toLowerCase());
|
|
54
|
+
const hasLeadingWildcard = parts[0]?.type === "many";
|
|
55
|
+
const hasTrailingWildcard = parts.at(-1)?.type === "many";
|
|
56
|
+
const propertyIdentifier = fieldPathToPropertyIdentifier(field);
|
|
57
|
+
if (hasLeadingWildcard && hasTrailingWildcard) {
|
|
58
|
+
const queries = parts.flatMap((part) => part.type === "literal" && part.value ? [part.value] : []).map((term) => ({
|
|
59
|
+
type: "containsAllTermsInOrder",
|
|
60
|
+
propertyIdentifier,
|
|
61
|
+
value: term
|
|
62
|
+
}));
|
|
63
|
+
return pushdown(queries.length === 0 ? ALWAYS_TRUE_FILTER : queries.length === 1 ? queries[0] : {
|
|
64
|
+
type: "and",
|
|
65
|
+
value: queries
|
|
66
|
+
}, false);
|
|
67
|
+
}
|
|
68
|
+
return pushdown({
|
|
69
|
+
type: "wildcard",
|
|
70
|
+
propertyIdentifier,
|
|
71
|
+
value: parts.map((part) => {
|
|
72
|
+
if (part.type === "many") return "*";
|
|
73
|
+
if (part.type === "single") return "?";
|
|
74
|
+
return escapeFoundryWildcardLiteral(part.value);
|
|
75
|
+
}).join("")
|
|
76
|
+
});
|
|
84
77
|
}
|
|
85
78
|
function convertQueryValue(value) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
if (value instanceof Temporal.Instant ||
|
|
90
|
-
value instanceof Temporal.PlainDate ||
|
|
91
|
-
value instanceof Temporal.PlainDateTime) {
|
|
92
|
-
return value.toString();
|
|
93
|
-
}
|
|
94
|
-
return value;
|
|
79
|
+
if (value instanceof Date) return value.toISOString();
|
|
80
|
+
if (value instanceof Temporal.Instant || value instanceof Temporal.PlainDate || value instanceof Temporal.PlainDateTime) return value.toString();
|
|
81
|
+
return value;
|
|
95
82
|
}
|
|
96
83
|
function fieldPathToPropertyIdentifier(fieldPath) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
structFieldApiName: fieldPath[1],
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
throw new Error(`Invalid field path: ${fieldPath.join(".")}`);
|
|
84
|
+
if (fieldPath.length === 1) return {
|
|
85
|
+
type: "property",
|
|
86
|
+
apiName: fieldPath[0]
|
|
87
|
+
};
|
|
88
|
+
else if (fieldPath.length === 2) return {
|
|
89
|
+
type: "structField",
|
|
90
|
+
propertyApiName: fieldPath[0],
|
|
91
|
+
structFieldApiName: fieldPath[1]
|
|
92
|
+
};
|
|
93
|
+
throw new Error(`Invalid field path: ${fieldPath.join(".")}`);
|
|
111
94
|
}
|
|
112
95
|
function convertInFilter(fieldOrValue, valuesOrField) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
type: "in",
|
|
127
|
-
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
128
|
-
value: values
|
|
129
|
-
.filter((entry) => entry !== null && entry !== undefined)
|
|
130
|
-
.map(convertQueryValue),
|
|
131
|
-
});
|
|
96
|
+
if (!Array.isArray(valuesOrField)) throw new Error("Expected the second inArray argument to be an array or field path");
|
|
97
|
+
if (!Array.isArray(fieldOrValue)) return pushdown({
|
|
98
|
+
type: "contains",
|
|
99
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(valuesOrField),
|
|
100
|
+
value: convertQueryValue(fieldOrValue)
|
|
101
|
+
});
|
|
102
|
+
const field = fieldOrValue;
|
|
103
|
+
const values = valuesOrField;
|
|
104
|
+
return pushdown({
|
|
105
|
+
type: "in",
|
|
106
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
107
|
+
value: values.filter((entry) => entry !== null && entry !== void 0).map(convertQueryValue)
|
|
108
|
+
});
|
|
132
109
|
}
|
|
133
|
-
|
|
134
|
-
|
|
110
|
+
function isAlwaysFalseFilter(filter) {
|
|
111
|
+
return filter?.type === "or" && filter.value.length === 0;
|
|
135
112
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
safeToNegate: true,
|
|
192
|
-
}),
|
|
193
|
-
in: convertInFilter,
|
|
194
|
-
ilike: convertLikeFilter,
|
|
195
|
-
// Foundry wildcard and contains searches are case-insensitive,
|
|
196
|
-
// so LIKE can over-fetch while TanStack applies exact casing.
|
|
197
|
-
like: convertLikeFilter,
|
|
198
|
-
},
|
|
199
|
-
})?.query ?? undefined);
|
|
113
|
+
function convertLoadSubsetFilter(filter) {
|
|
114
|
+
return parseWhereExpression(filter, { handlers: {
|
|
115
|
+
and: (...filters) => pushdown({
|
|
116
|
+
type: "and",
|
|
117
|
+
value: filters.map(({ query }) => query)
|
|
118
|
+
}, filters.every(({ safeToNegate }) => safeToNegate)),
|
|
119
|
+
or: (...filters) => pushdown({
|
|
120
|
+
type: "or",
|
|
121
|
+
value: filters.map(({ query }) => query)
|
|
122
|
+
}, filters.every(({ safeToNegate }) => safeToNegate)),
|
|
123
|
+
not: (filter) => filter.safeToNegate ? pushdown({
|
|
124
|
+
type: "not",
|
|
125
|
+
value: filter.query
|
|
126
|
+
}) : pushdown(ALWAYS_TRUE_FILTER, false),
|
|
127
|
+
eq: (field, value) => pushdown(value === null ? ALWAYS_FALSE_FILTER : value === void 0 ? {
|
|
128
|
+
type: "isNull",
|
|
129
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
130
|
+
value: true
|
|
131
|
+
} : {
|
|
132
|
+
type: "eq",
|
|
133
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
134
|
+
value: convertQueryValue(value)
|
|
135
|
+
}),
|
|
136
|
+
gt: (field, value) => pushdown(value == null ? ALWAYS_FALSE_FILTER : {
|
|
137
|
+
type: "gt",
|
|
138
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
139
|
+
value: convertQueryValue(value)
|
|
140
|
+
}),
|
|
141
|
+
gte: (field, value) => pushdown(value == null ? ALWAYS_FALSE_FILTER : {
|
|
142
|
+
type: "gte",
|
|
143
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
144
|
+
value: convertQueryValue(value)
|
|
145
|
+
}),
|
|
146
|
+
lt: (field, value) => pushdown(value == null ? ALWAYS_FALSE_FILTER : {
|
|
147
|
+
type: "lt",
|
|
148
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
149
|
+
value: convertQueryValue(value)
|
|
150
|
+
}),
|
|
151
|
+
lte: (field, value) => pushdown(value == null ? ALWAYS_FALSE_FILTER : {
|
|
152
|
+
type: "lte",
|
|
153
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
154
|
+
value: convertQueryValue(value)
|
|
155
|
+
}),
|
|
156
|
+
isUndefined: (field) => ({
|
|
157
|
+
query: {
|
|
158
|
+
type: "isNull",
|
|
159
|
+
propertyIdentifier: fieldPathToPropertyIdentifier(field),
|
|
160
|
+
value: true
|
|
161
|
+
},
|
|
162
|
+
safeToNegate: true
|
|
163
|
+
}),
|
|
164
|
+
in: convertInFilter,
|
|
165
|
+
ilike: convertLikeFilter,
|
|
166
|
+
like: convertLikeFilter
|
|
167
|
+
} })?.query ?? void 0;
|
|
200
168
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
direction: ordering.direction,
|
|
207
|
-
})),
|
|
208
|
-
}
|
|
209
|
-
: undefined;
|
|
169
|
+
function convertLoadSubsetOrderBy(orderBy) {
|
|
170
|
+
return orderBy ? { fields: parseOrderByExpression(orderBy).map((ordering) => ({
|
|
171
|
+
field: ordering.field[0],
|
|
172
|
+
direction: ordering.direction
|
|
173
|
+
})) } : void 0;
|
|
210
174
|
}
|
|
175
|
+
//#endregion
|
|
176
|
+
export { convertLoadSubsetFilter, convertLoadSubsetOrderBy, isAlwaysFalseFilter };
|
|
177
|
+
|
|
211
178
|
//# sourceMappingURL=convertLoadSubsetOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertLoadSubsetOptions.js","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"convertLoadSubsetOptions.js","names":[],"sources":["../../src/adapter/convertLoadSubsetOptions.ts"],"sourcesContent":["import {\n PropertyApiName,\n PropertyIdentifier,\n SearchJsonQueryV2,\n SearchOrderByV2,\n StructFieldApiName,\n} from \"@osdk/foundry.ontologies\";\nimport { FieldPath, LoadSubsetOptions, parseOrderByExpression, parseWhereExpression } from \"@tanstack/db\";\nimport { Temporal } from \"temporal-polyfill\";\n\nconst ALWAYS_FALSE_FILTER: SearchJsonQueryV2 = { type: \"or\", value: [] };\nconst ALWAYS_TRUE_FILTER: SearchJsonQueryV2 = { type: \"and\", value: [] };\n\ntype LikePatternPart = { type: \"literal\"; value: string } | { type: \"many\" } | { type: \"single\" };\n\ninterface PushdownFilter {\n query: SearchJsonQueryV2;\n safeToNegate: boolean;\n}\n\nfunction pushdown(query: SearchJsonQueryV2, safeToNegate = true): PushdownFilter {\n return { query, safeToNegate };\n}\n\nfunction parseLikePattern(pattern: string): LikePatternPart[] {\n const parts: LikePatternPart[] = [];\n let literal = \"\";\n\n const flushLiteral = () => {\n if (literal) {\n parts.push({ type: \"literal\", value: literal });\n literal = \"\";\n }\n };\n\n for (let index = 0; index < pattern.length; index++) {\n const character = pattern[index]!;\n if (character === \"\\\\\") {\n const escaped = pattern[index + 1];\n if (escaped === \"%\" || escaped === \"_\" || escaped === \"\\\\\") {\n literal += escaped;\n index++;\n } else {\n literal += character;\n }\n } else if (character === \"%\") {\n flushLiteral();\n parts.push({ type: \"many\" });\n } else if (character === \"_\") {\n flushLiteral();\n parts.push({ type: \"single\" });\n } else {\n literal += character;\n }\n }\n flushLiteral();\n\n return parts;\n}\n\nfunction escapeFoundryWildcardLiteral(value: string): string {\n return value.replace(/[\\\\*?]/g, \"\\\\$&\");\n}\n\nfunction convertLikeFilter(field: FieldPath, value: string): PushdownFilter {\n const parts = parseLikePattern(value.toLowerCase());\n const hasLeadingWildcard = parts[0]?.type === \"many\";\n const hasTrailingWildcard = parts.at(-1)?.type === \"many\";\n const propertyIdentifier = fieldPathToPropertyIdentifier(field);\n\n if (hasLeadingWildcard && hasTrailingWildcard) {\n const terms = parts.flatMap((part) => (part.type === \"literal\" && part.value ? [part.value] : []));\n const queries = terms.map<SearchJsonQueryV2>((term) => ({\n // This is Foundry's substring/phrase query. It can over-fetch because\n // wildcard-delimited terms are not required to be adjacent or ordered.\n type: \"containsAllTermsInOrder\",\n propertyIdentifier,\n value: term,\n }));\n const query: SearchJsonQueryV2 =\n queries.length === 0\n ? ALWAYS_TRUE_FILTER\n : queries.length === 1\n ? queries[0]!\n : { type: \"and\", value: queries };\n\n // Contains is an approximation of SQL LIKE. Negating this superset\n // would produce a subset and could hide exact matches.\n return pushdown(query, false);\n }\n\n const wildcard = parts\n .map((part) => {\n if (part.type === \"many\") return \"*\";\n if (part.type === \"single\") return \"?\";\n return escapeFoundryWildcardLiteral(part.value);\n })\n .join(\"\");\n\n return pushdown({\n type: \"wildcard\",\n propertyIdentifier,\n value: wildcard,\n });\n}\n\nfunction convertQueryValue(value: unknown): unknown {\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (\n value instanceof Temporal.Instant ||\n value instanceof Temporal.PlainDate ||\n value instanceof Temporal.PlainDateTime\n ) {\n return value.toString();\n }\n return value;\n}\n\nfunction fieldPathToPropertyIdentifier(fieldPath: FieldPath): PropertyIdentifier {\n if (fieldPath.length === 1) {\n return {\n type: \"property\",\n apiName: fieldPath[0]! as PropertyApiName,\n };\n } else if (fieldPath.length === 2) {\n return {\n type: \"structField\",\n propertyApiName: fieldPath[0]! as PropertyApiName,\n structFieldApiName: fieldPath[1]! as StructFieldApiName,\n };\n }\n throw new Error(`Invalid field path: ${fieldPath.join(\".\")}`);\n}\n\nfunction convertInFilter(fieldOrValue: unknown, valuesOrField: unknown): PushdownFilter {\n if (!Array.isArray(valuesOrField)) {\n throw new Error(\"Expected the second inArray argument to be an array or field path\");\n }\n\n if (!Array.isArray(fieldOrValue)) {\n return pushdown({\n type: \"contains\",\n propertyIdentifier: fieldPathToPropertyIdentifier(valuesOrField as FieldPath),\n value: convertQueryValue(fieldOrValue),\n });\n }\n\n const field = fieldOrValue as FieldPath;\n const values = valuesOrField as unknown[];\n return pushdown({\n type: \"in\",\n propertyIdentifier: fieldPathToPropertyIdentifier(field),\n value: values.filter((entry) => entry !== null && entry !== undefined).map(convertQueryValue),\n });\n}\n\nexport function isAlwaysFalseFilter(filter: SearchJsonQueryV2 | undefined): boolean {\n return filter?.type === \"or\" && filter.value.length === 0;\n}\n\nexport function convertLoadSubsetFilter(filter: LoadSubsetOptions[\"where\"]): SearchJsonQueryV2 | undefined {\n return (\n parseWhereExpression<PushdownFilter>(filter, {\n handlers: {\n and: (...filters: PushdownFilter[]) =>\n pushdown(\n { type: \"and\", value: filters.map(({ query }) => query) },\n filters.every(({ safeToNegate }) => safeToNegate)\n ),\n or: (...filters: PushdownFilter[]) =>\n pushdown(\n { type: \"or\", value: filters.map(({ query }) => query) },\n filters.every(({ safeToNegate }) => safeToNegate)\n ),\n not: (filter: PushdownFilter) =>\n filter.safeToNegate\n ? pushdown({ type: \"not\", value: filter.query })\n : pushdown(ALWAYS_TRUE_FILTER, false),\n eq: (field: FieldPath, value) =>\n pushdown(\n value === null\n ? ALWAYS_FALSE_FILTER\n : value === undefined\n ? {\n type: \"isNull\",\n propertyIdentifier: fieldPathToPropertyIdentifier(field),\n value: true,\n }\n : {\n type: \"eq\",\n propertyIdentifier: fieldPathToPropertyIdentifier(field),\n value: convertQueryValue(value),\n }\n ),\n gt: (field: FieldPath, value) =>\n pushdown(\n value == null\n ? ALWAYS_FALSE_FILTER\n : {\n type: \"gt\",\n propertyIdentifier: fieldPathToPropertyIdentifier(field),\n value: convertQueryValue(value),\n }\n ),\n gte: (field: FieldPath, value) =>\n pushdown(\n value == null\n ? ALWAYS_FALSE_FILTER\n : {\n type: \"gte\",\n propertyIdentifier: fieldPathToPropertyIdentifier(field),\n value: convertQueryValue(value),\n }\n ),\n lt: (field: FieldPath, value) =>\n pushdown(\n value == null\n ? ALWAYS_FALSE_FILTER\n : {\n type: \"lt\",\n propertyIdentifier: fieldPathToPropertyIdentifier(field),\n value: convertQueryValue(value),\n }\n ),\n lte: (field: FieldPath, value) =>\n pushdown(\n value == null\n ? ALWAYS_FALSE_FILTER\n : {\n type: \"lte\",\n propertyIdentifier: fieldPathToPropertyIdentifier(field),\n value: convertQueryValue(value),\n }\n ),\n isUndefined: (field: FieldPath) => ({\n query: {\n type: \"isNull\",\n propertyIdentifier: fieldPathToPropertyIdentifier(field),\n value: true,\n },\n safeToNegate: true,\n }),\n in: convertInFilter,\n ilike: convertLikeFilter,\n // Foundry wildcard and contains searches are case-insensitive,\n // so LIKE can over-fetch while TanStack applies exact casing.\n like: convertLikeFilter,\n },\n })?.query ?? undefined\n );\n}\n\nexport function convertLoadSubsetOrderBy(orderBy: LoadSubsetOptions[\"orderBy\"]): SearchOrderByV2 | undefined {\n return orderBy\n ? {\n fields: parseOrderByExpression(orderBy).map((ordering) => ({\n field: ordering.field[0]! as PropertyApiName,\n direction: ordering.direction,\n })),\n }\n : undefined;\n}\n"],"mappings":"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"}
|
|
@@ -1,27 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import { OntologyClient } from "@party-stack/foundry-client";
|
|
2
|
+
import { OntologyBackendAdapter, OntologyBackendAdapterProvider, OntologyCollectionOptions, OntologyIR, PartialAttachmentMetadata } from "@party-stack/ontology";
|
|
3
|
+
import { attachment } from "@party-stack/ontology/values";
|
|
4
|
+
//#region src/adapter/createFoundryOntologyBackendAdapter.d.ts
|
|
4
5
|
export declare function isFoundryNotFoundError(error: unknown): boolean;
|
|
5
6
|
export interface FoundryUsersIntegration {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
objectType: string;
|
|
8
|
+
getCollectionOptions(client: OntologyClient): OntologyCollectionOptions;
|
|
9
|
+
getAttachmentContent?(client: OntologyClient, attachment: attachment): Promise<Blob | undefined>;
|
|
10
|
+
getAttachmentMetadata?(client: OntologyClient, attachment: attachment, selection: readonly (keyof PartialAttachmentMetadata)[]): Promise<PartialAttachmentMetadata | undefined>;
|
|
10
11
|
}
|
|
11
12
|
export interface CreateFoundryOntologyBackendAdapterOptions {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
client: OntologyClient;
|
|
14
|
+
ir: OntologyIR;
|
|
15
|
+
users?: FoundryUsersIntegration;
|
|
16
|
+
live?: boolean;
|
|
16
17
|
}
|
|
17
18
|
export declare function createFoundryOntologyBackendAdapter(opts: CreateFoundryOntologyBackendAdapterOptions): OntologyBackendAdapter;
|
|
18
19
|
export type CreateFoundryOntologyBackendOptions<Context extends Record<string, unknown> = Record<string, unknown>> = ({
|
|
19
|
-
|
|
20
|
+
client: OntologyClient;
|
|
20
21
|
} | {
|
|
21
|
-
|
|
22
|
+
createClient: (ir: OntologyIR, context: Context) => OntologyClient | Promise<OntologyClient>;
|
|
22
23
|
}) & {
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
users?: FoundryUsersIntegration;
|
|
25
|
+
live?: boolean;
|
|
25
26
|
};
|
|
26
27
|
export declare function createFoundryOntologyBackend<Context extends Record<string, unknown> = Record<string, unknown>>(opts: CreateFoundryOntologyBackendOptions<Context>): OntologyBackendAdapterProvider<Context>;
|
|
28
|
+
//#endregion
|
|
27
29
|
//# sourceMappingURL=createFoundryOntologyBackendAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFoundryOntologyBackendAdapter.d.ts","
|
|
1
|
+
{"version":3,"file":"createFoundryOntologyBackendAdapter.d.ts","names":[],"sources":["../../src/adapter/createFoundryOntologyBackendAdapter.ts"],"mappings":";;;;wBA2CgB,uBAAuB;iBAWtB;EACb;EACA,qBAAqB,QAAQ,iBAAiB;EAC9C,sBAAsB,QAAQ,gBAAgB,YAAY,aAAa,QAAQ;EAC/E,uBACI,QAAQ,gBACR,YAAY,YACZ,2BAA2B,+BAC5B,QAAQ;;iBAoIE;EACb,QAAQ;EACR,IAAI;EACJ,QAAQ;EACR;;wBAGY,oCACZ,MAAM,6CACP;YAqXS,oCACR,gBAAgB,0BAA0B;EAGpC,QAAQ;;EAGR,eAAe,IAAI,YAAY,SAAS,YAAY,iBAAiB,QAAQ;;EAGnF,QAAQ;EACR;;wBAGY,6BACZ,gBAAgB,0BAA0B,yBAC5C,MAAM,oCAAoC,WAAW,+BAA+B"}
|