create-cloudflare 0.0.0-cc9ced83 → 0.0.0-d017e9f2
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/angular/templates/tools/bundle.mjs +5 -2
- package/dist/cli.js +1848 -321
- package/package.json +11 -5
- 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}`];
|
|
55735
|
+
};
|
|
55736
|
+
var handleCancel = () => {
|
|
55737
|
+
cancel("Operation cancelled.");
|
|
55738
|
+
process.exit(0);
|
|
54465
55739
|
};
|
|
54466
|
-
var
|
|
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-d017e9f2";
|
|
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,21 @@ 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
|
+
cwd: ctx.project.path,
|
|
60997
|
+
startText: "Installing dependencies",
|
|
60998
|
+
doneText: `${brandColor("installed")} ${dim(`via \`${npm12} install\``)}`
|
|
60999
|
+
});
|
|
61000
|
+
};
|
|
59617
61001
|
var installWrangler = async () => {
|
|
59618
61002
|
const { npm: npm12 } = detectPackageManager();
|
|
59619
61003
|
if ((0, import_fs5.existsSync)(import_path5.default.resolve("node_modules", "wrangler"))) {
|
|
@@ -59631,10 +61015,14 @@ var installWrangler = async () => {
|
|
|
59631
61015
|
};
|
|
59632
61016
|
var isLoggedIn = async () => {
|
|
59633
61017
|
const { npx: npx6 } = detectPackageManager();
|
|
59634
|
-
|
|
59635
|
-
|
|
59636
|
-
|
|
59637
|
-
|
|
61018
|
+
try {
|
|
61019
|
+
const output = await runCommand(`${npx6} wrangler whoami`, {
|
|
61020
|
+
silent: true
|
|
61021
|
+
});
|
|
61022
|
+
return /You are logged in/.test(output);
|
|
61023
|
+
} catch (error) {
|
|
61024
|
+
return false;
|
|
61025
|
+
}
|
|
59638
61026
|
};
|
|
59639
61027
|
var wranglerLogin = async () => {
|
|
59640
61028
|
const { npx: npx6 } = detectPackageManager();
|
|
@@ -59687,7 +61075,7 @@ async function getWorkerdCompatibilityDate() {
|
|
|
59687
61075
|
}
|
|
59688
61076
|
|
|
59689
61077
|
// src/helpers/poll.ts
|
|
59690
|
-
var
|
|
61078
|
+
var import_dns2 = __toESM(require_dns2());
|
|
59691
61079
|
var import_undici = __toESM(require_undici());
|
|
59692
61080
|
var TIMEOUT = 1e3 * 60 * 5;
|
|
59693
61081
|
var POLL_INTERVAL = 1e3;
|
|
@@ -59696,14 +61084,28 @@ var poll = async (url) => {
|
|
|
59696
61084
|
const domain = new URL(url).host;
|
|
59697
61085
|
const s = spinner();
|
|
59698
61086
|
s.start("Waiting for DNS to propagate");
|
|
61087
|
+
await sleep(10 * 1e3);
|
|
61088
|
+
await pollDns(domain, start, s);
|
|
61089
|
+
if (await pollHttp(url, start, s))
|
|
61090
|
+
return true;
|
|
61091
|
+
s.stop(
|
|
61092
|
+
`${brandColor(
|
|
61093
|
+
"timed out"
|
|
61094
|
+
)} while waiting for ${url} - try accessing it in a few minutes.`
|
|
61095
|
+
);
|
|
61096
|
+
return false;
|
|
61097
|
+
};
|
|
61098
|
+
var pollDns = async (domain, start, s) => {
|
|
59699
61099
|
while (Date.now() - start < TIMEOUT) {
|
|
59700
61100
|
s.update(`Waiting for DNS to propagate (${secondsSince(start)}s)`);
|
|
59701
|
-
if (await
|
|
61101
|
+
if (await isDomainResolvable(domain)) {
|
|
59702
61102
|
s.stop(`${brandColor("DNS propagation")} ${dim("complete")}.`);
|
|
59703
|
-
|
|
61103
|
+
return;
|
|
59704
61104
|
}
|
|
59705
61105
|
await sleep(POLL_INTERVAL);
|
|
59706
61106
|
}
|
|
61107
|
+
};
|
|
61108
|
+
var pollHttp = async (url, start, s) => {
|
|
59707
61109
|
s.start("Waiting for deployment to become available");
|
|
59708
61110
|
while (Date.now() - start < TIMEOUT) {
|
|
59709
61111
|
s.update(
|
|
@@ -59727,27 +61129,31 @@ var poll = async (url) => {
|
|
|
59727
61129
|
}
|
|
59728
61130
|
await sleep(POLL_INTERVAL);
|
|
59729
61131
|
}
|
|
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
61132
|
};
|
|
59737
|
-
async
|
|
61133
|
+
var isDomainResolvable = async (domain) => {
|
|
59738
61134
|
try {
|
|
59739
|
-
const
|
|
59740
|
-
|
|
59741
|
-
|
|
59742
|
-
|
|
59743
|
-
|
|
59744
|
-
|
|
59745
|
-
|
|
59746
|
-
return (await resolver.resolve4(domain)).length > 0;
|
|
59747
|
-
} catch (e) {
|
|
61135
|
+
const nameServers = await lookupSubdomainNameservers(domain);
|
|
61136
|
+
if (nameServers.length === 0)
|
|
61137
|
+
return false;
|
|
61138
|
+
const dns = new import_dns2.default({ nameServers });
|
|
61139
|
+
const res = await dns.resolve(domain, "A");
|
|
61140
|
+
return res.answers.length > 0;
|
|
61141
|
+
} catch (error) {
|
|
59748
61142
|
return false;
|
|
59749
61143
|
}
|
|
59750
|
-
}
|
|
61144
|
+
};
|
|
61145
|
+
var lookupSubdomainNameservers = async (domain) => {
|
|
61146
|
+
const nameServers = await lookupDomainLevelNameservers(domain);
|
|
61147
|
+
const dns = new import_dns2.default({ nameServers });
|
|
61148
|
+
const res = await dns.resolve(domain, "NS");
|
|
61149
|
+
return res.authorities.filter((r2) => Boolean(r2.ns)).map((r2) => r2.ns);
|
|
61150
|
+
};
|
|
61151
|
+
var lookupDomainLevelNameservers = async (domain) => {
|
|
61152
|
+
const baseDomain = domain.split(".").slice(-2).join(".");
|
|
61153
|
+
const dns = new import_dns2.default({});
|
|
61154
|
+
const nameservers = await dns.resolve(baseDomain, "NS");
|
|
61155
|
+
return nameservers.answers.map((n) => n.ns);
|
|
61156
|
+
};
|
|
59751
61157
|
async function sleep(ms) {
|
|
59752
61158
|
return new Promise((res) => setTimeout(res, ms));
|
|
59753
61159
|
}
|
|
@@ -59779,14 +61185,12 @@ var setupProjectDirectory = (args) => {
|
|
|
59779
61185
|
};
|
|
59780
61186
|
var offerToDeploy = async (ctx) => {
|
|
59781
61187
|
startSection(`Deploy with Cloudflare`, `Step 3 of 3`);
|
|
59782
|
-
ctx.
|
|
61188
|
+
const label = `deploy via \`${npm} run ${ctx.framework?.config.deployCommand ?? "deploy"}\``;
|
|
61189
|
+
ctx.args.deploy = await processArgument(ctx.args, "deploy", {
|
|
61190
|
+
type: "confirm",
|
|
59783
61191
|
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
|
|
61192
|
+
label,
|
|
61193
|
+
defaultValue: C3_DEFAULTS.deploy
|
|
59790
61194
|
});
|
|
59791
61195
|
if (!ctx.args.deploy)
|
|
59792
61196
|
return;
|
|
@@ -59806,7 +61210,7 @@ var runDeploy = async (ctx) => {
|
|
|
59806
61210
|
const result = await runCommand(deployCmd, {
|
|
59807
61211
|
silent: true,
|
|
59808
61212
|
cwd: ctx.project.path,
|
|
59809
|
-
env: { CLOUDFLARE_ACCOUNT_ID: ctx.account.id },
|
|
61213
|
+
env: { CLOUDFLARE_ACCOUNT_ID: ctx.account.id, NODE_ENV: "production" },
|
|
59810
61214
|
startText: `Deploying your application`,
|
|
59811
61215
|
doneText: `${brandColor("deployed")} ${dim(`via \`${deployCmd}\``)}`
|
|
59812
61216
|
});
|
|
@@ -59840,14 +61244,12 @@ var chooseAccount = async (ctx) => {
|
|
|
59840
61244
|
label: name,
|
|
59841
61245
|
value: id
|
|
59842
61246
|
}));
|
|
59843
|
-
accountId = await
|
|
61247
|
+
accountId = await inputPrompt({
|
|
61248
|
+
type: "select",
|
|
59844
61249
|
question: "Which account do you want to use?",
|
|
59845
61250
|
options: accountOptions,
|
|
59846
|
-
|
|
59847
|
-
|
|
59848
|
-
},
|
|
59849
|
-
defaultValue: accountOptions[0].value,
|
|
59850
|
-
acceptDefault: ctx.args.wranglerDefaults
|
|
61251
|
+
label: "account",
|
|
61252
|
+
defaultValue: accountOptions[0].value
|
|
59851
61253
|
});
|
|
59852
61254
|
}
|
|
59853
61255
|
const accountName = Object.keys(accounts).find(
|
|
@@ -59857,6 +61259,7 @@ var chooseAccount = async (ctx) => {
|
|
|
59857
61259
|
};
|
|
59858
61260
|
var printSummary = async (ctx) => {
|
|
59859
61261
|
const nextSteps = [
|
|
61262
|
+
[`Navigate to the new directory`, `cd ${ctx.project.name}`],
|
|
59860
61263
|
[
|
|
59861
61264
|
`Run the development server`,
|
|
59862
61265
|
`${npm} run ${ctx.framework?.config.devCommand ?? "start"}`
|
|
@@ -59867,7 +61270,7 @@ var printSummary = async (ctx) => {
|
|
|
59867
61270
|
],
|
|
59868
61271
|
[
|
|
59869
61272
|
`Read the documentation`,
|
|
59870
|
-
`https://developers.cloudflare.com/${ctx.framework ? "pages" : "workers"}`
|
|
61273
|
+
`https://developers.cloudflare.com/${ctx.framework ? ctx.framework.config.type === "workers" ? "workers" : "pages" : "workers"}`
|
|
59871
61274
|
],
|
|
59872
61275
|
[`Stuck? Join us at`, `https://discord.gg/cloudflaredev`]
|
|
59873
61276
|
];
|
|
@@ -59904,6 +61307,7 @@ var printSummary = async (ctx) => {
|
|
|
59904
61307
|
}
|
|
59905
61308
|
}
|
|
59906
61309
|
endSection("See you again soon!");
|
|
61310
|
+
process.exit(0);
|
|
59907
61311
|
};
|
|
59908
61312
|
var offerGit = async (ctx) => {
|
|
59909
61313
|
const gitInstalled = await isGitInstalled();
|
|
@@ -59919,11 +61323,11 @@ var offerGit = async (ctx) => {
|
|
|
59919
61323
|
const insideGitRepo = await isInsideGitRepo(ctx.project.path);
|
|
59920
61324
|
if (insideGitRepo)
|
|
59921
61325
|
return;
|
|
59922
|
-
ctx.args.git
|
|
61326
|
+
ctx.args.git = await processArgument(ctx.args, "git", {
|
|
61327
|
+
type: "confirm",
|
|
59923
61328
|
question: "Do you want to use git for version control?",
|
|
59924
|
-
|
|
59925
|
-
defaultValue:
|
|
59926
|
-
acceptDefault: ctx.args.wranglerDefaults
|
|
61329
|
+
label: "git",
|
|
61330
|
+
defaultValue: C3_DEFAULTS.git
|
|
59927
61331
|
});
|
|
59928
61332
|
if (ctx.args.git) {
|
|
59929
61333
|
await printAsyncStatus({
|
|
@@ -59983,13 +61387,31 @@ async function initializeGit(cwd) {
|
|
|
59983
61387
|
await runCommand(`git init`, { useSpinner: false, silent: true, cwd });
|
|
59984
61388
|
}
|
|
59985
61389
|
}
|
|
61390
|
+
async function getProductionBranch(cwd) {
|
|
61391
|
+
try {
|
|
61392
|
+
const productionBranch = await runCommand(
|
|
61393
|
+
// "git branch --show-current", // git@^2.22
|
|
61394
|
+
"git rev-parse --abbrev-ref HEAD",
|
|
61395
|
+
// git@^1.6.3
|
|
61396
|
+
{
|
|
61397
|
+
silent: true,
|
|
61398
|
+
cwd,
|
|
61399
|
+
useSpinner: false,
|
|
61400
|
+
captureOutput: true
|
|
61401
|
+
}
|
|
61402
|
+
);
|
|
61403
|
+
return productionBranch.trim();
|
|
61404
|
+
} catch (err) {
|
|
61405
|
+
}
|
|
61406
|
+
return "main";
|
|
61407
|
+
}
|
|
59986
61408
|
|
|
59987
61409
|
// src/pages.ts
|
|
59988
61410
|
var import_path8 = require("path");
|
|
59989
61411
|
var import_process3 = require("process");
|
|
59990
61412
|
|
|
59991
61413
|
// src/frameworks/angular/index.ts
|
|
59992
|
-
var
|
|
61414
|
+
var import_promises = require("node:fs/promises");
|
|
59993
61415
|
var import_node_path = require("node:path");
|
|
59994
61416
|
|
|
59995
61417
|
// src/helpers/files.ts
|
|
@@ -60012,6 +61434,9 @@ var readJSON = (path3) => {
|
|
|
60012
61434
|
const contents = readFile(path3);
|
|
60013
61435
|
return contents ? JSON.parse(contents) : contents;
|
|
60014
61436
|
};
|
|
61437
|
+
var writeJSON = (path3, object, stringifySpace) => {
|
|
61438
|
+
writeFile2(path3, JSON.stringify(object, null, stringifySpace));
|
|
61439
|
+
};
|
|
60015
61440
|
var probePaths = (paths, errorMsg = "Failed to find required file.") => {
|
|
60016
61441
|
for (const path3 of paths) {
|
|
60017
61442
|
if ((0, import_fs7.existsSync)(path3)) {
|
|
@@ -60024,6 +61449,35 @@ var probePaths = (paths, errorMsg = "Failed to find required file.") => {
|
|
|
60024
61449
|
var usesTypescript = (projectRoot = ".") => {
|
|
60025
61450
|
return (0, import_fs7.existsSync)(`${projectRoot}/tsconfig.json`);
|
|
60026
61451
|
};
|
|
61452
|
+
var eslintRcExts = ["js", "cjs", "yaml", "yml", "json"];
|
|
61453
|
+
var usesEslint = (ctx) => {
|
|
61454
|
+
for (const ext of eslintRcExts) {
|
|
61455
|
+
const eslintRcFilename = `.eslintrc.${ext}`;
|
|
61456
|
+
if ((0, import_fs7.existsSync)(`${ctx.project.path}/${eslintRcFilename}`)) {
|
|
61457
|
+
return {
|
|
61458
|
+
used: true,
|
|
61459
|
+
configType: eslintRcFilename
|
|
61460
|
+
};
|
|
61461
|
+
}
|
|
61462
|
+
}
|
|
61463
|
+
if ((0, import_fs7.existsSync)(`${ctx.project.path}/eslint.config.js`)) {
|
|
61464
|
+
return {
|
|
61465
|
+
used: true,
|
|
61466
|
+
configType: "eslint.config.js"
|
|
61467
|
+
};
|
|
61468
|
+
}
|
|
61469
|
+
try {
|
|
61470
|
+
const pkgJson = readJSON(`${ctx.project.path}/package.json`);
|
|
61471
|
+
if (pkgJson.eslintConfig) {
|
|
61472
|
+
return {
|
|
61473
|
+
used: true,
|
|
61474
|
+
configType: "package.json"
|
|
61475
|
+
};
|
|
61476
|
+
}
|
|
61477
|
+
} catch {
|
|
61478
|
+
}
|
|
61479
|
+
return { used: false };
|
|
61480
|
+
};
|
|
60027
61481
|
var compatDateFlag = () => {
|
|
60028
61482
|
const date = /* @__PURE__ */ new Date();
|
|
60029
61483
|
return `--compatibility-date=${date.toISOString().slice(0, 10)}`;
|
|
@@ -60067,7 +61521,7 @@ var angular_default = config;
|
|
|
60067
61521
|
async function installCFWorker(ctx) {
|
|
60068
61522
|
const s = spinner();
|
|
60069
61523
|
s.start(`Adding Cloudflare Pages adapter code`);
|
|
60070
|
-
await (0,
|
|
61524
|
+
await (0, import_promises.cp)(
|
|
60071
61525
|
// eslint-disable-next-line no-restricted-globals
|
|
60072
61526
|
(0, import_node_path.resolve)(__dirname, "./angular/templates"),
|
|
60073
61527
|
(0, import_node_path.resolve)(ctx.project.path),
|
|
@@ -60109,7 +61563,7 @@ async function updateAppCode() {
|
|
|
60109
61563
|
"providers: [provideHttpClient(withFetch()), provideClientHydration(), "
|
|
60110
61564
|
);
|
|
60111
61565
|
writeFile2((0, import_node_path.resolve)(appConfigPath), newAppConfig);
|
|
60112
|
-
await (0,
|
|
61566
|
+
await (0, import_promises.rm)((0, import_node_path.resolve)("server.ts"));
|
|
60113
61567
|
s.stop(`${brandColor(`updated`)} ${dim(appConfigPath)}`);
|
|
60114
61568
|
}
|
|
60115
61569
|
function updateAngularJson(ctx) {
|
|
@@ -60191,25 +61645,19 @@ var docusaurus_default = config3;
|
|
|
60191
61645
|
var { npm: npm4, dlx: dlx4 } = detectPackageManager();
|
|
60192
61646
|
var generate4 = async (ctx) => {
|
|
60193
61647
|
const defaultTemplate = "https://github.com/gatsbyjs/gatsby-starter-blog";
|
|
60194
|
-
const useTemplate = await
|
|
61648
|
+
const useTemplate = await inputPrompt({
|
|
61649
|
+
type: "confirm",
|
|
60195
61650
|
question: "Would you like to use a template?",
|
|
60196
|
-
|
|
60197
|
-
|
|
60198
|
-
return `${brandColor(`template`)} ${status2}`;
|
|
60199
|
-
},
|
|
60200
|
-
defaultValue: true,
|
|
60201
|
-
acceptDefault: false
|
|
61651
|
+
label: "template",
|
|
61652
|
+
defaultValue: true
|
|
60202
61653
|
});
|
|
60203
61654
|
let templateUrl = "";
|
|
60204
61655
|
if (useTemplate) {
|
|
60205
|
-
templateUrl = await
|
|
61656
|
+
templateUrl = await inputPrompt({
|
|
61657
|
+
type: "text",
|
|
60206
61658
|
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
|
|
61659
|
+
label: "template",
|
|
61660
|
+
defaultValue: defaultTemplate
|
|
60213
61661
|
});
|
|
60214
61662
|
}
|
|
60215
61663
|
const version2 = getFrameworkVersion(ctx);
|
|
@@ -60234,7 +61682,7 @@ var generate5 = async (ctx) => {
|
|
|
60234
61682
|
const version2 = getFrameworkVersion(ctx);
|
|
60235
61683
|
await runFrameworkGenerator(
|
|
60236
61684
|
ctx,
|
|
60237
|
-
`${dlx5} create-hono@${version2} ${ctx.project.name} --template cloudflare-
|
|
61685
|
+
`${dlx5} create-hono@${version2} ${ctx.project.name} --template cloudflare-workers`
|
|
60238
61686
|
);
|
|
60239
61687
|
logRaw("");
|
|
60240
61688
|
};
|
|
@@ -60243,7 +61691,8 @@ var config5 = {
|
|
|
60243
61691
|
displayName: "Hono",
|
|
60244
61692
|
packageScripts: {},
|
|
60245
61693
|
deployCommand: "deploy",
|
|
60246
|
-
devCommand: "dev"
|
|
61694
|
+
devCommand: "dev",
|
|
61695
|
+
type: "workers"
|
|
60247
61696
|
};
|
|
60248
61697
|
var hono_default = config5;
|
|
60249
61698
|
|
|
@@ -60335,20 +61784,56 @@ var configure3 = async (ctx) => {
|
|
|
60335
61784
|
);
|
|
60336
61785
|
writeFile2(handlerPath, handlerFile);
|
|
60337
61786
|
updateStatus("Created an example API route handler");
|
|
61787
|
+
const installEslintPlugin = await shouldInstallNextOnPagesEslintPlugin(ctx);
|
|
61788
|
+
if (installEslintPlugin) {
|
|
61789
|
+
await writeEslintrc(ctx);
|
|
61790
|
+
}
|
|
60338
61791
|
process.chdir(projectName);
|
|
60339
|
-
const packages = [
|
|
61792
|
+
const packages = [
|
|
61793
|
+
"@cloudflare/next-on-pages@1",
|
|
61794
|
+
"vercel",
|
|
61795
|
+
...installEslintPlugin ? ["eslint-plugin-next-on-pages"] : []
|
|
61796
|
+
];
|
|
60340
61797
|
await installPackages(packages, {
|
|
60341
61798
|
dev: true,
|
|
60342
61799
|
startText: "Adding the Cloudflare Pages adapter",
|
|
60343
61800
|
doneText: `${brandColor(`installed`)} ${dim(packages.join(", "))}`
|
|
60344
61801
|
});
|
|
60345
61802
|
};
|
|
61803
|
+
var shouldInstallNextOnPagesEslintPlugin = async (ctx) => {
|
|
61804
|
+
const eslintUsage = usesEslint(ctx);
|
|
61805
|
+
if (!eslintUsage.used)
|
|
61806
|
+
return false;
|
|
61807
|
+
if (eslintUsage.configType !== ".eslintrc.json") {
|
|
61808
|
+
warn(
|
|
61809
|
+
`Expected .eslintrc.json from Next.js scaffolding but found ${eslintUsage.configType} instead`
|
|
61810
|
+
);
|
|
61811
|
+
return false;
|
|
61812
|
+
}
|
|
61813
|
+
return await processArgument(ctx.args, "eslint-plugin", {
|
|
61814
|
+
type: "confirm",
|
|
61815
|
+
question: "Do you want to use the next-on-pages eslint-plugin?",
|
|
61816
|
+
label: "eslint-plugin",
|
|
61817
|
+
defaultValue: true
|
|
61818
|
+
});
|
|
61819
|
+
};
|
|
61820
|
+
var writeEslintrc = async (ctx) => {
|
|
61821
|
+
const eslintConfig = readJSON(`${ctx.project.name}/.eslintrc.json`);
|
|
61822
|
+
eslintConfig.plugins ??= [];
|
|
61823
|
+
eslintConfig.plugins.push("eslint-plugin-next-on-pages");
|
|
61824
|
+
if (typeof eslintConfig.extends === "string") {
|
|
61825
|
+
eslintConfig.extends = [eslintConfig.extends];
|
|
61826
|
+
}
|
|
61827
|
+
eslintConfig.extends ??= [];
|
|
61828
|
+
eslintConfig.extends.push("plugin:eslint-plugin-next-on-pages/recommended");
|
|
61829
|
+
writeJSON(`${ctx.project.name}/.eslintrc.json`, eslintConfig, 2);
|
|
61830
|
+
};
|
|
60346
61831
|
var config6 = {
|
|
60347
61832
|
generate: generate6,
|
|
60348
61833
|
configure: configure3,
|
|
60349
61834
|
displayName: "Next",
|
|
60350
61835
|
packageScripts: {
|
|
60351
|
-
"pages:build": `${
|
|
61836
|
+
"pages:build": `${dlx6} @cloudflare/next-on-pages@1`,
|
|
60352
61837
|
"pages:deploy": `${npm5} run pages:build && wrangler pages deploy .vercel/output/static`,
|
|
60353
61838
|
"pages:watch": `${npx3} @cloudflare/next-on-pages@1 --watch`,
|
|
60354
61839
|
"pages:dev": `${npx3} wrangler pages dev .vercel/output/static --compatibility-flag=nodejs_compat`
|
|
@@ -60361,7 +61846,7 @@ var config6 = {
|
|
|
60361
61846
|
"--src-dir",
|
|
60362
61847
|
"--app",
|
|
60363
61848
|
"--import-alias",
|
|
60364
|
-
|
|
61849
|
+
"@/*"
|
|
60365
61850
|
],
|
|
60366
61851
|
compatibilityFlags: ["nodejs_compat"]
|
|
60367
61852
|
};
|
|
@@ -60379,6 +61864,7 @@ var generate7 = async (ctx) => {
|
|
|
60379
61864
|
};
|
|
60380
61865
|
var configure4 = async (ctx) => {
|
|
60381
61866
|
process.chdir(ctx.project.path);
|
|
61867
|
+
writeFile2("./.node-version", "17");
|
|
60382
61868
|
await npmInstall();
|
|
60383
61869
|
};
|
|
60384
61870
|
var config7 = {
|
|
@@ -60386,8 +61872,9 @@ var config7 = {
|
|
|
60386
61872
|
configure: configure4,
|
|
60387
61873
|
displayName: "Nuxt",
|
|
60388
61874
|
packageScripts: {
|
|
61875
|
+
build: (cmd) => `NITRO_PRESET=cloudflare-pages ${cmd}`,
|
|
60389
61876
|
"pages:dev": `wrangler pages dev ${compatDateFlag()} --proxy 3000 -- npm run dev`,
|
|
60390
|
-
"pages:deploy":
|
|
61877
|
+
"pages:deploy": "npm run build && wrangler pages deploy ./dist"
|
|
60391
61878
|
}
|
|
60392
61879
|
};
|
|
60393
61880
|
var nuxt_default = config7;
|
|
@@ -60429,8 +61916,12 @@ var generate9 = async (ctx) => {
|
|
|
60429
61916
|
);
|
|
60430
61917
|
logRaw("");
|
|
60431
61918
|
};
|
|
61919
|
+
var configure6 = async (ctx) => {
|
|
61920
|
+
await resetPackageManager(ctx);
|
|
61921
|
+
};
|
|
60432
61922
|
var config9 = {
|
|
60433
61923
|
generate: generate9,
|
|
61924
|
+
configure: configure6,
|
|
60434
61925
|
displayName: "React",
|
|
60435
61926
|
packageScripts: {
|
|
60436
61927
|
"pages:dev": `wrangler pages dev ${compatDateFlag()} --port 3000 -- ${npm7} start`,
|
|
@@ -60483,7 +61974,7 @@ var generate11 = async (ctx) => {
|
|
|
60483
61974
|
await runFrameworkGenerator(ctx, `${dlx11} create-solid@${version2}`);
|
|
60484
61975
|
logRaw("");
|
|
60485
61976
|
};
|
|
60486
|
-
var
|
|
61977
|
+
var configure7 = async () => {
|
|
60487
61978
|
const pkg = "solid-start-cloudflare-pages";
|
|
60488
61979
|
await installPackages([pkg], {
|
|
60489
61980
|
dev: true,
|
|
@@ -60498,11 +61989,11 @@ var configure6 = async () => {
|
|
|
60498
61989
|
};
|
|
60499
61990
|
var config11 = {
|
|
60500
61991
|
generate: generate11,
|
|
60501
|
-
configure:
|
|
61992
|
+
configure: configure7,
|
|
60502
61993
|
displayName: "Solid",
|
|
60503
61994
|
packageScripts: {
|
|
60504
61995
|
"pages:dev": `wrangler pages dev ${compatDateFlag()} --proxy 3000 -- ${npm9} run dev`,
|
|
60505
|
-
"pages:deploy": `${npm9} run build
|
|
61996
|
+
"pages:deploy": `${npm9} run build && wrangler pages deploy ./dist/public`
|
|
60506
61997
|
}
|
|
60507
61998
|
};
|
|
60508
61999
|
var solid_default = config11;
|
|
@@ -60563,7 +62054,7 @@ var generate12 = async (ctx) => {
|
|
|
60563
62054
|
);
|
|
60564
62055
|
logRaw("");
|
|
60565
62056
|
};
|
|
60566
|
-
var
|
|
62057
|
+
var configure8 = async (ctx) => {
|
|
60567
62058
|
process.chdir(ctx.project.path);
|
|
60568
62059
|
await npmInstall();
|
|
60569
62060
|
const pkg = `@sveltejs/adapter-cloudflare`;
|
|
@@ -60598,7 +62089,7 @@ var configure7 = async (ctx) => {
|
|
|
60598
62089
|
};
|
|
60599
62090
|
var config12 = {
|
|
60600
62091
|
generate: generate12,
|
|
60601
|
-
configure:
|
|
62092
|
+
configure: configure8,
|
|
60602
62093
|
displayName: "Svelte",
|
|
60603
62094
|
packageScripts: {
|
|
60604
62095
|
"pages:dev": `wrangler pages dev ${compatDateFlag()} --proxy 5173 -- ${npm10} run dev`,
|
|
@@ -60613,10 +62104,10 @@ var versionMap_default = {
|
|
|
60613
62104
|
astro: "3.1.5",
|
|
60614
62105
|
docusaurus: "2.4.1",
|
|
60615
62106
|
gatsby: "5.10.0",
|
|
60616
|
-
hono: "0.2.
|
|
62107
|
+
hono: "0.2.6",
|
|
60617
62108
|
next: "13.4.2",
|
|
60618
62109
|
nuxt: "3.4.2",
|
|
60619
|
-
qwik: "1.
|
|
62110
|
+
qwik: "1.2.7",
|
|
60620
62111
|
react: "5.0.1",
|
|
60621
62112
|
remix: "1.16.0",
|
|
60622
62113
|
solid: "0.2.26",
|
|
@@ -60696,11 +62187,11 @@ var runPagesGenerator = async (args) => {
|
|
|
60696
62187
|
},
|
|
60697
62188
|
args
|
|
60698
62189
|
};
|
|
60699
|
-
const { generate: generate14, configure:
|
|
62190
|
+
const { generate: generate14, configure: configure9 } = FrameworkMap[framework];
|
|
60700
62191
|
await generate14({ ...ctx });
|
|
60701
62192
|
startSection("Configuring your application for Cloudflare", "Step 2 of 3");
|
|
60702
|
-
if (
|
|
60703
|
-
await
|
|
62193
|
+
if (configure9) {
|
|
62194
|
+
await configure9({ ...ctx });
|
|
60704
62195
|
}
|
|
60705
62196
|
await updatePackageScripts(ctx);
|
|
60706
62197
|
await offerGit(ctx);
|
|
@@ -60718,14 +62209,12 @@ var getFrameworkSelection = async (args) => {
|
|
|
60718
62209
|
value: key
|
|
60719
62210
|
})
|
|
60720
62211
|
);
|
|
60721
|
-
const framework = await
|
|
62212
|
+
const framework = await processArgument(args, "framework", {
|
|
62213
|
+
type: "select",
|
|
62214
|
+
label: "framework",
|
|
60722
62215
|
question: "Which development framework do you want to use?",
|
|
60723
62216
|
options: frameworkOptions,
|
|
60724
|
-
|
|
60725
|
-
return `${brandColor("framework")} ${dim(option.label)}`;
|
|
60726
|
-
},
|
|
60727
|
-
defaultValue: args.framework ?? "svelte",
|
|
60728
|
-
acceptDefault: Boolean(args.framework)
|
|
62217
|
+
defaultValue: C3_DEFAULTS.framework
|
|
60729
62218
|
});
|
|
60730
62219
|
framework || crash("A framework must be selected to continue.");
|
|
60731
62220
|
if (!supportedFramework(framework)) {
|
|
@@ -60739,11 +62228,29 @@ var updatePackageScripts = async (ctx) => {
|
|
|
60739
62228
|
const { packageScripts } = ctx.framework?.config ?? {};
|
|
60740
62229
|
if (packageScripts) {
|
|
60741
62230
|
const s = spinner();
|
|
60742
|
-
|
|
62231
|
+
const updatingScripts = Object.entries(packageScripts).filter(
|
|
62232
|
+
([_3, cmdOrUpdater]) => typeof cmdOrUpdater === "function"
|
|
62233
|
+
).length > 0;
|
|
62234
|
+
s.start(
|
|
62235
|
+
`${updatingScripts ? "Updating" : "Adding"} command scripts`,
|
|
62236
|
+
"for development and deployment"
|
|
62237
|
+
);
|
|
60743
62238
|
const pkgJsonPath = (0, import_path8.resolve)("package.json");
|
|
60744
62239
|
const pkgConfig = readJSON(pkgJsonPath);
|
|
60745
|
-
Object.entries(packageScripts).forEach(([target,
|
|
60746
|
-
|
|
62240
|
+
Object.entries(packageScripts).forEach(([target, cmdOrUpdater]) => {
|
|
62241
|
+
if (typeof cmdOrUpdater === "string") {
|
|
62242
|
+
const command2 = cmdOrUpdater;
|
|
62243
|
+
pkgConfig.scripts[target] = command2;
|
|
62244
|
+
} else {
|
|
62245
|
+
const existingCommand = pkgConfig.scripts[target];
|
|
62246
|
+
if (!existingCommand) {
|
|
62247
|
+
throw new Error(
|
|
62248
|
+
`Could not find ${target} script to update during ${ctx.framework} setup`
|
|
62249
|
+
);
|
|
62250
|
+
}
|
|
62251
|
+
const updater = cmdOrUpdater;
|
|
62252
|
+
pkgConfig.scripts[target] = updater(existingCommand);
|
|
62253
|
+
}
|
|
60747
62254
|
});
|
|
60748
62255
|
writeFile2(pkgJsonPath, JSON.stringify(pkgConfig, null, 2));
|
|
60749
62256
|
s.stop(`${brandColor("added")} ${dim("commands to `package.json`")}`);
|
|
@@ -60752,6 +62259,8 @@ var updatePackageScripts = async (ctx) => {
|
|
|
60752
62259
|
var createProject = async (ctx) => {
|
|
60753
62260
|
if (ctx.args.deploy === false)
|
|
60754
62261
|
return;
|
|
62262
|
+
if (ctx.framework?.config.type === "workers")
|
|
62263
|
+
return;
|
|
60755
62264
|
if (!ctx.account?.id) {
|
|
60756
62265
|
crash("Failed to read Cloudflare account.");
|
|
60757
62266
|
return;
|
|
@@ -60759,25 +62268,28 @@ var createProject = async (ctx) => {
|
|
|
60759
62268
|
const CLOUDFLARE_ACCOUNT_ID = ctx.account.id;
|
|
60760
62269
|
const compatFlags = ctx.framework?.config.compatibilityFlags?.join(" ");
|
|
60761
62270
|
const compatFlagsArg = compatFlags ? `--compatibility-flags ${compatFlags}` : "";
|
|
60762
|
-
const
|
|
62271
|
+
const productionBranch = await getProductionBranch(ctx.project.path);
|
|
62272
|
+
const cmd = `${npx5} wrangler pages project create ${ctx.project.name} --production-branch ${productionBranch} ${compatFlagsArg}`;
|
|
60763
62273
|
try {
|
|
60764
62274
|
await retry(
|
|
60765
62275
|
CREATE_PROJECT_RETRIES,
|
|
60766
62276
|
async () => runCommand(cmd, {
|
|
60767
|
-
|
|
62277
|
+
// Make this command more verbose in test mode to aid
|
|
62278
|
+
// troubleshooting API errors
|
|
62279
|
+
silent: process.env.VITEST == void 0,
|
|
60768
62280
|
cwd: ctx.project.path,
|
|
60769
62281
|
env: { CLOUDFLARE_ACCOUNT_ID },
|
|
60770
62282
|
startText: "Creating Pages project",
|
|
60771
|
-
doneText: `${brandColor("created")} ${dim(`via \`${cmd}\``)}`
|
|
62283
|
+
doneText: `${brandColor("created")} ${dim(`via \`${cmd.trim()}\``)}`
|
|
60772
62284
|
})
|
|
60773
62285
|
);
|
|
60774
62286
|
} catch (error) {
|
|
60775
|
-
crash("Failed to create pages
|
|
62287
|
+
crash("Failed to create pages project. See output above.");
|
|
60776
62288
|
}
|
|
60777
62289
|
};
|
|
60778
62290
|
|
|
60779
62291
|
// src/workers.ts
|
|
60780
|
-
var
|
|
62292
|
+
var import_promises2 = require("fs/promises");
|
|
60781
62293
|
var import_os = require("os");
|
|
60782
62294
|
var import_path9 = require("path");
|
|
60783
62295
|
var import_process4 = require("process");
|
|
@@ -60802,14 +62314,12 @@ var runWorkersGenerator = async (args) => {
|
|
|
60802
62314
|
await printSummary(ctx);
|
|
60803
62315
|
};
|
|
60804
62316
|
async function getTemplate(ctx) {
|
|
60805
|
-
|
|
60806
|
-
|
|
60807
|
-
|
|
60808
|
-
|
|
60809
|
-
|
|
60810
|
-
|
|
60811
|
-
});
|
|
60812
|
-
}
|
|
62317
|
+
ctx.args.ts = await processArgument(ctx.args, "ts", {
|
|
62318
|
+
type: "confirm",
|
|
62319
|
+
question: "Do you want to use TypeScript?",
|
|
62320
|
+
label: "typescript",
|
|
62321
|
+
defaultValue: C3_DEFAULTS.ts
|
|
62322
|
+
});
|
|
60813
62323
|
const preexisting = ctx.args.type === "pre-existing";
|
|
60814
62324
|
const template = preexisting ? "hello-world" : ctx.args.type;
|
|
60815
62325
|
const path3 = (0, import_path9.resolve)(
|
|
@@ -60826,21 +62336,25 @@ async function copyFiles(ctx) {
|
|
|
60826
62336
|
const { template, path: srcdir } = await getTemplate(ctx);
|
|
60827
62337
|
const destdir = ctx.project.path;
|
|
60828
62338
|
updateStatus(`Copying files from "${template}" template`);
|
|
60829
|
-
await (0,
|
|
62339
|
+
await (0, import_promises2.cp)(srcdir, destdir, { recursive: true });
|
|
60830
62340
|
}
|
|
60831
62341
|
async function copyExistingWorkerFiles(ctx) {
|
|
60832
62342
|
const { preexisting } = await getTemplate(ctx);
|
|
60833
62343
|
if (preexisting) {
|
|
60834
62344
|
await chooseAccount(ctx);
|
|
60835
62345
|
if (ctx.args.existingScript === void 0) {
|
|
60836
|
-
ctx.args.existingScript = await
|
|
60837
|
-
|
|
60838
|
-
|
|
60839
|
-
|
|
60840
|
-
|
|
60841
|
-
|
|
62346
|
+
ctx.args.existingScript = await processArgument(
|
|
62347
|
+
ctx.args,
|
|
62348
|
+
"existingScript",
|
|
62349
|
+
{
|
|
62350
|
+
type: "text",
|
|
62351
|
+
question: "Please specify the name of the existing worker in this account?",
|
|
62352
|
+
label: "worker",
|
|
62353
|
+
defaultValue: ctx.project.name
|
|
62354
|
+
}
|
|
62355
|
+
);
|
|
60842
62356
|
}
|
|
60843
|
-
const tempdir = await (0,
|
|
62357
|
+
const tempdir = await (0, import_promises2.mkdtemp)(
|
|
60844
62358
|
(0, import_path9.join)((0, import_os.tmpdir)(), "c3-wrangler-init--from-dash-")
|
|
60845
62359
|
);
|
|
60846
62360
|
await runCommand(
|
|
@@ -60856,15 +62370,15 @@ async function copyExistingWorkerFiles(ctx) {
|
|
|
60856
62370
|
)}`
|
|
60857
62371
|
}
|
|
60858
62372
|
);
|
|
60859
|
-
for (const filename of await (0,
|
|
60860
|
-
await (0,
|
|
62373
|
+
for (const filename of await (0, import_promises2.readdir)((0, import_path9.join)(ctx.project.path, "src"))) {
|
|
62374
|
+
await (0, import_promises2.rm)((0, import_path9.join)(ctx.project.path, "src", filename));
|
|
60861
62375
|
}
|
|
60862
|
-
await (0,
|
|
62376
|
+
await (0, import_promises2.cp)(
|
|
60863
62377
|
(0, import_path9.join)(tempdir, ctx.args.existingScript, "src"),
|
|
60864
62378
|
(0, import_path9.join)(ctx.project.path, "src"),
|
|
60865
62379
|
{ recursive: true }
|
|
60866
62380
|
);
|
|
60867
|
-
await (0,
|
|
62381
|
+
await (0, import_promises2.cp)(
|
|
60868
62382
|
(0, import_path9.join)(tempdir, ctx.args.existingScript, "wrangler.toml"),
|
|
60869
62383
|
(0, import_path9.join)(ctx.project.path, "wrangler.toml")
|
|
60870
62384
|
);
|
|
@@ -60876,8 +62390,8 @@ async function updateFiles(ctx) {
|
|
|
60876
62390
|
wranglertoml: (0, import_path9.resolve)(ctx.project.path, "wrangler.toml")
|
|
60877
62391
|
};
|
|
60878
62392
|
const contents = {
|
|
60879
|
-
packagejson: JSON.parse(await (0,
|
|
60880
|
-
wranglertoml: await (0,
|
|
62393
|
+
packagejson: JSON.parse(await (0, import_promises2.readFile)(paths.packagejson, "utf-8")),
|
|
62394
|
+
wranglertoml: await (0, import_promises2.readFile)(paths.wranglertoml, "utf-8")
|
|
60881
62395
|
};
|
|
60882
62396
|
if (contents.packagejson.name === "<TBD>") {
|
|
60883
62397
|
contents.packagejson.name = ctx.project.name;
|
|
@@ -60886,27 +62400,63 @@ async function updateFiles(ctx) {
|
|
|
60886
62400
|
/^compatibility_date\s*=\s*"<TBD>"/m,
|
|
60887
62401
|
`compatibility_date = "${await getWorkerdCompatibilityDate()}"`
|
|
60888
62402
|
);
|
|
60889
|
-
await (0,
|
|
62403
|
+
await (0, import_promises2.writeFile)(
|
|
60890
62404
|
paths.packagejson,
|
|
60891
62405
|
JSON.stringify(contents.packagejson, null, 2)
|
|
60892
62406
|
);
|
|
60893
|
-
await (0,
|
|
62407
|
+
await (0, import_promises2.writeFile)(paths.wranglertoml, contents.wranglertoml);
|
|
60894
62408
|
}
|
|
60895
62409
|
|
|
60896
62410
|
// src/cli.ts
|
|
62411
|
+
var C3_DEFAULTS = {
|
|
62412
|
+
projectName: new import_haikunator.default().haikunate({ tokenHex: true }),
|
|
62413
|
+
type: "hello-world",
|
|
62414
|
+
framework: "angular",
|
|
62415
|
+
deploy: true,
|
|
62416
|
+
git: true,
|
|
62417
|
+
open: true,
|
|
62418
|
+
ts: true
|
|
62419
|
+
};
|
|
62420
|
+
var WRANGLER_DEFAULTS = {
|
|
62421
|
+
...C3_DEFAULTS,
|
|
62422
|
+
deploy: false
|
|
62423
|
+
};
|
|
60897
62424
|
var main = async (argv) => {
|
|
60898
62425
|
const args = await parseArgs(argv);
|
|
60899
62426
|
printBanner();
|
|
62427
|
+
const projectName = await processArgument(args, "projectName", {
|
|
62428
|
+
type: "text",
|
|
62429
|
+
question: `In which directory do you want to create your application?`,
|
|
62430
|
+
helpText: "also used as application name",
|
|
62431
|
+
defaultValue: C3_DEFAULTS.projectName,
|
|
62432
|
+
label: "dir",
|
|
62433
|
+
validate: (value) => validateProjectDirectory(String(value) || C3_DEFAULTS.projectName),
|
|
62434
|
+
format: (val) => `./${val}`
|
|
62435
|
+
});
|
|
62436
|
+
if (!args.type) {
|
|
62437
|
+
if (args.framework) {
|
|
62438
|
+
args.type = "webFramework";
|
|
62439
|
+
} else if (args.existingScript) {
|
|
62440
|
+
args.type = "pre-existing";
|
|
62441
|
+
}
|
|
62442
|
+
}
|
|
62443
|
+
const templateOptions = Object.entries(templateMap).filter(([_3, { hidden: hidden2 }]) => !hidden2).map(([value, { label }]) => ({ value, label }));
|
|
62444
|
+
const type = await processArgument(args, "type", {
|
|
62445
|
+
type: "select",
|
|
62446
|
+
question: "What type of application do you want to create?",
|
|
62447
|
+
label: "type",
|
|
62448
|
+
options: templateOptions,
|
|
62449
|
+
defaultValue: C3_DEFAULTS.type
|
|
62450
|
+
});
|
|
62451
|
+
if (!type || !Object.keys(templateMap).includes(type)) {
|
|
62452
|
+
return crash("An application type must be specified to continue.");
|
|
62453
|
+
}
|
|
60900
62454
|
const validatedArgs = {
|
|
60901
62455
|
...args,
|
|
60902
|
-
|
|
60903
|
-
|
|
60904
|
-
}),
|
|
60905
|
-
type: await validateType(args.type, {
|
|
60906
|
-
acceptDefault: args.wranglerDefaults
|
|
60907
|
-
})
|
|
62456
|
+
type,
|
|
62457
|
+
projectName
|
|
60908
62458
|
};
|
|
60909
|
-
const { handler } = templateMap[
|
|
62459
|
+
const { handler } = templateMap[type];
|
|
60910
62460
|
await handler(validatedArgs);
|
|
60911
62461
|
};
|
|
60912
62462
|
var printBanner = () => {
|
|
@@ -60923,42 +62473,17 @@ var parseArgs = async (argv) => {
|
|
|
60923
62473
|
}).option("existing-script", {
|
|
60924
62474
|
type: "string",
|
|
60925
62475
|
hidden: templateMap["pre-existing"].hidden
|
|
62476
|
+
}).option("accept-defaults", {
|
|
62477
|
+
alias: "y",
|
|
62478
|
+
type: "boolean"
|
|
60926
62479
|
}).option("wrangler-defaults", { type: "boolean", hidden: true }).version(version).help().argv;
|
|
60927
62480
|
return {
|
|
62481
|
+
...args.wranglerDefaults && WRANGLER_DEFAULTS,
|
|
62482
|
+
...args.acceptDefaults && C3_DEFAULTS,
|
|
60928
62483
|
projectName: args._[0],
|
|
60929
62484
|
...args
|
|
60930
62485
|
};
|
|
60931
62486
|
};
|
|
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
62487
|
var templateMap = {
|
|
60963
62488
|
webFramework: {
|
|
60964
62489
|
label: "Website or web app",
|
|
@@ -60996,7 +62521,9 @@ var templateMap = {
|
|
|
60996
62521
|
main(process.argv).catch((e) => crash(e));
|
|
60997
62522
|
// Annotate the CommonJS export names for ESM import in node:
|
|
60998
62523
|
0 && (module.exports = {
|
|
60999
|
-
|
|
62524
|
+
C3_DEFAULTS,
|
|
62525
|
+
main,
|
|
62526
|
+
parseArgs
|
|
61000
62527
|
});
|
|
61001
62528
|
/*! Bundled license information:
|
|
61002
62529
|
|