@allstak/wizard 0.1.3 → 0.1.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.
- package/CHANGELOG.md +53 -1
- package/LICENSE +191 -0
- package/README.md +299 -47
- package/dist/api/http.d.ts +2 -0
- package/dist/api/http.d.ts.map +1 -1
- package/dist/api/http.js +6 -0
- package/dist/api/http.js.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/types.d.ts +3 -3
- package/dist/api/types.js +3 -3
- package/dist/certification/fixtures.d.ts +4 -0
- package/dist/certification/fixtures.d.ts.map +1 -0
- package/dist/certification/fixtures.js +109 -0
- package/dist/certification/fixtures.js.map +1 -0
- package/dist/certification/gates.d.ts +10 -0
- package/dist/certification/gates.d.ts.map +1 -0
- package/dist/certification/gates.js +20 -0
- package/dist/certification/gates.js.map +1 -0
- package/dist/certification/index.d.ts +6 -0
- package/dist/certification/index.d.ts.map +1 -0
- package/dist/certification/index.js +5 -0
- package/dist/certification/index.js.map +1 -0
- package/dist/certification/live-backend.d.ts +50 -0
- package/dist/certification/live-backend.d.ts.map +1 -0
- package/dist/certification/live-backend.js +422 -0
- package/dist/certification/live-backend.js.map +1 -0
- package/dist/certification/packages.d.ts +3 -0
- package/dist/certification/packages.d.ts.map +1 -0
- package/dist/certification/packages.js +49 -0
- package/dist/certification/packages.js.map +1 -0
- package/dist/certification/process.d.ts +8 -0
- package/dist/certification/process.d.ts.map +1 -0
- package/dist/certification/process.js +77 -0
- package/dist/certification/process.js.map +1 -0
- package/dist/certification/report.d.ts +3 -0
- package/dist/certification/report.d.ts.map +1 -0
- package/dist/certification/report.js +38 -0
- package/dist/certification/report.js.map +1 -0
- package/dist/certification/runner.d.ts +3 -0
- package/dist/certification/runner.d.ts.map +1 -0
- package/dist/certification/runner.js +299 -0
- package/dist/certification/runner.js.map +1 -0
- package/dist/certification/runtime.d.ts +11 -0
- package/dist/certification/runtime.d.ts.map +1 -0
- package/dist/certification/runtime.js +60 -0
- package/dist/certification/runtime.js.map +1 -0
- package/dist/certification/types.d.ts +73 -0
- package/dist/certification/types.d.ts.map +1 -0
- package/dist/certification/types.js +2 -0
- package/dist/certification/types.js.map +1 -0
- package/dist/cli.js +70 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/certify.d.ts +18 -0
- package/dist/commands/certify.d.ts.map +1 -0
- package/dist/commands/certify.js +27 -0
- package/dist/commands/certify.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +13 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts +5 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +9 -3
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/security-snapshot.d.ts +24 -0
- package/dist/commands/security-snapshot.d.ts.map +1 -0
- package/dist/commands/security-snapshot.js +113 -0
- package/dist/commands/security-snapshot.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/_scaffold.d.ts +2 -1
- package/dist/integrations/_scaffold.d.ts.map +1 -1
- package/dist/integrations/_scaffold.js +36 -13
- package/dist/integrations/_scaffold.js.map +1 -1
- package/dist/integrations/_simple-scaffold.d.ts +5 -2
- package/dist/integrations/_simple-scaffold.d.ts.map +1 -1
- package/dist/integrations/_simple-scaffold.js +3 -0
- package/dist/integrations/_simple-scaffold.js.map +1 -1
- package/dist/integrations/dotnet.d.ts.map +1 -1
- package/dist/integrations/dotnet.js +3 -0
- package/dist/integrations/dotnet.js.map +1 -1
- package/dist/integrations/expo/detect.d.ts +13 -0
- package/dist/integrations/expo/detect.d.ts.map +1 -0
- package/dist/integrations/expo/detect.js +38 -0
- package/dist/integrations/expo/detect.js.map +1 -0
- package/dist/integrations/expo/doctor.d.ts +6 -0
- package/dist/integrations/expo/doctor.d.ts.map +1 -0
- package/dist/integrations/expo/doctor.js +136 -0
- package/dist/integrations/expo/doctor.js.map +1 -0
- package/dist/integrations/expo/files.d.ts +15 -0
- package/dist/integrations/expo/files.d.ts.map +1 -0
- package/dist/integrations/expo/files.js +62 -0
- package/dist/integrations/expo/files.js.map +1 -0
- package/dist/integrations/expo/index.d.ts +24 -0
- package/dist/integrations/expo/index.d.ts.map +1 -0
- package/dist/integrations/expo/index.js +68 -0
- package/dist/integrations/expo/index.js.map +1 -0
- package/dist/integrations/expo/manifest.d.ts +3 -0
- package/dist/integrations/expo/manifest.d.ts.map +1 -0
- package/dist/integrations/expo/manifest.js +39 -0
- package/dist/integrations/expo/manifest.js.map +1 -0
- package/dist/integrations/expo/patch.d.ts +13 -0
- package/dist/integrations/expo/patch.d.ts.map +1 -0
- package/dist/integrations/expo/patch.js +215 -0
- package/dist/integrations/expo/patch.js.map +1 -0
- package/dist/integrations/expo/uninstall.d.ts +4 -0
- package/dist/integrations/expo/uninstall.d.ts.map +1 -0
- package/dist/integrations/expo/uninstall.js +77 -0
- package/dist/integrations/expo/uninstall.js.map +1 -0
- package/dist/integrations/expo.d.ts +8 -1
- package/dist/integrations/expo.d.ts.map +1 -1
- package/dist/integrations/expo.js +8 -11
- package/dist/integrations/expo.js.map +1 -1
- package/dist/integrations/fastify/detect.d.ts +3 -0
- package/dist/integrations/fastify/detect.d.ts.map +1 -0
- package/dist/integrations/fastify/detect.js +12 -0
- package/dist/integrations/fastify/detect.js.map +1 -0
- package/dist/integrations/fastify/doctor.d.ts +3 -0
- package/dist/integrations/fastify/doctor.d.ts.map +1 -0
- package/dist/integrations/fastify/doctor.js +81 -0
- package/dist/integrations/fastify/doctor.js.map +1 -0
- package/dist/integrations/fastify/files.d.ts +17 -0
- package/dist/integrations/fastify/files.d.ts.map +1 -0
- package/dist/integrations/fastify/files.js +51 -0
- package/dist/integrations/fastify/files.js.map +1 -0
- package/dist/integrations/fastify/index.d.ts +3 -0
- package/dist/integrations/fastify/index.d.ts.map +1 -0
- package/dist/integrations/fastify/index.js +47 -0
- package/dist/integrations/fastify/index.js.map +1 -0
- package/dist/integrations/fastify/manifest.d.ts +3 -0
- package/dist/integrations/fastify/manifest.d.ts.map +1 -0
- package/dist/integrations/fastify/manifest.js +34 -0
- package/dist/integrations/fastify/manifest.js.map +1 -0
- package/dist/integrations/fastify/patch.d.ts +27 -0
- package/dist/integrations/fastify/patch.d.ts.map +1 -0
- package/dist/integrations/fastify/patch.js +91 -0
- package/dist/integrations/fastify/patch.js.map +1 -0
- package/dist/integrations/fastify/uninstall.d.ts +4 -0
- package/dist/integrations/fastify/uninstall.d.ts.map +1 -0
- package/dist/integrations/fastify/uninstall.js +18 -0
- package/dist/integrations/fastify/uninstall.js.map +1 -0
- package/dist/integrations/fastify.d.ts +5 -1
- package/dist/integrations/fastify.d.ts.map +1 -1
- package/dist/integrations/fastify.js +5 -9
- package/dist/integrations/fastify.js.map +1 -1
- package/dist/integrations/flutter.d.ts.map +1 -1
- package/dist/integrations/flutter.js +3 -0
- package/dist/integrations/flutter.js.map +1 -1
- package/dist/integrations/go/index.d.ts +3 -0
- package/dist/integrations/go/index.d.ts.map +1 -0
- package/dist/integrations/go/index.js +199 -0
- package/dist/integrations/go/index.js.map +1 -0
- package/dist/integrations/go.d.ts.map +1 -1
- package/dist/integrations/go.js +5 -2
- package/dist/integrations/go.js.map +1 -1
- package/dist/integrations/java/index.d.ts +3 -0
- package/dist/integrations/java/index.d.ts.map +1 -0
- package/dist/integrations/java/index.js +472 -0
- package/dist/integrations/java/index.js.map +1 -0
- package/dist/integrations/java.d.ts.map +1 -1
- package/dist/integrations/java.js +5 -2
- package/dist/integrations/java.js.map +1 -1
- package/dist/integrations/js/manifest.d.ts.map +1 -1
- package/dist/integrations/js/manifest.js +3 -0
- package/dist/integrations/js/manifest.js.map +1 -1
- package/dist/integrations/nestjs/detect.d.ts +3 -0
- package/dist/integrations/nestjs/detect.d.ts.map +1 -0
- package/dist/integrations/nestjs/detect.js +12 -0
- package/dist/integrations/nestjs/detect.js.map +1 -0
- package/dist/integrations/nestjs/doctor.d.ts +3 -0
- package/dist/integrations/nestjs/doctor.d.ts.map +1 -0
- package/dist/integrations/nestjs/doctor.js +76 -0
- package/dist/integrations/nestjs/doctor.js.map +1 -0
- package/dist/integrations/nestjs/files.d.ts +18 -0
- package/dist/integrations/nestjs/files.d.ts.map +1 -0
- package/dist/integrations/nestjs/files.js +39 -0
- package/dist/integrations/nestjs/files.js.map +1 -0
- package/dist/integrations/nestjs/index.d.ts +3 -0
- package/dist/integrations/nestjs/index.d.ts.map +1 -0
- package/dist/integrations/nestjs/index.js +43 -0
- package/dist/integrations/nestjs/index.js.map +1 -0
- package/dist/integrations/nestjs/manifest.d.ts +3 -0
- package/dist/integrations/nestjs/manifest.d.ts.map +1 -0
- package/dist/integrations/nestjs/manifest.js +32 -0
- package/dist/integrations/nestjs/manifest.js.map +1 -0
- package/dist/integrations/nestjs/patch.d.ts +25 -0
- package/dist/integrations/nestjs/patch.d.ts.map +1 -0
- package/dist/integrations/nestjs/patch.js +66 -0
- package/dist/integrations/nestjs/patch.js.map +1 -0
- package/dist/integrations/nestjs/uninstall.d.ts +4 -0
- package/dist/integrations/nestjs/uninstall.d.ts.map +1 -0
- package/dist/integrations/nestjs/uninstall.js +18 -0
- package/dist/integrations/nestjs/uninstall.js.map +1 -0
- package/dist/integrations/nestjs.d.ts +5 -1
- package/dist/integrations/nestjs.d.ts.map +1 -1
- package/dist/integrations/nestjs.js +5 -9
- package/dist/integrations/nestjs.js.map +1 -1
- package/dist/integrations/next/index.js +2 -2
- package/dist/integrations/next/index.js.map +1 -1
- package/dist/integrations/next/manifest.d.ts.map +1 -1
- package/dist/integrations/next/manifest.js +4 -1
- package/dist/integrations/next/manifest.js.map +1 -1
- package/dist/integrations/next/patch.js +8 -3
- package/dist/integrations/next/patch.js.map +1 -1
- package/dist/integrations/next/uninstall.d.ts.map +1 -1
- package/dist/integrations/next/uninstall.js +10 -1
- package/dist/integrations/next/uninstall.js.map +1 -1
- package/dist/integrations/otel.d.ts.map +1 -1
- package/dist/integrations/otel.js +4 -1
- package/dist/integrations/otel.js.map +1 -1
- package/dist/integrations/php.d.ts.map +1 -1
- package/dist/integrations/php.js +16 -3
- package/dist/integrations/php.js.map +1 -1
- package/dist/integrations/python/index.d.ts +3 -0
- package/dist/integrations/python/index.d.ts.map +1 -0
- package/dist/integrations/python/index.js +222 -0
- package/dist/integrations/python/index.js.map +1 -0
- package/dist/integrations/python.d.ts.map +1 -1
- package/dist/integrations/python.js +5 -2
- package/dist/integrations/python.js.map +1 -1
- package/dist/integrations/react/doctor.d.ts.map +1 -1
- package/dist/integrations/react/doctor.js +41 -8
- package/dist/integrations/react/doctor.js.map +1 -1
- package/dist/integrations/react/index.d.ts.map +1 -1
- package/dist/integrations/react/index.js +1 -4
- package/dist/integrations/react/index.js.map +1 -1
- package/dist/integrations/react/manifest.d.ts.map +1 -1
- package/dist/integrations/react/manifest.js +4 -1
- package/dist/integrations/react/manifest.js.map +1 -1
- package/dist/integrations/react/patch.d.ts.map +1 -1
- package/dist/integrations/react/patch.js +120 -8
- package/dist/integrations/react/patch.js.map +1 -1
- package/dist/integrations/react/uninstall.d.ts.map +1 -1
- package/dist/integrations/react/uninstall.js +20 -1
- package/dist/integrations/react/uninstall.js.map +1 -1
- package/dist/integrations/react-native.d.ts.map +1 -1
- package/dist/integrations/react-native.js +3 -0
- package/dist/integrations/react-native.js.map +1 -1
- package/dist/integrations/ruby.d.ts.map +1 -1
- package/dist/integrations/ruby.js +3 -0
- package/dist/integrations/ruby.js.map +1 -1
- package/dist/output/human.d.ts.map +1 -1
- package/dist/output/human.js +38 -7
- package/dist/output/human.js.map +1 -1
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +9 -23
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/manifest.d.ts +8 -0
- package/dist/registry/manifest.d.ts.map +1 -1
- package/dist/security-snapshot/builder.d.ts +3 -0
- package/dist/security-snapshot/builder.d.ts.map +1 -0
- package/dist/security-snapshot/builder.js +343 -0
- package/dist/security-snapshot/builder.js.map +1 -0
- package/dist/security-snapshot/client.d.ts +3 -0
- package/dist/security-snapshot/client.d.ts.map +1 -0
- package/dist/security-snapshot/client.js +38 -0
- package/dist/security-snapshot/client.js.map +1 -0
- package/dist/security-snapshot/index.d.ts +4 -0
- package/dist/security-snapshot/index.d.ts.map +1 -0
- package/dist/security-snapshot/index.js +3 -0
- package/dist/security-snapshot/index.js.map +1 -0
- package/dist/security-snapshot/types.d.ts +57 -0
- package/dist/security-snapshot/types.d.ts.map +1 -0
- package/dist/security-snapshot/types.js +2 -0
- package/dist/security-snapshot/types.js.map +1 -0
- package/dist/sourcemaps/next.js +3 -3
- package/dist/sourcemaps/next.js.map +1 -1
- package/dist/sourcemaps/vite.d.ts.map +1 -1
- package/dist/sourcemaps/vite.js +92 -9
- package/dist/sourcemaps/vite.js.map +1 -1
- package/dist/util/wizard-version.d.ts +1 -1
- package/dist/util/wizard-version.js +1 -1
- package/docs/architecture/v02-java-host-fix-spec.md +4 -8
- package/docs/architecture/v02-sourcemaps-e2e-spec.md +1 -1
- package/docs/beta/README.md +17 -0
- package/docs/beta/ci.md +122 -0
- package/docs/beta/config.md +124 -0
- package/docs/beta/doctor.md +79 -0
- package/docs/beta/expo.md +69 -0
- package/docs/beta/fastify.md +62 -0
- package/docs/beta/known-limitations.md +93 -0
- package/docs/beta/nestjs.md +69 -0
- package/docs/beta/next.md +76 -0
- package/docs/beta/node.md +60 -0
- package/docs/beta/privacy.md +99 -0
- package/docs/beta/quickstart.md +89 -0
- package/docs/beta/react.md +91 -0
- package/docs/beta/reliability.md +33 -0
- package/docs/beta/restore.md +84 -0
- package/docs/beta/troubleshooting.md +133 -0
- package/docs/errors.md +88 -0
- package/package.json +23 -5
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
const CANONICAL_GROUP = 'sa.allstak';
|
|
4
|
+
const LEGACY_GROUP = 'dev.allstak';
|
|
5
|
+
const ARTIFACT = 'allstak-spring-boot-starter';
|
|
6
|
+
const VERSION = '0.1.1';
|
|
7
|
+
const COORDINATE = `${CANONICAL_GROUP}:${ARTIFACT}:${VERSION}`;
|
|
8
|
+
export const javaIntegration = {
|
|
9
|
+
id: 'java',
|
|
10
|
+
manifest: {
|
|
11
|
+
id: 'java',
|
|
12
|
+
title: 'Java / Spring Boot',
|
|
13
|
+
sdkPackage: COORDINATE,
|
|
14
|
+
additionalPackages: [],
|
|
15
|
+
stability: 'beta',
|
|
16
|
+
runtimeStatus: 'beta',
|
|
17
|
+
wizardAutomation: 'assisted',
|
|
18
|
+
public: true,
|
|
19
|
+
stabilityNote: 'Runtime Beta (certification score 34). Wizard supports Maven/Spring Boot dependency and application.properties setup; Gradle/YAML projects are detected and reported for manual review.',
|
|
20
|
+
capabilities: ['patch-bundler-config', 'write-env'],
|
|
21
|
+
unsupportedCapabilities: ['live-validate-event'],
|
|
22
|
+
compatibility: [],
|
|
23
|
+
files: [
|
|
24
|
+
{ path: 'pom.xml', kind: 'optional', description: 'Maven build file' },
|
|
25
|
+
{ path: 'build.gradle', kind: 'optional', description: 'Gradle build file' },
|
|
26
|
+
{ path: 'src/main/resources/application.properties', kind: 'optional', description: 'Spring Boot configuration' },
|
|
27
|
+
],
|
|
28
|
+
supportedPackageManagers: [],
|
|
29
|
+
docsUrl: 'https://docs.allstak.dev/sdks/java-spring',
|
|
30
|
+
},
|
|
31
|
+
async detect(ctx) {
|
|
32
|
+
const build = detectBuild(ctx.projectRoot);
|
|
33
|
+
if (!build.hasJavaBuild) {
|
|
34
|
+
return { ok: false, reason: 'No Maven or Gradle build file found' };
|
|
35
|
+
}
|
|
36
|
+
if (!build.isSpringBoot) {
|
|
37
|
+
return { ok: false, reason: 'Java project detected, but Spring Boot was not found in Maven/Gradle files' };
|
|
38
|
+
}
|
|
39
|
+
return { ok: true, reason: build.evidence.join(', ') };
|
|
40
|
+
},
|
|
41
|
+
async plan(ctx) {
|
|
42
|
+
const build = detectBuild(ctx.projectRoot);
|
|
43
|
+
const configPath = locateProperties(ctx.projectRoot) ?? resolve(ctx.projectRoot, 'src/main/resources/application.properties');
|
|
44
|
+
const lines = [
|
|
45
|
+
`detect Spring Boot project (${build.tool})`,
|
|
46
|
+
`ensure ${COORDINATE} dependency`,
|
|
47
|
+
`ensure safe AllStak env-placeholder config in ${configPath}`,
|
|
48
|
+
'preserve existing app config and avoid duplicate dependency/config',
|
|
49
|
+
'doctor checks canonical coordinate, config, host, and duplicate setup',
|
|
50
|
+
];
|
|
51
|
+
if (build.tool === 'gradle') {
|
|
52
|
+
lines.push('Gradle patching is not applied yet; doctor reports manual review for Gradle files');
|
|
53
|
+
}
|
|
54
|
+
return lines;
|
|
55
|
+
},
|
|
56
|
+
async install() { },
|
|
57
|
+
async patch(ctx, tx) {
|
|
58
|
+
const build = detectBuild(ctx.projectRoot);
|
|
59
|
+
if (build.mavenPath) {
|
|
60
|
+
await patchMavenPom(build.mavenPath, tx);
|
|
61
|
+
}
|
|
62
|
+
const propertiesPath = locateProperties(ctx.projectRoot) ?? resolve(ctx.projectRoot, 'src/main/resources/application.properties');
|
|
63
|
+
await patchApplicationProperties(propertiesPath, tx, ctx);
|
|
64
|
+
},
|
|
65
|
+
async validate(ctx) {
|
|
66
|
+
return doctorJava(ctx);
|
|
67
|
+
},
|
|
68
|
+
async uninstall(ctx, tx) {
|
|
69
|
+
// Uninstall is intentionally conservative. It only removes the canonical
|
|
70
|
+
// dependency if the wizard can prove there are no user-owned AllStak calls
|
|
71
|
+
// in source, and only removes the managed host line added by this wizard.
|
|
72
|
+
const build = detectBuild(ctx.projectRoot);
|
|
73
|
+
if (build.mavenPath && !hasUserAllStakSourceReferences(ctx.projectRoot)) {
|
|
74
|
+
await removeMavenDependency(build.mavenPath, tx);
|
|
75
|
+
}
|
|
76
|
+
const propertiesPath = locateProperties(ctx.projectRoot);
|
|
77
|
+
if (propertiesPath)
|
|
78
|
+
await removeWizardOwnedProperties(propertiesPath, tx);
|
|
79
|
+
},
|
|
80
|
+
async repair(ctx, tx) {
|
|
81
|
+
await this.patch(ctx, tx);
|
|
82
|
+
},
|
|
83
|
+
async doctor(ctx) {
|
|
84
|
+
return doctorJava(ctx);
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
function detectBuild(projectRoot) {
|
|
88
|
+
const mavenPath = resolve(projectRoot, 'pom.xml');
|
|
89
|
+
const gradlePath = existsSync(resolve(projectRoot, 'build.gradle'))
|
|
90
|
+
? resolve(projectRoot, 'build.gradle')
|
|
91
|
+
: existsSync(resolve(projectRoot, 'build.gradle.kts'))
|
|
92
|
+
? resolve(projectRoot, 'build.gradle.kts')
|
|
93
|
+
: null;
|
|
94
|
+
const evidence = [];
|
|
95
|
+
let isSpringBoot = false;
|
|
96
|
+
if (existsSync(mavenPath)) {
|
|
97
|
+
const pom = readFileSync(mavenPath, 'utf8');
|
|
98
|
+
evidence.push('pom.xml');
|
|
99
|
+
if (pom.includes('spring-boot-starter-parent') || pom.includes('spring-boot-starter-web') || pom.includes('org.springframework.boot')) {
|
|
100
|
+
isSpringBoot = true;
|
|
101
|
+
evidence.push('Spring Boot in pom.xml');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (gradlePath) {
|
|
105
|
+
const gradle = readFileSync(gradlePath, 'utf8');
|
|
106
|
+
evidence.push(gradlePath.endsWith('.kts') ? 'build.gradle.kts' : 'build.gradle');
|
|
107
|
+
if (gradle.includes('org.springframework.boot') || gradle.includes('spring-boot-starter')) {
|
|
108
|
+
isSpringBoot = true;
|
|
109
|
+
evidence.push('Spring Boot in Gradle');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
hasJavaBuild: existsSync(mavenPath) || gradlePath !== null,
|
|
114
|
+
isSpringBoot,
|
|
115
|
+
tool: existsSync(mavenPath) ? 'maven' : gradlePath ? 'gradle' : 'unknown',
|
|
116
|
+
mavenPath: existsSync(mavenPath) ? mavenPath : null,
|
|
117
|
+
gradlePath,
|
|
118
|
+
evidence,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
async function patchMavenPom(pomPath, tx) {
|
|
122
|
+
const pom = readFileSync(pomPath, 'utf8');
|
|
123
|
+
let next = pom;
|
|
124
|
+
next = next.replace(new RegExp(`<groupId>${escapeRe(LEGACY_GROUP)}</groupId>\\s*\\n\\s*<artifactId>${escapeRe(ARTIFACT)}</artifactId>\\s*\\n\\s*<version>[^<]+</version>`, 'g'), dependencyInner());
|
|
125
|
+
if (!hasStarterDependency(next)) {
|
|
126
|
+
next = next.replace(/(\s*)<\/dependencies>/, (_match, indent) => `${dependencyBlock(`${indent} `)}\n${indent}</dependencies>`);
|
|
127
|
+
}
|
|
128
|
+
if (next !== pom)
|
|
129
|
+
await tx.write(pomPath, next);
|
|
130
|
+
}
|
|
131
|
+
async function removeMavenDependency(pomPath, tx) {
|
|
132
|
+
const pom = readFileSync(pomPath, 'utf8');
|
|
133
|
+
const depRe = new RegExp(`\\n\\s*<!-- AllStak Observability -->\\s*\\n\\s*<dependency>\\s*\\n\\s*<groupId>${escapeRe(CANONICAL_GROUP)}</groupId>\\s*\\n\\s*<artifactId>${escapeRe(ARTIFACT)}</artifactId>\\s*\\n\\s*<version>${escapeRe(VERSION)}</version>\\s*\\n\\s*</dependency>`, 'm');
|
|
134
|
+
const next = pom.replace(depRe, '');
|
|
135
|
+
if (next !== pom)
|
|
136
|
+
await tx.write(pomPath, next);
|
|
137
|
+
}
|
|
138
|
+
function dependencyInner() {
|
|
139
|
+
return `<groupId>${CANONICAL_GROUP}</groupId>\n <artifactId>${ARTIFACT}</artifactId>\n <version>${VERSION}</version>`;
|
|
140
|
+
}
|
|
141
|
+
function dependencyBlock(indent) {
|
|
142
|
+
return `\n${indent}<!-- AllStak Observability -->\n${indent}<dependency>\n${indent} <groupId>${CANONICAL_GROUP}</groupId>\n${indent} <artifactId>${ARTIFACT}</artifactId>\n${indent} <version>${VERSION}</version>\n${indent}</dependency>`;
|
|
143
|
+
}
|
|
144
|
+
function hasStarterDependency(pom) {
|
|
145
|
+
return pom.includes(`<groupId>${CANONICAL_GROUP}</groupId>`) && pom.includes(`<artifactId>${ARTIFACT}</artifactId>`);
|
|
146
|
+
}
|
|
147
|
+
function locateProperties(projectRoot) {
|
|
148
|
+
const candidates = [
|
|
149
|
+
'src/main/resources/application.properties',
|
|
150
|
+
'src/main/resources/application.yml',
|
|
151
|
+
'src/main/resources/application.yaml',
|
|
152
|
+
];
|
|
153
|
+
for (const candidate of candidates) {
|
|
154
|
+
const full = resolve(projectRoot, candidate);
|
|
155
|
+
if (existsSync(full))
|
|
156
|
+
return full;
|
|
157
|
+
}
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
async function patchApplicationProperties(filePath, tx, ctx) {
|
|
161
|
+
if (filePath.endsWith('.yml') || filePath.endsWith('.yaml')) {
|
|
162
|
+
// YAML patching safely requires a YAML parser to preserve structure/comments.
|
|
163
|
+
// Doctor reports this as manual review for now.
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const current = existsSync(filePath) ? readFileSync(filePath, 'utf8') : '';
|
|
167
|
+
let next = current;
|
|
168
|
+
const desired = javaProperties(ctx);
|
|
169
|
+
for (const [key, value] of Object.entries(desired)) {
|
|
170
|
+
if (propertyExists(next, key) && key !== 'allstak.api-key' && key !== 'allstak.host') {
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
next = upsertProperty(next, key, value);
|
|
174
|
+
}
|
|
175
|
+
if (!next.includes('# AllStak Observability')) {
|
|
176
|
+
next = next.replace(/(allstak\.enabled=.*)/, '# AllStak Observability\n$1');
|
|
177
|
+
}
|
|
178
|
+
if (next !== current)
|
|
179
|
+
await tx.write(filePath, next.endsWith('\n') ? next : `${next}\n`);
|
|
180
|
+
}
|
|
181
|
+
async function removeWizardOwnedProperties(filePath, tx) {
|
|
182
|
+
const current = readFileSync(filePath, 'utf8');
|
|
183
|
+
// Keep user-owned core AllStak config. Only remove host when it is the exact
|
|
184
|
+
// wizard-added default and no source references remain.
|
|
185
|
+
const next = current.replace(/^allstak\.host=\$\{ALLSTAK_HOST:https:\/\/api\.allstak\.sa\}\n?/m, '');
|
|
186
|
+
if (next !== current)
|
|
187
|
+
await tx.write(filePath, next);
|
|
188
|
+
}
|
|
189
|
+
function javaProperties(ctx) {
|
|
190
|
+
return {
|
|
191
|
+
'allstak.enabled': '${ALLSTAK_ENABLED:true}',
|
|
192
|
+
'allstak.api-key': '${ALLSTAK_API_KEY}',
|
|
193
|
+
'allstak.host': `\${ALLSTAK_HOST:${ctx.host || 'https://api.allstak.sa'}}`,
|
|
194
|
+
'allstak.environment': '${ALLSTAK_ENVIRONMENT:${SPRING_PROFILES_ACTIVE:production}}',
|
|
195
|
+
'allstak.service-name': '${ALLSTAK_SERVICE_NAME:${spring.application.name:application}}',
|
|
196
|
+
'allstak.release': '${ALLSTAK_RELEASE:${APP_RELEASE:}}',
|
|
197
|
+
'allstak.capture-db-queries': '${ALLSTAK_CAPTURE_DB_QUERIES:true}',
|
|
198
|
+
'allstak.capture-http-requests': '${ALLSTAK_CAPTURE_HTTP_REQUESTS:true}',
|
|
199
|
+
'allstak.capture-exceptions': '${ALLSTAK_CAPTURE_EXCEPTIONS:true}',
|
|
200
|
+
'allstak.capture-logs': '${ALLSTAK_CAPTURE_LOGS:true}',
|
|
201
|
+
'allstak.capture-scheduled': '${ALLSTAK_CAPTURE_SCHEDULED:true}',
|
|
202
|
+
'allstak.capture-async': '${ALLSTAK_CAPTURE_ASYNC:true}',
|
|
203
|
+
'allstak.capture-rabbit': '${ALLSTAK_CAPTURE_RABBIT:true}',
|
|
204
|
+
'allstak.capture-kafka': '${ALLSTAK_CAPTURE_KAFKA:true}',
|
|
205
|
+
'allstak.capture-cache': '${ALLSTAK_CAPTURE_CACHE:true}',
|
|
206
|
+
'allstak.capture-feign': '${ALLSTAK_CAPTURE_FEIGN:true}',
|
|
207
|
+
'allstak.capture-validation': '${ALLSTAK_CAPTURE_VALIDATION:true}',
|
|
208
|
+
'allstak.capture-security': '${ALLSTAK_CAPTURE_SECURITY:true}',
|
|
209
|
+
'allstak.capture-retry': '${ALLSTAK_CAPTURE_RETRY:true}',
|
|
210
|
+
'allstak.debug': '${ALLSTAK_DEBUG:false}',
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
function upsertProperty(src, key, value) {
|
|
214
|
+
const line = `${key}=${value}`;
|
|
215
|
+
const re = new RegExp(`^${escapeRe(key)}=.*$`, 'm');
|
|
216
|
+
if (re.test(src))
|
|
217
|
+
return src.replace(re, line);
|
|
218
|
+
const allstakLines = [...src.matchAll(/^allstak\.[^=\n]+=.*$/gm)];
|
|
219
|
+
if (allstakLines.length > 0) {
|
|
220
|
+
const last = allstakLines[allstakLines.length - 1];
|
|
221
|
+
const insertAt = last.index + last[0].length;
|
|
222
|
+
return `${src.slice(0, insertAt)}\n${line}${src.slice(insertAt)}`;
|
|
223
|
+
}
|
|
224
|
+
const prefix = src.length > 0 && !src.endsWith('\n') ? '\n' : '';
|
|
225
|
+
return `${src}${prefix}\n# AllStak Observability\n${line}\n`;
|
|
226
|
+
}
|
|
227
|
+
function propertyExists(src, key) {
|
|
228
|
+
return new RegExp(`^${escapeRe(key)}=.*$`, 'm').test(src);
|
|
229
|
+
}
|
|
230
|
+
function doctorJava(ctx) {
|
|
231
|
+
const checks = [];
|
|
232
|
+
const build = detectBuild(ctx.projectRoot);
|
|
233
|
+
const buildText = readBuildText(build);
|
|
234
|
+
const sourceText = readSourceText(ctx.projectRoot);
|
|
235
|
+
checks.push({
|
|
236
|
+
name: 'spring-boot-detected',
|
|
237
|
+
status: build.isSpringBoot ? 'pass' : 'fail',
|
|
238
|
+
detail: build.evidence.join(', ') || 'No Spring Boot evidence found',
|
|
239
|
+
});
|
|
240
|
+
checks.push({
|
|
241
|
+
name: 'build-tool',
|
|
242
|
+
status: build.tool === 'maven' ? 'pass' : build.tool === 'gradle' ? 'warn' : 'fail',
|
|
243
|
+
detail: build.tool === 'maven' ? 'Maven pom.xml detected' : build.tool === 'gradle' ? 'Gradle detected; automatic dependency patching needs manual review' : 'No Maven/Gradle file found',
|
|
244
|
+
});
|
|
245
|
+
const pom = build.mavenPath && existsSync(build.mavenPath) ? readFileSync(build.mavenPath, 'utf8') : '';
|
|
246
|
+
const depMatches = pom ? countStarterDependencies(pom) : 0;
|
|
247
|
+
checks.push({
|
|
248
|
+
name: 'starter-dependency',
|
|
249
|
+
status: depMatches === 1 && hasStarterDependency(pom) ? 'pass' : depMatches > 1 ? 'fail' : 'fail',
|
|
250
|
+
detail: depMatches === 1 && hasStarterDependency(pom)
|
|
251
|
+
? COORDINATE
|
|
252
|
+
: depMatches > 1
|
|
253
|
+
? `Duplicate ${ARTIFACT} dependencies found`
|
|
254
|
+
: `${COORDINATE} is missing`,
|
|
255
|
+
});
|
|
256
|
+
checks.push({
|
|
257
|
+
name: 'canonical-coordinate',
|
|
258
|
+
status: pom.includes(LEGACY_GROUP) ? 'fail' : hasStarterDependency(pom) ? 'pass' : 'warn',
|
|
259
|
+
detail: pom.includes(LEGACY_GROUP)
|
|
260
|
+
? `Legacy ${LEGACY_GROUP} coordinate remains`
|
|
261
|
+
: hasStarterDependency(pom)
|
|
262
|
+
? 'Canonical sa.allstak coordinate in use'
|
|
263
|
+
: 'Starter dependency not present',
|
|
264
|
+
});
|
|
265
|
+
const propertiesPath = locateProperties(ctx.projectRoot);
|
|
266
|
+
if (!propertiesPath) {
|
|
267
|
+
checks.push({ name: 'application-config', status: 'fail', detail: 'No application.properties/yml/yaml file found' });
|
|
268
|
+
}
|
|
269
|
+
else if (propertiesPath.endsWith('.yml') || propertiesPath.endsWith('.yaml')) {
|
|
270
|
+
checks.push({ name: 'application-config', status: 'warn', detail: 'YAML config detected; automatic semantic config check requires manual review' });
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
const props = readFileSync(propertiesPath, 'utf8');
|
|
274
|
+
const apiKeyConfigSafe = /^allstak\.api-key=\$\{ALLSTAK_API_KEY(?::)?\}$/m.test(props);
|
|
275
|
+
checks.push({
|
|
276
|
+
name: 'api-key-config',
|
|
277
|
+
status: apiKeyConfigSafe ? 'pass' : 'fail',
|
|
278
|
+
detail: apiKeyConfigSafe
|
|
279
|
+
? 'allstak.api-key uses env placeholder without hardcoded secret'
|
|
280
|
+
: 'allstak.api-key must be ${ALLSTAK_API_KEY} with no hardcoded default',
|
|
281
|
+
});
|
|
282
|
+
checks.push({
|
|
283
|
+
name: 'host-config',
|
|
284
|
+
status: /^allstak\.host=\$\{ALLSTAK_HOST:[^}]+\}$/m.test(props) ? 'pass' : 'fail',
|
|
285
|
+
detail: /^allstak\.host=\$\{ALLSTAK_HOST:[^}]+\}$/m.test(props)
|
|
286
|
+
? 'allstak.host is configurable via ALLSTAK_HOST'
|
|
287
|
+
: 'allstak.host=${ALLSTAK_HOST:https://api.allstak.sa} is missing',
|
|
288
|
+
});
|
|
289
|
+
checks.push({
|
|
290
|
+
name: 'fail-open-defaults',
|
|
291
|
+
status: /^allstak\.enabled=\$\{ALLSTAK_ENABLED:true\}$/m.test(props) ? 'pass' : 'warn',
|
|
292
|
+
detail: 'Spring SDK uses async bounded transport; allstak.enabled remains env-controllable',
|
|
293
|
+
});
|
|
294
|
+
checks.push({
|
|
295
|
+
name: 'duplicate-config',
|
|
296
|
+
status: hasDuplicatePropertyKeys(props, 'allstak.') ? 'fail' : 'pass',
|
|
297
|
+
detail: hasDuplicatePropertyKeys(props, 'allstak.') ? 'Duplicate allstak.* keys found' : 'No duplicate allstak.* keys',
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
checks.push(...optionalSpringIntegrationChecks(buildText, sourceText, propertiesPath));
|
|
301
|
+
const summary = checks.some((c) => c.status === 'fail')
|
|
302
|
+
? 'broken'
|
|
303
|
+
: checks.some((c) => c.status === 'warn')
|
|
304
|
+
? 'degraded'
|
|
305
|
+
: 'ok';
|
|
306
|
+
return { integration: 'java', checks, summary };
|
|
307
|
+
}
|
|
308
|
+
function optionalSpringIntegrationChecks(buildText, sourceText, propertiesPath) {
|
|
309
|
+
const props = propertiesPath && existsSync(propertiesPath) && propertiesPath.endsWith('.properties')
|
|
310
|
+
? readFileSync(propertiesPath, 'utf8')
|
|
311
|
+
: '';
|
|
312
|
+
const captureRabbitDisabled = propertyExplicitFalse(props, 'allstak.capture-rabbit');
|
|
313
|
+
const captureAsyncDisabled = propertyExplicitFalse(props, 'allstak.capture-async');
|
|
314
|
+
const captureScheduledDisabled = propertyExplicitFalse(props, 'allstak.capture-scheduled');
|
|
315
|
+
const captureDbDisabled = propertyExplicitFalse(props, 'allstak.capture-db-queries');
|
|
316
|
+
const captureKafkaDisabled = propertyExplicitFalse(props, 'allstak.capture-kafka');
|
|
317
|
+
const captureCacheDisabled = propertyExplicitFalse(props, 'allstak.capture-cache');
|
|
318
|
+
const captureFeignDisabled = propertyExplicitFalse(props, 'allstak.capture-feign');
|
|
319
|
+
const captureSecurityDisabled = propertyExplicitFalse(props, 'allstak.capture-security');
|
|
320
|
+
const captureValidationDisabled = propertyExplicitFalse(props, 'allstak.capture-validation');
|
|
321
|
+
const captureRetryDisabled = propertyExplicitFalse(props, 'allstak.capture-retry');
|
|
322
|
+
const hasWeb = hasAny(buildText, ['spring-boot-starter-web', 'spring-webmvc']);
|
|
323
|
+
const hasWebFlux = hasAny(buildText, ['spring-boot-starter-webflux', 'spring-webflux']);
|
|
324
|
+
const hasSecurity = hasAny(buildText, ['spring-boot-starter-security', 'spring-security']);
|
|
325
|
+
const hasValidation = hasAny(buildText, ['spring-boot-starter-validation', 'jakarta.validation', 'hibernate-validator']) || sourceText.includes('@Valid');
|
|
326
|
+
const hasJpa = hasAny(buildText, ['spring-boot-starter-data-jpa', 'hibernate-core', 'spring-jdbc', 'JdbcTemplate']) || hasAny(sourceText, ['JdbcTemplate', 'EntityManager', 'JpaRepository']);
|
|
327
|
+
const hasRedis = hasAny(buildText, ['spring-boot-starter-data-redis', 'spring-data-redis', 'lettuce-core', 'jedis']);
|
|
328
|
+
const hasRabbit = hasAny(buildText, ['spring-boot-starter-amqp', 'spring-rabbit']) || hasAny(sourceText, ['@RabbitListener', 'RabbitTemplate']);
|
|
329
|
+
const hasKafka = hasAny(buildText, ['spring-kafka', 'spring-boot-starter-kafka']) || hasAny(sourceText, ['@KafkaListener', 'KafkaTemplate']);
|
|
330
|
+
const hasFeign = hasAny(buildText, ['spring-cloud-starter-openfeign', 'feign-core']) || sourceText.includes('@FeignClient');
|
|
331
|
+
const hasRetry = hasAny(buildText, ['spring-retry']) || sourceText.includes('@Retryable');
|
|
332
|
+
const hasScheduled = sourceText.includes('@Scheduled');
|
|
333
|
+
const hasAsync = sourceText.includes('@Async') || sourceText.includes('@EnableAsync');
|
|
334
|
+
const hasRestTemplate = hasWeb || sourceText.includes('RestTemplate');
|
|
335
|
+
const hasWebClient = hasWebFlux || sourceText.includes('WebClient');
|
|
336
|
+
return [
|
|
337
|
+
statusCheck('spring-web-http', hasWeb, 'Spring Web detected; servlet HTTP/request and controller exception instrumentation is available.', 'Spring Web not detected.'),
|
|
338
|
+
statusCheck('resttemplate', hasRestTemplate, 'RestTemplate detected/available; outbound HTTP spans and failure capture are instrumented.', 'RestTemplate not detected.'),
|
|
339
|
+
statusCheck('webclient', hasWebClient, 'WebClient detected/available; reactive outbound HTTP spans and failure capture are instrumented.', 'WebClient not detected.'),
|
|
340
|
+
statusCheck('jpa-jdbc', hasJpa, captureDbDisabled
|
|
341
|
+
? 'JPA/JDBC detected, but allstak.capture-db-queries is explicitly disabled.'
|
|
342
|
+
: 'JPA/JDBC detected; DataSource/JDBC query capture is instrumented.', 'JPA/JDBC not detected.', captureDbDisabled ? 'warn' : 'pass'),
|
|
343
|
+
statusCheck('scheduled-jobs', hasScheduled, captureScheduledDisabled
|
|
344
|
+
? '@Scheduled detected, but allstak.capture-scheduled is explicitly disabled.'
|
|
345
|
+
: '@Scheduled detected; scheduled job heartbeat/failure instrumentation is available.', '@Scheduled not detected.', captureScheduledDisabled ? 'warn' : 'pass'),
|
|
346
|
+
statusCheck('async-methods', hasAsync, captureAsyncDisabled
|
|
347
|
+
? '@Async detected, but allstak.capture-async is explicitly disabled.'
|
|
348
|
+
: '@Async detected; uncaught void async exceptions are instrumented.', '@Async not detected.', captureAsyncDisabled ? 'warn' : 'pass'),
|
|
349
|
+
statusCheck('rabbitmq', hasRabbit, captureRabbitDisabled
|
|
350
|
+
? 'Spring AMQP/RabbitMQ detected, but allstak.capture-rabbit is explicitly disabled.'
|
|
351
|
+
: 'Spring AMQP/RabbitMQ detected; @RabbitListener/RabbitTemplate telemetry plus redelivery/x-death DLQ metadata are instrumented.', 'Spring AMQP/RabbitMQ not detected.', captureRabbitDisabled ? 'warn' : 'pass'),
|
|
352
|
+
statusCheck('kafka', hasKafka, captureKafkaDisabled
|
|
353
|
+
? 'Spring Kafka detected, but allstak.capture-kafka is explicitly disabled.'
|
|
354
|
+
: 'Spring Kafka detected; @KafkaListener and common KafkaTemplate send overloads are instrumented. DLT topic and delivery-attempt metadata are captured when present.', 'Spring Kafka not detected.', captureKafkaDisabled ? 'warn' : 'pass'),
|
|
355
|
+
statusCheck('redis-cache', hasRedis, captureCacheDisabled
|
|
356
|
+
? 'Redis/Spring Cache detected, but allstak.capture-cache is explicitly disabled.'
|
|
357
|
+
: 'Redis/Spring Cache detected; Spring Cache, direct RedisTemplate, and common opsFor* helpers are instrumented with hashed keys.', 'Redis/Spring Cache not detected.', captureCacheDisabled ? 'warn' : 'pass'),
|
|
358
|
+
statusCheck('feign', hasFeign, captureFeignDisabled
|
|
359
|
+
? 'Feign detected, but allstak.capture-feign is explicitly disabled.'
|
|
360
|
+
: 'Feign detected; Spring Cloud OpenFeign/Feign Client header propagation and outbound request telemetry are instrumented.', 'Feign not detected.', captureFeignDisabled ? 'warn' : 'pass'),
|
|
361
|
+
statusCheck('spring-retry', hasRetry, captureRetryDisabled
|
|
362
|
+
? 'Spring Retry detected, but allstak.capture-retry is explicitly disabled.'
|
|
363
|
+
: 'Spring Retry detected; @Retryable attempt metadata and final failure state are instrumented.', 'Spring Retry not detected.', captureRetryDisabled ? 'warn' : 'pass'),
|
|
364
|
+
statusCheck('spring-security', hasSecurity, captureSecurityDisabled
|
|
365
|
+
? 'Spring Security detected, but allstak.capture-security is explicitly disabled.'
|
|
366
|
+
: 'Spring Security detected; authentication failure and access-denied semantics are captured without leaking credentials.', 'Spring Security not detected.', captureSecurityDisabled ? 'warn' : 'pass'),
|
|
367
|
+
statusCheck('validation', hasValidation, captureValidationDisabled
|
|
368
|
+
? 'Validation detected, but allstak.capture-validation is explicitly disabled.'
|
|
369
|
+
: 'Validation detected; field-name-only validation metadata is captured without rejected values.', 'Validation not detected.', captureValidationDisabled ? 'warn' : 'pass'),
|
|
370
|
+
];
|
|
371
|
+
}
|
|
372
|
+
function statusCheck(name, detected, detectedDetail, missingDetail, detectedStatus = 'pass') {
|
|
373
|
+
return {
|
|
374
|
+
name,
|
|
375
|
+
status: detected ? detectedStatus : 'skip',
|
|
376
|
+
detail: detected ? detectedDetail : missingDetail,
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
function readBuildText(build) {
|
|
380
|
+
const parts = [];
|
|
381
|
+
for (const path of [build.mavenPath, build.gradlePath]) {
|
|
382
|
+
if (path && existsSync(path))
|
|
383
|
+
parts.push(readFileSync(path, 'utf8'));
|
|
384
|
+
}
|
|
385
|
+
return parts.join('\n');
|
|
386
|
+
}
|
|
387
|
+
function readSourceText(projectRoot) {
|
|
388
|
+
const srcRoot = resolve(projectRoot, 'src/main/java');
|
|
389
|
+
if (!existsSync(srcRoot))
|
|
390
|
+
return '';
|
|
391
|
+
const chunks = [];
|
|
392
|
+
const stack = [srcRoot];
|
|
393
|
+
while (stack.length) {
|
|
394
|
+
const dir = stack.pop();
|
|
395
|
+
let entries;
|
|
396
|
+
try {
|
|
397
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
398
|
+
}
|
|
399
|
+
catch {
|
|
400
|
+
continue;
|
|
401
|
+
}
|
|
402
|
+
for (const entry of entries) {
|
|
403
|
+
const full = resolve(dir, entry.name);
|
|
404
|
+
if (entry.isDirectory()) {
|
|
405
|
+
stack.push(full);
|
|
406
|
+
}
|
|
407
|
+
else if (entry.name.endsWith('.java')) {
|
|
408
|
+
try {
|
|
409
|
+
chunks.push(readFileSync(full, 'utf8'));
|
|
410
|
+
}
|
|
411
|
+
catch { }
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
return chunks.join('\n');
|
|
416
|
+
}
|
|
417
|
+
function hasAny(src, needles) {
|
|
418
|
+
return needles.some((needle) => src.includes(needle));
|
|
419
|
+
}
|
|
420
|
+
function propertyExplicitFalse(src, key) {
|
|
421
|
+
const re = new RegExp(`^${escapeRe(key)}=(false|\\$\\{[^}:]+:false\\})$`, 'm');
|
|
422
|
+
return re.test(src);
|
|
423
|
+
}
|
|
424
|
+
function countStarterDependencies(pom) {
|
|
425
|
+
const re = new RegExp(`<artifactId>${escapeRe(ARTIFACT)}</artifactId>`, 'g');
|
|
426
|
+
return pom.match(re)?.length ?? 0;
|
|
427
|
+
}
|
|
428
|
+
function hasDuplicatePropertyKeys(src, prefix) {
|
|
429
|
+
const seen = new Set();
|
|
430
|
+
for (const line of src.split(/\r?\n/)) {
|
|
431
|
+
const trimmed = line.trim();
|
|
432
|
+
if (!trimmed.startsWith(prefix) || trimmed.startsWith('#'))
|
|
433
|
+
continue;
|
|
434
|
+
const key = trimmed.split('=')[0];
|
|
435
|
+
if (seen.has(key))
|
|
436
|
+
return true;
|
|
437
|
+
seen.add(key);
|
|
438
|
+
}
|
|
439
|
+
return false;
|
|
440
|
+
}
|
|
441
|
+
function hasUserAllStakSourceReferences(projectRoot) {
|
|
442
|
+
const srcRoot = resolve(projectRoot, 'src/main/java');
|
|
443
|
+
if (!existsSync(srcRoot))
|
|
444
|
+
return false;
|
|
445
|
+
const stack = [srcRoot];
|
|
446
|
+
while (stack.length) {
|
|
447
|
+
const dir = stack.pop();
|
|
448
|
+
let entries;
|
|
449
|
+
try {
|
|
450
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
451
|
+
}
|
|
452
|
+
catch {
|
|
453
|
+
continue;
|
|
454
|
+
}
|
|
455
|
+
for (const entry of entries) {
|
|
456
|
+
const full = resolve(dir, entry.name);
|
|
457
|
+
if (entry.isDirectory()) {
|
|
458
|
+
stack.push(full);
|
|
459
|
+
}
|
|
460
|
+
else if (entry.name.endsWith('.java')) {
|
|
461
|
+
const content = readFileSync(full, 'utf8');
|
|
462
|
+
if (content.includes('dev.allstak') || content.includes('AllStak'))
|
|
463
|
+
return true;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
return false;
|
|
468
|
+
}
|
|
469
|
+
function escapeRe(value) {
|
|
470
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
471
|
+
}
|
|
472
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/java/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAe,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,eAAe,GAAG,YAAY,CAAC;AACrC,MAAM,YAAY,GAAG,aAAa,CAAC;AACnC,MAAM,QAAQ,GAAG,6BAA6B,CAAC;AAC/C,MAAM,OAAO,GAAG,OAAO,CAAC;AACxB,MAAM,UAAU,GAAG,GAAG,eAAe,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;AAE/D,MAAM,CAAC,MAAM,eAAe,GAAgB;IAC1C,EAAE,EAAE,MAAM;IACV,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,oBAAoB;QAC3B,UAAU,EAAE,UAAU;QACtB,kBAAkB,EAAE,EAAE;QACtB,SAAS,EAAE,MAAM;QACjB,aAAa,EAAE,MAAM;QACrB,gBAAgB,EAAE,UAAU;QAC5B,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,yLAAyL;QACxM,YAAY,EAAE,CAAC,sBAAsB,EAAE,WAAW,CAAC;QACnD,uBAAuB,EAAE,CAAC,qBAAqB,CAAC;QAChD,aAAa,EAAE,EAAE;QACjB,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACtE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAC5E,EAAE,IAAI,EAAE,2CAA2C,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2BAA2B,EAAE;SAClH;QACD,wBAAwB,EAAE,EAAE;QAC5B,OAAO,EAAE,2CAA2C;KACrD;IAED,KAAK,CAAC,MAAM,CAAC,GAAG;QACd,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,4EAA4E,EAAE,CAAC;QAC7G,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAG;QACZ,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,2CAA2C,CAAC,CAAC;QAC9H,MAAM,KAAK,GAAG;YACZ,+BAA+B,KAAK,CAAC,IAAI,GAAG;YAC5C,UAAU,UAAU,aAAa;YACjC,iDAAiD,UAAU,EAAE;YAC7D,oEAAoE;YACpE,uEAAuE;SACxE,CAAC;QACF,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;QAClG,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,OAAO,KAAI,CAAC;IAElB,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,2CAA2C,CAAC,CAAC;QAClI,MAAM,0BAA0B,CAAC,cAAc,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAG;QAChB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE;QACrB,yEAAyE;QACzE,2EAA2E;QAC3E,0EAA0E;QAC1E,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACxE,MAAM,qBAAqB,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,cAAc;YAAE,MAAM,2BAA2B,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE;QAClB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAG;QACd,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;CACF,CAAC;AAEF,SAAS,WAAW,CAAC,WAAmB;IAQtC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACjE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;QACtC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YACpD,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,kBAAkB,CAAC;YAC1C,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,IAAI,GAAG,CAAC,QAAQ,CAAC,4BAA4B,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;YACtI,YAAY,GAAG,IAAI,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACjF,IAAI,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC1F,YAAY,GAAG,IAAI,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO;QACL,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,KAAK,IAAI;QAC1D,YAAY;QACZ,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACzE,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;QACnD,UAAU;QACV,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,EAAe;IAC3D,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,IAAI,GAAG,GAAG,CAAC;IACf,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAY,QAAQ,CAAC,YAAY,CAAC,oCAAoC,QAAQ,CAAC,QAAQ,CAAC,kDAAkD,EAAE,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;IACpM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAc,EAAE,EAAE,CAAC,GAAG,eAAe,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,MAAM,iBAAiB,CAAC,CAAC;IAC5I,CAAC;IACD,IAAI,IAAI,KAAK,GAAG;QAAE,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAAe,EAAE,EAAe;IACnE,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,mFAAmF,QAAQ,CAAC,eAAe,CAAC,oCAAoC,QAAQ,CAAC,QAAQ,CAAC,oCAAoC,QAAQ,CAAC,OAAO,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;IAC3R,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACpC,IAAI,IAAI,KAAK,GAAG;QAAE,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,YAAY,eAAe,uCAAuC,QAAQ,uCAAuC,OAAO,YAAY,CAAC;AAC9I,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,OAAO,KAAK,MAAM,mCAAmC,MAAM,iBAAiB,MAAM,gBAAgB,eAAe,eAAe,MAAM,mBAAmB,QAAQ,kBAAkB,MAAM,gBAAgB,OAAO,eAAe,MAAM,eAAe,CAAC;AACvP,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,OAAO,GAAG,CAAC,QAAQ,CAAC,YAAY,eAAe,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,QAAQ,eAAe,CAAC,CAAC;AACvH,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,MAAM,UAAU,GAAG;QACjB,2CAA2C;QAC3C,oCAAoC;QACpC,qCAAqC;KACtC,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,QAAgB,EAAE,EAAe,EAAE,GAAkB;IAC7F,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5D,8EAA8E;QAC9E,gDAAgD;QAChD,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,IAAI,IAAI,GAAG,OAAO,CAAC;IACnB,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,IAAI,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,KAAK,iBAAiB,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YACrF,SAAS;QACX,CAAC;QACD,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC9C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,6BAA6B,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,IAAI,KAAK,OAAO;QAAE,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AAC3F,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,QAAgB,EAAE,EAAe;IAC1E,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,6EAA6E;IAC7E,wDAAwD;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,kEAAkE,EAAE,EAAE,CAAC,CAAC;IACrG,IAAI,IAAI,KAAK,OAAO;QAAE,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CAAC,GAAkB;IACxC,OAAO;QACL,iBAAiB,EAAE,yBAAyB;QAC5C,iBAAiB,EAAE,oBAAoB;QACvC,cAAc,EAAE,mBAAmB,GAAG,CAAC,IAAI,IAAI,wBAAwB,GAAG;QAC1E,qBAAqB,EAAE,6DAA6D;QACpF,sBAAsB,EAAE,gEAAgE;QACxF,iBAAiB,EAAE,oCAAoC;QACvD,4BAA4B,EAAE,oCAAoC;QAClE,+BAA+B,EAAE,uCAAuC;QACxE,4BAA4B,EAAE,oCAAoC;QAClE,sBAAsB,EAAE,8BAA8B;QACtD,2BAA2B,EAAE,mCAAmC;QAChE,uBAAuB,EAAE,+BAA+B;QACxD,wBAAwB,EAAE,gCAAgC;QAC1D,uBAAuB,EAAE,+BAA+B;QACxD,uBAAuB,EAAE,+BAA+B;QACxD,uBAAuB,EAAE,+BAA+B;QACxD,4BAA4B,EAAE,oCAAoC;QAClE,0BAA0B,EAAE,kCAAkC;QAC9D,uBAAuB,EAAE,+BAA+B;QACxD,eAAe,EAAE,wBAAwB;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,GAAW,EAAE,GAAW,EAAE,KAAa;IAC7D,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IAC/B,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpD,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAClE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9C,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpE,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,OAAO,GAAG,GAAG,GAAG,MAAM,8BAA8B,IAAI,IAAI,CAAC;AAC/D,CAAC;AAED,SAAS,cAAc,CAAC,GAAW,EAAE,GAAW;IAC9C,OAAO,IAAI,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,UAAU,CAAC,GAAkB;IACpC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC5C,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,+BAA+B;KACrE,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QACnF,MAAM,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,oEAAoE,CAAC,CAAC,CAAC,4BAA4B;KAC1L,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxG,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,UAAU,KAAK,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QACjG,MAAM,EAAE,UAAU,KAAK,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC;YACnD,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,UAAU,GAAG,CAAC;gBACd,CAAC,CAAC,aAAa,QAAQ,qBAAqB;gBAC5C,CAAC,CAAC,GAAG,UAAU,aAAa;KACjC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QACzF,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;YAChC,CAAC,CAAC,UAAU,YAAY,qBAAqB;YAC7C,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC;gBACzB,CAAC,CAAC,wCAAwC;gBAC1C,CAAC,CAAC,gCAAgC;KACvC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,+CAA+C,EAAE,CAAC,CAAC;IACvH,CAAC;SAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/E,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,8EAA8E,EAAE,CAAC,CAAC;IACtJ,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,gBAAgB,GAAG,iDAAiD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvF,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YAC1C,MAAM,EAAE,gBAAgB;gBACtB,CAAC,CAAC,+DAA+D;gBACjE,CAAC,CAAC,sEAAsE;SAC3E,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,2CAA2C,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YACjF,MAAM,EAAE,2CAA2C,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC7D,CAAC,CAAC,+CAA+C;gBACjD,CAAC,CAAC,gEAAgE;SACrE,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,gDAAgD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YACtF,MAAM,EAAE,mFAAmF;SAC5F,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YACrE,MAAM,EAAE,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,6BAA6B;SACvH,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAG,+BAA+B,CAAC,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;IAEvF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;QACrD,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;YACvC,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,IAAI,CAAC;IACX,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,+BAA+B,CAAC,SAAiB,EAAE,UAAkB,EAAE,cAA6B;IAC3G,MAAM,KAAK,GAAG,cAAc,IAAI,UAAU,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC;QAClG,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC;QACtC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;IACrF,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IACnF,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;IAC3F,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;IACrF,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IACnF,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IACnF,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IACnF,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;IACzF,MAAM,yBAAyB,GAAG,qBAAqB,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;IAC7F,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IAEnF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC,CAAC;IAC/E,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,6BAA6B,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACxF,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,8BAA8B,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC3F,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,gCAAgC,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1J,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,8BAA8B,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;IAC9L,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,gCAAgC,EAAE,mBAAmB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;IACrH,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,0BAA0B,EAAE,eAAe,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAChJ,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC;IAC7I,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,gCAAgC,EAAE,YAAY,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC5H,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC1F,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACtF,MAAM,eAAe,GAAG,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEpE,OAAO;QACL,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,kGAAkG,EAAE,0BAA0B,CAAC;QACtK,WAAW,CAAC,cAAc,EAAE,eAAe,EAAE,4FAA4F,EAAE,4BAA4B,CAAC;QACxK,WAAW,CAAC,WAAW,EAAE,YAAY,EAAE,kGAAkG,EAAE,yBAAyB,CAAC;QACrK,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB;YAC/C,CAAC,CAAC,2EAA2E;YAC7E,CAAC,CAAC,mEAAmE,EAAE,wBAAwB,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACvI,WAAW,CAAC,gBAAgB,EAAE,YAAY,EAAE,wBAAwB;YAClE,CAAC,CAAC,4EAA4E;YAC9E,CAAC,CAAC,oFAAoF,EAAE,0BAA0B,EAAE,wBAAwB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACjK,WAAW,CAAC,eAAe,EAAE,QAAQ,EAAE,oBAAoB;YACzD,CAAC,CAAC,oEAAoE;YACtE,CAAC,CAAC,mEAAmE,EAAE,sBAAsB,EAAE,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACxI,WAAW,CAAC,UAAU,EAAE,SAAS,EAAE,qBAAqB;YACtD,CAAC,CAAC,mFAAmF;YACrF,CAAC,CAAC,gIAAgI,EAAE,oCAAoC,EAAE,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACpN,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,oBAAoB;YACjD,CAAC,CAAC,0EAA0E;YAC5E,CAAC,CAAC,oKAAoK,EAAE,4BAA4B,EAAE,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/O,WAAW,CAAC,aAAa,EAAE,QAAQ,EAAE,oBAAoB;YACvD,CAAC,CAAC,gFAAgF;YAClF,CAAC,CAAC,gIAAgI,EAAE,kCAAkC,EAAE,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACjN,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,oBAAoB;YACjD,CAAC,CAAC,mEAAmE;YACrE,CAAC,CAAC,yHAAyH,EAAE,qBAAqB,EAAE,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7L,WAAW,CAAC,cAAc,EAAE,QAAQ,EAAE,oBAAoB;YACxD,CAAC,CAAC,0EAA0E;YAC5E,CAAC,CAAC,8FAA8F,EAAE,4BAA4B,EAAE,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACzK,WAAW,CAAC,iBAAiB,EAAE,WAAW,EAAE,uBAAuB;YACjE,CAAC,CAAC,gFAAgF;YAClF,CAAC,CAAC,wHAAwH,EAAE,+BAA+B,EAAE,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACzM,WAAW,CAAC,YAAY,EAAE,aAAa,EAAE,yBAAyB;YAChE,CAAC,CAAC,6EAA6E;YAC/E,CAAC,CAAC,+FAA+F,EAAE,0BAA0B,EAAE,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;KAC9K,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,QAAiB,EAAE,cAAsB,EAAE,aAAqB,EAAE,iBAAwC,MAAM;IACjJ,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM;QAC1C,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa;KAClD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAqC;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,IAAI,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,WAAmB;IACzC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QACzB,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,MAAM,CAAC,GAAW,EAAE,OAAiB;IAC5C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAW,EAAE,GAAW;IACrD,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;IAC/E,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAW;IAC3C,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,eAAe,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IAC7E,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAW,EAAE,MAAc;IAC3D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACrE,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACnC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,8BAA8B,CAAC,WAAmB;IACzD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QACzB,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC3C,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAAE,OAAO,IAAI,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"java.d.ts","sourceRoot":"","sources":["../../src/integrations/java.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"java.d.ts","sourceRoot":"","sources":["../../src/integrations/java.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,mCAU1B,CAAC"}
|
|
@@ -3,7 +3,10 @@ export const javaIntegration = simpleScaffold({
|
|
|
3
3
|
id: 'java',
|
|
4
4
|
title: 'Java / Spring Boot',
|
|
5
5
|
sdkPackage: 'sa.allstak:allstak-spring-boot-starter',
|
|
6
|
-
stability: '
|
|
7
|
-
|
|
6
|
+
stability: 'beta',
|
|
7
|
+
runtimeStatus: 'beta',
|
|
8
|
+
wizardAutomation: 'manual',
|
|
9
|
+
public: true,
|
|
10
|
+
reason: 'Runtime SDK is Beta (certification score 34). Wizard automation is manual/light setup only: env vars are written, but pom.xml / build.gradle and Spring configuration are not edited automatically in v0.1.',
|
|
8
11
|
});
|
|
9
12
|
//# sourceMappingURL=java.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"java.js","sourceRoot":"","sources":["../../src/integrations/java.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC;IAC5C,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,oBAAoB;IAC3B,UAAU,EAAE,wCAAwC;IACpD,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"java.js","sourceRoot":"","sources":["../../src/integrations/java.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC;IAC5C,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,oBAAoB;IAC3B,UAAU,EAAE,wCAAwC;IACpD,SAAS,EAAE,MAAM;IACjB,aAAa,EAAE,MAAM;IACrB,gBAAgB,EAAE,QAAQ;IAC1B,MAAM,EAAE,IAAI;IACZ,MAAM,EACJ,6MAA6M;CAChN,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/integrations/js/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,eAAO,MAAM,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/integrations/js/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,eAAO,MAAM,UAAU,EAAE,mBAoBxB,CAAC"}
|
|
@@ -4,6 +4,9 @@ export const jsManifest = {
|
|
|
4
4
|
sdkPackage: '@allstak/js',
|
|
5
5
|
additionalPackages: [],
|
|
6
6
|
stability: 'stable',
|
|
7
|
+
runtimeStatus: 'stable',
|
|
8
|
+
wizardAutomation: 'full',
|
|
9
|
+
public: true,
|
|
7
10
|
stabilityNote: null,
|
|
8
11
|
capabilities: ['install-package', 'write-env', 'patch-entry'],
|
|
9
12
|
unsupportedCapabilities: ['wire-source-maps', 'wire-native-ios', 'wire-native-android'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/integrations/js/manifest.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAwB;IAC7C,EAAE,EAAE,IAAI;IACR,KAAK,EAAE,8BAA8B;IACrC,UAAU,EAAE,aAAa;IACzB,kBAAkB,EAAE,EAAE;IACtB,SAAS,EAAE,QAAQ;IACnB,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,CAAC,iBAAiB,EAAE,WAAW,EAAE,aAAa,CAAC;IAC7D,uBAAuB,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,qBAAqB,CAAC;IACvF,aAAa,EAAE,EAAE;IACjB,KAAK,EAAE;QACL,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;QACjC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE;QAC1C,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE;KAC3C;IACD,wBAAwB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC;IACtE,OAAO,EAAE,gEAAgE;CAC1E,CAAC"}
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/integrations/js/manifest.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAwB;IAC7C,EAAE,EAAE,IAAI;IACR,KAAK,EAAE,8BAA8B;IACrC,UAAU,EAAE,aAAa;IACzB,kBAAkB,EAAE,EAAE;IACtB,SAAS,EAAE,QAAQ;IACnB,aAAa,EAAE,QAAQ;IACvB,gBAAgB,EAAE,MAAM;IACxB,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,CAAC,iBAAiB,EAAE,WAAW,EAAE,aAAa,CAAC;IAC7D,uBAAuB,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,qBAAqB,CAAC;IACvF,aAAa,EAAE,EAAE;IACjB,KAAK,EAAE;QACL,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;QACjC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE;QAC1C,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE;KAC3C;IACD,wBAAwB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC;IACtE,OAAO,EAAE,gEAAgE;CAC1E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../../src/integrations/nestjs/detect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAIjF,wBAAsB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAMlF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { evaluateCompatibility } from '../../compat/engine.js';
|
|
2
|
+
import { nestjsManifest } from './manifest.js';
|
|
3
|
+
export async function detectNestjs(ctx) {
|
|
4
|
+
const pj = ctx.detected.packageJson;
|
|
5
|
+
if (!pj)
|
|
6
|
+
return { ok: false, reason: 'no package.json found' };
|
|
7
|
+
const verdict = evaluateCompatibility(nestjsManifest, pj);
|
|
8
|
+
if (!verdict.ok)
|
|
9
|
+
return { ok: false, reason: verdict.reason };
|
|
10
|
+
return { ok: true };
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../../src/integrations/nestjs/detect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAkB;IACnD,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;IACpC,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAC/D,MAAM,OAAO,GAAG,qBAAqB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAC9D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/integrations/nestjs/doctor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAe,MAAM,yBAAyB,CAAC;AAKxF,wBAAsB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA2E5E"}
|