@channel.io/app-sdk-server 0.1.1 → 0.3.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.
- package/dist/__tests__/decorators.test.js +68 -7
- package/dist/__tests__/decorators.test.js.map +1 -1
- package/dist/__tests__/native-client.test.d.ts +2 -0
- package/dist/__tests__/native-client.test.d.ts.map +1 -0
- package/dist/__tests__/native-client.test.js +256 -0
- package/dist/__tests__/native-client.test.js.map +1 -0
- package/dist/__tests__/proxy-api.test.d.ts +2 -0
- package/dist/__tests__/proxy-api.test.d.ts.map +1 -0
- package/dist/__tests__/proxy-api.test.js +273 -0
- package/dist/__tests__/proxy-api.test.js.map +1 -0
- package/dist/__tests__/signature.test.d.ts +2 -0
- package/dist/__tests__/signature.test.d.ts.map +1 -0
- package/dist/__tests__/signature.test.js +172 -0
- package/dist/__tests__/signature.test.js.map +1 -0
- package/dist/__tests__/testing-utils.test.js +2 -2
- package/dist/__tests__/testing-utils.test.js.map +1 -1
- package/dist/__tests__/token-manager.test.d.ts +2 -0
- package/dist/__tests__/token-manager.test.d.ts.map +1 -0
- package/dist/__tests__/token-manager.test.js +624 -0
- package/dist/__tests__/token-manager.test.js.map +1 -0
- package/dist/decorators/extension-names.d.ts +3 -0
- package/dist/decorators/extension-names.d.ts.map +1 -0
- package/dist/decorators/extension-names.js +12 -0
- package/dist/decorators/extension-names.js.map +1 -0
- package/dist/decorators/extension.decorator.d.ts +4 -1
- package/dist/decorators/extension.decorator.d.ts.map +1 -1
- package/dist/decorators/extension.decorator.js +5 -0
- package/dist/decorators/extension.decorator.js.map +1 -1
- package/dist/decorators/function.decorator.d.ts.map +1 -1
- package/dist/decorators/function.decorator.js +3 -0
- package/dist/decorators/function.decorator.js.map +1 -1
- package/dist/decorators/index.d.ts +1 -0
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +2 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/discovery/extension-discovery.service.d.ts +5 -1
- package/dist/discovery/extension-discovery.service.d.ts.map +1 -1
- package/dist/discovery/extension-discovery.service.js +37 -5
- package/dist/discovery/extension-discovery.service.js.map +1 -1
- package/dist/guards/signature.middleware.d.ts +25 -16
- package/dist/guards/signature.middleware.d.ts.map +1 -1
- package/dist/guards/signature.middleware.js +35 -19
- package/dist/guards/signature.middleware.js.map +1 -1
- package/dist/native/client.d.ts +55 -1
- package/dist/native/client.d.ts.map +1 -1
- package/dist/native/client.js +89 -0
- package/dist/native/client.js.map +1 -1
- package/dist/native/index.d.ts +2 -0
- package/dist/native/index.d.ts.map +1 -1
- package/dist/native/index.js +2 -0
- package/dist/native/index.js.map +1 -1
- package/dist/native/proxy-api.d.ts +110 -0
- package/dist/native/proxy-api.d.ts.map +1 -0
- package/dist/native/proxy-api.js +159 -0
- package/dist/native/proxy-api.js.map +1 -0
- package/dist/native/proxy-api.types.d.ts +232 -0
- package/dist/native/proxy-api.types.d.ts.map +1 -0
- package/dist/native/proxy-api.types.js +10 -0
- package/dist/native/proxy-api.types.js.map +1 -0
- package/dist/native/types.d.ts +108 -0
- package/dist/native/types.d.ts.map +1 -1
- package/dist/nestjs/channel-app.service.d.ts +21 -2
- package/dist/nestjs/channel-app.service.d.ts.map +1 -1
- package/dist/nestjs/channel-app.service.js +81 -36
- package/dist/nestjs/channel-app.service.js.map +1 -1
- package/dist/nestjs/channel-app.service.test.d.ts +2 -0
- package/dist/nestjs/channel-app.service.test.d.ts.map +1 -0
- package/dist/nestjs/channel-app.service.test.js +240 -0
- package/dist/nestjs/channel-app.service.test.js.map +1 -0
- package/dist/token/manager.d.ts +33 -1
- package/dist/token/manager.d.ts.map +1 -1
- package/dist/token/manager.js +75 -13
- package/dist/token/manager.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ProxyAPI types for Channel Talk core API
|
|
3
|
+
*
|
|
4
|
+
* These types represent the request/response shapes for native functions
|
|
5
|
+
* that proxy to ch-dropwizard's REST API via ch-app-store.
|
|
6
|
+
*
|
|
7
|
+
* All types use camelCase to match the underlying ch-dropwizard JSON format.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=proxy-api.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-api.types.js","sourceRoot":"","sources":["../../src/native/proxy-api.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
package/dist/native/types.d.ts
CHANGED
|
@@ -195,4 +195,112 @@ export interface RegisterCommandsResult {
|
|
|
195
195
|
/** Whether registration succeeded */
|
|
196
196
|
success: boolean;
|
|
197
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Register extension params (native function, camelCase)
|
|
200
|
+
*/
|
|
201
|
+
export interface NativeRegisterExtensionParams {
|
|
202
|
+
/** App ID */
|
|
203
|
+
appId: string;
|
|
204
|
+
/** System version (e.g., "v1") */
|
|
205
|
+
systemVersion: string;
|
|
206
|
+
/** Extension name (e.g., "calendar", "oauth") */
|
|
207
|
+
extensionName: string;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Extension info returned from native registration
|
|
211
|
+
*/
|
|
212
|
+
export interface NativeExtensionInfo {
|
|
213
|
+
/** Extension name */
|
|
214
|
+
name: string;
|
|
215
|
+
/** System version */
|
|
216
|
+
systemVersion: string;
|
|
217
|
+
/** Whether exclusive */
|
|
218
|
+
exclusive?: boolean;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Register extension result (native function, camelCase)
|
|
222
|
+
*/
|
|
223
|
+
export interface NativeRegisterExtensionResult {
|
|
224
|
+
/** Whether registration succeeded */
|
|
225
|
+
success: boolean;
|
|
226
|
+
/** Error message if failed */
|
|
227
|
+
errorMessage?: string;
|
|
228
|
+
/** Registered extensions */
|
|
229
|
+
extensions?: NativeExtensionInfo[];
|
|
230
|
+
/** Validation errors */
|
|
231
|
+
validationErrors?: string[];
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Unregister extension params (native function, camelCase)
|
|
235
|
+
*/
|
|
236
|
+
export interface NativeUnregisterExtensionParams {
|
|
237
|
+
/** App ID */
|
|
238
|
+
appId: string;
|
|
239
|
+
/** System version (e.g., "v1") */
|
|
240
|
+
systemVersion: string;
|
|
241
|
+
/** Extension name */
|
|
242
|
+
extensionName: string;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Unregister extension result (native function, camelCase)
|
|
246
|
+
*/
|
|
247
|
+
export interface NativeUnregisterExtensionResult {
|
|
248
|
+
/** Whether unregistration succeeded */
|
|
249
|
+
success: boolean;
|
|
250
|
+
/** Error message if failed */
|
|
251
|
+
errorMessage?: string;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Register ALF tasks params
|
|
255
|
+
*/
|
|
256
|
+
export interface RegisterAlfTasksParams {
|
|
257
|
+
/** App ID */
|
|
258
|
+
appId: string;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Register ALF tasks result
|
|
262
|
+
*/
|
|
263
|
+
export interface RegisterAlfTasksResult {
|
|
264
|
+
/** Whether registration succeeded */
|
|
265
|
+
success: boolean;
|
|
266
|
+
/** Error message if failed */
|
|
267
|
+
errorMessage?: string;
|
|
268
|
+
/** Total number of tasks */
|
|
269
|
+
totalTasks: number;
|
|
270
|
+
/** Number of tasks created */
|
|
271
|
+
createdCount: number;
|
|
272
|
+
/** Number of tasks updated */
|
|
273
|
+
updatedCount: number;
|
|
274
|
+
/** Number of tasks deleted */
|
|
275
|
+
deletedCount: number;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Get ALF task versions params
|
|
279
|
+
*/
|
|
280
|
+
export interface GetAlfTaskVersionsParams {
|
|
281
|
+
/** App ID */
|
|
282
|
+
appId: string;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* ALF task version info
|
|
286
|
+
*/
|
|
287
|
+
export interface AlfTaskVersion {
|
|
288
|
+
/** Task ID */
|
|
289
|
+
id: string;
|
|
290
|
+
/** Task name */
|
|
291
|
+
name: string;
|
|
292
|
+
/** Task version */
|
|
293
|
+
version: string;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Get ALF task versions result
|
|
297
|
+
*/
|
|
298
|
+
export interface GetAlfTaskVersionsResult {
|
|
299
|
+
/** Whether request succeeded */
|
|
300
|
+
success: boolean;
|
|
301
|
+
/** Error message if failed */
|
|
302
|
+
errorMessage?: string;
|
|
303
|
+
/** Task version list */
|
|
304
|
+
tasks: AlfTaskVersion[];
|
|
305
|
+
}
|
|
198
306
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/native/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/native/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,11 +17,30 @@ export declare class ChannelAppService implements OnModuleInit {
|
|
|
17
17
|
constructor(options: ChannelAppModuleOptions, discoveryService?: ExtensionDiscoveryService | undefined);
|
|
18
18
|
onModuleInit(): Promise<void>;
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* Default extension name used when no @Extension decorators are found.
|
|
21
|
+
* Apps that only use native functions (e.g., cron bots) still need to
|
|
22
|
+
* register a system version; this "core" extension serves that purpose.
|
|
23
|
+
*/
|
|
24
|
+
static readonly CORE_EXTENSION_NAME = "core";
|
|
25
|
+
/**
|
|
26
|
+
* Default system version used for the core extension fallback.
|
|
27
|
+
*/
|
|
28
|
+
static readonly DEFAULT_SYSTEM_VERSION = "v1";
|
|
29
|
+
/**
|
|
30
|
+
* Auto-register all extensions with the AppStore.
|
|
31
|
+
* If no extensions are discovered via decorators, automatically registers
|
|
32
|
+
* a "core" extension so that extension-less apps (e.g., cron bots) can
|
|
33
|
+
* still have a system version registered.
|
|
21
34
|
*/
|
|
22
35
|
private autoRegisterExtensions;
|
|
23
36
|
/**
|
|
24
|
-
*
|
|
37
|
+
* Register a single extension with the AppStore and collect the result.
|
|
38
|
+
*/
|
|
39
|
+
private registerSingleExtension;
|
|
40
|
+
/**
|
|
41
|
+
* Get all registered versions.
|
|
42
|
+
* When no extensions are discovered and autoRegister is enabled,
|
|
43
|
+
* returns the default system version ("v1") for the core extension.
|
|
25
44
|
*/
|
|
26
45
|
getRegisteredVersions(): string[];
|
|
27
46
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-app.service.d.ts","sourceRoot":"","sources":["../../src/nestjs/channel-app.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,YAAY,EAAoB,MAAM,gBAAgB,CAAC;AACzF,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EAE1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAExF;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAE3B,gBAAgB,EAAE,MAAM;aACxB,iBAAiB,EAAE,MAAM,EAAE;gBAD3B,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM,EAAE;CAO9C;AAED,qBACa,iBAAkB,YAAW,YAAY;IAKlD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IANpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;gBAI1C,OAAO,EAAE,uBAAuB,EAEhC,gBAAgB,CAAC,EAAE,yBAAyB,YAAA;IAGzD,YAAY;
|
|
1
|
+
{"version":3,"file":"channel-app.service.d.ts","sourceRoot":"","sources":["../../src/nestjs/channel-app.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,YAAY,EAAoB,MAAM,gBAAgB,CAAC;AACzF,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EAE1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAExF;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAE3B,gBAAgB,EAAE,MAAM;aACxB,iBAAiB,EAAE,MAAM,EAAE;gBAD3B,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM,EAAE;CAO9C;AAED,qBACa,iBAAkB,YAAW,YAAY;IAKlD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IANpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;gBAI1C,OAAO,EAAE,uBAAuB,EAEhC,gBAAgB,CAAC,EAAE,yBAAyB,YAAA;IAGzD,YAAY;IAsClB;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,mBAAmB,UAAU;IAE7C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,sBAAsB,QAAQ;IAE9C;;;;;OAKG;YACW,sBAAsB;IAuCpC;;OAEG;YACW,uBAAuB;IA2CrC;;;;OAIG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAejC;;;;OAIG;IACG,kBAAkB,CACtB,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,CAAC;IAyBhC;;OAEG;IACH,YAAY,IAAI,oBAAoB;IA6BpC;;OAEG;IACH,YAAY;;;CAKb"}
|
|
@@ -29,7 +29,8 @@ export class VersionMismatchError extends Error {
|
|
|
29
29
|
this.name = "VersionMismatchError";
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
let ChannelAppService =
|
|
32
|
+
let ChannelAppService = class ChannelAppService {
|
|
33
|
+
static { ChannelAppService_1 = this; }
|
|
33
34
|
options;
|
|
34
35
|
discoveryService;
|
|
35
36
|
logger = new Logger(ChannelAppService_1.name);
|
|
@@ -51,13 +52,38 @@ let ChannelAppService = ChannelAppService_1 = class ChannelAppService {
|
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
54
|
}
|
|
55
|
+
else if (this.options.autoRegister) {
|
|
56
|
+
this.logger.log("No extensions discovered via decorators. " +
|
|
57
|
+
`Will auto-register "${ChannelAppService_1.CORE_EXTENSION_NAME}" extension.`);
|
|
58
|
+
}
|
|
59
|
+
// Log standalone functions
|
|
60
|
+
const allFunctions = this.discoveryService?.getAllFunctions() ?? [];
|
|
61
|
+
const extensions = this.discoveryService?.getExtensions() ?? [];
|
|
62
|
+
const extensionFunctionCount = extensions.reduce((sum, e) => sum + e.functions.length, 0);
|
|
63
|
+
const standaloneFunctionCount = allFunctions.length - extensionFunctionCount;
|
|
64
|
+
if (standaloneFunctionCount > 0) {
|
|
65
|
+
this.logger.log(`Discovered ${standaloneFunctionCount} standalone function(s)`);
|
|
66
|
+
}
|
|
54
67
|
// Auto-register extensions with AppStore if enabled
|
|
55
68
|
if (this.options.autoRegister) {
|
|
56
69
|
await this.autoRegisterExtensions();
|
|
57
70
|
}
|
|
58
71
|
}
|
|
59
72
|
/**
|
|
60
|
-
*
|
|
73
|
+
* Default extension name used when no @Extension decorators are found.
|
|
74
|
+
* Apps that only use native functions (e.g., cron bots) still need to
|
|
75
|
+
* register a system version; this "core" extension serves that purpose.
|
|
76
|
+
*/
|
|
77
|
+
static CORE_EXTENSION_NAME = "core";
|
|
78
|
+
/**
|
|
79
|
+
* Default system version used for the core extension fallback.
|
|
80
|
+
*/
|
|
81
|
+
static DEFAULT_SYSTEM_VERSION = "v1";
|
|
82
|
+
/**
|
|
83
|
+
* Auto-register all extensions with the AppStore.
|
|
84
|
+
* If no extensions are discovered via decorators, automatically registers
|
|
85
|
+
* a "core" extension so that extension-less apps (e.g., cron bots) can
|
|
86
|
+
* still have a system version registered.
|
|
61
87
|
*/
|
|
62
88
|
async autoRegisterExtensions() {
|
|
63
89
|
const client = new AppStoreClient({
|
|
@@ -68,57 +94,76 @@ let ChannelAppService = ChannelAppService_1 = class ChannelAppService {
|
|
|
68
94
|
});
|
|
69
95
|
const results = [];
|
|
70
96
|
const extensions = this.discoveryService?.getExtensions() ?? [];
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
97
|
+
// If no extensions discovered, register "core" extension as fallback
|
|
98
|
+
if (extensions.length === 0) {
|
|
99
|
+
this.logger.log("No extensions discovered. Auto-registering core extension for system version registration.");
|
|
100
|
+
await this.registerSingleExtension(client, ChannelAppService_1.CORE_EXTENSION_NAME, ChannelAppService_1.DEFAULT_SYSTEM_VERSION, results);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
for (const extension of extensions) {
|
|
104
|
+
await this.registerSingleExtension(client, extension.name, extension.systemVersion, results);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Call callback if provided
|
|
108
|
+
if (this.options.onAutoRegister) {
|
|
109
|
+
this.options.onAutoRegister(results);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Register a single extension with the AppStore and collect the result.
|
|
114
|
+
*/
|
|
115
|
+
async registerSingleExtension(client, extensionName, systemVersion, results) {
|
|
116
|
+
try {
|
|
117
|
+
this.logger.log(`Auto-registering extension: ${extensionName} (${systemVersion})`);
|
|
118
|
+
const result = await client.registerExtension({
|
|
119
|
+
extensionName,
|
|
120
|
+
systemVersion,
|
|
121
|
+
});
|
|
122
|
+
if (result.success) {
|
|
123
|
+
this.logger.log(`Successfully registered extension: ${extensionName}`);
|
|
124
|
+
results.push({
|
|
125
|
+
extensionName,
|
|
77
126
|
systemVersion,
|
|
127
|
+
success: true,
|
|
78
128
|
});
|
|
79
|
-
if (result.success) {
|
|
80
|
-
this.logger.log(`Successfully registered extension: ${extension.name}`);
|
|
81
|
-
results.push({
|
|
82
|
-
extensionName: extension.name,
|
|
83
|
-
systemVersion,
|
|
84
|
-
success: true,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
const errorMsg = result.error_message ?? result.validation_errors?.join(", ") ?? "Unknown error";
|
|
89
|
-
this.logger.warn(`Failed to register extension ${extension.name}: ${errorMsg}`);
|
|
90
|
-
results.push({
|
|
91
|
-
extensionName: extension.name,
|
|
92
|
-
systemVersion,
|
|
93
|
-
success: false,
|
|
94
|
-
error: errorMsg,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
129
|
}
|
|
98
|
-
|
|
99
|
-
const errorMsg =
|
|
100
|
-
this.logger.
|
|
130
|
+
else {
|
|
131
|
+
const errorMsg = result.error_message ?? result.validation_errors?.join(", ") ?? "Unknown error";
|
|
132
|
+
this.logger.warn(`Failed to register extension ${extensionName}: ${errorMsg}`);
|
|
101
133
|
results.push({
|
|
102
|
-
extensionName
|
|
134
|
+
extensionName,
|
|
103
135
|
systemVersion,
|
|
104
136
|
success: false,
|
|
105
137
|
error: errorMsg,
|
|
106
138
|
});
|
|
107
139
|
}
|
|
108
140
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
this.
|
|
141
|
+
catch (error) {
|
|
142
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
143
|
+
this.logger.error(`Error registering extension ${extensionName}: ${errorMsg}`);
|
|
144
|
+
results.push({
|
|
145
|
+
extensionName,
|
|
146
|
+
systemVersion,
|
|
147
|
+
success: false,
|
|
148
|
+
error: errorMsg,
|
|
149
|
+
});
|
|
112
150
|
}
|
|
113
151
|
}
|
|
114
152
|
/**
|
|
115
|
-
* Get all registered versions
|
|
153
|
+
* Get all registered versions.
|
|
154
|
+
* When no extensions are discovered and autoRegister is enabled,
|
|
155
|
+
* returns the default system version ("v1") for the core extension.
|
|
116
156
|
*/
|
|
117
157
|
getRegisteredVersions() {
|
|
118
158
|
const versions = new Set();
|
|
119
159
|
const extensions = this.discoveryService?.getExtensions() ?? [];
|
|
120
|
-
|
|
121
|
-
versions.add(
|
|
160
|
+
if (extensions.length === 0 && this.options.autoRegister) {
|
|
161
|
+
versions.add(ChannelAppService_1.DEFAULT_SYSTEM_VERSION);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
for (const ext of extensions) {
|
|
165
|
+
versions.add(ext.systemVersion);
|
|
166
|
+
}
|
|
122
167
|
}
|
|
123
168
|
return Array.from(versions);
|
|
124
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-app.service.js","sourceRoot":"","sources":["../../src/nestjs/channel-app.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAqB,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAKL,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,GAGpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAExF;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAE3B;IACA;IAFlB,YACkB,gBAAwB,EACxB,iBAA2B;QAE3C,KAAK,CACH,YAAY,gBAAgB,oCAAoC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/F,CAAC;QALc,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,sBAAiB,GAAjB,iBAAiB,CAAU;QAK3C,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAGM,IAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"channel-app.service.js","sourceRoot":"","sources":["../../src/nestjs/channel-app.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-app.service.test.d.ts","sourceRoot":"","sources":["../../src/nestjs/channel-app.service.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
+
import { ChannelAppService } from "./channel-app.service.js";
|
|
3
|
+
// Mock AppStoreClient
|
|
4
|
+
vi.mock("../appstore/client.js", () => {
|
|
5
|
+
return {
|
|
6
|
+
AppStoreClient: vi.fn().mockImplementation(() => ({
|
|
7
|
+
registerExtension: vi.fn().mockResolvedValue({ success: true }),
|
|
8
|
+
})),
|
|
9
|
+
};
|
|
10
|
+
});
|
|
11
|
+
// Import after mock so we can inspect calls
|
|
12
|
+
import { AppStoreClient } from "../appstore/client.js";
|
|
13
|
+
function createMockDiscoveryService(extensions = []) {
|
|
14
|
+
return {
|
|
15
|
+
hasExtensions: () => extensions.length > 0,
|
|
16
|
+
getExtensions: () => extensions,
|
|
17
|
+
getExtension: (name) => extensions.find((e) => e.name === name),
|
|
18
|
+
getFunction: () => undefined,
|
|
19
|
+
getAllFunctions: () => [],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
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
|
|
25
|
+
const service = Object.create(ChannelAppService.prototype);
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
+
const s = service;
|
|
28
|
+
s.options = options;
|
|
29
|
+
s.discoveryService = discoveryService;
|
|
30
|
+
s.logger = {
|
|
31
|
+
log: vi.fn(),
|
|
32
|
+
warn: vi.fn(),
|
|
33
|
+
error: vi.fn(),
|
|
34
|
+
debug: vi.fn(),
|
|
35
|
+
};
|
|
36
|
+
return service;
|
|
37
|
+
}
|
|
38
|
+
describe("ChannelAppService", () => {
|
|
39
|
+
beforeEach(() => {
|
|
40
|
+
vi.clearAllMocks();
|
|
41
|
+
});
|
|
42
|
+
describe("core extension auto-registration", () => {
|
|
43
|
+
it("should register 'core' extension when no extensions are discovered and autoRegister is true", async () => {
|
|
44
|
+
const onAutoRegister = vi.fn();
|
|
45
|
+
const options = {
|
|
46
|
+
appId: "test-app",
|
|
47
|
+
appSecret: "test-secret",
|
|
48
|
+
autoRegister: true,
|
|
49
|
+
onAutoRegister,
|
|
50
|
+
};
|
|
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
|
|
68
|
+
expect(onAutoRegister).toHaveBeenCalledWith([
|
|
69
|
+
{
|
|
70
|
+
extensionName: "core",
|
|
71
|
+
systemVersion: "v1",
|
|
72
|
+
success: true,
|
|
73
|
+
},
|
|
74
|
+
]);
|
|
75
|
+
});
|
|
76
|
+
it("should register 'core' extension when discoveryService is undefined and autoRegister is true", async () => {
|
|
77
|
+
const onAutoRegister = vi.fn();
|
|
78
|
+
const options = {
|
|
79
|
+
appId: "test-app",
|
|
80
|
+
appSecret: "test-secret",
|
|
81
|
+
autoRegister: true,
|
|
82
|
+
onAutoRegister,
|
|
83
|
+
};
|
|
84
|
+
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
|
+
});
|
|
91
|
+
expect(onAutoRegister).toHaveBeenCalledWith([
|
|
92
|
+
{
|
|
93
|
+
extensionName: "core",
|
|
94
|
+
systemVersion: "v1",
|
|
95
|
+
success: true,
|
|
96
|
+
},
|
|
97
|
+
]);
|
|
98
|
+
});
|
|
99
|
+
it("should register discovered extensions instead of 'core' when extensions exist", async () => {
|
|
100
|
+
const onAutoRegister = vi.fn();
|
|
101
|
+
const options = {
|
|
102
|
+
appId: "test-app",
|
|
103
|
+
appSecret: "test-secret",
|
|
104
|
+
autoRegister: true,
|
|
105
|
+
onAutoRegister,
|
|
106
|
+
};
|
|
107
|
+
const extensions = [
|
|
108
|
+
{
|
|
109
|
+
name: "calendar",
|
|
110
|
+
systemVersion: "v1",
|
|
111
|
+
exclusive: false,
|
|
112
|
+
instance: {},
|
|
113
|
+
functions: [],
|
|
114
|
+
},
|
|
115
|
+
];
|
|
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
|
+
});
|
|
128
|
+
});
|
|
129
|
+
it("should not auto-register anything when autoRegister is false", async () => {
|
|
130
|
+
const options = {
|
|
131
|
+
appId: "test-app",
|
|
132
|
+
appSecret: "test-secret",
|
|
133
|
+
autoRegister: false,
|
|
134
|
+
};
|
|
135
|
+
const discovery = createMockDiscoveryService([]);
|
|
136
|
+
const service = createService(options, discovery);
|
|
137
|
+
await service.onModuleInit();
|
|
138
|
+
expect(AppStoreClient).not.toHaveBeenCalled();
|
|
139
|
+
});
|
|
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
|
+
}));
|
|
147
|
+
const onAutoRegister = vi.fn();
|
|
148
|
+
const options = {
|
|
149
|
+
appId: "test-app",
|
|
150
|
+
appSecret: "test-secret",
|
|
151
|
+
autoRegister: true,
|
|
152
|
+
onAutoRegister,
|
|
153
|
+
};
|
|
154
|
+
const discovery = createMockDiscoveryService([]);
|
|
155
|
+
const service = createService(options, discovery);
|
|
156
|
+
await service.onModuleInit();
|
|
157
|
+
expect(onAutoRegister).toHaveBeenCalledWith([
|
|
158
|
+
{
|
|
159
|
+
extensionName: "core",
|
|
160
|
+
systemVersion: "v1",
|
|
161
|
+
success: false,
|
|
162
|
+
error: "Registration denied",
|
|
163
|
+
},
|
|
164
|
+
]);
|
|
165
|
+
});
|
|
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
|
+
}));
|
|
170
|
+
const onAutoRegister = vi.fn();
|
|
171
|
+
const options = {
|
|
172
|
+
appId: "test-app",
|
|
173
|
+
appSecret: "test-secret",
|
|
174
|
+
autoRegister: true,
|
|
175
|
+
onAutoRegister,
|
|
176
|
+
};
|
|
177
|
+
const discovery = createMockDiscoveryService([]);
|
|
178
|
+
const service = createService(options, discovery);
|
|
179
|
+
await service.onModuleInit();
|
|
180
|
+
expect(onAutoRegister).toHaveBeenCalledWith([
|
|
181
|
+
{
|
|
182
|
+
extensionName: "core",
|
|
183
|
+
systemVersion: "v1",
|
|
184
|
+
success: false,
|
|
185
|
+
error: "Network error",
|
|
186
|
+
},
|
|
187
|
+
]);
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
describe("getRegisteredVersions", () => {
|
|
191
|
+
it("should return default version when no extensions and autoRegister is true", () => {
|
|
192
|
+
const options = {
|
|
193
|
+
appId: "test-app",
|
|
194
|
+
appSecret: "test-secret",
|
|
195
|
+
autoRegister: true,
|
|
196
|
+
};
|
|
197
|
+
const discovery = createMockDiscoveryService([]);
|
|
198
|
+
const service = createService(options, discovery);
|
|
199
|
+
expect(service.getRegisteredVersions()).toEqual(["v1"]);
|
|
200
|
+
});
|
|
201
|
+
it("should return empty array when no extensions and autoRegister is false", () => {
|
|
202
|
+
const options = {
|
|
203
|
+
appId: "test-app",
|
|
204
|
+
appSecret: "test-secret",
|
|
205
|
+
autoRegister: false,
|
|
206
|
+
};
|
|
207
|
+
const discovery = createMockDiscoveryService([]);
|
|
208
|
+
const service = createService(options, discovery);
|
|
209
|
+
expect(service.getRegisteredVersions()).toEqual([]);
|
|
210
|
+
});
|
|
211
|
+
it("should return versions from discovered extensions", () => {
|
|
212
|
+
const options = {
|
|
213
|
+
appId: "test-app",
|
|
214
|
+
appSecret: "test-secret",
|
|
215
|
+
autoRegister: true,
|
|
216
|
+
};
|
|
217
|
+
const extensions = [
|
|
218
|
+
{
|
|
219
|
+
name: "calendar",
|
|
220
|
+
systemVersion: "v2",
|
|
221
|
+
exclusive: false,
|
|
222
|
+
instance: {},
|
|
223
|
+
functions: [],
|
|
224
|
+
},
|
|
225
|
+
];
|
|
226
|
+
const discovery = createMockDiscoveryService(extensions);
|
|
227
|
+
const service = createService(options, discovery);
|
|
228
|
+
expect(service.getRegisteredVersions()).toEqual(["v2"]);
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
describe("static constants", () => {
|
|
232
|
+
it("should expose CORE_EXTENSION_NAME as 'core'", () => {
|
|
233
|
+
expect(ChannelAppService.CORE_EXTENSION_NAME).toBe("core");
|
|
234
|
+
});
|
|
235
|
+
it("should expose DEFAULT_SYSTEM_VERSION as 'v1'", () => {
|
|
236
|
+
expect(ChannelAppService.DEFAULT_SYSTEM_VERSION).toBe("v1");
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
//# sourceMappingURL=channel-app.service.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-app.service.test.js","sourceRoot":"","sources":["../../src/nestjs/channel-app.service.test.ts"],"names":[],"mappings":"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"}
|