create-flow-os 0.0.63-dev.1772065004 → 0.0.63
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/package.json +2 -3
- package/src/init/scaffold.ts +7 -44
package/package.json
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-flow-os",
|
|
3
|
-
"version": "0.0.63
|
|
3
|
+
"version": "0.0.63",
|
|
4
4
|
"license": "PolyForm-Shield-1.0.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@flow-os/client": "^0.0.63"
|
|
8
|
-
"tar": "^7.4.3"
|
|
7
|
+
"@flow-os/client": "^0.0.63"
|
|
9
8
|
},
|
|
10
9
|
"bin": {
|
|
11
10
|
"create-flow-os": "./src/index.ts"
|
package/src/init/scaffold.ts
CHANGED
|
@@ -130,63 +130,26 @@ export async function fetchFlowClientVersion(): Promise<string | undefined> {
|
|
|
130
130
|
return fetchFlowPackageVersion("@flow-os/client");
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
/**
|
|
134
|
-
const hasBunArchive = typeof (globalThis as { Bun?: { Archive?: unknown } }).Bun?.Archive === "function";
|
|
135
|
-
|
|
136
|
-
/** Scarica config da npm (sempre fresh, no cache). Se version fallisce, riprova con latest. */
|
|
133
|
+
/** Scarica config da npm (sempre fresh, no cache) */
|
|
137
134
|
async function fetchConfigFromNpm(
|
|
138
135
|
pkgName: string,
|
|
139
136
|
version: string,
|
|
140
|
-
tmpDirs: string[]
|
|
141
|
-
fallbackLatest?: string
|
|
137
|
+
tmpDirs: string[]
|
|
142
138
|
): Promise<{ files: Map<string, string>; configDir: string; tmpDir: string } | null> {
|
|
143
139
|
const shortName = pkgName.replace(/^@flow-os\//, "");
|
|
144
140
|
const { tmpdir } = await import("os");
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
async function tryFetch(v: string): Promise<{ files: Map<string, string>; configDir: string; tmpDir: string } | null> {
|
|
148
|
-
const url = `${NPM_REGISTRY}/${pkgName}/-/${shortName}-${v}.tgz`;
|
|
141
|
+
const url = `${NPM_REGISTRY}/${pkgName}/-/${shortName}-${version}.tgz`;
|
|
142
|
+
try {
|
|
149
143
|
const res = await fetch(url, { headers: { "Cache-Control": "no-cache", "Pragma": "no-cache" } });
|
|
150
144
|
if (!res.ok) return null;
|
|
151
|
-
const
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
if (hasBunArchive) {
|
|
155
|
-
const Archive = (globalThis as { Bun?: { Archive: new (data: Blob) => { extract: (dir: string, opts?: { glob?: string[] }) => Promise<number> } } }).Bun!.Archive;
|
|
156
|
-
const archive = new Archive(await res.blob());
|
|
157
|
-
mkdirSync(tmpDir, { recursive: true });
|
|
158
|
-
await archive.extract(tmpDir, { glob: ["package/config/**", "package/package.json"] });
|
|
159
|
-
} else {
|
|
160
|
-
mkdirSync(tmpDir, { recursive: true });
|
|
161
|
-
const buf = Buffer.from(await res.arrayBuffer());
|
|
162
|
-
writeFileSync(tgzPath, buf);
|
|
163
|
-
const tar = await import("tar");
|
|
164
|
-
await tar.x({ file: tgzPath, cwd: tmpDir });
|
|
165
|
-
}
|
|
166
|
-
|
|
145
|
+
const archive = new Bun.Archive(await res.blob());
|
|
146
|
+
const tmpDir = join(tmpdir(), `flow-os-${shortName}-${version}-${Date.now()}`);
|
|
147
|
+
await archive.extract(tmpDir, { glob: ["package/config/**", "package/package.json"] });
|
|
167
148
|
const extractedConfigDir = join(tmpDir, "package", "config");
|
|
168
149
|
if (!existsSync(extractedConfigDir)) return null;
|
|
169
150
|
const files = collectConfigFiles(extractedConfigDir);
|
|
170
151
|
tmpDirs.push(tmpDir);
|
|
171
152
|
return { files, configDir: extractedConfigDir, tmpDir };
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
try {
|
|
175
|
-
let result = await tryFetch(version);
|
|
176
|
-
if (!result && fallbackLatest && fallbackLatest !== version) {
|
|
177
|
-
result = await tryFetch(fallbackLatest);
|
|
178
|
-
}
|
|
179
|
-
if (!result && isCreateFlowOsDev()) {
|
|
180
|
-
try {
|
|
181
|
-
const r = await fetch(`${NPM_REGISTRY}/${pkgName}`, { headers: { Accept: "application/json" } });
|
|
182
|
-
if (r.ok) {
|
|
183
|
-
const d = (await r.json()) as { "dist-tags"?: Record<string, string> };
|
|
184
|
-
const latest = d["dist-tags"]?.["latest"];
|
|
185
|
-
if (latest && latest !== version) result = await tryFetch(latest);
|
|
186
|
-
}
|
|
187
|
-
} catch {}
|
|
188
|
-
}
|
|
189
|
-
return result;
|
|
190
153
|
} catch {
|
|
191
154
|
return null;
|
|
192
155
|
}
|