@crvouga/mockingbird-service-linear 0.5.0 → 0.6.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.
- package/CHANGELOG.md +7 -1
- package/dist/{chunk-4Z6PLMOH.js → chunk-QVCIGTXU.js} +123 -40
- package/dist/chunk-QVCIGTXU.js.map +7 -0
- package/dist/{chunk-TMW7SXJ6.js → chunk-Z65VLJCT.js} +103 -12
- package/dist/chunk-Z65VLJCT.js.map +7 -0
- package/dist/cli.js +2 -2
- package/dist/index.d.ts +35 -0
- package/dist/index.js +1 -1
- package/dist/server.d.ts +76 -0
- package/dist/server.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-4Z6PLMOH.js.map +0 -7
- package/dist/chunk-TMW7SXJ6.js.map +0 -7
package/dist/cli.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -844,6 +844,12 @@ interface SqliteClient {
|
|
|
844
844
|
transaction<T>(fn: () => T): T;
|
|
845
845
|
}
|
|
846
846
|
|
|
847
|
+
/**
|
|
848
|
+
* What names an id base: a non-negative safe integer (or its decimal string) or `"boot"`,
|
|
849
|
+
* which derives the base from the wall clock when the runtime is created.
|
|
850
|
+
*/
|
|
851
|
+
type IdBase = number | string;
|
|
852
|
+
|
|
847
853
|
/**
|
|
848
854
|
* The slice of OpenAPI 3.1 (and JSON Schema 2020-12) Mockingbird understands.
|
|
849
855
|
* Unknown keys (including `x-*` extensions) are preserved on every object.
|
|
@@ -1091,6 +1097,15 @@ type FaultRule = {
|
|
|
1091
1097
|
requestHeaders?: Record<string, string>;
|
|
1092
1098
|
/** Fault only requests carrying these query parameters. `"*"` matches any value. */
|
|
1093
1099
|
query?: Record<string, string>;
|
|
1100
|
+
/**
|
|
1101
|
+
* Fault only requests whose JSON body carries these fields. Each key is a dotted path into
|
|
1102
|
+
* the parsed body (`"patient_details.email"`; a number steps into an array, `"items.0.sku"`)
|
|
1103
|
+
* and each value is what the field must equal: a string, number, boolean or `null`, compared
|
|
1104
|
+
* strictly (`3` is not `"3"`). `"*"` matches any value that is present. A request whose body
|
|
1105
|
+
* is missing, is not JSON, or is not a JSON object never matches. Not `body`, which is the
|
|
1106
|
+
* response a rule injects.
|
|
1107
|
+
*/
|
|
1108
|
+
requestBody?: Record<string, RequestBodyValue>;
|
|
1094
1109
|
/**
|
|
1095
1110
|
* Fault only this namespace. Omit (or `"*"`) to fault every namespace — which is what
|
|
1096
1111
|
* an in-process caller usually wants, and what a parallel worker usually does not:
|
|
@@ -1157,6 +1172,8 @@ type FaultRule = {
|
|
|
1157
1172
|
/** The preset this rule was expanded from, if any. */
|
|
1158
1173
|
fromPreset?: string;
|
|
1159
1174
|
};
|
|
1175
|
+
/** What a field of the request body must equal in {@link FaultRule.requestBody}. */
|
|
1176
|
+
type RequestBodyValue = string | number | boolean | null;
|
|
1160
1177
|
/** A fault that fired for one request. */
|
|
1161
1178
|
type FaultHit = {
|
|
1162
1179
|
id: string;
|
|
@@ -1194,6 +1211,11 @@ type FaultCandidate = {
|
|
|
1194
1211
|
/** Request headers and query, for rules that match on them. */
|
|
1195
1212
|
headers?: Headers;
|
|
1196
1213
|
query?: URLSearchParams;
|
|
1214
|
+
/**
|
|
1215
|
+
* The request body parsed as JSON, read only when a rule matches on `requestBody`. Resolve
|
|
1216
|
+
* `undefined` for a body that is missing or not JSON. It must leave the request readable.
|
|
1217
|
+
*/
|
|
1218
|
+
readJson?: () => Promise<unknown>;
|
|
1197
1219
|
/** The namespace clock, for `from` / `until`. Rules with a window are skipped without it. */
|
|
1198
1220
|
now?: number;
|
|
1199
1221
|
/** How to spend a delay for this request. Default: the registry's own sleep. */
|
|
@@ -1806,6 +1828,13 @@ type RuntimeOptions<T extends ServiceInstance> = {
|
|
|
1806
1828
|
sqlite?: SqliteClient;
|
|
1807
1829
|
/** Defaults to a live clock over `Date.now`. */
|
|
1808
1830
|
clock?: Clock;
|
|
1831
|
+
/**
|
|
1832
|
+
* Where this boot's generated ids start. Counters restart at 0 on every boot, so by default
|
|
1833
|
+
* every boot reissues the previous boot's ids; a different base gives an unrelated run of ids
|
|
1834
|
+
* (a reset returns to the same run). A non-negative integer, or `"boot"` for one derived from
|
|
1835
|
+
* the wall clock when the runtime is created. Default `0`: the same ids on every boot.
|
|
1836
|
+
*/
|
|
1837
|
+
idBase?: IdBase;
|
|
1809
1838
|
/** Seeds every random choice the runtime makes (fault rates, jitter). Default `0`. */
|
|
1810
1839
|
seed?: number | string;
|
|
1811
1840
|
/**
|
|
@@ -1889,6 +1918,12 @@ type ServiceRuntime<T extends ServiceInstance> = FetchAPI & {
|
|
|
1889
1918
|
mount(prefix: string): MountedAPI;
|
|
1890
1919
|
readonly sqlite: SqliteClient;
|
|
1891
1920
|
readonly clock: Clock;
|
|
1921
|
+
/**
|
|
1922
|
+
* Change the id base ({@link RuntimeOptions.idBase}) for ids generated from now on, and
|
|
1923
|
+
* return the number it resolved to. Set it before the first request so a boot's ids stay
|
|
1924
|
+
* one run.
|
|
1925
|
+
*/
|
|
1926
|
+
setIdBase(base: IdBase): number;
|
|
1892
1927
|
readonly faults: FaultRegistry;
|
|
1893
1928
|
/** Baseline response time per namespace. */
|
|
1894
1929
|
readonly latency: LatencyRegistry;
|
package/dist/index.js
CHANGED
package/dist/server.d.ts
CHANGED
|
@@ -132,6 +132,12 @@ interface SqliteClient$3 {
|
|
|
132
132
|
transaction<T>(fn: () => T): T;
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
+
/**
|
|
136
|
+
* What names an id base: a non-negative safe integer (or its decimal string) or `"boot"`,
|
|
137
|
+
* which derives the base from the wall clock when the runtime is created.
|
|
138
|
+
*/
|
|
139
|
+
type IdBase$1 = number | string;
|
|
140
|
+
|
|
135
141
|
/**
|
|
136
142
|
* The single source of time for a service.
|
|
137
143
|
*
|
|
@@ -214,6 +220,15 @@ type FaultRule$1 = {
|
|
|
214
220
|
requestHeaders?: Record<string, string>;
|
|
215
221
|
/** Fault only requests carrying these query parameters. `"*"` matches any value. */
|
|
216
222
|
query?: Record<string, string>;
|
|
223
|
+
/**
|
|
224
|
+
* Fault only requests whose JSON body carries these fields. Each key is a dotted path into
|
|
225
|
+
* the parsed body (`"patient_details.email"`; a number steps into an array, `"items.0.sku"`)
|
|
226
|
+
* and each value is what the field must equal: a string, number, boolean or `null`, compared
|
|
227
|
+
* strictly (`3` is not `"3"`). `"*"` matches any value that is present. A request whose body
|
|
228
|
+
* is missing, is not JSON, or is not a JSON object never matches. Not `body`, which is the
|
|
229
|
+
* response a rule injects.
|
|
230
|
+
*/
|
|
231
|
+
requestBody?: Record<string, RequestBodyValue$1>;
|
|
217
232
|
/**
|
|
218
233
|
* Fault only this namespace. Omit (or `"*"`) to fault every namespace — which is what
|
|
219
234
|
* an in-process caller usually wants, and what a parallel worker usually does not:
|
|
@@ -280,6 +295,8 @@ type FaultRule$1 = {
|
|
|
280
295
|
/** The preset this rule was expanded from, if any. */
|
|
281
296
|
fromPreset?: string;
|
|
282
297
|
};
|
|
298
|
+
/** What a field of the request body must equal in {@link FaultRule.requestBody}. */
|
|
299
|
+
type RequestBodyValue$1 = string | number | boolean | null;
|
|
283
300
|
/** A fault that fired for one request. */
|
|
284
301
|
type FaultHit$1 = {
|
|
285
302
|
id: string;
|
|
@@ -304,6 +321,11 @@ type FaultCandidate$1 = {
|
|
|
304
321
|
/** Request headers and query, for rules that match on them. */
|
|
305
322
|
headers?: Headers;
|
|
306
323
|
query?: URLSearchParams;
|
|
324
|
+
/**
|
|
325
|
+
* The request body parsed as JSON, read only when a rule matches on `requestBody`. Resolve
|
|
326
|
+
* `undefined` for a body that is missing or not JSON. It must leave the request readable.
|
|
327
|
+
*/
|
|
328
|
+
readJson?: () => Promise<unknown>;
|
|
307
329
|
/** The namespace clock, for `from` / `until`. Rules with a window are skipped without it. */
|
|
308
330
|
now?: number;
|
|
309
331
|
/** How to spend a delay for this request. Default: the registry's own sleep. */
|
|
@@ -826,6 +848,12 @@ type ServiceRuntime$1<T extends ServiceInstance$1> = FetchAPI$1 & {
|
|
|
826
848
|
mount(prefix: string): MountedAPI$1;
|
|
827
849
|
readonly sqlite: SqliteClient$3;
|
|
828
850
|
readonly clock: Clock$1;
|
|
851
|
+
/**
|
|
852
|
+
* Change the id base ({@link RuntimeOptions.idBase}) for ids generated from now on, and
|
|
853
|
+
* return the number it resolved to. Set it before the first request so a boot's ids stay
|
|
854
|
+
* one run.
|
|
855
|
+
*/
|
|
856
|
+
setIdBase(base: IdBase$1): number;
|
|
829
857
|
readonly faults: FaultRegistry$1;
|
|
830
858
|
/** Baseline response time per namespace. */
|
|
831
859
|
readonly latency: LatencyRegistry$1;
|
|
@@ -931,6 +959,12 @@ type CommonServeOptions = {
|
|
|
931
959
|
/** Synthetic provider fixture objects supplied by a fleet entry. */
|
|
932
960
|
fixtures?: Record<string, unknown>;
|
|
933
961
|
baseUrl?: string;
|
|
962
|
+
/**
|
|
963
|
+
* Boot settings from `--settings`, `MOCKINGBIRD_SETTINGS` or a fleet entry's `settings`,
|
|
964
|
+
* already checked by the target's {@link ServeTarget.parseSettings}. Pass them to the
|
|
965
|
+
* service's own `settings` option so they become every namespace's defaults.
|
|
966
|
+
*/
|
|
967
|
+
settings?: Record<string, unknown>;
|
|
934
968
|
};
|
|
935
969
|
/**
|
|
936
970
|
* What a service contributes to `serve`: how to build its runtime from CLI flags,
|
|
@@ -943,6 +977,13 @@ type ServeTarget = {
|
|
|
943
977
|
defaultPort: number;
|
|
944
978
|
/** Serve flags beyond the common ones. */
|
|
945
979
|
options?: Record<string, CliOption>;
|
|
980
|
+
/**
|
|
981
|
+
* Check the boot settings a caller supplied (`--settings`, `MOCKINGBIRD_SETTINGS`, a fleet
|
|
982
|
+
* entry's `settings`) against the service's settings schema, returning them normalized
|
|
983
|
+
* or throwing a message naming the bad field. A target without one takes no boot settings,
|
|
984
|
+
* and supplying some is refused before a port is bound.
|
|
985
|
+
*/
|
|
986
|
+
parseSettings?(settings: Record<string, unknown>): Record<string, unknown>;
|
|
946
987
|
create(values: CliValues, common: CommonServeOptions): Promise<ServiceRuntime$1<ServiceInstance$1>> | ServiceRuntime$1<ServiceInstance$1>;
|
|
947
988
|
/** Startup lines after the listen address, e.g. the loaded corpus version. */
|
|
948
989
|
banner?(runtime: ServiceRuntime$1<ServiceInstance$1>): string[];
|
|
@@ -1082,6 +1123,12 @@ interface SqliteClient$2 {
|
|
|
1082
1123
|
transaction<T>(fn: () => T): T;
|
|
1083
1124
|
}
|
|
1084
1125
|
|
|
1126
|
+
/**
|
|
1127
|
+
* What names an id base: a non-negative safe integer (or its decimal string) or `"boot"`,
|
|
1128
|
+
* which derives the base from the wall clock when the runtime is created.
|
|
1129
|
+
*/
|
|
1130
|
+
type IdBase = number | string;
|
|
1131
|
+
|
|
1085
1132
|
/**
|
|
1086
1133
|
* The slice of OpenAPI 3.1 (and JSON Schema 2020-12) Mockingbird understands.
|
|
1087
1134
|
* Unknown keys (including `x-*` extensions) are preserved on every object.
|
|
@@ -1329,6 +1376,15 @@ type FaultRule = {
|
|
|
1329
1376
|
requestHeaders?: Record<string, string>;
|
|
1330
1377
|
/** Fault only requests carrying these query parameters. `"*"` matches any value. */
|
|
1331
1378
|
query?: Record<string, string>;
|
|
1379
|
+
/**
|
|
1380
|
+
* Fault only requests whose JSON body carries these fields. Each key is a dotted path into
|
|
1381
|
+
* the parsed body (`"patient_details.email"`; a number steps into an array, `"items.0.sku"`)
|
|
1382
|
+
* and each value is what the field must equal: a string, number, boolean or `null`, compared
|
|
1383
|
+
* strictly (`3` is not `"3"`). `"*"` matches any value that is present. A request whose body
|
|
1384
|
+
* is missing, is not JSON, or is not a JSON object never matches. Not `body`, which is the
|
|
1385
|
+
* response a rule injects.
|
|
1386
|
+
*/
|
|
1387
|
+
requestBody?: Record<string, RequestBodyValue>;
|
|
1332
1388
|
/**
|
|
1333
1389
|
* Fault only this namespace. Omit (or `"*"`) to fault every namespace — which is what
|
|
1334
1390
|
* an in-process caller usually wants, and what a parallel worker usually does not:
|
|
@@ -1395,6 +1451,8 @@ type FaultRule = {
|
|
|
1395
1451
|
/** The preset this rule was expanded from, if any. */
|
|
1396
1452
|
fromPreset?: string;
|
|
1397
1453
|
};
|
|
1454
|
+
/** What a field of the request body must equal in {@link FaultRule.requestBody}. */
|
|
1455
|
+
type RequestBodyValue = string | number | boolean | null;
|
|
1398
1456
|
/** A fault that fired for one request. */
|
|
1399
1457
|
type FaultHit = {
|
|
1400
1458
|
id: string;
|
|
@@ -1432,6 +1490,11 @@ type FaultCandidate = {
|
|
|
1432
1490
|
/** Request headers and query, for rules that match on them. */
|
|
1433
1491
|
headers?: Headers;
|
|
1434
1492
|
query?: URLSearchParams;
|
|
1493
|
+
/**
|
|
1494
|
+
* The request body parsed as JSON, read only when a rule matches on `requestBody`. Resolve
|
|
1495
|
+
* `undefined` for a body that is missing or not JSON. It must leave the request readable.
|
|
1496
|
+
*/
|
|
1497
|
+
readJson?: () => Promise<unknown>;
|
|
1435
1498
|
/** The namespace clock, for `from` / `until`. Rules with a window are skipped without it. */
|
|
1436
1499
|
now?: number;
|
|
1437
1500
|
/** How to spend a delay for this request. Default: the registry's own sleep. */
|
|
@@ -2044,6 +2107,13 @@ type RuntimeOptions<T extends ServiceInstance> = {
|
|
|
2044
2107
|
sqlite?: SqliteClient$2;
|
|
2045
2108
|
/** Defaults to a live clock over `Date.now`. */
|
|
2046
2109
|
clock?: Clock;
|
|
2110
|
+
/**
|
|
2111
|
+
* Where this boot's generated ids start. Counters restart at 0 on every boot, so by default
|
|
2112
|
+
* every boot reissues the previous boot's ids; a different base gives an unrelated run of ids
|
|
2113
|
+
* (a reset returns to the same run). A non-negative integer, or `"boot"` for one derived from
|
|
2114
|
+
* the wall clock when the runtime is created. Default `0`: the same ids on every boot.
|
|
2115
|
+
*/
|
|
2116
|
+
idBase?: IdBase;
|
|
2047
2117
|
/** Seeds every random choice the runtime makes (fault rates, jitter). Default `0`. */
|
|
2048
2118
|
seed?: number | string;
|
|
2049
2119
|
/**
|
|
@@ -2127,6 +2197,12 @@ type ServiceRuntime<T extends ServiceInstance> = FetchAPI & {
|
|
|
2127
2197
|
mount(prefix: string): MountedAPI;
|
|
2128
2198
|
readonly sqlite: SqliteClient$2;
|
|
2129
2199
|
readonly clock: Clock;
|
|
2200
|
+
/**
|
|
2201
|
+
* Change the id base ({@link RuntimeOptions.idBase}) for ids generated from now on, and
|
|
2202
|
+
* return the number it resolved to. Set it before the first request so a boot's ids stay
|
|
2203
|
+
* one run.
|
|
2204
|
+
*/
|
|
2205
|
+
setIdBase(base: IdBase): number;
|
|
2130
2206
|
readonly faults: FaultRegistry;
|
|
2131
2207
|
/** Baseline response time per namespace. */
|
|
2132
2208
|
readonly latency: LatencyRegistry;
|
package/dist/server.js
CHANGED
package/package.json
CHANGED