@apimatic/cli 1.1.0-alpha.8 → 1.1.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.
- package/README.md +436 -374
- package/bin/run.js +5 -0
- package/lib/actions/action-result.d.ts +13 -0
- package/lib/actions/action-result.js +44 -0
- package/lib/actions/action-result.js.map +1 -0
- package/lib/actions/api/transform.d.ts +15 -0
- package/lib/actions/api/transform.js +48 -0
- package/lib/actions/api/transform.js.map +1 -0
- package/lib/actions/api/validate.d.ts +12 -0
- package/lib/actions/api/validate.js +41 -0
- package/lib/actions/api/validate.js.map +1 -0
- package/lib/actions/auth/login.d.ts +13 -0
- package/lib/actions/auth/login.js +55 -0
- package/lib/actions/auth/login.js.map +1 -0
- package/lib/actions/auth/logout.d.ts +8 -0
- package/lib/actions/auth/logout.js +15 -0
- package/lib/actions/auth/logout.js.map +1 -0
- package/lib/actions/auth/status.d.ts +11 -0
- package/lib/actions/auth/status.js +26 -0
- package/lib/actions/auth/status.js.map +1 -0
- package/lib/actions/portal/copilot.d.ts +16 -0
- package/lib/actions/portal/copilot.js +89 -0
- package/lib/actions/portal/copilot.js.map +1 -0
- package/lib/actions/portal/generate.d.ts +11 -5
- package/lib/actions/portal/generate.js +60 -55
- package/lib/actions/portal/generate.js.map +1 -0
- package/lib/actions/portal/quickstart.d.ts +16 -0
- package/lib/actions/portal/quickstart.js +146 -0
- package/lib/actions/portal/quickstart.js.map +1 -0
- package/lib/actions/portal/recipe/new-recipe.d.ts +15 -0
- package/lib/actions/portal/recipe/new-recipe.js +177 -0
- package/lib/actions/portal/recipe/new-recipe.js.map +1 -0
- package/lib/actions/portal/serve.d.ts +15 -0
- package/lib/actions/portal/serve.js +118 -0
- package/lib/actions/portal/serve.js.map +1 -0
- package/lib/actions/portal/toc/new-toc.d.ts +21 -0
- package/lib/actions/portal/toc/new-toc.js +97 -0
- package/lib/actions/portal/toc/new-toc.js.map +1 -0
- package/lib/actions/quickstart.d.ts +10 -0
- package/lib/actions/quickstart.js +30 -0
- package/lib/actions/quickstart.js.map +1 -0
- package/lib/actions/sdk/generate.d.ts +13 -0
- package/lib/actions/sdk/generate.js +47 -0
- package/lib/actions/sdk/generate.js.map +1 -0
- package/lib/actions/sdk/quickstart.d.ts +14 -0
- package/lib/actions/sdk/quickstart.js +149 -0
- package/lib/actions/sdk/quickstart.js.map +1 -0
- package/lib/application/portal/recipe/portal-recipe.d.ts +8 -0
- package/lib/application/portal/recipe/portal-recipe.js +33 -0
- package/lib/application/portal/recipe/portal-recipe.js.map +1 -0
- package/lib/application/portal/recipe/recipe-generator.d.ts +21 -0
- package/lib/application/portal/recipe/recipe-generator.js +145 -0
- package/lib/application/portal/recipe/recipe-generator.js.map +1 -0
- package/lib/application/portal/{new/toc → toc}/toc-content-parser.d.ts +1 -1
- package/lib/application/portal/toc/toc-content-parser.js +44 -0
- package/lib/application/portal/toc/toc-content-parser.js.map +1 -0
- package/lib/application/portal/{new/toc → toc}/toc-structure-generator.d.ts +1 -1
- package/lib/application/portal/toc/toc-structure-generator.js +84 -0
- package/lib/application/portal/toc/toc-structure-generator.js.map +1 -0
- package/lib/client-utils/auth-manager.d.ts +7 -2
- package/lib/client-utils/auth-manager.js +26 -14
- package/lib/client-utils/auth-manager.js.map +1 -0
- package/lib/commands/api/transform.d.ts +10 -7
- package/lib/commands/api/transform.js +51 -111
- package/lib/commands/api/transform.js.map +1 -0
- package/lib/commands/api/validate.d.ts +7 -4
- package/lib/commands/api/validate.js +31 -74
- package/lib/commands/api/validate.js.map +1 -0
- package/lib/commands/auth/login.d.ts +3 -1
- package/lib/commands/auth/login.js +26 -68
- package/lib/commands/auth/login.js.map +1 -0
- package/lib/commands/auth/logout.d.ts +3 -1
- package/lib/commands/auth/logout.js +14 -21
- package/lib/commands/auth/logout.js.map +1 -0
- package/lib/commands/auth/status.d.ts +1 -0
- package/lib/commands/auth/status.js +18 -21
- package/lib/commands/auth/status.js.map +1 -0
- package/lib/commands/portal/copilot.d.ts +13 -0
- package/lib/commands/portal/copilot.js +34 -0
- package/lib/commands/portal/copilot.js.map +1 -0
- package/lib/commands/portal/generate.d.ts +7 -11
- package/lib/commands/portal/generate.js +26 -89
- package/lib/commands/portal/generate.js.map +1 -0
- package/lib/commands/portal/recipe/new.d.ts +12 -0
- package/lib/commands/portal/recipe/new.js +45 -0
- package/lib/commands/portal/recipe/new.js.map +1 -0
- package/lib/commands/portal/serve.d.ts +8 -8
- package/lib/commands/portal/serve.js +41 -125
- package/lib/commands/portal/serve.js.map +1 -0
- package/lib/commands/portal/toc/new.d.ts +14 -0
- package/lib/commands/portal/toc/new.js +60 -0
- package/lib/commands/portal/toc/new.js.map +1 -0
- package/lib/commands/quickstart.d.ts +9 -0
- package/lib/commands/quickstart.js +37 -0
- package/lib/commands/quickstart.js.map +1 -0
- package/lib/commands/sdk/generate.d.ts +10 -8
- package/lib/commands/sdk/generate.js +46 -131
- package/lib/commands/sdk/generate.js.map +1 -0
- package/lib/config/axios-config.js +4 -6
- package/lib/config/axios-config.js.map +1 -0
- package/lib/hooks/not-found.d.ts +3 -0
- package/lib/hooks/not-found.js +52 -0
- package/lib/hooks/not-found.js.map +1 -0
- package/lib/hooks/utils.d.ts +5 -0
- package/lib/hooks/utils.js +51 -0
- package/lib/hooks/utils.js.map +1 -0
- package/lib/index.js +2 -5
- package/lib/index.js.map +1 -0
- package/lib/infrastructure/debounce-service.d.ts +10 -0
- package/lib/infrastructure/debounce-service.js +52 -0
- package/lib/infrastructure/debounce-service.js.map +1 -0
- package/lib/infrastructure/env-info.d.ts +12 -0
- package/lib/infrastructure/env-info.js +58 -0
- package/lib/infrastructure/env-info.js.map +1 -0
- package/lib/infrastructure/file-service.d.ts +24 -0
- package/lib/infrastructure/file-service.js +120 -0
- package/lib/infrastructure/file-service.js.map +1 -0
- package/lib/infrastructure/launcher-service.d.ts +9 -0
- package/lib/infrastructure/launcher-service.js +72 -0
- package/lib/infrastructure/launcher-service.js.map +1 -0
- package/lib/infrastructure/network-service.d.ts +3 -0
- package/lib/infrastructure/network-service.js +7 -0
- package/lib/infrastructure/network-service.js.map +1 -0
- package/lib/infrastructure/service-error.d.ts +16 -0
- package/lib/infrastructure/service-error.js +49 -0
- package/lib/infrastructure/service-error.js.map +1 -0
- package/lib/infrastructure/services/api-client-factory.d.ts +6 -0
- package/lib/infrastructure/services/api-client-factory.js +20 -0
- package/lib/infrastructure/services/api-client-factory.js.map +1 -0
- package/lib/infrastructure/services/api-service.d.ts +12 -0
- package/lib/infrastructure/services/api-service.js +79 -0
- package/lib/infrastructure/services/api-service.js.map +1 -0
- package/lib/infrastructure/services/auth-service.d.ts +11 -0
- package/lib/infrastructure/services/auth-service.js +37 -0
- package/lib/infrastructure/services/auth-service.js.map +1 -0
- package/lib/infrastructure/services/file-download-service.d.ts +15 -0
- package/lib/infrastructure/services/file-download-service.js +104 -0
- package/lib/infrastructure/services/file-download-service.js.map +1 -0
- package/lib/infrastructure/services/portal-service.d.ts +17 -12
- package/lib/infrastructure/services/portal-service.js +134 -99
- package/lib/infrastructure/services/portal-service.js.map +1 -0
- package/lib/infrastructure/services/telemetry-service.d.ts +9 -0
- package/lib/infrastructure/services/telemetry-service.js +38 -0
- package/lib/infrastructure/services/telemetry-service.js.map +1 -0
- package/lib/infrastructure/services/transformation-service.d.ts +23 -0
- package/lib/infrastructure/services/transformation-service.js +56 -0
- package/lib/infrastructure/services/transformation-service.js.map +1 -0
- package/lib/infrastructure/services/validation-service.d.ts +17 -0
- package/lib/infrastructure/services/validation-service.js +49 -0
- package/lib/infrastructure/services/validation-service.js.map +1 -0
- package/lib/infrastructure/tmp-extensions.d.ts +2 -0
- package/lib/infrastructure/tmp-extensions.js +6 -0
- package/lib/infrastructure/tmp-extensions.js.map +1 -0
- package/lib/infrastructure/zip-service.d.ts +6 -0
- package/lib/infrastructure/zip-service.js +39 -0
- package/lib/infrastructure/zip-service.js.map +1 -0
- package/lib/prompts/api/transform.d.ts +11 -0
- package/lib/prompts/api/transform.js +29 -0
- package/lib/prompts/api/transform.js.map +1 -0
- package/lib/prompts/api/validate.d.ts +12 -0
- package/lib/prompts/api/validate.js +40 -0
- package/lib/prompts/api/validate.js.map +1 -0
- package/lib/prompts/auth/login.d.ts +10 -0
- package/lib/prompts/auth/login.js +22 -0
- package/lib/prompts/auth/login.js.map +1 -0
- package/lib/prompts/auth/logout.d.ts +3 -0
- package/lib/prompts/auth/logout.js +7 -0
- package/lib/prompts/auth/logout.js.map +1 -0
- package/lib/prompts/auth/status.d.ts +8 -0
- package/lib/prompts/auth/status.js +22 -0
- package/lib/prompts/auth/status.js.map +1 -0
- package/lib/prompts/format.d.ts +31 -0
- package/lib/prompts/format.js +89 -0
- package/lib/prompts/format.js.map +1 -0
- package/lib/prompts/portal/copilot.d.ts +18 -0
- package/lib/prompts/portal/copilot.js +82 -0
- package/lib/prompts/portal/copilot.js.map +1 -0
- package/lib/prompts/portal/generate.d.ts +13 -8
- package/lib/prompts/portal/generate.js +36 -53
- package/lib/prompts/portal/generate.js.map +1 -0
- package/lib/prompts/portal/quickstart.d.ts +28 -29
- package/lib/prompts/portal/quickstart.js +102 -185
- package/lib/prompts/portal/quickstart.js.map +1 -0
- package/lib/prompts/portal/recipe/new-recipe.d.ts +29 -0
- package/lib/prompts/portal/recipe/new-recipe.js +165 -0
- package/lib/prompts/portal/recipe/new-recipe.js.map +1 -0
- package/lib/prompts/portal/serve.d.ts +9 -5
- package/lib/prompts/portal/serve.js +29 -19
- package/lib/prompts/portal/serve.js.map +1 -0
- package/lib/prompts/portal/toc/new-toc.d.ts +15 -0
- package/lib/prompts/portal/toc/new-toc.js +38 -0
- package/lib/prompts/portal/toc/new-toc.js.map +1 -0
- package/lib/prompts/prompt.d.ts +3 -0
- package/lib/prompts/prompt.js +37 -0
- package/lib/prompts/prompt.js.map +1 -0
- package/lib/prompts/quickstart.d.ts +6 -0
- package/lib/prompts/quickstart.js +25 -0
- package/lib/prompts/quickstart.js.map +1 -0
- package/lib/prompts/sdk/generate.d.ts +11 -0
- package/lib/prompts/sdk/generate.js +37 -0
- package/lib/prompts/sdk/generate.js.map +1 -0
- package/lib/prompts/sdk/quickstart.d.ts +32 -0
- package/lib/prompts/sdk/quickstart.js +140 -0
- package/lib/prompts/sdk/quickstart.js.map +1 -0
- package/lib/types/api/account.d.ts +10 -0
- package/lib/types/api/account.js +2 -0
- package/lib/types/api/account.js.map +1 -0
- package/lib/types/api/transform.d.ts +14 -25
- package/lib/types/api/transform.js +20 -23
- package/lib/types/api/transform.js.map +1 -0
- package/lib/types/build/build.d.ts +22 -0
- package/lib/types/build/build.js +7 -0
- package/lib/types/build/build.js.map +1 -0
- package/lib/types/build-context.d.ts +13 -0
- package/lib/types/build-context.js +33 -0
- package/lib/types/build-context.js.map +1 -0
- package/lib/types/common/command-metadata.d.ts +4 -0
- package/lib/types/common/command-metadata.js +2 -0
- package/lib/types/common/command-metadata.js.map +1 -0
- package/lib/types/events/domain-event.d.ts +8 -0
- package/lib/types/events/domain-event.js +11 -0
- package/lib/types/events/domain-event.js.map +1 -0
- package/lib/types/events/quickstart-completed.d.ts +7 -0
- package/lib/types/events/quickstart-completed.js +10 -0
- package/lib/types/events/quickstart-completed.js.map +1 -0
- package/lib/types/events/quickstart-initiated.d.ts +7 -0
- package/lib/types/events/quickstart-initiated.js +10 -0
- package/lib/types/events/quickstart-initiated.js.map +1 -0
- package/lib/types/events/recipe-creation-failed.d.ts +5 -0
- package/lib/types/events/recipe-creation-failed.js +8 -0
- package/lib/types/events/recipe-creation-failed.js.map +1 -0
- package/lib/types/events/toc-creation-failed.d.ts +5 -0
- package/lib/types/events/toc-creation-failed.js +8 -0
- package/lib/types/events/toc-creation-failed.js.map +1 -0
- package/lib/types/file/directory.d.ts +17 -0
- package/lib/types/file/directory.js +87 -0
- package/lib/types/file/directory.js.map +1 -0
- package/lib/types/file/directoryPath.d.ts +10 -0
- package/lib/types/file/directoryPath.js +26 -0
- package/lib/types/file/directoryPath.js.map +1 -0
- package/lib/types/file/fileName.d.ts +7 -0
- package/lib/types/file/fileName.js +21 -0
- package/lib/types/file/fileName.js.map +1 -0
- package/lib/types/file/filePath.d.ts +10 -0
- package/lib/types/file/filePath.js +32 -0
- package/lib/types/file/filePath.js.map +1 -0
- package/lib/types/file/resource-input.d.ts +5 -0
- package/lib/types/file/resource-input.js +42 -0
- package/lib/types/file/resource-input.js.map +1 -0
- package/lib/types/file/urlPath.d.ts +6 -0
- package/lib/types/file/urlPath.js +22 -0
- package/lib/types/file/urlPath.js.map +1 -0
- package/lib/types/flags-provider.d.ts +15 -0
- package/lib/types/flags-provider.js +34 -0
- package/lib/types/flags-provider.js.map +1 -0
- package/lib/types/portal-context.d.ts +13 -0
- package/lib/types/portal-context.js +38 -0
- package/lib/types/portal-context.js.map +1 -0
- package/lib/types/recipe/recipe.d.ts +22 -0
- package/lib/types/recipe/recipe.js +6 -0
- package/lib/types/recipe/recipe.js.map +1 -0
- package/lib/types/recipe-context.d.ts +9 -0
- package/lib/types/recipe-context.js +26 -0
- package/lib/types/recipe-context.js.map +1 -0
- package/lib/types/resource-context.d.ts +12 -0
- package/lib/types/resource-context.js +30 -0
- package/lib/types/resource-context.js.map +1 -0
- package/lib/types/sdk/generate.d.ts +9 -22
- package/lib/types/sdk/generate.js +25 -14
- package/lib/types/sdk/generate.js.map +1 -0
- package/lib/types/sdk-context.d.ts +14 -0
- package/lib/types/sdk-context.js +32 -0
- package/lib/types/sdk-context.js.map +1 -0
- package/lib/types/sdl/sdl.d.ts +10 -0
- package/lib/types/sdl/sdl.js +47 -3
- package/lib/types/sdl/sdl.js.map +1 -0
- package/lib/types/spec-context.d.ts +12 -0
- package/lib/types/spec-context.js +29 -0
- package/lib/types/spec-context.js.map +1 -0
- package/lib/types/temp-context.d.ts +11 -0
- package/lib/types/temp-context.js +27 -0
- package/lib/types/temp-context.js.map +1 -0
- package/lib/types/toc/toc.js +2 -10
- package/lib/types/toc/toc.js.map +1 -0
- package/lib/types/toc-context.d.ts +12 -0
- package/lib/types/toc-context.js +26 -0
- package/lib/types/toc-context.js.map +1 -0
- package/lib/types/transform-context.d.ts +13 -0
- package/lib/types/transform-context.js +30 -0
- package/lib/types/transform-context.js.map +1 -0
- package/lib/types/utils.d.ts +0 -9
- package/lib/types/utils.js +2 -3
- package/lib/types/utils.js.map +1 -0
- package/lib/utils/string-utils.d.ts +2 -0
- package/lib/utils/string-utils.js +37 -0
- package/lib/utils/string-utils.js.map +1 -0
- package/lib/utils/utils.d.ts +2 -44
- package/lib/utils/utils.js +14 -366
- package/lib/utils/utils.js.map +1 -0
- package/package.json +50 -31
- package/bin/run +0 -9
- package/lib/actions/portal/new/toc.d.ts +0 -17
- package/lib/actions/portal/new/toc.js +0 -134
- package/lib/application/portal/new/toc/sdl-parser.d.ts +0 -13
- package/lib/application/portal/new/toc/sdl-parser.js +0 -53
- package/lib/application/portal/new/toc/toc-content-parser.js +0 -46
- package/lib/application/portal/new/toc/toc-structure-generator.js +0 -88
- package/lib/client-utils/sdk-client.d.ts +0 -23
- package/lib/client-utils/sdk-client.js +0 -124
- package/lib/commands/portal/new/toc.d.ts +0 -15
- package/lib/commands/portal/new/toc.js +0 -65
- package/lib/commands/portal/quickstart.d.ts +0 -10
- package/lib/commands/portal/quickstart.js +0 -79
- package/lib/config/env.d.ts +0 -27
- package/lib/config/env.js +0 -31
- package/lib/controllers/api/transform.d.ts +0 -5
- package/lib/controllers/api/transform.js +0 -56
- package/lib/controllers/api/validate.d.ts +0 -3
- package/lib/controllers/api/validate.js +0 -33
- package/lib/controllers/portal/generate.d.ts +0 -3
- package/lib/controllers/portal/generate.js +0 -110
- package/lib/controllers/portal/quickstart.d.ts +0 -14
- package/lib/controllers/portal/quickstart.js +0 -258
- package/lib/controllers/portal/serve.d.ts +0 -3
- package/lib/controllers/portal/serve.js +0 -138
- package/lib/controllers/sdk/generate.d.ts +0 -4
- package/lib/controllers/sdk/generate.js +0 -66
- package/lib/prompts/portal/new/toc.d.ts +0 -10
- package/lib/prompts/portal/new/toc.js +0 -46
- package/lib/services/portal/server.d.ts +0 -14
- package/lib/services/portal/server.js +0 -101
- package/lib/types/api/validate.d.ts +0 -12
- package/lib/types/api/validate.js +0 -3
- package/lib/types/common/result.d.ts +0 -17
- package/lib/types/common/result.js +0 -36
- package/lib/types/portal/generate.d.ts +0 -26
- package/lib/types/portal/generate.js +0 -4
- package/lib/types/portal/quickstart.d.ts +0 -17
- package/lib/types/portal/quickstart.js +0 -3
- package/lib/validators/common/directoryValidator.d.ts +0 -9
- package/lib/validators/common/directoryValidator.js +0 -53
- package/lib/validators/common/portValidator.d.ts +0 -5
- package/lib/validators/common/portValidator.js +0 -20
- package/lib/validators/portal/serveValidator.d.ts +0 -6
- package/lib/validators/portal/serveValidator.js +0 -21
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Client, Environment } from "@apimatic/sdk";
|
|
2
|
+
import { envInfo } from "../env-info.js";
|
|
3
|
+
export class ApiClientFactory {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.TIMEOUT = 0;
|
|
6
|
+
this.createApiClient = (authorizationHeader, shell) => {
|
|
7
|
+
const baseConfig = {
|
|
8
|
+
customHeaderAuthenticationCredentials: {
|
|
9
|
+
Authorization: authorizationHeader
|
|
10
|
+
},
|
|
11
|
+
userAgent: envInfo.getUserAgent(shell),
|
|
12
|
+
timeout: this.TIMEOUT
|
|
13
|
+
};
|
|
14
|
+
const baseUrl = envInfo.getBaseUrl();
|
|
15
|
+
return new Client(Object.assign(Object.assign(Object.assign({}, baseConfig), { environment: baseUrl ? Environment.Testing : Environment.Production }), (baseUrl && { customUrl: baseUrl })));
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export const apiClientFactory = new ApiClientFactory();
|
|
20
|
+
//# sourceMappingURL=api-client-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client-factory.js","sourceRoot":"","sources":["../../../src/infrastructure/services/api-client-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,OAAO,gBAAgB;IAA7B;QACmB,YAAO,GAAG,CAAC,CAAC;QAEtB,oBAAe,GAAG,CAAC,mBAA2B,EAAE,KAAa,EAAU,EAAE;YAC9E,MAAM,UAAU,GAAG;gBACjB,qCAAqC,EAAE;oBACrC,aAAa,EAAE,mBAAmB;iBACnC;gBACD,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;gBACtC,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC;YAEF,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YACrC,OAAO,IAAI,MAAM,+CACZ,UAAU,KACb,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,KAChE,CAAC,OAAO,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EACtC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
2
|
+
import { SubscriptionInfo } from "../../types/api/account.js";
|
|
3
|
+
import { Result } from "neverthrow";
|
|
4
|
+
import { ServiceError } from "../service-error.js";
|
|
5
|
+
import { PortalGenerationStatusResponse } from "@apimatic/sdk";
|
|
6
|
+
export declare class ApiService {
|
|
7
|
+
private readonly apiBaseUrl;
|
|
8
|
+
getAccountInfo(configDir: DirectoryPath, shell: string, authKey: string | null): Promise<Result<SubscriptionInfo, ServiceError>>;
|
|
9
|
+
getPortalGenerationStatus(requestId: string, configDir: DirectoryPath, shell: string, authKey: string | null): Promise<Result<PortalGenerationStatusResponse, ServiceError>>;
|
|
10
|
+
sendTelemetry(payload: string, authKey: string, shell: string): Promise<Result<string, string | ServiceError>>;
|
|
11
|
+
private axiosInstance;
|
|
12
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { getAuthInfo } from "../../client-utils/auth-manager.js";
|
|
3
|
+
import { envInfo } from "../env-info.js";
|
|
4
|
+
import { err, ok } from "neverthrow";
|
|
5
|
+
import { handleServiceError, ServiceError } from "../service-error.js";
|
|
6
|
+
export class ApiService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.apiBaseUrl = "https://api.apimatic.io";
|
|
9
|
+
}
|
|
10
|
+
async getAccountInfo(configDir, shell, authKey) {
|
|
11
|
+
const authInfo = await getAuthInfo(configDir.toString());
|
|
12
|
+
if (authInfo === null && !authKey) {
|
|
13
|
+
return err(ServiceError.UnAuthorized);
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
const token = authKey || (authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey);
|
|
17
|
+
const response = await this.axiosInstance(shell, token).get("/account/profile");
|
|
18
|
+
if (response.status === 200) {
|
|
19
|
+
return ok(response.data);
|
|
20
|
+
}
|
|
21
|
+
return err(ServiceError.InvalidResponse);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return err(handleServiceError(error));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async getPortalGenerationStatus(requestId, configDir, shell, authKey) {
|
|
28
|
+
const authInfo = await getAuthInfo(configDir.toString());
|
|
29
|
+
if (authInfo === null && !authKey) {
|
|
30
|
+
return err(ServiceError.UnAuthorized);
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const token = authKey || (authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey);
|
|
34
|
+
const response = await this.axiosInstance(shell, token).get(`/portal/v2/${requestId}/status`, {
|
|
35
|
+
headers: { Accept: "application/json" },
|
|
36
|
+
maxRedirects: 0,
|
|
37
|
+
validateStatus: () => true
|
|
38
|
+
});
|
|
39
|
+
if (response.status === 200) {
|
|
40
|
+
return ok(response.data);
|
|
41
|
+
}
|
|
42
|
+
if (response.status === 302) {
|
|
43
|
+
return ok({ status: "Completed" });
|
|
44
|
+
}
|
|
45
|
+
return err(ServiceError.InvalidResponse);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return err(handleServiceError(error));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async sendTelemetry(payload, authKey, shell) {
|
|
52
|
+
try {
|
|
53
|
+
const response = await this.axiosInstance(shell, authKey).post("/telemetry/track", payload, {
|
|
54
|
+
headers: { "Content-Type": "application/json" }
|
|
55
|
+
});
|
|
56
|
+
if (response.status === 200) {
|
|
57
|
+
return ok("telemetry sent");
|
|
58
|
+
}
|
|
59
|
+
return err("Failed to send telemetry data");
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
return err(handleServiceError(error));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
axiosInstance(shell, apiKey) {
|
|
66
|
+
var _a;
|
|
67
|
+
const headers = {
|
|
68
|
+
"User-Agent": envInfo.getUserAgent(shell)
|
|
69
|
+
};
|
|
70
|
+
if (apiKey) {
|
|
71
|
+
headers.Authorization = `X-Auth-Key ${apiKey}`;
|
|
72
|
+
}
|
|
73
|
+
return axios.create({
|
|
74
|
+
baseURL: (_a = envInfo.getBaseUrl()) !== null && _a !== void 0 ? _a : this.apiBaseUrl,
|
|
75
|
+
headers
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=api-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/api-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Result } from "neverthrow";
|
|
2
|
+
import { ServiceError } from "../service-error.js";
|
|
3
|
+
export interface DeviceAuthToken {
|
|
4
|
+
apiKey: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class AuthService {
|
|
7
|
+
private readonly apiBaseUrl;
|
|
8
|
+
private axiosInstance;
|
|
9
|
+
getDeviceLoginUrl(state: string): string;
|
|
10
|
+
getDeviceLoginToken(state: string, shell: string): Promise<Result<DeviceAuthToken, ServiceError>>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { envInfo } from "../env-info.js";
|
|
3
|
+
import { err, ok } from "neverthrow";
|
|
4
|
+
import { ServiceError, handleServiceError } from "../service-error.js";
|
|
5
|
+
export class AuthService {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.apiBaseUrl = "https://auth.apimatic.io";
|
|
8
|
+
}
|
|
9
|
+
axiosInstance(shell) {
|
|
10
|
+
var _a;
|
|
11
|
+
return axios.create({
|
|
12
|
+
baseURL: (_a = envInfo.getAuthBaseUrl()) !== null && _a !== void 0 ? _a : this.apiBaseUrl,
|
|
13
|
+
timeout: 20000,
|
|
14
|
+
headers: {
|
|
15
|
+
"User-Agent": envInfo.getUserAgent(shell)
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
getDeviceLoginUrl(state) {
|
|
20
|
+
var _a;
|
|
21
|
+
return `${(_a = envInfo.getAuthBaseUrl()) !== null && _a !== void 0 ? _a : this.apiBaseUrl}/device-auth/login?state=${state}`;
|
|
22
|
+
}
|
|
23
|
+
async getDeviceLoginToken(state, shell) {
|
|
24
|
+
var _a;
|
|
25
|
+
try {
|
|
26
|
+
const response = await this.axiosInstance(shell).get(`/device-auth/token?state=${state}`);
|
|
27
|
+
if (response.status === 200 && ((_a = response.data) === null || _a === void 0 ? void 0 : _a.apiKey)) {
|
|
28
|
+
return ok({ apiKey: response.data.apiKey });
|
|
29
|
+
}
|
|
30
|
+
return err(ServiceError.InvalidResponse);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
return err(handleServiceError(error));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=auth-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/auth-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAU,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAMvE,MAAM,OAAO,WAAW;IAAxB;QACmB,eAAU,GAAG,0BAAmC,CAAC;IA0BpE,CAAC;IAxBS,aAAa,CAAC,KAAa;;QACjC,OAAO,KAAK,CAAC,MAAM,CAAC;YAClB,OAAO,EAAE,MAAA,OAAO,CAAC,cAAc,EAAE,mCAAI,IAAI,CAAC,UAAU;YACpD,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACP,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;aAC1C;SACF,CAAC,CAAC;IACL,CAAC;IAEM,iBAAiB,CAAC,KAAa;;QACpC,OAAO,GAAG,MAAA,OAAO,CAAC,cAAc,EAAE,mCAAI,IAAI,CAAC,UAAU,4BAA4B,KAAK,EAAE,CAAC;IAC3F,CAAC;IACM,KAAK,CAAC,mBAAmB,CAAC,KAAa,EAAE,KAAa;;QAC3D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;YAC1F,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,KAAI,MAAA,QAAQ,CAAC,IAAI,0CAAE,MAAM,CAAA,EAAE,CAAC;gBACrD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,GAAG,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { UrlPath } from "../../types/file/urlPath.js";
|
|
2
|
+
import { Result } from "neverthrow";
|
|
3
|
+
import { ServiceError } from "../service-error.js";
|
|
4
|
+
import { FileName } from "../../types/file/fileName.js";
|
|
5
|
+
export type FileDownloadResponse = {
|
|
6
|
+
stream: NodeJS.ReadableStream;
|
|
7
|
+
filename: FileName;
|
|
8
|
+
};
|
|
9
|
+
export declare class FileDownloadService {
|
|
10
|
+
downloadFile(url: UrlPath): Promise<Result<FileDownloadResponse, ServiceError>>;
|
|
11
|
+
private parseFilenameFromContentDisposition;
|
|
12
|
+
private getFilenameFromUrl;
|
|
13
|
+
private safeDecodeURIComponent;
|
|
14
|
+
private sanitizeFilename;
|
|
15
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { err, ok } from "neverthrow";
|
|
3
|
+
import { handleServiceError, ServiceError } from "../service-error.js";
|
|
4
|
+
import { FileName } from "../../types/file/fileName.js";
|
|
5
|
+
export class FileDownloadService {
|
|
6
|
+
async downloadFile(url) {
|
|
7
|
+
try {
|
|
8
|
+
const response = await axios.get(url.toString(), {
|
|
9
|
+
responseType: "stream"
|
|
10
|
+
});
|
|
11
|
+
const contentDisposition = response.headers["content-disposition"];
|
|
12
|
+
let filename;
|
|
13
|
+
// Try to parse filename from Content-Disposition (supports filename* as per RFC 5987 and plain filename)
|
|
14
|
+
if (contentDisposition) {
|
|
15
|
+
const parsed = this.parseFilenameFromContentDisposition(contentDisposition);
|
|
16
|
+
if (parsed) {
|
|
17
|
+
filename = new FileName(parsed);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
// ... existing code ...
|
|
21
|
+
// If no filename derived from headers, fallback to URL
|
|
22
|
+
if (!filename) {
|
|
23
|
+
const fromUrl = this.getFilenameFromUrl(url.toString());
|
|
24
|
+
if (fromUrl) {
|
|
25
|
+
filename = new FileName(fromUrl);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
filename = new FileName("file");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Basic guard — responseType: "stream" should always yield a stream
|
|
32
|
+
const data = response.data;
|
|
33
|
+
const isReadableStream = data && typeof data.pipe === "function";
|
|
34
|
+
if (!isReadableStream) {
|
|
35
|
+
return err(ServiceError.InvalidResponse);
|
|
36
|
+
}
|
|
37
|
+
return ok({
|
|
38
|
+
stream: response.data,
|
|
39
|
+
filename
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return err(handleServiceError(error));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
parseFilenameFromContentDisposition(headerValue) {
|
|
47
|
+
// Try RFC 5987: filename*=UTF-8''encoded%20name.ext
|
|
48
|
+
const filenameStarMatch = headerValue.match(/filename\*\s*=\s*([^']*)''([^;]+)/i); // NOSONAR - safe regex for CLI use
|
|
49
|
+
if (filenameStarMatch) {
|
|
50
|
+
const encoded = filenameStarMatch[2].trim();
|
|
51
|
+
try {
|
|
52
|
+
const decoded = decodeURIComponent(encoded);
|
|
53
|
+
return this.sanitizeFilename(decoded);
|
|
54
|
+
}
|
|
55
|
+
catch (_a) {
|
|
56
|
+
// fall through to other strategies
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Try plain: filename="name.ext" or filename=name.ext
|
|
60
|
+
const filenameMatch = headerValue.match(/filename\s*=\s*"?([^";]+)"?/i);
|
|
61
|
+
if (filenameMatch) {
|
|
62
|
+
return this.sanitizeFilename(filenameMatch[1]);
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
getFilenameFromUrl(rawUrl) {
|
|
67
|
+
try {
|
|
68
|
+
const u = new URL(rawUrl);
|
|
69
|
+
const last = u.pathname.split("/").filter(Boolean).pop();
|
|
70
|
+
if (!last)
|
|
71
|
+
return null;
|
|
72
|
+
// Remove any spurious trailing spaces and decode
|
|
73
|
+
const decoded = this.safeDecodeURIComponent(last.trim());
|
|
74
|
+
return this.sanitizeFilename(decoded);
|
|
75
|
+
}
|
|
76
|
+
catch (_a) {
|
|
77
|
+
// Fallback for non-URL-safe strings
|
|
78
|
+
const parts = rawUrl.split("/").filter(Boolean);
|
|
79
|
+
const last = parts.pop();
|
|
80
|
+
if (!last)
|
|
81
|
+
return null;
|
|
82
|
+
return this.sanitizeFilename(this.safeDecodeURIComponent(last));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
safeDecodeURIComponent(value) {
|
|
86
|
+
try {
|
|
87
|
+
return decodeURIComponent(value);
|
|
88
|
+
}
|
|
89
|
+
catch (_a) {
|
|
90
|
+
return value;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
sanitizeFilename(name) {
|
|
94
|
+
// Replace characters not allowed in common filesystems and trim dots/spaces
|
|
95
|
+
const sanitized = name
|
|
96
|
+
.replace('/[<>:"/\\|?*\x00-\x1F]/g', "_")
|
|
97
|
+
.replace(/\s+/g, " ")
|
|
98
|
+
.trim();
|
|
99
|
+
// Avoid names that are empty or only dots/spaces
|
|
100
|
+
const safe = sanitized.replace(/^[. ]+|[. ]+$/g, ""); // NOSONAR - safe regex for CLI use
|
|
101
|
+
return safe.length > 0 ? safe : "file";
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=file-download-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-download-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/file-download-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { ReadStream } from "fs";
|
|
2
|
+
import { Sdl } from "../../types/sdl/sdl.js";
|
|
3
|
+
import { FilePath } from "../../types/file/filePath.js";
|
|
4
|
+
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
5
|
+
import { CommandMetadata } from "../../types/common/command-metadata.js";
|
|
6
|
+
import { Result } from "neverthrow";
|
|
7
|
+
import { Language } from "../../types/sdk/generate.js";
|
|
8
|
+
import { ServiceError } from "../service-error.js";
|
|
4
9
|
export declare class PortalService {
|
|
5
10
|
private readonly CONTENT_TYPE;
|
|
6
|
-
private readonly
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
private readonly fileService;
|
|
12
|
+
private readonly apiService;
|
|
13
|
+
generatePortal(buildPath: FilePath, configDir: DirectoryPath, commandMetadata: CommandMetadata, authKey: string | null): Promise<Result<NodeJS.ReadableStream, ServiceError | NodeJS.ReadableStream>>;
|
|
14
|
+
generateSdk(specPath: FilePath, language: Language, configDir: DirectoryPath, commandMetadata: CommandMetadata, authKey: string | null): Promise<Result<NodeJS.ReadableStream, string>>;
|
|
15
|
+
generateSdl(specFileStream: ReadStream, configDir: DirectoryPath, commandMetadata: CommandMetadata): Promise<Result<Sdl, ServiceError>>;
|
|
10
16
|
private createAuthorizationHeader;
|
|
11
|
-
private
|
|
12
|
-
private
|
|
13
|
-
private
|
|
14
|
-
private
|
|
15
|
-
private saveAndExtractErrorZipFile;
|
|
17
|
+
private createOriginQueryParameter;
|
|
18
|
+
private handleSdkGenerationErrors;
|
|
19
|
+
private parseBadRequestResponse;
|
|
20
|
+
private readonly languagePlatform;
|
|
16
21
|
}
|
|
@@ -1,133 +1,168 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class PortalService {
|
|
1
|
+
import { Accept, ApiError, BadRequestResponseSdkError, CodeGenerationExternalApisController, ContentType, DocsPortalGenerationAsyncController, UnauthorizedResponseError, ProblemDetailsError, FileWrapper, TransformationController, ExportFormats, Platforms } from "@apimatic/sdk";
|
|
2
|
+
import { getAuthInfo } from "../../client-utils/auth-manager.js";
|
|
3
|
+
import { parseStreamBodyToJson } from "../../utils/utils.js";
|
|
4
|
+
import { FileService } from "../file-service.js";
|
|
5
|
+
import { apiClientFactory } from "./api-client-factory.js";
|
|
6
|
+
import { err, ok } from "neverthrow";
|
|
7
|
+
import { Language } from "../../types/sdk/generate.js";
|
|
8
|
+
import { handleServiceError, ServiceError } from "../service-error.js";
|
|
9
|
+
import { ApiService } from "./api-service.js";
|
|
10
|
+
export class PortalService {
|
|
12
11
|
constructor() {
|
|
13
|
-
this.CONTENT_TYPE =
|
|
14
|
-
this.
|
|
12
|
+
this.CONTENT_TYPE = ContentType.EnumMultipartformdata;
|
|
13
|
+
this.fileService = new FileService();
|
|
14
|
+
this.apiService = new ApiService();
|
|
15
15
|
this.createAuthorizationHeader = (authInfo, overrideAuthKey) => {
|
|
16
16
|
const key = overrideAuthKey || (authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey);
|
|
17
17
|
return `X-Auth-Key ${key !== null && key !== void 0 ? key : ""}`;
|
|
18
18
|
};
|
|
19
|
-
this.
|
|
20
|
-
return
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
},
|
|
24
|
-
timeout: this.TIMEOUT
|
|
25
|
-
});
|
|
19
|
+
this.createOriginQueryParameter = (commandName) => {
|
|
20
|
+
return {
|
|
21
|
+
origin: `APIMATIC CLI ${commandName}`
|
|
22
|
+
};
|
|
26
23
|
};
|
|
27
|
-
this.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
this.handlePortalGenerationErrors = async (error, params) => {
|
|
33
|
-
var _a;
|
|
34
|
-
if (error instanceof sdk_1.UnauthorizedResponseError) {
|
|
35
|
-
//401
|
|
36
|
-
const body = await this.parseErrorResponse(error);
|
|
37
|
-
return (0, utils_1.getMessageInRedColor)((_a = body.message) !== null && _a !== void 0 ? _a : "Unauthorized access.");
|
|
38
|
-
}
|
|
39
|
-
else if (error instanceof sdk_1.ProblemDetailsError) {
|
|
40
|
-
//400 & 403
|
|
41
|
-
const body = await this.parseErrorResponse(error);
|
|
42
|
-
const message = body.errors[Object.keys(body.errors)[0]][0];
|
|
43
|
-
return (0, utils_1.getMessageInRedColor)(body.title + "\n- " + message);
|
|
44
|
-
}
|
|
45
|
-
else if (error instanceof sdk_1.ApiError && error.statusCode === 422) {
|
|
46
|
-
//422
|
|
47
|
-
return await this.saveAndExtractErrorZipFile(error, params);
|
|
24
|
+
this.handleSdkGenerationErrors = async (error) => {
|
|
25
|
+
var _a, _b, _c, _d, _e;
|
|
26
|
+
if (error instanceof BadRequestResponseSdkError) {
|
|
27
|
+
//400
|
|
28
|
+
return this.parseBadRequestResponse((_a = error.result) === null || _a === void 0 ? void 0 : _a.message);
|
|
48
29
|
}
|
|
49
|
-
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
return (0, utils_1.getMessageInRedColor)(`${body.message} Please try again or reach out to our team at support@apimatic.io for help if your problem persists.`);
|
|
30
|
+
if (error instanceof UnauthorizedResponseError) {
|
|
31
|
+
//401
|
|
32
|
+
return (_c = (_b = error.result) === null || _b === void 0 ? void 0 : _b.message) !== null && _c !== void 0 ? _c : "Authorization has been denied for this request.";
|
|
53
33
|
}
|
|
54
|
-
|
|
55
|
-
|
|
34
|
+
if (error instanceof ProblemDetailsError) {
|
|
35
|
+
// 403
|
|
36
|
+
const message = (_e = (_d = error.result.errors) === null || _d === void 0 ? void 0 : _d[""]) === null || _e === void 0 ? void 0 : _e[0];
|
|
37
|
+
return error.result.title + "\n- " + message;
|
|
56
38
|
}
|
|
39
|
+
return "An unexpected error occurred while generating the portal, please try again later. If the problem persists, please reach out to our team at support@apimatic.io";
|
|
57
40
|
};
|
|
58
|
-
this.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const data = error.body;
|
|
67
|
-
const writeStream = fs.createWriteStream(params.generatedPortalArtifactsZipFilePath);
|
|
68
|
-
//TODO: Extract zip to temp folder and only copy the the debug report.
|
|
69
|
-
return await new Promise((resolve, reject) => {
|
|
70
|
-
data
|
|
71
|
-
.pipe(writeStream)
|
|
72
|
-
.on("finish", async () => {
|
|
73
|
-
await (0, utils_1.extractZipFile)(params.generatedPortalArtifactsZipFilePath, params.generatedPortalArtifactsFolderPath);
|
|
74
|
-
await (0, utils_1.deleteFile)(params.generatedPortalArtifactsZipFilePath);
|
|
75
|
-
await (0, utils_1.deleteFile)(path.join(params.generatedPortalArtifactsFolderPath, "static"));
|
|
76
|
-
resolve((0, utils_1.getMessageInRedColor)("An error occurred during portal generation due to an issue with the input. An error report has been written at the destination path: " +
|
|
77
|
-
path.join(params.generatedPortalArtifactsFolderPath, "apimatic-debug")));
|
|
78
|
-
})
|
|
79
|
-
.on("error", async () => {
|
|
80
|
-
reject((0, utils_1.getMessageInRedColor)("An error occurred during portal generation due to an issue with the input. The error report could not be generated. Please try again later."));
|
|
81
|
-
});
|
|
82
|
-
});
|
|
41
|
+
this.languagePlatform = {
|
|
42
|
+
[Language.CSHARP]: Platforms.CsNetStandardLib,
|
|
43
|
+
[Language.JAVA]: Platforms.JavaEclipseJreLib,
|
|
44
|
+
[Language.PHP]: Platforms.PhpGenericLibV2,
|
|
45
|
+
[Language.PYTHON]: Platforms.PythonGenericLib,
|
|
46
|
+
[Language.RUBY]: Platforms.RubyGenericLib,
|
|
47
|
+
[Language.TYPESCRIPT]: Platforms.TsGenericLib,
|
|
48
|
+
[Language.GO]: Platforms.GoGenericLib
|
|
83
49
|
};
|
|
84
50
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
51
|
+
// TODO: Pass stream as parameter instead of file path.
|
|
52
|
+
async generatePortal(buildPath, configDir, commandMetadata, authKey) {
|
|
53
|
+
var _a, _b;
|
|
54
|
+
const buildFileStream = await this.fileService.getStream(buildPath);
|
|
55
|
+
const file = new FileWrapper(buildFileStream);
|
|
56
|
+
const authInfo = await getAuthInfo(configDir.toString());
|
|
57
|
+
const authorizationHeader = this.createAuthorizationHeader(authInfo, authKey);
|
|
58
|
+
const client = apiClientFactory.createApiClient(authorizationHeader, commandMetadata.shell);
|
|
59
|
+
const docsPortalAsyncController = new DocsPortalGenerationAsyncController(client);
|
|
60
|
+
let generationId;
|
|
61
|
+
try {
|
|
62
|
+
const portalInstance = await docsPortalAsyncController.generateOnPremPortalViaBuildInputAsync(this.CONTENT_TYPE, file);
|
|
63
|
+
generationId = portalInstance.result.id;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error instanceof ProblemDetailsError) {
|
|
67
|
+
const message = (_b = (_a = Object.values(error.result.errors)[0]) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : null;
|
|
68
|
+
const errorMessage = error.result.title + "\n- " + message;
|
|
69
|
+
if (error.statusCode === 400) {
|
|
70
|
+
return err(ServiceError.badRequest(errorMessage));
|
|
71
|
+
}
|
|
72
|
+
if (error.statusCode === 403) {
|
|
73
|
+
return err(ServiceError.forbidden(errorMessage));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const serviceError = handleServiceError(error);
|
|
77
|
+
return err(serviceError);
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
buildFileStream.close();
|
|
88
81
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
82
|
+
let statusResult;
|
|
83
|
+
do {
|
|
84
|
+
await new Promise((resolve) => setTimeout(resolve, 3000));
|
|
85
|
+
statusResult = await this.apiService.getPortalGenerationStatus(generationId, configDir, commandMetadata.shell, authKey);
|
|
86
|
+
if (statusResult.isErr()) {
|
|
87
|
+
return err(statusResult.error);
|
|
88
|
+
}
|
|
89
|
+
if (statusResult.value.status === "Failed") {
|
|
90
|
+
return err(ServiceError.ServerError);
|
|
91
|
+
}
|
|
92
|
+
} while (statusResult.value.status !== "Completed");
|
|
93
93
|
try {
|
|
94
|
-
const
|
|
95
|
-
return
|
|
94
|
+
const portalDownloadResponse = await docsPortalAsyncController.downloadGeneratedPortal(generationId);
|
|
95
|
+
return ok(portalDownloadResponse.result);
|
|
96
96
|
}
|
|
97
97
|
catch (error) {
|
|
98
|
-
|
|
98
|
+
if (error instanceof ApiError && error.statusCode === 422) {
|
|
99
|
+
return err(error.body);
|
|
100
|
+
}
|
|
101
|
+
return err(handleServiceError(error));
|
|
99
102
|
}
|
|
100
103
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
+
// TODO: Pass stream as parameter instead of file path.
|
|
105
|
+
async generateSdk(specPath, language, configDir, commandMetadata, authKey) {
|
|
106
|
+
const specFileStream = await this.fileService.getStream(specPath);
|
|
107
|
+
const file = new FileWrapper(specFileStream);
|
|
108
|
+
const authInfo = await getAuthInfo(configDir.toString());
|
|
109
|
+
const authorizationHeader = this.createAuthorizationHeader(authInfo, authKey);
|
|
110
|
+
const client = apiClientFactory.createApiClient(authorizationHeader, commandMetadata.shell);
|
|
111
|
+
const sdkGenerationController = new CodeGenerationExternalApisController(client);
|
|
112
|
+
try {
|
|
113
|
+
const response = await sdkGenerationController.generateSdkViaFile(Accept.EnumApplicationjson, file, this.languagePlatform[language], this.createOriginQueryParameter(commandMetadata.commandName));
|
|
114
|
+
const sdkResponse = await sdkGenerationController.downloadSdk(response.result.id);
|
|
115
|
+
return ok(sdkResponse.result);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
return err(await this.handleSdkGenerationErrors(error));
|
|
104
119
|
}
|
|
105
|
-
|
|
120
|
+
finally {
|
|
121
|
+
specFileStream.close();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async generateSdl(specFileStream, configDir, commandMetadata) {
|
|
125
|
+
const file = new FileWrapper(specFileStream);
|
|
126
|
+
const authInfo = await getAuthInfo(configDir.toString());
|
|
106
127
|
const authorizationHeader = this.createAuthorizationHeader(authInfo, null);
|
|
107
|
-
const client =
|
|
108
|
-
const transformationController = new
|
|
128
|
+
const client = apiClientFactory.createApiClient(authorizationHeader, commandMetadata.shell);
|
|
129
|
+
const transformationController = new TransformationController(client);
|
|
109
130
|
try {
|
|
110
|
-
const
|
|
111
|
-
const generation = await transformationController.transformViaFile(sdk_1.ContentType.EnumMultipartformdata, file, sdk_1.ExportFormats.Apimatic);
|
|
131
|
+
const generation = await transformationController.transformViaFile(ContentType.EnumMultipartformdata, file, ExportFormats.Apimatic, this.createOriginQueryParameter(commandMetadata.commandName));
|
|
112
132
|
if (!generation.result.success) {
|
|
113
|
-
return
|
|
133
|
+
return err(ServiceError.InvalidResponse);
|
|
114
134
|
}
|
|
115
135
|
const transformationId = generation.result.id;
|
|
116
136
|
const { result } = await transformationController.downloadTransformedFile(transformationId);
|
|
117
137
|
if (result.readable) {
|
|
118
|
-
return
|
|
138
|
+
return ok((await parseStreamBodyToJson(result)));
|
|
119
139
|
}
|
|
120
140
|
else {
|
|
121
|
-
return
|
|
141
|
+
return err(ServiceError.InvalidResponse);
|
|
122
142
|
}
|
|
123
143
|
}
|
|
124
|
-
catch (
|
|
125
|
-
return
|
|
144
|
+
catch (error) {
|
|
145
|
+
return err(handleServiceError(error));
|
|
126
146
|
}
|
|
127
147
|
}
|
|
128
|
-
|
|
129
|
-
|
|
148
|
+
parseBadRequestResponse(errorMessage) {
|
|
149
|
+
// #TODO: Fix server-side error message and simplify this function
|
|
150
|
+
if (!errorMessage) {
|
|
151
|
+
return "Bad request.";
|
|
152
|
+
}
|
|
153
|
+
// Parse the JSON string
|
|
154
|
+
const parsedResult = JSON.parse(errorMessage);
|
|
155
|
+
// Check if it has the expected structure with Errors
|
|
156
|
+
if (parsedResult.Errors && Array.isArray(parsedResult.Errors) && parsedResult.Errors.length > 0) {
|
|
157
|
+
// Get the first error and clean it up
|
|
158
|
+
return parsedResult.Errors[0].split(".")[0] + ".";
|
|
159
|
+
// Split on <br/> and take the first part, then strip remaining HTML tags
|
|
160
|
+
// return firstError.split("<br/>")[0].replace(/<[^<>]*?>/g, "");
|
|
161
|
+
}
|
|
162
|
+
else if (parsedResult.Success === false) {
|
|
163
|
+
return "API definition file validation failed.";
|
|
164
|
+
}
|
|
165
|
+
return errorMessage;
|
|
130
166
|
}
|
|
131
167
|
}
|
|
132
|
-
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5mcmFzdHJ1Y3R1cmUvc2VydmljZXMvcG9ydGFsLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0NBQW9DO0FBQ3BDLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsdUNBYXVCO0FBQ3ZCLGtFQUF3RTtBQUV4RSxzREFBbUQ7QUFDbkQsNkNBQTRHO0FBSTVHLE1BQWEsYUFBYTtJQUExQjtRQUNtQixpQkFBWSxHQUFHLGlCQUFXLENBQUMscUJBQXFCLENBQUM7UUFDakQsWUFBTyxHQUFHLENBQUMsQ0FBQztRQWdFckIsOEJBQXlCLEdBQUcsQ0FBQyxRQUF5QixFQUFFLGVBQThCLEVBQVUsRUFBRTtZQUN4RyxNQUFNLEdBQUcsR0FBRyxlQUFlLEtBQUksUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLE9BQU8sQ0FBQSxDQUFDO1lBQ2pELE9BQU8sY0FBYyxHQUFHLGFBQUgsR0FBRyxjQUFILEdBQUcsR0FBSSxFQUFFLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUM7UUFFTSxvQkFBZSxHQUFHLENBQUMsbUJBQTJCLEVBQVUsRUFBRTtZQUNoRSxPQUFPLElBQUksWUFBTSxDQUFDO2dCQUNoQixxQ0FBcUMsRUFBRTtvQkFDckMsYUFBYSxFQUFFLG1CQUFtQjtpQkFDbkM7Z0JBQ0QsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2FBQ3RCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVNLG1DQUE4QixHQUFHLEtBQUssRUFDNUMsOEJBQThELEVBQzlELG1CQUEyQixFQUNLLEVBQUU7WUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxpQkFBVyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7WUFDdkUsTUFBTSxRQUFRLEdBQ1osTUFBTSw4QkFBOEIsQ0FBQyxpQ0FBaUMsQ0FBQyxJ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
|
|
168
|
+
//# sourceMappingURL=portal-service.js.map
|