@channel.io/app-sdk-server 0.16.5 → 0.17.1
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.d.ts +2 -0
- package/dist/__tests__/function-input-validator.test.d.ts.map +1 -0
- package/dist/__tests__/function-input-validator.test.js +34 -0
- package/dist/__tests__/function-input-validator.test.js.map +1 -0
- package/dist/discovery/extension-discovery.service.d.ts.map +1 -1
- package/dist/discovery/extension-discovery.service.js +2 -7
- package/dist/discovery/extension-discovery.service.js.map +1 -1
- package/dist/nestjs/channel-app.controller.test.d.ts +2 -0
- package/dist/nestjs/channel-app.controller.test.d.ts.map +1 -0
- package/dist/nestjs/channel-app.controller.test.js +37 -0
- package/dist/nestjs/channel-app.controller.test.js.map +1 -0
- package/dist/simple/channel-app.d.ts.map +1 -1
- package/dist/simple/channel-app.js +10 -5
- package/dist/simple/channel-app.js.map +1 -1
- package/dist/utils/function-input-validator.d.ts +3 -0
- package/dist/utils/function-input-validator.d.ts.map +1 -0
- package/dist/utils/function-input-validator.js +17 -0
- package/dist/utils/function-input-validator.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-input-validator.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/function-input-validator.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { parseFunctionInputParams } from "../utils/function-input-validator.js";
|
|
4
|
+
describe("parseFunctionInputParams", () => {
|
|
5
|
+
it("parses valid function input", () => {
|
|
6
|
+
const schema = z.object({ quantity: z.number() });
|
|
7
|
+
expect(parseFunctionInputParams("extension.cafe.addCartItem", schema, { quantity: 1 })).toEqual({
|
|
8
|
+
quantity: 1,
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
it("converts Zod input errors to ValidationError", () => {
|
|
12
|
+
const schema = z.object({ quantity: z.number() });
|
|
13
|
+
expect(() => parseFunctionInputParams("extension.cafe.addCartItem", schema, { quantity: "1" })).toThrowError(expect.objectContaining({
|
|
14
|
+
name: "ValidationError",
|
|
15
|
+
message: "Invalid input for function extension.cafe.addCartItem",
|
|
16
|
+
code: "VALIDATION_ERROR",
|
|
17
|
+
details: expect.arrayContaining([
|
|
18
|
+
expect.objectContaining({ path: ["quantity"], code: "invalid_type" }),
|
|
19
|
+
]),
|
|
20
|
+
}));
|
|
21
|
+
});
|
|
22
|
+
it("keeps messaging input key normalization", () => {
|
|
23
|
+
const schema = z.object({ userId: z.string() });
|
|
24
|
+
expect(parseFunctionInputParams("extension.messaging.send", schema, { user_id: "user-1" })).toEqual({ userId: "user-1" });
|
|
25
|
+
});
|
|
26
|
+
it("does not convert non-Zod errors", () => {
|
|
27
|
+
const inputError = new Error("preprocess failed");
|
|
28
|
+
const schema = z.preprocess(() => {
|
|
29
|
+
throw inputError;
|
|
30
|
+
}, z.string());
|
|
31
|
+
expect(() => parseFunctionInputParams("extension.example.run", schema, "value")).toThrow(inputError);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=function-input-validator.test.js.map
|
|
@@ -0,0 +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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-discovery.service.d.ts","sourceRoot":"","sources":["../../src/discovery/extension-discovery.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAe3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"extension-discovery.service.d.ts","sourceRoot":"","sources":["../../src/discovery/extension-discovery.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAe3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGnF,qBACa,yBAA0B,YAAW,YAAY;IAM1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAN5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8C;IACrE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;IACnE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;gBAGrD,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS;IAGvC,YAAY;IAKZ;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0C1B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA+BnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0FzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyDrB;;OAEG;IACH,aAAa,IAAI,iBAAiB,EAAE;IAIpC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIzD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI3D;;OAEG;IACH,eAAe,IAAI,gBAAgB,EAAE;IAIrC;;OAEG;IACH,kBAAkB,IAAI,gBAAgB,EAAE;IAIxC;;OAEG;IACH,gBAAgB,IAAI,gBAAgB,EAAE;IAItC;;OAEG;IACH,aAAa,IAAI,OAAO;CAGzB"}
|
|
@@ -12,7 +12,7 @@ import { Injectable, Logger } from "@nestjs/common";
|
|
|
12
12
|
import { DiscoveryService, Reflector } from "@nestjs/core";
|
|
13
13
|
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
14
14
|
import { EXTENSION_METADATA, FUNCTION_METADATA, FUNCTIONS_METADATA, INPUT_SCHEMA_METADATA, OUTPUT_SCHEMA_METADATA, DESCRIPTION_METADATA, PARAM_METADATA, FunctionParamType, } from "../decorators/index.js";
|
|
15
|
-
import {
|
|
15
|
+
import { parseFunctionInputParams } from "../utils/function-input-validator.js";
|
|
16
16
|
let ExtensionDiscoveryService = ExtensionDiscoveryService_1 = class ExtensionDiscoveryService {
|
|
17
17
|
discoveryService;
|
|
18
18
|
reflector;
|
|
@@ -155,12 +155,7 @@ let ExtensionDiscoveryService = ExtensionDiscoveryService_1 = class ExtensionDis
|
|
|
155
155
|
// Validate input if schema is defined
|
|
156
156
|
let validatedParams = params;
|
|
157
157
|
if (inputSchema) {
|
|
158
|
-
|
|
159
|
-
validatedParams = parseMessagingExtensionInputParams(inputSchema, params);
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
validatedParams = inputSchema.parse(params);
|
|
163
|
-
}
|
|
158
|
+
validatedParams = parseFunctionInputParams(fullName, inputSchema, params);
|
|
164
159
|
}
|
|
165
160
|
// Build arguments based on parameter decorators
|
|
166
161
|
const args = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-discovery.service.js","sourceRoot":"","sources":["../../src/discovery/extension-discovery.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,EAAa,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,iBAAiB,GAGlB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,
|
|
1
|
+
{"version":3,"file":"extension-discovery.service.js","sourceRoot":"","sources":["../../src/discovery/extension-discovery.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-app.controller.test.d.ts","sourceRoot":"","sources":["../../src/nestjs/channel-app.controller.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { HttpException, HttpStatus } from "@nestjs/common";
|
|
2
|
+
import { ValidationError } from "@channel.io/app-sdk-core";
|
|
3
|
+
import { describe, expect, it, vi } from "vitest";
|
|
4
|
+
import { ChannelAppController } from "./channel-app.controller.js";
|
|
5
|
+
describe("ChannelAppController", () => {
|
|
6
|
+
it("returns HTTP 400 for input validation errors", async () => {
|
|
7
|
+
const validationError = new ValidationError("Invalid function input", [
|
|
8
|
+
{ code: "invalid_type", path: ["quantity"] },
|
|
9
|
+
]);
|
|
10
|
+
const service = {
|
|
11
|
+
handleFunctionCall: vi.fn().mockRejectedValue(validationError),
|
|
12
|
+
};
|
|
13
|
+
const controller = new ChannelAppController(service);
|
|
14
|
+
try {
|
|
15
|
+
await controller.handleVersionedFunctions("v1", {
|
|
16
|
+
method: "extension.cafe.addCartItem",
|
|
17
|
+
context: {
|
|
18
|
+
caller: { type: "manager", id: "manager-1" },
|
|
19
|
+
channel: { id: "channel-1" },
|
|
20
|
+
},
|
|
21
|
+
params: { quantity: "1" },
|
|
22
|
+
});
|
|
23
|
+
expect.fail("Expected validation to fail");
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
expect(error).toBeInstanceOf(HttpException);
|
|
27
|
+
const httpError = error;
|
|
28
|
+
expect(httpError.getStatus()).toBe(HttpStatus.BAD_REQUEST);
|
|
29
|
+
expect(httpError.getResponse()).toEqual({
|
|
30
|
+
error: "VALIDATION_ERROR",
|
|
31
|
+
message: "Invalid function input",
|
|
32
|
+
details: [{ code: "invalid_type", path: ["quantity"] }],
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=channel-app.controller.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-app.controller.test.js","sourceRoot":"","sources":["../../src/nestjs/channel-app.controller.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,wBAAwB,EAAE;YACpE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE;SAC7C,CAAC,CAAC;QACH,MAAM,OAAO,GAAG;YACd,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC;SAC/B,CAAC;QAClC,MAAM,UAAU,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,wBAAwB,CAAC,IAAI,EAAE;gBAC9C,MAAM,EAAE,4BAA4B;gBACpC,OAAO,EAAE;oBACP,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE;oBAC5C,OAAO,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;iBAC7B;gBACD,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE;aAC1B,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,SAAS,GAAG,KAAsB,CAAC;YACzC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC3D,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC;gBACtC,KAAK,EAAE,kBAAkB;gBACzB,OAAO,EAAE,wBAAwB;gBACjC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-app.d.ts","sourceRoot":"","sources":["../../src/simple/channel-app.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAIlB,KAAK,YAAY,EAQlB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EACV,OAAO,EACP,mBAAmB,EACnB,oBAAoB,EAEpB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"channel-app.d.ts","sourceRoot":"","sources":["../../src/simple/channel-app.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAIlB,KAAK,YAAY,EAQlB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EACV,OAAO,EACP,mBAAmB,EACnB,oBAAoB,EAEpB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAalC,UAAU,wBAAwB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9D;AAED,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;gBAE/B,OAAO,EAAE,gBAAgB;IAIrC;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,SAAS,CAAC,CAAC,SAAS,EACjC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,EACpE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACjC,IAAI;IAIP;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,SAAS,CAAC,CAAC,SAAS,EACrC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,EACpE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACjC,IAAI;IAIP,OAAO,CAAC,cAAc;IAiCtB;;OAEG;IACH,QAAQ,IAAI,aAAa;CAe1B;AAED;;;;;GAKG;AACH,cACM,uBAAwB,YAAW,YAAY;IAKjD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;gBAI7C,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,EAEhD,OAAO,EAAE,gBAAgB;IAGtC,YAAY;YAcJ,YAAY;IAsCpB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsCrF,YAAY,IAAI,oBAAoB;IAIpC,gBAAgB,IAAI,oBAAoB;IAIxC,OAAO,CAAC,sBAAsB;CA0B/B;AAqDD,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -12,10 +12,10 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
12
12
|
};
|
|
13
13
|
import { Module, Injectable, Inject, Logger, Controller, Put, Body, Param, HttpException, HttpStatus, } from "@nestjs/common";
|
|
14
14
|
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
15
|
-
import { FunctionCallError, FunctionNotFoundError } from "@channel.io/app-sdk-core";
|
|
15
|
+
import { FunctionCallError, FunctionNotFoundError, ValidationError, } from "@channel.io/app-sdk-core";
|
|
16
16
|
import { AppStoreClient } from "../appstore/client.js";
|
|
17
17
|
import { normalizeExtensionResult } from "../utils/extension-result-normalizer.js";
|
|
18
|
-
import {
|
|
18
|
+
import { parseFunctionInputParams } from "../utils/function-input-validator.js";
|
|
19
19
|
const SIMPLE_FUNCTIONS = Symbol("SIMPLE_FUNCTIONS");
|
|
20
20
|
const SIMPLE_OPTIONS = Symbol("SIMPLE_OPTIONS");
|
|
21
21
|
/**
|
|
@@ -82,9 +82,7 @@ export class ChannelApp {
|
|
|
82
82
|
test,
|
|
83
83
|
handler: async (ctx, params) => {
|
|
84
84
|
const fullName = name.startsWith("extension.") ? name : `extension.${name}`;
|
|
85
|
-
const validated =
|
|
86
|
-
? parseMessagingExtensionInputParams(inputSchema, params)
|
|
87
|
-
: inputSchema.parse(params);
|
|
85
|
+
const validated = parseFunctionInputParams(fullName, inputSchema, params);
|
|
88
86
|
return handler(ctx, validated);
|
|
89
87
|
},
|
|
90
88
|
};
|
|
@@ -258,6 +256,13 @@ let ChannelAppSimpleController = class ChannelAppSimpleController {
|
|
|
258
256
|
if (error instanceof FunctionNotFoundError) {
|
|
259
257
|
throw new HttpException({ error: "FUNCTION_NOT_FOUND", message: error.message }, HttpStatus.NOT_FOUND);
|
|
260
258
|
}
|
|
259
|
+
if (error instanceof ValidationError) {
|
|
260
|
+
throw new HttpException({
|
|
261
|
+
error: "VALIDATION_ERROR",
|
|
262
|
+
message: error.message,
|
|
263
|
+
details: error.details,
|
|
264
|
+
}, HttpStatus.BAD_REQUEST);
|
|
265
|
+
}
|
|
261
266
|
throw new HttpException({
|
|
262
267
|
error: "INTERNAL_ERROR",
|
|
263
268
|
message: error instanceof Error ? error.message : "Unknown error",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-app.js","sourceRoot":"","sources":["../../src/simple/channel-app.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAEL,MAAM,EACN,UAAU,EACV,MAAM,EAEN,MAAM,EACN,UAAU,EACV,GAAG,EACH,IAAI,EACJ,KAAK,EACL,aAAa,EACb,UAAU,GACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAQrD,OAAO,
|
|
1
|
+
{"version":3,"file":"channel-app.js","sourceRoot":"","sources":["../../src/simple/channel-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-input-validator.d.ts","sourceRoot":"","sources":["../../src/utils/function-input-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAMvC,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAC3B,MAAM,EAAE,OAAO,GACd,CAAC,CAYH"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ValidationError } from "@channel.io/app-sdk-core";
|
|
2
|
+
import { ZodError } from "zod";
|
|
3
|
+
import { isMessagingExtensionMethod, parseMessagingExtensionInputParams, } from "./messaging-input-normalizer.js";
|
|
4
|
+
export function parseFunctionInputParams(functionName, inputSchema, params) {
|
|
5
|
+
try {
|
|
6
|
+
return isMessagingExtensionMethod(functionName)
|
|
7
|
+
? parseMessagingExtensionInputParams(inputSchema, params)
|
|
8
|
+
: inputSchema.parse(params);
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
if (error instanceof ZodError) {
|
|
12
|
+
throw new ValidationError(`Invalid input for function ${functionName}`, error.issues);
|
|
13
|
+
}
|
|
14
|
+
throw error;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=function-input-validator.js.map
|
|
@@ -0,0 +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;AAC3D,OAAO,EAAE,QAAQ,EAAU,MAAM,KAAK,CAAC;AACvC,OAAO,EACL,0BAA0B,EAC1B,kCAAkC,GACnC,MAAM,iCAAiC,CAAC;AAEzC,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,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,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.
|
|
3
|
+
"version": "0.17.1",
|
|
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.
|
|
28
|
+
"@channel.io/app-sdk-core": "0.17.1"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"@google-cloud/bigquery": "^8.3.1",
|