@azure-tools/typespec-java 0.26.1 → 0.27.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.
@@ -1,17 +1,16 @@
1
1
  import { createTypeSpecLibrary, getNormalizedAbsolutePath, resolvePath, } from "@typespec/compiler";
2
- import { spawn } from "child_process";
3
2
  import { promises } from "fs";
4
3
  import { dump } from "js-yaml";
5
4
  import { dirname } from "path";
6
5
  import { fileURLToPath } from "url";
7
6
  import { CodeModelBuilder } from "./code-model-builder.js";
8
- import { logError } from "./utils.js";
7
+ import { logError, spawnAsync } from "./utils.js";
8
+ import { JDK_NOT_FOUND_MESSAGE, validateDependencies } from "./validate.js";
9
9
  const EmitterOptionsSchema = {
10
10
  type: "object",
11
11
  additionalProperties: true,
12
12
  properties: {
13
13
  namespace: { type: "string", nullable: true },
14
- "output-dir": { type: "string", nullable: true },
15
14
  "package-dir": { type: "string", nullable: true },
16
15
  flavor: { type: "string", nullable: true },
17
16
  // service
@@ -49,108 +48,65 @@ export const $lib = createTypeSpecLibrary({
49
48
  },
50
49
  });
51
50
  export async function $onEmit(context) {
52
- var _a, _b, _c, _d, _e, _f, _g, _h;
51
+ var _a, _b, _c, _d, _e, _f;
53
52
  const program = context.program;
54
- const options = context.options;
55
- if (!options["flavor"]) {
56
- if ((_a = options["package-dir"]) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase().startsWith("azure")) {
57
- // Azure package
58
- options["flavor"] = "azure";
59
- }
60
- }
61
- const builder = new CodeModelBuilder(program, context);
62
- const codeModel = await builder.build();
63
- if (!program.compilerOptions.noEmit && !program.hasError()) {
64
- const __dirname = dirname(fileURLToPath(import.meta.url));
65
- const moduleRoot = resolvePath(__dirname, "..", "..");
66
- const outputPath = (_b = options["output-dir"]) !== null && _b !== void 0 ? _b : context.emitterOutputDir;
67
- options["output-dir"] = getNormalizedAbsolutePath(outputPath, undefined);
68
- options["arm"] = codeModel.arm;
69
- const codeModelFileName = resolvePath(outputPath, "./code-model.yaml");
70
- await promises.mkdir(outputPath, { recursive: true }).catch((err) => {
71
- if (err.code !== "EISDIR" && err.code !== "EEXIST") {
72
- logError(program, `Failed to create output directory: ${outputPath}`);
73
- return;
53
+ await validateDependencies(program, true);
54
+ if (!program.hasError()) {
55
+ const options = context.options;
56
+ if (!options["flavor"]) {
57
+ if ($lib.name === "@azure-tools/typespec-java") {
58
+ options["flavor"] = "azure";
74
59
  }
75
- });
76
- await program.host.writeFile(codeModelFileName, dump(codeModel));
77
- program.trace("http-client-java", `Code model file written to ${codeModelFileName}`);
78
- const emitterOptions = JSON.stringify(options);
79
- program.trace("http-client-java", `Emitter options ${emitterOptions}`);
80
- const jarFileName = resolvePath(moduleRoot, "generator/http-client-generator/target", "emitter.jar");
81
- program.trace("http-client-java", `Exec JAR ${jarFileName}`);
82
- const javaArgs = [];
83
- javaArgs.push(`-DemitterOptions=${emitterOptions}`);
84
- if ((_c = options["dev-options"]) === null || _c === void 0 ? void 0 : _c.debug) {
85
- javaArgs.push("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005");
86
- }
87
- if ((_d = options["dev-options"]) === null || _d === void 0 ? void 0 : _d.loglevel) {
88
- javaArgs.push("-Dorg.slf4j.simpleLogger.defaultLogLevel=" + ((_e = options["dev-options"]) === null || _e === void 0 ? void 0 : _e.loglevel));
89
- }
90
- if ((_f = options["dev-options"]) === null || _f === void 0 ? void 0 : _f["java-temp-dir"]) {
91
- javaArgs.push("-Dcodegen.java.temp.directory=" + ((_g = options["dev-options"]) === null || _g === void 0 ? void 0 : _g["java-temp-dir"]));
92
60
  }
93
- javaArgs.push("-jar");
94
- javaArgs.push(jarFileName);
95
- javaArgs.push(codeModelFileName);
96
- try {
97
- await new Promise((resolve, reject) => {
98
- const childProcess = spawn("java", javaArgs, { stdio: "inherit" });
99
- let error = undefined;
100
- // std
101
- const stdout = [];
102
- const stderr = [];
103
- if (childProcess.stdout) {
104
- childProcess.stdout.on("data", (data) => {
105
- stdout.push(data.toString());
106
- });
61
+ const builder = new CodeModelBuilder(program, context);
62
+ const codeModel = await builder.build();
63
+ if (!program.hasError() && !program.compilerOptions.noEmit) {
64
+ const __dirname = dirname(fileURLToPath(import.meta.url));
65
+ const moduleRoot = resolvePath(__dirname, "..", "..");
66
+ const outputPath = context.emitterOutputDir;
67
+ options["output-dir"] = getNormalizedAbsolutePath(outputPath, undefined);
68
+ options.arm = codeModel.arm;
69
+ const codeModelFileName = resolvePath(outputPath, "./code-model.yaml");
70
+ await promises.mkdir(outputPath, { recursive: true }).catch((err) => {
71
+ if (err.code !== "EISDIR" && err.code !== "EEXIST") {
72
+ logError(program, `Failed to create output directory: ${outputPath}`);
73
+ return;
107
74
  }
108
- if (childProcess.stderr) {
109
- childProcess.stderr.on("data", (data) => {
110
- stderr.push(data.toString());
111
- });
112
- }
113
- // failed to spawn the process
114
- childProcess.on("error", (e) => {
115
- error = e;
116
- });
117
- // process exits with error
118
- childProcess.on("exit", (code, signal) => {
119
- if (code !== 0) {
120
- if (code) {
121
- error = new Error(`JAR ended with code '${code}'.`);
122
- }
123
- else {
124
- error = new Error(`JAR terminated by signal '${signal}'.`);
125
- }
126
- }
127
- });
128
- // close and complete Promise
129
- childProcess.on("close", () => {
130
- if (error) {
131
- reject(error);
132
- }
133
- else {
134
- resolve({
135
- stdout: stdout.join(""),
136
- stderr: stderr.join(""),
137
- });
138
- }
139
- });
140
75
  });
141
- // as stdio: "inherit", std is not captured by spawn
142
- // program.trace("http-client-java", output.stdout ? output.stdout : output.stderr);
143
- }
144
- catch (error) {
145
- if (error && "code" in error && error["code"] === "ENOENT") {
146
- logError(program, "'java' is not on PATH. Please install JDK 11 or above.");
76
+ await program.host.writeFile(codeModelFileName, dump(codeModel));
77
+ program.trace("http-client-java", `Code model file written to ${codeModelFileName}`);
78
+ const emitterOptions = JSON.stringify(options);
79
+ program.trace("http-client-java", `Emitter options ${emitterOptions}`);
80
+ const jarFileName = resolvePath(moduleRoot, "generator/http-client-generator/target", "emitter.jar");
81
+ program.trace("http-client-java", `Exec JAR ${jarFileName}`);
82
+ const javaArgs = [];
83
+ javaArgs.push(`-DemitterOptions=${emitterOptions}`);
84
+ if ((_a = options["dev-options"]) === null || _a === void 0 ? void 0 : _a.debug) {
85
+ javaArgs.push("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005");
147
86
  }
148
- else {
149
- logError(program, error.message);
87
+ if ((_b = options["dev-options"]) === null || _b === void 0 ? void 0 : _b.loglevel) {
88
+ javaArgs.push("-Dorg.slf4j.simpleLogger.defaultLogLevel=" + ((_c = options["dev-options"]) === null || _c === void 0 ? void 0 : _c.loglevel));
89
+ }
90
+ if ((_d = options["dev-options"]) === null || _d === void 0 ? void 0 : _d["java-temp-dir"]) {
91
+ javaArgs.push("-Dcodegen.java.temp.directory=" + ((_e = options["dev-options"]) === null || _e === void 0 ? void 0 : _e["java-temp-dir"]));
92
+ }
93
+ javaArgs.push("-jar");
94
+ javaArgs.push(jarFileName);
95
+ javaArgs.push(codeModelFileName);
96
+ try {
97
+ await spawnAsync("java", javaArgs, { stdio: "inherit" });
98
+ }
99
+ catch (error) {
100
+ if (error && "code" in error && error["code"] === "ENOENT") {
101
+ logError(program, JDK_NOT_FOUND_MESSAGE);
102
+ }
103
+ else {
104
+ logError(program, error.message);
105
+ }
106
+ }
107
+ if (!((_f = options["dev-options"]) === null || _f === void 0 ? void 0 : _f["generate-code-model"])) {
108
+ await program.host.rm(codeModelFileName);
150
109
  }
151
- }
152
- if (!((_h = options["dev-options"]) === null || _h === void 0 ? void 0 : _h["generate-code-model"])) {
153
- await program.host.rm(codeModelFileName);
154
110
  }
155
111
  }
156
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Program, Type } from "@typespec/compiler";
2
+ import { SpawnOptions } from "child_process";
2
3
  export declare function logError(program: Program, msg: string): void;
3
4
  export declare function logWarning(program: Program, msg: string): void;
4
5
  export declare function trace(program: Program, msg: string): void;
@@ -6,4 +7,9 @@ export declare function pascalCase(name: string): string;
6
7
  export declare function getNamespace(type: Type | undefined): string | undefined;
7
8
  export declare function stringArrayContainsIgnoreCase(stringList: string[], str: string): boolean;
8
9
  export declare function removeClientSuffix(clientName: string): string;
10
+ export type SpawnReturns = {
11
+ stdout: string;
12
+ stderr: string;
13
+ };
14
+ export declare function spawnAsync(command: string, args: readonly string[], options: SpawnOptions): Promise<SpawnReturns>;
9
15
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE7D,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,QAQrD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,QAQvD;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,QAElD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAmBvE;AAED,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAIxF;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG7D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,QAQrD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,QAQvD;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,QAElD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAmBvE;AAED,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAIxF;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,YAAY,CAAC,CAgDvB"}
package/dist/src/utils.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { NoTarget } from "@typespec/compiler";
2
+ import { spawn } from "child_process";
2
3
  export function logError(program, msg) {
3
4
  trace(program, msg);
4
5
  program.reportDiagnostic({
@@ -56,4 +57,50 @@ export function removeClientSuffix(clientName) {
56
57
  const clientSuffix = "Client";
57
58
  return clientName.endsWith(clientSuffix) ? clientName.slice(0, -clientSuffix.length) : clientName;
58
59
  }
60
+ export async function spawnAsync(command, args, options) {
61
+ return new Promise((resolve, reject) => {
62
+ const childProcess = spawn(command, args, options);
63
+ let error = undefined;
64
+ // std
65
+ const stdout = [];
66
+ const stderr = [];
67
+ if (childProcess.stdout) {
68
+ childProcess.stdout.on("data", (data) => {
69
+ stdout.push(data.toString());
70
+ });
71
+ }
72
+ if (childProcess.stderr) {
73
+ childProcess.stderr.on("data", (data) => {
74
+ stderr.push(data.toString());
75
+ });
76
+ }
77
+ // failed to spawn the process
78
+ childProcess.on("error", (e) => {
79
+ error = e;
80
+ });
81
+ // process exits with error
82
+ childProcess.on("exit", (code, signal) => {
83
+ if (code !== 0) {
84
+ if (code) {
85
+ error = new Error(`${command} ended with code '${code}'.`);
86
+ }
87
+ else {
88
+ error = new Error(`${command} terminated by signal '${signal}'.`);
89
+ }
90
+ }
91
+ });
92
+ // close and complete Promise
93
+ childProcess.on("close", () => {
94
+ if (error) {
95
+ reject(error);
96
+ }
97
+ else {
98
+ resolve({
99
+ stdout: stdout.join(""),
100
+ stderr: stderr.join(""),
101
+ });
102
+ }
103
+ });
104
+ });
105
+ }
59
106
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAE7D,MAAM,UAAU,QAAQ,CAAC,OAAgB,EAAE,GAAW;IACpD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpB,OAAO,CAAC,gBAAgB,CAAC;QACvB,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,GAAW;IACtD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpB,OAAO,CAAC,gBAAgB,CAAC;QACvB,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAgB,EAAE,GAAW;IACjD,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,IACE,IAAI;QACJ,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW;YACxB,IAAI,CAAC,IAAI,KAAK,OAAO;YACrB,IAAI,CAAC,IAAI,KAAK,MAAM;YACpB,IAAI,CAAC,IAAI,KAAK,OAAO;YACrB,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,EAC5B,CAAC;QACD,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,IAAI,YAAY,GAAuB,SAAS,CAAC;QACjD,OAAO,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,YAAY,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5E,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC;QACxC,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,UAAoB,EAAE,GAAW;IAC7E,OAAO,UAAU,IAAI,GAAG;QACtB,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3E,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,YAAY,GAAG,QAAQ,CAAC;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACpG,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Program } from "@typespec/compiler";
2
+ export declare const JDK_NOT_FOUND_MESSAGE = "Java Development Kit (JDK) is not found in PATH. Please install JDK 17 or above. Microsoft Build of OpenJDK can be downloaded from https://learn.microsoft.com/java/openjdk/download";
3
+ export declare function validateDependencies(program: Program | undefined, logDiagnostic?: boolean): Promise<void>;
4
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,eAAO,MAAM,qBAAqB,yLACsJ,CAAC;AAEzL,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,aAAa,GAAE,OAAe,iBA+C/B"}
@@ -0,0 +1,67 @@
1
+ import { logError, spawnAsync } from "./utils.js";
2
+ export const JDK_NOT_FOUND_MESSAGE = "Java Development Kit (JDK) is not found in PATH. Please install JDK 17 or above. Microsoft Build of OpenJDK can be downloaded from https://learn.microsoft.com/java/openjdk/download";
3
+ export async function validateDependencies(program, logDiagnostic = false) {
4
+ var _a;
5
+ // Check JDK and version
6
+ try {
7
+ const result = await spawnAsync("javac", ["-version"], { stdio: "pipe" });
8
+ const javaVersion = (_a = findJavaVersion(result.stdout)) !== null && _a !== void 0 ? _a : findJavaVersion(result.stderr);
9
+ if (javaVersion) {
10
+ if (javaVersion < 11) {
11
+ // the message is JDK 17, because clientcore depends on JDK 17
12
+ // emitter only require JDK 11
13
+ const message = `Java Development Kit (JDK) in PATH is version ${javaVersion}. Please install JDK 17 or above. Microsoft Build of OpenJDK can be downloaded from https://learn.microsoft.com/java/openjdk/download`;
14
+ // // eslint-disable-next-line no-console
15
+ // console.log("[ERROR] " + message);
16
+ if (program && logDiagnostic) {
17
+ logError(program, message);
18
+ }
19
+ }
20
+ }
21
+ }
22
+ catch (error) {
23
+ let message = error.message;
24
+ if (error && "code" in error && error["code"] === "ENOENT") {
25
+ message = JDK_NOT_FOUND_MESSAGE;
26
+ }
27
+ // // eslint-disable-next-line no-console
28
+ // console.log("[ERROR] " + message);
29
+ if (program && logDiagnostic) {
30
+ logError(program, message);
31
+ }
32
+ }
33
+ // Check Maven
34
+ // nodejs does not allow spawn of .cmd on win32
35
+ const shell = process.platform === "win32";
36
+ try {
37
+ await spawnAsync("mvn", ["-v"], { stdio: "pipe", shell: shell });
38
+ }
39
+ catch (error) {
40
+ let message = error.message;
41
+ if (shell || (error && "code" in error && error["code"] === "ENOENT")) {
42
+ message =
43
+ "Apache Maven is not found in PATH. Apache Maven can be downloaded from https://maven.apache.org/download.cgi";
44
+ }
45
+ // // eslint-disable-next-line no-console
46
+ // console.log("[ERROR] " + message);
47
+ if (program && logDiagnostic) {
48
+ logError(program, message);
49
+ }
50
+ }
51
+ }
52
+ function findJavaVersion(output) {
53
+ const regex = /javac (\d+)\.(\d+)\..*/;
54
+ const matches = output.match(regex);
55
+ if (matches && matches.length > 2) {
56
+ if (matches[1] === "1") {
57
+ // "javac 1.8.0_422" -> 8
58
+ return +matches[2];
59
+ }
60
+ else {
61
+ // "javac 21.0.3" -> 21
62
+ return +matches[1];
63
+ }
64
+ }
65
+ return undefined;
66
+ }
67
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,CAAC,MAAM,qBAAqB,GAChC,sLAAsL,CAAC;AAEzL,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAA4B,EAC5B,gBAAyB,KAAK;;IAE9B,wBAAwB;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,MAAA,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,mCAAI,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrF,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC;gBACrB,8DAA8D;gBAC9D,8BAA8B;gBAC9B,MAAM,OAAO,GAAG,iDAAiD,WAAW,uIAAuI,CAAC;gBACpN,yCAAyC;gBACzC,qCAAqC;gBACrC,IAAI,OAAO,IAAI,aAAa,EAAE,CAAC;oBAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3D,OAAO,GAAG,qBAAqB,CAAC;QAClC,CAAC;QACD,yCAAyC;QACzC,qCAAqC;QACrC,IAAI,OAAO,IAAI,aAAa,EAAE,CAAC;YAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,cAAc;IACd,+CAA+C;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,IAAI,KAAK,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACtE,OAAO;gBACL,8GAA8G,CAAC;QACnH,CAAC;QACD,yCAAyC;QACzC,qCAAqC;QACrC,IAAI,OAAO,IAAI,aAAa,EAAE,CAAC;YAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,KAAK,GAAG,wBAAwB,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACvB,yBAAyB;YACzB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,uBAAuB;YACvB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}