swallowkit 1.0.0-beta.3 → 1.0.0-beta.5

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.
Files changed (43) hide show
  1. package/README.ja.md +27 -0
  2. package/README.md +27 -0
  3. package/dist/cli/commands/build.d.ts +6 -0
  4. package/dist/cli/commands/build.d.ts.map +1 -0
  5. package/dist/cli/commands/build.js +177 -0
  6. package/dist/cli/commands/build.js.map +1 -0
  7. package/dist/cli/commands/create-model.d.ts.map +1 -1
  8. package/dist/cli/commands/create-model.js +2 -1
  9. package/dist/cli/commands/create-model.js.map +1 -1
  10. package/dist/cli/commands/deploy.d.ts +3 -0
  11. package/dist/cli/commands/deploy.d.ts.map +1 -0
  12. package/dist/cli/commands/deploy.js +147 -0
  13. package/dist/cli/commands/deploy.js.map +1 -0
  14. package/dist/cli/commands/dev.d.ts.map +1 -1
  15. package/dist/cli/commands/dev.js +22 -13
  16. package/dist/cli/commands/dev.js.map +1 -1
  17. package/dist/cli/commands/init.d.ts +6 -0
  18. package/dist/cli/commands/init.d.ts.map +1 -1
  19. package/dist/cli/commands/init.js +132 -80
  20. package/dist/cli/commands/init.js.map +1 -1
  21. package/dist/cli/commands/scaffold.d.ts.map +1 -1
  22. package/dist/cli/commands/scaffold.js +3 -2
  23. package/dist/cli/commands/scaffold.js.map +1 -1
  24. package/dist/cli/commands/setup.d.ts +6 -0
  25. package/dist/cli/commands/setup.d.ts.map +1 -0
  26. package/dist/cli/commands/setup.js +254 -0
  27. package/dist/cli/commands/setup.js.map +1 -0
  28. package/dist/cli/index.js +14 -1
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/core/config.d.ts.map +1 -1
  31. package/dist/core/config.js +3 -1
  32. package/dist/core/config.js.map +1 -1
  33. package/dist/core/scaffold/functions-generator.d.ts.map +1 -1
  34. package/dist/core/scaffold/functions-generator.js +8 -1
  35. package/dist/core/scaffold/functions-generator.js.map +1 -1
  36. package/dist/core/scaffold/model-parser.d.ts.map +1 -1
  37. package/dist/core/scaffold/model-parser.js +6 -2
  38. package/dist/core/scaffold/model-parser.js.map +1 -1
  39. package/dist/utils/package-manager.d.ts +108 -0
  40. package/dist/utils/package-manager.d.ts.map +1 -0
  41. package/dist/utils/package-manager.js +211 -0
  42. package/dist/utils/package-manager.js.map +1 -0
  43. package/package.json +3 -2
package/README.ja.md CHANGED
@@ -39,15 +39,34 @@ Zod スキーマから自動的に CRUD 操作を生成する Scaffold 機能を
39
39
 
40
40
  ```bash
41
41
  npx swallowkit init my-app
42
+ # or
43
+ pnpm dlx swallowkit init my-app
42
44
  cd my-app
43
45
  ```
44
46
 
47
+ 対話プロンプトで CI/CD プロバイダー、Cosmos DB モード、ネットワーク設定を選択します。フラグで直接指定するとプロンプトをスキップできます:
48
+
49
+ ```bash
50
+ # 非対話モード(VS Code 拡張機能や自動化に便利)
51
+ npx swallowkit init my-app --cicd github --cosmos-db-mode serverless --vnet outbound
52
+ ```
53
+
54
+ | フラグ | 値 | 説明 |
55
+ |------|-----|------|
56
+ | `--cicd <provider>` | `github`, `azure`, `skip` | CI/CD プロバイダー |
57
+ | `--cosmos-db-mode <mode>` | `freetier`, `serverless` | Cosmos DB 課金モード |
58
+ | `--vnet <option>` | `outbound`, `none` | ネットワークセキュリティ |
59
+
60
+ フラグを省略すると、その項目は対話プロンプトで質問されます。
61
+
45
62
  ### 2. モデルの作成
46
63
 
47
64
  複数のモデルをまとめて作成できます:
48
65
 
49
66
  ```bash
50
67
  npx swallowkit create-model category todo
68
+ # or
69
+ pnpm dlx swallowkit create-model category todo
51
70
  ```
52
71
 
53
72
  これにより `shared/models/category.ts` と `shared/models/todo.ts` が生成されます。必要なフィールドを追加してカスタマイズ:
@@ -91,6 +110,8 @@ export type Todo = z.infer<typeof todo>;
91
110
 
92
111
  ```bash
93
112
  npx swallowkit scaffold shared/models/todo.ts
113
+ # or
114
+ pnpm dlx swallowkit scaffold shared/models/todo.ts
94
115
  ```
95
116
 
96
117
  これで以下が自動生成されます:
@@ -102,6 +123,8 @@ npx swallowkit scaffold shared/models/todo.ts
102
123
 
103
124
  ```bash
104
125
  npx swallowkit dev
126
+ # or
127
+ pnpm dlx swallowkit dev
105
128
  ```
106
129
 
107
130
  - Next.js: http://localhost:3000
@@ -171,6 +194,8 @@ await api.delete('/api/todos/123');
171
194
  ## 📦 前提条件
172
195
 
173
196
  - Node.js 22.x
197
+ - **pnpm**(推奨): `corepack enable` を実行するか、`npm install -g pnpm` でインストール
198
+ - npm でも動作します — SwallowKit はパッケージマネージャーを自動検出します(pnpm がインストール済みなら常に pnpm を優先)
174
199
  - Azure Cosmos DB Emulator (ローカル開発用)
175
200
  - [公式ドキュメント (vNext 推奨)](https://learn.microsoft.com/ja-jp/azure/cosmos-db/emulator-linux)
176
201
  - Windows: [ダウンロード](https://aka.ms/cosmosdb-emulator)
@@ -184,6 +209,8 @@ Next.js アプリを standalone モードで Azure Static Web Apps にデプロ
184
209
 
185
210
  ```bash
186
211
  npx swallowkit provision --resource-group my-app-rg --location japaneast
212
+ # or
213
+ pnpm dlx swallowkit provision --resource-group my-app-rg --location japaneast
187
214
  ```
188
215
 
189
216
  プロビジョニング完了後、CI/CD に必要なシークレット値がターミナルに表示されます。コピーしておいてください。
package/README.md CHANGED
@@ -40,15 +40,34 @@ Featuring Scaffold functionality to automatically generate CRUD operations from
40
40
 
41
41
  ```bash
42
42
  npx swallowkit init my-app
43
+ # or
44
+ pnpm dlx swallowkit init my-app
43
45
  cd my-app
44
46
  ```
45
47
 
48
+ The interactive prompts ask for CI/CD provider, Cosmos DB mode, and network settings. You can also specify them as flags to skip prompts entirely:
49
+
50
+ ```bash
51
+ # Non-interactive mode (useful for VS Code extensions or automation)
52
+ npx swallowkit init my-app --cicd github --cosmos-db-mode serverless --vnet outbound
53
+ ```
54
+
55
+ | Flag | Values | Description |
56
+ |------|--------|-------------|
57
+ | `--cicd <provider>` | `github`, `azure`, `skip` | CI/CD provider |
58
+ | `--cosmos-db-mode <mode>` | `freetier`, `serverless` | Cosmos DB pricing mode |
59
+ | `--vnet <option>` | `outbound`, `none` | Network security |
60
+
61
+ Omit any flag to be prompted for that value interactively.
62
+
46
63
  ### 2. Create Models
47
64
 
48
65
  You can create multiple models at once:
49
66
 
50
67
  ```bash
51
68
  npx swallowkit create-model category todo
69
+ # or
70
+ pnpm dlx swallowkit create-model category todo
52
71
  ```
53
72
 
54
73
  This generates `shared/models/category.ts` and `shared/models/todo.ts`. Customize them by adding your required fields:
@@ -92,6 +111,8 @@ export type Todo = z.infer<typeof todo>;
92
111
 
93
112
  ```bash
94
113
  npx swallowkit scaffold shared/models/todo.ts
114
+ # or
115
+ pnpm dlx swallowkit scaffold shared/models/todo.ts
95
116
  ```
96
117
 
97
118
  This auto-generates:
@@ -103,6 +124,8 @@ This auto-generates:
103
124
 
104
125
  ```bash
105
126
  npx swallowkit dev
127
+ # or
128
+ pnpm dlx swallowkit dev
106
129
  ```
107
130
 
108
131
  - Next.js: http://localhost:3000
@@ -172,6 +195,8 @@ await api.delete('/api/todos/123');
172
195
  ## 📦 Prerequisites
173
196
 
174
197
  - Node.js 22.x
198
+ - **pnpm** (recommended): `corepack enable` or `npm install -g pnpm`
199
+ - npm also works — SwallowKit auto-detects the package manager (if pnpm is installed, it is always preferred)
175
200
  - Azure Cosmos DB Emulator (local development)
176
201
  - [Official documentation (vNext recommended)](https://learn.microsoft.com/en-us/azure/cosmos-db/emulator-linux)
177
202
  - Windows: [Download](https://aka.ms/cosmosdb-emulator)
@@ -185,6 +210,8 @@ Deploy your Next.js app to Azure Static Web Apps using standalone mode, and conn
185
210
 
186
211
  ```bash
187
212
  npx swallowkit provision --resource-group my-app-rg --location japaneast
213
+ # or
214
+ pnpm dlx swallowkit provision --resource-group my-app-rg --location japaneast
188
215
  ```
189
216
 
190
217
  After provisioning, the required CI/CD secret values are displayed in the terminal. Copy them.
@@ -0,0 +1,6 @@
1
+ interface BuildOptions {
2
+ output: string;
3
+ }
4
+ export declare function buildCommand(options: BuildOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAGA,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,iBA+BvD"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.buildCommand = buildCommand;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ async function buildCommand(options) {
40
+ console.log("🔨 Building Next.js app for Azure Static Web Apps...");
41
+ const projectRoot = process.cwd();
42
+ const outputDir = path.join(projectRoot, options.output);
43
+ try {
44
+ // 1. Next.js の設定を確認・更新
45
+ console.log("\n⚙️ Configuring Next.js for Azure deployment...");
46
+ await ensureNextJsConfig(projectRoot);
47
+ // 2. Next.js をビルド (standalone モード)
48
+ console.log("\n📦 Building Next.js application...");
49
+ await buildNextJs(projectRoot);
50
+ // 3. ビルド成果物を出力ディレクトリにコピー
51
+ console.log("\n📦 Preparing deployment artifacts...");
52
+ await copyBuildArtifacts(projectRoot, outputDir);
53
+ console.log(`\n✅ Build completed!`);
54
+ console.log(`📁 Output directory: ${outputDir}`);
55
+ console.log(`📁 Standalone output: ${path.join(projectRoot, '.next/standalone')}`);
56
+ console.log("\n📝 Next steps:");
57
+ console.log(" 1. swallowkit deploy (Deploy to Azure Static Web Apps)");
58
+ }
59
+ catch (error) {
60
+ console.error("❌ Build failed:", error);
61
+ if (error instanceof Error) {
62
+ console.error("Details:", error.message);
63
+ }
64
+ process.exit(1);
65
+ }
66
+ }
67
+ // Next.js の設定を確認・更新 (standalone モード有効化)
68
+ async function ensureNextJsConfig(projectRoot) {
69
+ const nextConfigPath = path.join(projectRoot, 'next.config.js');
70
+ const nextConfigMjsPath = path.join(projectRoot, 'next.config.mjs');
71
+ let configPath = nextConfigPath;
72
+ let isEsm = false;
73
+ if (!fs.existsSync(nextConfigPath) && fs.existsSync(nextConfigMjsPath)) {
74
+ configPath = nextConfigMjsPath;
75
+ isEsm = true;
76
+ }
77
+ // 既存の設定を読み込む
78
+ let configContent = '';
79
+ if (fs.existsSync(configPath)) {
80
+ configContent = fs.readFileSync(configPath, 'utf-8');
81
+ }
82
+ // standalone モードが設定されているか確認
83
+ if (configContent.includes("output: 'standalone'") || configContent.includes('output: "standalone"')) {
84
+ console.log('✅ Next.js standalone mode is already configured');
85
+ return;
86
+ }
87
+ // standalone モードを追加
88
+ const newConfig = isEsm
89
+ ? `/** @type {import('next').NextConfig} */
90
+ const nextConfig = {
91
+ output: 'standalone',
92
+ // その他の設定はここに追加
93
+ };
94
+
95
+ export default nextConfig;
96
+ `
97
+ : `/** @type {import('next').NextConfig} */
98
+ const nextConfig = {
99
+ output: 'standalone',
100
+ // その他の設定はここに追加
101
+ };
102
+
103
+ module.exports = nextConfig;
104
+ `;
105
+ fs.writeFileSync(configPath, newConfig, 'utf-8');
106
+ console.log('✅ Next.js configured for standalone mode');
107
+ }
108
+ async function buildNextJs(projectRoot) {
109
+ const { spawn } = require('child_process');
110
+ return new Promise((resolve, reject) => {
111
+ const build = spawn('npm', ['run', 'build'], {
112
+ cwd: projectRoot,
113
+ stdio: 'inherit',
114
+ shell: true
115
+ });
116
+ build.on('close', (code) => {
117
+ if (code === 0) {
118
+ console.log('✅ Next.js build completed');
119
+ resolve();
120
+ }
121
+ else {
122
+ reject(new Error(`Next.js build failed with code ${code}`));
123
+ }
124
+ });
125
+ });
126
+ }
127
+ // ビルド成果物を出力ディレクトリにコピー
128
+ async function copyBuildArtifacts(projectRoot, outputDir) {
129
+ if (!fs.existsSync(outputDir)) {
130
+ fs.mkdirSync(outputDir, { recursive: true });
131
+ }
132
+ const standaloneDir = path.join(projectRoot, '.next/standalone');
133
+ const staticDir = path.join(projectRoot, '.next/static');
134
+ const publicDir = path.join(projectRoot, 'public');
135
+ if (!fs.existsSync(standaloneDir)) {
136
+ console.warn('⚠️ Standalone output not found. Make sure output: "standalone" is set in next.config.js');
137
+ return;
138
+ }
139
+ // standalone ディレクトリの内容をコピー
140
+ console.log('📦 Copying standalone output...');
141
+ const { execSync } = require('child_process');
142
+ try {
143
+ // Windows の場合は xcopy、それ以外は cp を使用
144
+ if (process.platform === 'win32') {
145
+ execSync(`xcopy "${standaloneDir}" "${outputDir}" /E /I /Y /Q`, { stdio: 'inherit' });
146
+ }
147
+ else {
148
+ execSync(`cp -r "${standaloneDir}/." "${outputDir}/"`, { stdio: 'inherit' });
149
+ }
150
+ // .next/static をコピー
151
+ if (fs.existsSync(staticDir)) {
152
+ const targetStaticDir = path.join(outputDir, '.next/static');
153
+ fs.mkdirSync(path.dirname(targetStaticDir), { recursive: true });
154
+ if (process.platform === 'win32') {
155
+ execSync(`xcopy "${staticDir}" "${targetStaticDir}" /E /I /Y /Q`, { stdio: 'inherit' });
156
+ }
157
+ else {
158
+ execSync(`cp -r "${staticDir}" "${targetStaticDir}"`, { stdio: 'inherit' });
159
+ }
160
+ }
161
+ // public ディレクトリをコピー
162
+ if (fs.existsSync(publicDir)) {
163
+ const targetPublicDir = path.join(outputDir, 'public');
164
+ if (process.platform === 'win32') {
165
+ execSync(`xcopy "${publicDir}" "${targetPublicDir}" /E /I /Y /Q`, { stdio: 'inherit' });
166
+ }
167
+ else {
168
+ execSync(`cp -r "${publicDir}" "${targetPublicDir}"`, { stdio: 'inherit' });
169
+ }
170
+ }
171
+ console.log('✅ Build artifacts copied successfully');
172
+ }
173
+ catch (error) {
174
+ throw new Error(`Failed to copy build artifacts: ${error}`);
175
+ }
176
+ }
177
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-model.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create-model.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0CD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,iBA2DnE"}
1
+ {"version":3,"file":"create-model.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create-model.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0CD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,iBA2DnE"}
@@ -43,6 +43,7 @@ const path = __importStar(require("path"));
43
43
  const readline = __importStar(require("readline"));
44
44
  const model_parser_1 = require("../../core/scaffold/model-parser");
45
45
  const config_1 = require("../../core/config");
46
+ const package_manager_1 = require("../../utils/package-manager");
46
47
  /**
47
48
  * モデルテンプレートを生成
48
49
  */
@@ -126,7 +127,7 @@ async function createModelCommand(options) {
126
127
  if (created.length > 0) {
127
128
  console.log("\n📝 Next steps:");
128
129
  console.log(" 1. Customize the generated model fields in shared/models/");
129
- console.log(" 2. Run 'npx swallowkit scaffold <model>' to generate CRUD code");
130
+ console.log(` 2. Run '${(0, package_manager_1.getCommands)((0, package_manager_1.detectFromProject)()).dlx} swallowkit scaffold <model>' to generate CRUD code`);
130
131
  }
131
132
  }
132
133
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"create-model.js","sourceRoot":"","sources":["../../../src/cli/commands/create-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-model.js","sourceRoot":"","sources":["../../../src/cli/commands/create-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const deployCommand: Command;
3
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,aAAa,SAgDtB,CAAC"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deployCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const child_process_1 = require("child_process");
6
+ exports.deployCommand = new commander_1.Command()
7
+ .name('deploy')
8
+ .description('Deploy to Azure Static Web Apps')
9
+ .option('--swa-name <name>', 'Azure Static Web Apps resource name')
10
+ .option('--resource-group <name>', 'Azure resource group name')
11
+ .option('--location <location>', 'Azure region', 'japaneast')
12
+ .option('--skip-build', 'Skip build step', false)
13
+ .action(async (options) => {
14
+ console.log('🚀 Deploying to Azure...\n');
15
+ try {
16
+ const projectRoot = process.cwd();
17
+ // Check if Azure CLI is installed
18
+ await checkAzureCli();
19
+ // Check if logged in to Azure
20
+ await checkAzureLogin();
21
+ // Build if not skipped
22
+ if (!options.skipBuild) {
23
+ console.log('📦 Building project...\n');
24
+ await runBuild(projectRoot);
25
+ }
26
+ // Deploy Static Web Apps
27
+ if (options.swaName && options.resourceGroup) {
28
+ await deploySwa(options, projectRoot);
29
+ }
30
+ else {
31
+ console.log('⚠️ Missing required options: --swa-name and --resource-group');
32
+ console.log('\n📝 Usage:');
33
+ console.log(' swallowkit deploy --swa-name <name> --resource-group <group>');
34
+ process.exit(1);
35
+ }
36
+ console.log('\n🎉 Deployment completed!');
37
+ console.log('\n📝 Next steps:');
38
+ console.log(' 1. Visit Azure Portal to verify deployment');
39
+ console.log(' 2. Configure environment variables for backend connection');
40
+ console.log(' 3. Check application logs if needed');
41
+ }
42
+ catch (error) {
43
+ console.error('❌ Deployment failed:', error);
44
+ if (error instanceof Error) {
45
+ console.error('Details:', error.message);
46
+ }
47
+ process.exit(1);
48
+ }
49
+ });
50
+ async function checkAzureCli() {
51
+ return new Promise((resolve, reject) => {
52
+ const check = (0, child_process_1.spawn)('az', ['--version'], {
53
+ stdio: 'pipe',
54
+ shell: true
55
+ });
56
+ check.on('close', (code) => {
57
+ if (code === 0) {
58
+ console.log('✅ Azure CLI is installed');
59
+ resolve();
60
+ }
61
+ else {
62
+ reject(new Error('Azure CLI is not installed. Please install it from https://aka.ms/installazurecliwindows'));
63
+ }
64
+ });
65
+ });
66
+ }
67
+ async function checkAzureLogin() {
68
+ return new Promise((resolve, reject) => {
69
+ const check = (0, child_process_1.spawn)('az', ['account', 'show'], {
70
+ stdio: 'pipe',
71
+ shell: true
72
+ });
73
+ check.on('close', (code) => {
74
+ if (code === 0) {
75
+ console.log('✅ Logged in to Azure');
76
+ resolve();
77
+ }
78
+ else {
79
+ reject(new Error('Not logged in to Azure. Please run: az login'));
80
+ }
81
+ });
82
+ });
83
+ }
84
+ async function runBuild(projectRoot) {
85
+ return new Promise((resolve, reject) => {
86
+ const build = (0, child_process_1.spawn)('npm', ['run', 'build'], {
87
+ cwd: projectRoot,
88
+ stdio: 'inherit',
89
+ shell: true
90
+ });
91
+ build.on('close', (code) => {
92
+ if (code === 0) {
93
+ resolve();
94
+ }
95
+ else {
96
+ reject(new Error(`Build failed with code ${code}`));
97
+ }
98
+ });
99
+ });
100
+ }
101
+ async function deploySwa(options, projectRoot) {
102
+ console.log('\n📦 Deploying to Azure Static Web Apps...');
103
+ console.log(` Resource: ${options.swaName}`);
104
+ console.log(` Resource Group: ${options.resourceGroup}\n`);
105
+ // Check if SWA CLI is installed
106
+ const swaCliCheck = (0, child_process_1.spawn)('swa', ['--version'], {
107
+ stdio: 'pipe',
108
+ shell: true
109
+ });
110
+ await new Promise((resolve, reject) => {
111
+ swaCliCheck.on('close', (code) => {
112
+ if (code === 0) {
113
+ resolve();
114
+ }
115
+ else {
116
+ reject(new Error('SWA CLI is not installed. Install it with: npm install -g @azure/static-web-apps-cli'));
117
+ }
118
+ });
119
+ });
120
+ // Deploy using SWA CLI
121
+ const appLocation = './';
122
+ const outputLocation = 'dist'; // standalone build output
123
+ const deployArgs = [
124
+ 'deploy',
125
+ '--app-location', appLocation,
126
+ '--output-location', outputLocation,
127
+ '--resource-group', options.resourceGroup,
128
+ '--app-name', options.swaName,
129
+ ];
130
+ return new Promise((resolve, reject) => {
131
+ const deploy = (0, child_process_1.spawn)('swa', deployArgs, {
132
+ cwd: projectRoot,
133
+ stdio: 'inherit',
134
+ shell: true
135
+ });
136
+ deploy.on('close', (code) => {
137
+ if (code === 0) {
138
+ console.log('\n✅ Static Web Apps deployment completed');
139
+ resolve();
140
+ }
141
+ else {
142
+ reject(new Error(`SWA deployment failed with code ${code}`));
143
+ }
144
+ });
145
+ });
146
+ }
147
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgEpC,eAAO,MAAM,UAAU,SAmBnB,CAAC"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiEpC,eAAO,MAAM,UAAU,SAmBnB,CAAC"}