@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.
@@ -146,6 +146,50 @@ export function ${className}(sdk: AccelbyteSDK, args?: ApiArgs) {
146
146
  `;
147
147
  };
148
148
 
149
+ class VersionHelpers {
150
+ static getNextVersion = ({
151
+ codegenVersion,
152
+ serviceVersion,
153
+ predefinedMajorVersion,
154
+ predefinedMinorVersion,
155
+ sdkVersion,
156
+ nextPrereleaseId
157
+ }) => {
158
+ const codegenSemvers = semver.parse(codegenVersion);
159
+ const serviceSemvers = semver.parse(serviceVersion);
160
+ const sdkSemvers = semver.parse(sdkVersion);
161
+ if (codegenSemvers === null) {
162
+ throw new Error(`Invalid codegen version: ${codegenVersion}`);
163
+ }
164
+ if (serviceSemvers === null) {
165
+ throw new Error(`Invalid service version: ${serviceVersion}`);
166
+ }
167
+ if (sdkSemvers === null) {
168
+ throw new Error(`Invalid sdk version: ${sdkVersion}`);
169
+ }
170
+ const nextMajor = codegenSemvers.minor + predefinedMajorVersion;
171
+ const nextMinor = codegenSemvers.minor + predefinedMinorVersion;
172
+ const nextPatch = codegenSemvers.patch + serviceSemvers.patch;
173
+ const { major: currentMajor, minor: currentMinor, patch: currentPatch } = sdkSemvers;
174
+ let nextVersion = [
175
+ codegenSemvers.major + predefinedMajorVersion,
176
+ nextMinor,
177
+ nextPatch
178
+ ].join(".");
179
+ if (nextPrereleaseId) {
180
+ if (nextMinor !== currentMinor || nextPatch !== currentPatch || nextMajor !== currentMajor) {
181
+ nextVersion += `-${nextPrereleaseId}.0`;
182
+ } else {
183
+ nextVersion += `-${sdkSemvers.prerelease.join(".")}`;
184
+ nextVersion = semver.inc(nextVersion, "prerelease", void 0, nextPrereleaseId);
185
+ }
186
+ }
187
+ return nextVersion;
188
+ };
189
+ }
190
+
191
+ const codegenPackageJsonPath = path.join(__dirname, "../package.json");
192
+ const codegenPackageJSON = JSON.parse(fs.readFileSync(codegenPackageJsonPath, "utf-8"));
149
193
  const UNDEFINED_SWAGGER_SEMVER = "0.0.0";
150
194
  const REMOVED_KEYWORDS = [
151
195
  "/admin/",
@@ -449,41 +493,22 @@ class ParserUtils {
449
493
  ParserUtils.mkdirIfNotExist(distDir);
450
494
  fs.writeFileSync(path.join(distDir, `all-${isAdminWebSdk ? "admin" : "public"}-imports.ts`), ParserUtils.prependCopyrightHeader(buffer));
451
495
  }
452
- static syncChangelog(packageVersion) {
453
- const currDir = process.cwd();
454
- const pathToChangelog = path.join(currDir, "./CHANGELOG.md");
455
- let fileContent = fs.readFileSync(pathToChangelog, "utf-8");
456
- const date = new Date().toISOString().slice(0, 10);
457
- fileContent = "### " + packageVersion + " - " + date + `
458
-
459
- - code-generated update
460
-
461
- ` + fileContent.trim();
462
- fs.writeFileSync(pathToChangelog, fileContent, "utf-8");
463
- }
464
496
  static syncPackageVersion(apiInfo, isAdminWebSdk, prereleaseId) {
465
497
  if (isAdminWebSdk) {
466
498
  return;
467
499
  }
468
500
  const currDir = process.cwd();
469
501
  const { packageJSON, pathToPackageJSON } = ParserUtils.getPackageJSONInfo(currDir);
470
- let swaggerVersion = apiInfo.version ? apiInfo.version : UNDEFINED_SWAGGER_SEMVER;
471
- swaggerVersion = Number(swaggerVersion.replace(".", "").replace(".", ""));
472
- swaggerVersion = isNaN(swaggerVersion) ? 0 : swaggerVersion;
473
- const currentSemver = packageJSON.version;
474
- let nextSemver = [semver.major(currentSemver), swaggerVersion, semver.patch(currentSemver)].join(".");
475
- if (!prereleaseId) {
476
- nextSemver = semver.inc(nextSemver, "patch");
477
- } else {
478
- const currentPrerelease = semver.prerelease(currentSemver);
479
- if (currentPrerelease) {
480
- nextSemver += `-${currentPrerelease.join(".")}`;
481
- }
482
- nextSemver = semver.inc(nextSemver, "prerelease", void 0, prereleaseId);
483
- }
502
+ const nextSemver = VersionHelpers.getNextVersion({
503
+ codegenVersion: codegenPackageJSON.version,
504
+ serviceVersion: apiInfo["x-version"] || apiInfo.version || UNDEFINED_SWAGGER_SEMVER,
505
+ predefinedMajorVersion: packageJSON.predefinedMajorVersion,
506
+ predefinedMinorVersion: packageJSON.predefinedMinorVersion,
507
+ sdkVersion: packageJSON.version,
508
+ nextPrereleaseId: prereleaseId
509
+ });
484
510
  packageJSON.version = nextSemver;
485
511
  fs.writeFileSync(pathToPackageJSON, JSON.stringify(packageJSON, null, 2));
486
- ParserUtils.syncChangelog(packageJSON.version);
487
512
  }
488
513
  static getPackageJSONInfo(dir) {
489
514
  const pathToPackageJSON = path.join(dir, "./package.json");
@@ -1346,11 +1371,12 @@ class CodeGenerator {
1346
1371
  const swaggerFilePath = `${CliParser.getSwaggersOutputPath()}/${swaggerFile}`;
1347
1372
  const api = await parser.parse(swaggerFilePath);
1348
1373
  const indexImportsSet = /* @__PURE__ */ new Set();
1349
- console.log("----------\nGenerating API:", { title: api.info.title, version: api.info.version });
1374
+ const apiInfo = { ...api.info, "x-version": api["x-version"]?.version };
1375
+ console.log("----------\nGenerating API:", { title: apiInfo.title, version: apiInfo.version });
1350
1376
  ParserUtils.mkdirIfNotExist(DIST_DIR);
1351
1377
  ParserUtils.mkdirIfNotExist(DIST_DEFINITION_DIR);
1352
1378
  ParserUtils.mkdirIfNotExist(DIST_ENDPOINTS_DIR);
1353
- ParserUtils.syncPackageVersion(api.info, CliParser.isAdmin(), process.env.PRERELEASE_ID);
1379
+ ParserUtils.syncPackageVersion(apiInfo, CliParser.isAdmin(), process.env.PRERELEASE_ID);
1354
1380
  const { apiArgumentsByTag, apiBufferByTag, classBufferByTag, dependenciesByTag, classImports, arrayDefinitions, snippetMap } = await CodeGenerator.iterateApi(api, serviceName);
1355
1381
  if (CliParser.getSnippetOutputPath()) {
1356
1382
  try {
@@ -1440,33 +1466,36 @@ class SwaggerDownloader {
1440
1466
  });
1441
1467
  });
1442
1468
  };
1443
- static downloadFile = (targetFileName, url) => {
1469
+ static downloadFile = async (targetFileName, url) => {
1444
1470
  const destFile = SwaggerDownloader.getDestFile(targetFileName);
1445
1471
  let data = "";
1446
- const request = https__namespace.get(url, function(response) {
1447
- response.on("data", (chunk) => {
1448
- data += chunk;
1472
+ return new Promise((resolve) => {
1473
+ const request = https__namespace.get(url, function(response) {
1474
+ response.on("data", (chunk) => {
1475
+ data += chunk;
1476
+ });
1477
+ response.on("end", () => {
1478
+ if (response.statusCode !== 200) {
1479
+ console.log(`SwaggerDownload error with status code: ${response.statusCode}`);
1480
+ } else {
1481
+ fs__namespace.writeFileSync(destFile, JSON.stringify(JSON.parse(data), null, 2), "utf-8");
1482
+ SwaggerDownloader.postSanitizeDownloadedFile(destFile);
1483
+ console.log(`SwaggerDownload ${url} completed with status code: ${response.statusCode}`);
1484
+ }
1485
+ resolve(void 0);
1486
+ });
1449
1487
  });
1450
- response.on("end", () => {
1451
- if (response.statusCode !== 200) {
1452
- console.log(`SwaggerDownload error with status code: ${response.statusCode}`);
1453
- } else {
1454
- fs__namespace.writeFileSync(destFile, JSON.stringify(JSON.parse(data), null, 2), "utf-8");
1455
- SwaggerDownloader.postSanitizeDownloadedFile(destFile);
1456
- console.log(`SwaggerDownload ${url} completed with status code: ${response.statusCode}`);
1457
- }
1488
+ request.on("error", (err) => {
1489
+ console.log(`SwaggerDownloader failed for "${targetFileName}" and "${url}"`, err);
1458
1490
  });
1459
1491
  });
1460
- request.on("error", (err) => {
1461
- console.log(`SwaggerDownloader failed for "${targetFileName}" and "${url}"`, err);
1462
- });
1463
1492
  };
1464
- static main = () => {
1493
+ static main = async () => {
1465
1494
  const swaggers = CliParser.getConfigFile();
1466
1495
  for (const ref in swaggers) {
1467
1496
  const targetFileName = swaggers[ref][2];
1468
1497
  const url = swaggers[ref][3];
1469
- SwaggerDownloader.downloadFile(targetFileName, url);
1498
+ await SwaggerDownloader.downloadFile(targetFileName, url);
1470
1499
  }
1471
1500
  };
1472
1501
  }