@jaypie/testkit 1.2.2 → 1.2.4

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.
@@ -1,4 +1,10 @@
1
1
  export declare const getMessages: import("vitest").Mock<(...args: any[]) => any>;
2
+ export declare const getS3FileBuffer: (({ bucket, key }: {
3
+ bucket: string;
4
+ key: string;
5
+ }) => Promise<Buffer>) & {
6
+ mock: any;
7
+ };
2
8
  export declare const getSecret: import("vitest").Mock<(...args: any[]) => any>;
3
9
  export declare const sendMessage: import("vitest").Mock<(...args: any[]) => any>;
4
10
  export declare const getEnvSecret: ((key: string) => Promise<string>) & {
@@ -8,6 +8,12 @@ export { FORMAT, LEVEL, Logger, log } from '@jaypie/logger';
8
8
  export { mongoose } from '@jaypie/mongoose';
9
9
 
10
10
  declare const getMessages: vitest.Mock<(...args: any[]) => any>;
11
+ declare const getS3FileBuffer: (({ bucket, key }: {
12
+ bucket: string;
13
+ key: string;
14
+ }) => Promise<Buffer>) & {
15
+ mock: any;
16
+ };
11
17
  declare const getSecret: vitest.Mock<(...args: any[]) => any>;
12
18
  declare const sendMessage: vitest.Mock<(...args: any[]) => any>;
13
19
  declare const getEnvSecret: ((key: string) => Promise<string>) & {
@@ -354,7 +360,7 @@ declare const isLocalEnv: vitest.Mock<(...args: any[]) => any>;
354
360
  declare const isNodeTestEnv: vitest.Mock<(...args: any[]) => any>;
355
361
  declare const isProductionEnv: vitest.Mock<(...args: any[]) => any>;
356
362
 
357
- type HandlerFunction = (...args: unknown[]) => unknown;
363
+ type HandlerFunction$1 = (...args: unknown[]) => unknown;
358
364
  type LifecycleFunction = (...args: unknown[]) => unknown | Promise<unknown>;
359
365
  interface LambdaOptions {
360
366
  name?: string;
@@ -365,7 +371,7 @@ interface LambdaOptions {
365
371
  validate?: LifecycleFunction | LifecycleFunction[];
366
372
  [key: string]: unknown;
367
373
  }
368
- declare const lambdaHandler: ((handler: HandlerFunction, props?: LambdaOptions) => HandlerFunction) & {
374
+ declare const lambdaHandler: ((handler: HandlerFunction$1, props?: LambdaOptions) => HandlerFunction$1) & {
369
375
  mock: any;
370
376
  };
371
377
  type StreamHandlerFunction = (event: unknown, responseStream: {
@@ -388,6 +394,11 @@ declare const LlmMessageType: typeof original.LlmMessageType;
388
394
  declare const LlmStreamChunkType: typeof original.LlmStreamChunkType;
389
395
  declare const GeminiProvider: typeof original.GeminiProvider;
390
396
  declare const OpenRouterProvider: typeof original.OpenRouterProvider;
397
+ declare const extractReasoning: typeof original.extractReasoning;
398
+ declare const isLlmOperateInput: typeof original.isLlmOperateInput;
399
+ declare const isLlmOperateInputContent: typeof original.isLlmOperateInputContent;
400
+ declare const isLlmOperateInputFile: typeof original.isLlmOperateInputFile;
401
+ declare const isLlmOperateInputImage: typeof original.isLlmOperateInputImage;
391
402
  declare const toolkit: original.JaypieToolkit;
392
403
  declare const tools: Omit<original.LlmTool, "call">[];
393
404
 
@@ -472,7 +483,30 @@ declare const MarkdownPage: any;
472
483
  */
473
484
  declare const textractJsonToMarkdown: vitest.Mock<(...args: any[]) => any>;
474
485
 
486
+ type ServiceHandlerFunction = (input?: Record<string, unknown> | string) => Promise<unknown>;
487
+ interface LambdaServiceHandlerOptions {
488
+ chaos?: string;
489
+ name?: string;
490
+ secrets?: string[];
491
+ setup?: ((...args: unknown[]) => void | Promise<void>)[];
492
+ teardown?: ((...args: unknown[]) => void | Promise<void>)[];
493
+ throw?: boolean;
494
+ unavailable?: boolean;
495
+ validate?: ((...args: unknown[]) => unknown | Promise<unknown>)[];
496
+ }
497
+ interface LambdaServiceHandlerConfig extends LambdaServiceHandlerOptions {
498
+ handler: ServiceHandlerFunction;
499
+ }
500
+ type HandlerFunction = (...args: unknown[]) => unknown;
501
+ /**
502
+ * Mock implementation of lambdaServiceHandler
503
+ * Mirrors the real implementation: wraps a service handler for Lambda with getMessages processing
504
+ */
505
+ declare const lambdaServiceHandler: ((handlerOrConfig: ServiceHandlerFunction | LambdaServiceHandlerConfig, options?: LambdaServiceHandlerOptions) => HandlerFunction) & {
506
+ mock: any;
507
+ };
508
+
475
509
  declare const mock: Record<string, any>;
476
510
 
477
- export { BadGatewayError, BadRequestError, ConfigurationError, CorsError, DATADOG, EXPRESS, ForbiddenError, GatewayTimeoutError, GeminiProvider, GoneError, HTTP, IllogicalError, InternalError, JAYPIE, JaypieError, JaypieStream, JaypieToolkit, LLM, Llm, LlmMessageRole, LlmMessageType, LlmStreamChunkType, MarkdownPage, MethodNotAllowedError, MultiError, NotFoundError, NotImplementedError, OpenRouterProvider, PROJECT, ProjectError, ProjectMultiError, RejectedError, TeapotError, TooManyRequestsError, Toolkit, UnauthorizedError, UnavailableError, UnhandledError, UnreachableCodeError, badRequestRoute, cloneDeep, connect, connectFromSecretEnv, cors, createExpressStream, createJaypieStream, createLambdaStream, createLogger, mock as default, disconnect, echoRoute, envBoolean, envsKey, errorFromStatusCode, expressHandler, expressHttpCodeHandler, expressStreamHandler, forbiddenRoute, force, formatError, formatSSE, getEnvSecret, getHeaderFrom, getMessages, getObjectKeyCaseInsensitive, getSecret, getSingletonMessage, getTextractJob, goneRoute, hasDatadogEnv, isClass, isJaypieError, isLocalEnv, isNodeTestEnv, isProductionEnv, jaypieErrorFromStatus, jaypieHandler, lambdaHandler, lambdaStreamHandler, loadEnvSecrets, methodNotAllowedRoute, noContentRoute, notFoundRoute, notImplementedRoute, placeholders, resolveValue, safeParseFloat, sendBatchMessages, sendMessage, sendTextractJob, sleep, streamToSSE, submitDistribution, submitMetric, submitMetricSet, textractJsonToMarkdown, toolkit, tools, uuid };
511
+ export { BadGatewayError, BadRequestError, ConfigurationError, CorsError, DATADOG, EXPRESS, ForbiddenError, GatewayTimeoutError, GeminiProvider, GoneError, HTTP, IllogicalError, InternalError, JAYPIE, JaypieError, JaypieStream, JaypieToolkit, LLM, Llm, LlmMessageRole, LlmMessageType, LlmStreamChunkType, MarkdownPage, MethodNotAllowedError, MultiError, NotFoundError, NotImplementedError, OpenRouterProvider, PROJECT, ProjectError, ProjectMultiError, RejectedError, TeapotError, TooManyRequestsError, Toolkit, UnauthorizedError, UnavailableError, UnhandledError, UnreachableCodeError, badRequestRoute, cloneDeep, connect, connectFromSecretEnv, cors, createExpressStream, createJaypieStream, createLambdaStream, createLogger, mock as default, disconnect, echoRoute, envBoolean, envsKey, errorFromStatusCode, expressHandler, expressHttpCodeHandler, expressStreamHandler, extractReasoning, forbiddenRoute, force, formatError, formatSSE, getEnvSecret, getHeaderFrom, getMessages, getObjectKeyCaseInsensitive, getS3FileBuffer, getSecret, getSingletonMessage, getTextractJob, goneRoute, hasDatadogEnv, isClass, isJaypieError, isLlmOperateInput, isLlmOperateInputContent, isLlmOperateInputFile, isLlmOperateInputImage, isLocalEnv, isNodeTestEnv, isProductionEnv, jaypieErrorFromStatus, jaypieHandler, lambdaHandler, lambdaServiceHandler, lambdaStreamHandler, loadEnvSecrets, methodNotAllowedRoute, noContentRoute, notFoundRoute, notImplementedRoute, placeholders, resolveValue, safeParseFloat, sendBatchMessages, sendMessage, sendTextractJob, sleep, streamToSSE, submitDistribution, submitMetric, submitMetricSet, textractJsonToMarkdown, toolkit, tools, uuid };
478
512
  export type { ExpressHandlerFunction, ExpressHandlerOptions, ExpressStreamHandlerFunction, ExpressStreamHandlerOptions, LambdaOptions };
@@ -213,6 +213,7 @@ function createMockTool(nameOrCallOrOptions, callOrOptions) {
213
213
  // Constants for mock values
214
214
  const TAG$3 = "AWS";
215
215
  const getMessages = createMockWrappedFunction(original.getMessages, []);
216
+ const getS3FileBuffer = createMockFunction(async ({ bucket, key }) => Buffer.from(`_MOCK_S3_FILE_[${bucket}/${key}]`));
216
217
  const getSecret = createMockResolvedFunction("mock-secret-value");
217
218
  const sendMessage = createMockResolvedFunction({
218
219
  MessageId: "mock-message-id",
@@ -295,6 +296,7 @@ var aws = /*#__PURE__*/Object.freeze({
295
296
  formatSSE: formatSSE,
296
297
  getEnvSecret: getEnvSecret,
297
298
  getMessages: getMessages,
299
+ getS3FileBuffer: getS3FileBuffer,
298
300
  getSecret: getSecret,
299
301
  getSingletonMessage: getSingletonMessage,
300
302
  getTextractJob: getTextractJob,
@@ -858,6 +860,7 @@ var lambda = /*#__PURE__*/Object.freeze({
858
860
 
859
861
  const LLM = original$3.LLM;
860
862
  const mockOperate = createMockResolvedFunction({
863
+ content: "_MOCK_OUTPUT_TEXT",
861
864
  history: [
862
865
  {
863
866
  content: "_MOCK_USER_INPUT",
@@ -883,6 +886,7 @@ const mockOperate = createMockResolvedFunction({
883
886
  },
884
887
  ],
885
888
  provider: "_MOCK_PROVIDER",
889
+ reasoning: [],
886
890
  responses: [
887
891
  {
888
892
  id: "_MOCK_RESPONSE_ID",
@@ -904,7 +908,6 @@ const mockOperate = createMockResolvedFunction({
904
908
  model: "_MOCK_MODEL",
905
909
  },
906
910
  ],
907
- content: "_MOCK_OUTPUT_TEXT",
908
911
  });
909
912
  const mockSend = createMockResolvedFunction("_MOCK_LLM_RESPONSE");
910
913
  const Llm = Object.assign(vi.fn().mockImplementation((providerName = "_MOCK_LLM_PROVIDER") => ({
@@ -949,6 +952,12 @@ const GeminiProvider = createMockWrappedObject(original$3.GeminiProvider, {
949
952
  const OpenRouterProvider = createMockWrappedObject(original$3.OpenRouterProvider, {
950
953
  isClass: true,
951
954
  });
955
+ // Type guards and utilities - re-export from original (these are pure functions)
956
+ const extractReasoning = original$3.extractReasoning;
957
+ const isLlmOperateInput = original$3.isLlmOperateInput;
958
+ const isLlmOperateInputContent = original$3.isLlmOperateInputContent;
959
+ const isLlmOperateInputFile = original$3.isLlmOperateInputFile;
960
+ const isLlmOperateInputImage = original$3.isLlmOperateInputImage;
952
961
  // Tool collections
953
962
  const toolkit = new original$3.JaypieToolkit([
954
963
  random,
@@ -969,6 +978,11 @@ var llm = /*#__PURE__*/Object.freeze({
969
978
  LlmStreamChunkType: LlmStreamChunkType,
970
979
  OpenRouterProvider: OpenRouterProvider,
971
980
  Toolkit: Toolkit,
981
+ extractReasoning: extractReasoning,
982
+ isLlmOperateInput: isLlmOperateInput,
983
+ isLlmOperateInputContent: isLlmOperateInputContent,
984
+ isLlmOperateInputFile: isLlmOperateInputFile,
985
+ isLlmOperateInputImage: isLlmOperateInputImage,
972
986
  toolkit: toolkit,
973
987
  tools: tools
974
988
  });
@@ -1036,6 +1050,60 @@ var textract$1 = /*#__PURE__*/Object.freeze({
1036
1050
  textractJsonToMarkdown: textractJsonToMarkdown
1037
1051
  });
1038
1052
 
1053
+ // Mock implementations for @jaypie/vocabulary
1054
+ /**
1055
+ * Mock implementation of lambdaServiceHandler
1056
+ * Mirrors the real implementation: wraps a service handler for Lambda with getMessages processing
1057
+ */
1058
+ const lambdaServiceHandler = createMockFunction((handlerOrConfig, options = {}) => {
1059
+ // Normalize arguments
1060
+ let handler;
1061
+ let opts;
1062
+ if (typeof handlerOrConfig === "function") {
1063
+ handler = handlerOrConfig;
1064
+ opts = options;
1065
+ }
1066
+ else {
1067
+ const { handler: configHandler, ...configOpts } = handlerOrConfig;
1068
+ handler = configHandler;
1069
+ opts = configOpts;
1070
+ }
1071
+ // Use handler.alias as the name for logging (can be overridden via options.name)
1072
+ const name = opts.name ?? handler.alias;
1073
+ // Create the inner Lambda handler logic
1074
+ const innerHandler = async (event) => {
1075
+ // Extract messages from SQS/SNS event wrapper
1076
+ const messages = getMessages(event);
1077
+ // Process each message through the service handler
1078
+ const results = [];
1079
+ for (const message of messages) {
1080
+ const result = await handler(message);
1081
+ results.push(result);
1082
+ }
1083
+ // Return single result if only one message, otherwise return array
1084
+ if (results.length === 1) {
1085
+ return results[0];
1086
+ }
1087
+ return results;
1088
+ };
1089
+ // Wrap with lambdaHandler for lifecycle management
1090
+ return lambdaHandler(innerHandler, {
1091
+ chaos: opts.chaos,
1092
+ name,
1093
+ secrets: opts.secrets,
1094
+ setup: opts.setup,
1095
+ teardown: opts.teardown,
1096
+ throw: opts.throw,
1097
+ unavailable: opts.unavailable,
1098
+ validate: opts.validate,
1099
+ });
1100
+ });
1101
+
1102
+ var vocabulary = /*#__PURE__*/Object.freeze({
1103
+ __proto__: null,
1104
+ lambdaServiceHandler: lambdaServiceHandler
1105
+ });
1106
+
1039
1107
  // Import all mocks
1040
1108
  // Export default object with all mocks
1041
1109
  const mock = {
@@ -1057,7 +1125,9 @@ const mock = {
1057
1125
  ...mongoose,
1058
1126
  // Textract module
1059
1127
  ...textract$1,
1128
+ // Vocabulary module
1129
+ ...vocabulary,
1060
1130
  };
1061
1131
 
1062
- export { BadGatewayError, BadRequestError, ConfigurationError, CorsError, DATADOG, EXPRESS, ForbiddenError, GatewayTimeoutError, GeminiProvider, GoneError, HTTP$1 as HTTP, IllogicalError, InternalError, JAYPIE, JaypieError, JaypieStream, JaypieToolkit, LLM, Llm, LlmMessageRole, LlmMessageType, LlmStreamChunkType, MarkdownPage, MethodNotAllowedError, MultiError, NotFoundError, NotImplementedError, OpenRouterProvider, PROJECT, ProjectError, ProjectMultiError, RejectedError, TeapotError, TooManyRequestsError, Toolkit, UnauthorizedError, UnavailableError, UnhandledError, UnreachableCodeError, badRequestRoute, cloneDeep, connect, connectFromSecretEnv, cors, createExpressStream, createJaypieStream, createLambdaStream, createLogger, mock as default, disconnect, echoRoute, envBoolean, envsKey, errorFromStatusCode, expressHandler, expressHttpCodeHandler, expressStreamHandler, forbiddenRoute, force, formatError, formatSSE, getEnvSecret, getHeaderFrom, getMessages, getObjectKeyCaseInsensitive, getSecret, getSingletonMessage, getTextractJob, goneRoute, hasDatadogEnv, isClass, isJaypieError, isLocalEnv, isNodeTestEnv, isProductionEnv, jaypieErrorFromStatus, jaypieHandler, lambdaHandler, lambdaStreamHandler, loadEnvSecrets, methodNotAllowedRoute, noContentRoute, notFoundRoute, notImplementedRoute, placeholders, resolveValue, safeParseFloat, sendBatchMessages, sendMessage, sendTextractJob, sleep, streamToSSE, submitDistribution, submitMetric, submitMetricSet, textractJsonToMarkdown, toolkit, tools, uuid };
1132
+ export { BadGatewayError, BadRequestError, ConfigurationError, CorsError, DATADOG, EXPRESS, ForbiddenError, GatewayTimeoutError, GeminiProvider, GoneError, HTTP$1 as HTTP, IllogicalError, InternalError, JAYPIE, JaypieError, JaypieStream, JaypieToolkit, LLM, Llm, LlmMessageRole, LlmMessageType, LlmStreamChunkType, MarkdownPage, MethodNotAllowedError, MultiError, NotFoundError, NotImplementedError, OpenRouterProvider, PROJECT, ProjectError, ProjectMultiError, RejectedError, TeapotError, TooManyRequestsError, Toolkit, UnauthorizedError, UnavailableError, UnhandledError, UnreachableCodeError, badRequestRoute, cloneDeep, connect, connectFromSecretEnv, cors, createExpressStream, createJaypieStream, createLambdaStream, createLogger, mock as default, disconnect, echoRoute, envBoolean, envsKey, errorFromStatusCode, expressHandler, expressHttpCodeHandler, expressStreamHandler, extractReasoning, forbiddenRoute, force, formatError, formatSSE, getEnvSecret, getHeaderFrom, getMessages, getObjectKeyCaseInsensitive, getS3FileBuffer, getSecret, getSingletonMessage, getTextractJob, goneRoute, hasDatadogEnv, isClass, isJaypieError, isLlmOperateInput, isLlmOperateInputContent, isLlmOperateInputFile, isLlmOperateInputImage, isLocalEnv, isNodeTestEnv, isProductionEnv, jaypieErrorFromStatus, jaypieHandler, lambdaHandler, lambdaServiceHandler, lambdaStreamHandler, loadEnvSecrets, methodNotAllowedRoute, noContentRoute, notFoundRoute, notImplementedRoute, placeholders, resolveValue, safeParseFloat, sendBatchMessages, sendMessage, sendTextractJob, sleep, streamToSSE, submitDistribution, submitMetric, submitMetricSet, textractJsonToMarkdown, toolkit, tools, uuid };
1063
1133
  //# sourceMappingURL=index.js.map
@@ -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/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/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 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","/* eslint-disable @typescript-eslint/no-unsafe-function-type */\n\nimport { createMockFunction, createMockWrappedFunction } 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\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![key](\n localsReq,\n localsRes,\n );\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 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 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 content: \"_MOCK_OUTPUT_TEXT\",\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// 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","// Import all mocks\nimport * as aws from \"./aws\";\nimport * as core from \"./core\";\nimport * as datadog from \"./datadog\";\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\";\n\n// Re-export all mocks\nexport * from \"./aws\";\nexport * from \"./core\";\nexport * from \"./datadog\";\nexport * from \"./express\";\nexport * from \"./kit\";\nexport * from \"./lambda\";\nexport * from \"./llm\";\nexport * from \"./logger\";\nexport * from \"./mongoose\";\nexport * from \"./textract\";\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 // Express module\n ...express,\n\n ...kit,\n\n // Lambda module\n ...lambda,\n\n // LLM module\n ...llm,\n\n ...logger,\n\n // Mongoose module (now empty)\n ...mongoose,\n\n // Textract module\n ...textract,\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/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","/* eslint-disable @typescript-eslint/no-unsafe-function-type */\n\nimport { createMockFunction, createMockWrappedFunction } 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\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![key](\n localsReq,\n localsRes,\n );\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// Vocabulary types\ntype ServiceHandlerFunction = (\n input?: Record<string, unknown> | string,\n) => Promise<unknown>;\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","// Import all mocks\nimport * as aws from \"./aws\";\nimport * as core from \"./core\";\nimport * as datadog from \"./datadog\";\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 \"./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 // Express module\n ...express,\n\n ...kit,\n\n // Lambda module\n ...lambda,\n\n // LLM module\n ...llm,\n\n ...logger,\n\n // Mongoose module (now empty)\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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"}
@@ -11,5 +11,10 @@ export declare const LlmMessageType: typeof original.LlmMessageType;
11
11
  export declare const LlmStreamChunkType: typeof original.LlmStreamChunkType;
12
12
  export declare const GeminiProvider: typeof original.GeminiProvider;
13
13
  export declare const OpenRouterProvider: typeof original.OpenRouterProvider;
14
+ export declare const extractReasoning: typeof original.extractReasoning;
15
+ export declare const isLlmOperateInput: typeof original.isLlmOperateInput;
16
+ export declare const isLlmOperateInputContent: typeof original.isLlmOperateInputContent;
17
+ export declare const isLlmOperateInputFile: typeof original.isLlmOperateInputFile;
18
+ export declare const isLlmOperateInputImage: typeof original.isLlmOperateInputImage;
14
19
  export declare const toolkit: original.JaypieToolkit;
15
20
  export declare const tools: Omit<original.LlmTool, "call">[];
@@ -1,4 +1,10 @@
1
1
  export declare const getMessages: import("vitest").Mock<(...args: any[]) => any>;
2
+ export declare const getS3FileBuffer: (({ bucket, key }: {
3
+ bucket: string;
4
+ key: string;
5
+ }) => Promise<Buffer>) & {
6
+ mock: any;
7
+ };
2
8
  export declare const getSecret: import("vitest").Mock<(...args: any[]) => any>;
3
9
  export declare const sendMessage: import("vitest").Mock<(...args: any[]) => any>;
4
10
  export declare const getEnvSecret: ((key: string) => Promise<string>) & {
@@ -8,5 +8,6 @@ export * from "./llm";
8
8
  export * from "./logger";
9
9
  export * from "./mongoose";
10
10
  export * from "./textract";
11
+ export * from "./vocabulary";
11
12
  declare const mock: Record<string, any>;
12
13
  export default mock;
@@ -11,5 +11,10 @@ export declare const LlmMessageType: typeof original.LlmMessageType;
11
11
  export declare const LlmStreamChunkType: typeof original.LlmStreamChunkType;
12
12
  export declare const GeminiProvider: typeof original.GeminiProvider;
13
13
  export declare const OpenRouterProvider: typeof original.OpenRouterProvider;
14
+ export declare const extractReasoning: typeof original.extractReasoning;
15
+ export declare const isLlmOperateInput: typeof original.isLlmOperateInput;
16
+ export declare const isLlmOperateInputContent: typeof original.isLlmOperateInputContent;
17
+ export declare const isLlmOperateInputFile: typeof original.isLlmOperateInputFile;
18
+ export declare const isLlmOperateInputImage: typeof original.isLlmOperateInputImage;
14
19
  export declare const toolkit: original.JaypieToolkit;
15
20
  export declare const tools: Omit<original.LlmTool, "call">[];
@@ -0,0 +1,23 @@
1
+ type ServiceHandlerFunction = (input?: Record<string, unknown> | string) => Promise<unknown>;
2
+ interface LambdaServiceHandlerOptions {
3
+ chaos?: string;
4
+ name?: string;
5
+ secrets?: string[];
6
+ setup?: ((...args: unknown[]) => void | Promise<void>)[];
7
+ teardown?: ((...args: unknown[]) => void | Promise<void>)[];
8
+ throw?: boolean;
9
+ unavailable?: boolean;
10
+ validate?: ((...args: unknown[]) => unknown | Promise<unknown>)[];
11
+ }
12
+ interface LambdaServiceHandlerConfig extends LambdaServiceHandlerOptions {
13
+ handler: ServiceHandlerFunction;
14
+ }
15
+ type HandlerFunction = (...args: unknown[]) => unknown;
16
+ /**
17
+ * Mock implementation of lambdaServiceHandler
18
+ * Mirrors the real implementation: wraps a service handler for Lambda with getMessages processing
19
+ */
20
+ export declare const lambdaServiceHandler: ((handlerOrConfig: ServiceHandlerFunction | LambdaServiceHandlerConfig, options?: LambdaServiceHandlerOptions) => HandlerFunction) & {
21
+ mock: any;
22
+ };
23
+ export {};
@@ -0,0 +1,23 @@
1
+ type ServiceHandlerFunction = (input?: Record<string, unknown> | string) => Promise<unknown>;
2
+ interface LambdaServiceHandlerOptions {
3
+ chaos?: string;
4
+ name?: string;
5
+ secrets?: string[];
6
+ setup?: ((...args: unknown[]) => void | Promise<void>)[];
7
+ teardown?: ((...args: unknown[]) => void | Promise<void>)[];
8
+ throw?: boolean;
9
+ unavailable?: boolean;
10
+ validate?: ((...args: unknown[]) => unknown | Promise<unknown>)[];
11
+ }
12
+ interface LambdaServiceHandlerConfig extends LambdaServiceHandlerOptions {
13
+ handler: ServiceHandlerFunction;
14
+ }
15
+ type HandlerFunction = (...args: unknown[]) => unknown;
16
+ /**
17
+ * Mock implementation of lambdaServiceHandler
18
+ * Mirrors the real implementation: wraps a service handler for Lambda with getMessages processing
19
+ */
20
+ export declare const lambdaServiceHandler: ((handlerOrConfig: ServiceHandlerFunction | LambdaServiceHandlerConfig, options?: LambdaServiceHandlerOptions) => HandlerFunction) & {
21
+ mock: any;
22
+ };
23
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jaypie/testkit",
3
- "version": "1.2.2",
3
+ "version": "1.2.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/finlaysonstudio/jaypie.git"