swallowkit 1.1.1 → 2.0.0-alpha.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.
Files changed (93) hide show
  1. package/README.ja.md +47 -7
  2. package/README.md +47 -7
  3. package/dist/cli/commands/add-auth.d.ts.map +1 -1
  4. package/dist/cli/commands/add-auth.js +66 -21
  5. package/dist/cli/commands/add-auth.js.map +1 -1
  6. package/dist/cli/commands/dev.d.ts +4 -1
  7. package/dist/cli/commands/dev.d.ts.map +1 -1
  8. package/dist/cli/commands/dev.js +108 -44
  9. package/dist/cli/commands/dev.js.map +1 -1
  10. package/dist/cli/commands/init.d.ts +6 -5
  11. package/dist/cli/commands/init.d.ts.map +1 -1
  12. package/dist/cli/commands/init.js +83 -39
  13. package/dist/cli/commands/init.js.map +1 -1
  14. package/dist/cli/commands/scaffold.d.ts +1 -1
  15. package/dist/cli/commands/scaffold.d.ts.map +1 -1
  16. package/dist/cli/commands/scaffold.js +44 -16
  17. package/dist/cli/commands/scaffold.js.map +1 -1
  18. package/dist/cli/index.d.ts.map +1 -1
  19. package/dist/cli/index.js +6 -3
  20. package/dist/cli/index.js.map +1 -1
  21. package/dist/core/config.d.ts +2 -1
  22. package/dist/core/config.d.ts.map +1 -1
  23. package/dist/core/config.js +19 -0
  24. package/dist/core/config.js.map +1 -1
  25. package/dist/core/operations/migration-generator.d.ts +1 -1
  26. package/dist/core/operations/migration-generator.d.ts.map +1 -1
  27. package/dist/core/operations/migration-generator.js +22 -0
  28. package/dist/core/operations/migration-generator.js.map +1 -1
  29. package/dist/core/project/agent-instructions.d.ts +2 -1
  30. package/dist/core/project/agent-instructions.d.ts.map +1 -1
  31. package/dist/core/project/agent-instructions.js +12 -0
  32. package/dist/core/project/agent-instructions.js.map +1 -1
  33. package/dist/core/project/capabilities.d.ts +7 -0
  34. package/dist/core/project/capabilities.d.ts.map +1 -1
  35. package/dist/core/project/capabilities.js +7 -0
  36. package/dist/core/project/capabilities.js.map +1 -1
  37. package/dist/core/project/manifest.d.ts +3 -1
  38. package/dist/core/project/manifest.d.ts.map +1 -1
  39. package/dist/core/project/manifest.js +47 -25
  40. package/dist/core/project/manifest.js.map +1 -1
  41. package/dist/core/project/react-project.d.ts +26 -0
  42. package/dist/core/project/react-project.d.ts.map +1 -0
  43. package/dist/core/project/react-project.js +422 -0
  44. package/dist/core/project/react-project.js.map +1 -0
  45. package/dist/core/project/validation.d.ts.map +1 -1
  46. package/dist/core/project/validation.js +32 -10
  47. package/dist/core/project/validation.js.map +1 -1
  48. package/dist/core/scaffold/react-bff-generator.d.ts +10 -0
  49. package/dist/core/scaffold/react-bff-generator.d.ts.map +1 -0
  50. package/dist/core/scaffold/react-bff-generator.js +252 -0
  51. package/dist/core/scaffold/react-bff-generator.js.map +1 -0
  52. package/dist/core/scaffold/react-ui-generator.d.ts +6 -0
  53. package/dist/core/scaffold/react-ui-generator.d.ts.map +1 -0
  54. package/dist/core/scaffold/react-ui-generator.js +41 -0
  55. package/dist/core/scaffold/react-ui-generator.js.map +1 -0
  56. package/dist/index.d.ts +3 -3
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +3 -2
  59. package/dist/index.js.map +1 -1
  60. package/dist/machine/index.js +2 -2
  61. package/dist/machine/index.js.map +1 -1
  62. package/dist/types/index.d.ts +4 -0
  63. package/dist/types/index.d.ts.map +1 -1
  64. package/dist/utils/package-manager.d.ts +2 -2
  65. package/dist/utils/package-manager.d.ts.map +1 -1
  66. package/dist/utils/package-manager.js +4 -1
  67. package/dist/utils/package-manager.js.map +1 -1
  68. package/package.json +2 -2
  69. package/src/__tests__/agent-instructions.test.ts +1 -1
  70. package/src/__tests__/init.test.ts +29 -5
  71. package/src/__tests__/plan-apply.test.ts +101 -0
  72. package/src/__tests__/react.test.ts +819 -0
  73. package/src/__tests__/release-metadata.test.ts +121 -0
  74. package/src/cli/commands/add-auth.ts +67 -23
  75. package/src/cli/commands/dev.ts +109 -46
  76. package/src/cli/commands/init.ts +75 -35
  77. package/src/cli/commands/scaffold.ts +45 -20
  78. package/src/cli/index.ts +6 -3
  79. package/src/core/config.ts +21 -1
  80. package/src/core/operations/migration-generator.ts +35 -1
  81. package/src/core/project/agent-instructions.ts +14 -1
  82. package/src/core/project/agent-templates/AGENTS.md +24 -9
  83. package/src/core/project/agent-templates/bff-routes.instructions.md +5 -3
  84. package/src/core/project/capabilities.ts +14 -0
  85. package/src/core/project/manifest.ts +52 -27
  86. package/src/core/project/react-project.ts +507 -0
  87. package/src/core/project/validation.ts +32 -10
  88. package/src/core/scaffold/react-bff-generator.ts +292 -0
  89. package/src/core/scaffold/react-ui-generator.ts +51 -0
  90. package/src/index.ts +3 -1
  91. package/src/machine/index.ts +2 -2
  92. package/src/types/index.ts +4 -0
  93. package/src/utils/package-manager.ts +5 -2
@@ -0,0 +1,422 @@
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.buildReactSwaConfig = buildReactSwaConfig;
37
+ exports.createReactProject = createReactProject;
38
+ exports.createReactBffProject = createReactBffProject;
39
+ exports.buildReactBffBuildSource = buildReactBffBuildSource;
40
+ exports.buildReactReadme = buildReactReadme;
41
+ exports.buildReactGitHubSwaWorkflow = buildReactGitHubSwaWorkflow;
42
+ exports.buildReactAzureSwaPipeline = buildReactAzureSwaPipeline;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const package_manager_1 = require("../../utils/package-manager");
46
+ const react_bff_generator_1 = require("../scaffold/react-bff-generator");
47
+ function write(projectDir, relativePath, content) {
48
+ const destination = path.join(projectDir, ...relativePath.split(/[\\/]/));
49
+ fs.mkdirSync(path.dirname(destination), { recursive: true });
50
+ fs.writeFileSync(destination, content);
51
+ }
52
+ function buildReactSwaConfig() {
53
+ return {
54
+ platform: { apiRuntime: "node:20" },
55
+ navigationFallback: {
56
+ rewrite: "/index.html",
57
+ exclude: [
58
+ "/api/*",
59
+ "/.auth/*",
60
+ "/assets/*",
61
+ "/*.{css,js,json,ico,png,svg,txt}",
62
+ ],
63
+ },
64
+ routes: [{ route: "/*", allowedRoles: ["anonymous"] }],
65
+ globalHeaders: {
66
+ "X-Content-Type-Options": "nosniff",
67
+ "X-Frame-Options": "DENY",
68
+ },
69
+ };
70
+ }
71
+ function createReactProject(projectDir, projectName) {
72
+ write(projectDir, "package.json", JSON.stringify({
73
+ name: projectName,
74
+ version: "0.1.0",
75
+ private: true,
76
+ scripts: { dev: "vite --port 3000", preview: "vite preview" },
77
+ dependencies: {
78
+ react: "^19.0.0",
79
+ "react-dom": "^19.0.0",
80
+ "react-router-dom": "^7.0.0",
81
+ },
82
+ devDependencies: {
83
+ "@types/node": "^22.0.0",
84
+ "@types/react": "^19.0.0",
85
+ "@types/react-dom": "^19.0.0",
86
+ "@vitejs/plugin-react": "^5.0.0",
87
+ vite: "^7.0.0",
88
+ typescript: "^5.9.0",
89
+ tailwindcss: "^4.0.0",
90
+ "@tailwindcss/vite": "^4.0.0",
91
+ "@azure/static-web-apps-cli": "^2.0.0",
92
+ },
93
+ }, null, 2));
94
+ write(projectDir, "tsconfig.json", JSON.stringify({
95
+ compilerOptions: {
96
+ target: "ES2022",
97
+ lib: ["ES2022", "DOM", "DOM.Iterable"],
98
+ module: "ESNext",
99
+ moduleResolution: "bundler",
100
+ jsx: "react-jsx",
101
+ strict: true,
102
+ noEmit: true,
103
+ esModuleInterop: true,
104
+ skipLibCheck: true,
105
+ resolveJsonModule: true,
106
+ paths: { "@/*": ["./*"] },
107
+ types: ["vite/client"],
108
+ },
109
+ include: ["src", "lib"],
110
+ exclude: ["node_modules", "functions", "bff", "shared", "dist"],
111
+ }, null, 2));
112
+ write(projectDir, "vite.config.mts", `import { defineConfig } from 'vite';
113
+ import react from '@vitejs/plugin-react';
114
+ import tailwindcss from '@tailwindcss/vite';
115
+ import { fileURLToPath, URL } from 'node:url';
116
+
117
+ export default defineConfig({
118
+ plugins: [react(), tailwindcss()],
119
+ resolve: { alias: {
120
+ '@': fileURLToPath(new URL('.', import.meta.url)),
121
+ '@${projectName}/shared': fileURLToPath(new URL('./shared/index.ts', import.meta.url)),
122
+ } },
123
+ server: { port: 3000, strictPort: true },
124
+ build: { outDir: 'dist' },
125
+ });
126
+ `);
127
+ write(projectDir, "index.html", `<!doctype html>
128
+ <html lang="en">
129
+ <head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>SwallowKit</title></head>
130
+ <body><div id="root"></div><script type="module" src="/src/main.tsx"></script></body>
131
+ </html>
132
+ `);
133
+ write(projectDir, "src\\main.tsx", `import { StrictMode } from 'react';
134
+ import { createRoot } from 'react-dom/client';
135
+ import { BrowserRouter } from 'react-router-dom';
136
+ import App from './App';
137
+ import './style.css';
138
+
139
+ createRoot(document.getElementById('root')!).render(
140
+ <StrictMode><BrowserRouter><App /></BrowserRouter></StrictMode>,
141
+ );
142
+ `);
143
+ write(projectDir, "src\\App.tsx", `import { useRoutes, type RouteObject } from 'react-router-dom';
144
+ import Home from './Home';
145
+
146
+ const modules = import.meta.glob<RouteObject[]>('./pages/**/routes.tsx', { eager: true, import: 'default' });
147
+ const pages = import.meta.glob<{ default: React.ComponentType }>('./pages/login.tsx', { eager: true });
148
+ const Login = pages['./pages/login.tsx']?.default;
149
+
150
+ export default function App() {
151
+ return useRoutes([
152
+ { path: '/', element: <Home /> },
153
+ ...(Login ? [{ path: '/login', element: <Login /> }] : []),
154
+ ...Object.values(modules).flat(),
155
+ { path: '*', element: <main>Page not found</main> },
156
+ ]);
157
+ }
158
+ `);
159
+ write(projectDir, "src\\Home.tsx", `import { useState } from 'react';
160
+ import { Link } from 'react-router-dom';
161
+ import { scaffoldConfig } from '@/lib/scaffold-config';
162
+
163
+ export default function Home() {
164
+ const [message, setMessage] = useState('');
165
+ async function testConnection() {
166
+ try {
167
+ const response = await fetch('/api/greet?name=SwallowKit');
168
+ if (!response.ok) throw new Error('BFF request failed (' + response.status + ')');
169
+ const data = await response.json();
170
+ setMessage(data.message);
171
+ } catch (error) { setMessage(error instanceof Error ? error.message : String(error)); }
172
+ }
173
+ return <main className="container mx-auto p-8">
174
+ <h1 className="text-3xl font-bold mb-4">SwallowKit + React</h1>
175
+ <p>React SPA → SWA managed Functions BFF → standalone Functions → Cosmos DB</p>
176
+ <button className="my-4 bg-blue-600 text-white rounded px-4 py-2" onClick={testConnection}>Test backend connection</button>
177
+ <p role="status">{message}</p>
178
+ <nav>{scaffoldConfig.models.map(model => <p key={model.name}><Link to={model.path}>{model.label}</Link></p>)}</nav>
179
+ </main>;
180
+ }
181
+ `);
182
+ write(projectDir, "src\\style.css", '@import "tailwindcss";\n');
183
+ write(projectDir, "lib\\scaffold-config.ts", `export interface ScaffoldModel { name: string; path: string; label: string; }
184
+ export const scaffoldConfig = {
185
+ models: [] as ScaffoldModel[]
186
+ };
187
+ `);
188
+ write(projectDir, ".gitignore", "node_modules/\ndist/\n.env*.local\nlocal.settings.json\n");
189
+ }
190
+ function createReactBffProject(projectDir, projectName, pm) {
191
+ write(projectDir, "bff\\package.json", JSON.stringify({
192
+ name: "bff",
193
+ private: true,
194
+ version: "1.0.0",
195
+ description: "SWA managed HTTP-only Functions BFF (not the standalone backend)",
196
+ engines: { node: ">=20" },
197
+ scripts: {
198
+ build: "tsc --noEmit && node build.cjs",
199
+ start: "func start --port 7073",
200
+ prestart: `${pm} run build`,
201
+ },
202
+ devDependencies: {
203
+ "@azure/functions": "^3.5.0",
204
+ "@types/node": "^22.0.0",
205
+ typescript: "^5.9.0",
206
+ esbuild: "^0.25.0",
207
+ [`@${projectName}/shared`]: pm === "pnpm" ? "workspace:*" : "file:../shared",
208
+ zod: "^4.0.0",
209
+ },
210
+ }, null, 2));
211
+ write(projectDir, "bff\\build.cjs", buildReactBffBuildSource());
212
+ write(projectDir, "bff\\tsconfig.json", JSON.stringify({
213
+ compilerOptions: {
214
+ target: "ES2022",
215
+ lib: ["ES2022", "DOM"],
216
+ module: "Node16",
217
+ moduleResolution: "Node16",
218
+ strict: true,
219
+ esModuleInterop: true,
220
+ skipLibCheck: true,
221
+ noEmit: true,
222
+ },
223
+ include: ["src/**/*.ts"],
224
+ }, null, 2));
225
+ // Classic function.json registrations work with SWA's managed Functions runtime.
226
+ write(projectDir, "bff\\host.json", JSON.stringify({ version: "2.0", extensions: { http: { routePrefix: "api" } } }, null, 2));
227
+ write(projectDir, "bff\\local.settings.json", JSON.stringify({
228
+ IsEncrypted: false,
229
+ Values: {
230
+ FUNCTIONS_WORKER_RUNTIME: "node",
231
+ BACKEND_FUNCTIONS_BASE_URL: "http://localhost:7071",
232
+ BACKEND_FUNCTIONS_KEY: "",
233
+ },
234
+ Host: { LocalHttpPort: 7073, CORS: "http://localhost:4280" },
235
+ }, null, 2));
236
+ write(projectDir, "bff\\.gitignore", "node_modules/\ndist/\nlocal.settings.json\n");
237
+ write(projectDir, "bff\\.funcignore", "src/\nnode_modules/\nlocal.settings.json\ntsconfig.json\nbuild.cjs\n.gitignore\n");
238
+ write(projectDir, "bff\\src\\lib\\call-function.ts", (0, react_bff_generator_1.generateReactBffHelper)(projectName));
239
+ write(projectDir, "bff\\src\\greet\\index.ts", (0, react_bff_generator_1.generateReactGreetBff)());
240
+ write(projectDir, "bff\\greet\\function.json", (0, react_bff_generator_1.generateManagedFunctionConfig)("greet", ["GET", "POST"], "greet"));
241
+ }
242
+ function buildReactBffBuildSource() {
243
+ return `const fs = require('node:fs');
244
+ const path = require('node:path');
245
+ const { buildSync } = require('esbuild');
246
+
247
+ const entryPoints = fs.readdirSync(path.join(__dirname, 'src'), { withFileTypes: true })
248
+ .filter(entry => entry.isDirectory() && fs.existsSync(path.join(__dirname, 'src', entry.name, 'index.ts')))
249
+ .map(entry => path.join('src', entry.name, 'index.ts'));
250
+ if (!entryPoints.length) throw new Error('No managed BFF handlers found');
251
+ buildSync({
252
+ absWorkingDir: __dirname, entryPoints, bundle: true,
253
+ platform: 'node', target: 'node20', outbase: 'src', outdir: 'dist', logLevel: 'info',
254
+ });
255
+ for (const entry of entryPoints) {
256
+ const output = path.join(__dirname, 'dist', path.basename(path.dirname(entry)), 'index.js');
257
+ if (!fs.existsSync(output)) throw new Error('Missing managed BFF bundle: ' + output);
258
+ }
259
+ `;
260
+ }
261
+ function buildReactReadme(projectName, pm, backend) {
262
+ const cmd = (0, package_manager_1.getCommands)(pm);
263
+ return `# ${projectName}
264
+
265
+ Generated by SwallowKit: React + Vite + TypeScript on Azure Static Web Apps.
266
+
267
+ ## Architecture
268
+
269
+ Browser → React SPA → /api (SWA managed Functions BFF) → standalone ${backend} Functions → Cosmos DB.
270
+
271
+ - \`src/\`: React Router UI. No Next.js runtime.
272
+ - \`bff/\`: HTTP-only SWA managed Functions. Validates shared schemas and forwards requests; no database/business logic.
273
+ - \`functions/\`: independently deployed backend, NOT linked to SWA.
274
+ - \`shared/models/\`: Zod source of truth.
275
+ - \`infra/\`: Bicep infrastructure.
276
+
277
+ Only the BFF reads BACKEND_FUNCTIONS_BASE_URL and BACKEND_FUNCTIONS_KEY.
278
+ Never put those values in VITE_* variables or client code.
279
+
280
+ ## Develop
281
+
282
+ \`\`\`sh
283
+ ${cmd.exec} swallowkit create-model todo
284
+ ${cmd.exec} swallowkit scaffold todo
285
+ ${cmd.exec} swallowkit dev
286
+ \`\`\`
287
+
288
+ Use http://localhost:4280, not Vite's direct port, for same-origin UI/BFF requests.
289
+ Dev starts Vite (3000), the managed BFF (7073), the standalone Functions (7071),
290
+ and SWA CLI (4280). \`--bff-port\`, \`--port\`, \`--functions-port\`, and \`--swa-port\` override ports.
291
+ The BFF stays separate even with \`--no-functions\`; \`--no-swa\` starts only the
292
+ direct Vite/BFF servers (no same-origin API routing or SWA authentication).
293
+ Core Tools v4 must already be available. Start Cosmos DB Emulator manually if
294
+ this application needs Cosmos; SwallowKit never starts it.
295
+
296
+ Local BFF settings live in \`bff/local.settings.json\` (gitignored). Backend settings
297
+ live in \`functions/local.settings.json\`. Keep their secrets out of source control.
298
+ \`--mock-connectors\` still routes through the BFF and mocks only connector data.
299
+
300
+ ## Verify
301
+
302
+ \`\`\`sh
303
+ ${pm} run build
304
+ ${cmd.exec} swallowkit machine verify project
305
+ ${cmd.exec} swallowkit machine verify project --checks structure,drift,typecheck,build
306
+ \`\`\`
307
+
308
+ The build compiles shared schemas, checks the SPA, builds static assets, and
309
+ typechecks/bundles the managed BFF. Exercise CRUD and authentication through
310
+ the SWA port as well; structural verification is not an end-to-end test.
311
+
312
+ ## Deploy
313
+
314
+ Use the generated GitHub Actions / Azure Pipelines workflows when selected.
315
+ Deploy \`dist/\` as the static app and \`bff/\` as its managed API, with
316
+ \`skip_app_build: true\` and \`skip_api_build: true\` after \`${pm} run build\`.
317
+ BFF bundles include shared schemas and Zod, so no workspace install is needed
318
+ in SWA's API build. Deploy \`functions/\` independently, never as SWA's api_location.
319
+ Do NOT link the standalone Functions app to SWA.
320
+
321
+ After approved provisioning and backend deployment, apply the generated SWA
322
+ appsettings module with the backend URL/key. The key is required for remote
323
+ Functions calls, and stays server-side. SPA deep links use navigationFallback;
324
+ /api and /.auth are excluded so missing APIs never become index.html.
325
+
326
+ See AGENTS.md for ownership, plan/apply, authentication, and verification guidance.
327
+ `;
328
+ }
329
+ const REACT_DEPLOY_PATHS = [
330
+ "src/**",
331
+ "bff/**",
332
+ "lib/**",
333
+ "shared/**",
334
+ "public/**",
335
+ "index.html",
336
+ "vite.config.mts",
337
+ "tsconfig.json",
338
+ "staticwebapp.config.json",
339
+ "package.json",
340
+ "pnpm-workspace.yaml",
341
+ ];
342
+ function buildReactGitHubSwaWorkflow(pm) {
343
+ const paths = [
344
+ ...REACT_DEPLOY_PATHS,
345
+ pm === "pnpm" ? "pnpm-lock.yaml" : "package-lock.json",
346
+ ".github/workflows/deploy-swa.yml",
347
+ ];
348
+ return `name: Deploy React SPA and managed BFF
349
+ on:
350
+ push:
351
+ branches: [main]
352
+ paths:
353
+ ${paths.map((entry) => ` - '${entry}'`).join("\n")}
354
+ pull_request:
355
+ branches: [main]
356
+ paths:
357
+ ${paths.map((entry) => ` - '${entry}'`).join("\n")}
358
+ workflow_dispatch:
359
+ jobs:
360
+ build-and-deploy:
361
+ runs-on: ubuntu-latest
362
+ steps:
363
+ - uses: actions/checkout@v4
364
+ ${(0, package_manager_1.getCiSetupStep)(pm)}
365
+ - uses: actions/setup-node@v4
366
+ with:
367
+ node-version: '22'
368
+ cache: ${pm}
369
+ - name: Build SPA and managed BFF
370
+ run: |
371
+ ${(0, package_manager_1.getCommands)(pm).ci}
372
+ ${pm} run build
373
+ - name: Deploy SPA and managed BFF (standalone Functions are NOT linked)
374
+ if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main'
375
+ uses: Azure/static-web-apps-deploy@v1
376
+ with:
377
+ azure_static_web_apps_api_token: \${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
378
+ repo_token: \${{ secrets.GITHUB_TOKEN }}
379
+ action: upload
380
+ app_location: dist
381
+ api_location: bff
382
+ output_location: ''
383
+ skip_app_build: true
384
+ skip_api_build: true
385
+ `;
386
+ }
387
+ function buildReactAzureSwaPipeline(pm) {
388
+ return `trigger:
389
+ branches:
390
+ include: [main]
391
+ paths:
392
+ include:
393
+ ${[...REACT_DEPLOY_PATHS, pm === "pnpm" ? "pnpm-lock.yaml" : "package-lock.json", "pipelines/swa.yml"].map((entry) => ` - '${entry}'`).join("\n")}
394
+ pr:
395
+ branches:
396
+ include: [main]
397
+ pool:
398
+ vmImage: ubuntu-latest
399
+ variables:
400
+ - group: azure-deployment
401
+ steps:
402
+ - task: NodeTool@0
403
+ inputs:
404
+ versionSpec: '22.x'
405
+ ${(0, package_manager_1.getAzurePipelinesSetup)(pm)}
406
+ - script: |
407
+ ${(0, package_manager_1.getCommands)(pm).ci}
408
+ ${pm} run build
409
+ displayName: Build React SPA and managed BFF
410
+ - task: AzureStaticWebApp@0
411
+ condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
412
+ inputs:
413
+ app_location: dist
414
+ api_location: bff
415
+ output_location: ''
416
+ skip_app_build: true
417
+ skip_api_build: true
418
+ azure_static_web_apps_api_token: $(AZURE_STATIC_WEB_APPS_API_TOKEN)
419
+ displayName: Deploy SPA and managed BFF (standalone Functions are NOT linked)
420
+ `;
421
+ }
422
+ //# sourceMappingURL=react-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-project.js","sourceRoot":"","sources":["../../../src/core/project/react-project.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,kDAkBC;AAED,gDAqKC;AAED,sDAyGC;AAED,4DAkBC;AAED,4CAuEC;AAgBD,kEA4CC;AAED,gEAkCC;AA1fD,uCAAyB;AACzB,2CAA6B;AAE7B,iEAKqC;AACrC,yEAIyC;AAEzC,SAAS,KAAK,CACZ,UAAkB,EAClB,YAAoB,EACpB,OAAe;IAEf,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,mBAAmB;IACjC,OAAO;QACL,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;QACnC,kBAAkB,EAAE;YAClB,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE;gBACP,QAAQ;gBACR,UAAU;gBACV,WAAW;gBACX,kCAAkC;aACnC;SACF;QACD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;QACtD,aAAa,EAAE;YACb,wBAAwB,EAAE,SAAS;YACnC,iBAAiB,EAAE,MAAM;SAC1B;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAChC,UAAkB,EAClB,WAAmB;IAEnB,KAAK,CACH,UAAU,EACV,cAAc,EACd,IAAI,CAAC,SAAS,CACZ;QACE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAE,cAAc,EAAE;QAC7D,YAAY,EAAE;YACZ,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,SAAS;YACtB,kBAAkB,EAAE,QAAQ;SAC7B;QACD,eAAe,EAAE;YACf,aAAa,EAAE,SAAS;YACxB,cAAc,EAAE,SAAS;YACzB,kBAAkB,EAAE,SAAS;YAC7B,sBAAsB,EAAE,QAAQ;YAChC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,QAAQ;YACpB,WAAW,EAAE,QAAQ;YACrB,mBAAmB,EAAE,QAAQ;YAC7B,4BAA4B,EAAE,QAAQ;SACvC;KACF,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACF,KAAK,CACH,UAAU,EACV,eAAe,EACf,IAAI,CAAC,SAAS,CACZ;QACE,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC;YACtC,MAAM,EAAE,QAAQ;YAChB,gBAAgB,EAAE,SAAS;YAC3B,GAAG,EAAE,WAAW;YAChB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;YAClB,iBAAiB,EAAE,IAAI;YACvB,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE;YACzB,KAAK,EAAE,CAAC,aAAa,CAAC;SACvB;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;QACvB,OAAO,EAAE,CAAC,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;KAChE,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACF,KAAK,CACH,UAAU,EACV,iBAAiB,EACjB;;;;;;;;;QASI,WAAW;;;;;CAKlB,CACE,CAAC;IACF,KAAK,CACH,UAAU,EACV,YAAY,EACZ;;;;;CAKH,CACE,CAAC;IACF,KAAK,CACH,UAAU,EACV,eAAe,EACf;;;;;;;;;CASH,CACE,CAAC;IACF,KAAK,CACH,UAAU,EACV,cAAc,EACd;;;;;;;;;;;;;;;CAeH,CACE,CAAC;IACF,KAAK,CACH,UAAU,EACV,eAAe,EACf;;;;;;;;;;;;;;;;;;;;;;CAsBH,CACE,CAAC;IACF,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;IAChE,KAAK,CACH,UAAU,EACV,yBAAyB,EACzB;;;;CAIH,CACE,CAAC;IACF,KAAK,CACH,UAAU,EACV,YAAY,EACZ,0DAA0D,CAC3D,CAAC;AACJ,CAAC;AAED,SAAgB,qBAAqB,CACnC,UAAkB,EAClB,WAAmB,EACnB,EAAkB;IAElB,KAAK,CACH,UAAU,EACV,mBAAmB,EACnB,IAAI,CAAC,SAAS,CACZ;QACE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,OAAO;QAChB,WAAW,EACT,kEAAkE;QACpE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACzB,OAAO,EAAE;YACP,KAAK,EAAE,gCAAgC;YACvC,KAAK,EAAE,wBAAwB;YAC/B,QAAQ,EAAE,GAAG,EAAE,YAAY;SAC5B;QACD,eAAe,EAAE;YACf,kBAAkB,EAAE,QAAQ;YAC5B,aAAa,EAAE,SAAS;YACxB,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,SAAS;YAClB,CAAC,IAAI,WAAW,SAAS,CAAC,EACxB,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB;YAClD,GAAG,EAAE,QAAQ;SACd;KACF,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACF,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAChE,KAAK,CACH,UAAU,EACV,oBAAoB,EACpB,IAAI,CAAC,SAAS,CACZ;QACE,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;YACtB,MAAM,EAAE,QAAQ;YAChB,gBAAgB,EAAE,QAAQ;YAC1B,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,IAAI;SACb;QACD,OAAO,EAAE,CAAC,aAAa,CAAC;KACzB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACF,iFAAiF;IACjF,KAAK,CACH,UAAU,EACV,gBAAgB,EAChB,IAAI,CAAC,SAAS,CACZ,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,EAChE,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACF,KAAK,CACH,UAAU,EACV,0BAA0B,EAC1B,IAAI,CAAC,SAAS,CACZ;QACE,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE;YACN,wBAAwB,EAAE,MAAM;YAChC,0BAA0B,EAAE,uBAAuB;YACnD,qBAAqB,EAAE,EAAE;SAC1B;QACD,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,uBAAuB,EAAE;KAC7D,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACF,KAAK,CACH,UAAU,EACV,iBAAiB,EACjB,6CAA6C,CAC9C,CAAC;IACF,KAAK,CACH,UAAU,EACV,kBAAkB,EAClB,kFAAkF,CACnF,CAAC;IACF,KAAK,CACH,UAAU,EACV,iCAAiC,EACjC,IAAA,4CAAsB,EAAC,WAAW,CAAC,CACpC,CAAC;IACF,KAAK,CAAC,UAAU,EAAE,2BAA2B,EAAE,IAAA,2CAAqB,GAAE,CAAC,CAAC;IACxE,KAAK,CACH,UAAU,EACV,2BAA2B,EAC3B,IAAA,mDAA6B,EAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,SAAgB,wBAAwB;IACtC,OAAO;;;;;;;;;;;;;;;;CAgBR,CAAC;AACF,CAAC;AAED,SAAgB,gBAAgB,CAC9B,WAAmB,EACnB,EAAkB,EAClB,OAAwB;IAExB,MAAM,GAAG,GAAG,IAAA,6BAAW,EAAC,EAAE,CAAC,CAAC;IAC5B,OAAO,KAAK,WAAW;;;;;;sEAM6C,OAAO;;;;;;;;;;;;;;EAc3E,GAAG,CAAC,IAAI;EACR,GAAG,CAAC,IAAI;EACR,GAAG,CAAC,IAAI;;;;;;;;;;;;;;;;;;EAkBR,EAAE;EACF,GAAG,CAAC,IAAI;EACR,GAAG,CAAC,IAAI;;;;;;;;;;;gEAWsD,EAAE;;;;;;;;;;;CAWjE,CAAC;AACF,CAAC;AAED,MAAM,kBAAkB,GAAG;IACzB,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,WAAW;IACX,YAAY;IACZ,iBAAiB;IACjB,eAAe;IACf,0BAA0B;IAC1B,cAAc;IACd,qBAAqB;CACtB,CAAC;AAEF,SAAgB,2BAA2B,CAAC,EAAkB;IAC5D,MAAM,KAAK,GAAG;QACZ,GAAG,kBAAkB;QACrB,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB;QACtD,kCAAkC;KACnC,CAAC;IACF,OAAO;;;;;EAKP,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAIrD,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;EAOrD,IAAA,gCAAc,EAAC,EAAE,CAAC;;;;mBAID,EAAE;;;YAGT,IAAA,6BAAW,EAAC,EAAE,CAAC,CAAC,EAAE;YAClB,EAAE;;;;;;;;;;;;;CAab,CAAC;AACF,CAAC;AAED,SAAgB,0BAA0B,CAAC,EAAkB;IAC3D,OAAO;;;;;EAKP,CAAC,GAAG,kBAAkB,EAAE,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;EAYpJ,IAAA,wCAAsB,EAAC,EAAE,CAAC;;QAEpB,IAAA,6BAAW,EAAC,EAAE,CAAC,CAAC,EAAE;QAClB,EAAE;;;;;;;;;;;;CAYT,CAAC;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/core/project/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6C,eAAe,EAAmD,MAAM,YAAY,CAAC;AAGzI,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,wBAAwB,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,eAAe,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,eAAe,CAAC;IACzC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC;AA4ND,wBAAsB,eAAe,CAAC,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAmD3G"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/core/project/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6C,eAAe,EAAmD,MAAM,YAAY,CAAC;AAGzI,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,wBAAwB,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,eAAe,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,eAAe,CAAC;IACzC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAkPD,wBAAsB,eAAe,CAAC,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAmD3G"}
@@ -61,7 +61,7 @@ function validateRequiredPaths(manifest, violations) {
61
61
  pushViolation(violations, {
62
62
  code: "missing-call-function-helper",
63
63
  severity: "warning",
64
- message: "BFF helper lib/api/call-function.ts is missing.",
64
+ message: `BFF helper ${manifest.artifacts.callFunctionHelperPath} is missing.`,
65
65
  location: { path: manifest.artifacts.callFunctionHelperPath },
66
66
  suggestedFix: "Run scaffold to regenerate the BFF helper.",
67
67
  });
@@ -116,8 +116,8 @@ function validateGeneratedArtifacts(manifest, violations) {
116
116
  });
117
117
  }
118
118
  }
119
- function validateLayeringViolations(projectRoot, violations) {
120
- const apiDir = path.join(projectRoot, "app", "api");
119
+ function validateLayeringViolations(projectRoot, manifest, violations) {
120
+ const apiDir = path.join(projectRoot, ...(manifest.frontendFramework === "react" ? ["bff", "src"] : ["app", "api"]));
121
121
  const modelsDir = path.join(projectRoot, "shared", "models");
122
122
  if (fs.existsSync(apiDir)) {
123
123
  for (const filePath of walkFiles(apiDir, [".ts", ".tsx"])) {
@@ -128,7 +128,7 @@ function validateLayeringViolations(projectRoot, violations) {
128
128
  severity: "error",
129
129
  message: "BFF files must not depend directly on Azure Cosmos or Functions implementation paths.",
130
130
  location: { path: path.relative(projectRoot, filePath).replace(/\\/g, "/") },
131
- suggestedFix: "Keep app/api as a pure BFF layer and call the backend through generated helpers instead.",
131
+ suggestedFix: `Keep ${manifest.frontendFramework === "react" ? "bff/src" : "app/api"} as a pure BFF layer and call the backend through generated helpers instead.`,
132
132
  });
133
133
  }
134
134
  }
@@ -136,24 +136,46 @@ function validateLayeringViolations(projectRoot, violations) {
136
136
  if (fs.existsSync(modelsDir)) {
137
137
  for (const filePath of walkFiles(modelsDir, [".ts", ".tsx"])) {
138
138
  const content = fs.readFileSync(filePath, "utf-8");
139
- if (content.match(/from\s+['"].*(app\/|functions\/|lib\/api\/)/)) {
139
+ if (content.match(/from\s+['"].*(app\/|functions\/|bff\/|src\/|lib\/api\/)/)) {
140
140
  pushViolation(violations, {
141
141
  code: "forbidden-model-layer-import",
142
142
  severity: "error",
143
- message: "Shared models must not import from app/, functions/, or lib/api/ layers.",
143
+ message: "Shared models must not import from frontend, BFF, Functions, or lib/api/ layers.",
144
144
  location: { path: path.relative(projectRoot, filePath).replace(/\\/g, "/") },
145
145
  suggestedFix: "Keep shared/models framework-agnostic so generators can reuse them across all layers.",
146
146
  });
147
147
  }
148
148
  }
149
+ if (manifest.frontendFramework === "react") {
150
+ for (const directory of ["src", "lib"]) {
151
+ const root = path.join(projectRoot, directory);
152
+ if (!fs.existsSync(root))
153
+ continue;
154
+ for (const filePath of walkFiles(root, [".ts", ".tsx"])) {
155
+ const content = fs.readFileSync(filePath, "utf-8");
156
+ const serverImport = /(?:from\s*|import\s*\(|require\s*\()\s*['"](?:@azure\/cosmos|[^'"]*(?:bff\/|functions\/|lib\/api\/call-function))/;
157
+ const serverSetting = /\b(?:process\.env|import\.meta\.env)\s*(?:\.\s*(?:VITE_)?BACKEND_FUNCTIONS_(?:KEY|BASE_URL)\b|\[\s*['"](?:VITE_)?BACKEND_FUNCTIONS_(?:KEY|BASE_URL)['"]\s*\])/;
158
+ if (serverImport.test(content) || serverSetting.test(content)) {
159
+ pushViolation(violations, {
160
+ code: "forbidden-client-backend-dependency",
161
+ severity: "error",
162
+ message: "React client code must not import server implementation code or read server-side backend settings.",
163
+ location: { path: path.relative(projectRoot, filePath).replace(/\\/g, "/") },
164
+ suggestedFix: "Call same-origin /api from the SPA. Keep backend URLs, keys, and Functions/Cosmos dependencies in the managed BFF or standalone backend.",
165
+ });
166
+ }
167
+ }
168
+ }
169
+ }
149
170
  }
150
171
  }
151
172
  function validateManifestDrift(projectRoot, loadedManifest, rebuiltManifest, violations) {
152
173
  const sameEntitySet = JSON.stringify(loadedManifest.entities.map((entity) => entity.name).sort()) ===
153
174
  JSON.stringify(rebuiltManifest.entities.map((entity) => entity.name).sort());
154
- const sameRouteSet = JSON.stringify(loadedManifest.routes.map((route) => route.name).sort()) ===
155
- JSON.stringify(rebuiltManifest.routes.map((route) => route.name).sort());
156
- if (!sameEntitySet || !sameRouteSet) {
175
+ const sameRouteSet = JSON.stringify(loadedManifest.routes.map((route) => `${route.name}:${route.filePath}`).sort()) ===
176
+ JSON.stringify(rebuiltManifest.routes.map((route) => `${route.name}:${route.filePath}`).sort());
177
+ const sameFrontend = (loadedManifest.frontendFramework ?? "nextjs") === (rebuiltManifest.frontendFramework ?? "nextjs");
178
+ if (!sameEntitySet || !sameRouteSet || !sameFrontend) {
157
179
  pushViolation(violations, {
158
180
  code: "manifest-out-of-date",
159
181
  severity: "warning",
@@ -259,7 +281,7 @@ async function validateProject(projectRoot = process.cwd()) {
259
281
  validateSchemaNaming(entity, violations);
260
282
  }
261
283
  validateGeneratedArtifacts(loaded.manifest, violations);
262
- validateLayeringViolations(projectRoot, violations);
284
+ validateLayeringViolations(projectRoot, loaded.manifest, violations);
263
285
  validateExternalTokenVerifierStubs(projectRoot, loaded.manifest, violations);
264
286
  if (loaded.source === "file") {
265
287
  validateManifestDrift(projectRoot, loaded.manifest, rebuilt.manifest, violations);
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/core/project/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/core/project/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { AuthConfig } from "../../types";
2
+ import { ModelInfo } from "./model-parser";
3
+ export declare function generateManagedFunctionConfig(route: string, methods: readonly string[], entry: string): string;
4
+ export declare function getAuthCookieName(projectName: string): string;
5
+ /** Request-local credentials: never share authentication state between invocations. */
6
+ export declare function generateReactBffHelper(projectName: string, auth?: AuthConfig): string;
7
+ export declare function generateReactBffRoute(model: ModelInfo, sharedPackageName: string): string;
8
+ export declare function generateReactGreetBff(): string;
9
+ export declare function generateReactAuthBff(projectName: string, sharedPackageName: string, customJwt: boolean): string;
10
+ //# sourceMappingURL=react-bff-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-bff-generator.d.ts","sourceRoot":"","sources":["../../../src/core/scaffold/react-bff-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAe,MAAM,gBAAgB,CAAC;AAExD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,EAAE,MAAM,GACZ,MAAM,CAqBR;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,uFAAuF;AACvF,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,UAAU,GAChB,MAAM,CA4HR;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,iBAAiB,EAAE,MAAM,GACxB,MAAM,CAqDR;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAe9C;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,OAAO,GACjB,MAAM,CA4CR"}