@holo-js/cli 0.2.6 → 0.3.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/bin/holo.mjs +409 -104
- package/dist/{broadcast-JBQWQZSO.mjs → broadcast-5VZM5SGQ.mjs} +13 -11
- package/dist/{broadcast-YGJFCEPP.mjs → broadcast-AABT52BK.mjs} +10 -8
- package/dist/cache-A42JSVYA.mjs +138 -0
- package/dist/cache-DUVBBOZU.mjs +138 -0
- package/dist/{cache-migrations-77TLXIVG.mjs → cache-migrations-4WKSEN2Q.mjs} +12 -10
- package/dist/{cache-migrations-FKAHRP24.mjs → cache-migrations-PD2T5AV4.mjs} +14 -12
- package/dist/chunk-3RFRE7XG.mjs +491 -0
- package/dist/{chunk-7B2RVYLL.mjs → chunk-6BHJLCAO.mjs} +256 -392
- package/dist/{chunk-KS5TWO75.mjs → chunk-EQUFFLRG.mjs} +7 -7
- package/dist/chunk-HX6MOYBO.mjs +2 -0
- package/dist/{chunk-YEFJBN56.mjs → chunk-JVLZ3SOW.mjs} +11 -8
- package/dist/{chunk-4K4CWMMP.mjs → chunk-KRADH7PK.mjs} +53 -49
- package/dist/chunk-LALDNNPH.mjs +428 -0
- package/dist/chunk-LHK5YUR4.mjs +156 -0
- package/dist/{chunk-LBJAJLKU.mjs → chunk-M3IPUCTM.mjs} +1 -1
- package/dist/{chunk-C624G3R2.mjs → chunk-OI54DOHK.mjs} +256 -392
- package/dist/{chunk-LXGQCG56.mjs → chunk-OLZEMIDQ.mjs} +1 -1
- package/dist/{chunk-VP2E62DF.mjs → chunk-QSVMXMTQ.mjs} +49 -349
- package/dist/{chunk-J76GH2DR.mjs → chunk-R4ZYMEDU.mjs} +129 -86
- package/dist/{chunk-AJLRAC5M.mjs → chunk-TH5YCOZB.mjs} +55 -51
- package/dist/chunk-TRYHX5S4.mjs +360 -0
- package/dist/chunk-XBOVM6LO.mjs +41 -0
- package/dist/{chunk-ILU426CF.mjs → chunk-YACY2572.mjs} +482 -2
- package/dist/{config-MD27U4FM.mjs → config-BZHQK532.mjs} +3 -3
- package/dist/{dev-L4Y2GU2E.mjs → dev-7KGRV56X.mjs} +10 -8
- package/dist/{dev-YPBQBEOE.mjs → dev-GQT37XJU.mjs} +10 -8
- package/dist/{discovery-GWTBF5RZ.mjs → discovery-HNH3BLDL.mjs} +8 -6
- package/dist/{generators-VCYISHWO.mjs → generators-3FVW4AEJ.mjs} +18 -15
- package/dist/{generators-H4NTV4DB.mjs → generators-JWVNGUUE.mjs} +14 -11
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +407 -102
- package/dist/{media-migrations-BNVAPYEM.mjs → media-migrations-EG34NYAG.mjs} +13 -11
- package/dist/{media-migrations-NNB3DAQR.mjs → media-migrations-LGI7R7AR.mjs} +11 -9
- package/dist/plugins-ZGLB6JO6.mjs +24 -0
- package/dist/{queue-5BXSDFCO.mjs → queue-BEZDCZCY.mjs} +54 -16
- package/dist/{queue-D4LSWNS2.mjs → queue-R54DUUYA.mjs} +54 -16
- package/dist/{queue-migrations-EF4AMMSY.mjs → queue-migrations-AM3AKT76.mjs} +16 -11
- package/dist/{queue-migrations-LXEWXJYT.mjs → queue-migrations-U477YSFD.mjs} +18 -13
- package/dist/{runtime-RPMZMTD4.mjs → runtime-4TJYZLQV.mjs} +10 -8
- package/dist/{runtime-UKBJQFXM.mjs → runtime-MSRQD5W5.mjs} +10 -8
- package/dist/{runtime-GSXF4NB3.mjs → runtime-VR5BDPYQ.mjs} +1 -1
- package/dist/runtime-worker.mjs +7 -1
- package/dist/{scaffold-NJ5VH73M.mjs → scaffold-ASEX5LEX.mjs} +8 -4
- package/dist/{scaffold-VV3KTYGO.mjs → scaffold-ZAD3XUSD.mjs} +8 -4
- package/dist/{security-K5PZS3E3.mjs → security-4QLV7QCH.mjs} +8 -6
- package/dist/{security-JR4P7L2C.mjs → security-KYTLP4DF.mjs} +8 -6
- package/package.json +35 -8
- package/dist/cache-HUGRWOHQ.mjs +0 -66
- package/dist/cache-OSJ4PD52.mjs +0 -66
- package/dist/chunk-D7O4SU6N.mjs +0 -2
- package/dist/chunk-FGQ2I2YH.mjs +0 -22
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import {
|
|
2
|
+
HOLO_PACKAGE_VERSION,
|
|
3
|
+
readTextFile,
|
|
4
|
+
writeTextFile
|
|
5
|
+
} from "./chunk-YACY2572.mjs";
|
|
6
|
+
|
|
7
|
+
// src/package-json.ts
|
|
8
|
+
import { join } from "path";
|
|
9
|
+
function normalizeDependencyMap(value) {
|
|
10
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
11
|
+
return {};
|
|
12
|
+
}
|
|
13
|
+
return Object.fromEntries(
|
|
14
|
+
Object.entries(value).filter(([, dependencyVersion]) => typeof dependencyVersion === "string").sort(([left], [right]) => left.localeCompare(right))
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
function isWorkspaceDependencyVersion(value) {
|
|
18
|
+
return typeof value === "string" && value.startsWith("workspace:");
|
|
19
|
+
}
|
|
20
|
+
function assertValidDependencyName(packageName) {
|
|
21
|
+
if (!/^@[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*$/.test(packageName) && !/^[a-z0-9][a-z0-9._-]*$/.test(packageName)) {
|
|
22
|
+
throw new Error(`Invalid dependency package name: ${packageName || "(empty)"}.`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function resolveInstalledPackageJsonPath(projectRoot, packageName) {
|
|
26
|
+
return join(projectRoot, "node_modules", ...packageName.split("/"), "package.json");
|
|
27
|
+
}
|
|
28
|
+
async function resolveInstalledPackageVersion(projectRoot, packageName) {
|
|
29
|
+
const packageJson = await readTextFile(resolveInstalledPackageJsonPath(projectRoot, packageName));
|
|
30
|
+
if (!packageJson) {
|
|
31
|
+
return void 0;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const parsed = JSON.parse(packageJson);
|
|
35
|
+
return typeof parsed.version === "string" && parsed.version.trim() ? `^${parsed.version.trim()}` : void 0;
|
|
36
|
+
} catch {
|
|
37
|
+
return void 0;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function resolvePackageVersion(projectRoot, packageName, dependencies, devDependencies) {
|
|
41
|
+
const currentPackageVersion = dependencies[packageName] ?? devDependencies[packageName];
|
|
42
|
+
if (typeof currentPackageVersion === "string") {
|
|
43
|
+
return currentPackageVersion;
|
|
44
|
+
}
|
|
45
|
+
const workspaceVersion = Object.entries({
|
|
46
|
+
...dependencies,
|
|
47
|
+
...devDependencies
|
|
48
|
+
}).find(([dependencyName, dependencyVersion]) => dependencyName.startsWith("@holo-js/") && isWorkspaceDependencyVersion(dependencyVersion))?.[1];
|
|
49
|
+
if (packageName.startsWith("@holo-js/")) {
|
|
50
|
+
return workspaceVersion ?? `^${HOLO_PACKAGE_VERSION}`;
|
|
51
|
+
}
|
|
52
|
+
return await resolveInstalledPackageVersion(projectRoot, packageName) ?? "latest";
|
|
53
|
+
}
|
|
54
|
+
function sortDependencyMap(dependencies) {
|
|
55
|
+
return Object.fromEntries(
|
|
56
|
+
Object.entries(dependencies).sort(([left], [right]) => left.localeCompare(right))
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
async function readPackageJsonDependencyState(projectRoot) {
|
|
60
|
+
const packageJsonPath = join(projectRoot, "package.json");
|
|
61
|
+
const packageJson = await readTextFile(packageJsonPath);
|
|
62
|
+
if (!packageJson) {
|
|
63
|
+
throw new Error(`Missing package.json in ${projectRoot}.`);
|
|
64
|
+
}
|
|
65
|
+
let parsed;
|
|
66
|
+
try {
|
|
67
|
+
parsed = JSON.parse(packageJson);
|
|
68
|
+
} catch {
|
|
69
|
+
throw new Error(`Invalid package.json in ${projectRoot}.`);
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
packageJsonPath,
|
|
73
|
+
parsed,
|
|
74
|
+
dependencies: normalizeDependencyMap(parsed.dependencies),
|
|
75
|
+
devDependencies: normalizeDependencyMap(parsed.devDependencies)
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
async function writePackageJsonDependencyState(state) {
|
|
79
|
+
state.parsed.dependencies = sortDependencyMap(state.dependencies);
|
|
80
|
+
if (Object.keys(state.devDependencies).length > 0) {
|
|
81
|
+
state.parsed.devDependencies = sortDependencyMap(state.devDependencies);
|
|
82
|
+
} else {
|
|
83
|
+
delete state.parsed.devDependencies;
|
|
84
|
+
}
|
|
85
|
+
await writeTextFile(state.packageJsonPath, `${JSON.stringify(state.parsed, null, 2)}
|
|
86
|
+
`);
|
|
87
|
+
}
|
|
88
|
+
async function hasProjectDependency(projectRoot, packageName) {
|
|
89
|
+
const packageJson = await readTextFile(join(projectRoot, "package.json"));
|
|
90
|
+
if (!packageJson) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const parsed = JSON.parse(packageJson);
|
|
95
|
+
return typeof parsed.dependencies?.[packageName] === "string" || typeof parsed.devDependencies?.[packageName] === "string";
|
|
96
|
+
} catch {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async function upsertProjectDependency(projectRoot, packageName) {
|
|
101
|
+
assertValidDependencyName(packageName);
|
|
102
|
+
const state = await readPackageJsonDependencyState(projectRoot);
|
|
103
|
+
const nextVersion = await resolvePackageVersion(projectRoot, packageName, state.dependencies, state.devDependencies);
|
|
104
|
+
if (state.dependencies[packageName] === nextVersion && typeof state.devDependencies[packageName] === "undefined") {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
state.dependencies[packageName] = nextVersion;
|
|
108
|
+
delete state.devDependencies[packageName];
|
|
109
|
+
await writePackageJsonDependencyState(state);
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
async function pinProjectDependencyVersions(projectRoot, packageNames) {
|
|
113
|
+
const state = await readPackageJsonDependencyState(projectRoot);
|
|
114
|
+
let changed = false;
|
|
115
|
+
for (const packageName of packageNames) {
|
|
116
|
+
assertValidDependencyName(packageName);
|
|
117
|
+
if (packageName.startsWith("@holo-js/")) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const installedVersion = await resolveInstalledPackageVersion(projectRoot, packageName);
|
|
121
|
+
if (!installedVersion) {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
if (state.dependencies[packageName] === "latest") {
|
|
125
|
+
state.dependencies[packageName] = installedVersion;
|
|
126
|
+
changed = true;
|
|
127
|
+
}
|
|
128
|
+
if (state.devDependencies[packageName] === "latest") {
|
|
129
|
+
state.devDependencies[packageName] = installedVersion;
|
|
130
|
+
changed = true;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (!changed) {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
await writePackageJsonDependencyState(state);
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
async function removeProjectDependency(projectRoot, packageName) {
|
|
140
|
+
assertValidDependencyName(packageName);
|
|
141
|
+
const state = await readPackageJsonDependencyState(projectRoot);
|
|
142
|
+
if (typeof state.dependencies[packageName] === "undefined" && typeof state.devDependencies[packageName] === "undefined") {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
delete state.dependencies[packageName];
|
|
146
|
+
delete state.devDependencies[packageName];
|
|
147
|
+
await writePackageJsonDependencyState(state);
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export {
|
|
152
|
+
hasProjectDependency,
|
|
153
|
+
upsertProjectDependency,
|
|
154
|
+
pinProjectDependencyVersions,
|
|
155
|
+
removeProjectDependency
|
|
156
|
+
};
|