@webiny/cli-core 0.0.0-unstable.e622468070 → 0.0.0-unstable.e6f0dc8ca7
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/abstractions/features/CliCommand.d.ts +4 -0
- package/abstractions/features/CliCommand.js +3 -0
- package/abstractions/features/CliCommand.js.map +1 -1
- package/createCliContainer.js +5 -8
- package/createCliContainer.js.map +1 -1
- package/decorators/CommandsWithGracefulErrorHandling.js.map +1 -1
- package/exports/cli.d.ts +2 -0
- package/exports/cli.js +4 -0
- package/exports/cli.js.map +1 -0
- package/extensions/CliCommand.d.ts +3 -7
- package/extensions/CliCommandDecorator.d.ts +3 -7
- package/extensions/index.d.ts +2 -6
- package/features/DeployCommand/DeployCommand.d.ts +1 -1
- package/features/DeployCommand/DeployCommand.js +6 -4
- package/features/DeployCommand/DeployCommand.js.map +1 -1
- package/features/DepsSync/BuildDependencyTree.js +2 -2
- package/features/DepsSync/BuildDependencyTree.js.map +1 -1
- package/features/DepsSync/DependencyTree.js +7 -0
- package/features/DepsSync/DependencyTree.js.map +1 -1
- package/features/DepsSync/ListAllPackageJsonFiles.js +2 -2
- package/features/DepsSync/ListAllPackageJsonFiles.js.map +1 -1
- package/features/DepsSync/commands/VerifyDepsCommand.js +3 -3
- package/features/DepsSync/commands/VerifyDepsCommand.js.map +1 -1
- package/features/DepsSync/createReferenceFile.js +3 -3
- package/features/DepsSync/createReferenceFile.js.map +1 -1
- package/features/UpgradeCommand/UpgradeCommand.d.ts +29 -0
- package/features/UpgradeCommand/UpgradeCommand.js +112 -0
- package/features/UpgradeCommand/UpgradeCommand.js.map +1 -0
- package/features/UpgradeCommand/UpgradeCommandHandler.d.ts +11 -0
- package/features/UpgradeCommand/UpgradeCommandHandler.js +113 -0
- package/features/UpgradeCommand/UpgradeCommandHandler.js.map +1 -0
- package/features/UpgradeCommand/abstraction.d.ts +23 -0
- package/features/UpgradeCommand/abstraction.js +4 -0
- package/features/UpgradeCommand/abstraction.js.map +1 -0
- package/features/UpgradeCommand/feature.d.ts +4 -0
- package/features/UpgradeCommand/feature.js +12 -0
- package/features/UpgradeCommand/feature.js.map +1 -0
- package/features/UpgradeCommand/index.d.ts +2 -0
- package/features/UpgradeCommand/index.js +4 -0
- package/features/UpgradeCommand/index.js.map +1 -0
- package/features/Wcp/LinkProjectCommand.js +3 -3
- package/features/Wcp/LinkProjectCommand.js.map +1 -1
- package/features/gracefulErrorHandlers/DdbPutItemConditionalCheckFailedGracefulErrorHandler.js.map +1 -1
- package/features/gracefulErrorHandlers/MissingFilesInBuildGracefulErrorHandler.js.map +1 -1
- package/features/gracefulErrorHandlers/PendingOperationsGracefulErrorHandler.js.map +1 -1
- package/features/index.d.ts +1 -0
- package/features/index.js +1 -0
- package/features/index.js.map +1 -1
- package/package.json +28 -25
- package/services/GetCliRunnerService/GetCliRunnerService.js +7 -0
- package/services/GetCliRunnerService/GetCliRunnerService.js.map +1 -1
- package/services/LoggerService/LoggerService.js +2 -2
- package/services/LoggerService/LoggerService.js.map +1 -1
- package/exports/cli/index.d.ts +0 -2
- package/exports/cli/index.js +0 -4
- 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 +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;
|
|
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":[]}
|
package/createCliContainer.js
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import { Container } from "@webiny/di";
|
|
3
|
-
import { argvParserService, cliParamsService, commandsRegistryService, getArgvService, getCliRunnerService, getIsCiService,
|
|
4
|
-
import { aboutCommand, buildCommand, configCommand, ddbPutItemConditionalCheckFailedGracefulErrorHandler, deployCommand, destroyCommand, disableTelemetryCommand, enableTelemetryCommand, extensionCommand, infoCommand, isCi, missingFilesInBuildGracefulErrorHandler, openCommand, outputCommand, pendingOperationsGracefulErrorHandler, pulumiCommand, refreshCommand, syncDepsCommand, verifyDepsCommand, watchCommand,
|
|
5
|
-
// WCP
|
|
6
|
-
linkProjectCommand, loginCommand, logoutCommand, whoAmICommand,
|
|
7
|
-
// Global Options
|
|
8
|
-
showLogsGlobalOption, logLevelGlobalOption, stackTraceGlobalOption } from "./features/index.js";
|
|
3
|
+
import { argvParserService, cliParamsService, commandsRegistryService, getArgvService, getCliRunnerService, getIsCiService, getProjectSdkService, globalOptionsRegistryService, loggerService, runCliRunnerService, stdioService, uiService } from "./services/index.js";
|
|
4
|
+
import { aboutCommand, buildCommand, configCommand, ddbPutItemConditionalCheckFailedGracefulErrorHandler, deployCommand, destroyCommand, disableTelemetryCommand, enableTelemetryCommand, extensionCommand, infoCommand, isCi, linkProjectCommand, loginCommand, logLevelGlobalOption, logoutCommand, missingFilesInBuildGracefulErrorHandler, openCommand, outputCommand, pendingOperationsGracefulErrorHandler, pulumiCommand, refreshCommand, showLogsGlobalOption, stackTraceGlobalOption, syncDepsCommand, UpgradeCommandFeature, verifyDepsCommand, watchCommand, whoAmICommand } from "./features/index.js";
|
|
9
5
|
import chalk from "chalk";
|
|
10
6
|
import { CliParamsService, GetArgvService, GetProjectSdkService, UiService } from "./abstractions/index.js";
|
|
11
|
-
import { GracefulError } from "@webiny/project";
|
|
7
|
+
import { GracefulError, toImportSpecifier } from "@webiny/project";
|
|
12
8
|
import { commandsWithGracefulErrorHandling, deployCommandWithTelemetry } from "./decorators/index.js";
|
|
13
9
|
import { CliCommand } from "./extensions/index.js";
|
|
14
10
|
const {
|
|
@@ -36,6 +32,7 @@ export const createCliContainer = async params => {
|
|
|
36
32
|
container.register(openCommand).inSingletonScope();
|
|
37
33
|
container.register(outputCommand).inSingletonScope();
|
|
38
34
|
container.register(watchCommand).inSingletonScope();
|
|
35
|
+
UpgradeCommandFeature.register(container);
|
|
39
36
|
container.register(linkProjectCommand).inSingletonScope();
|
|
40
37
|
container.register(loginCommand).inSingletonScope();
|
|
41
38
|
container.register(logoutCommand).inSingletonScope();
|
|
@@ -88,7 +85,7 @@ export const createCliContainer = async params => {
|
|
|
88
85
|
importPath = filePath;
|
|
89
86
|
}
|
|
90
87
|
const exportName = path.basename(filePath).replace(path.extname(filePath), "");
|
|
91
|
-
const importedModule = await import(importPath);
|
|
88
|
+
const importedModule = await import(toImportSpecifier(importPath));
|
|
92
89
|
|
|
93
90
|
// Support both default and named exports.
|
|
94
91
|
// 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","getProjectSdkService","globalOptionsRegistryService","loggerService","runCliRunnerService","stdioService","uiService","aboutCommand","buildCommand","configCommand","ddbPutItemConditionalCheckFailedGracefulErrorHandler","deployCommand","destroyCommand","disableTelemetryCommand","enableTelemetryCommand","extensionCommand","infoCommand","isCi","linkProjectCommand","loginCommand","logLevelGlobalOption","logoutCommand","missingFilesInBuildGracefulErrorHandler","openCommand","outputCommand","pendingOperationsGracefulErrorHandler","pulumiCommand","refreshCommand","showLogsGlobalOption","stackTraceGlobalOption","syncDepsCommand","UpgradeCommandFeature","verifyDepsCommand","watchCommand","whoAmICommand","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 getProjectSdkService,\n globalOptionsRegistryService,\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 linkProjectCommand,\n loginCommand,\n logLevelGlobalOption,\n logoutCommand,\n missingFilesInBuildGracefulErrorHandler,\n openCommand,\n outputCommand,\n pendingOperationsGracefulErrorHandler,\n pulumiCommand,\n refreshCommand,\n showLogsGlobalOption,\n stackTraceGlobalOption,\n syncDepsCommand,\n UpgradeCommandFeature,\n verifyDepsCommand,\n watchCommand,\n whoAmICommand\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 UpgradeCommandFeature.register(container);\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":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CliCommandFactory","ErrorHandler","GracefulError","CommandsWithGracefulErrorHandling","constructor","gracefulErrorHandlers","decoratee","execute","command","originalCommandHandler","handler","params","error","gracefulErrorHandler","commandsWithGracefulErrorHandling","createDecorator","decorator","dependencies","multiple"],"sources":["CommandsWithGracefulErrorHandling.ts"],"sourcesContent":["import { CliCommandFactory, ErrorHandler } from \"~/abstractions/index.js\";\nimport { GracefulError } from \"@webiny/project\";\n\nexport class CommandsWithGracefulErrorHandling
|
|
1
|
+
{"version":3,"names":["CliCommandFactory","ErrorHandler","GracefulError","CommandsWithGracefulErrorHandling","constructor","gracefulErrorHandlers","decoratee","execute","command","originalCommandHandler","handler","params","error","gracefulErrorHandler","commandsWithGracefulErrorHandling","createDecorator","decorator","dependencies","multiple"],"sources":["CommandsWithGracefulErrorHandling.ts"],"sourcesContent":["import { CliCommandFactory, ErrorHandler } from \"~/abstractions/index.js\";\nimport { GracefulError } from \"@webiny/project\";\n\nexport class CommandsWithGracefulErrorHandling<\n TParams\n> implements CliCommandFactory.Interface<TParams> {\n constructor(\n private gracefulErrorHandlers: ErrorHandler.Interface<TParams>[],\n private decoratee: CliCommandFactory.Interface<TParams>\n ) {}\n\n async execute() {\n const command = await this.decoratee.execute();\n\n const originalCommandHandler = command.handler;\n\n command.handler = async (params: TParams) => {\n try {\n await originalCommandHandler(params);\n } catch (error) {\n if (error instanceof GracefulError) {\n throw error;\n }\n\n for (const gracefulErrorHandler of this.gracefulErrorHandlers) {\n gracefulErrorHandler.execute({\n error,\n command,\n params\n });\n }\n\n throw error;\n }\n };\n\n return command;\n }\n}\n\nexport const commandsWithGracefulErrorHandling = CliCommandFactory.createDecorator({\n decorator: CommandsWithGracefulErrorHandling,\n dependencies: [[ErrorHandler, { multiple: true }]]\n});\n"],"mappings":"AAAA,SAASA,iBAAiB,EAAEC,YAAY;AACxC,SAASC,aAAa,QAAQ,iBAAiB;AAE/C,OAAO,MAAMC,iCAAiC,CAEI;EAC9CC,WAAWA,CACCC,qBAAwD,EACxDC,SAA+C,EACzD;IAAA,KAFUD,qBAAwD,GAAxDA,qBAAwD;IAAA,KACxDC,SAA+C,GAA/CA,SAA+C;EACxD;EAEH,MAAMC,OAAOA,CAAA,EAAG;IACZ,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACF,SAAS,CAACC,OAAO,CAAC,CAAC;IAE9C,MAAME,sBAAsB,GAAGD,OAAO,CAACE,OAAO;IAE9CF,OAAO,CAACE,OAAO,GAAG,MAAOC,MAAe,IAAK;MACzC,IAAI;QACA,MAAMF,sBAAsB,CAACE,MAAM,CAAC;MACxC,CAAC,CAAC,OAAOC,KAAK,EAAE;QACZ,IAAIA,KAAK,YAAYV,aAAa,EAAE;UAChC,MAAMU,KAAK;QACf;QAEA,KAAK,MAAMC,oBAAoB,IAAI,IAAI,CAACR,qBAAqB,EAAE;UAC3DQ,oBAAoB,CAACN,OAAO,CAAC;YACzBK,KAAK;YACLJ,OAAO;YACPG;UACJ,CAAC,CAAC;QACN;QAEA,MAAMC,KAAK;MACf;IACJ,CAAC;IAED,OAAOJ,OAAO;EAClB;AACJ;AAEA,OAAO,MAAMM,iCAAiC,GAAGd,iBAAiB,CAACe,eAAe,CAAC;EAC/EC,SAAS,EAAEb,iCAAiC;EAC5Cc,YAAY,EAAE,CAAC,CAAChB,YAAY,EAAE;IAAEiB,QAAQ,EAAE;EAAK,CAAC,CAAC;AACrD,CAAC,CAAC","ignoreList":[]}
|
package/exports/cli.d.ts
ADDED
package/exports/cli.js
ADDED
|
@@ -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
|
-
export declare const CliCommand: import("@webiny/project/defineExtension
|
|
3
|
-
src: z.
|
|
4
|
-
},
|
|
5
|
-
src: string;
|
|
6
|
-
}, {
|
|
7
|
-
src: string;
|
|
8
|
-
}>>;
|
|
2
|
+
export declare const CliCommand: import("@webiny/project/defineExtension").ExtensionComponent<z.ZodObject<{
|
|
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
|
-
export declare const CliCommandDecorator: import("@webiny/project/defineExtension
|
|
3
|
-
src: z.
|
|
4
|
-
},
|
|
5
|
-
src: string;
|
|
6
|
-
}, {
|
|
7
|
-
src: string;
|
|
8
|
-
}>>;
|
|
2
|
+
export declare const CliCommandDecorator: import("@webiny/project/defineExtension").ExtensionComponent<z.ZodObject<{
|
|
3
|
+
src: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
|
|
4
|
+
}, z.core.$strip>>;
|
package/extensions/index.d.ts
CHANGED
|
@@ -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").
|
|
5
|
-
},
|
|
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
|
-
import { CliCommandFactory, GetProjectSdkService, StdioService, UiService } from "../../abstractions/index.js";
|
|
2
1
|
import { AppName } from "@webiny/project";
|
|
2
|
+
import { CliCommandFactory, GetProjectSdkService, StdioService, UiService } from "../../abstractions/index.js";
|
|
3
3
|
export interface IDeployCommandParams {
|
|
4
4
|
apps?: AppName[];
|
|
5
5
|
variant?: string;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createImplementation } from "@webiny/di";
|
|
2
|
+
import { setTimeout } from "node:timers/promises";
|
|
3
|
+
import open from "open";
|
|
4
|
+
import ora from "ora";
|
|
2
5
|
import { CliCommandFactory, GetProjectSdkService, StdioService, UiService } from "../../abstractions/index.js";
|
|
3
|
-
import { DeployOutput } from "./deployOutputs/DeployOutput.js";
|
|
4
6
|
import { BuildRunner } from "../BuildCommand/buildRunners/BuildRunner.js";
|
|
5
7
|
import { createBaseAppOptions } from "../common/index.js";
|
|
6
|
-
import {
|
|
7
|
-
import ora from "ora";
|
|
8
|
-
import open from "open";
|
|
8
|
+
import { DeployOutput } from "./deployOutputs/DeployOutput.js";
|
|
9
9
|
|
|
10
10
|
// TODO: convert to a real service.
|
|
11
11
|
import { PrintInfoForEnv } from "../InfoCommand/PrintInfoForEnv.js";
|
|
@@ -63,6 +63,8 @@ export class DeployCommand {
|
|
|
63
63
|
ui.emptyLine();
|
|
64
64
|
}
|
|
65
65
|
} else {
|
|
66
|
+
ui.info(`You're using Webiny v${projectSdk.getProjectVersion()}`);
|
|
67
|
+
ui.emptyLine();
|
|
66
68
|
const isCi = projectSdk.isCi();
|
|
67
69
|
const coreStack = await projectSdk.getAppStackOutput("core");
|
|
68
70
|
const isFirstDeployment = !isCi && !coreStack?.deploymentId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createImplementation","CliCommandFactory","GetProjectSdkService","StdioService","UiService","DeployOutput","BuildRunner","createBaseAppOptions","setTimeout","ora","open","PrintInfoForEnv","sleep","ms","DeployCommand","constructor","getProjectSdkService","uiService","stdioService","execute","projectSdk","ui","name","description","examples","params","type","array","options","default","handler","apps","length","appName","appParams","app","getApp","info","getDisplayName","deployApp","emptyLine","isCi","coreStack","getAppStackOutput","isFirstDeployment","deploymentId","success","printInfoForEnv","textBold","adminAppOutput","spinner","start","appUrl","succeed","fail","warning","stdio","build","packagesBuilder","buildApp","buildRunner","isEmpty","run","showDeploymentLogs","Boolean","preview","output","pulumiProcess","deployOutput","deployProcess","deployParams","deployCommand","abstraction","implementation","dependencies"],"sources":["DeployCommand.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport {\n CliCommandFactory,\n GetProjectSdkService,\n StdioService,\n UiService\n} from \"~/abstractions/index.js\";\nimport { DeployOutput } from \"./deployOutputs/DeployOutput.js\";\nimport { AppName } from \"@webiny/project\";\nimport { BuildRunner } from \"~/features/BuildCommand/buildRunners/BuildRunner.js\";\nimport { createBaseAppOptions } from \"~/features/common/index.js\";\nimport { setTimeout } from \"node:timers/promises\";\nimport ora from \"ora\";\nimport open from \"open\";\n\n// TODO: convert to a real service.\nimport { PrintInfoForEnv } from \"~/features/InfoCommand/PrintInfoForEnv.js\";\n\nexport interface IDeployCommandParams {\n apps?: AppName[];\n variant?: string;\n region?: string;\n env: string;\n showDeploymentLogs?: boolean;\n build?: boolean;\n preview?: boolean;\n allowLocalStateFiles?: boolean;\n}\n\nexport interface IDeploySingleAppParams {\n app: AppName;\n variant?: string;\n region?: string;\n env: string;\n showDeploymentLogs?: boolean;\n build?: boolean;\n preview?: boolean;\n}\n\nconst sleep = (ms: number = 1500) => setTimeout(ms);\n\nexport class DeployCommand implements CliCommandFactory.Interface<IDeployCommandParams> {\n constructor(\n private getProjectSdkService: GetProjectSdkService.Interface,\n private uiService: UiService.Interface,\n private stdioService: StdioService.Interface\n ) {}\n\n async execute(): Promise<CliCommandFactory.CommandDefinition<IDeployCommandParams>> {\n const projectSdk = await this.getProjectSdkService.execute();\n const ui = this.uiService;\n\n return {\n name: \"deploy\",\n description: \"Deploys specified app or all apps in the project\",\n examples: [\n \"$0 deploy api --env dev\",\n \"$0 deploy core api --env dev\",\n \"$0 deploy admin --env prod\",\n \"$0 deploy --env prod\",\n \"$0 deploy\"\n ],\n params: [\n {\n name: \"apps\",\n description:\n \"Name of the app(s) to deploy (core, admin, or api). You can specify multiple apps.\",\n type: \"string\",\n array: true\n }\n ],\n options: [\n ...createBaseAppOptions(projectSdk),\n {\n name: \"build\",\n description: \"Build packages before deploying\",\n type: \"boolean\",\n default: true\n },\n {\n name: \"preview\",\n description: \"Preview the deploy instead of actually performing it\",\n type: \"boolean\",\n default: false\n },\n {\n name: \"show-deployment-logs\",\n description: \"Print deployment logs (automatically enabled in CI environments)\",\n type: \"boolean\",\n default: false\n },\n {\n name: \"allow-local-state-files\",\n description:\n \"Allow using local Pulumi state files with production environment deployment (not recommended).\",\n type: \"boolean\"\n }\n ],\n handler: async (params: IDeployCommandParams) => {\n if (params.apps && params.apps.length > 0) {\n // Deploy specified apps\n for (const appName of params.apps) {\n const appParams: IDeploySingleAppParams = {\n ...params,\n app: appName\n };\n\n const app = await projectSdk.getApp(appName);\n ui.info(\"Deploying %s app...\", app.getDisplayName());\n await this.deployApp(appParams);\n ui.emptyLine();\n }\n } else {\n const isCi = projectSdk.isCi();\n const coreStack = await projectSdk.getAppStackOutput(\"core\");\n\n const isFirstDeployment = !isCi && !coreStack?.deploymentId;\n if (isFirstDeployment) {\n ui.info(`Looks like this is your first time deploying the project.`);\n ui.info(\n `Note that the initial deployment can take up to %s, so please be patient.`,\n \"10 minutes\"\n );\n await sleep();\n }\n\n // 3. Start deploying apps one-by-one.\n isFirstDeployment && ui.emptyLine();\n\n // Deploy all apps in the project.\n ui.info(\"Deploying %s app...\", \"Core\");\n await this.deployApp({ ...params, app: \"core\" });\n ui.emptyLine();\n\n ui.info(\"Deploying %s app...\", \"API\");\n await this.deployApp({ ...params, app: \"api\" });\n ui.emptyLine();\n ui.info(\"Deploying %s app...\", \"Admin\");\n await this.deployApp({ ...params, app: \"admin\" });\n\n if (isFirstDeployment) {\n ui.success(`Congratulations! You've just deployed a brand new project!`);\n } else {\n ui.success(`Project deployed.`);\n }\n\n const printInfoForEnv = new PrintInfoForEnv({\n getProjectSdkService: this.getProjectSdkService,\n uiService: this.uiService\n });\n\n ui.emptyLine();\n ui.textBold(\"Project Details\");\n await printInfoForEnv.execute(params);\n\n const adminAppOutput = await projectSdk.getAppStackOutput(\"admin\");\n\n if (isFirstDeployment && adminAppOutput) {\n ui.emptyLine();\n ui.info(\n \"The final step is to open the %s app in your browser and complete the installation wizard.\",\n \"Admin\"\n );\n\n const spinner = ora(`Opening Admin in your browser...`).start();\n\n try {\n await sleep(7000);\n open(adminAppOutput.appUrl as string);\n spinner.succeed(`Successfully opened Admin app in your browser.`);\n } catch {\n spinner.fail(`Failed to open Admin in your browser.`);\n\n await sleep(1000);\n ui.emptyLine();\n ui.warning(\n `Failed to open %s app in your browser. To finish the setup and start using the project, please visit %s and complete the installation wizard.`,\n \"Admin\",\n adminAppOutput.appUrl\n );\n }\n }\n }\n }\n };\n }\n\n private async deployApp(params: IDeploySingleAppParams) {\n const projectSdk = await this.getProjectSdkService.execute();\n\n const ui = this.uiService;\n const stdio = this.stdioService;\n\n if (params.build !== false) {\n const packagesBuilder = await projectSdk.buildApp(params);\n\n const buildRunner = new BuildRunner({\n stdio,\n ui,\n packagesBuilder\n });\n\n if (!buildRunner.isEmpty()) {\n await buildRunner.run();\n ui.emptyLine();\n }\n }\n\n // We always show deployment logs when doing previews.\n const showDeploymentLogs = Boolean(\n projectSdk.isCi() || params.preview || params.showDeploymentLogs\n );\n\n return await projectSdk.deployApp({\n ...params,\n output: pulumiProcess => {\n const deployOutput = new DeployOutput({\n stdio,\n ui,\n showDeploymentLogs,\n deployProcess: pulumiProcess,\n deployParams: params\n });\n\n return deployOutput.output();\n }\n });\n }\n}\n\nexport const deployCommand = createImplementation({\n abstraction: CliCommandFactory,\n implementation: DeployCommand,\n dependencies: [GetProjectSdkService, UiService, StdioService]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createImplementation","setTimeout","open","ora","CliCommandFactory","GetProjectSdkService","StdioService","UiService","BuildRunner","createBaseAppOptions","DeployOutput","PrintInfoForEnv","sleep","ms","DeployCommand","constructor","getProjectSdkService","uiService","stdioService","execute","projectSdk","ui","name","description","examples","params","type","array","options","default","handler","apps","length","appName","appParams","app","getApp","info","getDisplayName","deployApp","emptyLine","getProjectVersion","isCi","coreStack","getAppStackOutput","isFirstDeployment","deploymentId","success","printInfoForEnv","textBold","adminAppOutput","spinner","start","appUrl","succeed","fail","warning","stdio","build","packagesBuilder","buildApp","buildRunner","isEmpty","run","showDeploymentLogs","Boolean","preview","output","pulumiProcess","deployOutput","deployProcess","deployParams","deployCommand","abstraction","implementation","dependencies"],"sources":["DeployCommand.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { AppName } from \"@webiny/project\";\nimport { setTimeout } from \"node:timers/promises\";\nimport open from \"open\";\nimport ora from \"ora\";\nimport {\n CliCommandFactory,\n GetProjectSdkService,\n StdioService,\n UiService\n} from \"~/abstractions/index.js\";\nimport { BuildRunner } from \"~/features/BuildCommand/buildRunners/BuildRunner.js\";\nimport { createBaseAppOptions } from \"~/features/common/index.js\";\nimport { DeployOutput } from \"./deployOutputs/DeployOutput.js\";\n\n// TODO: convert to a real service.\nimport { PrintInfoForEnv } from \"~/features/InfoCommand/PrintInfoForEnv.js\";\n\nexport interface IDeployCommandParams {\n apps?: AppName[];\n variant?: string;\n region?: string;\n env: string;\n showDeploymentLogs?: boolean;\n build?: boolean;\n preview?: boolean;\n allowLocalStateFiles?: boolean;\n}\n\nexport interface IDeploySingleAppParams {\n app: AppName;\n variant?: string;\n region?: string;\n env: string;\n showDeploymentLogs?: boolean;\n build?: boolean;\n preview?: boolean;\n}\n\nconst sleep = (ms: number = 1500) => setTimeout(ms);\n\nexport class DeployCommand implements CliCommandFactory.Interface<IDeployCommandParams> {\n constructor(\n private getProjectSdkService: GetProjectSdkService.Interface,\n private uiService: UiService.Interface,\n private stdioService: StdioService.Interface\n ) {}\n\n async execute(): Promise<CliCommandFactory.CommandDefinition<IDeployCommandParams>> {\n const projectSdk = await this.getProjectSdkService.execute();\n const ui = this.uiService;\n\n return {\n name: \"deploy\",\n description: \"Deploys specified app or all apps in the project\",\n examples: [\n \"$0 deploy api --env dev\",\n \"$0 deploy core api --env dev\",\n \"$0 deploy admin --env prod\",\n \"$0 deploy --env prod\",\n \"$0 deploy\"\n ],\n params: [\n {\n name: \"apps\",\n description:\n \"Name of the app(s) to deploy (core, admin, or api). You can specify multiple apps.\",\n type: \"string\",\n array: true\n }\n ],\n options: [\n ...createBaseAppOptions(projectSdk),\n {\n name: \"build\",\n description: \"Build packages before deploying\",\n type: \"boolean\",\n default: true\n },\n {\n name: \"preview\",\n description: \"Preview the deploy instead of actually performing it\",\n type: \"boolean\",\n default: false\n },\n {\n name: \"show-deployment-logs\",\n description: \"Print deployment logs (automatically enabled in CI environments)\",\n type: \"boolean\",\n default: false\n },\n {\n name: \"allow-local-state-files\",\n description:\n \"Allow using local Pulumi state files with production environment deployment (not recommended).\",\n type: \"boolean\"\n }\n ],\n handler: async (params: IDeployCommandParams) => {\n if (params.apps && params.apps.length > 0) {\n // Deploy specified apps\n for (const appName of params.apps) {\n const appParams: IDeploySingleAppParams = {\n ...params,\n app: appName\n };\n\n const app = await projectSdk.getApp(appName);\n ui.info(\"Deploying %s app...\", app.getDisplayName());\n await this.deployApp(appParams);\n ui.emptyLine();\n }\n } else {\n ui.info(`You're using Webiny v${projectSdk.getProjectVersion()}`);\n ui.emptyLine();\n\n const isCi = projectSdk.isCi();\n const coreStack = await projectSdk.getAppStackOutput(\"core\");\n\n const isFirstDeployment = !isCi && !coreStack?.deploymentId;\n if (isFirstDeployment) {\n ui.info(`Looks like this is your first time deploying the project.`);\n ui.info(\n `Note that the initial deployment can take up to %s, so please be patient.`,\n \"10 minutes\"\n );\n await sleep();\n }\n\n // 3. Start deploying apps one-by-one.\n isFirstDeployment && ui.emptyLine();\n\n // Deploy all apps in the project.\n ui.info(\"Deploying %s app...\", \"Core\");\n await this.deployApp({ ...params, app: \"core\" });\n ui.emptyLine();\n\n ui.info(\"Deploying %s app...\", \"API\");\n await this.deployApp({ ...params, app: \"api\" });\n ui.emptyLine();\n ui.info(\"Deploying %s app...\", \"Admin\");\n await this.deployApp({ ...params, app: \"admin\" });\n\n if (isFirstDeployment) {\n ui.success(`Congratulations! You've just deployed a brand new project!`);\n } else {\n ui.success(`Project deployed.`);\n }\n\n const printInfoForEnv = new PrintInfoForEnv({\n getProjectSdkService: this.getProjectSdkService,\n uiService: this.uiService\n });\n\n ui.emptyLine();\n ui.textBold(\"Project Details\");\n await printInfoForEnv.execute(params);\n\n const adminAppOutput = await projectSdk.getAppStackOutput(\"admin\");\n\n if (isFirstDeployment && adminAppOutput) {\n ui.emptyLine();\n ui.info(\n \"The final step is to open the %s app in your browser and complete the installation wizard.\",\n \"Admin\"\n );\n\n const spinner = ora(`Opening Admin in your browser...`).start();\n\n try {\n await sleep(7000);\n open(adminAppOutput.appUrl as string);\n spinner.succeed(`Successfully opened Admin app in your browser.`);\n } catch {\n spinner.fail(`Failed to open Admin in your browser.`);\n\n await sleep(1000);\n ui.emptyLine();\n ui.warning(\n `Failed to open %s app in your browser. To finish the setup and start using the project, please visit %s and complete the installation wizard.`,\n \"Admin\",\n adminAppOutput.appUrl\n );\n }\n }\n }\n }\n };\n }\n\n private async deployApp(params: IDeploySingleAppParams) {\n const projectSdk = await this.getProjectSdkService.execute();\n\n const ui = this.uiService;\n const stdio = this.stdioService;\n\n if (params.build !== false) {\n const packagesBuilder = await projectSdk.buildApp(params);\n\n const buildRunner = new BuildRunner({\n stdio,\n ui,\n packagesBuilder\n });\n\n if (!buildRunner.isEmpty()) {\n await buildRunner.run();\n ui.emptyLine();\n }\n }\n\n // We always show deployment logs when doing previews.\n const showDeploymentLogs = Boolean(\n projectSdk.isCi() || params.preview || params.showDeploymentLogs\n );\n\n return await projectSdk.deployApp({\n ...params,\n output: pulumiProcess => {\n const deployOutput = new DeployOutput({\n stdio,\n ui,\n showDeploymentLogs,\n deployProcess: pulumiProcess,\n deployParams: params\n });\n\n return deployOutput.output();\n }\n });\n }\n}\n\nexport const deployCommand = createImplementation({\n abstraction: CliCommandFactory,\n implementation: DeployCommand,\n dependencies: [GetProjectSdkService, UiService, StdioService]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DependencyTree } from "./DependencyTree.js";
|
|
2
|
-
import
|
|
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 =
|
|
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","
|
|
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":[]}
|
|
@@ -53,6 +53,13 @@ export class DependencyTree {
|
|
|
53
53
|
process.env.DEBUG === "true" && console.debug(`${version} is not a valid SemVer value in ${file}, package ${name}.`);
|
|
54
54
|
continue;
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Let's skip if version starts with >= or <=, as those are not exact versions and we can't be sure which version is actually used.
|
|
58
|
+
*/
|
|
59
|
+
if (version.startsWith(">=") || version.startsWith("<=")) {
|
|
60
|
+
process.env.DEBUG === "true" && console.debug(`${version} is not an exact version in ${file}, package ${name}. Skipping.`);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
56
63
|
version = version.replace(/\^/g, "").replace(/~/g, "").replace(/>/g, "").replace(/</g, "").replace(/=/g, "");
|
|
57
64
|
const existing = this.packages[key].find(item => {
|
|
58
65
|
return item.name === name && item.version === version;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["semver","PackageType","keys","dependencies","devDependencies","peerDependencies","resolutions","sortByName","a","b","name","localeCompare","DependencyTree","packages","references","sort","duplicates","filter","reference","versions","length","push","params","file","json","ignore","key","match","version","semverVersion","validRange","process","env","DEBUG","console","debug","replace","existing","find","item","files","addReference","type","ref","types","existingVersion","existingFile","includes"],"sources":["DependencyTree.ts"],"sourcesContent":["import semver from \"semver\";\nimport type {\n IDependency,\n IDependencyTree,\n IDependencyTreePushParams,\n IReference\n} from \"./types.js\";\nimport { PackageType } from \"./types.js\";\n\nconst keys = [\n PackageType.dependencies,\n PackageType.devDependencies,\n PackageType.peerDependencies,\n PackageType.resolutions\n];\n\ninterface IAddReferenceParams {\n name: string;\n version: string;\n file: string;\n type: PackageType;\n}\n\ninterface ISortItem {\n name: string;\n}\n\nconst sortByName = (a: ISortItem, b: ISortItem) => {\n return a.name.localeCompare(b.name);\n};\n\nexport class DependencyTree implements IDependencyTree {\n private readonly packages: Record<(typeof keys)[number], IDependency[]> = {\n resolutions: [],\n dependencies: [],\n devDependencies: [],\n peerDependencies: []\n };\n public readonly references: IReference[] = [];\n\n public get dependencies(): IDependency[] {\n return this.packages.dependencies.sort(sortByName);\n }\n\n public get devDependencies(): IDependency[] {\n return this.packages.devDependencies.sort(sortByName);\n }\n\n public get peerDependencies(): IDependency[] {\n return this.packages.peerDependencies.sort(sortByName);\n }\n\n public get resolutions(): IDependency[] {\n return this.packages.resolutions.sort(sortByName);\n }\n\n public get duplicates(): IReference[] {\n return this.references\n .filter(reference => {\n return reference.versions.length > 1;\n })\n .sort(sortByName);\n }\n\n public push(params: IDependencyTreePushParams): void {\n const { file, json, ignore } = params;\n for (const key of keys) {\n const dependencies = json[key];\n if (!dependencies) {\n continue;\n }\n\n for (const name in dependencies) {\n if (ignore && name.match(ignore) !== null) {\n continue;\n }\n let version = dependencies[name];\n if (!version) {\n continue;\n }\n\n const semverVersion =\n semver.validRange(version) || version === \"beta\" ? version : null;\n if (!semverVersion) {\n process.env.DEBUG === \"true\" &&\n console.debug(\n `${version} is not a valid SemVer value in ${file}, package ${name}.`\n );\n continue;\n }\n version = version\n .replace(/\\^/g, \"\")\n .replace(/~/g, \"\")\n .replace(/>/g, \"\")\n .replace(/</g, \"\")\n .replace(/=/g, \"\");\n const existing = this.packages[key].find(item => {\n return item.name === name && item.version === version;\n });\n if (existing) {\n existing.files.push(file);\n this.addReference({\n name,\n version,\n file,\n type: key\n });\n continue;\n }\n\n this.packages[key].push({\n name,\n version,\n files: [file]\n });\n this.addReference({\n name,\n version,\n file,\n type: key\n });\n }\n }\n }\n\n private addReference(ref: IAddReferenceParams): void {\n const existing = this.references.find(item => {\n return item.name === ref.name;\n });\n const types = [ref.type];\n if (!existing) {\n this.references.push({\n name: ref.name,\n versions: [\n {\n version: ref.version,\n files: [\n {\n file: ref.file,\n types\n }\n ]\n }\n ]\n });\n return;\n }\n const existingVersion = existing.versions.find(item => {\n return item.version === ref.version;\n });\n if (!existingVersion) {\n existing.versions.push({\n version: ref.version,\n files: [\n {\n file: ref.file,\n types\n }\n ]\n });\n return;\n }\n const existingFile = existingVersion.files.find(item => {\n return item.file === ref.file;\n });\n if (!existingFile) {\n existingVersion.files.push({\n file: ref.file,\n types\n });\n return;\n } else if (existingFile.types.includes(ref.type)) {\n return;\n }\n existingFile.types.push(ref.type);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["semver","PackageType","keys","dependencies","devDependencies","peerDependencies","resolutions","sortByName","a","b","name","localeCompare","DependencyTree","packages","references","sort","duplicates","filter","reference","versions","length","push","params","file","json","ignore","key","match","version","semverVersion","validRange","process","env","DEBUG","console","debug","startsWith","replace","existing","find","item","files","addReference","type","ref","types","existingVersion","existingFile","includes"],"sources":["DependencyTree.ts"],"sourcesContent":["import semver from \"semver\";\nimport type {\n IDependency,\n IDependencyTree,\n IDependencyTreePushParams,\n IReference\n} from \"./types.js\";\nimport { PackageType } from \"./types.js\";\n\nconst keys = [\n PackageType.dependencies,\n PackageType.devDependencies,\n PackageType.peerDependencies,\n PackageType.resolutions\n];\n\ninterface IAddReferenceParams {\n name: string;\n version: string;\n file: string;\n type: PackageType;\n}\n\ninterface ISortItem {\n name: string;\n}\n\nconst sortByName = (a: ISortItem, b: ISortItem) => {\n return a.name.localeCompare(b.name);\n};\n\nexport class DependencyTree implements IDependencyTree {\n private readonly packages: Record<(typeof keys)[number], IDependency[]> = {\n resolutions: [],\n dependencies: [],\n devDependencies: [],\n peerDependencies: []\n };\n public readonly references: IReference[] = [];\n\n public get dependencies(): IDependency[] {\n return this.packages.dependencies.sort(sortByName);\n }\n\n public get devDependencies(): IDependency[] {\n return this.packages.devDependencies.sort(sortByName);\n }\n\n public get peerDependencies(): IDependency[] {\n return this.packages.peerDependencies.sort(sortByName);\n }\n\n public get resolutions(): IDependency[] {\n return this.packages.resolutions.sort(sortByName);\n }\n\n public get duplicates(): IReference[] {\n return this.references\n .filter(reference => {\n return reference.versions.length > 1;\n })\n .sort(sortByName);\n }\n\n public push(params: IDependencyTreePushParams): void {\n const { file, json, ignore } = params;\n for (const key of keys) {\n const dependencies = json[key];\n if (!dependencies) {\n continue;\n }\n\n for (const name in dependencies) {\n if (ignore && name.match(ignore) !== null) {\n continue;\n }\n let version = dependencies[name];\n if (!version) {\n continue;\n }\n\n const semverVersion =\n semver.validRange(version) || version === \"beta\" ? version : null;\n if (!semverVersion) {\n process.env.DEBUG === \"true\" &&\n console.debug(\n `${version} is not a valid SemVer value in ${file}, package ${name}.`\n );\n continue;\n }\n /**\n * Let's skip if version starts with >= or <=, as those are not exact versions and we can't be sure which version is actually used.\n */\n if (version.startsWith(\">=\") || version.startsWith(\"<=\")) {\n process.env.DEBUG === \"true\" &&\n console.debug(\n `${version} is not an exact version in ${file}, package ${name}. Skipping.`\n );\n continue;\n }\n\n version = version\n .replace(/\\^/g, \"\")\n .replace(/~/g, \"\")\n .replace(/>/g, \"\")\n .replace(/</g, \"\")\n .replace(/=/g, \"\");\n const existing = this.packages[key].find(item => {\n return item.name === name && item.version === version;\n });\n if (existing) {\n existing.files.push(file);\n this.addReference({\n name,\n version,\n file,\n type: key\n });\n continue;\n }\n\n this.packages[key].push({\n name,\n version,\n files: [file]\n });\n this.addReference({\n name,\n version,\n file,\n type: key\n });\n }\n }\n }\n\n private addReference(ref: IAddReferenceParams): void {\n const existing = this.references.find(item => {\n return item.name === ref.name;\n });\n const types = [ref.type];\n if (!existing) {\n this.references.push({\n name: ref.name,\n versions: [\n {\n version: ref.version,\n files: [\n {\n file: ref.file,\n types\n }\n ]\n }\n ]\n });\n return;\n }\n const existingVersion = existing.versions.find(item => {\n return item.version === ref.version;\n });\n if (!existingVersion) {\n existing.versions.push({\n version: ref.version,\n files: [\n {\n file: ref.file,\n types\n }\n ]\n });\n return;\n }\n const existingFile = existingVersion.files.find(item => {\n return item.file === ref.file;\n });\n if (!existingFile) {\n existingVersion.files.push({\n file: ref.file,\n types\n });\n return;\n } else if (existingFile.types.includes(ref.type)) {\n return;\n }\n existingFile.types.push(ref.type);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
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 =
|
|
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":["
|
|
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
|
|
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 =
|
|
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 =
|
|
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","
|
|
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
|
|
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
|
-
|
|
21
|
+
writeJsonFileSync(refsFilePath, json, {
|
|
22
22
|
indent: 0
|
|
23
23
|
});
|
|
24
24
|
ui.info(`Creating %s...`, dupesFilePath);
|
|
25
|
-
|
|
25
|
+
writeJsonFileSync(dupesFilePath, tree.duplicates, {
|
|
26
26
|
indent: 0
|
|
27
27
|
});
|
|
28
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
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":[]}
|