@api-client/core 0.18.39 → 0.18.40
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/RELEASE_SETUP.md +4 -2
- package/build/src/sdk/SdkMock.d.ts +49 -45
- package/build/src/sdk/SdkMock.d.ts.map +1 -1
- package/build/src/sdk/SdkMock.js +94 -90
- package/build/src/sdk/SdkMock.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/data/models/example-generator-api.json +6 -6
- package/package.json +3 -2
- package/src/sdk/SdkMock.ts +428 -295
- package/TESTING_READY.md +0 -114
package/RELEASE_SETUP.md
CHANGED
|
@@ -116,12 +116,14 @@ return ver.format();
|
|
|
116
116
|
|
|
117
117
|
### Changelog Generation
|
|
118
118
|
|
|
119
|
-
Uses `conventional-changelog
|
|
119
|
+
Uses `conventional-changelog` package with the `conventionalcommits` preset via a Node.js script (`scripts/generate-changelog.js`):
|
|
120
120
|
|
|
121
121
|
```bash
|
|
122
|
-
|
|
122
|
+
node scripts/generate-changelog.js
|
|
123
123
|
```
|
|
124
124
|
|
|
125
|
+
This approach uses the `conventional-changelog` library directly instead of the CLI tool, which resolves security vulnerabilities in the older `conventional-changelog-cli` package.
|
|
126
|
+
|
|
125
127
|
## 🔧 Setup Requirements
|
|
126
128
|
|
|
127
129
|
### GitHub Secrets
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ResponseGenerator, type MockHandler, type SetupWorkerOptions } from '@jarrodek/amw';
|
|
1
|
+
import { type ResponseGenerator, type MockHandler, type SetupWorkerOptions, type InterceptOptions } from '@jarrodek/amw';
|
|
2
2
|
import { ModelingMock } from '../mocking/ModelingMock.js';
|
|
3
3
|
export interface MockResult {
|
|
4
4
|
/**
|
|
@@ -79,6 +79,10 @@ export interface MockListResult extends MockResult {
|
|
|
79
79
|
* // Stop and remove the Service Worker
|
|
80
80
|
* await mocker.teardown();
|
|
81
81
|
* ```
|
|
82
|
+
*
|
|
83
|
+
* @TODO: Add a in-memory state store so that mocks can maintain state across requests.
|
|
84
|
+
* This way, operations like create, update, delete can affect subsequent list/read calls
|
|
85
|
+
* and we can mimic the API behavior more closely.
|
|
82
86
|
*/
|
|
83
87
|
export declare class SdkMock {
|
|
84
88
|
options?: SetupWorkerOptions | undefined;
|
|
@@ -109,28 +113,28 @@ export declare class SdkMock {
|
|
|
109
113
|
* Adds an intercept to mock the `organizations.list()` method.
|
|
110
114
|
* @param options Optional response configuration
|
|
111
115
|
*/
|
|
112
|
-
list: (init?: MockListResult) => Promise<void>;
|
|
116
|
+
list: (init?: MockListResult, options?: InterceptOptions) => Promise<void>;
|
|
113
117
|
/**
|
|
114
118
|
* Adds an intercept to mock the `organizations.create()` method.
|
|
115
119
|
* @param options Optional response configuration
|
|
116
120
|
*/
|
|
117
|
-
create: (init?: MockResult) => Promise<void>;
|
|
121
|
+
create: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
118
122
|
invitations: {
|
|
119
|
-
list: (init?: MockListResult) => Promise<void>;
|
|
120
|
-
create: (init?: MockResult) => Promise<void>;
|
|
121
|
-
findByToken: (init?: MockResult) => Promise<void>;
|
|
122
|
-
decline: (init?: MockResult) => Promise<void>;
|
|
123
|
-
delete: (init?: MockResult) => Promise<void>;
|
|
124
|
-
patch: (init?: MockResult) => Promise<void>;
|
|
125
|
-
resend: (init?: MockResult) => Promise<void>;
|
|
123
|
+
list: (init?: MockListResult, options?: InterceptOptions) => Promise<void>;
|
|
124
|
+
create: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
125
|
+
findByToken: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
126
|
+
decline: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
127
|
+
delete: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
128
|
+
patch: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
129
|
+
resend: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
126
130
|
};
|
|
127
131
|
users: {
|
|
128
|
-
list: (init?: MockListResult) => Promise<void>;
|
|
129
|
-
read: (init?: MockResult) => Promise<void>;
|
|
130
|
-
readBatch: (init?: MockListResult) => Promise<void>;
|
|
131
|
-
activate: (init?: MockResult) => Promise<void>;
|
|
132
|
-
deactivate: (init?: MockResult) => Promise<void>;
|
|
133
|
-
delete: (init?: MockResult) => Promise<void>;
|
|
132
|
+
list: (init?: MockListResult, options?: InterceptOptions) => Promise<void>;
|
|
133
|
+
read: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
134
|
+
readBatch: (init?: MockListResult, options?: InterceptOptions) => Promise<void>;
|
|
135
|
+
activate: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
136
|
+
deactivate: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
137
|
+
delete: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
134
138
|
};
|
|
135
139
|
};
|
|
136
140
|
/**
|
|
@@ -141,30 +145,30 @@ export declare class SdkMock {
|
|
|
141
145
|
* Mocks the `groups.list()` method.
|
|
142
146
|
* @param options Optional response customization.
|
|
143
147
|
*/
|
|
144
|
-
list: (init?: MockListResult) => Promise<void>;
|
|
148
|
+
list: (init?: MockListResult, options?: InterceptOptions) => Promise<void>;
|
|
145
149
|
/**
|
|
146
150
|
* Mocks the `groups.create()` method.
|
|
147
151
|
* @param options Optional response customization.
|
|
148
152
|
*/
|
|
149
|
-
create: (init?: MockResult) => Promise<void>;
|
|
153
|
+
create: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
150
154
|
/**
|
|
151
155
|
* Mocks the `groups.update()` method.
|
|
152
156
|
* @param options Optional response customization.
|
|
153
157
|
*/
|
|
154
|
-
update: (init?: MockResult) => Promise<void>;
|
|
158
|
+
update: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
155
159
|
/**
|
|
156
160
|
* Mocks the `groups.delete()` method.
|
|
157
161
|
* @param options Optional response customization.
|
|
158
162
|
*/
|
|
159
|
-
delete: (init?: MockResult) => Promise<void>;
|
|
163
|
+
delete: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
160
164
|
/**
|
|
161
165
|
* Mocks the `groups.addUsers()` method.
|
|
162
166
|
*/
|
|
163
|
-
addUsers: (init?: MockResult) => Promise<void>;
|
|
167
|
+
addUsers: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
164
168
|
/**
|
|
165
169
|
* Mocks the `groups.removeUsers()` method.
|
|
166
170
|
*/
|
|
167
|
-
removeUsers: (init?: MockResult) => Promise<void>;
|
|
171
|
+
removeUsers: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
168
172
|
};
|
|
169
173
|
/**
|
|
170
174
|
* User API mocks.
|
|
@@ -174,7 +178,7 @@ export declare class SdkMock {
|
|
|
174
178
|
* Mocks the `user.me()` method.
|
|
175
179
|
* @param options Optional response customization.
|
|
176
180
|
*/
|
|
177
|
-
me: (init?: MockResult) => Promise<void>;
|
|
181
|
+
me: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
178
182
|
};
|
|
179
183
|
/**
|
|
180
184
|
* Files API mocks.
|
|
@@ -183,86 +187,86 @@ export declare class SdkMock {
|
|
|
183
187
|
/**
|
|
184
188
|
* Mocks the `file.list()` method.
|
|
185
189
|
*/
|
|
186
|
-
list: (init?: MockListResult) => Promise<void>;
|
|
190
|
+
list: (init?: MockListResult, options?: InterceptOptions) => Promise<void>;
|
|
187
191
|
/**
|
|
188
192
|
* Mocks the `file.createMeta()` method.
|
|
189
193
|
*/
|
|
190
|
-
createMeta: (init?: MockResult) => Promise<void>;
|
|
194
|
+
createMeta: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
191
195
|
/**
|
|
192
196
|
* Mocks the `file.createMedia()` method.
|
|
193
197
|
*/
|
|
194
|
-
createMedia: (init?: MockResult) => Promise<void>;
|
|
198
|
+
createMedia: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
195
199
|
/**
|
|
196
200
|
* Mocks the `file.create()` method.
|
|
197
201
|
*/
|
|
198
|
-
create: (init?: MockResult) => Promise<void>;
|
|
202
|
+
create: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
199
203
|
/**
|
|
200
204
|
* Mocks the `file.createFolder()` method.
|
|
201
205
|
*/
|
|
202
|
-
createFolder: (init?: MockResult) => Promise<void>;
|
|
206
|
+
createFolder: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
203
207
|
/**
|
|
204
208
|
* Mocks the `file.read()` method.
|
|
205
209
|
*/
|
|
206
|
-
read: (init?: MockResult) => Promise<void>;
|
|
210
|
+
read: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
207
211
|
/**
|
|
208
212
|
* Mocks the `file.readMedia()` method.
|
|
209
213
|
*/
|
|
210
|
-
readMedia: (init?: MockResult) => Promise<void>;
|
|
214
|
+
readMedia: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
211
215
|
/**
|
|
212
216
|
* Mocks the `file.readBulk()` method.
|
|
213
217
|
*/
|
|
214
|
-
readBulk: (init?: MockListResult) => Promise<void>;
|
|
218
|
+
readBulk: (init?: MockListResult, options?: InterceptOptions) => Promise<void>;
|
|
215
219
|
/**
|
|
216
220
|
* Mocks the `file.patch()` method.
|
|
217
221
|
*/
|
|
218
|
-
patch: (init?: MockResult) => Promise<void>;
|
|
222
|
+
patch: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
219
223
|
/**
|
|
220
224
|
* Mocks the `file.patchMedia()` method.
|
|
221
225
|
*/
|
|
222
|
-
patchMedia: (init?: MockResult) => Promise<void>;
|
|
226
|
+
patchMedia: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
223
227
|
/**
|
|
224
228
|
* Mocks the `file.delete()` method.
|
|
225
229
|
*/
|
|
226
|
-
delete: (init?: MockResult) => Promise<void>;
|
|
230
|
+
delete: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
227
231
|
/**
|
|
228
232
|
* Mocks the `file.deleteBulk()` method.
|
|
229
233
|
*/
|
|
230
|
-
deleteBulk: (init?: MockResult) => Promise<void>;
|
|
234
|
+
deleteBulk: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
231
235
|
/**
|
|
232
236
|
* Mocks the `file.patchUsers()` method.
|
|
233
237
|
*/
|
|
234
|
-
patchUsers: (init?: MockResult) => Promise<void>;
|
|
238
|
+
patchUsers: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
235
239
|
/**
|
|
236
240
|
* Mocks the `file.addUser()` method.
|
|
237
241
|
*/
|
|
238
|
-
addUser: (init?: MockResult) => Promise<void>;
|
|
242
|
+
addUser: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
239
243
|
/**
|
|
240
244
|
* Mocks the `file.removeUser()` method.
|
|
241
245
|
*/
|
|
242
|
-
removeUser: (init?: MockResult) => Promise<void>;
|
|
246
|
+
removeUser: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
243
247
|
/**
|
|
244
248
|
* Mocks the `file.listUsers()` method.
|
|
245
249
|
*/
|
|
246
|
-
listUsers: (init?: MockListResult) => Promise<void>;
|
|
250
|
+
listUsers: (init?: MockListResult, options?: InterceptOptions) => Promise<void>;
|
|
247
251
|
/**
|
|
248
252
|
* Mocks the `file.breadcrumbs()` method.
|
|
249
253
|
*/
|
|
250
|
-
breadcrumbs: (init?: MockListResult) => Promise<void>;
|
|
254
|
+
breadcrumbs: (init?: MockListResult, options?: InterceptOptions) => Promise<void>;
|
|
251
255
|
};
|
|
252
256
|
/**
|
|
253
257
|
* Shared API mocks.
|
|
254
258
|
*/
|
|
255
259
|
shared: {
|
|
256
|
-
list: (init?: MockListResult) => Promise<void>;
|
|
260
|
+
list: (init?: MockListResult, options?: InterceptOptions) => Promise<void>;
|
|
257
261
|
};
|
|
258
262
|
/**
|
|
259
263
|
* Trash API mocks.
|
|
260
264
|
*/
|
|
261
265
|
trash: {
|
|
262
|
-
list: (init?: MockListResult) => Promise<void>;
|
|
263
|
-
delete: (init?: MockResult) => Promise<void>;
|
|
264
|
-
restore: (init?: MockResult) => Promise<void>;
|
|
265
|
-
empty: (init?: MockResult) => Promise<void>;
|
|
266
|
+
list: (init?: MockListResult, options?: InterceptOptions) => Promise<void>;
|
|
267
|
+
delete: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
268
|
+
restore: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
269
|
+
empty: (init?: MockResult, options?: InterceptOptions) => Promise<void>;
|
|
266
270
|
};
|
|
267
271
|
}
|
|
268
272
|
//# sourceMappingURL=SdkMock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SdkMock.d.ts","sourceRoot":"","sources":["../../../src/sdk/SdkMock.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SdkMock.d.ts","sourceRoot":"","sources":["../../../src/sdk/SdkMock.ts"],"names":[],"mappings":"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"}
|