api 7.0.0-alpha.2 → 7.0.0-alpha.5

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.
Files changed (64) hide show
  1. package/bin/api.js +2 -0
  2. package/dist/bin.d.ts +1 -0
  3. package/dist/bin.d.ts.map +1 -0
  4. package/dist/bin.js +6 -33
  5. package/dist/bin.js.map +1 -0
  6. package/dist/codegen/{language.d.ts → codegenerator.d.ts} +7 -4
  7. package/dist/codegen/codegenerator.d.ts.map +1 -0
  8. package/dist/codegen/{language.js → codegenerator.js} +4 -6
  9. package/dist/codegen/codegenerator.js.map +1 -0
  10. package/dist/codegen/factory.d.ts +7 -0
  11. package/dist/codegen/factory.d.ts.map +1 -0
  12. package/dist/codegen/factory.js +14 -0
  13. package/dist/codegen/factory.js.map +1 -0
  14. package/dist/codegen/languages/typescript/index.d.ts +90 -0
  15. package/dist/codegen/languages/typescript/index.d.ts.map +1 -0
  16. package/dist/codegen/languages/{typescript.js → typescript/index.js} +260 -206
  17. package/dist/codegen/languages/typescript/index.js.map +1 -0
  18. package/dist/codegen/languages/typescript/util.d.ts +1 -0
  19. package/dist/codegen/languages/typescript/util.d.ts.map +1 -0
  20. package/dist/codegen/languages/typescript/util.js +10 -18
  21. package/dist/codegen/languages/typescript/util.js.map +1 -0
  22. package/dist/commands/index.d.ts +1 -0
  23. package/dist/commands/index.d.ts.map +1 -0
  24. package/dist/commands/index.js +4 -8
  25. package/dist/commands/index.js.map +1 -0
  26. package/dist/commands/install.d.ts +1 -0
  27. package/dist/commands/install.d.ts.map +1 -0
  28. package/dist/commands/install.js +52 -67
  29. package/dist/commands/install.js.map +1 -0
  30. package/dist/fetcher.d.ts +1 -0
  31. package/dist/fetcher.d.ts.map +1 -0
  32. package/dist/fetcher.js +12 -17
  33. package/dist/fetcher.js.map +1 -0
  34. package/dist/lib/prompt.d.ts +1 -0
  35. package/dist/lib/prompt.d.ts.map +1 -0
  36. package/dist/lib/prompt.js +4 -9
  37. package/dist/lib/prompt.js.map +1 -0
  38. package/dist/logger.d.ts +1 -0
  39. package/dist/logger.d.ts.map +1 -0
  40. package/dist/logger.js +4 -9
  41. package/dist/logger.js.map +1 -0
  42. package/dist/packageInfo.d.ts +2 -1
  43. package/dist/packageInfo.d.ts.map +1 -0
  44. package/dist/packageInfo.js +3 -5
  45. package/dist/packageInfo.js.map +1 -0
  46. package/dist/storage.d.ts +2 -1
  47. package/dist/storage.d.ts.map +1 -0
  48. package/dist/storage.js +43 -40
  49. package/dist/storage.js.map +1 -0
  50. package/package.json +12 -10
  51. package/src/bin.ts +2 -2
  52. package/src/codegen/{language.ts → codegenerator.ts} +15 -6
  53. package/src/codegen/factory.ts +23 -0
  54. package/src/codegen/languages/{typescript.ts → typescript/index.ts} +269 -203
  55. package/src/commands/index.ts +1 -1
  56. package/src/commands/install.ts +21 -35
  57. package/src/packageInfo.ts +1 -1
  58. package/src/storage.ts +14 -5
  59. package/tsconfig.json +3 -10
  60. package/bin/api +0 -2
  61. package/dist/codegen/index.d.ts +0 -4
  62. package/dist/codegen/index.js +0 -23
  63. package/dist/codegen/languages/typescript.d.ts +0 -111
  64. package/src/codegen/index.ts +0 -31
package/bin/api.js ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import '../dist/bin.js';
package/dist/bin.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
package/dist/bin.js CHANGED
@@ -1,36 +1,8 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const commander_1 = require("commander");
30
- const commands_1 = __importDefault(require("./commands"));
31
- const pkg = __importStar(require("./packageInfo"));
1
+ import { Command } from 'commander';
2
+ import commands from './commands/index.js';
3
+ import * as pkg from './packageInfo.js';
32
4
  (async () => {
33
- const program = new commander_1.Command();
5
+ const program = new Command();
34
6
  program.name(pkg.PACKAGE_NAME);
35
7
  program.version(pkg.PACKAGE_VERSION);
36
8
  /**
@@ -38,8 +10,9 @@ const pkg = __importStar(require("./packageInfo"));
38
10
  * programatically doing it like this because it's cleaner for us to let Commander manage option
39
11
  * and argument parsing within this file than having each command manage that itself.
40
12
  */
41
- Object.entries(commands_1.default).forEach(([, cmd]) => {
13
+ Object.entries(commands).forEach(([, cmd]) => {
42
14
  program.addCommand(cmd);
43
15
  });
44
16
  await program.parseAsync(process.argv);
45
17
  })();
18
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAExC,CAAC,KAAK,IAAI,EAAE;IACV,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC/B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAErC;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAoB,EAAE,EAAE;QAC9D,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC,CAAC,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import type Storage from '../storage';
1
+ import type Storage from '../storage.js';
2
2
  import type Oas from 'oas';
3
3
  export interface InstallerOptions {
4
4
  /**
@@ -11,7 +11,7 @@ export interface InstallerOptions {
11
11
  */
12
12
  logger?: (msg: string) => void;
13
13
  }
14
- export default abstract class CodeGeneratorLanguage {
14
+ export default abstract class CodeGenerator {
15
15
  spec: Oas;
16
16
  specPath: string;
17
17
  identifier: string;
@@ -19,9 +19,12 @@ export default abstract class CodeGeneratorLanguage {
19
19
  requiredPackages: Record<string, {
20
20
  reason: string;
21
21
  url: string;
22
+ version: string;
22
23
  }>;
23
24
  constructor(spec: Oas, specPath: string, identifier: string);
24
- abstract generator(): Promise<Record<string, string>>;
25
- abstract installer(storage: Storage, opts?: InstallerOptions): Promise<void>;
25
+ abstract generate(): Promise<Record<string, string>>;
26
+ abstract install(storage: Storage, opts?: InstallerOptions): Promise<void>;
27
+ abstract compile(storage: Storage, opts?: InstallerOptions): Promise<void>;
26
28
  hasRequiredPackages(): boolean;
27
29
  }
30
+ //# sourceMappingURL=codegenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegenerator.d.ts","sourceRoot":"","sources":["../../src/codegen/codegenerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAI3B,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,aAAa;IACzC,IAAI,EAAE,GAAG,CAAC;IAEV,QAAQ,EAAE,MAAM,CAAC;IAEjB,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,MAAM,CAAC;IAElB,gBAAgB,EAAG,MAAM,CACvB,MAAM,EACN;QACE,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CACF,CAAC;gBAEU,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IA4B3D,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEpD,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1E,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1E,mBAAmB;CAGpB"}
@@ -1,7 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const packageInfo_1 = require("../packageInfo");
4
- class CodeGeneratorLanguage {
1
+ import { PACKAGE_NAME, PACKAGE_VERSION } from '../packageInfo.js';
2
+ export default class CodeGenerator {
5
3
  spec;
6
4
  specPath;
7
5
  identifier;
@@ -15,7 +13,7 @@ class CodeGeneratorLanguage {
15
13
  // used to generate the SDK. For example, this'll look like `petstore/1.0.0 (api/4.2.0)` for
16
14
  // a `petstore` spec installed on api@4.2.0.
17
15
  const info = spec.getDefinition().info;
18
- this.userAgent = `${identifier}/${info.version} (${packageInfo_1.PACKAGE_NAME}/${packageInfo_1.PACKAGE_VERSION})`;
16
+ this.userAgent = `${identifier}/${info.version} (${PACKAGE_NAME}/${PACKAGE_VERSION})`;
19
17
  /**
20
18
  * This check is barbaric but there are a number of issues with how the `transformer` work we
21
19
  * have in `oas` and in `.getParametersAsJSONSchema()` and `.getResponseAsJSONSchema()` that
@@ -34,4 +32,4 @@ class CodeGeneratorLanguage {
34
32
  return Boolean(Object.keys(this.requiredPackages));
35
33
  }
36
34
  }
37
- exports.default = CodeGeneratorLanguage;
35
+ //# sourceMappingURL=codegenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegenerator.js","sourceRoot":"","sources":["../../src/codegen/codegenerator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAelE,MAAM,CAAC,OAAO,OAAgB,aAAa;IACzC,IAAI,CAAM;IAEV,QAAQ,CAAS;IAEjB,UAAU,CAAS;IAEnB,SAAS,CAAS;IAElB,gBAAgB,CAOd;IAEF,YAAY,IAAS,EAAE,QAAgB,EAAE,UAAkB;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,6FAA6F;QAC7F,4FAA4F;QAC5F,4CAA4C;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,IAAI,eAAe,GAAG,CAAC;QAEtF;;;;;;;;;WASG;QACH,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACnD,MAAM,IAAI,KAAK,CACb,yHAAyH,CAC1H,CAAC;SACH;IACH,CAAC;IAQD,mBAAmB;QACjB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACrD,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type CodeGenerator from './codegenerator.js';
2
+ import type Oas from 'oas';
3
+ export declare enum SupportedLanguages {
4
+ JS = "js"
5
+ }
6
+ export default function codegenFactory(language: SupportedLanguages, spec: Oas, specPath: string, identifier: string): CodeGenerator;
7
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/codegen/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAI3B,oBAAY,kBAAkB;IAC5B,EAAE,OAAO;CACV;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,aAAa,CAQf"}
@@ -0,0 +1,14 @@
1
+ import TSGenerator from './languages/typescript/index.js';
2
+ export var SupportedLanguages;
3
+ (function (SupportedLanguages) {
4
+ SupportedLanguages["JS"] = "js";
5
+ })(SupportedLanguages || (SupportedLanguages = {}));
6
+ export default function codegenFactory(language, spec, specPath, identifier) {
7
+ switch (language) {
8
+ case SupportedLanguages.JS:
9
+ return new TSGenerator(spec, specPath, identifier);
10
+ default:
11
+ throw new TypeError(`Unsupported language supplied: ${language}`);
12
+ }
13
+ }
14
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/codegen/factory.ts"],"names":[],"mappings":"AAGA,OAAO,WAAW,MAAM,iCAAiC,CAAC;AAE1D,MAAM,CAAN,IAAY,kBAEX;AAFD,WAAY,kBAAkB;IAC5B,+BAAS,CAAA;AACX,CAAC,EAFW,kBAAkB,KAAlB,kBAAkB,QAE7B;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,QAA4B,EAC5B,IAAS,EACT,QAAgB,EAChB,UAAkB;IAElB,QAAQ,QAAQ,EAAE;QAChB,KAAK,kBAAkB,CAAC,EAAE;YACxB,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAErD;YACE,MAAM,IAAI,SAAS,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;KACrE;AACH,CAAC"}
@@ -0,0 +1,90 @@
1
+ import type Storage from '../../../storage.js';
2
+ import type { InstallerOptions } from '../../codegenerator.js';
3
+ import type Oas from 'oas';
4
+ import type { ClassDeclaration } from 'ts-morph';
5
+ import { Project } from 'ts-morph';
6
+ import CodeGenerator from '../../codegenerator.js';
7
+ export default class TSGenerator extends CodeGenerator {
8
+ #private;
9
+ project: Project;
10
+ types: Map<string, string>;
11
+ sdk: ClassDeclaration;
12
+ schemas: Record<string, {
13
+ body?: unknown;
14
+ metadata?: unknown;
15
+ response?: Record<string, unknown>;
16
+ } | Record<string, unknown>>;
17
+ usesHTTPMethodRangeInterface: boolean;
18
+ constructor(spec: Oas, specPath: string, identifier: string);
19
+ install(storage: Storage, opts?: InstallerOptions): Promise<void>;
20
+ /**
21
+ * Compile the TS code we generated into JS for use in CJS and ESM environments.
22
+ *
23
+ */
24
+ compile(storage: Storage, opts?: InstallerOptions): Promise<void>;
25
+ /**
26
+ * Generate the current OpenAPI definition into a TypeScript library.
27
+ *
28
+ */
29
+ generate(): Promise<{
30
+ [x: string]: string;
31
+ }>;
32
+ /**
33
+ * Create our main SDK source file.
34
+ *
35
+ */
36
+ private createSDKSource;
37
+ /**
38
+ * Create the `tsconfig.json` file that will allow this SDK to be compiled for use.
39
+ *
40
+ */
41
+ createTSConfig(): import("ts-morph").SourceFile;
42
+ /**
43
+ * Create the `package.json` file that will ultimately make this SDK available to use.
44
+ *
45
+ */
46
+ createPackageJSON(): import("ts-morph").SourceFile;
47
+ /**
48
+ * Create our main schemas file. This is where all of the JSON Schema that our TypeScript typing
49
+ * infrastructure sources its data from. Without this there are no types.
50
+ *
51
+ */
52
+ private createSchemasFile;
53
+ /**
54
+ * Create our main types file. This sources its data from the JSON Schema `schemas.ts` file and
55
+ * will re-export types to be used in TypeScript implementations and IDE intellisense. This
56
+ * typing work is functional with the `json-schema-to-ts` library.
57
+ *
58
+ * @see {@link https://npm.im/json-schema-to-ts}
59
+ */
60
+ private createTypesFile;
61
+ /**
62
+ * Create operation accessors on the SDK.
63
+ *
64
+ */
65
+ private createOperationAccessor;
66
+ /**
67
+ * Scour through the current OpenAPI definition and compile a store of every operation, along
68
+ * with every HTTP method that's in use, and their available TypeScript types that we can use,
69
+ * along with every HTTP method that's in use.
70
+ *
71
+ */
72
+ private loadOperationsAndMethods;
73
+ /**
74
+ * Compile the parameter (path, query, cookie, and header) schemas for an API operation into
75
+ * usable TypeScript types.
76
+ *
77
+ */
78
+ private prepareParameterTypesForOperation;
79
+ /**
80
+ * Compile the response schemas for an API operation into usable TypeScript types.
81
+ *
82
+ */
83
+ private prepareResponseTypesForOperation;
84
+ /**
85
+ * Add a given schema into our schema dataset that we'll be be exporting as types.
86
+ *
87
+ */
88
+ private addSchemaToExport;
89
+ }
90
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/codegen/languages/typescript/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAI3B,OAAO,KAAK,EACV,gBAAgB,EAMjB,MAAM,UAAU,CAAC;AASlB,OAAO,EAAmB,OAAO,EAAoD,MAAM,UAAU,CAAC;AAGtG,OAAO,aAAa,MAAM,wBAAwB,CAAC;AAiCnD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,aAAa;;IACpD,OAAO,EAAE,OAAO,CAAC;IAEjB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3B,GAAG,EAAG,gBAAgB,CAAC;IAEvB,OAAO,EAAE,MAAM,CACb,MAAM,EAEJ;QACE,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GAED,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC1B,CAAC;IAEF,4BAA4B,UAAS;gBAEzB,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IA8CrD,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC3E;;;OAGG;IAEG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB3E;;;OAGG;IACG,QAAQ;;;IAqDd;;;OAGG;IACH,OAAO,CAAC,eAAe;IA4JvB;;;OAGG;IACH,cAAc;IAmBd;;;OAGG;IACH,iBAAiB;IAiEjB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAyDzB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAevB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAuM/B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAoChC;;;;OAIG;IACH,OAAO,CAAC,iCAAiC;IAiDzC;;;OAGG;IACH,OAAO,CAAC,gCAAgC;IAiExC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAsB1B"}