@channel.io/app-sdk-server 0.17.1 → 0.17.2
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/__tests__/function-input-validator.test.js +16 -0
- package/dist/__tests__/function-input-validator.test.js.map +1 -1
- package/dist/utils/function-input-validator.d.ts +1 -1
- package/dist/utils/function-input-validator.d.ts.map +1 -1
- package/dist/utils/function-input-validator.js +9 -2
- package/dist/utils/function-input-validator.js.map +1 -1
- package/package.json +2 -2
|
@@ -19,6 +19,22 @@ describe("parseFunctionInputParams", () => {
|
|
|
19
19
|
]),
|
|
20
20
|
}));
|
|
21
21
|
});
|
|
22
|
+
it("converts Zod errors created by another module instance", () => {
|
|
23
|
+
const crossModuleError = Object.assign(new Error("Invalid input"), {
|
|
24
|
+
name: "ZodError",
|
|
25
|
+
issues: [{ code: "invalid_type", path: ["quantity"] }],
|
|
26
|
+
});
|
|
27
|
+
const schema = {
|
|
28
|
+
parse: () => {
|
|
29
|
+
throw crossModuleError;
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
expect(() => parseFunctionInputParams("extension.cafe.addCartItem", schema, {})).toThrowError(expect.objectContaining({
|
|
33
|
+
name: "ValidationError",
|
|
34
|
+
code: "VALIDATION_ERROR",
|
|
35
|
+
details: crossModuleError.issues,
|
|
36
|
+
}));
|
|
37
|
+
});
|
|
22
38
|
it("keeps messaging input key normalization", () => {
|
|
23
39
|
const schema = z.object({ userId: z.string() });
|
|
24
40
|
expect(parseFunctionInputParams("extension.messaging.send", schema, { user_id: "user-1" })).toEqual({ userId: "user-1" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-input-validator.test.js","sourceRoot":"","sources":["../../src/__tests__/function-input-validator.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAElD,MAAM,CAAC,wBAAwB,CAAC,4BAA4B,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAC7F;YACE,QAAQ,EAAE,CAAC;SACZ,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAElD,MAAM,CAAC,GAAG,EAAE,CACV,wBAAwB,CAAC,4BAA4B,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAClF,CAAC,YAAY,CACZ,MAAM,CAAC,gBAAgB,CAAC;YACtB,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,uDAAuD;YAChE,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC;gBAC9B,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;aACtE,CAAC;SACH,CAAoB,CACtB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEhD,MAAM,CACJ,wBAAwB,CAAC,0BAA0B,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CACpF,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;YAC/B,MAAM,UAAU,CAAC;QACnB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAEf,MAAM,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CACtF,UAAU,CACX,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"function-input-validator.test.js","sourceRoot":"","sources":["../../src/__tests__/function-input-validator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-input-validator.d.ts","sourceRoot":"","sources":["../../src/utils/function-input-validator.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"function-input-validator.d.ts","sourceRoot":"","sources":["../../src/utils/function-input-validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsB7B,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAC3B,MAAM,EAAE,OAAO,GACd,CAAC,CAYH"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { ValidationError } from "@channel.io/app-sdk-core";
|
|
2
|
-
import { ZodError } from "zod";
|
|
3
2
|
import { isMessagingExtensionMethod, parseMessagingExtensionInputParams, } from "./messaging-input-normalizer.js";
|
|
3
|
+
function isZodErrorLike(error) {
|
|
4
|
+
return (typeof error === "object" &&
|
|
5
|
+
error !== null &&
|
|
6
|
+
"name" in error &&
|
|
7
|
+
error.name === "ZodError" &&
|
|
8
|
+
"issues" in error &&
|
|
9
|
+
Array.isArray(error.issues));
|
|
10
|
+
}
|
|
4
11
|
export function parseFunctionInputParams(functionName, inputSchema, params) {
|
|
5
12
|
try {
|
|
6
13
|
return isMessagingExtensionMethod(functionName)
|
|
@@ -8,7 +15,7 @@ export function parseFunctionInputParams(functionName, inputSchema, params) {
|
|
|
8
15
|
: inputSchema.parse(params);
|
|
9
16
|
}
|
|
10
17
|
catch (error) {
|
|
11
|
-
if (error
|
|
18
|
+
if (isZodErrorLike(error)) {
|
|
12
19
|
throw new ValidationError(`Invalid input for function ${functionName}`, error.issues);
|
|
13
20
|
}
|
|
14
21
|
throw error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-input-validator.js","sourceRoot":"","sources":["../../src/utils/function-input-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"function-input-validator.js","sourceRoot":"","sources":["../../src/utils/function-input-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EACL,0BAA0B,EAC1B,kCAAkC,GACnC,MAAM,iCAAiC,CAAC;AAOzC,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,KAAK,CAAC,IAAI,KAAK,UAAU;QACzB,QAAQ,IAAI,KAAK;QACjB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,YAAoB,EACpB,WAA2B,EAC3B,MAAe;IAEf,IAAI,CAAC;QACH,OAAO,0BAA0B,CAAC,YAAY,CAAC;YAC7C,CAAC,CAAC,kCAAkC,CAAC,WAAW,EAAE,MAAM,CAAC;YACzD,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,eAAe,CAAC,8BAA8B,YAAY,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@channel.io/app-sdk-server",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.2",
|
|
4
4
|
"description": "NestJS server SDK for Channel.io apps",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"protobufjs": "^8.7.1",
|
|
26
26
|
"zod": "^3.24.1",
|
|
27
27
|
"zod-to-json-schema": "^3.25.2",
|
|
28
|
-
"@channel.io/app-sdk-core": "0.17.
|
|
28
|
+
"@channel.io/app-sdk-core": "0.17.2"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"@google-cloud/bigquery": "^8.3.1",
|