@ysk-kit/create-app 1.2.2 → 1.2.4
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/kit-root.d.ts +13 -2
- package/dist/kit-root.d.ts.map +1 -1
- package/dist/kit-root.js +88 -19
- package/dist/kit-root.js.map +1 -1
- package/package.json +1 -1
package/dist/kit-root.d.ts
CHANGED
|
@@ -5,14 +5,25 @@ export declare const kitTagRefUrl: (version: string) => string;
|
|
|
5
5
|
export declare const kitTagObjectUrl: (tagSha: string) => string;
|
|
6
6
|
/** Immutable archive for one commit. A moved tag cannot change bytes already fetched for this SHA. */
|
|
7
7
|
export declare const kitCommitArchiveUrl: (commitSha: string) => string;
|
|
8
|
+
/** Codeload is not GitHub REST and does not share the unauthenticated 60 req/hour cap. */
|
|
9
|
+
export declare const kitCodeloadUrl: (commitSha: string) => string;
|
|
10
|
+
export declare const kitLsRemoteArgs: (version: string) => string[];
|
|
11
|
+
export declare const githubAuthHeaders: (env?: NodeJS.ProcessEnv) => Record<string, string>;
|
|
12
|
+
export declare const githubRateLimited: (status: number) => boolean;
|
|
13
|
+
export declare const parseLsRemoteTag: (stdout: string, version: string) => string | null;
|
|
8
14
|
/** Resolve `v{version}` to the commit it points at, following an annotated tag. */
|
|
9
|
-
export declare const resolveKitCommit: (version: string, fetchImpl: typeof fetch
|
|
15
|
+
export declare const resolveKitCommit: (version: string, fetchImpl: typeof fetch, opts?: {
|
|
16
|
+
env?: NodeJS.ProcessEnv;
|
|
17
|
+
lsRemote?: (version: string) => string;
|
|
18
|
+
}) => Promise<string>;
|
|
10
19
|
export declare const readCreateAppVersion: (from: string) => string;
|
|
11
20
|
export type ResolveKitRootOpts = {
|
|
12
21
|
from: string;
|
|
13
22
|
fetchImpl?: typeof fetch;
|
|
14
23
|
extract?: (archive: Buffer, dest: string) => void;
|
|
24
|
+
lsRemote?: (version: string) => string;
|
|
25
|
+
env?: NodeJS.ProcessEnv;
|
|
15
26
|
};
|
|
16
|
-
export declare const materializePublishedKit: (version: string, opts?: Pick<ResolveKitRootOpts, "fetchImpl" | "extract">) => Promise<string>;
|
|
27
|
+
export declare const materializePublishedKit: (version: string, opts?: Pick<ResolveKitRootOpts, "fetchImpl" | "extract" | "lsRemote" | "env">) => Promise<string>;
|
|
17
28
|
export declare const resolveKitRoot: (opts: ResolveKitRootOpts) => Promise<string>;
|
|
18
29
|
//# sourceMappingURL=kit-root.d.ts.map
|
package/dist/kit-root.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kit-root.d.ts","sourceRoot":"","sources":["../src/kit-root.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kit-root.d.ts","sourceRoot":"","sources":["../src/kit-root.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,OAGgB,CAAC;AAE/D,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,IAQzD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,KAAG,MAC6B,CAAC;AAE9E,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,MAC4B,CAAC;AAE5E,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,MACoB,CAAC;AAEtE,sGAAsG;AACtG,eAAO,MAAM,mBAAmB,GAAI,WAAW,MAAM,KAAG,MACY,CAAC;AAErE,0FAA0F;AAC1F,eAAO,MAAM,cAAc,GAAI,WAAW,MAAM,KAAG,MACkB,CAAC;AAEtE,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,KAAG,MAAM,EAMvD,CAAC;AAIF,eAAO,MAAM,iBAAiB,GAAI,MAAK,MAAM,CAAC,UAAwB,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ7F,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,OAA2C,CAAC;AAE/F,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MAAM,GAAG,IAS3E,CAAC;AAoBF,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,EACf,WAAW,OAAO,KAAK,EACvB,OAAM;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;CAAO,KAC7E,OAAO,CAAC,MAAM,CA2ChB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,KAAG,MAYnD,CAAC;AAaF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,CAAC;AAoBF,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,OAAM,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,CAAM,KAChF,OAAO,CAAC,MAAM,CAmBhB,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,MAAM,kBAAkB,KAAG,OAAO,CAAC,MAAM,CAK7E,CAAC"}
|
package/dist/kit-root.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
|
-
import { existsSync, mkdirSync, mkdtempSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { existsSync, mkdirSync, mkdtempSync, readFileSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
3
3
|
import { tmpdir } from 'node:os';
|
|
4
4
|
import { dirname, join } from 'node:path';
|
|
5
5
|
export const isLivingKitRoot = (dir) => existsSync(join(dir, 'pnpm-workspace.yaml')) &&
|
|
@@ -21,18 +21,66 @@ export const kitTagRefUrl = (version) => `https://api.github.com/repos/yanshekki
|
|
|
21
21
|
export const kitTagObjectUrl = (tagSha) => `https://api.github.com/repos/yanshekki/ysk-kit/git/tags/${tagSha}`;
|
|
22
22
|
/** Immutable archive for one commit. A moved tag cannot change bytes already fetched for this SHA. */
|
|
23
23
|
export const kitCommitArchiveUrl = (commitSha) => `https://github.com/yanshekki/ysk-kit/archive/${commitSha}.tar.gz`;
|
|
24
|
+
/** Codeload is not GitHub REST and does not share the unauthenticated 60 req/hour cap. */
|
|
25
|
+
export const kitCodeloadUrl = (commitSha) => `https://codeload.github.com/yanshekki/ysk-kit/tar.gz/${commitSha}`;
|
|
26
|
+
export const kitLsRemoteArgs = (version) => [
|
|
27
|
+
'ls-remote',
|
|
28
|
+
'--tags',
|
|
29
|
+
'https://github.com/yanshekki/ysk-kit',
|
|
30
|
+
`refs/tags/v${version}`,
|
|
31
|
+
`refs/tags/v${version}^{}`,
|
|
32
|
+
];
|
|
24
33
|
const COMMIT_SHA = /^[0-9a-f]{40}$/i;
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
export const githubAuthHeaders = (env = process.env) => {
|
|
35
|
+
const headers = {
|
|
36
|
+
accept: 'application/vnd.github+json',
|
|
37
|
+
'user-agent': 'ysk-kit-create-app',
|
|
38
|
+
};
|
|
39
|
+
const token = env.GITHUB_TOKEN || env.GH_TOKEN;
|
|
40
|
+
if (token)
|
|
41
|
+
headers.Authorization = `Bearer ${token}`;
|
|
42
|
+
return headers;
|
|
32
43
|
};
|
|
44
|
+
export const githubRateLimited = (status) => status === 403 || status === 429;
|
|
45
|
+
export const parseLsRemoteTag = (stdout, version) => {
|
|
46
|
+
const peeled = stdout.match(new RegExp(`^([0-9a-f]{40})\\trefs/tags/v${version.replaceAll('.', '\\.')}\\^\\{\\}`, 'im'));
|
|
47
|
+
if (peeled?.[1])
|
|
48
|
+
return peeled[1].toLowerCase();
|
|
49
|
+
const plain = stdout.match(new RegExp(`^([0-9a-f]{40})\\trefs/tags/v${version.replaceAll('.', '\\.')}$`, 'im'));
|
|
50
|
+
return plain?.[1]?.toLowerCase() ?? null;
|
|
51
|
+
};
|
|
52
|
+
const githubJson = async (fetchImpl, url, env) => {
|
|
53
|
+
const res = await fetchImpl(url, { headers: githubAuthHeaders(env) });
|
|
54
|
+
if (!res.ok) {
|
|
55
|
+
return { status: res.status };
|
|
56
|
+
}
|
|
57
|
+
const body = (await res.json());
|
|
58
|
+
return { ...body, status: res.status };
|
|
59
|
+
};
|
|
60
|
+
const defaultLsRemote = (version) => execFileSync('git', kitLsRemoteArgs(version), { encoding: 'utf8' });
|
|
61
|
+
const tokenHint = 'Set GITHUB_TOKEN or GH_TOKEN (a public-repo GitHub token) and retry.';
|
|
33
62
|
/** Resolve `v{version}` to the commit it points at, following an annotated tag. */
|
|
34
|
-
export const resolveKitCommit = async (version, fetchImpl) => {
|
|
35
|
-
const
|
|
63
|
+
export const resolveKitCommit = async (version, fetchImpl, opts = {}) => {
|
|
64
|
+
const env = opts.env ?? process.env;
|
|
65
|
+
const lsRemote = opts.lsRemote ?? defaultLsRemote;
|
|
66
|
+
const fromRemote = () => {
|
|
67
|
+
try {
|
|
68
|
+
return parseLsRemoteTag(lsRemote(version), version);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
const ref = await githubJson(fetchImpl, kitTagRefUrl(version), env);
|
|
75
|
+
if (githubRateLimited(ref.status)) {
|
|
76
|
+
const sha = fromRemote();
|
|
77
|
+
if (sha)
|
|
78
|
+
return sha;
|
|
79
|
+
throw new Error(`GitHub HTTP ${ref.status} resolving kit v${version} (rate limit). ${tokenHint}`);
|
|
80
|
+
}
|
|
81
|
+
if (ref.status && ref.status !== 200) {
|
|
82
|
+
throw new Error(`GitHub ${kitTagRefUrl(version)} failed: HTTP ${ref.status}`);
|
|
83
|
+
}
|
|
36
84
|
const sha = ref.object?.sha;
|
|
37
85
|
const type = ref.object?.type;
|
|
38
86
|
if (!sha || !COMMIT_SHA.test(sha)) {
|
|
@@ -41,7 +89,13 @@ export const resolveKitCommit = async (version, fetchImpl) => {
|
|
|
41
89
|
if (type === 'commit')
|
|
42
90
|
return sha;
|
|
43
91
|
if (type === 'tag') {
|
|
44
|
-
const annotated = await githubJson(fetchImpl, kitTagObjectUrl(sha));
|
|
92
|
+
const annotated = await githubJson(fetchImpl, kitTagObjectUrl(sha), env);
|
|
93
|
+
if (githubRateLimited(annotated.status)) {
|
|
94
|
+
const peeled = fromRemote();
|
|
95
|
+
if (peeled)
|
|
96
|
+
return peeled;
|
|
97
|
+
throw new Error(`GitHub HTTP ${annotated.status} resolving kit v${version} annotated tag. ${tokenHint}`);
|
|
98
|
+
}
|
|
45
99
|
const commit = annotated.object?.sha;
|
|
46
100
|
if (!commit || annotated.object?.type !== 'commit' || !COMMIT_SHA.test(commit)) {
|
|
47
101
|
throw new Error(`kit v${version} annotated tag did not resolve to a commit`);
|
|
@@ -69,18 +123,33 @@ const defaultExtract = (archive, dest) => {
|
|
|
69
123
|
mkdirSync(dest, { recursive: true });
|
|
70
124
|
const tgz = join(dest, 'kit.tgz');
|
|
71
125
|
writeFileSync(tgz, archive);
|
|
72
|
-
|
|
126
|
+
try {
|
|
127
|
+
execFileSync('tar', ['-xzf', tgz, '-C', dest, '--strip-components=1']);
|
|
128
|
+
}
|
|
129
|
+
finally {
|
|
130
|
+
if (existsSync(tgz))
|
|
131
|
+
unlinkSync(tgz);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
const fetchArchive = async (fetchImpl, commit, version) => {
|
|
135
|
+
const urls = [kitCommitArchiveUrl(commit), kitCodeloadUrl(commit)];
|
|
136
|
+
let lastStatus = 0;
|
|
137
|
+
for (const url of urls) {
|
|
138
|
+
const res = await fetchImpl(url);
|
|
139
|
+
if (res.ok)
|
|
140
|
+
return Buffer.from(await res.arrayBuffer());
|
|
141
|
+
lastStatus = res.status;
|
|
142
|
+
if (!githubRateLimited(res.status) && res.status !== 404) {
|
|
143
|
+
throw new Error(`download kit v${version} (${commit}) failed: HTTP ${res.status}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
throw new Error(`download kit v${version} (${commit}) failed: HTTP ${lastStatus}. ${tokenHint}`);
|
|
73
147
|
};
|
|
74
148
|
export const materializePublishedKit = async (version, opts = {}) => {
|
|
75
149
|
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
76
150
|
const extract = opts.extract ?? defaultExtract;
|
|
77
|
-
const commit = await resolveKitCommit(version, fetchImpl);
|
|
78
|
-
const
|
|
79
|
-
const res = await fetchImpl(archiveUrl);
|
|
80
|
-
if (!res.ok) {
|
|
81
|
-
throw new Error(`download kit v${version} (${commit}) failed: HTTP ${res.status}`);
|
|
82
|
-
}
|
|
83
|
-
const archive = Buffer.from(await res.arrayBuffer());
|
|
151
|
+
const commit = await resolveKitCommit(version, fetchImpl, opts);
|
|
152
|
+
const archive = await fetchArchive(fetchImpl, commit, version);
|
|
84
153
|
const dest = mkdtempSync(join(tmpdir(), 'ysk-kit-'));
|
|
85
154
|
extract(archive, dest);
|
|
86
155
|
if (!isLivingKitRoot(dest)) {
|
package/dist/kit-root.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kit-root.js","sourceRoot":"","sources":["../src/kit-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"kit-root.js","sourceRoot":"","sources":["../src/kit-root.ts"],"names":[],"mappings":"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"}
|