@hs-x/cli 0.4.1 → 0.4.2-next.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.
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +35 -1
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +18 -145
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/help-command.js +3 -0
- package/dist/commands/help-command.js.map +1 -1
- package/dist/commands/project-lifecycle-schema.d.ts +67 -0
- package/dist/commands/project-lifecycle-schema.d.ts.map +1 -0
- package/dist/commands/project-lifecycle-schema.js +143 -0
- package/dist/commands/project-lifecycle-schema.js.map +1 -0
- package/dist/commands/project-lifecycle.d.ts +61 -0
- package/dist/commands/project-lifecycle.d.ts.map +1 -0
- package/dist/commands/project-lifecycle.js +641 -0
- package/dist/commands/project-lifecycle.js.map +1 -0
- package/dist/commands/project.d.ts +37 -0
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +77 -0
- package/dist/commands/project.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/errors-registry.d.ts.map +1 -1
- package/dist/errors-registry.js +50 -0
- package/dist/errors-registry.js.map +1 -1
- package/dist/hubspot-developer-client.d.ts +4 -3
- package/dist/hubspot-developer-client.d.ts.map +1 -1
- package/dist/hubspot-developer-client.js +15 -11
- package/dist/hubspot-developer-client.js.map +1 -1
- package/dist/hubspot-project-archive.d.ts.map +1 -1
- package/dist/hubspot-project-archive.js +15 -1
- package/dist/hubspot-project-archive.js.map +1 -1
- package/dist/hubspot-project-lifecycle.d.ts +64 -0
- package/dist/hubspot-project-lifecycle.d.ts.map +1 -0
- package/dist/hubspot-project-lifecycle.js +227 -0
- package/dist/hubspot-project-lifecycle.js.map +1 -0
- package/dist/hubspot-project-workspaces.d.ts +10 -0
- package/dist/hubspot-project-workspaces.d.ts.map +1 -0
- package/dist/hubspot-project-workspaces.js +224 -0
- package/dist/hubspot-project-workspaces.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { copyFile, lstat, mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { basename, dirname, isAbsolute, join, relative, resolve } from 'node:path';
|
|
4
|
+
import { shouldIgnoreFile } from '@hubspot/local-dev-lib/ignoreRules';
|
|
5
|
+
import { collectFileDependencies, collectWorkspaceDirectories, findAndParsePackageJsonFiles, getPackableFiles, validateWorkspaceProtocolDependencies, } from '@hubspot/project-parsing-lib/workspaces';
|
|
6
|
+
/**
|
|
7
|
+
* Stage the exact workspace/file-dependency closure HubSpot's project upload
|
|
8
|
+
* expects. The discovery and npm-packlist behavior come from HubSpot's own
|
|
9
|
+
* project parser; this module only materializes that canonical plan into our
|
|
10
|
+
* deterministic staging directory.
|
|
11
|
+
*/
|
|
12
|
+
export async function stageHubSpotWorkspaceDependencies(sourceRoot, stagedSourceRoot) {
|
|
13
|
+
const plan = await planWorkspaceDependencies(sourceRoot);
|
|
14
|
+
await Promise.all(plan.externalEntries.map((entry) => copyExternalEntry(entry, stagedSourceRoot)));
|
|
15
|
+
await rewritePackageJsonFiles(sourceRoot, stagedSourceRoot, plan);
|
|
16
|
+
await rewritePackageLockFiles(sourceRoot, stagedSourceRoot, plan);
|
|
17
|
+
}
|
|
18
|
+
/** Include external dependency bytes in deploy-preview fingerprints. */
|
|
19
|
+
export async function fingerprintHubSpotWorkspaceDependencies(sourceRoot) {
|
|
20
|
+
const plan = await planWorkspaceDependencies(sourceRoot);
|
|
21
|
+
const hash = createHash('sha256');
|
|
22
|
+
for (const entry of [...plan.externalEntries].sort((left, right) => left.archivePath.localeCompare(right.archivePath))) {
|
|
23
|
+
hash.update(`${entry.kind}\0${entry.archivePath}\0`);
|
|
24
|
+
if (entry.kind === 'tarball') {
|
|
25
|
+
hash.update(await readFile(entry.source));
|
|
26
|
+
hash.update('\0');
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const packable = [...(await getPackableFiles(entry.source))].sort();
|
|
30
|
+
for (const file of packable) {
|
|
31
|
+
if (shouldIgnoreFile(file, true))
|
|
32
|
+
continue;
|
|
33
|
+
const path = join(entry.source, file);
|
|
34
|
+
const metadata = await lstat(path);
|
|
35
|
+
if (!metadata.isFile())
|
|
36
|
+
continue;
|
|
37
|
+
hash.update(`file\0${file.replaceAll('\\', '/')}\0`);
|
|
38
|
+
hash.update(await readFile(path));
|
|
39
|
+
hash.update('\0');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return `sha256:${hash.digest('hex')}`;
|
|
43
|
+
}
|
|
44
|
+
async function planWorkspaceDependencies(sourceRoot) {
|
|
45
|
+
const parsed = await findAndParsePackageJsonFiles(sourceRoot);
|
|
46
|
+
const [workspaceMappings, fileMappings] = await Promise.all([
|
|
47
|
+
collectWorkspaceDirectories(parsed),
|
|
48
|
+
collectFileDependencies(parsed),
|
|
49
|
+
]);
|
|
50
|
+
validateWorkspaceProtocolDependencies(parsed, workspaceMappings);
|
|
51
|
+
const packageWorkspaces = new Map();
|
|
52
|
+
const packageFileDependencies = new Map();
|
|
53
|
+
const externalArchivePaths = new Map();
|
|
54
|
+
const archiveOwners = new Map();
|
|
55
|
+
const externalEntries = [];
|
|
56
|
+
const packageDirectoriesWithExternals = new Set();
|
|
57
|
+
for (const mapping of workspaceMappings) {
|
|
58
|
+
const entries = packageWorkspaces.get(mapping.sourcePackageJsonPath) ?? [];
|
|
59
|
+
packageWorkspaces.set(mapping.sourcePackageJsonPath, entries);
|
|
60
|
+
if (isInside(sourceRoot, mapping.workspaceDir)) {
|
|
61
|
+
entries.push(toPosix(relative(dirname(mapping.sourcePackageJsonPath), mapping.workspaceDir)));
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const archivePath = registerExternal(mapping.workspaceDir, 'directory', externalArchivePaths, archiveOwners, externalEntries);
|
|
65
|
+
entries.push(relativeArchivePath(sourceRoot, mapping.sourcePackageJsonPath, archivePath));
|
|
66
|
+
packageDirectoriesWithExternals.add(dirname(mapping.sourcePackageJsonPath));
|
|
67
|
+
}
|
|
68
|
+
for (const mapping of fileMappings) {
|
|
69
|
+
if (isInside(sourceRoot, mapping.localPath))
|
|
70
|
+
continue;
|
|
71
|
+
const archivePath = registerExternal(mapping.localPath, mapping.kind, externalArchivePaths, archiveOwners, externalEntries);
|
|
72
|
+
const dependencies = packageFileDependencies.get(mapping.sourcePackageJsonPath) ?? new Map();
|
|
73
|
+
packageFileDependencies.set(mapping.sourcePackageJsonPath, dependencies);
|
|
74
|
+
dependencies.set(mapping.packageName, {
|
|
75
|
+
protocol: mapping.protocol,
|
|
76
|
+
archivePath: relativeArchivePath(sourceRoot, mapping.sourcePackageJsonPath, archivePath),
|
|
77
|
+
});
|
|
78
|
+
packageDirectoriesWithExternals.add(dirname(mapping.sourcePackageJsonPath));
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
packageWorkspaces,
|
|
82
|
+
packageFileDependencies,
|
|
83
|
+
externalEntries,
|
|
84
|
+
externalArchivePaths,
|
|
85
|
+
packageDirectoriesWithExternals,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function registerExternal(source, kind, externalArchivePaths, archiveOwners, entries) {
|
|
89
|
+
const absolute = resolve(source);
|
|
90
|
+
const existing = externalArchivePaths.get(absolute);
|
|
91
|
+
if (existing)
|
|
92
|
+
return existing;
|
|
93
|
+
const archivePath = computeExternalArchivePath(absolute, kind);
|
|
94
|
+
const owner = archiveOwners.get(archivePath);
|
|
95
|
+
if (owner && owner !== absolute) {
|
|
96
|
+
throw new Error(`Workspace archive collision between ${owner} and ${absolute}.`);
|
|
97
|
+
}
|
|
98
|
+
archiveOwners.set(archivePath, absolute);
|
|
99
|
+
externalArchivePaths.set(absolute, archivePath);
|
|
100
|
+
entries.push({ source: absolute, archivePath, kind });
|
|
101
|
+
return archivePath;
|
|
102
|
+
}
|
|
103
|
+
async function copyExternalEntry(entry, stagedSourceRoot) {
|
|
104
|
+
const destination = join(stagedSourceRoot, entry.archivePath);
|
|
105
|
+
if (entry.kind === 'tarball') {
|
|
106
|
+
await mkdir(dirname(destination), { recursive: true });
|
|
107
|
+
await copyFile(entry.source, destination);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const packable = [...(await getPackableFiles(entry.source))].sort();
|
|
111
|
+
for (const file of packable) {
|
|
112
|
+
if (shouldIgnoreFile(file, true))
|
|
113
|
+
continue;
|
|
114
|
+
const source = join(entry.source, file);
|
|
115
|
+
const metadata = await lstat(source);
|
|
116
|
+
if (metadata.isSymbolicLink()) {
|
|
117
|
+
throw new Error(`External HubSpot project dependency contains a symbolic link: ${file}.`);
|
|
118
|
+
}
|
|
119
|
+
if (!metadata.isFile())
|
|
120
|
+
continue;
|
|
121
|
+
const target = join(destination, file);
|
|
122
|
+
await mkdir(dirname(target), { recursive: true });
|
|
123
|
+
await copyFile(source, target);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async function rewritePackageJsonFiles(sourceRoot, stagedSourceRoot, plan) {
|
|
127
|
+
const paths = new Set([...plan.packageWorkspaces.keys(), ...plan.packageFileDependencies.keys()]);
|
|
128
|
+
for (const sourcePath of paths) {
|
|
129
|
+
const stagedPath = join(stagedSourceRoot, relative(sourceRoot, sourcePath));
|
|
130
|
+
const raw = await readFile(stagedPath, 'utf8');
|
|
131
|
+
const parsed = JSON.parse(raw);
|
|
132
|
+
const workspaces = plan.packageWorkspaces.get(sourcePath);
|
|
133
|
+
if (workspaces && parsed.workspaces)
|
|
134
|
+
parsed.workspaces = workspaces;
|
|
135
|
+
const dependencies = asRecord(parsed.dependencies);
|
|
136
|
+
for (const [name, replacement] of plan.packageFileDependencies.get(sourcePath) ?? []) {
|
|
137
|
+
if (dependencies && typeof dependencies[name] === 'string') {
|
|
138
|
+
dependencies[name] = `${replacement.protocol}:${replacement.archivePath}`;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
await writeFile(stagedPath, `${JSON.stringify(parsed, null, 2)}\n`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
async function rewritePackageLockFiles(sourceRoot, stagedSourceRoot, plan) {
|
|
145
|
+
for (const packageDirectory of plan.packageDirectoriesWithExternals) {
|
|
146
|
+
const sourceLock = join(packageDirectory, 'package-lock.json');
|
|
147
|
+
let raw;
|
|
148
|
+
try {
|
|
149
|
+
raw = await readFile(sourceLock, 'utf8');
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
const mappings = [...plan.externalArchivePaths].map(([externalPath, archivePath]) => ({
|
|
155
|
+
oldPath: toPosix(relative(packageDirectory, externalPath)),
|
|
156
|
+
newPath: toPosix(relative(packageDirectory, join(sourceRoot, archivePath))),
|
|
157
|
+
}));
|
|
158
|
+
const rewritten = rewriteLockfile(JSON.parse(raw), mappings);
|
|
159
|
+
const stagedLock = join(stagedSourceRoot, relative(sourceRoot, sourceLock));
|
|
160
|
+
await writeFile(stagedLock, `${JSON.stringify(rewritten, null, 2)}\n`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function rewriteLockfile(lockfile, mappings) {
|
|
164
|
+
const packages = asRecord(lockfile.packages);
|
|
165
|
+
if (!packages)
|
|
166
|
+
return lockfile;
|
|
167
|
+
const rewritten = {};
|
|
168
|
+
for (const [key, value] of Object.entries(packages)) {
|
|
169
|
+
rewritten[mappings.find((mapping) => mapping.oldPath === key)?.newPath ?? key] = value;
|
|
170
|
+
}
|
|
171
|
+
for (const [key, value] of Object.entries(rewritten)) {
|
|
172
|
+
const entry = asRecord(value);
|
|
173
|
+
const resolved = typeof entry?.resolved === 'string' ? entry.resolved : undefined;
|
|
174
|
+
if (!key.startsWith('node_modules/') || !entry || !resolved)
|
|
175
|
+
continue;
|
|
176
|
+
const fileUrl = resolved.startsWith('file:');
|
|
177
|
+
const path = fileUrl ? resolved.slice('file:'.length) : resolved;
|
|
178
|
+
const replacement = mappings.find((mapping) => mapping.oldPath === path);
|
|
179
|
+
if (replacement) {
|
|
180
|
+
rewritten[key] = {
|
|
181
|
+
...entry,
|
|
182
|
+
resolved: fileUrl ? `file:${replacement.newPath}` : replacement.newPath,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
const root = asRecord(rewritten['']);
|
|
187
|
+
if (root && Array.isArray(root.workspaces)) {
|
|
188
|
+
rewritten[''] = {
|
|
189
|
+
...root,
|
|
190
|
+
workspaces: root.workspaces.map((workspace) => {
|
|
191
|
+
if (typeof workspace !== 'string')
|
|
192
|
+
return workspace;
|
|
193
|
+
return mappings.find((mapping) => mapping.oldPath === workspace)?.newPath ?? workspace;
|
|
194
|
+
}),
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
return { ...lockfile, packages: rewritten };
|
|
198
|
+
}
|
|
199
|
+
function relativeArchivePath(sourceRoot, sourcePackageJson, archivePath) {
|
|
200
|
+
const packageDirectoryInArchive = relative(sourceRoot, dirname(sourcePackageJson));
|
|
201
|
+
return toPosix(relative(packageDirectoryInArchive, archivePath));
|
|
202
|
+
}
|
|
203
|
+
function computeExternalArchivePath(source, kind) {
|
|
204
|
+
const hash = createHash('sha256').update(resolve(source)).digest('hex').slice(0, 8);
|
|
205
|
+
const name = basename(source);
|
|
206
|
+
if (kind === 'tarball') {
|
|
207
|
+
const stem = name.replace(/(?:\.tar\.gz|\.tgz|\.tar)$/i, '');
|
|
208
|
+
return `_workspaces/${stem}-${hash}/${name}`;
|
|
209
|
+
}
|
|
210
|
+
return `_workspaces/${name}-${hash}`;
|
|
211
|
+
}
|
|
212
|
+
function isInside(parent, child) {
|
|
213
|
+
const path = relative(resolve(parent), resolve(child));
|
|
214
|
+
return path === '' || (!path.startsWith('..') && !isAbsolute(path));
|
|
215
|
+
}
|
|
216
|
+
function toPosix(path) {
|
|
217
|
+
return path.replaceAll('\\', '/');
|
|
218
|
+
}
|
|
219
|
+
function asRecord(value) {
|
|
220
|
+
return typeof value === 'object' && value !== null
|
|
221
|
+
? value
|
|
222
|
+
: undefined;
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=hubspot-project-workspaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hubspot-project-workspaces.js","sourceRoot":"","sources":["../src/hubspot-project-workspaces.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hs-x/cli",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2-next.0",
|
|
4
4
|
"description": "HS-X CLI — init, validate, connect, dev, deploy, promote, rollback, doctor, sync. Installs the `hs-x` command.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"@effect/platform-bun": "0.89.0",
|
|
21
21
|
"@hs-x/codegen": "0.4.1",
|
|
22
22
|
"@hs-x/hubspot": "0.4.1",
|
|
23
|
-
"@hs-x/hubspot-cli": "0.4.
|
|
23
|
+
"@hs-x/hubspot-cli": "0.4.2-next.0",
|
|
24
24
|
"@hs-x/runtime": "0.4.1",
|
|
25
25
|
"@hs-x/types": "0.4.1",
|
|
26
26
|
"@hs-x/validator": "0.4.1",
|
|
@@ -35,9 +35,10 @@
|
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
+
"@hs-x/control-plane": "0.1.0",
|
|
38
39
|
"@hs-x/fixtures": "0.4.1",
|
|
39
40
|
"@types/node": "^22.10.0",
|
|
40
|
-
"
|
|
41
|
+
"ajv": "8.18.0"
|
|
41
42
|
},
|
|
42
43
|
"license": "Apache-2.0",
|
|
43
44
|
"engines": {
|