@osdk/unit-testing 0.0.0 → 0.10.0-main-46df2e9acb59eb78dbfd83fb4df4bc10247377d7
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/CHANGELOG.md +243 -0
- package/build/browser/api/MockClient.js +2 -0
- package/build/browser/api/MockClient.js.map +1 -0
- package/build/browser/api/MockOsdkObjectOptions.js +2 -0
- package/build/browser/api/MockOsdkObjectOptions.js.map +1 -0
- package/build/browser/api/StubBuilders.js +2 -0
- package/build/browser/api/StubBuilders.js.map +1 -0
- package/build/browser/api/StubClient.js +2 -0
- package/build/browser/api/StubClient.js.map +1 -0
- package/build/browser/api/index.js +2 -0
- package/build/browser/api/index.js.map +1 -0
- package/build/browser/example-function-tests/basicAggregate/basicAggregate.js +49 -0
- package/build/browser/example-function-tests/basicAggregate/basicAggregate.js.map +1 -0
- package/build/browser/example-function-tests/basicFetchPage/basicFetchPage.js +29 -0
- package/build/browser/example-function-tests/basicFetchPage/basicFetchPage.js.map +1 -0
- package/build/browser/example-function-tests/basicQuery/basicQuery.js +27 -0
- package/build/browser/example-function-tests/basicQuery/basicQuery.js.map +1 -0
- package/build/browser/example-function-tests/objectAsInput/objectAsInput.js +26 -0
- package/build/browser/example-function-tests/objectAsInput/objectAsInput.js.map +1 -0
- package/build/browser/example-function-tests/objectSetAsInput/objectSetAsInput.js +29 -0
- package/build/browser/example-function-tests/objectSetAsInput/objectSetAsInput.js.map +1 -0
- package/build/browser/example-function-tests/objectWithLinks/objectWithLinks.js +43 -0
- package/build/browser/example-function-tests/objectWithLinks/objectWithLinks.js.map +1 -0
- package/build/browser/example-function-tests/ontologyEdits/ontologyEdits.js +37 -0
- package/build/browser/example-function-tests/ontologyEdits/ontologyEdits.js.map +1 -0
- package/build/browser/example-function-tests/platformApiWithMsw/platformApiWithMsw.js +25 -0
- package/build/browser/example-function-tests/platformApiWithMsw/platformApiWithMsw.js.map +1 -0
- package/build/browser/example-function-tests/queryWithArrayParams/queryWithArrayParams.js +27 -0
- package/build/browser/example-function-tests/queryWithArrayParams/queryWithArrayParams.js.map +1 -0
- package/build/browser/index.js +21 -0
- package/build/browser/index.js.map +1 -0
- package/build/browser/mock/createMockAttachment.js +31 -0
- package/build/browser/mock/createMockAttachment.js.map +1 -0
- package/build/browser/mock/createMockClient.js +142 -0
- package/build/browser/mock/createMockClient.js.map +1 -0
- package/build/browser/mock/createMockObjectSet.js +36 -0
- package/build/browser/mock/createMockObjectSet.js.map +1 -0
- package/build/browser/mock/createMockObjectSetWithResolver.js +122 -0
- package/build/browser/mock/createMockObjectSetWithResolver.js.map +1 -0
- package/build/browser/mock/createMockOsdkObject.js +235 -0
- package/build/browser/mock/createMockOsdkObject.js.map +1 -0
- package/build/browser/public/experimental.js +21 -0
- package/build/browser/public/experimental.js.map +1 -0
- package/build/cjs/chunk-SEUQK2F4.cjs +445 -0
- package/build/cjs/chunk-SEUQK2F4.cjs.map +1 -0
- package/build/cjs/index.cjs +24 -0
- package/build/cjs/index.cjs.map +1 -0
- package/build/cjs/index.d.cts +99 -0
- package/build/cjs/public/experimental.cjs +24 -0
- package/build/cjs/public/experimental.cjs.map +1 -0
- package/build/cjs/public/experimental.d.cts +3 -0
- package/build/esm/api/MockClient.js +2 -0
- package/build/esm/api/MockClient.js.map +1 -0
- package/build/esm/api/MockOsdkObjectOptions.js +2 -0
- package/build/esm/api/MockOsdkObjectOptions.js.map +1 -0
- package/build/esm/api/StubBuilders.js +2 -0
- package/build/esm/api/StubBuilders.js.map +1 -0
- package/build/esm/api/StubClient.js +2 -0
- package/build/esm/api/StubClient.js.map +1 -0
- package/build/esm/api/index.js +2 -0
- package/build/esm/api/index.js.map +1 -0
- package/build/esm/example-function-tests/basicAggregate/basicAggregate.js +49 -0
- package/build/esm/example-function-tests/basicAggregate/basicAggregate.js.map +1 -0
- package/build/esm/example-function-tests/basicFetchPage/basicFetchPage.js +29 -0
- package/build/esm/example-function-tests/basicFetchPage/basicFetchPage.js.map +1 -0
- package/build/esm/example-function-tests/basicQuery/basicQuery.js +27 -0
- package/build/esm/example-function-tests/basicQuery/basicQuery.js.map +1 -0
- package/build/esm/example-function-tests/objectAsInput/objectAsInput.js +26 -0
- package/build/esm/example-function-tests/objectAsInput/objectAsInput.js.map +1 -0
- package/build/esm/example-function-tests/objectSetAsInput/objectSetAsInput.js +29 -0
- package/build/esm/example-function-tests/objectSetAsInput/objectSetAsInput.js.map +1 -0
- package/build/esm/example-function-tests/objectWithLinks/objectWithLinks.js +43 -0
- package/build/esm/example-function-tests/objectWithLinks/objectWithLinks.js.map +1 -0
- package/build/esm/example-function-tests/ontologyEdits/ontologyEdits.js +37 -0
- package/build/esm/example-function-tests/ontologyEdits/ontologyEdits.js.map +1 -0
- package/build/esm/example-function-tests/platformApiWithMsw/platformApiWithMsw.js +25 -0
- package/build/esm/example-function-tests/platformApiWithMsw/platformApiWithMsw.js.map +1 -0
- package/build/esm/example-function-tests/queryWithArrayParams/queryWithArrayParams.js +27 -0
- package/build/esm/example-function-tests/queryWithArrayParams/queryWithArrayParams.js.map +1 -0
- package/build/esm/index.js +21 -0
- package/build/esm/index.js.map +1 -0
- package/build/esm/mock/createMockAttachment.js +31 -0
- package/build/esm/mock/createMockAttachment.js.map +1 -0
- package/build/esm/mock/createMockClient.js +142 -0
- package/build/esm/mock/createMockClient.js.map +1 -0
- package/build/esm/mock/createMockObjectSet.js +36 -0
- package/build/esm/mock/createMockObjectSet.js.map +1 -0
- package/build/esm/mock/createMockObjectSetWithResolver.js +122 -0
- package/build/esm/mock/createMockObjectSetWithResolver.js.map +1 -0
- package/build/esm/mock/createMockOsdkObject.js +235 -0
- package/build/esm/mock/createMockOsdkObject.js.map +1 -0
- package/build/esm/public/experimental.js +21 -0
- package/build/esm/public/experimental.js.map +1 -0
- package/build/types/api/MockClient.d.ts +21 -0
- package/build/types/api/MockClient.d.ts.map +1 -0
- package/build/types/api/MockOsdkObjectOptions.d.ts +14 -0
- package/build/types/api/MockOsdkObjectOptions.d.ts.map +1 -0
- package/build/types/api/StubBuilders.d.ts +28 -0
- package/build/types/api/StubBuilders.d.ts.map +1 -0
- package/build/types/api/StubClient.d.ts +5 -0
- package/build/types/api/StubClient.d.ts.map +1 -0
- package/build/types/api/index.d.ts +4 -0
- package/build/types/api/index.d.ts.map +1 -0
- package/build/types/example-function-tests/basicAggregate/basicAggregate.d.ts +3 -0
- package/build/types/example-function-tests/basicAggregate/basicAggregate.d.ts.map +1 -0
- package/build/types/example-function-tests/basicFetchPage/basicFetchPage.d.ts +4 -0
- package/build/types/example-function-tests/basicFetchPage/basicFetchPage.d.ts.map +1 -0
- package/build/types/example-function-tests/basicQuery/basicQuery.d.ts +3 -0
- package/build/types/example-function-tests/basicQuery/basicQuery.d.ts.map +1 -0
- package/build/types/example-function-tests/objectAsInput/objectAsInput.d.ts +3 -0
- package/build/types/example-function-tests/objectAsInput/objectAsInput.d.ts.map +1 -0
- package/build/types/example-function-tests/objectSetAsInput/objectSetAsInput.d.ts +4 -0
- package/build/types/example-function-tests/objectSetAsInput/objectSetAsInput.d.ts.map +1 -0
- package/build/types/example-function-tests/objectWithLinks/objectWithLinks.d.ts +7 -0
- package/build/types/example-function-tests/objectWithLinks/objectWithLinks.d.ts.map +1 -0
- package/build/types/example-function-tests/ontologyEdits/ontologyEdits.d.ts +7 -0
- package/build/types/example-function-tests/ontologyEdits/ontologyEdits.d.ts.map +1 -0
- package/build/types/example-function-tests/platformApiWithMsw/platformApiWithMsw.d.ts +2 -0
- package/build/types/example-function-tests/platformApiWithMsw/platformApiWithMsw.d.ts.map +1 -0
- package/build/types/example-function-tests/queryWithArrayParams/queryWithArrayParams.d.ts +2 -0
- package/build/types/example-function-tests/queryWithArrayParams/queryWithArrayParams.d.ts.map +1 -0
- package/build/types/index.d.ts +5 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/mock/createMockAttachment.d.ts +2 -0
- package/build/types/mock/createMockAttachment.d.ts.map +1 -0
- package/build/types/mock/createMockClient.d.ts +2 -0
- package/build/types/mock/createMockClient.d.ts.map +1 -0
- package/build/types/mock/createMockObjectSet.d.ts +9 -0
- package/build/types/mock/createMockObjectSet.d.ts.map +1 -0
- package/build/types/mock/createMockObjectSetWithResolver.d.ts +10 -0
- package/build/types/mock/createMockObjectSetWithResolver.d.ts.map +1 -0
- package/build/types/mock/createMockOsdkObject.d.ts +32 -0
- package/build/types/mock/createMockOsdkObject.d.ts.map +1 -0
- package/build/types/public/experimental.d.ts +5 -0
- package/build/types/public/experimental.d.ts.map +1 -0
- package/experimental.d.ts +17 -0
- package/package.json +92 -2
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
# @osdk/unit-testing
|
|
2
|
+
|
|
3
|
+
## 0.10.0-main-46df2e9acb59eb78dbfd83fb4df4bc10247377d7
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 46df2e9: Rename `@osdk/functions-testing.experimental` to `@osdk/unit-testing`.
|
|
8
|
+
|
|
9
|
+
## 0.9.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 56c5630: Drop redundant `--config $(find-up dprint.json)` from `lint`, `fix-lint`, and `format` scripts. dprint already auto-discovers `dprint.json` by walking up from cwd; the substitution was a no-op anyway since `find-up` is an npm package, not a CLI. Also fix the `uploadMediaOntologyEdits` documentation example so its `// @ts-ignore` survives dprint reformatting (the broken `format` step had been masking this).
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [56c5630]
|
|
18
|
+
- Updated dependencies [17d7ba2]
|
|
19
|
+
- @osdk/api@2.16.0
|
|
20
|
+
- @osdk/client@2.16.0
|
|
21
|
+
- @osdk/functions@1.9.0
|
|
22
|
+
|
|
23
|
+
## 0.8.0
|
|
24
|
+
|
|
25
|
+
### Minor Changes
|
|
26
|
+
|
|
27
|
+
- d1a7d90: Accessing a link that wasn't configured on a `createMockOsdkObject` mock no longer silently returns `undefined`. The accessor now exists, and its `fetchOne()` rejects / `fetchOneWithErrors()` resolves with a descriptive error naming the link, object type, and primary key.
|
|
28
|
+
- 9a06a62: Move user-facing types (`MockClient`, `StubClient`, `StubBuilderFor`, `FetchPageStubBuilder`, `FetchOneStubBuilder`, `AggregateStubBuilder`, `QueryStubBuilder`, `MockOsdkObjectOptions`) to dedicated files under `src/api/`. No public API changes.
|
|
29
|
+
- 9a06a62: Fix `StubBuilderFor<T>` so `fetchOneWithErrors` / `fetchPageWithErrors` / `asyncIter` resolve to the correct stub builders instead of falling through to `AggregateStubBuilder`. Allow `Error` as a single-link stub value in `createMockOsdkObject` so link `fetchOne` rejects and `fetchOneWithErrors` returns `{ error }` (previously wrapped the Error in `{ value: ... }`, making `isOk` always true).
|
|
30
|
+
|
|
31
|
+
### Patch Changes
|
|
32
|
+
|
|
33
|
+
- Updated dependencies [f12977d]
|
|
34
|
+
- Updated dependencies [eb36e21]
|
|
35
|
+
- Updated dependencies [d892397]
|
|
36
|
+
- Updated dependencies [c5a6047]
|
|
37
|
+
- Updated dependencies [45be476]
|
|
38
|
+
- Updated dependencies [2c51525]
|
|
39
|
+
- Updated dependencies [20e9678]
|
|
40
|
+
- @osdk/client@2.14.0
|
|
41
|
+
- @osdk/functions@1.8.0
|
|
42
|
+
- @osdk/api@2.14.0
|
|
43
|
+
|
|
44
|
+
## 0.7.0
|
|
45
|
+
|
|
46
|
+
### Minor Changes
|
|
47
|
+
|
|
48
|
+
- 9e9d948: `deepEqual` (used to match stub args in `when` / `whenQuery`) now recognizes Vitest/Jest asymmetric matchers (`expect.any(...)`, `expect.anything()`, `expect.stringContaining(...)`, `expect.objectContaining(...)`, etc.). Previously matchers were compared by raw object shape and silently never matched.
|
|
49
|
+
|
|
50
|
+
### Patch Changes
|
|
51
|
+
|
|
52
|
+
- Updated dependencies [19b7913]
|
|
53
|
+
- Updated dependencies [01fbb74]
|
|
54
|
+
- Updated dependencies [91f34a9]
|
|
55
|
+
- Updated dependencies [df1a4f8]
|
|
56
|
+
- Updated dependencies [46a00bc]
|
|
57
|
+
- Updated dependencies [267f324]
|
|
58
|
+
- @osdk/client@2.12.0
|
|
59
|
+
- @osdk/api@2.12.0
|
|
60
|
+
|
|
61
|
+
## 0.6.0
|
|
62
|
+
|
|
63
|
+
### Minor Changes
|
|
64
|
+
|
|
65
|
+
- 8e4472c: Add `thenThrow(error)` to `whenQuery(...)` stub builder. Lets tests explicitly configure a query's `executeFunction` to reject with a specific error, instead of only being able to exercise the implicit "no stub registered" error path.
|
|
66
|
+
|
|
67
|
+
## 0.5.0
|
|
68
|
+
|
|
69
|
+
### Minor Changes
|
|
70
|
+
|
|
71
|
+
- 40fb8c1: Attach a `SharedClientContext` to the mock client so Foundry Platform API helpers (e.g. `Users.getCurrent(client)`) don't crash inside `foundryPlatformFetch` on an undefined `baseUrl` before a request is made. Callers mock the HTTP layer themselves (MSW, `vi.spyOn(globalThis, "fetch")`, etc.).
|
|
72
|
+
|
|
73
|
+
### Patch Changes
|
|
74
|
+
|
|
75
|
+
- Updated dependencies [58248f8]
|
|
76
|
+
- Updated dependencies [e456da5]
|
|
77
|
+
- @osdk/client@2.11.0
|
|
78
|
+
- @osdk/api@2.11.0
|
|
79
|
+
|
|
80
|
+
## 0.4.0
|
|
81
|
+
|
|
82
|
+
### Minor Changes
|
|
83
|
+
|
|
84
|
+
- 29ab35a: Use workspace:^ for peer dependencies to prevent changesets from propagating major bumps when a peer dep receives a minor version change. The internal codegen (`osdk-unstable-typescript generate --internal`) now emits `workspace:^` for peer deps while keeping `workspace:~` for regular/dev deps.
|
|
85
|
+
- f01a8f4: improvements(build): significant reduction in build task graphs
|
|
86
|
+
|
|
87
|
+
### Patch Changes
|
|
88
|
+
|
|
89
|
+
- Updated dependencies [29ab35a]
|
|
90
|
+
- Updated dependencies [0fb9c8a]
|
|
91
|
+
- Updated dependencies [f01a8f4]
|
|
92
|
+
- Updated dependencies [f34a1ce]
|
|
93
|
+
- Updated dependencies [7e7f70b]
|
|
94
|
+
- @osdk/client@2.10.0
|
|
95
|
+
- @osdk/functions@1.7.0
|
|
96
|
+
- @osdk/api@2.10.0
|
|
97
|
+
|
|
98
|
+
## 0.3.0
|
|
99
|
+
|
|
100
|
+
### Minor Changes
|
|
101
|
+
|
|
102
|
+
- c08d97b: Rework mock client stubbing API: rename whenObjectSet to when, add standalone createMockObjectSet with whenObjectSet for registering stubs on object sets directly, and support ObjectSet as many-link value in createMockOsdkObject
|
|
103
|
+
|
|
104
|
+
### Patch Changes
|
|
105
|
+
|
|
106
|
+
- Updated dependencies [f8b9f12]
|
|
107
|
+
- Updated dependencies [bcf359f]
|
|
108
|
+
- Updated dependencies [0b349bd]
|
|
109
|
+
- Updated dependencies [12f9b36]
|
|
110
|
+
- Updated dependencies [cbc8e9c]
|
|
111
|
+
- Updated dependencies [9171453]
|
|
112
|
+
- Updated dependencies [e8d14a0]
|
|
113
|
+
- Updated dependencies [51ccca8]
|
|
114
|
+
- Updated dependencies [fb85818]
|
|
115
|
+
- Updated dependencies [ec06b26]
|
|
116
|
+
- Updated dependencies [2394ca7]
|
|
117
|
+
- @osdk/client@2.9.0
|
|
118
|
+
- @osdk/api@2.9.0
|
|
119
|
+
|
|
120
|
+
## 0.2.0
|
|
121
|
+
|
|
122
|
+
### Minor Changes
|
|
123
|
+
|
|
124
|
+
- 0b3ce80: Query Stubbing and Exports
|
|
125
|
+
- 0df859a: Read primaryKeyApiName from object type const instead of options, move links into options, and add createMockAttachment helper
|
|
126
|
+
- 48e1409: Add basic utils for OSDK Testing
|
|
127
|
+
- 35f2f1a: Add Media inputs/outputs for Queries
|
|
128
|
+
- 68d0bef: Basic object set mocking
|
|
129
|
+
|
|
130
|
+
### Patch Changes
|
|
131
|
+
|
|
132
|
+
- Updated dependencies [322c5bc]
|
|
133
|
+
- Updated dependencies [322c5bc]
|
|
134
|
+
- Updated dependencies [776ae8a]
|
|
135
|
+
- Updated dependencies [c40444b]
|
|
136
|
+
- Updated dependencies [4bb9769]
|
|
137
|
+
- Updated dependencies [09e5659]
|
|
138
|
+
- Updated dependencies [7538b79]
|
|
139
|
+
- Updated dependencies [abb0e0f]
|
|
140
|
+
- Updated dependencies [fceb4ce]
|
|
141
|
+
- Updated dependencies [520398c]
|
|
142
|
+
- Updated dependencies [73e617e]
|
|
143
|
+
- Updated dependencies [cbfa135]
|
|
144
|
+
- Updated dependencies [c8384de]
|
|
145
|
+
- Updated dependencies [f294f5a]
|
|
146
|
+
- Updated dependencies [dfc8019]
|
|
147
|
+
- Updated dependencies [599426b]
|
|
148
|
+
- Updated dependencies [e64bf0b]
|
|
149
|
+
- Updated dependencies [27a5902]
|
|
150
|
+
- Updated dependencies [0a0d7cb]
|
|
151
|
+
- Updated dependencies [f4604c2]
|
|
152
|
+
- Updated dependencies [642be5f]
|
|
153
|
+
- Updated dependencies [baba327]
|
|
154
|
+
- Updated dependencies [8825f8c]
|
|
155
|
+
- Updated dependencies [2b01323]
|
|
156
|
+
- Updated dependencies [8c60682]
|
|
157
|
+
- Updated dependencies [dda14be]
|
|
158
|
+
- Updated dependencies [ffc6efe]
|
|
159
|
+
- Updated dependencies [2855223]
|
|
160
|
+
- Updated dependencies [15e1686]
|
|
161
|
+
- Updated dependencies [26cec61]
|
|
162
|
+
- Updated dependencies [0df859a]
|
|
163
|
+
- Updated dependencies [d1ad4d1]
|
|
164
|
+
- Updated dependencies [0d174a2]
|
|
165
|
+
- Updated dependencies [d284bf2]
|
|
166
|
+
- Updated dependencies [4ef6adc]
|
|
167
|
+
- Updated dependencies [2ebe62c]
|
|
168
|
+
- Updated dependencies [60b5ffb]
|
|
169
|
+
- Updated dependencies [abb0e0f]
|
|
170
|
+
- Updated dependencies [8c30908]
|
|
171
|
+
- Updated dependencies [4cd7389]
|
|
172
|
+
- Updated dependencies [4a856cb]
|
|
173
|
+
- Updated dependencies [92e7297]
|
|
174
|
+
- Updated dependencies [b68cebd]
|
|
175
|
+
- Updated dependencies [35f2f1a]
|
|
176
|
+
- Updated dependencies [c9d954d]
|
|
177
|
+
- Updated dependencies [34a5ad2]
|
|
178
|
+
- Updated dependencies [044eb80]
|
|
179
|
+
- Updated dependencies [9d234b9]
|
|
180
|
+
- Updated dependencies [f5f95e2]
|
|
181
|
+
- Updated dependencies [46f0a47]
|
|
182
|
+
- Updated dependencies [4470c0d]
|
|
183
|
+
- Updated dependencies [d80c234]
|
|
184
|
+
- Updated dependencies [61e33ab]
|
|
185
|
+
- Updated dependencies [71e28ef]
|
|
186
|
+
- Updated dependencies [5848e3c]
|
|
187
|
+
- @osdk/api@2.8.0
|
|
188
|
+
- @osdk/client@2.8.0
|
|
189
|
+
- @osdk/functions@1.6.0
|
|
190
|
+
|
|
191
|
+
## 0.2.0-beta.4
|
|
192
|
+
|
|
193
|
+
### Minor Changes
|
|
194
|
+
|
|
195
|
+
- 0df859a: Read primaryKeyApiName from object type const instead of options, move links into options, and add createMockAttachment helper
|
|
196
|
+
|
|
197
|
+
### Patch Changes
|
|
198
|
+
|
|
199
|
+
- Updated dependencies [0df859a]
|
|
200
|
+
- @osdk/api@2.8.0-beta.25
|
|
201
|
+
- @osdk/client@2.8.0-beta.25
|
|
202
|
+
|
|
203
|
+
## 0.2.0-beta.3
|
|
204
|
+
|
|
205
|
+
### Minor Changes
|
|
206
|
+
|
|
207
|
+
- 35f2f1a: Add Media inputs/outputs for Queries
|
|
208
|
+
|
|
209
|
+
### Patch Changes
|
|
210
|
+
|
|
211
|
+
- Updated dependencies [e64bf0b]
|
|
212
|
+
- Updated dependencies [baba327]
|
|
213
|
+
- Updated dependencies [d1ad4d1]
|
|
214
|
+
- Updated dependencies [35f2f1a]
|
|
215
|
+
- Updated dependencies [71e28ef]
|
|
216
|
+
- @osdk/client@2.8.0-beta.14
|
|
217
|
+
- @osdk/api@2.8.0-beta.14
|
|
218
|
+
- @osdk/functions@1.6.0-beta.3
|
|
219
|
+
|
|
220
|
+
## 0.2.0-beta.2
|
|
221
|
+
|
|
222
|
+
### Minor Changes
|
|
223
|
+
|
|
224
|
+
- 0b3ce80: Query Stubbing and Exports
|
|
225
|
+
|
|
226
|
+
## 0.2.0-beta.1
|
|
227
|
+
|
|
228
|
+
### Minor Changes
|
|
229
|
+
|
|
230
|
+
- 48e1409: Add basic utils for OSDK Testing
|
|
231
|
+
|
|
232
|
+
## 0.2.0-beta.0
|
|
233
|
+
|
|
234
|
+
### Minor Changes
|
|
235
|
+
|
|
236
|
+
- 68d0bef: Basic object set mocking
|
|
237
|
+
|
|
238
|
+
### Patch Changes
|
|
239
|
+
|
|
240
|
+
- Updated dependencies [0a0d7cb]
|
|
241
|
+
- @osdk/functions@1.6.0-beta.2
|
|
242
|
+
- @osdk/api@2.8.0-beta.8
|
|
243
|
+
- @osdk/client@2.8.0-beta.8
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockClient.js","names":[],"sources":["MockClient.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n CompileTimeMetadata,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n QueryDefinition,\n} from \"@osdk/api\";\nimport type { Client } from \"@osdk/client\";\nimport type { QueryStubBuilder, StubBuilderFor } from \"./StubBuilders.js\";\nimport type { StubClient } from \"./StubClient.js\";\n\ntype QueryReturnTypeFromDef<Q extends QueryDefinition> = ReturnType<\n CompileTimeMetadata<Q>[\"signature\"]\n> extends Promise<infer R> ? R : never;\n\ntype QueryParamsFromDef<Q extends QueryDefinition> =\n Parameters<CompileTimeMetadata<Q>[\"signature\"]> extends [infer P] ? P\n : undefined;\n\nexport type StubPatternCallback<T> = (client: StubClient) => T;\n\nexport type ObjectSetStubCallback<Q extends ObjectOrInterfaceDefinition, T> = (\n os: ObjectSet<Q>,\n) => T;\n\nexport interface MockClient extends Client {\n when<T>(callback: StubPatternCallback<T>): StubBuilderFor<T>;\n whenObjectSet<Q extends ObjectOrInterfaceDefinition, T>(\n objectSet: ObjectSet<Q>,\n callback: ObjectSetStubCallback<Q, T>,\n ): StubBuilderFor<T>;\n whenQuery<Q extends QueryDefinition>(\n query: Q,\n params?: QueryParamsFromDef<Q>,\n ): QueryStubBuilder<QueryReturnTypeFromDef<Q>>;\n clearStubs(): void;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockOsdkObjectOptions.js","names":[],"sources":["MockOsdkObjectOptions.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n CompileTimeMetadata,\n LinkedType,\n LinkNames,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n} from \"@osdk/api\";\n\ntype LinkStubs<Q extends ObjectTypeDefinition> = {\n [LINK_NAME in LinkNames<Q>]?:\n CompileTimeMetadata<Q>[\"links\"][LINK_NAME][\"multiplicity\"] extends true ?\n | Array<Osdk.Instance<LinkedType<Q, LINK_NAME>>>\n | ObjectSet<LinkedType<Q, LINK_NAME>>\n : Osdk.Instance<LinkedType<Q, LINK_NAME>> | Error;\n};\n\n/**\n * Options for customizing mock object creation.\n */\nexport interface MockOsdkObjectOptions<\n Q extends ObjectTypeDefinition = ObjectTypeDefinition,\n> {\n /** Objects linked to this object by API name */\n links?: LinkStubs<Q>;\n /** The API name of the title property (optional, required for $title) */\n titlePropertyApiName?: string;\n /** Override the generated $rid */\n $rid?: string;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StubBuilders.js","names":[],"sources":["StubBuilders.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { PageResult } from \"@osdk/api\";\n\nexport interface FetchPageStubBuilder<T> {\n thenReturnObjects(objects: T[]): void;\n}\n\nexport interface FetchOneStubBuilder<T> {\n thenReturnObject(object: T): void;\n}\n\nexport interface AggregateStubBuilder<T> {\n thenReturnAggregation(result: T): void;\n}\n\nexport interface QueryStubBuilder<T> {\n thenReturn(result: T): void;\n thenThrow(error: Error): void;\n}\n\ntype IsOsdkObject<T> = T extends { $apiName: string } ? true : false;\n\nexport type StubBuilderFor<T> = T extends Promise<infer R> ? StubBuilderFor<R>\n : T extends AsyncIterableIterator<infer U> ? FetchPageStubBuilder<U>\n : T extends PageResult<infer U> ? FetchPageStubBuilder<U>\n : T extends { value: PageResult<infer U>; error?: never }\n ? FetchPageStubBuilder<U>\n : T extends { value: infer U; error?: never }\n ? (IsOsdkObject<U> extends true ? FetchOneStubBuilder<U>\n : AggregateStubBuilder<U>)\n : T extends { error: Error; value?: never } ? never\n : IsOsdkObject<T> extends true ? FetchOneStubBuilder<T>\n : AggregateStubBuilder<T>;\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StubClient.js","names":[],"sources":["StubClient.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n InterfaceDefinition,\n ObjectSet,\n ObjectTypeDefinition,\n} from \"@osdk/api\";\n\nexport type StubClient = {\n <Q extends ObjectTypeDefinition>(o: Q): ObjectSet<Q>;\n <Q extends InterfaceDefinition>(o: Q): ObjectSet<Q>;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["index.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type { MockClient } from \"./MockClient.js\";\nexport type { MockOsdkObjectOptions } from \"./MockOsdkObjectOptions.js\";\nexport type {\n AggregateStubBuilder,\n FetchOneStubBuilder,\n FetchPageStubBuilder,\n QueryStubBuilder,\n StubBuilderFor,\n} from \"./StubBuilders.js\";\nexport type { StubClient } from \"./StubClient.js\";\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { Employee } from "@osdk/client.test.ontology";
|
|
18
|
+
export async function basicAggregate(client) {
|
|
19
|
+
const aggregation = await client(Employee).where({
|
|
20
|
+
employeeId: {
|
|
21
|
+
"$eq": 5
|
|
22
|
+
}
|
|
23
|
+
}).aggregate({
|
|
24
|
+
$select: {
|
|
25
|
+
"employeeLocation:exactDistinct": "asc"
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
if (aggregation.employeeLocation.exactDistinct !== 3) {
|
|
29
|
+
throw new Error(`Unexpected aggregation result: ${JSON.stringify(aggregation)}`);
|
|
30
|
+
}
|
|
31
|
+
const aggregation2 = await client(Employee).where({
|
|
32
|
+
employeeId: {
|
|
33
|
+
"$eq": 5
|
|
34
|
+
}
|
|
35
|
+
}).aggregate({
|
|
36
|
+
$select: {
|
|
37
|
+
"employeeId:max": "unordered",
|
|
38
|
+
"fullName:approximateDistinct": "unordered"
|
|
39
|
+
},
|
|
40
|
+
$groupBy: {
|
|
41
|
+
employeeId: "exact"
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
if (aggregation2[0].$group.employeeId !== 5 || aggregation2[0].employeeId.max !== 5 || aggregation2[0].fullName.approximateDistinct !== 1) {
|
|
45
|
+
throw new Error(`Unexpected aggregation result: ${JSON.stringify(aggregation2)}`);
|
|
46
|
+
}
|
|
47
|
+
return 1;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=basicAggregate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basicAggregate.js","names":["Employee","basicAggregate","client","aggregation","where","employeeId","aggregate","$select","employeeLocation","exactDistinct","Error","JSON","stringify","aggregation2","$groupBy","$group","max","fullName","approximateDistinct"],"sources":["basicAggregate.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Client } from \"@osdk/client\";\nimport { Employee } from \"@osdk/client.test.ontology\";\nimport type { Integer } from \"@osdk/functions\";\n\nexport async function basicAggregate(\n client: Client,\n): Promise<Integer> {\n const aggregation = await client(Employee).where({ employeeId: { \"$eq\": 5 } })\n .aggregate({ $select: { \"employeeLocation:exactDistinct\": \"asc\" } });\n if (aggregation.employeeLocation.exactDistinct !== 3) {\n throw new Error(\n `Unexpected aggregation result: ${JSON.stringify(aggregation)}`,\n );\n }\n\n const aggregation2 = await client(Employee).where({\n employeeId: { \"$eq\": 5 },\n })\n .aggregate({\n $select: {\n \"employeeId:max\": \"unordered\",\n \"fullName:approximateDistinct\": \"unordered\",\n },\n $groupBy: { employeeId: \"exact\" },\n });\n\n if (\n aggregation2[0].$group.employeeId !== 5\n || aggregation2[0].employeeId.max !== 5\n || aggregation2[0].fullName.approximateDistinct !== 1\n ) {\n throw new Error(\n `Unexpected aggregation result: ${JSON.stringify(aggregation2)}`,\n );\n }\n\n return 1;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,QAAQ,QAAQ,4BAA4B;AAGrD,OAAO,eAAeC,cAAcA,CAClCC,MAAc,EACI;EAClB,MAAMC,WAAW,GAAG,MAAMD,MAAM,CAACF,QAAQ,CAAC,CAACI,KAAK,CAAC;IAAEC,UAAU,EAAE;MAAE,KAAK,EAAE;IAAE;EAAE,CAAC,CAAC,CAC3EC,SAAS,CAAC;IAAEC,OAAO,EAAE;MAAE,gCAAgC,EAAE;IAAM;EAAE,CAAC,CAAC;EACtE,IAAIJ,WAAW,CAACK,gBAAgB,CAACC,aAAa,KAAK,CAAC,EAAE;IACpD,MAAM,IAAIC,KAAK,CACb,kCAAkCC,IAAI,CAACC,SAAS,CAACT,WAAW,CAAC,EAC/D,CAAC;EACH;EAEA,MAAMU,YAAY,GAAG,MAAMX,MAAM,CAACF,QAAQ,CAAC,CAACI,KAAK,CAAC;IAChDC,UAAU,EAAE;MAAE,KAAK,EAAE;IAAE;EACzB,CAAC,CAAC,CACCC,SAAS,CAAC;IACTC,OAAO,EAAE;MACP,gBAAgB,EAAE,WAAW;MAC7B,8BAA8B,EAAE;IAClC,CAAC;IACDO,QAAQ,EAAE;MAAET,UAAU,EAAE;IAAQ;EAClC,CAAC,CAAC;EAEJ,IACEQ,YAAY,CAAC,CAAC,CAAC,CAACE,MAAM,CAACV,UAAU,KAAK,CAAC,IACpCQ,YAAY,CAAC,CAAC,CAAC,CAACR,UAAU,CAACW,GAAG,KAAK,CAAC,IACpCH,YAAY,CAAC,CAAC,CAAC,CAACI,QAAQ,CAACC,mBAAmB,KAAK,CAAC,EACrD;IACA,MAAM,IAAIR,KAAK,CACb,kCAAkCC,IAAI,CAACC,SAAS,CAACC,YAAY,CAAC,EAChE,CAAC;EACH;EAEA,OAAO,CAAC;AACV","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { Employee } from "@osdk/client.test.ontology";
|
|
18
|
+
export async function basicFetchPage(client) {
|
|
19
|
+
const objects = await client(Employee).fetchPage();
|
|
20
|
+
const object = objects.data[0];
|
|
21
|
+
if (object == null) {
|
|
22
|
+
throw new Error("No objects returned");
|
|
23
|
+
}
|
|
24
|
+
if (object.employeeId !== 1 || object.fullName !== "John") {
|
|
25
|
+
throw new Error(`Unexpected object returned: ${JSON.stringify(object)}`);
|
|
26
|
+
}
|
|
27
|
+
return object;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=basicFetchPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basicFetchPage.js","names":["Employee","basicFetchPage","client","objects","fetchPage","object","data","Error","employeeId","fullName","JSON","stringify"],"sources":["basicFetchPage.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Osdk } from \"@osdk/api\";\nimport type { Client } from \"@osdk/client\";\nimport { Employee } from \"@osdk/client.test.ontology\";\n\nexport async function basicFetchPage(\n client: Client,\n): Promise<Osdk.Instance<Employee>> {\n const objects = await client(Employee).fetchPage();\n const object = objects.data[0];\n if (object == null) {\n throw new Error(\"No objects returned\");\n }\n if (object.employeeId !== 1 || object.fullName !== \"John\") {\n throw new Error(`Unexpected object returned: ${JSON.stringify(object)}`);\n }\n return object;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,QAAQ,QAAQ,4BAA4B;AAErD,OAAO,eAAeC,cAAcA,CAClCC,MAAc,EACoB;EAClC,MAAMC,OAAO,GAAG,MAAMD,MAAM,CAACF,QAAQ,CAAC,CAACI,SAAS,CAAC,CAAC;EAClD,MAAMC,MAAM,GAAGF,OAAO,CAACG,IAAI,CAAC,CAAC,CAAC;EAC9B,IAAID,MAAM,IAAI,IAAI,EAAE;IAClB,MAAM,IAAIE,KAAK,CAAC,qBAAqB,CAAC;EACxC;EACA,IAAIF,MAAM,CAACG,UAAU,KAAK,CAAC,IAAIH,MAAM,CAACI,QAAQ,KAAK,MAAM,EAAE;IACzD,MAAM,IAAIF,KAAK,CAAC,+BAA+BG,IAAI,CAACC,SAAS,CAACN,MAAM,CAAC,EAAE,CAAC;EAC1E;EACA,OAAOA,MAAM;AACf","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { addOne } from "@osdk/client.test.ontology";
|
|
18
|
+
export async function basicQuery(client, n) {
|
|
19
|
+
const result = await client(addOne).executeFunction({
|
|
20
|
+
n
|
|
21
|
+
});
|
|
22
|
+
if (result !== n + 1) {
|
|
23
|
+
throw new Error(`Expected ${n + 1}, but got ${result}`);
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=basicQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basicQuery.js","names":["addOne","basicQuery","client","n","result","executeFunction","Error"],"sources":["basicQuery.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Client } from \"@osdk/client\";\nimport { addOne } from \"@osdk/client.test.ontology\";\nimport type { Integer } from \"@osdk/functions\";\n\nexport async function basicQuery(\n client: Client,\n n: Integer,\n): Promise<Integer> {\n const result = await client(addOne).executeFunction({ n });\n if (result !== n + 1) {\n throw new Error(`Expected ${n + 1}, but got ${result}`);\n }\n return result;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,MAAM,QAAQ,4BAA4B;AAGnD,OAAO,eAAeC,UAAUA,CAC9BC,MAAc,EACdC,CAAU,EACQ;EAClB,MAAMC,MAAM,GAAG,MAAMF,MAAM,CAACF,MAAM,CAAC,CAACK,eAAe,CAAC;IAAEF;EAAE,CAAC,CAAC;EAC1D,IAAIC,MAAM,KAAKD,CAAC,GAAG,CAAC,EAAE;IACpB,MAAM,IAAIG,KAAK,CAAC,YAAYH,CAAC,GAAG,CAAC,aAAaC,MAAM,EAAE,CAAC;EACzD;EACA,OAAOA,MAAM;AACf","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
export function objectAsInput(object) {
|
|
18
|
+
if (object.$apiName !== "Employee") {
|
|
19
|
+
throw new Error(`Expected object of type Employee, but got ${object.$apiName}`);
|
|
20
|
+
}
|
|
21
|
+
if (object.employeeId == null) {
|
|
22
|
+
throw new Error(`Expected object to have employeeId property, but it was missing`);
|
|
23
|
+
}
|
|
24
|
+
return object;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=objectAsInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objectAsInput.js","names":["objectAsInput","object","$apiName","Error","employeeId"],"sources":["objectAsInput.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Osdk } from \"@osdk/api\";\nimport type { Employee } from \"@osdk/client.test.ontology\";\n\nexport function objectAsInput(\n object: Osdk.Instance<Employee>,\n): Osdk.Instance<Employee> {\n if (object.$apiName !== \"Employee\") {\n throw new Error(\n `Expected object of type Employee, but got ${object.$apiName}`,\n );\n }\n if (object.employeeId == null) {\n throw new Error(\n `Expected object to have employeeId property, but it was missing`,\n );\n }\n return object;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA,OAAO,SAASA,aAAaA,CAC3BC,MAA+B,EACN;EACzB,IAAIA,MAAM,CAACC,QAAQ,KAAK,UAAU,EAAE;IAClC,MAAM,IAAIC,KAAK,CACb,6CAA6CF,MAAM,CAACC,QAAQ,EAC9D,CAAC;EACH;EACA,IAAID,MAAM,CAACG,UAAU,IAAI,IAAI,EAAE;IAC7B,MAAM,IAAID,KAAK,CACb,iEACF,CAAC;EACH;EACA,OAAOF,MAAM;AACf","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
export async function getEmployeeNames(employees) {
|
|
18
|
+
const page = await employees.fetchPage();
|
|
19
|
+
return page.data.map(emp => emp.fullName ?? "Unknown");
|
|
20
|
+
}
|
|
21
|
+
export async function countEmployees(employees) {
|
|
22
|
+
const result = await employees.aggregate({
|
|
23
|
+
$select: {
|
|
24
|
+
$count: "unordered"
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return result.$count;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=objectSetAsInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objectSetAsInput.js","names":["getEmployeeNames","employees","page","fetchPage","data","map","emp","fullName","countEmployees","result","aggregate","$select","$count"],"sources":["objectSetAsInput.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectSet } from \"@osdk/api\";\nimport type { Employee } from \"@osdk/client.test.ontology\";\n\nexport async function getEmployeeNames(\n employees: ObjectSet<Employee>,\n): Promise<string[]> {\n const page = await employees.fetchPage();\n return page.data.map((emp) => emp.fullName ?? \"Unknown\");\n}\n\nexport async function countEmployees(\n employees: ObjectSet<Employee>,\n): Promise<number> {\n const result = await employees.aggregate({\n $select: { $count: \"unordered\" },\n });\n return result.$count;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA,OAAO,eAAeA,gBAAgBA,CACpCC,SAA8B,EACX;EACnB,MAAMC,IAAI,GAAG,MAAMD,SAAS,CAACE,SAAS,CAAC,CAAC;EACxC,OAAOD,IAAI,CAACE,IAAI,CAACC,GAAG,CAAEC,GAAG,IAAKA,GAAG,CAACC,QAAQ,IAAI,SAAS,CAAC;AAC1D;AAEA,OAAO,eAAeC,cAAcA,CAClCP,SAA8B,EACb;EACjB,MAAMQ,MAAM,GAAG,MAAMR,SAAS,CAACS,SAAS,CAAC;IACvCC,OAAO,EAAE;MAAEC,MAAM,EAAE;IAAY;EACjC,CAAC,CAAC;EACF,OAAOH,MAAM,CAACG,MAAM;AACtB","ignoreList":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
export async function getEmployeeOfficeName(employee) {
|
|
18
|
+
const office = await employee.$link.officeLink.fetchOne();
|
|
19
|
+
return office.name;
|
|
20
|
+
}
|
|
21
|
+
export async function getEmployeePeepNames(employee) {
|
|
22
|
+
const page = await employee.$link.peeps.fetchPage();
|
|
23
|
+
return page.data.map(peep => peep.fullName ?? "Unknown");
|
|
24
|
+
}
|
|
25
|
+
export async function countEmployeePeeps(employee) {
|
|
26
|
+
let count = 0;
|
|
27
|
+
for await (const _peep of employee.$link.peeps.asyncIter()) {
|
|
28
|
+
count++;
|
|
29
|
+
}
|
|
30
|
+
return count;
|
|
31
|
+
}
|
|
32
|
+
export async function getSpecificPeep(employee, peepId) {
|
|
33
|
+
return employee.$link.peeps.fetchOne(peepId);
|
|
34
|
+
}
|
|
35
|
+
export async function countPeepsViaAggregate(employee) {
|
|
36
|
+
const result = await employee.$link.peeps.aggregate({
|
|
37
|
+
$select: {
|
|
38
|
+
$count: "unordered"
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return result.$count;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=objectWithLinks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objectWithLinks.js","names":["getEmployeeOfficeName","employee","office","$link","officeLink","fetchOne","name","getEmployeePeepNames","page","peeps","fetchPage","data","map","peep","fullName","countEmployeePeeps","count","_peep","asyncIter","getSpecificPeep","peepId","countPeepsViaAggregate","result","aggregate","$select","$count"],"sources":["objectWithLinks.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Osdk } from \"@osdk/api\";\nimport type { Employee } from \"@osdk/client.test.ontology\";\n\nexport async function getEmployeeOfficeName(\n employee: Osdk.Instance<Employee>,\n): Promise<string | undefined> {\n const office = await employee.$link.officeLink.fetchOne();\n return office.name;\n}\n\nexport async function getEmployeePeepNames(\n employee: Osdk.Instance<Employee>,\n): Promise<string[]> {\n const page = await employee.$link.peeps.fetchPage();\n return page.data.map((peep) => peep.fullName ?? \"Unknown\");\n}\n\nexport async function countEmployeePeeps(\n employee: Osdk.Instance<Employee>,\n): Promise<number> {\n let count = 0;\n for await (const _peep of employee.$link.peeps.asyncIter()) {\n count++;\n }\n return count;\n}\n\nexport async function getSpecificPeep(\n employee: Osdk.Instance<Employee>,\n peepId: number,\n): Promise<Osdk.Instance<Employee>> {\n return employee.$link.peeps.fetchOne(peepId);\n}\n\nexport async function countPeepsViaAggregate(\n employee: Osdk.Instance<Employee>,\n): Promise<number> {\n const result = await employee.$link.peeps.aggregate({\n $select: { $count: \"unordered\" },\n });\n return result.$count;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA,OAAO,eAAeA,qBAAqBA,CACzCC,QAAiC,EACJ;EAC7B,MAAMC,MAAM,GAAG,MAAMD,QAAQ,CAACE,KAAK,CAACC,UAAU,CAACC,QAAQ,CAAC,CAAC;EACzD,OAAOH,MAAM,CAACI,IAAI;AACpB;AAEA,OAAO,eAAeC,oBAAoBA,CACxCN,QAAiC,EACd;EACnB,MAAMO,IAAI,GAAG,MAAMP,QAAQ,CAACE,KAAK,CAACM,KAAK,CAACC,SAAS,CAAC,CAAC;EACnD,OAAOF,IAAI,CAACG,IAAI,CAACC,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACC,QAAQ,IAAI,SAAS,CAAC;AAC5D;AAEA,OAAO,eAAeC,kBAAkBA,CACtCd,QAAiC,EAChB;EACjB,IAAIe,KAAK,GAAG,CAAC;EACb,WAAW,MAAMC,KAAK,IAAIhB,QAAQ,CAACE,KAAK,CAACM,KAAK,CAACS,SAAS,CAAC,CAAC,EAAE;IAC1DF,KAAK,EAAE;EACT;EACA,OAAOA,KAAK;AACd;AAEA,OAAO,eAAeG,eAAeA,CACnClB,QAAiC,EACjCmB,MAAc,EACoB;EAClC,OAAOnB,QAAQ,CAACE,KAAK,CAACM,KAAK,CAACJ,QAAQ,CAACe,MAAM,CAAC;AAC9C;AAEA,OAAO,eAAeC,sBAAsBA,CAC1CpB,QAAiC,EAChB;EACjB,MAAMqB,MAAM,GAAG,MAAMrB,QAAQ,CAACE,KAAK,CAACM,KAAK,CAACc,SAAS,CAAC;IAClDC,OAAO,EAAE;MAAEC,MAAM,EAAE;IAAY;EACjC,CAAC,CAAC;EACF,OAAOH,MAAM,CAACG,MAAM;AACtB","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { Employee, FooInterface } from "@osdk/client.test.ontology";
|
|
18
|
+
import { createEditBatch } from "@osdk/functions";
|
|
19
|
+
export function ontologyEdits(client, object) {
|
|
20
|
+
const editBatch = createEditBatch(client);
|
|
21
|
+
editBatch.create(Employee, {
|
|
22
|
+
employeeId: 1,
|
|
23
|
+
fullName: "John Doe"
|
|
24
|
+
});
|
|
25
|
+
editBatch.update(object, {
|
|
26
|
+
favoriteRestaurants: ["McDonald's"]
|
|
27
|
+
});
|
|
28
|
+
editBatch.delete(object);
|
|
29
|
+
editBatch.link(object, "peeps", object);
|
|
30
|
+
editBatch.unlink(object, "peeps", object);
|
|
31
|
+
editBatch.create(FooInterface, {
|
|
32
|
+
$objectType: "Employee",
|
|
33
|
+
fooIdp: "bar"
|
|
34
|
+
});
|
|
35
|
+
return editBatch.getEdits();
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=ontologyEdits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ontologyEdits.js","names":["Employee","FooInterface","createEditBatch","ontologyEdits","client","object","editBatch","create","employeeId","fullName","update","favoriteRestaurants","delete","link","unlink","$objectType","fooIdp","getEdits"],"sources":["ontologyEdits.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Client, Osdk } from \"@osdk/client\";\nimport type { $Interfaces } from \"@osdk/client.test.ontology\";\nimport { Employee, FooInterface } from \"@osdk/client.test.ontology\";\nimport { createEditBatch, type Edits } from \"@osdk/functions\";\n\ntype edits =\n | Edits.Object<Employee>\n | Edits.Link<Employee, \"peeps\">\n | Edits.Interface<$Interfaces.FooInterface>;\nexport function ontologyEdits(\n client: Client,\n object: Osdk.Instance<Employee>,\n): edits[] {\n const editBatch = createEditBatch<edits>(client);\n editBatch.create(Employee, { employeeId: 1, fullName: \"John Doe\" });\n\n editBatch.update(object, { favoriteRestaurants: [\"McDonald's\"] });\n\n editBatch.delete(object);\n\n editBatch.link(object, \"peeps\", object);\n editBatch.unlink(object, \"peeps\", object);\n\n editBatch.create(FooInterface, { $objectType: \"Employee\", fooIdp: \"bar\" });\n return editBatch.getEdits();\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,QAAQ,EAAEC,YAAY,QAAQ,4BAA4B;AACnE,SAASC,eAAe,QAAoB,iBAAiB;AAM7D,OAAO,SAASC,aAAaA,CAC3BC,MAAc,EACdC,MAA+B,EACtB;EACT,MAAMC,SAAS,GAAGJ,eAAe,CAAQE,MAAM,CAAC;EAChDE,SAAS,CAACC,MAAM,CAACP,QAAQ,EAAE;IAAEQ,UAAU,EAAE,CAAC;IAAEC,QAAQ,EAAE;EAAW,CAAC,CAAC;EAEnEH,SAAS,CAACI,MAAM,CAACL,MAAM,EAAE;IAAEM,mBAAmB,EAAE,CAAC,YAAY;EAAE,CAAC,CAAC;EAEjEL,SAAS,CAACM,MAAM,CAACP,MAAM,CAAC;EAExBC,SAAS,CAACO,IAAI,CAACR,MAAM,EAAE,OAAO,EAAEA,MAAM,CAAC;EACvCC,SAAS,CAACQ,MAAM,CAACT,MAAM,EAAE,OAAO,EAAEA,MAAM,CAAC;EAEzCC,SAAS,CAACC,MAAM,CAACN,YAAY,EAAE;IAAEc,WAAW,EAAE,UAAU;IAAEC,MAAM,EAAE;EAAM,CAAC,CAAC;EAC1E,OAAOV,SAAS,CAACW,QAAQ,CAAC,CAAC;AAC7B","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { Users } from "@osdk/foundry.admin";
|
|
18
|
+
export async function requireAdminUser(client) {
|
|
19
|
+
const user = await Users.getCurrent(client);
|
|
20
|
+
if (!user.username.endsWith("@admin")) {
|
|
21
|
+
throw new Error(`User ${user.username} is not an admin`);
|
|
22
|
+
}
|
|
23
|
+
return user.username;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=platformApiWithMsw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platformApiWithMsw.js","names":["Users","requireAdminUser","client","user","getCurrent","username","endsWith","Error"],"sources":["platformApiWithMsw.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Client } from \"@osdk/client\";\nimport { Users } from \"@osdk/foundry.admin\";\n\nexport async function requireAdminUser(\n client: Client,\n): Promise<string> {\n const user = await Users.getCurrent(client);\n if (!user.username.endsWith(\"@admin\")) {\n throw new Error(`User ${user.username} is not an admin`);\n }\n return user.username;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,KAAK,QAAQ,qBAAqB;AAE3C,OAAO,eAAeC,gBAAgBA,CACpCC,MAAc,EACG;EACjB,MAAMC,IAAI,GAAG,MAAMH,KAAK,CAACI,UAAU,CAACF,MAAM,CAAC;EAC3C,IAAI,CAACC,IAAI,CAACE,QAAQ,CAACC,QAAQ,CAAC,QAAQ,CAAC,EAAE;IACrC,MAAM,IAAIC,KAAK,CAAC,QAAQJ,IAAI,CAACE,QAAQ,kBAAkB,CAAC;EAC1D;EACA,OAAOF,IAAI,CAACE,QAAQ;AACtB","ignoreList":[]}
|