@apimatic/cli 1.1.0-alpha.2 → 1.1.0-alpha.20
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 +249 -99
- package/bin/run.js +5 -0
- package/lib/actions/action-result.d.ts +8 -0
- package/lib/actions/action-result.js +25 -0
- package/lib/actions/action-result.js.map +1 -0
- package/lib/actions/auth/login.d.ts +12 -0
- package/lib/actions/auth/login.js +63 -0
- package/lib/actions/auth/login.js.map +1 -0
- package/lib/actions/portal/copilot.d.ts +11 -0
- package/lib/actions/portal/copilot.js +49 -0
- package/lib/actions/portal/copilot.js.map +1 -0
- package/lib/actions/portal/generate.d.ts +13 -0
- package/lib/actions/portal/generate.js +61 -0
- package/lib/actions/portal/generate.js.map +1 -0
- package/lib/actions/portal/recipe/new-recipe.d.ts +24 -0
- package/lib/actions/portal/recipe/new-recipe.js +250 -0
- package/lib/actions/portal/recipe/new-recipe.js.map +1 -0
- package/lib/actions/portal/serve.d.ts +14 -0
- package/lib/actions/portal/serve.js +24 -0
- package/lib/actions/portal/serve.js.map +1 -0
- package/lib/actions/portal/toc/new-toc.d.ts +20 -0
- package/lib/actions/portal/toc/new-toc.js +133 -0
- package/lib/actions/portal/toc/new-toc.js.map +1 -0
- package/lib/actions/sdk/generate.d.ts +14 -0
- package/lib/actions/sdk/generate.js +72 -0
- package/lib/actions/sdk/generate.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 +16 -0
- package/lib/application/portal/recipe/recipe-generator.js +147 -0
- package/lib/application/portal/recipe/recipe-generator.js.map +1 -0
- package/lib/application/portal/serve/portal-watcher.d.ts +11 -0
- package/lib/application/portal/serve/portal-watcher.js +64 -0
- package/lib/application/portal/serve/portal-watcher.js.map +1 -0
- package/lib/application/portal/serve/serve-handler.d.ts +16 -0
- package/lib/application/portal/serve/serve-handler.js +91 -0
- package/lib/application/portal/serve/serve-handler.js.map +1 -0
- package/lib/application/portal/serve/watcher-handler.d.ts +10 -0
- package/lib/application/portal/serve/watcher-handler.js +51 -0
- package/lib/application/portal/serve/watcher-handler.js.map +1 -0
- package/lib/application/portal/toc/sdl-parser.d.ts +19 -0
- package/lib/application/portal/toc/sdl-parser.js +90 -0
- package/lib/application/portal/toc/sdl-parser.js.map +1 -0
- package/lib/application/portal/toc/toc-content-parser.d.ts +5 -0
- 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/toc/toc-structure-generator.d.ts +6 -0
- 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 +8 -3
- package/lib/client-utils/auth-manager.js +23 -10
- package/lib/client-utils/auth-manager.js.map +1 -0
- package/lib/client-utils/sdk-client.d.ts +0 -1
- package/lib/client-utils/sdk-client.js +25 -55
- package/lib/client-utils/sdk-client.js.map +1 -0
- package/lib/commands/api/transform.d.ts +7 -7
- package/lib/commands/api/transform.js +43 -51
- package/lib/commands/api/transform.js.map +1 -0
- package/lib/commands/api/validate.d.ts +4 -4
- package/lib/commands/api/validate.js +26 -33
- package/lib/commands/api/validate.js.map +1 -0
- package/lib/commands/auth/login.d.ts +3 -2
- package/lib/commands/auth/login.js +22 -53
- package/lib/commands/auth/login.js.map +1 -0
- package/lib/commands/auth/logout.d.ts +1 -1
- package/lib/commands/auth/logout.js +8 -13
- package/lib/commands/auth/logout.js.map +1 -0
- package/lib/commands/auth/status.d.ts +1 -1
- package/lib/commands/auth/status.js +9 -13
- package/lib/commands/auth/status.js.map +1 -0
- package/lib/commands/portal/copilot.d.ts +12 -0
- package/lib/commands/portal/copilot.js +32 -0
- package/lib/commands/portal/copilot.js.map +1 -0
- package/lib/commands/portal/generate.d.ts +10 -8
- package/lib/commands/portal/generate.js +28 -107
- package/lib/commands/portal/generate.js.map +1 -0
- package/lib/commands/portal/quickstart.d.ts +10 -0
- package/lib/commands/portal/quickstart.js +105 -0
- package/lib/commands/portal/quickstart.js.map +1 -0
- package/lib/commands/portal/recipe/new.d.ts +10 -0
- package/lib/commands/portal/recipe/new.js +38 -0
- package/lib/commands/portal/recipe/new.js.map +1 -0
- package/lib/commands/portal/serve.d.ts +16 -0
- package/lib/commands/portal/serve.js +80 -0
- 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 +52 -0
- package/lib/commands/portal/toc/new.js.map +1 -0
- package/lib/commands/sdk/generate.d.ts +9 -8
- package/lib/commands/sdk/generate.js +39 -128
- package/lib/commands/sdk/generate.js.map +1 -0
- package/lib/config/axios-config.d.ts +2 -0
- package/lib/config/axios-config.js +10 -0
- package/lib/config/axios-config.js.map +1 -0
- package/lib/config/env.d.ts +26 -1
- package/lib/config/env.js +27 -4
- package/lib/config/env.js.map +1 -0
- package/lib/controllers/api/transform.d.ts +1 -1
- package/lib/controllers/api/transform.js +23 -22
- package/lib/controllers/api/transform.js.map +1 -0
- package/lib/controllers/api/validate.d.ts +3 -3
- package/lib/controllers/api/validate.js +19 -12
- package/lib/controllers/api/validate.js.map +1 -0
- package/lib/controllers/portal/quickstart.d.ts +15 -0
- package/lib/controllers/portal/quickstart.js +217 -0
- package/lib/controllers/portal/quickstart.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -4
- package/lib/index.js.map +1 -0
- package/lib/infrastructure/api-utils.d.ts +9 -0
- package/lib/infrastructure/api-utils.js +33 -0
- package/lib/infrastructure/api-utils.js.map +1 -0
- package/lib/infrastructure/env-info.d.ts +8 -0
- package/lib/infrastructure/env-info.js +37 -0
- package/lib/infrastructure/env-info.js.map +1 -0
- package/lib/infrastructure/file-service.d.ts +18 -0
- package/lib/infrastructure/file-service.js +76 -0
- package/lib/infrastructure/file-service.js.map +1 -0
- package/lib/infrastructure/services/api-service.d.ts +10 -0
- package/lib/infrastructure/services/api-service.js +54 -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 +33 -0
- package/lib/infrastructure/services/auth-service.js.map +1 -0
- package/lib/infrastructure/services/portal-service.d.ts +20 -0
- package/lib/infrastructure/services/portal-service.js +163 -0
- package/lib/infrastructure/services/portal-service.js.map +1 -0
- package/lib/infrastructure/services/telemetry-service.d.ts +8 -0
- package/lib/infrastructure/services/telemetry-service.js +40 -0
- package/lib/infrastructure/services/telemetry-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/auth/login.d.ts +5 -0
- package/lib/prompts/auth/login.js +13 -0
- package/lib/prompts/auth/login.js.map +1 -0
- package/lib/prompts/portal/common/base-prompts.d.ts +7 -0
- package/lib/prompts/portal/common/base-prompts.js +19 -0
- package/lib/prompts/portal/common/base-prompts.js.map +1 -0
- package/lib/prompts/portal/copilot.d.ts +8 -0
- package/lib/prompts/portal/copilot.js +54 -0
- package/lib/prompts/portal/copilot.js.map +1 -0
- package/lib/prompts/portal/generate.d.ts +11 -0
- package/lib/prompts/portal/generate.js +42 -0
- package/lib/prompts/portal/generate.js.map +1 -0
- package/lib/prompts/portal/quickstart.d.ts +30 -0
- package/lib/prompts/portal/quickstart.js +240 -0
- package/lib/prompts/portal/quickstart.js.map +1 -0
- package/lib/prompts/portal/recipe/new-recipe.d.ts +24 -0
- package/lib/prompts/portal/recipe/new-recipe.js +203 -0
- package/lib/prompts/portal/recipe/new-recipe.js.map +1 -0
- package/lib/prompts/portal/serve.d.ts +4 -0
- package/lib/prompts/portal/serve.js +14 -0
- package/lib/prompts/portal/serve.js.map +1 -0
- package/lib/prompts/portal/toc/new-toc.d.ts +11 -0
- package/lib/prompts/portal/toc/new-toc.js +39 -0
- package/lib/prompts/portal/toc/new-toc.js.map +1 -0
- package/lib/prompts/sdk/generate.d.ts +11 -0
- package/lib/prompts/sdk/generate.js +42 -0
- package/lib/prompts/sdk/generate.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 +19 -4
- package/lib/types/api/transform.js +19 -4
- package/lib/types/api/transform.js.map +1 -0
- package/lib/types/api/validate.d.ts +3 -3
- package/lib/types/api/validate.js +2 -2
- package/lib/types/api/validate.js.map +1 -0
- package/lib/types/build/build.d.ts +14 -0
- package/lib/types/build/build.js +4 -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 +30 -0
- package/lib/types/build-context.js.map +1 -0
- package/lib/types/common/result.d.ts +17 -0
- package/lib/types/common/result.js +32 -0
- package/lib/types/common/result.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/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/directoryPath.d.ts +7 -0
- package/lib/types/file/directoryPath.js +16 -0
- package/lib/types/file/directoryPath.js.map +1 -0
- package/lib/types/file/fileName.d.ts +5 -0
- package/lib/types/file/fileName.js +9 -0
- package/lib/types/file/fileName.js.map +1 -0
- package/lib/types/file/filePath.d.ts +8 -0
- package/lib/types/file/filePath.js +11 -0
- package/lib/types/file/filePath.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/generate.d.ts +13 -9
- package/lib/types/portal/generate.js +3 -2
- package/lib/types/portal/generate.js.map +1 -0
- package/lib/types/portal/quickstart.d.ts +17 -0
- package/lib/types/portal/quickstart.js +2 -0
- package/lib/types/portal/quickstart.js.map +1 -0
- package/lib/types/portal/serve.d.ts +12 -0
- package/lib/types/portal/serve.js +2 -0
- package/lib/types/portal/serve.js.map +1 -0
- package/lib/types/portal-context.d.ts +11 -0
- package/lib/types/portal-context.js +28 -0
- package/lib/types/portal-context.js.map +1 -0
- package/lib/types/recipe/recipe.d.ts +37 -0
- package/lib/types/recipe/recipe.js +6 -0
- package/lib/types/recipe/recipe.js.map +1 -0
- package/lib/types/sdk/generate.d.ts +11 -10
- package/lib/types/sdk/generate.js +11 -12
- package/lib/types/sdk/generate.js.map +1 -0
- package/lib/types/sdk-context.d.ts +13 -0
- package/lib/types/sdk-context.js +28 -0
- package/lib/types/sdk-context.js.map +1 -0
- package/lib/types/sdl/sdl.d.ts +12 -0
- package/lib/types/sdl/sdl.js +2 -0
- package/lib/types/sdl/sdl.js.map +1 -0
- package/lib/types/spec-context.d.ts +7 -0
- package/lib/types/spec-context.js +12 -0
- package/lib/types/spec-context.js.map +1 -0
- package/lib/types/toc/toc.d.ts +31 -0
- package/lib/types/toc/toc.js +9 -0
- package/lib/types/toc/toc.js.map +1 -0
- package/lib/types/utils.d.ts +3 -3
- package/lib/types/utils.js +2 -2
- package/lib/types/utils.js.map +1 -0
- package/lib/utils/utils.d.ts +16 -7
- package/lib/utils/utils.js +142 -86
- package/lib/utils/utils.js.map +1 -0
- package/lib/validators/common/directoryValidator.d.ts +5 -0
- package/lib/validators/common/directoryValidator.js +22 -0
- package/lib/validators/common/directoryValidator.js.map +1 -0
- package/lib/validators/portal/serve-validator.d.ts +6 -0
- package/lib/validators/portal/serve-validator.js +15 -0
- package/lib/validators/portal/serve-validator.js.map +1 -0
- package/package.json +96 -40
- package/bin/run +0 -5
- package/lib/controllers/portal/generate.d.ts +0 -2
- package/lib/controllers/portal/generate.js +0 -49
- package/lib/controllers/sdk/generate.d.ts +0 -4
- package/lib/controllers/sdk/generate.js +0 -64
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new-toc.js","sourceRoot":"","sources":["../../../../src/actions/portal/toc/new-toc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
2
|
+
import { ActionResult } from "../action-result.js";
|
|
3
|
+
import { LanguagePlatform } from "../../types/sdk/generate.js";
|
|
4
|
+
export declare class GenerateAction {
|
|
5
|
+
private readonly prompts;
|
|
6
|
+
private readonly zipArchiver;
|
|
7
|
+
private readonly fileService;
|
|
8
|
+
private readonly portalService;
|
|
9
|
+
private readonly configDir;
|
|
10
|
+
private readonly authKey;
|
|
11
|
+
constructor(configDir: DirectoryPath, authKey?: string | null);
|
|
12
|
+
readonly execute: (specDirectory: DirectoryPath, sdkDirectory: DirectoryPath, platform: LanguagePlatform, force: boolean, zipSdk: boolean) => Promise<ActionResult>;
|
|
13
|
+
private convertSimplePlatformToPlatform;
|
|
14
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ZipService } from "../../infrastructure/zip-service.js";
|
|
2
|
+
import { FileService } from "../../infrastructure/file-service.js";
|
|
3
|
+
import { PortalService } from "../../infrastructure/services/portal-service.js";
|
|
4
|
+
import { FilePath } from "../../types/file/filePath.js";
|
|
5
|
+
import { FileName } from "../../types/file/fileName.js";
|
|
6
|
+
import { ActionResult } from "../action-result.js";
|
|
7
|
+
import { withDirPath } from "../../infrastructure/tmp-extensions.js";
|
|
8
|
+
import { SdkContext } from "../../types/sdk-context.js";
|
|
9
|
+
import { Platforms } from "@apimatic/sdk";
|
|
10
|
+
import { SpecContext } from "../../types/spec-context.js";
|
|
11
|
+
import { SdkGeneratePrompts } from "../../prompts/sdk/generate.js";
|
|
12
|
+
import { LanguagePlatform } from "../../types/sdk/generate.js";
|
|
13
|
+
export class GenerateAction {
|
|
14
|
+
constructor(configDir, authKey = null) {
|
|
15
|
+
this.prompts = new SdkGeneratePrompts();
|
|
16
|
+
this.zipArchiver = new ZipService();
|
|
17
|
+
this.fileService = new FileService();
|
|
18
|
+
this.portalService = new PortalService();
|
|
19
|
+
this.execute = async (specDirectory, sdkDirectory, platform, force, zipSdk) => {
|
|
20
|
+
if (specDirectory.isEqual(sdkDirectory)) {
|
|
21
|
+
return ActionResult.error(`The spec directory and sdk directory cannot be the same: "${specDirectory}"`);
|
|
22
|
+
}
|
|
23
|
+
const specContext = new SpecContext(specDirectory);
|
|
24
|
+
if (!(await specContext.validate())) {
|
|
25
|
+
return ActionResult.error(`The spec directory is either empty or invalid: "${specDirectory}"`);
|
|
26
|
+
}
|
|
27
|
+
const sdkContext = new SdkContext(sdkDirectory, platform);
|
|
28
|
+
if (!force && (await sdkContext.exists()) && !(await this.prompts.overwriteSdk(sdkDirectory))) {
|
|
29
|
+
return ActionResult.error("Please enter a different destination folder or remove the existing files and try again.");
|
|
30
|
+
}
|
|
31
|
+
return await withDirPath(async (tempDirectory) => {
|
|
32
|
+
this.prompts.displaySdkGenerationMessage();
|
|
33
|
+
const specZipPath = new FilePath(tempDirectory, new FileName("spec.zip"));
|
|
34
|
+
await this.zipArchiver.archive(specDirectory, specZipPath);
|
|
35
|
+
const sdkPlatform = this.convertSimplePlatformToPlatform(platform);
|
|
36
|
+
const response = await this.portalService.generateSdk(specZipPath, sdkPlatform, this.configDir, this.authKey);
|
|
37
|
+
if (!response.isSuccess()) {
|
|
38
|
+
this.prompts.displaySdkGenerationErrorMessage();
|
|
39
|
+
return ActionResult.error(response.error);
|
|
40
|
+
}
|
|
41
|
+
const tempSdkFilePath = new FilePath(tempDirectory, new FileName("sdk.zip"));
|
|
42
|
+
await this.fileService.writeFile(tempSdkFilePath, response.value);
|
|
43
|
+
await sdkContext.save(tempSdkFilePath, zipSdk);
|
|
44
|
+
this.prompts.displaySdkGenerationSuccessMessage();
|
|
45
|
+
return ActionResult.success();
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
this.configDir = configDir;
|
|
49
|
+
this.authKey = authKey;
|
|
50
|
+
}
|
|
51
|
+
convertSimplePlatformToPlatform(languagePlatform) {
|
|
52
|
+
switch (languagePlatform) {
|
|
53
|
+
case LanguagePlatform.CSHARP:
|
|
54
|
+
return Platforms.CsNetStandardLib;
|
|
55
|
+
case LanguagePlatform.JAVA:
|
|
56
|
+
return Platforms.JavaEclipseJreLib;
|
|
57
|
+
case LanguagePlatform.PHP:
|
|
58
|
+
return Platforms.PhpGenericLibV2;
|
|
59
|
+
case LanguagePlatform.PYTHON:
|
|
60
|
+
return Platforms.PythonGenericLib;
|
|
61
|
+
case LanguagePlatform.RUBY:
|
|
62
|
+
return Platforms.RubyGenericLib;
|
|
63
|
+
case LanguagePlatform.TYPESCRIPT:
|
|
64
|
+
return Platforms.TsGenericLib;
|
|
65
|
+
case LanguagePlatform.GO:
|
|
66
|
+
return Platforms.GoGenericLib;
|
|
67
|
+
default:
|
|
68
|
+
throw new Error(`Unknown LanguagePlatform: ${languagePlatform}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/actions/sdk/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SerializableRecipe } from "../../../types/recipe/recipe.js";
|
|
2
|
+
export declare class PortalRecipe {
|
|
3
|
+
private readonly recipe;
|
|
4
|
+
constructor(name: string);
|
|
5
|
+
addContentStep(key: string, name: string, content: string): this;
|
|
6
|
+
addEndpointStep(key: string, name: string, description: string, endpointPermalink: string): this;
|
|
7
|
+
toSerializableRecipe(): SerializableRecipe;
|
|
8
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export class PortalRecipe {
|
|
2
|
+
constructor(name) {
|
|
3
|
+
this.recipe = {
|
|
4
|
+
name,
|
|
5
|
+
steps: []
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
addContentStep(key, name, content) {
|
|
9
|
+
this.recipe.steps.push({
|
|
10
|
+
key,
|
|
11
|
+
name,
|
|
12
|
+
type: 'content',
|
|
13
|
+
config: { content }
|
|
14
|
+
});
|
|
15
|
+
return this;
|
|
16
|
+
}
|
|
17
|
+
addEndpointStep(key, name, description, endpointPermalink) {
|
|
18
|
+
this.recipe.steps.push({
|
|
19
|
+
key,
|
|
20
|
+
name,
|
|
21
|
+
type: 'endpoint',
|
|
22
|
+
config: {
|
|
23
|
+
description,
|
|
24
|
+
endpointPermalink,
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
toSerializableRecipe() {
|
|
30
|
+
return this.recipe;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=portal-recipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal-recipe.js","sourceRoot":"","sources":["../../../../src/application/portal/recipe/portal-recipe.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IAGvB,YAAY,IAAY;QACtB,IAAI,CAAC,MAAM,GAAG;YACZ,IAAI;YACJ,KAAK,EAAE,EAAE;SACV,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,GAAW,EAAE,IAAY,EAAE,OAAe;QACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YACrB,GAAG;YACH,IAAI;YACJ,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,EAAE,OAAO,EAAE;SACpB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CACb,GAAW,EACX,IAAY,EACZ,WAAmB,EACnB,iBAAyB;QAEzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YACrB,GAAG;YACH,IAAI;YACJ,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE;gBACN,WAAW;gBACX,iBAAiB;aAClB;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SerializableRecipe } from "../../../types/recipe/recipe.js";
|
|
2
|
+
export declare class PortalRecipeGenerator {
|
|
3
|
+
createRecipe(recipe: SerializableRecipe, buildConfig: any, tocFileContent: any, tocFilePath: string, recipeName: string, recipeFileName: string, buildConfigFilePath: string, contentFolderPath: string): Promise<void>;
|
|
4
|
+
private addRecipeToToc;
|
|
5
|
+
private registerRecipeInBuildConfigFile;
|
|
6
|
+
private writeRecipesConfigToBuildConfigFile;
|
|
7
|
+
private createMarkdownFile;
|
|
8
|
+
private createScriptFromRecipe;
|
|
9
|
+
private saveGeneratedRecipeScriptToBuildDirectory;
|
|
10
|
+
private generateVerifyFunction;
|
|
11
|
+
private addContentStepToScript;
|
|
12
|
+
private addEndpointStepToScript;
|
|
13
|
+
private getMarkdownFileContent;
|
|
14
|
+
private formatScript;
|
|
15
|
+
private toPascalCase;
|
|
16
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import prettier from "prettier";
|
|
4
|
+
import { stringify } from "yaml";
|
|
5
|
+
export class PortalRecipeGenerator {
|
|
6
|
+
//TODO: Replace tocFileContent any type with concrete type.
|
|
7
|
+
async createRecipe(recipe, buildConfig, tocFileContent, tocFilePath, recipeName, recipeFileName, buildConfigFilePath, contentFolderPath) {
|
|
8
|
+
await this.addRecipeToToc(tocFileContent, tocFilePath, recipeName, recipeFileName);
|
|
9
|
+
await this.registerRecipeInBuildConfigFile(buildConfig, recipeName, recipeFileName, buildConfigFilePath);
|
|
10
|
+
await this.createMarkdownFile(recipeFileName, contentFolderPath);
|
|
11
|
+
const generatedRecipeScript = await this.createScriptFromRecipe(recipe);
|
|
12
|
+
const generatedRecipeScriptsDirectoryPath = path.join(contentFolderPath, "static", "scripts", "recipes");
|
|
13
|
+
await this.saveGeneratedRecipeScriptToBuildDirectory(generatedRecipeScript, generatedRecipeScriptsDirectoryPath, recipeFileName);
|
|
14
|
+
}
|
|
15
|
+
async addRecipeToToc(tocData, tocFilePath, recipeName, recipeFileName) {
|
|
16
|
+
let toc = tocData.toc;
|
|
17
|
+
let apiRecipesGroup = toc.find((item) => item.group === "API Recipes");
|
|
18
|
+
if (!apiRecipesGroup) {
|
|
19
|
+
// If the group doesn't exist, create and insert it after the last group
|
|
20
|
+
apiRecipesGroup = {
|
|
21
|
+
group: "API Recipes",
|
|
22
|
+
items: []
|
|
23
|
+
};
|
|
24
|
+
// Insert after the last group section, before any generate sections
|
|
25
|
+
let lastGroupIdx = -1;
|
|
26
|
+
for (let i = 0; i < toc.length; i++) {
|
|
27
|
+
if (toc[i].group)
|
|
28
|
+
lastGroupIdx = i;
|
|
29
|
+
}
|
|
30
|
+
toc.splice(lastGroupIdx + 1, 0, apiRecipesGroup);
|
|
31
|
+
}
|
|
32
|
+
// Only add the recipe if it doesn't already exist
|
|
33
|
+
const existingRecipe = apiRecipesGroup.items.find((item) => item.page === recipeName || item.file === `recipes/${recipeFileName}.md`);
|
|
34
|
+
if (!existingRecipe) {
|
|
35
|
+
apiRecipesGroup.items.push({
|
|
36
|
+
page: recipeName,
|
|
37
|
+
file: `recipes/${recipeFileName}.md`
|
|
38
|
+
});
|
|
39
|
+
await fs.promises.writeFile(tocFilePath, stringify(tocData));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async registerRecipeInBuildConfigFile(buildConfig, recipeName, recipeFileName, buildConfigFilePath) {
|
|
43
|
+
if (!buildConfig.recipes) {
|
|
44
|
+
buildConfig.recipes = {};
|
|
45
|
+
}
|
|
46
|
+
const recipesConfig = buildConfig.recipes;
|
|
47
|
+
if (!recipesConfig.workflows) {
|
|
48
|
+
recipesConfig.workflows = [];
|
|
49
|
+
}
|
|
50
|
+
const existingIndex = recipesConfig.workflows.findIndex((workflow) => workflow.permalink === `page:recipes/${recipeFileName}`);
|
|
51
|
+
const newWorkflow = {
|
|
52
|
+
name: recipeName,
|
|
53
|
+
permalink: `page:recipes/${recipeFileName}`,
|
|
54
|
+
functionName: this.toPascalCase(recipeName),
|
|
55
|
+
scriptPath: `./static/scripts/recipes/${recipeFileName}.js`
|
|
56
|
+
};
|
|
57
|
+
if (existingIndex !== -1) {
|
|
58
|
+
// Replace the existing workflow
|
|
59
|
+
recipesConfig.workflows[existingIndex] = newWorkflow;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// Add as new workflow
|
|
63
|
+
recipesConfig.workflows.push(newWorkflow);
|
|
64
|
+
}
|
|
65
|
+
await this.writeRecipesConfigToBuildConfigFile(recipesConfig, buildConfigFilePath);
|
|
66
|
+
}
|
|
67
|
+
async writeRecipesConfigToBuildConfigFile(recipesConfig, buildConfigFilePath) {
|
|
68
|
+
const fileData = await fs.promises.readFile(buildConfigFilePath, "utf-8");
|
|
69
|
+
const buildConfig = JSON.parse(fileData);
|
|
70
|
+
buildConfig.recipes = recipesConfig;
|
|
71
|
+
await fs.promises.writeFile(buildConfigFilePath, JSON.stringify(buildConfig, null, 2));
|
|
72
|
+
}
|
|
73
|
+
async createMarkdownFile(recipeFileName, contentFolder) {
|
|
74
|
+
const directory = path.join(contentFolder, "content", "recipes");
|
|
75
|
+
const markdownFileContent = this.getMarkdownFileContent();
|
|
76
|
+
fs.mkdirSync(directory, { recursive: true });
|
|
77
|
+
fs.writeFileSync(`${directory}/${recipeFileName}.md`, markdownFileContent);
|
|
78
|
+
}
|
|
79
|
+
async createScriptFromRecipe(recipe) {
|
|
80
|
+
let script = `export default function ${this.toPascalCase(recipe.name)}(workflowCtx, portal) {`;
|
|
81
|
+
script += "return {";
|
|
82
|
+
recipe.steps.forEach((step, index) => {
|
|
83
|
+
script += `"${step.key}": {`;
|
|
84
|
+
script += `name: "${step.name}",`;
|
|
85
|
+
script += "stepCallback: async () => {";
|
|
86
|
+
if (step.type === "content") {
|
|
87
|
+
script += this.addContentStepToScript(step.config);
|
|
88
|
+
}
|
|
89
|
+
else if (step.type === "endpoint") {
|
|
90
|
+
script += this.addEndpointStepToScript(step.config);
|
|
91
|
+
}
|
|
92
|
+
script += "},";
|
|
93
|
+
script += "}";
|
|
94
|
+
if (index < recipe.steps.length - 1) {
|
|
95
|
+
script += ",";
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
script += "};";
|
|
99
|
+
script += "}";
|
|
100
|
+
return script;
|
|
101
|
+
}
|
|
102
|
+
async saveGeneratedRecipeScriptToBuildDirectory(generatedRecipeScript, generatedRecipeScriptsDirectoryPath, recipeFileName, format = false) {
|
|
103
|
+
if (format) {
|
|
104
|
+
generatedRecipeScript = await this.formatScript(generatedRecipeScript);
|
|
105
|
+
}
|
|
106
|
+
fs.mkdirSync(generatedRecipeScriptsDirectoryPath, { recursive: true });
|
|
107
|
+
await fs.promises.writeFile(`${generatedRecipeScriptsDirectoryPath}/${recipeFileName}.js`, generatedRecipeScript, "utf8");
|
|
108
|
+
}
|
|
109
|
+
generateVerifyFunction() {
|
|
110
|
+
return `if (response.StatusCode == 200) { return true; } else { setError("API Call wasn't able to get a valid response. Please try again."); return false; }`;
|
|
111
|
+
}
|
|
112
|
+
addContentStepToScript(contentConfig) {
|
|
113
|
+
return `return workflowCtx.showContent(${JSON.stringify(contentConfig.content)});`;
|
|
114
|
+
}
|
|
115
|
+
addEndpointStepToScript(endpointConfig) {
|
|
116
|
+
let script = "return workflowCtx.showEndpoint({";
|
|
117
|
+
if (endpointConfig.description !== "") {
|
|
118
|
+
script += `description: ${JSON.stringify(endpointConfig.description)},`;
|
|
119
|
+
}
|
|
120
|
+
script += `endpointPermalink: "${endpointConfig.endpointPermalink}",`;
|
|
121
|
+
script += "verify: (response, setError) => {";
|
|
122
|
+
script += this.generateVerifyFunction();
|
|
123
|
+
script += "},";
|
|
124
|
+
script += "});";
|
|
125
|
+
return script;
|
|
126
|
+
}
|
|
127
|
+
getMarkdownFileContent() {
|
|
128
|
+
return `# This is a Guided Walkthrough File
|
|
129
|
+
This is the starter content`;
|
|
130
|
+
}
|
|
131
|
+
async formatScript(code) {
|
|
132
|
+
return prettier.format(code, {
|
|
133
|
+
parser: "babel",
|
|
134
|
+
semi: true,
|
|
135
|
+
singleQuote: false,
|
|
136
|
+
tabWidth: 2,
|
|
137
|
+
trailingComma: "es5"
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
toPascalCase(str) {
|
|
141
|
+
return str
|
|
142
|
+
.split(" ")
|
|
143
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
144
|
+
.join("");
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=recipe-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipe-generator.js","sourceRoot":"","sources":["../../../../src/application/portal/recipe/recipe-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import chokidar from "chokidar";
|
|
2
|
+
import { ServePaths } from "../../../types/portal/serve.js";
|
|
3
|
+
import { DirectoryPath } from "../../../types/file/directoryPath.js";
|
|
4
|
+
import { ActionResult } from "../../../actions/action-result.js";
|
|
5
|
+
export declare class PortalWatcher {
|
|
6
|
+
private watcherHandler;
|
|
7
|
+
constructor();
|
|
8
|
+
watchAndRegeneratePortalOnChange(paths: ServePaths, generatePortal: (buildDirectory: DirectoryPath, portalDirectory: DirectoryPath, force: boolean, zipPortal: boolean) => Promise<ActionResult>): Promise<chokidar.FSWatcher>;
|
|
9
|
+
cancelPendingOperations(): void;
|
|
10
|
+
protected handleFileChange(paths: ServePaths, eventQueue: Map<string, string>, eventId: string, generatePortal: (buildDirectory: DirectoryPath, portalDirectory: DirectoryPath, force: boolean, zipPortal: boolean) => Promise<ActionResult>): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import chokidar from "chokidar";
|
|
2
|
+
import crypto from "crypto";
|
|
3
|
+
import console from "console";
|
|
4
|
+
import { Mutex } from "async-mutex";
|
|
5
|
+
import { WatcherHandler } from "./watcher-handler.js";
|
|
6
|
+
import { DirectoryPath } from "../../../types/file/directoryPath.js";
|
|
7
|
+
export class PortalWatcher {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.watcherHandler = new WatcherHandler();
|
|
10
|
+
}
|
|
11
|
+
async watchAndRegeneratePortalOnChange(paths, generatePortal) {
|
|
12
|
+
//Regex matches any hidden files and folders.
|
|
13
|
+
const watcher = chokidar.watch(paths.sourceDirectoryPath, {
|
|
14
|
+
ignored: [/(^|[/\\])\..+/],
|
|
15
|
+
ignoreInitial: true,
|
|
16
|
+
persistent: true,
|
|
17
|
+
awaitWriteFinish: true,
|
|
18
|
+
atomic: true
|
|
19
|
+
});
|
|
20
|
+
const deletedDirectories = new Set();
|
|
21
|
+
const eventQueue = new Map();
|
|
22
|
+
const mutex = new Mutex();
|
|
23
|
+
watcher
|
|
24
|
+
.on("all", async (event, path) => {
|
|
25
|
+
if (event == "unlinkDir") {
|
|
26
|
+
deletedDirectories.add(path);
|
|
27
|
+
}
|
|
28
|
+
if (event == "unlink") {
|
|
29
|
+
for (const dir of deletedDirectories) {
|
|
30
|
+
if (path.startsWith(dir)) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const eventId = `${Date.now()}-${crypto.randomUUID()}`;
|
|
36
|
+
await mutex.runExclusive(async () => {
|
|
37
|
+
eventQueue.clear();
|
|
38
|
+
eventQueue.set(eventId, path);
|
|
39
|
+
});
|
|
40
|
+
await this.watcherHandler.execute(async () => {
|
|
41
|
+
await this.handleFileChange(paths, eventQueue, eventId, generatePortal);
|
|
42
|
+
});
|
|
43
|
+
})
|
|
44
|
+
.on("error", () => {
|
|
45
|
+
console.error("An unexpected error occurred while watching your build folder for changes. Please try again later. If the issue persists, contact our team at support@apimatic.io");
|
|
46
|
+
watcher.close();
|
|
47
|
+
});
|
|
48
|
+
return watcher;
|
|
49
|
+
}
|
|
50
|
+
// TODO: Remove this method. Figure out a better way to do this.
|
|
51
|
+
cancelPendingOperations() {
|
|
52
|
+
if (this.watcherHandler) {
|
|
53
|
+
this.watcherHandler.cancel();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async handleFileChange(paths, eventQueue, eventId, generatePortal) {
|
|
57
|
+
if (!eventQueue.has(eventId)) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const result = await generatePortal(new DirectoryPath(paths.sourceDirectoryPath), new DirectoryPath(paths.destinationDirectoryPath), true, false);
|
|
61
|
+
result.map((error) => console.log(error));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=portal-watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal-watcher.js","sourceRoot":"","sources":["../../../../src/application/portal/serve/portal-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Result } from "../../../types/common/result.js";
|
|
2
|
+
import { ServeFlags, ServePaths } from "../../../types/portal/serve.js";
|
|
3
|
+
import { DirectoryPath } from "../../../types/file/directoryPath.js";
|
|
4
|
+
import { ActionResult } from "../../../actions/action-result.js";
|
|
5
|
+
export declare class ServeHandler {
|
|
6
|
+
private server;
|
|
7
|
+
private liveReloadServer;
|
|
8
|
+
private readonly app;
|
|
9
|
+
private readonly portalWatcher;
|
|
10
|
+
constructor();
|
|
11
|
+
setupServer(generatedPortalArtifactsDirectoryPath: string): Promise<Result<string, string>>;
|
|
12
|
+
startServer(paths: ServePaths, flags: ServeFlags, generatePortal: (buildDirectory: DirectoryPath, portalDirectory: DirectoryPath, force: boolean, zipPortal: boolean) => Promise<ActionResult>, displayShutdownMessages?: boolean): Promise<Result<boolean, string>>;
|
|
13
|
+
private stopServer;
|
|
14
|
+
private createLiveReloadServer;
|
|
15
|
+
private getPortForReloadServer;
|
|
16
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import express from "express";
|
|
2
|
+
import livereload from "livereload";
|
|
3
|
+
import connectLivereload from "connect-livereload";
|
|
4
|
+
import open from "open";
|
|
5
|
+
import process from "process";
|
|
6
|
+
import getPort from "get-port";
|
|
7
|
+
import console from "console";
|
|
8
|
+
import { Result } from "../../../types/common/result.js";
|
|
9
|
+
import { PortalWatcher } from "./portal-watcher.js";
|
|
10
|
+
export class ServeHandler {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.app = express();
|
|
13
|
+
this.portalWatcher = new PortalWatcher();
|
|
14
|
+
}
|
|
15
|
+
//TODO: Needs to be refactored after refactoring quickstart.
|
|
16
|
+
async setupServer(generatedPortalArtifactsDirectoryPath) {
|
|
17
|
+
const createLiveReloadServerResult = await this.createLiveReloadServer(generatedPortalArtifactsDirectoryPath);
|
|
18
|
+
if (createLiveReloadServerResult.isFailed()) {
|
|
19
|
+
return Result.failure(createLiveReloadServerResult.error);
|
|
20
|
+
}
|
|
21
|
+
this.app.use(express.static(generatedPortalArtifactsDirectoryPath, { extensions: ["html"] }));
|
|
22
|
+
return Result.success(`Server is set up and serving files from ${generatedPortalArtifactsDirectoryPath}`);
|
|
23
|
+
}
|
|
24
|
+
//TODO: Needs to be refactored after refactoring quickstart.
|
|
25
|
+
async startServer(paths, flags, generatePortal, displayShutdownMessages = true) {
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
this.server = this.app
|
|
28
|
+
.listen(flags.port, async () => {
|
|
29
|
+
if (flags.open) {
|
|
30
|
+
await open(`http://localhost:${flags.port}`);
|
|
31
|
+
}
|
|
32
|
+
if (!flags["no-reload"]) {
|
|
33
|
+
await this.portalWatcher.watchAndRegeneratePortalOnChange(paths, generatePortal);
|
|
34
|
+
}
|
|
35
|
+
if (process.platform !== "darwin") {
|
|
36
|
+
//For non-macOS users.
|
|
37
|
+
if (process.stdin.setRawMode) {
|
|
38
|
+
process.stdin.setRawMode(false);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
resolve(Result.success(true));
|
|
42
|
+
})
|
|
43
|
+
.on("error", () => {
|
|
44
|
+
reject(new Error(`Something went wrong while serving your portal. Please try again later. If the issue persists, contact our team at support@apimatic.io`));
|
|
45
|
+
});
|
|
46
|
+
const shutdown = async () => {
|
|
47
|
+
if (displayShutdownMessages) {
|
|
48
|
+
console.log("Shutting down server...");
|
|
49
|
+
}
|
|
50
|
+
await this.stopServer();
|
|
51
|
+
if (displayShutdownMessages) {
|
|
52
|
+
console.log("Server shut down successfully.");
|
|
53
|
+
}
|
|
54
|
+
resolve(Result.success(true));
|
|
55
|
+
process.exit(0);
|
|
56
|
+
};
|
|
57
|
+
process.on("SIGINT", shutdown);
|
|
58
|
+
process.on("SIGTERM", shutdown);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async stopServer() {
|
|
62
|
+
this.portalWatcher.cancelPendingOperations();
|
|
63
|
+
if (this.liveReloadServer) {
|
|
64
|
+
this.liveReloadServer.close();
|
|
65
|
+
}
|
|
66
|
+
if (this.server) {
|
|
67
|
+
await new Promise((resolve) => {
|
|
68
|
+
this.server.close(() => resolve());
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async createLiveReloadServer(generatedPortalPath) {
|
|
73
|
+
try {
|
|
74
|
+
const availablePort = await this.getPortForReloadServer();
|
|
75
|
+
this.liveReloadServer = livereload.createServer({
|
|
76
|
+
port: availablePort
|
|
77
|
+
});
|
|
78
|
+
this.liveReloadServer.watch(generatedPortalPath);
|
|
79
|
+
this.app.use(connectLivereload());
|
|
80
|
+
return Result.success("Live Reload Server setup successfully.");
|
|
81
|
+
}
|
|
82
|
+
catch (_a) {
|
|
83
|
+
return Result.failure("An unexpected error occurred while serving your portal, please try again later. If the issue persists, contact our team at support@apimatic.io for assistance.");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async getPortForReloadServer() {
|
|
87
|
+
const defaultPorts = [35729, 35730, 35731];
|
|
88
|
+
return await getPort({ port: defaultPorts });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=serve-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-handler.js","sourceRoot":"","sources":["../../../../src/application/portal/serve/serve-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class WatcherHandler {
|
|
2
|
+
private isProcessing;
|
|
3
|
+
private latestHandler;
|
|
4
|
+
private debounceTimer;
|
|
5
|
+
private readonly debounceMs;
|
|
6
|
+
constructor(debounceMs?: number);
|
|
7
|
+
execute(handler: () => Promise<void>): Promise<void>;
|
|
8
|
+
private scheduleExecution;
|
|
9
|
+
cancel(): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export class WatcherHandler {
|
|
2
|
+
constructor(debounceMs = 500) {
|
|
3
|
+
this.isProcessing = false;
|
|
4
|
+
this.latestHandler = null;
|
|
5
|
+
this.debounceTimer = null;
|
|
6
|
+
this.debounceMs = debounceMs;
|
|
7
|
+
}
|
|
8
|
+
async execute(handler) {
|
|
9
|
+
// Always store the latest handler
|
|
10
|
+
this.latestHandler = handler;
|
|
11
|
+
// If already processing, don't start a new timer. Just update the latest handler
|
|
12
|
+
if (this.isProcessing) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
// Clear any existing timer
|
|
16
|
+
if (this.debounceTimer) {
|
|
17
|
+
clearTimeout(this.debounceTimer);
|
|
18
|
+
}
|
|
19
|
+
// Set up debounced execution
|
|
20
|
+
this.scheduleExecution();
|
|
21
|
+
}
|
|
22
|
+
scheduleExecution() {
|
|
23
|
+
this.debounceTimer = setTimeout(async () => {
|
|
24
|
+
if (this.isProcessing) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
this.isProcessing = true;
|
|
28
|
+
this.debounceTimer = null;
|
|
29
|
+
try {
|
|
30
|
+
// Execute the latest handler if it exists
|
|
31
|
+
if (this.latestHandler) {
|
|
32
|
+
const currentHandler = this.latestHandler;
|
|
33
|
+
this.latestHandler = null;
|
|
34
|
+
await currentHandler();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
this.isProcessing = false;
|
|
39
|
+
}
|
|
40
|
+
}, this.debounceMs);
|
|
41
|
+
}
|
|
42
|
+
// Method to clear any pending execution.
|
|
43
|
+
cancel() {
|
|
44
|
+
if (this.debounceTimer) {
|
|
45
|
+
clearTimeout(this.debounceTimer);
|
|
46
|
+
this.debounceTimer = null;
|
|
47
|
+
}
|
|
48
|
+
this.latestHandler = null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=watcher-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watcher-handler.js","sourceRoot":"","sources":["../../../../src/application/portal/serve/watcher-handler.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IAMzB,YAAY,aAAqB,GAAG;QAL5B,iBAAY,GAAG,KAAK,CAAC;QACrB,kBAAa,GAAiC,IAAI,CAAC;QACnD,kBAAa,GAA0B,IAAI,CAAC;QAIlD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,kCAAkC;QAClC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAE7B,iFAAiF;QACjF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YACzC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAE1B,IAAI,CAAC;gBACH,0CAA0C;gBAC1C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;oBAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC1B,MAAM,cAAc,EAAE,CAAC;gBACzB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;IAED,yCAAyC;IAClC,MAAM;QACX,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { PortalService } from "../../../infrastructure/services/portal-service.js";
|
|
2
|
+
import { TocEndpoint, TocModel } from "../../../types/toc/toc.js";
|
|
3
|
+
import { Result } from "../../../types/common/result.js";
|
|
4
|
+
import { SdlEndpoint } from "../../../types/sdl/sdl.js";
|
|
5
|
+
export declare class SdlParser {
|
|
6
|
+
private readonly portalService;
|
|
7
|
+
private readonly zipArchiver;
|
|
8
|
+
private readonly fileService;
|
|
9
|
+
constructor(portalService: PortalService);
|
|
10
|
+
getTocComponentsFromSdl(specFolderPath: string, configDir: string): Promise<Result<{
|
|
11
|
+
endpointGroups: Map<string, TocEndpoint[]>;
|
|
12
|
+
models: TocModel[];
|
|
13
|
+
}, string>>;
|
|
14
|
+
getEndpointGroupsFromSdl(specFolderPath: string, configDir: string): Promise<Result<Map<string, SdlEndpoint[]>, string>>;
|
|
15
|
+
private generateSdlFromSpec;
|
|
16
|
+
private extractEndpointGroupsForRecipe;
|
|
17
|
+
private extractEndpointGroupsForToc;
|
|
18
|
+
private extractModelsForToc;
|
|
19
|
+
}
|