@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
package/README.md
CHANGED
|
@@ -10,27 +10,23 @@ import {
|
|
|
10
10
|
createSalesforceOntologyRoute,
|
|
11
11
|
} from "@party-stack/salesforce-ontology";
|
|
12
12
|
|
|
13
|
-
const installation =
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
clientId,
|
|
22
|
-
redirectUrl:
|
|
23
|
-
"http://localhost:1717/oauth/callback",
|
|
24
|
-
},
|
|
13
|
+
const installation = await createSalesforceBackendInstallation({
|
|
14
|
+
instanceUrl: "https://example.my.salesforce.com",
|
|
15
|
+
apiVersion: "65.0",
|
|
16
|
+
runtime,
|
|
17
|
+
connections: {
|
|
18
|
+
oauth: {
|
|
19
|
+
clientId,
|
|
20
|
+
redirectUrl: "http://localhost:1717/oauth/callback",
|
|
25
21
|
},
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
22
|
+
},
|
|
23
|
+
routes: [
|
|
24
|
+
createSalesforceOntologyRoute({
|
|
25
|
+
ontologyId: "salesforce:task-manager",
|
|
26
|
+
ir: generatedOntology,
|
|
27
|
+
}),
|
|
28
|
+
],
|
|
29
|
+
});
|
|
34
30
|
```
|
|
35
31
|
|
|
36
32
|
The connection adapter uses `@party-stack/oauth`, persists refresh tokens
|
|
@@ -43,9 +39,7 @@ token-provider/egress agnostic.
|
|
|
43
39
|
Consumer projects can export a standard Party Stack pull configuration:
|
|
44
40
|
|
|
45
41
|
```ts
|
|
46
|
-
import {
|
|
47
|
-
createSalesforceOntologyPullConfig,
|
|
48
|
-
} from "@party-stack/salesforce-ontology/config";
|
|
42
|
+
import { createSalesforceOntologyPullConfig } from "@party-stack/salesforce-ontology/config";
|
|
49
43
|
|
|
50
44
|
export default createSalesforceOntologyPullConfig({
|
|
51
45
|
instanceUrl,
|
|
@@ -53,12 +47,8 @@ export default createSalesforceOntologyPullConfig({
|
|
|
53
47
|
ontologyId: "salesforce:task-manager",
|
|
54
48
|
objectTypeNames: ["Task", "User"],
|
|
55
49
|
flowActionTypeNames: ["Create_Task_Flow"],
|
|
56
|
-
standardActionTypeNames: [
|
|
57
|
-
|
|
58
|
-
],
|
|
59
|
-
standardQueryFunctionTypeNames: [
|
|
60
|
-
"getAvailableMeetingTimes",
|
|
61
|
-
],
|
|
50
|
+
standardActionTypeNames: ["confirmSalesMeeting"],
|
|
51
|
+
standardQueryFunctionTypeNames: ["getAvailableMeetingTimes"],
|
|
62
52
|
crudActionTypes: [
|
|
63
53
|
{
|
|
64
54
|
objectType: "Task",
|
|
@@ -79,6 +69,7 @@ normal `src/ontology/ontology.ts` consumed by
|
|
|
79
69
|
`createSalesforceOntologyRoute({ ir })`.
|
|
80
70
|
|
|
81
71
|
See `apps/salesforce-task-manager` for a real-org example.
|
|
72
|
+
|
|
82
73
|
# salesforce-ontology
|
|
83
74
|
|
|
84
75
|
Salesforce backend adapters for Party Stack LiveOntology.
|
|
@@ -86,9 +77,9 @@ Salesforce backend adapters for Party Stack LiveOntology.
|
|
|
86
77
|
## Runtime adapter
|
|
87
78
|
|
|
88
79
|
```ts
|
|
80
|
+
import { createLiveOntology } from "@party-stack/ontology";
|
|
89
81
|
import { createSalesforceClient } from "@party-stack/salesforce-client";
|
|
90
82
|
import { createSalesforceOntologyBackend } from "@party-stack/salesforce-ontology";
|
|
91
|
-
import { createLiveOntology } from "@party-stack/ontology";
|
|
92
83
|
|
|
93
84
|
// jsforce-backed client; supply your own token (no OAuth ownership here)
|
|
94
85
|
const client = createSalesforceClient({
|
|
@@ -106,8 +97,8 @@ const ontology = await createLiveOntology({
|
|
|
106
97
|
## Metadata adapter
|
|
107
98
|
|
|
108
99
|
```ts
|
|
109
|
-
import { createSalesforceMetaOntologyBackendAdapter } from "@party-stack/salesforce-ontology/meta";
|
|
110
100
|
import { createMetaLiveOntology } from "@party-stack/ontology";
|
|
101
|
+
import { createSalesforceMetaOntologyBackendAdapter } from "@party-stack/salesforce-ontology/meta";
|
|
111
102
|
|
|
112
103
|
const meta = await createMetaLiveOntology({
|
|
113
104
|
backend: () =>
|
package/lib/actionMetadata.d.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { SalesforceCrudOperation } from "./utils/ids.js";
|
|
2
|
+
//#region src/actionMetadata.d.ts
|
|
2
3
|
export type SalesforceActionMetadata = {
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
kind: "flow";
|
|
5
|
+
apiName: string;
|
|
5
6
|
} | {
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
kind: "standard";
|
|
8
|
+
apiName: string;
|
|
8
9
|
} | {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
kind: "crud";
|
|
11
|
+
objectType: string;
|
|
12
|
+
operation: SalesforceCrudOperation;
|
|
12
13
|
};
|
|
13
14
|
export declare function salesforceActionMeta(metadata: SalesforceActionMetadata): Record<string, unknown>;
|
|
14
15
|
export declare function getSalesforceActionMetadata(actionType: {
|
|
15
|
-
|
|
16
|
+
meta?: Record<string, unknown>;
|
|
16
17
|
}): SalesforceActionMetadata | undefined;
|
|
18
|
+
//#endregion
|
|
17
19
|
//# sourceMappingURL=actionMetadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actionMetadata.d.ts","
|
|
1
|
+
{"version":3,"file":"actionMetadata.d.ts","names":[],"sources":["../src/actionMetadata.ts"],"mappings":";;YAEY;EAEF;EACA;;EAGA;EACA;;EAGA;EACA;EACA,WAAW;;wBAGL,qBAAqB,UAAU,2BAA2B;wBAI1D,4BAA4B;EACxC,OAAO;IACP"}
|
package/lib/actionMetadata.js
CHANGED
|
@@ -1,33 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
//#region src/actionMetadata.ts
|
|
2
|
+
function salesforceActionMeta(metadata) {
|
|
3
|
+
return { salesforce: metadata };
|
|
3
4
|
}
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
apiName: metadata.apiName,
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
if (metadata.kind === "crud" &&
|
|
21
|
-
typeof metadata.objectType === "string" &&
|
|
22
|
-
(metadata.operation === "create" ||
|
|
23
|
-
metadata.operation === "update" ||
|
|
24
|
-
metadata.operation === "delete")) {
|
|
25
|
-
return {
|
|
26
|
-
kind: "crud",
|
|
27
|
-
objectType: metadata.objectType,
|
|
28
|
-
operation: metadata.operation,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
return undefined;
|
|
5
|
+
function getSalesforceActionMetadata(actionType) {
|
|
6
|
+
const value = actionType.meta?.salesforce;
|
|
7
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return;
|
|
8
|
+
const metadata = value;
|
|
9
|
+
if ((metadata.kind === "flow" || metadata.kind === "standard") && typeof metadata.apiName === "string") return {
|
|
10
|
+
kind: metadata.kind,
|
|
11
|
+
apiName: metadata.apiName
|
|
12
|
+
};
|
|
13
|
+
if (metadata.kind === "crud" && typeof metadata.objectType === "string" && (metadata.operation === "create" || metadata.operation === "update" || metadata.operation === "delete")) return {
|
|
14
|
+
kind: "crud",
|
|
15
|
+
objectType: metadata.objectType,
|
|
16
|
+
operation: metadata.operation
|
|
17
|
+
};
|
|
32
18
|
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { getSalesforceActionMetadata, salesforceActionMeta };
|
|
21
|
+
|
|
33
22
|
//# sourceMappingURL=actionMetadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actionMetadata.js","
|
|
1
|
+
{"version":3,"file":"actionMetadata.js","names":[],"sources":["../src/actionMetadata.ts"],"sourcesContent":["import type { SalesforceCrudOperation } from \"./utils/ids.js\";\n\nexport type SalesforceActionMetadata =\n | {\n kind: \"flow\";\n apiName: string;\n }\n | {\n kind: \"standard\";\n apiName: string;\n }\n | {\n kind: \"crud\";\n objectType: string;\n operation: SalesforceCrudOperation;\n };\n\nexport function salesforceActionMeta(metadata: SalesforceActionMetadata): Record<string, unknown> {\n return { salesforce: metadata };\n}\n\nexport function getSalesforceActionMetadata(actionType: {\n meta?: Record<string, unknown>;\n}): SalesforceActionMetadata | undefined {\n const value = actionType.meta?.salesforce;\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n const metadata = value as Record<string, unknown>;\n if ((metadata.kind === \"flow\" || metadata.kind === \"standard\") && typeof metadata.apiName === \"string\") {\n return {\n kind: metadata.kind,\n apiName: metadata.apiName,\n };\n }\n if (\n metadata.kind === \"crud\" &&\n typeof metadata.objectType === \"string\" &&\n (metadata.operation === \"create\" ||\n metadata.operation === \"update\" ||\n metadata.operation === \"delete\")\n ) {\n return {\n kind: \"crud\",\n objectType: metadata.objectType,\n operation: metadata.operation,\n };\n }\n return undefined;\n}\n"],"mappings":";AAiBA,SAAgB,qBAAqB,UAA6D;CAC9F,OAAO,EAAE,YAAY,SAAS;AAClC;AAEA,SAAgB,4BAA4B,YAEH;CACrC,MAAM,QAAQ,WAAW,MAAM;CAC/B,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAClE;CAEJ,MAAM,WAAW;CACjB,KAAK,SAAS,SAAS,UAAU,SAAS,SAAS,eAAe,OAAO,SAAS,YAAY,UAC1F,OAAO;EACH,MAAM,SAAS;EACf,SAAS,SAAS;CACtB;CAEJ,IACI,SAAS,SAAS,UAClB,OAAO,SAAS,eAAe,aAC9B,SAAS,cAAc,YACpB,SAAS,cAAc,YACvB,SAAS,cAAc,WAE3B,OAAO;EACH,MAAM;EACN,YAAY,SAAS;EACrB,WAAW,SAAS;CACxB;AAGR"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { LoadSubsetOptions } from "@tanstack/db";
|
|
2
|
+
//#region src/adapter/convertLoadSubsetOptions.d.ts
|
|
2
3
|
export type CompiledSoqlFilter = {
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
clause?: string;
|
|
5
|
+
alwaysFalse: boolean;
|
|
5
6
|
};
|
|
6
7
|
export declare function serializeSoqlLiteral(value: unknown): string;
|
|
7
8
|
export declare function isAlwaysFalseFilter(filter: CompiledSoqlFilter | undefined): boolean;
|
|
8
9
|
export declare function convertLoadSubsetFilter(filter: LoadSubsetOptions["where"]): CompiledSoqlFilter | undefined;
|
|
9
10
|
export declare function convertLoadSubsetOrderBy(orderBy: LoadSubsetOptions["orderBy"]): string | undefined;
|
|
10
11
|
export declare function buildSoqlQuery(opts: {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
objectType: string;
|
|
13
|
+
selectedProperties: string[];
|
|
14
|
+
where?: CompiledSoqlFilter;
|
|
15
|
+
orderBy?: string;
|
|
16
|
+
limit?: number;
|
|
17
|
+
offset?: number;
|
|
17
18
|
}): string;
|
|
19
|
+
//#endregion
|
|
18
20
|
//# 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":";;YAKY;EACR;EACA;;wBAwDY,qBAAqB;wBA+BrB,oBAAoB,QAAQ;wBAsB5B,wBAAwB,QAAQ,6BAA6B;wBA8D7D,yBAAyB,SAAS;wBASlC,eAAe;EAC3B;EACA;EACA,QAAQ;EACR;EACA;EACA"}
|
|
@@ -1,190 +1,127 @@
|
|
|
1
1
|
import { parseOrderByExpression, parseWhereExpression } from "@tanstack/db";
|
|
2
2
|
import { Temporal } from "temporal-polyfill";
|
|
3
|
+
//#region src/adapter/convertLoadSubsetOptions.ts
|
|
3
4
|
const ALWAYS_FALSE = "__ALWAYS_FALSE__";
|
|
4
5
|
function quoteIdentifier(identifier) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
return identifier;
|
|
6
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(identifier)) throw new Error(`Invalid Salesforce identifier "${identifier}".`);
|
|
7
|
+
return identifier;
|
|
9
8
|
}
|
|
10
9
|
function fieldPathToSoql(fieldPath) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
return fieldPath.map((segment) => quoteIdentifier(String(segment))).join(".");
|
|
10
|
+
if (fieldPath.length === 0) throw new Error("Empty field path.");
|
|
11
|
+
return fieldPath.map((segment) => quoteIdentifier(String(segment))).join(".");
|
|
15
12
|
}
|
|
16
13
|
function escapeSoqlString(value) {
|
|
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
|
-
return escaped;
|
|
14
|
+
let escaped = "";
|
|
15
|
+
for (const character of value) switch (character) {
|
|
16
|
+
case "\\":
|
|
17
|
+
escaped += "\\\\";
|
|
18
|
+
break;
|
|
19
|
+
case "'":
|
|
20
|
+
escaped += "\\'";
|
|
21
|
+
break;
|
|
22
|
+
case "\b":
|
|
23
|
+
escaped += "\\b";
|
|
24
|
+
break;
|
|
25
|
+
case "\f":
|
|
26
|
+
escaped += "\\f";
|
|
27
|
+
break;
|
|
28
|
+
case "\n":
|
|
29
|
+
escaped += "\\n";
|
|
30
|
+
break;
|
|
31
|
+
case "\r":
|
|
32
|
+
escaped += "\\r";
|
|
33
|
+
break;
|
|
34
|
+
case " ":
|
|
35
|
+
escaped += "\\t";
|
|
36
|
+
break;
|
|
37
|
+
default: {
|
|
38
|
+
const codePoint = character.codePointAt(0);
|
|
39
|
+
if (codePoint < 32 || codePoint === 127) throw new Error(`Cannot serialize control character U+${codePoint.toString(16).padStart(4, "0")} to SOQL.`);
|
|
40
|
+
escaped += character;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return escaped;
|
|
51
44
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (typeof value === "bigint") {
|
|
66
|
-
return String(value);
|
|
67
|
-
}
|
|
68
|
-
if (value instanceof Date) {
|
|
69
|
-
return value.toISOString();
|
|
70
|
-
}
|
|
71
|
-
if (value instanceof Temporal.Instant) {
|
|
72
|
-
return value.toString();
|
|
73
|
-
}
|
|
74
|
-
if (value instanceof Temporal.PlainDate || value instanceof Temporal.PlainDateTime) {
|
|
75
|
-
return value.toString();
|
|
76
|
-
}
|
|
77
|
-
if (typeof value === "string") {
|
|
78
|
-
return `'${escapeSoqlString(value)}'`;
|
|
79
|
-
}
|
|
80
|
-
throw new Error(`Unsupported SOQL literal type: ${typeof value}`);
|
|
45
|
+
function serializeSoqlLiteral(value) {
|
|
46
|
+
if (value === null || value === void 0) return "null";
|
|
47
|
+
if (typeof value === "boolean") return value ? "true" : "false";
|
|
48
|
+
if (typeof value === "number") {
|
|
49
|
+
if (!Number.isFinite(value)) throw new Error(`Cannot serialize non-finite number ${value} to SOQL.`);
|
|
50
|
+
return String(value);
|
|
51
|
+
}
|
|
52
|
+
if (typeof value === "bigint") return String(value);
|
|
53
|
+
if (value instanceof Date) return value.toISOString();
|
|
54
|
+
if (value instanceof Temporal.Instant) return value.toString();
|
|
55
|
+
if (value instanceof Temporal.PlainDate || value instanceof Temporal.PlainDateTime) return value.toString();
|
|
56
|
+
if (typeof value === "string") return `'${escapeSoqlString(value)}'`;
|
|
57
|
+
throw new Error(`Unsupported SOQL literal type: ${typeof value}`);
|
|
81
58
|
}
|
|
82
|
-
|
|
83
|
-
|
|
59
|
+
function isAlwaysFalseFilter(filter) {
|
|
60
|
+
return Boolean(filter?.alwaysFalse);
|
|
84
61
|
}
|
|
85
62
|
function convertInFilter(fieldOrValue, valuesOrField) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
? ALWAYS_FALSE
|
|
92
|
-
: `${fieldPathToSoql(valuesOrField)} INCLUDES (${serializeSoqlLiteral(fieldOrValue)})`;
|
|
93
|
-
}
|
|
94
|
-
const literals = valuesOrField
|
|
95
|
-
.filter((entry) => entry !== null && entry !== undefined)
|
|
96
|
-
.map(serializeSoqlLiteral);
|
|
97
|
-
if (literals.length === 0)
|
|
98
|
-
return ALWAYS_FALSE;
|
|
99
|
-
return `${fieldPathToSoql(fieldOrValue)} IN (${literals.join(", ")})`;
|
|
63
|
+
if (!Array.isArray(valuesOrField)) throw new Error("Expected the second inArray argument to be an array or field path");
|
|
64
|
+
if (!Array.isArray(fieldOrValue)) return fieldOrValue == null ? ALWAYS_FALSE : `${fieldPathToSoql(valuesOrField)} INCLUDES (${serializeSoqlLiteral(fieldOrValue)})`;
|
|
65
|
+
const literals = valuesOrField.filter((entry) => entry !== null && entry !== void 0).map(serializeSoqlLiteral);
|
|
66
|
+
if (literals.length === 0) return ALWAYS_FALSE;
|
|
67
|
+
return `${fieldPathToSoql(fieldOrValue)} IN (${literals.join(", ")})`;
|
|
100
68
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
gte: (field, value) => value == null
|
|
140
|
-
? ALWAYS_FALSE
|
|
141
|
-
: `${fieldPathToSoql(field)} >= ${serializeSoqlLiteral(value)}`,
|
|
142
|
-
lt: (field, value) => value == null
|
|
143
|
-
? ALWAYS_FALSE
|
|
144
|
-
: `${fieldPathToSoql(field)} < ${serializeSoqlLiteral(value)}`,
|
|
145
|
-
lte: (field, value) => value == null
|
|
146
|
-
? ALWAYS_FALSE
|
|
147
|
-
: `${fieldPathToSoql(field)} <= ${serializeSoqlLiteral(value)}`,
|
|
148
|
-
isUndefined: (field) => `${fieldPathToSoql(field)} = null`,
|
|
149
|
-
in: convertInFilter,
|
|
150
|
-
like: (field, value) => value === "%" ? "" : `${fieldPathToSoql(field)} LIKE ${serializeSoqlLiteral(value)}`,
|
|
151
|
-
ilike: (field, value) =>
|
|
152
|
-
// Salesforce LIKE is case-insensitive for most text fields.
|
|
153
|
-
value === "%" ? "" : `${fieldPathToSoql(field)} LIKE ${serializeSoqlLiteral(value)}`,
|
|
154
|
-
},
|
|
155
|
-
}) ?? undefined;
|
|
156
|
-
if (compiled === undefined)
|
|
157
|
-
return undefined;
|
|
158
|
-
if (compiled === ALWAYS_FALSE) {
|
|
159
|
-
return { alwaysFalse: true };
|
|
160
|
-
}
|
|
161
|
-
return { clause: compiled || undefined, alwaysFalse: false };
|
|
69
|
+
function convertLoadSubsetFilter(filter) {
|
|
70
|
+
if (!filter) return void 0;
|
|
71
|
+
const compiled = parseWhereExpression(filter, { handlers: {
|
|
72
|
+
and: (...filters) => {
|
|
73
|
+
if (filters.includes(ALWAYS_FALSE)) return ALWAYS_FALSE;
|
|
74
|
+
const clauses = filters.filter((clause) => clause.length > 0);
|
|
75
|
+
if (clauses.length === 0) return "";
|
|
76
|
+
if (clauses.length === 1) return clauses[0];
|
|
77
|
+
return `(${clauses.join(" AND ")})`;
|
|
78
|
+
},
|
|
79
|
+
or: (...filters) => {
|
|
80
|
+
if (filters.every((clause) => clause === ALWAYS_FALSE)) return ALWAYS_FALSE;
|
|
81
|
+
const clauses = filters.filter((clause) => clause !== ALWAYS_FALSE && clause.length > 0);
|
|
82
|
+
if (clauses.length === 0) return "";
|
|
83
|
+
if (clauses.length === 1) return clauses[0];
|
|
84
|
+
return `(${clauses.join(" OR ")})`;
|
|
85
|
+
},
|
|
86
|
+
not: (inner) => {
|
|
87
|
+
if (inner === ALWAYS_FALSE) return "";
|
|
88
|
+
if (!inner) return ALWAYS_FALSE;
|
|
89
|
+
return `(NOT ${inner})`;
|
|
90
|
+
},
|
|
91
|
+
eq: (field, value) => value == null ? `${fieldPathToSoql(field)} = null` : `${fieldPathToSoql(field)} = ${serializeSoqlLiteral(value)}`,
|
|
92
|
+
gt: (field, value) => value == null ? ALWAYS_FALSE : `${fieldPathToSoql(field)} > ${serializeSoqlLiteral(value)}`,
|
|
93
|
+
gte: (field, value) => value == null ? ALWAYS_FALSE : `${fieldPathToSoql(field)} >= ${serializeSoqlLiteral(value)}`,
|
|
94
|
+
lt: (field, value) => value == null ? ALWAYS_FALSE : `${fieldPathToSoql(field)} < ${serializeSoqlLiteral(value)}`,
|
|
95
|
+
lte: (field, value) => value == null ? ALWAYS_FALSE : `${fieldPathToSoql(field)} <= ${serializeSoqlLiteral(value)}`,
|
|
96
|
+
isUndefined: (field) => `${fieldPathToSoql(field)} = null`,
|
|
97
|
+
in: convertInFilter,
|
|
98
|
+
like: (field, value) => value === "%" ? "" : `${fieldPathToSoql(field)} LIKE ${serializeSoqlLiteral(value)}`,
|
|
99
|
+
ilike: (field, value) => value === "%" ? "" : `${fieldPathToSoql(field)} LIKE ${serializeSoqlLiteral(value)}`
|
|
100
|
+
} }) ?? void 0;
|
|
101
|
+
if (compiled === void 0) return void 0;
|
|
102
|
+
if (compiled === ALWAYS_FALSE) return { alwaysFalse: true };
|
|
103
|
+
return {
|
|
104
|
+
clause: compiled || void 0,
|
|
105
|
+
alwaysFalse: false
|
|
106
|
+
};
|
|
162
107
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
});
|
|
170
|
-
return fields.length > 0 ? fields.join(", ") : undefined;
|
|
108
|
+
function convertLoadSubsetOrderBy(orderBy) {
|
|
109
|
+
if (!orderBy) return void 0;
|
|
110
|
+
const fields = parseOrderByExpression(orderBy).map((ordering) => {
|
|
111
|
+
return `${fieldPathToSoql(ordering.field)} ${ordering.direction.toUpperCase()}`;
|
|
112
|
+
});
|
|
113
|
+
return fields.length > 0 ? fields.join(", ") : void 0;
|
|
171
114
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
clauses.push(`ORDER BY ${opts.orderBy}`);
|
|
181
|
-
}
|
|
182
|
-
if (opts.limit !== undefined) {
|
|
183
|
-
clauses.push(`LIMIT ${Math.max(0, Math.trunc(opts.limit))}`);
|
|
184
|
-
}
|
|
185
|
-
if (opts.offset !== undefined && opts.offset > 0) {
|
|
186
|
-
clauses.push(`OFFSET ${Math.max(0, Math.trunc(opts.offset))}`);
|
|
187
|
-
}
|
|
188
|
-
return clauses.join(" ");
|
|
115
|
+
function buildSoqlQuery(opts) {
|
|
116
|
+
const objectType = quoteIdentifier(opts.objectType);
|
|
117
|
+
const clauses = [`SELECT ${opts.selectedProperties.map(quoteIdentifier).join(", ")} FROM ${objectType}`];
|
|
118
|
+
if (opts.where?.clause) clauses.push(`WHERE ${opts.where.clause}`);
|
|
119
|
+
if (opts.orderBy) clauses.push(`ORDER BY ${opts.orderBy}`);
|
|
120
|
+
if (opts.limit !== void 0) clauses.push(`LIMIT ${Math.max(0, Math.trunc(opts.limit))}`);
|
|
121
|
+
if (opts.offset !== void 0 && opts.offset > 0) clauses.push(`OFFSET ${Math.max(0, Math.trunc(opts.offset))}`);
|
|
122
|
+
return clauses.join(" ");
|
|
189
123
|
}
|
|
124
|
+
//#endregion
|
|
125
|
+
export { buildSoqlQuery, convertLoadSubsetFilter, convertLoadSubsetOrderBy, isAlwaysFalseFilter, serializeSoqlLiteral };
|
|
126
|
+
|
|
190
127
|
//# 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 { FieldPath, LoadSubsetOptions, parseOrderByExpression, parseWhereExpression } from \"@tanstack/db\";\nimport { Temporal } from \"temporal-polyfill\";\n\nconst ALWAYS_FALSE = \"__ALWAYS_FALSE__\";\n\nexport type CompiledSoqlFilter = {\n clause?: string;\n alwaysFalse: boolean;\n};\n\nfunction quoteIdentifier(identifier: string): string {\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(identifier)) {\n throw new Error(`Invalid Salesforce identifier \"${identifier}\".`);\n }\n return identifier;\n}\n\nfunction fieldPathToSoql(fieldPath: FieldPath): string {\n if (fieldPath.length === 0) {\n throw new Error(\"Empty field path.\");\n }\n return fieldPath.map((segment) => quoteIdentifier(String(segment))).join(\".\");\n}\n\nfunction escapeSoqlString(value: string): string {\n let escaped = \"\";\n for (const character of value) {\n switch (character) {\n case \"\\\\\":\n escaped += \"\\\\\\\\\";\n break;\n case \"'\":\n escaped += \"\\\\'\";\n break;\n case \"\\b\":\n escaped += \"\\\\b\";\n break;\n case \"\\f\":\n escaped += \"\\\\f\";\n break;\n case \"\\n\":\n escaped += \"\\\\n\";\n break;\n case \"\\r\":\n escaped += \"\\\\r\";\n break;\n case \"\\t\":\n escaped += \"\\\\t\";\n break;\n default: {\n const codePoint = character.codePointAt(0)!;\n if (codePoint < 0x20 || codePoint === 0x7f) {\n throw new Error(\n `Cannot serialize control character U+${codePoint.toString(16).padStart(4, \"0\")} to SOQL.`\n );\n }\n escaped += character;\n }\n }\n }\n return escaped;\n}\n\nexport function serializeSoqlLiteral(value: unknown): string {\n if (value === null || value === undefined) {\n return \"null\";\n }\n if (typeof value === \"boolean\") {\n return value ? \"true\" : \"false\";\n }\n if (typeof value === \"number\") {\n if (!Number.isFinite(value)) {\n throw new Error(`Cannot serialize non-finite number ${value} to SOQL.`);\n }\n return String(value);\n }\n if (typeof value === \"bigint\") {\n return String(value);\n }\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (value instanceof Temporal.Instant) {\n return value.toString();\n }\n if (value instanceof Temporal.PlainDate || value instanceof Temporal.PlainDateTime) {\n return value.toString();\n }\n if (typeof value === \"string\") {\n return `'${escapeSoqlString(value)}'`;\n }\n throw new Error(`Unsupported SOQL literal type: ${typeof value}`);\n}\n\nexport function isAlwaysFalseFilter(filter: CompiledSoqlFilter | undefined): boolean {\n return Boolean(filter?.alwaysFalse);\n}\n\nfunction convertInFilter(fieldOrValue: unknown, valuesOrField: unknown): string {\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 fieldOrValue == null\n ? ALWAYS_FALSE\n : `${fieldPathToSoql(valuesOrField as FieldPath)} INCLUDES (${serializeSoqlLiteral(fieldOrValue)})`;\n }\n\n const literals = (valuesOrField as unknown[])\n .filter((entry) => entry !== null && entry !== undefined)\n .map(serializeSoqlLiteral);\n if (literals.length === 0) return ALWAYS_FALSE;\n return `${fieldPathToSoql(fieldOrValue as FieldPath)} IN (${literals.join(\", \")})`;\n}\n\nexport function convertLoadSubsetFilter(filter: LoadSubsetOptions[\"where\"]): CompiledSoqlFilter | undefined {\n if (!filter) return undefined;\n\n const compiled =\n parseWhereExpression<string>(filter, {\n handlers: {\n and: (...filters: string[]) => {\n if (filters.includes(ALWAYS_FALSE)) return ALWAYS_FALSE;\n const clauses = filters.filter((clause) => clause.length > 0);\n if (clauses.length === 0) return \"\";\n if (clauses.length === 1) return clauses[0]!;\n return `(${clauses.join(\" AND \")})`;\n },\n or: (...filters: string[]) => {\n if (filters.every((clause) => clause === ALWAYS_FALSE)) return ALWAYS_FALSE;\n const clauses = filters.filter((clause) => clause !== ALWAYS_FALSE && clause.length > 0);\n if (clauses.length === 0) return \"\";\n if (clauses.length === 1) return clauses[0]!;\n return `(${clauses.join(\" OR \")})`;\n },\n not: (inner: string) => {\n if (inner === ALWAYS_FALSE) return \"\";\n if (!inner) return ALWAYS_FALSE;\n return `(NOT ${inner})`;\n },\n eq: (field: FieldPath, value) =>\n value == null\n ? `${fieldPathToSoql(field)} = null`\n : `${fieldPathToSoql(field)} = ${serializeSoqlLiteral(value)}`,\n gt: (field: FieldPath, value) =>\n value == null\n ? ALWAYS_FALSE\n : `${fieldPathToSoql(field)} > ${serializeSoqlLiteral(value)}`,\n gte: (field: FieldPath, value) =>\n value == null\n ? ALWAYS_FALSE\n : `${fieldPathToSoql(field)} >= ${serializeSoqlLiteral(value)}`,\n lt: (field: FieldPath, value) =>\n value == null\n ? ALWAYS_FALSE\n : `${fieldPathToSoql(field)} < ${serializeSoqlLiteral(value)}`,\n lte: (field: FieldPath, value) =>\n value == null\n ? ALWAYS_FALSE\n : `${fieldPathToSoql(field)} <= ${serializeSoqlLiteral(value)}`,\n isUndefined: (field: FieldPath) => `${fieldPathToSoql(field)} = null`,\n in: convertInFilter,\n like: (field: FieldPath, value: string) =>\n value === \"%\" ? \"\" : `${fieldPathToSoql(field)} LIKE ${serializeSoqlLiteral(value)}`,\n ilike: (field: FieldPath, value: string) =>\n // Salesforce LIKE is case-insensitive for most text fields.\n value === \"%\" ? \"\" : `${fieldPathToSoql(field)} LIKE ${serializeSoqlLiteral(value)}`,\n },\n }) ?? undefined;\n\n if (compiled === undefined) return undefined;\n if (compiled === ALWAYS_FALSE) {\n return { alwaysFalse: true };\n }\n return { clause: compiled || undefined, alwaysFalse: false };\n}\n\nexport function convertLoadSubsetOrderBy(orderBy: LoadSubsetOptions[\"orderBy\"]): string | undefined {\n if (!orderBy) return undefined;\n const fields = parseOrderByExpression(orderBy).map((ordering) => {\n const field = fieldPathToSoql(ordering.field);\n return `${field} ${ordering.direction.toUpperCase()}`;\n });\n return fields.length > 0 ? fields.join(\", \") : undefined;\n}\n\nexport function buildSoqlQuery(opts: {\n objectType: string;\n selectedProperties: string[];\n where?: CompiledSoqlFilter;\n orderBy?: string;\n limit?: number;\n offset?: number;\n}): string {\n const objectType = quoteIdentifier(opts.objectType);\n const select = opts.selectedProperties.map(quoteIdentifier).join(\", \");\n const clauses = [`SELECT ${select} FROM ${objectType}`];\n\n if (opts.where?.clause) {\n clauses.push(`WHERE ${opts.where.clause}`);\n }\n if (opts.orderBy) {\n clauses.push(`ORDER BY ${opts.orderBy}`);\n }\n if (opts.limit !== undefined) {\n clauses.push(`LIMIT ${Math.max(0, Math.trunc(opts.limit))}`);\n }\n if (opts.offset !== undefined && opts.offset > 0) {\n clauses.push(`OFFSET ${Math.max(0, Math.trunc(opts.offset))}`);\n }\n return clauses.join(\" \");\n}\n"],"mappings":"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"}
|
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { SubscribeToSalesforceChangeEvents } from "./objectCollectionOptions.js";
|
|
2
|
+
import { SalesforceClient } from "@party-stack/salesforce-client";
|
|
3
|
+
import { OntologyBackendAdapter, OntologyBackendAdapterProvider, OntologyIR } from "@party-stack/ontology";
|
|
4
|
+
//#region src/adapter/createSalesforceOntologyBackendAdapter.d.ts
|
|
4
5
|
export declare function createSalesforceOntologyBackendAdapter(opts: {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
client: SalesforceClient;
|
|
7
|
+
ir: OntologyIR;
|
|
8
|
+
subscribeToChangeEvents?: SubscribeToSalesforceChangeEvents;
|
|
9
|
+
live?: boolean;
|
|
9
10
|
}): OntologyBackendAdapter;
|
|
10
11
|
export type CreateSalesforceOntologyBackendOptions<Context extends Record<string, unknown> = Record<string, unknown>> = ({
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
client: SalesforceClient;
|
|
13
|
+
subscribeToChangeEvents?: SubscribeToSalesforceChangeEvents;
|
|
13
14
|
} | {
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
createClient: (ir: OntologyIR, context: Context) => SalesforceClient | Promise<SalesforceClient>;
|
|
16
|
+
subscribeToChangeEvents?: SubscribeToSalesforceChangeEvents;
|
|
16
17
|
}) & {
|
|
17
|
-
|
|
18
|
+
live?: boolean;
|
|
18
19
|
};
|
|
19
20
|
export declare function createSalesforceOntologyBackend<Context extends Record<string, unknown> = Record<string, unknown>>(opts: CreateSalesforceOntologyBackendOptions<Context>): OntologyBackendAdapterProvider<Context>;
|
|
21
|
+
//#endregion
|
|
20
22
|
//# sourceMappingURL=createSalesforceOntologyBackendAdapter.d.ts.map
|