@accelbyte/codegen 2.0.0-beta.1 → 2.0.0-beta.4

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.
@@ -78,6 +78,9 @@ class CliParser {
78
78
  static getSnippetOutputPath = () => {
79
79
  return CliParser.instance().argv.snippetOutput;
80
80
  };
81
+ static skipVersionSync = () => {
82
+ return CliParser.instance().argv.skipVersionSync;
83
+ };
81
84
  }
82
85
 
83
86
  const getImportableVarMap$1 = () => ({
@@ -146,15 +149,25 @@ export function ${className}(sdk: AccelbyteSDK, args?: ApiArgs) {
146
149
  `;
147
150
  };
148
151
 
152
+ const VersionBumpType = zod.z.enum(["CUTOFF", "RELEASE", "HOTFIX"]);
149
153
  class VersionHelpers {
150
154
  static getNextVersion = ({
151
155
  codegenVersion,
152
156
  serviceVersion,
153
157
  predefinedMajorVersion,
154
- predefinedMinorVersion,
158
+ versionBumpType,
155
159
  sdkVersion,
156
160
  nextPrereleaseId
157
161
  }) => {
162
+ if (versionBumpType !== void 0) {
163
+ const parsed = VersionBumpType.safeParse(versionBumpType);
164
+ if (!parsed.success) {
165
+ throw new Error(`Invalid process.env.VERSION_BUMP_TYPE: ${versionBumpType}`);
166
+ }
167
+ if ((parsed.data === "HOTFIX" || parsed.data === "RELEASE") && nextPrereleaseId) {
168
+ throw new Error(`process.env.PRERELEASE_ID should be empty when process.env.VERSION_BUMP_TYPE is "HOTFIX" or "PRELEASE".`);
169
+ }
170
+ }
158
171
  const codegenSemvers = semver.parse(codegenVersion);
159
172
  const serviceSemvers = semver.parse(serviceVersion);
160
173
  const sdkSemvers = semver.parse(sdkVersion);
@@ -167,20 +180,38 @@ class VersionHelpers {
167
180
  if (sdkSemvers === null) {
168
181
  throw new Error(`Invalid sdk version: ${sdkVersion}`);
169
182
  }
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;
183
+ const { major: currentMajor, minor: currentMinor, patch: currentPatch, prerelease: currentPrerelease } = sdkSemvers;
184
+ const nextMajor = codegenSemvers.major + predefinedMajorVersion;
185
+ const shouldResetVersion = nextMajor !== currentMajor;
186
+ let nextMinor = currentMinor;
187
+ let nextPatch = currentPatch;
188
+ switch (versionBumpType) {
189
+ case VersionBumpType.Enum.CUTOFF: {
190
+ nextMinor++;
191
+ nextPatch = 0;
192
+ break;
193
+ }
194
+ case VersionBumpType.Enum.RELEASE:
195
+ break;
196
+ case VersionBumpType.Enum.HOTFIX: {
197
+ nextPatch++;
198
+ break;
199
+ }
200
+ }
201
+ if (shouldResetVersion) {
202
+ nextMinor = 0;
203
+ nextPatch = 0;
204
+ }
174
205
  let nextVersion = [
175
206
  codegenSemvers.major + predefinedMajorVersion,
176
207
  nextMinor,
177
208
  nextPatch
178
209
  ].join(".");
179
210
  if (nextPrereleaseId) {
180
- if (nextMinor !== currentMinor || nextPatch !== currentPatch || nextMajor !== currentMajor) {
211
+ if (nextMinor !== currentMinor || nextMajor !== currentMajor) {
181
212
  nextVersion += `-${nextPrereleaseId}.0`;
182
213
  } else {
183
- nextVersion += `-${sdkSemvers.prerelease.join(".")}`;
214
+ nextVersion += `-${currentPrerelease.join(".")}`;
184
215
  nextVersion = semver.inc(nextVersion, "prerelease", void 0, nextPrereleaseId);
185
216
  }
186
217
  }
@@ -493,17 +524,16 @@ class ParserUtils {
493
524
  ParserUtils.mkdirIfNotExist(distDir);
494
525
  fs.writeFileSync(path.join(distDir, `all-${isAdminWebSdk ? "admin" : "public"}-imports.ts`), ParserUtils.prependCopyrightHeader(buffer));
495
526
  }
496
- static syncPackageVersion(apiInfo, isAdminWebSdk, prereleaseId) {
497
- if (isAdminWebSdk) {
527
+ static syncPackageVersion(apiInfo, skipVersionSync, prereleaseId) {
528
+ if (skipVersionSync)
498
529
  return;
499
- }
500
530
  const currDir = process.cwd();
501
531
  const { packageJSON, pathToPackageJSON } = ParserUtils.getPackageJSONInfo(currDir);
502
532
  const nextSemver = VersionHelpers.getNextVersion({
503
533
  codegenVersion: codegenPackageJSON.version,
504
534
  serviceVersion: apiInfo["x-version"] || apiInfo.version || UNDEFINED_SWAGGER_SEMVER,
505
- predefinedMajorVersion: packageJSON.predefinedMajorVersion,
506
- predefinedMinorVersion: packageJSON.predefinedMinorVersion,
535
+ predefinedMajorVersion: packageJSON.predefinedMajorVersion || 0,
536
+ versionBumpType: process.env.VERSION_BUMP_TYPE,
507
537
  sdkVersion: packageJSON.version,
508
538
  nextPrereleaseId: prereleaseId
509
539
  });
@@ -1376,7 +1406,7 @@ class CodeGenerator {
1376
1406
  ParserUtils.mkdirIfNotExist(DIST_DIR);
1377
1407
  ParserUtils.mkdirIfNotExist(DIST_DEFINITION_DIR);
1378
1408
  ParserUtils.mkdirIfNotExist(DIST_ENDPOINTS_DIR);
1379
- ParserUtils.syncPackageVersion(apiInfo, CliParser.isAdmin(), process.env.PRERELEASE_ID);
1409
+ ParserUtils.syncPackageVersion(apiInfo, CliParser.skipVersionSync(), process.env.PRERELEASE_ID);
1380
1410
  const { apiArgumentsByTag, apiBufferByTag, classBufferByTag, dependenciesByTag, classImports, arrayDefinitions, snippetMap } = await CodeGenerator.iterateApi(api, serviceName);
1381
1411
  if (CliParser.getSnippetOutputPath()) {
1382
1412
  try {