@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.
@@ -55,6 +55,9 @@ class CliParser {
55
55
  static getSnippetOutputPath = () => {
56
56
  return CliParser.instance().argv.snippetOutput;
57
57
  };
58
+ static skipVersionSync = () => {
59
+ return CliParser.instance().argv.skipVersionSync;
60
+ };
58
61
  }
59
62
 
60
63
  const getImportableVarMap$1 = () => ({
@@ -123,15 +126,25 @@ export function ${className}(sdk: AccelbyteSDK, args?: ApiArgs) {
123
126
  `;
124
127
  };
125
128
 
129
+ const VersionBumpType = z.enum(["CUTOFF", "RELEASE", "HOTFIX"]);
126
130
  class VersionHelpers {
127
131
  static getNextVersion = ({
128
132
  codegenVersion,
129
133
  serviceVersion,
130
134
  predefinedMajorVersion,
131
- predefinedMinorVersion,
135
+ versionBumpType,
132
136
  sdkVersion,
133
137
  nextPrereleaseId
134
138
  }) => {
139
+ if (versionBumpType !== void 0) {
140
+ const parsed = VersionBumpType.safeParse(versionBumpType);
141
+ if (!parsed.success) {
142
+ throw new Error(`Invalid process.env.VERSION_BUMP_TYPE: ${versionBumpType}`);
143
+ }
144
+ if ((parsed.data === "HOTFIX" || parsed.data === "RELEASE") && nextPrereleaseId) {
145
+ throw new Error(`process.env.PRERELEASE_ID should be empty when process.env.VERSION_BUMP_TYPE is "HOTFIX" or "PRELEASE".`);
146
+ }
147
+ }
135
148
  const codegenSemvers = semver.parse(codegenVersion);
136
149
  const serviceSemvers = semver.parse(serviceVersion);
137
150
  const sdkSemvers = semver.parse(sdkVersion);
@@ -144,20 +157,38 @@ class VersionHelpers {
144
157
  if (sdkSemvers === null) {
145
158
  throw new Error(`Invalid sdk version: ${sdkVersion}`);
146
159
  }
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;
160
+ const { major: currentMajor, minor: currentMinor, patch: currentPatch, prerelease: currentPrerelease } = sdkSemvers;
161
+ const nextMajor = codegenSemvers.major + predefinedMajorVersion;
162
+ const shouldResetVersion = nextMajor !== currentMajor;
163
+ let nextMinor = currentMinor;
164
+ let nextPatch = currentPatch;
165
+ switch (versionBumpType) {
166
+ case VersionBumpType.Enum.CUTOFF: {
167
+ nextMinor++;
168
+ nextPatch = 0;
169
+ break;
170
+ }
171
+ case VersionBumpType.Enum.RELEASE:
172
+ break;
173
+ case VersionBumpType.Enum.HOTFIX: {
174
+ nextPatch++;
175
+ break;
176
+ }
177
+ }
178
+ if (shouldResetVersion) {
179
+ nextMinor = 0;
180
+ nextPatch = 0;
181
+ }
151
182
  let nextVersion = [
152
183
  codegenSemvers.major + predefinedMajorVersion,
153
184
  nextMinor,
154
185
  nextPatch
155
186
  ].join(".");
156
187
  if (nextPrereleaseId) {
157
- if (nextMinor !== currentMinor || nextPatch !== currentPatch || nextMajor !== currentMajor) {
188
+ if (nextMinor !== currentMinor || nextMajor !== currentMajor) {
158
189
  nextVersion += `-${nextPrereleaseId}.0`;
159
190
  } else {
160
- nextVersion += `-${sdkSemvers.prerelease.join(".")}`;
191
+ nextVersion += `-${currentPrerelease.join(".")}`;
161
192
  nextVersion = semver.inc(nextVersion, "prerelease", void 0, nextPrereleaseId);
162
193
  }
163
194
  }
@@ -470,17 +501,16 @@ class ParserUtils {
470
501
  ParserUtils.mkdirIfNotExist(distDir);
471
502
  fs__default.writeFileSync(path__default.join(distDir, `all-${isAdminWebSdk ? "admin" : "public"}-imports.ts`), ParserUtils.prependCopyrightHeader(buffer));
472
503
  }
473
- static syncPackageVersion(apiInfo, isAdminWebSdk, prereleaseId) {
474
- if (isAdminWebSdk) {
504
+ static syncPackageVersion(apiInfo, skipVersionSync, prereleaseId) {
505
+ if (skipVersionSync)
475
506
  return;
476
- }
477
507
  const currDir = process.cwd();
478
508
  const { packageJSON, pathToPackageJSON } = ParserUtils.getPackageJSONInfo(currDir);
479
509
  const nextSemver = VersionHelpers.getNextVersion({
480
510
  codegenVersion: codegenPackageJSON.version,
481
511
  serviceVersion: apiInfo["x-version"] || apiInfo.version || UNDEFINED_SWAGGER_SEMVER,
482
- predefinedMajorVersion: packageJSON.predefinedMajorVersion,
483
- predefinedMinorVersion: packageJSON.predefinedMinorVersion,
512
+ predefinedMajorVersion: packageJSON.predefinedMajorVersion || 0,
513
+ versionBumpType: process.env.VERSION_BUMP_TYPE,
484
514
  sdkVersion: packageJSON.version,
485
515
  nextPrereleaseId: prereleaseId
486
516
  });
@@ -1353,7 +1383,7 @@ class CodeGenerator {
1353
1383
  ParserUtils.mkdirIfNotExist(DIST_DIR);
1354
1384
  ParserUtils.mkdirIfNotExist(DIST_DEFINITION_DIR);
1355
1385
  ParserUtils.mkdirIfNotExist(DIST_ENDPOINTS_DIR);
1356
- ParserUtils.syncPackageVersion(apiInfo, CliParser.isAdmin(), process.env.PRERELEASE_ID);
1386
+ ParserUtils.syncPackageVersion(apiInfo, CliParser.skipVersionSync(), process.env.PRERELEASE_ID);
1357
1387
  const { apiArgumentsByTag, apiBufferByTag, classBufferByTag, dependenciesByTag, classImports, arrayDefinitions, snippetMap } = await CodeGenerator.iterateApi(api, serviceName);
1358
1388
  if (CliParser.getSnippetOutputPath()) {
1359
1389
  try {