@channel.io/app-sdk-server 0.3.0 → 0.4.0

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,15 +1,32 @@
1
1
  import { describe, it, expect, vi, beforeEach } from "vitest";
2
2
  import { ChannelAppService } from "./channel-app.service.js";
3
- // Mock AppStoreClient
4
- vi.mock("../appstore/client.js", () => {
3
+ // Mock NativeFunctionClient
4
+ vi.mock("../native/client.js", () => {
5
5
  return {
6
- AppStoreClient: vi.fn().mockImplementation(() => ({
6
+ NativeFunctionClient: vi.fn().mockImplementation(() => ({
7
+ issueToken: vi.fn().mockResolvedValue({
8
+ accessToken: "mock-access-token",
9
+ refreshToken: "mock-refresh-token",
10
+ expiresIn: 3600,
11
+ }),
12
+ refreshToken: vi.fn().mockResolvedValue({
13
+ accessToken: "mock-refreshed-token",
14
+ refreshToken: "mock-new-refresh-token",
15
+ expiresIn: 3600,
16
+ }),
7
17
  registerExtension: vi.fn().mockResolvedValue({ success: true }),
8
18
  })),
19
+ NativeFunctionError: class NativeFunctionError extends Error {
20
+ },
9
21
  };
10
22
  });
11
- // Import after mock so we can inspect calls
12
- import { AppStoreClient } from "../appstore/client.js";
23
+ import { NativeFunctionClient } from "../native/client.js";
24
+ function createMockHttpAdapterHost() {
25
+ const mockServer = { once: vi.fn() };
26
+ return {
27
+ httpAdapter: { getHttpServer: () => mockServer },
28
+ };
29
+ }
13
30
  function createMockDiscoveryService(extensions = []) {
14
31
  return {
15
32
  hasExtensions: () => extensions.length > 0,
@@ -20,13 +37,19 @@ function createMockDiscoveryService(extensions = []) {
20
37
  };
21
38
  }
22
39
  function createService(options, discoveryService) {
23
- // Use Object.defineProperty to set the private fields since the constructor
24
- // uses @Inject/@Optional decorators that we can't use outside NestJS
40
+ // Use Object.create to bypass NestJS DI decorators (@Inject, @Optional)
25
41
  const service = Object.create(ChannelAppService.prototype);
26
42
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
43
  const s = service;
28
44
  s.options = options;
29
45
  s.discoveryService = discoveryService;
46
+ s.httpAdapterHost = createMockHttpAdapterHost();
47
+ // Instantiate the mocked NativeFunctionClient (mirrors what the real constructor does)
48
+ s.nativeClient = new NativeFunctionClient({
49
+ appStoreUrl: options.appStoreUrl,
50
+ debug: options.debug,
51
+ });
52
+ s.cachedToken = null;
30
53
  s.logger = {
31
54
  log: vi.fn(),
32
55
  warn: vi.fn(),
@@ -35,12 +58,31 @@ function createService(options, discoveryService) {
35
58
  };
36
59
  return service;
37
60
  }
61
+ /** Get the nativeClient mock instance from a service */
62
+ function getClient(service) {
63
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
+ return service.nativeClient;
65
+ }
66
+ /**
67
+ * Simulate the HTTP server 'listening' event.
68
+ * onApplicationBootstrap registers a once('listening') handler — this fires it.
69
+ */
70
+ async function fireListeningEvent(service) {
71
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
72
+ const mockServer = service.httpAdapterHost.httpAdapter.getHttpServer();
73
+ const call = mockServer.once.mock.calls.find(([event]) => event === "listening");
74
+ if (call)
75
+ await call[1]();
76
+ }
38
77
  describe("ChannelAppService", () => {
39
78
  beforeEach(() => {
40
79
  vi.clearAllMocks();
41
80
  });
81
+ // ============================================
82
+ // Auto-registration (via lifecycle hooks)
83
+ // ============================================
42
84
  describe("core extension auto-registration", () => {
43
- it("should register 'core' extension when no extensions are discovered and autoRegister is true", async () => {
85
+ it("should register 'core' extension after listening when autoRegister is true", async () => {
44
86
  const onAutoRegister = vi.fn();
45
87
  const options = {
46
88
  appId: "test-app",
@@ -48,32 +90,19 @@ describe("ChannelAppService", () => {
48
90
  autoRegister: true,
49
91
  onAutoRegister,
50
92
  };
51
- const discovery = createMockDiscoveryService([]);
52
- const service = createService(options, discovery);
53
- await service.onModuleInit();
54
- // Verify AppStoreClient was constructed with correct config
55
- expect(AppStoreClient).toHaveBeenCalledWith({
56
- appId: "test-app",
57
- appSecret: "test-secret",
58
- appStoreUrl: undefined,
59
- debug: undefined,
60
- });
61
- // Verify registerExtension was called with "core" and "v1"
62
- const clientInstance = vi.mocked(AppStoreClient).mock.results[0]?.value;
63
- expect(clientInstance.registerExtension).toHaveBeenCalledWith({
64
- extensionName: "core",
65
- systemVersion: "v1",
66
- });
67
- // Verify callback was called with success result
93
+ const service = createService(options, createMockDiscoveryService([]));
94
+ const client = getClient(service);
95
+ service.onApplicationBootstrap();
96
+ // Nothing registered yet — server not listening
97
+ expect(client.issueToken).not.toHaveBeenCalled();
98
+ await fireListeningEvent(service);
99
+ expect(client.issueToken).toHaveBeenCalledWith("test-secret");
100
+ expect(client.registerExtension).toHaveBeenCalledWith("test-app", "core", "v1", "mock-access-token");
68
101
  expect(onAutoRegister).toHaveBeenCalledWith([
69
- {
70
- extensionName: "core",
71
- systemVersion: "v1",
72
- success: true,
73
- },
102
+ { extensionName: "core", systemVersion: "v1", success: true },
74
103
  ]);
75
104
  });
76
- it("should register 'core' extension when discoveryService is undefined and autoRegister is true", async () => {
105
+ it("should register 'core' when discoveryService is undefined and autoRegister is true", async () => {
77
106
  const onAutoRegister = vi.fn();
78
107
  const options = {
79
108
  appId: "test-app",
@@ -82,68 +111,45 @@ describe("ChannelAppService", () => {
82
111
  onAutoRegister,
83
112
  };
84
113
  const service = createService(options, undefined);
85
- await service.onModuleInit();
86
- const clientInstance = vi.mocked(AppStoreClient).mock.results[0]?.value;
87
- expect(clientInstance.registerExtension).toHaveBeenCalledWith({
88
- extensionName: "core",
89
- systemVersion: "v1",
90
- });
114
+ const client = getClient(service);
115
+ service.onApplicationBootstrap();
116
+ await fireListeningEvent(service);
117
+ expect(client.registerExtension).toHaveBeenCalledWith("test-app", "core", "v1", "mock-access-token");
91
118
  expect(onAutoRegister).toHaveBeenCalledWith([
92
- {
93
- extensionName: "core",
94
- systemVersion: "v1",
95
- success: true,
96
- },
119
+ { extensionName: "core", systemVersion: "v1", success: true },
97
120
  ]);
98
121
  });
99
122
  it("should register discovered extensions instead of 'core' when extensions exist", async () => {
100
- const onAutoRegister = vi.fn();
101
123
  const options = {
102
124
  appId: "test-app",
103
125
  appSecret: "test-secret",
104
126
  autoRegister: true,
105
- onAutoRegister,
106
127
  };
107
128
  const extensions = [
108
- {
109
- name: "calendar",
110
- systemVersion: "v1",
111
- exclusive: false,
112
- instance: {},
113
- functions: [],
114
- },
129
+ { name: "calendar", systemVersion: "v1", exclusive: false, instance: {}, functions: [] },
115
130
  ];
116
- const discovery = createMockDiscoveryService(extensions);
117
- const service = createService(options, discovery);
118
- await service.onModuleInit();
119
- const clientInstance = vi.mocked(AppStoreClient).mock.results[0]?.value;
120
- expect(clientInstance.registerExtension).toHaveBeenCalledWith({
121
- extensionName: "calendar",
122
- systemVersion: "v1",
123
- });
124
- expect(clientInstance.registerExtension).not.toHaveBeenCalledWith({
125
- extensionName: "core",
126
- systemVersion: "v1",
127
- });
131
+ const service = createService(options, createMockDiscoveryService(extensions));
132
+ const client = getClient(service);
133
+ service.onApplicationBootstrap();
134
+ await fireListeningEvent(service);
135
+ expect(client.registerExtension).toHaveBeenCalledWith("test-app", "calendar", "v1", "mock-access-token");
136
+ expect(client.registerExtension).not.toHaveBeenCalledWith("test-app", "core", "v1", expect.anything());
128
137
  });
129
- it("should not auto-register anything when autoRegister is false", async () => {
138
+ it("should not register anything when autoRegister is false", async () => {
130
139
  const options = {
131
140
  appId: "test-app",
132
141
  appSecret: "test-secret",
133
142
  autoRegister: false,
134
143
  };
135
- const discovery = createMockDiscoveryService([]);
136
- const service = createService(options, discovery);
137
- await service.onModuleInit();
138
- expect(AppStoreClient).not.toHaveBeenCalled();
144
+ const service = createService(options, createMockDiscoveryService([]));
145
+ const client = getClient(service);
146
+ service.onApplicationBootstrap();
147
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
148
+ const mockServer = service.httpAdapterHost.httpAdapter.getHttpServer();
149
+ expect(mockServer.once).not.toHaveBeenCalled();
150
+ expect(client.issueToken).not.toHaveBeenCalled();
139
151
  });
140
- it("should handle registration failure for core extension gracefully", async () => {
141
- vi.mocked(AppStoreClient).mockImplementationOnce(() => ({
142
- registerExtension: vi.fn().mockResolvedValue({
143
- success: false,
144
- error_message: "Registration denied",
145
- }),
146
- }));
152
+ it("should handle registration failure gracefully", async () => {
147
153
  const onAutoRegister = vi.fn();
148
154
  const options = {
149
155
  appId: "test-app",
@@ -151,9 +157,14 @@ describe("ChannelAppService", () => {
151
157
  autoRegister: true,
152
158
  onAutoRegister,
153
159
  };
154
- const discovery = createMockDiscoveryService([]);
155
- const service = createService(options, discovery);
156
- await service.onModuleInit();
160
+ const service = createService(options, createMockDiscoveryService([]));
161
+ const client = getClient(service);
162
+ vi.mocked(client.registerExtension).mockResolvedValueOnce({
163
+ success: false,
164
+ errorMessage: "Registration denied",
165
+ });
166
+ service.onApplicationBootstrap();
167
+ await fireListeningEvent(service);
157
168
  expect(onAutoRegister).toHaveBeenCalledWith([
158
169
  {
159
170
  extensionName: "core",
@@ -163,10 +174,7 @@ describe("ChannelAppService", () => {
163
174
  },
164
175
  ]);
165
176
  });
166
- it("should handle registration exception for core extension gracefully", async () => {
167
- vi.mocked(AppStoreClient).mockImplementationOnce(() => ({
168
- registerExtension: vi.fn().mockRejectedValue(new Error("Network error")),
169
- }));
177
+ it("should handle registration exception gracefully", async () => {
170
178
  const onAutoRegister = vi.fn();
171
179
  const options = {
172
180
  appId: "test-app",
@@ -174,19 +182,69 @@ describe("ChannelAppService", () => {
174
182
  autoRegister: true,
175
183
  onAutoRegister,
176
184
  };
177
- const discovery = createMockDiscoveryService([]);
178
- const service = createService(options, discovery);
179
- await service.onModuleInit();
185
+ const service = createService(options, createMockDiscoveryService([]));
186
+ const client = getClient(service);
187
+ vi.mocked(client.registerExtension).mockRejectedValueOnce(new Error("Network error"));
188
+ service.onApplicationBootstrap();
189
+ await fireListeningEvent(service);
180
190
  expect(onAutoRegister).toHaveBeenCalledWith([
181
- {
182
- extensionName: "core",
183
- systemVersion: "v1",
184
- success: false,
185
- error: "Network error",
186
- },
191
+ { extensionName: "core", systemVersion: "v1", success: false, error: "Network error" },
187
192
  ]);
188
193
  });
189
194
  });
195
+ // ============================================
196
+ // Token caching
197
+ // ============================================
198
+ describe("token caching", () => {
199
+ it("should call issueToken only once across multiple registerExtensions calls", async () => {
200
+ const options = {
201
+ appId: "test-app",
202
+ appSecret: "test-secret",
203
+ autoRegister: true,
204
+ };
205
+ const service = createService(options, createMockDiscoveryService([]));
206
+ const client = getClient(service);
207
+ await service.autoRegisterExtensions();
208
+ await service.autoRegisterExtensions();
209
+ expect(client.issueToken).toHaveBeenCalledTimes(1);
210
+ expect(client.refreshToken).not.toHaveBeenCalled();
211
+ });
212
+ it("should use refreshToken when cached token is about to expire", async () => {
213
+ const options = {
214
+ appId: "test-app",
215
+ appSecret: "test-secret",
216
+ autoRegister: true,
217
+ };
218
+ const service = createService(options, createMockDiscoveryService([]));
219
+ const client = getClient(service);
220
+ await service.autoRegisterExtensions();
221
+ // Expire the cached token (within the 5-min buffer)
222
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
223
+ service.cachedToken.expiresAt = Date.now() + 60 * 1000;
224
+ await service.autoRegisterExtensions();
225
+ expect(client.refreshToken).toHaveBeenCalledTimes(1);
226
+ expect(client.issueToken).toHaveBeenCalledTimes(1);
227
+ });
228
+ it("should fall back to issueToken when refreshToken fails", async () => {
229
+ const options = {
230
+ appId: "test-app",
231
+ appSecret: "test-secret",
232
+ autoRegister: true,
233
+ };
234
+ const service = createService(options, createMockDiscoveryService([]));
235
+ const client = getClient(service);
236
+ await service.autoRegisterExtensions();
237
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
238
+ service.cachedToken.expiresAt = Date.now() + 60 * 1000;
239
+ vi.mocked(client.refreshToken).mockRejectedValueOnce(new Error("Unauthorized"));
240
+ await service.autoRegisterExtensions();
241
+ expect(client.refreshToken).toHaveBeenCalledTimes(1);
242
+ expect(client.issueToken).toHaveBeenCalledTimes(2);
243
+ });
244
+ });
245
+ // ============================================
246
+ // getRegisteredVersions
247
+ // ============================================
190
248
  describe("getRegisteredVersions", () => {
191
249
  it("should return default version when no extensions and autoRegister is true", () => {
192
250
  const options = {
@@ -194,8 +252,7 @@ describe("ChannelAppService", () => {
194
252
  appSecret: "test-secret",
195
253
  autoRegister: true,
196
254
  };
197
- const discovery = createMockDiscoveryService([]);
198
- const service = createService(options, discovery);
255
+ const service = createService(options, createMockDiscoveryService([]));
199
256
  expect(service.getRegisteredVersions()).toEqual(["v1"]);
200
257
  });
201
258
  it("should return empty array when no extensions and autoRegister is false", () => {
@@ -204,8 +261,7 @@ describe("ChannelAppService", () => {
204
261
  appSecret: "test-secret",
205
262
  autoRegister: false,
206
263
  };
207
- const discovery = createMockDiscoveryService([]);
208
- const service = createService(options, discovery);
264
+ const service = createService(options, createMockDiscoveryService([]));
209
265
  expect(service.getRegisteredVersions()).toEqual([]);
210
266
  });
211
267
  it("should return versions from discovered extensions", () => {
@@ -215,19 +271,15 @@ describe("ChannelAppService", () => {
215
271
  autoRegister: true,
216
272
  };
217
273
  const extensions = [
218
- {
219
- name: "calendar",
220
- systemVersion: "v2",
221
- exclusive: false,
222
- instance: {},
223
- functions: [],
224
- },
274
+ { name: "calendar", systemVersion: "v2", exclusive: false, instance: {}, functions: [] },
225
275
  ];
226
- const discovery = createMockDiscoveryService(extensions);
227
- const service = createService(options, discovery);
276
+ const service = createService(options, createMockDiscoveryService(extensions));
228
277
  expect(service.getRegisteredVersions()).toEqual(["v2"]);
229
278
  });
230
279
  });
280
+ // ============================================
281
+ // Static constants
282
+ // ============================================
231
283
  describe("static constants", () => {
232
284
  it("should expose CORE_EXTENSION_NAME as 'core'", () => {
233
285
  expect(ChannelAppService.CORE_EXTENSION_NAME).toBe("core");
@@ -1 +1 @@
1
- {"version":3,"file":"channel-app.service.test.js","sourceRoot":"","sources":["../../src/nestjs/channel-app.service.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAK7D,sBAAsB;AACtB,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACpC,OAAO;QACL,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;YAChD,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;SAChE,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,4CAA4C;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,SAAS,0BAA0B,CACjC,aAAkC,EAAE;IAEpC,OAAO;QACL,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAC1C,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU;QAC/B,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QACvE,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS;QAC5B,eAAe,EAAE,GAAG,EAAE,CAAC,EAAE;KACc,CAAC;AAC5C,CAAC;AAED,SAAS,aAAa,CACpB,OAAgC,EAChC,gBAA4C;IAE5C,4EAA4E;IAC5E,qEAAqE;IACrE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAsB,CAAC;IAChF,8DAA8D;IAC9D,MAAM,CAAC,GAAG,OAAc,CAAC;IACzB,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;IACpB,CAAC,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IACtC,CAAC,CAAC,MAAM,GAAG;QACT,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;QACZ,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;QACb,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;KACf,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAChD,EAAE,CAAC,6FAA6F,EAAE,KAAK,IAAI,EAAE;YAC3G,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,OAAO,GAA4B;gBACvC,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,IAAI;gBAClB,cAAc;aACf,CAAC;YAEF,MAAM,SAAS,GAAG,0BAA0B,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAElD,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;YAE7B,4DAA4D;YAC5D,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC;gBAC1C,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,aAAa;gBACxB,WAAW,EAAE,SAAS;gBACtB,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;YAEH,2DAA2D;YAC3D,MAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;YACxE,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC;gBAC5D,aAAa,EAAE,MAAM;gBACrB,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YAEH,iDAAiD;YACjD,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC;gBAC1C;oBACE,aAAa,EAAE,MAAM;oBACrB,aAAa,EAAE,IAAI;oBACnB,OAAO,EAAE,IAAI;iBACd;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8FAA8F,EAAE,KAAK,IAAI,EAAE;YAC5G,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,OAAO,GAA4B;gBACvC,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,IAAI;gBAClB,cAAc;aACf,CAAC;YAEF,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAElD,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;YAE7B,MAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;YACxE,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC;gBAC5D,aAAa,EAAE,MAAM;gBACrB,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YAEH,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC;gBAC1C;oBACE,aAAa,EAAE,MAAM;oBACrB,aAAa,EAAE,IAAI;oBACnB,OAAO,EAAE,IAAI;iBACd;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;YAC7F,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,OAAO,GAA4B;gBACvC,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,IAAI;gBAClB,cAAc;aACf,CAAC;YAEF,MAAM,UAAU,GAAwB;gBACtC;oBACE,IAAI,EAAE,UAAU;oBAChB,aAAa,EAAE,IAAI;oBACnB,SAAS,EAAE,KAAK;oBAChB,QAAQ,EAAE,EAAE;oBACZ,SAAS,EAAE,EAAE;iBACd;aACF,CAAC;YACF,MAAM,SAAS,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAElD,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;YAE7B,MAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;YACxE,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC;gBAC5D,aAAa,EAAE,UAAU;gBACzB,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC;gBAChE,aAAa,EAAE,MAAM;gBACrB,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,OAAO,GAA4B;gBACvC,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,KAAK;aACpB,CAAC;YAEF,MAAM,SAAS,GAAG,0BAA0B,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAElD,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;YAE7B,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,sBAAsB,CAC9C,GAAG,EAAE,CACH,CAAC;gBACC,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;oBAC3C,OAAO,EAAE,KAAK;oBACd,aAAa,EAAE,qBAAqB;iBACrC,CAAC;aACH,CAAQ,CACZ,CAAC;YAEF,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,OAAO,GAA4B;gBACvC,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,IAAI;gBAClB,cAAc;aACf,CAAC;YAEF,MAAM,SAAS,GAAG,0BAA0B,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAElD,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;YAE7B,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC;gBAC1C;oBACE,aAAa,EAAE,MAAM;oBACrB,aAAa,EAAE,IAAI;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,qBAAqB;iBAC7B;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,sBAAsB,CAC9C,GAAG,EAAE,CACH,CAAC;gBACC,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;aACzE,CAAQ,CACZ,CAAC;YAEF,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,OAAO,GAA4B;gBACvC,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,IAAI;gBAClB,cAAc;aACf,CAAC;YAEF,MAAM,SAAS,GAAG,0BAA0B,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAElD,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;YAE7B,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC;gBAC1C;oBACE,aAAa,EAAE,MAAM;oBACrB,aAAa,EAAE,IAAI;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,eAAe;iBACvB;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;YACnF,MAAM,OAAO,GAA4B;gBACvC,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,IAAI;aACnB,CAAC;YAEF,MAAM,SAAS,GAAG,0BAA0B,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAElD,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;YAChF,MAAM,OAAO,GAA4B;gBACvC,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,KAAK;aACpB,CAAC;YAEF,MAAM,SAAS,GAAG,0BAA0B,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAElD,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,OAAO,GAA4B;gBACvC,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,IAAI;aACnB,CAAC;YAEF,MAAM,UAAU,GAAwB;gBACtC;oBACE,IAAI,EAAE,UAAU;oBAChB,aAAa,EAAE,IAAI;oBACnB,SAAS,EAAE,KAAK;oBAChB,QAAQ,EAAE,EAAE;oBACZ,SAAS,EAAE,EAAE;iBACd;aACF,CAAC;YACF,MAAM,SAAS,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAElD,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"channel-app.service.test.js","sourceRoot":"","sources":["../../src/nestjs/channel-app.service.test.ts"],"names":[],"mappings":"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"}
@@ -21,8 +21,8 @@ export interface ChannelAppModuleOptions {
21
21
  */
22
22
  appStoreUrl?: string;
23
23
  /**
24
- * Callback called after auto-registration completes
25
- * Useful for logging or error handling
24
+ * Callback invoked after extension registration completes.
25
+ * Useful for logging or error handling.
26
26
  */
27
27
  onAutoRegister?: (results: AutoRegisterResult[]) => void;
28
28
  /**
@@ -56,7 +56,7 @@ type ModuleImport = Type | DynamicModule | Promise<DynamicModule> | ForwardRefer
56
56
  */
57
57
  export interface ChannelAppModuleAsyncOptions {
58
58
  /** Factory function that returns module options */
59
- useFactory: (...args: unknown[]) => Promise<ChannelAppModuleOptions> | ChannelAppModuleOptions;
59
+ useFactory: (...args: any[]) => Promise<ChannelAppModuleOptions> | ChannelAppModuleOptions;
60
60
  /** Dependencies to inject into the factory */
61
61
  inject?: InjectionToken[];
62
62
  /** Modules to import */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/nestjs/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IACzD;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,KAAK,YAAY,GAAG,IAAI,GAAG,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,mDAAmD;IACnD,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,CAAC;IAC/F,8CAA8C;IAC9C,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,wBAAwB;IACxB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,eAAgC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/nestjs/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IACzD;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,KAAK,YAAY,GAAG,IAAI,GAAG,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,mDAAmD;IAEnD,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,CAAC;IAC3F,8CAA8C;IAC9C,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,wBAAwB;IACxB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,eAAgC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/nestjs/types.ts"],"names":[],"mappings":"AAqEA;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/nestjs/types.ts"],"names":[],"mappings":"AAsEA;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { FunctionContext } from "../native/types.js";
1
+ import type { Context } from "@channel.io/app-sdk-core";
2
2
  /**
3
3
  * Options for creating a mock context
4
4
  */
@@ -28,5 +28,5 @@ export interface MockContextOptions {
28
28
  * const result = await extension.myFunction(ctx, params);
29
29
  * ```
30
30
  */
31
- export declare function createMockContext(options?: MockContextOptions): FunctionContext;
31
+ export declare function createMockContext(options?: MockContextOptions): Context;
32
32
  //# sourceMappingURL=mock-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock-context.d.ts","sourceRoot":"","sources":["../../src/testing/mock-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC3C,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,eAAe,CAoBnF"}
1
+ {"version":3,"file":"mock-context.d.ts","sourceRoot":"","sources":["../../src/testing/mock-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC3C,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAoB3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-context.js","sourceRoot":"","sources":["../../src/testing/mock-context.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IAChE,MAAM,GAAG,GAAoB;QAC3B,OAAO,EAAE;YACP,EAAE,EAAE,OAAO,CAAC,SAAS,IAAI,iBAAiB;SAC3C;QACD,MAAM,EAAE;YACN,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;YACrC,EAAE,EAAE,OAAO,CAAC,QAAQ,IAAI,gBAAgB;SACzC;KACF,CAAC;IAEF,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACzC,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAC9C,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"mock-context.js","sourceRoot":"","sources":["../../src/testing/mock-context.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IAChE,MAAM,GAAG,GAAY;QACnB,OAAO,EAAE;YACP,EAAE,EAAE,OAAO,CAAC,SAAS,IAAI,iBAAiB;SAC3C;QACD,MAAM,EAAE;YACN,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;YACrC,EAAE,EAAE,OAAO,CAAC,QAAQ,IAAI,gBAAgB;SACzC;KACF,CAAC;IAEF,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACzC,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAC9C,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@channel.io/app-sdk-server",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "NestJS server SDK for Channel.io apps",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -23,7 +23,7 @@
23
23
  "dependencies": {
24
24
  "zod": "^3.24.1",
25
25
  "zod-to-json-schema": "^3.24.1",
26
- "@channel.io/app-sdk-core": "0.3.0"
26
+ "@channel.io/app-sdk-core": "0.4.0"
27
27
  },
28
28
  "peerDependencies": {
29
29
  "@nestjs/common": ">=10.0.0",