@accelbyte/codegen 2.0.0 → 2.1.0-experimental.0

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.
package/README.md CHANGED
@@ -90,18 +90,7 @@ if it is successful the result will look like this, and the WebSDK code should b
90
90
  ```
91
91
  ----------
92
92
  Generating API: { title: 'justice-iam-service', version: '7.4.0' }
93
- !!!! Missing x-version for ./sdk/generated-public/iam {
94
- description: 'Justice IAM Service',
95
- title: 'justice-iam-service',
96
- contact: {
97
- name: 'Engineering Team at AccelByte',
98
- url: 'https://accelbyte.io',
99
- email: 'engineering@accelbyte.io'
100
- },
101
- version: '7.4.0',
102
- gitHash: '7.4.0'
103
- }
104
-
93
+ !!!! Missing x-version ...
105
94
  COMPLETED
106
95
  ----------
107
96
  ```
@@ -72,9 +72,6 @@ class CliParser {
72
72
  static getResolvedSwaggersOutputPath = () => {
73
73
  return path__namespace.resolve(CliParser.getSwaggersOutputPath());
74
74
  };
75
- static isAdmin = () => {
76
- return CliParser.instance().argv.admin;
77
- };
78
75
  static getSnippetOutputPath = () => {
79
76
  return CliParser.instance().argv.snippetOutput;
80
77
  };
@@ -103,7 +100,9 @@ const generateImports = (body, importStatements, makeNewImportVarMap2, getImport
103
100
  }
104
101
  }
105
102
  }
106
- const generatedImports = Object.keys(usedImportVarMap).sort().map((moduleSource) => `import { ${usedImportVarMap[moduleSource].sort().join(", ")} } from '${moduleSource}'`).join("\n");
103
+ const generatedImports = Object.keys(usedImportVarMap).sort().map((moduleSource) => {
104
+ return `import { ${usedImportVarMap[moduleSource].sort().join(", ")} } from '${moduleSource}'`;
105
+ }).join("\n");
107
106
  return `${generatedImports}
108
107
  ${importStatements.sort().join("\n")}`;
109
108
  };
@@ -149,12 +148,10 @@ export function ${className}(sdk: AccelbyteSDK, args?: ApiArgs) {
149
148
  `;
150
149
  };
151
150
 
152
- const VersionBumpType = zod.z.enum(["CUTOFF", "RELEASE", "HOTFIX"]);
151
+ const VersionBumpType = zod.z.enum(["CUTOFF", "RELEASE", "HOTFIX", "BREAKING"]);
153
152
  class VersionHelpers {
154
153
  static getNextVersion = ({
155
- codegenVersion,
156
154
  serviceVersion,
157
- predefinedMajorVersion,
158
155
  versionBumpType,
159
156
  sdkVersion,
160
157
  nextPrereleaseId
@@ -168,12 +165,8 @@ class VersionHelpers {
168
165
  throw new Error(`process.env.PRERELEASE_ID should be empty when process.env.VERSION_BUMP_TYPE is "HOTFIX" or "PRELEASE".`);
169
166
  }
170
167
  }
171
- const codegenSemvers = semver.parse(codegenVersion);
172
168
  const serviceSemvers = semver.parse(serviceVersion);
173
169
  const sdkSemvers = semver.parse(sdkVersion);
174
- if (codegenSemvers === null) {
175
- throw new Error(`Invalid codegen version: ${codegenVersion}`);
176
- }
177
170
  if (serviceSemvers === null) {
178
171
  throw new Error(`Invalid service version: ${serviceVersion}`);
179
172
  }
@@ -181,11 +174,16 @@ class VersionHelpers {
181
174
  throw new Error(`Invalid sdk version: ${sdkVersion}`);
182
175
  }
183
176
  const { major: currentMajor, minor: currentMinor, patch: currentPatch, prerelease: currentPrerelease } = sdkSemvers;
184
- const nextMajor = codegenSemvers.major + predefinedMajorVersion;
185
- const shouldResetVersion = nextMajor !== currentMajor;
177
+ let nextMajor = currentMajor;
186
178
  let nextMinor = currentMinor;
187
179
  let nextPatch = currentPatch;
188
180
  switch (versionBumpType) {
181
+ case VersionBumpType.Enum.BREAKING: {
182
+ nextMajor++;
183
+ nextMinor = 0;
184
+ nextPatch = 0;
185
+ break;
186
+ }
189
187
  case VersionBumpType.Enum.CUTOFF: {
190
188
  nextMinor++;
191
189
  nextPatch = 0;
@@ -198,17 +196,13 @@ class VersionHelpers {
198
196
  break;
199
197
  }
200
198
  }
201
- if (shouldResetVersion) {
202
- nextMinor = 0;
203
- nextPatch = 0;
204
- }
205
199
  let nextVersion = [
206
- codegenSemvers.major + predefinedMajorVersion,
200
+ nextMajor,
207
201
  nextMinor,
208
202
  nextPatch
209
203
  ].join(".");
210
204
  if (nextPrereleaseId) {
211
- if (nextMinor !== currentMinor || nextMajor !== currentMajor) {
205
+ if (nextMinor !== currentMinor) {
212
206
  nextVersion += `-${nextPrereleaseId}.0`;
213
207
  } else {
214
208
  if (currentPrerelease.length)
@@ -220,8 +214,6 @@ class VersionHelpers {
220
214
  };
221
215
  }
222
216
 
223
- const codegenPackageJsonPath = path.join(__dirname, "../package.json");
224
- const codegenPackageJSON = JSON.parse(fs.readFileSync(codegenPackageJsonPath, "utf-8"));
225
217
  const UNDEFINED_SWAGGER_SEMVER = "0.0.0";
226
218
  const REMOVED_KEYWORDS = [
227
219
  "/admin/",
@@ -317,7 +309,7 @@ class ParserUtils {
317
309
  return null;
318
310
  }
319
311
  const type = ParserUtils.parseRefType($ref);
320
- return `import { ${type} } from '../definitions/${type}.js'`;
312
+ return `import { ${type} } from '../../generated-definitions/${type}.js'`;
321
313
  };
322
314
  static parseRefType = ($ref) => {
323
315
  let ref = $ref.replace(".", "/");
@@ -509,7 +501,7 @@ class ParserUtils {
509
501
  static writeApiFile(distDir, apiName, apiBuffer, imports, returnMethods) {
510
502
  const newImports = [];
511
503
  imports.forEach((el, index) => {
512
- newImports.push(el.replace("../definitions", "./definitions"));
504
+ newImports.push(el.replace("../../generated-definitions", "../generated-definitions"));
513
505
  });
514
506
  const fileContent = templateApiClass(apiName, apiBuffer, newImports, returnMethods);
515
507
  fs.writeFileSync(`${distDir}/${apiName}.ts`, ParserUtils.prependCopyrightHeader(fileContent));
@@ -527,9 +519,9 @@ class ParserUtils {
527
519
  ParserUtils.mkdirIfNotExist(distDir);
528
520
  fs.writeFileSync(path.join(distDir, `${name}.ts`), ParserUtils.prependCopyrightHeader(buffer));
529
521
  }
530
- static writeAllImportsFile(distDir, buffer, isAdminWebSdk) {
522
+ static writeAllImportsFile(distDir, buffer) {
531
523
  ParserUtils.mkdirIfNotExist(distDir);
532
- fs.writeFileSync(path.join(distDir, `all-${isAdminWebSdk ? "admin" : "public"}-imports.ts`), ParserUtils.prependCopyrightHeader(buffer));
524
+ fs.writeFileSync(path.join(distDir, "all-imports.ts"), ParserUtils.prependCopyrightHeader(buffer));
533
525
  }
534
526
  static syncPackageVersion(apiInfo, skipVersionSync, prereleaseId) {
535
527
  if (skipVersionSync)
@@ -537,9 +529,7 @@ class ParserUtils {
537
529
  const currDir = process.cwd();
538
530
  const { packageJSON, pathToPackageJSON } = ParserUtils.getPackageJSONInfo(currDir);
539
531
  const nextSemver = VersionHelpers.getNextVersion({
540
- codegenVersion: codegenPackageJSON.version,
541
532
  serviceVersion: apiInfo["x-version"] || apiInfo.version || UNDEFINED_SWAGGER_SEMVER,
542
- predefinedMajorVersion: packageJSON.predefinedMajorVersion || 0,
543
533
  versionBumpType: process.env.VERSION_BUMP_TYPE,
544
534
  sdkVersion: packageJSON.version,
545
535
  nextPrereleaseId: prereleaseId
@@ -950,8 +940,9 @@ const templateApiIndex = (serviceName, serviceNameTitle, apiList) => {
950
940
  let imports = "";
951
941
  let returnStatement = "";
952
942
  for (const cl of apiList) {
943
+ const dir = cl.toLowerCase().includes("admin") ? "generated-admin" : "generated-public";
953
944
  imports += `
954
- import { ${cl} } from './${serviceName}/${cl}.js'`;
945
+ import { ${cl} } from './${dir}/${cl}.js'`;
955
946
  returnStatement += `
956
947
  ${cl}, `;
957
948
  }
@@ -1352,7 +1343,7 @@ class SwaggerReaderHelpers {
1352
1343
  tagToClassImportsRecord[className] = tagToClassImportsRecord[className] ? tagToClassImportsRecord[className] : {};
1353
1344
  if (responseClass) {
1354
1345
  const importTypeClass = ParserUtils.parseRefType(responseClass);
1355
- tagToClassImportsRecord[className][importTypeClass] = `import { ${importTypeClass} } from '../definitions/${importTypeClass}.js'`;
1346
+ tagToClassImportsRecord[className][importTypeClass] = `import { ${importTypeClass} } from '../../generated-definitions/${importTypeClass}.js'`;
1356
1347
  }
1357
1348
  if (responseClass && responseClass.endsWith("Array")) {
1358
1349
  arrayDefinitions.push(responseClass);
@@ -1417,39 +1408,30 @@ class SwaggerReaderHelpers {
1417
1408
  }
1418
1409
 
1419
1410
  class CodeGenerator {
1420
- static getPatchedDir = () => path.join(CliParser.getSwaggersOutputPath(), "patched");
1421
- static getGeneratedPublicFolder = () => `${CliParser.getOutputPath()}/generated-public`;
1422
- static getGeneratedAdminFolder = () => `${CliParser.getOutputPath()}/generated-admin`;
1411
+ static srcFolder = () => CliParser.getOutputPath();
1412
+ static getGeneratedFolder = (isAdmin) => isAdmin ? `${CodeGenerator.srcFolder()}/generated-admin` : `${CodeGenerator.srcFolder()}/generated-public`;
1423
1413
  static getGeneratedSnippetsFolder = () => `${CliParser.getSnippetOutputPath()}/generated-snippets`;
1424
- static getServicePrefix = (servicePaths) => servicePaths[servicePaths.length - 1].split("/")[1];
1414
+ static prepareDirs = (DIST_DEFINITION_DIR, DIST_DIR, DIST_DIR_ENDPOINTS) => {
1415
+ ParserUtils.mkdirIfNotExist(DIST_DEFINITION_DIR);
1416
+ ParserUtils.mkdirIfNotExist(DIST_DIR(true));
1417
+ ParserUtils.mkdirIfNotExist(DIST_DIR(false));
1418
+ ParserUtils.mkdirIfNotExist(DIST_DIR_ENDPOINTS(true));
1419
+ ParserUtils.mkdirIfNotExist(DIST_DIR_ENDPOINTS(false));
1420
+ };
1425
1421
  static main = async (nameArray) => {
1426
1422
  const serviceName = nameArray[0];
1427
1423
  const sdkName = nameArray[1];
1428
1424
  const swaggerFile = nameArray[2];
1429
1425
  const parser = new SwaggerParser();
1430
- const generatedFolder = CliParser.isAdmin() ? CodeGenerator.getGeneratedAdminFolder() : CodeGenerator.getGeneratedPublicFolder();
1431
- const DIST_DIR = `${generatedFolder}/${serviceName}`;
1432
- const DIST_ENDPOINTS_DIR = path.join(DIST_DIR, "endpoints");
1433
- const DIST_DEFINITION_DIR = path.join(DIST_DIR, "definitions");
1434
1426
  const swaggerFilePath = `${CliParser.getSwaggersOutputPath()}/${swaggerFile}`;
1435
1427
  const api = await parser.parse(swaggerFilePath);
1428
+ const serviceNameTitle = ParserUtils.convertDashesToTitleCase(serviceName);
1436
1429
  const indexImportsSet = /* @__PURE__ */ new Set();
1437
1430
  const apiInfo = { ...api.info, "x-version": api["x-version"]?.version };
1438
1431
  console.log("----------\nGenerating API:", { title: apiInfo.title, version: apiInfo.version });
1439
- ParserUtils.mkdirIfNotExist(DIST_DIR);
1440
- ParserUtils.mkdirIfNotExist(DIST_DEFINITION_DIR);
1441
- ParserUtils.mkdirIfNotExist(DIST_ENDPOINTS_DIR);
1442
1432
  ParserUtils.syncPackageVersion(apiInfo, CliParser.skipVersionSync(), process.env.PRERELEASE_ID);
1433
+ ParserUtils.writeXVersion(CodeGenerator.srcFolder(), api["x-version"], api.info);
1443
1434
  const parsedInformation = await SwaggerReaderHelpers.parseAllEndpoints({ api, sdkName, serviceName });
1444
- const parsedInformationByType = CliParser.isAdmin() ? parsedInformation.admin : parsedInformation.public;
1445
- const {
1446
- arrayDefinitions,
1447
- tagToClassImportsRecord,
1448
- tagToEndpointClassesRecord,
1449
- tagToSdkClientRecord,
1450
- tagToSdkFunctionNamesRecord,
1451
- tagToSdkImportsRecord
1452
- } = parsedInformationByType;
1453
1435
  if (CliParser.getSnippetOutputPath()) {
1454
1436
  try {
1455
1437
  ParserUtils.writeSnippetFile(CodeGenerator.getGeneratedSnippetsFolder(), api.info.title, JSON.stringify({
@@ -1460,55 +1442,69 @@ class CodeGenerator {
1460
1442
  console.log("Generating snippets", err);
1461
1443
  }
1462
1444
  }
1463
- const targetSrcFolder = `${CliParser.getOutputPath()}/`;
1464
- const apiList = [];
1465
- for (const tag in tagToEndpointClassesRecord) {
1466
- const { className, classGenName } = ParserUtils.generateClassName(tag, CliParser.isAdmin());
1467
- const classBuffer = tagToEndpointClassesRecord[tag];
1468
- const imports = [.../* @__PURE__ */ new Set([...tagToSdkImportsRecord[tag], ...Object.values(tagToClassImportsRecord[className])])];
1469
- const apiImports = [.../* @__PURE__ */ new Set([...tagToSdkImportsRecord[tag], ...Object.values(tagToClassImportsRecord[className])])];
1470
- apiImports.push(`import { ${classGenName} } from './endpoints/${classGenName}.js'`);
1471
- ParserUtils.writeClassFile(DIST_ENDPOINTS_DIR, classGenName, classBuffer, imports);
1472
- const apiBuffer = tagToSdkClientRecord[tag];
1473
- const { apiGenName } = ParserUtils.generateApiName(tag, CliParser.isAdmin());
1474
- ParserUtils.writeApiFile(DIST_DIR, apiGenName, apiBuffer, apiImports, tagToSdkFunctionNamesRecord[tag]);
1475
- apiList.push(apiGenName);
1476
- indexImportsSet.add(ParserUtils.getRelativePathToWebSdkSrcFolder(path.join(DIST_ENDPOINTS_DIR, `${classGenName}`), targetSrcFolder));
1477
- indexImportsSet.add(ParserUtils.getRelativePathToWebSdkSrcFolder(path.join(DIST_DIR, `${apiGenName}`), targetSrcFolder));
1478
- }
1479
- const serviceNameTitle = ParserUtils.convertDashesToTitleCase(serviceName);
1480
- const apiIndexBuff = templateApiIndex(serviceName, serviceNameTitle, apiList);
1481
- ParserUtils.writeApiMainFile(generatedFolder, serviceNameTitle, apiIndexBuff);
1482
- indexImportsSet.add(ParserUtils.getRelativePathToWebSdkSrcFolder(path.join(generatedFolder, serviceNameTitle), targetSrcFolder));
1483
- const duplicates = /* @__PURE__ */ new Map();
1484
- const definitions = api?.components?.schemas || api.definitions;
1485
- for (const ref in definitions) {
1486
- const definition = definitions[ref];
1487
- let fileName = ParserUtils.parseRefType(ref);
1488
- const fileExist = fs.existsSync(path.join(DIST_DEFINITION_DIR, `${fileName}.ts`));
1489
- if (fileExist) {
1490
- fileName = ParserUtils.toCamelCaseWord(ref).replace(".", "").replace(".", "");
1491
- duplicates.set(ref, fileName);
1492
- }
1493
- const { buffer } = new TemplateZod().render(fileName, definition, /* @__PURE__ */ new Map());
1494
- ParserUtils.writeDefinitionFile(DIST_DEFINITION_DIR, fileName, buffer);
1495
- indexImportsSet.add(ParserUtils.getRelativePathToWebSdkSrcFolder(path.join(DIST_DEFINITION_DIR, fileName), targetSrcFolder));
1496
- }
1497
- for (const ref in definitions) {
1498
- const definition = definitions[ref];
1499
- const fileName = ParserUtils.parseRefType(ref);
1500
- const { buffer, duplicateFound } = new TemplateZod().render(fileName, definition, duplicates);
1501
- if (duplicateFound) {
1502
- ParserUtils.writeDefinitionFile(DIST_DEFINITION_DIR, fileName, buffer);
1503
- indexImportsSet.add(ParserUtils.getRelativePathToWebSdkSrcFolder(path.join(DIST_DEFINITION_DIR, fileName), targetSrcFolder));
1504
- }
1505
- }
1506
- for (const arrayClass of arrayDefinitions) {
1507
- const buffer = new TemplateZodArray().render(arrayClass);
1508
- ParserUtils.writeDefinitionFile(DIST_DEFINITION_DIR, arrayClass, buffer);
1509
- indexImportsSet.add(ParserUtils.getRelativePathToWebSdkSrcFolder(path.join(DIST_DEFINITION_DIR, arrayClass), targetSrcFolder));
1510
- }
1511
- ParserUtils.writeXVersion(DIST_DIR, api["x-version"], api.info);
1445
+ const DIST_DIR = (isAdmin) => `${CodeGenerator.getGeneratedFolder(isAdmin)}`;
1446
+ const DIST_DIR_ENDPOINTS = (isAdmin) => path.join(DIST_DIR(isAdmin), "endpoints");
1447
+ const DIST_DEFINITION_DIR = path.join(CodeGenerator.srcFolder(), "generated-definitions");
1448
+ const targetSrcFolder = `${CodeGenerator.srcFolder()}/`;
1449
+ CodeGenerator.prepareDirs(DIST_DEFINITION_DIR, DIST_DIR, DIST_DIR_ENDPOINTS);
1450
+ const mainApiList = [];
1451
+ const generatePublicOrAdmin = (isAdmin) => {
1452
+ const parsedInformationByType = isAdmin ? parsedInformation.admin : parsedInformation.public;
1453
+ const {
1454
+ arrayDefinitions,
1455
+ tagToClassImportsRecord,
1456
+ tagToEndpointClassesRecord,
1457
+ tagToSdkClientRecord,
1458
+ tagToSdkFunctionNamesRecord,
1459
+ tagToSdkImportsRecord
1460
+ } = parsedInformationByType;
1461
+ const writeApiEndpointFiles = (isAdminEndpoint) => {
1462
+ const apiList = [];
1463
+ for (const tag in tagToEndpointClassesRecord) {
1464
+ const { className, classGenName } = ParserUtils.generateClassName(tag, isAdminEndpoint);
1465
+ const classBuffer = tagToEndpointClassesRecord[tag];
1466
+ const imports = [.../* @__PURE__ */ new Set([...tagToSdkImportsRecord[tag], ...Object.values(tagToClassImportsRecord[className])])];
1467
+ const apiImports = [.../* @__PURE__ */ new Set([...tagToSdkImportsRecord[tag], ...Object.values(tagToClassImportsRecord[className])])];
1468
+ apiImports.push(`import { ${classGenName} } from './endpoints/${classGenName}.js'`);
1469
+ ParserUtils.writeClassFile(DIST_DIR_ENDPOINTS(isAdminEndpoint), classGenName, classBuffer, imports);
1470
+ const apiBuffer = tagToSdkClientRecord[tag];
1471
+ const { apiGenName } = ParserUtils.generateApiName(tag, isAdminEndpoint);
1472
+ ParserUtils.writeApiFile(DIST_DIR(isAdminEndpoint), apiGenName, apiBuffer, apiImports, tagToSdkFunctionNamesRecord[tag]);
1473
+ apiList.push(apiGenName);
1474
+ indexImportsSet.add(ParserUtils.getRelativePathToWebSdkSrcFolder(path.join(DIST_DIR_ENDPOINTS(isAdminEndpoint), `${classGenName}`), targetSrcFolder));
1475
+ indexImportsSet.add(ParserUtils.getRelativePathToWebSdkSrcFolder(path.join(DIST_DIR(isAdminEndpoint), `${apiGenName}`), targetSrcFolder));
1476
+ }
1477
+ mainApiList.push(...apiList);
1478
+ indexImportsSet.add(ParserUtils.getRelativePathToWebSdkSrcFolder(path.join(CodeGenerator.srcFolder(), serviceNameTitle), targetSrcFolder));
1479
+ };
1480
+ const writeDefinitions = (api2) => {
1481
+ const duplicates = /* @__PURE__ */ new Map();
1482
+ const definitions = api2?.components?.schemas || api2.definitions;
1483
+ for (const ref in definitions) {
1484
+ const definition = definitions[ref];
1485
+ const fileName = ParserUtils.parseRefType(ref);
1486
+ const fileExist = fs.existsSync(path.join(DIST_DEFINITION_DIR, `${fileName}.ts`));
1487
+ if (fileExist) {
1488
+ const duplicateName = ParserUtils.toCamelCaseWord(ref).replace(".", "").replace(".", "");
1489
+ duplicates.set(ref, duplicateName);
1490
+ }
1491
+ const { buffer } = new TemplateZod().render(fileName, definition, /* @__PURE__ */ new Map());
1492
+ ParserUtils.writeDefinitionFile(DIST_DEFINITION_DIR, fileName, buffer);
1493
+ indexImportsSet.add(ParserUtils.getRelativePathToWebSdkSrcFolder(path.join(DIST_DEFINITION_DIR, fileName), targetSrcFolder));
1494
+ }
1495
+ for (const arrayClass of arrayDefinitions) {
1496
+ const buffer = new TemplateZodArray().render(arrayClass);
1497
+ ParserUtils.writeDefinitionFile(DIST_DEFINITION_DIR, arrayClass, buffer);
1498
+ indexImportsSet.add(ParserUtils.getRelativePathToWebSdkSrcFolder(path.join(DIST_DEFINITION_DIR, arrayClass), targetSrcFolder));
1499
+ }
1500
+ };
1501
+ writeApiEndpointFiles(isAdmin);
1502
+ writeDefinitions(api);
1503
+ };
1504
+ generatePublicOrAdmin(true);
1505
+ generatePublicOrAdmin(false);
1506
+ const apiIndexBuff = templateApiIndex(serviceName, serviceNameTitle, mainApiList);
1507
+ ParserUtils.writeApiMainFile(CodeGenerator.srcFolder(), serviceNameTitle, apiIndexBuff);
1512
1508
  console.log("\nCOMPLETED\n----------\n\n");
1513
1509
  return indexImportsSet;
1514
1510
  };
@@ -1575,17 +1571,7 @@ class SwaggerDownloader {
1575
1571
  };
1576
1572
  }
1577
1573
 
1578
- yargs.command("download-swaggers", "Download swaggers JSON files", (yargs2) => {
1579
- CliParser.createInstance(yargs2);
1580
- SwaggerDownloader.main();
1581
- }).command("generate-code", "Generate code based on downloaded swagger files", async (yargs2) => {
1582
- yargs2.check(({ output }) => {
1583
- if (!output?.trim()) {
1584
- throw new Error("output is required for generate-code");
1585
- }
1586
- return true;
1587
- });
1588
- CliParser.createInstance(yargs2);
1574
+ const generateSdk = async () => {
1589
1575
  const arrayOfSets = await Promise.all(CliParser.getConfigFile().map((config) => CodeGenerator.main(config)));
1590
1576
  const indexImportsSet = /* @__PURE__ */ new Set();
1591
1577
  const filenamesSet = /* @__PURE__ */ new Set();
@@ -1602,7 +1588,20 @@ yargs.command("download-swaggers", "Download swaggers JSON files", (yargs2) => {
1602
1588
  const filesToImport = indexImportsArray.map((fileToImport) => {
1603
1589
  return `export * from '${fileToImport.replace("\\", "/")}.js'`;
1604
1590
  });
1605
- ParserUtils.writeAllImportsFile(CliParser.getOutputPath(), filesToImport.join("\n"), CliParser.isAdmin());
1591
+ ParserUtils.writeAllImportsFile(CliParser.getOutputPath(), filesToImport.join("\n"));
1592
+ };
1593
+ yargs.command("download-swaggers", "Download swaggers JSON files", (yargs2) => {
1594
+ CliParser.createInstance(yargs2);
1595
+ SwaggerDownloader.main();
1596
+ }).command("generate-code", "Generate code based on downloaded swagger files", async (yargs2) => {
1597
+ yargs2.check(({ output }) => {
1598
+ if (!output?.trim()) {
1599
+ throw new Error("output is required for generate-code");
1600
+ }
1601
+ return true;
1602
+ });
1603
+ CliParser.createInstance(yargs2);
1604
+ await generateSdk();
1606
1605
  }).option("config", {
1607
1606
  description: "Config file providing backend services URL.",
1608
1607
  type: "string",
@@ -1614,10 +1613,5 @@ yargs.command("download-swaggers", "Download swaggers JSON files", (yargs2) => {
1614
1613
  }).option("output", {
1615
1614
  description: "Output path for generated code. Required for generate-code",
1616
1615
  type: "string"
1617
- }).option("admin", {
1618
- description: "Only generate /admin endpoints.",
1619
- type: "boolean",
1620
- default: false,
1621
- demandOption: false
1622
1616
  }).demandCommand(1).help().argv;
1623
1617
  //# sourceMappingURL=accelbyte-codegen.js.map