@accelbyte/codegen 1.0.4 → 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,41 +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
|
-
const currentPrerelease = semver.prerelease(currentSemver);
|
|
456
|
-
if (currentPrerelease) {
|
|
457
|
-
nextSemver += `-${currentPrerelease.join(".")}`;
|
|
458
|
-
}
|
|
459
|
-
nextSemver = semver.inc(nextSemver, "prerelease", void 0, prereleaseId);
|
|
460
|
-
}
|
|
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
|
+
});
|
|
461
487
|
packageJSON.version = nextSemver;
|
|
462
488
|
writeFileSync(pathToPackageJSON, JSON.stringify(packageJSON, null, 2));
|
|
463
|
-
ParserUtils.syncChangelog(packageJSON.version);
|
|
464
489
|
}
|
|
465
490
|
static getPackageJSONInfo(dir) {
|
|
466
491
|
const pathToPackageJSON = path__default.join(dir, "./package.json");
|
|
@@ -1323,11 +1348,12 @@ class CodeGenerator {
|
|
|
1323
1348
|
const swaggerFilePath = `${CliParser.getSwaggersOutputPath()}/${swaggerFile}`;
|
|
1324
1349
|
const api = await parser.parse(swaggerFilePath);
|
|
1325
1350
|
const indexImportsSet = /* @__PURE__ */ new Set();
|
|
1326
|
-
|
|
1351
|
+
const apiInfo = { ...api.info, "x-version": api["x-version"]?.version };
|
|
1352
|
+
console.log("----------\nGenerating API:", { title: apiInfo.title, version: apiInfo.version });
|
|
1327
1353
|
ParserUtils.mkdirIfNotExist(DIST_DIR);
|
|
1328
1354
|
ParserUtils.mkdirIfNotExist(DIST_DEFINITION_DIR);
|
|
1329
1355
|
ParserUtils.mkdirIfNotExist(DIST_ENDPOINTS_DIR);
|
|
1330
|
-
ParserUtils.syncPackageVersion(
|
|
1356
|
+
ParserUtils.syncPackageVersion(apiInfo, CliParser.isAdmin(), process.env.PRERELEASE_ID);
|
|
1331
1357
|
const { apiArgumentsByTag, apiBufferByTag, classBufferByTag, dependenciesByTag, classImports, arrayDefinitions, snippetMap } = await CodeGenerator.iterateApi(api, serviceName);
|
|
1332
1358
|
if (CliParser.getSnippetOutputPath()) {
|
|
1333
1359
|
try {
|
|
@@ -1417,33 +1443,36 @@ class SwaggerDownloader {
|
|
|
1417
1443
|
});
|
|
1418
1444
|
});
|
|
1419
1445
|
};
|
|
1420
|
-
static downloadFile = (targetFileName, url) => {
|
|
1446
|
+
static downloadFile = async (targetFileName, url) => {
|
|
1421
1447
|
const destFile = SwaggerDownloader.getDestFile(targetFileName);
|
|
1422
1448
|
let data = "";
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
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
|
+
});
|
|
1426
1464
|
});
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
console.log(`SwaggerDownload error with status code: ${response.statusCode}`);
|
|
1430
|
-
} else {
|
|
1431
|
-
fs.writeFileSync(destFile, JSON.stringify(JSON.parse(data), null, 2), "utf-8");
|
|
1432
|
-
SwaggerDownloader.postSanitizeDownloadedFile(destFile);
|
|
1433
|
-
console.log(`SwaggerDownload ${url} completed with status code: ${response.statusCode}`);
|
|
1434
|
-
}
|
|
1465
|
+
request.on("error", (err) => {
|
|
1466
|
+
console.log(`SwaggerDownloader failed for "${targetFileName}" and "${url}"`, err);
|
|
1435
1467
|
});
|
|
1436
1468
|
});
|
|
1437
|
-
request.on("error", (err) => {
|
|
1438
|
-
console.log(`SwaggerDownloader failed for "${targetFileName}" and "${url}"`, err);
|
|
1439
|
-
});
|
|
1440
1469
|
};
|
|
1441
|
-
static main = () => {
|
|
1470
|
+
static main = async () => {
|
|
1442
1471
|
const swaggers = CliParser.getConfigFile();
|
|
1443
1472
|
for (const ref in swaggers) {
|
|
1444
1473
|
const targetFileName = swaggers[ref][2];
|
|
1445
1474
|
const url = swaggers[ref][3];
|
|
1446
|
-
SwaggerDownloader.downloadFile(targetFileName, url);
|
|
1475
|
+
await SwaggerDownloader.downloadFile(targetFileName, url);
|
|
1447
1476
|
}
|
|
1448
1477
|
};
|
|
1449
1478
|
}
|