@webiny/cli-core 0.0.0-unstable.6f45466a1d → 0.0.0-unstable.81ae05e56b

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 (31) hide show
  1. package/abstractions/features/CliCommand.d.ts +4 -0
  2. package/abstractions/features/CliCommand.js +3 -0
  3. package/abstractions/features/CliCommand.js.map +1 -1
  4. package/createCliContainer.js +2 -2
  5. package/createCliContainer.js.map +1 -1
  6. package/exports/cli.d.ts +2 -0
  7. package/exports/cli.js +4 -0
  8. package/exports/cli.js.map +1 -0
  9. package/extensions/CliCommand.d.ts +2 -6
  10. package/extensions/CliCommandDecorator.d.ts +2 -6
  11. package/extensions/index.d.ts +2 -6
  12. package/features/DepsSync/BuildDependencyTree.js +2 -2
  13. package/features/DepsSync/BuildDependencyTree.js.map +1 -1
  14. package/features/DepsSync/ListAllPackageJsonFiles.js +2 -2
  15. package/features/DepsSync/ListAllPackageJsonFiles.js.map +1 -1
  16. package/features/DepsSync/commands/VerifyDepsCommand.js +3 -3
  17. package/features/DepsSync/commands/VerifyDepsCommand.js.map +1 -1
  18. package/features/DepsSync/createReferenceFile.js +3 -3
  19. package/features/DepsSync/createReferenceFile.js.map +1 -1
  20. package/features/ExtensionCommand/ExtensionCommand.js +2 -2
  21. package/features/ExtensionCommand/ExtensionCommand.js.map +1 -1
  22. package/features/InfoCommand/PrintInfoForEnv.js +6 -1
  23. package/features/InfoCommand/PrintInfoForEnv.js.map +1 -1
  24. package/features/Wcp/LinkProjectCommand.js +3 -3
  25. package/features/Wcp/LinkProjectCommand.js.map +1 -1
  26. package/package.json +21 -21
  27. package/services/LoggerService/LoggerService.js +2 -2
  28. package/services/LoggerService/LoggerService.js.map +1 -1
  29. package/exports/cli/index.d.ts +0 -2
  30. package/exports/cli/index.js +0 -4
  31. package/exports/cli/index.js.map +0 -1
@@ -14,6 +14,7 @@ export interface ICliCommandOptionDefinition<TCommandParams> {
14
14
  group?: string;
15
15
  required?: boolean;
16
16
  alias?: string;
17
+ array?: boolean;
17
18
  default?: any;
18
19
  validation?: (value: TCommandParams) => boolean | string;
19
20
  }
@@ -28,6 +29,9 @@ export interface ICliCommandDefinition<TCommandParams> {
28
29
  export interface ICliCommand<TCommandParams> {
29
30
  execute(): Promise<ICliCommandDefinition<TCommandParams>> | ICliCommandDefinition<TCommandParams>;
30
31
  }
32
+ /**
33
+ * Implement a custom CLI command for Webiny CLI.
34
+ */
31
35
  export declare const CliCommandFactory: import("@webiny/di").Abstraction<ICliCommand<any>>;
32
36
  export declare namespace CliCommandFactory {
33
37
  type Interface<TCommandParams> = ICliCommand<TCommandParams>;
@@ -1,4 +1,7 @@
1
1
  import { createAbstraction } from "../createAbstraction.js";
2
+ /**
3
+ * Implement a custom CLI command for Webiny CLI.
4
+ */
2
5
  export const CliCommandFactory = createAbstraction("CliCommandFactory");
3
6
 
4
7
  //# sourceMappingURL=CliCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","CliCommandFactory"],"sources":["CliCommand.ts"],"sourcesContent":["import { createAbstraction } from \"~/abstractions/createAbstraction.js\";\n\nexport interface ICliCommandParamDefinition<TCommandParams> {\n name: string;\n description: string;\n type: \"boolean\" | \"number\" | \"string\";\n required?: boolean;\n array?: boolean;\n default?: any;\n validation?: (value: TCommandParams) => boolean | string;\n}\n\nexport interface ICliCommandOptionDefinition<TCommandParams> {\n name: string;\n description: string;\n type: \"boolean\" | \"number\" | \"string\";\n group?: string;\n required?: boolean;\n alias?: string;\n default?: any;\n validation?: (value: TCommandParams) => boolean | string;\n}\n\nexport interface ICliCommandDefinition<TCommandParams> {\n name: string;\n description: string;\n params?: ICliCommandParamDefinition<TCommandParams>[];\n options?: ICliCommandOptionDefinition<TCommandParams>[];\n examples?: string[];\n handler: (params: TCommandParams) => void | Promise<void>;\n}\n\nexport interface ICliCommand<TCommandParams> {\n execute():\n | Promise<ICliCommandDefinition<TCommandParams>>\n | ICliCommandDefinition<TCommandParams>;\n}\n\nexport const CliCommandFactory = createAbstraction<ICliCommand<any>>(\"CliCommandFactory\");\n\nexport namespace CliCommandFactory {\n export type Interface<TCommandParams> = ICliCommand<TCommandParams>;\n\n export type ParamDefinition<TCommandParams> = ICliCommandParamDefinition<TCommandParams>;\n export type OptionDefinition<TCommandParams> = ICliCommandOptionDefinition<TCommandParams>;\n\n export type CommandDefinition<TCommandParams> = ICliCommandDefinition<TCommandParams>;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB;AAsC1B,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAmB,mBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","CliCommandFactory"],"sources":["CliCommand.ts"],"sourcesContent":["import { createAbstraction } from \"~/abstractions/createAbstraction.js\";\n\nexport interface ICliCommandParamDefinition<TCommandParams> {\n name: string;\n description: string;\n type: \"boolean\" | \"number\" | \"string\";\n required?: boolean;\n array?: boolean;\n default?: any;\n validation?: (value: TCommandParams) => boolean | string;\n}\n\nexport interface ICliCommandOptionDefinition<TCommandParams> {\n name: string;\n description: string;\n type: \"boolean\" | \"number\" | \"string\";\n group?: string;\n required?: boolean;\n alias?: string;\n array?: boolean;\n default?: any;\n validation?: (value: TCommandParams) => boolean | string;\n}\n\nexport interface ICliCommandDefinition<TCommandParams> {\n name: string;\n description: string;\n params?: ICliCommandParamDefinition<TCommandParams>[];\n options?: ICliCommandOptionDefinition<TCommandParams>[];\n examples?: string[];\n handler: (params: TCommandParams) => void | Promise<void>;\n}\n\nexport interface ICliCommand<TCommandParams> {\n execute():\n | Promise<ICliCommandDefinition<TCommandParams>>\n | ICliCommandDefinition<TCommandParams>;\n}\n\n/**\n * Implement a custom CLI command for Webiny CLI.\n */\nexport const CliCommandFactory = createAbstraction<ICliCommand<any>>(\"CliCommandFactory\");\n\nexport namespace CliCommandFactory {\n export type Interface<TCommandParams> = ICliCommand<TCommandParams>;\n\n export type ParamDefinition<TCommandParams> = ICliCommandParamDefinition<TCommandParams>;\n export type OptionDefinition<TCommandParams> = ICliCommandOptionDefinition<TCommandParams>;\n\n export type CommandDefinition<TCommandParams> = ICliCommandDefinition<TCommandParams>;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB;AAuC1B;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAmB,mBAAmB,CAAC","ignoreList":[]}
@@ -8,7 +8,7 @@ linkProjectCommand, loginCommand, logoutCommand, whoAmICommand,
8
8
  showLogsGlobalOption, logLevelGlobalOption, stackTraceGlobalOption } from "./features/index.js";
9
9
  import chalk from "chalk";
10
10
  import { CliParamsService, GetArgvService, GetProjectSdkService, UiService } from "./abstractions/index.js";
11
- import { GracefulError } from "@webiny/project";
11
+ import { GracefulError, toImportSpecifier } from "@webiny/project";
12
12
  import { commandsWithGracefulErrorHandling, deployCommandWithTelemetry } from "./decorators/index.js";
13
13
  import { CliCommand } from "./extensions/index.js";
14
14
  const {
@@ -88,7 +88,7 @@ export const createCliContainer = async params => {
88
88
  importPath = filePath;
89
89
  }
90
90
  const exportName = path.basename(filePath).replace(path.extname(filePath), "");
91
- const importedModule = await import(importPath);
91
+ const importedModule = await import(toImportSpecifier(importPath));
92
92
 
93
93
  // Support both default and named exports.
94
94
  // Check for 'default' property existence rather than truthiness.
@@ -1 +1 @@
1
- {"version":3,"names":["path","Container","argvParserService","cliParamsService","commandsRegistryService","getArgvService","getCliRunnerService","getIsCiService","globalOptionsRegistryService","getProjectSdkService","loggerService","runCliRunnerService","stdioService","uiService","aboutCommand","buildCommand","configCommand","ddbPutItemConditionalCheckFailedGracefulErrorHandler","deployCommand","destroyCommand","disableTelemetryCommand","enableTelemetryCommand","extensionCommand","infoCommand","isCi","missingFilesInBuildGracefulErrorHandler","openCommand","outputCommand","pendingOperationsGracefulErrorHandler","pulumiCommand","refreshCommand","syncDepsCommand","verifyDepsCommand","watchCommand","linkProjectCommand","loginCommand","logoutCommand","whoAmICommand","showLogsGlobalOption","logLevelGlobalOption","stackTraceGlobalOption","chalk","CliParamsService","GetArgvService","GetProjectSdkService","UiService","GracefulError","commandsWithGracefulErrorHandling","deployCommandWithTelemetry","CliCommand","bgYellow","bold","createCliContainer","params","container","register","inSingletonScope","ui","resolve","set","projectSdk","execute","projectConfig","getProjectConfig","tags","runtimeContext","validateProjectConfig","project","getProject","importFromPath","filePath","importPath","startsWith","paths","rootFolder","join","toString","exportName","basename","replace","extname","importedModule","default","commands","extensionsByType","command","commandImplementation","src","error","realError","cause","message","argv","showStackTrace","stack","emptyLine","debug","text","process","exit","registerDecorator"],"sources":["createCliContainer.ts"],"sourcesContent":["import path from \"path\";\nimport { Container } from \"@webiny/di\";\nimport {\n argvParserService,\n cliParamsService,\n commandsRegistryService,\n getArgvService,\n getCliRunnerService,\n getIsCiService,\n globalOptionsRegistryService,\n getProjectSdkService,\n loggerService,\n runCliRunnerService,\n stdioService,\n uiService\n} from \"./services/index.js\";\n\nimport {\n aboutCommand,\n buildCommand,\n configCommand,\n ddbPutItemConditionalCheckFailedGracefulErrorHandler,\n deployCommand,\n destroyCommand,\n disableTelemetryCommand,\n enableTelemetryCommand,\n extensionCommand,\n infoCommand,\n isCi,\n missingFilesInBuildGracefulErrorHandler,\n openCommand,\n outputCommand,\n pendingOperationsGracefulErrorHandler,\n pulumiCommand,\n refreshCommand,\n syncDepsCommand,\n verifyDepsCommand,\n watchCommand,\n\n // WCP\n linkProjectCommand,\n loginCommand,\n logoutCommand,\n whoAmICommand,\n\n // Global Options\n showLogsGlobalOption,\n logLevelGlobalOption,\n stackTraceGlobalOption\n} from \"./features/index.js\";\n\nimport chalk from \"chalk\";\nimport {\n CliParamsService,\n GetArgvService,\n GetProjectSdkService,\n UiService\n} from \"~/abstractions/index.js\";\nimport { GracefulError } from \"@webiny/project\";\nimport {\n commandsWithGracefulErrorHandling,\n deployCommandWithTelemetry\n} from \"./decorators/index.js\";\nimport { CliCommand } from \"~/extensions/index.js\";\n\nconst { bgYellow, bold } = chalk;\n\nexport const createCliContainer = async (params: CliParamsService.Params) => {\n const container = new Container();\n\n // Features (commands).\n container.register(aboutCommand).inSingletonScope();\n container.register(buildCommand).inSingletonScope();\n container.register(configCommand).inSingletonScope();\n container.register(deployCommand).inSingletonScope();\n container.register(pulumiCommand).inSingletonScope();\n container.register(refreshCommand).inSingletonScope();\n container.register(enableTelemetryCommand).inSingletonScope();\n container.register(disableTelemetryCommand).inSingletonScope();\n container.register(extensionCommand).inSingletonScope();\n container.register(syncDepsCommand).inSingletonScope();\n container.register(verifyDepsCommand).inSingletonScope();\n container.register(destroyCommand).inSingletonScope();\n container.register(infoCommand).inSingletonScope();\n container.register(isCi).inSingletonScope();\n container.register(openCommand).inSingletonScope();\n container.register(outputCommand).inSingletonScope();\n container.register(watchCommand).inSingletonScope();\n\n container.register(linkProjectCommand).inSingletonScope();\n container.register(loginCommand).inSingletonScope();\n container.register(logoutCommand).inSingletonScope();\n container.register(whoAmICommand).inSingletonScope();\n\n // Graceful error handlers.\n container.register(ddbPutItemConditionalCheckFailedGracefulErrorHandler).inSingletonScope();\n container.register(missingFilesInBuildGracefulErrorHandler).inSingletonScope();\n container.register(pendingOperationsGracefulErrorHandler).inSingletonScope();\n\n // Global options.\n container.register(showLogsGlobalOption).inSingletonScope();\n container.register(logLevelGlobalOption).inSingletonScope();\n container.register(stackTraceGlobalOption).inSingletonScope();\n\n // Services.\n container.register(argvParserService).inSingletonScope();\n container.register(cliParamsService).inSingletonScope();\n container.register(commandsRegistryService).inSingletonScope();\n container.register(getArgvService).inSingletonScope();\n container.register(getCliRunnerService).inSingletonScope();\n container.register(getIsCiService).inSingletonScope();\n container.register(globalOptionsRegistryService).inSingletonScope();\n container.register(getProjectSdkService).inSingletonScope();\n container.register(loggerService).inSingletonScope();\n container.register(runCliRunnerService).inSingletonScope();\n container.register(stdioService).inSingletonScope();\n container.register(uiService).inSingletonScope();\n\n // Extensions.\n const ui = container.resolve(UiService);\n\n try {\n // Immediately set CLI instance params via the `CliParamsService`.\n container.resolve(CliParamsService).set(params);\n\n const projectSdk = await container.resolve(GetProjectSdkService).execute();\n\n const projectConfig = await projectSdk.getProjectConfig({\n tags: { runtimeContext: \"cli\" }\n });\n\n await projectSdk.validateProjectConfig(projectConfig);\n\n const project = projectSdk.getProject();\n\n const importFromPath = async (filePath: string) => {\n let importPath: string;\n if (filePath.startsWith(\"/extensions/\")) {\n // Resolve from project root.\n importPath = project.paths.rootFolder.join(filePath).toString();\n } else {\n // Treat as absolute path.\n importPath = filePath;\n }\n\n const exportName = path.basename(filePath).replace(path.extname(filePath), \"\");\n\n const importedModule = await import(importPath);\n\n // Support both default and named exports.\n // Check for 'default' property existence rather than truthiness.\n return (\n (\"default\" in importedModule && importedModule.default) ||\n importedModule[exportName]\n );\n };\n\n const commands = projectConfig.extensionsByType(CliCommand);\n for (const command of commands) {\n const commandImplementation = await importFromPath(command.params.src);\n\n container.register(commandImplementation).inSingletonScope();\n }\n } catch (error) {\n let realError = error;\n if (error.cause) {\n realError = error.cause as Error;\n }\n\n ui.error(realError.message);\n\n const argv = container.resolve(GetArgvService).execute();\n if (argv.showStackTrace && realError.stack) {\n ui.emptyLine();\n ui.debug(\"Stack trace:\");\n ui.text(realError.stack);\n }\n\n if (error && error instanceof GracefulError) {\n ui.emptyLine();\n ui.text(bgYellow(bold(\"💡 How can I resolve this?\")));\n ui.text(error.message);\n }\n\n process.exit(1);\n }\n\n // Decorators.\n container.registerDecorator(commandsWithGracefulErrorHandling);\n container.registerDecorator(deployCommandWithTelemetry);\n\n return container;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["path","Container","argvParserService","cliParamsService","commandsRegistryService","getArgvService","getCliRunnerService","getIsCiService","globalOptionsRegistryService","getProjectSdkService","loggerService","runCliRunnerService","stdioService","uiService","aboutCommand","buildCommand","configCommand","ddbPutItemConditionalCheckFailedGracefulErrorHandler","deployCommand","destroyCommand","disableTelemetryCommand","enableTelemetryCommand","extensionCommand","infoCommand","isCi","missingFilesInBuildGracefulErrorHandler","openCommand","outputCommand","pendingOperationsGracefulErrorHandler","pulumiCommand","refreshCommand","syncDepsCommand","verifyDepsCommand","watchCommand","linkProjectCommand","loginCommand","logoutCommand","whoAmICommand","showLogsGlobalOption","logLevelGlobalOption","stackTraceGlobalOption","chalk","CliParamsService","GetArgvService","GetProjectSdkService","UiService","GracefulError","toImportSpecifier","commandsWithGracefulErrorHandling","deployCommandWithTelemetry","CliCommand","bgYellow","bold","createCliContainer","params","container","register","inSingletonScope","ui","resolve","set","projectSdk","execute","projectConfig","getProjectConfig","tags","runtimeContext","validateProjectConfig","project","getProject","importFromPath","filePath","importPath","startsWith","paths","rootFolder","join","toString","exportName","basename","replace","extname","importedModule","default","commands","extensionsByType","command","commandImplementation","src","error","realError","cause","message","argv","showStackTrace","stack","emptyLine","debug","text","process","exit","registerDecorator"],"sources":["createCliContainer.ts"],"sourcesContent":["import path from \"path\";\nimport { Container } from \"@webiny/di\";\nimport {\n argvParserService,\n cliParamsService,\n commandsRegistryService,\n getArgvService,\n getCliRunnerService,\n getIsCiService,\n globalOptionsRegistryService,\n getProjectSdkService,\n loggerService,\n runCliRunnerService,\n stdioService,\n uiService\n} from \"./services/index.js\";\n\nimport {\n aboutCommand,\n buildCommand,\n configCommand,\n ddbPutItemConditionalCheckFailedGracefulErrorHandler,\n deployCommand,\n destroyCommand,\n disableTelemetryCommand,\n enableTelemetryCommand,\n extensionCommand,\n infoCommand,\n isCi,\n missingFilesInBuildGracefulErrorHandler,\n openCommand,\n outputCommand,\n pendingOperationsGracefulErrorHandler,\n pulumiCommand,\n refreshCommand,\n syncDepsCommand,\n verifyDepsCommand,\n watchCommand,\n\n // WCP\n linkProjectCommand,\n loginCommand,\n logoutCommand,\n whoAmICommand,\n\n // Global Options\n showLogsGlobalOption,\n logLevelGlobalOption,\n stackTraceGlobalOption\n} from \"./features/index.js\";\n\nimport chalk from \"chalk\";\nimport {\n CliParamsService,\n GetArgvService,\n GetProjectSdkService,\n UiService\n} from \"~/abstractions/index.js\";\nimport { GracefulError, toImportSpecifier } from \"@webiny/project\";\nimport {\n commandsWithGracefulErrorHandling,\n deployCommandWithTelemetry\n} from \"./decorators/index.js\";\nimport { CliCommand } from \"~/extensions/index.js\";\n\nconst { bgYellow, bold } = chalk;\n\nexport const createCliContainer = async (params: CliParamsService.Params) => {\n const container = new Container();\n\n // Features (commands).\n container.register(aboutCommand).inSingletonScope();\n container.register(buildCommand).inSingletonScope();\n container.register(configCommand).inSingletonScope();\n container.register(deployCommand).inSingletonScope();\n container.register(pulumiCommand).inSingletonScope();\n container.register(refreshCommand).inSingletonScope();\n container.register(enableTelemetryCommand).inSingletonScope();\n container.register(disableTelemetryCommand).inSingletonScope();\n container.register(extensionCommand).inSingletonScope();\n container.register(syncDepsCommand).inSingletonScope();\n container.register(verifyDepsCommand).inSingletonScope();\n container.register(destroyCommand).inSingletonScope();\n container.register(infoCommand).inSingletonScope();\n container.register(isCi).inSingletonScope();\n container.register(openCommand).inSingletonScope();\n container.register(outputCommand).inSingletonScope();\n container.register(watchCommand).inSingletonScope();\n\n container.register(linkProjectCommand).inSingletonScope();\n container.register(loginCommand).inSingletonScope();\n container.register(logoutCommand).inSingletonScope();\n container.register(whoAmICommand).inSingletonScope();\n\n // Graceful error handlers.\n container.register(ddbPutItemConditionalCheckFailedGracefulErrorHandler).inSingletonScope();\n container.register(missingFilesInBuildGracefulErrorHandler).inSingletonScope();\n container.register(pendingOperationsGracefulErrorHandler).inSingletonScope();\n\n // Global options.\n container.register(showLogsGlobalOption).inSingletonScope();\n container.register(logLevelGlobalOption).inSingletonScope();\n container.register(stackTraceGlobalOption).inSingletonScope();\n\n // Services.\n container.register(argvParserService).inSingletonScope();\n container.register(cliParamsService).inSingletonScope();\n container.register(commandsRegistryService).inSingletonScope();\n container.register(getArgvService).inSingletonScope();\n container.register(getCliRunnerService).inSingletonScope();\n container.register(getIsCiService).inSingletonScope();\n container.register(globalOptionsRegistryService).inSingletonScope();\n container.register(getProjectSdkService).inSingletonScope();\n container.register(loggerService).inSingletonScope();\n container.register(runCliRunnerService).inSingletonScope();\n container.register(stdioService).inSingletonScope();\n container.register(uiService).inSingletonScope();\n\n // Extensions.\n const ui = container.resolve(UiService);\n\n try {\n // Immediately set CLI instance params via the `CliParamsService`.\n container.resolve(CliParamsService).set(params);\n\n const projectSdk = await container.resolve(GetProjectSdkService).execute();\n\n const projectConfig = await projectSdk.getProjectConfig({\n tags: { runtimeContext: \"cli\" }\n });\n\n await projectSdk.validateProjectConfig(projectConfig);\n\n const project = projectSdk.getProject();\n\n const importFromPath = async (filePath: string) => {\n let importPath: string;\n if (filePath.startsWith(\"/extensions/\")) {\n // Resolve from project root.\n importPath = project.paths.rootFolder.join(filePath).toString();\n } else {\n // Treat as absolute path.\n importPath = filePath;\n }\n\n const exportName = path.basename(filePath).replace(path.extname(filePath), \"\");\n\n const importedModule = await import(toImportSpecifier(importPath));\n\n // Support both default and named exports.\n // Check for 'default' property existence rather than truthiness.\n return (\n (\"default\" in importedModule && importedModule.default) ||\n importedModule[exportName]\n );\n };\n\n const commands = projectConfig.extensionsByType(CliCommand);\n for (const command of commands) {\n const commandImplementation = await importFromPath(command.params.src);\n\n container.register(commandImplementation).inSingletonScope();\n }\n } catch (error) {\n let realError = error;\n if (error.cause) {\n realError = error.cause as Error;\n }\n\n ui.error(realError.message);\n\n const argv = container.resolve(GetArgvService).execute();\n if (argv.showStackTrace && realError.stack) {\n ui.emptyLine();\n ui.debug(\"Stack trace:\");\n ui.text(realError.stack);\n }\n\n if (error && error instanceof GracefulError) {\n ui.emptyLine();\n ui.text(bgYellow(bold(\"💡 How can I resolve this?\")));\n ui.text(error.message);\n }\n\n process.exit(1);\n }\n\n // Decorators.\n container.registerDecorator(commandsWithGracefulErrorHandling);\n container.registerDecorator(deployCommandWithTelemetry);\n\n return container;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export { LoggerService as Logger } from "../abstractions/services/LoggerService.js";
2
+ export { UiService as Ui } from "../abstractions/services/UiService.js";
package/exports/cli.js ADDED
@@ -0,0 +1,4 @@
1
+ export { LoggerService as Logger } from "../abstractions/services/LoggerService.js";
2
+ export { UiService as Ui } from "../abstractions/services/UiService.js";
3
+
4
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LoggerService","Logger","UiService","Ui"],"sources":["cli.ts"],"sourcesContent":["export { LoggerService as Logger } from \"~/abstractions/services/LoggerService.js\";\nexport { UiService as Ui } from \"~/abstractions/services/UiService.js\";\n"],"mappings":"AAAA,SAASA,aAAa,IAAIC,MAAM;AAChC,SAASC,SAAS,IAAIC,EAAE","ignoreList":[]}
@@ -1,8 +1,4 @@
1
1
  import { z } from "zod";
2
2
  export declare const CliCommand: import("@webiny/project/defineExtension/defineExtension").ExtensionComponent<z.ZodObject<{
3
- src: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
4
- }, "strip", z.ZodTypeAny, {
5
- src: string;
6
- }, {
7
- src: string;
8
- }>>;
3
+ src: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
4
+ }, z.core.$strip>>;
@@ -1,8 +1,4 @@
1
1
  import { z } from "zod";
2
2
  export declare const CliCommandDecorator: import("@webiny/project/defineExtension/defineExtension").ExtensionComponent<z.ZodObject<{
3
- src: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
4
- }, "strip", z.ZodTypeAny, {
5
- src: string;
6
- }, {
7
- src: string;
8
- }>>;
3
+ src: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
4
+ }, z.core.$strip>>;
@@ -1,9 +1,5 @@
1
1
  import { CliCommand } from "./CliCommand.js";
2
2
  export { CliCommand };
3
3
  export declare const definitions: import("@webiny/project/defineExtension/index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
4
- src: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>;
5
- }, "strip", import("zod").ZodTypeAny, {
6
- src: string;
7
- }, {
8
- src: string;
9
- }>>[];
4
+ src: import("zod").ZodPipe<import("zod").ZodString, import("zod").ZodTransform<string, string>>;
5
+ }, import("zod/v4/core").$strip>>[];
@@ -1,5 +1,5 @@
1
1
  import { DependencyTree } from "./DependencyTree.js";
2
- import loadJsonFile from "load-json-file";
2
+ import { loadJsonFileSync } from "load-json-file";
3
3
  export class BuildDependencyTree {
4
4
  build(params) {
5
5
  const {
@@ -10,7 +10,7 @@ export class BuildDependencyTree {
10
10
  const tree = new DependencyTree();
11
11
  for (const file of files) {
12
12
  try {
13
- const json = loadJsonFile.sync(file);
13
+ const json = loadJsonFileSync(file);
14
14
  tree.push({
15
15
  file: file.replace(basePath, ""),
16
16
  json,
@@ -1 +1 @@
1
- {"version":3,"names":["DependencyTree","loadJsonFile","BuildDependencyTree","build","params","basePath","files","ignore","tree","file","json","sync","push","replace","console","log"],"sources":["BuildDependencyTree.ts"],"sourcesContent":["import type { IDependencyTree } from \"./types.js\";\nimport { DependencyTree } from \"./DependencyTree.js\";\nimport type { PackageJson } from \"type-fest\";\nimport loadJsonFile from \"load-json-file\";\n\nexport interface IBuildDependencyTreeParams {\n basePath: string;\n files: string[];\n ignore?: RegExp;\n}\n\nexport class BuildDependencyTree {\n public build(params: IBuildDependencyTreeParams): IDependencyTree {\n const { basePath, files, ignore } = params;\n const tree = new DependencyTree();\n for (const file of files) {\n try {\n const json = loadJsonFile.sync<PackageJson>(file);\n tree.push({\n file: file.replace(basePath, \"\"),\n json,\n ignore\n });\n } catch {\n console.log(`Failed to load \"${file}\".`);\n }\n }\n return tree;\n }\n}\n"],"mappings":"AACA,SAASA,cAAc;AAEvB,OAAOC,YAAY,MAAM,gBAAgB;AAQzC,OAAO,MAAMC,mBAAmB,CAAC;EACtBC,KAAKA,CAACC,MAAkC,EAAmB;IAC9D,MAAM;MAAEC,QAAQ;MAAEC,KAAK;MAAEC;IAAO,CAAC,GAAGH,MAAM;IAC1C,MAAMI,IAAI,GAAG,IAAIR,cAAc,CAAC,CAAC;IACjC,KAAK,MAAMS,IAAI,IAAIH,KAAK,EAAE;MACtB,IAAI;QACA,MAAMI,IAAI,GAAGT,YAAY,CAACU,IAAI,CAAcF,IAAI,CAAC;QACjDD,IAAI,CAACI,IAAI,CAAC;UACNH,IAAI,EAAEA,IAAI,CAACI,OAAO,CAACR,QAAQ,EAAE,EAAE,CAAC;UAChCK,IAAI;UACJH;QACJ,CAAC,CAAC;MACN,CAAC,CAAC,MAAM;QACJO,OAAO,CAACC,GAAG,CAAC,mBAAmBN,IAAI,IAAI,CAAC;MAC5C;IACJ;IACA,OAAOD,IAAI;EACf;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["DependencyTree","loadJsonFileSync","BuildDependencyTree","build","params","basePath","files","ignore","tree","file","json","push","replace","console","log"],"sources":["BuildDependencyTree.ts"],"sourcesContent":["import type { IDependencyTree } from \"./types.js\";\nimport { DependencyTree } from \"./DependencyTree.js\";\nimport type { PackageJson } from \"type-fest\";\nimport { loadJsonFileSync } from \"load-json-file\";\n\nexport interface IBuildDependencyTreeParams {\n basePath: string;\n files: string[];\n ignore?: RegExp;\n}\n\nexport class BuildDependencyTree {\n public build(params: IBuildDependencyTreeParams): IDependencyTree {\n const { basePath, files, ignore } = params;\n const tree = new DependencyTree();\n for (const file of files) {\n try {\n const json = loadJsonFileSync<PackageJson>(file);\n tree.push({\n file: file.replace(basePath, \"\"),\n json,\n ignore\n });\n } catch {\n console.log(`Failed to load \"${file}\".`);\n }\n }\n return tree;\n }\n}\n"],"mappings":"AACA,SAASA,cAAc;AAEvB,SAASC,gBAAgB,QAAQ,gBAAgB;AAQjD,OAAO,MAAMC,mBAAmB,CAAC;EACtBC,KAAKA,CAACC,MAAkC,EAAmB;IAC9D,MAAM;MAAEC,QAAQ;MAAEC,KAAK;MAAEC;IAAO,CAAC,GAAGH,MAAM;IAC1C,MAAMI,IAAI,GAAG,IAAIR,cAAc,CAAC,CAAC;IACjC,KAAK,MAAMS,IAAI,IAAIH,KAAK,EAAE;MACtB,IAAI;QACA,MAAMI,IAAI,GAAGT,gBAAgB,CAAcQ,IAAI,CAAC;QAChDD,IAAI,CAACG,IAAI,CAAC;UACNF,IAAI,EAAEA,IAAI,CAACG,OAAO,CAACP,QAAQ,EAAE,EAAE,CAAC;UAChCK,IAAI;UACJH;QACJ,CAAC,CAAC;MACN,CAAC,CAAC,MAAM;QACJM,OAAO,CAACC,GAAG,CAAC,mBAAmBL,IAAI,IAAI,CAAC;MAC5C;IACJ;IACA,OAAOD,IAAI;EACf;AACJ","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import glob from "glob";
1
+ import fastGlob from "fast-glob";
2
2
  const defaultIgnore = ["**/node_modules/**", "**/dist/**", "**/build/**"];
3
3
  export class ListAllPackageJsonFiles {
4
4
  list(params) {
@@ -6,7 +6,7 @@ export class ListAllPackageJsonFiles {
6
6
  const ignore = defaultIgnore.concat(params.ignore || []);
7
7
  const results = [];
8
8
  for (const target of targets) {
9
- const files = glob.sync(`${target}/**/**/{package.json,*.package.json,dependencies.json}`, {
9
+ const files = fastGlob.sync(`${target}/**/**/{package.json,*.package.json,dependencies.json}`, {
10
10
  ignore
11
11
  });
12
12
  results.push(...files);
@@ -1 +1 @@
1
- {"version":3,"names":["glob","defaultIgnore","ListAllPackageJsonFiles","list","params","targets","ignore","concat","results","target","files","sync","push"],"sources":["ListAllPackageJsonFiles.ts"],"sourcesContent":["import glob from \"glob\";\n\nconst defaultIgnore = [\"**/node_modules/**\", \"**/dist/**\", \"**/build/**\"];\n\nexport interface IListAllPackageJsonFilesListParams {\n targets: string[];\n ignore?: string[];\n}\n\nexport class ListAllPackageJsonFiles {\n public list(params: IListAllPackageJsonFilesListParams): string[] {\n const targets = params.targets;\n const ignore = defaultIgnore.concat(params.ignore || []);\n\n const results: string[] = [];\n\n for (const target of targets) {\n const files = glob.sync(\n `${target}/**/**/{package.json,*.package.json,dependencies.json}`,\n {\n ignore\n }\n );\n results.push(...files);\n }\n\n return results;\n }\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AAEvB,MAAMC,aAAa,GAAG,CAAC,oBAAoB,EAAE,YAAY,EAAE,aAAa,CAAC;AAOzE,OAAO,MAAMC,uBAAuB,CAAC;EAC1BC,IAAIA,CAACC,MAA0C,EAAY;IAC9D,MAAMC,OAAO,GAAGD,MAAM,CAACC,OAAO;IAC9B,MAAMC,MAAM,GAAGL,aAAa,CAACM,MAAM,CAACH,MAAM,CAACE,MAAM,IAAI,EAAE,CAAC;IAExD,MAAME,OAAiB,GAAG,EAAE;IAE5B,KAAK,MAAMC,MAAM,IAAIJ,OAAO,EAAE;MAC1B,MAAMK,KAAK,GAAGV,IAAI,CAACW,IAAI,CACnB,GAAGF,MAAM,wDAAwD,EACjE;QACIH;MACJ,CACJ,CAAC;MACDE,OAAO,CAACI,IAAI,CAAC,GAAGF,KAAK,CAAC;IAC1B;IAEA,OAAOF,OAAO;EAClB;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["fastGlob","defaultIgnore","ListAllPackageJsonFiles","list","params","targets","ignore","concat","results","target","files","sync","push"],"sources":["ListAllPackageJsonFiles.ts"],"sourcesContent":["import fastGlob from \"fast-glob\";\n\nconst defaultIgnore = [\"**/node_modules/**\", \"**/dist/**\", \"**/build/**\"];\n\nexport interface IListAllPackageJsonFilesListParams {\n targets: string[];\n ignore?: string[];\n}\n\nexport class ListAllPackageJsonFiles {\n public list(params: IListAllPackageJsonFilesListParams): string[] {\n const targets = params.targets;\n const ignore = defaultIgnore.concat(params.ignore || []);\n\n const results: string[] = [];\n\n for (const target of targets) {\n const files = fastGlob.sync(\n `${target}/**/**/{package.json,*.package.json,dependencies.json}`,\n {\n ignore\n }\n );\n results.push(...files);\n }\n\n return results;\n }\n}\n"],"mappings":"AAAA,OAAOA,QAAQ,MAAM,WAAW;AAEhC,MAAMC,aAAa,GAAG,CAAC,oBAAoB,EAAE,YAAY,EAAE,aAAa,CAAC;AAOzE,OAAO,MAAMC,uBAAuB,CAAC;EAC1BC,IAAIA,CAACC,MAA0C,EAAY;IAC9D,MAAMC,OAAO,GAAGD,MAAM,CAACC,OAAO;IAC9B,MAAMC,MAAM,GAAGL,aAAa,CAACM,MAAM,CAACH,MAAM,CAACE,MAAM,IAAI,EAAE,CAAC;IAExD,MAAME,OAAiB,GAAG,EAAE;IAE5B,KAAK,MAAMC,MAAM,IAAIJ,OAAO,EAAE;MAC1B,MAAMK,KAAK,GAAGV,QAAQ,CAACW,IAAI,CACvB,GAAGF,MAAM,wDAAwD,EACjE;QACIH;MACJ,CACJ,CAAC;MACDE,OAAO,CAACI,IAAI,CAAC,GAAGF,KAAK,CAAC;IAC1B;IAEA,OAAOF,OAAO;EAClB;AACJ","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { createImplementation } from "@webiny/di";
2
2
  import { CliCommandFactory, GetProjectSdkService, UiService } from "../../../abstractions/index.js";
3
- import loadJsonFile from "load-json-file";
3
+ import { loadJsonFileSync } from "load-json-file";
4
4
  import { getDuplicatesFilePath, getReferencesFilePath } from "../paths.js";
5
5
  import fs from "fs";
6
6
  import { createDependencyTree } from "../createDependencyTree.js";
@@ -30,7 +30,7 @@ export class VerifyDepsCommand {
30
30
  };
31
31
  ui.info("Checking references file...");
32
32
  if (fs.existsSync(referencesFile)) {
33
- const json = loadJsonFile.sync(referencesFile);
33
+ const json = loadJsonFileSync(referencesFile);
34
34
  if (JSON.stringify(references) !== JSON.stringify(json)) {
35
35
  for (const type in references) {
36
36
  const refDependencies = references[type];
@@ -58,7 +58,7 @@ export class VerifyDepsCommand {
58
58
  }
59
59
  ui.info("Checking duplicates file...");
60
60
  if (fs.existsSync(duplicatesFile)) {
61
- const json = loadJsonFile.sync(duplicatesFile);
61
+ const json = loadJsonFileSync(duplicatesFile);
62
62
  if (JSON.stringify(tree.duplicates) !== JSON.stringify(json)) {
63
63
  throw new Error("Duplicates are not in sync. Please run `yarn webiny sync-dependencies` command.");
64
64
  } else if (Array.isArray(json) && json.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","CliCommandFactory","GetProjectSdkService","UiService","loadJsonFile","getDuplicatesFilePath","getReferencesFilePath","fs","createDependencyTree","VerifyDepsCommand","constructor","getProjectSdkService","uiService","execute","name","description","examples","handler","ui","projectSdk","project","getProject","referencesFile","duplicatesFile","tree","references","dependencies","devDependencies","peerDependencies","resolutions","info","existsSync","json","sync","JSON","stringify","type","refDependencies","fileDependencies","dep","refDep","fileDep","console","log","Error","duplicates","Array","isArray","length","verifyDepsCommand","abstraction","implementation"],"sources":["VerifyDepsCommand.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { CliCommandFactory, GetProjectSdkService, UiService } from \"~/abstractions/index.js\";\nimport loadJsonFile from \"load-json-file\";\nimport { getDuplicatesFilePath, getReferencesFilePath } from \"../paths.js\";\nimport fs from \"fs\";\nimport { createDependencyTree } from \"../createDependencyTree.js\";\nimport type { IDependencyCollection } from \"~/features/DepsSync/types.js\";\n\nexport class VerifyDepsCommand implements CliCommandFactory.Interface<unknown> {\n constructor(\n private getProjectSdkService: GetProjectSdkService.Interface,\n private uiService: UiService.Interface\n ) {}\n\n async execute() {\n return {\n name: \"verify-dependencies\",\n description: \"Verify dependencies for all packages.\",\n examples: [\"$0 verify-dependencies\"],\n handler: async () => {\n const ui = this.uiService;\n const projectSdk = await this.getProjectSdkService.execute();\n const project = projectSdk.getProject();\n const referencesFile = getReferencesFilePath(project);\n const duplicatesFile = getDuplicatesFilePath(project);\n\n const tree = createDependencyTree(project);\n\n const references: IDependencyCollection = {\n dependencies: tree.dependencies,\n devDependencies: tree.devDependencies,\n peerDependencies: tree.peerDependencies,\n resolutions: tree.resolutions,\n references: tree.references\n };\n\n ui.info(\"Checking references file...\");\n\n if (fs.existsSync(referencesFile)) {\n const json = loadJsonFile.sync<IDependencyCollection>(referencesFile)!;\n if (JSON.stringify(references) !== JSON.stringify(json)) {\n for (const type in references) {\n const refDependencies = references[type as keyof typeof references];\n const fileDependencies = json[type as keyof typeof json];\n for (const dep in refDependencies) {\n const refDep = refDependencies[dep];\n const fileDep = fileDependencies[dep];\n if (!fileDep) {\n console.log(\"Missing dependency:\", refDep.name, \"in\", type);\n continue;\n }\n if (JSON.stringify(refDep) !== JSON.stringify(fileDep)) {\n console.log(\"Mismatch in dependency:\", refDep.name, \"in\", type);\n console.log({\n refDep: JSON.stringify(refDep),\n fileDep: JSON.stringify(fileDep)\n });\n }\n }\n }\n throw new Error(\n \"References are not in sync. Please run `yarn webiny sync-dependencies` command.\"\n );\n }\n } else {\n throw new Error(\n \"References file does not exist. Please run `yarn webiny sync-dependencies` command.\"\n );\n }\n\n ui.info(\"Checking duplicates file...\");\n\n if (fs.existsSync(duplicatesFile)) {\n const json = loadJsonFile.sync(duplicatesFile);\n if (JSON.stringify(tree.duplicates) !== JSON.stringify(json)) {\n throw new Error(\n \"Duplicates are not in sync. Please run `yarn webiny sync-dependencies` command.\"\n );\n } else if (Array.isArray(json) && json.length > 0) {\n throw new Error(\n \"There are still duplicates in the project. Please sort them out and run `yarn webiny sync-dependencies` command to regenerate files.\"\n );\n }\n } else {\n throw new Error(\n \"Duplicates file does not exist. Please run `yarn webiny sync-dependencies` command.\"\n );\n }\n\n ui.info(\"✅ All package reference files are in sync.\");\n }\n };\n }\n}\n\nexport const verifyDepsCommand = createImplementation({\n abstraction: CliCommandFactory,\n implementation: VerifyDepsCommand,\n dependencies: [GetProjectSdkService, UiService]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createImplementation","CliCommandFactory","GetProjectSdkService","UiService","loadJsonFileSync","getDuplicatesFilePath","getReferencesFilePath","fs","createDependencyTree","VerifyDepsCommand","constructor","getProjectSdkService","uiService","execute","name","description","examples","handler","ui","projectSdk","project","getProject","referencesFile","duplicatesFile","tree","references","dependencies","devDependencies","peerDependencies","resolutions","info","existsSync","json","JSON","stringify","type","refDependencies","fileDependencies","dep","refDep","fileDep","console","log","Error","duplicates","Array","isArray","length","verifyDepsCommand","abstraction","implementation"],"sources":["VerifyDepsCommand.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { CliCommandFactory, GetProjectSdkService, UiService } from \"~/abstractions/index.js\";\nimport { loadJsonFileSync } from \"load-json-file\";\nimport { getDuplicatesFilePath, getReferencesFilePath } from \"../paths.js\";\nimport fs from \"fs\";\nimport { createDependencyTree } from \"../createDependencyTree.js\";\nimport type { IDependencyCollection } from \"~/features/DepsSync/types.js\";\n\nexport class VerifyDepsCommand implements CliCommandFactory.Interface<unknown> {\n constructor(\n private getProjectSdkService: GetProjectSdkService.Interface,\n private uiService: UiService.Interface\n ) {}\n\n async execute() {\n return {\n name: \"verify-dependencies\",\n description: \"Verify dependencies for all packages.\",\n examples: [\"$0 verify-dependencies\"],\n handler: async () => {\n const ui = this.uiService;\n const projectSdk = await this.getProjectSdkService.execute();\n const project = projectSdk.getProject();\n const referencesFile = getReferencesFilePath(project);\n const duplicatesFile = getDuplicatesFilePath(project);\n\n const tree = createDependencyTree(project);\n\n const references: IDependencyCollection = {\n dependencies: tree.dependencies,\n devDependencies: tree.devDependencies,\n peerDependencies: tree.peerDependencies,\n resolutions: tree.resolutions,\n references: tree.references\n };\n\n ui.info(\"Checking references file...\");\n\n if (fs.existsSync(referencesFile)) {\n const json = loadJsonFileSync<IDependencyCollection>(referencesFile)!;\n if (JSON.stringify(references) !== JSON.stringify(json)) {\n for (const type in references) {\n const refDependencies = references[type as keyof typeof references];\n const fileDependencies = json[type as keyof typeof json];\n for (const dep in refDependencies) {\n const refDep = refDependencies[dep];\n const fileDep = fileDependencies[dep];\n if (!fileDep) {\n console.log(\"Missing dependency:\", refDep.name, \"in\", type);\n continue;\n }\n if (JSON.stringify(refDep) !== JSON.stringify(fileDep)) {\n console.log(\"Mismatch in dependency:\", refDep.name, \"in\", type);\n console.log({\n refDep: JSON.stringify(refDep),\n fileDep: JSON.stringify(fileDep)\n });\n }\n }\n }\n throw new Error(\n \"References are not in sync. Please run `yarn webiny sync-dependencies` command.\"\n );\n }\n } else {\n throw new Error(\n \"References file does not exist. Please run `yarn webiny sync-dependencies` command.\"\n );\n }\n\n ui.info(\"Checking duplicates file...\");\n\n if (fs.existsSync(duplicatesFile)) {\n const json = loadJsonFileSync(duplicatesFile);\n if (JSON.stringify(tree.duplicates) !== JSON.stringify(json)) {\n throw new Error(\n \"Duplicates are not in sync. Please run `yarn webiny sync-dependencies` command.\"\n );\n } else if (Array.isArray(json) && json.length > 0) {\n throw new Error(\n \"There are still duplicates in the project. Please sort them out and run `yarn webiny sync-dependencies` command to regenerate files.\"\n );\n }\n } else {\n throw new Error(\n \"Duplicates file does not exist. Please run `yarn webiny sync-dependencies` command.\"\n );\n }\n\n ui.info(\"✅ All package reference files are in sync.\");\n }\n };\n }\n}\n\nexport const verifyDepsCommand = createImplementation({\n abstraction: CliCommandFactory,\n implementation: VerifyDepsCommand,\n dependencies: [GetProjectSdkService, UiService]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import writeJsonFile from "write-json-file";
1
+ import { writeJsonFileSync } from "write-json-file";
2
2
  import { getDuplicatesFilePath, getReferencesFilePath } from "./paths.js";
3
3
  export const createReferenceFile = (project, tree, di) => {
4
4
  const refsFilePath = getReferencesFilePath(project);
@@ -18,11 +18,11 @@ export const createReferenceFile = (project, tree, di) => {
18
18
  references: tree.references
19
19
  };
20
20
  ui.info(`Creating %s...`, refsFilePath);
21
- writeJsonFile.sync(refsFilePath, json, {
21
+ writeJsonFileSync(refsFilePath, json, {
22
22
  indent: 0
23
23
  });
24
24
  ui.info(`Creating %s...`, dupesFilePath);
25
- writeJsonFile.sync(dupesFilePath, tree.duplicates, {
25
+ writeJsonFileSync(dupesFilePath, tree.duplicates, {
26
26
  indent: 0
27
27
  });
28
28
  };
@@ -1 +1 @@
1
- {"version":3,"names":["writeJsonFile","getDuplicatesFilePath","getReferencesFilePath","createReferenceFile","project","tree","di","refsFilePath","dupesFilePath","uiService","ui","references","length","info","json","dependencies","devDependencies","peerDependencies","resolutions","sync","indent","duplicates"],"sources":["createReferenceFile.ts"],"sourcesContent":["import writeJsonFile from \"write-json-file\";\nimport { IProjectModel } from \"@webiny/project\";\nimport { UiService } from \"~/abstractions/services/index.js\";\nimport { getDuplicatesFilePath, getReferencesFilePath } from \"./paths.js\";\nimport type { IDependencyCollection, IDependencyTree } from \"./types.js\";\n\nexport interface ICreateReferenceFileDi {\n uiService: UiService.Interface;\n}\n\nexport const createReferenceFile = (\n project: IProjectModel,\n tree: IDependencyTree,\n di: ICreateReferenceFileDi\n): void => {\n const refsFilePath = getReferencesFilePath(project);\n const dupesFilePath = getDuplicatesFilePath(project);\n\n const { uiService: ui } = di;\n if (tree.references.length === 0) {\n ui.info(\"No references found.\");\n return;\n }\n\n const json: IDependencyCollection = {\n dependencies: tree.dependencies,\n devDependencies: tree.devDependencies,\n peerDependencies: tree.peerDependencies,\n resolutions: tree.resolutions,\n references: tree.references\n };\n\n ui.info(`Creating %s...`, refsFilePath);\n writeJsonFile.sync(refsFilePath, json, {\n indent: 0\n });\n\n ui.info(`Creating %s...`, dupesFilePath);\n\n writeJsonFile.sync(dupesFilePath, tree.duplicates, {\n indent: 0\n });\n};\n"],"mappings":"AAAA,OAAOA,aAAa,MAAM,iBAAiB;AAG3C,SAASC,qBAAqB,EAAEC,qBAAqB;AAOrD,OAAO,MAAMC,mBAAmB,GAAGA,CAC/BC,OAAsB,EACtBC,IAAqB,EACrBC,EAA0B,KACnB;EACP,MAAMC,YAAY,GAAGL,qBAAqB,CAACE,OAAO,CAAC;EACnD,MAAMI,aAAa,GAAGP,qBAAqB,CAACG,OAAO,CAAC;EAEpD,MAAM;IAAEK,SAAS,EAAEC;EAAG,CAAC,GAAGJ,EAAE;EAC5B,IAAID,IAAI,CAACM,UAAU,CAACC,MAAM,KAAK,CAAC,EAAE;IAC9BF,EAAE,CAACG,IAAI,CAAC,sBAAsB,CAAC;IAC/B;EACJ;EAEA,MAAMC,IAA2B,GAAG;IAChCC,YAAY,EAAEV,IAAI,CAACU,YAAY;IAC/BC,eAAe,EAAEX,IAAI,CAACW,eAAe;IACrCC,gBAAgB,EAAEZ,IAAI,CAACY,gBAAgB;IACvCC,WAAW,EAAEb,IAAI,CAACa,WAAW;IAC7BP,UAAU,EAAEN,IAAI,CAACM;EACrB,CAAC;EAEDD,EAAE,CAACG,IAAI,CAAC,gBAAgB,EAAEN,YAAY,CAAC;EACvCP,aAAa,CAACmB,IAAI,CAACZ,YAAY,EAAEO,IAAI,EAAE;IACnCM,MAAM,EAAE;EACZ,CAAC,CAAC;EAEFV,EAAE,CAACG,IAAI,CAAC,gBAAgB,EAAEL,aAAa,CAAC;EAExCR,aAAa,CAACmB,IAAI,CAACX,aAAa,EAAEH,IAAI,CAACgB,UAAU,EAAE;IAC/CD,MAAM,EAAE;EACZ,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["writeJsonFileSync","getDuplicatesFilePath","getReferencesFilePath","createReferenceFile","project","tree","di","refsFilePath","dupesFilePath","uiService","ui","references","length","info","json","dependencies","devDependencies","peerDependencies","resolutions","indent","duplicates"],"sources":["createReferenceFile.ts"],"sourcesContent":["import { writeJsonFileSync } from \"write-json-file\";\nimport { IProjectModel } from \"@webiny/project\";\nimport { UiService } from \"~/abstractions/services/index.js\";\nimport { getDuplicatesFilePath, getReferencesFilePath } from \"./paths.js\";\nimport type { IDependencyCollection, IDependencyTree } from \"./types.js\";\n\nexport interface ICreateReferenceFileDi {\n uiService: UiService.Interface;\n}\n\nexport const createReferenceFile = (\n project: IProjectModel,\n tree: IDependencyTree,\n di: ICreateReferenceFileDi\n): void => {\n const refsFilePath = getReferencesFilePath(project);\n const dupesFilePath = getDuplicatesFilePath(project);\n\n const { uiService: ui } = di;\n if (tree.references.length === 0) {\n ui.info(\"No references found.\");\n return;\n }\n\n const json: IDependencyCollection = {\n dependencies: tree.dependencies,\n devDependencies: tree.devDependencies,\n peerDependencies: tree.peerDependencies,\n resolutions: tree.resolutions,\n references: tree.references\n };\n\n ui.info(`Creating %s...`, refsFilePath);\n writeJsonFileSync(refsFilePath, json, {\n indent: 0\n });\n\n ui.info(`Creating %s...`, dupesFilePath);\n\n writeJsonFileSync(dupesFilePath, tree.duplicates, {\n indent: 0\n });\n};\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,iBAAiB;AAGnD,SAASC,qBAAqB,EAAEC,qBAAqB;AAOrD,OAAO,MAAMC,mBAAmB,GAAGA,CAC/BC,OAAsB,EACtBC,IAAqB,EACrBC,EAA0B,KACnB;EACP,MAAMC,YAAY,GAAGL,qBAAqB,CAACE,OAAO,CAAC;EACnD,MAAMI,aAAa,GAAGP,qBAAqB,CAACG,OAAO,CAAC;EAEpD,MAAM;IAAEK,SAAS,EAAEC;EAAG,CAAC,GAAGJ,EAAE;EAC5B,IAAID,IAAI,CAACM,UAAU,CAACC,MAAM,KAAK,CAAC,EAAE;IAC9BF,EAAE,CAACG,IAAI,CAAC,sBAAsB,CAAC;IAC/B;EACJ;EAEA,MAAMC,IAA2B,GAAG;IAChCC,YAAY,EAAEV,IAAI,CAACU,YAAY;IAC/BC,eAAe,EAAEX,IAAI,CAACW,eAAe;IACrCC,gBAAgB,EAAEZ,IAAI,CAACY,gBAAgB;IACvCC,WAAW,EAAEb,IAAI,CAACa,WAAW;IAC7BP,UAAU,EAAEN,IAAI,CAACM;EACrB,CAAC;EAEDD,EAAE,CAACG,IAAI,CAAC,gBAAgB,EAAEN,YAAY,CAAC;EACvCP,iBAAiB,CAACO,YAAY,EAAEO,IAAI,EAAE;IAClCK,MAAM,EAAE;EACZ,CAAC,CAAC;EAEFT,EAAE,CAACG,IAAI,CAAC,gBAAgB,EAAEL,aAAa,CAAC;EAExCR,iBAAiB,CAACQ,aAAa,EAAEH,IAAI,CAACe,UAAU,EAAE;IAC9CD,MAAM,EAAE;EACZ,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
@@ -27,7 +27,7 @@ export class ExtensionCommand {
27
27
  spinner.start("Installing extension...");
28
28
  try {
29
29
  const result = await projectSdk.installExtension(source);
30
- spinner.succeed(`Extension "${result.extensionName}" installed successfully to ${result.extensionPaths.join(", ")}`);
30
+ spinner.succeed(`Extension ${chalk.blue(result.extensionName)} installed successfully to ${chalk.blue(result.extensionPaths.join(", "))}.`);
31
31
 
32
32
  // Display next steps if available
33
33
  if (result.nextSteps && result.nextSteps.length > 0) {
@@ -50,7 +50,7 @@ export class ExtensionCommand {
50
50
  text,
51
51
  variables = []
52
52
  }) => {
53
- const formattedText = variables.reduce((acc, variable) => acc.replace(`%s`, chalk.green(variable)), text);
53
+ const formattedText = variables.reduce((acc, variable) => acc.replace(`%s`, chalk.blue(variable)), text);
54
54
  this.uiService.text(`‣ ${formattedText}`);
55
55
  });
56
56
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","CliCommandFactory","GetProjectSdkService","UiService","chalk","ora","ExtensionCommand","constructor","getProjectSdkService","uiService","execute","name","description","params","type","required","examples","handler","args","source","spinner","projectSdk","start","result","installExtension","succeed","extensionName","extensionPaths","join","nextSteps","length","emptyLine","text","bold","forEach","variables","formattedText","reduce","acc","variable","replace","green","additionalNotes","error","fail","Error","message","extensionCommand","abstraction","implementation","dependencies"],"sources":["ExtensionCommand.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { CliCommandFactory, GetProjectSdkService, UiService } from \"~/abstractions/index.js\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\n\ninterface IExtensionCommandParams {\n source: string;\n}\n\nexport class ExtensionCommand implements CliCommandFactory.Interface<IExtensionCommandParams> {\n constructor(\n private getProjectSdkService: GetProjectSdkService.Interface,\n private uiService: UiService.Interface\n ) {}\n\n execute(): CliCommandFactory.CommandDefinition<IExtensionCommandParams> {\n return {\n name: \"extension\",\n description: \"Download and install extensions from the Webiny extensions repository.\",\n params: [\n {\n name: \"source\",\n description: \"Extension name or path (e.g., admin-logo)\",\n type: \"string\",\n required: true\n }\n ],\n examples: [\"webiny extension admin-logo\", \"webiny extension my-api-extension\"],\n handler: async (args: IExtensionCommandParams) => {\n const { source } = args;\n\n const spinner = ora();\n const projectSdk = await this.getProjectSdkService.execute();\n\n spinner.start(\"Installing extension...\");\n\n try {\n const result = await projectSdk.installExtension(source);\n\n spinner.succeed(\n `Extension \"${result.extensionName}\" installed successfully to ${result.extensionPaths.join(\", \")}`\n );\n\n // Display next steps if available\n if (result.nextSteps && result.nextSteps.length > 0) {\n this.uiService.emptyLine();\n this.uiService.text(chalk.bold(\"Next Steps\"));\n result.nextSteps.forEach(({ text, variables = [] }) => {\n const formattedText = variables.reduce(\n (acc, variable) => acc.replace(`%s`, chalk.green(variable)),\n text\n );\n this.uiService.text(`‣ ${formattedText}`);\n });\n }\n\n // Display additional notes if available\n if (result.additionalNotes && result.additionalNotes.length > 0) {\n this.uiService.emptyLine();\n this.uiService.text(chalk.bold(\"Additional Notes\"));\n result.additionalNotes.forEach(({ text, variables = [] }) => {\n const formattedText = variables.reduce(\n (acc, variable) => acc.replace(`%s`, chalk.green(variable)),\n text\n );\n this.uiService.text(`‣ ${formattedText}`);\n });\n }\n } catch (error) {\n spinner.fail(\"Installation failed.\");\n throw new Error(\n `Failed to install extension from source \"${source}\": ${error.message}`\n );\n }\n }\n };\n }\n}\n\nexport const extensionCommand = createImplementation({\n abstraction: CliCommandFactory,\n implementation: ExtensionCommand,\n dependencies: [GetProjectSdkService, UiService]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createImplementation","CliCommandFactory","GetProjectSdkService","UiService","chalk","ora","ExtensionCommand","constructor","getProjectSdkService","uiService","execute","name","description","params","type","required","examples","handler","args","source","spinner","projectSdk","start","result","installExtension","succeed","blue","extensionName","extensionPaths","join","nextSteps","length","emptyLine","text","bold","forEach","variables","formattedText","reduce","acc","variable","replace","green","additionalNotes","error","fail","Error","message","extensionCommand","abstraction","implementation","dependencies"],"sources":["ExtensionCommand.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { CliCommandFactory, GetProjectSdkService, UiService } from \"~/abstractions/index.js\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\n\ninterface IExtensionCommandParams {\n source: string;\n}\n\nexport class ExtensionCommand implements CliCommandFactory.Interface<IExtensionCommandParams> {\n constructor(\n private getProjectSdkService: GetProjectSdkService.Interface,\n private uiService: UiService.Interface\n ) {}\n\n execute(): CliCommandFactory.CommandDefinition<IExtensionCommandParams> {\n return {\n name: \"extension\",\n description: \"Download and install extensions from the Webiny extensions repository.\",\n params: [\n {\n name: \"source\",\n description: \"Extension name or path (e.g., admin-logo)\",\n type: \"string\",\n required: true\n }\n ],\n examples: [\"webiny extension admin-logo\", \"webiny extension my-api-extension\"],\n handler: async (args: IExtensionCommandParams) => {\n const { source } = args;\n\n const spinner = ora();\n const projectSdk = await this.getProjectSdkService.execute();\n\n spinner.start(\"Installing extension...\");\n\n try {\n const result = await projectSdk.installExtension(source);\n\n spinner.succeed(\n `Extension ${chalk.blue(result.extensionName)} installed successfully to ${chalk.blue(result.extensionPaths.join(\", \"))}.`\n );\n\n // Display next steps if available\n if (result.nextSteps && result.nextSteps.length > 0) {\n this.uiService.emptyLine();\n this.uiService.text(chalk.bold(\"Next Steps\"));\n result.nextSteps.forEach(({ text, variables = [] }) => {\n const formattedText = variables.reduce(\n (acc, variable) => acc.replace(`%s`, chalk.green(variable)),\n text\n );\n this.uiService.text(`‣ ${formattedText}`);\n });\n }\n\n // Display additional notes if available\n if (result.additionalNotes && result.additionalNotes.length > 0) {\n this.uiService.emptyLine();\n this.uiService.text(chalk.bold(\"Additional Notes\"));\n result.additionalNotes.forEach(({ text, variables = [] }) => {\n const formattedText = variables.reduce(\n (acc, variable) => acc.replace(`%s`, chalk.blue(variable)),\n text\n );\n this.uiService.text(`‣ ${formattedText}`);\n });\n }\n } catch (error) {\n spinner.fail(\"Installation failed.\");\n throw new Error(\n `Failed to install extension from source \"${source}\": ${error.message}`\n );\n }\n }\n };\n }\n}\n\nexport const extensionCommand = createImplementation({\n abstraction: CliCommandFactory,\n implementation: ExtensionCommand,\n dependencies: [GetProjectSdkService, UiService]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -17,6 +17,8 @@ export class PrintInfoForEnv {
17
17
  env,
18
18
  variant
19
19
  } = params;
20
+ const projectId = await projectSdk.getProjectId();
21
+ const resourcePrefix = await projectSdk.getPulumiResourceNamePrefix();
20
22
  const api = await projectSdk.getAppStackOutput("api");
21
23
  const admin = await projectSdk.getAppStackOutput("admin");
22
24
  const outputs = [api, admin];
@@ -28,6 +30,9 @@ export class PrintInfoForEnv {
28
30
  }
29
31
  const output = [];
30
32
 
33
+ // Project info.
34
+ output.push(`‣ Project ID: ${projectId ? chalk.blue(projectId) : "-"}`, `‣ Resource prefix: ${chalk.blue(resourcePrefix)}`);
35
+
31
36
  // API.
32
37
  if (api) {
33
38
  output.push(`‣ Environment name: ${chalk.blue(env)}`, `‣ Environment variant name: ${variant ? chalk.blue(variant) : "-"}`, `‣ AWS region: ${api?.region}`, `‣ Main GraphQL API: ${api.apiUrl + "/graphql"}`, `‣ Headless CMS GraphQL API:`, ` · Manage API: ${api.apiUrl + "/cms/manage"}`, ` · Read API: ${api.apiUrl + "/cms/read"}`, ` · Preview API: ${api.apiUrl + "/cms/preview"}`);
@@ -36,7 +41,7 @@ export class PrintInfoForEnv {
36
41
  }
37
42
 
38
43
  // Admin.
39
- if (admin) {
44
+ if (admin && admin.appUrl) {
40
45
  output.push(`‣ Admin app: ${admin.appUrl}`);
41
46
  } else {
42
47
  output.push(`‣ Admin app: -`);
@@ -1 +1 @@
1
- {"version":3,"names":["chalk","PrintInfoForEnv","constructor","di","execute","params","env","Error","getProjectSdkService","uiService","projectSdk","ui","variant","api","getAppStackOutput","admin","outputs","stacksDeployedCount","filter","Boolean","length","variantMessage","info","join","output","push","blue","region","apiUrl","appUrl","text"],"sources":["PrintInfoForEnv.ts"],"sourcesContent":["import { GetProjectSdkService, UiService } from \"~/abstractions/index.js\";\nimport chalk from \"chalk\";\n\nexport interface IPrintInfoForEnvParams {\n env: string;\n variant?: string;\n}\n\nexport interface IPrintInfoForEnvDi {\n getProjectSdkService: GetProjectSdkService.Interface;\n uiService: UiService.Interface;\n}\n\nexport class PrintInfoForEnv {\n constructor(private di: IPrintInfoForEnvDi) {}\n\n async execute(params: IPrintInfoForEnvParams) {\n if (typeof params !== \"object\" || !params.env) {\n throw new Error(\"Please provide an object with `env` and `variant` properties.\");\n }\n\n const { getProjectSdkService, uiService } = this.di;\n\n const projectSdk = await getProjectSdkService.execute();\n const ui = uiService;\n\n const { env, variant } = params;\n\n const api = await projectSdk.getAppStackOutput(\"api\");\n\n const admin = await projectSdk.getAppStackOutput(\"admin\");\n\n const outputs = [api, admin];\n\n const stacksDeployedCount = outputs.filter(Boolean).length;\n\n if (stacksDeployedCount === 0) {\n const variantMessage = variant ? ` and variant ${variant}` : \"\";\n ui.info(\n [\n `It seems none of the stacks were deployed, so no info could be provided.`,\n `Please check if the provided environment %s is correct.`\n ].join(\" \"),\n `${env}${variantMessage}`\n );\n return;\n }\n\n const output = [];\n\n // API.\n if (api) {\n output.push(\n `‣ Environment name: ${chalk.blue(env)}`,\n `‣ Environment variant name: ${variant ? chalk.blue(variant) : \"-\"}`,\n `‣ AWS region: ${api?.region}`,\n `‣ Main GraphQL API: ${api.apiUrl + \"/graphql\"}`,\n `‣ Headless CMS GraphQL API:`,\n ` · Manage API: ${api.apiUrl + \"/cms/manage\"}`,\n ` · Read API: ${api.apiUrl + \"/cms/read\"}`,\n ` · Preview API: ${api.apiUrl + \"/cms/preview\"}`\n );\n } else {\n output.push(\n `‣ Environment name: -`,\n `‣ Environment variant name: -`,\n `‣ AWS region: -`,\n `‣ Main GraphQL API: -`,\n `‣ Headless CMS GraphQL API:`,\n ` · Manage API: -`,\n ` · Read API: -`,\n ` · Preview API: -`\n );\n }\n\n // Admin.\n if (admin) {\n output.push(`‣ Admin app: ${admin.appUrl}`);\n } else {\n output.push(`‣ Admin app: -`);\n }\n\n ui.text(output.join(\"\\n\"));\n }\n}\n"],"mappings":"AACA,OAAOA,KAAK,MAAM,OAAO;AAYzB,OAAO,MAAMC,eAAe,CAAC;EACzBC,WAAWA,CAASC,EAAsB,EAAE;IAAA,KAAxBA,EAAsB,GAAtBA,EAAsB;EAAG;EAE7C,MAAMC,OAAOA,CAACC,MAA8B,EAAE;IAC1C,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAI,CAACA,MAAM,CAACC,GAAG,EAAE;MAC3C,MAAM,IAAIC,KAAK,CAAC,+DAA+D,CAAC;IACpF;IAEA,MAAM;MAAEC,oBAAoB;MAAEC;IAAU,CAAC,GAAG,IAAI,CAACN,EAAE;IAEnD,MAAMO,UAAU,GAAG,MAAMF,oBAAoB,CAACJ,OAAO,CAAC,CAAC;IACvD,MAAMO,EAAE,GAAGF,SAAS;IAEpB,MAAM;MAAEH,GAAG;MAAEM;IAAQ,CAAC,GAAGP,MAAM;IAE/B,MAAMQ,GAAG,GAAG,MAAMH,UAAU,CAACI,iBAAiB,CAAC,KAAK,CAAC;IAErD,MAAMC,KAAK,GAAG,MAAML,UAAU,CAACI,iBAAiB,CAAC,OAAO,CAAC;IAEzD,MAAME,OAAO,GAAG,CAACH,GAAG,EAAEE,KAAK,CAAC;IAE5B,MAAME,mBAAmB,GAAGD,OAAO,CAACE,MAAM,CAACC,OAAO,CAAC,CAACC,MAAM;IAE1D,IAAIH,mBAAmB,KAAK,CAAC,EAAE;MAC3B,MAAMI,cAAc,GAAGT,OAAO,GAAG,gBAAgBA,OAAO,EAAE,GAAG,EAAE;MAC/DD,EAAE,CAACW,IAAI,CACH,CACI,0EAA0E,EAC1E,yDAAyD,CAC5D,CAACC,IAAI,CAAC,GAAG,CAAC,EACX,GAAGjB,GAAG,GAAGe,cAAc,EAC3B,CAAC;MACD;IACJ;IAEA,MAAMG,MAAM,GAAG,EAAE;;IAEjB;IACA,IAAIX,GAAG,EAAE;MACLW,MAAM,CAACC,IAAI,CACP,uBAAuBzB,KAAK,CAAC0B,IAAI,CAACpB,GAAG,CAAC,EAAE,EACxC,+BAA+BM,OAAO,GAAGZ,KAAK,CAAC0B,IAAI,CAACd,OAAO,CAAC,GAAG,GAAG,EAAE,EACpE,iBAAiBC,GAAG,EAAEc,MAAM,EAAE,EAC9B,uBAAuBd,GAAG,CAACe,MAAM,GAAG,UAAU,EAAE,EAChD,6BAA6B,EAC7B,oBAAoBf,GAAG,CAACe,MAAM,GAAG,aAAa,EAAE,EAChD,kBAAkBf,GAAG,CAACe,MAAM,GAAG,WAAW,EAAE,EAC5C,qBAAqBf,GAAG,CAACe,MAAM,GAAG,cAAc,EACpD,CAAC;IACL,CAAC,MAAM;MACHJ,MAAM,CAACC,IAAI,CACP,uBAAuB,EACvB,+BAA+B,EAC/B,iBAAiB,EACjB,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACpB,kBAAkB,EAClB,qBACJ,CAAC;IACL;;IAEA;IACA,IAAIV,KAAK,EAAE;MACPS,MAAM,CAACC,IAAI,CAAC,gBAAgBV,KAAK,CAACc,MAAM,EAAE,CAAC;IAC/C,CAAC,MAAM;MACHL,MAAM,CAACC,IAAI,CAAC,gBAAgB,CAAC;IACjC;IAEAd,EAAE,CAACmB,IAAI,CAACN,MAAM,CAACD,IAAI,CAAC,IAAI,CAAC,CAAC;EAC9B;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["chalk","PrintInfoForEnv","constructor","di","execute","params","env","Error","getProjectSdkService","uiService","projectSdk","ui","variant","projectId","getProjectId","resourcePrefix","getPulumiResourceNamePrefix","api","getAppStackOutput","admin","outputs","stacksDeployedCount","filter","Boolean","length","variantMessage","info","join","output","push","blue","region","apiUrl","appUrl","text"],"sources":["PrintInfoForEnv.ts"],"sourcesContent":["import { GetProjectSdkService, UiService } from \"~/abstractions/index.js\";\nimport chalk from \"chalk\";\n\nexport interface IPrintInfoForEnvParams {\n env: string;\n variant?: string;\n}\n\nexport interface IPrintInfoForEnvDi {\n getProjectSdkService: GetProjectSdkService.Interface;\n uiService: UiService.Interface;\n}\n\nexport class PrintInfoForEnv {\n constructor(private di: IPrintInfoForEnvDi) {}\n\n async execute(params: IPrintInfoForEnvParams) {\n if (typeof params !== \"object\" || !params.env) {\n throw new Error(\"Please provide an object with `env` and `variant` properties.\");\n }\n\n const { getProjectSdkService, uiService } = this.di;\n\n const projectSdk = await getProjectSdkService.execute();\n const ui = uiService;\n\n const { env, variant } = params;\n\n const projectId = await projectSdk.getProjectId();\n const resourcePrefix = await projectSdk.getPulumiResourceNamePrefix();\n\n const api = await projectSdk.getAppStackOutput(\"api\");\n\n const admin = await projectSdk.getAppStackOutput(\"admin\");\n\n const outputs = [api, admin];\n\n const stacksDeployedCount = outputs.filter(Boolean).length;\n\n if (stacksDeployedCount === 0) {\n const variantMessage = variant ? ` and variant ${variant}` : \"\";\n ui.info(\n [\n `It seems none of the stacks were deployed, so no info could be provided.`,\n `Please check if the provided environment %s is correct.`\n ].join(\" \"),\n `${env}${variantMessage}`\n );\n return;\n }\n\n const output = [];\n\n // Project info.\n output.push(\n `‣ Project ID: ${projectId ? chalk.blue(projectId) : \"-\"}`,\n `‣ Resource prefix: ${chalk.blue(resourcePrefix)}`\n );\n\n // API.\n if (api) {\n output.push(\n `‣ Environment name: ${chalk.blue(env)}`,\n `‣ Environment variant name: ${variant ? chalk.blue(variant) : \"-\"}`,\n `‣ AWS region: ${api?.region}`,\n `‣ Main GraphQL API: ${api.apiUrl + \"/graphql\"}`,\n `‣ Headless CMS GraphQL API:`,\n ` · Manage API: ${api.apiUrl + \"/cms/manage\"}`,\n ` · Read API: ${api.apiUrl + \"/cms/read\"}`,\n ` · Preview API: ${api.apiUrl + \"/cms/preview\"}`\n );\n } else {\n output.push(\n `‣ Environment name: -`,\n `‣ Environment variant name: -`,\n `‣ AWS region: -`,\n `‣ Main GraphQL API: -`,\n `‣ Headless CMS GraphQL API:`,\n ` · Manage API: -`,\n ` · Read API: -`,\n ` · Preview API: -`\n );\n }\n\n // Admin.\n if (admin && admin.appUrl) {\n output.push(`‣ Admin app: ${admin.appUrl}`);\n } else {\n output.push(`‣ Admin app: -`);\n }\n\n ui.text(output.join(\"\\n\"));\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -77,7 +77,7 @@ export class LinkProjectCommand {
77
77
  selectedOrg = await prompt({
78
78
  name: "org",
79
79
  message: "Select organization:",
80
- type: "list",
80
+ type: "select",
81
81
  choices,
82
82
  default: choices[0].value
83
83
  }).then(result => result.org);
@@ -114,7 +114,7 @@ export class LinkProjectCommand {
114
114
  selectedProject = await prompt({
115
115
  name: "project",
116
116
  message: "Select project:",
117
- type: "list",
117
+ type: "select",
118
118
  choices,
119
119
  default: choices[0].value
120
120
  }).then(result => result.project);
@@ -125,7 +125,7 @@ export class LinkProjectCommand {
125
125
  await sleep();
126
126
 
127
127
  // Assign the necessary IDs into root `webiny.project.ts` project file.
128
- await projectSdk.setProjectId(selectedProject.id, {
128
+ await projectSdk.setProjectId(`${selectedOrg.id}/${selectedProject.id}`, {
129
129
  force: true
130
130
  });
131
131
  ui.success(`%s Project %s linked successfully.`, "✔", selectedProject.name);
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","inquirer","CliCommandFactory","GetProjectSdkService","UiService","setTimeout","sleep","ms","LinkProjectCommand","constructor","getProjectSdkService","uiService","execute","projectSdk","wcp","ui","name","description","examples","handler","user","getUser","error","orgProjectId","getProjectId","projectId","split","project","projects","find","item","id","info","prompt","createPromptModule","proceed","message","type","default","emptyLine","wcpAppUrl","getWcpAppUrl","toString","orgs","length","open","selectedOrg","choices","map","value","then","result","org","orgProjects","filter","selectedProject","setProjectId","force","success","textBold","text","linkProjectCommand","abstraction","implementation","dependencies"],"sources":["LinkProjectCommand.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport inquirer from \"inquirer\";\nimport { CliCommandFactory, GetProjectSdkService, UiService } from \"~/abstractions/index.js\";\nimport { setTimeout } from \"node:timers/promises\";\n\nconst sleep = (ms: number = 1500) => setTimeout(ms);\n\nexport class LinkProjectCommand implements CliCommandFactory.Interface<void> {\n constructor(\n private getProjectSdkService: GetProjectSdkService.Interface,\n private uiService: UiService.Interface\n ) {}\n\n async execute() {\n const projectSdk = await this.getProjectSdkService.execute();\n const wcp = projectSdk.wcp;\n const ui = this.uiService;\n\n return {\n name: \"link-project\",\n description: \"Link a Webiny project with Webiny Control Panel\",\n examples: [\"$0 link-project\"],\n handler: async () => {\n const user = await wcp.getUser();\n\n if (!user) {\n ui.error(\"You must be logged in to link a project.\");\n return;\n }\n\n // User already linked a project?\n const orgProjectId = await projectSdk.getProjectId();\n if (orgProjectId) {\n const [, projectId] = orgProjectId.split(\"/\");\n const project = user.projects.find(item => item.id === projectId);\n if (project) {\n ui.info(\"Your %s project is already linked.\", orgProjectId);\n\n const prompt = inquirer.createPromptModule();\n const { proceed } = await prompt({\n name: \"proceed\",\n message: \"Would you like to re-link it?\",\n type: \"confirm\",\n default: false\n });\n\n if (!proceed) {\n return;\n }\n\n ui.emptyLine();\n }\n }\n\n const wcpAppUrl = projectSdk.wcp.getWcpAppUrl().toString();\n\n // Get user's organizations.\n if (!user.orgs.length) {\n ui.info(\n \"It seems you're not part of any organization. Please log in to Webiny Control Panel and create one.\"\n );\n\n const prompt = inquirer.createPromptModule();\n const { proceed } = await prompt({\n name: \"proceed\",\n message: \"Would you like to do that now?\",\n type: \"confirm\",\n default: false\n });\n\n if (proceed) {\n open(wcpAppUrl);\n }\n return;\n }\n\n let selectedOrg;\n if (user.orgs.length === 1) {\n selectedOrg = user.orgs[0];\n } else {\n ui.info(\"It seems you're part of multiple organizations. \");\n const choices = user.orgs.map(item => ({\n name: item.name,\n value: item\n }));\n\n const prompt = inquirer.createPromptModule();\n selectedOrg = await prompt({\n name: \"org\",\n message: \"Select organization:\",\n type: \"list\",\n choices,\n default: choices[0].value\n }).then(result => result.org);\n }\n\n const orgProjects = user.projects.filter(item => item.org.id === selectedOrg.id);\n\n // Get user's projects.\n if (!orgProjects.length) {\n ui.info(\n \"It seems there are no projects created within the %s organization.\",\n selectedOrg.name\n );\n\n const prompt = inquirer.createPromptModule();\n const { proceed } = await prompt({\n name: \"proceed\",\n message: \"Would you like to create one now?\",\n type: \"confirm\",\n default: false\n });\n\n if (proceed) {\n open(wcpAppUrl);\n }\n return;\n }\n\n let selectedProject;\n if (orgProjects.length === 1) {\n selectedProject = user.projects[0];\n } else {\n ui.info(\n `It seems there are multiple projects created within the organization.`,\n selectedOrg.name\n );\n const choices = orgProjects.map(item => ({\n name: item.name,\n value: item\n }));\n const prompt = inquirer.createPromptModule();\n selectedProject = await prompt({\n name: \"project\",\n message: \"Select project:\",\n type: \"list\",\n choices,\n default: choices[0].value\n }).then(result => result.project);\n }\n\n await sleep();\n ui.emptyLine();\n\n ui.info(\"Linking %s project...\", selectedProject.name);\n\n await sleep();\n\n // Assign the necessary IDs into root `webiny.project.ts` project file.\n await projectSdk.setProjectId(selectedProject.id, { force: true });\n\n ui.success(`%s Project %s linked successfully.`, \"✔\", selectedProject.name);\n\n await sleep();\n\n ui.emptyLine();\n ui.textBold(\"Next Steps\");\n\n ui.text(`‣ deploy your project via the yarn webiny deploy command`);\n }\n };\n }\n}\n\nexport const linkProjectCommand = createImplementation({\n abstraction: CliCommandFactory,\n implementation: LinkProjectCommand,\n dependencies: [GetProjectSdkService, UiService]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createImplementation","inquirer","CliCommandFactory","GetProjectSdkService","UiService","setTimeout","sleep","ms","LinkProjectCommand","constructor","getProjectSdkService","uiService","execute","projectSdk","wcp","ui","name","description","examples","handler","user","getUser","error","orgProjectId","getProjectId","projectId","split","project","projects","find","item","id","info","prompt","createPromptModule","proceed","message","type","default","emptyLine","wcpAppUrl","getWcpAppUrl","toString","orgs","length","open","selectedOrg","choices","map","value","then","result","org","orgProjects","filter","selectedProject","setProjectId","force","success","textBold","text","linkProjectCommand","abstraction","implementation","dependencies"],"sources":["LinkProjectCommand.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport inquirer from \"inquirer\";\nimport { CliCommandFactory, GetProjectSdkService, UiService } from \"~/abstractions/index.js\";\nimport { setTimeout } from \"node:timers/promises\";\n\nconst sleep = (ms: number = 1500) => setTimeout(ms);\n\nexport class LinkProjectCommand implements CliCommandFactory.Interface<void> {\n constructor(\n private getProjectSdkService: GetProjectSdkService.Interface,\n private uiService: UiService.Interface\n ) {}\n\n async execute() {\n const projectSdk = await this.getProjectSdkService.execute();\n const wcp = projectSdk.wcp;\n const ui = this.uiService;\n\n return {\n name: \"link-project\",\n description: \"Link a Webiny project with Webiny Control Panel\",\n examples: [\"$0 link-project\"],\n handler: async () => {\n const user = await wcp.getUser();\n\n if (!user) {\n ui.error(\"You must be logged in to link a project.\");\n return;\n }\n\n // User already linked a project?\n const orgProjectId = await projectSdk.getProjectId();\n if (orgProjectId) {\n const [, projectId] = orgProjectId.split(\"/\");\n const project = user.projects.find(item => item.id === projectId);\n if (project) {\n ui.info(\"Your %s project is already linked.\", orgProjectId);\n\n const prompt = inquirer.createPromptModule();\n const { proceed } = await prompt({\n name: \"proceed\",\n message: \"Would you like to re-link it?\",\n type: \"confirm\",\n default: false\n });\n\n if (!proceed) {\n return;\n }\n\n ui.emptyLine();\n }\n }\n\n const wcpAppUrl = projectSdk.wcp.getWcpAppUrl().toString();\n\n // Get user's organizations.\n if (!user.orgs.length) {\n ui.info(\n \"It seems you're not part of any organization. Please log in to Webiny Control Panel and create one.\"\n );\n\n const prompt = inquirer.createPromptModule();\n const { proceed } = await prompt({\n name: \"proceed\",\n message: \"Would you like to do that now?\",\n type: \"confirm\",\n default: false\n });\n\n if (proceed) {\n open(wcpAppUrl);\n }\n return;\n }\n\n let selectedOrg;\n if (user.orgs.length === 1) {\n selectedOrg = user.orgs[0];\n } else {\n ui.info(\"It seems you're part of multiple organizations. \");\n const choices = user.orgs.map(item => ({\n name: item.name,\n value: item\n }));\n\n const prompt = inquirer.createPromptModule();\n selectedOrg = await prompt({\n name: \"org\",\n message: \"Select organization:\",\n type: \"select\",\n choices,\n default: choices[0].value\n }).then(result => result.org);\n }\n\n const orgProjects = user.projects.filter(item => item.org.id === selectedOrg.id);\n\n // Get user's projects.\n if (!orgProjects.length) {\n ui.info(\n \"It seems there are no projects created within the %s organization.\",\n selectedOrg.name\n );\n\n const prompt = inquirer.createPromptModule();\n const { proceed } = await prompt({\n name: \"proceed\",\n message: \"Would you like to create one now?\",\n type: \"confirm\",\n default: false\n });\n\n if (proceed) {\n open(wcpAppUrl);\n }\n return;\n }\n\n let selectedProject;\n if (orgProjects.length === 1) {\n selectedProject = user.projects[0];\n } else {\n ui.info(\n `It seems there are multiple projects created within the organization.`,\n selectedOrg.name\n );\n const choices = orgProjects.map(item => ({\n name: item.name,\n value: item\n }));\n const prompt = inquirer.createPromptModule();\n selectedProject = await prompt({\n name: \"project\",\n message: \"Select project:\",\n type: \"select\",\n choices,\n default: choices[0].value\n }).then(result => result.project);\n }\n\n await sleep();\n ui.emptyLine();\n\n ui.info(\"Linking %s project...\", selectedProject.name);\n\n await sleep();\n\n // Assign the necessary IDs into root `webiny.project.ts` project file.\n await projectSdk.setProjectId(`${selectedOrg.id}/${selectedProject.id}`, {\n force: true\n });\n\n ui.success(`%s Project %s linked successfully.`, \"✔\", selectedProject.name);\n\n await sleep();\n\n ui.emptyLine();\n ui.textBold(\"Next Steps\");\n\n ui.text(`‣ deploy your project via the yarn webiny deploy command`);\n }\n };\n }\n}\n\nexport const linkProjectCommand = createImplementation({\n abstraction: CliCommandFactory,\n implementation: LinkProjectCommand,\n dependencies: [GetProjectSdkService, UiService]\n});\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/cli-core",
3
- "version": "0.0.0-unstable.6f45466a1d",
3
+ "version": "0.0.0-unstable.81ae05e56b",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -11,38 +11,38 @@
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
13
  "@webiny/di": "0.2.3",
14
- "@webiny/project": "0.0.0-unstable.6f45466a1d",
15
- "@webiny/pulumi-sdk": "0.0.0-unstable.6f45466a1d",
16
- "@webiny/telemetry": "0.0.0-unstable.6f45466a1d",
17
- "chalk": "4.1.2",
14
+ "@webiny/project": "0.0.0-unstable.81ae05e56b",
15
+ "@webiny/pulumi-sdk": "0.0.0-unstable.81ae05e56b",
16
+ "@webiny/telemetry": "0.0.0-unstable.81ae05e56b",
17
+ "chalk": "5.6.2",
18
18
  "ci-info": "4.4.0",
19
19
  "execa": "5.1.1",
20
- "find-up": "5.0.0",
20
+ "fast-glob": "3.3.3",
21
+ "find-up": "8.0.0",
21
22
  "get-yarn-workspaces": "1.0.2",
22
- "glob": "7.2.3",
23
23
  "humanize-duration": "3.33.2",
24
- "inquirer": "12.11.1",
25
- "load-json-file": "6.2.0",
26
- "open": "10.2.0",
27
- "ora": "4.1.1",
28
- "pino": "9.14.0",
29
- "pino-pretty": "9.4.1",
24
+ "inquirer": "13.3.2",
25
+ "load-json-file": "7.0.1",
26
+ "open": "11.0.0",
27
+ "ora": "9.3.0",
28
+ "pino": "10.3.1",
29
+ "pino-pretty": "13.1.3",
30
30
  "semver": "7.7.4",
31
- "type-fest": "5.4.4",
32
- "write-json-file": "4.3.0",
33
- "yargs": "17.7.2",
34
- "zod": "3.25.76"
31
+ "type-fest": "5.5.0",
32
+ "write-json-file": "7.0.0",
33
+ "yargs": "18.0.0",
34
+ "zod": "4.3.6"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/listr": "0.14.10",
38
- "@types/lodash": "4.17.23",
39
- "@webiny/build-tools": "0.0.0-unstable.6f45466a1d",
40
- "rimraf": "6.1.2",
38
+ "@types/lodash": "4.17.24",
39
+ "@webiny/build-tools": "0.0.0-unstable.81ae05e56b",
40
+ "rimraf": "6.1.3",
41
41
  "typescript": "5.9.3"
42
42
  },
43
43
  "publishConfig": {
44
44
  "access": "public",
45
45
  "directory": "dist"
46
46
  },
47
- "gitHead": "6f45466a1d9fb94f6156923501eb90ac303b81a5"
47
+ "gitHead": "81ae05e56bcc774d1e077ca615a0005e736aa5a6"
48
48
  }
@@ -2,7 +2,7 @@ import { createImplementation } from "@webiny/di";
2
2
  import { GetArgvService, LoggerService } from "../../abstractions/index.js";
3
3
  import * as fs from "node:fs";
4
4
  import path from "node:path";
5
- import findUp from "find-up";
5
+ import { findUpSync } from "find-up";
6
6
  import { pino } from "pino";
7
7
  import pinoPretty from "pino-pretty";
8
8
  const DEFAULT_LOG_LEVEL = "info";
@@ -61,7 +61,7 @@ export class DefaultLoggerService {
61
61
  // Wanted to use `GetProjectSdkService` to get project root path, but
62
62
  // to get that, had to call async method, which is not allowed in constructor.
63
63
  // TODO: implement a better way to get project root path.
64
- const webinyConfigPath = findUp.sync("webiny.config.tsx");
64
+ const webinyConfigPath = findUpSync("webiny.config.tsx");
65
65
  if (!webinyConfigPath) {
66
66
  // Should not happen, but just in case.
67
67
  throw new Error("Could not find project root path.");
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","GetArgvService","LoggerService","fs","path","findUp","pino","pinoPretty","DEFAULT_LOG_LEVEL","DefaultLoggerService","pinoLogger","constructor","getArgvService","trace","message","optionalParams","logger","getLogger","fatal","debug","info","warn","error","log","logStream","getLogStream","level","getLogLevel","argv","execute","showLogs","ignore","webinyConfigPath","sync","Error","projectRootPath","dirname","logsFolderPath","join","logsFileName","getLogFileName","existsSync","mkdirSync","recursive","logFilePath","createWriteStream","flags","now","Date","dateStr","toISOString","split","process","env","WEBINY_CLI_LOG_LEVEL","logLevel","loggerService","abstraction","implementation","dependencies"],"sources":["LoggerService.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { GetArgvService, LoggerService } from \"~/abstractions/index.js\";\nimport * as fs from \"node:fs\";\nimport path from \"node:path\";\nimport findUp from \"find-up\";\nimport { pino, type Logger } from \"pino\";\nimport pinoPretty from \"pino-pretty\";\n\nconst DEFAULT_LOG_LEVEL = \"info\";\n\nexport class DefaultLoggerService implements LoggerService.Interface {\n private pinoLogger: Logger | null = null;\n\n constructor(private readonly getArgvService: GetArgvService.Interface) {}\n\n trace(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.trace(message, ...optionalParams);\n }\n\n fatal(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.fatal(message, ...optionalParams);\n }\n\n debug(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.debug(message, ...optionalParams);\n }\n\n info(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.info(message, ...optionalParams);\n }\n\n warn(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.warn(message, ...optionalParams);\n }\n\n error(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.error(message, ...optionalParams);\n }\n\n log(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.info(message, ...optionalParams);\n }\n\n private getLogger() {\n if (this.pinoLogger) {\n return this.pinoLogger;\n }\n\n const logStream = this.getLogStream();\n const level = this.getLogLevel();\n\n this.pinoLogger = pino({ level }, logStream);\n\n return this.pinoLogger;\n }\n\n private getLogStream() {\n const argv = this.getArgvService.execute();\n if (argv.showLogs) {\n return pinoPretty({\n ignore: \"pid,hostname\"\n });\n }\n\n // Wanted to use `GetProjectSdkService` to get project root path, but\n // to get that, had to call async method, which is not allowed in constructor.\n // TODO: implement a better way to get project root path.\n const webinyConfigPath = findUp.sync(\"webiny.config.tsx\");\n if (!webinyConfigPath) {\n // Should not happen, but just in case.\n throw new Error(\"Could not find project root path.\");\n }\n\n const projectRootPath = path.dirname(webinyConfigPath!);\n\n const logsFolderPath = path.join(projectRootPath, \".webiny\", \"logs\");\n const logsFileName = this.getLogFileName();\n\n if (!fs.existsSync(logsFolderPath)) {\n fs.mkdirSync(logsFolderPath, { recursive: true });\n }\n\n const logFilePath = path.join(logsFolderPath, logsFileName);\n\n // Ensure the file exists or can be appended to\n return fs.createWriteStream(logFilePath, { flags: \"a\" });\n }\n\n private getLogFileName() {\n const now = new Date();\n const dateStr = now.toISOString().split(\"T\")[0];\n return `logs-${dateStr}.log`;\n }\n\n private getLogLevel() {\n const argv = this.getArgvService.execute();\n return process.env.WEBINY_CLI_LOG_LEVEL || argv.logLevel || DEFAULT_LOG_LEVEL;\n }\n}\n\nexport const loggerService = createImplementation({\n abstraction: LoggerService,\n implementation: DefaultLoggerService,\n dependencies: [GetArgvService]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createImplementation","GetArgvService","LoggerService","fs","path","findUpSync","pino","pinoPretty","DEFAULT_LOG_LEVEL","DefaultLoggerService","pinoLogger","constructor","getArgvService","trace","message","optionalParams","logger","getLogger","fatal","debug","info","warn","error","log","logStream","getLogStream","level","getLogLevel","argv","execute","showLogs","ignore","webinyConfigPath","Error","projectRootPath","dirname","logsFolderPath","join","logsFileName","getLogFileName","existsSync","mkdirSync","recursive","logFilePath","createWriteStream","flags","now","Date","dateStr","toISOString","split","process","env","WEBINY_CLI_LOG_LEVEL","logLevel","loggerService","abstraction","implementation","dependencies"],"sources":["LoggerService.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { GetArgvService, LoggerService } from \"~/abstractions/index.js\";\nimport * as fs from \"node:fs\";\nimport path from \"node:path\";\nimport { findUpSync } from \"find-up\";\nimport { pino, type Logger } from \"pino\";\nimport pinoPretty from \"pino-pretty\";\n\nconst DEFAULT_LOG_LEVEL = \"info\";\n\nexport class DefaultLoggerService implements LoggerService.Interface {\n private pinoLogger: Logger | null = null;\n\n constructor(private readonly getArgvService: GetArgvService.Interface) {}\n\n trace(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.trace(message, ...optionalParams);\n }\n\n fatal(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.fatal(message, ...optionalParams);\n }\n\n debug(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.debug(message, ...optionalParams);\n }\n\n info(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.info(message, ...optionalParams);\n }\n\n warn(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.warn(message, ...optionalParams);\n }\n\n error(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.error(message, ...optionalParams);\n }\n\n log(message?: any, ...optionalParams: any[]) {\n const logger = this.getLogger();\n logger.info(message, ...optionalParams);\n }\n\n private getLogger() {\n if (this.pinoLogger) {\n return this.pinoLogger;\n }\n\n const logStream = this.getLogStream();\n const level = this.getLogLevel();\n\n this.pinoLogger = pino({ level }, logStream);\n\n return this.pinoLogger;\n }\n\n private getLogStream() {\n const argv = this.getArgvService.execute();\n if (argv.showLogs) {\n return pinoPretty({\n ignore: \"pid,hostname\"\n });\n }\n\n // Wanted to use `GetProjectSdkService` to get project root path, but\n // to get that, had to call async method, which is not allowed in constructor.\n // TODO: implement a better way to get project root path.\n const webinyConfigPath = findUpSync(\"webiny.config.tsx\");\n if (!webinyConfigPath) {\n // Should not happen, but just in case.\n throw new Error(\"Could not find project root path.\");\n }\n\n const projectRootPath = path.dirname(webinyConfigPath!);\n\n const logsFolderPath = path.join(projectRootPath, \".webiny\", \"logs\");\n const logsFileName = this.getLogFileName();\n\n if (!fs.existsSync(logsFolderPath)) {\n fs.mkdirSync(logsFolderPath, { recursive: true });\n }\n\n const logFilePath = path.join(logsFolderPath, logsFileName);\n\n // Ensure the file exists or can be appended to\n return fs.createWriteStream(logFilePath, { flags: \"a\" });\n }\n\n private getLogFileName() {\n const now = new Date();\n const dateStr = now.toISOString().split(\"T\")[0];\n return `logs-${dateStr}.log`;\n }\n\n private getLogLevel() {\n const argv = this.getArgvService.execute();\n return process.env.WEBINY_CLI_LOG_LEVEL || argv.logLevel || DEFAULT_LOG_LEVEL;\n }\n}\n\nexport const loggerService = createImplementation({\n abstraction: LoggerService,\n implementation: DefaultLoggerService,\n dependencies: [GetArgvService]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- export { LoggerService as Logger } from "../../abstractions/services/LoggerService.js";
2
- export { UiService as Ui } from "../../abstractions/services/UiService.js";
@@ -1,4 +0,0 @@
1
- export { LoggerService as Logger } from "../../abstractions/services/LoggerService.js";
2
- export { UiService as Ui } from "../../abstractions/services/UiService.js";
3
-
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["LoggerService","Logger","UiService","Ui"],"sources":["index.ts"],"sourcesContent":["export { LoggerService as Logger } from \"~/abstractions/services/LoggerService.js\";\nexport { UiService as Ui } from \"~/abstractions/services/UiService.js\";\n"],"mappings":"AAAA,SAASA,aAAa,IAAIC,MAAM;AAChC,SAASC,SAAS,IAAIC,EAAE","ignoreList":[]}