@package-broker/cloudflare 0.10.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/README.md +95 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +784 -0
- package/dist/index.js.map +1 -0
- package/dist/paths.d.ts +14 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +80 -0
- package/dist/paths.js.map +1 -0
- package/dist/template.d.ts +18 -0
- package/dist/template.d.ts.map +1 -0
- package/dist/template.js +114 -0
- package/dist/template.js.map +1 -0
- package/dist/wrangler-config.d.ts +120 -0
- package/dist/wrangler-config.d.ts.map +1 -0
- package/dist/wrangler-config.js +295 -0
- package/dist/wrangler-config.js.map +1 -0
- package/dist/wrangler.d.ts +90 -0
- package/dist/wrangler.d.ts.map +1 -0
- package/dist/wrangler.js +470 -0
- package/dist/wrangler.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/*
|
|
3
|
+
* PACKAGE.broker - Cloudflare CLI - Wrangler Config Parser
|
|
4
|
+
* Copyright (C) 2025 Łukasz Bajsarowicz
|
|
5
|
+
* Licensed under AGPL-3.0
|
|
6
|
+
*/
|
|
7
|
+
import { readFileSync, existsSync } from 'fs';
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
import TOML from '@iarna/toml';
|
|
10
|
+
/**
|
|
11
|
+
* Check if a wrangler.toml file exists at the given path
|
|
12
|
+
*/
|
|
13
|
+
export function wranglerTomlExists(targetDir) {
|
|
14
|
+
const wranglerPath = join(targetDir, 'wrangler.toml');
|
|
15
|
+
return existsSync(wranglerPath);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Parse a wrangler.toml file and extract configuration
|
|
19
|
+
*/
|
|
20
|
+
export function parseWranglerToml(targetDir) {
|
|
21
|
+
const wranglerPath = join(targetDir, 'wrangler.toml');
|
|
22
|
+
if (!existsSync(wranglerPath)) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const content = readFileSync(wranglerPath, 'utf-8');
|
|
27
|
+
const parsed = TOML.parse(content);
|
|
28
|
+
const config = {
|
|
29
|
+
name: parsed.name,
|
|
30
|
+
main: parsed.main,
|
|
31
|
+
compatibility_date: parsed.compatibility_date,
|
|
32
|
+
compatibility_flags: parsed.compatibility_flags,
|
|
33
|
+
_raw: content,
|
|
34
|
+
};
|
|
35
|
+
// Parse D1 databases
|
|
36
|
+
if (Array.isArray(parsed.d1_databases)) {
|
|
37
|
+
config.d1_databases = parsed.d1_databases.map((db) => ({
|
|
38
|
+
binding: db.binding,
|
|
39
|
+
database_name: db.database_name,
|
|
40
|
+
database_id: db.database_id,
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
// Parse KV namespaces
|
|
44
|
+
if (Array.isArray(parsed.kv_namespaces)) {
|
|
45
|
+
config.kv_namespaces = parsed.kv_namespaces.map((kv) => ({
|
|
46
|
+
binding: kv.binding,
|
|
47
|
+
id: kv.id,
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
// Parse R2 buckets
|
|
51
|
+
if (Array.isArray(parsed.r2_buckets)) {
|
|
52
|
+
config.r2_buckets = parsed.r2_buckets.map((bucket) => ({
|
|
53
|
+
binding: bucket.binding,
|
|
54
|
+
bucket_name: bucket.bucket_name,
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
// Parse queues
|
|
58
|
+
const queues = parsed.queues;
|
|
59
|
+
if (queues) {
|
|
60
|
+
config.queues = {};
|
|
61
|
+
if (Array.isArray(queues.producers)) {
|
|
62
|
+
config.queues.producers = queues.producers.map((p) => ({
|
|
63
|
+
binding: p.binding,
|
|
64
|
+
queue: p.queue,
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
if (Array.isArray(queues.consumers)) {
|
|
68
|
+
config.queues.consumers = queues.consumers.map((c) => ({
|
|
69
|
+
queue: c.queue,
|
|
70
|
+
max_batch_size: c.max_batch_size,
|
|
71
|
+
max_batch_timeout: c.max_batch_timeout,
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Parse routes
|
|
76
|
+
if (Array.isArray(parsed.routes)) {
|
|
77
|
+
config.routes = parsed.routes.map((r) => ({
|
|
78
|
+
pattern: r.pattern,
|
|
79
|
+
zone_name: r.zone_name,
|
|
80
|
+
zone_id: r.zone_id,
|
|
81
|
+
custom_domain: r.custom_domain,
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
if (typeof parsed.route === 'string') {
|
|
85
|
+
config.route = parsed.route;
|
|
86
|
+
}
|
|
87
|
+
// Parse assets
|
|
88
|
+
const assets = parsed.assets;
|
|
89
|
+
if (assets) {
|
|
90
|
+
config.assets = {
|
|
91
|
+
directory: assets.directory,
|
|
92
|
+
binding: assets.binding,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// Parse vars
|
|
96
|
+
const vars = parsed.vars;
|
|
97
|
+
if (vars) {
|
|
98
|
+
config.vars = {};
|
|
99
|
+
for (const [key, value] of Object.entries(vars)) {
|
|
100
|
+
if (typeof value === 'string') {
|
|
101
|
+
config.vars[key] = value;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return config;
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
// Failed to parse, return null
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Extract resource IDs from a parsed wrangler.toml config
|
|
114
|
+
*/
|
|
115
|
+
export function extractResourceIds(config) {
|
|
116
|
+
const resources = {};
|
|
117
|
+
// Extract D1 database ID (use the first one with binding "DB")
|
|
118
|
+
const dbBinding = config.d1_databases?.find(db => db.binding === 'DB');
|
|
119
|
+
if (dbBinding) {
|
|
120
|
+
if (dbBinding.database_id && !dbBinding.database_id.includes('REPLACE')) {
|
|
121
|
+
resources.database_id = dbBinding.database_id;
|
|
122
|
+
}
|
|
123
|
+
if (dbBinding.database_name) {
|
|
124
|
+
resources.database_name = dbBinding.database_name;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Extract KV namespace ID (use the first one with binding "KV")
|
|
128
|
+
const kvBinding = config.kv_namespaces?.find(kv => kv.binding === 'KV');
|
|
129
|
+
if (kvBinding?.id && !kvBinding.id.includes('REPLACE')) {
|
|
130
|
+
resources.kv_namespace_id = kvBinding.id;
|
|
131
|
+
}
|
|
132
|
+
// Extract R2 bucket name (use the first one with binding "R2_BUCKET")
|
|
133
|
+
const r2Binding = config.r2_buckets?.find(r2 => r2.binding === 'R2_BUCKET');
|
|
134
|
+
if (r2Binding?.bucket_name) {
|
|
135
|
+
resources.r2_bucket_name = r2Binding.bucket_name;
|
|
136
|
+
}
|
|
137
|
+
// Extract queue name (use the first producer with binding "QUEUE")
|
|
138
|
+
const queueProducer = config.queues?.producers?.find(q => q.binding === 'QUEUE');
|
|
139
|
+
if (queueProducer?.queue) {
|
|
140
|
+
resources.queue_name = queueProducer.queue;
|
|
141
|
+
}
|
|
142
|
+
return resources;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Check which resources are missing from a parsed config
|
|
146
|
+
*/
|
|
147
|
+
export function findMissingResources(config, workerName, paidTier) {
|
|
148
|
+
const existingResources = config ? extractResourceIds(config) : {};
|
|
149
|
+
return {
|
|
150
|
+
needsDatabase: !existingResources.database_id,
|
|
151
|
+
needsKV: !existingResources.kv_namespace_id,
|
|
152
|
+
needsR2: !existingResources.r2_bucket_name,
|
|
153
|
+
needsQueue: paidTier && !existingResources.queue_name,
|
|
154
|
+
existingResources,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Generate TOML content for resource bindings
|
|
159
|
+
*/
|
|
160
|
+
function generateResourceBindings(workerName, resources, paidTier) {
|
|
161
|
+
const lines = [];
|
|
162
|
+
// D1 Database
|
|
163
|
+
lines.push('# D1 Database');
|
|
164
|
+
lines.push('[[d1_databases]]');
|
|
165
|
+
lines.push('binding = "DB"');
|
|
166
|
+
lines.push(`database_name = "${resources.database_name || `${workerName}-db`}"`);
|
|
167
|
+
lines.push(`database_id = "${resources.database_id || 'REPLACE_WITH_YOUR_DATABASE_ID'}"`);
|
|
168
|
+
lines.push('');
|
|
169
|
+
// KV Namespace
|
|
170
|
+
lines.push('# KV Namespace for caching');
|
|
171
|
+
lines.push('[[kv_namespaces]]');
|
|
172
|
+
lines.push('binding = "KV"');
|
|
173
|
+
lines.push(`id = "${resources.kv_namespace_id || 'REPLACE_WITH_YOUR_KV_NAMESPACE_ID'}"`);
|
|
174
|
+
lines.push('');
|
|
175
|
+
// R2 Bucket
|
|
176
|
+
lines.push('# R2 Bucket for artifacts');
|
|
177
|
+
lines.push('[[r2_buckets]]');
|
|
178
|
+
lines.push('binding = "R2_BUCKET"');
|
|
179
|
+
lines.push(`bucket_name = "${resources.r2_bucket_name || `${workerName}-artifacts`}"`);
|
|
180
|
+
lines.push('');
|
|
181
|
+
// Queue (paid tier only)
|
|
182
|
+
if (paidTier && resources.queue_name) {
|
|
183
|
+
lines.push('# Queue for async operations');
|
|
184
|
+
lines.push('[[queues.producers]]');
|
|
185
|
+
lines.push('binding = "QUEUE"');
|
|
186
|
+
lines.push(`queue = "${resources.queue_name}"`);
|
|
187
|
+
lines.push('');
|
|
188
|
+
lines.push('[[queues.consumers]]');
|
|
189
|
+
lines.push(`queue = "${resources.queue_name}"`);
|
|
190
|
+
lines.push('max_batch_size = 10');
|
|
191
|
+
lines.push('max_batch_timeout = 30');
|
|
192
|
+
lines.push('');
|
|
193
|
+
}
|
|
194
|
+
else if (!paidTier) {
|
|
195
|
+
lines.push('# Queue for async operations (requires Workers Paid plan)');
|
|
196
|
+
lines.push('# Uncomment the following lines if you\'re on the paid tier:');
|
|
197
|
+
lines.push('# [[queues.producers]]');
|
|
198
|
+
lines.push('# binding = "QUEUE"');
|
|
199
|
+
lines.push(`# queue = "${workerName}-queue"`);
|
|
200
|
+
lines.push('#');
|
|
201
|
+
lines.push('# [[queues.consumers]]');
|
|
202
|
+
lines.push(`# queue = "${workerName}-queue"`);
|
|
203
|
+
lines.push('# max_batch_size = 10');
|
|
204
|
+
lines.push('# max_batch_timeout = 30');
|
|
205
|
+
lines.push('');
|
|
206
|
+
}
|
|
207
|
+
return lines.join('\n');
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Generate a complete wrangler.toml configuration
|
|
211
|
+
*/
|
|
212
|
+
export function generateWranglerToml(workerName, resources, options) {
|
|
213
|
+
const lines = [];
|
|
214
|
+
// Header
|
|
215
|
+
lines.push(`name = "${workerName}"`);
|
|
216
|
+
lines.push(`main = "${options.mainPath || 'node_modules/@package-broker/main/dist/index.js'}"`);
|
|
217
|
+
lines.push('compatibility_date = "2024-09-23"');
|
|
218
|
+
lines.push('compatibility_flags = ["nodejs_compat"]');
|
|
219
|
+
lines.push('');
|
|
220
|
+
// Assets configuration
|
|
221
|
+
if (options.uiAssetsPath) {
|
|
222
|
+
lines.push('# Static Assets (UI)');
|
|
223
|
+
lines.push('[assets]');
|
|
224
|
+
lines.push(`directory = "${options.uiAssetsPath}"`);
|
|
225
|
+
lines.push('binding = "ASSETS"');
|
|
226
|
+
lines.push('');
|
|
227
|
+
}
|
|
228
|
+
// Variables section
|
|
229
|
+
lines.push('[vars]');
|
|
230
|
+
lines.push('# ENCRYPTION_KEY is set as a Cloudflare secret, not in this file');
|
|
231
|
+
lines.push('# It was automatically set during initialization via: wrangler secret put ENCRYPTION_KEY');
|
|
232
|
+
lines.push('# To update it manually, use: wrangler secret put ENCRYPTION_KEY');
|
|
233
|
+
lines.push('# Or set it via Cloudflare dashboard: Workers & Pages → Settings → Variables and Secrets');
|
|
234
|
+
lines.push('');
|
|
235
|
+
// Resource bindings
|
|
236
|
+
lines.push(generateResourceBindings(workerName, resources, options.paidTier));
|
|
237
|
+
// Custom domain routes
|
|
238
|
+
if (options.domain) {
|
|
239
|
+
lines.push('# Custom domain route');
|
|
240
|
+
lines.push('[[routes]]');
|
|
241
|
+
lines.push(`pattern = "${options.domain}/*"`);
|
|
242
|
+
lines.push('custom_domain = true');
|
|
243
|
+
lines.push('');
|
|
244
|
+
}
|
|
245
|
+
return lines.join('\n');
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Merge new resource IDs into an existing wrangler.toml content
|
|
249
|
+
*/
|
|
250
|
+
export function mergeResourcesIntoConfig(existingContent, resources, workerName, options) {
|
|
251
|
+
let content = existingContent;
|
|
252
|
+
// Update database_id if provided
|
|
253
|
+
if (resources.database_id) {
|
|
254
|
+
content = content.replace(/database_id\s*=\s*["']?[^"'\n]*["']?/g, `database_id = "${resources.database_id}"`);
|
|
255
|
+
}
|
|
256
|
+
// Update KV namespace id if provided
|
|
257
|
+
if (resources.kv_namespace_id) {
|
|
258
|
+
// Find [[kv_namespaces]] section and update the id
|
|
259
|
+
content = content.replace(/(\[\[kv_namespaces\]\][^\[]*?)id\s*=\s*["'][^"']*["']/, `$1id = "${resources.kv_namespace_id}"`);
|
|
260
|
+
}
|
|
261
|
+
// Update R2 bucket name if provided
|
|
262
|
+
if (resources.r2_bucket_name) {
|
|
263
|
+
content = content.replace(/(\[\[r2_buckets\]\][^\[]*?)bucket_name\s*=\s*["'][^"']*["']/, `$1bucket_name = "${resources.r2_bucket_name}"`);
|
|
264
|
+
}
|
|
265
|
+
// Add queue configuration if paid tier and queue exists but not in config
|
|
266
|
+
if (options.paidTier && resources.queue_name) {
|
|
267
|
+
if (!content.includes('[[queues.producers]]') || content.includes('# [[queues.producers]]')) {
|
|
268
|
+
// Remove commented queue section and add active one
|
|
269
|
+
content = content.replace(/# Queue for async operations.*?# max_batch_timeout = \d+/s, `# Queue for async operations
|
|
270
|
+
[[queues.producers]]
|
|
271
|
+
binding = "QUEUE"
|
|
272
|
+
queue = "${resources.queue_name}"
|
|
273
|
+
|
|
274
|
+
[[queues.consumers]]
|
|
275
|
+
queue = "${resources.queue_name}"
|
|
276
|
+
max_batch_size = 10
|
|
277
|
+
max_batch_timeout = 30`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
// Add custom domain route if provided and not already present
|
|
281
|
+
if (options.domain && !content.includes(`pattern = "${options.domain}`)) {
|
|
282
|
+
// Check if routes section exists
|
|
283
|
+
if (!content.includes('[[routes]]')) {
|
|
284
|
+
content = content.trimEnd() + `
|
|
285
|
+
|
|
286
|
+
# Custom domain route
|
|
287
|
+
[[routes]]
|
|
288
|
+
pattern = "${options.domain}/*"
|
|
289
|
+
custom_domain = true
|
|
290
|
+
`;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return content;
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=wrangler-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrangler-config.js","sourceRoot":"","sources":["../src/wrangler-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export interface D1Database {
|
|
3
|
+
database_id: string;
|
|
4
|
+
database_name: string;
|
|
5
|
+
}
|
|
6
|
+
export interface KVNamespace {
|
|
7
|
+
id: string;
|
|
8
|
+
title: string;
|
|
9
|
+
}
|
|
10
|
+
export interface R2Bucket {
|
|
11
|
+
name: string;
|
|
12
|
+
}
|
|
13
|
+
export interface Queue {
|
|
14
|
+
name: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Common options for wrangler commands
|
|
18
|
+
*/
|
|
19
|
+
export interface WranglerOptions {
|
|
20
|
+
cwd?: string;
|
|
21
|
+
apiToken?: string;
|
|
22
|
+
accountId?: string;
|
|
23
|
+
configPath?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if user is authenticated with wrangler
|
|
27
|
+
* Supports both interactive (wrangler login) and CI (API token) authentication
|
|
28
|
+
*/
|
|
29
|
+
export declare function checkAuth(options?: WranglerOptions): Promise<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Verify that the API token has required permissions
|
|
32
|
+
* Checks by attempting to list resources
|
|
33
|
+
*/
|
|
34
|
+
export declare function verifyTokenPermissions(options?: WranglerOptions & {
|
|
35
|
+
paidTier?: boolean;
|
|
36
|
+
}): Promise<{
|
|
37
|
+
valid: boolean;
|
|
38
|
+
errors: string[];
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* Create a D1 database and return its ID
|
|
42
|
+
*/
|
|
43
|
+
export declare function createD1Database(name: string, options?: WranglerOptions): Promise<string>;
|
|
44
|
+
/**
|
|
45
|
+
* List existing D1 databases and find by name
|
|
46
|
+
*/
|
|
47
|
+
export declare function findD1Database(name: string, options?: WranglerOptions): Promise<string | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Create a KV namespace and return its ID
|
|
50
|
+
*/
|
|
51
|
+
export declare function createKVNamespace(name: string, options?: WranglerOptions): Promise<string>;
|
|
52
|
+
/**
|
|
53
|
+
* List existing KV namespaces and find by title
|
|
54
|
+
*/
|
|
55
|
+
export declare function findKVNamespace(title: string, options?: WranglerOptions): Promise<string | null>;
|
|
56
|
+
/**
|
|
57
|
+
* Create an R2 bucket
|
|
58
|
+
*/
|
|
59
|
+
export declare function createR2Bucket(name: string, options?: WranglerOptions): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Check if R2 bucket exists
|
|
62
|
+
*/
|
|
63
|
+
export declare function findR2Bucket(name: string, options?: WranglerOptions): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Create a Queue
|
|
66
|
+
*/
|
|
67
|
+
export declare function createQueue(name: string, options?: WranglerOptions): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Check if Queue exists
|
|
70
|
+
*/
|
|
71
|
+
export declare function findQueue(name: string, options?: WranglerOptions): Promise<boolean>;
|
|
72
|
+
/**
|
|
73
|
+
* Set a Cloudflare Worker secret
|
|
74
|
+
*/
|
|
75
|
+
export declare function setSecret(secretName: string, secretValue: string, options?: WranglerOptions & {
|
|
76
|
+
workerName?: string;
|
|
77
|
+
}): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Apply D1 migrations
|
|
80
|
+
*/
|
|
81
|
+
export declare function applyMigrations(databaseName: string, migrationsDir: string, options?: WranglerOptions & {
|
|
82
|
+
remote?: boolean;
|
|
83
|
+
}): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Deploy a Worker
|
|
86
|
+
*/
|
|
87
|
+
export declare function deployWorker(options?: WranglerOptions & {
|
|
88
|
+
workerName?: string;
|
|
89
|
+
}): Promise<string>;
|
|
90
|
+
//# sourceMappingURL=wrangler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrangler.d.ts","sourceRoot":"","sources":["../src/wrangler.ts"],"names":[],"mappings":"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"}
|