@hubspot/cli 8.14.0 → 8.15.0-beta.0

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 (91) hide show
  1. package/commands/cms/theme/preview.js +8 -1
  2. package/commands/getStarted.js +15 -20
  3. package/commands/project/add.js +7 -6
  4. package/commands/project/appInstallStatus.d.ts +1 -1
  5. package/commands/project/appInstallStatus.js +8 -4
  6. package/commands/project/create.js +20 -6
  7. package/commands/project/delete.js +1 -1
  8. package/commands/project/deploy.d.ts +1 -1
  9. package/commands/project/deploy.js +14 -12
  10. package/commands/project/dev/index.js +4 -7
  11. package/commands/project/download.js +3 -3
  12. package/commands/project/info.d.ts +1 -1
  13. package/commands/project/info.js +8 -5
  14. package/commands/project/installApp.d.ts +1 -1
  15. package/commands/project/installApp.js +9 -4
  16. package/commands/project/installDeps.js +6 -5
  17. package/commands/project/lint.js +16 -9
  18. package/commands/project/list.d.ts +3 -2
  19. package/commands/project/list.js +21 -3
  20. package/commands/project/listBuilds.d.ts +1 -1
  21. package/commands/project/listBuilds.js +4 -8
  22. package/commands/project/migrate.js +14 -12
  23. package/commands/project/open.js +15 -7
  24. package/commands/project/profile/add.js +8 -4
  25. package/commands/project/profile/delete.js +8 -4
  26. package/commands/project/release/create.d.ts +1 -1
  27. package/commands/project/release/create.js +5 -7
  28. package/commands/project/release/info.d.ts +1 -1
  29. package/commands/project/release/info.js +4 -4
  30. package/commands/project/release/list.d.ts +1 -1
  31. package/commands/project/release/list.js +4 -4
  32. package/commands/project/updateDeps.js +6 -5
  33. package/commands/project/upload.d.ts +1 -1
  34. package/commands/project/upload.js +26 -15
  35. package/commands/project/validate.js +14 -97
  36. package/commands/project/watch.js +8 -11
  37. package/commands/project.js +1 -1
  38. package/commands/testAccount/create.d.ts +1 -1
  39. package/commands/testAccount/create.js +1 -1
  40. package/lang/en.d.ts +7 -18
  41. package/lang/en.js +7 -18
  42. package/lib/app/migrate.js +5 -7
  43. package/lib/dependencyManagement.js +3 -10
  44. package/lib/doctor/DiagnosticInfoBuilder.d.ts +2 -2
  45. package/lib/doctor/DiagnosticInfoBuilder.js +8 -8
  46. package/lib/doctor/Doctor.js +7 -9
  47. package/lib/errors/ProjectErrors.d.ts +0 -6
  48. package/lib/errors/ProjectErrors.js +0 -12
  49. package/lib/errors/ProjectValidationError.d.ts +2 -1
  50. package/lib/errors/ProjectValidationError.js +3 -1
  51. package/lib/getStartedV2Actions.js +14 -18
  52. package/lib/jsonOutput/appInstallStatus.d.ts +14 -0
  53. package/lib/jsonOutput/appInstallStatus.js +14 -0
  54. package/lib/jsonOutput/createTestAccount.d.ts +7 -0
  55. package/lib/jsonOutput/createTestAccount.js +6 -0
  56. package/lib/jsonOutput/deploy.d.ts +5 -0
  57. package/lib/jsonOutput/deploy.js +4 -0
  58. package/lib/jsonOutput/info.d.ts +21 -0
  59. package/lib/jsonOutput/info.js +19 -0
  60. package/lib/jsonOutput/installApp.d.ts +11 -0
  61. package/lib/jsonOutput/installApp.js +10 -0
  62. package/lib/jsonOutput/listBuilds.d.ts +75 -0
  63. package/lib/jsonOutput/listBuilds.js +65 -0
  64. package/lib/jsonOutput/projectList.d.ts +29 -0
  65. package/lib/jsonOutput/projectList.js +28 -0
  66. package/lib/jsonOutput/release.d.ts +42 -0
  67. package/lib/jsonOutput/release.js +37 -0
  68. package/lib/jsonOutput/upload.d.ts +29 -0
  69. package/lib/jsonOutput/upload.js +23 -0
  70. package/lib/npm/packageJson.js +1 -1
  71. package/lib/projects/ProjectLogsManager.js +1 -4
  72. package/lib/projects/config.d.ts +6 -5
  73. package/lib/projects/config.js +7 -38
  74. package/lib/projects/create/tracking.d.ts +1 -0
  75. package/lib/projects/create/tracking.js +27 -0
  76. package/lib/projects/delete.js +14 -1
  77. package/lib/projects/localDev/LocalDevProcess.js +7 -7
  78. package/lib/projects/projectProfiles.d.ts +2 -2
  79. package/lib/projects/projectProfiles.js +0 -3
  80. package/lib/projects/release.js +1 -1
  81. package/lib/projects/uieLinting.js +0 -3
  82. package/lib/projects/validate.d.ts +9 -0
  83. package/lib/projects/validate.js +96 -0
  84. package/lib/theme/migrate.js +1 -4
  85. package/mcp-server/tools/project/GetBuildLogsTool.js +2 -3
  86. package/mcp-server/tools/project/GetBuildStatusTool.js +2 -3
  87. package/mcp-server/tools/project/UploadProjectTools.js +3 -5
  88. package/package.json +3 -3
  89. package/types/Projects.d.ts +1 -5
  90. package/lib/jsonOutput.d.ts +0 -182
  91. package/lib/jsonOutput.js +0 -158
@@ -0,0 +1,96 @@
1
+ import path from 'path';
2
+ import { getAllHsProfiles } from '@hubspot/project-parsing-lib/profiles';
3
+ import { uiLogger } from '../ui/logger.js';
4
+ import SpinniesManager from '../ui/SpinniesManager.js';
5
+ import { logError } from '../errorHandlers/index.js';
6
+ import { commands } from '../../lang/en.js';
7
+ import { validateProjectForProfile } from './projectProfiles.js';
8
+ import { handleTranslate, validateSourceDirectory } from './upload.js';
9
+ function logValidationErrors(validationErrors) {
10
+ uiLogger.log('');
11
+ validationErrors.forEach(error => {
12
+ if (error instanceof Error) {
13
+ logError(error);
14
+ }
15
+ else {
16
+ uiLogger.log(error);
17
+ }
18
+ });
19
+ }
20
+ export async function validateProject({ projectConfig, projectDir, derivedAccountId, profile, }) {
21
+ let valid = true;
22
+ const srcDir = path.resolve(projectDir, projectConfig.srcDir);
23
+ const profiles = await getAllHsProfiles(path.join(projectDir, projectConfig.srcDir));
24
+ // If a profile is specified, only validate that profile
25
+ if (profile) {
26
+ const validationErrors = await validateProjectForProfile({
27
+ projectConfig,
28
+ projectDir,
29
+ profileName: profile,
30
+ derivedAccountId,
31
+ });
32
+ if (validationErrors.length) {
33
+ logValidationErrors(validationErrors);
34
+ valid = false;
35
+ }
36
+ }
37
+ else if (profiles.length > 0) {
38
+ // If no profile was specified and the project has profiles, validate all of them
39
+ SpinniesManager.add('validatingAllProfiles', {
40
+ text: commands.project.validate.spinners.validatingAllProfiles,
41
+ });
42
+ const errors = [];
43
+ for (const profileName of profiles) {
44
+ const validationErrors = await validateProjectForProfile({
45
+ projectConfig,
46
+ projectDir,
47
+ profileName,
48
+ derivedAccountId,
49
+ indentSpinners: true,
50
+ });
51
+ if (validationErrors.length) {
52
+ errors.push(...validationErrors);
53
+ valid = false;
54
+ }
55
+ }
56
+ if (valid) {
57
+ SpinniesManager.succeed('validatingAllProfiles', {
58
+ text: commands.project.validate.spinners.allProfilesValidationSucceeded,
59
+ });
60
+ }
61
+ else {
62
+ SpinniesManager.fail('validatingAllProfiles', {
63
+ text: commands.project.validate.spinners.allProfilesValidationFailed,
64
+ });
65
+ }
66
+ logValidationErrors(errors);
67
+ }
68
+ else {
69
+ // If the project has no profiles, validate the project without a profile
70
+ try {
71
+ await handleTranslate({
72
+ projectDir,
73
+ projectConfig,
74
+ accountId: derivedAccountId,
75
+ skipValidation: false,
76
+ });
77
+ }
78
+ catch (e) {
79
+ uiLogger.error(commands.project.validate.failure(projectConfig.name));
80
+ logError(e);
81
+ valid = false;
82
+ uiLogger.log('');
83
+ }
84
+ }
85
+ if (!valid) {
86
+ return false;
87
+ }
88
+ try {
89
+ await validateSourceDirectory(srcDir, projectConfig, projectDir);
90
+ }
91
+ catch (e) {
92
+ logError(e);
93
+ return false;
94
+ }
95
+ return true;
96
+ }
@@ -10,7 +10,7 @@ import { debugError } from '../errorHandlers/index.js';
10
10
  import { confirmPrompt } from '../prompts/promptUtils.js';
11
11
  import { fetchMigrationApps } from '../app/migrate.js';
12
12
  export async function getHasMigratableThemes(projectConfig) {
13
- if (!projectConfig?.projectConfig?.name || !projectConfig?.projectDir) {
13
+ if (!projectConfig) {
14
14
  return { hasMigratableThemes: false, migratableThemesCount: 0 };
15
15
  }
16
16
  const projectSrcDir = path.resolve(projectConfig.projectDir, projectConfig.projectConfig.srcDir);
@@ -29,9 +29,6 @@ export async function validateMigrationAppsAndThemes(hasApps, projectConfig) {
29
29
  }
30
30
  }
31
31
  export async function handleThemesMigration(projectConfig, platformVersion) {
32
- if (!projectConfig?.projectDir || !projectConfig?.projectConfig?.srcDir) {
33
- throw new Error(lib.migrate.errors.project.invalidConfig);
34
- }
35
32
  const projectSrcDir = path.resolve(projectConfig.projectDir, projectConfig.projectConfig.srcDir);
36
33
  let migrated = false;
37
34
  let failureReason;
@@ -3,7 +3,7 @@ import { z } from 'zod';
3
3
  import { formatTextContents } from '../../utils/content.js';
4
4
  import { isHubSpotHttpError } from '@hubspot/local-dev-lib/errors/index';
5
5
  import { http } from '@hubspot/local-dev-lib/http';
6
- import { getProjectConfig, validateProjectConfig, } from '../../../lib/projects/config.js';
6
+ import { getProjectConfig } from '../../../lib/projects/config.js';
7
7
  import { absoluteCurrentWorkingDirectory, absoluteProjectPath, } from './constants.js';
8
8
  import { setupHubSpotConfig } from '../../utils/config.js';
9
9
  import { discoverAccountTargets } from '../../../lib/accountTargetDiscovery.js';
@@ -64,8 +64,7 @@ export class GetBuildLogsTool extends Tool {
64
64
  async handler({ absoluteProjectPath, absoluteCurrentWorkingDirectory, buildId, logLevel, }) {
65
65
  setupHubSpotConfig(absoluteProjectPath);
66
66
  try {
67
- const { projectConfig, projectDir } = await getProjectConfig(absoluteProjectPath);
68
- validateProjectConfig(projectConfig, projectDir);
67
+ const { projectConfig, projectDir } = getProjectConfig(absoluteProjectPath);
69
68
  const { recommended } = await discoverAccountTargets({
70
69
  projectDir,
71
70
  projectConfig,
@@ -3,7 +3,7 @@ import { z } from 'zod';
3
3
  import { formatTextContents } from '../../utils/content.js';
4
4
  import { isHubSpotHttpError } from '@hubspot/local-dev-lib/errors/index';
5
5
  import { fetchProjectBuilds, getBuildStatus, } from '@hubspot/local-dev-lib/api/projects';
6
- import { getProjectConfig, validateProjectConfig, } from '../../../lib/projects/config.js';
6
+ import { getProjectConfig } from '../../../lib/projects/config.js';
7
7
  import moment from 'moment';
8
8
  import { absoluteCurrentWorkingDirectory, absoluteProjectPath, } from './constants.js';
9
9
  import { setupHubSpotConfig } from '../../utils/config.js';
@@ -109,8 +109,7 @@ export class GetBuildStatusTool extends Tool {
109
109
  async handler({ absoluteProjectPath, absoluteCurrentWorkingDirectory, buildId, limit, }) {
110
110
  setupHubSpotConfig(absoluteProjectPath);
111
111
  try {
112
- const { projectConfig, projectDir } = await getProjectConfig(absoluteProjectPath);
113
- validateProjectConfig(projectConfig, projectDir);
112
+ const { projectConfig, projectDir } = getProjectConfig(absoluteProjectPath);
114
113
  const { recommended } = await discoverAccountTargets({
115
114
  projectDir,
116
115
  projectConfig,
@@ -41,11 +41,9 @@ export class UploadProjectTools extends Tool {
41
41
  else {
42
42
  let hasProfiles = false;
43
43
  try {
44
- const { projectConfig } = await getProjectConfig(absoluteProjectPath);
45
- if (projectConfig) {
46
- const profiles = await getAllHsProfiles(path.join(absoluteProjectPath, projectConfig.srcDir));
47
- hasProfiles = profiles.length > 0;
48
- }
44
+ const { projectConfig } = getProjectConfig(absoluteProjectPath);
45
+ const profiles = await getAllHsProfiles(path.join(absoluteProjectPath, projectConfig.srcDir));
46
+ hasProfiles = profiles.length > 0;
49
47
  }
50
48
  catch (e) {
51
49
  this.logger.debug(toolName, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hubspot/cli",
3
- "version": "8.14.0",
3
+ "version": "8.15.0-beta.0",
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",
@@ -10,8 +10,8 @@
10
10
  "!**/__tests__/**"
11
11
  ],
12
12
  "dependencies": {
13
- "@hubspot/local-dev-lib": "5.10.3",
14
- "@hubspot/project-parsing-lib": "0.23.0",
13
+ "@hubspot/local-dev-lib": "5.11.0",
14
+ "@hubspot/project-parsing-lib": "0.23.3",
15
15
  "@hubspot/ui-extensions-dev-server": "2.1.2",
16
16
  "@inquirer/prompts": "7.1.0",
17
17
  "@modelcontextprotocol/sdk": "1.29.0",
@@ -1,6 +1,7 @@
1
1
  import { Build, SubbuildStatus } from '@hubspot/local-dev-lib/types/Build';
2
2
  import { Deploy, SubdeployStatus } from '@hubspot/local-dev-lib/types/Deploy';
3
3
  import { appComponent, marketplaceDistribution, oAuth, privateDistribution, staticAuth } from '../lib/constants.js';
4
+ export type { ProjectConfig } from '@hubspot/project-parsing-lib/projects';
4
5
  export type ProjectTemplate = {
5
6
  name: string;
6
7
  label: string;
@@ -20,11 +21,6 @@ export type ComponentTemplateChoice = {
20
21
  value: ComponentTemplate;
21
22
  disabled?: string | boolean;
22
23
  };
23
- export type ProjectConfig = {
24
- name: string;
25
- srcDir: string;
26
- platformVersion: string;
27
- };
28
24
  export type ProjectTaskStates = {
29
25
  BUILDING?: string;
30
26
  ENQUEUED?: string;
@@ -1,182 +0,0 @@
1
- import { z } from 'zod';
2
- import { Build } from '@hubspot/local-dev-lib/types/Build';
3
- import { Release } from '../api/releases.js';
4
- declare const ReleaseComponentSchema: z.ZodObject<{
5
- buildType: z.ZodString;
6
- buildName: z.ZodOptional<z.ZodString>;
7
- rootPath: z.ZodOptional<z.ZodString>;
8
- id: z.ZodOptional<z.ZodString>;
9
- }, z.core.$strip>;
10
- export declare const ReleaseSchema: z.ZodObject<{
11
- releaseTag: z.ZodString;
12
- buildId: z.ZodNumber;
13
- createdAt: z.ZodString;
14
- components: z.ZodOptional<z.ZodArray<z.ZodObject<{
15
- buildType: z.ZodString;
16
- buildName: z.ZodOptional<z.ZodString>;
17
- rootPath: z.ZodOptional<z.ZodString>;
18
- id: z.ZodOptional<z.ZodString>;
19
- }, z.core.$strip>>>;
20
- }, z.core.$strip>;
21
- export declare const ReleaseListSchema: z.ZodObject<{
22
- results: z.ZodArray<z.ZodObject<{
23
- releaseTag: z.ZodString;
24
- buildId: z.ZodNumber;
25
- createdAt: z.ZodString;
26
- components: z.ZodOptional<z.ZodArray<z.ZodObject<{
27
- buildType: z.ZodString;
28
- buildName: z.ZodOptional<z.ZodString>;
29
- rootPath: z.ZodOptional<z.ZodString>;
30
- id: z.ZodOptional<z.ZodString>;
31
- }, z.core.$strip>>>;
32
- }, z.core.$strip>>;
33
- paging: z.ZodOptional<z.ZodObject<{
34
- next: z.ZodObject<{
35
- after: z.ZodString;
36
- }, z.core.$strip>;
37
- }, z.core.$strip>>;
38
- }, z.core.$strip>;
39
- declare const BuildSubbuildStatusSchema: z.ZodObject<{
40
- buildName: z.ZodString;
41
- buildType: z.ZodString;
42
- status: z.ZodString;
43
- errorMessage: z.ZodOptional<z.ZodString>;
44
- startedAt: z.ZodOptional<z.ZodString>;
45
- finishedAt: z.ZodOptional<z.ZodString>;
46
- rootPath: z.ZodOptional<z.ZodString>;
47
- id: z.ZodOptional<z.ZodString>;
48
- visible: z.ZodOptional<z.ZodBoolean>;
49
- }, z.core.$strip>;
50
- export declare const BuildSchema: z.ZodObject<{
51
- buildId: z.ZodNumber;
52
- status: z.ZodString;
53
- isDeployed: z.ZodBoolean;
54
- isAutoDeployEnabled: z.ZodOptional<z.ZodBoolean>;
55
- deployableState: z.ZodOptional<z.ZodString>;
56
- platformVersion: z.ZodOptional<z.ZodString>;
57
- uploadMessage: z.ZodOptional<z.ZodString>;
58
- enqueuedAt: z.ZodOptional<z.ZodString>;
59
- startedAt: z.ZodOptional<z.ZodString>;
60
- finishedAt: z.ZodOptional<z.ZodString>;
61
- createdAt: z.ZodOptional<z.ZodString>;
62
- subbuildStatuses: z.ZodArray<z.ZodObject<{
63
- buildName: z.ZodString;
64
- buildType: z.ZodString;
65
- status: z.ZodString;
66
- errorMessage: z.ZodOptional<z.ZodString>;
67
- startedAt: z.ZodOptional<z.ZodString>;
68
- finishedAt: z.ZodOptional<z.ZodString>;
69
- rootPath: z.ZodOptional<z.ZodString>;
70
- id: z.ZodOptional<z.ZodString>;
71
- visible: z.ZodOptional<z.ZodBoolean>;
72
- }, z.core.$strip>>;
73
- }, z.core.$strip>;
74
- export declare const ProjectBuildsListSchema: z.ZodObject<{
75
- projectName: z.ZodString;
76
- deployedBuildId: z.ZodOptional<z.ZodNumber>;
77
- results: z.ZodArray<z.ZodObject<{
78
- buildId: z.ZodNumber;
79
- status: z.ZodString;
80
- isDeployed: z.ZodBoolean;
81
- isAutoDeployEnabled: z.ZodOptional<z.ZodBoolean>;
82
- deployableState: z.ZodOptional<z.ZodString>;
83
- platformVersion: z.ZodOptional<z.ZodString>;
84
- uploadMessage: z.ZodOptional<z.ZodString>;
85
- enqueuedAt: z.ZodOptional<z.ZodString>;
86
- startedAt: z.ZodOptional<z.ZodString>;
87
- finishedAt: z.ZodOptional<z.ZodString>;
88
- createdAt: z.ZodOptional<z.ZodString>;
89
- subbuildStatuses: z.ZodArray<z.ZodObject<{
90
- buildName: z.ZodString;
91
- buildType: z.ZodString;
92
- status: z.ZodString;
93
- errorMessage: z.ZodOptional<z.ZodString>;
94
- startedAt: z.ZodOptional<z.ZodString>;
95
- finishedAt: z.ZodOptional<z.ZodString>;
96
- rootPath: z.ZodOptional<z.ZodString>;
97
- id: z.ZodOptional<z.ZodString>;
98
- visible: z.ZodOptional<z.ZodBoolean>;
99
- }, z.core.$strip>>;
100
- }, z.core.$strip>>;
101
- paging: z.ZodOptional<z.ZodObject<{
102
- next: z.ZodObject<{
103
- after: z.ZodString;
104
- }, z.core.$strip>;
105
- }, z.core.$strip>>;
106
- }, z.core.$strip>;
107
- export declare const ProjectInfoSchema: z.ZodObject<{
108
- projectName: z.ZodString;
109
- platformVersion: z.ZodString;
110
- projectId: z.ZodNumber;
111
- deployedBuildId: z.ZodNumber;
112
- autoDeployEnabled: z.ZodBoolean;
113
- projectUrl: z.ZodOptional<z.ZodString>;
114
- app: z.ZodOptional<z.ZodObject<{
115
- name: z.ZodString;
116
- id: z.ZodNumber;
117
- uid: z.ZodString;
118
- authType: z.ZodOptional<z.ZodString>;
119
- distributionType: z.ZodOptional<z.ZodString>;
120
- }, z.core.$strip>>;
121
- components: z.ZodArray<z.ZodObject<{
122
- uid: z.ZodString;
123
- type: z.ZodString;
124
- }, z.core.$strip>>;
125
- }, z.core.$strip>;
126
- declare const PreviewSchema: z.ZodObject<{
127
- releaseTag: z.ZodOptional<z.ZodString>;
128
- succeeded: z.ZodBoolean;
129
- }, z.core.$strip>;
130
- export declare const UploadSchema: z.ZodObject<{
131
- buildId: z.ZodOptional<z.ZodNumber>;
132
- deployId: z.ZodOptional<z.ZodNumber>;
133
- preview: z.ZodOptional<z.ZodObject<{
134
- releaseTag: z.ZodOptional<z.ZodString>;
135
- succeeded: z.ZodBoolean;
136
- }, z.core.$strip>>;
137
- }, z.core.$strip>;
138
- export declare const DeploySchema: z.ZodObject<{
139
- deployId: z.ZodOptional<z.ZodNumber>;
140
- }, z.core.$strip>;
141
- export declare const InstallStatusSchema: z.ZodObject<{
142
- appId: z.ZodOptional<z.ZodNumber>;
143
- appUid: z.ZodString;
144
- accountId: z.ZodNumber;
145
- projectId: z.ZodNumber;
146
- isInstalled: z.ZodBoolean;
147
- isInstalledWithCurrentScopes: z.ZodBoolean;
148
- previouslyAuthorizedScopeGroups: z.ZodArray<z.ZodObject<{
149
- id: z.ZodNumber;
150
- name: z.ZodString;
151
- }, z.core.$strip>>;
152
- }, z.core.$strip>;
153
- export declare const InstallAppSchema: z.ZodObject<{
154
- appId: z.ZodNumber;
155
- appUid: z.ZodString;
156
- accountId: z.ZodNumber;
157
- projectId: z.ZodNumber;
158
- installationState: z.ZodString;
159
- installed: z.ZodBoolean;
160
- reinstalled: z.ZodBoolean;
161
- }, z.core.$strip>;
162
- export declare const CreateTestAccountSchema: z.ZodObject<{
163
- accountName: z.ZodOptional<z.ZodString>;
164
- accountId: z.ZodOptional<z.ZodNumber>;
165
- personalAccessKey: z.ZodOptional<z.ZodString>;
166
- }, z.core.$strip>;
167
- export type ReleaseComponentJsonOutput = z.infer<typeof ReleaseComponentSchema>;
168
- export type ReleaseJsonOutput = z.infer<typeof ReleaseSchema>;
169
- export type ReleaseListJsonOutput = z.infer<typeof ReleaseListSchema>;
170
- export type BuildSubbuildStatusJsonOutput = z.infer<typeof BuildSubbuildStatusSchema>;
171
- export type BuildJsonOutput = z.infer<typeof BuildSchema>;
172
- export type ProjectBuildsListJsonOutput = z.infer<typeof ProjectBuildsListSchema>;
173
- export type ProjectInfoJsonOutput = z.infer<typeof ProjectInfoSchema>;
174
- export type PreviewJsonOutput = z.infer<typeof PreviewSchema>;
175
- export type UploadJsonOutput = z.infer<typeof UploadSchema>;
176
- export type DeployJsonOutput = z.infer<typeof DeploySchema>;
177
- export type InstallStatusJsonOutput = z.infer<typeof InstallStatusSchema>;
178
- export type InstallAppJsonOutput = z.infer<typeof InstallAppSchema>;
179
- export type CreateTestAccountJsonOutput = z.infer<typeof CreateTestAccountSchema>;
180
- export declare function mapBuildToJsonOutput(build: Build, deployedBuildId?: number): BuildJsonOutput;
181
- export declare function mapReleaseToJsonOutput(release: Release): ReleaseJsonOutput;
182
- export {};
package/lib/jsonOutput.js DELETED
@@ -1,158 +0,0 @@
1
- import { z } from 'zod';
2
- const ReleaseComponentSchema = z.object({
3
- buildType: z.string(),
4
- buildName: z.string().optional(),
5
- rootPath: z.string().optional(),
6
- id: z.string().optional(),
7
- });
8
- export const ReleaseSchema = z.object({
9
- releaseTag: z.string(),
10
- buildId: z.number(),
11
- createdAt: z.string(),
12
- components: z.array(ReleaseComponentSchema).optional(),
13
- });
14
- export const ReleaseListSchema = z.object({
15
- results: z.array(ReleaseSchema),
16
- paging: z
17
- .object({
18
- next: z.object({
19
- after: z.string(),
20
- }),
21
- })
22
- .optional(),
23
- });
24
- const BuildSubbuildStatusSchema = z.object({
25
- buildName: z.string(),
26
- buildType: z.string(),
27
- status: z.string(),
28
- errorMessage: z.string().optional(),
29
- startedAt: z.string().optional(),
30
- finishedAt: z.string().optional(),
31
- rootPath: z.string().optional(),
32
- id: z.string().optional(),
33
- visible: z.boolean().optional(),
34
- });
35
- export const BuildSchema = z.object({
36
- buildId: z.number(),
37
- status: z.string(),
38
- isDeployed: z.boolean(),
39
- isAutoDeployEnabled: z.boolean().optional(),
40
- deployableState: z.string().optional(),
41
- platformVersion: z.string().optional(),
42
- uploadMessage: z.string().optional(),
43
- enqueuedAt: z.string().optional(),
44
- startedAt: z.string().optional(),
45
- finishedAt: z.string().optional(),
46
- createdAt: z.string().optional(),
47
- subbuildStatuses: z.array(BuildSubbuildStatusSchema),
48
- });
49
- export const ProjectBuildsListSchema = z.object({
50
- projectName: z.string(),
51
- deployedBuildId: z.number().optional(),
52
- results: z.array(BuildSchema),
53
- paging: z
54
- .object({
55
- next: z.object({
56
- after: z.string(),
57
- }),
58
- })
59
- .optional(),
60
- });
61
- export const ProjectInfoSchema = z.object({
62
- projectName: z.string(),
63
- platformVersion: z.string(),
64
- projectId: z.number(),
65
- deployedBuildId: z.number(),
66
- autoDeployEnabled: z.boolean(),
67
- projectUrl: z.string().optional(),
68
- app: z
69
- .object({
70
- name: z.string(),
71
- id: z.number(),
72
- uid: z.string(),
73
- authType: z.string().optional(),
74
- distributionType: z.string().optional(),
75
- })
76
- .optional(),
77
- components: z.array(z.object({ uid: z.string(), type: z.string() })),
78
- });
79
- const PreviewSchema = z.object({
80
- releaseTag: z.string().optional(),
81
- succeeded: z.boolean(),
82
- });
83
- export const UploadSchema = z.object({
84
- buildId: z.number().optional(),
85
- deployId: z.number().optional(),
86
- preview: PreviewSchema.optional(),
87
- });
88
- export const DeploySchema = z.object({
89
- deployId: z.number().optional(),
90
- });
91
- const ScopeGroupSchema = z.object({
92
- id: z.number(),
93
- name: z.string(),
94
- });
95
- export const InstallStatusSchema = z.object({
96
- appId: z.number().optional(),
97
- appUid: z.string(),
98
- accountId: z.number(),
99
- projectId: z.number(),
100
- isInstalled: z.boolean(),
101
- isInstalledWithCurrentScopes: z.boolean(),
102
- previouslyAuthorizedScopeGroups: z.array(ScopeGroupSchema),
103
- });
104
- export const InstallAppSchema = z.object({
105
- appId: z.number(),
106
- appUid: z.string(),
107
- accountId: z.number(),
108
- projectId: z.number(),
109
- installationState: z.string(),
110
- installed: z.boolean(),
111
- reinstalled: z.boolean(),
112
- });
113
- export const CreateTestAccountSchema = z.object({
114
- accountName: z.string().optional(),
115
- accountId: z.number().optional(),
116
- personalAccessKey: z.string().optional(),
117
- });
118
- export function mapBuildToJsonOutput(build, deployedBuildId) {
119
- const { buildId, status, isAutoDeployEnabled, deployableState, platformVersion, uploadMessage, enqueuedAt, startedAt, finishedAt, createdAt, subbuildStatuses, } = build;
120
- return {
121
- buildId,
122
- status,
123
- isDeployed: buildId === deployedBuildId,
124
- isAutoDeployEnabled,
125
- deployableState,
126
- platformVersion,
127
- uploadMessage,
128
- enqueuedAt,
129
- startedAt,
130
- finishedAt,
131
- createdAt,
132
- subbuildStatuses: subbuildStatuses.map(subbuild => ({
133
- buildName: subbuild.buildName,
134
- buildType: subbuild.buildType,
135
- status: subbuild.status,
136
- errorMessage: subbuild.errorMessage,
137
- startedAt: subbuild.startedAt,
138
- finishedAt: subbuild.finishedAt,
139
- rootPath: subbuild.rootPath,
140
- id: subbuild.id,
141
- visible: subbuild.visible,
142
- })),
143
- };
144
- }
145
- export function mapReleaseToJsonOutput(release) {
146
- const { releaseTag, buildId, createdAt, components } = release;
147
- return {
148
- releaseTag,
149
- buildId,
150
- createdAt,
151
- components: components?.map(({ buildType, buildName, rootPath, id }) => ({
152
- buildType,
153
- buildName,
154
- rootPath,
155
- id,
156
- })),
157
- };
158
- }