@hubspot/cli 7.7.16-experimental.1 → 7.7.16-experimental.10

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 (53) hide show
  1. package/commands/account/auth.js +3 -3
  2. package/commands/app/install.d.ts +8 -0
  3. package/commands/app/install.js +127 -0
  4. package/commands/app.js +6 -1
  5. package/commands/auth.js +23 -25
  6. package/commands/getStarted.js +55 -8
  7. package/commands/init.js +29 -31
  8. package/commands/project/cloneApp.js +4 -4
  9. package/commands/project/create.js +9 -9
  10. package/commands/project/dev/deprecatedFlow.js +4 -4
  11. package/commands/project/dev/index.js +5 -5
  12. package/commands/project/dev/unifiedFlow.js +8 -0
  13. package/commands/sandbox/delete.js +5 -5
  14. package/commands/testAccount/create.js +53 -3
  15. package/lang/en.d.ts +67 -15
  16. package/lang/en.js +64 -12
  17. package/lib/accountTypes.d.ts +1 -0
  18. package/lib/accountTypes.js +20 -9
  19. package/lib/app/migrate_legacy.js +2 -3
  20. package/lib/app/urls.d.ts +1 -1
  21. package/lib/commonOpts.js +1 -1
  22. package/lib/middleware/__test__/configMiddleware.test.js +2 -2
  23. package/lib/middleware/configMiddleware.js +10 -2
  24. package/lib/parsing.d.ts +1 -0
  25. package/lib/parsing.js +11 -0
  26. package/lib/polling.d.ts +1 -1
  27. package/lib/polling.js +11 -1
  28. package/lib/projects/add/v3AddComponent.js +4 -0
  29. package/lib/projects/create/index.d.ts +3 -2
  30. package/lib/projects/create/index.js +11 -5
  31. package/lib/projects/create/v3.d.ts +3 -3
  32. package/lib/projects/create/v3.js +2 -2
  33. package/lib/projects/localDev/AppDevModeInterface.js +1 -1
  34. package/lib/projects/localDev/LocalDevProcess.d.ts +3 -2
  35. package/lib/projects/localDev/LocalDevProcess.js +16 -12
  36. package/lib/projects/localDev/LocalDevState.d.ts +10 -5
  37. package/lib/projects/localDev/LocalDevState.js +18 -20
  38. package/lib/projects/localDev/LocalDevWatcher.js +1 -1
  39. package/lib/projects/structure.d.ts +2 -2
  40. package/lib/projects/upload.d.ts +2 -1
  41. package/lib/projects/upload.js +1 -0
  42. package/lib/prompts/personalAccessKeyPrompt.js +2 -2
  43. package/lib/prompts/projectNameAndDestPrompt.d.ts +3 -0
  44. package/lib/prompts/projectNameAndDestPrompt.js +60 -0
  45. package/lib/prompts/selectProjectTemplatePrompt.d.ts +26 -0
  46. package/lib/prompts/{createProjectPrompt.js → selectProjectTemplatePrompt.js} +6 -55
  47. package/lib/validation.d.ts +1 -1
  48. package/lib/validation.js +4 -4
  49. package/mcp-server/tools/project/CreateProjectTool.d.ts +2 -2
  50. package/package.json +3 -3
  51. package/types/LocalDev.d.ts +1 -0
  52. package/types/Yargs.d.ts +1 -1
  53. package/lib/prompts/createProjectPrompt.d.ts +0 -28
@@ -0,0 +1,26 @@
1
+ import { ComponentTemplate, ComponentTemplateChoice, ProjectTemplate } from '../../types/Projects';
2
+ export type SelectProjectTemplatePromptResponse = {
3
+ projectTemplate?: ProjectTemplate;
4
+ componentTemplates?: ComponentTemplate[];
5
+ };
6
+ type SelectProjectTemplatePromptResponseProjectTemplate = {
7
+ projectTemplate: ProjectTemplate;
8
+ componentTemplates: undefined;
9
+ };
10
+ type SelectProjectTemplatePromptResponseComponentTemplates = {
11
+ projectTemplate?: undefined;
12
+ componentTemplates?: ComponentTemplate[];
13
+ };
14
+ export type ProjectNameAndDestPromptResponse = {
15
+ name: string;
16
+ dest: string;
17
+ };
18
+ export type PromptOptionsArg = {
19
+ name?: string;
20
+ dest?: string;
21
+ template?: string;
22
+ features?: string[];
23
+ };
24
+ export declare function selectProjectTemplatePrompt(promptOptions: PromptOptionsArg, projectTemplates?: ProjectTemplate[], componentTemplates?: undefined): Promise<SelectProjectTemplatePromptResponseProjectTemplate>;
25
+ export declare function selectProjectTemplatePrompt(promptOptions: PromptOptionsArg, projectTemplates?: undefined, componentTemplates?: ComponentTemplateChoice[]): Promise<SelectProjectTemplatePromptResponseComponentTemplates>;
26
+ export {};
@@ -1,31 +1,12 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createProjectPrompt = createProjectPrompt;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const path_2 = require("@hubspot/local-dev-lib/path");
3
+ exports.selectProjectTemplatePrompt = selectProjectTemplatePrompt;
10
4
  const promptUtils_1 = require("./promptUtils");
11
- const constants_1 = require("../constants");
12
5
  const en_1 = require("../../lang/en");
13
- function validateProjectDirectory(input) {
14
- if (!input) {
15
- return en_1.lib.prompts.createProjectPrompt.errors.destRequired;
16
- }
17
- if (fs_1.default.existsSync(path_1.default.resolve((0, path_2.getCwd)(), path_1.default.join(input, constants_1.PROJECT_CONFIG_FILE)))) {
18
- return en_1.lib.prompts.createProjectPrompt.errors.invalidDest;
19
- }
20
- if (!(0, path_2.isValidPath)(input)) {
21
- return en_1.lib.prompts.createProjectPrompt.errors.invalidCharacters;
22
- }
23
- return true;
24
- }
25
6
  function findTemplateByNameOrLabel(projectTemplates, templateNameOrLabel) {
26
7
  return projectTemplates.find(t => t.name === templateNameOrLabel || t.label === templateNameOrLabel);
27
8
  }
28
- async function createProjectPrompt(promptOptions, projectTemplates, componentTemplates) {
9
+ async function selectProjectTemplatePrompt(promptOptions, projectTemplates, componentTemplates) {
29
10
  const createProjectFromTemplate = !!projectTemplates && projectTemplates.length > 0;
30
11
  const createProjectFromComponents = Array.isArray(componentTemplates) && componentTemplates?.length > 0;
31
12
  const selectedComponents = [];
@@ -46,36 +27,12 @@ async function createProjectPrompt(promptOptions, projectTemplates, componentTem
46
27
  !!promptOptions.template &&
47
28
  !!findTemplateByNameOrLabel(projectTemplates, promptOptions.template);
48
29
  const result = await (0, promptUtils_1.promptUser)([
49
- {
50
- name: 'name',
51
- message: en_1.lib.prompts.createProjectPrompt.enterName,
52
- when: !promptOptions.name,
53
- validate: (input) => {
54
- if (!input) {
55
- return en_1.lib.prompts.createProjectPrompt.errors.nameRequired;
56
- }
57
- return true;
58
- },
59
- },
60
- {
61
- name: 'dest',
62
- message: en_1.lib.prompts.createProjectPrompt.enterDest,
63
- when: !promptOptions.dest,
64
- default: answers => {
65
- const projectName = (0, path_2.sanitizeFileName)(promptOptions.name || answers.name);
66
- return path_1.default.resolve((0, path_2.getCwd)(), projectName);
67
- },
68
- validate: validateProjectDirectory,
69
- filter: input => {
70
- return (0, path_2.untildify)(input);
71
- },
72
- },
73
30
  {
74
31
  name: 'projectTemplate',
75
32
  message: () => {
76
33
  return promptOptions.template && !providedTemplateIsValid
77
- ? en_1.lib.prompts.createProjectPrompt.errors.invalidTemplate(promptOptions.template)
78
- : en_1.lib.prompts.createProjectPrompt.selectTemplate;
34
+ ? en_1.lib.prompts.selectProjectTemplatePrompt.errors.invalidTemplate(promptOptions.template)
35
+ : en_1.lib.prompts.selectProjectTemplatePrompt.selectTemplate;
79
36
  },
80
37
  when: createProjectFromTemplate && !providedTemplateIsValid,
81
38
  type: 'list',
@@ -90,7 +47,7 @@ async function createProjectPrompt(promptOptions, projectTemplates, componentTem
90
47
  },
91
48
  {
92
49
  name: 'componentTemplates',
93
- message: en_1.lib.prompts.createProjectPrompt.features,
50
+ message: en_1.lib.prompts.selectProjectTemplatePrompt.features,
94
51
  when: !promptOptions.features &&
95
52
  createProjectFromComponents &&
96
53
  selectedComponents.length === 0,
@@ -98,12 +55,6 @@ async function createProjectPrompt(promptOptions, projectTemplates, componentTem
98
55
  choices: componentTemplates,
99
56
  },
100
57
  ]);
101
- if (!result.name) {
102
- result.name = promptOptions.name;
103
- }
104
- if (!result.dest) {
105
- result.dest = promptOptions.dest;
106
- }
107
58
  if (!result.componentTemplates) {
108
59
  result.componentTemplates = selectedComponents;
109
60
  }
@@ -112,7 +63,7 @@ async function createProjectPrompt(promptOptions, projectTemplates, componentTem
112
63
  }
113
64
  if (projectTemplates && projectTemplates.length > 0) {
114
65
  if (!result.projectTemplate) {
115
- throw new Error(en_1.lib.prompts.createProjectPrompt.errors.projectTemplateRequired);
66
+ throw new Error(en_1.lib.prompts.selectProjectTemplatePrompt.errors.projectTemplateRequired);
116
67
  }
117
68
  return result;
118
69
  }
@@ -4,7 +4,7 @@ export declare function validateAccount(options: Arguments<{
4
4
  account?: string;
5
5
  accountId?: string;
6
6
  derivedAccountId?: number;
7
- providedAccountId?: string;
7
+ userProvidedAccount?: string;
8
8
  }>): Promise<boolean>;
9
9
  export declare function validateCmsPublishMode(options: Arguments<{
10
10
  cmsPublishMode?: CmsPublishMode;
package/lib/validation.js CHANGED
@@ -50,18 +50,18 @@ const path_1 = require("@hubspot/local-dev-lib/path");
50
50
  const commonOpts_1 = require("./commonOpts");
51
51
  const index_1 = require("./errorHandlers/index");
52
52
  async function validateAccount(options) {
53
- const { derivedAccountId, providedAccountId } = options;
53
+ const { derivedAccountId, userProvidedAccount } = options;
54
54
  const accountId = (0, config_1.getAccountId)(derivedAccountId);
55
55
  if (!accountId) {
56
- if (providedAccountId) {
57
- logger_1.logger.error(`The account "${providedAccountId}" could not be found in the config`);
56
+ if (userProvidedAccount) {
57
+ logger_1.logger.error(`The account "${userProvidedAccount}" could not be found in the config`);
58
58
  }
59
59
  else {
60
60
  logger_1.logger.error('An account needs to be supplied either via "--account" or through setting a "defaultPortal"');
61
61
  }
62
62
  return false;
63
63
  }
64
- if (providedAccountId && (0, config_1.loadConfigFromEnvironment)()) {
64
+ if (userProvidedAccount && (0, config_1.loadConfigFromEnvironment)()) {
65
65
  throw new Error('Cannot specify an account when environment variables are supplied. Please unset the environment variables or do not use the "--account" flag.');
66
66
  }
67
67
  const accountConfig = (0, config_1.getAccountConfig)(accountId);
@@ -14,17 +14,17 @@ declare const inputSchemaZodObject: z.ZodObject<{
14
14
  absoluteCurrentWorkingDirectory: string;
15
15
  destination: string;
16
16
  auth?: "oauth" | "static" | undefined;
17
- name?: string | undefined;
18
17
  distribution?: "marketplace" | "private" | undefined;
19
18
  features?: ("card" | "settings" | "app-function" | "webhooks")[] | undefined;
19
+ name?: string | undefined;
20
20
  }, {
21
21
  projectBase: "app" | "empty";
22
22
  absoluteCurrentWorkingDirectory: string;
23
23
  destination: string;
24
24
  auth?: "oauth" | "static" | undefined;
25
- name?: string | undefined;
26
25
  distribution?: "marketplace" | "private" | undefined;
27
26
  features?: ("card" | "settings" | "app-function" | "webhooks")[] | undefined;
27
+ name?: string | undefined;
28
28
  }>;
29
29
  export type CreateProjectInputSchema = z.infer<typeof inputSchemaZodObject>;
30
30
  export declare class CreateProjectTool extends Tool<CreateProjectInputSchema> {
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@hubspot/cli",
3
- "version": "7.7.16-experimental.1",
3
+ "version": "7.7.16-experimental.10",
4
4
  "description": "The official CLI for developing on HubSpot",
5
5
  "license": "Apache-2.0",
6
6
  "repository": "https://github.com/HubSpot/hubspot-cli",
7
7
  "dependencies": {
8
- "@hubspot/local-dev-lib": "3.10.0-beta.0",
9
- "@hubspot/project-parsing-lib": "0.3.2",
8
+ "@hubspot/local-dev-lib": "3.13.0",
9
+ "@hubspot/project-parsing-lib": "0.5.1",
10
10
  "@hubspot/serverless-dev-runtime": "7.0.6",
11
11
  "@hubspot/theme-preview-dev-server": "0.0.10",
12
12
  "@hubspot/ui-extensions-dev-server": "0.9.2",
@@ -8,6 +8,7 @@ import { APP_INSTALLATION_STATES, LOCAL_DEV_SERVER_MESSAGE_TYPES } from '../lib/
8
8
  export type LocalDevStateConstructorOptions = {
9
9
  targetProjectAccountId: number;
10
10
  targetTestingAccountId: number;
11
+ profile?: string;
11
12
  projectConfig: ProjectConfig;
12
13
  projectDir: string;
13
14
  projectId: number;
package/types/Yargs.d.ts CHANGED
@@ -2,7 +2,7 @@ import { Options, CommandModule, Argv } from 'yargs';
2
2
  import { CmsPublishMode } from '@hubspot/local-dev-lib/types/Files';
3
3
  export type CommonArgs = {
4
4
  derivedAccountId: number;
5
- providedAccountId?: number;
5
+ userProvidedAccount?: string;
6
6
  d: boolean;
7
7
  debug: boolean;
8
8
  };
@@ -1,28 +0,0 @@
1
- import { ComponentTemplate, ComponentTemplateChoice, ProjectTemplate } from '../../types/Projects';
2
- export type CreateProjectPromptResponse = {
3
- name: string;
4
- dest: string;
5
- projectTemplate?: ProjectTemplate;
6
- componentTemplates?: ComponentTemplate[];
7
- };
8
- type CreateProjectPromptResponseProjectTemplate = {
9
- name: string;
10
- dest: string;
11
- projectTemplate: ProjectTemplate;
12
- componentTemplates: undefined;
13
- };
14
- type CreateProjectPromptResponseComponentTemplates = {
15
- name: string;
16
- dest: string;
17
- projectTemplate?: undefined;
18
- componentTemplates?: ComponentTemplate[];
19
- };
20
- type PromptOptionsArg = {
21
- name?: string;
22
- dest?: string;
23
- template?: string;
24
- features?: string[];
25
- };
26
- export declare function createProjectPrompt(promptOptions: PromptOptionsArg, projectTemplates?: ProjectTemplate[], componentTemplates?: undefined): Promise<CreateProjectPromptResponseProjectTemplate>;
27
- export declare function createProjectPrompt(promptOptions: PromptOptionsArg, projectTemplates?: undefined, componentTemplates?: ComponentTemplateChoice[]): Promise<CreateProjectPromptResponseComponentTemplates>;
28
- export {};