@positronic/cloudflare 0.0.26 → 0.0.27
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/src/api.js +135 -81
- package/dist/src/dev-server.js +113 -2
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/dev-server.d.ts +1 -0
- package/dist/types/dev-server.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/src/api.js
CHANGED
|
@@ -968,7 +968,7 @@ app.get('/brains/:identifier', function(context) {
|
|
|
968
968
|
});
|
|
969
969
|
app.get('/resources', function(context) {
|
|
970
970
|
return _async_to_generator(function() {
|
|
971
|
-
var bucket, listed, resources, error, errorMessage;
|
|
971
|
+
var bucket, listed, resources, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, object, _r2Object_customMetadata, r2Object, err, error, errorMessage;
|
|
972
972
|
return _ts_generator(this, function(_state) {
|
|
973
973
|
switch(_state.label){
|
|
974
974
|
case 0:
|
|
@@ -977,9 +977,9 @@ app.get('/resources', function(context) {
|
|
|
977
977
|
case 1:
|
|
978
978
|
_state.trys.push([
|
|
979
979
|
1,
|
|
980
|
-
|
|
980
|
+
11,
|
|
981
981
|
,
|
|
982
|
-
|
|
982
|
+
12
|
|
983
983
|
]);
|
|
984
984
|
return [
|
|
985
985
|
4,
|
|
@@ -987,47 +987,81 @@ app.get('/resources', function(context) {
|
|
|
987
987
|
];
|
|
988
988
|
case 2:
|
|
989
989
|
listed = _state.sent();
|
|
990
|
+
resources = [];
|
|
991
|
+
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
992
|
+
_state.label = 3;
|
|
993
|
+
case 3:
|
|
994
|
+
_state.trys.push([
|
|
995
|
+
3,
|
|
996
|
+
8,
|
|
997
|
+
9,
|
|
998
|
+
10
|
|
999
|
+
]);
|
|
1000
|
+
_iterator = listed.objects[Symbol.iterator]();
|
|
1001
|
+
_state.label = 4;
|
|
1002
|
+
case 4:
|
|
1003
|
+
if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
|
|
1004
|
+
3,
|
|
1005
|
+
7
|
|
1006
|
+
];
|
|
1007
|
+
object = _step.value;
|
|
990
1008
|
return [
|
|
991
1009
|
4,
|
|
992
|
-
|
|
993
|
-
return _async_to_generator(function() {
|
|
994
|
-
var _r2Object_customMetadata, r2Object, resource;
|
|
995
|
-
return _ts_generator(this, function(_state) {
|
|
996
|
-
switch(_state.label){
|
|
997
|
-
case 0:
|
|
998
|
-
return [
|
|
999
|
-
4,
|
|
1000
|
-
bucket.head(object.key)
|
|
1001
|
-
];
|
|
1002
|
-
case 1:
|
|
1003
|
-
r2Object = _state.sent();
|
|
1004
|
-
if (!r2Object) {
|
|
1005
|
-
throw new Error('Resource "'.concat(object.key, '" not found'));
|
|
1006
|
-
}
|
|
1007
|
-
if (!((_r2Object_customMetadata = r2Object.customMetadata) === null || _r2Object_customMetadata === void 0 ? void 0 : _r2Object_customMetadata.type)) {
|
|
1008
|
-
throw new Error('Resource "'.concat(object.key, '" is missing required metadata field "type"'));
|
|
1009
|
-
}
|
|
1010
|
-
resource = _object_spread_props(_object_spread({
|
|
1011
|
-
type: r2Object.customMetadata.type
|
|
1012
|
-
}, r2Object.customMetadata.path && {
|
|
1013
|
-
path: r2Object.customMetadata.path
|
|
1014
|
-
}), {
|
|
1015
|
-
key: object.key,
|
|
1016
|
-
size: object.size,
|
|
1017
|
-
lastModified: object.uploaded.toISOString(),
|
|
1018
|
-
local: r2Object.customMetadata.local === 'true'
|
|
1019
|
-
});
|
|
1020
|
-
return [
|
|
1021
|
-
2,
|
|
1022
|
-
resource
|
|
1023
|
-
];
|
|
1024
|
-
}
|
|
1025
|
-
});
|
|
1026
|
-
})();
|
|
1027
|
-
}))
|
|
1010
|
+
bucket.head(object.key)
|
|
1028
1011
|
];
|
|
1029
|
-
case
|
|
1030
|
-
|
|
1012
|
+
case 5:
|
|
1013
|
+
r2Object = _state.sent();
|
|
1014
|
+
// Skip objects without type metadata (e.g., pages or other non-resource data)
|
|
1015
|
+
if (!r2Object || !((_r2Object_customMetadata = r2Object.customMetadata) === null || _r2Object_customMetadata === void 0 ? void 0 : _r2Object_customMetadata.type)) {
|
|
1016
|
+
return [
|
|
1017
|
+
3,
|
|
1018
|
+
6
|
|
1019
|
+
];
|
|
1020
|
+
}
|
|
1021
|
+
resources.push(_object_spread_props(_object_spread({
|
|
1022
|
+
type: r2Object.customMetadata.type
|
|
1023
|
+
}, r2Object.customMetadata.path && {
|
|
1024
|
+
path: r2Object.customMetadata.path
|
|
1025
|
+
}), {
|
|
1026
|
+
key: object.key,
|
|
1027
|
+
size: object.size,
|
|
1028
|
+
lastModified: object.uploaded.toISOString(),
|
|
1029
|
+
local: r2Object.customMetadata.local === 'true'
|
|
1030
|
+
}));
|
|
1031
|
+
_state.label = 6;
|
|
1032
|
+
case 6:
|
|
1033
|
+
_iteratorNormalCompletion = true;
|
|
1034
|
+
return [
|
|
1035
|
+
3,
|
|
1036
|
+
4
|
|
1037
|
+
];
|
|
1038
|
+
case 7:
|
|
1039
|
+
return [
|
|
1040
|
+
3,
|
|
1041
|
+
10
|
|
1042
|
+
];
|
|
1043
|
+
case 8:
|
|
1044
|
+
err = _state.sent();
|
|
1045
|
+
_didIteratorError = true;
|
|
1046
|
+
_iteratorError = err;
|
|
1047
|
+
return [
|
|
1048
|
+
3,
|
|
1049
|
+
10
|
|
1050
|
+
];
|
|
1051
|
+
case 9:
|
|
1052
|
+
try {
|
|
1053
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
1054
|
+
_iterator.return();
|
|
1055
|
+
}
|
|
1056
|
+
} finally{
|
|
1057
|
+
if (_didIteratorError) {
|
|
1058
|
+
throw _iteratorError;
|
|
1059
|
+
}
|
|
1060
|
+
}
|
|
1061
|
+
return [
|
|
1062
|
+
7
|
|
1063
|
+
];
|
|
1064
|
+
case 10:
|
|
1031
1065
|
return [
|
|
1032
1066
|
2,
|
|
1033
1067
|
context.json({
|
|
@@ -1036,7 +1070,7 @@ app.get('/resources', function(context) {
|
|
|
1036
1070
|
count: resources.length
|
|
1037
1071
|
})
|
|
1038
1072
|
];
|
|
1039
|
-
case
|
|
1073
|
+
case 11:
|
|
1040
1074
|
error = _state.sent();
|
|
1041
1075
|
errorMessage = _instanceof(error, Error) ? error.message : 'Unknown error occurred';
|
|
1042
1076
|
return [
|
|
@@ -1045,7 +1079,7 @@ app.get('/resources', function(context) {
|
|
|
1045
1079
|
error: errorMessage
|
|
1046
1080
|
}, 500)
|
|
1047
1081
|
];
|
|
1048
|
-
case
|
|
1082
|
+
case 12:
|
|
1049
1083
|
return [
|
|
1050
1084
|
2
|
|
1051
1085
|
];
|
|
@@ -1229,7 +1263,7 @@ app.delete('/resources/:key', function(context) {
|
|
|
1229
1263
|
// Delete all resources (bulk delete) - only available in development mode
|
|
1230
1264
|
app.delete('/resources', function(context) {
|
|
1231
1265
|
return _async_to_generator(function() {
|
|
1232
|
-
var isDevelopment, bucket, listed, deletedCount, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, object, err, cursor, nextBatch, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, object1, err;
|
|
1266
|
+
var isDevelopment, bucket, listed, deletedCount, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, object, _r2Object_customMetadata, r2Object, err, cursor, nextBatch, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, object1, _r2Object_customMetadata1, r2Object1, err;
|
|
1233
1267
|
return _ts_generator(this, function(_state) {
|
|
1234
1268
|
switch(_state.label){
|
|
1235
1269
|
case 0:
|
|
@@ -1256,46 +1290,56 @@ app.delete('/resources', function(context) {
|
|
|
1256
1290
|
case 2:
|
|
1257
1291
|
_state.trys.push([
|
|
1258
1292
|
2,
|
|
1259
|
-
7,
|
|
1260
1293
|
8,
|
|
1261
|
-
9
|
|
1294
|
+
9,
|
|
1295
|
+
10
|
|
1262
1296
|
]);
|
|
1263
1297
|
_iterator = listed.objects[Symbol.iterator]();
|
|
1264
1298
|
_state.label = 3;
|
|
1265
1299
|
case 3:
|
|
1266
1300
|
if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
|
|
1267
1301
|
3,
|
|
1268
|
-
|
|
1302
|
+
7
|
|
1269
1303
|
];
|
|
1270
1304
|
object = _step.value;
|
|
1271
1305
|
return [
|
|
1272
1306
|
4,
|
|
1273
|
-
bucket.
|
|
1307
|
+
bucket.head(object.key)
|
|
1274
1308
|
];
|
|
1275
1309
|
case 4:
|
|
1310
|
+
r2Object = _state.sent();
|
|
1311
|
+
if (!(r2Object === null || r2Object === void 0 ? void 0 : (_r2Object_customMetadata = r2Object.customMetadata) === null || _r2Object_customMetadata === void 0 ? void 0 : _r2Object_customMetadata.type)) return [
|
|
1312
|
+
3,
|
|
1313
|
+
6
|
|
1314
|
+
];
|
|
1315
|
+
return [
|
|
1316
|
+
4,
|
|
1317
|
+
bucket.delete(object.key)
|
|
1318
|
+
];
|
|
1319
|
+
case 5:
|
|
1276
1320
|
_state.sent();
|
|
1277
1321
|
deletedCount++;
|
|
1278
|
-
_state.label =
|
|
1279
|
-
case
|
|
1322
|
+
_state.label = 6;
|
|
1323
|
+
case 6:
|
|
1280
1324
|
_iteratorNormalCompletion = true;
|
|
1281
1325
|
return [
|
|
1282
1326
|
3,
|
|
1283
1327
|
3
|
|
1284
1328
|
];
|
|
1285
|
-
case
|
|
1329
|
+
case 7:
|
|
1286
1330
|
return [
|
|
1287
1331
|
3,
|
|
1288
|
-
|
|
1332
|
+
10
|
|
1289
1333
|
];
|
|
1290
|
-
case
|
|
1334
|
+
case 8:
|
|
1291
1335
|
err = _state.sent();
|
|
1292
1336
|
_didIteratorError = true;
|
|
1293
1337
|
_iteratorError = err;
|
|
1294
1338
|
return [
|
|
1295
1339
|
3,
|
|
1296
|
-
|
|
1340
|
+
10
|
|
1297
1341
|
];
|
|
1298
|
-
case
|
|
1342
|
+
case 9:
|
|
1299
1343
|
try {
|
|
1300
1344
|
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
1301
1345
|
_iterator.return();
|
|
@@ -1308,14 +1352,14 @@ app.delete('/resources', function(context) {
|
|
|
1308
1352
|
return [
|
|
1309
1353
|
7
|
|
1310
1354
|
];
|
|
1311
|
-
case
|
|
1355
|
+
case 10:
|
|
1312
1356
|
// Handle pagination if there are more than 1000 objects
|
|
1313
1357
|
cursor = listed.cursor;
|
|
1314
|
-
_state.label =
|
|
1315
|
-
case
|
|
1358
|
+
_state.label = 11;
|
|
1359
|
+
case 11:
|
|
1316
1360
|
if (!(listed.truncated && cursor)) return [
|
|
1317
1361
|
3,
|
|
1318
|
-
|
|
1362
|
+
22
|
|
1319
1363
|
];
|
|
1320
1364
|
return [
|
|
1321
1365
|
4,
|
|
@@ -1323,53 +1367,63 @@ app.delete('/resources', function(context) {
|
|
|
1323
1367
|
cursor: cursor
|
|
1324
1368
|
})
|
|
1325
1369
|
];
|
|
1326
|
-
case
|
|
1370
|
+
case 12:
|
|
1327
1371
|
nextBatch = _state.sent();
|
|
1328
1372
|
_iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
1329
|
-
_state.label =
|
|
1330
|
-
case
|
|
1373
|
+
_state.label = 13;
|
|
1374
|
+
case 13:
|
|
1331
1375
|
_state.trys.push([
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1376
|
+
13,
|
|
1377
|
+
19,
|
|
1378
|
+
20,
|
|
1379
|
+
21
|
|
1336
1380
|
]);
|
|
1337
1381
|
_iterator1 = nextBatch.objects[Symbol.iterator]();
|
|
1338
|
-
_state.label =
|
|
1339
|
-
case
|
|
1382
|
+
_state.label = 14;
|
|
1383
|
+
case 14:
|
|
1340
1384
|
if (!!(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done)) return [
|
|
1341
1385
|
3,
|
|
1342
|
-
|
|
1386
|
+
18
|
|
1343
1387
|
];
|
|
1344
1388
|
object1 = _step1.value;
|
|
1389
|
+
return [
|
|
1390
|
+
4,
|
|
1391
|
+
bucket.head(object1.key)
|
|
1392
|
+
];
|
|
1393
|
+
case 15:
|
|
1394
|
+
r2Object1 = _state.sent();
|
|
1395
|
+
if (!(r2Object1 === null || r2Object1 === void 0 ? void 0 : (_r2Object_customMetadata1 = r2Object1.customMetadata) === null || _r2Object_customMetadata1 === void 0 ? void 0 : _r2Object_customMetadata1.type)) return [
|
|
1396
|
+
3,
|
|
1397
|
+
17
|
|
1398
|
+
];
|
|
1345
1399
|
return [
|
|
1346
1400
|
4,
|
|
1347
1401
|
bucket.delete(object1.key)
|
|
1348
1402
|
];
|
|
1349
|
-
case
|
|
1403
|
+
case 16:
|
|
1350
1404
|
_state.sent();
|
|
1351
1405
|
deletedCount++;
|
|
1352
|
-
_state.label =
|
|
1353
|
-
case
|
|
1406
|
+
_state.label = 17;
|
|
1407
|
+
case 17:
|
|
1354
1408
|
_iteratorNormalCompletion1 = true;
|
|
1355
1409
|
return [
|
|
1356
1410
|
3,
|
|
1357
|
-
|
|
1411
|
+
14
|
|
1358
1412
|
];
|
|
1359
|
-
case
|
|
1413
|
+
case 18:
|
|
1360
1414
|
return [
|
|
1361
1415
|
3,
|
|
1362
|
-
|
|
1416
|
+
21
|
|
1363
1417
|
];
|
|
1364
|
-
case
|
|
1418
|
+
case 19:
|
|
1365
1419
|
err = _state.sent();
|
|
1366
1420
|
_didIteratorError1 = true;
|
|
1367
1421
|
_iteratorError1 = err;
|
|
1368
1422
|
return [
|
|
1369
1423
|
3,
|
|
1370
|
-
|
|
1424
|
+
21
|
|
1371
1425
|
];
|
|
1372
|
-
case
|
|
1426
|
+
case 20:
|
|
1373
1427
|
try {
|
|
1374
1428
|
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
1375
1429
|
_iterator1.return();
|
|
@@ -1382,13 +1436,13 @@ app.delete('/resources', function(context) {
|
|
|
1382
1436
|
return [
|
|
1383
1437
|
7
|
|
1384
1438
|
];
|
|
1385
|
-
case
|
|
1439
|
+
case 21:
|
|
1386
1440
|
cursor = nextBatch.cursor;
|
|
1387
1441
|
return [
|
|
1388
1442
|
3,
|
|
1389
|
-
|
|
1443
|
+
11
|
|
1390
1444
|
];
|
|
1391
|
-
case
|
|
1445
|
+
case 22:
|
|
1392
1446
|
return [
|
|
1393
1447
|
2,
|
|
1394
1448
|
context.json({
|
package/dist/src/dev-server.js
CHANGED
|
@@ -251,7 +251,7 @@ import * as path from 'path';
|
|
|
251
251
|
import * as fsPromises from 'fs/promises';
|
|
252
252
|
import * as fs from 'fs';
|
|
253
253
|
import * as os from 'os';
|
|
254
|
-
import { spawn } from 'child_process';
|
|
254
|
+
import { spawn, exec } from 'child_process';
|
|
255
255
|
import * as dotenv from 'dotenv';
|
|
256
256
|
import caz from 'caz';
|
|
257
257
|
import { createRequire } from 'module';
|
|
@@ -1105,11 +1105,102 @@ export var CloudflareDevServer = /*#__PURE__*/ function() {
|
|
|
1105
1105
|
}).call(this);
|
|
1106
1106
|
}
|
|
1107
1107
|
},
|
|
1108
|
+
{
|
|
1109
|
+
key: "ensureR2BucketExists",
|
|
1110
|
+
value: function ensureR2BucketExists(bucketName) {
|
|
1111
|
+
return _async_to_generator(function() {
|
|
1112
|
+
var serverDir, existingBuckets;
|
|
1113
|
+
return _ts_generator(this, function(_state) {
|
|
1114
|
+
switch(_state.label){
|
|
1115
|
+
case 0:
|
|
1116
|
+
serverDir = path.join(this.projectRootDir, '.positronic');
|
|
1117
|
+
return [
|
|
1118
|
+
4,
|
|
1119
|
+
new Promise(function(resolve, reject) {
|
|
1120
|
+
exec('npx wrangler r2 bucket list --json', {
|
|
1121
|
+
cwd: serverDir,
|
|
1122
|
+
env: _object_spread_props(_object_spread({}, process.env), {
|
|
1123
|
+
CLOUDFLARE_API_TOKEN: process.env.CLOUDFLARE_API_TOKEN,
|
|
1124
|
+
CLOUDFLARE_ACCOUNT_ID: process.env.CLOUDFLARE_ACCOUNT_ID
|
|
1125
|
+
})
|
|
1126
|
+
}, function(error, stdout) {
|
|
1127
|
+
if (error) {
|
|
1128
|
+
reject(new Error("Failed to list R2 buckets: ".concat(error.message)));
|
|
1129
|
+
return;
|
|
1130
|
+
}
|
|
1131
|
+
var buckets = JSON.parse(stdout);
|
|
1132
|
+
resolve(buckets.map(function(b) {
|
|
1133
|
+
return b.name;
|
|
1134
|
+
}));
|
|
1135
|
+
});
|
|
1136
|
+
})
|
|
1137
|
+
];
|
|
1138
|
+
case 1:
|
|
1139
|
+
existingBuckets = _state.sent();
|
|
1140
|
+
if (existingBuckets.includes(bucketName)) {
|
|
1141
|
+
console.log("\uD83D\uDCE6 R2 bucket '".concat(bucketName, "' already exists"));
|
|
1142
|
+
return [
|
|
1143
|
+
2
|
|
1144
|
+
];
|
|
1145
|
+
}
|
|
1146
|
+
// Create the bucket
|
|
1147
|
+
console.log("\uD83D\uDCE6 Creating R2 bucket '".concat(bucketName, "'..."));
|
|
1148
|
+
return [
|
|
1149
|
+
4,
|
|
1150
|
+
new Promise(function(resolve, reject) {
|
|
1151
|
+
var _createProcess_stdout, _createProcess_stderr;
|
|
1152
|
+
var createProcess = spawn('npx', [
|
|
1153
|
+
'wrangler',
|
|
1154
|
+
'r2',
|
|
1155
|
+
'bucket',
|
|
1156
|
+
'create',
|
|
1157
|
+
bucketName
|
|
1158
|
+
], {
|
|
1159
|
+
cwd: serverDir,
|
|
1160
|
+
stdio: [
|
|
1161
|
+
'inherit',
|
|
1162
|
+
'pipe',
|
|
1163
|
+
'pipe'
|
|
1164
|
+
],
|
|
1165
|
+
env: _object_spread_props(_object_spread({}, process.env), {
|
|
1166
|
+
CLOUDFLARE_API_TOKEN: process.env.CLOUDFLARE_API_TOKEN,
|
|
1167
|
+
CLOUDFLARE_ACCOUNT_ID: process.env.CLOUDFLARE_ACCOUNT_ID
|
|
1168
|
+
})
|
|
1169
|
+
});
|
|
1170
|
+
(_createProcess_stdout = createProcess.stdout) === null || _createProcess_stdout === void 0 ? void 0 : _createProcess_stdout.on('data', function(data) {
|
|
1171
|
+
process.stdout.write(data);
|
|
1172
|
+
});
|
|
1173
|
+
(_createProcess_stderr = createProcess.stderr) === null || _createProcess_stderr === void 0 ? void 0 : _createProcess_stderr.on('data', function(data) {
|
|
1174
|
+
process.stderr.write(data);
|
|
1175
|
+
});
|
|
1176
|
+
createProcess.on('error', function(err) {
|
|
1177
|
+
reject(new Error("Failed to create R2 bucket: ".concat(err.message)));
|
|
1178
|
+
});
|
|
1179
|
+
createProcess.on('exit', function(code) {
|
|
1180
|
+
if (code === 0) {
|
|
1181
|
+
console.log("✅ R2 bucket '".concat(bucketName, "' created successfully"));
|
|
1182
|
+
resolve();
|
|
1183
|
+
} else {
|
|
1184
|
+
reject(new Error("Failed to create R2 bucket (exit code ".concat(code, ")")));
|
|
1185
|
+
}
|
|
1186
|
+
});
|
|
1187
|
+
})
|
|
1188
|
+
];
|
|
1189
|
+
case 2:
|
|
1190
|
+
_state.sent();
|
|
1191
|
+
return [
|
|
1192
|
+
2
|
|
1193
|
+
];
|
|
1194
|
+
}
|
|
1195
|
+
});
|
|
1196
|
+
}).call(this);
|
|
1197
|
+
}
|
|
1198
|
+
},
|
|
1108
1199
|
{
|
|
1109
1200
|
key: "deploy",
|
|
1110
1201
|
value: function deploy() {
|
|
1111
1202
|
return _async_to_generator(function() {
|
|
1112
|
-
var _this, projectRoot, serverDir;
|
|
1203
|
+
var _this, projectRoot, serverDir, configPath, configContent, config, bucketName;
|
|
1113
1204
|
return _ts_generator(this, function(_state) {
|
|
1114
1205
|
switch(_state.label){
|
|
1115
1206
|
case 0:
|
|
@@ -1127,6 +1218,26 @@ export var CloudflareDevServer = /*#__PURE__*/ function() {
|
|
|
1127
1218
|
if (!process.env.CLOUDFLARE_API_TOKEN || !process.env.CLOUDFLARE_ACCOUNT_ID) {
|
|
1128
1219
|
throw new Error('Missing required Cloudflare credentials.\n' + 'Please set CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID environment variables.\n' + 'For example:\n' + ' export CLOUDFLARE_API_TOKEN=your-api-token\n' + ' export CLOUDFLARE_ACCOUNT_ID=your-account-id');
|
|
1129
1220
|
}
|
|
1221
|
+
// Get project name from config (used as R2 bucket name)
|
|
1222
|
+
configPath = path.join(projectRoot, 'positronic.config.json');
|
|
1223
|
+
return [
|
|
1224
|
+
4,
|
|
1225
|
+
fsPromises.readFile(configPath, 'utf-8')
|
|
1226
|
+
];
|
|
1227
|
+
case 2:
|
|
1228
|
+
configContent = _state.sent();
|
|
1229
|
+
config = JSON.parse(configContent);
|
|
1230
|
+
bucketName = config.projectName;
|
|
1231
|
+
if (!bucketName) {
|
|
1232
|
+
throw new Error('Project name not found in positronic.config.json');
|
|
1233
|
+
}
|
|
1234
|
+
// Ensure R2 bucket exists before deploying
|
|
1235
|
+
return [
|
|
1236
|
+
4,
|
|
1237
|
+
this.ensureR2BucketExists(bucketName)
|
|
1238
|
+
];
|
|
1239
|
+
case 3:
|
|
1240
|
+
_state.sent();
|
|
1130
1241
|
console.log('🚀 Deploying to Cloudflare Workers (production)...');
|
|
1131
1242
|
// Deploy to production using wrangler
|
|
1132
1243
|
return [
|
package/dist/types/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAI1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,2BAA2B,CAAC;AAGpE,KAAK,QAAQ,GAAG;IACd,eAAe,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;IACvD,UAAU,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAmBF,QAAA,MAAM,GAAG;cAAwB,QAAQ;yCAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAI1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,2BAA2B,CAAC;AAGpE,KAAK,QAAQ,GAAG;IACd,eAAe,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;IACvD,UAAU,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAmBF,QAAA,MAAM,GAAG;cAAwB,QAAQ;yCAAK,CAAC;AA+jC/C,eAAe,GAAG,CAAC"}
|
|
@@ -33,6 +33,7 @@ export declare class CloudflareDevServer implements PositronicDevServer {
|
|
|
33
33
|
private configureLocalR2;
|
|
34
34
|
start(port?: number): Promise<ServerHandle>;
|
|
35
35
|
watch(filePath: string, event: 'add' | 'change' | 'unlink'): Promise<void>;
|
|
36
|
+
private ensureR2BucketExists;
|
|
36
37
|
deploy(): Promise<void>;
|
|
37
38
|
onLog(callback: (message: string) => void): void;
|
|
38
39
|
onError(callback: (message: string) => void): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/dev-server.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAqJ1E,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAmBnD;AA8CD,qBAAa,mBAAoB,YAAW,mBAAmB;IAyB1C,cAAc,EAAE,MAAM;IAjBzC;;;;;;;;;;;OAWG;IAEH,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,gBAAgB,CAAwC;gBAE7C,cAAc,EAAE,MAAM;IAEnC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAiB7B,qBAAqB;YA4DrB,wBAAwB;YAqBxB,yBAAyB;YAQzB,2BAA2B;IAuBzC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,wBAAwB;YASlB,0BAA0B;IA4BxC,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,gBAAgB;IA4BlB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkD3C,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GACjC,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/dev-server.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAqJ1E,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAmBnD;AA8CD,qBAAa,mBAAoB,YAAW,mBAAmB;IAyB1C,cAAc,EAAE,MAAM;IAjBzC;;;;;;;;;;;OAWG;IAEH,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,gBAAgB,CAAwC;gBAE7C,cAAc,EAAE,MAAM;IAEnC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAiB7B,qBAAqB;YA4DrB,wBAAwB;YAqBxB,yBAAyB;YAQzB,2BAA2B;IAuBzC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,wBAAwB;YASlB,0BAA0B;IA4BxC,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,gBAAgB;IA4BlB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkD3C,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GACjC,OAAO,CAAC,IAAI,CAAC;YAUF,oBAAoB;IAuE5B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA0F7B,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIhD,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIlD,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9C,WAAW,IAAI,OAAO,CAC1B,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAA;KAAE,CAAC,CAC5D;IAwCK,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CrD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuC5C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA0DnD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@positronic/cloudflare",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.27",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
"clean": "rm -rf tsconfig.tsbuildinfo dist"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@positronic/core": "^0.0.
|
|
35
|
-
"@positronic/spec": "^0.0.
|
|
36
|
-
"@positronic/template-new-project": "^0.0.
|
|
34
|
+
"@positronic/core": "^0.0.27",
|
|
35
|
+
"@positronic/spec": "^0.0.27",
|
|
36
|
+
"@positronic/template-new-project": "^0.0.27",
|
|
37
37
|
"aws4fetch": "^1.0.18",
|
|
38
38
|
"caz": "^2.0.0",
|
|
39
39
|
"cron-schedule": "^5.0.4",
|