@channel.io/app-sdk 0.17.2 → 0.18.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/cli.js CHANGED
@@ -5,8 +5,9 @@ import { addCommand } from "./commands/add.js";
5
5
  import { devCommand } from "./commands/dev.js";
6
6
  import { buildCommand } from "./commands/build.js";
7
7
  import { generateCommand } from "./commands/generate.js";
8
+ import { packageVersion } from "./package-version.js";
8
9
  const program = new Command();
9
- program.name("channel-app").description("CLI for Channel.io App SDK").version("0.0.1");
10
+ program.name("channel-app").description("CLI for Channel.io App SDK").version(packageVersion);
10
11
  // Register commands
11
12
  program.addCommand(createCommand);
12
13
  program.addCommand(addCommand);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEvF,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAEpC,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAE9F,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAEpC,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0dpC,eAAO,MAAM,UAAU,SAcnB,CAAC"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2dpC,eAAO,MAAM,UAAU,SAcnB,CAAC"}
@@ -349,6 +349,7 @@ export const pollingExtension = createExtension({
349
349
  timeoutSeconds: 30,
350
350
  maxConcurrency: 5,
351
351
  rps: 1,
352
+ executionScope: "channel",
352
353
  },
353
354
  ],
354
355
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,10 @@
1
1
  import { Command } from "commander";
2
+ interface CreateAppOptions {
3
+ cwd?: string;
4
+ sdkVersion?: string;
5
+ }
2
6
  export declare const createCommand: Command;
7
+ /** Create the same starter used by the CLI. Exported for smoke tests and integrations. */
8
+ export declare function createApp(name: string, options?: CreateAppOptions): Promise<string>;
9
+ export {};
3
10
  //# sourceMappingURL=create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,aAAa,SAqGtB,CAAC"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,UAAU,gBAAgB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,SAmBtB,CAAC;AAEL,0FAA0F;AAC1F,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmL7F"}
@@ -1,417 +1,227 @@
1
1
  import { Command } from "commander";
2
2
  import pc from "picocolors";
3
3
  import { mkdir, writeFile } from "node:fs/promises";
4
- import { join } from "node:path";
4
+ import { basename, join, resolve } from "node:path";
5
+ import { packageVersion, wamUiVersion } from "../package-version.js";
6
+ const BEZIER_VERSION = "4.0.0-next.14";
5
7
  export const createCommand = new Command("create")
6
- .description("Create a new Channel.io app")
7
- .argument("<name>", "Name of the app")
8
- .option("-t, --template <template>", "Template to use", "basic")
9
- .action(async (name, options) => {
8
+ .description("Create a secure TypeScript Channel.io app starter")
9
+ .argument("<name>", "Directory and package name for the app")
10
+ .action(async (name) => {
10
11
  console.log(pc.cyan(`\nCreating Channel.io app: ${pc.bold(name)}\n`));
11
- const targetDir = join(process.cwd(), name);
12
12
  try {
13
- // Create directory structure
14
- await mkdir(targetDir, { recursive: true });
15
- await mkdir(join(targetDir, "apps", "server", "src", "extensions"), { recursive: true });
16
- await mkdir(join(targetDir, "apps", "wam", "src"), { recursive: true });
17
- await mkdir(join(targetDir, "packages", "shared", "src"), { recursive: true });
18
- // Create root package.json
19
- await writeFile(join(targetDir, "package.json"), JSON.stringify({
20
- name: name,
13
+ const targetDir = await createApp(name);
14
+ console.log(pc.green(`\n✓ Created ${basename(targetDir)} successfully!\n`));
15
+ console.log("Next steps:\n");
16
+ console.log(` cd ${name}`);
17
+ console.log(" corepack pnpm install");
18
+ console.log(" cp apps/server/.env.example apps/server/.env");
19
+ console.log(" corepack pnpm build");
20
+ console.log(" corepack pnpm dev\n");
21
+ }
22
+ catch (error) {
23
+ console.error(pc.red(`\nError creating app: ${String(error)}`));
24
+ process.exitCode = 1;
25
+ }
26
+ });
27
+ /** Create the same starter used by the CLI. Exported for smoke tests and integrations. */
28
+ export async function createApp(name, options = {}) {
29
+ if (!/^[a-z0-9][a-z0-9._-]*$/.test(name)) {
30
+ throw new Error("App name must use lowercase letters, numbers, dots, underscores, or hyphens");
31
+ }
32
+ const targetDir = resolve(options.cwd ?? process.cwd(), name);
33
+ const sdkVersion = options.sdkVersion ?? packageVersion;
34
+ await mkdir(targetDir);
35
+ const directories = ["apps/server/src", "apps/wam/src", "packages/shared/src"];
36
+ await Promise.all(directories.map((directory) => mkdir(join(targetDir, directory), { recursive: true })));
37
+ const files = {
38
+ "package.json": json({
39
+ name,
21
40
  version: "0.0.1",
22
41
  private: true,
42
+ packageManager: "pnpm@9.15.4",
43
+ engines: { node: ">=20.11.0" },
23
44
  scripts: {
24
- dev: "turbo run dev",
25
45
  build: "turbo run build",
26
- lint: "turbo run lint",
46
+ dev: "turbo run dev",
47
+ typecheck: "turbo run typecheck",
27
48
  },
28
49
  devDependencies: {
29
- turbo: "^2.3.3",
50
+ turbo: "^2.10.5",
30
51
  typescript: "^5.7.2",
31
52
  },
32
- packageManager: "pnpm@9.15.4",
33
- }, null, 2));
34
- // Create pnpm-workspace.yaml
35
- await writeFile(join(targetDir, "pnpm-workspace.yaml"), `packages:
36
- - "apps/*"
37
- - "packages/*"
38
- `);
39
- // Create turbo.json
40
- await writeFile(join(targetDir, "turbo.json"), JSON.stringify({
53
+ }),
54
+ "pnpm-workspace.yaml": `packages:\n - "apps/*"\n - "packages/*"\n`,
55
+ "turbo.json": json({
41
56
  $schema: "https://turbo.build/schema.json",
42
57
  tasks: {
43
- build: {
44
- dependsOn: ["^build"],
45
- outputs: ["dist/**"],
46
- },
47
- dev: {
48
- cache: false,
49
- persistent: true,
50
- },
51
- lint: {
52
- outputs: [],
53
- },
58
+ build: { dependsOn: ["^build"], outputs: ["dist/**"] },
59
+ dev: { dependsOn: ["^build"], cache: false, persistent: true },
60
+ typecheck: { dependsOn: ["^build"], outputs: [] },
54
61
  },
55
- }, null, 2));
56
- // Create .env.example
57
- await writeFile(join(targetDir, ".env.example"), `APP_ID=your-app-id
58
- APP_SECRET=your-app-secret
59
- `);
60
- // Create server app
61
- await createServerApp(targetDir, name, options.template);
62
- // Create WAM app
63
- await createWamApp(targetDir, name);
64
- // Create shared package
65
- await createSharedPackage(targetDir, name);
66
- console.log(pc.green(`\n✓ Created ${name} successfully!\n`));
67
- console.log(`Next steps:\n`);
68
- console.log(` cd ${name}`);
69
- console.log(` pnpm install`);
70
- console.log(` cp .env.example .env`);
71
- console.log(` pnpm dev\n`);
72
- }
73
- catch (error) {
74
- console.error(pc.red(`\nError creating app: ${String(error)}`));
75
- process.exit(1);
76
- }
77
- });
78
- async function createServerApp(targetDir, name, _template) {
79
- const serverDir = join(targetDir, "apps", "server");
80
- // package.json
81
- await writeFile(join(serverDir, "package.json"), JSON.stringify({
82
- name: `@${name}/server`,
83
- version: "0.0.1",
84
- private: true,
85
- type: "module",
86
- scripts: {
87
- build: "nest build",
88
- dev: "nest start --watch",
89
- start: "node dist/main.js",
90
- lint: "eslint src/",
91
- },
92
- dependencies: {
93
- "@channel.io/app-sdk": "^0.0.1",
94
- "@nestjs/common": "^10.4.15",
95
- "@nestjs/core": "^10.4.15",
96
- "@nestjs/platform-express": "^10.4.15",
97
- "reflect-metadata": "^0.2.2",
98
- rxjs: "^7.8.1",
99
- zod: "^3.24.1",
100
- },
101
- devDependencies: {
102
- "@nestjs/cli": "^10.4.9",
103
- "@types/node": "^22.10.5",
104
- typescript: "^5.7.2",
105
- },
106
- }, null, 2));
107
- // tsconfig.json
108
- await writeFile(join(serverDir, "tsconfig.json"), JSON.stringify({
109
- compilerOptions: {
110
- target: "ES2022",
111
- module: "NodeNext",
112
- moduleResolution: "NodeNext",
113
- strict: true,
114
- esModuleInterop: true,
115
- skipLibCheck: true,
116
- experimentalDecorators: true,
117
- emitDecoratorMetadata: true,
118
- outDir: "./dist",
119
- rootDir: "./src",
120
- },
121
- include: ["src/**/*"],
122
- }, null, 2));
123
- // nest-cli.json
124
- await writeFile(join(serverDir, "nest-cli.json"), JSON.stringify({
125
- $schema: "https://json.schemastore.org/nest-cli",
126
- collection: "@nestjs/schematics",
127
- sourceRoot: "src",
128
- compilerOptions: {
129
- builder: "tsc",
130
- },
131
- }, null, 2));
132
- // main.ts
133
- await writeFile(join(serverDir, "src", "main.ts"), `import { NestFactory } from "@nestjs/core";
134
- import { AppModule } from "./app.module.js";
135
-
136
- async function bootstrap() {
137
- const app = await NestFactory.create(AppModule);
138
-
139
- const port = process.env.PORT ?? 3000;
140
- await app.listen(port);
141
-
142
- console.log(\`Server running on http://localhost:\${port}\`);
143
- }
144
-
145
- bootstrap();
146
- `);
147
- // app.module.ts
148
- await writeFile(join(serverDir, "src", "app.module.ts"), `import { Module } from "@nestjs/common";
149
- import { ConfigModule, ConfigService } from "@nestjs/config";
150
- import { ChannelAppModule } from "@channel.io/app-sdk";
151
- import { commandExtension } from "./extensions/command.extension.js";
152
-
153
- @Module({
154
- imports: [
155
- ConfigModule.forRoot(),
156
- ChannelAppModule.forRootAsync({
157
- imports: [ConfigModule],
158
- inject: [ConfigService],
159
- useFactory: (config: ConfigService) => ({
160
- appId: config.get("APP_ID") ?? "",
161
- appSecret: config.get("APP_SECRET") ?? "",
162
- extensions: [commandExtension],
163
- debug: true,
164
- }),
165
- }),
166
- ],
167
- })
168
- export class AppModule {}
169
- `);
170
- // Sample extension
171
- await writeFile(join(serverDir, "src", "extensions", "command.extension.ts"), `import {
172
- createExtension,
173
- defineFunction,
174
- GetCommandsOutputSchema,
175
- CommandResultSchema,
176
- } from "@channel.io/app-sdk";
177
- import { z } from "zod";
178
-
179
- const CommandActionInput = z.object({
180
- chat: z.object({
181
- type: z.string(),
182
- id: z.string(),
183
- }),
184
- trigger: z.object({
185
- type: z.string(),
186
- attributes: z.record(z.string()),
187
- }),
188
- input: z.record(z.unknown()),
189
- language: z.string(),
190
- });
191
-
192
- export const commandExtension = createExtension({
193
- name: "command",
194
- systemVersion: "v1",
195
- groups: {
196
- metadata: {
197
- getCommands: defineFunction({
198
- description: "Return command definitions for AppStore registration",
199
- input: z.object({}),
200
- output: GetCommandsOutputSchema,
201
- handler: async () => ({
202
- commands: [
203
- {
204
- name: "hello",
205
- scope: "desk",
206
- actionFunctionName: "extension.command.command.execute",
207
- alfMode: "disable",
62
+ }),
63
+ ".gitignore": "node_modules\ndist\n.env\n*.log\n",
64
+ "README.md": starterReadme(name),
65
+ "apps/server/.env.example": `APP_ID=your-app-id\nAPP_SECRET=your-app-secret\nSIGNING_KEY=your-64-character-hex-signing-key\nPORT=3000\n`,
66
+ "apps/server/package.json": json({
67
+ name: `@${name}/server`,
68
+ version: "0.0.1",
69
+ private: true,
70
+ type: "module",
71
+ scripts: {
72
+ build: "nest build",
73
+ dev: "nest start --watch",
74
+ start: "node dist/main.js",
75
+ typecheck: "tsc --noEmit",
76
+ },
77
+ dependencies: {
78
+ "@channel.io/app-sdk-server": sdkVersion,
79
+ [`@${name}/shared`]: "workspace:*",
80
+ "@nestjs/common": "^11.1.28",
81
+ "@nestjs/core": "^11.1.28",
82
+ "@nestjs/platform-express": "^11.1.28",
83
+ dotenv: "^17.2.3",
84
+ "reflect-metadata": "^0.2.2",
85
+ rxjs: "^7.8.2",
86
+ zod: "^3.25.76",
87
+ },
88
+ devDependencies: {
89
+ "@nestjs/cli": "^11.0.23",
90
+ "@types/node": "^22.18.6",
91
+ typescript: "^5.9.3",
208
92
  },
209
- ],
210
93
  }),
211
- }),
212
- },
213
- command: {
214
- execute: defineFunction({
215
- description: "Execute the hello command",
216
- input: CommandActionInput,
217
- output: CommandResultSchema,
218
- handler: async (ctx, params) => {
219
- const target =
220
- typeof params.input.target === "string" && params.input.target.trim() !== ""
221
- ? params.input.target
222
- : "world";
223
-
224
- console.log(\`Executing command for \${target} in channel \${ctx.channel.id}\`);
225
-
226
- return {
227
- type: "text",
228
- attributes: {
229
- message: \`Hello, \${target}!\`,
94
+ "apps/server/nest-cli.json": json({
95
+ $schema: "https://json.schemastore.org/nest-cli",
96
+ collection: "@nestjs/schematics",
97
+ sourceRoot: "src",
98
+ compilerOptions: { builder: "tsc" },
99
+ }),
100
+ "apps/server/tsconfig.json": json({
101
+ compilerOptions: {
102
+ target: "ES2022",
103
+ module: "NodeNext",
104
+ moduleResolution: "NodeNext",
105
+ outDir: "./dist",
106
+ rootDir: "./src",
107
+ strict: true,
108
+ esModuleInterop: true,
109
+ skipLibCheck: true,
110
+ experimentalDecorators: true,
111
+ emitDecoratorMetadata: true,
230
112
  },
231
- };
232
- },
233
- }),
234
- },
235
- },
236
- });
237
- `);
238
- // Add @nestjs/config to dependencies
239
- const pkgJson = JSON.parse(await (await import("node:fs/promises")).readFile(join(serverDir, "package.json"), "utf-8"));
240
- pkgJson.dependencies["@nestjs/config"] = "^3.3.0";
241
- await writeFile(join(serverDir, "package.json"), JSON.stringify(pkgJson, null, 2));
113
+ include: ["src/**/*.ts"],
114
+ exclude: ["node_modules"],
115
+ }),
116
+ "apps/server/src/config.ts": serverConfig(),
117
+ "apps/server/src/app.module.ts": serverModule(),
118
+ "apps/server/src/main.ts": serverMain(),
119
+ "apps/server/src/command.extension.ts": commandExtension(name),
120
+ "packages/shared/package.json": json({
121
+ name: `@${name}/shared`,
122
+ version: "0.0.1",
123
+ private: true,
124
+ type: "module",
125
+ main: "./dist/index.js",
126
+ types: "./dist/index.d.ts",
127
+ exports: { ".": { types: "./dist/index.d.ts", import: "./dist/index.js" } },
128
+ scripts: { build: "tsc", typecheck: "tsc --noEmit" },
129
+ dependencies: { zod: "^3.25.76" },
130
+ devDependencies: { typescript: "^5.9.3" },
131
+ }),
132
+ "packages/shared/tsconfig.json": json({
133
+ compilerOptions: {
134
+ target: "ES2022",
135
+ module: "NodeNext",
136
+ moduleResolution: "NodeNext",
137
+ outDir: "./dist",
138
+ rootDir: "./src",
139
+ strict: true,
140
+ declaration: true,
141
+ skipLibCheck: true,
142
+ },
143
+ include: ["src/**/*.ts"],
144
+ exclude: ["dist", "node_modules"],
145
+ }),
146
+ "packages/shared/src/index.ts": sharedContract(),
147
+ "apps/wam/package.json": json({
148
+ name: `@${name}/wam`,
149
+ version: "0.0.1",
150
+ private: true,
151
+ type: "module",
152
+ scripts: {
153
+ build: "tsc && vite build",
154
+ dev: "vite",
155
+ typecheck: "tsc --noEmit",
156
+ preview: "vite preview",
157
+ },
158
+ dependencies: {
159
+ "@channel.io/app-sdk-wam": sdkVersion,
160
+ "@channel.io/app-sdk-wam-ui": wamUiVersion,
161
+ "@channel.io/bezier-icons": "0.60.0",
162
+ "@channel.io/bezier-react": BEZIER_VERSION,
163
+ [`@${name}/shared`]: "workspace:*",
164
+ react: "^18.3.1",
165
+ "react-dom": "^18.3.1",
166
+ "styled-components": "^6.4.3",
167
+ },
168
+ devDependencies: {
169
+ "@types/react": "^18.3.18",
170
+ "@types/react-dom": "^18.3.5",
171
+ "@vitejs/plugin-react": "^4.3.4",
172
+ typescript: "^5.9.3",
173
+ vite: "^6.0.7",
174
+ },
175
+ }),
176
+ "apps/wam/tsconfig.json": json({
177
+ compilerOptions: {
178
+ target: "ES2020",
179
+ useDefineForClassFields: true,
180
+ lib: ["ES2020", "DOM", "DOM.Iterable"],
181
+ module: "ESNext",
182
+ moduleResolution: "bundler",
183
+ allowImportingTsExtensions: true,
184
+ isolatedModules: true,
185
+ noEmit: true,
186
+ jsx: "react-jsx",
187
+ strict: true,
188
+ skipLibCheck: true,
189
+ },
190
+ include: ["src"],
191
+ }),
192
+ "apps/wam/vite.config.ts": `import { defineConfig } from "vite";\nimport react from "@vitejs/plugin-react";\n\nexport default defineConfig({\n base: "",\n plugins: [react()],\n build: { outDir: "dist" },\n});\n`,
193
+ "apps/wam/index.html": `<!doctype html>\n<html lang="en">\n <head>\n <meta charset="UTF-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <title>${name}</title>\n </head>\n <body>\n <div id="root"></div>\n <script type="module" src="/src/main.tsx"></script>\n </body>\n</html>\n`,
194
+ "apps/wam/src/main.tsx": wamMain(),
195
+ "apps/wam/src/App.tsx": wamApp(name),
196
+ };
197
+ await Promise.all(Object.entries(files).map(([path, content]) => writeFile(join(targetDir, path), content)));
198
+ return targetDir;
242
199
  }
243
- async function createWamApp(targetDir, name) {
244
- const wamDir = join(targetDir, "apps", "wam");
245
- // package.json
246
- await writeFile(join(wamDir, "package.json"), JSON.stringify({
247
- name: `@${name}/wam`,
248
- version: "0.0.1",
249
- private: true,
250
- type: "module",
251
- scripts: {
252
- dev: "vite",
253
- build: "vite build",
254
- preview: "vite preview",
255
- lint: "eslint src/",
256
- },
257
- dependencies: {
258
- "@channel.io/app-sdk": "^0.0.1",
259
- react: "^18.3.1",
260
- "react-dom": "^18.3.1",
261
- },
262
- devDependencies: {
263
- "@types/react": "^18.3.18",
264
- "@types/react-dom": "^18.3.5",
265
- "@vitejs/plugin-react": "^4.3.4",
266
- typescript: "^5.7.2",
267
- vite: "^6.0.7",
268
- },
269
- }, null, 2));
270
- // vite.config.ts
271
- await writeFile(join(wamDir, "vite.config.ts"), `import { defineConfig } from "vite";
272
- import react from "@vitejs/plugin-react";
273
-
274
- export default defineConfig({
275
- plugins: [react()],
276
- build: {
277
- outDir: "dist",
278
- },
279
- });
280
- `);
281
- // tsconfig.json
282
- await writeFile(join(wamDir, "tsconfig.json"), JSON.stringify({
283
- compilerOptions: {
284
- target: "ES2022",
285
- module: "ESNext",
286
- moduleResolution: "bundler",
287
- strict: true,
288
- esModuleInterop: true,
289
- skipLibCheck: true,
290
- jsx: "react-jsx",
291
- lib: ["ES2022", "DOM"],
292
- },
293
- include: ["src/**/*"],
294
- }, null, 2));
295
- // index.html
296
- await writeFile(join(wamDir, "index.html"), `<!DOCTYPE html>
297
- <html lang="en">
298
- <head>
299
- <meta charset="UTF-8" />
300
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
301
- <title>${name} WAM</title>
302
- </head>
303
- <body>
304
- <div id="root"></div>
305
- <script type="module" src="/src/main.tsx"></script>
306
- </body>
307
- </html>
308
- `);
309
- // main.tsx
310
- await writeFile(join(wamDir, "src", "main.tsx"), `import React from "react";
311
- import ReactDOM from "react-dom/client";
312
- import { WamProvider } from "@channel.io/app-sdk";
313
- import App from "./App";
314
-
315
- ReactDOM.createRoot(document.getElementById("root")!).render(
316
- <React.StrictMode>
317
- <WamProvider>
318
- <App />
319
- </WamProvider>
320
- </React.StrictMode>
321
- );
322
- `);
323
- // App.tsx
324
- await writeFile(join(wamDir, "src", "App.tsx"), `import { useEffect } from "react";
325
- import { useWamData, useWamSize, useCallFunction } from "@channel.io/app-sdk";
326
-
327
- export default function App() {
328
- const appId = useWamData<string>("appId") ?? "";
329
- const channelId = useWamData<string>("channelId");
330
- const { setSize } = useWamSize();
331
-
332
- const { call, loading, data } = useCallFunction<{
333
- type: string;
334
- attributes?: { message?: string };
335
- }>({
336
- appId,
337
- name: "extension.command.command.execute",
338
- });
339
-
340
- useEffect(() => {
341
- setSize({ height: 300 });
342
- }, [setSize]);
343
-
344
- const handleClick = async () => {
345
- try {
346
- await call({
347
- chat: { type: "direct", id: channelId ?? "demo-chat" },
348
- trigger: { type: "wam-demo", attributes: {} },
349
- input: { target: "world" },
350
- language: "en",
351
- });
352
- } catch (error) {
353
- console.error("Failed to execute command:", error);
354
- }
355
- };
356
-
357
- return (
358
- <div style={{ padding: 20 }}>
359
- <h1>Channel.io App</h1>
360
- <p>Channel ID: {channelId}</p>
361
-
362
- <button onClick={handleClick} disabled={loading}>
363
- {loading ? "Executing..." : "Execute Command"}
364
- </button>
365
-
366
- {data && (
367
- <p style={{ color: "green" }}>
368
- {data.attributes?.message ?? data.type}
369
- </p>
370
- )}
371
- </div>
372
- );
200
+ function json(value) {
201
+ return `${JSON.stringify(value, null, 2)}\n`;
202
+ }
203
+ function serverConfig() {
204
+ return `import "dotenv/config";\nimport type { ChannelAppModuleOptions } from "@channel.io/app-sdk-server";\n\nfunction required(name: string): string {\n const value = process.env[name]?.trim();\n if (!value) throw new Error(\`\${name} is required\`);\n return value;\n}\n\nexport const appId = required("APP_ID");\nexport const channelAppOptions: ChannelAppModuleOptions = {\n appId,\n appSecret: required("APP_SECRET"),\n signingKey: required("SIGNING_KEY"),\n autoRegister: true,\n};\n`;
205
+ }
206
+ function serverModule() {
207
+ return `import { Module } from "@nestjs/common";\nimport { APP_GUARD } from "@nestjs/core";\nimport { ChannelAppModule, SignatureGuard } from "@channel.io/app-sdk-server";\nimport { channelAppOptions } from "./config.js";\nimport { CommandExtension, HelloFunctions } from "./command.extension.js";\n\n@Module({\n imports: [ChannelAppModule.forRoot(channelAppOptions)],\n providers: [CommandExtension, HelloFunctions, { provide: APP_GUARD, useClass: SignatureGuard }],\n})\nexport class AppModule {}\n`;
208
+ }
209
+ function serverMain() {
210
+ return `import "reflect-metadata";\nimport { existsSync } from "node:fs";\nimport { resolve } from "node:path";\nimport { NestFactory } from "@nestjs/core";\nimport type { NestExpressApplication } from "@nestjs/platform-express";\nimport { AppModule } from "./app.module.js";\n\nasync function bootstrap() {\n const app = await NestFactory.create<NestExpressApplication>(AppModule, { rawBody: true });\n app.enableShutdownHooks();\n app.use((request: { method: string; url: string }, _response: unknown, next: () => void) => {\n const [path, query] = request.url.split("?", 2);\n if (request.method === "PUT" && path === "/functions") {\n request.url = "/functions/v1" + (query ? "?" + query : "");\n }\n next();\n });\n\n const wamDist = resolve(process.cwd(), "../wam/dist");\n if (existsSync(wamDist)) {\n app.useStaticAssets(wamDist, { prefix: "/resource/wam/hello" });\n }\n\n const port = Number(process.env.PORT ?? 3000);\n await app.listen(port);\n}\n\nvoid bootstrap();\n`;
211
+ }
212
+ function commandExtension(name) {
213
+ return `import { Injectable } from "@nestjs/common";\nimport { z } from "zod";\nimport { HELLO_FUNCTION, HELLO_WAM_NAME, CommandActionInputSchema } from "@${name}/shared";\nimport {\n CommandResultSchema,\n Extension,\n Func,\n GetCommandsOutputSchema,\n Input,\n InputSchema,\n OutputSchema,\n} from "@channel.io/app-sdk-server";\nimport { appId } from "./config.js";\n\n@Extension({ name: "command", systemVersion: "v1" })\nexport class CommandExtension {\n @Func("metadata.getCommands")\n @InputSchema(z.object({}))\n @OutputSchema(GetCommandsOutputSchema)\n getCommands(): z.infer<typeof GetCommandsOutputSchema> {\n return { commands: [{\n name: "hello",\n scope: "desk",\n description: "Open the starter WAM",\n actionFunctionName: HELLO_FUNCTION,\n alfMode: "disable",\n enabledByDefault: true,\n }] };\n }\n}\n\n@Injectable()\nexport class HelloFunctions {\n @Func(HELLO_FUNCTION)\n @InputSchema(CommandActionInputSchema)\n @OutputSchema(CommandResultSchema)\n open(@Input() input: z.infer<typeof CommandActionInputSchema>): z.infer<typeof CommandResultSchema> {\n return {\n type: "wam",\n attributes: {\n appId,\n name: HELLO_WAM_NAME,\n wamArgs: { message: \`Hello from ${name}!\`, language: input.language ?? "en" },\n },\n };\n }\n}\n`;
214
+ }
215
+ function sharedContract() {
216
+ return `import { z } from "zod";\n\nexport const HELLO_FUNCTION = "hello.open";\nexport const HELLO_WAM_NAME = "hello";\n\nexport const CommandActionInputSchema = z.object({\n chat: z.object({ type: z.string(), id: z.string() }).optional(),\n trigger: z.object({ type: z.string(), attributes: z.record(z.string()).nullish() }).optional(),\n input: z.record(z.unknown()).nullish().transform((value) => value ?? {}),\n language: z.string().optional(),\n});\n\nexport const HelloWamDataSchema = z.object({\n appId: z.string(),\n channelId: z.string(),\n message: z.string(),\n language: z.string(),\n});\n`;
373
217
  }
374
- `);
218
+ function wamMain() {
219
+ return `import ReactDOM from "react-dom/client";\nimport { WamProvider } from "@channel.io/app-sdk-wam";\nimport App from "./App";\nimport "@channel.io/bezier-react/styles.css";\n\nReactDOM.createRoot(document.getElementById("root")!).render(\n <WamProvider><App /></WamProvider>\n);\n`;
375
220
  }
376
- async function createSharedPackage(targetDir, name) {
377
- const sharedDir = join(targetDir, "packages", "shared");
378
- // package.json
379
- await writeFile(join(sharedDir, "package.json"), JSON.stringify({
380
- name: `@${name}/shared`,
381
- version: "0.0.1",
382
- private: true,
383
- type: "module",
384
- main: "./dist/index.js",
385
- types: "./dist/index.d.ts",
386
- scripts: {
387
- build: "tsc",
388
- dev: "tsc --watch",
389
- },
390
- devDependencies: {
391
- typescript: "^5.7.2",
392
- },
393
- }, null, 2));
394
- // tsconfig.json
395
- await writeFile(join(sharedDir, "tsconfig.json"), JSON.stringify({
396
- compilerOptions: {
397
- target: "ES2022",
398
- module: "NodeNext",
399
- moduleResolution: "NodeNext",
400
- strict: true,
401
- esModuleInterop: true,
402
- skipLibCheck: true,
403
- declaration: true,
404
- outDir: "./dist",
405
- rootDir: "./src",
406
- },
407
- include: ["src/**/*"],
408
- }, null, 2));
409
- // index.ts
410
- await writeFile(join(sharedDir, "src", "index.ts"), `// Shared types and utilities
411
- export interface AppConfig {
412
- appId: string;
413
- channelId: string;
221
+ function wamApp(name) {
222
+ return `import { Button, Text, VStack } from "@channel.io/bezier-react/beta";\nimport { useTypedWamData, useWamClose } from "@channel.io/app-sdk-wam";\nimport { HeightSynchronizer, WamHeader, WamThemeProvider } from "@channel.io/app-sdk-wam-ui";\nimport { HelloWamDataSchema } from "@${name}/shared";\n\nexport default function App() {\n const { close } = useWamClose();\n const parsed = HelloWamDataSchema.safeParse({\n appId: useTypedWamData("appId"),\n channelId: useTypedWamData("channelId"),\n message: useTypedWamData("message"),\n language: useTypedWamData("language"),\n });\n\n return (\n <WamThemeProvider>\n <HeightSynchronizer maxHeight={480}>\n <WamHeader title="Hello" onClose={close} />\n <VStack spacing={16} style={{ padding: "0 24px 24px" }}>\n <Text>{parsed.success ? parsed.data.message : "WAM data is unavailable."}</Text>\n <Button label="Close" variant="filled" semantic="primary" onClick={close} />\n </VStack>\n </HeightSynchronizer>\n </WamThemeProvider>\n );\n}\n`;
414
223
  }
415
- `);
224
+ function starterReadme(name) {
225
+ return `# ${name}\n\nA TypeScript Channel.io app starter generated by \`@channel.io/app-sdk\`. It includes a secure NestJS Function server, a command Extension, a shared Zod contract, and a React WAM using the WAM SDK and WAM UI package.\n\n## Run\n\n\`\`\`sh\ncorepack pnpm install\ncp apps/server/.env.example apps/server/.env\ncorepack pnpm build\ncorepack pnpm dev\n\`\`\`\n\nConfigure the public Function Endpoint as \`https://YOUR_HOST/functions\` and WAM Endpoint as \`https://YOUR_HOST/resource/wam\`. Keep App Secret and Signing Key server-side.\n\nStart with the [SDK Quickstart](https://github.com/channel-io/app-sdk/blob/main/docs/guides/en/quickstart.md), then use the [TypeScript reference](https://github.com/channel-io/app-sdk/blob/main/docs/reference/typescript/README.md). For a complete runnable app, see the [TypeScript tutorial](https://github.com/channel-io/app-tutorial-ts).\n`;
416
226
  }
417
227
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErE,MAAM,cAAc,GAAG,eAAe,CAAC;AAOvC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,mDAAmD,CAAC;KAChE,QAAQ,CAAC,QAAQ,EAAE,wCAAwC,CAAC;KAC5D,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtE,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,UAA4B,EAAE;IAC1E,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,cAAc,CAAC;IACxD,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;IAEvB,MAAM,WAAW,GAAG,CAAC,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,CAAC,CAAC;IAC/E,MAAM,OAAO,CAAC,GAAG,CACf,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CACvF,CAAC;IAEF,MAAM,KAAK,GAA2B;QACpC,cAAc,EAAE,IAAI,CAAC;YACnB,IAAI;YACJ,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,aAAa;YAC7B,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;YAC9B,OAAO,EAAE;gBACP,KAAK,EAAE,iBAAiB;gBACxB,GAAG,EAAE,eAAe;gBACpB,SAAS,EAAE,qBAAqB;aACjC;YACD,eAAe,EAAE;gBACf,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,QAAQ;aACrB;SACF,CAAC;QACF,qBAAqB,EAAE,6CAA6C;QACpE,YAAY,EAAE,IAAI,CAAC;YACjB,OAAO,EAAE,iCAAiC;YAC1C,KAAK,EAAE;gBACL,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE;gBACtD,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC9D,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;aAClD;SACF,CAAC;QACF,YAAY,EAAE,mCAAmC;QACjD,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC;QAChC,0BAA0B,EAAE,4GAA4G;QACxI,0BAA0B,EAAE,IAAI,CAAC;YAC/B,IAAI,EAAE,IAAI,IAAI,SAAS;YACvB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,KAAK,EAAE,YAAY;gBACnB,GAAG,EAAE,oBAAoB;gBACzB,KAAK,EAAE,mBAAmB;gBAC1B,SAAS,EAAE,cAAc;aAC1B;YACD,YAAY,EAAE;gBACZ,4BAA4B,EAAE,UAAU;gBACxC,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE,aAAa;gBAClC,gBAAgB,EAAE,UAAU;gBAC5B,cAAc,EAAE,UAAU;gBAC1B,0BAA0B,EAAE,UAAU;gBACtC,MAAM,EAAE,SAAS;gBACjB,kBAAkB,EAAE,QAAQ;gBAC5B,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,UAAU;aAChB;YACD,eAAe,EAAE;gBACf,aAAa,EAAE,UAAU;gBACzB,aAAa,EAAE,UAAU;gBACzB,UAAU,EAAE,QAAQ;aACrB;SACF,CAAC;QACF,2BAA2B,EAAE,IAAI,CAAC;YAChC,OAAO,EAAE,uCAAuC;YAChD,UAAU,EAAE,oBAAoB;YAChC,UAAU,EAAE,KAAK;YACjB,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SACpC,CAAC;QACF,2BAA2B,EAAE,IAAI,CAAC;YAChC,eAAe,EAAE;gBACf,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,UAAU;gBAClB,gBAAgB,EAAE,UAAU;gBAC5B,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,IAAI;gBACZ,eAAe,EAAE,IAAI;gBACrB,YAAY,EAAE,IAAI;gBAClB,sBAAsB,EAAE,IAAI;gBAC5B,qBAAqB,EAAE,IAAI;aAC5B;YACD,OAAO,EAAE,CAAC,aAAa,CAAC;YACxB,OAAO,EAAE,CAAC,cAAc,CAAC;SAC1B,CAAC;QACF,2BAA2B,EAAE,YAAY,EAAE;QAC3C,+BAA+B,EAAE,YAAY,EAAE;QAC/C,yBAAyB,EAAE,UAAU,EAAE;QACvC,sCAAsC,EAAE,gBAAgB,CAAC,IAAI,CAAC;QAC9D,8BAA8B,EAAE,IAAI,CAAC;YACnC,IAAI,EAAE,IAAI,IAAI,SAAS;YACvB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,mBAAmB;YAC1B,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE;YAC3E,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE;YACpD,YAAY,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE;YACjC,eAAe,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;SAC1C,CAAC;QACF,+BAA+B,EAAE,IAAI,CAAC;YACpC,eAAe,EAAE;gBACf,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,UAAU;gBAClB,gBAAgB,EAAE,UAAU;gBAC5B,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,IAAI;gBACZ,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,IAAI;aACnB;YACD,OAAO,EAAE,CAAC,aAAa,CAAC;YACxB,OAAO,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;SAClC,CAAC;QACF,8BAA8B,EAAE,cAAc,EAAE;QAChD,uBAAuB,EAAE,IAAI,CAAC;YAC5B,IAAI,EAAE,IAAI,IAAI,MAAM;YACpB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,KAAK,EAAE,mBAAmB;gBAC1B,GAAG,EAAE,MAAM;gBACX,SAAS,EAAE,cAAc;gBACzB,OAAO,EAAE,cAAc;aACxB;YACD,YAAY,EAAE;gBACZ,yBAAyB,EAAE,UAAU;gBACrC,4BAA4B,EAAE,YAAY;gBAC1C,0BAA0B,EAAE,QAAQ;gBACpC,0BAA0B,EAAE,cAAc;gBAC1C,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE,aAAa;gBAClC,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,SAAS;gBACtB,mBAAmB,EAAE,QAAQ;aAC9B;YACD,eAAe,EAAE;gBACf,cAAc,EAAE,UAAU;gBAC1B,kBAAkB,EAAE,SAAS;gBAC7B,sBAAsB,EAAE,QAAQ;gBAChC,UAAU,EAAE,QAAQ;gBACpB,IAAI,EAAE,QAAQ;aACf;SACF,CAAC;QACF,wBAAwB,EAAE,IAAI,CAAC;YAC7B,eAAe,EAAE;gBACf,MAAM,EAAE,QAAQ;gBAChB,uBAAuB,EAAE,IAAI;gBAC7B,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC;gBACtC,MAAM,EAAE,QAAQ;gBAChB,gBAAgB,EAAE,SAAS;gBAC3B,0BAA0B,EAAE,IAAI;gBAChC,eAAe,EAAE,IAAI;gBACrB,MAAM,EAAE,IAAI;gBACZ,GAAG,EAAE,WAAW;gBAChB,MAAM,EAAE,IAAI;gBACZ,YAAY,EAAE,IAAI;aACnB;YACD,OAAO,EAAE,CAAC,KAAK,CAAC;SACjB,CAAC;QACF,yBAAyB,EAAE,2LAA2L;QACtN,qBAAqB,EAAE,uKAAuK,IAAI,yIAAyI;QAC3U,uBAAuB,EAAE,OAAO,EAAE;QAClC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC;KACrC,CAAC;IAEF,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAC1F,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,0eAA0e,CAAC;AACpf,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,gfAAgf,CAAC;AAC1f,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,2+BAA2+B,CAAC;AACr/B,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,sJAAsJ,IAAI,olCAAolC,IAAI,sEAAsE,CAAC;AACl0C,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,4lBAA4lB,CAAC;AACtmB,CAAC;AAED,SAAS,OAAO;IACd,OAAO,wRAAwR,CAAC;AAClS,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,uRAAuR,IAAI,qwBAAqwB,CAAC;AAC1iC,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,KAAK,IAAI,o3BAAo3B,CAAC;AACv4B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.test.d.ts","sourceRoot":"","sources":["../../src/commands/create.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import { mkdtemp, readFile, rm } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { afterEach, describe, expect, it } from "vitest";
5
+ import { createApp } from "./create.js";
6
+ const temporaryDirectories = [];
7
+ afterEach(async () => {
8
+ await Promise.all(temporaryDirectories.splice(0).map((path) => rm(path, { recursive: true })));
9
+ });
10
+ describe("createApp", () => {
11
+ it("creates a current secure server, shared contract, and React WAM starter", async () => {
12
+ const cwd = await mkdtemp(join(tmpdir(), "channel-app-cli-"));
13
+ temporaryDirectories.push(cwd);
14
+ const target = await createApp("hello-app", { cwd, sdkVersion: "9.8.7" });
15
+ const serverPackage = JSON.parse(await readFile(join(target, "apps/server/package.json"), "utf8"));
16
+ const wamPackage = JSON.parse(await readFile(join(target, "apps/wam/package.json"), "utf8"));
17
+ const main = await readFile(join(target, "apps/server/src/main.ts"), "utf8");
18
+ const module = await readFile(join(target, "apps/server/src/app.module.ts"), "utf8");
19
+ const environment = await readFile(join(target, "apps/server/.env.example"), "utf8");
20
+ expect(serverPackage.dependencies["@channel.io/app-sdk-server"]).toBe("9.8.7");
21
+ expect(wamPackage.dependencies["@channel.io/app-sdk-wam"]).toBe("9.8.7");
22
+ expect(wamPackage.dependencies["@channel.io/app-sdk-wam-ui"]).toBe("0.4.1");
23
+ expect(wamPackage.dependencies["@channel.io/bezier-react"]).toBe("4.0.0-next.14");
24
+ expect(main).toContain("rawBody: true");
25
+ expect(module).toContain("SignatureGuard");
26
+ expect(environment).toContain("SIGNING_KEY=");
27
+ });
28
+ it("rejects names that cannot be used as package scopes", async () => {
29
+ const cwd = await mkdtemp(join(tmpdir(), "channel-app-cli-"));
30
+ temporaryDirectories.push(cwd);
31
+ await expect(createApp("Hello App", { cwd })).rejects.toThrow("App name must use lowercase");
32
+ });
33
+ });
34
+ //# sourceMappingURL=create.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.test.js","sourceRoot":"","sources":["../../src/commands/create.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Version used by generated server and WAM SDK dependencies. */
2
+ export declare const packageVersion: string;
3
+ /** WAM UI version verified with the generated React starter. */
4
+ export declare const wamUiVersion: string;
5
+ //# sourceMappingURL=package-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-version.d.ts","sourceRoot":"","sources":["../src/package-version.ts"],"names":[],"mappings":"AAQA,iEAAiE;AACjE,eAAO,MAAM,cAAc,QAAmB,CAAC;AAE/C,gEAAgE;AAChE,eAAO,MAAM,YAAY,QAAwB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { createRequire } from "node:module";
2
+ import { dirname, join } from "node:path";
3
+ const require = createRequire(import.meta.url);
4
+ const manifest = require("../package.json");
5
+ const wamUiEntry = require.resolve("@channel.io/app-sdk-wam-ui");
6
+ const wamUiManifest = require(join(dirname(wamUiEntry), "../package.json"));
7
+ /** Version used by generated server and WAM SDK dependencies. */
8
+ export const packageVersion = manifest.version;
9
+ /** WAM UI version verified with the generated React starter. */
10
+ export const wamUiVersion = wamUiManifest.version;
11
+ //# sourceMappingURL=package-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-version.js","sourceRoot":"","sources":["../src/package-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AACnE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACjE,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC,CAAwB,CAAC;AAEnG,iEAAiE;AACjE,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;AAE/C,gEAAgE;AAChE,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@channel.io/app-sdk",
3
- "version": "0.17.2",
3
+ "version": "0.18.1",
4
4
  "description": "CLI and main entry for Channel.io App SDK",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,9 +22,10 @@
22
22
  "commander": "^12.1.0",
23
23
  "picocolors": "^1.1.1",
24
24
  "prompts": "^2.4.2",
25
- "@channel.io/app-sdk-core": "0.17.2",
26
- "@channel.io/app-sdk-server": "0.17.2",
27
- "@channel.io/app-sdk-wam": "0.17.2"
25
+ "@channel.io/app-sdk-wam": "0.18.1",
26
+ "@channel.io/app-sdk-core": "0.18.1",
27
+ "@channel.io/app-sdk-server": "0.18.1",
28
+ "@channel.io/app-sdk-wam-ui": "0.4.1"
28
29
  },
29
30
  "devDependencies": {
30
31
  "@types/prompts": "^2.4.9",
@@ -33,7 +34,7 @@
33
34
  },
34
35
  "repository": {
35
36
  "type": "git",
36
- "url": "https://github.com/channel-io/cht-app-sdk.git",
37
+ "url": "https://github.com/channel-io/app-sdk.git",
37
38
  "directory": "ts/packages/cli"
38
39
  },
39
40
  "license": "MIT",