swallowkit 1.1.2 → 2.0.0-alpha.10
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/README.ja.md +61 -7
- package/README.md +61 -7
- package/dist/cli/commands/add-auth.d.ts.map +1 -1
- package/dist/cli/commands/add-auth.js +103 -27
- package/dist/cli/commands/add-auth.js.map +1 -1
- package/dist/cli/commands/configure-mcp.d.ts +12 -0
- package/dist/cli/commands/configure-mcp.d.ts.map +1 -0
- package/dist/cli/commands/configure-mcp.js +42 -0
- package/dist/cli/commands/configure-mcp.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +5 -2
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +143 -67
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/init.d.ts +14 -7
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +149 -170
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/migrations.d.ts.map +1 -1
- package/dist/cli/commands/migrations.js +25 -0
- package/dist/cli/commands/migrations.js.map +1 -1
- package/dist/cli/commands/provision.d.ts +5 -0
- package/dist/cli/commands/provision.d.ts.map +1 -1
- package/dist/cli/commands/provision.js +278 -55
- package/dist/cli/commands/provision.js.map +1 -1
- package/dist/cli/commands/scaffold.d.ts +5 -1
- package/dist/cli/commands/scaffold.d.ts.map +1 -1
- package/dist/cli/commands/scaffold.js +123 -18
- package/dist/cli/commands/scaffold.js.map +1 -1
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +49 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/core/config.d.ts +2 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +19 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/operations/create-model.d.ts +2 -0
- package/dist/core/operations/create-model.d.ts.map +1 -1
- package/dist/core/operations/create-model.js +60 -8
- package/dist/core/operations/create-model.js.map +1 -1
- package/dist/core/operations/migration-generator.d.ts.map +1 -1
- package/dist/core/operations/migration-generator.js +12 -1
- package/dist/core/operations/migration-generator.js.map +1 -1
- package/dist/core/operations/model-migration.d.ts +22 -0
- package/dist/core/operations/model-migration.d.ts.map +1 -0
- package/dist/core/operations/model-migration.js +36 -0
- package/dist/core/operations/model-migration.js.map +1 -0
- package/dist/core/operations/provision-deployment.d.ts +52 -0
- package/dist/core/operations/provision-deployment.d.ts.map +1 -0
- package/dist/core/operations/provision-deployment.js +164 -0
- package/dist/core/operations/provision-deployment.js.map +1 -0
- package/dist/core/operations/provision-operations.d.ts +62 -6
- package/dist/core/operations/provision-operations.d.ts.map +1 -1
- package/dist/core/operations/provision-operations.js +653 -115
- package/dist/core/operations/provision-operations.js.map +1 -1
- package/dist/core/operations/scaffold-apply.d.ts +1 -0
- package/dist/core/operations/scaffold-apply.d.ts.map +1 -1
- package/dist/core/operations/scaffold-apply.js +1 -0
- package/dist/core/operations/scaffold-apply.js.map +1 -1
- package/dist/core/operations/scaffold-machine.d.ts +1 -0
- package/dist/core/operations/scaffold-machine.d.ts.map +1 -1
- package/dist/core/operations/scaffold-machine.js.map +1 -1
- package/dist/core/operations/scaffold-plan.d.ts +2 -0
- package/dist/core/operations/scaffold-plan.d.ts.map +1 -1
- package/dist/core/operations/scaffold-plan.js +3 -1
- package/dist/core/operations/scaffold-plan.js.map +1 -1
- package/dist/core/project/agent-instructions.d.ts +2 -1
- package/dist/core/project/agent-instructions.d.ts.map +1 -1
- package/dist/core/project/agent-instructions.js +15 -0
- package/dist/core/project/agent-instructions.js.map +1 -1
- package/dist/core/project/boundaries.d.ts +5 -2
- package/dist/core/project/boundaries.d.ts.map +1 -1
- package/dist/core/project/boundaries.js +51 -20
- package/dist/core/project/boundaries.js.map +1 -1
- package/dist/core/project/capabilities.d.ts +17 -0
- package/dist/core/project/capabilities.d.ts.map +1 -1
- package/dist/core/project/capabilities.js +45 -6
- package/dist/core/project/capabilities.js.map +1 -1
- package/dist/core/project/home-page.d.ts +4 -0
- package/dist/core/project/home-page.d.ts.map +1 -0
- package/dist/core/project/home-page.js +113 -0
- package/dist/core/project/home-page.js.map +1 -0
- package/dist/core/project/manifest.d.ts +3 -1
- package/dist/core/project/manifest.d.ts.map +1 -1
- package/dist/core/project/manifest.js +47 -25
- package/dist/core/project/manifest.js.map +1 -1
- package/dist/core/project/mcp-config.d.ts +26 -0
- package/dist/core/project/mcp-config.d.ts.map +1 -0
- package/dist/core/project/mcp-config.js +117 -0
- package/dist/core/project/mcp-config.js.map +1 -0
- package/dist/core/project/react-project.d.ts +26 -0
- package/dist/core/project/react-project.d.ts.map +1 -0
- package/dist/core/project/react-project.js +443 -0
- package/dist/core/project/react-project.js.map +1 -0
- package/dist/core/project/state.d.ts +7 -0
- package/dist/core/project/state.d.ts.map +1 -1
- package/dist/core/project/state.js +86 -0
- package/dist/core/project/state.js.map +1 -1
- package/dist/core/project/validation.d.ts.map +1 -1
- package/dist/core/project/validation.js +32 -10
- package/dist/core/project/validation.js.map +1 -1
- package/dist/core/project/workflows.d.ts.map +1 -1
- package/dist/core/project/workflows.js +53 -7
- package/dist/core/project/workflows.js.map +1 -1
- package/dist/core/scaffold/auth-generator.d.ts.map +1 -1
- package/dist/core/scaffold/auth-generator.js +26 -27
- package/dist/core/scaffold/auth-generator.js.map +1 -1
- package/dist/core/scaffold/model-parser.d.ts +23 -0
- package/dist/core/scaffold/model-parser.d.ts.map +1 -1
- package/dist/core/scaffold/model-parser.js +407 -137
- package/dist/core/scaffold/model-parser.js.map +1 -1
- package/dist/core/scaffold/native-schema-generator.d.ts +13 -0
- package/dist/core/scaffold/native-schema-generator.d.ts.map +1 -1
- package/dist/core/scaffold/native-schema-generator.js +294 -91
- package/dist/core/scaffold/native-schema-generator.js.map +1 -1
- package/dist/core/scaffold/openapi-generator.d.ts +5 -0
- package/dist/core/scaffold/openapi-generator.d.ts.map +1 -1
- package/dist/core/scaffold/openapi-generator.js +53 -3
- package/dist/core/scaffold/openapi-generator.js.map +1 -1
- package/dist/core/scaffold/react-bff-generator.d.ts +10 -0
- package/dist/core/scaffold/react-bff-generator.d.ts.map +1 -0
- package/dist/core/scaffold/react-bff-generator.js +252 -0
- package/dist/core/scaffold/react-bff-generator.js.map +1 -0
- package/dist/core/scaffold/react-ui-generator.d.ts +6 -0
- package/dist/core/scaffold/react-ui-generator.d.ts.map +1 -0
- package/dist/core/scaffold/react-ui-generator.js +41 -0
- package/dist/core/scaffold/react-ui-generator.js.map +1 -0
- package/dist/core/scaffold/ui-generator.d.ts +0 -3
- package/dist/core/scaffold/ui-generator.d.ts.map +1 -1
- package/dist/core/scaffold/ui-generator.js +68 -7
- package/dist/core/scaffold/ui-generator.js.map +1 -1
- package/dist/core/verify/index.d.ts +4 -3
- package/dist/core/verify/index.d.ts.map +1 -1
- package/dist/core/verify/index.js +122 -5
- package/dist/core/verify/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/machine/contracts.d.ts +1 -0
- package/dist/machine/contracts.d.ts.map +1 -1
- package/dist/machine/errors.d.ts +3 -2
- package/dist/machine/errors.d.ts.map +1 -1
- package/dist/machine/errors.js +2 -1
- package/dist/machine/errors.js.map +1 -1
- package/dist/machine/index.d.ts.map +1 -1
- package/dist/machine/index.js +61 -30
- package/dist/machine/index.js.map +1 -1
- package/dist/mcp/index.d.ts +6 -4
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +210 -25
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/version-selection.d.ts +55 -0
- package/dist/mcp/version-selection.d.ts.map +1 -0
- package/dist/mcp/version-selection.js +152 -0
- package/dist/mcp/version-selection.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/azure-cli.d.ts +56 -0
- package/dist/utils/azure-cli.d.ts.map +1 -0
- package/dist/utils/azure-cli.js +326 -0
- package/dist/utils/azure-cli.js.map +1 -0
- package/dist/utils/azure-diagnostics.d.ts +16 -0
- package/dist/utils/azure-diagnostics.d.ts.map +1 -0
- package/dist/utils/azure-diagnostics.js +68 -0
- package/dist/utils/azure-diagnostics.js.map +1 -0
- package/dist/utils/package-manager.d.ts +2 -2
- package/dist/utils/package-manager.d.ts.map +1 -1
- package/dist/utils/package-manager.js +6 -3
- package/dist/utils/package-manager.js.map +1 -1
- package/dist/utils/python-uv.d.ts +5 -7
- package/dist/utils/python-uv.d.ts.map +1 -1
- package/dist/utils/python-uv.js +50 -24
- package/dist/utils/python-uv.js.map +1 -1
- package/dist/utils/react-dev.d.ts +4 -0
- package/dist/utils/react-dev.d.ts.map +1 -0
- package/dist/utils/react-dev.js +35 -0
- package/dist/utils/react-dev.js.map +1 -0
- package/dist/utils/semver.d.ts +14 -0
- package/dist/utils/semver.d.ts.map +1 -0
- package/dist/utils/semver.js +61 -0
- package/dist/utils/semver.js.map +1 -0
- package/package.json +7 -4
- package/src/__tests__/__snapshots__/boundaries.test.ts.snap +154 -0
- package/src/__tests__/agent-instructions.test.ts +6 -1
- package/src/__tests__/agent-loop-phase34.test.ts +143 -8
- package/src/__tests__/auth.test.ts +9 -0
- package/src/__tests__/azure-cli.test.ts +202 -0
- package/src/__tests__/boundaries.test.ts +42 -0
- package/src/__tests__/csharp-schema.test.ts +261 -0
- package/src/__tests__/dev.test.ts +13 -6
- package/src/__tests__/fixtures/az wrapper.cmd +2 -0
- package/src/__tests__/fixtures/azure-cli.cjs +153 -0
- package/src/__tests__/fixtures/provision-runner.cjs +28 -0
- package/src/__tests__/generated-project-matrix.test.ts +789 -0
- package/src/__tests__/home-page.test.ts +50 -0
- package/src/__tests__/init.test.ts +145 -5
- package/src/__tests__/mcp-version.test.ts +262 -0
- package/src/__tests__/mcp.test.ts +120 -3
- package/src/__tests__/multi-auth.test.ts +115 -4
- package/src/__tests__/package-manager.test.ts +17 -2
- package/src/__tests__/plan-apply.test.ts +179 -0
- package/src/__tests__/provision-runtime.test.ts +722 -0
- package/src/__tests__/python-uv.test.ts +50 -14
- package/src/__tests__/python-venv.test.ts +48 -0
- package/src/__tests__/react-dev.test.ts +72 -0
- package/src/__tests__/react.test.ts +838 -0
- package/src/__tests__/release-metadata.test.ts +121 -0
- package/src/__tests__/schema-analysis.test.ts +329 -0
- package/src/cli/commands/add-auth.ts +103 -29
- package/src/cli/commands/configure-mcp.ts +54 -0
- package/src/cli/commands/dev.ts +145 -73
- package/src/cli/commands/init.ts +147 -172
- package/src/cli/commands/migrations.ts +22 -0
- package/src/cli/commands/provision.ts +294 -56
- package/src/cli/commands/scaffold.ts +145 -22
- package/src/cli/index.ts +46 -10
- package/src/core/config.ts +21 -1
- package/src/core/operations/create-model.ts +51 -13
- package/src/core/operations/migration-generator.ts +14 -1
- package/src/core/operations/model-migration.ts +52 -0
- package/src/core/operations/provision-deployment.ts +183 -0
- package/src/core/operations/provision-operations.ts +662 -154
- package/src/core/operations/scaffold-apply.ts +2 -0
- package/src/core/operations/scaffold-machine.ts +1 -0
- package/src/core/operations/scaffold-plan.ts +5 -1
- package/src/core/project/agent-instructions.ts +17 -1
- package/src/core/project/agent-templates/AGENTS.md +113 -15
- package/src/core/project/agent-templates/CLAUDE.md +14 -1
- package/src/core/project/agent-templates/bff-routes.instructions.md +5 -3
- package/src/core/project/agent-templates/copilot-instructions.md +15 -1
- package/src/core/project/agent-templates/shared-models.instructions.md +11 -3
- package/src/core/project/boundaries.ts +62 -20
- package/src/core/project/capabilities.ts +63 -6
- package/src/core/project/home-page.ts +114 -0
- package/src/core/project/manifest.ts +52 -27
- package/src/core/project/mcp-config.ts +84 -0
- package/src/core/project/react-project.ts +529 -0
- package/src/core/project/state.ts +70 -0
- package/src/core/project/validation.ts +32 -10
- package/src/core/project/workflows.ts +53 -7
- package/src/core/scaffold/auth-generator.ts +26 -27
- package/src/core/scaffold/model-parser.ts +413 -129
- package/src/core/scaffold/native-schema-generator.ts +319 -103
- package/src/core/scaffold/openapi-generator.ts +63 -5
- package/src/core/scaffold/react-bff-generator.ts +292 -0
- package/src/core/scaffold/react-ui-generator.ts +51 -0
- package/src/core/scaffold/ui-generator.ts +70 -8
- package/src/core/verify/index.ts +118 -6
- package/src/index.ts +3 -1
- package/src/machine/contracts.ts +1 -0
- package/src/machine/errors.ts +4 -2
- package/src/machine/index.ts +67 -36
- package/src/mcp/index.ts +221 -31
- package/src/mcp/version-selection.ts +163 -0
- package/src/types/index.ts +4 -0
- package/src/utils/azure-cli.ts +315 -0
- package/src/utils/azure-diagnostics.ts +75 -0
- package/src/utils/package-manager.ts +7 -4
- package/src/utils/python-uv.ts +53 -33
- package/src/utils/react-dev.ts +31 -0
- package/src/utils/semver.ts +59 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
const fs = require("node:fs");
|
|
2
|
+
const args = process.argv.slice(2);
|
|
3
|
+
const emit = (value) => process.stdout.write(JSON.stringify(value));
|
|
4
|
+
|
|
5
|
+
if (args[0] === "process") {
|
|
6
|
+
const mode = args[1];
|
|
7
|
+
if (mode === "warning" || mode === "slow") {
|
|
8
|
+
console.error("WARNING: fixture Bicep warning");
|
|
9
|
+
if (mode === "slow") setTimeout(() => emit({ done: true }), Number(args[2] ?? 600));
|
|
10
|
+
} else if (mode === "flood") {
|
|
11
|
+
process.stdout.write("x".repeat(2 * 1024 * 1024));
|
|
12
|
+
process.stderr.write("y".repeat(2 * 1024 * 1024));
|
|
13
|
+
} else if (mode === "communication") {
|
|
14
|
+
console.error("ConnectionResetError: fixture communication interrupted");
|
|
15
|
+
process.exitCode = 1;
|
|
16
|
+
} else if (mode === "nonzero") {
|
|
17
|
+
console.error("ERROR: fixture az failure");
|
|
18
|
+
process.exitCode = 7;
|
|
19
|
+
} else if (mode === "echo") {
|
|
20
|
+
emit(args.slice(2));
|
|
21
|
+
} else if (mode === "terminate") {
|
|
22
|
+
process.kill(process.pid, "SIGTERM");
|
|
23
|
+
}
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const file = process.env.SWALLOWKIT_AZ_FIXTURE_STATE;
|
|
28
|
+
if (!file) throw new Error("This fixture requires its isolated state file; it never invokes Azure.");
|
|
29
|
+
const state = JSON.parse(fs.readFileSync(file, "utf8"));
|
|
30
|
+
state.calls.push(args);
|
|
31
|
+
const save = () => {
|
|
32
|
+
const temporary = `${file}.tmp-${process.pid}`;
|
|
33
|
+
fs.writeFileSync(temporary, JSON.stringify(state));
|
|
34
|
+
fs.renameSync(temporary, file);
|
|
35
|
+
};
|
|
36
|
+
const value = (flag) => args[args.indexOf(flag) + 1];
|
|
37
|
+
const subscription = state.subscription;
|
|
38
|
+
const resourceGroup = state.resourceGroup;
|
|
39
|
+
const groupId = `/subscriptions/${subscription}/resourceGroups/${resourceGroup}`;
|
|
40
|
+
save();
|
|
41
|
+
|
|
42
|
+
if (args[0] === "--version") {
|
|
43
|
+
process.stdout.write("azure-cli fixture");
|
|
44
|
+
} else if (args[0] === "account" && args[1] === "show") {
|
|
45
|
+
process.stdout.write(subscription);
|
|
46
|
+
} else if (args[0] === "bicep" && args[1] === "build") {
|
|
47
|
+
emit(state.template);
|
|
48
|
+
} else if (args[0] === "group" && args[1] === "exists") {
|
|
49
|
+
process.stdout.write(String(state.groupExists));
|
|
50
|
+
} else if (args[0] === "group" && args[1] === "show") {
|
|
51
|
+
emit({ id: groupId, tags: state.tags });
|
|
52
|
+
} else if (args[0] === "group" && args[1] === "create") {
|
|
53
|
+
state.groupExists = true;
|
|
54
|
+
state.groupCreates++;
|
|
55
|
+
save();
|
|
56
|
+
emit(groupId);
|
|
57
|
+
} else if ((args[0] === "tag" && args[1] === "update") || (args[0] === "group" && args[1] === "update")) {
|
|
58
|
+
state.tagAttempts++;
|
|
59
|
+
const assignment = value(args[0] === "tag" ? "--tags" : "--set").replace(/^tags\./, "");
|
|
60
|
+
const index = assignment.indexOf("=");
|
|
61
|
+
const apply = () => { state.tags[assignment.slice(0, index)] = assignment.slice(index + 1); };
|
|
62
|
+
if (state.failTags > 0) {
|
|
63
|
+
state.failTags--;
|
|
64
|
+
if (state.applyTagBeforeFailure) apply();
|
|
65
|
+
save();
|
|
66
|
+
console.error("ERROR: fixture tag update failed");
|
|
67
|
+
process.exitCode = 9;
|
|
68
|
+
} else {
|
|
69
|
+
apply();
|
|
70
|
+
save();
|
|
71
|
+
}
|
|
72
|
+
} else if (args[0] === "staticwebapp" && args[1] === "secrets" && args[2] === "list") {
|
|
73
|
+
if (state.secretQueryFails) {
|
|
74
|
+
console.error("ERROR: fixture secret query failed");
|
|
75
|
+
process.exitCode = 1;
|
|
76
|
+
} else {
|
|
77
|
+
process.stdout.write(`fixture-swa-token-for-${value("--name")}\n`);
|
|
78
|
+
}
|
|
79
|
+
} else if (args[0] === "webapp" && args[1] === "deployment" && args[2] === "list-publishing-profiles") {
|
|
80
|
+
if (state.secretQueryFails) {
|
|
81
|
+
console.error("ERROR: fixture publish profile query failed");
|
|
82
|
+
process.exitCode = 1;
|
|
83
|
+
} else {
|
|
84
|
+
process.stdout.write(`<publishData><publishProfile publishUrl="${value("--name")}.scm.azurewebsites.net" /></publishData>\n`);
|
|
85
|
+
}
|
|
86
|
+
} else if (args[0] === "deployment" && args[1] === "operation") {
|
|
87
|
+
emit(state.operations ?? []);
|
|
88
|
+
} else if (args[0] === "deployment" && args[2] === "export") {
|
|
89
|
+
emit(state.remoteTemplate ?? state.template);
|
|
90
|
+
} else if (args[0] === "deployment" && args[2] === "what-if") {
|
|
91
|
+
emit({ changes: [] });
|
|
92
|
+
} else if (args[0] === "deployment" && args[2] === "create") {
|
|
93
|
+
const name = value("--name");
|
|
94
|
+
state.deploymentCreates++;
|
|
95
|
+
state.deployments[name] = {
|
|
96
|
+
correlationId: `fixture-correlation-${state.deploymentCreates}`,
|
|
97
|
+
templateHash: "fixture-template-hash",
|
|
98
|
+
};
|
|
99
|
+
save();
|
|
100
|
+
if (state.warning) console.error("WARNING: The configuration value of bicep.use_binary_from_path has been set to 'false'.");
|
|
101
|
+
if (state.submitStderr) console.error(state.submitStderr);
|
|
102
|
+
if (state.submitMode === "communication") {
|
|
103
|
+
console.error("ConnectionResetError: fixture connection closed after acceptance");
|
|
104
|
+
process.exitCode = 1;
|
|
105
|
+
} else if (state.submitMode === "nonzero") {
|
|
106
|
+
console.error("ERROR: fixture submit exited nonzero");
|
|
107
|
+
process.exitCode = 7;
|
|
108
|
+
} else if (state.submitMode === "flood") {
|
|
109
|
+
process.stdout.write(JSON.stringify({ properties: { outputs: { apiKey: { value: "fixture-secret-do-not-print" } } } }));
|
|
110
|
+
process.stdout.write("x".repeat(2 * 1024 * 1024));
|
|
111
|
+
process.stderr.write("y".repeat(2 * 1024 * 1024));
|
|
112
|
+
} else if (state.submitMode === "slow") {
|
|
113
|
+
setTimeout(() => emit({ accepted: true }), state.submitDelay ?? 2000);
|
|
114
|
+
} else {
|
|
115
|
+
emit({ accepted: true });
|
|
116
|
+
}
|
|
117
|
+
} else if (args[0] === "deployment" && args[2] === "show") {
|
|
118
|
+
const name = value("--name");
|
|
119
|
+
const deployment = state.deployments[name];
|
|
120
|
+
if (!deployment || state.queryMode === "not-found") {
|
|
121
|
+
console.error("ERROR: (DeploymentNotFound) fixture deployment is not visible");
|
|
122
|
+
process.exitCode = 3;
|
|
123
|
+
} else if (state.queryMode === "communication" || (state.transientQueryFailures ?? 0) > 0) {
|
|
124
|
+
if (state.transientQueryFailures) { state.transientQueryFailures -= 1; save(); }
|
|
125
|
+
console.error("ConnectionResetError: fixture status query interrupted");
|
|
126
|
+
process.exitCode = 1;
|
|
127
|
+
} else if (state.queryMode === "invalid") {
|
|
128
|
+
process.stdout.write("{invalid JSON");
|
|
129
|
+
} else if (value("--query") === "properties.parameters") {
|
|
130
|
+
emit(state.parameters);
|
|
131
|
+
} else if (value("--query").includes("properties.outputs.")) {
|
|
132
|
+
if (state.outputQueryFails) {
|
|
133
|
+
console.error("ERROR: resource output query failed");
|
|
134
|
+
process.exitCode = 1;
|
|
135
|
+
} else {
|
|
136
|
+
const outputs = state.outputs ?? {};
|
|
137
|
+
emit(Object.fromEntries(["staticWebAppName", "staticWebAppUrl", "functionsAppName", "functionsAppUrl", "cosmosDbAccountName", "cosmosDatabaseName"].map(key => [key, outputs[key] ?? null])));
|
|
138
|
+
}
|
|
139
|
+
} else {
|
|
140
|
+
const states = state.states ?? ["Succeeded"];
|
|
141
|
+
const provisioningState = states.length > 1 ? states.shift() : states[0];
|
|
142
|
+
save();
|
|
143
|
+
emit({
|
|
144
|
+
id: `${groupId}/providers/Microsoft.Resources/deployments/${name}`,
|
|
145
|
+
name, state: provisioningState,
|
|
146
|
+
correlationId: deployment.correlationId, templateHash: deployment.templateHash,
|
|
147
|
+
error: state.error ?? null,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
} else {
|
|
151
|
+
console.error("ERROR: fixture does not support this command");
|
|
152
|
+
process.exitCode = 4;
|
|
153
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const fs = require("node:fs");
|
|
2
|
+
const path = require("node:path");
|
|
3
|
+
const ts = require("typescript");
|
|
4
|
+
const root = path.resolve(__dirname, "..", "..", "..");
|
|
5
|
+
require.extensions[".ts"] = (module, file) => {
|
|
6
|
+
module._compile(ts.transpileModule(fs.readFileSync(file, "utf8"), {
|
|
7
|
+
compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2020, esModuleInterop: true },
|
|
8
|
+
fileName: file,
|
|
9
|
+
}).outputText, file);
|
|
10
|
+
};
|
|
11
|
+
const azure = require(path.join(root, "src", "utils", "azure-cli.ts"));
|
|
12
|
+
azure.setAzCliInvocationForTesting({
|
|
13
|
+
command: process.execPath,
|
|
14
|
+
prefixArgs: [path.join(__dirname, "azure-cli.cjs")],
|
|
15
|
+
source: "isolated fixture",
|
|
16
|
+
});
|
|
17
|
+
const provision = require(path.join(root, "src", "core", "operations", "provision-operations.ts"));
|
|
18
|
+
const state = JSON.parse(fs.readFileSync(process.env.SWALLOWKIT_AZ_FIXTURE_STATE, "utf8"));
|
|
19
|
+
void (async () => {
|
|
20
|
+
const plan = await provision.planProvisionOperation({
|
|
21
|
+
resourceGroup: state.resourceGroup, location: "japaneast", swaLocation: "eastasia",
|
|
22
|
+
});
|
|
23
|
+
const result = await provision.executeProvisionPlan(plan, { approve: true });
|
|
24
|
+
console.log(JSON.stringify(result));
|
|
25
|
+
})().catch((error) => {
|
|
26
|
+
console.error(error.message);
|
|
27
|
+
process.exitCode = 1;
|
|
28
|
+
});
|