@jaypie/testkit 1.2.11 → 1.2.13
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/dist/mock/dynamodb.d.ts +51 -30
- package/dist/mock/express.d.ts +7 -1
- package/dist/mock/index.d.ts +75 -48
- package/dist/mock/index.js +36 -15
- package/dist/mock/index.js.map +1 -1
- package/dist/mock/mock/dynamodb.d.ts +51 -30
- package/dist/mock/mock/express.d.ts +7 -1
- package/package.json +1 -1
package/dist/mock/dynamodb.d.ts
CHANGED
|
@@ -1,32 +1,40 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as original from "@jaypie/dynamodb";
|
|
2
|
+
import type { BaseQueryOptions, DynamoClientConfig, ExportResult, ParentReference, QueryParams, QueryResult, SeedOptions, SeedResult, StorableEntity } from "@jaypie/dynamodb";
|
|
3
|
+
import type { IndexableEntity } from "@jaypie/vocabulary";
|
|
2
4
|
export declare const APEX = "@";
|
|
3
5
|
export declare const ARCHIVED_SUFFIX = "#archived";
|
|
6
|
+
export declare const DEFAULT_INDEXES: import("@jaypie/fabric").IndexDefinition[];
|
|
4
7
|
export declare const DELETED_SUFFIX = "#deleted";
|
|
5
8
|
export declare const INDEX_ALIAS = "indexAlias";
|
|
6
9
|
export declare const INDEX_CLASS = "indexClass";
|
|
7
|
-
export declare const
|
|
10
|
+
export declare const INDEX_SCOPE = "indexScope";
|
|
8
11
|
export declare const INDEX_TYPE = "indexType";
|
|
9
12
|
export declare const INDEX_XID = "indexXid";
|
|
10
13
|
export declare const SEPARATOR = "#";
|
|
11
|
-
export declare const
|
|
14
|
+
export declare const buildCompositeKey: ((entity: Record<string, unknown> & {
|
|
15
|
+
model: string;
|
|
16
|
+
}, fields: string[], suffix?: string) => string) & {
|
|
17
|
+
mock: any;
|
|
18
|
+
};
|
|
19
|
+
export declare const buildIndexAlias: ((scope: string, model: string, alias: string) => string) & {
|
|
12
20
|
mock: any;
|
|
13
21
|
};
|
|
14
|
-
export declare const buildIndexClass: ((
|
|
22
|
+
export declare const buildIndexClass: ((scope: string, model: string, recordClass: string) => string) & {
|
|
15
23
|
mock: any;
|
|
16
24
|
};
|
|
17
|
-
export declare const
|
|
25
|
+
export declare const buildIndexScope: ((scope: string, model: string) => string) & {
|
|
18
26
|
mock: any;
|
|
19
27
|
};
|
|
20
|
-
export declare const buildIndexType: ((
|
|
28
|
+
export declare const buildIndexType: ((scope: string, model: string, type: string) => string) & {
|
|
21
29
|
mock: any;
|
|
22
30
|
};
|
|
23
|
-
export declare const buildIndexXid: ((
|
|
31
|
+
export declare const buildIndexXid: ((scope: string, model: string, xid: string) => string) & {
|
|
24
32
|
mock: any;
|
|
25
33
|
};
|
|
26
|
-
export declare const
|
|
34
|
+
export declare const calculateScope: ((parent?: ParentReference) => string) & {
|
|
27
35
|
mock: any;
|
|
28
36
|
};
|
|
29
|
-
export declare const indexEntity: (<T extends
|
|
37
|
+
export declare const indexEntity: (<T extends StorableEntity>(entity: T, suffix?: string) => T) & {
|
|
30
38
|
mock: any;
|
|
31
39
|
};
|
|
32
40
|
export declare const initClient: ((config: DynamoClientConfig) => void) & {
|
|
@@ -47,17 +55,17 @@ export declare const resetClient: ((...args: any[]) => any) & {
|
|
|
47
55
|
export declare const getEntity: ((params: {
|
|
48
56
|
id: string;
|
|
49
57
|
model: string;
|
|
50
|
-
}) => Promise<
|
|
58
|
+
}) => Promise<StorableEntity | null>) & {
|
|
51
59
|
mock: any;
|
|
52
60
|
};
|
|
53
61
|
export declare const putEntity: ((params: {
|
|
54
|
-
entity:
|
|
55
|
-
}) => Promise<
|
|
62
|
+
entity: StorableEntity;
|
|
63
|
+
}) => Promise<StorableEntity>) & {
|
|
56
64
|
mock: any;
|
|
57
65
|
};
|
|
58
66
|
export declare const updateEntity: ((params: {
|
|
59
|
-
entity:
|
|
60
|
-
}) => Promise<
|
|
67
|
+
entity: StorableEntity;
|
|
68
|
+
}) => Promise<StorableEntity>) & {
|
|
61
69
|
mock: any;
|
|
62
70
|
};
|
|
63
71
|
export declare const deleteEntity: ((params: {
|
|
@@ -78,15 +86,15 @@ export declare const destroyEntity: ((params: {
|
|
|
78
86
|
}) => Promise<boolean>) & {
|
|
79
87
|
mock: any;
|
|
80
88
|
};
|
|
81
|
-
export declare const
|
|
89
|
+
export declare const queryByScope: ((params: {
|
|
82
90
|
model: string;
|
|
83
|
-
|
|
91
|
+
scope: string;
|
|
84
92
|
archived?: boolean;
|
|
85
93
|
ascending?: boolean;
|
|
86
94
|
deleted?: boolean;
|
|
87
95
|
limit?: number;
|
|
88
96
|
startKey?: Record<string, unknown>;
|
|
89
|
-
}) => Promise<QueryResult<
|
|
97
|
+
}) => Promise<QueryResult<StorableEntity>>) & {
|
|
90
98
|
mock: any;
|
|
91
99
|
};
|
|
92
100
|
export declare const queryByAlias: ((params: {
|
|
@@ -94,8 +102,8 @@ export declare const queryByAlias: ((params: {
|
|
|
94
102
|
archived?: boolean;
|
|
95
103
|
deleted?: boolean;
|
|
96
104
|
model: string;
|
|
97
|
-
|
|
98
|
-
}) => Promise<
|
|
105
|
+
scope: string;
|
|
106
|
+
}) => Promise<StorableEntity | null>) & {
|
|
99
107
|
mock: any;
|
|
100
108
|
};
|
|
101
109
|
export declare const queryByClass: ((params: {
|
|
@@ -104,10 +112,10 @@ export declare const queryByClass: ((params: {
|
|
|
104
112
|
deleted?: boolean;
|
|
105
113
|
limit?: number;
|
|
106
114
|
model: string;
|
|
107
|
-
|
|
115
|
+
scope: string;
|
|
108
116
|
recordClass: string;
|
|
109
117
|
startKey?: Record<string, unknown>;
|
|
110
|
-
}) => Promise<QueryResult<
|
|
118
|
+
}) => Promise<QueryResult<StorableEntity>>) & {
|
|
111
119
|
mock: any;
|
|
112
120
|
};
|
|
113
121
|
export declare const queryByType: ((params: {
|
|
@@ -116,31 +124,44 @@ export declare const queryByType: ((params: {
|
|
|
116
124
|
deleted?: boolean;
|
|
117
125
|
limit?: number;
|
|
118
126
|
model: string;
|
|
119
|
-
|
|
127
|
+
scope: string;
|
|
120
128
|
startKey?: Record<string, unknown>;
|
|
121
129
|
type: string;
|
|
122
|
-
}) => Promise<QueryResult<
|
|
130
|
+
}) => Promise<QueryResult<StorableEntity>>) & {
|
|
123
131
|
mock: any;
|
|
124
132
|
};
|
|
125
133
|
export declare const queryByXid: ((params: {
|
|
126
134
|
archived?: boolean;
|
|
127
135
|
deleted?: boolean;
|
|
128
136
|
model: string;
|
|
129
|
-
|
|
137
|
+
scope: string;
|
|
130
138
|
xid: string;
|
|
131
|
-
}) => Promise<
|
|
139
|
+
}) => Promise<StorableEntity | null>) & {
|
|
140
|
+
mock: any;
|
|
141
|
+
};
|
|
142
|
+
export declare const query: (<T extends StorableEntity = original.StorableEntity>(params: {
|
|
143
|
+
archived?: boolean;
|
|
144
|
+
ascending?: boolean;
|
|
145
|
+
deleted?: boolean;
|
|
146
|
+
filter?: Partial<T>;
|
|
147
|
+
limit?: number;
|
|
148
|
+
model: string;
|
|
149
|
+
scope?: string;
|
|
150
|
+
startKey?: Record<string, unknown>;
|
|
151
|
+
}) => Promise<QueryResult<T>>) & {
|
|
132
152
|
mock: any;
|
|
133
153
|
};
|
|
134
|
-
export declare const seedEntityIfNotExists: (<T extends Partial<
|
|
154
|
+
export declare const seedEntityIfNotExists: (<T extends Partial<StorableEntity>>(entity: T) => Promise<boolean>) & {
|
|
135
155
|
mock: any;
|
|
136
156
|
};
|
|
137
|
-
export declare const seedEntities: (<T extends Partial<
|
|
157
|
+
export declare const seedEntities: (<T extends Partial<StorableEntity>>(entities: T[], options?: SeedOptions) => Promise<SeedResult>) & {
|
|
138
158
|
mock: any;
|
|
139
159
|
};
|
|
140
|
-
export declare const exportEntities: (<T extends
|
|
160
|
+
export declare const exportEntities: (<T extends StorableEntity>(model: string, scope: string, limit?: number) => Promise<ExportResult<T>>) & {
|
|
141
161
|
mock: any;
|
|
142
162
|
};
|
|
143
|
-
export declare const exportEntitiesToJson: ((model: string,
|
|
163
|
+
export declare const exportEntitiesToJson: ((model: string, scope: string, pretty?: boolean) => Promise<string>) & {
|
|
144
164
|
mock: any;
|
|
145
165
|
};
|
|
146
|
-
export type { BaseQueryOptions, ExportResult,
|
|
166
|
+
export type { BaseQueryOptions, ExportResult, ParentReference, QueryParams, QueryResult, SeedOptions, SeedResult, StorableEntity, };
|
|
167
|
+
export type { IndexableEntity };
|
package/dist/mock/express.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import * as original from "@jaypie/express";
|
|
2
|
+
export declare const createLambdaHandler: import("vitest").Mock<(...args: any[]) => any>;
|
|
3
|
+
export declare const createLambdaStreamHandler: import("vitest").Mock<(...args: any[]) => any>;
|
|
4
|
+
export declare const getCurrentInvoke: import("vitest").Mock<(...args: any[]) => any>;
|
|
5
|
+
export declare const LambdaRequest: typeof original.LambdaRequest;
|
|
6
|
+
export declare const LambdaResponseBuffered: typeof original.LambdaResponseBuffered;
|
|
7
|
+
export declare const LambdaResponseStreaming: typeof original.LambdaResponseStreaming;
|
|
1
8
|
export declare const EXPRESS: {
|
|
2
9
|
readonly PATH: {
|
|
3
10
|
readonly ANY: "*";
|
|
@@ -15,7 +22,6 @@ export declare const notFoundRoute: import("vitest").Mock<(...args: any[]) => an
|
|
|
15
22
|
export declare const notImplementedRoute: import("vitest").Mock<(...args: any[]) => any>;
|
|
16
23
|
export declare const expressHttpCodeHandler: import("vitest").Mock<(...args: any[]) => any>;
|
|
17
24
|
export declare const cors: import("vitest").Mock<(...args: any[]) => any>;
|
|
18
|
-
export declare const createServer: import("vitest").Mock<(...args: any[]) => any>;
|
|
19
25
|
export declare const getCurrentInvokeUuid: import("vitest").Mock<(...args: any[]) => any>;
|
|
20
26
|
export interface ExpressHandlerFunction {
|
|
21
27
|
(req: any, res: any, ...extra: any[]): Promise<any> | any;
|
package/dist/mock/index.d.ts
CHANGED
|
@@ -3,10 +3,14 @@
|
|
|
3
3
|
import * as vitest from 'vitest';
|
|
4
4
|
import * as errors from '@jaypie/errors';
|
|
5
5
|
import * as kit from '@jaypie/kit';
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
import
|
|
6
|
+
import * as _jaypie_fabric from '@jaypie/fabric';
|
|
7
|
+
import * as original from '@jaypie/dynamodb';
|
|
8
|
+
import { ParentReference, StorableEntity, DynamoClientConfig, QueryResult, SeedOptions, SeedResult, ExportResult } from '@jaypie/dynamodb';
|
|
9
|
+
export { BaseQueryOptions, ExportResult, ParentReference, QueryParams, QueryResult, SeedOptions, SeedResult, StorableEntity } from '@jaypie/dynamodb';
|
|
10
|
+
import * as original$1 from '@jaypie/express';
|
|
11
|
+
import * as original$2 from '@jaypie/llm';
|
|
9
12
|
export { FORMAT, LEVEL, Logger, log } from '@jaypie/logger';
|
|
13
|
+
export { IndexableEntity } from '@jaypie/vocabulary';
|
|
10
14
|
export { mongoose } from '@jaypie/mongoose';
|
|
11
15
|
|
|
12
16
|
declare const getMessages: vitest.Mock<(...args: any[]) => any>;
|
|
@@ -315,32 +319,38 @@ declare const submitMetricSet: vitest.Mock<(...args: any[]) => any>;
|
|
|
315
319
|
|
|
316
320
|
declare const APEX = "@";
|
|
317
321
|
declare const ARCHIVED_SUFFIX = "#archived";
|
|
322
|
+
declare const DEFAULT_INDEXES: _jaypie_fabric.IndexDefinition[];
|
|
318
323
|
declare const DELETED_SUFFIX = "#deleted";
|
|
319
324
|
declare const INDEX_ALIAS = "indexAlias";
|
|
320
325
|
declare const INDEX_CLASS = "indexClass";
|
|
321
|
-
declare const
|
|
326
|
+
declare const INDEX_SCOPE = "indexScope";
|
|
322
327
|
declare const INDEX_TYPE = "indexType";
|
|
323
328
|
declare const INDEX_XID = "indexXid";
|
|
324
329
|
declare const SEPARATOR = "#";
|
|
325
|
-
declare const
|
|
330
|
+
declare const buildCompositeKey: ((entity: Record<string, unknown> & {
|
|
331
|
+
model: string;
|
|
332
|
+
}, fields: string[], suffix?: string) => string) & {
|
|
333
|
+
mock: any;
|
|
334
|
+
};
|
|
335
|
+
declare const buildIndexAlias: ((scope: string, model: string, alias: string) => string) & {
|
|
326
336
|
mock: any;
|
|
327
337
|
};
|
|
328
|
-
declare const buildIndexClass: ((
|
|
338
|
+
declare const buildIndexClass: ((scope: string, model: string, recordClass: string) => string) & {
|
|
329
339
|
mock: any;
|
|
330
340
|
};
|
|
331
|
-
declare const
|
|
341
|
+
declare const buildIndexScope: ((scope: string, model: string) => string) & {
|
|
332
342
|
mock: any;
|
|
333
343
|
};
|
|
334
|
-
declare const buildIndexType: ((
|
|
344
|
+
declare const buildIndexType: ((scope: string, model: string, type: string) => string) & {
|
|
335
345
|
mock: any;
|
|
336
346
|
};
|
|
337
|
-
declare const buildIndexXid: ((
|
|
347
|
+
declare const buildIndexXid: ((scope: string, model: string, xid: string) => string) & {
|
|
338
348
|
mock: any;
|
|
339
349
|
};
|
|
340
|
-
declare const
|
|
350
|
+
declare const calculateScope: ((parent?: ParentReference) => string) & {
|
|
341
351
|
mock: any;
|
|
342
352
|
};
|
|
343
|
-
declare const indexEntity: (<T extends
|
|
353
|
+
declare const indexEntity: (<T extends StorableEntity>(entity: T, suffix?: string) => T) & {
|
|
344
354
|
mock: any;
|
|
345
355
|
};
|
|
346
356
|
declare const initClient: ((config: DynamoClientConfig) => void) & {
|
|
@@ -361,17 +371,17 @@ declare const resetClient: ((...args: any[]) => any) & {
|
|
|
361
371
|
declare const getEntity: ((params: {
|
|
362
372
|
id: string;
|
|
363
373
|
model: string;
|
|
364
|
-
}) => Promise<
|
|
374
|
+
}) => Promise<StorableEntity | null>) & {
|
|
365
375
|
mock: any;
|
|
366
376
|
};
|
|
367
377
|
declare const putEntity: ((params: {
|
|
368
|
-
entity:
|
|
369
|
-
}) => Promise<
|
|
378
|
+
entity: StorableEntity;
|
|
379
|
+
}) => Promise<StorableEntity>) & {
|
|
370
380
|
mock: any;
|
|
371
381
|
};
|
|
372
382
|
declare const updateEntity: ((params: {
|
|
373
|
-
entity:
|
|
374
|
-
}) => Promise<
|
|
383
|
+
entity: StorableEntity;
|
|
384
|
+
}) => Promise<StorableEntity>) & {
|
|
375
385
|
mock: any;
|
|
376
386
|
};
|
|
377
387
|
declare const deleteEntity: ((params: {
|
|
@@ -392,15 +402,15 @@ declare const destroyEntity: ((params: {
|
|
|
392
402
|
}) => Promise<boolean>) & {
|
|
393
403
|
mock: any;
|
|
394
404
|
};
|
|
395
|
-
declare const
|
|
405
|
+
declare const queryByScope: ((params: {
|
|
396
406
|
model: string;
|
|
397
|
-
|
|
407
|
+
scope: string;
|
|
398
408
|
archived?: boolean;
|
|
399
409
|
ascending?: boolean;
|
|
400
410
|
deleted?: boolean;
|
|
401
411
|
limit?: number;
|
|
402
412
|
startKey?: Record<string, unknown>;
|
|
403
|
-
}) => Promise<QueryResult<
|
|
413
|
+
}) => Promise<QueryResult<StorableEntity>>) & {
|
|
404
414
|
mock: any;
|
|
405
415
|
};
|
|
406
416
|
declare const queryByAlias: ((params: {
|
|
@@ -408,8 +418,8 @@ declare const queryByAlias: ((params: {
|
|
|
408
418
|
archived?: boolean;
|
|
409
419
|
deleted?: boolean;
|
|
410
420
|
model: string;
|
|
411
|
-
|
|
412
|
-
}) => Promise<
|
|
421
|
+
scope: string;
|
|
422
|
+
}) => Promise<StorableEntity | null>) & {
|
|
413
423
|
mock: any;
|
|
414
424
|
};
|
|
415
425
|
declare const queryByClass: ((params: {
|
|
@@ -418,10 +428,10 @@ declare const queryByClass: ((params: {
|
|
|
418
428
|
deleted?: boolean;
|
|
419
429
|
limit?: number;
|
|
420
430
|
model: string;
|
|
421
|
-
|
|
431
|
+
scope: string;
|
|
422
432
|
recordClass: string;
|
|
423
433
|
startKey?: Record<string, unknown>;
|
|
424
|
-
}) => Promise<QueryResult<
|
|
434
|
+
}) => Promise<QueryResult<StorableEntity>>) & {
|
|
425
435
|
mock: any;
|
|
426
436
|
};
|
|
427
437
|
declare const queryByType: ((params: {
|
|
@@ -430,34 +440,52 @@ declare const queryByType: ((params: {
|
|
|
430
440
|
deleted?: boolean;
|
|
431
441
|
limit?: number;
|
|
432
442
|
model: string;
|
|
433
|
-
|
|
443
|
+
scope: string;
|
|
434
444
|
startKey?: Record<string, unknown>;
|
|
435
445
|
type: string;
|
|
436
|
-
}) => Promise<QueryResult<
|
|
446
|
+
}) => Promise<QueryResult<StorableEntity>>) & {
|
|
437
447
|
mock: any;
|
|
438
448
|
};
|
|
439
449
|
declare const queryByXid: ((params: {
|
|
440
450
|
archived?: boolean;
|
|
441
451
|
deleted?: boolean;
|
|
442
452
|
model: string;
|
|
443
|
-
|
|
453
|
+
scope: string;
|
|
444
454
|
xid: string;
|
|
445
|
-
}) => Promise<
|
|
455
|
+
}) => Promise<StorableEntity | null>) & {
|
|
456
|
+
mock: any;
|
|
457
|
+
};
|
|
458
|
+
declare const query: (<T extends StorableEntity = original.StorableEntity>(params: {
|
|
459
|
+
archived?: boolean;
|
|
460
|
+
ascending?: boolean;
|
|
461
|
+
deleted?: boolean;
|
|
462
|
+
filter?: Partial<T>;
|
|
463
|
+
limit?: number;
|
|
464
|
+
model: string;
|
|
465
|
+
scope?: string;
|
|
466
|
+
startKey?: Record<string, unknown>;
|
|
467
|
+
}) => Promise<QueryResult<T>>) & {
|
|
446
468
|
mock: any;
|
|
447
469
|
};
|
|
448
|
-
declare const seedEntityIfNotExists: (<T extends Partial<
|
|
470
|
+
declare const seedEntityIfNotExists: (<T extends Partial<StorableEntity>>(entity: T) => Promise<boolean>) & {
|
|
449
471
|
mock: any;
|
|
450
472
|
};
|
|
451
|
-
declare const seedEntities: (<T extends Partial<
|
|
473
|
+
declare const seedEntities: (<T extends Partial<StorableEntity>>(entities: T[], options?: SeedOptions) => Promise<SeedResult>) & {
|
|
452
474
|
mock: any;
|
|
453
475
|
};
|
|
454
|
-
declare const exportEntities: (<T extends
|
|
476
|
+
declare const exportEntities: (<T extends StorableEntity>(model: string, scope: string, limit?: number) => Promise<ExportResult<T>>) & {
|
|
455
477
|
mock: any;
|
|
456
478
|
};
|
|
457
|
-
declare const exportEntitiesToJson: ((model: string,
|
|
479
|
+
declare const exportEntitiesToJson: ((model: string, scope: string, pretty?: boolean) => Promise<string>) & {
|
|
458
480
|
mock: any;
|
|
459
481
|
};
|
|
460
482
|
|
|
483
|
+
declare const createLambdaHandler: vitest.Mock<(...args: any[]) => any>;
|
|
484
|
+
declare const createLambdaStreamHandler: vitest.Mock<(...args: any[]) => any>;
|
|
485
|
+
declare const getCurrentInvoke: vitest.Mock<(...args: any[]) => any>;
|
|
486
|
+
declare const LambdaRequest: typeof original$1.LambdaRequest;
|
|
487
|
+
declare const LambdaResponseBuffered: typeof original$1.LambdaResponseBuffered;
|
|
488
|
+
declare const LambdaResponseStreaming: typeof original$1.LambdaResponseStreaming;
|
|
461
489
|
declare const EXPRESS: {
|
|
462
490
|
readonly PATH: {
|
|
463
491
|
readonly ANY: "*";
|
|
@@ -475,7 +503,6 @@ declare const notFoundRoute: vitest.Mock<(...args: any[]) => any>;
|
|
|
475
503
|
declare const notImplementedRoute: vitest.Mock<(...args: any[]) => any>;
|
|
476
504
|
declare const expressHttpCodeHandler: vitest.Mock<(...args: any[]) => any>;
|
|
477
505
|
declare const cors: vitest.Mock<(...args: any[]) => any>;
|
|
478
|
-
declare const createServer: vitest.Mock<(...args: any[]) => any>;
|
|
479
506
|
declare const getCurrentInvokeUuid: vitest.Mock<(...args: any[]) => any>;
|
|
480
507
|
interface ExpressHandlerFunction {
|
|
481
508
|
(req: any, res: any, ...extra: any[]): Promise<any> | any;
|
|
@@ -531,25 +558,25 @@ declare const lambdaStreamHandler: ((handler: StreamHandlerFunction, props?: Lam
|
|
|
531
558
|
mock: any;
|
|
532
559
|
};
|
|
533
560
|
|
|
534
|
-
declare const LLM: typeof original.LLM;
|
|
561
|
+
declare const LLM: typeof original$2.LLM;
|
|
535
562
|
declare const Llm: vitest.Mock<(...args: any[]) => any> & {
|
|
536
563
|
operate: vitest.Mock<(...args: any[]) => any>;
|
|
537
564
|
send: vitest.Mock<(...args: any[]) => any>;
|
|
538
565
|
};
|
|
539
|
-
declare const Toolkit: typeof original.Toolkit;
|
|
540
|
-
declare const JaypieToolkit: typeof original.JaypieToolkit;
|
|
541
|
-
declare const LlmMessageRole: typeof original.LlmMessageRole;
|
|
542
|
-
declare const LlmMessageType: typeof original.LlmMessageType;
|
|
543
|
-
declare const LlmStreamChunkType: typeof original.LlmStreamChunkType;
|
|
544
|
-
declare const GeminiProvider: typeof original.GeminiProvider;
|
|
545
|
-
declare const OpenRouterProvider: typeof original.OpenRouterProvider;
|
|
546
|
-
declare const extractReasoning: typeof original.extractReasoning;
|
|
547
|
-
declare const isLlmOperateInput: typeof original.isLlmOperateInput;
|
|
548
|
-
declare const isLlmOperateInputContent: typeof original.isLlmOperateInputContent;
|
|
549
|
-
declare const isLlmOperateInputFile: typeof original.isLlmOperateInputFile;
|
|
550
|
-
declare const isLlmOperateInputImage: typeof original.isLlmOperateInputImage;
|
|
551
|
-
declare const toolkit: original.JaypieToolkit;
|
|
552
|
-
declare const tools: Omit<original.LlmTool, "call">[];
|
|
566
|
+
declare const Toolkit: typeof original$2.Toolkit;
|
|
567
|
+
declare const JaypieToolkit: typeof original$2.JaypieToolkit;
|
|
568
|
+
declare const LlmMessageRole: typeof original$2.LlmMessageRole;
|
|
569
|
+
declare const LlmMessageType: typeof original$2.LlmMessageType;
|
|
570
|
+
declare const LlmStreamChunkType: typeof original$2.LlmStreamChunkType;
|
|
571
|
+
declare const GeminiProvider: typeof original$2.GeminiProvider;
|
|
572
|
+
declare const OpenRouterProvider: typeof original$2.OpenRouterProvider;
|
|
573
|
+
declare const extractReasoning: typeof original$2.extractReasoning;
|
|
574
|
+
declare const isLlmOperateInput: typeof original$2.isLlmOperateInput;
|
|
575
|
+
declare const isLlmOperateInputContent: typeof original$2.isLlmOperateInputContent;
|
|
576
|
+
declare const isLlmOperateInputFile: typeof original$2.isLlmOperateInputFile;
|
|
577
|
+
declare const isLlmOperateInputImage: typeof original$2.isLlmOperateInputImage;
|
|
578
|
+
declare const toolkit: original$2.JaypieToolkit;
|
|
579
|
+
declare const tools: Omit<original$2.LlmTool, "call">[];
|
|
553
580
|
|
|
554
581
|
interface JsonApiError {
|
|
555
582
|
errors: Array<{
|
|
@@ -733,5 +760,5 @@ declare const registerMcpTool: ((config: RegisterMcpToolConfig) => RegisterMcpTo
|
|
|
733
760
|
|
|
734
761
|
declare const mock: Record<string, any>;
|
|
735
762
|
|
|
736
|
-
export { APEX, ARCHIVED_SUFFIX, BadGatewayError, BadRequestError, ConfigurationError, CorsError, DATADOG, DELETED_SUFFIX, EXPRESS, ForbiddenError, GatewayTimeoutError, GeminiProvider, GoneError, HTTP, INDEX_ALIAS, INDEX_CLASS,
|
|
763
|
+
export { APEX, ARCHIVED_SUFFIX, BadGatewayError, BadRequestError, ConfigurationError, CorsError, DATADOG, DEFAULT_INDEXES, DELETED_SUFFIX, EXPRESS, ForbiddenError, GatewayTimeoutError, GeminiProvider, GoneError, HTTP, INDEX_ALIAS, INDEX_CLASS, INDEX_SCOPE, INDEX_TYPE, INDEX_XID, IllogicalError, InternalError, JAYPIE, JaypieError, JaypieStream, JaypieToolkit, LLM, LambdaRequest, LambdaResponseBuffered, LambdaResponseStreaming, Llm, LlmMessageRole, LlmMessageType, LlmStreamChunkType, MarkdownPage, MethodNotAllowedError, MultiError, NotFoundError, NotImplementedError, OpenRouterProvider, PROJECT, ProjectError, ProjectMultiError, RejectedError, SEPARATOR, STATUS_VALUES, StatusType, TeapotError, TooManyRequestsError, Toolkit, UnauthorizedError, UnavailableError, UnhandledError, UnreachableCodeError, archiveEntity, badRequestRoute, buildCompositeKey, buildIndexAlias, buildIndexClass, buildIndexScope, buildIndexType, buildIndexXid, calculateScope, cloneDeep, connect, connectFromSecretEnv, cors, createExpressStream, createJaypieStream, createLambdaHandler, createLambdaStream, createLambdaStreamHandler, createLlmTool, createLogger, mock as default, deleteEntity, destroyEntity, disconnect, echoRoute, envBoolean, envsKey, errorFromStatusCode, exportEntities, exportEntitiesToJson, expressHandler, expressHttpCodeHandler, expressStreamHandler, extractReasoning, forbiddenRoute, force, formatError, formatSSE, getCurrentInvoke, getCurrentInvokeUuid, getDocClient, getEntity, getEnvSecret, getHeaderFrom, getMessages, getObjectKeyCaseInsensitive, getS3FileBuffer, getSecret, getSingletonMessage, getTableName, getTextractJob, goneRoute, hasDatadogEnv, indexEntity, initClient, inputToJsonSchema, isClass, isInitialized, isJaypieError, isLlmOperateInput, isLlmOperateInputContent, isLlmOperateInputFile, isLlmOperateInputImage, isLocalEnv, isNodeTestEnv, isProductionEnv, isStatus, jaypieErrorFromStatus, jaypieHandler, lambdaHandler, lambdaServiceHandler, lambdaStreamHandler, loadEnvSecrets, methodNotAllowedRoute, noContentRoute, notFoundRoute, notImplementedRoute, placeholders, putEntity, query, queryByAlias, queryByClass, queryByScope, queryByType, queryByXid, registerMcpTool, resetClient, resolveValue, safeParseFloat, seedEntities, seedEntityIfNotExists, sendBatchMessages, sendMessage, sendTextractJob, sleep, streamToSSE, submitDistribution, submitMetric, submitMetricSet, textractJsonToMarkdown, toolkit, tools, updateEntity, uuid };
|
|
737
764
|
export type { ExpressHandlerFunction, ExpressHandlerOptions, ExpressStreamHandlerFunction, ExpressStreamHandlerOptions, LambdaOptions, Status };
|
package/dist/mock/index.js
CHANGED
|
@@ -597,20 +597,22 @@ var datadog = /*#__PURE__*/Object.freeze({
|
|
|
597
597
|
// Re-export constants (no need to mock, just pass through)
|
|
598
598
|
const APEX = original$2.APEX;
|
|
599
599
|
const ARCHIVED_SUFFIX = original$2.ARCHIVED_SUFFIX;
|
|
600
|
+
const DEFAULT_INDEXES = original$2.DEFAULT_INDEXES;
|
|
600
601
|
const DELETED_SUFFIX = original$2.DELETED_SUFFIX;
|
|
601
602
|
const INDEX_ALIAS = original$2.INDEX_ALIAS;
|
|
602
603
|
const INDEX_CLASS = original$2.INDEX_CLASS;
|
|
603
|
-
const
|
|
604
|
+
const INDEX_SCOPE = original$2.INDEX_SCOPE;
|
|
604
605
|
const INDEX_TYPE = original$2.INDEX_TYPE;
|
|
605
606
|
const INDEX_XID = original$2.INDEX_XID;
|
|
606
607
|
const SEPARATOR = original$2.SEPARATOR;
|
|
607
608
|
// Key builder functions - use createMockFunction with typed implementations
|
|
608
|
-
const
|
|
609
|
-
const
|
|
610
|
-
const
|
|
611
|
-
const
|
|
612
|
-
const
|
|
613
|
-
const
|
|
609
|
+
const buildCompositeKey = createMockFunction((entity, fields, suffix) => original$2.buildCompositeKey(entity, fields, suffix));
|
|
610
|
+
const buildIndexAlias = createMockFunction((scope, model, alias) => original$2.buildIndexAlias(scope, model, alias));
|
|
611
|
+
const buildIndexClass = createMockFunction((scope, model, recordClass) => original$2.buildIndexClass(scope, model, recordClass));
|
|
612
|
+
const buildIndexScope = createMockFunction((scope, model) => original$2.buildIndexScope(scope, model));
|
|
613
|
+
const buildIndexType = createMockFunction((scope, model, type) => original$2.buildIndexType(scope, model, type));
|
|
614
|
+
const buildIndexXid = createMockFunction((scope, model, xid) => original$2.buildIndexXid(scope, model, xid));
|
|
615
|
+
const calculateScope = createMockFunction((parent) => original$2.calculateScope(parent));
|
|
614
616
|
const indexEntity = createMockFunction((entity, suffix) => original$2.indexEntity(entity, suffix));
|
|
615
617
|
// Client functions
|
|
616
618
|
const initClient = createMockFunction(() => {
|
|
@@ -635,7 +637,7 @@ const deleteEntity = createMockFunction(async () => true);
|
|
|
635
637
|
const archiveEntity = createMockFunction(async () => true);
|
|
636
638
|
const destroyEntity = createMockFunction(async () => true);
|
|
637
639
|
// Query functions - service handler pattern (callable with object params)
|
|
638
|
-
const
|
|
640
|
+
const queryByScope = createMockFunction(async () => ({
|
|
639
641
|
items: [],
|
|
640
642
|
lastEvaluatedKey: undefined,
|
|
641
643
|
}));
|
|
@@ -649,6 +651,11 @@ const queryByType = createMockFunction(async () => ({
|
|
|
649
651
|
lastEvaluatedKey: undefined,
|
|
650
652
|
}));
|
|
651
653
|
const queryByXid = createMockFunction(async () => null);
|
|
654
|
+
// Unified query function with auto-detect
|
|
655
|
+
const query = createMockFunction(async () => ({
|
|
656
|
+
items: [],
|
|
657
|
+
lastEvaluatedKey: undefined,
|
|
658
|
+
}));
|
|
652
659
|
// Seed and export utilities
|
|
653
660
|
const seedEntityIfNotExists = createMockFunction(async () => true);
|
|
654
661
|
const seedEntities = createMockFunction(async () => ({
|
|
@@ -666,20 +673,22 @@ var dynamodb = /*#__PURE__*/Object.freeze({
|
|
|
666
673
|
__proto__: null,
|
|
667
674
|
APEX: APEX,
|
|
668
675
|
ARCHIVED_SUFFIX: ARCHIVED_SUFFIX,
|
|
676
|
+
DEFAULT_INDEXES: DEFAULT_INDEXES,
|
|
669
677
|
DELETED_SUFFIX: DELETED_SUFFIX,
|
|
670
678
|
INDEX_ALIAS: INDEX_ALIAS,
|
|
671
679
|
INDEX_CLASS: INDEX_CLASS,
|
|
672
|
-
|
|
680
|
+
INDEX_SCOPE: INDEX_SCOPE,
|
|
673
681
|
INDEX_TYPE: INDEX_TYPE,
|
|
674
682
|
INDEX_XID: INDEX_XID,
|
|
675
683
|
SEPARATOR: SEPARATOR,
|
|
676
684
|
archiveEntity: archiveEntity,
|
|
685
|
+
buildCompositeKey: buildCompositeKey,
|
|
677
686
|
buildIndexAlias: buildIndexAlias,
|
|
678
687
|
buildIndexClass: buildIndexClass,
|
|
679
|
-
|
|
688
|
+
buildIndexScope: buildIndexScope,
|
|
680
689
|
buildIndexType: buildIndexType,
|
|
681
690
|
buildIndexXid: buildIndexXid,
|
|
682
|
-
|
|
691
|
+
calculateScope: calculateScope,
|
|
683
692
|
deleteEntity: deleteEntity,
|
|
684
693
|
destroyEntity: destroyEntity,
|
|
685
694
|
exportEntities: exportEntities,
|
|
@@ -691,9 +700,10 @@ var dynamodb = /*#__PURE__*/Object.freeze({
|
|
|
691
700
|
initClient: initClient,
|
|
692
701
|
isInitialized: isInitialized,
|
|
693
702
|
putEntity: putEntity,
|
|
703
|
+
query: query,
|
|
694
704
|
queryByAlias: queryByAlias,
|
|
695
705
|
queryByClass: queryByClass,
|
|
696
|
-
|
|
706
|
+
queryByScope: queryByScope,
|
|
697
707
|
queryByType: queryByType,
|
|
698
708
|
queryByXid: queryByXid,
|
|
699
709
|
resetClient: resetClient,
|
|
@@ -708,6 +718,13 @@ const TAG$1 = "EXPRESS";
|
|
|
708
718
|
const HTTP = {
|
|
709
719
|
CODE: { OK: 200, CREATED: 201, NO_CONTENT: 204, INTERNAL_ERROR: 500 },
|
|
710
720
|
};
|
|
721
|
+
// Re-export Lambda adapter classes directly (these are not mocked)
|
|
722
|
+
const createLambdaHandler = createMockWrappedFunction(original$3.createLambdaHandler);
|
|
723
|
+
const createLambdaStreamHandler = createMockWrappedFunction(original$3.createLambdaStreamHandler);
|
|
724
|
+
const getCurrentInvoke = createMockReturnedFunction({ context: undefined, event: undefined });
|
|
725
|
+
const LambdaRequest = original$3.LambdaRequest;
|
|
726
|
+
const LambdaResponseBuffered = original$3.LambdaResponseBuffered;
|
|
727
|
+
const LambdaResponseStreaming = original$3.LambdaResponseStreaming;
|
|
711
728
|
const EXPRESS = original$3.EXPRESS;
|
|
712
729
|
// Add Express route functions
|
|
713
730
|
const badRequestRoute = createMockWrappedFunction(original$3.badRequestRoute, { error: `_MOCK_BAD_REQUEST_ROUTE_[${TAG$1}]` });
|
|
@@ -727,7 +744,6 @@ const expressHttpCodeHandler = createMockWrappedFunction(original$3.expressHttpC
|
|
|
727
744
|
return res.status(200).send();
|
|
728
745
|
});
|
|
729
746
|
const cors = createMockWrappedFunction(original$3.cors);
|
|
730
|
-
const createServer = createMockResolvedFunction({ port: 8080, server: { close: () => { } } });
|
|
731
747
|
const getCurrentInvokeUuid = createMockReturnedFunction("mock-invoke-uuid-12345678");
|
|
732
748
|
const expressStreamHandler = createMockFunction((handlerOrProps, propsOrHandler) => {
|
|
733
749
|
let handler;
|
|
@@ -903,14 +919,19 @@ const expressHandler = createMockFunction((handlerOrProps, propsOrHandler) => {
|
|
|
903
919
|
var express = /*#__PURE__*/Object.freeze({
|
|
904
920
|
__proto__: null,
|
|
905
921
|
EXPRESS: EXPRESS,
|
|
922
|
+
LambdaRequest: LambdaRequest,
|
|
923
|
+
LambdaResponseBuffered: LambdaResponseBuffered,
|
|
924
|
+
LambdaResponseStreaming: LambdaResponseStreaming,
|
|
906
925
|
badRequestRoute: badRequestRoute,
|
|
907
926
|
cors: cors,
|
|
908
|
-
|
|
927
|
+
createLambdaHandler: createLambdaHandler,
|
|
928
|
+
createLambdaStreamHandler: createLambdaStreamHandler,
|
|
909
929
|
echoRoute: echoRoute,
|
|
910
930
|
expressHandler: expressHandler,
|
|
911
931
|
expressHttpCodeHandler: expressHttpCodeHandler,
|
|
912
932
|
expressStreamHandler: expressStreamHandler,
|
|
913
933
|
forbiddenRoute: forbiddenRoute,
|
|
934
|
+
getCurrentInvoke: getCurrentInvoke,
|
|
914
935
|
getCurrentInvokeUuid: getCurrentInvokeUuid,
|
|
915
936
|
goneRoute: goneRoute,
|
|
916
937
|
methodNotAllowedRoute: methodNotAllowedRoute,
|
|
@@ -1323,5 +1344,5 @@ const mock = {
|
|
|
1323
1344
|
...vocabulary,
|
|
1324
1345
|
};
|
|
1325
1346
|
|
|
1326
|
-
export { APEX, ARCHIVED_SUFFIX, BadGatewayError, BadRequestError, ConfigurationError, CorsError, DATADOG, DELETED_SUFFIX, EXPRESS, ForbiddenError, GatewayTimeoutError, GeminiProvider, GoneError, HTTP$1 as HTTP, INDEX_ALIAS, INDEX_CLASS,
|
|
1347
|
+
export { APEX, ARCHIVED_SUFFIX, BadGatewayError, BadRequestError, ConfigurationError, CorsError, DATADOG, DEFAULT_INDEXES, DELETED_SUFFIX, EXPRESS, ForbiddenError, GatewayTimeoutError, GeminiProvider, GoneError, HTTP$1 as HTTP, INDEX_ALIAS, INDEX_CLASS, INDEX_SCOPE, INDEX_TYPE, INDEX_XID, IllogicalError, InternalError, JAYPIE, JaypieError, JaypieStream, JaypieToolkit, LLM, LambdaRequest, LambdaResponseBuffered, LambdaResponseStreaming, Llm, LlmMessageRole, LlmMessageType, LlmStreamChunkType, MarkdownPage, MethodNotAllowedError, MultiError, NotFoundError, NotImplementedError, OpenRouterProvider, PROJECT, ProjectError, ProjectMultiError, RejectedError, SEPARATOR, STATUS_VALUES, StatusType, TeapotError, TooManyRequestsError, Toolkit, UnauthorizedError, UnavailableError, UnhandledError, UnreachableCodeError, archiveEntity, badRequestRoute, buildCompositeKey, buildIndexAlias, buildIndexClass, buildIndexScope, buildIndexType, buildIndexXid, calculateScope, cloneDeep, connect, connectFromSecretEnv, cors, createExpressStream, createJaypieStream, createLambdaHandler, createLambdaStream, createLambdaStreamHandler, createLlmTool, createLogger, mock as default, deleteEntity, destroyEntity, disconnect, echoRoute, envBoolean, envsKey, errorFromStatusCode, exportEntities, exportEntitiesToJson, expressHandler, expressHttpCodeHandler, expressStreamHandler, extractReasoning, forbiddenRoute, force, formatError, formatSSE, getCurrentInvoke, getCurrentInvokeUuid, getDocClient, getEntity, getEnvSecret, getHeaderFrom, getMessages, getObjectKeyCaseInsensitive, getS3FileBuffer, getSecret, getSingletonMessage, getTableName, getTextractJob, goneRoute, hasDatadogEnv, indexEntity, initClient, inputToJsonSchema, isClass, isInitialized, isJaypieError, isLlmOperateInput, isLlmOperateInputContent, isLlmOperateInputFile, isLlmOperateInputImage, isLocalEnv, isNodeTestEnv, isProductionEnv, isStatus, jaypieErrorFromStatus, jaypieHandler, lambdaHandler, lambdaServiceHandler, lambdaStreamHandler, loadEnvSecrets, methodNotAllowedRoute, noContentRoute, notFoundRoute, notImplementedRoute, placeholders, putEntity, query, queryByAlias, queryByClass, queryByScope, queryByType, queryByXid, registerMcpTool, resetClient, resolveValue, safeParseFloat, seedEntities, seedEntityIfNotExists, sendBatchMessages, sendMessage, sendTextractJob, sleep, streamToSSE, submitDistribution, submitMetric, submitMetricSet, textractJsonToMarkdown, toolkit, tools, updateEntity, uuid };
|
|
1327
1348
|
//# sourceMappingURL=index.js.map
|
package/dist/mock/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/mock/utils.ts","../../../src/mock/aws.ts","../../../src/mockLog.module.ts","../../../src/mock/core.ts","../../../src/mock/datadog.ts","../../../src/mock/dynamodb.ts","../../../src/mock/express.ts","../../../src/mock/kit.ts","../../../src/mock/lambda.ts","../../../src/mock/llm.ts","../../../src/mock/logger.ts","../../../src/mock/mongoose.ts","../../../src/mock/textract.ts","../../../src/mock/vocabulary.ts","../../../src/mock/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { vi } from \"vitest\";\n\nimport { LlmTool } from \"@jaypie/llm\";\n\n/**\n * Internal wrapper for vi.fn() that adds _jaypie: true to all mocks\n */\nfunction _createJaypieMock<T extends (...args: any[]) => any>(\n implementation?: T,\n): ReturnType<typeof vi.fn> {\n const mock = vi.fn(implementation);\n Object.defineProperty(mock, \"_jaypie\", { value: true });\n return mock;\n}\n\n/**\n * Creates function mocks with proper typing\n * Internal utility to create properly typed mocks\n */\nfunction createMockFunction<T extends (...args: any[]) => any>(\n implementation?: (...args: Parameters<T>) => ReturnType<T>,\n): T & { mock: any } {\n // Use a more specific type conversion to avoid TypeScript error\n return _createJaypieMock(implementation) as unknown as T & { mock: any };\n}\n\n/**\n * Creates a mock function that resolves to a value when awaited\n * Internal utility to create async mock functions\n */\nfunction createMockResolvedFunction<T>(value: T): ReturnType<typeof vi.fn> {\n return _createJaypieMock().mockResolvedValue(value);\n}\n\n/**\n * Creates a mock function that returns a value\n * Internal utility to create mock functions that return a value\n */\nfunction createMockReturnedFunction<T>(value: T): ReturnType<typeof vi.fn> {\n return _createJaypieMock().mockReturnValue(value);\n}\n\n/**\n * Creates a mock function that wraps another function\n * Internal utility to create mock functions that wrap another function\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction createMockWrappedFunction<T = any>(\n fn: (...args: unknown[]) => unknown,\n fallbackOrOptions:\n | any\n | {\n fallback?: any;\n throws?: boolean;\n class?: boolean;\n } = \"_MOCK_WRAPPED_RESULT\",\n): ReturnType<typeof vi.fn> {\n // Determine if we have a direct fallback or options object\n const options =\n typeof fallbackOrOptions === \"object\" &&\n fallbackOrOptions !== null &&\n (\"fallback\" in fallbackOrOptions ||\n \"throws\" in fallbackOrOptions ||\n \"class\" in fallbackOrOptions)\n ? fallbackOrOptions\n : { fallback: fallbackOrOptions };\n\n // Extract values with defaults\n const fallback = options.fallback ?? \"_MOCK_WRAPPED_RESULT\";\n const throws = options.throws ?? false;\n const isClass = options.class ?? false;\n\n return _createJaypieMock().mockImplementation((...args: unknown[]) => {\n try {\n return isClass ? new (fn as any)(...args) : fn(...args);\n } catch (error) {\n if (throws) {\n throw error;\n }\n\n console.warn(\n `[@jaypie/testkit] Actual implementation failed. To suppress this warning, manually mock the response with mockReturnValue`,\n );\n if (error instanceof Error) {\n console.warn(`[@jaypie/testkit] ${error.message}`);\n }\n\n // If fallback is a function, call it\n if (typeof fallback === \"function\") {\n try {\n return fallback(...args);\n } catch (fallbackError) {\n console.warn(\n `[@jaypie/testkit] Fallback function failed: ${fallbackError instanceof Error ? fallbackError.message : fallbackError}`,\n );\n return \"_MOCK_WRAPPED_RESULT\";\n }\n }\n\n return fallback;\n }\n });\n}\n\nfunction createMockWrappedObject<T extends Record<string, any>>(\n object: T,\n fallbackOrOptions:\n | any\n | {\n fallback?: any;\n throws?: boolean;\n class?: boolean;\n } = \"_MOCK_WRAPPED_RESULT\",\n): T {\n let returnMock: Record<string, any> = {};\n\n // Extract values with defaults for the top-level call\n const options =\n typeof fallbackOrOptions === \"object\" &&\n fallbackOrOptions !== null &&\n (\"fallback\" in fallbackOrOptions ||\n \"throws\" in fallbackOrOptions ||\n \"class\" in fallbackOrOptions)\n ? fallbackOrOptions\n : { fallback: fallbackOrOptions };\n\n const fallback = options.fallback ?? \"_MOCK_WRAPPED_RESULT\";\n const throws = options.throws ?? false;\n const isClass = options.class ?? false;\n\n // Create options for recursive calls\n // Do not pass down class=true to nested objects\n const recursiveOptions = {\n fallback,\n throws,\n class: false, // Always pass class=false to nested objects\n };\n\n if (typeof object === \"function\") {\n returnMock = createMockWrappedFunction(object, {\n fallback,\n throws,\n class: isClass,\n });\n }\n for (const key of Object.keys(object)) {\n const value = object[key];\n if (typeof value === \"function\") {\n returnMock[key] = createMockWrappedFunction(value, {\n fallback,\n throws,\n class: isClass,\n });\n } else if (typeof value === \"object\" && value !== null) {\n returnMock[key] = createMockWrappedObject(value, recursiveOptions);\n } else {\n returnMock[key] = value;\n }\n }\n return returnMock as T;\n}\n\n/**\n * Utility to create a mock error constructor from an error class\n */\nfunction createMockError<T extends new (...args: any[]) => Error>(\n ErrorClass: T,\n): T {\n // Create a mock constructor that returns a new instance of ErrorClass\n const mockConstructor = _createJaypieMock(function (\n this: any,\n ...args: any[]\n ) {\n return new ErrorClass(...args);\n });\n return mockConstructor as unknown as T;\n}\n\n// Mock core errors - All error classes extend JaypieError\nclass MockValidationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ValidationError\";\n }\n}\n\nclass MockNotFoundError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"NotFoundError\";\n }\n}\n\n/**\n * Creates a mock LlmTool for testing purposes\n * @param nameOrCallOrOptions - Name (string), call function, or full options object\n * @param callOrOptions - Call function or options object (when first param is string)\n * @returns Mock LlmTool object\n */\nfunction createMockTool(\n nameOrCallOrOptions?: string | ((...args: any[]) => any) | Partial<LlmTool>,\n callOrOptions?: ((...args: any[]) => any) | Partial<LlmTool>,\n): LlmTool {\n // Default options\n const defaults: LlmTool = {\n name: \"mockTool\",\n description: \"Mock tool for testing\",\n parameters: {},\n type: \"function\",\n call: createMockResolvedFunction({ result: \"MOCK_TOOL\" }),\n message: \"MOCK_TOOL_MESSAGE\",\n };\n\n // Handle different parameter combinations\n if (typeof nameOrCallOrOptions === \"string\") {\n // First parameter is name\n const name = nameOrCallOrOptions;\n\n if (typeof callOrOptions === \"function\") {\n // Second parameter is call function\n return {\n ...defaults,\n name,\n call: callOrOptions,\n };\n } else if (callOrOptions && typeof callOrOptions === \"object\") {\n // Second parameter is options object\n return {\n ...defaults,\n name,\n ...callOrOptions,\n };\n } else {\n // Only name provided\n return {\n ...defaults,\n name,\n };\n }\n } else if (typeof nameOrCallOrOptions === \"function\") {\n // First parameter is call function\n return {\n ...defaults,\n call: nameOrCallOrOptions,\n };\n } else if (nameOrCallOrOptions && typeof nameOrCallOrOptions === \"object\") {\n // First parameter is options object\n return {\n ...defaults,\n ...nameOrCallOrOptions,\n };\n } else {\n // No parameters or invalid parameters\n return defaults;\n }\n}\n\n// Export functions for internal use\nexport {\n createMockFunction,\n createMockResolvedFunction,\n createMockReturnedFunction,\n createMockWrappedFunction,\n createMockWrappedObject,\n MockValidationError,\n MockNotFoundError,\n createMockError,\n createMockTool,\n};\n","import * as original from \"@jaypie/aws\";\nimport {\n createMockFunction,\n createMockResolvedFunction,\n createMockWrappedFunction,\n} from \"./utils\";\n\n// Constants for mock values\nconst TAG = \"AWS\";\n\nexport const getMessages = createMockWrappedFunction(original.getMessages, []);\n\nexport const getS3FileBuffer = createMockFunction<\n ({ bucket, key }: { bucket: string; key: string }) => Promise<Buffer>\n>(async ({ bucket, key }) => Buffer.from(`_MOCK_S3_FILE_[${bucket}/${key}]`));\n\nexport const getSecret = createMockResolvedFunction(\"mock-secret-value\");\n\nexport const sendMessage = createMockResolvedFunction({\n MessageId: \"mock-message-id\",\n});\n\n// Add missing functions from original implementation\nexport const getEnvSecret = createMockFunction<\n (key: string) => Promise<string>\n>(async (key) => `_MOCK_ENV_SECRET_[${TAG}][${key}]`);\n\nexport const loadEnvSecrets = createMockResolvedFunction(undefined);\n\nexport const getSingletonMessage = createMockWrappedFunction(\n original.getSingletonMessage,\n { value: \"_MOCK_SINGLETON_MESSAGE_\" },\n);\n\nexport const getTextractJob = createMockFunction<\n (jobId: string) => Promise<any>\n>(async (job) => ({ value: `_MOCK_TEXTRACT_JOB_[${job}]` }));\n\nexport const sendBatchMessages = createMockResolvedFunction(true);\n\nexport const sendTextractJob = createMockFunction<\n ({\n bucket,\n key,\n featureTypes,\n }: {\n bucket: string;\n key: string;\n featureTypes?: string[];\n snsRoleArn?: string;\n snsTopicArn?: string;\n }) => Promise<any[]>\n>(async ({ bucket, key }) => {\n // Basic validation to mimic original behavior\n if (!bucket || !key) {\n throw new Error(\"Bucket and key are required\");\n }\n return [`_MOCK_TEXTRACT_JOB_ID_[${TAG}]_${bucket}_${key}`];\n});\n\n// Streaming utilities\nexport const formatSSE = createMockFunction<\n (chunk: { type: string; [key: string]: unknown }) => string\n>((chunk) => `event: ${chunk.type}\\ndata: ${JSON.stringify(chunk)}\\n\\n`);\n\nexport const streamToSSE = createMockFunction<\n (stream: AsyncIterable<unknown>) => AsyncIterable<string>\n>(async function* (stream) {\n for await (const chunk of stream) {\n yield `event: mock\\ndata: ${JSON.stringify(chunk)}\\n\\n`;\n }\n});\n\nexport const createLambdaStream = createMockFunction<\n (\n stream: AsyncIterable<unknown>,\n writer: { write: (chunk: string) => void; end: () => void },\n ) => Promise<void>\n>(async (stream, writer) => {\n for await (const chunk of stream) {\n writer.write(JSON.stringify(chunk));\n }\n writer.end();\n});\n\nexport const createExpressStream = createMockFunction<\n (\n stream: AsyncIterable<unknown>,\n res: {\n setHeader: (name: string, value: string) => void;\n write: (chunk: string) => boolean;\n end: () => void;\n flushHeaders: () => void;\n },\n ) => Promise<void>\n>(async (stream, res) => {\n res.setHeader(\"Content-Type\", \"text/event-stream\");\n res.flushHeaders();\n for await (const chunk of stream) {\n res.write(JSON.stringify(chunk));\n }\n res.end();\n});\n\n// Mock JaypieStream class\nexport class JaypieStream {\n private readonly source: AsyncIterable<unknown>;\n\n constructor(source: AsyncIterable<unknown>) {\n this.source = source;\n }\n\n async toLambda(writer: {\n write: (chunk: string) => void;\n end: () => void;\n }): Promise<void> {\n for await (const chunk of this.source) {\n writer.write(JSON.stringify(chunk));\n }\n writer.end();\n }\n\n async toExpress(res: {\n setHeader: (name: string, value: string) => void;\n write: (chunk: string) => boolean;\n end: () => void;\n flushHeaders: () => void;\n }): Promise<void> {\n res.setHeader(\"Content-Type\", \"text/event-stream\");\n res.flushHeaders();\n for await (const chunk of this.source) {\n res.write(JSON.stringify(chunk));\n }\n res.end();\n }\n\n [Symbol.asyncIterator](): AsyncIterator<unknown> {\n return this.source[Symbol.asyncIterator]();\n }\n\n toSSE(): AsyncIterable<string> {\n const source = this.source;\n return {\n async *[Symbol.asyncIterator]() {\n for await (const chunk of source) {\n yield `event: mock\\ndata: ${JSON.stringify(chunk)}\\n\\n`;\n }\n },\n };\n }\n}\n\nexport const createJaypieStream = createMockFunction<\n (source: AsyncIterable<unknown>) => JaypieStream\n>((source) => new JaypieStream(source));\n","import { log } from \"@jaypie/logger\";\nimport { vi } from \"vitest\";\nimport { LogMock } from \"./types/jaypie-testkit\";\n\nexport function mockLogFactory(): LogMock {\n // Create skeleton of mock objects\n const mock = {\n debug: vi.fn(),\n error: vi.fn(),\n fatal: vi.fn(),\n info: vi.fn(),\n init: vi.fn(),\n lib: vi.fn(),\n tag: vi.fn(),\n trace: vi.fn(),\n untag: vi.fn(),\n var: vi.fn(),\n warn: vi.fn(),\n with: vi.fn(),\n } as LogMock;\n\n // Fill out nested mocks\n mock.debug.var = mock.var;\n mock.error.var = mock.var;\n mock.fatal.var = mock.var;\n mock.info.var = mock.var;\n mock.trace.var = mock.var;\n mock.warn.var = mock.var;\n\n // Have modules return correct objects\n mock.init.mockReturnValue(null);\n mock.lib.mockReturnValue(mock);\n mock.with.mockReturnValue(mock);\n\n // Pin mocks to the module\n mock.mock = {\n debug: mock.debug,\n error: mock.error,\n fatal: mock.fatal,\n info: mock.info,\n init: mock.init,\n lib: mock.lib,\n tag: mock.tag,\n trace: mock.trace,\n untag: mock.untag,\n var: mock.var,\n warn: mock.warn,\n with: mock.with,\n };\n\n return mock;\n}\n\nconst LOG_METHOD_NAMES = [\n \"debug\",\n \"error\",\n \"fatal\",\n \"info\",\n \"init\",\n \"lib\",\n \"tag\",\n \"trace\",\n \"untag\",\n \"var\",\n \"warn\",\n \"with\",\n] as const;\n\n// Use Record type for more flexible access pattern\nconst originalLogMethods = new WeakMap<typeof log, Record<string, unknown>>();\n\nexport function spyLog(logInstance: typeof log): void {\n if (!originalLogMethods.has(logInstance)) {\n const mockLog = mockLogFactory();\n const originalMethods: Record<string, unknown> = {};\n\n // Save only methods that actually exist on the log instance\n LOG_METHOD_NAMES.forEach((method) => {\n if (method in logInstance) {\n originalMethods[method] =\n logInstance[method as keyof typeof logInstance];\n // Use type assertion after checking existence\n (logInstance as unknown as Record<string, unknown>)[method] =\n mockLog[method];\n }\n });\n\n originalLogMethods.set(logInstance, originalMethods);\n }\n}\n\nexport function restoreLog(logInstance: typeof log): void {\n const originalMethods = originalLogMethods.get(logInstance);\n if (originalMethods) {\n LOG_METHOD_NAMES.forEach((method) => {\n if (method in originalMethods && method in logInstance) {\n // Use type assertion after checking existence\n (logInstance as unknown as Record<string, unknown>)[method] =\n originalMethods[method];\n }\n });\n originalLogMethods.delete(logInstance);\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-function-type */\n\nimport {\n createMockError,\n createMockFunction,\n createMockResolvedFunction,\n createMockReturnedFunction,\n createMockWrappedFunction,\n createMockWrappedObject,\n} from \"./utils\";\nimport { beforeAll } from \"vitest\";\nimport { spyLog } from \"../mockLog.module.js\";\nimport { log } from \"@jaypie/logger\";\nimport * as errors from \"@jaypie/errors\";\nimport * as kit from \"@jaypie/kit\";\n\n// Constants for mock values\nconst TAG = \"CORE\";\n\n// JaypieError is the base class - export it directly from errors\nexport const JaypieError = errors.JaypieError;\n\nexport const BadGatewayError: typeof errors.BadGatewayError = createMockError(\n errors.BadGatewayError,\n);\nexport const BadRequestError: typeof errors.BadRequestError = createMockError(\n errors.BadRequestError,\n);\nexport const ConfigurationError: typeof errors.ConfigurationError =\n createMockError(errors.ConfigurationError);\nexport const CorsError: typeof errors.CorsError = createMockError(\n errors.CorsError,\n);\nexport const ForbiddenError: typeof errors.ForbiddenError = createMockError(\n errors.ForbiddenError,\n);\nexport const GatewayTimeoutError: typeof errors.GatewayTimeoutError =\n createMockError(errors.GatewayTimeoutError);\nexport const GoneError: typeof errors.GoneError = createMockError(\n errors.GoneError,\n);\nexport const IllogicalError: typeof errors.IllogicalError = createMockError(\n errors.IllogicalError,\n);\nexport const InternalError: typeof errors.InternalError = createMockError(\n errors.InternalError,\n);\nexport const MethodNotAllowedError: typeof errors.MethodNotAllowedError =\n createMockError(errors.MethodNotAllowedError);\n// Backwards compatibility aliases\nexport const MultiError: typeof errors.InternalError = createMockError(\n errors.InternalError,\n);\nexport const NotFoundError: typeof errors.NotFoundError = createMockError(\n errors.NotFoundError,\n);\nexport const NotImplementedError: typeof errors.NotImplementedError =\n createMockError(errors.NotImplementedError);\nexport const ProjectError: typeof errors.InternalError = createMockError(\n errors.InternalError,\n);\nexport const ProjectMultiError: typeof errors.InternalError = createMockError(\n errors.InternalError,\n);\nexport const RejectedError: typeof errors.RejectedError = createMockError(\n errors.RejectedError,\n);\nexport const TeapotError: typeof errors.TeapotError = createMockError(\n errors.TeapotError,\n);\nexport const TooManyRequestsError: typeof errors.TooManyRequestsError =\n createMockError(errors.TooManyRequestsError);\nexport const UnauthorizedError: typeof errors.UnauthorizedError =\n createMockError(errors.UnauthorizedError);\nexport const UnavailableError: typeof errors.UnavailableError = createMockError(\n errors.UnavailableError,\n);\nexport const UnhandledError: typeof errors.UnhandledError = createMockError(\n errors.UnhandledError,\n);\nexport const UnreachableCodeError: typeof errors.UnreachableCodeError =\n createMockError(errors.UnreachableCodeError);\n\nbeforeAll(async () => {\n spyLog(log);\n});\nexport { log };\n\n// Add missing core functions\nexport const cloneDeep = createMockWrappedFunction(kit.cloneDeep, {\n throws: true,\n});\n\nexport const envBoolean = createMockReturnedFunction(true);\n\nexport const envsKey = createMockWrappedFunction(\n kit.envsKey as (...args: unknown[]) => unknown,\n `_MOCK_ENVS_KEY_[${TAG}]`,\n);\n\nexport const errorFromStatusCode = createMockFunction<\n (statusCode: number, message?: string) => Error\n>((statusCode, message = `Mock error for status code ${statusCode}`) => {\n try {\n // Try to mimic original implementation\n switch (statusCode) {\n case 400:\n return new BadRequestError(message);\n case 401:\n return new UnauthorizedError(message);\n case 403:\n return new ForbiddenError(message);\n case 404:\n return new NotFoundError(message);\n case 405:\n return new MethodNotAllowedError(message);\n case 410:\n return new GoneError(message);\n case 418:\n return new TeapotError(message);\n case 500:\n return new InternalError(message);\n case 501:\n return new NotImplementedError(message);\n case 502:\n return new BadGatewayError(message);\n case 503:\n return new UnavailableError(message);\n case 504:\n return new GatewayTimeoutError(message);\n default:\n return new Error(message);\n }\n } catch {\n return new Error(`_MOCK_ERROR_FROM_STATUS_CODE_[${TAG}][${statusCode}]`);\n }\n});\n\nexport const formatError = createMockWrappedFunction(\n kit.formatError as (...args: unknown[]) => unknown,\n `_MOCK_FORMAT_ERROR_[${TAG}]`,\n);\n\n// Alias for errorFromStatusCode (exported from @jaypie/errors as jaypieErrorFromStatus)\nexport const jaypieErrorFromStatus = errorFromStatusCode;\n\nexport const getHeaderFrom = createMockWrappedFunction(\n kit.getHeaderFrom as (...args: unknown[]) => unknown,\n `_MOCK_GET_HEADER_FROM_[${TAG}]`,\n);\n\nexport const getObjectKeyCaseInsensitive = createMockWrappedFunction(\n kit.getObjectKeyCaseInsensitive as (...args: unknown[]) => unknown,\n `_MOCK_GET_OBJECT_KEY_CASE_INSENSITIVE_[${TAG}]`,\n);\n\nexport const isClass = createMockWrappedFunction(\n kit.isClass,\n `_MOCK_IS_CLASS_[${TAG}]`,\n);\n\nexport const isJaypieError = createMockWrappedFunction(\n errors.isJaypieError,\n false,\n);\n\nexport const resolveValue = createMockWrappedFunction(\n kit.resolveValue,\n `_MOCK_RESOLVE_VALUE_[${TAG}]`,\n);\n\nexport const safeParseFloat = createMockWrappedFunction(\n kit.safeParseFloat as (...args: unknown[]) => unknown,\n `_MOCK_SAFE_PARSE_FLOAT_[${TAG}]`,\n);\n\nexport const placeholders = createMockWrappedFunction(\n kit.placeholders as (...args: unknown[]) => unknown,\n `_MOCK_PLACEHOLDERS_[${TAG}]`,\n);\n\n// Add force utilities to help with jaypieHandler implementation\nexport const force = createMockWrappedObject(kit.force);\n\nexport const jaypieHandler = createMockFunction<\n (\n handler: Function,\n options?: {\n setup?: Function | Function[];\n teardown?: Function | Function[];\n unavailable?: boolean;\n validate?: Function | Function[];\n },\n ) => Function\n>((handler, options = {}) => {\n return async (...args: any[]) => {\n let result;\n let thrownError;\n\n // Destructure options with defaults\n const {\n setup = [],\n teardown = [],\n unavailable = kit.force.boolean(process.env.PROJECT_UNAVAILABLE),\n validate = [],\n } = options;\n\n // Check if service is unavailable\n if (unavailable) throw new UnavailableError(\"Service unavailable\");\n\n // Run validation functions\n const validateFunctions = kit.force.array(validate);\n for (const validator of validateFunctions) {\n if (typeof validator === \"function\") {\n const valid = await validator(...args);\n if (valid === false) {\n throw new BadRequestError(\"Validation failed\");\n }\n }\n }\n\n try {\n // Run setup functions\n const setupFunctions = kit.force.array(setup);\n for (const setupFunction of setupFunctions) {\n if (typeof setupFunction === \"function\") {\n await setupFunction(...args);\n }\n }\n\n // Execute the handler\n result = await handler(...args);\n } catch (error) {\n thrownError = error;\n }\n\n // Run teardown functions (always run even if there was an error)\n const teardownFunctions = kit.force.array(teardown);\n for (const teardownFunction of teardownFunctions) {\n if (typeof teardownFunction === \"function\") {\n try {\n await teardownFunction(...args);\n } catch (teardownError) {\n // Swallow teardown errors, but log them\n // eslint-disable-next-line no-console\n console.error(teardownError);\n }\n }\n }\n\n // If there was an error in the handler, throw it after teardown\n if (thrownError) {\n throw thrownError;\n }\n\n return result;\n };\n});\n\nexport const sleep = createMockResolvedFunction(true);\n\nexport const uuid = createMockWrappedFunction(\n () => \"00000000-0000-0000-0000-000000000000\",\n `00000000-0000-0000-0000-000000000000`,\n);\n\nexport const HTTP = kit.HTTP;\nexport const JAYPIE = kit.JAYPIE;\nexport const PROJECT = kit.PROJECT;\n","import { createMockResolvedFunction, createMockWrappedFunction } from \"./utils\";\n\nimport * as original from \"@jaypie/datadog\";\n\nexport const DATADOG = original.DATADOG;\nexport const hasDatadogEnv = createMockWrappedFunction(\n original.hasDatadogEnv,\n false,\n);\nexport const submitDistribution = createMockResolvedFunction(true);\nexport const submitMetric = createMockResolvedFunction(true);\nexport const submitMetricSet = createMockResolvedFunction(true);\n","import * as original from \"@jaypie/dynamodb\";\nimport type {\n BaseQueryOptions,\n DynamoClientConfig,\n ExportResult,\n FabricEntity,\n ParentReference,\n QueryResult,\n SeedOptions,\n SeedResult,\n} from \"@jaypie/dynamodb\";\n\nimport { createMockFunction, createMockResolvedFunction } from \"./utils\";\n\n// Re-export constants (no need to mock, just pass through)\nexport const APEX = original.APEX;\nexport const ARCHIVED_SUFFIX = original.ARCHIVED_SUFFIX;\nexport const DELETED_SUFFIX = original.DELETED_SUFFIX;\nexport const INDEX_ALIAS = original.INDEX_ALIAS;\nexport const INDEX_CLASS = original.INDEX_CLASS;\nexport const INDEX_OU = original.INDEX_OU;\nexport const INDEX_TYPE = original.INDEX_TYPE;\nexport const INDEX_XID = original.INDEX_XID;\nexport const SEPARATOR = original.SEPARATOR;\n\n// Key builder functions - use createMockFunction with typed implementations\nexport const buildIndexAlias = createMockFunction<\n (ou: string, model: string, alias: string) => string\n>((ou, model, alias) => original.buildIndexAlias(ou, model, alias));\n\nexport const buildIndexClass = createMockFunction<\n (ou: string, model: string, recordClass: string) => string\n>((ou, model, recordClass) => original.buildIndexClass(ou, model, recordClass));\n\nexport const buildIndexOu = createMockFunction<\n (ou: string, model: string) => string\n>((ou, model) => original.buildIndexOu(ou, model));\n\nexport const buildIndexType = createMockFunction<\n (ou: string, model: string, type: string) => string\n>((ou, model, type) => original.buildIndexType(ou, model, type));\n\nexport const buildIndexXid = createMockFunction<\n (ou: string, model: string, xid: string) => string\n>((ou, model, xid) => original.buildIndexXid(ou, model, xid));\n\nexport const calculateOu = createMockFunction<\n (parent?: ParentReference) => string\n>((parent) => original.calculateOu(parent));\n\nexport const indexEntity = createMockFunction<\n <T extends FabricEntity>(entity: T, suffix?: string) => T\n>(<T extends FabricEntity>(entity: T, suffix?: string) =>\n original.indexEntity(entity, suffix),\n);\n\n// Client functions\nexport const initClient = createMockFunction<\n (config: DynamoClientConfig) => void\n>(() => {\n // No-op in mock\n});\n\nexport const getDocClient = createMockFunction(() => ({\n send: createMockResolvedFunction({ Items: [] }),\n}));\n\nexport const getTableName = createMockFunction(() => \"mock-table\");\n\nexport const isInitialized = createMockFunction(() => true);\n\nexport const resetClient = createMockFunction(() => {\n // No-op in mock\n});\n\n// Entity operations - service handler pattern (callable with object params)\nexport const getEntity = createMockFunction<\n (params: { id: string; model: string }) => Promise<FabricEntity | null>\n>(async () => null);\n\nexport const putEntity = createMockFunction<\n (params: { entity: FabricEntity }) => Promise<FabricEntity>\n>(async (params: { entity: FabricEntity }) =>\n original.indexEntity(params.entity),\n);\n\nexport const updateEntity = createMockFunction<\n (params: { entity: FabricEntity }) => Promise<FabricEntity>\n>(async (params: { entity: FabricEntity }) => ({\n ...original.indexEntity(params.entity),\n updatedAt: new Date().toISOString(),\n}));\n\nexport const deleteEntity = createMockFunction<\n (params: { id: string; model: string }) => Promise<boolean>\n>(async () => true);\n\nexport const archiveEntity = createMockFunction<\n (params: { id: string; model: string }) => Promise<boolean>\n>(async () => true);\n\nexport const destroyEntity = createMockFunction<\n (params: { id: string; model: string }) => Promise<boolean>\n>(async () => true);\n\n// Query functions - service handler pattern (callable with object params)\nexport const queryByOu = createMockFunction<\n (params: {\n model: string;\n ou: string;\n archived?: boolean;\n ascending?: boolean;\n deleted?: boolean;\n limit?: number;\n startKey?: Record<string, unknown>;\n }) => Promise<QueryResult<FabricEntity>>\n>(async () => ({\n items: [],\n lastEvaluatedKey: undefined,\n}));\n\nexport const queryByAlias = createMockFunction<\n (params: {\n alias: string;\n archived?: boolean;\n deleted?: boolean;\n model: string;\n ou: string;\n }) => Promise<FabricEntity | null>\n>(async () => null);\n\nexport const queryByClass = createMockFunction<\n (params: {\n archived?: boolean;\n ascending?: boolean;\n deleted?: boolean;\n limit?: number;\n model: string;\n ou: string;\n recordClass: string;\n startKey?: Record<string, unknown>;\n }) => Promise<QueryResult<FabricEntity>>\n>(async () => ({\n items: [],\n lastEvaluatedKey: undefined,\n}));\n\nexport const queryByType = createMockFunction<\n (params: {\n archived?: boolean;\n ascending?: boolean;\n deleted?: boolean;\n limit?: number;\n model: string;\n ou: string;\n startKey?: Record<string, unknown>;\n type: string;\n }) => Promise<QueryResult<FabricEntity>>\n>(async () => ({\n items: [],\n lastEvaluatedKey: undefined,\n}));\n\nexport const queryByXid = createMockFunction<\n (params: {\n archived?: boolean;\n deleted?: boolean;\n model: string;\n ou: string;\n xid: string;\n }) => Promise<FabricEntity | null>\n>(async () => null);\n\n// Seed and export utilities\nexport const seedEntityIfNotExists = createMockFunction<\n <T extends Partial<FabricEntity>>(entity: T) => Promise<boolean>\n>(async () => true);\n\nexport const seedEntities = createMockFunction<\n <T extends Partial<FabricEntity>>(\n entities: T[],\n options?: SeedOptions,\n ) => Promise<SeedResult>\n>(async () => ({\n created: [],\n errors: [],\n skipped: [],\n}));\n\nexport const exportEntities = createMockFunction<\n <T extends FabricEntity>(\n model: string,\n ou: string,\n limit?: number,\n ) => Promise<ExportResult<T>>\n>(async () => ({\n count: 0,\n entities: [],\n}));\n\nexport const exportEntitiesToJson = createMockFunction<\n (model: string, ou: string, pretty?: boolean) => Promise<string>\n>(async () => \"[]\");\n\n// Re-export types for convenience\nexport type {\n BaseQueryOptions,\n ExportResult,\n FabricEntity,\n ParentReference,\n QueryResult,\n SeedOptions,\n SeedResult,\n};\n","/* eslint-disable @typescript-eslint/no-unsafe-function-type */\n\nimport {\n createMockFunction,\n createMockResolvedFunction,\n createMockReturnedFunction,\n createMockWrappedFunction,\n} from \"./utils\";\nimport { BadRequestError, UnhandledError } from \"@jaypie/errors\";\nimport { force, jaypieHandler } from \"./core\";\nimport * as original from \"@jaypie/express\";\n\n// Constants for mock values\nconst TAG = \"EXPRESS\";\nconst HTTP = {\n CODE: { OK: 200, CREATED: 201, NO_CONTENT: 204, INTERNAL_ERROR: 500 },\n};\n\nexport const EXPRESS = original.EXPRESS;\n\n// Add Express route functions\nexport const badRequestRoute = createMockWrappedFunction(\n original.badRequestRoute as (...args: unknown[]) => unknown,\n { error: `_MOCK_BAD_REQUEST_ROUTE_[${TAG}]` },\n);\n\nexport const echoRoute = createMockWrappedFunction(\n original.echoRoute as (...args: unknown[]) => unknown,\n (req: unknown) => req,\n);\n\nexport const forbiddenRoute = createMockWrappedFunction(\n original.forbiddenRoute as (...args: unknown[]) => unknown,\n { error: `_MOCK_FORBIDDEN_ROUTE_[${TAG}]` },\n);\n\nexport const goneRoute = createMockWrappedFunction(\n original.goneRoute as (...args: unknown[]) => unknown,\n {\n error: `_MOCK_GONE_ROUTE_[${TAG}]`,\n },\n);\n\nexport const methodNotAllowedRoute = createMockWrappedFunction(\n original.methodNotAllowedRoute as (...args: unknown[]) => unknown,\n { error: `_MOCK_METHOD_NOT_ALLOWED_ROUTE_[${TAG}]` },\n);\n\nexport const noContentRoute = createMockWrappedFunction(\n original.noContentRoute as (...args: unknown[]) => unknown,\n { status: 204 },\n);\n\nexport const notFoundRoute = createMockWrappedFunction(\n original.notFoundRoute as (...args: unknown[]) => unknown,\n {\n error: `_MOCK_NOT_FOUND_ROUTE_[${TAG}]`,\n },\n);\n\nexport const notImplementedRoute = createMockWrappedFunction(\n original.notImplementedRoute as any,\n { error: `_MOCK_NOT_IMPLEMENTED_ROUTE_[${TAG}]` },\n);\n\nexport const expressHttpCodeHandler = createMockWrappedFunction(\n original.expressHttpCodeHandler as any,\n (...args: any[]) => {\n const [, res] = args;\n return res.status(200).send();\n },\n);\n\nexport const cors = createMockWrappedFunction(original.cors as any);\n\nexport const createServer = createMockResolvedFunction<{\n port: number;\n server: { close: () => void };\n}>({ port: 8080, server: { close: () => {} } });\n\nexport const getCurrentInvokeUuid = createMockReturnedFunction<\n string | undefined\n>(\"mock-invoke-uuid-12345678\");\n\n// Type definitions needed for the expressHandler\ninterface WithJsonFunction {\n json: () => any;\n}\n\nexport interface ExpressHandlerFunction {\n (req: any, res: any, ...extra: any[]): Promise<any> | any;\n}\n\nexport interface ExpressHandlerOptions {\n locals?: Record<string, any>;\n setup?: any[] | Function;\n teardown?: any[] | Function;\n unavailable?: boolean;\n validate?: any[] | Function;\n}\n\ntype ExpressHandlerParameter = ExpressHandlerFunction | ExpressHandlerOptions;\n\nexport interface ExpressStreamHandlerOptions {\n locals?: Record<string, any>;\n setup?: any[] | Function;\n teardown?: any[] | Function;\n unavailable?: boolean;\n validate?: any[] | Function;\n contentType?: string;\n}\n\nexport type ExpressStreamHandlerFunction = (\n req: any,\n res: any,\n ...extra: any[]\n) => Promise<void>;\n\ntype ExpressStreamHandlerParameter =\n | ExpressStreamHandlerFunction\n | ExpressStreamHandlerOptions;\n\nexport const expressStreamHandler = createMockFunction<\n (\n handlerOrProps: ExpressStreamHandlerParameter,\n propsOrHandler?: ExpressStreamHandlerParameter,\n ) => (req: any, res: any, ...extra: any[]) => Promise<void>\n>((handlerOrProps, propsOrHandler) => {\n let handler: ExpressStreamHandlerFunction;\n let props: ExpressStreamHandlerOptions;\n\n if (\n typeof handlerOrProps === \"object\" &&\n typeof propsOrHandler === \"function\"\n ) {\n handler = propsOrHandler;\n props = handlerOrProps;\n } else if (typeof handlerOrProps === \"function\") {\n handler = handlerOrProps;\n props = (propsOrHandler || {}) as ExpressStreamHandlerOptions;\n } else {\n throw new BadRequestError(\"handler must be a function\");\n }\n\n return async (req = {}, res: any = {}, ...extra: unknown[]) => {\n // Set SSE headers if res has setHeader method\n if (typeof res.setHeader === \"function\") {\n res.setHeader(\"Content-Type\", props.contentType || \"text/event-stream\");\n res.setHeader(\"Cache-Control\", \"no-cache\");\n res.setHeader(\"Connection\", \"keep-alive\");\n res.setHeader(\"X-Accel-Buffering\", \"no\");\n if (typeof res.flushHeaders === \"function\") {\n res.flushHeaders();\n }\n }\n\n try {\n await handler(req, res, ...extra);\n } finally {\n // End the response if possible\n if (typeof res.end === \"function\") {\n try {\n res.end();\n } catch {\n // Response may already be ended\n }\n }\n }\n };\n});\n\nexport const expressHandler = createMockFunction<\n (\n handlerOrProps: ExpressHandlerParameter,\n propsOrHandler?: ExpressHandlerParameter,\n ) => (req: any, res: any, ...extra: any[]) => Promise<any>\n>((handlerOrProps, propsOrHandler) => {\n let handler: ExpressHandlerFunction;\n let props: ExpressHandlerOptions;\n\n if (\n typeof handlerOrProps === \"object\" &&\n typeof propsOrHandler === \"function\"\n ) {\n handler = propsOrHandler;\n props = handlerOrProps;\n } else if (typeof handlerOrProps === \"function\") {\n handler = handlerOrProps;\n props = (propsOrHandler || {}) as ExpressHandlerOptions;\n } else {\n throw new BadRequestError(\"handler must be a function\");\n }\n\n // Add locals setup if needed\n if (\n props.locals &&\n typeof props.locals === \"object\" &&\n !Array.isArray(props.locals)\n ) {\n const keys = Object.keys(props.locals);\n if (!props.setup) props.setup = [];\n props.setup = force.array(props.setup);\n props.setup.unshift((req: { locals?: Record<string, unknown> }) => {\n if (!req || typeof req !== \"object\") {\n throw new BadRequestError(\"req must be an object\");\n }\n // Set req.locals if it doesn't exist\n if (!req.locals) req.locals = {};\n if (typeof req.locals !== \"object\" || Array.isArray(req.locals)) {\n throw new BadRequestError(\"req.locals must be an object\");\n }\n if (!req.locals._jaypie) req.locals._jaypie = {};\n });\n const localsSetup = async (\n localsReq: { locals: Record<string, unknown> },\n localsRes: unknown,\n ) => {\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (typeof props.locals![key] === \"function\") {\n localsReq.locals[key] = await props.locals;\n } else {\n localsReq.locals[key] = props.locals![key];\n }\n }\n };\n props.setup.push(localsSetup);\n }\n if (props.locals && typeof props.locals !== \"object\") {\n throw new BadRequestError(\"props.locals must be an object\");\n }\n if (props.locals && Array.isArray(props.locals)) {\n throw new BadRequestError(\"props.locals must be an object\");\n }\n if (props.locals === null) {\n throw new BadRequestError(\"props.locals must be an object\");\n }\n\n const jaypieFunction = jaypieHandler(handler, props);\n return async (req = {}, res = {}, ...extra: unknown[]) => {\n const status = HTTP.CODE.OK;\n let response;\n let supertestMode = false;\n\n if (\n res &&\n typeof res === \"object\" &&\n \"socket\" in res &&\n res.constructor.name === \"ServerResponse\"\n ) {\n // Use the response object in supertest mode\n supertestMode = true;\n }\n\n try {\n response = await jaypieFunction(req, res, ...extra);\n } catch (error: any) {\n // In the mock context, if status is a function we are in a \"supertest\"\n if (supertestMode && typeof res.status === \"function\") {\n // In theory jaypieFunction has handled all errors\n const errorStatus = error?.status || HTTP.CODE.INTERNAL_ERROR;\n let errorResponse;\n if (typeof error?.json === \"function\") {\n errorResponse = error.json();\n } else {\n // This should never happen\n errorResponse = new UnhandledError().json();\n }\n res.status(errorStatus).json(errorResponse);\n return;\n } else {\n // else, res.status is not a function, throw the error\n throw error;\n }\n }\n\n if (supertestMode && typeof res.status === \"function\") {\n if (response) {\n if (typeof response === \"object\") {\n if (typeof (response as WithJsonFunction).json === \"function\") {\n res.json((response as WithJsonFunction).json());\n } else {\n res.status(status).json(response);\n }\n } else if (typeof response === \"string\") {\n try {\n res.status(status).json(JSON.parse(response));\n } catch {\n res.status(status).send(response);\n }\n } else if (response === true) {\n res.status(HTTP.CODE.CREATED).send();\n } else {\n res.status(status).send(response);\n }\n } else {\n res.status(HTTP.CODE.NO_CONTENT).send();\n }\n } else {\n return response;\n }\n };\n});\n","import { createMockReturnedFunction } from \"./utils\";\n\nexport const isLocalEnv = createMockReturnedFunction(false);\n\nexport const isNodeTestEnv = createMockReturnedFunction(true);\n\nexport const isProductionEnv = createMockReturnedFunction(false);\n","import { createMockFunction } from \"./utils\";\nimport { jaypieHandler } from \"./core\";\n\n// We'll use more specific types instead of Function\ntype HandlerFunction = (...args: unknown[]) => unknown;\ntype LifecycleFunction = (...args: unknown[]) => unknown | Promise<unknown>;\n\nexport interface LambdaOptions {\n name?: string;\n setup?: LifecycleFunction | LifecycleFunction[];\n teardown?: LifecycleFunction | LifecycleFunction[];\n throw?: boolean;\n unavailable?: boolean;\n validate?: LifecycleFunction | LifecycleFunction[];\n [key: string]: unknown;\n}\n\n// Mock implementation of lambdaHandler that follows the original implementation pattern\nexport const lambdaHandler = createMockFunction<\n (handler: HandlerFunction, props?: LambdaOptions) => HandlerFunction\n>((handler, props = {}) => {\n // If handler is an object and options is a function, swap them\n if (typeof handler === \"object\" && typeof props === \"function\") {\n const temp = handler;\n handler = props;\n props = temp;\n }\n return async (event: unknown, context: unknown, ...extra: unknown[]) => {\n return jaypieHandler(handler, props)(event, context, ...extra);\n };\n});\n\n// Mock stream handler function type\ntype StreamHandlerFunction = (\n event: unknown,\n responseStream: { write: (data: string) => void; end: () => void },\n context: unknown,\n ...extra: unknown[]\n) => Promise<void>;\n\n// Mock implementation of lambdaStreamHandler\nexport const lambdaStreamHandler = createMockFunction<\n (\n handler: StreamHandlerFunction,\n props?: LambdaOptions,\n ) => StreamHandlerFunction\n>((handler, props = {}) => {\n // If handler is an object and options is a function, swap them\n if (typeof handler === \"object\" && typeof props === \"function\") {\n const temp = handler;\n handler = props;\n props = temp;\n }\n return async (\n event: unknown,\n responseStream: { write: (data: string) => void; end: () => void },\n context: unknown,\n ...extra: unknown[]\n ) => {\n try {\n await handler(event, responseStream, context, ...extra);\n } finally {\n try {\n responseStream.end();\n } catch {\n // Response stream may already be ended\n }\n }\n };\n});\n","import { vi } from \"vitest\";\nimport {\n createMockResolvedFunction,\n createMockReturnedFunction,\n createMockTool,\n createMockWrappedObject,\n} from \"./utils\";\n\nimport * as original from \"@jaypie/llm\";\n\nexport const LLM = original.LLM;\n\nconst mockOperate = createMockResolvedFunction({\n content: \"_MOCK_OUTPUT_TEXT\",\n history: [\n {\n content: \"_MOCK_USER_INPUT\",\n role: \"user\",\n type: \"message\",\n },\n {\n id: \"_MOCK_MESSAGE_ID\",\n type: \"message\",\n status: \"completed\",\n content: \"_MOCK_CONTENT\",\n role: \"assistant\",\n },\n ],\n model: \"_MOCK_MODEL\",\n output: [\n {\n id: \"_MOCK_MESSAGE_ID\",\n type: \"message\",\n status: \"completed\",\n content: \"_MOCK_CONTENT\",\n role: \"assistant\",\n },\n ],\n provider: \"_MOCK_PROVIDER\",\n reasoning: [],\n responses: [\n {\n id: \"_MOCK_RESPONSE_ID\",\n object: \"response\",\n created_at: Date.now() / 1000,\n status: \"completed\",\n error: null,\n output_text: \"_MOCK_OUTPUT_TEXT\",\n },\n ],\n status: \"completed\",\n usage: [\n {\n input: 100,\n output: 20,\n reasoning: 0,\n total: 120,\n provider: \"_MOCK_PROVIDER\",\n model: \"_MOCK_MODEL\",\n },\n ],\n});\nconst mockSend = createMockResolvedFunction(\"_MOCK_LLM_RESPONSE\");\nexport const Llm = Object.assign(\n vi.fn().mockImplementation((providerName = \"_MOCK_LLM_PROVIDER\") => ({\n _provider: providerName,\n _llm: {\n operate: mockOperate,\n send: mockSend,\n },\n operate: mockOperate,\n send: mockSend,\n })),\n {\n operate: mockOperate,\n send: mockSend,\n },\n);\n\n// Tool implementations - always return mock values\nconst random = createMockTool(\"random\", createMockReturnedFunction(0.5));\n\nconst roll = createMockTool(\"roll\", createMockReturnedFunction(6));\n\nconst time = createMockTool(\"time\", createMockReturnedFunction(`_MOCK_TIME`));\n\nconst weather = createMockTool(\n \"weather\",\n createMockResolvedFunction({\n location: `_MOCK_WEATHER_LOCATION`,\n forecast: [{ conditions: \"good\" }],\n }),\n);\n\nexport const Toolkit = createMockWrappedObject(original.Toolkit, {\n isClass: true,\n});\n\nexport const JaypieToolkit = createMockWrappedObject(original.JaypieToolkit, {\n isClass: true,\n});\n\nexport const LlmMessageRole = createMockWrappedObject(original.LlmMessageRole, {\n isClass: true,\n});\nexport const LlmMessageType = createMockWrappedObject(original.LlmMessageType, {\n isClass: true,\n});\nexport const LlmStreamChunkType = createMockWrappedObject(\n original.LlmStreamChunkType,\n {\n isClass: true,\n },\n);\n\n// Provider mocks\nexport const GeminiProvider = createMockWrappedObject(original.GeminiProvider, {\n isClass: true,\n});\nexport const OpenRouterProvider = createMockWrappedObject(\n original.OpenRouterProvider,\n {\n isClass: true,\n },\n);\n\n// Type guards and utilities - re-export from original (these are pure functions)\nexport const extractReasoning = original.extractReasoning;\nexport const isLlmOperateInput = original.isLlmOperateInput;\nexport const isLlmOperateInputContent = original.isLlmOperateInputContent;\nexport const isLlmOperateInputFile = original.isLlmOperateInputFile;\nexport const isLlmOperateInputImage = original.isLlmOperateInputImage;\n\n// Tool collections\nexport const toolkit = new original.JaypieToolkit([\n random,\n roll,\n time,\n weather,\n]);\n\nexport const tools = toolkit.tools;\n","import { createMockWrappedFunction } from \"./utils\";\nimport {\n FORMAT,\n LEVEL,\n Logger,\n createLogger as originalCreateLogger,\n} from \"@jaypie/logger\";\nimport { mockLogFactory } from \"../mockLog.module.js\";\n\nconst mockLog = mockLogFactory();\n\nexport const createLogger = createMockWrappedFunction(\n originalCreateLogger as any,\n mockLog,\n);\n\nexport { FORMAT, LEVEL, Logger };\n\nexport default mockLog;\n","import { createMockReturnedFunction } from \"./utils\";\n\n// Mongoose mock functions\nexport const connect = createMockReturnedFunction(true);\n\nexport const connectFromSecretEnv = createMockReturnedFunction(true);\n\nexport const disconnect = createMockReturnedFunction(true);\n\nexport { mongoose } from \"@jaypie/mongoose\";\n","import { readFile } from \"fs/promises\";\nimport { dirname, join } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { beforeAll } from \"vitest\";\nimport { TextractDocument } from \"amazon-textract-response-parser\";\nimport type { TextractPageAdaptable } from \"@jaypie/textract\";\nimport { createMockWrappedFunction, createMockWrappedObject } from \"./utils\";\nimport * as original from \"@jaypie/textract\";\n\n// Constants for mock values\nconst TAG = \"TEXTRACT\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nconst MOCK_TEXTRACT_DOCUMENT_PATH = join(__dirname, \"..\", \"mockTextract.json\");\n\n// Setup\nlet mockTextractContents: string;\nbeforeAll(async () => {\n mockTextractContents = await readFile(MOCK_TEXTRACT_DOCUMENT_PATH, \"utf-8\");\n});\n\n/**\n * Mock for MarkdownPage class from @jaypie/textract\n */\nexport const MarkdownPage = createMockWrappedObject(original.MarkdownPage, {\n class: true,\n fallback: () => {\n const mockDocument = new TextractDocument(JSON.parse(mockTextractContents));\n // Double type assertion needed to bridge incompatible types\n return new original.MarkdownPage(\n mockDocument.pageNumber(1) as unknown as TextractPageAdaptable,\n );\n },\n});\n\n/**\n * Mock for textractJsonToMarkdown function from @jaypie/textract\n */\nexport const textractJsonToMarkdown = createMockWrappedFunction<string>(\n original.textractJsonToMarkdown as any,\n `_MOCK_TEXTRACT_JSON_TO_MARKDOWN_[${TAG}]`,\n);\n\n// Export default for convenience\nexport default {\n MarkdownPage,\n textractJsonToMarkdown,\n};\n","// Mock implementations for @jaypie/vocabulary\n\nimport { createMockFunction } from \"./utils\";\nimport { lambdaHandler } from \"./lambda\";\nimport { getMessages } from \"./aws\";\n\n// Status Type - re-export real values (no mocking needed)\nexport const STATUS_VALUES = [\n \"canceled\",\n \"complete\",\n \"error\",\n \"pending\",\n \"processing\",\n \"queued\",\n \"sending\",\n] as const;\n\nexport type Status = (typeof STATUS_VALUES)[number];\n\nexport const StatusType = [...STATUS_VALUES] as (\n | \"canceled\"\n | \"complete\"\n | \"error\"\n | \"pending\"\n | \"processing\"\n | \"queued\"\n | \"sending\"\n)[];\n\nexport function isStatus(value: unknown): value is Status {\n return (\n typeof value === \"string\" &&\n STATUS_VALUES.includes(value as (typeof STATUS_VALUES)[number])\n );\n}\n\n// Vocabulary types\ntype ServiceHandlerFunction = (\n input?: Record<string, unknown> | string,\n) => Promise<unknown>;\n\ninterface ServiceHandlerFunctionWithMetadata extends ServiceHandlerFunction {\n alias?: string;\n description?: string;\n input?: Record<string, InputFieldDefinition>;\n}\n\ninterface InputFieldDefinition {\n default?: unknown;\n description?: string;\n required?: boolean;\n type: unknown;\n}\n\ninterface LambdaServiceHandlerOptions {\n chaos?: string;\n name?: string;\n secrets?: string[];\n setup?: ((...args: unknown[]) => void | Promise<void>)[];\n teardown?: ((...args: unknown[]) => void | Promise<void>)[];\n throw?: boolean;\n unavailable?: boolean;\n validate?: ((...args: unknown[]) => unknown | Promise<unknown>)[];\n}\n\ninterface LambdaServiceHandlerConfig extends LambdaServiceHandlerOptions {\n handler: ServiceHandlerFunction;\n}\n\n// Handler function type - must match what lambdaHandler returns\ntype HandlerFunction = (...args: unknown[]) => unknown;\n\n/**\n * Mock implementation of lambdaServiceHandler\n * Mirrors the real implementation: wraps a service handler for Lambda with getMessages processing\n */\nexport const lambdaServiceHandler = createMockFunction<\n (\n handlerOrConfig: ServiceHandlerFunction | LambdaServiceHandlerConfig,\n options?: LambdaServiceHandlerOptions,\n ) => HandlerFunction\n>((handlerOrConfig, options = {}) => {\n // Normalize arguments\n let handler: ServiceHandlerFunction;\n let opts: LambdaServiceHandlerOptions;\n\n if (typeof handlerOrConfig === \"function\") {\n handler = handlerOrConfig;\n opts = options;\n } else {\n const { handler: configHandler, ...configOpts } = handlerOrConfig;\n handler = configHandler;\n opts = configOpts;\n }\n\n // Use handler.alias as the name for logging (can be overridden via options.name)\n const name = opts.name ?? (handler as { alias?: string }).alias;\n\n // Create the inner Lambda handler logic\n const innerHandler = async (event: unknown): Promise<unknown> => {\n // Extract messages from SQS/SNS event wrapper\n const messages = getMessages(event);\n\n // Process each message through the service handler\n const results: unknown[] = [];\n for (const message of messages) {\n const result = await handler(message as Record<string, unknown>);\n results.push(result);\n }\n\n // Return single result if only one message, otherwise return array\n if (results.length === 1) {\n return results[0];\n }\n return results;\n };\n\n // Wrap with lambdaHandler for lifecycle management\n return lambdaHandler(innerHandler, {\n chaos: opts.chaos,\n name,\n secrets: opts.secrets,\n setup: opts.setup,\n teardown: opts.teardown,\n throw: opts.throw,\n unavailable: opts.unavailable,\n validate: opts.validate,\n });\n});\n\n// LLM adapter types\ninterface LlmTool {\n call: (args?: Record<string, unknown>) => Promise<unknown> | unknown;\n description: string;\n message?:\n | string\n | ((\n args?: Record<string, unknown>,\n context?: { name: string },\n ) => Promise<string> | string);\n name: string;\n parameters: Record<string, unknown>;\n type: \"function\" | string;\n}\n\ninterface CreateLlmToolConfig {\n description?: string;\n exclude?: string[];\n handler: ServiceHandlerFunctionWithMetadata;\n message?: string | ((args?: Record<string, unknown>) => string);\n name?: string;\n}\n\ninterface CreateLlmToolResult {\n tool: LlmTool;\n}\n\n/**\n * Mock implementation of createLlmTool\n * Creates an LLM tool from a vocabulary service handler\n */\nexport const createLlmTool = createMockFunction<\n (config: CreateLlmToolConfig) => CreateLlmToolResult\n>((config) => {\n const { description, handler, message, name } = config;\n\n const toolName = name ?? handler.alias ?? \"tool\";\n const toolDescription = description ?? handler.description ?? \"\";\n\n const tool: LlmTool = {\n call: async (args?: Record<string, unknown>): Promise<unknown> => {\n return handler(args);\n },\n description: toolDescription,\n name: toolName,\n parameters: {\n properties: {},\n required: [],\n type: \"object\",\n },\n type: \"function\",\n };\n\n if (message !== undefined) {\n tool.message = message;\n }\n\n return { tool };\n});\n\n/**\n * Mock implementation of inputToJsonSchema\n * Converts vocabulary input definitions to JSON Schema\n */\nexport const inputToJsonSchema = createMockFunction<\n (\n input?: Record<string, InputFieldDefinition>,\n options?: { exclude?: string[] },\n ) => Record<string, unknown>\n>(() => ({\n properties: {},\n required: [],\n type: \"object\",\n}));\n\n// MCP adapter types\ninterface McpToolResponse {\n content: Array<{ text: string; type: \"text\" }>;\n}\n\ninterface McpServer {\n tool: (\n name: string,\n description: string,\n schema: Record<string, unknown>,\n handler: (args: Record<string, unknown>) => Promise<McpToolResponse>,\n ) => void;\n}\n\ninterface RegisterMcpToolConfig {\n description?: string;\n handler: ServiceHandlerFunctionWithMetadata;\n name?: string;\n server: McpServer;\n}\n\ninterface RegisterMcpToolResult {\n name: string;\n}\n\n/**\n * Mock implementation of registerMcpTool\n * Registers a vocabulary service handler as an MCP tool\n */\nexport const registerMcpTool = createMockFunction<\n (config: RegisterMcpToolConfig) => RegisterMcpToolResult\n>((config) => {\n const { description, handler, name, server } = config;\n\n const toolName = name ?? handler.alias ?? \"tool\";\n const toolDescription = description ?? handler.description ?? \"\";\n\n server.tool(\n toolName,\n toolDescription,\n {},\n async (args: Record<string, unknown>): Promise<McpToolResponse> => {\n const result = await handler(args);\n return {\n content: [\n {\n text: result === undefined || result === null ? \"\" : String(result),\n type: \"text\" as const,\n },\n ],\n };\n },\n );\n\n return { name: toolName };\n});\n","// Import all mocks\nimport * as aws from \"./aws\";\nimport * as core from \"./core\";\nimport * as datadog from \"./datadog\";\nimport * as dynamodb from \"./dynamodb\";\nimport * as express from \"./express\";\nimport * as kit from \"./kit\";\nimport * as lambda from \"./lambda\";\nimport * as llm from \"./llm\";\nimport * as logger from \"./logger\";\nimport * as mongoose from \"./mongoose\";\nimport * as textract from \"./textract\";\nimport * as vocabulary from \"./vocabulary\";\n\n// Re-export all mocks\nexport * from \"./aws\";\nexport * from \"./core\";\nexport * from \"./datadog\";\nexport * from \"./dynamodb\";\nexport * from \"./express\";\nexport * from \"./kit\";\nexport * from \"./lambda\";\nexport * from \"./llm\";\nexport * from \"./logger\";\nexport * from \"./mongoose\";\nexport * from \"./textract\";\nexport * from \"./vocabulary\";\n\n// Export default object with all mocks\nconst mock: Record<string, any> = {\n // AWS module\n ...aws,\n\n // Core module\n ...core,\n\n // Datadog module\n ...datadog,\n\n // DynamoDB module\n ...dynamodb,\n\n // Express module\n ...express,\n\n // Kit module\n ...kit,\n\n // Lambda module\n ...lambda,\n\n // LLM module\n ...llm,\n\n // Logger module\n ...logger,\n\n // Mongoose module\n ...mongoose,\n\n // Textract module\n ...textract,\n\n // Vocabulary module\n ...vocabulary,\n};\n\nexport default mock;\n"],"names":["TAG","kit","HTTP","original","BadRequestError","UnhandledError","originalCreateLogger","__filename","__dirname","textract"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/mock/utils.ts","../../../src/mock/aws.ts","../../../src/mockLog.module.ts","../../../src/mock/core.ts","../../../src/mock/datadog.ts","../../../src/mock/dynamodb.ts","../../../src/mock/express.ts","../../../src/mock/kit.ts","../../../src/mock/lambda.ts","../../../src/mock/llm.ts","../../../src/mock/logger.ts","../../../src/mock/mongoose.ts","../../../src/mock/textract.ts","../../../src/mock/vocabulary.ts","../../../src/mock/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { vi } from \"vitest\";\n\nimport { LlmTool } from \"@jaypie/llm\";\n\n/**\n * Internal wrapper for vi.fn() that adds _jaypie: true to all mocks\n */\nfunction _createJaypieMock<T extends (...args: any[]) => any>(\n implementation?: T,\n): ReturnType<typeof vi.fn> {\n const mock = vi.fn(implementation);\n Object.defineProperty(mock, \"_jaypie\", { value: true });\n return mock;\n}\n\n/**\n * Creates function mocks with proper typing\n * Internal utility to create properly typed mocks\n */\nfunction createMockFunction<T extends (...args: any[]) => any>(\n implementation?: (...args: Parameters<T>) => ReturnType<T>,\n): T & { mock: any } {\n // Use a more specific type conversion to avoid TypeScript error\n return _createJaypieMock(implementation) as unknown as T & { mock: any };\n}\n\n/**\n * Creates a mock function that resolves to a value when awaited\n * Internal utility to create async mock functions\n */\nfunction createMockResolvedFunction<T>(value: T): ReturnType<typeof vi.fn> {\n return _createJaypieMock().mockResolvedValue(value);\n}\n\n/**\n * Creates a mock function that returns a value\n * Internal utility to create mock functions that return a value\n */\nfunction createMockReturnedFunction<T>(value: T): ReturnType<typeof vi.fn> {\n return _createJaypieMock().mockReturnValue(value);\n}\n\n/**\n * Creates a mock function that wraps another function\n * Internal utility to create mock functions that wrap another function\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction createMockWrappedFunction<T = any>(\n fn: (...args: unknown[]) => unknown,\n fallbackOrOptions:\n | any\n | {\n fallback?: any;\n throws?: boolean;\n class?: boolean;\n } = \"_MOCK_WRAPPED_RESULT\",\n): ReturnType<typeof vi.fn> {\n // Determine if we have a direct fallback or options object\n const options =\n typeof fallbackOrOptions === \"object\" &&\n fallbackOrOptions !== null &&\n (\"fallback\" in fallbackOrOptions ||\n \"throws\" in fallbackOrOptions ||\n \"class\" in fallbackOrOptions)\n ? fallbackOrOptions\n : { fallback: fallbackOrOptions };\n\n // Extract values with defaults\n const fallback = options.fallback ?? \"_MOCK_WRAPPED_RESULT\";\n const throws = options.throws ?? false;\n const isClass = options.class ?? false;\n\n return _createJaypieMock().mockImplementation((...args: unknown[]) => {\n try {\n return isClass ? new (fn as any)(...args) : fn(...args);\n } catch (error) {\n if (throws) {\n throw error;\n }\n\n console.warn(\n `[@jaypie/testkit] Actual implementation failed. To suppress this warning, manually mock the response with mockReturnValue`,\n );\n if (error instanceof Error) {\n console.warn(`[@jaypie/testkit] ${error.message}`);\n }\n\n // If fallback is a function, call it\n if (typeof fallback === \"function\") {\n try {\n return fallback(...args);\n } catch (fallbackError) {\n console.warn(\n `[@jaypie/testkit] Fallback function failed: ${fallbackError instanceof Error ? fallbackError.message : fallbackError}`,\n );\n return \"_MOCK_WRAPPED_RESULT\";\n }\n }\n\n return fallback;\n }\n });\n}\n\nfunction createMockWrappedObject<T extends Record<string, any>>(\n object: T,\n fallbackOrOptions:\n | any\n | {\n fallback?: any;\n throws?: boolean;\n class?: boolean;\n } = \"_MOCK_WRAPPED_RESULT\",\n): T {\n let returnMock: Record<string, any> = {};\n\n // Extract values with defaults for the top-level call\n const options =\n typeof fallbackOrOptions === \"object\" &&\n fallbackOrOptions !== null &&\n (\"fallback\" in fallbackOrOptions ||\n \"throws\" in fallbackOrOptions ||\n \"class\" in fallbackOrOptions)\n ? fallbackOrOptions\n : { fallback: fallbackOrOptions };\n\n const fallback = options.fallback ?? \"_MOCK_WRAPPED_RESULT\";\n const throws = options.throws ?? false;\n const isClass = options.class ?? false;\n\n // Create options for recursive calls\n // Do not pass down class=true to nested objects\n const recursiveOptions = {\n fallback,\n throws,\n class: false, // Always pass class=false to nested objects\n };\n\n if (typeof object === \"function\") {\n returnMock = createMockWrappedFunction(object, {\n fallback,\n throws,\n class: isClass,\n });\n }\n for (const key of Object.keys(object)) {\n const value = object[key];\n if (typeof value === \"function\") {\n returnMock[key] = createMockWrappedFunction(value, {\n fallback,\n throws,\n class: isClass,\n });\n } else if (typeof value === \"object\" && value !== null) {\n returnMock[key] = createMockWrappedObject(value, recursiveOptions);\n } else {\n returnMock[key] = value;\n }\n }\n return returnMock as T;\n}\n\n/**\n * Utility to create a mock error constructor from an error class\n */\nfunction createMockError<T extends new (...args: any[]) => Error>(\n ErrorClass: T,\n): T {\n // Create a mock constructor that returns a new instance of ErrorClass\n const mockConstructor = _createJaypieMock(function (\n this: any,\n ...args: any[]\n ) {\n return new ErrorClass(...args);\n });\n return mockConstructor as unknown as T;\n}\n\n// Mock core errors - All error classes extend JaypieError\nclass MockValidationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ValidationError\";\n }\n}\n\nclass MockNotFoundError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"NotFoundError\";\n }\n}\n\n/**\n * Creates a mock LlmTool for testing purposes\n * @param nameOrCallOrOptions - Name (string), call function, or full options object\n * @param callOrOptions - Call function or options object (when first param is string)\n * @returns Mock LlmTool object\n */\nfunction createMockTool(\n nameOrCallOrOptions?: string | ((...args: any[]) => any) | Partial<LlmTool>,\n callOrOptions?: ((...args: any[]) => any) | Partial<LlmTool>,\n): LlmTool {\n // Default options\n const defaults: LlmTool = {\n name: \"mockTool\",\n description: \"Mock tool for testing\",\n parameters: {},\n type: \"function\",\n call: createMockResolvedFunction({ result: \"MOCK_TOOL\" }),\n message: \"MOCK_TOOL_MESSAGE\",\n };\n\n // Handle different parameter combinations\n if (typeof nameOrCallOrOptions === \"string\") {\n // First parameter is name\n const name = nameOrCallOrOptions;\n\n if (typeof callOrOptions === \"function\") {\n // Second parameter is call function\n return {\n ...defaults,\n name,\n call: callOrOptions,\n };\n } else if (callOrOptions && typeof callOrOptions === \"object\") {\n // Second parameter is options object\n return {\n ...defaults,\n name,\n ...callOrOptions,\n };\n } else {\n // Only name provided\n return {\n ...defaults,\n name,\n };\n }\n } else if (typeof nameOrCallOrOptions === \"function\") {\n // First parameter is call function\n return {\n ...defaults,\n call: nameOrCallOrOptions,\n };\n } else if (nameOrCallOrOptions && typeof nameOrCallOrOptions === \"object\") {\n // First parameter is options object\n return {\n ...defaults,\n ...nameOrCallOrOptions,\n };\n } else {\n // No parameters or invalid parameters\n return defaults;\n }\n}\n\n// Export functions for internal use\nexport {\n createMockFunction,\n createMockResolvedFunction,\n createMockReturnedFunction,\n createMockWrappedFunction,\n createMockWrappedObject,\n MockValidationError,\n MockNotFoundError,\n createMockError,\n createMockTool,\n};\n","import * as original from \"@jaypie/aws\";\nimport {\n createMockFunction,\n createMockResolvedFunction,\n createMockWrappedFunction,\n} from \"./utils\";\n\n// Constants for mock values\nconst TAG = \"AWS\";\n\nexport const getMessages = createMockWrappedFunction(original.getMessages, []);\n\nexport const getS3FileBuffer = createMockFunction<\n ({ bucket, key }: { bucket: string; key: string }) => Promise<Buffer>\n>(async ({ bucket, key }) => Buffer.from(`_MOCK_S3_FILE_[${bucket}/${key}]`));\n\nexport const getSecret = createMockResolvedFunction(\"mock-secret-value\");\n\nexport const sendMessage = createMockResolvedFunction({\n MessageId: \"mock-message-id\",\n});\n\n// Add missing functions from original implementation\nexport const getEnvSecret = createMockFunction<\n (key: string) => Promise<string>\n>(async (key) => `_MOCK_ENV_SECRET_[${TAG}][${key}]`);\n\nexport const loadEnvSecrets = createMockResolvedFunction(undefined);\n\nexport const getSingletonMessage = createMockWrappedFunction(\n original.getSingletonMessage,\n { value: \"_MOCK_SINGLETON_MESSAGE_\" },\n);\n\nexport const getTextractJob = createMockFunction<\n (jobId: string) => Promise<any>\n>(async (job) => ({ value: `_MOCK_TEXTRACT_JOB_[${job}]` }));\n\nexport const sendBatchMessages = createMockResolvedFunction(true);\n\nexport const sendTextractJob = createMockFunction<\n ({\n bucket,\n key,\n featureTypes,\n }: {\n bucket: string;\n key: string;\n featureTypes?: string[];\n snsRoleArn?: string;\n snsTopicArn?: string;\n }) => Promise<any[]>\n>(async ({ bucket, key }) => {\n // Basic validation to mimic original behavior\n if (!bucket || !key) {\n throw new Error(\"Bucket and key are required\");\n }\n return [`_MOCK_TEXTRACT_JOB_ID_[${TAG}]_${bucket}_${key}`];\n});\n\n// Streaming utilities\nexport const formatSSE = createMockFunction<\n (chunk: { type: string; [key: string]: unknown }) => string\n>((chunk) => `event: ${chunk.type}\\ndata: ${JSON.stringify(chunk)}\\n\\n`);\n\nexport const streamToSSE = createMockFunction<\n (stream: AsyncIterable<unknown>) => AsyncIterable<string>\n>(async function* (stream) {\n for await (const chunk of stream) {\n yield `event: mock\\ndata: ${JSON.stringify(chunk)}\\n\\n`;\n }\n});\n\nexport const createLambdaStream = createMockFunction<\n (\n stream: AsyncIterable<unknown>,\n writer: { write: (chunk: string) => void; end: () => void },\n ) => Promise<void>\n>(async (stream, writer) => {\n for await (const chunk of stream) {\n writer.write(JSON.stringify(chunk));\n }\n writer.end();\n});\n\nexport const createExpressStream = createMockFunction<\n (\n stream: AsyncIterable<unknown>,\n res: {\n setHeader: (name: string, value: string) => void;\n write: (chunk: string) => boolean;\n end: () => void;\n flushHeaders: () => void;\n },\n ) => Promise<void>\n>(async (stream, res) => {\n res.setHeader(\"Content-Type\", \"text/event-stream\");\n res.flushHeaders();\n for await (const chunk of stream) {\n res.write(JSON.stringify(chunk));\n }\n res.end();\n});\n\n// Mock JaypieStream class\nexport class JaypieStream {\n private readonly source: AsyncIterable<unknown>;\n\n constructor(source: AsyncIterable<unknown>) {\n this.source = source;\n }\n\n async toLambda(writer: {\n write: (chunk: string) => void;\n end: () => void;\n }): Promise<void> {\n for await (const chunk of this.source) {\n writer.write(JSON.stringify(chunk));\n }\n writer.end();\n }\n\n async toExpress(res: {\n setHeader: (name: string, value: string) => void;\n write: (chunk: string) => boolean;\n end: () => void;\n flushHeaders: () => void;\n }): Promise<void> {\n res.setHeader(\"Content-Type\", \"text/event-stream\");\n res.flushHeaders();\n for await (const chunk of this.source) {\n res.write(JSON.stringify(chunk));\n }\n res.end();\n }\n\n [Symbol.asyncIterator](): AsyncIterator<unknown> {\n return this.source[Symbol.asyncIterator]();\n }\n\n toSSE(): AsyncIterable<string> {\n const source = this.source;\n return {\n async *[Symbol.asyncIterator]() {\n for await (const chunk of source) {\n yield `event: mock\\ndata: ${JSON.stringify(chunk)}\\n\\n`;\n }\n },\n };\n }\n}\n\nexport const createJaypieStream = createMockFunction<\n (source: AsyncIterable<unknown>) => JaypieStream\n>((source) => new JaypieStream(source));\n","import { log } from \"@jaypie/logger\";\nimport { vi } from \"vitest\";\nimport { LogMock } from \"./types/jaypie-testkit\";\n\nexport function mockLogFactory(): LogMock {\n // Create skeleton of mock objects\n const mock = {\n debug: vi.fn(),\n error: vi.fn(),\n fatal: vi.fn(),\n info: vi.fn(),\n init: vi.fn(),\n lib: vi.fn(),\n tag: vi.fn(),\n trace: vi.fn(),\n untag: vi.fn(),\n var: vi.fn(),\n warn: vi.fn(),\n with: vi.fn(),\n } as LogMock;\n\n // Fill out nested mocks\n mock.debug.var = mock.var;\n mock.error.var = mock.var;\n mock.fatal.var = mock.var;\n mock.info.var = mock.var;\n mock.trace.var = mock.var;\n mock.warn.var = mock.var;\n\n // Have modules return correct objects\n mock.init.mockReturnValue(null);\n mock.lib.mockReturnValue(mock);\n mock.with.mockReturnValue(mock);\n\n // Pin mocks to the module\n mock.mock = {\n debug: mock.debug,\n error: mock.error,\n fatal: mock.fatal,\n info: mock.info,\n init: mock.init,\n lib: mock.lib,\n tag: mock.tag,\n trace: mock.trace,\n untag: mock.untag,\n var: mock.var,\n warn: mock.warn,\n with: mock.with,\n };\n\n return mock;\n}\n\nconst LOG_METHOD_NAMES = [\n \"debug\",\n \"error\",\n \"fatal\",\n \"info\",\n \"init\",\n \"lib\",\n \"tag\",\n \"trace\",\n \"untag\",\n \"var\",\n \"warn\",\n \"with\",\n] as const;\n\n// Use Record type for more flexible access pattern\nconst originalLogMethods = new WeakMap<typeof log, Record<string, unknown>>();\n\nexport function spyLog(logInstance: typeof log): void {\n if (!originalLogMethods.has(logInstance)) {\n const mockLog = mockLogFactory();\n const originalMethods: Record<string, unknown> = {};\n\n // Save only methods that actually exist on the log instance\n LOG_METHOD_NAMES.forEach((method) => {\n if (method in logInstance) {\n originalMethods[method] =\n logInstance[method as keyof typeof logInstance];\n // Use type assertion after checking existence\n (logInstance as unknown as Record<string, unknown>)[method] =\n mockLog[method];\n }\n });\n\n originalLogMethods.set(logInstance, originalMethods);\n }\n}\n\nexport function restoreLog(logInstance: typeof log): void {\n const originalMethods = originalLogMethods.get(logInstance);\n if (originalMethods) {\n LOG_METHOD_NAMES.forEach((method) => {\n if (method in originalMethods && method in logInstance) {\n // Use type assertion after checking existence\n (logInstance as unknown as Record<string, unknown>)[method] =\n originalMethods[method];\n }\n });\n originalLogMethods.delete(logInstance);\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-function-type */\n\nimport {\n createMockError,\n createMockFunction,\n createMockResolvedFunction,\n createMockReturnedFunction,\n createMockWrappedFunction,\n createMockWrappedObject,\n} from \"./utils\";\nimport { beforeAll } from \"vitest\";\nimport { spyLog } from \"../mockLog.module.js\";\nimport { log } from \"@jaypie/logger\";\nimport * as errors from \"@jaypie/errors\";\nimport * as kit from \"@jaypie/kit\";\n\n// Constants for mock values\nconst TAG = \"CORE\";\n\n// JaypieError is the base class - export it directly from errors\nexport const JaypieError = errors.JaypieError;\n\nexport const BadGatewayError: typeof errors.BadGatewayError = createMockError(\n errors.BadGatewayError,\n);\nexport const BadRequestError: typeof errors.BadRequestError = createMockError(\n errors.BadRequestError,\n);\nexport const ConfigurationError: typeof errors.ConfigurationError =\n createMockError(errors.ConfigurationError);\nexport const CorsError: typeof errors.CorsError = createMockError(\n errors.CorsError,\n);\nexport const ForbiddenError: typeof errors.ForbiddenError = createMockError(\n errors.ForbiddenError,\n);\nexport const GatewayTimeoutError: typeof errors.GatewayTimeoutError =\n createMockError(errors.GatewayTimeoutError);\nexport const GoneError: typeof errors.GoneError = createMockError(\n errors.GoneError,\n);\nexport const IllogicalError: typeof errors.IllogicalError = createMockError(\n errors.IllogicalError,\n);\nexport const InternalError: typeof errors.InternalError = createMockError(\n errors.InternalError,\n);\nexport const MethodNotAllowedError: typeof errors.MethodNotAllowedError =\n createMockError(errors.MethodNotAllowedError);\n// Backwards compatibility aliases\nexport const MultiError: typeof errors.InternalError = createMockError(\n errors.InternalError,\n);\nexport const NotFoundError: typeof errors.NotFoundError = createMockError(\n errors.NotFoundError,\n);\nexport const NotImplementedError: typeof errors.NotImplementedError =\n createMockError(errors.NotImplementedError);\nexport const ProjectError: typeof errors.InternalError = createMockError(\n errors.InternalError,\n);\nexport const ProjectMultiError: typeof errors.InternalError = createMockError(\n errors.InternalError,\n);\nexport const RejectedError: typeof errors.RejectedError = createMockError(\n errors.RejectedError,\n);\nexport const TeapotError: typeof errors.TeapotError = createMockError(\n errors.TeapotError,\n);\nexport const TooManyRequestsError: typeof errors.TooManyRequestsError =\n createMockError(errors.TooManyRequestsError);\nexport const UnauthorizedError: typeof errors.UnauthorizedError =\n createMockError(errors.UnauthorizedError);\nexport const UnavailableError: typeof errors.UnavailableError = createMockError(\n errors.UnavailableError,\n);\nexport const UnhandledError: typeof errors.UnhandledError = createMockError(\n errors.UnhandledError,\n);\nexport const UnreachableCodeError: typeof errors.UnreachableCodeError =\n createMockError(errors.UnreachableCodeError);\n\nbeforeAll(async () => {\n spyLog(log);\n});\nexport { log };\n\n// Add missing core functions\nexport const cloneDeep = createMockWrappedFunction(kit.cloneDeep, {\n throws: true,\n});\n\nexport const envBoolean = createMockReturnedFunction(true);\n\nexport const envsKey = createMockWrappedFunction(\n kit.envsKey as (...args: unknown[]) => unknown,\n `_MOCK_ENVS_KEY_[${TAG}]`,\n);\n\nexport const errorFromStatusCode = createMockFunction<\n (statusCode: number, message?: string) => Error\n>((statusCode, message = `Mock error for status code ${statusCode}`) => {\n try {\n // Try to mimic original implementation\n switch (statusCode) {\n case 400:\n return new BadRequestError(message);\n case 401:\n return new UnauthorizedError(message);\n case 403:\n return new ForbiddenError(message);\n case 404:\n return new NotFoundError(message);\n case 405:\n return new MethodNotAllowedError(message);\n case 410:\n return new GoneError(message);\n case 418:\n return new TeapotError(message);\n case 500:\n return new InternalError(message);\n case 501:\n return new NotImplementedError(message);\n case 502:\n return new BadGatewayError(message);\n case 503:\n return new UnavailableError(message);\n case 504:\n return new GatewayTimeoutError(message);\n default:\n return new Error(message);\n }\n } catch {\n return new Error(`_MOCK_ERROR_FROM_STATUS_CODE_[${TAG}][${statusCode}]`);\n }\n});\n\nexport const formatError = createMockWrappedFunction(\n kit.formatError as (...args: unknown[]) => unknown,\n `_MOCK_FORMAT_ERROR_[${TAG}]`,\n);\n\n// Alias for errorFromStatusCode (exported from @jaypie/errors as jaypieErrorFromStatus)\nexport const jaypieErrorFromStatus = errorFromStatusCode;\n\nexport const getHeaderFrom = createMockWrappedFunction(\n kit.getHeaderFrom as (...args: unknown[]) => unknown,\n `_MOCK_GET_HEADER_FROM_[${TAG}]`,\n);\n\nexport const getObjectKeyCaseInsensitive = createMockWrappedFunction(\n kit.getObjectKeyCaseInsensitive as (...args: unknown[]) => unknown,\n `_MOCK_GET_OBJECT_KEY_CASE_INSENSITIVE_[${TAG}]`,\n);\n\nexport const isClass = createMockWrappedFunction(\n kit.isClass,\n `_MOCK_IS_CLASS_[${TAG}]`,\n);\n\nexport const isJaypieError = createMockWrappedFunction(\n errors.isJaypieError,\n false,\n);\n\nexport const resolveValue = createMockWrappedFunction(\n kit.resolveValue,\n `_MOCK_RESOLVE_VALUE_[${TAG}]`,\n);\n\nexport const safeParseFloat = createMockWrappedFunction(\n kit.safeParseFloat as (...args: unknown[]) => unknown,\n `_MOCK_SAFE_PARSE_FLOAT_[${TAG}]`,\n);\n\nexport const placeholders = createMockWrappedFunction(\n kit.placeholders as (...args: unknown[]) => unknown,\n `_MOCK_PLACEHOLDERS_[${TAG}]`,\n);\n\n// Add force utilities to help with jaypieHandler implementation\nexport const force = createMockWrappedObject(kit.force);\n\nexport const jaypieHandler = createMockFunction<\n (\n handler: Function,\n options?: {\n setup?: Function | Function[];\n teardown?: Function | Function[];\n unavailable?: boolean;\n validate?: Function | Function[];\n },\n ) => Function\n>((handler, options = {}) => {\n return async (...args: any[]) => {\n let result;\n let thrownError;\n\n // Destructure options with defaults\n const {\n setup = [],\n teardown = [],\n unavailable = kit.force.boolean(process.env.PROJECT_UNAVAILABLE),\n validate = [],\n } = options;\n\n // Check if service is unavailable\n if (unavailable) throw new UnavailableError(\"Service unavailable\");\n\n // Run validation functions\n const validateFunctions = kit.force.array(validate);\n for (const validator of validateFunctions) {\n if (typeof validator === \"function\") {\n const valid = await validator(...args);\n if (valid === false) {\n throw new BadRequestError(\"Validation failed\");\n }\n }\n }\n\n try {\n // Run setup functions\n const setupFunctions = kit.force.array(setup);\n for (const setupFunction of setupFunctions) {\n if (typeof setupFunction === \"function\") {\n await setupFunction(...args);\n }\n }\n\n // Execute the handler\n result = await handler(...args);\n } catch (error) {\n thrownError = error;\n }\n\n // Run teardown functions (always run even if there was an error)\n const teardownFunctions = kit.force.array(teardown);\n for (const teardownFunction of teardownFunctions) {\n if (typeof teardownFunction === \"function\") {\n try {\n await teardownFunction(...args);\n } catch (teardownError) {\n // Swallow teardown errors, but log them\n // eslint-disable-next-line no-console\n console.error(teardownError);\n }\n }\n }\n\n // If there was an error in the handler, throw it after teardown\n if (thrownError) {\n throw thrownError;\n }\n\n return result;\n };\n});\n\nexport const sleep = createMockResolvedFunction(true);\n\nexport const uuid = createMockWrappedFunction(\n () => \"00000000-0000-0000-0000-000000000000\",\n `00000000-0000-0000-0000-000000000000`,\n);\n\nexport const HTTP = kit.HTTP;\nexport const JAYPIE = kit.JAYPIE;\nexport const PROJECT = kit.PROJECT;\n","import { createMockResolvedFunction, createMockWrappedFunction } from \"./utils\";\n\nimport * as original from \"@jaypie/datadog\";\n\nexport const DATADOG = original.DATADOG;\nexport const hasDatadogEnv = createMockWrappedFunction(\n original.hasDatadogEnv,\n false,\n);\nexport const submitDistribution = createMockResolvedFunction(true);\nexport const submitMetric = createMockResolvedFunction(true);\nexport const submitMetricSet = createMockResolvedFunction(true);\n","import * as original from \"@jaypie/dynamodb\";\nimport type {\n BaseQueryOptions,\n DynamoClientConfig,\n ExportResult,\n ParentReference,\n QueryParams,\n QueryResult,\n SeedOptions,\n SeedResult,\n StorableEntity,\n} from \"@jaypie/dynamodb\";\nimport type { IndexableEntity } from \"@jaypie/vocabulary\";\n\nimport { createMockFunction, createMockResolvedFunction } from \"./utils\";\n\n// Re-export constants (no need to mock, just pass through)\nexport const APEX = original.APEX;\nexport const ARCHIVED_SUFFIX = original.ARCHIVED_SUFFIX;\nexport const DEFAULT_INDEXES = original.DEFAULT_INDEXES;\nexport const DELETED_SUFFIX = original.DELETED_SUFFIX;\nexport const INDEX_ALIAS = original.INDEX_ALIAS;\nexport const INDEX_CLASS = original.INDEX_CLASS;\nexport const INDEX_SCOPE = original.INDEX_SCOPE;\nexport const INDEX_TYPE = original.INDEX_TYPE;\nexport const INDEX_XID = original.INDEX_XID;\nexport const SEPARATOR = original.SEPARATOR;\n\n// Key builder functions - use createMockFunction with typed implementations\nexport const buildCompositeKey = createMockFunction<\n (\n entity: Record<string, unknown> & { model: string },\n fields: string[],\n suffix?: string,\n ) => string\n>((entity, fields, suffix) => original.buildCompositeKey(entity, fields, suffix));\n\nexport const buildIndexAlias = createMockFunction<\n (scope: string, model: string, alias: string) => string\n>((scope, model, alias) => original.buildIndexAlias(scope, model, alias));\n\nexport const buildIndexClass = createMockFunction<\n (scope: string, model: string, recordClass: string) => string\n>((scope, model, recordClass) => original.buildIndexClass(scope, model, recordClass));\n\nexport const buildIndexScope = createMockFunction<\n (scope: string, model: string) => string\n>((scope, model) => original.buildIndexScope(scope, model));\n\nexport const buildIndexType = createMockFunction<\n (scope: string, model: string, type: string) => string\n>((scope, model, type) => original.buildIndexType(scope, model, type));\n\nexport const buildIndexXid = createMockFunction<\n (scope: string, model: string, xid: string) => string\n>((scope, model, xid) => original.buildIndexXid(scope, model, xid));\n\nexport const calculateScope = createMockFunction<\n (parent?: ParentReference) => string\n>((parent) => original.calculateScope(parent));\n\nexport const indexEntity = createMockFunction<\n <T extends StorableEntity>(entity: T, suffix?: string) => T\n>(<T extends StorableEntity>(entity: T, suffix?: string) =>\n original.indexEntity(entity, suffix),\n);\n\n// Client functions\nexport const initClient = createMockFunction<\n (config: DynamoClientConfig) => void\n>(() => {\n // No-op in mock\n});\n\nexport const getDocClient = createMockFunction(() => ({\n send: createMockResolvedFunction({ Items: [] }),\n}));\n\nexport const getTableName = createMockFunction(() => \"mock-table\");\n\nexport const isInitialized = createMockFunction(() => true);\n\nexport const resetClient = createMockFunction(() => {\n // No-op in mock\n});\n\n// Entity operations - service handler pattern (callable with object params)\nexport const getEntity = createMockFunction<\n (params: { id: string; model: string }) => Promise<StorableEntity | null>\n>(async () => null);\n\nexport const putEntity = createMockFunction<\n (params: { entity: StorableEntity }) => Promise<StorableEntity>\n>(async (params: { entity: StorableEntity }) =>\n original.indexEntity(params.entity),\n);\n\nexport const updateEntity = createMockFunction<\n (params: { entity: StorableEntity }) => Promise<StorableEntity>\n>(async (params: { entity: StorableEntity }) => ({\n ...original.indexEntity(params.entity),\n updatedAt: new Date().toISOString(),\n}));\n\nexport const deleteEntity = createMockFunction<\n (params: { id: string; model: string }) => Promise<boolean>\n>(async () => true);\n\nexport const archiveEntity = createMockFunction<\n (params: { id: string; model: string }) => Promise<boolean>\n>(async () => true);\n\nexport const destroyEntity = createMockFunction<\n (params: { id: string; model: string }) => Promise<boolean>\n>(async () => true);\n\n// Query functions - service handler pattern (callable with object params)\nexport const queryByScope = createMockFunction<\n (params: {\n model: string;\n scope: string;\n archived?: boolean;\n ascending?: boolean;\n deleted?: boolean;\n limit?: number;\n startKey?: Record<string, unknown>;\n }) => Promise<QueryResult<StorableEntity>>\n>(async () => ({\n items: [],\n lastEvaluatedKey: undefined,\n}));\n\nexport const queryByAlias = createMockFunction<\n (params: {\n alias: string;\n archived?: boolean;\n deleted?: boolean;\n model: string;\n scope: string;\n }) => Promise<StorableEntity | null>\n>(async () => null);\n\nexport const queryByClass = createMockFunction<\n (params: {\n archived?: boolean;\n ascending?: boolean;\n deleted?: boolean;\n limit?: number;\n model: string;\n scope: string;\n recordClass: string;\n startKey?: Record<string, unknown>;\n }) => Promise<QueryResult<StorableEntity>>\n>(async () => ({\n items: [],\n lastEvaluatedKey: undefined,\n}));\n\nexport const queryByType = createMockFunction<\n (params: {\n archived?: boolean;\n ascending?: boolean;\n deleted?: boolean;\n limit?: number;\n model: string;\n scope: string;\n startKey?: Record<string, unknown>;\n type: string;\n }) => Promise<QueryResult<StorableEntity>>\n>(async () => ({\n items: [],\n lastEvaluatedKey: undefined,\n}));\n\nexport const queryByXid = createMockFunction<\n (params: {\n archived?: boolean;\n deleted?: boolean;\n model: string;\n scope: string;\n xid: string;\n }) => Promise<StorableEntity | null>\n>(async () => null);\n\n// Unified query function with auto-detect\nexport const query = createMockFunction<\n <T extends StorableEntity = StorableEntity>(params: {\n archived?: boolean;\n ascending?: boolean;\n deleted?: boolean;\n filter?: Partial<T>;\n limit?: number;\n model: string;\n scope?: string;\n startKey?: Record<string, unknown>;\n }) => Promise<QueryResult<T>>\n>(async () => ({\n items: [],\n lastEvaluatedKey: undefined,\n}));\n\n// Seed and export utilities\nexport const seedEntityIfNotExists = createMockFunction<\n <T extends Partial<StorableEntity>>(entity: T) => Promise<boolean>\n>(async () => true);\n\nexport const seedEntities = createMockFunction<\n <T extends Partial<StorableEntity>>(\n entities: T[],\n options?: SeedOptions,\n ) => Promise<SeedResult>\n>(async () => ({\n created: [],\n errors: [],\n skipped: [],\n}));\n\nexport const exportEntities = createMockFunction<\n <T extends StorableEntity>(\n model: string,\n scope: string,\n limit?: number,\n ) => Promise<ExportResult<T>>\n>(async () => ({\n count: 0,\n entities: [],\n}));\n\nexport const exportEntitiesToJson = createMockFunction<\n (model: string, scope: string, pretty?: boolean) => Promise<string>\n>(async () => \"[]\");\n\n// Re-export types for convenience\nexport type {\n BaseQueryOptions,\n ExportResult,\n ParentReference,\n QueryParams,\n QueryResult,\n SeedOptions,\n SeedResult,\n StorableEntity,\n};\nexport type { IndexableEntity };\n","/* eslint-disable @typescript-eslint/no-unsafe-function-type */\n\nimport {\n createMockFunction,\n createMockReturnedFunction,\n createMockWrappedFunction,\n} from \"./utils\";\nimport { BadRequestError, UnhandledError } from \"@jaypie/errors\";\nimport { force, jaypieHandler } from \"./core\";\nimport * as original from \"@jaypie/express\";\n\n// Constants for mock values\nconst TAG = \"EXPRESS\";\nconst HTTP = {\n CODE: { OK: 200, CREATED: 201, NO_CONTENT: 204, INTERNAL_ERROR: 500 },\n};\n\n// Re-export Lambda adapter classes directly (these are not mocked)\nexport const createLambdaHandler = createMockWrappedFunction(\n original.createLambdaHandler as (...args: unknown[]) => unknown,\n);\nexport const createLambdaStreamHandler = createMockWrappedFunction(\n original.createLambdaStreamHandler as (...args: unknown[]) => unknown,\n);\nexport const getCurrentInvoke = createMockReturnedFunction<{\n context: unknown;\n event: unknown;\n}>({ context: undefined, event: undefined });\nexport const LambdaRequest = original.LambdaRequest;\nexport const LambdaResponseBuffered = original.LambdaResponseBuffered;\nexport const LambdaResponseStreaming = original.LambdaResponseStreaming;\n\nexport const EXPRESS = original.EXPRESS;\n\n// Add Express route functions\nexport const badRequestRoute = createMockWrappedFunction(\n original.badRequestRoute as (...args: unknown[]) => unknown,\n { error: `_MOCK_BAD_REQUEST_ROUTE_[${TAG}]` },\n);\n\nexport const echoRoute = createMockWrappedFunction(\n original.echoRoute as (...args: unknown[]) => unknown,\n (req: unknown) => req,\n);\n\nexport const forbiddenRoute = createMockWrappedFunction(\n original.forbiddenRoute as (...args: unknown[]) => unknown,\n { error: `_MOCK_FORBIDDEN_ROUTE_[${TAG}]` },\n);\n\nexport const goneRoute = createMockWrappedFunction(\n original.goneRoute as (...args: unknown[]) => unknown,\n {\n error: `_MOCK_GONE_ROUTE_[${TAG}]`,\n },\n);\n\nexport const methodNotAllowedRoute = createMockWrappedFunction(\n original.methodNotAllowedRoute as (...args: unknown[]) => unknown,\n { error: `_MOCK_METHOD_NOT_ALLOWED_ROUTE_[${TAG}]` },\n);\n\nexport const noContentRoute = createMockWrappedFunction(\n original.noContentRoute as (...args: unknown[]) => unknown,\n { status: 204 },\n);\n\nexport const notFoundRoute = createMockWrappedFunction(\n original.notFoundRoute as (...args: unknown[]) => unknown,\n {\n error: `_MOCK_NOT_FOUND_ROUTE_[${TAG}]`,\n },\n);\n\nexport const notImplementedRoute = createMockWrappedFunction(\n original.notImplementedRoute as any,\n { error: `_MOCK_NOT_IMPLEMENTED_ROUTE_[${TAG}]` },\n);\n\nexport const expressHttpCodeHandler = createMockWrappedFunction(\n original.expressHttpCodeHandler as any,\n (...args: any[]) => {\n const [, res] = args;\n return res.status(200).send();\n },\n);\n\nexport const cors = createMockWrappedFunction(original.cors as any);\n\nexport const getCurrentInvokeUuid = createMockReturnedFunction<\n string | undefined\n>(\"mock-invoke-uuid-12345678\");\n\n// Type definitions needed for the expressHandler\ninterface WithJsonFunction {\n json: () => any;\n}\n\nexport interface ExpressHandlerFunction {\n (req: any, res: any, ...extra: any[]): Promise<any> | any;\n}\n\nexport interface ExpressHandlerOptions {\n locals?: Record<string, any>;\n setup?: any[] | Function;\n teardown?: any[] | Function;\n unavailable?: boolean;\n validate?: any[] | Function;\n}\n\ntype ExpressHandlerParameter = ExpressHandlerFunction | ExpressHandlerOptions;\n\nexport interface ExpressStreamHandlerOptions {\n locals?: Record<string, any>;\n setup?: any[] | Function;\n teardown?: any[] | Function;\n unavailable?: boolean;\n validate?: any[] | Function;\n contentType?: string;\n}\n\nexport type ExpressStreamHandlerFunction = (\n req: any,\n res: any,\n ...extra: any[]\n) => Promise<void>;\n\ntype ExpressStreamHandlerParameter =\n | ExpressStreamHandlerFunction\n | ExpressStreamHandlerOptions;\n\nexport const expressStreamHandler = createMockFunction<\n (\n handlerOrProps: ExpressStreamHandlerParameter,\n propsOrHandler?: ExpressStreamHandlerParameter,\n ) => (req: any, res: any, ...extra: any[]) => Promise<void>\n>((handlerOrProps, propsOrHandler) => {\n let handler: ExpressStreamHandlerFunction;\n let props: ExpressStreamHandlerOptions;\n\n if (\n typeof handlerOrProps === \"object\" &&\n typeof propsOrHandler === \"function\"\n ) {\n handler = propsOrHandler;\n props = handlerOrProps;\n } else if (typeof handlerOrProps === \"function\") {\n handler = handlerOrProps;\n props = (propsOrHandler || {}) as ExpressStreamHandlerOptions;\n } else {\n throw new BadRequestError(\"handler must be a function\");\n }\n\n return async (req = {}, res: any = {}, ...extra: unknown[]) => {\n // Set SSE headers if res has setHeader method\n if (typeof res.setHeader === \"function\") {\n res.setHeader(\"Content-Type\", props.contentType || \"text/event-stream\");\n res.setHeader(\"Cache-Control\", \"no-cache\");\n res.setHeader(\"Connection\", \"keep-alive\");\n res.setHeader(\"X-Accel-Buffering\", \"no\");\n if (typeof res.flushHeaders === \"function\") {\n res.flushHeaders();\n }\n }\n\n try {\n await handler(req, res, ...extra);\n } finally {\n // End the response if possible\n if (typeof res.end === \"function\") {\n try {\n res.end();\n } catch {\n // Response may already be ended\n }\n }\n }\n };\n});\n\nexport const expressHandler = createMockFunction<\n (\n handlerOrProps: ExpressHandlerParameter,\n propsOrHandler?: ExpressHandlerParameter,\n ) => (req: any, res: any, ...extra: any[]) => Promise<any>\n>((handlerOrProps, propsOrHandler) => {\n let handler: ExpressHandlerFunction;\n let props: ExpressHandlerOptions;\n\n if (\n typeof handlerOrProps === \"object\" &&\n typeof propsOrHandler === \"function\"\n ) {\n handler = propsOrHandler;\n props = handlerOrProps;\n } else if (typeof handlerOrProps === \"function\") {\n handler = handlerOrProps;\n props = (propsOrHandler || {}) as ExpressHandlerOptions;\n } else {\n throw new BadRequestError(\"handler must be a function\");\n }\n\n // Add locals setup if needed\n if (\n props.locals &&\n typeof props.locals === \"object\" &&\n !Array.isArray(props.locals)\n ) {\n const keys = Object.keys(props.locals);\n if (!props.setup) props.setup = [];\n props.setup = force.array(props.setup);\n props.setup.unshift((req: { locals?: Record<string, unknown> }) => {\n if (!req || typeof req !== \"object\") {\n throw new BadRequestError(\"req must be an object\");\n }\n // Set req.locals if it doesn't exist\n if (!req.locals) req.locals = {};\n if (typeof req.locals !== \"object\" || Array.isArray(req.locals)) {\n throw new BadRequestError(\"req.locals must be an object\");\n }\n if (!req.locals._jaypie) req.locals._jaypie = {};\n });\n const localsSetup = async (\n localsReq: { locals: Record<string, unknown> },\n localsRes: unknown,\n ) => {\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (typeof props.locals![key] === \"function\") {\n localsReq.locals[key] = await props.locals;\n } else {\n localsReq.locals[key] = props.locals![key];\n }\n }\n };\n props.setup.push(localsSetup);\n }\n if (props.locals && typeof props.locals !== \"object\") {\n throw new BadRequestError(\"props.locals must be an object\");\n }\n if (props.locals && Array.isArray(props.locals)) {\n throw new BadRequestError(\"props.locals must be an object\");\n }\n if (props.locals === null) {\n throw new BadRequestError(\"props.locals must be an object\");\n }\n\n const jaypieFunction = jaypieHandler(handler, props);\n return async (req = {}, res = {}, ...extra: unknown[]) => {\n const status = HTTP.CODE.OK;\n let response;\n let supertestMode = false;\n\n if (\n res &&\n typeof res === \"object\" &&\n \"socket\" in res &&\n res.constructor.name === \"ServerResponse\"\n ) {\n // Use the response object in supertest mode\n supertestMode = true;\n }\n\n try {\n response = await jaypieFunction(req, res, ...extra);\n } catch (error: any) {\n // In the mock context, if status is a function we are in a \"supertest\"\n if (supertestMode && typeof res.status === \"function\") {\n // In theory jaypieFunction has handled all errors\n const errorStatus = error?.status || HTTP.CODE.INTERNAL_ERROR;\n let errorResponse;\n if (typeof error?.json === \"function\") {\n errorResponse = error.json();\n } else {\n // This should never happen\n errorResponse = new UnhandledError().json();\n }\n res.status(errorStatus).json(errorResponse);\n return;\n } else {\n // else, res.status is not a function, throw the error\n throw error;\n }\n }\n\n if (supertestMode && typeof res.status === \"function\") {\n if (response) {\n if (typeof response === \"object\") {\n if (typeof (response as WithJsonFunction).json === \"function\") {\n res.json((response as WithJsonFunction).json());\n } else {\n res.status(status).json(response);\n }\n } else if (typeof response === \"string\") {\n try {\n res.status(status).json(JSON.parse(response));\n } catch {\n res.status(status).send(response);\n }\n } else if (response === true) {\n res.status(HTTP.CODE.CREATED).send();\n } else {\n res.status(status).send(response);\n }\n } else {\n res.status(HTTP.CODE.NO_CONTENT).send();\n }\n } else {\n return response;\n }\n };\n});\n","import { createMockReturnedFunction } from \"./utils\";\n\nexport const isLocalEnv = createMockReturnedFunction(false);\n\nexport const isNodeTestEnv = createMockReturnedFunction(true);\n\nexport const isProductionEnv = createMockReturnedFunction(false);\n","import { createMockFunction } from \"./utils\";\nimport { jaypieHandler } from \"./core\";\n\n// We'll use more specific types instead of Function\ntype HandlerFunction = (...args: unknown[]) => unknown;\ntype LifecycleFunction = (...args: unknown[]) => unknown | Promise<unknown>;\n\nexport interface LambdaOptions {\n name?: string;\n setup?: LifecycleFunction | LifecycleFunction[];\n teardown?: LifecycleFunction | LifecycleFunction[];\n throw?: boolean;\n unavailable?: boolean;\n validate?: LifecycleFunction | LifecycleFunction[];\n [key: string]: unknown;\n}\n\n// Mock implementation of lambdaHandler that follows the original implementation pattern\nexport const lambdaHandler = createMockFunction<\n (handler: HandlerFunction, props?: LambdaOptions) => HandlerFunction\n>((handler, props = {}) => {\n // If handler is an object and options is a function, swap them\n if (typeof handler === \"object\" && typeof props === \"function\") {\n const temp = handler;\n handler = props;\n props = temp;\n }\n return async (event: unknown, context: unknown, ...extra: unknown[]) => {\n return jaypieHandler(handler, props)(event, context, ...extra);\n };\n});\n\n// Mock stream handler function type\ntype StreamHandlerFunction = (\n event: unknown,\n responseStream: { write: (data: string) => void; end: () => void },\n context: unknown,\n ...extra: unknown[]\n) => Promise<void>;\n\n// Mock implementation of lambdaStreamHandler\nexport const lambdaStreamHandler = createMockFunction<\n (\n handler: StreamHandlerFunction,\n props?: LambdaOptions,\n ) => StreamHandlerFunction\n>((handler, props = {}) => {\n // If handler is an object and options is a function, swap them\n if (typeof handler === \"object\" && typeof props === \"function\") {\n const temp = handler;\n handler = props;\n props = temp;\n }\n return async (\n event: unknown,\n responseStream: { write: (data: string) => void; end: () => void },\n context: unknown,\n ...extra: unknown[]\n ) => {\n try {\n await handler(event, responseStream, context, ...extra);\n } finally {\n try {\n responseStream.end();\n } catch {\n // Response stream may already be ended\n }\n }\n };\n});\n","import { vi } from \"vitest\";\nimport {\n createMockResolvedFunction,\n createMockReturnedFunction,\n createMockTool,\n createMockWrappedObject,\n} from \"./utils\";\n\nimport * as original from \"@jaypie/llm\";\n\nexport const LLM = original.LLM;\n\nconst mockOperate = createMockResolvedFunction({\n content: \"_MOCK_OUTPUT_TEXT\",\n history: [\n {\n content: \"_MOCK_USER_INPUT\",\n role: \"user\",\n type: \"message\",\n },\n {\n id: \"_MOCK_MESSAGE_ID\",\n type: \"message\",\n status: \"completed\",\n content: \"_MOCK_CONTENT\",\n role: \"assistant\",\n },\n ],\n model: \"_MOCK_MODEL\",\n output: [\n {\n id: \"_MOCK_MESSAGE_ID\",\n type: \"message\",\n status: \"completed\",\n content: \"_MOCK_CONTENT\",\n role: \"assistant\",\n },\n ],\n provider: \"_MOCK_PROVIDER\",\n reasoning: [],\n responses: [\n {\n id: \"_MOCK_RESPONSE_ID\",\n object: \"response\",\n created_at: Date.now() / 1000,\n status: \"completed\",\n error: null,\n output_text: \"_MOCK_OUTPUT_TEXT\",\n },\n ],\n status: \"completed\",\n usage: [\n {\n input: 100,\n output: 20,\n reasoning: 0,\n total: 120,\n provider: \"_MOCK_PROVIDER\",\n model: \"_MOCK_MODEL\",\n },\n ],\n});\nconst mockSend = createMockResolvedFunction(\"_MOCK_LLM_RESPONSE\");\nexport const Llm = Object.assign(\n vi.fn().mockImplementation((providerName = \"_MOCK_LLM_PROVIDER\") => ({\n _provider: providerName,\n _llm: {\n operate: mockOperate,\n send: mockSend,\n },\n operate: mockOperate,\n send: mockSend,\n })),\n {\n operate: mockOperate,\n send: mockSend,\n },\n);\n\n// Tool implementations - always return mock values\nconst random = createMockTool(\"random\", createMockReturnedFunction(0.5));\n\nconst roll = createMockTool(\"roll\", createMockReturnedFunction(6));\n\nconst time = createMockTool(\"time\", createMockReturnedFunction(`_MOCK_TIME`));\n\nconst weather = createMockTool(\n \"weather\",\n createMockResolvedFunction({\n location: `_MOCK_WEATHER_LOCATION`,\n forecast: [{ conditions: \"good\" }],\n }),\n);\n\nexport const Toolkit = createMockWrappedObject(original.Toolkit, {\n isClass: true,\n});\n\nexport const JaypieToolkit = createMockWrappedObject(original.JaypieToolkit, {\n isClass: true,\n});\n\nexport const LlmMessageRole = createMockWrappedObject(original.LlmMessageRole, {\n isClass: true,\n});\nexport const LlmMessageType = createMockWrappedObject(original.LlmMessageType, {\n isClass: true,\n});\nexport const LlmStreamChunkType = createMockWrappedObject(\n original.LlmStreamChunkType,\n {\n isClass: true,\n },\n);\n\n// Provider mocks\nexport const GeminiProvider = createMockWrappedObject(original.GeminiProvider, {\n isClass: true,\n});\nexport const OpenRouterProvider = createMockWrappedObject(\n original.OpenRouterProvider,\n {\n isClass: true,\n },\n);\n\n// Type guards and utilities - re-export from original (these are pure functions)\nexport const extractReasoning = original.extractReasoning;\nexport const isLlmOperateInput = original.isLlmOperateInput;\nexport const isLlmOperateInputContent = original.isLlmOperateInputContent;\nexport const isLlmOperateInputFile = original.isLlmOperateInputFile;\nexport const isLlmOperateInputImage = original.isLlmOperateInputImage;\n\n// Tool collections\nexport const toolkit = new original.JaypieToolkit([\n random,\n roll,\n time,\n weather,\n]);\n\nexport const tools = toolkit.tools;\n","import { createMockWrappedFunction } from \"./utils\";\nimport {\n FORMAT,\n LEVEL,\n Logger,\n createLogger as originalCreateLogger,\n} from \"@jaypie/logger\";\nimport { mockLogFactory } from \"../mockLog.module.js\";\n\nconst mockLog = mockLogFactory();\n\nexport const createLogger = createMockWrappedFunction(\n originalCreateLogger as any,\n mockLog,\n);\n\nexport { FORMAT, LEVEL, Logger };\n\nexport default mockLog;\n","import { createMockReturnedFunction } from \"./utils\";\n\n// Mongoose mock functions\nexport const connect = createMockReturnedFunction(true);\n\nexport const connectFromSecretEnv = createMockReturnedFunction(true);\n\nexport const disconnect = createMockReturnedFunction(true);\n\nexport { mongoose } from \"@jaypie/mongoose\";\n","import { readFile } from \"fs/promises\";\nimport { dirname, join } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { beforeAll } from \"vitest\";\nimport { TextractDocument } from \"amazon-textract-response-parser\";\nimport type { TextractPageAdaptable } from \"@jaypie/textract\";\nimport { createMockWrappedFunction, createMockWrappedObject } from \"./utils\";\nimport * as original from \"@jaypie/textract\";\n\n// Constants for mock values\nconst TAG = \"TEXTRACT\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nconst MOCK_TEXTRACT_DOCUMENT_PATH = join(__dirname, \"..\", \"mockTextract.json\");\n\n// Setup\nlet mockTextractContents: string;\nbeforeAll(async () => {\n mockTextractContents = await readFile(MOCK_TEXTRACT_DOCUMENT_PATH, \"utf-8\");\n});\n\n/**\n * Mock for MarkdownPage class from @jaypie/textract\n */\nexport const MarkdownPage = createMockWrappedObject(original.MarkdownPage, {\n class: true,\n fallback: () => {\n const mockDocument = new TextractDocument(JSON.parse(mockTextractContents));\n // Double type assertion needed to bridge incompatible types\n return new original.MarkdownPage(\n mockDocument.pageNumber(1) as unknown as TextractPageAdaptable,\n );\n },\n});\n\n/**\n * Mock for textractJsonToMarkdown function from @jaypie/textract\n */\nexport const textractJsonToMarkdown = createMockWrappedFunction<string>(\n original.textractJsonToMarkdown as any,\n `_MOCK_TEXTRACT_JSON_TO_MARKDOWN_[${TAG}]`,\n);\n\n// Export default for convenience\nexport default {\n MarkdownPage,\n textractJsonToMarkdown,\n};\n","// Mock implementations for @jaypie/vocabulary\n\nimport { createMockFunction } from \"./utils\";\nimport { lambdaHandler } from \"./lambda\";\nimport { getMessages } from \"./aws\";\n\n// Status Type - re-export real values (no mocking needed)\nexport const STATUS_VALUES = [\n \"canceled\",\n \"complete\",\n \"error\",\n \"pending\",\n \"processing\",\n \"queued\",\n \"sending\",\n] as const;\n\nexport type Status = (typeof STATUS_VALUES)[number];\n\nexport const StatusType = [...STATUS_VALUES] as (\n | \"canceled\"\n | \"complete\"\n | \"error\"\n | \"pending\"\n | \"processing\"\n | \"queued\"\n | \"sending\"\n)[];\n\nexport function isStatus(value: unknown): value is Status {\n return (\n typeof value === \"string\" &&\n STATUS_VALUES.includes(value as (typeof STATUS_VALUES)[number])\n );\n}\n\n// Vocabulary types\ntype ServiceHandlerFunction = (\n input?: Record<string, unknown> | string,\n) => Promise<unknown>;\n\ninterface ServiceHandlerFunctionWithMetadata extends ServiceHandlerFunction {\n alias?: string;\n description?: string;\n input?: Record<string, InputFieldDefinition>;\n}\n\ninterface InputFieldDefinition {\n default?: unknown;\n description?: string;\n required?: boolean;\n type: unknown;\n}\n\ninterface LambdaServiceHandlerOptions {\n chaos?: string;\n name?: string;\n secrets?: string[];\n setup?: ((...args: unknown[]) => void | Promise<void>)[];\n teardown?: ((...args: unknown[]) => void | Promise<void>)[];\n throw?: boolean;\n unavailable?: boolean;\n validate?: ((...args: unknown[]) => unknown | Promise<unknown>)[];\n}\n\ninterface LambdaServiceHandlerConfig extends LambdaServiceHandlerOptions {\n handler: ServiceHandlerFunction;\n}\n\n// Handler function type - must match what lambdaHandler returns\ntype HandlerFunction = (...args: unknown[]) => unknown;\n\n/**\n * Mock implementation of lambdaServiceHandler\n * Mirrors the real implementation: wraps a service handler for Lambda with getMessages processing\n */\nexport const lambdaServiceHandler = createMockFunction<\n (\n handlerOrConfig: ServiceHandlerFunction | LambdaServiceHandlerConfig,\n options?: LambdaServiceHandlerOptions,\n ) => HandlerFunction\n>((handlerOrConfig, options = {}) => {\n // Normalize arguments\n let handler: ServiceHandlerFunction;\n let opts: LambdaServiceHandlerOptions;\n\n if (typeof handlerOrConfig === \"function\") {\n handler = handlerOrConfig;\n opts = options;\n } else {\n const { handler: configHandler, ...configOpts } = handlerOrConfig;\n handler = configHandler;\n opts = configOpts;\n }\n\n // Use handler.alias as the name for logging (can be overridden via options.name)\n const name = opts.name ?? (handler as { alias?: string }).alias;\n\n // Create the inner Lambda handler logic\n const innerHandler = async (event: unknown): Promise<unknown> => {\n // Extract messages from SQS/SNS event wrapper\n const messages = getMessages(event);\n\n // Process each message through the service handler\n const results: unknown[] = [];\n for (const message of messages) {\n const result = await handler(message as Record<string, unknown>);\n results.push(result);\n }\n\n // Return single result if only one message, otherwise return array\n if (results.length === 1) {\n return results[0];\n }\n return results;\n };\n\n // Wrap with lambdaHandler for lifecycle management\n return lambdaHandler(innerHandler, {\n chaos: opts.chaos,\n name,\n secrets: opts.secrets,\n setup: opts.setup,\n teardown: opts.teardown,\n throw: opts.throw,\n unavailable: opts.unavailable,\n validate: opts.validate,\n });\n});\n\n// LLM adapter types\ninterface LlmTool {\n call: (args?: Record<string, unknown>) => Promise<unknown> | unknown;\n description: string;\n message?:\n | string\n | ((\n args?: Record<string, unknown>,\n context?: { name: string },\n ) => Promise<string> | string);\n name: string;\n parameters: Record<string, unknown>;\n type: \"function\" | string;\n}\n\ninterface CreateLlmToolConfig {\n description?: string;\n exclude?: string[];\n handler: ServiceHandlerFunctionWithMetadata;\n message?: string | ((args?: Record<string, unknown>) => string);\n name?: string;\n}\n\ninterface CreateLlmToolResult {\n tool: LlmTool;\n}\n\n/**\n * Mock implementation of createLlmTool\n * Creates an LLM tool from a vocabulary service handler\n */\nexport const createLlmTool = createMockFunction<\n (config: CreateLlmToolConfig) => CreateLlmToolResult\n>((config) => {\n const { description, handler, message, name } = config;\n\n const toolName = name ?? handler.alias ?? \"tool\";\n const toolDescription = description ?? handler.description ?? \"\";\n\n const tool: LlmTool = {\n call: async (args?: Record<string, unknown>): Promise<unknown> => {\n return handler(args);\n },\n description: toolDescription,\n name: toolName,\n parameters: {\n properties: {},\n required: [],\n type: \"object\",\n },\n type: \"function\",\n };\n\n if (message !== undefined) {\n tool.message = message;\n }\n\n return { tool };\n});\n\n/**\n * Mock implementation of inputToJsonSchema\n * Converts vocabulary input definitions to JSON Schema\n */\nexport const inputToJsonSchema = createMockFunction<\n (\n input?: Record<string, InputFieldDefinition>,\n options?: { exclude?: string[] },\n ) => Record<string, unknown>\n>(() => ({\n properties: {},\n required: [],\n type: \"object\",\n}));\n\n// MCP adapter types\ninterface McpToolResponse {\n content: Array<{ text: string; type: \"text\" }>;\n}\n\ninterface McpServer {\n tool: (\n name: string,\n description: string,\n schema: Record<string, unknown>,\n handler: (args: Record<string, unknown>) => Promise<McpToolResponse>,\n ) => void;\n}\n\ninterface RegisterMcpToolConfig {\n description?: string;\n handler: ServiceHandlerFunctionWithMetadata;\n name?: string;\n server: McpServer;\n}\n\ninterface RegisterMcpToolResult {\n name: string;\n}\n\n/**\n * Mock implementation of registerMcpTool\n * Registers a vocabulary service handler as an MCP tool\n */\nexport const registerMcpTool = createMockFunction<\n (config: RegisterMcpToolConfig) => RegisterMcpToolResult\n>((config) => {\n const { description, handler, name, server } = config;\n\n const toolName = name ?? handler.alias ?? \"tool\";\n const toolDescription = description ?? handler.description ?? \"\";\n\n server.tool(\n toolName,\n toolDescription,\n {},\n async (args: Record<string, unknown>): Promise<McpToolResponse> => {\n const result = await handler(args);\n return {\n content: [\n {\n text: result === undefined || result === null ? \"\" : String(result),\n type: \"text\" as const,\n },\n ],\n };\n },\n );\n\n return { name: toolName };\n});\n","// Import all mocks\nimport * as aws from \"./aws\";\nimport * as core from \"./core\";\nimport * as datadog from \"./datadog\";\nimport * as dynamodb from \"./dynamodb\";\nimport * as express from \"./express\";\nimport * as kit from \"./kit\";\nimport * as lambda from \"./lambda\";\nimport * as llm from \"./llm\";\nimport * as logger from \"./logger\";\nimport * as mongoose from \"./mongoose\";\nimport * as textract from \"./textract\";\nimport * as vocabulary from \"./vocabulary\";\n\n// Re-export all mocks\nexport * from \"./aws\";\nexport * from \"./core\";\nexport * from \"./datadog\";\nexport * from \"./dynamodb\";\nexport * from \"./express\";\nexport * from \"./kit\";\nexport * from \"./lambda\";\nexport * from \"./llm\";\nexport * from \"./logger\";\nexport * from \"./mongoose\";\nexport * from \"./textract\";\nexport * from \"./vocabulary\";\n\n// Export default object with all mocks\nconst mock: Record<string, any> = {\n // AWS module\n ...aws,\n\n // Core module\n ...core,\n\n // Datadog module\n ...datadog,\n\n // DynamoDB module\n ...dynamodb,\n\n // Express module\n ...express,\n\n // Kit module\n ...kit,\n\n // Lambda module\n ...lambda,\n\n // LLM module\n ...llm,\n\n // Logger module\n ...logger,\n\n // Mongoose module\n ...mongoose,\n\n // Textract module\n ...textract,\n\n // Vocabulary module\n ...vocabulary,\n};\n\nexport default mock;\n"],"names":["TAG","kit","HTTP","original","BadRequestError","UnhandledError","originalCreateLogger","__filename","__dirname","textract"],"mappings":"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"}
|
|
@@ -1,32 +1,40 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as original from "@jaypie/dynamodb";
|
|
2
|
+
import type { BaseQueryOptions, DynamoClientConfig, ExportResult, ParentReference, QueryParams, QueryResult, SeedOptions, SeedResult, StorableEntity } from "@jaypie/dynamodb";
|
|
3
|
+
import type { IndexableEntity } from "@jaypie/vocabulary";
|
|
2
4
|
export declare const APEX = "@";
|
|
3
5
|
export declare const ARCHIVED_SUFFIX = "#archived";
|
|
6
|
+
export declare const DEFAULT_INDEXES: import("@jaypie/fabric").IndexDefinition[];
|
|
4
7
|
export declare const DELETED_SUFFIX = "#deleted";
|
|
5
8
|
export declare const INDEX_ALIAS = "indexAlias";
|
|
6
9
|
export declare const INDEX_CLASS = "indexClass";
|
|
7
|
-
export declare const
|
|
10
|
+
export declare const INDEX_SCOPE = "indexScope";
|
|
8
11
|
export declare const INDEX_TYPE = "indexType";
|
|
9
12
|
export declare const INDEX_XID = "indexXid";
|
|
10
13
|
export declare const SEPARATOR = "#";
|
|
11
|
-
export declare const
|
|
14
|
+
export declare const buildCompositeKey: ((entity: Record<string, unknown> & {
|
|
15
|
+
model: string;
|
|
16
|
+
}, fields: string[], suffix?: string) => string) & {
|
|
17
|
+
mock: any;
|
|
18
|
+
};
|
|
19
|
+
export declare const buildIndexAlias: ((scope: string, model: string, alias: string) => string) & {
|
|
12
20
|
mock: any;
|
|
13
21
|
};
|
|
14
|
-
export declare const buildIndexClass: ((
|
|
22
|
+
export declare const buildIndexClass: ((scope: string, model: string, recordClass: string) => string) & {
|
|
15
23
|
mock: any;
|
|
16
24
|
};
|
|
17
|
-
export declare const
|
|
25
|
+
export declare const buildIndexScope: ((scope: string, model: string) => string) & {
|
|
18
26
|
mock: any;
|
|
19
27
|
};
|
|
20
|
-
export declare const buildIndexType: ((
|
|
28
|
+
export declare const buildIndexType: ((scope: string, model: string, type: string) => string) & {
|
|
21
29
|
mock: any;
|
|
22
30
|
};
|
|
23
|
-
export declare const buildIndexXid: ((
|
|
31
|
+
export declare const buildIndexXid: ((scope: string, model: string, xid: string) => string) & {
|
|
24
32
|
mock: any;
|
|
25
33
|
};
|
|
26
|
-
export declare const
|
|
34
|
+
export declare const calculateScope: ((parent?: ParentReference) => string) & {
|
|
27
35
|
mock: any;
|
|
28
36
|
};
|
|
29
|
-
export declare const indexEntity: (<T extends
|
|
37
|
+
export declare const indexEntity: (<T extends StorableEntity>(entity: T, suffix?: string) => T) & {
|
|
30
38
|
mock: any;
|
|
31
39
|
};
|
|
32
40
|
export declare const initClient: ((config: DynamoClientConfig) => void) & {
|
|
@@ -47,17 +55,17 @@ export declare const resetClient: ((...args: any[]) => any) & {
|
|
|
47
55
|
export declare const getEntity: ((params: {
|
|
48
56
|
id: string;
|
|
49
57
|
model: string;
|
|
50
|
-
}) => Promise<
|
|
58
|
+
}) => Promise<StorableEntity | null>) & {
|
|
51
59
|
mock: any;
|
|
52
60
|
};
|
|
53
61
|
export declare const putEntity: ((params: {
|
|
54
|
-
entity:
|
|
55
|
-
}) => Promise<
|
|
62
|
+
entity: StorableEntity;
|
|
63
|
+
}) => Promise<StorableEntity>) & {
|
|
56
64
|
mock: any;
|
|
57
65
|
};
|
|
58
66
|
export declare const updateEntity: ((params: {
|
|
59
|
-
entity:
|
|
60
|
-
}) => Promise<
|
|
67
|
+
entity: StorableEntity;
|
|
68
|
+
}) => Promise<StorableEntity>) & {
|
|
61
69
|
mock: any;
|
|
62
70
|
};
|
|
63
71
|
export declare const deleteEntity: ((params: {
|
|
@@ -78,15 +86,15 @@ export declare const destroyEntity: ((params: {
|
|
|
78
86
|
}) => Promise<boolean>) & {
|
|
79
87
|
mock: any;
|
|
80
88
|
};
|
|
81
|
-
export declare const
|
|
89
|
+
export declare const queryByScope: ((params: {
|
|
82
90
|
model: string;
|
|
83
|
-
|
|
91
|
+
scope: string;
|
|
84
92
|
archived?: boolean;
|
|
85
93
|
ascending?: boolean;
|
|
86
94
|
deleted?: boolean;
|
|
87
95
|
limit?: number;
|
|
88
96
|
startKey?: Record<string, unknown>;
|
|
89
|
-
}) => Promise<QueryResult<
|
|
97
|
+
}) => Promise<QueryResult<StorableEntity>>) & {
|
|
90
98
|
mock: any;
|
|
91
99
|
};
|
|
92
100
|
export declare const queryByAlias: ((params: {
|
|
@@ -94,8 +102,8 @@ export declare const queryByAlias: ((params: {
|
|
|
94
102
|
archived?: boolean;
|
|
95
103
|
deleted?: boolean;
|
|
96
104
|
model: string;
|
|
97
|
-
|
|
98
|
-
}) => Promise<
|
|
105
|
+
scope: string;
|
|
106
|
+
}) => Promise<StorableEntity | null>) & {
|
|
99
107
|
mock: any;
|
|
100
108
|
};
|
|
101
109
|
export declare const queryByClass: ((params: {
|
|
@@ -104,10 +112,10 @@ export declare const queryByClass: ((params: {
|
|
|
104
112
|
deleted?: boolean;
|
|
105
113
|
limit?: number;
|
|
106
114
|
model: string;
|
|
107
|
-
|
|
115
|
+
scope: string;
|
|
108
116
|
recordClass: string;
|
|
109
117
|
startKey?: Record<string, unknown>;
|
|
110
|
-
}) => Promise<QueryResult<
|
|
118
|
+
}) => Promise<QueryResult<StorableEntity>>) & {
|
|
111
119
|
mock: any;
|
|
112
120
|
};
|
|
113
121
|
export declare const queryByType: ((params: {
|
|
@@ -116,31 +124,44 @@ export declare const queryByType: ((params: {
|
|
|
116
124
|
deleted?: boolean;
|
|
117
125
|
limit?: number;
|
|
118
126
|
model: string;
|
|
119
|
-
|
|
127
|
+
scope: string;
|
|
120
128
|
startKey?: Record<string, unknown>;
|
|
121
129
|
type: string;
|
|
122
|
-
}) => Promise<QueryResult<
|
|
130
|
+
}) => Promise<QueryResult<StorableEntity>>) & {
|
|
123
131
|
mock: any;
|
|
124
132
|
};
|
|
125
133
|
export declare const queryByXid: ((params: {
|
|
126
134
|
archived?: boolean;
|
|
127
135
|
deleted?: boolean;
|
|
128
136
|
model: string;
|
|
129
|
-
|
|
137
|
+
scope: string;
|
|
130
138
|
xid: string;
|
|
131
|
-
}) => Promise<
|
|
139
|
+
}) => Promise<StorableEntity | null>) & {
|
|
140
|
+
mock: any;
|
|
141
|
+
};
|
|
142
|
+
export declare const query: (<T extends StorableEntity = original.StorableEntity>(params: {
|
|
143
|
+
archived?: boolean;
|
|
144
|
+
ascending?: boolean;
|
|
145
|
+
deleted?: boolean;
|
|
146
|
+
filter?: Partial<T>;
|
|
147
|
+
limit?: number;
|
|
148
|
+
model: string;
|
|
149
|
+
scope?: string;
|
|
150
|
+
startKey?: Record<string, unknown>;
|
|
151
|
+
}) => Promise<QueryResult<T>>) & {
|
|
132
152
|
mock: any;
|
|
133
153
|
};
|
|
134
|
-
export declare const seedEntityIfNotExists: (<T extends Partial<
|
|
154
|
+
export declare const seedEntityIfNotExists: (<T extends Partial<StorableEntity>>(entity: T) => Promise<boolean>) & {
|
|
135
155
|
mock: any;
|
|
136
156
|
};
|
|
137
|
-
export declare const seedEntities: (<T extends Partial<
|
|
157
|
+
export declare const seedEntities: (<T extends Partial<StorableEntity>>(entities: T[], options?: SeedOptions) => Promise<SeedResult>) & {
|
|
138
158
|
mock: any;
|
|
139
159
|
};
|
|
140
|
-
export declare const exportEntities: (<T extends
|
|
160
|
+
export declare const exportEntities: (<T extends StorableEntity>(model: string, scope: string, limit?: number) => Promise<ExportResult<T>>) & {
|
|
141
161
|
mock: any;
|
|
142
162
|
};
|
|
143
|
-
export declare const exportEntitiesToJson: ((model: string,
|
|
163
|
+
export declare const exportEntitiesToJson: ((model: string, scope: string, pretty?: boolean) => Promise<string>) & {
|
|
144
164
|
mock: any;
|
|
145
165
|
};
|
|
146
|
-
export type { BaseQueryOptions, ExportResult,
|
|
166
|
+
export type { BaseQueryOptions, ExportResult, ParentReference, QueryParams, QueryResult, SeedOptions, SeedResult, StorableEntity, };
|
|
167
|
+
export type { IndexableEntity };
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import * as original from "@jaypie/express";
|
|
2
|
+
export declare const createLambdaHandler: import("vitest").Mock<(...args: any[]) => any>;
|
|
3
|
+
export declare const createLambdaStreamHandler: import("vitest").Mock<(...args: any[]) => any>;
|
|
4
|
+
export declare const getCurrentInvoke: import("vitest").Mock<(...args: any[]) => any>;
|
|
5
|
+
export declare const LambdaRequest: typeof original.LambdaRequest;
|
|
6
|
+
export declare const LambdaResponseBuffered: typeof original.LambdaResponseBuffered;
|
|
7
|
+
export declare const LambdaResponseStreaming: typeof original.LambdaResponseStreaming;
|
|
1
8
|
export declare const EXPRESS: {
|
|
2
9
|
readonly PATH: {
|
|
3
10
|
readonly ANY: "*";
|
|
@@ -15,7 +22,6 @@ export declare const notFoundRoute: import("vitest").Mock<(...args: any[]) => an
|
|
|
15
22
|
export declare const notImplementedRoute: import("vitest").Mock<(...args: any[]) => any>;
|
|
16
23
|
export declare const expressHttpCodeHandler: import("vitest").Mock<(...args: any[]) => any>;
|
|
17
24
|
export declare const cors: import("vitest").Mock<(...args: any[]) => any>;
|
|
18
|
-
export declare const createServer: import("vitest").Mock<(...args: any[]) => any>;
|
|
19
25
|
export declare const getCurrentInvokeUuid: import("vitest").Mock<(...args: any[]) => any>;
|
|
20
26
|
export interface ExpressHandlerFunction {
|
|
21
27
|
(req: any, res: any, ...extra: any[]): Promise<any> | any;
|