@modularcore/cli 0.2.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/commands/add.d.ts +15 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +66 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/diff.d.ts +14 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +40 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/init.d.ts +13 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +48 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +5 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +11 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/search.d.ts +4 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +9 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/update.d.ts +19 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +56 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +53 -0
- package/dist/config.js.map +1 -0
- package/dist/deps.d.ts +36 -0
- package/dist/deps.d.ts.map +1 -0
- package/dist/deps.js +93 -0
- package/dist/deps.js.map +1 -0
- package/dist/errors.d.ts +19 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +31 -0
- package/dist/errors.js.map +1 -0
- package/dist/files.d.ts +23 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +124 -0
- package/dist/files.js.map +1 -0
- package/dist/format-error.d.ts +11 -0
- package/dist/format-error.d.ts.map +1 -0
- package/dist/format-error.js +18 -0
- package/dist/format-error.js.map +1 -0
- package/dist/framework-detect.d.ts +23 -0
- package/dist/framework-detect.d.ts.map +1 -0
- package/dist/framework-detect.js +70 -0
- package/dist/framework-detect.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +116 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +10 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +38 -0
- package/dist/install.js.map +1 -0
- package/dist/prompts.d.ts +19 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +39 -0
- package/dist/prompts.js.map +1 -0
- package/dist/registry-client.d.ts +8 -0
- package/dist/registry-client.d.ts.map +1 -0
- package/dist/registry-client.js +68 -0
- package/dist/registry-client.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { registryEntrySchema, registryIndexEntrySchema } from '@modularcore/registry';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { RegistryClientError } from './errors.js';
|
|
4
|
+
const registryIndexSchema = z.array(registryIndexEntrySchema);
|
|
5
|
+
const NOT_GENERATED_HINT = 'Corre `pnpm build:registry` en el repo del registry (o verifica `registryUrl`).';
|
|
6
|
+
function joinUrl(base, path) {
|
|
7
|
+
const trimmedBase = base.endsWith('/') ? base.slice(0, -1) : base;
|
|
8
|
+
return `${trimmedBase}/${path}`;
|
|
9
|
+
}
|
|
10
|
+
async function fetchJson(url, notFoundLabel) {
|
|
11
|
+
let response;
|
|
12
|
+
try {
|
|
13
|
+
response = await fetch(url);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
throw new RegistryClientError(`No se pudo conectar con el registry en "${url}": ${error.message}`);
|
|
17
|
+
}
|
|
18
|
+
if (response.status === 404) {
|
|
19
|
+
throw new RegistryClientError(`${notFoundLabel} (404 en "${url}"). ${NOT_GENERATED_HINT}`);
|
|
20
|
+
}
|
|
21
|
+
if (!response.ok) {
|
|
22
|
+
throw new RegistryClientError(`El registry respondió ${response.status} en "${url}". ${NOT_GENERATED_HINT}`);
|
|
23
|
+
}
|
|
24
|
+
const text = await response.text();
|
|
25
|
+
try {
|
|
26
|
+
return JSON.parse(text);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
throw new RegistryClientError(`Respuesta no-JSON del registry en "${url}" (¿registry no generado?). ${NOT_GENERATED_HINT}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function createRegistryClient(registryUrl) {
|
|
33
|
+
return {
|
|
34
|
+
async getIndex() {
|
|
35
|
+
const url = joinUrl(registryUrl, 'index.json');
|
|
36
|
+
const json = await fetchJson(url, 'Índice del registry no encontrado');
|
|
37
|
+
const parsed = registryIndexSchema.safeParse(json);
|
|
38
|
+
if (!parsed.success) {
|
|
39
|
+
throw new RegistryClientError(`El índice del registry en "${url}" no tiene el formato esperado: ${parsed.error.message}`);
|
|
40
|
+
}
|
|
41
|
+
return parsed.data;
|
|
42
|
+
},
|
|
43
|
+
async getDescriptor(name) {
|
|
44
|
+
const url = joinUrl(registryUrl, `${name}.json`);
|
|
45
|
+
const json = await fetchJson(url, `Componente "${name}" no encontrado en el registry`);
|
|
46
|
+
const parsed = registryEntrySchema.safeParse(json);
|
|
47
|
+
if (!parsed.success) {
|
|
48
|
+
throw new RegistryClientError(`El descriptor de "${name}" en "${url}" no es válido: ${parsed.error.message}`);
|
|
49
|
+
}
|
|
50
|
+
return parsed.data;
|
|
51
|
+
},
|
|
52
|
+
async getTarball(name) {
|
|
53
|
+
const url = joinUrl(registryUrl, `${name}.tar.gz`);
|
|
54
|
+
let response;
|
|
55
|
+
try {
|
|
56
|
+
response = await fetch(url);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
throw new RegistryClientError(`No se pudo conectar con el registry en "${url}": ${error.message}`);
|
|
60
|
+
}
|
|
61
|
+
if (!response.ok) {
|
|
62
|
+
throw new RegistryClientError(`No se pudo descargar el tarball de "${name}" (${response.status} en "${url}"). ${NOT_GENERATED_HINT}`);
|
|
63
|
+
}
|
|
64
|
+
return Buffer.from(await response.arrayBuffer());
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=registry-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-client.js","sourceRoot":"","sources":["../src/registry-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@modularcore/cli",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"type": "module",
|
|
9
|
+
"bin": {
|
|
10
|
+
"modularcore": "./dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"main": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"engines": {
|
|
18
|
+
"node": ">=18"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@clack/prompts": "^1.7.0",
|
|
22
|
+
"commander": "^15.0.0",
|
|
23
|
+
"semver": "^7.8.5",
|
|
24
|
+
"zod": "^4.4.3",
|
|
25
|
+
"@modularcore/registry": "0.2.0",
|
|
26
|
+
"@modularcore/registry-client": "0.3.0"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/node": "^22.13.0",
|
|
30
|
+
"@types/semver": "^7.5.8"
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsc -p tsconfig.json",
|
|
34
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
35
|
+
"test": "vitest run"
|
|
36
|
+
}
|
|
37
|
+
}
|