@authrim/setup 0.1.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/README.md +303 -0
- package/dist/__tests__/config.test.d.ts +5 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +115 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/keys.test.d.ts +5 -0
- package/dist/__tests__/keys.test.d.ts.map +1 -0
- package/dist/__tests__/keys.test.js +87 -0
- package/dist/__tests__/keys.test.js.map +1 -0
- package/dist/__tests__/naming.test.d.ts +5 -0
- package/dist/__tests__/naming.test.d.ts.map +1 -0
- package/dist/__tests__/naming.test.js +84 -0
- package/dist/__tests__/naming.test.js.map +1 -0
- package/dist/cli/commands/config.d.ts +13 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +231 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/deploy.d.ts +21 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deploy.js +304 -0
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/init.d.ts +14 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +1248 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/core/admin.d.ts +64 -0
- package/dist/core/admin.d.ts.map +1 -0
- package/dist/core/admin.js +247 -0
- package/dist/core/admin.js.map +1 -0
- package/dist/core/cloudflare.d.ts +157 -0
- package/dist/core/cloudflare.d.ts.map +1 -0
- package/dist/core/cloudflare.js +452 -0
- package/dist/core/cloudflare.js.map +1 -0
- package/dist/core/config.d.ts +891 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +208 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/deploy.d.ts +81 -0
- package/dist/core/deploy.d.ts.map +1 -0
- package/dist/core/deploy.js +389 -0
- package/dist/core/deploy.js.map +1 -0
- package/dist/core/keys.d.ts +111 -0
- package/dist/core/keys.d.ts.map +1 -0
- package/dist/core/keys.js +287 -0
- package/dist/core/keys.js.map +1 -0
- package/dist/core/lock.d.ts +220 -0
- package/dist/core/lock.d.ts.map +1 -0
- package/dist/core/lock.js +230 -0
- package/dist/core/lock.js.map +1 -0
- package/dist/core/naming.d.ts +151 -0
- package/dist/core/naming.d.ts.map +1 -0
- package/dist/core/naming.js +209 -0
- package/dist/core/naming.js.map +1 -0
- package/dist/core/source.d.ts +68 -0
- package/dist/core/source.d.ts.map +1 -0
- package/dist/core/source.js +285 -0
- package/dist/core/source.js.map +1 -0
- package/dist/core/wrangler.d.ts +87 -0
- package/dist/core/wrangler.d.ts.map +1 -0
- package/dist/core/wrangler.js +398 -0
- package/dist/core/wrangler.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +117 -0
- package/dist/index.js.map +1 -0
- package/dist/web/api.d.ts +21 -0
- package/dist/web/api.d.ts.map +1 -0
- package/dist/web/api.js +423 -0
- package/dist/web/api.js.map +1 -0
- package/dist/web/server.d.ts +12 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +112 -0
- package/dist/web/server.js.map +1 -0
- package/dist/web/ui.d.ts +7 -0
- package/dist/web/ui.d.ts.map +1 -0
- package/dist/web/ui.js +765 -0
- package/dist/web/ui.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source Download Module
|
|
3
|
+
*
|
|
4
|
+
* Downloads Authrim source code from GitHub for deployment.
|
|
5
|
+
* Supports both degit (shallow clone) and tar.gz (release artifact) methods.
|
|
6
|
+
*/
|
|
7
|
+
export interface SourceInfo {
|
|
8
|
+
/** GitHub repository (e.g., "sgrastar/authrim") */
|
|
9
|
+
repository: string;
|
|
10
|
+
/** Git reference (tag or branch) */
|
|
11
|
+
gitRef: string;
|
|
12
|
+
/** Full commit hash */
|
|
13
|
+
commitHash?: string;
|
|
14
|
+
/** SHA256 hash of the source artifact */
|
|
15
|
+
artifactHash?: string;
|
|
16
|
+
/** Download method used */
|
|
17
|
+
method: 'degit' | 'tarball';
|
|
18
|
+
}
|
|
19
|
+
export interface DownloadOptions {
|
|
20
|
+
/** Target directory to extract source */
|
|
21
|
+
targetDir: string;
|
|
22
|
+
/** GitHub repository (default: sgrastar/authrim) */
|
|
23
|
+
repository?: string;
|
|
24
|
+
/** Git tag or branch (default: latest release or main) */
|
|
25
|
+
gitRef?: string;
|
|
26
|
+
/** Force overwrite if directory exists */
|
|
27
|
+
force?: boolean;
|
|
28
|
+
/** Progress callback */
|
|
29
|
+
onProgress?: (message: string) => void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get the latest release tag from GitHub
|
|
33
|
+
*/
|
|
34
|
+
export declare function getLatestRelease(repository?: string): Promise<string | null>;
|
|
35
|
+
/**
|
|
36
|
+
* Get commit hash for a given ref
|
|
37
|
+
*/
|
|
38
|
+
export declare function getCommitHash(repository?: string, gitRef?: string): Promise<string | null>;
|
|
39
|
+
/**
|
|
40
|
+
* Get available tags from GitHub
|
|
41
|
+
*/
|
|
42
|
+
export declare function getAvailableTags(repository?: string): Promise<string[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Check if degit is available
|
|
45
|
+
*/
|
|
46
|
+
export declare function isDegitAvailable(): Promise<boolean>;
|
|
47
|
+
/**
|
|
48
|
+
* Download source using degit (shallow clone)
|
|
49
|
+
*/
|
|
50
|
+
export declare function downloadWithDegit(options: DownloadOptions): Promise<SourceInfo>;
|
|
51
|
+
/**
|
|
52
|
+
* Download source as tarball from GitHub
|
|
53
|
+
*/
|
|
54
|
+
export declare function downloadTarball(options: DownloadOptions): Promise<SourceInfo>;
|
|
55
|
+
/**
|
|
56
|
+
* Download Authrim source code
|
|
57
|
+
*
|
|
58
|
+
* Attempts to use degit first, falls back to tarball download if degit is unavailable.
|
|
59
|
+
*/
|
|
60
|
+
export declare function downloadSource(options: DownloadOptions): Promise<SourceInfo>;
|
|
61
|
+
/**
|
|
62
|
+
* Verify downloaded source contains expected structure
|
|
63
|
+
*/
|
|
64
|
+
export declare function verifySourceStructure(sourceDir: string): Promise<{
|
|
65
|
+
valid: boolean;
|
|
66
|
+
errors: string[];
|
|
67
|
+
}>;
|
|
68
|
+
//# sourceMappingURL=source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/core/source.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,MAAM,WAAW,UAAU;IACzB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wBAAwB;IACxB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAcD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,GAAE,MAA2B,GACtC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,UAAU,GAAE,MAA2B,EACvC,MAAM,GAAE,MAAuB,GAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,GAAE,MAA2B,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWjG;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAOzD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAuDrF;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAoDnF;AAiED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAmClF;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACtE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC,CAqBD"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source Download Module
|
|
3
|
+
*
|
|
4
|
+
* Downloads Authrim source code from GitHub for deployment.
|
|
5
|
+
* Supports both degit (shallow clone) and tar.gz (release artifact) methods.
|
|
6
|
+
*/
|
|
7
|
+
import { execa } from 'execa';
|
|
8
|
+
import { existsSync } from 'node:fs';
|
|
9
|
+
import { mkdir, rm, rename, readdir } from 'node:fs/promises';
|
|
10
|
+
import { join, dirname } from 'node:path';
|
|
11
|
+
import { pipeline } from 'node:stream/promises';
|
|
12
|
+
import { createGunzip } from 'node:zlib';
|
|
13
|
+
import { extract } from 'tar';
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// Constants
|
|
16
|
+
// =============================================================================
|
|
17
|
+
const DEFAULT_REPOSITORY = 'sgrastar/authrim';
|
|
18
|
+
const DEFAULT_BRANCH = 'main';
|
|
19
|
+
const GITHUB_API_BASE = 'https://api.github.com';
|
|
20
|
+
// =============================================================================
|
|
21
|
+
// GitHub API Helpers
|
|
22
|
+
// =============================================================================
|
|
23
|
+
/**
|
|
24
|
+
* Get the latest release tag from GitHub
|
|
25
|
+
*/
|
|
26
|
+
export async function getLatestRelease(repository = DEFAULT_REPOSITORY) {
|
|
27
|
+
try {
|
|
28
|
+
const response = await fetch(`${GITHUB_API_BASE}/repos/${repository}/releases/latest`);
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const data = (await response.json());
|
|
33
|
+
return data.tag_name || null;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get commit hash for a given ref
|
|
41
|
+
*/
|
|
42
|
+
export async function getCommitHash(repository = DEFAULT_REPOSITORY, gitRef = DEFAULT_BRANCH) {
|
|
43
|
+
try {
|
|
44
|
+
const response = await fetch(`${GITHUB_API_BASE}/repos/${repository}/commits/${gitRef}`);
|
|
45
|
+
if (!response.ok) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
const data = (await response.json());
|
|
49
|
+
return data.sha || null;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get available tags from GitHub
|
|
57
|
+
*/
|
|
58
|
+
export async function getAvailableTags(repository = DEFAULT_REPOSITORY) {
|
|
59
|
+
try {
|
|
60
|
+
const response = await fetch(`${GITHUB_API_BASE}/repos/${repository}/tags`);
|
|
61
|
+
if (!response.ok) {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
const data = (await response.json());
|
|
65
|
+
return data.map((tag) => tag.name);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// =============================================================================
|
|
72
|
+
// Download Methods
|
|
73
|
+
// =============================================================================
|
|
74
|
+
/**
|
|
75
|
+
* Check if degit is available
|
|
76
|
+
*/
|
|
77
|
+
export async function isDegitAvailable() {
|
|
78
|
+
try {
|
|
79
|
+
await execa('npx', ['degit', '--help']);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Download source using degit (shallow clone)
|
|
88
|
+
*/
|
|
89
|
+
export async function downloadWithDegit(options) {
|
|
90
|
+
const { targetDir, repository = DEFAULT_REPOSITORY, gitRef = DEFAULT_BRANCH, force = false, onProgress, } = options;
|
|
91
|
+
// Validate inputs to prevent command injection
|
|
92
|
+
if (!/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_-]+$/.test(repository)) {
|
|
93
|
+
throw new Error('Invalid repository format. Expected: owner/repo');
|
|
94
|
+
}
|
|
95
|
+
if (!/^[a-zA-Z0-9._/-]+$/.test(gitRef)) {
|
|
96
|
+
throw new Error('Invalid git ref format');
|
|
97
|
+
}
|
|
98
|
+
// Check if target directory exists
|
|
99
|
+
if (existsSync(targetDir)) {
|
|
100
|
+
if (!force) {
|
|
101
|
+
throw new Error(`Target directory already exists: ${targetDir}`);
|
|
102
|
+
}
|
|
103
|
+
onProgress?.('Removing existing directory...');
|
|
104
|
+
await rm(targetDir, { recursive: true });
|
|
105
|
+
}
|
|
106
|
+
// Ensure parent directory exists
|
|
107
|
+
const parentDir = dirname(targetDir);
|
|
108
|
+
if (!existsSync(parentDir)) {
|
|
109
|
+
await mkdir(parentDir, { recursive: true });
|
|
110
|
+
}
|
|
111
|
+
onProgress?.(`Downloading ${repository}#${gitRef} using degit...`);
|
|
112
|
+
try {
|
|
113
|
+
// Use degit to clone the repository
|
|
114
|
+
const source = gitRef ? `${repository}#${gitRef}` : repository;
|
|
115
|
+
await execa('npx', ['degit', source, targetDir], {
|
|
116
|
+
timeout: 120000, // 2 minute timeout
|
|
117
|
+
});
|
|
118
|
+
// Get commit hash
|
|
119
|
+
const commitHash = await getCommitHash(repository, gitRef);
|
|
120
|
+
onProgress?.('Download completed successfully');
|
|
121
|
+
return {
|
|
122
|
+
repository,
|
|
123
|
+
gitRef,
|
|
124
|
+
commitHash: commitHash || undefined,
|
|
125
|
+
method: 'degit',
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
throw new Error(`Failed to download source with degit: ${error}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Download source as tarball from GitHub
|
|
134
|
+
*/
|
|
135
|
+
export async function downloadTarball(options) {
|
|
136
|
+
const { targetDir, repository = DEFAULT_REPOSITORY, gitRef = DEFAULT_BRANCH, force = false, onProgress, } = options;
|
|
137
|
+
// Validate inputs
|
|
138
|
+
if (!/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_-]+$/.test(repository)) {
|
|
139
|
+
throw new Error('Invalid repository format. Expected: owner/repo');
|
|
140
|
+
}
|
|
141
|
+
if (!/^[a-zA-Z0-9._/-]+$/.test(gitRef)) {
|
|
142
|
+
throw new Error('Invalid git ref format');
|
|
143
|
+
}
|
|
144
|
+
// Check if target directory exists
|
|
145
|
+
if (existsSync(targetDir)) {
|
|
146
|
+
if (!force) {
|
|
147
|
+
throw new Error(`Target directory already exists: ${targetDir}`);
|
|
148
|
+
}
|
|
149
|
+
onProgress?.('Removing existing directory...');
|
|
150
|
+
await rm(targetDir, { recursive: true });
|
|
151
|
+
}
|
|
152
|
+
const parentDir = dirname(targetDir);
|
|
153
|
+
if (!existsSync(parentDir)) {
|
|
154
|
+
await mkdir(parentDir, { recursive: true });
|
|
155
|
+
}
|
|
156
|
+
// Download tarball
|
|
157
|
+
const tarballUrl = `https://github.com/${repository}/archive/refs/heads/${gitRef}.tar.gz`;
|
|
158
|
+
onProgress?.(`Downloading tarball from ${tarballUrl}...`);
|
|
159
|
+
try {
|
|
160
|
+
const response = await fetch(tarballUrl);
|
|
161
|
+
if (!response.ok) {
|
|
162
|
+
// Try as a tag instead
|
|
163
|
+
const tagUrl = `https://github.com/${repository}/archive/refs/tags/${gitRef}.tar.gz`;
|
|
164
|
+
const tagResponse = await fetch(tagUrl);
|
|
165
|
+
if (!tagResponse.ok) {
|
|
166
|
+
throw new Error(`Failed to download: ${response.status} ${response.statusText}`);
|
|
167
|
+
}
|
|
168
|
+
// Continue with tag response
|
|
169
|
+
return await extractTarball(tagResponse, targetDir, repository, gitRef, onProgress);
|
|
170
|
+
}
|
|
171
|
+
return await extractTarball(response, targetDir, repository, gitRef, onProgress);
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
throw new Error(`Failed to download tarball: ${error}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Extract tarball response to target directory
|
|
179
|
+
*/
|
|
180
|
+
async function extractTarball(response, targetDir, repository, gitRef, onProgress) {
|
|
181
|
+
const tempDir = join(dirname(targetDir), `.tmp-${Date.now()}`);
|
|
182
|
+
await mkdir(tempDir, { recursive: true });
|
|
183
|
+
try {
|
|
184
|
+
onProgress?.('Extracting tarball...');
|
|
185
|
+
// Extract to temp directory
|
|
186
|
+
const body = response.body;
|
|
187
|
+
if (!body) {
|
|
188
|
+
throw new Error('Empty response body');
|
|
189
|
+
}
|
|
190
|
+
// Use tar to extract
|
|
191
|
+
// Convert web ReadableStream to Node.js Readable
|
|
192
|
+
const { Readable } = await import('node:stream');
|
|
193
|
+
const nodeReadable = Readable.fromWeb(body);
|
|
194
|
+
await pipeline(nodeReadable, createGunzip(), extract({ cwd: tempDir }));
|
|
195
|
+
// Find the extracted directory (GitHub archives have a single root directory)
|
|
196
|
+
const entries = await readdir(tempDir);
|
|
197
|
+
if (entries.length !== 1) {
|
|
198
|
+
throw new Error('Unexpected tarball structure');
|
|
199
|
+
}
|
|
200
|
+
const extractedDir = join(tempDir, entries[0]);
|
|
201
|
+
// Move to target directory
|
|
202
|
+
await rename(extractedDir, targetDir);
|
|
203
|
+
// Get commit hash
|
|
204
|
+
const commitHash = await getCommitHash(repository, gitRef);
|
|
205
|
+
onProgress?.('Extraction completed successfully');
|
|
206
|
+
return {
|
|
207
|
+
repository,
|
|
208
|
+
gitRef,
|
|
209
|
+
commitHash: commitHash || undefined,
|
|
210
|
+
method: 'tarball',
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
finally {
|
|
214
|
+
// Clean up temp directory
|
|
215
|
+
if (existsSync(tempDir)) {
|
|
216
|
+
await rm(tempDir, { recursive: true }).catch(() => { });
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// =============================================================================
|
|
221
|
+
// Main Download Function
|
|
222
|
+
// =============================================================================
|
|
223
|
+
/**
|
|
224
|
+
* Download Authrim source code
|
|
225
|
+
*
|
|
226
|
+
* Attempts to use degit first, falls back to tarball download if degit is unavailable.
|
|
227
|
+
*/
|
|
228
|
+
export async function downloadSource(options) {
|
|
229
|
+
const { onProgress } = options;
|
|
230
|
+
// Determine git ref (use latest release if not specified)
|
|
231
|
+
let gitRef = options.gitRef || '';
|
|
232
|
+
if (!gitRef) {
|
|
233
|
+
onProgress?.('Checking for latest release...');
|
|
234
|
+
const latestRelease = await getLatestRelease(options.repository);
|
|
235
|
+
if (!latestRelease) {
|
|
236
|
+
gitRef = DEFAULT_BRANCH;
|
|
237
|
+
onProgress?.(`No release found, using ${gitRef}`);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
gitRef = latestRelease;
|
|
241
|
+
onProgress?.(`Found latest release: ${gitRef}`);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
const optionsWithRef = { ...options, gitRef };
|
|
245
|
+
// Try degit first (faster, simpler)
|
|
246
|
+
onProgress?.('Checking degit availability...');
|
|
247
|
+
const degitAvailable = await isDegitAvailable();
|
|
248
|
+
if (degitAvailable) {
|
|
249
|
+
try {
|
|
250
|
+
return await downloadWithDegit(optionsWithRef);
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
onProgress?.(`degit failed, falling back to tarball: ${error}`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
onProgress?.('degit not available, using tarball download');
|
|
258
|
+
}
|
|
259
|
+
// Fall back to tarball
|
|
260
|
+
return await downloadTarball(optionsWithRef);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Verify downloaded source contains expected structure
|
|
264
|
+
*/
|
|
265
|
+
export async function verifySourceStructure(sourceDir) {
|
|
266
|
+
const errors = [];
|
|
267
|
+
const requiredPaths = [
|
|
268
|
+
'packages/ar-auth',
|
|
269
|
+
'packages/ar-token',
|
|
270
|
+
'packages/ar-lib-core',
|
|
271
|
+
'packages/ar-discovery',
|
|
272
|
+
'package.json',
|
|
273
|
+
];
|
|
274
|
+
for (const path of requiredPaths) {
|
|
275
|
+
const fullPath = join(sourceDir, path);
|
|
276
|
+
if (!existsSync(fullPath)) {
|
|
277
|
+
errors.push(`Missing required path: ${path}`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return {
|
|
281
|
+
valid: errors.length === 0,
|
|
282
|
+
errors,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/core/source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wrangler Configuration Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates wrangler.toml files for each component based on environment
|
|
5
|
+
* configuration and resource IDs from authrim-lock.json.
|
|
6
|
+
*/
|
|
7
|
+
import type { AuthrimConfig } from './config.js';
|
|
8
|
+
import { type WorkerComponent } from './naming.js';
|
|
9
|
+
export interface ResourceIds {
|
|
10
|
+
d1: Record<string, {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
}>;
|
|
14
|
+
kv: Record<string, {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
}>;
|
|
18
|
+
queues?: Record<string, {
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
}>;
|
|
22
|
+
r2?: Record<string, {
|
|
23
|
+
name: string;
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
export interface WranglerConfig {
|
|
27
|
+
name: string;
|
|
28
|
+
main: string;
|
|
29
|
+
compatibility_date: string;
|
|
30
|
+
compatibility_flags: string[];
|
|
31
|
+
workers_dev: boolean;
|
|
32
|
+
placement?: {
|
|
33
|
+
mode: string;
|
|
34
|
+
};
|
|
35
|
+
kv_namespaces?: Array<{
|
|
36
|
+
binding: string;
|
|
37
|
+
id: string;
|
|
38
|
+
preview_id?: string;
|
|
39
|
+
}>;
|
|
40
|
+
d1_databases?: Array<{
|
|
41
|
+
binding: string;
|
|
42
|
+
database_name: string;
|
|
43
|
+
database_id: string;
|
|
44
|
+
}>;
|
|
45
|
+
r2_buckets?: Array<{
|
|
46
|
+
binding: string;
|
|
47
|
+
bucket_name: string;
|
|
48
|
+
}>;
|
|
49
|
+
durable_objects?: {
|
|
50
|
+
bindings: Array<{
|
|
51
|
+
name: string;
|
|
52
|
+
class_name: string;
|
|
53
|
+
script_name?: string;
|
|
54
|
+
}>;
|
|
55
|
+
};
|
|
56
|
+
migrations?: Array<{
|
|
57
|
+
tag: string;
|
|
58
|
+
new_sqlite_classes?: string[];
|
|
59
|
+
}>;
|
|
60
|
+
vars: Record<string, string>;
|
|
61
|
+
routes?: Array<{
|
|
62
|
+
pattern: string;
|
|
63
|
+
zone_name: string;
|
|
64
|
+
}>;
|
|
65
|
+
queues?: {
|
|
66
|
+
producers?: Array<{
|
|
67
|
+
queue: string;
|
|
68
|
+
binding: string;
|
|
69
|
+
}>;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Generate wrangler.toml configuration for a component
|
|
74
|
+
*/
|
|
75
|
+
export declare function generateWranglerConfig(component: WorkerComponent, config: AuthrimConfig, resourceIds: ResourceIds): WranglerConfig;
|
|
76
|
+
/**
|
|
77
|
+
* Convert WranglerConfig to TOML string
|
|
78
|
+
*/
|
|
79
|
+
export declare function toToml(config: WranglerConfig): string;
|
|
80
|
+
/**
|
|
81
|
+
* Generate route configurations for custom domains
|
|
82
|
+
*/
|
|
83
|
+
export declare function generateRoutes(component: WorkerComponent, domain: string, zoneName: string): Array<{
|
|
84
|
+
pattern: string;
|
|
85
|
+
zone_name: string;
|
|
86
|
+
}>;
|
|
87
|
+
//# sourceMappingURL=wrangler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrangler.d.ts","sourceRoot":"","sources":["../../src/core/wrangler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAML,KAAK,eAAe,EAErB,MAAM,aAAa,CAAC;AAMrB,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,eAAe,CAAC,EAAE;QAChB,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC7E,CAAC;IACF,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACnE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACvD,CAAC;CACH;AAqFD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,WAAW,GACvB,cAAc,CA8FhB;AAuGD;;GAEG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA2HrD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA8C/C"}
|