@accelbyte/codegen 1.0.5 → 2.0.0-beta.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,7 +1,7 @@
|
|
|
1
1
|
import yargs from 'yargs';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import * as fs from 'fs';
|
|
4
|
-
import fs__default, {
|
|
4
|
+
import fs__default, { writeFileSync, readFileSync } from 'fs';
|
|
5
5
|
import * as path from 'path';
|
|
6
6
|
import path__default from 'path';
|
|
7
7
|
import SwaggerParser from '@apidevtools/swagger-parser';
|
|
@@ -123,6 +123,50 @@ export function ${className}(sdk: AccelbyteSDK, args?: ApiArgs) {
|
|
|
123
123
|
`;
|
|
124
124
|
};
|
|
125
125
|
|
|
126
|
+
class VersionHelpers {
|
|
127
|
+
static getNextVersion = ({
|
|
128
|
+
codegenVersion,
|
|
129
|
+
serviceVersion,
|
|
130
|
+
predefinedMajorVersion,
|
|
131
|
+
predefinedMinorVersion,
|
|
132
|
+
sdkVersion,
|
|
133
|
+
nextPrereleaseId
|
|
134
|
+
}) => {
|
|
135
|
+
const codegenSemvers = semver.parse(codegenVersion);
|
|
136
|
+
const serviceSemvers = semver.parse(serviceVersion);
|
|
137
|
+
const sdkSemvers = semver.parse(sdkVersion);
|
|
138
|
+
if (codegenSemvers === null) {
|
|
139
|
+
throw new Error(`Invalid codegen version: ${codegenVersion}`);
|
|
140
|
+
}
|
|
141
|
+
if (serviceSemvers === null) {
|
|
142
|
+
throw new Error(`Invalid service version: ${serviceVersion}`);
|
|
143
|
+
}
|
|
144
|
+
if (sdkSemvers === null) {
|
|
145
|
+
throw new Error(`Invalid sdk version: ${sdkVersion}`);
|
|
146
|
+
}
|
|
147
|
+
const nextMajor = codegenSemvers.minor + predefinedMajorVersion;
|
|
148
|
+
const nextMinor = codegenSemvers.minor + predefinedMinorVersion;
|
|
149
|
+
const nextPatch = codegenSemvers.patch + serviceSemvers.patch;
|
|
150
|
+
const { major: currentMajor, minor: currentMinor, patch: currentPatch } = sdkSemvers;
|
|
151
|
+
let nextVersion = [
|
|
152
|
+
codegenSemvers.major + predefinedMajorVersion,
|
|
153
|
+
nextMinor,
|
|
154
|
+
nextPatch
|
|
155
|
+
].join(".");
|
|
156
|
+
if (nextPrereleaseId) {
|
|
157
|
+
if (nextMinor !== currentMinor || nextPatch !== currentPatch || nextMajor !== currentMajor) {
|
|
158
|
+
nextVersion += `-${nextPrereleaseId}.0`;
|
|
159
|
+
} else {
|
|
160
|
+
nextVersion += `-${sdkSemvers.prerelease.join(".")}`;
|
|
161
|
+
nextVersion = semver.inc(nextVersion, "prerelease", void 0, nextPrereleaseId);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return nextVersion;
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const codegenPackageJsonPath = path__default.join(__dirname, "../package.json");
|
|
169
|
+
const codegenPackageJSON = JSON.parse(fs__default.readFileSync(codegenPackageJsonPath, "utf-8"));
|
|
126
170
|
const UNDEFINED_SWAGGER_SEMVER = "0.0.0";
|
|
127
171
|
const REMOVED_KEYWORDS = [
|
|
128
172
|
"/admin/",
|
|
@@ -426,42 +470,22 @@ class ParserUtils {
|
|
|
426
470
|
ParserUtils.mkdirIfNotExist(distDir);
|
|
427
471
|
fs__default.writeFileSync(path__default.join(distDir, `all-${isAdminWebSdk ? "admin" : "public"}-imports.ts`), ParserUtils.prependCopyrightHeader(buffer));
|
|
428
472
|
}
|
|
429
|
-
static syncChangelog(packageVersion) {
|
|
430
|
-
const currDir = process.cwd();
|
|
431
|
-
const pathToChangelog = path__default.join(currDir, "./CHANGELOG.md");
|
|
432
|
-
let fileContent = readFileSync(pathToChangelog, "utf-8");
|
|
433
|
-
const date = new Date().toISOString().slice(0, 10);
|
|
434
|
-
fileContent = "### " + packageVersion + " - " + date + `
|
|
435
|
-
|
|
436
|
-
- code-generated update
|
|
437
|
-
|
|
438
|
-
` + fileContent.trim();
|
|
439
|
-
fs__default.writeFileSync(pathToChangelog, fileContent, "utf-8");
|
|
440
|
-
}
|
|
441
473
|
static syncPackageVersion(apiInfo, isAdminWebSdk, prereleaseId) {
|
|
442
474
|
if (isAdminWebSdk) {
|
|
443
475
|
return;
|
|
444
476
|
}
|
|
445
477
|
const currDir = process.cwd();
|
|
446
478
|
const { packageJSON, pathToPackageJSON } = ParserUtils.getPackageJSONInfo(currDir);
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
nextSemver += `-${id}.${rest.join(".")}`;
|
|
456
|
-
}
|
|
457
|
-
if (!prereleaseId) {
|
|
458
|
-
nextSemver = semver.inc(nextSemver, "patch");
|
|
459
|
-
} else {
|
|
460
|
-
nextSemver = semver.inc(nextSemver, "prerelease", void 0, prereleaseId);
|
|
461
|
-
}
|
|
479
|
+
const nextSemver = VersionHelpers.getNextVersion({
|
|
480
|
+
codegenVersion: codegenPackageJSON.version,
|
|
481
|
+
serviceVersion: apiInfo["x-version"] || apiInfo.version || UNDEFINED_SWAGGER_SEMVER,
|
|
482
|
+
predefinedMajorVersion: packageJSON.predefinedMajorVersion,
|
|
483
|
+
predefinedMinorVersion: packageJSON.predefinedMinorVersion,
|
|
484
|
+
sdkVersion: packageJSON.version,
|
|
485
|
+
nextPrereleaseId: prereleaseId
|
|
486
|
+
});
|
|
462
487
|
packageJSON.version = nextSemver;
|
|
463
488
|
writeFileSync(pathToPackageJSON, JSON.stringify(packageJSON, null, 2));
|
|
464
|
-
ParserUtils.syncChangelog(packageJSON.version);
|
|
465
489
|
}
|
|
466
490
|
static getPackageJSONInfo(dir) {
|
|
467
491
|
const pathToPackageJSON = path__default.join(dir, "./package.json");
|
|
@@ -1324,11 +1348,12 @@ class CodeGenerator {
|
|
|
1324
1348
|
const swaggerFilePath = `${CliParser.getSwaggersOutputPath()}/${swaggerFile}`;
|
|
1325
1349
|
const api = await parser.parse(swaggerFilePath);
|
|
1326
1350
|
const indexImportsSet = /* @__PURE__ */ new Set();
|
|
1327
|
-
|
|
1351
|
+
const apiInfo = { ...api.info, "x-version": api["x-version"]?.version };
|
|
1352
|
+
console.log("----------\nGenerating API:", { title: apiInfo.title, version: apiInfo.version });
|
|
1328
1353
|
ParserUtils.mkdirIfNotExist(DIST_DIR);
|
|
1329
1354
|
ParserUtils.mkdirIfNotExist(DIST_DEFINITION_DIR);
|
|
1330
1355
|
ParserUtils.mkdirIfNotExist(DIST_ENDPOINTS_DIR);
|
|
1331
|
-
ParserUtils.syncPackageVersion(
|
|
1356
|
+
ParserUtils.syncPackageVersion(apiInfo, CliParser.isAdmin(), process.env.PRERELEASE_ID);
|
|
1332
1357
|
const { apiArgumentsByTag, apiBufferByTag, classBufferByTag, dependenciesByTag, classImports, arrayDefinitions, snippetMap } = await CodeGenerator.iterateApi(api, serviceName);
|
|
1333
1358
|
if (CliParser.getSnippetOutputPath()) {
|
|
1334
1359
|
try {
|
|
@@ -1418,33 +1443,36 @@ class SwaggerDownloader {
|
|
|
1418
1443
|
});
|
|
1419
1444
|
});
|
|
1420
1445
|
};
|
|
1421
|
-
static downloadFile = (targetFileName, url) => {
|
|
1446
|
+
static downloadFile = async (targetFileName, url) => {
|
|
1422
1447
|
const destFile = SwaggerDownloader.getDestFile(targetFileName);
|
|
1423
1448
|
let data = "";
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
data
|
|
1449
|
+
return new Promise((resolve) => {
|
|
1450
|
+
const request = https.get(url, function(response) {
|
|
1451
|
+
response.on("data", (chunk) => {
|
|
1452
|
+
data += chunk;
|
|
1453
|
+
});
|
|
1454
|
+
response.on("end", () => {
|
|
1455
|
+
if (response.statusCode !== 200) {
|
|
1456
|
+
console.log(`SwaggerDownload error with status code: ${response.statusCode}`);
|
|
1457
|
+
} else {
|
|
1458
|
+
fs.writeFileSync(destFile, JSON.stringify(JSON.parse(data), null, 2), "utf-8");
|
|
1459
|
+
SwaggerDownloader.postSanitizeDownloadedFile(destFile);
|
|
1460
|
+
console.log(`SwaggerDownload ${url} completed with status code: ${response.statusCode}`);
|
|
1461
|
+
}
|
|
1462
|
+
resolve(void 0);
|
|
1463
|
+
});
|
|
1427
1464
|
});
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
console.log(`SwaggerDownload error with status code: ${response.statusCode}`);
|
|
1431
|
-
} else {
|
|
1432
|
-
fs.writeFileSync(destFile, JSON.stringify(JSON.parse(data), null, 2), "utf-8");
|
|
1433
|
-
SwaggerDownloader.postSanitizeDownloadedFile(destFile);
|
|
1434
|
-
console.log(`SwaggerDownload ${url} completed with status code: ${response.statusCode}`);
|
|
1435
|
-
}
|
|
1465
|
+
request.on("error", (err) => {
|
|
1466
|
+
console.log(`SwaggerDownloader failed for "${targetFileName}" and "${url}"`, err);
|
|
1436
1467
|
});
|
|
1437
1468
|
});
|
|
1438
|
-
request.on("error", (err) => {
|
|
1439
|
-
console.log(`SwaggerDownloader failed for "${targetFileName}" and "${url}"`, err);
|
|
1440
|
-
});
|
|
1441
1469
|
};
|
|
1442
|
-
static main = () => {
|
|
1470
|
+
static main = async () => {
|
|
1443
1471
|
const swaggers = CliParser.getConfigFile();
|
|
1444
1472
|
for (const ref in swaggers) {
|
|
1445
1473
|
const targetFileName = swaggers[ref][2];
|
|
1446
1474
|
const url = swaggers[ref][3];
|
|
1447
|
-
SwaggerDownloader.downloadFile(targetFileName, url);
|
|
1475
|
+
await SwaggerDownloader.downloadFile(targetFileName, url);
|
|
1448
1476
|
}
|
|
1449
1477
|
};
|
|
1450
1478
|
}
|