@jaypie/testkit 1.1.13 → 1.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/jaypie.mock.d.ts +6 -4
- package/dist/jaypie.mock.js +89 -1
- package/dist/jaypie.mock.js.map +1 -1
- package/dist/placeholders.d.ts +9 -0
- package/package.json +2 -2
package/dist/jaypie.mock.d.ts
CHANGED
|
@@ -11,13 +11,13 @@ export * from "@jaypie/llm";
|
|
|
11
11
|
export * from "@jaypie/mongoose";
|
|
12
12
|
export * from "@jaypie/textract";
|
|
13
13
|
export declare const getEnvSecret: import("vitest").Mock<() => string>;
|
|
14
|
-
export declare const getMessages: import("vitest").Mock<(event?: {
|
|
14
|
+
export declare const getMessages: import("vitest").Mock<(event?: Record<string, unknown> | {
|
|
15
15
|
Records?: Array<{
|
|
16
16
|
body: string;
|
|
17
17
|
}>;
|
|
18
18
|
} | {
|
|
19
19
|
body: string;
|
|
20
|
-
}[] |
|
|
20
|
+
}[] | undefined) => (string | Record<string, unknown> | import("@jaypie/aws").SQSMessage)[]>;
|
|
21
21
|
export declare const getSecret: import("vitest").Mock<() => string>;
|
|
22
22
|
export declare const getTextractJob: import("vitest").Mock<(job: string) => SQSMessageResponse>;
|
|
23
23
|
export declare const sendBatchMessages: import("vitest").Mock<() => SQSMessageResponse>;
|
|
@@ -44,6 +44,7 @@ export declare const UnavailableError: import("vitest").Mock<(...params: Constru
|
|
|
44
44
|
export declare const UnhandledError: import("vitest").Mock<(...params: ConstructorParameters<typeof UnhandledErrorOriginal>) => InstanceType<typeof UnhandledErrorOriginal>>;
|
|
45
45
|
export declare const UnreachableCodeError: import("vitest").Mock<(...params: ConstructorParameters<typeof UnreachableCodeErrorOriginal>) => InstanceType<typeof UnreachableCodeErrorOriginal>>;
|
|
46
46
|
export declare const envBoolean: import("vitest").Mock<() => boolean>;
|
|
47
|
+
export declare const placeholders: import("vitest").Mock<(template: string | (() => string), data?: Record<string, unknown> | undefined) => string>;
|
|
47
48
|
export declare const jaypieHandler: import("vitest").Mock<(handler: JaypieHandlerFunction, { setup, teardown, unavailable, validate, }?: JaypieHandlerOptions) => (...args: GenericArgs) => Promise<unknown>>;
|
|
48
49
|
export declare const sleep: import("vitest").Mock<() => boolean>;
|
|
49
50
|
export declare const uuid: import("vitest").Mock<typeof originalUuid>;
|
|
@@ -60,13 +61,13 @@ export declare const disconnect: import("vitest").Mock<() => boolean>;
|
|
|
60
61
|
export declare const MarkdownPage: import("vitest").Mock<(...args: any[]) => any>;
|
|
61
62
|
export declare const textractJsonToMarkdown: import("vitest").Mock<(textractResults: JsonReturn) => string>;
|
|
62
63
|
declare const _default: {
|
|
63
|
-
getMessages: import("vitest").Mock<(event?: {
|
|
64
|
+
getMessages: import("vitest").Mock<(event?: Record<string, unknown> | {
|
|
64
65
|
Records?: Array<{
|
|
65
66
|
body: string;
|
|
66
67
|
}>;
|
|
67
68
|
} | {
|
|
68
69
|
body: string;
|
|
69
|
-
}[] |
|
|
70
|
+
}[] | undefined) => (string | Record<string, unknown> | import("@jaypie/aws").SQSMessage)[]>;
|
|
70
71
|
getSecret: import("vitest").Mock<() => string>;
|
|
71
72
|
getTextractJob: import("vitest").Mock<(job: string) => SQSMessageResponse>;
|
|
72
73
|
sendBatchMessages: import("vitest").Mock<() => SQSMessageResponse>;
|
|
@@ -95,6 +96,7 @@ declare const _default: {
|
|
|
95
96
|
MultiError: import("vitest").Mock<(...params: ConstructorParameters<typeof MultiErrorOriginal>) => InstanceType<typeof MultiErrorOriginal>>;
|
|
96
97
|
NotFoundError: import("vitest").Mock<(...params: ConstructorParameters<typeof NotFoundErrorOriginal>) => InstanceType<typeof NotFoundErrorOriginal>>;
|
|
97
98
|
NotImplementedError: import("vitest").Mock<(...params: ConstructorParameters<typeof NotImplementedErrorOriginal>) => InstanceType<typeof NotImplementedErrorOriginal>>;
|
|
99
|
+
placeholders: import("vitest").Mock<(template: string | (() => string), data?: Record<string, unknown> | undefined) => string>;
|
|
98
100
|
ProjectError: import("vitest").Mock<(...params: ConstructorParameters<typeof ProjectErrorOriginal>) => InstanceType<typeof ProjectErrorOriginal>>;
|
|
99
101
|
ProjectMultiError: import("vitest").Mock<(...params: ConstructorParameters<typeof ProjectMultiErrorOriginal>) => InstanceType<typeof ProjectMultiErrorOriginal>>;
|
|
100
102
|
RejectedError: import("vitest").Mock<(...params: ConstructorParameters<typeof RejectedErrorOriginal>) => InstanceType<typeof RejectedErrorOriginal>>;
|
package/dist/jaypie.mock.js
CHANGED
|
@@ -85,6 +85,92 @@ function spyLog(log) {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
/* eslint-disable no-shadow */
|
|
89
|
+
//
|
|
90
|
+
//
|
|
91
|
+
// Helper Functions
|
|
92
|
+
//
|
|
93
|
+
/*!
|
|
94
|
+
* Get an object value from a specific path
|
|
95
|
+
* (c) 2018 Chris Ferdinandi, MIT License, https://gomakethings.com
|
|
96
|
+
* @param {Object} obj The object
|
|
97
|
+
* @param {String|Array} path The path
|
|
98
|
+
* @param {*} def A default value to return [optional]
|
|
99
|
+
* @return {*} The value
|
|
100
|
+
*/
|
|
101
|
+
function get(obj, path, def) {
|
|
102
|
+
/**
|
|
103
|
+
* If the path is a string, convert it to an array
|
|
104
|
+
* @param {String|Array} path The path
|
|
105
|
+
* @return {Array} The path array
|
|
106
|
+
*/
|
|
107
|
+
const stringToPath = (path) => {
|
|
108
|
+
// If the path isn't a string, return it
|
|
109
|
+
if (typeof path !== "string")
|
|
110
|
+
return path;
|
|
111
|
+
// Create new array
|
|
112
|
+
const output = [];
|
|
113
|
+
// Split to an array with dot notation
|
|
114
|
+
path.split(".").forEach((item) => {
|
|
115
|
+
// Split to an array with bracket notation
|
|
116
|
+
item.split(/\[([^}]+)\]/g).forEach((key) => {
|
|
117
|
+
// Push to the new array
|
|
118
|
+
if (key.length > 0) {
|
|
119
|
+
output.push(key);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
return output;
|
|
124
|
+
};
|
|
125
|
+
// Get the path as an array
|
|
126
|
+
path = stringToPath(path);
|
|
127
|
+
// Cache the current object
|
|
128
|
+
let current = obj;
|
|
129
|
+
// For each item in the path, dig into the object
|
|
130
|
+
for (let i = 0; i < path.length; i++) {
|
|
131
|
+
// If the item isn't found, return the default (or null)
|
|
132
|
+
if (!current ||
|
|
133
|
+
typeof current !== "object" ||
|
|
134
|
+
!(path[i] in current))
|
|
135
|
+
return def;
|
|
136
|
+
// Otherwise, update the current value
|
|
137
|
+
current = current[path[i]];
|
|
138
|
+
}
|
|
139
|
+
return current;
|
|
140
|
+
}
|
|
141
|
+
//
|
|
142
|
+
//
|
|
143
|
+
// Main
|
|
144
|
+
//
|
|
145
|
+
/*!
|
|
146
|
+
* Replaces placeholders with real content
|
|
147
|
+
* Requires get() - https://vanillajstoolkit.com/helpers/get/
|
|
148
|
+
* (c) 2019 Chris Ferdinandi, MIT License, https://gomakethings.com
|
|
149
|
+
* @param {String} template The template string
|
|
150
|
+
* @param {String} local A local placeholder to use, if any
|
|
151
|
+
*/
|
|
152
|
+
function placeholders$1(template, data) {
|
|
153
|
+
// Check if the template is a string or a function
|
|
154
|
+
template = typeof template === "function" ? template() : template;
|
|
155
|
+
if (["string", "number"].indexOf(typeof template) === -1)
|
|
156
|
+
throw Error("PlaceholdersJS: please provide a valid template");
|
|
157
|
+
// If no data, return template as-is
|
|
158
|
+
if (!data)
|
|
159
|
+
return template;
|
|
160
|
+
// Replace our curly braces with data
|
|
161
|
+
template = template.replace(/\{\{([^}]+)\}\}/g, (match) => {
|
|
162
|
+
// Remove the wrapping curly braces
|
|
163
|
+
match = match.slice(2, -2);
|
|
164
|
+
// Get the value
|
|
165
|
+
const val = get(data, match.trim(), undefined);
|
|
166
|
+
// Replace
|
|
167
|
+
if (!val)
|
|
168
|
+
return `{{${match}}}`;
|
|
169
|
+
return String(val);
|
|
170
|
+
});
|
|
171
|
+
return template;
|
|
172
|
+
}
|
|
173
|
+
|
|
88
174
|
/* eslint-disable import-x/export */
|
|
89
175
|
//
|
|
90
176
|
//
|
|
@@ -198,6 +284,7 @@ const UnreachableCodeError = vi.fn((...params) => {
|
|
|
198
284
|
const envBoolean = vi.fn(() => {
|
|
199
285
|
return true;
|
|
200
286
|
});
|
|
287
|
+
const placeholders = vi.fn((...params) => placeholders$1(...params));
|
|
201
288
|
const jaypieHandler = vi.fn((handler, { setup = [], teardown = [], unavailable = force.boolean(process.env.PROJECT_UNAVAILABLE), validate = [], } = {}) => {
|
|
202
289
|
return async (...args) => {
|
|
203
290
|
let result;
|
|
@@ -475,6 +562,7 @@ var jaypie_mock = {
|
|
|
475
562
|
MultiError,
|
|
476
563
|
NotFoundError,
|
|
477
564
|
NotImplementedError,
|
|
565
|
+
placeholders,
|
|
478
566
|
ProjectError,
|
|
479
567
|
ProjectMultiError,
|
|
480
568
|
RejectedError,
|
|
@@ -503,5 +591,5 @@ var jaypie_mock = {
|
|
|
503
591
|
textractJsonToMarkdown,
|
|
504
592
|
};
|
|
505
593
|
|
|
506
|
-
export { BadGatewayError, BadRequestError, ConfigurationError, ForbiddenError, GatewayTimeoutError, GoneError, IllogicalError, InternalError, Llm, MarkdownPage, MethodNotAllowedError, MultiError, NotFoundError, NotImplementedError, ProjectError, ProjectMultiError, RejectedError, TeapotError, UnauthorizedError, UnavailableError, UnhandledError, UnreachableCodeError, connect, connectFromSecretEnv, jaypie_mock as default, disconnect, envBoolean, expressHandler, getEnvSecret, getMessages, getSecret, getTextractJob, jaypieHandler, lambdaHandler, sendBatchMessages, sendMessage, sendTextractJob, sleep, submitMetric, submitMetricSet, textractJsonToMarkdown, uuid };
|
|
594
|
+
export { BadGatewayError, BadRequestError, ConfigurationError, ForbiddenError, GatewayTimeoutError, GoneError, IllogicalError, InternalError, Llm, MarkdownPage, MethodNotAllowedError, MultiError, NotFoundError, NotImplementedError, ProjectError, ProjectMultiError, RejectedError, TeapotError, UnauthorizedError, UnavailableError, UnhandledError, UnreachableCodeError, connect, connectFromSecretEnv, jaypie_mock as default, disconnect, envBoolean, expressHandler, getEnvSecret, getMessages, getSecret, getTextractJob, jaypieHandler, lambdaHandler, placeholders, sendBatchMessages, sendMessage, sendTextractJob, sleep, submitMetric, submitMetricSet, textractJsonToMarkdown, uuid };
|
|
507
595
|
//# sourceMappingURL=jaypie.mock.js.map
|
package/dist/jaypie.mock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jaypie.mock.js","sources":["../src/mockLog.module.ts","../src/jaypie.mock.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Log } from \"@jaypie/core\";\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\nconst originalLogMethods = new WeakMap<Log, Partial<Log>>();\n\nexport function spyLog(log: Log): void {\n if (!originalLogMethods.has(log)) {\n const mockLog = mockLogFactory();\n const originalMethods: Partial<Log> = {};\n\n LOG_METHOD_NAMES.forEach((method) => {\n originalMethods[method] = log[method] as any;\n log[method] = mockLog[method] as any;\n });\n\n originalLogMethods.set(log, originalMethods);\n }\n}\n\nexport function restoreLog(log: Log): void {\n const originalMethods = originalLogMethods.get(log);\n if (originalMethods) {\n LOG_METHOD_NAMES.forEach((method) => {\n if (originalMethods[method]) {\n log[method] = originalMethods[method] as any;\n }\n });\n originalLogMethods.delete(log);\n }\n}\n","/* eslint-disable import-x/export */\nimport { getMessages as originalGetMessages } from \"@jaypie/aws\";\nimport {\n force,\n Log,\n uuid as originalUuid,\n // Core utilities\n HTTP,\n JAYPIE,\n log,\n // Errors\n BadGatewayError as BadGatewayErrorOriginal,\n BadRequestError as BadRequestErrorOriginal,\n ConfigurationError as ConfigurationErrorOriginal,\n ForbiddenError as ForbiddenErrorOriginal,\n GatewayTimeoutError as GatewayTimeoutErrorOriginal,\n GoneError as GoneErrorOriginal,\n IllogicalError as IllogicalErrorOriginal,\n InternalError as InternalErrorOriginal,\n MethodNotAllowedError as MethodNotAllowedErrorOriginal,\n MultiError as MultiErrorOriginal,\n NotFoundError as NotFoundErrorOriginal,\n NotImplementedError as NotImplementedErrorOriginal,\n ProjectError as ProjectErrorOriginal,\n ProjectMultiError as ProjectMultiErrorOriginal,\n RejectedError as RejectedErrorOriginal,\n TeapotError as TeapotErrorOriginal,\n UnauthorizedError as UnauthorizedErrorOriginal,\n UnavailableError as UnavailableErrorOriginal,\n UnhandledError as UnhandledErrorOriginal,\n UnreachableCodeError as UnreachableCodeErrorOriginal,\n} from \"@jaypie/core\";\nimport type { TextractPageAdaptable } from \"@jaypie/textract\";\nimport type { JsonReturn } from \"@jaypie/types\";\nimport { beforeAll, vi } from \"vitest\";\n\nimport {\n ExpressHandlerFunction,\n ExpressHandlerOptions,\n ExpressHandlerParameter,\n GenericArgs,\n JaypieHandlerFunction,\n JaypieHandlerOptions,\n JaypieHandlerParameter,\n JaypieLifecycleOption,\n WithJsonFunction,\n} from \"./types/jaypie-testkit\";\nimport type { SQSMessageResponse } from \"@jaypie/aws\";\nimport { spyLog } from \"./mockLog.module.js\";\nimport type { Response as ExpressResponse } from \"express\";\nimport { readFile } from \"fs/promises\";\nimport { TextractDocument } from \"amazon-textract-response-parser\";\nimport { MarkdownPage as OriginalMarkdownPage } from \"@jaypie/textract\";\nimport { dirname, join } from \"path\";\nimport { fileURLToPath } from \"url\";\n\n//\n//\n// Setup\n//\n\nconst TAG = JAYPIE.LIB.TESTKIT;\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nconst MOCK_TEXTRACT_DOCUMENT_PATH = join(__dirname, \"mockTextract.json\");\n\n// Export all the modules from Jaypie packages:\nexport * from \"@jaypie/aws\";\nexport * from \"@jaypie/core\";\nexport * from \"@jaypie/express\";\nexport * from \"@jaypie/datadog\";\nexport * from \"@jaypie/lambda\";\nexport * from \"@jaypie/llm\";\nexport * from \"@jaypie/mongoose\";\nexport * from \"@jaypie/textract\";\n\nlet textractJsonToMarkdownOriginal = vi.fn<typeof textractJsonToMarkdown>();\nlet MarkdownPageOriginal: typeof OriginalMarkdownPage;\nlet mockTextractContents: string;\n\n// Spy on log:\nbeforeAll(async () => {\n const textract = await import(\"@jaypie/textract\");\n textractJsonToMarkdownOriginal.mockImplementation(\n textract.textractJsonToMarkdown,\n );\n MarkdownPageOriginal = textract.MarkdownPage;\n mockTextractContents = await readFile(MOCK_TEXTRACT_DOCUMENT_PATH, \"utf-8\");\n spyLog(log as Log);\n});\n\n//\n//\n// Mock Functions\n//\n\n// @jaypie/aws\nexport const getEnvSecret = vi.fn((): string => {\n return `_MOCK_ENV_SECRET_[${TAG}]`;\n});\n\nexport const getMessages = vi.fn(\n (...params: Parameters<typeof originalGetMessages>) =>\n originalGetMessages(...params),\n);\n\nexport const getSecret = vi.fn((): string => {\n return `_MOCK_SECRET_[${TAG}]`;\n});\n\nexport const getTextractJob = vi.fn((job: string): SQSMessageResponse => {\n return { value: `_MOCK_TEXTRACT_JOB_[${job}]` };\n});\n\nexport const sendBatchMessages = vi.fn((): SQSMessageResponse => {\n return { value: `_MOCK_BATCH_MESSAGES_[${TAG}]` };\n});\n\nexport const sendMessage = vi.fn((): SQSMessageResponse => {\n return { value: `_MOCK_MESSAGE_[${TAG}]` };\n});\n\nexport const sendTextractJob = vi.fn(({ key, bucket }): Array<unknown> => {\n if (!key || !bucket) {\n throw new ConfigurationError(\"[sendTextractJob] Missing key or bucket\");\n }\n return [`_MOCK_TEXTRACT_JOB_[${bucket}/${key}]`];\n});\n\n// @jaypie/core Errors\nexport const BadGatewayError = vi.fn(\n (\n ...params: ConstructorParameters<typeof BadGatewayErrorOriginal>\n ): InstanceType<typeof BadGatewayErrorOriginal> => {\n return new BadGatewayErrorOriginal(...params);\n },\n);\n\nexport const BadRequestError = vi.fn(\n (\n ...params: ConstructorParameters<typeof BadRequestErrorOriginal>\n ): InstanceType<typeof BadRequestErrorOriginal> => {\n return new BadRequestErrorOriginal(...params);\n },\n);\n\nexport const ConfigurationError = vi.fn(\n (\n ...params: ConstructorParameters<typeof ConfigurationErrorOriginal>\n ): InstanceType<typeof ConfigurationErrorOriginal> => {\n return new ConfigurationErrorOriginal(...params);\n },\n);\n\n// Complete the error mocks\nexport const ForbiddenError = vi.fn(\n (\n ...params: ConstructorParameters<typeof ForbiddenErrorOriginal>\n ): InstanceType<typeof ForbiddenErrorOriginal> => {\n return new ForbiddenErrorOriginal(...params);\n },\n);\n\nexport const GatewayTimeoutError = vi.fn(\n (\n ...params: ConstructorParameters<typeof GatewayTimeoutErrorOriginal>\n ): InstanceType<typeof GatewayTimeoutErrorOriginal> => {\n return new GatewayTimeoutErrorOriginal(...params);\n },\n);\n\nexport const GoneError = vi.fn(\n (\n ...params: ConstructorParameters<typeof GoneErrorOriginal>\n ): InstanceType<typeof GoneErrorOriginal> => {\n return new GoneErrorOriginal(...params);\n },\n);\n\nexport const IllogicalError = vi.fn(\n (\n ...params: ConstructorParameters<typeof IllogicalErrorOriginal>\n ): InstanceType<typeof IllogicalErrorOriginal> => {\n return new IllogicalErrorOriginal(...params);\n },\n);\n\nexport const InternalError = vi.fn(\n (\n ...params: ConstructorParameters<typeof InternalErrorOriginal>\n ): InstanceType<typeof InternalErrorOriginal> => {\n return new InternalErrorOriginal(...params);\n },\n);\n\nexport const MethodNotAllowedError = vi.fn(\n (\n ...params: ConstructorParameters<typeof MethodNotAllowedErrorOriginal>\n ): InstanceType<typeof MethodNotAllowedErrorOriginal> => {\n return new MethodNotAllowedErrorOriginal(...params);\n },\n);\n\nexport const MultiError = vi.fn(\n (\n ...params: ConstructorParameters<typeof MultiErrorOriginal>\n ): InstanceType<typeof MultiErrorOriginal> => {\n return new MultiErrorOriginal(...params);\n },\n);\n\nexport const NotFoundError = vi.fn(\n (\n ...params: ConstructorParameters<typeof NotFoundErrorOriginal>\n ): InstanceType<typeof NotFoundErrorOriginal> => {\n return new NotFoundErrorOriginal(...params);\n },\n);\n\nexport const NotImplementedError = vi.fn(\n (\n ...params: ConstructorParameters<typeof NotImplementedErrorOriginal>\n ): InstanceType<typeof NotImplementedErrorOriginal> => {\n return new NotImplementedErrorOriginal(...params);\n },\n);\n\nexport const ProjectError = vi.fn(\n (\n ...params: ConstructorParameters<typeof ProjectErrorOriginal>\n ): InstanceType<typeof ProjectErrorOriginal> => {\n return new ProjectErrorOriginal(...params);\n },\n);\n\nexport const ProjectMultiError = vi.fn(\n (\n ...params: ConstructorParameters<typeof ProjectMultiErrorOriginal>\n ): InstanceType<typeof ProjectMultiErrorOriginal> => {\n return new ProjectMultiErrorOriginal(...params);\n },\n);\n\nexport const RejectedError = vi.fn(\n (\n ...params: ConstructorParameters<typeof RejectedErrorOriginal>\n ): InstanceType<typeof RejectedErrorOriginal> => {\n return new RejectedErrorOriginal(...params);\n },\n);\n\nexport const TeapotError = vi.fn(\n (\n ...params: ConstructorParameters<typeof TeapotErrorOriginal>\n ): InstanceType<typeof TeapotErrorOriginal> => {\n return new TeapotErrorOriginal(...params);\n },\n);\n\nexport const UnauthorizedError = vi.fn(\n (\n ...params: ConstructorParameters<typeof UnauthorizedErrorOriginal>\n ): InstanceType<typeof UnauthorizedErrorOriginal> => {\n return new UnauthorizedErrorOriginal(...params);\n },\n);\n\nexport const UnavailableError = vi.fn(\n (\n ...params: ConstructorParameters<typeof UnavailableErrorOriginal>\n ): InstanceType<typeof UnavailableErrorOriginal> => {\n return new UnavailableErrorOriginal(...params);\n },\n);\n\nexport const UnhandledError = vi.fn(\n (\n ...params: ConstructorParameters<typeof UnhandledErrorOriginal>\n ): InstanceType<typeof UnhandledErrorOriginal> => {\n return new UnhandledErrorOriginal(...params);\n },\n);\n\nexport const UnreachableCodeError = vi.fn(\n (\n ...params: ConstructorParameters<typeof UnreachableCodeErrorOriginal>\n ): InstanceType<typeof UnreachableCodeErrorOriginal> => {\n return new UnreachableCodeErrorOriginal(...params);\n },\n);\n\n// @jaypie/core Functions\nexport const envBoolean = vi.fn((): boolean => {\n return true;\n});\n\nexport const jaypieHandler = vi.fn(\n (\n handler: JaypieHandlerFunction,\n {\n setup = [] as JaypieLifecycleOption,\n teardown = [] as JaypieLifecycleOption,\n unavailable = force.boolean(process.env.PROJECT_UNAVAILABLE),\n validate = [] as JaypieLifecycleOption,\n }: JaypieHandlerOptions = {},\n ) => {\n return async (...args: GenericArgs) => {\n let result;\n let thrownError;\n if (unavailable) throw UnavailableError();\n validate = force.array(validate);\n for (const validator of validate) {\n if (typeof validator === \"function\") {\n const valid = await validator(...args);\n if (valid === false) {\n throw new BadRequestError();\n }\n }\n }\n try {\n setup = force.array(setup);\n for (const setupFunction of setup) {\n if (typeof setupFunction === \"function\") {\n await setupFunction(...args);\n }\n }\n // @ts-expect-error TODO: cannot resolve; fix when JaypieHandler moves to TypeScript\n result = handler(...args);\n } catch (error) {\n thrownError = error;\n }\n teardown = force.array(teardown);\n for (const teardownFunction of teardown) {\n if (typeof teardownFunction === \"function\") {\n try {\n await teardownFunction(...args);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n }\n }\n if (thrownError) {\n throw thrownError;\n }\n return result;\n };\n },\n);\n\nexport const sleep = vi.fn((): boolean => {\n return true;\n});\n\nexport const uuid = vi.fn(originalUuid);\n\n// @jaypie/datadog\nexport const submitMetric = vi.fn((): boolean => {\n return true;\n});\n\nexport const submitMetricSet = vi.fn((): boolean => {\n return true;\n});\n\n// @jaypie/express\nexport const expressHandler = vi.fn(\n (\n handlerOrProps: ExpressHandlerParameter,\n propsOrHandler?: ExpressHandlerParameter,\n ) => {\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 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 // @ts-expect-error TODO: cannot resolve; fix when JaypieHandler moves to TypeScript\n props.setup.unshift((req: { locals?: Record<string, unknown> }) => {\n if (!req || typeof req !== \"object\") {\n throw new BadRequestError(\"req must be an object\");\n }\n // Set req.locals if it doesn't exist\n if (!req.locals) req.locals = {};\n if (typeof req.locals !== \"object\" || Array.isArray(req.locals)) {\n throw new BadRequestError(\"req.locals must be an object\");\n }\n if (!req.locals._jaypie) req.locals._jaypie = {};\n });\n const localsSetup = async (\n localsReq: { locals: Record<string, unknown> },\n localsRes: unknown,\n ) => {\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (typeof props.locals![key] === \"function\") {\n localsReq.locals[key] = await props.locals;\n } else {\n localsReq.locals[key] = props.locals![key];\n }\n }\n };\n // @ts-expect-error TODO: cannot resolve; fix when JaypieHandler moves to TypeScript\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) {\n // In the mock context, if status is a function we are in a \"supertest\"\n if (\n supertestMode &&\n typeof (res as ExpressResponse).status === \"function\"\n ) {\n // In theory jaypieFunction has handled all errors\n const errorStatus =\n (error as ProjectErrorOriginal).status ||\n HTTP.CODE.INTERNAL_SERVER_ERROR;\n let errorResponse;\n if (typeof (error as ProjectErrorOriginal).json === \"function\") {\n errorResponse = (error as ProjectErrorOriginal).json();\n } else {\n // This should never happen\n errorResponse = UnhandledError().json();\n }\n (res as ExpressResponse).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 (\n supertestMode &&\n typeof (res as ExpressResponse).status === \"function\"\n ) {\n if (response) {\n if (typeof response === \"object\") {\n if (typeof (response as WithJsonFunction).json === \"function\") {\n (res as ExpressResponse).json(\n (response as WithJsonFunction).json(),\n );\n } else {\n (res as ExpressResponse).status(status).json(response);\n }\n } else if (typeof response === \"string\") {\n try {\n (res as ExpressResponse)\n .status(status)\n .json(JSON.parse(response));\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n (res as ExpressResponse).status(status).send(response);\n }\n } else if (response === true) {\n (res as ExpressResponse).status(HTTP.CODE.CREATED).send();\n } else {\n (res as ExpressResponse).status(status).send(response);\n }\n } else {\n (res as ExpressResponse).status(HTTP.CODE.NO_CONTENT).send();\n }\n } else {\n return response;\n }\n };\n },\n);\n\n// @jaypie/lambda\nexport const lambdaHandler = vi.fn(\n (handler: JaypieHandlerParameter, props: JaypieHandlerParameter = {}) => {\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(\n handler as JaypieHandlerFunction,\n props as JaypieHandlerOptions,\n )(event, context, ...extra);\n };\n },\n);\n\n// @jaypie/llm\nconst mockSend = vi.fn().mockResolvedValue(\"_MOCK_LLM_RESPONSE\");\nexport const Llm = Object.assign(\n vi.fn().mockImplementation((providerName = \"_MOCK_LLM_PROVIDER\") => ({\n _provider: providerName,\n _llm: {\n send: mockSend,\n },\n send: mockSend,\n })),\n { send: mockSend },\n);\n\n// @jaypie/mongoose\nexport const connect = vi.fn((): boolean => {\n return true;\n});\n\nexport const connectFromSecretEnv = vi.fn((): boolean => {\n return true;\n});\n\nexport const disconnect = vi.fn((): boolean => {\n return true;\n});\n\n// @jaypie/textract\nexport const MarkdownPage = vi\n .fn()\n .mockImplementation((page: TextractPageAdaptable) => {\n try {\n return new MarkdownPageOriginal(page);\n } catch {\n // eslint-disable-next-line no-console\n console.warn(\n \"[MarkdownPage] Actual implementation failed. To suppress this warning, manually mock the response with mockReturnValue\",\n );\n const mockDocument = new TextractDocument(\n JSON.parse(mockTextractContents),\n );\n // Double type assertion needed to bridge incompatible types\n return new MarkdownPageOriginal(\n mockDocument._pages[0] as unknown as TextractPageAdaptable,\n );\n }\n });\n\nexport const textractJsonToMarkdown = vi.fn(\n (textractResults: JsonReturn): string => {\n try {\n const result = textractJsonToMarkdownOriginal(textractResults);\n return result;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn(\n \"[textractJsonToMarkdown] Actual implementation failed. To suppress this warning, manually mock the response with mockReturnValue\",\n );\n return `_MOCK_TEXTRACT_JSON_TO_MARKDOWN_{{${textractResults}}}`;\n }\n },\n);\n\n// Export default for convenience\nexport default {\n // AWS\n getMessages,\n getSecret,\n getTextractJob,\n sendBatchMessages,\n sendMessage,\n sendTextractJob,\n // Core\n BadGatewayError,\n BadRequestError,\n ConfigurationError,\n envBoolean,\n ForbiddenError,\n GatewayTimeoutError,\n GoneError,\n HTTP,\n IllogicalError,\n InternalError,\n jaypieHandler,\n MethodNotAllowedError,\n MultiError,\n NotFoundError,\n NotImplementedError,\n ProjectError,\n ProjectMultiError,\n RejectedError,\n sleep,\n TeapotError,\n UnauthorizedError,\n UnavailableError,\n UnhandledError,\n UnreachableCodeError,\n uuid,\n // Datadog\n submitMetric,\n submitMetricSet,\n // Express\n expressHandler,\n // Lambda\n lambdaHandler,\n // LLM\n Llm,\n // Mongoose\n connect,\n connectFromSecretEnv,\n disconnect,\n // Textract\n MarkdownPage,\n textractJsonToMarkdown,\n};\n"],"names":["originalGetMessages","BadGatewayErrorOriginal","BadRequestErrorOriginal","ConfigurationErrorOriginal","ForbiddenErrorOriginal","GatewayTimeoutErrorOriginal","GoneErrorOriginal","IllogicalErrorOriginal","InternalErrorOriginal","MethodNotAllowedErrorOriginal","MultiErrorOriginal","NotFoundErrorOriginal","NotImplementedErrorOriginal","ProjectErrorOriginal","ProjectMultiErrorOriginal","RejectedErrorOriginal","TeapotErrorOriginal","UnauthorizedErrorOriginal","UnavailableErrorOriginal","UnhandledErrorOriginal","UnreachableCodeErrorOriginal","originalUuid"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jaypie.mock.js","sources":["../src/mockLog.module.ts","../src/placeholders.ts","../src/jaypie.mock.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Log } from \"@jaypie/core\";\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\nconst originalLogMethods = new WeakMap<Log, Partial<Log>>();\n\nexport function spyLog(log: Log): void {\n if (!originalLogMethods.has(log)) {\n const mockLog = mockLogFactory();\n const originalMethods: Partial<Log> = {};\n\n LOG_METHOD_NAMES.forEach((method) => {\n originalMethods[method] = log[method] as any;\n log[method] = mockLog[method] as any;\n });\n\n originalLogMethods.set(log, originalMethods);\n }\n}\n\nexport function restoreLog(log: Log): void {\n const originalMethods = originalLogMethods.get(log);\n if (originalMethods) {\n LOG_METHOD_NAMES.forEach((method) => {\n if (originalMethods[method]) {\n log[method] = originalMethods[method] as any;\n }\n });\n originalLogMethods.delete(log);\n }\n}\n","/* eslint-disable no-shadow */\n\n//\n//\n// Helper Functions\n//\n\n/*!\n * Get an object value from a specific path\n * (c) 2018 Chris Ferdinandi, MIT License, https://gomakethings.com\n * @param {Object} obj The object\n * @param {String|Array} path The path\n * @param {*} def A default value to return [optional]\n * @return {*} The value\n */\nfunction get(\n obj: Record<string, unknown>,\n path: string | string[],\n def?: unknown,\n): unknown {\n /**\n * If the path is a string, convert it to an array\n * @param {String|Array} path The path\n * @return {Array} The path array\n */\n const stringToPath = (path: string | string[]): string[] => {\n // If the path isn't a string, return it\n if (typeof path !== \"string\") return path as string[];\n\n // Create new array\n const output: string[] = [];\n\n // Split to an array with dot notation\n path.split(\".\").forEach((item) => {\n // Split to an array with bracket notation\n item.split(/\\[([^}]+)\\]/g).forEach((key) => {\n // Push to the new array\n if (key.length > 0) {\n output.push(key);\n }\n });\n });\n\n return output;\n };\n\n // Get the path as an array\n path = stringToPath(path);\n\n // Cache the current object\n let current: unknown = obj;\n\n // For each item in the path, dig into the object\n for (let i = 0; i < path.length; i++) {\n // If the item isn't found, return the default (or null)\n if (\n !current ||\n typeof current !== \"object\" ||\n !(path[i] in (current as object))\n )\n return def;\n\n // Otherwise, update the current value\n current = (current as Record<string, unknown>)[path[i]];\n }\n\n return current;\n}\n\n//\n//\n// Main\n//\n\n/*!\n * Replaces placeholders with real content\n * Requires get() - https://vanillajstoolkit.com/helpers/get/\n * (c) 2019 Chris Ferdinandi, MIT License, https://gomakethings.com\n * @param {String} template The template string\n * @param {String} local A local placeholder to use, if any\n */\nfunction placeholders(\n template: string | (() => string),\n data?: Record<string, unknown>,\n): string {\n // Check if the template is a string or a function\n template = typeof template === \"function\" ? template() : template;\n if ([\"string\", \"number\"].indexOf(typeof template) === -1)\n throw Error(\"PlaceholdersJS: please provide a valid template\");\n\n // If no data, return template as-is\n if (!data) return template;\n\n // Replace our curly braces with data\n template = template.replace(/\\{\\{([^}]+)\\}\\}/g, (match: string) => {\n // Remove the wrapping curly braces\n match = match.slice(2, -2);\n\n // Get the value\n const val = get(data, match.trim(), undefined);\n\n // Replace\n if (!val) return `{{${match}}}`;\n return String(val);\n });\n\n return template;\n}\n\n//\n//\n// Export\n//\n\nexport default placeholders;\n","/* eslint-disable import-x/export */\nimport { getMessages as originalGetMessages } from \"@jaypie/aws\";\nimport {\n force,\n Log,\n uuid as originalUuid,\n // Core utilities\n HTTP,\n JAYPIE,\n log,\n // Errors\n BadGatewayError as BadGatewayErrorOriginal,\n BadRequestError as BadRequestErrorOriginal,\n ConfigurationError as ConfigurationErrorOriginal,\n ForbiddenError as ForbiddenErrorOriginal,\n GatewayTimeoutError as GatewayTimeoutErrorOriginal,\n GoneError as GoneErrorOriginal,\n IllogicalError as IllogicalErrorOriginal,\n InternalError as InternalErrorOriginal,\n MethodNotAllowedError as MethodNotAllowedErrorOriginal,\n MultiError as MultiErrorOriginal,\n NotFoundError as NotFoundErrorOriginal,\n NotImplementedError as NotImplementedErrorOriginal,\n ProjectError as ProjectErrorOriginal,\n ProjectMultiError as ProjectMultiErrorOriginal,\n RejectedError as RejectedErrorOriginal,\n TeapotError as TeapotErrorOriginal,\n UnauthorizedError as UnauthorizedErrorOriginal,\n UnavailableError as UnavailableErrorOriginal,\n UnhandledError as UnhandledErrorOriginal,\n UnreachableCodeError as UnreachableCodeErrorOriginal,\n} from \"@jaypie/core\";\nimport type { TextractPageAdaptable } from \"@jaypie/textract\";\nimport type { JsonReturn } from \"@jaypie/types\";\nimport { beforeAll, vi } from \"vitest\";\n\nimport {\n ExpressHandlerFunction,\n ExpressHandlerOptions,\n ExpressHandlerParameter,\n GenericArgs,\n JaypieHandlerFunction,\n JaypieHandlerOptions,\n JaypieHandlerParameter,\n JaypieLifecycleOption,\n WithJsonFunction,\n} from \"./types/jaypie-testkit\";\nimport type { SQSMessageResponse } from \"@jaypie/aws\";\nimport { spyLog } from \"./mockLog.module.js\";\nimport type { Response as ExpressResponse } from \"express\";\nimport { readFile } from \"fs/promises\";\nimport { TextractDocument } from \"amazon-textract-response-parser\";\nimport { MarkdownPage as OriginalMarkdownPage } from \"@jaypie/textract\";\nimport { dirname, join } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport originalPlaceholders from \"./placeholders.js\";\n\n//\n//\n// Setup\n//\n\nconst TAG = JAYPIE.LIB.TESTKIT;\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nconst MOCK_TEXTRACT_DOCUMENT_PATH = join(__dirname, \"mockTextract.json\");\n\n// Export all the modules from Jaypie packages:\nexport * from \"@jaypie/aws\";\nexport * from \"@jaypie/core\";\nexport * from \"@jaypie/express\";\nexport * from \"@jaypie/datadog\";\nexport * from \"@jaypie/lambda\";\nexport * from \"@jaypie/llm\";\nexport * from \"@jaypie/mongoose\";\nexport * from \"@jaypie/textract\";\n\nlet textractJsonToMarkdownOriginal = vi.fn<typeof textractJsonToMarkdown>();\nlet MarkdownPageOriginal: typeof OriginalMarkdownPage;\nlet mockTextractContents: string;\n\n// Spy on log:\nbeforeAll(async () => {\n const textract = await import(\"@jaypie/textract\");\n textractJsonToMarkdownOriginal.mockImplementation(\n textract.textractJsonToMarkdown,\n );\n MarkdownPageOriginal = textract.MarkdownPage;\n mockTextractContents = await readFile(MOCK_TEXTRACT_DOCUMENT_PATH, \"utf-8\");\n spyLog(log as Log);\n});\n\n//\n//\n// Mock Functions\n//\n\n// @jaypie/aws\nexport const getEnvSecret = vi.fn((): string => {\n return `_MOCK_ENV_SECRET_[${TAG}]`;\n});\n\nexport const getMessages = vi.fn(\n (...params: Parameters<typeof originalGetMessages>) =>\n originalGetMessages(...params),\n);\n\nexport const getSecret = vi.fn((): string => {\n return `_MOCK_SECRET_[${TAG}]`;\n});\n\nexport const getTextractJob = vi.fn((job: string): SQSMessageResponse => {\n return { value: `_MOCK_TEXTRACT_JOB_[${job}]` };\n});\n\nexport const sendBatchMessages = vi.fn((): SQSMessageResponse => {\n return { value: `_MOCK_BATCH_MESSAGES_[${TAG}]` };\n});\n\nexport const sendMessage = vi.fn((): SQSMessageResponse => {\n return { value: `_MOCK_MESSAGE_[${TAG}]` };\n});\n\nexport const sendTextractJob = vi.fn(({ key, bucket }): Array<unknown> => {\n if (!key || !bucket) {\n throw new ConfigurationError(\"[sendTextractJob] Missing key or bucket\");\n }\n return [`_MOCK_TEXTRACT_JOB_[${bucket}/${key}]`];\n});\n\n// @jaypie/core Errors\nexport const BadGatewayError = vi.fn(\n (\n ...params: ConstructorParameters<typeof BadGatewayErrorOriginal>\n ): InstanceType<typeof BadGatewayErrorOriginal> => {\n return new BadGatewayErrorOriginal(...params);\n },\n);\n\nexport const BadRequestError = vi.fn(\n (\n ...params: ConstructorParameters<typeof BadRequestErrorOriginal>\n ): InstanceType<typeof BadRequestErrorOriginal> => {\n return new BadRequestErrorOriginal(...params);\n },\n);\n\nexport const ConfigurationError = vi.fn(\n (\n ...params: ConstructorParameters<typeof ConfigurationErrorOriginal>\n ): InstanceType<typeof ConfigurationErrorOriginal> => {\n return new ConfigurationErrorOriginal(...params);\n },\n);\n\n// Complete the error mocks\nexport const ForbiddenError = vi.fn(\n (\n ...params: ConstructorParameters<typeof ForbiddenErrorOriginal>\n ): InstanceType<typeof ForbiddenErrorOriginal> => {\n return new ForbiddenErrorOriginal(...params);\n },\n);\n\nexport const GatewayTimeoutError = vi.fn(\n (\n ...params: ConstructorParameters<typeof GatewayTimeoutErrorOriginal>\n ): InstanceType<typeof GatewayTimeoutErrorOriginal> => {\n return new GatewayTimeoutErrorOriginal(...params);\n },\n);\n\nexport const GoneError = vi.fn(\n (\n ...params: ConstructorParameters<typeof GoneErrorOriginal>\n ): InstanceType<typeof GoneErrorOriginal> => {\n return new GoneErrorOriginal(...params);\n },\n);\n\nexport const IllogicalError = vi.fn(\n (\n ...params: ConstructorParameters<typeof IllogicalErrorOriginal>\n ): InstanceType<typeof IllogicalErrorOriginal> => {\n return new IllogicalErrorOriginal(...params);\n },\n);\n\nexport const InternalError = vi.fn(\n (\n ...params: ConstructorParameters<typeof InternalErrorOriginal>\n ): InstanceType<typeof InternalErrorOriginal> => {\n return new InternalErrorOriginal(...params);\n },\n);\n\nexport const MethodNotAllowedError = vi.fn(\n (\n ...params: ConstructorParameters<typeof MethodNotAllowedErrorOriginal>\n ): InstanceType<typeof MethodNotAllowedErrorOriginal> => {\n return new MethodNotAllowedErrorOriginal(...params);\n },\n);\n\nexport const MultiError = vi.fn(\n (\n ...params: ConstructorParameters<typeof MultiErrorOriginal>\n ): InstanceType<typeof MultiErrorOriginal> => {\n return new MultiErrorOriginal(...params);\n },\n);\n\nexport const NotFoundError = vi.fn(\n (\n ...params: ConstructorParameters<typeof NotFoundErrorOriginal>\n ): InstanceType<typeof NotFoundErrorOriginal> => {\n return new NotFoundErrorOriginal(...params);\n },\n);\n\nexport const NotImplementedError = vi.fn(\n (\n ...params: ConstructorParameters<typeof NotImplementedErrorOriginal>\n ): InstanceType<typeof NotImplementedErrorOriginal> => {\n return new NotImplementedErrorOriginal(...params);\n },\n);\n\nexport const ProjectError = vi.fn(\n (\n ...params: ConstructorParameters<typeof ProjectErrorOriginal>\n ): InstanceType<typeof ProjectErrorOriginal> => {\n return new ProjectErrorOriginal(...params);\n },\n);\n\nexport const ProjectMultiError = vi.fn(\n (\n ...params: ConstructorParameters<typeof ProjectMultiErrorOriginal>\n ): InstanceType<typeof ProjectMultiErrorOriginal> => {\n return new ProjectMultiErrorOriginal(...params);\n },\n);\n\nexport const RejectedError = vi.fn(\n (\n ...params: ConstructorParameters<typeof RejectedErrorOriginal>\n ): InstanceType<typeof RejectedErrorOriginal> => {\n return new RejectedErrorOriginal(...params);\n },\n);\n\nexport const TeapotError = vi.fn(\n (\n ...params: ConstructorParameters<typeof TeapotErrorOriginal>\n ): InstanceType<typeof TeapotErrorOriginal> => {\n return new TeapotErrorOriginal(...params);\n },\n);\n\nexport const UnauthorizedError = vi.fn(\n (\n ...params: ConstructorParameters<typeof UnauthorizedErrorOriginal>\n ): InstanceType<typeof UnauthorizedErrorOriginal> => {\n return new UnauthorizedErrorOriginal(...params);\n },\n);\n\nexport const UnavailableError = vi.fn(\n (\n ...params: ConstructorParameters<typeof UnavailableErrorOriginal>\n ): InstanceType<typeof UnavailableErrorOriginal> => {\n return new UnavailableErrorOriginal(...params);\n },\n);\n\nexport const UnhandledError = vi.fn(\n (\n ...params: ConstructorParameters<typeof UnhandledErrorOriginal>\n ): InstanceType<typeof UnhandledErrorOriginal> => {\n return new UnhandledErrorOriginal(...params);\n },\n);\n\nexport const UnreachableCodeError = vi.fn(\n (\n ...params: ConstructorParameters<typeof UnreachableCodeErrorOriginal>\n ): InstanceType<typeof UnreachableCodeErrorOriginal> => {\n return new UnreachableCodeErrorOriginal(...params);\n },\n);\n\n// @jaypie/core Functions\nexport const envBoolean = vi.fn((): boolean => {\n return true;\n});\n\nexport const placeholders = vi.fn(\n (...params: Parameters<typeof originalPlaceholders>) =>\n originalPlaceholders(...params),\n);\n\nexport const jaypieHandler = vi.fn(\n (\n handler: JaypieHandlerFunction,\n {\n setup = [] as JaypieLifecycleOption,\n teardown = [] as JaypieLifecycleOption,\n unavailable = force.boolean(process.env.PROJECT_UNAVAILABLE),\n validate = [] as JaypieLifecycleOption,\n }: JaypieHandlerOptions = {},\n ) => {\n return async (...args: GenericArgs) => {\n let result;\n let thrownError;\n if (unavailable) throw UnavailableError();\n validate = force.array(validate);\n for (const validator of validate) {\n if (typeof validator === \"function\") {\n const valid = await validator(...args);\n if (valid === false) {\n throw new BadRequestError();\n }\n }\n }\n try {\n setup = force.array(setup);\n for (const setupFunction of setup) {\n if (typeof setupFunction === \"function\") {\n await setupFunction(...args);\n }\n }\n // @ts-expect-error TODO: cannot resolve; fix when JaypieHandler moves to TypeScript\n result = handler(...args);\n } catch (error) {\n thrownError = error;\n }\n teardown = force.array(teardown);\n for (const teardownFunction of teardown) {\n if (typeof teardownFunction === \"function\") {\n try {\n await teardownFunction(...args);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n }\n }\n if (thrownError) {\n throw thrownError;\n }\n return result;\n };\n },\n);\n\nexport const sleep = vi.fn((): boolean => {\n return true;\n});\n\nexport const uuid = vi.fn(originalUuid);\n\n// @jaypie/datadog\nexport const submitMetric = vi.fn((): boolean => {\n return true;\n});\n\nexport const submitMetricSet = vi.fn((): boolean => {\n return true;\n});\n\n// @jaypie/express\nexport const expressHandler = vi.fn(\n (\n handlerOrProps: ExpressHandlerParameter,\n propsOrHandler?: ExpressHandlerParameter,\n ) => {\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 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 // @ts-expect-error TODO: cannot resolve; fix when JaypieHandler moves to TypeScript\n props.setup.unshift((req: { locals?: Record<string, unknown> }) => {\n if (!req || typeof req !== \"object\") {\n throw new BadRequestError(\"req must be an object\");\n }\n // Set req.locals if it doesn't exist\n if (!req.locals) req.locals = {};\n if (typeof req.locals !== \"object\" || Array.isArray(req.locals)) {\n throw new BadRequestError(\"req.locals must be an object\");\n }\n if (!req.locals._jaypie) req.locals._jaypie = {};\n });\n const localsSetup = async (\n localsReq: { locals: Record<string, unknown> },\n localsRes: unknown,\n ) => {\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (typeof props.locals![key] === \"function\") {\n localsReq.locals[key] = await props.locals;\n } else {\n localsReq.locals[key] = props.locals![key];\n }\n }\n };\n // @ts-expect-error TODO: cannot resolve; fix when JaypieHandler moves to TypeScript\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) {\n // In the mock context, if status is a function we are in a \"supertest\"\n if (\n supertestMode &&\n typeof (res as ExpressResponse).status === \"function\"\n ) {\n // In theory jaypieFunction has handled all errors\n const errorStatus =\n (error as ProjectErrorOriginal).status ||\n HTTP.CODE.INTERNAL_SERVER_ERROR;\n let errorResponse;\n if (typeof (error as ProjectErrorOriginal).json === \"function\") {\n errorResponse = (error as ProjectErrorOriginal).json();\n } else {\n // This should never happen\n errorResponse = UnhandledError().json();\n }\n (res as ExpressResponse).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 (\n supertestMode &&\n typeof (res as ExpressResponse).status === \"function\"\n ) {\n if (response) {\n if (typeof response === \"object\") {\n if (typeof (response as WithJsonFunction).json === \"function\") {\n (res as ExpressResponse).json(\n (response as WithJsonFunction).json(),\n );\n } else {\n (res as ExpressResponse).status(status).json(response);\n }\n } else if (typeof response === \"string\") {\n try {\n (res as ExpressResponse)\n .status(status)\n .json(JSON.parse(response));\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n (res as ExpressResponse).status(status).send(response);\n }\n } else if (response === true) {\n (res as ExpressResponse).status(HTTP.CODE.CREATED).send();\n } else {\n (res as ExpressResponse).status(status).send(response);\n }\n } else {\n (res as ExpressResponse).status(HTTP.CODE.NO_CONTENT).send();\n }\n } else {\n return response;\n }\n };\n },\n);\n\n// @jaypie/lambda\nexport const lambdaHandler = vi.fn(\n (handler: JaypieHandlerParameter, props: JaypieHandlerParameter = {}) => {\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(\n handler as JaypieHandlerFunction,\n props as JaypieHandlerOptions,\n )(event, context, ...extra);\n };\n },\n);\n\n// @jaypie/llm\nconst mockSend = vi.fn().mockResolvedValue(\"_MOCK_LLM_RESPONSE\");\nexport const Llm = Object.assign(\n vi.fn().mockImplementation((providerName = \"_MOCK_LLM_PROVIDER\") => ({\n _provider: providerName,\n _llm: {\n send: mockSend,\n },\n send: mockSend,\n })),\n { send: mockSend },\n);\n\n// @jaypie/mongoose\nexport const connect = vi.fn((): boolean => {\n return true;\n});\n\nexport const connectFromSecretEnv = vi.fn((): boolean => {\n return true;\n});\n\nexport const disconnect = vi.fn((): boolean => {\n return true;\n});\n\n// @jaypie/textract\nexport const MarkdownPage = vi\n .fn()\n .mockImplementation((page: TextractPageAdaptable) => {\n try {\n return new MarkdownPageOriginal(page);\n } catch {\n // eslint-disable-next-line no-console\n console.warn(\n \"[MarkdownPage] Actual implementation failed. To suppress this warning, manually mock the response with mockReturnValue\",\n );\n const mockDocument = new TextractDocument(\n JSON.parse(mockTextractContents),\n );\n // Double type assertion needed to bridge incompatible types\n return new MarkdownPageOriginal(\n mockDocument._pages[0] as unknown as TextractPageAdaptable,\n );\n }\n });\n\nexport const textractJsonToMarkdown = vi.fn(\n (textractResults: JsonReturn): string => {\n try {\n const result = textractJsonToMarkdownOriginal(textractResults);\n return result;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn(\n \"[textractJsonToMarkdown] Actual implementation failed. To suppress this warning, manually mock the response with mockReturnValue\",\n );\n return `_MOCK_TEXTRACT_JSON_TO_MARKDOWN_{{${textractResults}}}`;\n }\n },\n);\n\n// Export default for convenience\nexport default {\n // AWS\n getMessages,\n getSecret,\n getTextractJob,\n sendBatchMessages,\n sendMessage,\n sendTextractJob,\n // Core\n BadGatewayError,\n BadRequestError,\n ConfigurationError,\n envBoolean,\n ForbiddenError,\n GatewayTimeoutError,\n GoneError,\n HTTP,\n IllogicalError,\n InternalError,\n jaypieHandler,\n MethodNotAllowedError,\n MultiError,\n NotFoundError,\n NotImplementedError,\n placeholders,\n ProjectError,\n ProjectMultiError,\n RejectedError,\n sleep,\n TeapotError,\n UnauthorizedError,\n UnavailableError,\n UnhandledError,\n UnreachableCodeError,\n uuid,\n // Datadog\n submitMetric,\n submitMetricSet,\n // Express\n expressHandler,\n // Lambda\n lambdaHandler,\n // LLM\n Llm,\n // Mongoose\n connect,\n connectFromSecretEnv,\n disconnect,\n // Textract\n MarkdownPage,\n textractJsonToMarkdown,\n};\n"],"names":["placeholders","originalGetMessages","BadGatewayErrorOriginal","BadRequestErrorOriginal","ConfigurationErrorOriginal","ForbiddenErrorOriginal","GatewayTimeoutErrorOriginal","GoneErrorOriginal","IllogicalErrorOriginal","InternalErrorOriginal","MethodNotAllowedErrorOriginal","MultiErrorOriginal","NotFoundErrorOriginal","NotImplementedErrorOriginal","ProjectErrorOriginal","ProjectMultiErrorOriginal","RejectedErrorOriginal","TeapotErrorOriginal","UnauthorizedErrorOriginal","UnavailableErrorOriginal","UnhandledErrorOriginal","UnreachableCodeErrorOriginal","originalPlaceholders","originalUuid"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Replaces placeholders with real content
|
|
3
|
+
* Requires get() - https://vanillajstoolkit.com/helpers/get/
|
|
4
|
+
* (c) 2019 Chris Ferdinandi, MIT License, https://gomakethings.com
|
|
5
|
+
* @param {String} template The template string
|
|
6
|
+
* @param {String} local A local placeholder to use, if any
|
|
7
|
+
*/
|
|
8
|
+
declare function placeholders(template: string | (() => string), data?: Record<string, unknown>): string;
|
|
9
|
+
export default placeholders;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jaypie/testkit",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.15",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Finlayson Studio",
|
|
6
6
|
"type": "module",
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "8bfb97d556c01ca17cc04e50c30194290da77f6e"
|
|
56
56
|
}
|