@party-stack/foundry-ontology 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +8 -2
  2. package/lib/adapter/objectCollectionOptions.d.ts.map +1 -1
  3. package/lib/adapter/objectCollectionOptions.js +30 -15
  4. package/lib/adapter/objectCollectionOptions.js.map +1 -1
  5. package/lib/adapter/objectCollectionOptions.test.js +20 -2
  6. package/lib/adapter/objectCollectionOptions.test.js.map +1 -1
  7. package/lib/meta/actionTypeCollectionOptions.d.ts.map +1 -1
  8. package/lib/meta/actionTypeCollectionOptions.js +6 -2
  9. package/lib/meta/actionTypeCollectionOptions.js.map +1 -1
  10. package/lib/meta/actionTypeIdQuery.test.js +8 -0
  11. package/lib/meta/actionTypeIdQuery.test.js.map +1 -1
  12. package/lib/meta/convertMetaActionType.d.ts +2 -1
  13. package/lib/meta/convertMetaActionType.d.ts.map +1 -1
  14. package/lib/meta/convertMetaActionType.js +109 -9
  15. package/lib/meta/convertMetaActionType.js.map +1 -1
  16. package/lib/meta/convertMetaActionType.test.js +514 -2
  17. package/lib/meta/convertMetaActionType.test.js.map +1 -1
  18. package/lib/meta/convertOmsActionPrefills.d.ts +5 -0
  19. package/lib/meta/convertOmsActionPrefills.d.ts.map +1 -0
  20. package/lib/meta/convertOmsActionPrefills.js +227 -0
  21. package/lib/meta/convertOmsActionPrefills.js.map +1 -0
  22. package/lib/meta/loadActionTypeOmsMetadata.d.ts +7 -0
  23. package/lib/meta/loadActionTypeOmsMetadata.d.ts.map +1 -0
  24. package/lib/meta/loadActionTypeOmsMetadata.js +39 -0
  25. package/lib/meta/loadActionTypeOmsMetadata.js.map +1 -0
  26. package/lib/meta/loadActionTypeOmsMetadata.test.d.ts +2 -0
  27. package/lib/meta/loadActionTypeOmsMetadata.test.d.ts.map +1 -0
  28. package/lib/meta/loadActionTypeOmsMetadata.test.js +138 -0
  29. package/lib/meta/loadActionTypeOmsMetadata.test.js.map +1 -0
  30. package/lib/users/createFoundryAdminOntologyRoute.d.ts +310 -0
  31. package/lib/users/createFoundryAdminOntologyRoute.d.ts.map +1 -1
  32. package/package.json +11 -10
@@ -0,0 +1,227 @@
1
+ import { Temporal } from "temporal-polyfill";
2
+ function asRecord(value) {
3
+ return value !== null && typeof value === "object" && !Array.isArray(value)
4
+ ? value
5
+ : undefined;
6
+ }
7
+ function parseDate(value) {
8
+ if (typeof value !== "string")
9
+ return undefined;
10
+ try {
11
+ return Temporal.PlainDate.from(value);
12
+ }
13
+ catch {
14
+ return value;
15
+ }
16
+ }
17
+ function parseTimestamp(value) {
18
+ if (typeof value !== "string")
19
+ return undefined;
20
+ try {
21
+ return Temporal.Instant.from(value);
22
+ }
23
+ catch {
24
+ return value;
25
+ }
26
+ }
27
+ function convertFoundryStaticValue(value) {
28
+ const staticValue = asRecord(value);
29
+ switch (staticValue?.type) {
30
+ case "string":
31
+ return staticValue.string;
32
+ case "stringList":
33
+ return asRecord(staticValue.stringList)?.strings;
34
+ case "boolean":
35
+ return staticValue.boolean;
36
+ case "booleanList":
37
+ return asRecord(staticValue.booleanList)?.booleans;
38
+ case "integer":
39
+ return staticValue.integer;
40
+ case "integerList":
41
+ return asRecord(staticValue.integerList)?.integers;
42
+ case "long":
43
+ return staticValue.long;
44
+ case "longList":
45
+ return asRecord(staticValue.longList)?.longs;
46
+ case "double":
47
+ return staticValue.double;
48
+ case "doubleList":
49
+ return asRecord(staticValue.doubleList)?.doubles;
50
+ case "date": {
51
+ const date = asRecord(staticValue.date)?.dateValue ?? staticValue.date;
52
+ return parseDate(date);
53
+ }
54
+ case "dateList": {
55
+ const dates = asRecord(staticValue.dateList)?.dates;
56
+ return Array.isArray(dates)
57
+ ? dates.map(parseDate)
58
+ : undefined;
59
+ }
60
+ case "timestamp":
61
+ return parseTimestamp(staticValue.timestamp);
62
+ case "timestampList": {
63
+ const timestamps = asRecord(staticValue.timestampList)?.timestamps;
64
+ return Array.isArray(timestamps)
65
+ ? timestamps.map(parseTimestamp)
66
+ : undefined;
67
+ }
68
+ case "null":
69
+ return null;
70
+ default:
71
+ return undefined;
72
+ }
73
+ }
74
+ function unwrapFoundryStaticValue(value) {
75
+ const prefill = asRecord(value);
76
+ if (!prefill)
77
+ return undefined;
78
+ if (prefill.type === "staticValue") {
79
+ return convertFoundryStaticValue(prefill.staticValue);
80
+ }
81
+ return convertFoundryStaticValue(prefill);
82
+ }
83
+ function getValidationPrefill(node) {
84
+ const validation = asRecord(node);
85
+ if (!validation)
86
+ return undefined;
87
+ const defaultPrefill = getValidationPrefill(validation.defaultValidation);
88
+ if (defaultPrefill)
89
+ return defaultPrefill;
90
+ const directPrefill = asRecord(validation.prefill);
91
+ if (directPrefill)
92
+ return directPrefill;
93
+ const displayPrefill = asRecord(asRecord(validation.display)?.prefill);
94
+ if (displayPrefill)
95
+ return displayPrefill;
96
+ const defaultValue = asRecord(validation.defaultValue);
97
+ if (defaultValue)
98
+ return defaultValue;
99
+ return asRecord(asRecord(validation.validation)?.defaultValue);
100
+ }
101
+ function convertPrefill(prefill) {
102
+ if (!prefill)
103
+ return undefined;
104
+ if (prefill.type === "staticValue") {
105
+ const value = unwrapFoundryStaticValue(prefill);
106
+ return value === undefined
107
+ ? undefined
108
+ : {
109
+ kind: "literal",
110
+ value: { value },
111
+ };
112
+ }
113
+ if (prefill.type === "objectParameterPropertyValue") {
114
+ const objectProperty = asRecord(prefill.objectParameterPropertyValue);
115
+ return typeof objectProperty?.parameterId === "string" &&
116
+ typeof objectProperty.propertyTypeId === "string"
117
+ ? {
118
+ kind: "valueReference",
119
+ value: {
120
+ path: [
121
+ objectProperty.parameterId,
122
+ objectProperty.propertyTypeId,
123
+ ],
124
+ },
125
+ }
126
+ : undefined;
127
+ }
128
+ const literalValue = unwrapFoundryStaticValue(prefill);
129
+ return literalValue === undefined
130
+ ? undefined
131
+ : {
132
+ kind: "literal",
133
+ value: { value: literalValue },
134
+ };
135
+ }
136
+ function getParameterValidations(actionType) {
137
+ const actionTypeLogic = asRecord(asRecord(actionType)?.actionTypeLogic);
138
+ return asRecord(asRecord(actionTypeLogic?.validation)?.parameterValidations);
139
+ }
140
+ function getOmsActionParameterAllowedValues(actionType, parameterName) {
141
+ const parameterValidation = asRecord(getParameterValidations(actionType)?.[parameterName]);
142
+ const defaultValidation = asRecord(parameterValidation?.defaultValidation);
143
+ return asRecord(asRecord(defaultValidation?.validation)?.allowedValues);
144
+ }
145
+ function getOmsOneOf(allowedValues) {
146
+ if (allowedValues?.type !== "oneOf")
147
+ return undefined;
148
+ const oneOfOrEmpty = asRecord(allowedValues.oneOf);
149
+ if (oneOfOrEmpty?.type !== "oneOf")
150
+ return undefined;
151
+ const oneOf = asRecord(oneOfOrEmpty.oneOf);
152
+ if (!Array.isArray(oneOf?.labelledValues))
153
+ return undefined;
154
+ const options = oneOf.labelledValues.flatMap((entry) => {
155
+ const labelledValue = asRecord(entry);
156
+ const value = unwrapFoundryStaticValue(labelledValue?.value);
157
+ return typeof value === "string"
158
+ ? [
159
+ {
160
+ value,
161
+ label: typeof labelledValue?.label === "string"
162
+ ? labelledValue.label
163
+ : undefined,
164
+ },
165
+ ]
166
+ : [];
167
+ });
168
+ return options.length > 0
169
+ ? {
170
+ options,
171
+ otherValuesAllowed: asRecord(oneOf.otherValueAllowed)?.allowed === true,
172
+ }
173
+ : undefined;
174
+ }
175
+ export function convertOmsActionParameterStringConstraint(actionType, parameterName) {
176
+ const allowedValues = getOmsActionParameterAllowedValues(actionType, parameterName);
177
+ if (allowedValues?.type === "oneOf") {
178
+ const oneOf = getOmsOneOf(allowedValues);
179
+ return oneOf && !oneOf.otherValuesAllowed
180
+ ? {
181
+ kind: "enum",
182
+ value: { options: oneOf.options },
183
+ }
184
+ : undefined;
185
+ }
186
+ if (allowedValues?.type === "text") {
187
+ const textOrEmpty = asRecord(allowedValues.text);
188
+ if (textOrEmpty?.type !== "text")
189
+ return undefined;
190
+ const text = asRecord(textOrEmpty.text);
191
+ const regexValue = text?.regex;
192
+ const regex = typeof regexValue === "string"
193
+ ? regexValue
194
+ : asRecord(regexValue)?.regex;
195
+ return typeof regex === "string" && regex.length > 0
196
+ ? {
197
+ kind: "regex",
198
+ value: { regex },
199
+ }
200
+ : undefined;
201
+ }
202
+ return undefined;
203
+ }
204
+ export function convertOmsActionParameterStringSuggestions(actionType, parameterName) {
205
+ const oneOf = getOmsOneOf(getOmsActionParameterAllowedValues(actionType, parameterName));
206
+ return oneOf?.otherValuesAllowed
207
+ ? oneOf.options
208
+ : undefined;
209
+ }
210
+ function getMetadataParameter(actionType, parameterName) {
211
+ const metadata = asRecord(asRecord(actionType)?.metadata);
212
+ return asRecord(asRecord(metadata?.parameters)?.[parameterName]);
213
+ }
214
+ export function convertOmsActionParameterDefaults(actionType, parameters) {
215
+ const parameterValidations = getParameterValidations(actionType);
216
+ const result = new Map();
217
+ for (const parameter of parameters) {
218
+ const validation = asRecord(parameterValidations?.[parameter.name]);
219
+ const metadataDefault = getValidationPrefill(getMetadataParameter(actionType, parameter.name));
220
+ const parameterDefault = convertPrefill(metadataDefault ?? getValidationPrefill(validation));
221
+ if (parameterDefault) {
222
+ result.set(parameter.name, parameterDefault);
223
+ }
224
+ }
225
+ return result;
226
+ }
227
+ //# sourceMappingURL=convertOmsActionPrefills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertOmsActionPrefills.js","sourceRoot":"","sources":["../../src/meta/convertOmsActionPrefills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { bulkLoadOntologyEntities } from "@osdk/client.unstable";
2
+ import type { OntologyClient } from "@party-stack/foundry-client";
3
+ type BulkLoadResponse = Awaited<ReturnType<typeof bulkLoadOntologyEntities>>;
4
+ export type ActionTypeOmsMetadata = NonNullable<NonNullable<BulkLoadResponse["actionTypes"][number]>["actionType"]>;
5
+ export declare function loadActionTypeOmsMetadata(client: OntologyClient, actionTypeRids: string[]): Promise<Map<string, ActionTypeOmsMetadata>>;
6
+ export {};
7
+ //# sourceMappingURL=loadActionTypeOmsMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadActionTypeOmsMetadata.d.ts","sourceRoot":"","sources":["../../src/meta/loadActionTypeOmsMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAKlE,KAAK,gBAAgB,GAAG,OAAO,CAC3B,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAC9C,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAC3C,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CACrE,CAAC;AAEF,wBAAsB,yBAAyB,CAC3C,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CA0C7C"}
@@ -0,0 +1,39 @@
1
+ import { bulkLoadOntologyEntities } from "@osdk/client.unstable";
2
+ const ONTOLOGY_METADATA_API_PATH = "/ontology-metadata/api";
3
+ const OMS_BULK_LOAD_LIMIT = 100;
4
+ export async function loadActionTypeOmsMetadata(client, actionTypeRids) {
5
+ const metadata = new Map();
6
+ const context = {
7
+ baseUrl: new URL(client.baseUrl).origin,
8
+ servicePath: ONTOLOGY_METADATA_API_PATH,
9
+ tokenProvider: client.tokenProvider,
10
+ fetchFn: client.fetch,
11
+ };
12
+ for (let index = 0; index < actionTypeRids.length; index += OMS_BULK_LOAD_LIMIT) {
13
+ const rids = actionTypeRids.slice(index, index + OMS_BULK_LOAD_LIMIT);
14
+ try {
15
+ const response = await bulkLoadOntologyEntities(context, undefined, {
16
+ actionTypes: rids.map((rid) => ({ rid })),
17
+ datasourceTypes: [],
18
+ linkTypes: [],
19
+ objectTypes: [],
20
+ sharedPropertyTypes: [],
21
+ interfaceTypes: [],
22
+ typeGroups: [],
23
+ });
24
+ response.actionTypes.forEach((result, resultIndex) => {
25
+ const rid = rids[resultIndex];
26
+ if (rid && result?.actionType) {
27
+ metadata.set(rid, result.actionType);
28
+ }
29
+ });
30
+ }
31
+ catch (error) {
32
+ // OMS is an unstable/private compatibility API. Public action
33
+ // metadata must remain usable when this endpoint is unavailable.
34
+ console.warn("Failed to load Foundry OMS action metadata; continuing with public metadata.", error);
35
+ }
36
+ }
37
+ return metadata;
38
+ }
39
+ //# sourceMappingURL=loadActionTypeOmsMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadActionTypeOmsMetadata.js","sourceRoot":"","sources":["../../src/meta/loadActionTypeOmsMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAGjE,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAC5D,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAShC,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,MAAsB,EACtB,cAAwB;IAExB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAC;IAC1D,MAAM,OAAO,GAAG;QACZ,OAAO,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM;QACvC,WAAW,EAAE,0BAA0B;QACvC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,OAAO,EAAE,MAAM,CAAC,KAAK;KACxB,CAAC;IAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,IAAI,mBAAmB,EAAE,CAAC;QAC9E,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,mBAAmB,CAAC,CAAC;QACtE,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAC3C,OAAO,EACP,SAAS,EACT;gBACI,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;gBACzC,eAAe,EAAE,EAAE;gBACnB,SAAS,EAAE,EAAE;gBACb,WAAW,EAAE,EAAE;gBACf,mBAAmB,EAAE,EAAE;gBACvB,cAAc,EAAE,EAAE;gBAClB,UAAU,EAAE,EAAE;aACjB,CACJ,CAAC;YACF,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;gBACjD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC9B,IAAI,GAAG,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC;oBAC5B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBACzC,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,8DAA8D;YAC9D,iEAAiE;YACjE,OAAO,CAAC,IAAI,CACR,8EAA8E,EAC9E,KAAK,CACR,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loadActionTypeOmsMetadata.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadActionTypeOmsMetadata.test.d.ts","sourceRoot":"","sources":["../../src/meta/loadActionTypeOmsMetadata.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,138 @@
1
+ import { beforeEach, describe, expect, it, vi } from "vitest";
2
+ const { bulkLoadOntologyEntities } = vi.hoisted(() => ({
3
+ bulkLoadOntologyEntities: vi.fn(),
4
+ }));
5
+ vi.mock("@osdk/client.unstable", () => ({
6
+ bulkLoadOntologyEntities,
7
+ }));
8
+ import { convertOmsActionParameterStringConstraint, convertOmsActionParameterStringSuggestions, } from "./convertOmsActionPrefills.js";
9
+ import { loadActionTypeOmsMetadata } from "./loadActionTypeOmsMetadata.js";
10
+ const client = {
11
+ baseUrl: "https://example.com/foundry/",
12
+ ontologyRid: "ri.ontology.main.ontology.example",
13
+ tokenProvider: vi.fn().mockResolvedValue("token"),
14
+ fetch: vi.fn(),
15
+ };
16
+ describe("loadActionTypeOmsMetadata", () => {
17
+ beforeEach(() => {
18
+ bulkLoadOntologyEntities.mockReset();
19
+ });
20
+ it("loads OMS metadata in bulk and preserves RID alignment", async () => {
21
+ const actionType = {
22
+ actionTypeLogic: { validation: { parameterValidations: {} } },
23
+ metadata: {},
24
+ };
25
+ bulkLoadOntologyEntities.mockResolvedValue({
26
+ actionTypes: [{ actionType }, null],
27
+ });
28
+ const result = await loadActionTypeOmsMetadata(client, ["ri.action.one", "ri.action.two"]);
29
+ expect(bulkLoadOntologyEntities).toHaveBeenCalledWith({
30
+ baseUrl: "https://example.com",
31
+ servicePath: "/ontology-metadata/api",
32
+ tokenProvider: client.tokenProvider,
33
+ fetchFn: client.fetch,
34
+ }, undefined, {
35
+ actionTypes: [
36
+ { rid: "ri.action.one" },
37
+ { rid: "ri.action.two" },
38
+ ],
39
+ datasourceTypes: [],
40
+ linkTypes: [],
41
+ objectTypes: [],
42
+ sharedPropertyTypes: [],
43
+ interfaceTypes: [],
44
+ typeGroups: [],
45
+ });
46
+ expect(result.get("ri.action.one")).toBe(actionType);
47
+ expect(result.has("ri.action.two")).toBe(false);
48
+ });
49
+ it("preserves the unstable bulk response action shape for conversion", async () => {
50
+ const actionType = {
51
+ actionTypeLogic: {
52
+ validation: {
53
+ parameterValidations: {
54
+ country: {
55
+ defaultValidation: {
56
+ validation: {
57
+ allowedValues: {
58
+ type: "oneOf",
59
+ oneOf: {
60
+ type: "oneOf",
61
+ oneOf: {
62
+ labelledValues: [
63
+ {
64
+ label: "United States",
65
+ value: {
66
+ type: "string",
67
+ string: "US",
68
+ },
69
+ },
70
+ {
71
+ label: "Canada",
72
+ value: {
73
+ type: "string",
74
+ string: "CA",
75
+ },
76
+ },
77
+ ],
78
+ otherValueAllowed: {
79
+ allowed: true,
80
+ },
81
+ },
82
+ },
83
+ },
84
+ },
85
+ },
86
+ },
87
+ },
88
+ },
89
+ },
90
+ metadata: {},
91
+ };
92
+ bulkLoadOntologyEntities.mockResolvedValue({
93
+ actionTypes: [
94
+ {
95
+ actionType,
96
+ ontologyRid: "ri.ontology.main.ontology.example",
97
+ ontologyVersion: "1",
98
+ resolvedBranch: "ri.ontology.main.branch.example",
99
+ },
100
+ ],
101
+ interfaceTypes: [],
102
+ linkTypes: [],
103
+ objectTypes: [],
104
+ sharedPropertyTypes: [],
105
+ typeGroups: [],
106
+ });
107
+ const loaded = (await loadActionTypeOmsMetadata(client, ["ri.action.country"])).get("ri.action.country");
108
+ expect(loaded?.actionTypeLogic.validation.parameterValidations
109
+ .country?.defaultValidation.validation.allowedValues).toBeDefined();
110
+ expect(convertOmsActionParameterStringConstraint(loaded, "country")).toBeUndefined();
111
+ expect(convertOmsActionParameterStringSuggestions(loaded, "country")).toEqual([
112
+ {
113
+ value: "US",
114
+ label: "United States",
115
+ },
116
+ {
117
+ value: "CA",
118
+ label: "Canada",
119
+ },
120
+ ]);
121
+ });
122
+ it("keeps public metadata usable when the private OMS endpoint fails", async () => {
123
+ const warn = vi
124
+ .spyOn(console, "warn")
125
+ .mockImplementation(() => undefined);
126
+ bulkLoadOntologyEntities.mockRejectedValue(new Error("Unavailable"));
127
+ await expect(loadActionTypeOmsMetadata(client, ["ri.action.one"])).resolves.toEqual(new Map());
128
+ expect(warn).toHaveBeenCalledOnce();
129
+ warn.mockRestore();
130
+ });
131
+ it("respects the OMS bulk-load limit", async () => {
132
+ bulkLoadOntologyEntities.mockResolvedValue({ actionTypes: [] });
133
+ const rids = Array.from({ length: 101 }, (_, index) => `ri.action.${index}`);
134
+ await loadActionTypeOmsMetadata(client, rids);
135
+ expect(bulkLoadOntologyEntities).toHaveBeenCalledTimes(2);
136
+ });
137
+ });
138
+ //# sourceMappingURL=loadActionTypeOmsMetadata.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadActionTypeOmsMetadata.test.js","sourceRoot":"","sources":["../../src/meta/loadActionTypeOmsMetadata.test.ts"],"names":[],"mappings":"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"}