create-cloudflare 0.0.0-941764d0 → 0.0.0-94f1580d
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/cli.js +1847 -321
- package/package.json +9 -3
- package/templates/common/js/package.json +0 -1
- package/templates/hello-world/js/package.json +0 -2
- package/templates/queues/js/package.json +0 -2
- package/templates/queues/js/wrangler.toml +2 -2
- package/templates/queues/ts/wrangler.toml +2 -2
- package/templates/scheduled/js/package.json +0 -2
package/dist/cli.js
CHANGED
|
@@ -4189,6 +4189,1333 @@ var require_which_pm_runs = __commonJS({
|
|
|
4189
4189
|
}
|
|
4190
4190
|
});
|
|
4191
4191
|
|
|
4192
|
+
// ../../node_modules/dns2/lib/reader.js
|
|
4193
|
+
var require_reader = __commonJS({
|
|
4194
|
+
"../../node_modules/dns2/lib/reader.js"(exports, module2) {
|
|
4195
|
+
function BufferReader(buffer, offset) {
|
|
4196
|
+
this.buffer = buffer;
|
|
4197
|
+
this.offset = offset || 0;
|
|
4198
|
+
return this;
|
|
4199
|
+
}
|
|
4200
|
+
BufferReader.read = function(buffer, offset, length) {
|
|
4201
|
+
let a2 = [];
|
|
4202
|
+
let c2 = Math.ceil(length / 8);
|
|
4203
|
+
let l2 = Math.floor(offset / 8);
|
|
4204
|
+
const m2 = offset % 8;
|
|
4205
|
+
function t(n) {
|
|
4206
|
+
const r2 = [0, 0, 0, 0, 0, 0, 0, 0];
|
|
4207
|
+
for (let i = 7; i >= 0; i--) {
|
|
4208
|
+
r2[7 - i] = n & Math.pow(2, i) ? 1 : 0;
|
|
4209
|
+
}
|
|
4210
|
+
a2 = a2.concat(r2);
|
|
4211
|
+
}
|
|
4212
|
+
function p3(a3) {
|
|
4213
|
+
let n = 0;
|
|
4214
|
+
const f2 = a3.length - 1;
|
|
4215
|
+
for (let i = f2; i >= 0; i--) {
|
|
4216
|
+
if (a3[f2 - i])
|
|
4217
|
+
n += Math.pow(2, i);
|
|
4218
|
+
}
|
|
4219
|
+
return n;
|
|
4220
|
+
}
|
|
4221
|
+
while (c2--)
|
|
4222
|
+
t(buffer.readUInt8(l2++));
|
|
4223
|
+
return p3(a2.slice(m2, m2 + length));
|
|
4224
|
+
};
|
|
4225
|
+
BufferReader.prototype.read = function(size) {
|
|
4226
|
+
const val = BufferReader.read(this.buffer, this.offset, size);
|
|
4227
|
+
this.offset += size;
|
|
4228
|
+
return val;
|
|
4229
|
+
};
|
|
4230
|
+
module2.exports = BufferReader;
|
|
4231
|
+
}
|
|
4232
|
+
});
|
|
4233
|
+
|
|
4234
|
+
// ../../node_modules/dns2/lib/writer.js
|
|
4235
|
+
var require_writer = __commonJS({
|
|
4236
|
+
"../../node_modules/dns2/lib/writer.js"(exports, module2) {
|
|
4237
|
+
function BufferWriter() {
|
|
4238
|
+
this.buffer = [];
|
|
4239
|
+
}
|
|
4240
|
+
BufferWriter.prototype.write = function(d3, size) {
|
|
4241
|
+
for (let i = 0; i < size; i++) {
|
|
4242
|
+
this.buffer.push(d3 & Math.pow(2, size - i - 1) ? 1 : 0);
|
|
4243
|
+
}
|
|
4244
|
+
};
|
|
4245
|
+
BufferWriter.prototype.writeBuffer = function(b2) {
|
|
4246
|
+
this.buffer = this.buffer.concat(b2.buffer);
|
|
4247
|
+
};
|
|
4248
|
+
BufferWriter.prototype.toBuffer = function() {
|
|
4249
|
+
const arr = [];
|
|
4250
|
+
for (let i = 0; i < this.buffer.length; i += 8) {
|
|
4251
|
+
const chunk = this.buffer.slice(i, i + 8);
|
|
4252
|
+
arr.push(parseInt(chunk.join(""), 2));
|
|
4253
|
+
}
|
|
4254
|
+
return Buffer.from(arr);
|
|
4255
|
+
};
|
|
4256
|
+
module2.exports = BufferWriter;
|
|
4257
|
+
}
|
|
4258
|
+
});
|
|
4259
|
+
|
|
4260
|
+
// ../../node_modules/dns2/packet.js
|
|
4261
|
+
var require_packet = __commonJS({
|
|
4262
|
+
"../../node_modules/dns2/packet.js"(exports, module2) {
|
|
4263
|
+
var { debuglog } = require("util");
|
|
4264
|
+
var BufferReader = require_reader();
|
|
4265
|
+
var BufferWriter = require_writer();
|
|
4266
|
+
var debug = debuglog("dns2");
|
|
4267
|
+
var toIPv6 = (buffer) => buffer.map((part) => part > 0 ? part.toString(16) : "0").join(":").replace(/\b(?:0+:){1,}/, ":");
|
|
4268
|
+
var fromIPv6 = (address) => {
|
|
4269
|
+
const digits = address.split(":");
|
|
4270
|
+
if (digits[0] === "") {
|
|
4271
|
+
digits.shift();
|
|
4272
|
+
}
|
|
4273
|
+
if (digits[digits.length - 1] === "") {
|
|
4274
|
+
digits.pop();
|
|
4275
|
+
}
|
|
4276
|
+
const missingFields = 8 - digits.length + 1;
|
|
4277
|
+
return digits.flatMap((digit) => {
|
|
4278
|
+
if (digit === "") {
|
|
4279
|
+
return Array(missingFields).fill("0");
|
|
4280
|
+
}
|
|
4281
|
+
return digit.padStart(4, "0");
|
|
4282
|
+
});
|
|
4283
|
+
};
|
|
4284
|
+
function Packet(data) {
|
|
4285
|
+
this.header = {};
|
|
4286
|
+
this.questions = [];
|
|
4287
|
+
this.answers = [];
|
|
4288
|
+
this.authorities = [];
|
|
4289
|
+
this.additionals = [];
|
|
4290
|
+
if (data instanceof Packet) {
|
|
4291
|
+
return data;
|
|
4292
|
+
} else if (data instanceof Packet.Header) {
|
|
4293
|
+
this.header = data;
|
|
4294
|
+
} else if (data instanceof Packet.Question) {
|
|
4295
|
+
this.questions.push(data);
|
|
4296
|
+
} else if (data instanceof Packet.Resource) {
|
|
4297
|
+
this.answers.push(data);
|
|
4298
|
+
} else if (typeof data === "string") {
|
|
4299
|
+
this.questions.push(data);
|
|
4300
|
+
} else if (typeof data === "object") {
|
|
4301
|
+
const type = {}.toString.call(data).match(/\[object (\w+)\]/)[1];
|
|
4302
|
+
if (type === "Array") {
|
|
4303
|
+
this.questions = data;
|
|
4304
|
+
}
|
|
4305
|
+
if (type === "Object") {
|
|
4306
|
+
this.header = data;
|
|
4307
|
+
}
|
|
4308
|
+
}
|
|
4309
|
+
return this;
|
|
4310
|
+
}
|
|
4311
|
+
Packet.TYPE = {
|
|
4312
|
+
A: 1,
|
|
4313
|
+
NS: 2,
|
|
4314
|
+
MD: 3,
|
|
4315
|
+
MF: 4,
|
|
4316
|
+
CNAME: 5,
|
|
4317
|
+
SOA: 6,
|
|
4318
|
+
MB: 7,
|
|
4319
|
+
MG: 8,
|
|
4320
|
+
MR: 9,
|
|
4321
|
+
NULL: 10,
|
|
4322
|
+
WKS: 11,
|
|
4323
|
+
PTR: 12,
|
|
4324
|
+
HINFO: 13,
|
|
4325
|
+
MINFO: 14,
|
|
4326
|
+
MX: 15,
|
|
4327
|
+
TXT: 16,
|
|
4328
|
+
AAAA: 28,
|
|
4329
|
+
SRV: 33,
|
|
4330
|
+
EDNS: 41,
|
|
4331
|
+
SPF: 99,
|
|
4332
|
+
AXFR: 252,
|
|
4333
|
+
MAILB: 253,
|
|
4334
|
+
MAILA: 254,
|
|
4335
|
+
ANY: 255,
|
|
4336
|
+
CAA: 257
|
|
4337
|
+
};
|
|
4338
|
+
Packet.CLASS = {
|
|
4339
|
+
IN: 1,
|
|
4340
|
+
CS: 2,
|
|
4341
|
+
CH: 3,
|
|
4342
|
+
HS: 4,
|
|
4343
|
+
ANY: 255
|
|
4344
|
+
};
|
|
4345
|
+
Packet.EDNS_OPTION_CODE = {
|
|
4346
|
+
ECS: 8
|
|
4347
|
+
};
|
|
4348
|
+
Packet.uuid = function() {
|
|
4349
|
+
return Math.floor(Math.random() * 1e5);
|
|
4350
|
+
};
|
|
4351
|
+
Packet.parse = function(buffer) {
|
|
4352
|
+
const packet = new Packet();
|
|
4353
|
+
const reader = new Packet.Reader(buffer);
|
|
4354
|
+
packet.header = Packet.Header.parse(reader);
|
|
4355
|
+
[
|
|
4356
|
+
// props parser count
|
|
4357
|
+
["questions", Packet.Question, packet.header.qdcount],
|
|
4358
|
+
["answers", Packet.Resource, packet.header.ancount],
|
|
4359
|
+
["authorities", Packet.Resource, packet.header.nscount],
|
|
4360
|
+
["additionals", Packet.Resource, packet.header.arcount]
|
|
4361
|
+
].forEach(function(def) {
|
|
4362
|
+
const section = def[0];
|
|
4363
|
+
const decoder = def[1];
|
|
4364
|
+
let count = def[2];
|
|
4365
|
+
while (count--) {
|
|
4366
|
+
try {
|
|
4367
|
+
packet[section] = packet[section] || [];
|
|
4368
|
+
packet[section].push(decoder.parse(reader));
|
|
4369
|
+
} catch (e) {
|
|
4370
|
+
debug("node-dns > parse %s error:", section, e.message);
|
|
4371
|
+
}
|
|
4372
|
+
}
|
|
4373
|
+
});
|
|
4374
|
+
return packet;
|
|
4375
|
+
};
|
|
4376
|
+
Object.defineProperty(Packet.prototype, "recursive", {
|
|
4377
|
+
enumerable: true,
|
|
4378
|
+
configurable: true,
|
|
4379
|
+
get() {
|
|
4380
|
+
return !!this.header.rd;
|
|
4381
|
+
},
|
|
4382
|
+
set(yn) {
|
|
4383
|
+
this.header.rd = +yn;
|
|
4384
|
+
return this.header.rd;
|
|
4385
|
+
}
|
|
4386
|
+
});
|
|
4387
|
+
Packet.prototype.toBuffer = function(writer) {
|
|
4388
|
+
writer = writer || new Packet.Writer();
|
|
4389
|
+
this.header.qdcount = this.questions.length;
|
|
4390
|
+
this.header.ancount = this.answers.length;
|
|
4391
|
+
this.header.nscount = this.authorities.length;
|
|
4392
|
+
this.header.arcount = this.additionals.length;
|
|
4393
|
+
if (!(this instanceof Packet.Header)) {
|
|
4394
|
+
this.header = new Packet.Header(this.header);
|
|
4395
|
+
}
|
|
4396
|
+
this.header.toBuffer(writer);
|
|
4397
|
+
[
|
|
4398
|
+
// section encoder
|
|
4399
|
+
["questions", Packet.Question],
|
|
4400
|
+
["answers", Packet.Resource],
|
|
4401
|
+
["authorities", Packet.Resource],
|
|
4402
|
+
["additionals", Packet.Resource]
|
|
4403
|
+
].forEach(function(def) {
|
|
4404
|
+
const section = def[0];
|
|
4405
|
+
const Encoder = def[1];
|
|
4406
|
+
(this[section] || []).map(function(resource) {
|
|
4407
|
+
return Encoder.encode(resource, writer);
|
|
4408
|
+
});
|
|
4409
|
+
}.bind(this));
|
|
4410
|
+
return writer.toBuffer();
|
|
4411
|
+
};
|
|
4412
|
+
Packet.Header = function(header) {
|
|
4413
|
+
this.id = 0;
|
|
4414
|
+
this.qr = 0;
|
|
4415
|
+
this.opcode = 0;
|
|
4416
|
+
this.aa = 0;
|
|
4417
|
+
this.tc = 0;
|
|
4418
|
+
this.rd = 0;
|
|
4419
|
+
this.ra = 0;
|
|
4420
|
+
this.z = 0;
|
|
4421
|
+
this.rcode = 0;
|
|
4422
|
+
this.qdcount = 0;
|
|
4423
|
+
this.nscount = 0;
|
|
4424
|
+
this.arcount = 0;
|
|
4425
|
+
for (const k3 in header) {
|
|
4426
|
+
this[k3] = header[k3];
|
|
4427
|
+
}
|
|
4428
|
+
return this;
|
|
4429
|
+
};
|
|
4430
|
+
Packet.Header.parse = function(reader) {
|
|
4431
|
+
const header = new Packet.Header();
|
|
4432
|
+
if (reader instanceof Buffer) {
|
|
4433
|
+
reader = new Packet.Reader(reader);
|
|
4434
|
+
}
|
|
4435
|
+
header.id = reader.read(16);
|
|
4436
|
+
header.qr = reader.read(1);
|
|
4437
|
+
header.opcode = reader.read(4);
|
|
4438
|
+
header.aa = reader.read(1);
|
|
4439
|
+
header.tc = reader.read(1);
|
|
4440
|
+
header.rd = reader.read(1);
|
|
4441
|
+
header.ra = reader.read(1);
|
|
4442
|
+
header.z = reader.read(3);
|
|
4443
|
+
header.rcode = reader.read(4);
|
|
4444
|
+
header.qdcount = reader.read(16);
|
|
4445
|
+
header.ancount = reader.read(16);
|
|
4446
|
+
header.nscount = reader.read(16);
|
|
4447
|
+
header.arcount = reader.read(16);
|
|
4448
|
+
return header;
|
|
4449
|
+
};
|
|
4450
|
+
Packet.Header.prototype.toBuffer = function(writer) {
|
|
4451
|
+
writer = writer || new Packet.Writer();
|
|
4452
|
+
writer.write(this.id, 16);
|
|
4453
|
+
writer.write(this.qr, 1);
|
|
4454
|
+
writer.write(this.opcode, 4);
|
|
4455
|
+
writer.write(this.aa, 1);
|
|
4456
|
+
writer.write(this.tc, 1);
|
|
4457
|
+
writer.write(this.rd, 1);
|
|
4458
|
+
writer.write(this.ra, 1);
|
|
4459
|
+
writer.write(this.z, 3);
|
|
4460
|
+
writer.write(this.rcode, 4);
|
|
4461
|
+
writer.write(this.qdcount, 16);
|
|
4462
|
+
writer.write(this.ancount, 16);
|
|
4463
|
+
writer.write(this.nscount, 16);
|
|
4464
|
+
writer.write(this.arcount, 16);
|
|
4465
|
+
return writer.toBuffer();
|
|
4466
|
+
};
|
|
4467
|
+
Packet.Question = function(name, type, cls) {
|
|
4468
|
+
const defaults = {
|
|
4469
|
+
type: Packet.TYPE.ANY,
|
|
4470
|
+
class: Packet.CLASS.ANY
|
|
4471
|
+
};
|
|
4472
|
+
if (typeof name === "object") {
|
|
4473
|
+
for (const k3 in name) {
|
|
4474
|
+
this[k3] = name[k3] || defaults[k3];
|
|
4475
|
+
}
|
|
4476
|
+
} else {
|
|
4477
|
+
this.name = name;
|
|
4478
|
+
this.type = type || defaults.type;
|
|
4479
|
+
this.class = cls || defaults.class;
|
|
4480
|
+
}
|
|
4481
|
+
return this;
|
|
4482
|
+
};
|
|
4483
|
+
Packet.Question.prototype.toBuffer = function(writer) {
|
|
4484
|
+
return Packet.Question.encode(this, writer);
|
|
4485
|
+
};
|
|
4486
|
+
Packet.Question.parse = Packet.Question.decode = function(reader) {
|
|
4487
|
+
const question = new Packet.Question();
|
|
4488
|
+
if (reader instanceof Buffer) {
|
|
4489
|
+
reader = new Packet.Reader(reader);
|
|
4490
|
+
}
|
|
4491
|
+
question.name = Packet.Name.decode(reader);
|
|
4492
|
+
question.type = reader.read(16);
|
|
4493
|
+
question.class = reader.read(16);
|
|
4494
|
+
return question;
|
|
4495
|
+
};
|
|
4496
|
+
Packet.Question.encode = function(question, writer) {
|
|
4497
|
+
writer = writer || new Packet.Writer();
|
|
4498
|
+
Packet.Name.encode(question.name, writer);
|
|
4499
|
+
writer.write(question.type, 16);
|
|
4500
|
+
writer.write(question.class, 16);
|
|
4501
|
+
return writer.toBuffer();
|
|
4502
|
+
};
|
|
4503
|
+
Packet.Resource = function(name, type, cls, ttl) {
|
|
4504
|
+
const defaults = {
|
|
4505
|
+
name: "",
|
|
4506
|
+
ttl: 300,
|
|
4507
|
+
type: Packet.TYPE.ANY,
|
|
4508
|
+
class: Packet.CLASS.ANY
|
|
4509
|
+
};
|
|
4510
|
+
let input;
|
|
4511
|
+
if (typeof name === "object") {
|
|
4512
|
+
input = name;
|
|
4513
|
+
} else {
|
|
4514
|
+
input = {
|
|
4515
|
+
name,
|
|
4516
|
+
type,
|
|
4517
|
+
class: cls,
|
|
4518
|
+
ttl
|
|
4519
|
+
};
|
|
4520
|
+
}
|
|
4521
|
+
Object.assign(this, defaults, input);
|
|
4522
|
+
return this;
|
|
4523
|
+
};
|
|
4524
|
+
Packet.Resource.prototype.toBuffer = function(writer) {
|
|
4525
|
+
return Packet.Resource.encode(this, writer);
|
|
4526
|
+
};
|
|
4527
|
+
Packet.Resource.encode = function(resource, writer) {
|
|
4528
|
+
writer = writer || new Packet.Writer();
|
|
4529
|
+
Packet.Name.encode(resource.name, writer);
|
|
4530
|
+
writer.write(resource.type, 16);
|
|
4531
|
+
writer.write(resource.class, 16);
|
|
4532
|
+
writer.write(resource.ttl, 32);
|
|
4533
|
+
const encoder = Object.keys(Packet.TYPE).filter(function(type) {
|
|
4534
|
+
return resource.type === Packet.TYPE[type];
|
|
4535
|
+
})[0];
|
|
4536
|
+
if (encoder in Packet.Resource && Packet.Resource[encoder].encode) {
|
|
4537
|
+
return Packet.Resource[encoder].encode(resource, writer);
|
|
4538
|
+
} else {
|
|
4539
|
+
debug("node-dns > unknown encoder %s(%j)", encoder, resource.type);
|
|
4540
|
+
}
|
|
4541
|
+
};
|
|
4542
|
+
Packet.Resource.parse = Packet.Resource.decode = function(reader) {
|
|
4543
|
+
if (reader instanceof Buffer) {
|
|
4544
|
+
reader = new Packet.Reader(reader);
|
|
4545
|
+
}
|
|
4546
|
+
let resource = new Packet.Resource();
|
|
4547
|
+
resource.name = Packet.Name.decode(reader);
|
|
4548
|
+
resource.type = reader.read(16);
|
|
4549
|
+
resource.class = reader.read(16);
|
|
4550
|
+
resource.ttl = reader.read(32);
|
|
4551
|
+
let length = reader.read(16);
|
|
4552
|
+
const parser2 = Object.keys(Packet.TYPE).filter(function(type) {
|
|
4553
|
+
return resource.type === Packet.TYPE[type];
|
|
4554
|
+
})[0];
|
|
4555
|
+
if (parser2 in Packet.Resource) {
|
|
4556
|
+
resource = Packet.Resource[parser2].decode.call(resource, reader, length);
|
|
4557
|
+
} else {
|
|
4558
|
+
debug("node-dns > unknown parser type: %s(%j)", parser2, resource.type);
|
|
4559
|
+
const arr = [];
|
|
4560
|
+
while (length--)
|
|
4561
|
+
arr.push(reader.read(8));
|
|
4562
|
+
resource.data = Buffer.from(arr);
|
|
4563
|
+
}
|
|
4564
|
+
return resource;
|
|
4565
|
+
};
|
|
4566
|
+
Packet.Name = {
|
|
4567
|
+
COPY: 192,
|
|
4568
|
+
decode: function(reader) {
|
|
4569
|
+
if (reader instanceof Buffer) {
|
|
4570
|
+
reader = new Packet.Reader(reader);
|
|
4571
|
+
}
|
|
4572
|
+
const name = [];
|
|
4573
|
+
let o2;
|
|
4574
|
+
let len = reader.read(8);
|
|
4575
|
+
while (len) {
|
|
4576
|
+
if ((len & Packet.Name.COPY) === Packet.Name.COPY) {
|
|
4577
|
+
len -= Packet.Name.COPY;
|
|
4578
|
+
len = len << 8;
|
|
4579
|
+
const pos = len + reader.read(8);
|
|
4580
|
+
if (!o2)
|
|
4581
|
+
o2 = reader.offset;
|
|
4582
|
+
reader.offset = pos * 8;
|
|
4583
|
+
len = reader.read(8);
|
|
4584
|
+
continue;
|
|
4585
|
+
} else {
|
|
4586
|
+
let part = "";
|
|
4587
|
+
while (len--)
|
|
4588
|
+
part += String.fromCharCode(reader.read(8));
|
|
4589
|
+
name.push(part);
|
|
4590
|
+
len = reader.read(8);
|
|
4591
|
+
}
|
|
4592
|
+
}
|
|
4593
|
+
if (o2)
|
|
4594
|
+
reader.offset = o2;
|
|
4595
|
+
return name.join(".");
|
|
4596
|
+
},
|
|
4597
|
+
encode: function(domain, writer) {
|
|
4598
|
+
writer = writer || new Packet.Writer();
|
|
4599
|
+
(domain || "").split(".").filter(function(part) {
|
|
4600
|
+
return !!part;
|
|
4601
|
+
}).forEach(function(part) {
|
|
4602
|
+
writer.write(part.length, 8);
|
|
4603
|
+
part.split("").map(function(c2) {
|
|
4604
|
+
writer.write(c2.charCodeAt(0), 8);
|
|
4605
|
+
return c2.charCodeAt(0);
|
|
4606
|
+
});
|
|
4607
|
+
});
|
|
4608
|
+
writer.write(0, 8);
|
|
4609
|
+
return writer.toBuffer();
|
|
4610
|
+
}
|
|
4611
|
+
};
|
|
4612
|
+
Packet.Resource.A = function(address) {
|
|
4613
|
+
this.type = Packet.TYPE.A;
|
|
4614
|
+
this.class = Packet.CLASS.IN;
|
|
4615
|
+
this.address = address;
|
|
4616
|
+
return this;
|
|
4617
|
+
};
|
|
4618
|
+
Packet.Resource.A.encode = function(record, writer) {
|
|
4619
|
+
writer = writer || new Packet.Writer();
|
|
4620
|
+
const parts = record.address.split(".");
|
|
4621
|
+
writer.write(parts.length, 16);
|
|
4622
|
+
parts.forEach(function(part) {
|
|
4623
|
+
writer.write(parseInt(part, 10), 8);
|
|
4624
|
+
});
|
|
4625
|
+
return writer.toBuffer();
|
|
4626
|
+
};
|
|
4627
|
+
Packet.Resource.A.decode = function(reader, length) {
|
|
4628
|
+
const parts = [];
|
|
4629
|
+
while (length--)
|
|
4630
|
+
parts.push(reader.read(8));
|
|
4631
|
+
this.address = parts.join(".");
|
|
4632
|
+
return this;
|
|
4633
|
+
};
|
|
4634
|
+
Packet.Resource.MX = function(exchange, priority) {
|
|
4635
|
+
this.type = Packet.TYPE.MX;
|
|
4636
|
+
this.class = Packet.CLASS.IN;
|
|
4637
|
+
this.exchange = exchange;
|
|
4638
|
+
this.priority = priority;
|
|
4639
|
+
return this;
|
|
4640
|
+
};
|
|
4641
|
+
Packet.Resource.MX.encode = function(record, writer) {
|
|
4642
|
+
writer = writer || new Packet.Writer();
|
|
4643
|
+
const len = Packet.Name.encode(record.exchange).length;
|
|
4644
|
+
writer.write(len + 2, 16);
|
|
4645
|
+
writer.write(record.priority, 16);
|
|
4646
|
+
Packet.Name.encode(record.exchange, writer);
|
|
4647
|
+
return writer.toBuffer();
|
|
4648
|
+
};
|
|
4649
|
+
Packet.Resource.MX.decode = function(reader, length) {
|
|
4650
|
+
this.priority = reader.read(16);
|
|
4651
|
+
this.exchange = Packet.Name.decode(reader);
|
|
4652
|
+
return this;
|
|
4653
|
+
};
|
|
4654
|
+
Packet.Resource.AAAA = {
|
|
4655
|
+
decode: function(reader, length) {
|
|
4656
|
+
const parts = [];
|
|
4657
|
+
while (length) {
|
|
4658
|
+
length -= 2;
|
|
4659
|
+
parts.push(reader.read(16));
|
|
4660
|
+
}
|
|
4661
|
+
this.address = toIPv6(parts);
|
|
4662
|
+
return this;
|
|
4663
|
+
},
|
|
4664
|
+
encode: function(record, writer) {
|
|
4665
|
+
writer = writer || new Packet.Writer();
|
|
4666
|
+
const parts = fromIPv6(record.address);
|
|
4667
|
+
writer.write(parts.length * 2, 16);
|
|
4668
|
+
parts.forEach(function(part) {
|
|
4669
|
+
writer.write(parseInt(part, 16), 16);
|
|
4670
|
+
});
|
|
4671
|
+
return writer.toBuffer();
|
|
4672
|
+
}
|
|
4673
|
+
};
|
|
4674
|
+
Packet.Resource.NS = {
|
|
4675
|
+
decode: function(reader, length) {
|
|
4676
|
+
this.ns = Packet.Name.decode(reader);
|
|
4677
|
+
return this;
|
|
4678
|
+
},
|
|
4679
|
+
encode: function(record, writer) {
|
|
4680
|
+
writer = writer || new Packet.Writer();
|
|
4681
|
+
writer.write(Packet.Name.encode(record.ns).length, 16);
|
|
4682
|
+
Packet.Name.encode(record.ns, writer);
|
|
4683
|
+
return writer.toBuffer();
|
|
4684
|
+
}
|
|
4685
|
+
};
|
|
4686
|
+
Packet.Resource.PTR = Packet.Resource.CNAME = {
|
|
4687
|
+
decode: function(reader, length) {
|
|
4688
|
+
this.domain = Packet.Name.decode(reader);
|
|
4689
|
+
return this;
|
|
4690
|
+
},
|
|
4691
|
+
encode: function(record, writer) {
|
|
4692
|
+
writer = writer || new Packet.Writer();
|
|
4693
|
+
writer.write(Packet.Name.encode(record.domain).length, 16);
|
|
4694
|
+
Packet.Name.encode(record.domain, writer);
|
|
4695
|
+
return writer.toBuffer();
|
|
4696
|
+
}
|
|
4697
|
+
};
|
|
4698
|
+
Packet.Resource.SPF = Packet.Resource.TXT = {
|
|
4699
|
+
decode: function(reader, length) {
|
|
4700
|
+
const parts = [];
|
|
4701
|
+
let bytesRead = 0;
|
|
4702
|
+
let chunkLength = 0;
|
|
4703
|
+
while (bytesRead < length) {
|
|
4704
|
+
chunkLength = reader.read(8);
|
|
4705
|
+
bytesRead++;
|
|
4706
|
+
while (chunkLength--) {
|
|
4707
|
+
parts.push(reader.read(8));
|
|
4708
|
+
bytesRead++;
|
|
4709
|
+
}
|
|
4710
|
+
}
|
|
4711
|
+
this.data = Buffer.from(parts).toString("utf8");
|
|
4712
|
+
return this;
|
|
4713
|
+
},
|
|
4714
|
+
encode: function(record, writer) {
|
|
4715
|
+
writer = writer || new Packet.Writer();
|
|
4716
|
+
const characterStrings = Array.isArray(record.data) ? record.data : [record.data];
|
|
4717
|
+
const characterStringBuffers = characterStrings.map(function(characterString) {
|
|
4718
|
+
if (Buffer.isBuffer(characterString)) {
|
|
4719
|
+
return characterString;
|
|
4720
|
+
}
|
|
4721
|
+
if (typeof characterString === "string") {
|
|
4722
|
+
return Buffer.from(characterString, "utf8");
|
|
4723
|
+
}
|
|
4724
|
+
return false;
|
|
4725
|
+
}).filter(function(characterString) {
|
|
4726
|
+
return characterString;
|
|
4727
|
+
});
|
|
4728
|
+
const bufferLength = characterStringBuffers.reduce(function(sum, characterStringBuffer) {
|
|
4729
|
+
return sum + characterStringBuffer.length;
|
|
4730
|
+
}, 0);
|
|
4731
|
+
writer.write(bufferLength + characterStringBuffers.length, 16);
|
|
4732
|
+
characterStringBuffers.forEach(function(buffer) {
|
|
4733
|
+
writer.write(buffer.length, 8);
|
|
4734
|
+
buffer.forEach(function(c2) {
|
|
4735
|
+
writer.write(c2, 8);
|
|
4736
|
+
});
|
|
4737
|
+
});
|
|
4738
|
+
return writer.toBuffer();
|
|
4739
|
+
}
|
|
4740
|
+
};
|
|
4741
|
+
Packet.Resource.SOA = {
|
|
4742
|
+
decode: function(reader, length) {
|
|
4743
|
+
this.primary = Packet.Name.decode(reader);
|
|
4744
|
+
this.admin = Packet.Name.decode(reader);
|
|
4745
|
+
this.serial = reader.read(32);
|
|
4746
|
+
this.refresh = reader.read(32);
|
|
4747
|
+
this.retry = reader.read(32);
|
|
4748
|
+
this.expiration = reader.read(32);
|
|
4749
|
+
this.minimum = reader.read(32);
|
|
4750
|
+
return this;
|
|
4751
|
+
},
|
|
4752
|
+
encode: function(record, writer) {
|
|
4753
|
+
writer = writer || new Packet.Writer();
|
|
4754
|
+
let len = 0;
|
|
4755
|
+
len += Packet.Name.encode(record.primary).length;
|
|
4756
|
+
len += Packet.Name.encode(record.admin).length;
|
|
4757
|
+
len += 32 * 5 / 8;
|
|
4758
|
+
writer.write(len, 16);
|
|
4759
|
+
Packet.Name.encode(record.primary, writer);
|
|
4760
|
+
Packet.Name.encode(record.admin, writer);
|
|
4761
|
+
writer.write(record.serial, 32);
|
|
4762
|
+
writer.write(record.refresh, 32);
|
|
4763
|
+
writer.write(record.retry, 32);
|
|
4764
|
+
writer.write(record.expiration, 32);
|
|
4765
|
+
writer.write(record.minimum, 32);
|
|
4766
|
+
return writer.toBuffer();
|
|
4767
|
+
}
|
|
4768
|
+
};
|
|
4769
|
+
Packet.Resource.SRV = {
|
|
4770
|
+
decode: function(reader, length) {
|
|
4771
|
+
this.priority = reader.read(16);
|
|
4772
|
+
this.weight = reader.read(16);
|
|
4773
|
+
this.port = reader.read(16);
|
|
4774
|
+
this.target = Packet.Name.decode(reader);
|
|
4775
|
+
return this;
|
|
4776
|
+
},
|
|
4777
|
+
encode: function(record, writer) {
|
|
4778
|
+
writer = writer || new Packet.Writer();
|
|
4779
|
+
const { length } = Packet.Name.encode(record.target);
|
|
4780
|
+
writer.write(length + 6, 16);
|
|
4781
|
+
writer.write(record.priority, 16);
|
|
4782
|
+
writer.write(record.weight, 16);
|
|
4783
|
+
writer.write(record.port, 16);
|
|
4784
|
+
Packet.Name.encode(record.target, writer);
|
|
4785
|
+
return writer.toBuffer();
|
|
4786
|
+
}
|
|
4787
|
+
};
|
|
4788
|
+
Packet.Resource.EDNS = function(rdata) {
|
|
4789
|
+
return {
|
|
4790
|
+
type: Packet.TYPE.EDNS,
|
|
4791
|
+
class: 512,
|
|
4792
|
+
// Supported UDP Payload size
|
|
4793
|
+
ttl: 0,
|
|
4794
|
+
// Extended RCODE and flags
|
|
4795
|
+
rdata
|
|
4796
|
+
// Objects of type Packet.Resource.EDNS.*
|
|
4797
|
+
};
|
|
4798
|
+
};
|
|
4799
|
+
Packet.Resource.EDNS.decode = function(reader, length) {
|
|
4800
|
+
this.type = Packet.TYPE.EDNS;
|
|
4801
|
+
this.class = 512;
|
|
4802
|
+
this.ttl = 0;
|
|
4803
|
+
this.rdata = [];
|
|
4804
|
+
while (length) {
|
|
4805
|
+
const optionCode = reader.read(16);
|
|
4806
|
+
const optionLength = reader.read(16);
|
|
4807
|
+
const decoder = Object.keys(Packet.EDNS_OPTION_CODE).filter(function(type) {
|
|
4808
|
+
return optionCode === Packet.EDNS_OPTION_CODE[type];
|
|
4809
|
+
})[0];
|
|
4810
|
+
if (decoder in Packet.Resource.EDNS && Packet.Resource.EDNS[decoder].decode) {
|
|
4811
|
+
const rdata = Packet.Resource.EDNS[decoder].decode(reader, optionLength);
|
|
4812
|
+
this.rdata.push(rdata);
|
|
4813
|
+
} else {
|
|
4814
|
+
reader.read(optionLength);
|
|
4815
|
+
debug("node-dns > unknown EDNS rdata decoder %s(%j)", decoder, optionCode);
|
|
4816
|
+
}
|
|
4817
|
+
length = length - 4 - optionLength;
|
|
4818
|
+
}
|
|
4819
|
+
return this;
|
|
4820
|
+
};
|
|
4821
|
+
Packet.Resource.EDNS.encode = function(record, writer) {
|
|
4822
|
+
const rdataWriter = new Packet.Writer();
|
|
4823
|
+
for (const rdata of record.rdata) {
|
|
4824
|
+
const encoder = Object.keys(Packet.EDNS_OPTION_CODE).filter(function(type) {
|
|
4825
|
+
return rdata.ednsCode === Packet.EDNS_OPTION_CODE[type];
|
|
4826
|
+
})[0];
|
|
4827
|
+
if (encoder in Packet.Resource.EDNS && Packet.Resource.EDNS[encoder].encode) {
|
|
4828
|
+
const w3 = new Packet.Writer();
|
|
4829
|
+
Packet.Resource.EDNS[encoder].encode(rdata, w3);
|
|
4830
|
+
rdataWriter.write(rdata.ednsCode, 16);
|
|
4831
|
+
rdataWriter.write(w3.buffer.length / 8, 16);
|
|
4832
|
+
rdataWriter.writeBuffer(w3);
|
|
4833
|
+
} else {
|
|
4834
|
+
debug("node-dns > unknown EDNS rdata encoder %s(%j)", encoder, rdata.ednsCode);
|
|
4835
|
+
}
|
|
4836
|
+
}
|
|
4837
|
+
writer = writer || new Packet.Writer();
|
|
4838
|
+
writer.write(rdataWriter.buffer.length / 8, 16);
|
|
4839
|
+
writer.writeBuffer(rdataWriter);
|
|
4840
|
+
return writer.toBuffer();
|
|
4841
|
+
};
|
|
4842
|
+
Packet.Resource.EDNS.ECS = function(clientIp) {
|
|
4843
|
+
const [ip, prefixLength] = clientIp.split("/");
|
|
4844
|
+
const numPrefixLength = parseInt(prefixLength) || 32;
|
|
4845
|
+
return {
|
|
4846
|
+
ednsCode: Packet.EDNS_OPTION_CODE.ECS,
|
|
4847
|
+
family: 1,
|
|
4848
|
+
sourcePrefixLength: numPrefixLength,
|
|
4849
|
+
scopePrefixLength: 0,
|
|
4850
|
+
ip
|
|
4851
|
+
};
|
|
4852
|
+
};
|
|
4853
|
+
Packet.Resource.EDNS.ECS.decode = function(reader, length) {
|
|
4854
|
+
const rdata = {};
|
|
4855
|
+
rdata.ednsCode = Packet.EDNS_OPTION_CODE.ECS;
|
|
4856
|
+
rdata.family = reader.read(16);
|
|
4857
|
+
rdata.sourcePrefixLength = reader.read(8);
|
|
4858
|
+
rdata.scopePrefixLength = reader.read(8);
|
|
4859
|
+
length -= 4;
|
|
4860
|
+
if (rdata.family !== 1) {
|
|
4861
|
+
debug("node-dns > unimplemented address family");
|
|
4862
|
+
reader.read(length * 8);
|
|
4863
|
+
return rdata;
|
|
4864
|
+
}
|
|
4865
|
+
const ipv4Octets = [];
|
|
4866
|
+
while (length--) {
|
|
4867
|
+
const octet = reader.read(8);
|
|
4868
|
+
ipv4Octets.push(octet);
|
|
4869
|
+
}
|
|
4870
|
+
while (ipv4Octets.length < 4) {
|
|
4871
|
+
ipv4Octets.push(0);
|
|
4872
|
+
}
|
|
4873
|
+
rdata.ip = ipv4Octets.join(".");
|
|
4874
|
+
return rdata;
|
|
4875
|
+
};
|
|
4876
|
+
Packet.Resource.EDNS.ECS.encode = function(record, writer) {
|
|
4877
|
+
const ip = record.ip.split(".").map((s) => parseInt(s));
|
|
4878
|
+
writer.write(record.family, 16);
|
|
4879
|
+
writer.write(record.sourcePrefixLength, 8);
|
|
4880
|
+
writer.write(record.scopePrefixLength, 8);
|
|
4881
|
+
writer.write(ip[0], 8);
|
|
4882
|
+
writer.write(ip[1], 8);
|
|
4883
|
+
writer.write(ip[2], 8);
|
|
4884
|
+
writer.write(ip[3], 8);
|
|
4885
|
+
};
|
|
4886
|
+
Packet.Resource.CAA = {
|
|
4887
|
+
encode: function(record, writer) {
|
|
4888
|
+
writer = writer || new Packet.Writer();
|
|
4889
|
+
const buffer = Buffer.from(record.tag + record.value, "utf8");
|
|
4890
|
+
writer.write(2 + buffer.length, 16);
|
|
4891
|
+
writer.write(record.flags, 8);
|
|
4892
|
+
writer.write(record.tag.length, 8);
|
|
4893
|
+
buffer.forEach(function(c2) {
|
|
4894
|
+
writer.write(c2, 8);
|
|
4895
|
+
});
|
|
4896
|
+
return writer.toBuffer();
|
|
4897
|
+
}
|
|
4898
|
+
};
|
|
4899
|
+
Packet.Reader = BufferReader;
|
|
4900
|
+
Packet.Writer = BufferWriter;
|
|
4901
|
+
Packet.createResponseFromRequest = function(request2) {
|
|
4902
|
+
const response = new Packet(request2);
|
|
4903
|
+
response.header.qr = 1;
|
|
4904
|
+
response.additionals = [];
|
|
4905
|
+
return response;
|
|
4906
|
+
};
|
|
4907
|
+
Packet.createResourceFromQuestion = function(base, record) {
|
|
4908
|
+
const resource = new Packet.Resource(base);
|
|
4909
|
+
Object.assign(resource, record);
|
|
4910
|
+
return resource;
|
|
4911
|
+
};
|
|
4912
|
+
Packet.readStream = (socket) => {
|
|
4913
|
+
let chunks = [];
|
|
4914
|
+
let chunklen = 0;
|
|
4915
|
+
let received = false;
|
|
4916
|
+
let expected = false;
|
|
4917
|
+
return new Promise((resolve9, reject) => {
|
|
4918
|
+
const processMessage = () => {
|
|
4919
|
+
if (received)
|
|
4920
|
+
return;
|
|
4921
|
+
received = true;
|
|
4922
|
+
const buffer = Buffer.concat(chunks, chunklen);
|
|
4923
|
+
resolve9(buffer.slice(2));
|
|
4924
|
+
};
|
|
4925
|
+
socket.on("end", processMessage);
|
|
4926
|
+
socket.on("error", reject);
|
|
4927
|
+
socket.on("readable", () => {
|
|
4928
|
+
let chunk;
|
|
4929
|
+
while ((chunk = socket.read()) !== null) {
|
|
4930
|
+
chunks.push(chunk);
|
|
4931
|
+
chunklen += chunk.length;
|
|
4932
|
+
}
|
|
4933
|
+
if (!expected && chunklen >= 2) {
|
|
4934
|
+
if (chunks.length > 1) {
|
|
4935
|
+
chunks = [Buffer.concat(chunks, chunklen)];
|
|
4936
|
+
}
|
|
4937
|
+
expected = chunks[0].readUInt16BE(0);
|
|
4938
|
+
}
|
|
4939
|
+
if (chunklen >= 2 + expected) {
|
|
4940
|
+
processMessage();
|
|
4941
|
+
}
|
|
4942
|
+
});
|
|
4943
|
+
});
|
|
4944
|
+
};
|
|
4945
|
+
Packet.prototype.toBase64URL = function() {
|
|
4946
|
+
const buffer = this.toBuffer();
|
|
4947
|
+
const base64 = buffer.toString("base64");
|
|
4948
|
+
return base64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
|
|
4949
|
+
};
|
|
4950
|
+
module2.exports = Packet;
|
|
4951
|
+
module2.exports.toIPv6 = toIPv6;
|
|
4952
|
+
module2.exports.fromIPv6 = fromIPv6;
|
|
4953
|
+
}
|
|
4954
|
+
});
|
|
4955
|
+
|
|
4956
|
+
// ../../node_modules/dns2/server/udp.js
|
|
4957
|
+
var require_udp = __commonJS({
|
|
4958
|
+
"../../node_modules/dns2/server/udp.js"(exports, module2) {
|
|
4959
|
+
var udp = require("dgram");
|
|
4960
|
+
var Packet = require_packet();
|
|
4961
|
+
var Server = class extends udp.Socket {
|
|
4962
|
+
constructor(options) {
|
|
4963
|
+
let type = "udp4";
|
|
4964
|
+
if (typeof options === "object") {
|
|
4965
|
+
type = options.type;
|
|
4966
|
+
}
|
|
4967
|
+
super(type);
|
|
4968
|
+
if (typeof options === "function") {
|
|
4969
|
+
this.on("request", options);
|
|
4970
|
+
}
|
|
4971
|
+
this.on("message", this.handle.bind(this));
|
|
4972
|
+
}
|
|
4973
|
+
handle(data, rinfo) {
|
|
4974
|
+
try {
|
|
4975
|
+
const message = Packet.parse(data);
|
|
4976
|
+
this.emit("request", message, this.response.bind(this, rinfo), rinfo);
|
|
4977
|
+
} catch (e) {
|
|
4978
|
+
this.emit("requestError", e);
|
|
4979
|
+
}
|
|
4980
|
+
}
|
|
4981
|
+
response(rinfo, message) {
|
|
4982
|
+
if (message instanceof Packet) {
|
|
4983
|
+
message = message.toBuffer();
|
|
4984
|
+
}
|
|
4985
|
+
return new Promise((resolve9, reject) => {
|
|
4986
|
+
this.send(message, rinfo.port, rinfo.address, (err) => {
|
|
4987
|
+
if (err)
|
|
4988
|
+
return reject(err);
|
|
4989
|
+
resolve9(message);
|
|
4990
|
+
});
|
|
4991
|
+
});
|
|
4992
|
+
}
|
|
4993
|
+
listen(port, address) {
|
|
4994
|
+
return new Promise((resolve9) => this.bind(port, address, resolve9));
|
|
4995
|
+
}
|
|
4996
|
+
};
|
|
4997
|
+
module2.exports = Server;
|
|
4998
|
+
}
|
|
4999
|
+
});
|
|
5000
|
+
|
|
5001
|
+
// ../../node_modules/dns2/server/tcp.js
|
|
5002
|
+
var require_tcp = __commonJS({
|
|
5003
|
+
"../../node_modules/dns2/server/tcp.js"(exports, module2) {
|
|
5004
|
+
var tcp = require("net");
|
|
5005
|
+
var Packet = require_packet();
|
|
5006
|
+
var Server = class extends tcp.Server {
|
|
5007
|
+
constructor(options) {
|
|
5008
|
+
super();
|
|
5009
|
+
if (typeof options === "function") {
|
|
5010
|
+
this.on("request", options);
|
|
5011
|
+
}
|
|
5012
|
+
this.on("connection", this.handle.bind(this));
|
|
5013
|
+
}
|
|
5014
|
+
async handle(client) {
|
|
5015
|
+
try {
|
|
5016
|
+
const data = await Packet.readStream(client);
|
|
5017
|
+
const message = Packet.parse(data);
|
|
5018
|
+
this.emit("request", message, this.response.bind(this, client), client);
|
|
5019
|
+
} catch (e) {
|
|
5020
|
+
this.emit("requestError", e);
|
|
5021
|
+
client.destroy();
|
|
5022
|
+
}
|
|
5023
|
+
}
|
|
5024
|
+
response(client, message) {
|
|
5025
|
+
if (message instanceof Packet) {
|
|
5026
|
+
message = message.toBuffer();
|
|
5027
|
+
}
|
|
5028
|
+
const len = Buffer.alloc(2);
|
|
5029
|
+
len.writeUInt16BE(message.length);
|
|
5030
|
+
client.end(Buffer.concat([len, message]));
|
|
5031
|
+
}
|
|
5032
|
+
};
|
|
5033
|
+
module2.exports = Server;
|
|
5034
|
+
}
|
|
5035
|
+
});
|
|
5036
|
+
|
|
5037
|
+
// ../../node_modules/dns2/server/doh.js
|
|
5038
|
+
var require_doh = __commonJS({
|
|
5039
|
+
"../../node_modules/dns2/server/doh.js"(exports, module2) {
|
|
5040
|
+
var http = require("http");
|
|
5041
|
+
var https = require("https");
|
|
5042
|
+
var { URL: URL2 } = require("url");
|
|
5043
|
+
var Packet = require_packet();
|
|
5044
|
+
var EventEmitter = require("events");
|
|
5045
|
+
var { debuglog } = require("util");
|
|
5046
|
+
var debug = debuglog("dns2-server");
|
|
5047
|
+
var decodeBase64URL = (str) => {
|
|
5048
|
+
let queryData = str.replace(/-/g, "+").replace(/_/g, "/");
|
|
5049
|
+
const pad = queryData.length % 4;
|
|
5050
|
+
if (pad === 1)
|
|
5051
|
+
return;
|
|
5052
|
+
if (pad) {
|
|
5053
|
+
queryData += new Array(5 - pad).join("=");
|
|
5054
|
+
}
|
|
5055
|
+
return queryData;
|
|
5056
|
+
};
|
|
5057
|
+
var readStream = (stream) => new Promise((resolve9, reject) => {
|
|
5058
|
+
let buffer = "";
|
|
5059
|
+
stream.on("error", reject).on("data", (chunk) => {
|
|
5060
|
+
buffer += chunk;
|
|
5061
|
+
}).on("end", () => resolve9(buffer));
|
|
5062
|
+
});
|
|
5063
|
+
var Server = class extends EventEmitter {
|
|
5064
|
+
constructor(options) {
|
|
5065
|
+
super();
|
|
5066
|
+
const { ssl } = Object.assign(this, { cors: true }, options);
|
|
5067
|
+
this.server = (ssl ? https.createServer(options) : http.createServer()).on("request", this.handleRequest.bind(this)).on("listening", () => this.emit("listening", this.address())).on("error", (error) => this.emit("error", error)).on("close", () => {
|
|
5068
|
+
this.server.removeAllListeners();
|
|
5069
|
+
this.emit("close");
|
|
5070
|
+
});
|
|
5071
|
+
return this;
|
|
5072
|
+
}
|
|
5073
|
+
async handleRequest(client, res) {
|
|
5074
|
+
try {
|
|
5075
|
+
const { method, url, headers } = client;
|
|
5076
|
+
const { pathname, searchParams: query } = new URL2(url, "http://unused/");
|
|
5077
|
+
const { cors } = this;
|
|
5078
|
+
if (cors === true) {
|
|
5079
|
+
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
5080
|
+
} else if (typeof cors === "string") {
|
|
5081
|
+
res.setHeader("Access-Control-Allow-Origin", cors);
|
|
5082
|
+
res.setHeader("Vary", "Origin");
|
|
5083
|
+
} else if (typeof cors === "function") {
|
|
5084
|
+
const isAllowed = cors(headers.origin);
|
|
5085
|
+
res.setHeader("Access-Control-Allow-Origin", isAllowed ? headers.origin : "false");
|
|
5086
|
+
res.setHeader("Vary", "Origin");
|
|
5087
|
+
}
|
|
5088
|
+
debug("request", method, url);
|
|
5089
|
+
if (method !== "GET" && method !== "POST") {
|
|
5090
|
+
res.writeHead(405, { "Content-Type": "text/plain" });
|
|
5091
|
+
res.write("405 Method not allowed\n");
|
|
5092
|
+
res.end();
|
|
5093
|
+
return;
|
|
5094
|
+
}
|
|
5095
|
+
if (pathname !== "/dns-query") {
|
|
5096
|
+
res.writeHead(404, { "Content-Type": "text/plain" });
|
|
5097
|
+
res.write("404 Not Found\n");
|
|
5098
|
+
res.end();
|
|
5099
|
+
return;
|
|
5100
|
+
}
|
|
5101
|
+
const contentType = headers.accept;
|
|
5102
|
+
if (contentType !== "application/dns-message") {
|
|
5103
|
+
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
5104
|
+
res.write("400 Bad Request: Illegal content type\n");
|
|
5105
|
+
res.end();
|
|
5106
|
+
return;
|
|
5107
|
+
}
|
|
5108
|
+
let queryData;
|
|
5109
|
+
if (method === "GET") {
|
|
5110
|
+
const dns = query.get("dns");
|
|
5111
|
+
if (!dns) {
|
|
5112
|
+
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
5113
|
+
res.write("400 Bad Request: No query defined\n");
|
|
5114
|
+
res.end();
|
|
5115
|
+
return;
|
|
5116
|
+
}
|
|
5117
|
+
const base64 = decodeBase64URL(dns);
|
|
5118
|
+
if (!base64) {
|
|
5119
|
+
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
5120
|
+
res.write("400 Bad Request: Invalid query data\n");
|
|
5121
|
+
res.end();
|
|
5122
|
+
return;
|
|
5123
|
+
}
|
|
5124
|
+
queryData = Buffer.from(base64, "base64");
|
|
5125
|
+
} else if (method === "POST") {
|
|
5126
|
+
queryData = await readStream(client);
|
|
5127
|
+
}
|
|
5128
|
+
const message = Packet.parse(queryData);
|
|
5129
|
+
this.emit("request", message, this.response.bind(this, res), client);
|
|
5130
|
+
} catch (e) {
|
|
5131
|
+
this.emit("requestError", e);
|
|
5132
|
+
res.destroy();
|
|
5133
|
+
}
|
|
5134
|
+
}
|
|
5135
|
+
/**
|
|
5136
|
+
* Send of the response to the client
|
|
5137
|
+
* @param {*} res
|
|
5138
|
+
* @param {*} message
|
|
5139
|
+
*/
|
|
5140
|
+
response(res, message) {
|
|
5141
|
+
debug("response");
|
|
5142
|
+
res.setHeader("Content-Type", "application/dns-message");
|
|
5143
|
+
res.writeHead(200);
|
|
5144
|
+
res.end(message.toBuffer());
|
|
5145
|
+
}
|
|
5146
|
+
/**
|
|
5147
|
+
* listen
|
|
5148
|
+
* @param {*} port
|
|
5149
|
+
* @returns
|
|
5150
|
+
*/
|
|
5151
|
+
listen(port, address) {
|
|
5152
|
+
return this.server.listen(port || this.port, address);
|
|
5153
|
+
}
|
|
5154
|
+
address() {
|
|
5155
|
+
return this.server.address();
|
|
5156
|
+
}
|
|
5157
|
+
close() {
|
|
5158
|
+
return this.server.close();
|
|
5159
|
+
}
|
|
5160
|
+
};
|
|
5161
|
+
module2.exports = Server;
|
|
5162
|
+
}
|
|
5163
|
+
});
|
|
5164
|
+
|
|
5165
|
+
// ../../node_modules/dns2/server/dns.js
|
|
5166
|
+
var require_dns = __commonJS({
|
|
5167
|
+
"../../node_modules/dns2/server/dns.js"(exports, module2) {
|
|
5168
|
+
var EventEmitter = require("events");
|
|
5169
|
+
var DOHServer = require_doh();
|
|
5170
|
+
var TCPServer = require_tcp();
|
|
5171
|
+
var UDPServer = require_udp();
|
|
5172
|
+
var DNSServer = class extends EventEmitter {
|
|
5173
|
+
constructor(options = {}) {
|
|
5174
|
+
super();
|
|
5175
|
+
this.servers = {};
|
|
5176
|
+
if (options.doh) {
|
|
5177
|
+
this.servers.doh = new DOHServer(options.doh).on("error", (error) => this.emit("error", error, "doh"));
|
|
5178
|
+
}
|
|
5179
|
+
if (options.tcp) {
|
|
5180
|
+
this.servers.tcp = new TCPServer().on("error", (error) => this.emit("error", error, "tcp"));
|
|
5181
|
+
}
|
|
5182
|
+
if (options.udp) {
|
|
5183
|
+
this.servers.udp = new UDPServer(typeof options.udp === "object" ? options.udp : void 0).on("error", (error) => this.emit("error", error, "udp"));
|
|
5184
|
+
}
|
|
5185
|
+
const servers = Object.values(this.servers);
|
|
5186
|
+
this.closed = Promise.all(
|
|
5187
|
+
servers.map((server) => new Promise((resolve9) => server.once("close", resolve9)))
|
|
5188
|
+
).then(() => {
|
|
5189
|
+
this.emit("close");
|
|
5190
|
+
});
|
|
5191
|
+
this.listening = Promise.all(
|
|
5192
|
+
servers.map((server) => new Promise((resolve9) => server.once("listening", resolve9)))
|
|
5193
|
+
).then(() => {
|
|
5194
|
+
const addresses = this.addresses();
|
|
5195
|
+
this.emit("listening", addresses);
|
|
5196
|
+
return addresses;
|
|
5197
|
+
});
|
|
5198
|
+
const emitRequest = (request2, send, client) => this.emit("request", request2, send, client);
|
|
5199
|
+
const emitRequestError = (error) => this.emit("requestError", error);
|
|
5200
|
+
for (const server of servers) {
|
|
5201
|
+
server.on("request", emitRequest);
|
|
5202
|
+
server.on("requestError", emitRequestError);
|
|
5203
|
+
}
|
|
5204
|
+
if (options.handle) {
|
|
5205
|
+
this.on("request", options.handle.bind(options));
|
|
5206
|
+
}
|
|
5207
|
+
}
|
|
5208
|
+
addresses() {
|
|
5209
|
+
const addresses = {};
|
|
5210
|
+
const { udp, tcp, doh } = this.servers;
|
|
5211
|
+
if (udp) {
|
|
5212
|
+
addresses.udp = udp.address();
|
|
5213
|
+
}
|
|
5214
|
+
if (tcp) {
|
|
5215
|
+
addresses.tcp = tcp.address();
|
|
5216
|
+
}
|
|
5217
|
+
if (doh) {
|
|
5218
|
+
addresses.doh = doh.address();
|
|
5219
|
+
}
|
|
5220
|
+
return addresses;
|
|
5221
|
+
}
|
|
5222
|
+
listen(options = {}) {
|
|
5223
|
+
for (const serverType of Object.keys(this.servers)) {
|
|
5224
|
+
const server = this.servers[serverType];
|
|
5225
|
+
const serverOptions = options[serverType];
|
|
5226
|
+
if (serverOptions && serverOptions.port) {
|
|
5227
|
+
server.listen(serverOptions.port, serverOptions.address);
|
|
5228
|
+
} else {
|
|
5229
|
+
server.listen(serverOptions);
|
|
5230
|
+
}
|
|
5231
|
+
}
|
|
5232
|
+
return this.listening;
|
|
5233
|
+
}
|
|
5234
|
+
close() {
|
|
5235
|
+
const { doh, udp, tcp } = this.servers;
|
|
5236
|
+
if (udp) {
|
|
5237
|
+
udp.close();
|
|
5238
|
+
}
|
|
5239
|
+
if (tcp) {
|
|
5240
|
+
tcp.close();
|
|
5241
|
+
}
|
|
5242
|
+
if (doh) {
|
|
5243
|
+
doh.close();
|
|
5244
|
+
}
|
|
5245
|
+
return this.closed;
|
|
5246
|
+
}
|
|
5247
|
+
};
|
|
5248
|
+
module2.exports = DNSServer;
|
|
5249
|
+
}
|
|
5250
|
+
});
|
|
5251
|
+
|
|
5252
|
+
// ../../node_modules/dns2/server/index.js
|
|
5253
|
+
var require_server = __commonJS({
|
|
5254
|
+
"../../node_modules/dns2/server/index.js"(exports, module2) {
|
|
5255
|
+
var UDPServer = require_udp();
|
|
5256
|
+
var TCPServer = require_tcp();
|
|
5257
|
+
var DOHServer = require_doh();
|
|
5258
|
+
var DNSServer = require_dns();
|
|
5259
|
+
var createUDPServer = (options) => {
|
|
5260
|
+
return new UDPServer(options);
|
|
5261
|
+
};
|
|
5262
|
+
var createTCPServer = (options) => {
|
|
5263
|
+
return new TCPServer(options);
|
|
5264
|
+
};
|
|
5265
|
+
var createDOHServer = (options) => {
|
|
5266
|
+
return new DOHServer(options);
|
|
5267
|
+
};
|
|
5268
|
+
var createServer = (options) => {
|
|
5269
|
+
return new DNSServer(options);
|
|
5270
|
+
};
|
|
5271
|
+
module2.exports = {
|
|
5272
|
+
UDPServer,
|
|
5273
|
+
TCPServer,
|
|
5274
|
+
DOHServer,
|
|
5275
|
+
DNSServer,
|
|
5276
|
+
createTCPServer,
|
|
5277
|
+
createUDPServer,
|
|
5278
|
+
createDOHServer,
|
|
5279
|
+
createServer
|
|
5280
|
+
};
|
|
5281
|
+
}
|
|
5282
|
+
});
|
|
5283
|
+
|
|
5284
|
+
// ../../node_modules/dns2/client/tcp.js
|
|
5285
|
+
var require_tcp2 = __commonJS({
|
|
5286
|
+
"../../node_modules/dns2/client/tcp.js"(exports, module2) {
|
|
5287
|
+
var tcp = require("net");
|
|
5288
|
+
var Packet = require_packet();
|
|
5289
|
+
module2.exports = ({ dns = "1.1.1.1", port = 53 } = {}) => {
|
|
5290
|
+
return async (name, type = "A", cls = Packet.CLASS.IN, { clientIp, recursive = true } = {}) => {
|
|
5291
|
+
const packet = new Packet();
|
|
5292
|
+
if (recursive) {
|
|
5293
|
+
packet.header.rd = 1;
|
|
5294
|
+
}
|
|
5295
|
+
if (clientIp) {
|
|
5296
|
+
packet.additionals.push(Packet.Resource.EDNS([
|
|
5297
|
+
Packet.Resource.EDNS.ECS(clientIp)
|
|
5298
|
+
]));
|
|
5299
|
+
}
|
|
5300
|
+
packet.questions.push({
|
|
5301
|
+
name,
|
|
5302
|
+
class: cls,
|
|
5303
|
+
type: Packet.TYPE[type]
|
|
5304
|
+
});
|
|
5305
|
+
const message = packet.toBuffer();
|
|
5306
|
+
const len = Buffer.alloc(2);
|
|
5307
|
+
len.writeUInt16BE(message.length);
|
|
5308
|
+
const client = tcp.connect({ host: dns, port });
|
|
5309
|
+
client.end(Buffer.concat([len, message]));
|
|
5310
|
+
const data = await Packet.readStream(client);
|
|
5311
|
+
if (!data.length) {
|
|
5312
|
+
throw new Error("Empty TCP response");
|
|
5313
|
+
}
|
|
5314
|
+
return Packet.parse(data);
|
|
5315
|
+
};
|
|
5316
|
+
};
|
|
5317
|
+
}
|
|
5318
|
+
});
|
|
5319
|
+
|
|
5320
|
+
// ../../node_modules/dns2/client/doh.js
|
|
5321
|
+
var require_doh2 = __commonJS({
|
|
5322
|
+
"../../node_modules/dns2/client/doh.js"(exports, module2) {
|
|
5323
|
+
var Packet = require_packet();
|
|
5324
|
+
var defaultGet = (url) => new Promise((resolve9, reject) => {
|
|
5325
|
+
const headers = {
|
|
5326
|
+
accept: "application/dns-message"
|
|
5327
|
+
};
|
|
5328
|
+
const base = url.startsWith("https") ? require("https") : require("http");
|
|
5329
|
+
const req = base.get(url, { headers }, resolve9);
|
|
5330
|
+
req.on("error", reject);
|
|
5331
|
+
});
|
|
5332
|
+
var readStream = (stream) => {
|
|
5333
|
+
const buffer = [];
|
|
5334
|
+
return new Promise((resolve9, reject) => {
|
|
5335
|
+
stream.on("error", reject).on("data", (chunk) => buffer.push(chunk)).on("end", () => resolve9(Buffer.concat(buffer)));
|
|
5336
|
+
});
|
|
5337
|
+
};
|
|
5338
|
+
var DOHClient = ({ dns, http, get = defaultGet } = {}) => {
|
|
5339
|
+
return (name, type = "A", cls = Packet.CLASS.IN, { clientIp, recursive = true } = {}) => {
|
|
5340
|
+
const packet = new Packet();
|
|
5341
|
+
if (recursive) {
|
|
5342
|
+
packet.header.rd = 1;
|
|
5343
|
+
}
|
|
5344
|
+
if (clientIp) {
|
|
5345
|
+
packet.additionals.push(Packet.Resource.EDNS([
|
|
5346
|
+
Packet.Resource.EDNS.ECS(clientIp)
|
|
5347
|
+
]));
|
|
5348
|
+
}
|
|
5349
|
+
packet.questions.push({
|
|
5350
|
+
name,
|
|
5351
|
+
class: cls,
|
|
5352
|
+
type: Packet.TYPE[type]
|
|
5353
|
+
});
|
|
5354
|
+
const query = packet.toBase64URL();
|
|
5355
|
+
return Promise.resolve(get(`http${http ? "" : "s"}://${dns}/dns-query?dns=${query}`)).then(readStream).then(Packet.parse);
|
|
5356
|
+
};
|
|
5357
|
+
};
|
|
5358
|
+
module2.exports = DOHClient;
|
|
5359
|
+
}
|
|
5360
|
+
});
|
|
5361
|
+
|
|
5362
|
+
// ../../node_modules/dns2/client/udp.js
|
|
5363
|
+
var require_udp2 = __commonJS({
|
|
5364
|
+
"../../node_modules/dns2/client/udp.js"(exports, module2) {
|
|
5365
|
+
var udp = require("dgram");
|
|
5366
|
+
var Packet = require_packet();
|
|
5367
|
+
var { equal } = require("assert");
|
|
5368
|
+
var { debuglog } = require("util");
|
|
5369
|
+
var debug = debuglog("dns2");
|
|
5370
|
+
module2.exports = ({ dns = "8.8.8.8", port = 53, socketType = "udp4" } = {}) => {
|
|
5371
|
+
return (name, type = "A", cls = Packet.CLASS.IN, { clientIp, recursive = true } = {}) => {
|
|
5372
|
+
const query = new Packet();
|
|
5373
|
+
query.header.id = Math.random() * 1e4 | 0;
|
|
5374
|
+
if (recursive) {
|
|
5375
|
+
query.header.rd = 1;
|
|
5376
|
+
}
|
|
5377
|
+
if (clientIp) {
|
|
5378
|
+
query.additionals.push(Packet.Resource.EDNS([
|
|
5379
|
+
Packet.Resource.EDNS.ECS(clientIp)
|
|
5380
|
+
]));
|
|
5381
|
+
}
|
|
5382
|
+
query.questions.push({
|
|
5383
|
+
name,
|
|
5384
|
+
class: cls,
|
|
5385
|
+
type: Packet.TYPE[type]
|
|
5386
|
+
});
|
|
5387
|
+
const client = new udp.Socket(socketType);
|
|
5388
|
+
return new Promise((resolve9, reject) => {
|
|
5389
|
+
client.once("message", function onMessage(message) {
|
|
5390
|
+
client.close();
|
|
5391
|
+
const response = Packet.parse(message);
|
|
5392
|
+
equal(response.header.id, query.header.id);
|
|
5393
|
+
resolve9(response);
|
|
5394
|
+
});
|
|
5395
|
+
debug("send", dns, query.toBuffer());
|
|
5396
|
+
client.send(query.toBuffer(), port, dns, (err) => err && reject(err));
|
|
5397
|
+
});
|
|
5398
|
+
};
|
|
5399
|
+
};
|
|
5400
|
+
}
|
|
5401
|
+
});
|
|
5402
|
+
|
|
5403
|
+
// ../../node_modules/dns2/client/google.js
|
|
5404
|
+
var require_google = __commonJS({
|
|
5405
|
+
"../../node_modules/dns2/client/google.js"(exports, module2) {
|
|
5406
|
+
var https = require("https");
|
|
5407
|
+
var get = (url) => new Promise((resolve9) => https.get(url, resolve9));
|
|
5408
|
+
var readStream = (stream) => {
|
|
5409
|
+
const buffer = [];
|
|
5410
|
+
return new Promise((resolve9, reject) => {
|
|
5411
|
+
stream.on("error", reject).on("data", (chunk) => {
|
|
5412
|
+
buffer.push(chunk);
|
|
5413
|
+
}).on("end", () => resolve9(Buffer.concat(buffer)));
|
|
5414
|
+
});
|
|
5415
|
+
};
|
|
5416
|
+
var GoogleClient = () => (name, type = "ANY") => {
|
|
5417
|
+
return Promise.resolve().then(() => get(`https://dns.google.com/resolve?name=${name}&type=${type}`)).then(readStream).then(JSON.parse);
|
|
5418
|
+
};
|
|
5419
|
+
module2.exports = GoogleClient;
|
|
5420
|
+
}
|
|
5421
|
+
});
|
|
5422
|
+
|
|
5423
|
+
// ../../node_modules/dns2/index.js
|
|
5424
|
+
var require_dns2 = __commonJS({
|
|
5425
|
+
"../../node_modules/dns2/index.js"(exports, module2) {
|
|
5426
|
+
var {
|
|
5427
|
+
TCPServer,
|
|
5428
|
+
UDPServer,
|
|
5429
|
+
DOHServer,
|
|
5430
|
+
createTCPServer,
|
|
5431
|
+
createUDPServer,
|
|
5432
|
+
createDOHServer,
|
|
5433
|
+
createServer
|
|
5434
|
+
} = require_server();
|
|
5435
|
+
var EventEmitter = require("events");
|
|
5436
|
+
var DNS = class extends EventEmitter {
|
|
5437
|
+
constructor(options) {
|
|
5438
|
+
super();
|
|
5439
|
+
Object.assign(this, {
|
|
5440
|
+
port: 53,
|
|
5441
|
+
retries: 3,
|
|
5442
|
+
timeout: 3,
|
|
5443
|
+
recursive: true,
|
|
5444
|
+
resolverProtocol: "UDP",
|
|
5445
|
+
nameServers: [
|
|
5446
|
+
"8.8.8.8",
|
|
5447
|
+
"114.114.114.114"
|
|
5448
|
+
],
|
|
5449
|
+
rootServers: [
|
|
5450
|
+
"a",
|
|
5451
|
+
"b",
|
|
5452
|
+
"c",
|
|
5453
|
+
"d",
|
|
5454
|
+
"e",
|
|
5455
|
+
"f",
|
|
5456
|
+
"g",
|
|
5457
|
+
"h",
|
|
5458
|
+
"i",
|
|
5459
|
+
"j",
|
|
5460
|
+
"k",
|
|
5461
|
+
"l",
|
|
5462
|
+
"m"
|
|
5463
|
+
].map((x2) => `${x2}.root-servers.net`)
|
|
5464
|
+
}, options);
|
|
5465
|
+
}
|
|
5466
|
+
/**
|
|
5467
|
+
* query
|
|
5468
|
+
* @param {*} questions
|
|
5469
|
+
*/
|
|
5470
|
+
query(name, type, cls, clientIp) {
|
|
5471
|
+
const { port, nameServers, recursive, resolverProtocol = "UDP" } = this;
|
|
5472
|
+
const createResolver = DNS[resolverProtocol + "Client"];
|
|
5473
|
+
return Promise.race(nameServers.map((address) => {
|
|
5474
|
+
const resolve9 = createResolver({ dns: address, port, recursive });
|
|
5475
|
+
return resolve9(name, type, cls, clientIp);
|
|
5476
|
+
}));
|
|
5477
|
+
}
|
|
5478
|
+
/**
|
|
5479
|
+
* resolve
|
|
5480
|
+
* @param {*} domain
|
|
5481
|
+
* @param {*} type
|
|
5482
|
+
* @param {*} cls
|
|
5483
|
+
*/
|
|
5484
|
+
resolve(domain, type = "ANY", cls = DNS.Packet.CLASS.IN, clientIp = void 0) {
|
|
5485
|
+
return this.query(domain, type, cls, clientIp);
|
|
5486
|
+
}
|
|
5487
|
+
resolveA(domain, clientIp) {
|
|
5488
|
+
return this.resolve(domain, "A", void 0, clientIp);
|
|
5489
|
+
}
|
|
5490
|
+
resolveAAAA(domain) {
|
|
5491
|
+
return this.resolve(domain, "AAAA");
|
|
5492
|
+
}
|
|
5493
|
+
resolveMX(domain) {
|
|
5494
|
+
return this.resolve(domain, "MX");
|
|
5495
|
+
}
|
|
5496
|
+
resolveCNAME(domain) {
|
|
5497
|
+
return this.resolve(domain, "CNAME");
|
|
5498
|
+
}
|
|
5499
|
+
resolvePTR(domain) {
|
|
5500
|
+
return this.resolve(domain, "PTR");
|
|
5501
|
+
}
|
|
5502
|
+
};
|
|
5503
|
+
DNS.TCPServer = TCPServer;
|
|
5504
|
+
DNS.UDPServer = UDPServer;
|
|
5505
|
+
DNS.DOHServer = DOHServer;
|
|
5506
|
+
DNS.createUDPServer = createUDPServer;
|
|
5507
|
+
DNS.createTCPServer = createTCPServer;
|
|
5508
|
+
DNS.createDOHServer = createDOHServer;
|
|
5509
|
+
DNS.createServer = createServer;
|
|
5510
|
+
DNS.TCPClient = require_tcp2();
|
|
5511
|
+
DNS.DOHClient = require_doh2();
|
|
5512
|
+
DNS.UDPClient = require_udp2();
|
|
5513
|
+
DNS.GoogleClient = require_google();
|
|
5514
|
+
DNS.Packet = require_packet();
|
|
5515
|
+
module2.exports = DNS;
|
|
5516
|
+
}
|
|
5517
|
+
});
|
|
5518
|
+
|
|
4192
5519
|
// node_modules/undici/lib/core/symbols.js
|
|
4193
5520
|
var require_symbols = __commonJS({
|
|
4194
5521
|
"node_modules/undici/lib/core/symbols.js"(exports, module2) {
|
|
@@ -52612,7 +53939,9 @@ var require_typescript2 = __commonJS({
|
|
|
52612
53939
|
// src/cli.ts
|
|
52613
53940
|
var cli_exports = {};
|
|
52614
53941
|
__export(cli_exports, {
|
|
52615
|
-
|
|
53942
|
+
C3_DEFAULTS: () => C3_DEFAULTS,
|
|
53943
|
+
main: () => main,
|
|
53944
|
+
parseArgs: () => parseArgs
|
|
52616
53945
|
});
|
|
52617
53946
|
module.exports = __toCommonJS(cli_exports);
|
|
52618
53947
|
var import_haikunator = __toESM(require_dist_node());
|
|
@@ -53153,8 +54482,6 @@ var space = (n = 1) => {
|
|
|
53153
54482
|
return hidden("\u200A".repeat(n));
|
|
53154
54483
|
};
|
|
53155
54484
|
var logRaw = (msg) => {
|
|
53156
|
-
if (process.env.VITEST)
|
|
53157
|
-
return;
|
|
53158
54485
|
process.stdout.write(`${msg}
|
|
53159
54486
|
`);
|
|
53160
54487
|
};
|
|
@@ -54347,178 +55674,169 @@ var logUpdateStderr = createLogUpdate(import_node_process6.default.stderr);
|
|
|
54347
55674
|
var grayBar = gray(shapes.bar);
|
|
54348
55675
|
var blCorner = gray(shapes.corners.bl);
|
|
54349
55676
|
var leftT = gray(shapes.leftT);
|
|
54350
|
-
var
|
|
54351
|
-
|
|
54352
|
-
const
|
|
54353
|
-
|
|
54354
|
-
|
|
54355
|
-
|
|
54356
|
-
|
|
54357
|
-
|
|
54358
|
-
|
|
54359
|
-
|
|
54360
|
-
case "initial":
|
|
54361
|
-
body += `${blCorner} ${bold(question)} ${dim(helpText)}
|
|
54362
|
-
`;
|
|
54363
|
-
body += `${space(2)}${gray(format3(defaultValue))}
|
|
54364
|
-
`;
|
|
54365
|
-
break;
|
|
54366
|
-
case "active":
|
|
54367
|
-
body += `${blCorner} ${bold(question)} ${dim(helpText)}
|
|
54368
|
-
`;
|
|
54369
|
-
body += `${space(2)}${format3(this.value || dim(defaultValue))}
|
|
54370
|
-
`;
|
|
54371
|
-
break;
|
|
54372
|
-
case "submit":
|
|
54373
|
-
body += `${leftT} ${question}
|
|
54374
|
-
`;
|
|
54375
|
-
body += `${grayBar} ${renderSubmitted(
|
|
54376
|
-
format3(this.value)
|
|
54377
|
-
)}
|
|
54378
|
-
${grayBar}`;
|
|
54379
|
-
break;
|
|
54380
|
-
case "error":
|
|
54381
|
-
body += `${leftT} ${status.error} ${dim(this.error)}
|
|
54382
|
-
`;
|
|
54383
|
-
body += `${grayBar}
|
|
54384
|
-
`;
|
|
54385
|
-
body += `${blCorner} ${question} ${dim(helpText)}
|
|
54386
|
-
`;
|
|
54387
|
-
body += `${space(2)}${format3(this.value)}
|
|
54388
|
-
`;
|
|
54389
|
-
break;
|
|
54390
|
-
default:
|
|
54391
|
-
break;
|
|
54392
|
-
}
|
|
54393
|
-
return body;
|
|
54394
|
-
}
|
|
54395
|
-
});
|
|
54396
|
-
let value;
|
|
54397
|
-
if (acceptDefault) {
|
|
54398
|
-
logRaw(`${leftT} ${question}`);
|
|
54399
|
-
logRaw(`${grayBar} ${renderSubmitted(defaultValue)}
|
|
54400
|
-
${grayBar}`);
|
|
54401
|
-
value = defaultValue;
|
|
54402
|
-
validate?.(value);
|
|
54403
|
-
} else {
|
|
54404
|
-
value = await prompt.prompt();
|
|
54405
|
-
if (eD(value)) {
|
|
54406
|
-
cancel("Operation cancelled.");
|
|
54407
|
-
process.exit(0);
|
|
54408
|
-
}
|
|
54409
|
-
}
|
|
55677
|
+
var processArgument = async (args, name, promptConfig) => {
|
|
55678
|
+
let value = args[name];
|
|
55679
|
+
const renderSubmitted = getRenderers(promptConfig).submit;
|
|
55680
|
+
if (value !== void 0) {
|
|
55681
|
+
promptConfig.validate?.(value);
|
|
55682
|
+
const lines = renderSubmitted({ value });
|
|
55683
|
+
logRaw(lines.join("\n"));
|
|
55684
|
+
return value;
|
|
55685
|
+
}
|
|
55686
|
+
value = await inputPrompt(promptConfig);
|
|
54410
55687
|
return value;
|
|
54411
55688
|
};
|
|
54412
|
-
var
|
|
54413
|
-
const
|
|
54414
|
-
|
|
54415
|
-
const
|
|
54416
|
-
|
|
54417
|
-
|
|
54418
|
-
|
|
54419
|
-
|
|
54420
|
-
|
|
54421
|
-
|
|
54422
|
-
|
|
54423
|
-
|
|
54424
|
-
|
|
54425
|
-
|
|
54426
|
-
let body = ``;
|
|
54427
|
-
switch (this.state) {
|
|
54428
|
-
case "submit":
|
|
54429
|
-
body += `${leftT} ${question}
|
|
54430
|
-
`;
|
|
54431
|
-
body += `${grayBar} ${renderSubmitted(options[this.cursor])}`;
|
|
54432
|
-
body += `
|
|
54433
|
-
${grayBar}`;
|
|
54434
|
-
break;
|
|
54435
|
-
default:
|
|
54436
|
-
body += `${blCorner} ${bold(question)} ${dim(helpText)}
|
|
54437
|
-
`;
|
|
54438
|
-
body += `${options.map(renderOption).join(`
|
|
54439
|
-
`)}
|
|
54440
|
-
`;
|
|
54441
|
-
break;
|
|
55689
|
+
var inputPrompt = async (promptConfig) => {
|
|
55690
|
+
const renderers = getRenderers(promptConfig);
|
|
55691
|
+
let prompt;
|
|
55692
|
+
const dispatchRender = (props) => {
|
|
55693
|
+
const renderedLines = renderers[props.state](props);
|
|
55694
|
+
return renderedLines.join("\n");
|
|
55695
|
+
};
|
|
55696
|
+
if (promptConfig.type === "select") {
|
|
55697
|
+
prompt = new ED({
|
|
55698
|
+
...promptConfig,
|
|
55699
|
+
options: promptConfig.options,
|
|
55700
|
+
initialValue: String(promptConfig.defaultValue),
|
|
55701
|
+
render() {
|
|
55702
|
+
return dispatchRender(this);
|
|
54442
55703
|
}
|
|
54443
|
-
|
|
54444
|
-
|
|
54445
|
-
|
|
54446
|
-
|
|
54447
|
-
|
|
54448
|
-
|
|
54449
|
-
|
|
54450
|
-
|
|
54451
|
-
|
|
54452
|
-
|
|
54453
|
-
|
|
54454
|
-
);
|
|
54455
|
-
logRaw(`${grayBar}`);
|
|
54456
|
-
value = defaultValue;
|
|
55704
|
+
});
|
|
55705
|
+
} else if (promptConfig.type === "confirm") {
|
|
55706
|
+
prompt = new sD({
|
|
55707
|
+
...promptConfig,
|
|
55708
|
+
initialValue: Boolean(promptConfig.defaultValue),
|
|
55709
|
+
active: promptConfig.activeText || "",
|
|
55710
|
+
inactive: promptConfig.inactiveText || "",
|
|
55711
|
+
render() {
|
|
55712
|
+
return dispatchRender(this);
|
|
55713
|
+
}
|
|
55714
|
+
});
|
|
54457
55715
|
} else {
|
|
54458
|
-
|
|
54459
|
-
|
|
54460
|
-
|
|
54461
|
-
|
|
54462
|
-
|
|
55716
|
+
prompt = new oD({
|
|
55717
|
+
...promptConfig,
|
|
55718
|
+
defaultValue: String(promptConfig.defaultValue),
|
|
55719
|
+
render() {
|
|
55720
|
+
return dispatchRender(this);
|
|
55721
|
+
}
|
|
55722
|
+
});
|
|
54463
55723
|
}
|
|
54464
|
-
|
|
55724
|
+
const input = await prompt.prompt();
|
|
55725
|
+
if (eD(input)) {
|
|
55726
|
+
cancel("Operation cancelled.");
|
|
55727
|
+
process.exit(0);
|
|
55728
|
+
}
|
|
55729
|
+
return input;
|
|
55730
|
+
};
|
|
55731
|
+
var renderSubmit = (config14, value) => {
|
|
55732
|
+
const { question, label } = config14;
|
|
55733
|
+
const content = config14.type === "confirm" ? `${grayBar} ${brandColor(value)} ${dim(label)}` : `${grayBar} ${brandColor(label)} ${dim(value)}`;
|
|
55734
|
+
return [`${leftT} ${question}`, content, `${grayBar}`];
|
|
54465
55735
|
};
|
|
54466
|
-
var
|
|
55736
|
+
var handleCancel = () => {
|
|
55737
|
+
cancel("Operation cancelled.");
|
|
55738
|
+
process.exit(0);
|
|
55739
|
+
};
|
|
55740
|
+
var getRenderers = (config14) => {
|
|
55741
|
+
switch (config14.type) {
|
|
55742
|
+
case "select":
|
|
55743
|
+
return getSelectRenderers(config14);
|
|
55744
|
+
case "confirm":
|
|
55745
|
+
return getConfirmRenderers(config14);
|
|
55746
|
+
case "text":
|
|
55747
|
+
return getTextRenderers(config14);
|
|
55748
|
+
}
|
|
55749
|
+
};
|
|
55750
|
+
var getTextRenderers = (config14) => {
|
|
54467
55751
|
const {
|
|
54468
|
-
|
|
54469
|
-
inactiveText,
|
|
55752
|
+
defaultValue,
|
|
54470
55753
|
question,
|
|
54471
|
-
|
|
54472
|
-
|
|
54473
|
-
|
|
54474
|
-
|
|
54475
|
-
const
|
|
55754
|
+
helpText: _helpText,
|
|
55755
|
+
format: _format
|
|
55756
|
+
} = config14;
|
|
55757
|
+
const helpText = _helpText ?? "";
|
|
55758
|
+
const format3 = _format ?? ((val) => String(val));
|
|
55759
|
+
return {
|
|
55760
|
+
initial: () => [
|
|
55761
|
+
`${blCorner} ${bold(question)} ${dim(helpText)}`,
|
|
55762
|
+
`${space(2)}${gray(format3(defaultValue))}`,
|
|
55763
|
+
``
|
|
55764
|
+
// extra line for readability
|
|
55765
|
+
],
|
|
55766
|
+
active: ({ value }) => [
|
|
55767
|
+
`${blCorner} ${bold(question)} ${dim(helpText)}`,
|
|
55768
|
+
`${space(2)}${format3(value || dim(defaultValue))}`,
|
|
55769
|
+
``
|
|
55770
|
+
// extra line for readability
|
|
55771
|
+
],
|
|
55772
|
+
error: ({ value, error }) => [
|
|
55773
|
+
`${leftT} ${status.error} ${dim(error)}`,
|
|
55774
|
+
`${grayBar}`,
|
|
55775
|
+
`${blCorner} ${question} ${dim(helpText)}`,
|
|
55776
|
+
`${space(2)}${format3(value)}`,
|
|
55777
|
+
``
|
|
55778
|
+
// extra line for readability
|
|
55779
|
+
],
|
|
55780
|
+
submit: ({ value }) => renderSubmit(config14, format3(value)),
|
|
55781
|
+
cancel: handleCancel
|
|
55782
|
+
};
|
|
55783
|
+
};
|
|
55784
|
+
var getSelectRenderers = (config14) => {
|
|
55785
|
+
const { options, question, helpText: _helpText } = config14;
|
|
55786
|
+
const helpText = _helpText ?? "";
|
|
55787
|
+
const defaultRenderer = ({ cursor }) => {
|
|
55788
|
+
const renderOption = (opt, i) => {
|
|
55789
|
+
const { label: optionLabel } = opt;
|
|
55790
|
+
const active = i === cursor;
|
|
55791
|
+
const text = active ? blue.underline(optionLabel) : dim(optionLabel);
|
|
55792
|
+
const indicator = active ? blue(shapes.radioActive) : dim(shapes.radioInactive);
|
|
55793
|
+
return `${space(2)}${indicator} ${text}`;
|
|
55794
|
+
};
|
|
55795
|
+
return [
|
|
55796
|
+
`${blCorner} ${bold(question)} ${dim(helpText)}`,
|
|
55797
|
+
`${options.map(renderOption).join(`
|
|
55798
|
+
`)}`,
|
|
55799
|
+
``
|
|
55800
|
+
// extra line for readability
|
|
55801
|
+
];
|
|
55802
|
+
};
|
|
55803
|
+
return {
|
|
55804
|
+
initial: defaultRenderer,
|
|
55805
|
+
active: defaultRenderer,
|
|
55806
|
+
confirm: defaultRenderer,
|
|
55807
|
+
error: defaultRenderer,
|
|
55808
|
+
submit: ({ value }) => renderSubmit(
|
|
55809
|
+
config14,
|
|
55810
|
+
options.find((o2) => o2.value === value)?.label
|
|
55811
|
+
),
|
|
55812
|
+
cancel: handleCancel
|
|
55813
|
+
};
|
|
55814
|
+
};
|
|
55815
|
+
var getConfirmRenderers = (config14) => {
|
|
55816
|
+
const { activeText, inactiveText, question, helpText: _helpText } = config14;
|
|
55817
|
+
const helpText = _helpText ?? "";
|
|
54476
55818
|
const active = activeText || "Yes";
|
|
54477
55819
|
const inactive = inactiveText || "No";
|
|
54478
|
-
const
|
|
54479
|
-
|
|
54480
|
-
|
|
54481
|
-
|
|
54482
|
-
|
|
54483
|
-
|
|
54484
|
-
|
|
54485
|
-
|
|
54486
|
-
|
|
54487
|
-
|
|
54488
|
-
|
|
54489
|
-
|
|
54490
|
-
|
|
54491
|
-
|
|
54492
|
-
|
|
54493
|
-
|
|
54494
|
-
default:
|
|
54495
|
-
body += `${blCorner} ${bold(question)} ${dim(helpText)}
|
|
54496
|
-
`;
|
|
54497
|
-
body += `${space(2)}${yesColor(active)} / ${noColor(inactive)}
|
|
54498
|
-
`;
|
|
54499
|
-
break;
|
|
54500
|
-
}
|
|
54501
|
-
return body;
|
|
54502
|
-
}
|
|
54503
|
-
});
|
|
54504
|
-
let value;
|
|
54505
|
-
if (acceptDefault) {
|
|
54506
|
-
logRaw(`${leftT} ${question}`);
|
|
54507
|
-
logRaw(`${grayBar} ${renderSubmitted(defaultValue)}`);
|
|
54508
|
-
logRaw(`${grayBar}`);
|
|
54509
|
-
value = defaultValue;
|
|
54510
|
-
} else {
|
|
54511
|
-
value = Boolean(await prompt.prompt());
|
|
54512
|
-
if (eD(value)) {
|
|
54513
|
-
cancel("Operation cancelled.");
|
|
54514
|
-
process.exit(0);
|
|
54515
|
-
}
|
|
54516
|
-
}
|
|
54517
|
-
return value;
|
|
55820
|
+
const defaultRenderer = ({ value }) => {
|
|
55821
|
+
const yesColor = value ? blue : dim;
|
|
55822
|
+
const noColor = value ? dim : blue;
|
|
55823
|
+
return [
|
|
55824
|
+
`${blCorner} ${bold(question)} ${dim(helpText)}`,
|
|
55825
|
+
`${space(2)}${yesColor(active)} / ${noColor(inactive)}`
|
|
55826
|
+
];
|
|
55827
|
+
};
|
|
55828
|
+
return {
|
|
55829
|
+
initial: defaultRenderer,
|
|
55830
|
+
active: defaultRenderer,
|
|
55831
|
+
confirm: defaultRenderer,
|
|
55832
|
+
error: defaultRenderer,
|
|
55833
|
+
submit: ({ value }) => renderSubmit(config14, value ? "yes" : "no"),
|
|
55834
|
+
cancel: handleCancel
|
|
55835
|
+
};
|
|
54518
55836
|
};
|
|
55837
|
+
var spinnerFrames = ["\u2524", "\u2518", "\u2534", "\u2514", "\u251C", "\u250C", "\u252C", "\u2510"];
|
|
55838
|
+
var ellipsisFrames = ["", ".", "..", "...", " ..", " .", ""];
|
|
54519
55839
|
var spinner = () => {
|
|
54520
|
-
const spinnerFrames = ["\u2524", "\u2518", "\u2534", "\u2514", "\u251C", "\u250C", "\u252C", "\u2510"];
|
|
54521
|
-
const ellipsisFrames = ["", ".", "..", "...", " ..", " .", ""];
|
|
54522
55840
|
const color = brandColor;
|
|
54523
55841
|
const frameRate = 120;
|
|
54524
55842
|
let loop = null;
|
|
@@ -59419,7 +60737,44 @@ var Yargs = YargsFactory(esm_default);
|
|
|
59419
60737
|
var yargs_default = Yargs;
|
|
59420
60738
|
|
|
59421
60739
|
// package.json
|
|
59422
|
-
var version = "0.0.0-
|
|
60740
|
+
var version = "0.0.0-94f1580d";
|
|
60741
|
+
var devDependencies = {
|
|
60742
|
+
"@babel/parser": "^7.21.3",
|
|
60743
|
+
"@babel/types": "^7.21.4",
|
|
60744
|
+
"@clack/prompts": "^0.6.3",
|
|
60745
|
+
"@cloudflare/eslint-config-worker": "*",
|
|
60746
|
+
"@cloudflare/workers-tsconfig": "*",
|
|
60747
|
+
"@cloudflare/workers-types": "^4.20230419.0",
|
|
60748
|
+
"@types/command-exists": "^1.2.0",
|
|
60749
|
+
"@types/cross-spawn": "^6.0.2",
|
|
60750
|
+
"@types/dns2": "^2.0.3",
|
|
60751
|
+
"@types/esprima": "^4.0.3",
|
|
60752
|
+
"@types/node": "^18.15.3",
|
|
60753
|
+
"@types/which-pm-runs": "^1.0.0",
|
|
60754
|
+
"@types/yargs": "^17.0.22",
|
|
60755
|
+
"@typescript-eslint/eslint-plugin": "^5.55.0",
|
|
60756
|
+
"@typescript-eslint/parser": "^5.55.0",
|
|
60757
|
+
chalk: "^5.2.0",
|
|
60758
|
+
"command-exists": "^1.2.9",
|
|
60759
|
+
"cross-spawn": "^7.0.3",
|
|
60760
|
+
dns2: "^2.1.0",
|
|
60761
|
+
esbuild: "^0.17.12",
|
|
60762
|
+
execa: "^7.1.1",
|
|
60763
|
+
haikunator: "^2.1.2",
|
|
60764
|
+
"log-update": "^5.0.1",
|
|
60765
|
+
open: "^8.4.0",
|
|
60766
|
+
pnpm: "^8.6.11",
|
|
60767
|
+
recast: "^0.22.0",
|
|
60768
|
+
semver: "^7.5.1",
|
|
60769
|
+
typescript: "^5.0.2",
|
|
60770
|
+
undici: "5.20.0",
|
|
60771
|
+
"vite-tsconfig-paths": "^4.0.8",
|
|
60772
|
+
vitest: "^0.30.0",
|
|
60773
|
+
"which-pm-runs": "^1.1.0",
|
|
60774
|
+
wrangler: "*",
|
|
60775
|
+
yargs: "^17.7.1",
|
|
60776
|
+
yarn: "^1.22.19"
|
|
60777
|
+
};
|
|
59423
60778
|
|
|
59424
60779
|
// src/common.ts
|
|
59425
60780
|
var import_fs6 = require("fs");
|
|
@@ -59435,7 +60790,19 @@ var import_cross_spawn = __toESM(require_cross_spawn());
|
|
|
59435
60790
|
var import_semver = __toESM(require_semver2());
|
|
59436
60791
|
var import_which_pm_runs = __toESM(require_which_pm_runs());
|
|
59437
60792
|
var detectPackageManager = () => {
|
|
59438
|
-
|
|
60793
|
+
let { name, version: version2 } = (0, import_which_pm_runs.default)() ?? { name: "npm", version: "0.0.0" };
|
|
60794
|
+
if (process.env.TEST_PM) {
|
|
60795
|
+
switch (process.env.TEST_PM) {
|
|
60796
|
+
case "pnpm":
|
|
60797
|
+
name = "pnpm";
|
|
60798
|
+
version2 = devDependencies["pnpm"].replace("^", "");
|
|
60799
|
+
break;
|
|
60800
|
+
case "yarn":
|
|
60801
|
+
name = "yarn";
|
|
60802
|
+
version2 = devDependencies["yarn"].replace("^", "");
|
|
60803
|
+
break;
|
|
60804
|
+
}
|
|
60805
|
+
}
|
|
59439
60806
|
switch (name) {
|
|
59440
60807
|
case "pnpm":
|
|
59441
60808
|
if (import_semver.default.gt(version2, "6.0.0")) {
|
|
@@ -59480,15 +60847,14 @@ var runCommand = async (command2, opts = {}) => {
|
|
|
59480
60847
|
}
|
|
59481
60848
|
return printAsyncStatus({
|
|
59482
60849
|
useSpinner: opts.useSpinner ?? opts.silent,
|
|
59483
|
-
startText: opts.startText || command2.join(" "),
|
|
60850
|
+
startText: opts.startText || command2.join(" ").trim(),
|
|
59484
60851
|
doneText: opts.doneText,
|
|
59485
60852
|
promise() {
|
|
59486
60853
|
const [executable, ...args] = command2;
|
|
59487
|
-
const squelch = opts.silent || process.env.VITEST;
|
|
59488
60854
|
const cmd = (0, import_cross_spawn.spawn)(executable, [...args], {
|
|
59489
60855
|
// TODO: ideally inherit stderr, but npm install uses this for warnings
|
|
59490
60856
|
// stdio: [ioMode, ioMode, "inherit"],
|
|
59491
|
-
stdio:
|
|
60857
|
+
stdio: opts.silent ? "pipe" : "inherit",
|
|
59492
60858
|
env: {
|
|
59493
60859
|
...process.env,
|
|
59494
60860
|
...opts.env
|
|
@@ -59496,7 +60862,7 @@ var runCommand = async (command2, opts = {}) => {
|
|
|
59496
60862
|
cwd: opts.cwd
|
|
59497
60863
|
});
|
|
59498
60864
|
let output = ``;
|
|
59499
|
-
if (opts
|
|
60865
|
+
if (opts.captureOutput ?? opts.silent) {
|
|
59500
60866
|
cmd.stdout?.on("data", (data) => {
|
|
59501
60867
|
output += data;
|
|
59502
60868
|
});
|
|
@@ -59521,6 +60887,9 @@ var runCommand = async (command2, opts = {}) => {
|
|
|
59521
60887
|
}
|
|
59522
60888
|
}
|
|
59523
60889
|
});
|
|
60890
|
+
cmd.on("error", (code) => {
|
|
60891
|
+
reject(code);
|
|
60892
|
+
});
|
|
59524
60893
|
});
|
|
59525
60894
|
}
|
|
59526
60895
|
});
|
|
@@ -59614,6 +60983,20 @@ var npmInstall = async () => {
|
|
|
59614
60983
|
doneText: `${brandColor("installed")} ${dim(`via \`${npm12} install\``)}`
|
|
59615
60984
|
});
|
|
59616
60985
|
};
|
|
60986
|
+
var resetPackageManager = async (ctx) => {
|
|
60987
|
+
const { npm: npm12 } = detectPackageManager();
|
|
60988
|
+
if (npm12 === "npm")
|
|
60989
|
+
return;
|
|
60990
|
+
const nodeModulesPath = import_path5.default.join(ctx.project.path, "node_modules");
|
|
60991
|
+
(0, import_fs5.rmSync)(nodeModulesPath, { recursive: true });
|
|
60992
|
+
const lockfilePath = import_path5.default.join(ctx.project.path, "package-lock.json");
|
|
60993
|
+
(0, import_fs5.rmSync)(lockfilePath);
|
|
60994
|
+
await runCommand(`${npm12} install`, {
|
|
60995
|
+
silent: true,
|
|
60996
|
+
startText: "Installing dependencies",
|
|
60997
|
+
doneText: `${brandColor("installed")} ${dim(`via \`${npm12} install\``)}`
|
|
60998
|
+
});
|
|
60999
|
+
};
|
|
59617
61000
|
var installWrangler = async () => {
|
|
59618
61001
|
const { npm: npm12 } = detectPackageManager();
|
|
59619
61002
|
if ((0, import_fs5.existsSync)(import_path5.default.resolve("node_modules", "wrangler"))) {
|
|
@@ -59631,10 +61014,14 @@ var installWrangler = async () => {
|
|
|
59631
61014
|
};
|
|
59632
61015
|
var isLoggedIn = async () => {
|
|
59633
61016
|
const { npx: npx6 } = detectPackageManager();
|
|
59634
|
-
|
|
59635
|
-
|
|
59636
|
-
|
|
59637
|
-
|
|
61017
|
+
try {
|
|
61018
|
+
const output = await runCommand(`${npx6} wrangler whoami`, {
|
|
61019
|
+
silent: true
|
|
61020
|
+
});
|
|
61021
|
+
return /You are logged in/.test(output);
|
|
61022
|
+
} catch (error) {
|
|
61023
|
+
return false;
|
|
61024
|
+
}
|
|
59638
61025
|
};
|
|
59639
61026
|
var wranglerLogin = async () => {
|
|
59640
61027
|
const { npx: npx6 } = detectPackageManager();
|
|
@@ -59687,7 +61074,7 @@ async function getWorkerdCompatibilityDate() {
|
|
|
59687
61074
|
}
|
|
59688
61075
|
|
|
59689
61076
|
// src/helpers/poll.ts
|
|
59690
|
-
var
|
|
61077
|
+
var import_dns2 = __toESM(require_dns2());
|
|
59691
61078
|
var import_undici = __toESM(require_undici());
|
|
59692
61079
|
var TIMEOUT = 1e3 * 60 * 5;
|
|
59693
61080
|
var POLL_INTERVAL = 1e3;
|
|
@@ -59696,14 +61083,28 @@ var poll = async (url) => {
|
|
|
59696
61083
|
const domain = new URL(url).host;
|
|
59697
61084
|
const s = spinner();
|
|
59698
61085
|
s.start("Waiting for DNS to propagate");
|
|
61086
|
+
await sleep(10 * 1e3);
|
|
61087
|
+
await pollDns(domain, start, s);
|
|
61088
|
+
if (await pollHttp(url, start, s))
|
|
61089
|
+
return true;
|
|
61090
|
+
s.stop(
|
|
61091
|
+
`${brandColor(
|
|
61092
|
+
"timed out"
|
|
61093
|
+
)} while waiting for ${url} - try accessing it in a few minutes.`
|
|
61094
|
+
);
|
|
61095
|
+
return false;
|
|
61096
|
+
};
|
|
61097
|
+
var pollDns = async (domain, start, s) => {
|
|
59699
61098
|
while (Date.now() - start < TIMEOUT) {
|
|
59700
61099
|
s.update(`Waiting for DNS to propagate (${secondsSince(start)}s)`);
|
|
59701
|
-
if (await
|
|
61100
|
+
if (await isDomainResolvable(domain)) {
|
|
59702
61101
|
s.stop(`${brandColor("DNS propagation")} ${dim("complete")}.`);
|
|
59703
|
-
|
|
61102
|
+
return;
|
|
59704
61103
|
}
|
|
59705
61104
|
await sleep(POLL_INTERVAL);
|
|
59706
61105
|
}
|
|
61106
|
+
};
|
|
61107
|
+
var pollHttp = async (url, start, s) => {
|
|
59707
61108
|
s.start("Waiting for deployment to become available");
|
|
59708
61109
|
while (Date.now() - start < TIMEOUT) {
|
|
59709
61110
|
s.update(
|
|
@@ -59727,27 +61128,31 @@ var poll = async (url) => {
|
|
|
59727
61128
|
}
|
|
59728
61129
|
await sleep(POLL_INTERVAL);
|
|
59729
61130
|
}
|
|
59730
|
-
s.stop(
|
|
59731
|
-
`${brandColor(
|
|
59732
|
-
"timed out"
|
|
59733
|
-
)} while waiting for ${url} - try accessing it in a few minutes.`
|
|
59734
|
-
);
|
|
59735
|
-
return false;
|
|
59736
61131
|
};
|
|
59737
|
-
async
|
|
61132
|
+
var isDomainResolvable = async (domain) => {
|
|
59738
61133
|
try {
|
|
59739
|
-
const
|
|
59740
|
-
|
|
59741
|
-
|
|
59742
|
-
|
|
59743
|
-
|
|
59744
|
-
|
|
59745
|
-
|
|
59746
|
-
return (await resolver.resolve4(domain)).length > 0;
|
|
59747
|
-
} catch (e) {
|
|
61134
|
+
const nameServers = await lookupSubdomainNameservers(domain);
|
|
61135
|
+
if (nameServers.length === 0)
|
|
61136
|
+
return false;
|
|
61137
|
+
const dns = new import_dns2.default({ nameServers });
|
|
61138
|
+
const res = await dns.resolve(domain, "A");
|
|
61139
|
+
return res.answers.length > 0;
|
|
61140
|
+
} catch (error) {
|
|
59748
61141
|
return false;
|
|
59749
61142
|
}
|
|
59750
|
-
}
|
|
61143
|
+
};
|
|
61144
|
+
var lookupSubdomainNameservers = async (domain) => {
|
|
61145
|
+
const nameServers = await lookupDomainLevelNameservers(domain);
|
|
61146
|
+
const dns = new import_dns2.default({ nameServers });
|
|
61147
|
+
const res = await dns.resolve(domain, "NS");
|
|
61148
|
+
return res.authorities.filter((r2) => Boolean(r2.ns)).map((r2) => r2.ns);
|
|
61149
|
+
};
|
|
61150
|
+
var lookupDomainLevelNameservers = async (domain) => {
|
|
61151
|
+
const baseDomain = domain.split(".").slice(-2).join(".");
|
|
61152
|
+
const dns = new import_dns2.default({});
|
|
61153
|
+
const nameservers = await dns.resolve(baseDomain, "NS");
|
|
61154
|
+
return nameservers.answers.map((n) => n.ns);
|
|
61155
|
+
};
|
|
59751
61156
|
async function sleep(ms) {
|
|
59752
61157
|
return new Promise((res) => setTimeout(res, ms));
|
|
59753
61158
|
}
|
|
@@ -59779,14 +61184,12 @@ var setupProjectDirectory = (args) => {
|
|
|
59779
61184
|
};
|
|
59780
61185
|
var offerToDeploy = async (ctx) => {
|
|
59781
61186
|
startSection(`Deploy with Cloudflare`, `Step 3 of 3`);
|
|
59782
|
-
ctx.
|
|
61187
|
+
const label = `deploy via \`${npm} run ${ctx.framework?.config.deployCommand ?? "deploy"}\``;
|
|
61188
|
+
ctx.args.deploy = await processArgument(ctx.args, "deploy", {
|
|
61189
|
+
type: "confirm",
|
|
59783
61190
|
question: "Do you want to deploy your application?",
|
|
59784
|
-
|
|
59785
|
-
|
|
59786
|
-
)}`,
|
|
59787
|
-
defaultValue: ctx.args.deploy ?? (ctx.args.wranglerDefaults ? false : true),
|
|
59788
|
-
// if --wrangler-defaults, default to false, otherwise default to true
|
|
59789
|
-
acceptDefault: ctx.args.wranglerDefaults
|
|
61191
|
+
label,
|
|
61192
|
+
defaultValue: C3_DEFAULTS.deploy
|
|
59790
61193
|
});
|
|
59791
61194
|
if (!ctx.args.deploy)
|
|
59792
61195
|
return;
|
|
@@ -59806,7 +61209,7 @@ var runDeploy = async (ctx) => {
|
|
|
59806
61209
|
const result = await runCommand(deployCmd, {
|
|
59807
61210
|
silent: true,
|
|
59808
61211
|
cwd: ctx.project.path,
|
|
59809
|
-
env: { CLOUDFLARE_ACCOUNT_ID: ctx.account.id },
|
|
61212
|
+
env: { CLOUDFLARE_ACCOUNT_ID: ctx.account.id, NODE_ENV: "production" },
|
|
59810
61213
|
startText: `Deploying your application`,
|
|
59811
61214
|
doneText: `${brandColor("deployed")} ${dim(`via \`${deployCmd}\``)}`
|
|
59812
61215
|
});
|
|
@@ -59840,14 +61243,12 @@ var chooseAccount = async (ctx) => {
|
|
|
59840
61243
|
label: name,
|
|
59841
61244
|
value: id
|
|
59842
61245
|
}));
|
|
59843
|
-
accountId = await
|
|
61246
|
+
accountId = await inputPrompt({
|
|
61247
|
+
type: "select",
|
|
59844
61248
|
question: "Which account do you want to use?",
|
|
59845
61249
|
options: accountOptions,
|
|
59846
|
-
|
|
59847
|
-
|
|
59848
|
-
},
|
|
59849
|
-
defaultValue: accountOptions[0].value,
|
|
59850
|
-
acceptDefault: ctx.args.wranglerDefaults
|
|
61250
|
+
label: "account",
|
|
61251
|
+
defaultValue: accountOptions[0].value
|
|
59851
61252
|
});
|
|
59852
61253
|
}
|
|
59853
61254
|
const accountName = Object.keys(accounts).find(
|
|
@@ -59857,6 +61258,7 @@ var chooseAccount = async (ctx) => {
|
|
|
59857
61258
|
};
|
|
59858
61259
|
var printSummary = async (ctx) => {
|
|
59859
61260
|
const nextSteps = [
|
|
61261
|
+
[`Navigate to the new directory`, `cd ${ctx.project.name}`],
|
|
59860
61262
|
[
|
|
59861
61263
|
`Run the development server`,
|
|
59862
61264
|
`${npm} run ${ctx.framework?.config.devCommand ?? "start"}`
|
|
@@ -59867,7 +61269,7 @@ var printSummary = async (ctx) => {
|
|
|
59867
61269
|
],
|
|
59868
61270
|
[
|
|
59869
61271
|
`Read the documentation`,
|
|
59870
|
-
`https://developers.cloudflare.com/${ctx.framework ? "pages" : "workers"}`
|
|
61272
|
+
`https://developers.cloudflare.com/${ctx.framework ? ctx.framework.config.type === "workers" ? "workers" : "pages" : "workers"}`
|
|
59871
61273
|
],
|
|
59872
61274
|
[`Stuck? Join us at`, `https://discord.gg/cloudflaredev`]
|
|
59873
61275
|
];
|
|
@@ -59904,6 +61306,7 @@ var printSummary = async (ctx) => {
|
|
|
59904
61306
|
}
|
|
59905
61307
|
}
|
|
59906
61308
|
endSection("See you again soon!");
|
|
61309
|
+
process.exit(0);
|
|
59907
61310
|
};
|
|
59908
61311
|
var offerGit = async (ctx) => {
|
|
59909
61312
|
const gitInstalled = await isGitInstalled();
|
|
@@ -59919,11 +61322,11 @@ var offerGit = async (ctx) => {
|
|
|
59919
61322
|
const insideGitRepo = await isInsideGitRepo(ctx.project.path);
|
|
59920
61323
|
if (insideGitRepo)
|
|
59921
61324
|
return;
|
|
59922
|
-
ctx.args.git
|
|
61325
|
+
ctx.args.git = await processArgument(ctx.args, "git", {
|
|
61326
|
+
type: "confirm",
|
|
59923
61327
|
question: "Do you want to use git for version control?",
|
|
59924
|
-
|
|
59925
|
-
defaultValue:
|
|
59926
|
-
acceptDefault: ctx.args.wranglerDefaults
|
|
61328
|
+
label: "git",
|
|
61329
|
+
defaultValue: C3_DEFAULTS.git
|
|
59927
61330
|
});
|
|
59928
61331
|
if (ctx.args.git) {
|
|
59929
61332
|
await printAsyncStatus({
|
|
@@ -59983,13 +61386,31 @@ async function initializeGit(cwd) {
|
|
|
59983
61386
|
await runCommand(`git init`, { useSpinner: false, silent: true, cwd });
|
|
59984
61387
|
}
|
|
59985
61388
|
}
|
|
61389
|
+
async function getProductionBranch(cwd) {
|
|
61390
|
+
try {
|
|
61391
|
+
const productionBranch = await runCommand(
|
|
61392
|
+
// "git branch --show-current", // git@^2.22
|
|
61393
|
+
"git rev-parse --abbrev-ref HEAD",
|
|
61394
|
+
// git@^1.6.3
|
|
61395
|
+
{
|
|
61396
|
+
silent: true,
|
|
61397
|
+
cwd,
|
|
61398
|
+
useSpinner: false,
|
|
61399
|
+
captureOutput: true
|
|
61400
|
+
}
|
|
61401
|
+
);
|
|
61402
|
+
return productionBranch.trim();
|
|
61403
|
+
} catch (err) {
|
|
61404
|
+
}
|
|
61405
|
+
return "main";
|
|
61406
|
+
}
|
|
59986
61407
|
|
|
59987
61408
|
// src/pages.ts
|
|
59988
61409
|
var import_path8 = require("path");
|
|
59989
61410
|
var import_process3 = require("process");
|
|
59990
61411
|
|
|
59991
61412
|
// src/frameworks/angular/index.ts
|
|
59992
|
-
var
|
|
61413
|
+
var import_promises = require("node:fs/promises");
|
|
59993
61414
|
var import_node_path = require("node:path");
|
|
59994
61415
|
|
|
59995
61416
|
// src/helpers/files.ts
|
|
@@ -60012,6 +61433,9 @@ var readJSON = (path3) => {
|
|
|
60012
61433
|
const contents = readFile(path3);
|
|
60013
61434
|
return contents ? JSON.parse(contents) : contents;
|
|
60014
61435
|
};
|
|
61436
|
+
var writeJSON = (path3, object, stringifySpace) => {
|
|
61437
|
+
writeFile2(path3, JSON.stringify(object, null, stringifySpace));
|
|
61438
|
+
};
|
|
60015
61439
|
var probePaths = (paths, errorMsg = "Failed to find required file.") => {
|
|
60016
61440
|
for (const path3 of paths) {
|
|
60017
61441
|
if ((0, import_fs7.existsSync)(path3)) {
|
|
@@ -60024,6 +61448,35 @@ var probePaths = (paths, errorMsg = "Failed to find required file.") => {
|
|
|
60024
61448
|
var usesTypescript = (projectRoot = ".") => {
|
|
60025
61449
|
return (0, import_fs7.existsSync)(`${projectRoot}/tsconfig.json`);
|
|
60026
61450
|
};
|
|
61451
|
+
var eslintRcExts = ["js", "cjs", "yaml", "yml", "json"];
|
|
61452
|
+
var usesEslint = (ctx) => {
|
|
61453
|
+
for (const ext of eslintRcExts) {
|
|
61454
|
+
const eslintRcFilename = `.eslintrc.${ext}`;
|
|
61455
|
+
if ((0, import_fs7.existsSync)(`${ctx.project.path}/${eslintRcFilename}`)) {
|
|
61456
|
+
return {
|
|
61457
|
+
used: true,
|
|
61458
|
+
configType: eslintRcFilename
|
|
61459
|
+
};
|
|
61460
|
+
}
|
|
61461
|
+
}
|
|
61462
|
+
if ((0, import_fs7.existsSync)(`${ctx.project.path}/eslint.config.js`)) {
|
|
61463
|
+
return {
|
|
61464
|
+
used: true,
|
|
61465
|
+
configType: "eslint.config.js"
|
|
61466
|
+
};
|
|
61467
|
+
}
|
|
61468
|
+
try {
|
|
61469
|
+
const pkgJson = readJSON(`${ctx.project.path}/package.json`);
|
|
61470
|
+
if (pkgJson.eslintConfig) {
|
|
61471
|
+
return {
|
|
61472
|
+
used: true,
|
|
61473
|
+
configType: "package.json"
|
|
61474
|
+
};
|
|
61475
|
+
}
|
|
61476
|
+
} catch {
|
|
61477
|
+
}
|
|
61478
|
+
return { used: false };
|
|
61479
|
+
};
|
|
60027
61480
|
var compatDateFlag = () => {
|
|
60028
61481
|
const date = /* @__PURE__ */ new Date();
|
|
60029
61482
|
return `--compatibility-date=${date.toISOString().slice(0, 10)}`;
|
|
@@ -60067,7 +61520,7 @@ var angular_default = config;
|
|
|
60067
61520
|
async function installCFWorker(ctx) {
|
|
60068
61521
|
const s = spinner();
|
|
60069
61522
|
s.start(`Adding Cloudflare Pages adapter code`);
|
|
60070
|
-
await (0,
|
|
61523
|
+
await (0, import_promises.cp)(
|
|
60071
61524
|
// eslint-disable-next-line no-restricted-globals
|
|
60072
61525
|
(0, import_node_path.resolve)(__dirname, "./angular/templates"),
|
|
60073
61526
|
(0, import_node_path.resolve)(ctx.project.path),
|
|
@@ -60109,7 +61562,7 @@ async function updateAppCode() {
|
|
|
60109
61562
|
"providers: [provideHttpClient(withFetch()), provideClientHydration(), "
|
|
60110
61563
|
);
|
|
60111
61564
|
writeFile2((0, import_node_path.resolve)(appConfigPath), newAppConfig);
|
|
60112
|
-
await (0,
|
|
61565
|
+
await (0, import_promises.rm)((0, import_node_path.resolve)("server.ts"));
|
|
60113
61566
|
s.stop(`${brandColor(`updated`)} ${dim(appConfigPath)}`);
|
|
60114
61567
|
}
|
|
60115
61568
|
function updateAngularJson(ctx) {
|
|
@@ -60191,25 +61644,19 @@ var docusaurus_default = config3;
|
|
|
60191
61644
|
var { npm: npm4, dlx: dlx4 } = detectPackageManager();
|
|
60192
61645
|
var generate4 = async (ctx) => {
|
|
60193
61646
|
const defaultTemplate = "https://github.com/gatsbyjs/gatsby-starter-blog";
|
|
60194
|
-
const useTemplate = await
|
|
61647
|
+
const useTemplate = await inputPrompt({
|
|
61648
|
+
type: "confirm",
|
|
60195
61649
|
question: "Would you like to use a template?",
|
|
60196
|
-
|
|
60197
|
-
|
|
60198
|
-
return `${brandColor(`template`)} ${status2}`;
|
|
60199
|
-
},
|
|
60200
|
-
defaultValue: true,
|
|
60201
|
-
acceptDefault: false
|
|
61650
|
+
label: "template",
|
|
61651
|
+
defaultValue: true
|
|
60202
61652
|
});
|
|
60203
61653
|
let templateUrl = "";
|
|
60204
61654
|
if (useTemplate) {
|
|
60205
|
-
templateUrl = await
|
|
61655
|
+
templateUrl = await inputPrompt({
|
|
61656
|
+
type: "text",
|
|
60206
61657
|
question: `Please specify the url of the template you'd like to use`,
|
|
60207
|
-
|
|
60208
|
-
|
|
60209
|
-
return `${brandColor("template")} ${dim(result)}`;
|
|
60210
|
-
},
|
|
60211
|
-
defaultValue: defaultTemplate,
|
|
60212
|
-
acceptDefault: false
|
|
61658
|
+
label: "template",
|
|
61659
|
+
defaultValue: defaultTemplate
|
|
60213
61660
|
});
|
|
60214
61661
|
}
|
|
60215
61662
|
const version2 = getFrameworkVersion(ctx);
|
|
@@ -60234,7 +61681,7 @@ var generate5 = async (ctx) => {
|
|
|
60234
61681
|
const version2 = getFrameworkVersion(ctx);
|
|
60235
61682
|
await runFrameworkGenerator(
|
|
60236
61683
|
ctx,
|
|
60237
|
-
`${dlx5} create-hono@${version2} ${ctx.project.name} --template cloudflare-
|
|
61684
|
+
`${dlx5} create-hono@${version2} ${ctx.project.name} --template cloudflare-workers`
|
|
60238
61685
|
);
|
|
60239
61686
|
logRaw("");
|
|
60240
61687
|
};
|
|
@@ -60243,7 +61690,8 @@ var config5 = {
|
|
|
60243
61690
|
displayName: "Hono",
|
|
60244
61691
|
packageScripts: {},
|
|
60245
61692
|
deployCommand: "deploy",
|
|
60246
|
-
devCommand: "dev"
|
|
61693
|
+
devCommand: "dev",
|
|
61694
|
+
type: "workers"
|
|
60247
61695
|
};
|
|
60248
61696
|
var hono_default = config5;
|
|
60249
61697
|
|
|
@@ -60335,20 +61783,56 @@ var configure3 = async (ctx) => {
|
|
|
60335
61783
|
);
|
|
60336
61784
|
writeFile2(handlerPath, handlerFile);
|
|
60337
61785
|
updateStatus("Created an example API route handler");
|
|
61786
|
+
const installEslintPlugin = await shouldInstallNextOnPagesEslintPlugin(ctx);
|
|
61787
|
+
if (installEslintPlugin) {
|
|
61788
|
+
await writeEslintrc(ctx);
|
|
61789
|
+
}
|
|
60338
61790
|
process.chdir(projectName);
|
|
60339
|
-
const packages = [
|
|
61791
|
+
const packages = [
|
|
61792
|
+
"@cloudflare/next-on-pages@1",
|
|
61793
|
+
"vercel",
|
|
61794
|
+
...installEslintPlugin ? ["eslint-plugin-next-on-pages"] : []
|
|
61795
|
+
];
|
|
60340
61796
|
await installPackages(packages, {
|
|
60341
61797
|
dev: true,
|
|
60342
61798
|
startText: "Adding the Cloudflare Pages adapter",
|
|
60343
61799
|
doneText: `${brandColor(`installed`)} ${dim(packages.join(", "))}`
|
|
60344
61800
|
});
|
|
60345
61801
|
};
|
|
61802
|
+
var shouldInstallNextOnPagesEslintPlugin = async (ctx) => {
|
|
61803
|
+
const eslintUsage = usesEslint(ctx);
|
|
61804
|
+
if (!eslintUsage.used)
|
|
61805
|
+
return false;
|
|
61806
|
+
if (eslintUsage.configType !== ".eslintrc.json") {
|
|
61807
|
+
warn(
|
|
61808
|
+
`Expected .eslintrc.json from Next.js scaffolding but found ${eslintUsage.configType} instead`
|
|
61809
|
+
);
|
|
61810
|
+
return false;
|
|
61811
|
+
}
|
|
61812
|
+
return await processArgument(ctx.args, "eslint-plugin", {
|
|
61813
|
+
type: "confirm",
|
|
61814
|
+
question: "Do you want to use the next-on-pages eslint-plugin?",
|
|
61815
|
+
label: "eslint-plugin",
|
|
61816
|
+
defaultValue: true
|
|
61817
|
+
});
|
|
61818
|
+
};
|
|
61819
|
+
var writeEslintrc = async (ctx) => {
|
|
61820
|
+
const eslintConfig = readJSON(`${ctx.project.name}/.eslintrc.json`);
|
|
61821
|
+
eslintConfig.plugins ??= [];
|
|
61822
|
+
eslintConfig.plugins.push("eslint-plugin-next-on-pages");
|
|
61823
|
+
if (typeof eslintConfig.extends === "string") {
|
|
61824
|
+
eslintConfig.extends = [eslintConfig.extends];
|
|
61825
|
+
}
|
|
61826
|
+
eslintConfig.extends ??= [];
|
|
61827
|
+
eslintConfig.extends.push("plugin:eslint-plugin-next-on-pages/recommended");
|
|
61828
|
+
writeJSON(`${ctx.project.name}/.eslintrc.json`, eslintConfig, 2);
|
|
61829
|
+
};
|
|
60346
61830
|
var config6 = {
|
|
60347
61831
|
generate: generate6,
|
|
60348
61832
|
configure: configure3,
|
|
60349
61833
|
displayName: "Next",
|
|
60350
61834
|
packageScripts: {
|
|
60351
|
-
"pages:build": `${
|
|
61835
|
+
"pages:build": `${dlx6} @cloudflare/next-on-pages@1`,
|
|
60352
61836
|
"pages:deploy": `${npm5} run pages:build && wrangler pages deploy .vercel/output/static`,
|
|
60353
61837
|
"pages:watch": `${npx3} @cloudflare/next-on-pages@1 --watch`,
|
|
60354
61838
|
"pages:dev": `${npx3} wrangler pages dev .vercel/output/static --compatibility-flag=nodejs_compat`
|
|
@@ -60361,7 +61845,7 @@ var config6 = {
|
|
|
60361
61845
|
"--src-dir",
|
|
60362
61846
|
"--app",
|
|
60363
61847
|
"--import-alias",
|
|
60364
|
-
|
|
61848
|
+
"@/*"
|
|
60365
61849
|
],
|
|
60366
61850
|
compatibilityFlags: ["nodejs_compat"]
|
|
60367
61851
|
};
|
|
@@ -60379,6 +61863,7 @@ var generate7 = async (ctx) => {
|
|
|
60379
61863
|
};
|
|
60380
61864
|
var configure4 = async (ctx) => {
|
|
60381
61865
|
process.chdir(ctx.project.path);
|
|
61866
|
+
writeFile2("./.node-version", "17");
|
|
60382
61867
|
await npmInstall();
|
|
60383
61868
|
};
|
|
60384
61869
|
var config7 = {
|
|
@@ -60386,8 +61871,9 @@ var config7 = {
|
|
|
60386
61871
|
configure: configure4,
|
|
60387
61872
|
displayName: "Nuxt",
|
|
60388
61873
|
packageScripts: {
|
|
61874
|
+
build: (cmd) => `NITRO_PRESET=cloudflare-pages ${cmd}`,
|
|
60389
61875
|
"pages:dev": `wrangler pages dev ${compatDateFlag()} --proxy 3000 -- npm run dev`,
|
|
60390
|
-
"pages:deploy":
|
|
61876
|
+
"pages:deploy": "npm run build && wrangler pages deploy ./dist"
|
|
60391
61877
|
}
|
|
60392
61878
|
};
|
|
60393
61879
|
var nuxt_default = config7;
|
|
@@ -60429,8 +61915,12 @@ var generate9 = async (ctx) => {
|
|
|
60429
61915
|
);
|
|
60430
61916
|
logRaw("");
|
|
60431
61917
|
};
|
|
61918
|
+
var configure6 = async (ctx) => {
|
|
61919
|
+
await resetPackageManager(ctx);
|
|
61920
|
+
};
|
|
60432
61921
|
var config9 = {
|
|
60433
61922
|
generate: generate9,
|
|
61923
|
+
configure: configure6,
|
|
60434
61924
|
displayName: "React",
|
|
60435
61925
|
packageScripts: {
|
|
60436
61926
|
"pages:dev": `wrangler pages dev ${compatDateFlag()} --port 3000 -- ${npm7} start`,
|
|
@@ -60483,7 +61973,7 @@ var generate11 = async (ctx) => {
|
|
|
60483
61973
|
await runFrameworkGenerator(ctx, `${dlx11} create-solid@${version2}`);
|
|
60484
61974
|
logRaw("");
|
|
60485
61975
|
};
|
|
60486
|
-
var
|
|
61976
|
+
var configure7 = async () => {
|
|
60487
61977
|
const pkg = "solid-start-cloudflare-pages";
|
|
60488
61978
|
await installPackages([pkg], {
|
|
60489
61979
|
dev: true,
|
|
@@ -60498,11 +61988,11 @@ var configure6 = async () => {
|
|
|
60498
61988
|
};
|
|
60499
61989
|
var config11 = {
|
|
60500
61990
|
generate: generate11,
|
|
60501
|
-
configure:
|
|
61991
|
+
configure: configure7,
|
|
60502
61992
|
displayName: "Solid",
|
|
60503
61993
|
packageScripts: {
|
|
60504
61994
|
"pages:dev": `wrangler pages dev ${compatDateFlag()} --proxy 3000 -- ${npm9} run dev`,
|
|
60505
|
-
"pages:deploy": `${npm9} run build
|
|
61995
|
+
"pages:deploy": `${npm9} run build && wrangler pages deploy ./dist/public`
|
|
60506
61996
|
}
|
|
60507
61997
|
};
|
|
60508
61998
|
var solid_default = config11;
|
|
@@ -60563,7 +62053,7 @@ var generate12 = async (ctx) => {
|
|
|
60563
62053
|
);
|
|
60564
62054
|
logRaw("");
|
|
60565
62055
|
};
|
|
60566
|
-
var
|
|
62056
|
+
var configure8 = async (ctx) => {
|
|
60567
62057
|
process.chdir(ctx.project.path);
|
|
60568
62058
|
await npmInstall();
|
|
60569
62059
|
const pkg = `@sveltejs/adapter-cloudflare`;
|
|
@@ -60598,7 +62088,7 @@ var configure7 = async (ctx) => {
|
|
|
60598
62088
|
};
|
|
60599
62089
|
var config12 = {
|
|
60600
62090
|
generate: generate12,
|
|
60601
|
-
configure:
|
|
62091
|
+
configure: configure8,
|
|
60602
62092
|
displayName: "Svelte",
|
|
60603
62093
|
packageScripts: {
|
|
60604
62094
|
"pages:dev": `wrangler pages dev ${compatDateFlag()} --proxy 5173 -- ${npm10} run dev`,
|
|
@@ -60613,10 +62103,10 @@ var versionMap_default = {
|
|
|
60613
62103
|
astro: "3.1.5",
|
|
60614
62104
|
docusaurus: "2.4.1",
|
|
60615
62105
|
gatsby: "5.10.0",
|
|
60616
|
-
hono: "0.2.
|
|
62106
|
+
hono: "0.2.6",
|
|
60617
62107
|
next: "13.4.2",
|
|
60618
62108
|
nuxt: "3.4.2",
|
|
60619
|
-
qwik: "1.
|
|
62109
|
+
qwik: "1.2.7",
|
|
60620
62110
|
react: "5.0.1",
|
|
60621
62111
|
remix: "1.16.0",
|
|
60622
62112
|
solid: "0.2.26",
|
|
@@ -60696,11 +62186,11 @@ var runPagesGenerator = async (args) => {
|
|
|
60696
62186
|
},
|
|
60697
62187
|
args
|
|
60698
62188
|
};
|
|
60699
|
-
const { generate: generate14, configure:
|
|
62189
|
+
const { generate: generate14, configure: configure9 } = FrameworkMap[framework];
|
|
60700
62190
|
await generate14({ ...ctx });
|
|
60701
62191
|
startSection("Configuring your application for Cloudflare", "Step 2 of 3");
|
|
60702
|
-
if (
|
|
60703
|
-
await
|
|
62192
|
+
if (configure9) {
|
|
62193
|
+
await configure9({ ...ctx });
|
|
60704
62194
|
}
|
|
60705
62195
|
await updatePackageScripts(ctx);
|
|
60706
62196
|
await offerGit(ctx);
|
|
@@ -60718,14 +62208,12 @@ var getFrameworkSelection = async (args) => {
|
|
|
60718
62208
|
value: key
|
|
60719
62209
|
})
|
|
60720
62210
|
);
|
|
60721
|
-
const framework = await
|
|
62211
|
+
const framework = await processArgument(args, "framework", {
|
|
62212
|
+
type: "select",
|
|
62213
|
+
label: "framework",
|
|
60722
62214
|
question: "Which development framework do you want to use?",
|
|
60723
62215
|
options: frameworkOptions,
|
|
60724
|
-
|
|
60725
|
-
return `${brandColor("framework")} ${dim(option.label)}`;
|
|
60726
|
-
},
|
|
60727
|
-
defaultValue: args.framework ?? "svelte",
|
|
60728
|
-
acceptDefault: Boolean(args.framework)
|
|
62216
|
+
defaultValue: C3_DEFAULTS.framework
|
|
60729
62217
|
});
|
|
60730
62218
|
framework || crash("A framework must be selected to continue.");
|
|
60731
62219
|
if (!supportedFramework(framework)) {
|
|
@@ -60739,11 +62227,29 @@ var updatePackageScripts = async (ctx) => {
|
|
|
60739
62227
|
const { packageScripts } = ctx.framework?.config ?? {};
|
|
60740
62228
|
if (packageScripts) {
|
|
60741
62229
|
const s = spinner();
|
|
60742
|
-
|
|
62230
|
+
const updatingScripts = Object.entries(packageScripts).filter(
|
|
62231
|
+
([_3, cmdOrUpdater]) => typeof cmdOrUpdater === "function"
|
|
62232
|
+
).length > 0;
|
|
62233
|
+
s.start(
|
|
62234
|
+
`${updatingScripts ? "Updating" : "Adding"} command scripts`,
|
|
62235
|
+
"for development and deployment"
|
|
62236
|
+
);
|
|
60743
62237
|
const pkgJsonPath = (0, import_path8.resolve)("package.json");
|
|
60744
62238
|
const pkgConfig = readJSON(pkgJsonPath);
|
|
60745
|
-
Object.entries(packageScripts).forEach(([target,
|
|
60746
|
-
|
|
62239
|
+
Object.entries(packageScripts).forEach(([target, cmdOrUpdater]) => {
|
|
62240
|
+
if (typeof cmdOrUpdater === "string") {
|
|
62241
|
+
const command2 = cmdOrUpdater;
|
|
62242
|
+
pkgConfig.scripts[target] = command2;
|
|
62243
|
+
} else {
|
|
62244
|
+
const existingCommand = pkgConfig.scripts[target];
|
|
62245
|
+
if (!existingCommand) {
|
|
62246
|
+
throw new Error(
|
|
62247
|
+
`Could not find ${target} script to update during ${ctx.framework} setup`
|
|
62248
|
+
);
|
|
62249
|
+
}
|
|
62250
|
+
const updater = cmdOrUpdater;
|
|
62251
|
+
pkgConfig.scripts[target] = updater(existingCommand);
|
|
62252
|
+
}
|
|
60747
62253
|
});
|
|
60748
62254
|
writeFile2(pkgJsonPath, JSON.stringify(pkgConfig, null, 2));
|
|
60749
62255
|
s.stop(`${brandColor("added")} ${dim("commands to `package.json`")}`);
|
|
@@ -60752,6 +62258,8 @@ var updatePackageScripts = async (ctx) => {
|
|
|
60752
62258
|
var createProject = async (ctx) => {
|
|
60753
62259
|
if (ctx.args.deploy === false)
|
|
60754
62260
|
return;
|
|
62261
|
+
if (ctx.framework?.config.type === "workers")
|
|
62262
|
+
return;
|
|
60755
62263
|
if (!ctx.account?.id) {
|
|
60756
62264
|
crash("Failed to read Cloudflare account.");
|
|
60757
62265
|
return;
|
|
@@ -60759,25 +62267,28 @@ var createProject = async (ctx) => {
|
|
|
60759
62267
|
const CLOUDFLARE_ACCOUNT_ID = ctx.account.id;
|
|
60760
62268
|
const compatFlags = ctx.framework?.config.compatibilityFlags?.join(" ");
|
|
60761
62269
|
const compatFlagsArg = compatFlags ? `--compatibility-flags ${compatFlags}` : "";
|
|
60762
|
-
const
|
|
62270
|
+
const productionBranch = await getProductionBranch(ctx.project.path);
|
|
62271
|
+
const cmd = `${npx5} wrangler pages project create ${ctx.project.name} --production-branch ${productionBranch} ${compatFlagsArg}`;
|
|
60763
62272
|
try {
|
|
60764
62273
|
await retry(
|
|
60765
62274
|
CREATE_PROJECT_RETRIES,
|
|
60766
62275
|
async () => runCommand(cmd, {
|
|
60767
|
-
|
|
62276
|
+
// Make this command more verbose in test mode to aid
|
|
62277
|
+
// troubleshooting API errors
|
|
62278
|
+
silent: process.env.VITEST == void 0,
|
|
60768
62279
|
cwd: ctx.project.path,
|
|
60769
62280
|
env: { CLOUDFLARE_ACCOUNT_ID },
|
|
60770
62281
|
startText: "Creating Pages project",
|
|
60771
|
-
doneText: `${brandColor("created")} ${dim(`via \`${cmd}\``)}`
|
|
62282
|
+
doneText: `${brandColor("created")} ${dim(`via \`${cmd.trim()}\``)}`
|
|
60772
62283
|
})
|
|
60773
62284
|
);
|
|
60774
62285
|
} catch (error) {
|
|
60775
|
-
crash("Failed to create pages
|
|
62286
|
+
crash("Failed to create pages project. See output above.");
|
|
60776
62287
|
}
|
|
60777
62288
|
};
|
|
60778
62289
|
|
|
60779
62290
|
// src/workers.ts
|
|
60780
|
-
var
|
|
62291
|
+
var import_promises2 = require("fs/promises");
|
|
60781
62292
|
var import_os = require("os");
|
|
60782
62293
|
var import_path9 = require("path");
|
|
60783
62294
|
var import_process4 = require("process");
|
|
@@ -60802,14 +62313,12 @@ var runWorkersGenerator = async (args) => {
|
|
|
60802
62313
|
await printSummary(ctx);
|
|
60803
62314
|
};
|
|
60804
62315
|
async function getTemplate(ctx) {
|
|
60805
|
-
|
|
60806
|
-
|
|
60807
|
-
|
|
60808
|
-
|
|
60809
|
-
|
|
60810
|
-
|
|
60811
|
-
});
|
|
60812
|
-
}
|
|
62316
|
+
ctx.args.ts = await processArgument(ctx.args, "ts", {
|
|
62317
|
+
type: "confirm",
|
|
62318
|
+
question: "Do you want to use TypeScript?",
|
|
62319
|
+
label: "typescript",
|
|
62320
|
+
defaultValue: C3_DEFAULTS.ts
|
|
62321
|
+
});
|
|
60813
62322
|
const preexisting = ctx.args.type === "pre-existing";
|
|
60814
62323
|
const template = preexisting ? "hello-world" : ctx.args.type;
|
|
60815
62324
|
const path3 = (0, import_path9.resolve)(
|
|
@@ -60826,21 +62335,25 @@ async function copyFiles(ctx) {
|
|
|
60826
62335
|
const { template, path: srcdir } = await getTemplate(ctx);
|
|
60827
62336
|
const destdir = ctx.project.path;
|
|
60828
62337
|
updateStatus(`Copying files from "${template}" template`);
|
|
60829
|
-
await (0,
|
|
62338
|
+
await (0, import_promises2.cp)(srcdir, destdir, { recursive: true });
|
|
60830
62339
|
}
|
|
60831
62340
|
async function copyExistingWorkerFiles(ctx) {
|
|
60832
62341
|
const { preexisting } = await getTemplate(ctx);
|
|
60833
62342
|
if (preexisting) {
|
|
60834
62343
|
await chooseAccount(ctx);
|
|
60835
62344
|
if (ctx.args.existingScript === void 0) {
|
|
60836
|
-
ctx.args.existingScript = await
|
|
60837
|
-
|
|
60838
|
-
|
|
60839
|
-
|
|
60840
|
-
|
|
60841
|
-
|
|
62345
|
+
ctx.args.existingScript = await processArgument(
|
|
62346
|
+
ctx.args,
|
|
62347
|
+
"existingScript",
|
|
62348
|
+
{
|
|
62349
|
+
type: "text",
|
|
62350
|
+
question: "Please specify the name of the existing worker in this account?",
|
|
62351
|
+
label: "worker",
|
|
62352
|
+
defaultValue: ctx.project.name
|
|
62353
|
+
}
|
|
62354
|
+
);
|
|
60842
62355
|
}
|
|
60843
|
-
const tempdir = await (0,
|
|
62356
|
+
const tempdir = await (0, import_promises2.mkdtemp)(
|
|
60844
62357
|
(0, import_path9.join)((0, import_os.tmpdir)(), "c3-wrangler-init--from-dash-")
|
|
60845
62358
|
);
|
|
60846
62359
|
await runCommand(
|
|
@@ -60856,15 +62369,15 @@ async function copyExistingWorkerFiles(ctx) {
|
|
|
60856
62369
|
)}`
|
|
60857
62370
|
}
|
|
60858
62371
|
);
|
|
60859
|
-
for (const filename of await (0,
|
|
60860
|
-
await (0,
|
|
62372
|
+
for (const filename of await (0, import_promises2.readdir)((0, import_path9.join)(ctx.project.path, "src"))) {
|
|
62373
|
+
await (0, import_promises2.rm)((0, import_path9.join)(ctx.project.path, "src", filename));
|
|
60861
62374
|
}
|
|
60862
|
-
await (0,
|
|
62375
|
+
await (0, import_promises2.cp)(
|
|
60863
62376
|
(0, import_path9.join)(tempdir, ctx.args.existingScript, "src"),
|
|
60864
62377
|
(0, import_path9.join)(ctx.project.path, "src"),
|
|
60865
62378
|
{ recursive: true }
|
|
60866
62379
|
);
|
|
60867
|
-
await (0,
|
|
62380
|
+
await (0, import_promises2.cp)(
|
|
60868
62381
|
(0, import_path9.join)(tempdir, ctx.args.existingScript, "wrangler.toml"),
|
|
60869
62382
|
(0, import_path9.join)(ctx.project.path, "wrangler.toml")
|
|
60870
62383
|
);
|
|
@@ -60876,8 +62389,8 @@ async function updateFiles(ctx) {
|
|
|
60876
62389
|
wranglertoml: (0, import_path9.resolve)(ctx.project.path, "wrangler.toml")
|
|
60877
62390
|
};
|
|
60878
62391
|
const contents = {
|
|
60879
|
-
packagejson: JSON.parse(await (0,
|
|
60880
|
-
wranglertoml: await (0,
|
|
62392
|
+
packagejson: JSON.parse(await (0, import_promises2.readFile)(paths.packagejson, "utf-8")),
|
|
62393
|
+
wranglertoml: await (0, import_promises2.readFile)(paths.wranglertoml, "utf-8")
|
|
60881
62394
|
};
|
|
60882
62395
|
if (contents.packagejson.name === "<TBD>") {
|
|
60883
62396
|
contents.packagejson.name = ctx.project.name;
|
|
@@ -60886,27 +62399,63 @@ async function updateFiles(ctx) {
|
|
|
60886
62399
|
/^compatibility_date\s*=\s*"<TBD>"/m,
|
|
60887
62400
|
`compatibility_date = "${await getWorkerdCompatibilityDate()}"`
|
|
60888
62401
|
);
|
|
60889
|
-
await (0,
|
|
62402
|
+
await (0, import_promises2.writeFile)(
|
|
60890
62403
|
paths.packagejson,
|
|
60891
62404
|
JSON.stringify(contents.packagejson, null, 2)
|
|
60892
62405
|
);
|
|
60893
|
-
await (0,
|
|
62406
|
+
await (0, import_promises2.writeFile)(paths.wranglertoml, contents.wranglertoml);
|
|
60894
62407
|
}
|
|
60895
62408
|
|
|
60896
62409
|
// src/cli.ts
|
|
62410
|
+
var C3_DEFAULTS = {
|
|
62411
|
+
projectName: new import_haikunator.default().haikunate({ tokenHex: true }),
|
|
62412
|
+
type: "hello-world",
|
|
62413
|
+
framework: "angular",
|
|
62414
|
+
deploy: true,
|
|
62415
|
+
git: true,
|
|
62416
|
+
open: true,
|
|
62417
|
+
ts: true
|
|
62418
|
+
};
|
|
62419
|
+
var WRANGLER_DEFAULTS = {
|
|
62420
|
+
...C3_DEFAULTS,
|
|
62421
|
+
deploy: false
|
|
62422
|
+
};
|
|
60897
62423
|
var main = async (argv) => {
|
|
60898
62424
|
const args = await parseArgs(argv);
|
|
60899
62425
|
printBanner();
|
|
62426
|
+
const projectName = await processArgument(args, "projectName", {
|
|
62427
|
+
type: "text",
|
|
62428
|
+
question: `In which directory do you want to create your application?`,
|
|
62429
|
+
helpText: "also used as application name",
|
|
62430
|
+
defaultValue: C3_DEFAULTS.projectName,
|
|
62431
|
+
label: "dir",
|
|
62432
|
+
validate: (value) => validateProjectDirectory(String(value) || C3_DEFAULTS.projectName),
|
|
62433
|
+
format: (val) => `./${val}`
|
|
62434
|
+
});
|
|
62435
|
+
if (!args.type) {
|
|
62436
|
+
if (args.framework) {
|
|
62437
|
+
args.type = "webFramework";
|
|
62438
|
+
} else if (args.existingScript) {
|
|
62439
|
+
args.type = "pre-existing";
|
|
62440
|
+
}
|
|
62441
|
+
}
|
|
62442
|
+
const templateOptions = Object.entries(templateMap).filter(([_3, { hidden: hidden2 }]) => !hidden2).map(([value, { label }]) => ({ value, label }));
|
|
62443
|
+
const type = await processArgument(args, "type", {
|
|
62444
|
+
type: "select",
|
|
62445
|
+
question: "What type of application do you want to create?",
|
|
62446
|
+
label: "type",
|
|
62447
|
+
options: templateOptions,
|
|
62448
|
+
defaultValue: C3_DEFAULTS.type
|
|
62449
|
+
});
|
|
62450
|
+
if (!type || !Object.keys(templateMap).includes(type)) {
|
|
62451
|
+
return crash("An application type must be specified to continue.");
|
|
62452
|
+
}
|
|
60900
62453
|
const validatedArgs = {
|
|
60901
62454
|
...args,
|
|
60902
|
-
|
|
60903
|
-
|
|
60904
|
-
}),
|
|
60905
|
-
type: await validateType(args.type, {
|
|
60906
|
-
acceptDefault: args.wranglerDefaults
|
|
60907
|
-
})
|
|
62455
|
+
type,
|
|
62456
|
+
projectName
|
|
60908
62457
|
};
|
|
60909
|
-
const { handler } = templateMap[
|
|
62458
|
+
const { handler } = templateMap[type];
|
|
60910
62459
|
await handler(validatedArgs);
|
|
60911
62460
|
};
|
|
60912
62461
|
var printBanner = () => {
|
|
@@ -60923,42 +62472,17 @@ var parseArgs = async (argv) => {
|
|
|
60923
62472
|
}).option("existing-script", {
|
|
60924
62473
|
type: "string",
|
|
60925
62474
|
hidden: templateMap["pre-existing"].hidden
|
|
62475
|
+
}).option("accept-defaults", {
|
|
62476
|
+
alias: "y",
|
|
62477
|
+
type: "boolean"
|
|
60926
62478
|
}).option("wrangler-defaults", { type: "boolean", hidden: true }).version(version).help().argv;
|
|
60927
62479
|
return {
|
|
62480
|
+
...args.wranglerDefaults && WRANGLER_DEFAULTS,
|
|
62481
|
+
...args.acceptDefaults && C3_DEFAULTS,
|
|
60928
62482
|
projectName: args._[0],
|
|
60929
62483
|
...args
|
|
60930
62484
|
};
|
|
60931
62485
|
};
|
|
60932
|
-
var validateName = async (name, { acceptDefault = false } = {}) => {
|
|
60933
|
-
const defaultValue = name ?? new import_haikunator.default().haikunate({ tokenHex: true });
|
|
60934
|
-
return textInput({
|
|
60935
|
-
question: `In which directory do you want to create your application?`,
|
|
60936
|
-
helpText: "also used as application name",
|
|
60937
|
-
renderSubmitted: (value) => {
|
|
60938
|
-
return `${brandColor("dir")} ${dim(value)}`;
|
|
60939
|
-
},
|
|
60940
|
-
defaultValue,
|
|
60941
|
-
acceptDefault,
|
|
60942
|
-
validate: (value) => validateProjectDirectory(value || defaultValue),
|
|
60943
|
-
format: (val) => `./${val}`
|
|
60944
|
-
});
|
|
60945
|
-
};
|
|
60946
|
-
var validateType = async (type, { acceptDefault = false } = {}) => {
|
|
60947
|
-
const templateOptions = Object.entries(templateMap).filter(([_3, { hidden: hidden2 }]) => !hidden2).map(([value, { label }]) => ({ value, label }));
|
|
60948
|
-
type = await selectInput({
|
|
60949
|
-
question: "What type of application do you want to create?",
|
|
60950
|
-
options: templateOptions,
|
|
60951
|
-
renderSubmitted: (option) => {
|
|
60952
|
-
return `${brandColor("type")} ${dim(option.label)}`;
|
|
60953
|
-
},
|
|
60954
|
-
defaultValue: type ?? "hello-world",
|
|
60955
|
-
acceptDefault
|
|
60956
|
-
});
|
|
60957
|
-
if (!type || !Object.keys(templateMap).includes(type)) {
|
|
60958
|
-
crash("An application type must be specified to continue.");
|
|
60959
|
-
}
|
|
60960
|
-
return type;
|
|
60961
|
-
};
|
|
60962
62486
|
var templateMap = {
|
|
60963
62487
|
webFramework: {
|
|
60964
62488
|
label: "Website or web app",
|
|
@@ -60996,7 +62520,9 @@ var templateMap = {
|
|
|
60996
62520
|
main(process.argv).catch((e) => crash(e));
|
|
60997
62521
|
// Annotate the CommonJS export names for ESM import in node:
|
|
60998
62522
|
0 && (module.exports = {
|
|
60999
|
-
|
|
62523
|
+
C3_DEFAULTS,
|
|
62524
|
+
main,
|
|
62525
|
+
parseArgs
|
|
61000
62526
|
});
|
|
61001
62527
|
/*! Bundled license information:
|
|
61002
62528
|
|