create-cloudflare 0.0.0-9ced24c9 → 0.0.0-9d8509e0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +1759 -306
- package/package.json +3 -1
- 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
|
+
});
|
|
55723
|
+
}
|
|
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);
|
|
55739
|
+
};
|
|
55740
|
+
var getRenderers = (config14) => {
|
|
55741
|
+
switch (config14.type) {
|
|
55742
|
+
case "select":
|
|
55743
|
+
return getSelectRenderers(config14);
|
|
55744
|
+
case "confirm":
|
|
55745
|
+
return getConfirmRenderers(config14);
|
|
55746
|
+
case "text":
|
|
55747
|
+
return getTextRenderers(config14);
|
|
54463
55748
|
}
|
|
54464
|
-
return value;
|
|
54465
55749
|
};
|
|
54466
|
-
var
|
|
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,7 @@ 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-9d8509e0";
|
|
59423
60741
|
|
|
59424
60742
|
// src/common.ts
|
|
59425
60743
|
var import_fs6 = require("fs");
|
|
@@ -59480,15 +60798,14 @@ var runCommand = async (command2, opts = {}) => {
|
|
|
59480
60798
|
}
|
|
59481
60799
|
return printAsyncStatus({
|
|
59482
60800
|
useSpinner: opts.useSpinner ?? opts.silent,
|
|
59483
|
-
startText: opts.startText || command2.join(" "),
|
|
60801
|
+
startText: opts.startText || command2.join(" ").trim(),
|
|
59484
60802
|
doneText: opts.doneText,
|
|
59485
60803
|
promise() {
|
|
59486
60804
|
const [executable, ...args] = command2;
|
|
59487
|
-
const squelch = opts.silent || process.env.VITEST;
|
|
59488
60805
|
const cmd = (0, import_cross_spawn.spawn)(executable, [...args], {
|
|
59489
60806
|
// TODO: ideally inherit stderr, but npm install uses this for warnings
|
|
59490
60807
|
// stdio: [ioMode, ioMode, "inherit"],
|
|
59491
|
-
stdio:
|
|
60808
|
+
stdio: opts.silent ? "pipe" : "inherit",
|
|
59492
60809
|
env: {
|
|
59493
60810
|
...process.env,
|
|
59494
60811
|
...opts.env
|
|
@@ -59496,7 +60813,7 @@ var runCommand = async (command2, opts = {}) => {
|
|
|
59496
60813
|
cwd: opts.cwd
|
|
59497
60814
|
});
|
|
59498
60815
|
let output = ``;
|
|
59499
|
-
if (opts
|
|
60816
|
+
if (opts.captureOutput ?? opts.silent) {
|
|
59500
60817
|
cmd.stdout?.on("data", (data) => {
|
|
59501
60818
|
output += data;
|
|
59502
60819
|
});
|
|
@@ -59521,6 +60838,9 @@ var runCommand = async (command2, opts = {}) => {
|
|
|
59521
60838
|
}
|
|
59522
60839
|
}
|
|
59523
60840
|
});
|
|
60841
|
+
cmd.on("error", (code) => {
|
|
60842
|
+
reject(code);
|
|
60843
|
+
});
|
|
59524
60844
|
});
|
|
59525
60845
|
}
|
|
59526
60846
|
});
|
|
@@ -59631,10 +60951,14 @@ var installWrangler = async () => {
|
|
|
59631
60951
|
};
|
|
59632
60952
|
var isLoggedIn = async () => {
|
|
59633
60953
|
const { npx: npx6 } = detectPackageManager();
|
|
59634
|
-
|
|
59635
|
-
|
|
59636
|
-
|
|
59637
|
-
|
|
60954
|
+
try {
|
|
60955
|
+
const output = await runCommand(`${npx6} wrangler whoami`, {
|
|
60956
|
+
silent: true
|
|
60957
|
+
});
|
|
60958
|
+
return /You are logged in/.test(output);
|
|
60959
|
+
} catch (error) {
|
|
60960
|
+
return false;
|
|
60961
|
+
}
|
|
59638
60962
|
};
|
|
59639
60963
|
var wranglerLogin = async () => {
|
|
59640
60964
|
const { npx: npx6 } = detectPackageManager();
|
|
@@ -59687,7 +61011,7 @@ async function getWorkerdCompatibilityDate() {
|
|
|
59687
61011
|
}
|
|
59688
61012
|
|
|
59689
61013
|
// src/helpers/poll.ts
|
|
59690
|
-
var
|
|
61014
|
+
var import_dns2 = __toESM(require_dns2());
|
|
59691
61015
|
var import_undici = __toESM(require_undici());
|
|
59692
61016
|
var TIMEOUT = 1e3 * 60 * 5;
|
|
59693
61017
|
var POLL_INTERVAL = 1e3;
|
|
@@ -59696,14 +61020,28 @@ var poll = async (url) => {
|
|
|
59696
61020
|
const domain = new URL(url).host;
|
|
59697
61021
|
const s = spinner();
|
|
59698
61022
|
s.start("Waiting for DNS to propagate");
|
|
61023
|
+
await sleep(10 * 1e3);
|
|
61024
|
+
await pollDns(domain, start, s);
|
|
61025
|
+
if (await pollHttp(url, start, s))
|
|
61026
|
+
return true;
|
|
61027
|
+
s.stop(
|
|
61028
|
+
`${brandColor(
|
|
61029
|
+
"timed out"
|
|
61030
|
+
)} while waiting for ${url} - try accessing it in a few minutes.`
|
|
61031
|
+
);
|
|
61032
|
+
return false;
|
|
61033
|
+
};
|
|
61034
|
+
var pollDns = async (domain, start, s) => {
|
|
59699
61035
|
while (Date.now() - start < TIMEOUT) {
|
|
59700
61036
|
s.update(`Waiting for DNS to propagate (${secondsSince(start)}s)`);
|
|
59701
|
-
if (await
|
|
61037
|
+
if (await isDomainResolvable(domain)) {
|
|
59702
61038
|
s.stop(`${brandColor("DNS propagation")} ${dim("complete")}.`);
|
|
59703
|
-
|
|
61039
|
+
return;
|
|
59704
61040
|
}
|
|
59705
61041
|
await sleep(POLL_INTERVAL);
|
|
59706
61042
|
}
|
|
61043
|
+
};
|
|
61044
|
+
var pollHttp = async (url, start, s) => {
|
|
59707
61045
|
s.start("Waiting for deployment to become available");
|
|
59708
61046
|
while (Date.now() - start < TIMEOUT) {
|
|
59709
61047
|
s.update(
|
|
@@ -59727,27 +61065,31 @@ var poll = async (url) => {
|
|
|
59727
61065
|
}
|
|
59728
61066
|
await sleep(POLL_INTERVAL);
|
|
59729
61067
|
}
|
|
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
61068
|
};
|
|
59737
|
-
async
|
|
61069
|
+
var isDomainResolvable = async (domain) => {
|
|
59738
61070
|
try {
|
|
59739
|
-
const
|
|
59740
|
-
|
|
59741
|
-
|
|
59742
|
-
|
|
59743
|
-
|
|
59744
|
-
|
|
59745
|
-
|
|
59746
|
-
return (await resolver.resolve4(domain)).length > 0;
|
|
59747
|
-
} catch (e) {
|
|
61071
|
+
const nameServers = await lookupSubdomainNameservers(domain);
|
|
61072
|
+
if (nameServers.length === 0)
|
|
61073
|
+
return false;
|
|
61074
|
+
const dns = new import_dns2.default({ nameServers });
|
|
61075
|
+
const res = await dns.resolve(domain, "A");
|
|
61076
|
+
return res.answers.length > 0;
|
|
61077
|
+
} catch (error) {
|
|
59748
61078
|
return false;
|
|
59749
61079
|
}
|
|
59750
|
-
}
|
|
61080
|
+
};
|
|
61081
|
+
var lookupSubdomainNameservers = async (domain) => {
|
|
61082
|
+
const nameServers = await lookupDomainLevelNameservers(domain);
|
|
61083
|
+
const dns = new import_dns2.default({ nameServers });
|
|
61084
|
+
const res = await dns.resolve(domain, "NS");
|
|
61085
|
+
return res.authorities.filter((r2) => Boolean(r2.ns)).map((r2) => r2.ns);
|
|
61086
|
+
};
|
|
61087
|
+
var lookupDomainLevelNameservers = async (domain) => {
|
|
61088
|
+
const baseDomain = domain.split(".").slice(-2).join(".");
|
|
61089
|
+
const dns = new import_dns2.default({});
|
|
61090
|
+
const nameservers = await dns.resolve(baseDomain, "NS");
|
|
61091
|
+
return nameservers.answers.map((n) => n.ns);
|
|
61092
|
+
};
|
|
59751
61093
|
async function sleep(ms) {
|
|
59752
61094
|
return new Promise((res) => setTimeout(res, ms));
|
|
59753
61095
|
}
|
|
@@ -59779,14 +61121,12 @@ var setupProjectDirectory = (args) => {
|
|
|
59779
61121
|
};
|
|
59780
61122
|
var offerToDeploy = async (ctx) => {
|
|
59781
61123
|
startSection(`Deploy with Cloudflare`, `Step 3 of 3`);
|
|
59782
|
-
ctx.
|
|
61124
|
+
const label = `deploy via \`${npm} run ${ctx.framework?.config.deployCommand ?? "deploy"}\``;
|
|
61125
|
+
ctx.args.deploy = await processArgument(ctx.args, "deploy", {
|
|
61126
|
+
type: "confirm",
|
|
59783
61127
|
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
|
|
61128
|
+
label,
|
|
61129
|
+
defaultValue: C3_DEFAULTS.deploy
|
|
59790
61130
|
});
|
|
59791
61131
|
if (!ctx.args.deploy)
|
|
59792
61132
|
return;
|
|
@@ -59806,7 +61146,7 @@ var runDeploy = async (ctx) => {
|
|
|
59806
61146
|
const result = await runCommand(deployCmd, {
|
|
59807
61147
|
silent: true,
|
|
59808
61148
|
cwd: ctx.project.path,
|
|
59809
|
-
env: { CLOUDFLARE_ACCOUNT_ID: ctx.account.id },
|
|
61149
|
+
env: { CLOUDFLARE_ACCOUNT_ID: ctx.account.id, NODE_ENV: "production" },
|
|
59810
61150
|
startText: `Deploying your application`,
|
|
59811
61151
|
doneText: `${brandColor("deployed")} ${dim(`via \`${deployCmd}\``)}`
|
|
59812
61152
|
});
|
|
@@ -59840,14 +61180,12 @@ var chooseAccount = async (ctx) => {
|
|
|
59840
61180
|
label: name,
|
|
59841
61181
|
value: id
|
|
59842
61182
|
}));
|
|
59843
|
-
accountId = await
|
|
61183
|
+
accountId = await inputPrompt({
|
|
61184
|
+
type: "select",
|
|
59844
61185
|
question: "Which account do you want to use?",
|
|
59845
61186
|
options: accountOptions,
|
|
59846
|
-
|
|
59847
|
-
|
|
59848
|
-
},
|
|
59849
|
-
defaultValue: accountOptions[0].value,
|
|
59850
|
-
acceptDefault: ctx.args.wranglerDefaults
|
|
61187
|
+
label: "account",
|
|
61188
|
+
defaultValue: accountOptions[0].value
|
|
59851
61189
|
});
|
|
59852
61190
|
}
|
|
59853
61191
|
const accountName = Object.keys(accounts).find(
|
|
@@ -59857,6 +61195,7 @@ var chooseAccount = async (ctx) => {
|
|
|
59857
61195
|
};
|
|
59858
61196
|
var printSummary = async (ctx) => {
|
|
59859
61197
|
const nextSteps = [
|
|
61198
|
+
[`Navigate to the new directory`, `cd ${ctx.project.name}`],
|
|
59860
61199
|
[
|
|
59861
61200
|
`Run the development server`,
|
|
59862
61201
|
`${npm} run ${ctx.framework?.config.devCommand ?? "start"}`
|
|
@@ -59919,11 +61258,11 @@ var offerGit = async (ctx) => {
|
|
|
59919
61258
|
const insideGitRepo = await isInsideGitRepo(ctx.project.path);
|
|
59920
61259
|
if (insideGitRepo)
|
|
59921
61260
|
return;
|
|
59922
|
-
ctx.args.git
|
|
61261
|
+
ctx.args.git = await processArgument(ctx.args, "git", {
|
|
61262
|
+
type: "confirm",
|
|
59923
61263
|
question: "Do you want to use git for version control?",
|
|
59924
|
-
|
|
59925
|
-
defaultValue:
|
|
59926
|
-
acceptDefault: ctx.args.wranglerDefaults
|
|
61264
|
+
label: "git",
|
|
61265
|
+
defaultValue: C3_DEFAULTS.git
|
|
59927
61266
|
});
|
|
59928
61267
|
if (ctx.args.git) {
|
|
59929
61268
|
await printAsyncStatus({
|
|
@@ -59983,13 +61322,31 @@ async function initializeGit(cwd) {
|
|
|
59983
61322
|
await runCommand(`git init`, { useSpinner: false, silent: true, cwd });
|
|
59984
61323
|
}
|
|
59985
61324
|
}
|
|
61325
|
+
async function getProductionBranch(cwd) {
|
|
61326
|
+
try {
|
|
61327
|
+
const productionBranch = await runCommand(
|
|
61328
|
+
// "git branch --show-current", // git@^2.22
|
|
61329
|
+
"git rev-parse --abbrev-ref HEAD",
|
|
61330
|
+
// git@^1.6.3
|
|
61331
|
+
{
|
|
61332
|
+
silent: true,
|
|
61333
|
+
cwd,
|
|
61334
|
+
useSpinner: false,
|
|
61335
|
+
captureOutput: true
|
|
61336
|
+
}
|
|
61337
|
+
);
|
|
61338
|
+
return productionBranch.trim();
|
|
61339
|
+
} catch (err) {
|
|
61340
|
+
}
|
|
61341
|
+
return "main";
|
|
61342
|
+
}
|
|
59986
61343
|
|
|
59987
61344
|
// src/pages.ts
|
|
59988
61345
|
var import_path8 = require("path");
|
|
59989
61346
|
var import_process3 = require("process");
|
|
59990
61347
|
|
|
59991
61348
|
// src/frameworks/angular/index.ts
|
|
59992
|
-
var
|
|
61349
|
+
var import_promises = require("node:fs/promises");
|
|
59993
61350
|
var import_node_path = require("node:path");
|
|
59994
61351
|
|
|
59995
61352
|
// src/helpers/files.ts
|
|
@@ -60012,6 +61369,9 @@ var readJSON = (path3) => {
|
|
|
60012
61369
|
const contents = readFile(path3);
|
|
60013
61370
|
return contents ? JSON.parse(contents) : contents;
|
|
60014
61371
|
};
|
|
61372
|
+
var writeJSON = (path3, object, stringifySpace) => {
|
|
61373
|
+
writeFile2(path3, JSON.stringify(object, null, stringifySpace));
|
|
61374
|
+
};
|
|
60015
61375
|
var probePaths = (paths, errorMsg = "Failed to find required file.") => {
|
|
60016
61376
|
for (const path3 of paths) {
|
|
60017
61377
|
if ((0, import_fs7.existsSync)(path3)) {
|
|
@@ -60024,6 +61384,35 @@ var probePaths = (paths, errorMsg = "Failed to find required file.") => {
|
|
|
60024
61384
|
var usesTypescript = (projectRoot = ".") => {
|
|
60025
61385
|
return (0, import_fs7.existsSync)(`${projectRoot}/tsconfig.json`);
|
|
60026
61386
|
};
|
|
61387
|
+
var eslintRcExts = ["js", "cjs", "yaml", "yml", "json"];
|
|
61388
|
+
var usesEslint = (ctx) => {
|
|
61389
|
+
for (const ext of eslintRcExts) {
|
|
61390
|
+
const eslintRcFilename = `.eslintrc.${ext}`;
|
|
61391
|
+
if ((0, import_fs7.existsSync)(`${ctx.project.path}/${eslintRcFilename}`)) {
|
|
61392
|
+
return {
|
|
61393
|
+
used: true,
|
|
61394
|
+
configType: eslintRcFilename
|
|
61395
|
+
};
|
|
61396
|
+
}
|
|
61397
|
+
}
|
|
61398
|
+
if ((0, import_fs7.existsSync)(`${ctx.project.path}/eslint.config.js`)) {
|
|
61399
|
+
return {
|
|
61400
|
+
used: true,
|
|
61401
|
+
configType: "eslint.config.js"
|
|
61402
|
+
};
|
|
61403
|
+
}
|
|
61404
|
+
try {
|
|
61405
|
+
const pkgJson = readJSON(`${ctx.project.path}/package.json`);
|
|
61406
|
+
if (pkgJson.eslintConfig) {
|
|
61407
|
+
return {
|
|
61408
|
+
used: true,
|
|
61409
|
+
configType: "package.json"
|
|
61410
|
+
};
|
|
61411
|
+
}
|
|
61412
|
+
} catch {
|
|
61413
|
+
}
|
|
61414
|
+
return { used: false };
|
|
61415
|
+
};
|
|
60027
61416
|
var compatDateFlag = () => {
|
|
60028
61417
|
const date = /* @__PURE__ */ new Date();
|
|
60029
61418
|
return `--compatibility-date=${date.toISOString().slice(0, 10)}`;
|
|
@@ -60067,7 +61456,7 @@ var angular_default = config;
|
|
|
60067
61456
|
async function installCFWorker(ctx) {
|
|
60068
61457
|
const s = spinner();
|
|
60069
61458
|
s.start(`Adding Cloudflare Pages adapter code`);
|
|
60070
|
-
await (0,
|
|
61459
|
+
await (0, import_promises.cp)(
|
|
60071
61460
|
// eslint-disable-next-line no-restricted-globals
|
|
60072
61461
|
(0, import_node_path.resolve)(__dirname, "./angular/templates"),
|
|
60073
61462
|
(0, import_node_path.resolve)(ctx.project.path),
|
|
@@ -60109,7 +61498,7 @@ async function updateAppCode() {
|
|
|
60109
61498
|
"providers: [provideHttpClient(withFetch()), provideClientHydration(), "
|
|
60110
61499
|
);
|
|
60111
61500
|
writeFile2((0, import_node_path.resolve)(appConfigPath), newAppConfig);
|
|
60112
|
-
await (0,
|
|
61501
|
+
await (0, import_promises.rm)((0, import_node_path.resolve)("server.ts"));
|
|
60113
61502
|
s.stop(`${brandColor(`updated`)} ${dim(appConfigPath)}`);
|
|
60114
61503
|
}
|
|
60115
61504
|
function updateAngularJson(ctx) {
|
|
@@ -60191,25 +61580,19 @@ var docusaurus_default = config3;
|
|
|
60191
61580
|
var { npm: npm4, dlx: dlx4 } = detectPackageManager();
|
|
60192
61581
|
var generate4 = async (ctx) => {
|
|
60193
61582
|
const defaultTemplate = "https://github.com/gatsbyjs/gatsby-starter-blog";
|
|
60194
|
-
const useTemplate = await
|
|
61583
|
+
const useTemplate = await inputPrompt({
|
|
61584
|
+
type: "confirm",
|
|
60195
61585
|
question: "Would you like to use a template?",
|
|
60196
|
-
|
|
60197
|
-
|
|
60198
|
-
return `${brandColor(`template`)} ${status2}`;
|
|
60199
|
-
},
|
|
60200
|
-
defaultValue: true,
|
|
60201
|
-
acceptDefault: false
|
|
61586
|
+
label: "template",
|
|
61587
|
+
defaultValue: true
|
|
60202
61588
|
});
|
|
60203
61589
|
let templateUrl = "";
|
|
60204
61590
|
if (useTemplate) {
|
|
60205
|
-
templateUrl = await
|
|
61591
|
+
templateUrl = await inputPrompt({
|
|
61592
|
+
type: "text",
|
|
60206
61593
|
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
|
|
61594
|
+
label: "template",
|
|
61595
|
+
defaultValue: defaultTemplate
|
|
60213
61596
|
});
|
|
60214
61597
|
}
|
|
60215
61598
|
const version2 = getFrameworkVersion(ctx);
|
|
@@ -60335,14 +61718,50 @@ var configure3 = async (ctx) => {
|
|
|
60335
61718
|
);
|
|
60336
61719
|
writeFile2(handlerPath, handlerFile);
|
|
60337
61720
|
updateStatus("Created an example API route handler");
|
|
61721
|
+
const installEslintPlugin = await shouldInstallNextOnPagesEslintPlugin(ctx);
|
|
61722
|
+
if (installEslintPlugin) {
|
|
61723
|
+
await writeEslintrc(ctx);
|
|
61724
|
+
}
|
|
60338
61725
|
process.chdir(projectName);
|
|
60339
|
-
const packages = [
|
|
61726
|
+
const packages = [
|
|
61727
|
+
"@cloudflare/next-on-pages@1",
|
|
61728
|
+
"vercel",
|
|
61729
|
+
...installEslintPlugin ? ["eslint-plugin-next-on-pages"] : []
|
|
61730
|
+
];
|
|
60340
61731
|
await installPackages(packages, {
|
|
60341
61732
|
dev: true,
|
|
60342
61733
|
startText: "Adding the Cloudflare Pages adapter",
|
|
60343
61734
|
doneText: `${brandColor(`installed`)} ${dim(packages.join(", "))}`
|
|
60344
61735
|
});
|
|
60345
61736
|
};
|
|
61737
|
+
var shouldInstallNextOnPagesEslintPlugin = async (ctx) => {
|
|
61738
|
+
const eslintUsage = usesEslint(ctx);
|
|
61739
|
+
if (!eslintUsage.used)
|
|
61740
|
+
return false;
|
|
61741
|
+
if (eslintUsage.configType !== ".eslintrc.json") {
|
|
61742
|
+
warn(
|
|
61743
|
+
`Expected .eslintrc.json from Next.js scaffolding but found ${eslintUsage.configType} instead`
|
|
61744
|
+
);
|
|
61745
|
+
return false;
|
|
61746
|
+
}
|
|
61747
|
+
return await processArgument(ctx.args, "eslint-plugin", {
|
|
61748
|
+
type: "confirm",
|
|
61749
|
+
question: "Do you want to use the next-on-pages eslint-plugin?",
|
|
61750
|
+
label: "eslint-plugin",
|
|
61751
|
+
defaultValue: true
|
|
61752
|
+
});
|
|
61753
|
+
};
|
|
61754
|
+
var writeEslintrc = async (ctx) => {
|
|
61755
|
+
const eslintConfig = readJSON(`${ctx.project.name}/.eslintrc.json`);
|
|
61756
|
+
eslintConfig.plugins ??= [];
|
|
61757
|
+
eslintConfig.plugins.push("eslint-plugin-next-on-pages");
|
|
61758
|
+
if (typeof eslintConfig.extends === "string") {
|
|
61759
|
+
eslintConfig.extends = [eslintConfig.extends];
|
|
61760
|
+
}
|
|
61761
|
+
eslintConfig.extends ??= [];
|
|
61762
|
+
eslintConfig.extends.push("plugin:eslint-plugin-next-on-pages/recommended");
|
|
61763
|
+
writeJSON(`${ctx.project.name}/.eslintrc.json`, eslintConfig, 2);
|
|
61764
|
+
};
|
|
60346
61765
|
var config6 = {
|
|
60347
61766
|
generate: generate6,
|
|
60348
61767
|
configure: configure3,
|
|
@@ -60361,7 +61780,7 @@ var config6 = {
|
|
|
60361
61780
|
"--src-dir",
|
|
60362
61781
|
"--app",
|
|
60363
61782
|
"--import-alias",
|
|
60364
|
-
|
|
61783
|
+
"@/*"
|
|
60365
61784
|
],
|
|
60366
61785
|
compatibilityFlags: ["nodejs_compat"]
|
|
60367
61786
|
};
|
|
@@ -60379,6 +61798,7 @@ var generate7 = async (ctx) => {
|
|
|
60379
61798
|
};
|
|
60380
61799
|
var configure4 = async (ctx) => {
|
|
60381
61800
|
process.chdir(ctx.project.path);
|
|
61801
|
+
writeFile2("./.node-version", "17");
|
|
60382
61802
|
await npmInstall();
|
|
60383
61803
|
};
|
|
60384
61804
|
var config7 = {
|
|
@@ -60386,8 +61806,9 @@ var config7 = {
|
|
|
60386
61806
|
configure: configure4,
|
|
60387
61807
|
displayName: "Nuxt",
|
|
60388
61808
|
packageScripts: {
|
|
61809
|
+
build: (cmd) => `NITRO_PRESET=cloudflare-pages ${cmd}`,
|
|
60389
61810
|
"pages:dev": `wrangler pages dev ${compatDateFlag()} --proxy 3000 -- npm run dev`,
|
|
60390
|
-
"pages:deploy":
|
|
61811
|
+
"pages:deploy": "npm run build && wrangler pages deploy ./dist"
|
|
60391
61812
|
}
|
|
60392
61813
|
};
|
|
60393
61814
|
var nuxt_default = config7;
|
|
@@ -60502,7 +61923,7 @@ var config11 = {
|
|
|
60502
61923
|
displayName: "Solid",
|
|
60503
61924
|
packageScripts: {
|
|
60504
61925
|
"pages:dev": `wrangler pages dev ${compatDateFlag()} --proxy 3000 -- ${npm9} run dev`,
|
|
60505
|
-
"pages:deploy": `${npm9} run build
|
|
61926
|
+
"pages:deploy": `${npm9} run build && wrangler pages deploy ./dist/public`
|
|
60506
61927
|
}
|
|
60507
61928
|
};
|
|
60508
61929
|
var solid_default = config11;
|
|
@@ -60613,7 +62034,7 @@ var versionMap_default = {
|
|
|
60613
62034
|
astro: "3.1.5",
|
|
60614
62035
|
docusaurus: "2.4.1",
|
|
60615
62036
|
gatsby: "5.10.0",
|
|
60616
|
-
hono: "0.2.
|
|
62037
|
+
hono: "0.2.6",
|
|
60617
62038
|
next: "13.4.2",
|
|
60618
62039
|
nuxt: "3.4.2",
|
|
60619
62040
|
qwik: "1.1.x",
|
|
@@ -60718,14 +62139,12 @@ var getFrameworkSelection = async (args) => {
|
|
|
60718
62139
|
value: key
|
|
60719
62140
|
})
|
|
60720
62141
|
);
|
|
60721
|
-
const framework = await
|
|
62142
|
+
const framework = await processArgument(args, "framework", {
|
|
62143
|
+
type: "select",
|
|
62144
|
+
label: "framework",
|
|
60722
62145
|
question: "Which development framework do you want to use?",
|
|
60723
62146
|
options: frameworkOptions,
|
|
60724
|
-
|
|
60725
|
-
return `${brandColor("framework")} ${dim(option.label)}`;
|
|
60726
|
-
},
|
|
60727
|
-
defaultValue: args.framework ?? "svelte",
|
|
60728
|
-
acceptDefault: Boolean(args.framework)
|
|
62147
|
+
defaultValue: C3_DEFAULTS.framework
|
|
60729
62148
|
});
|
|
60730
62149
|
framework || crash("A framework must be selected to continue.");
|
|
60731
62150
|
if (!supportedFramework(framework)) {
|
|
@@ -60739,11 +62158,29 @@ var updatePackageScripts = async (ctx) => {
|
|
|
60739
62158
|
const { packageScripts } = ctx.framework?.config ?? {};
|
|
60740
62159
|
if (packageScripts) {
|
|
60741
62160
|
const s = spinner();
|
|
60742
|
-
|
|
62161
|
+
const updatingScripts = Object.entries(packageScripts).filter(
|
|
62162
|
+
([_3, cmdOrUpdater]) => typeof cmdOrUpdater === "function"
|
|
62163
|
+
).length > 0;
|
|
62164
|
+
s.start(
|
|
62165
|
+
`${updatingScripts ? "Updating" : "Adding"} command scripts`,
|
|
62166
|
+
"for development and deployment"
|
|
62167
|
+
);
|
|
60743
62168
|
const pkgJsonPath = (0, import_path8.resolve)("package.json");
|
|
60744
62169
|
const pkgConfig = readJSON(pkgJsonPath);
|
|
60745
|
-
Object.entries(packageScripts).forEach(([target,
|
|
60746
|
-
|
|
62170
|
+
Object.entries(packageScripts).forEach(([target, cmdOrUpdater]) => {
|
|
62171
|
+
if (typeof cmdOrUpdater === "string") {
|
|
62172
|
+
const command2 = cmdOrUpdater;
|
|
62173
|
+
pkgConfig.scripts[target] = command2;
|
|
62174
|
+
} else {
|
|
62175
|
+
const existingCommand = pkgConfig.scripts[target];
|
|
62176
|
+
if (!existingCommand) {
|
|
62177
|
+
throw new Error(
|
|
62178
|
+
`Could not find ${target} script to update during ${ctx.framework} setup`
|
|
62179
|
+
);
|
|
62180
|
+
}
|
|
62181
|
+
const updater = cmdOrUpdater;
|
|
62182
|
+
pkgConfig.scripts[target] = updater(existingCommand);
|
|
62183
|
+
}
|
|
60747
62184
|
});
|
|
60748
62185
|
writeFile2(pkgJsonPath, JSON.stringify(pkgConfig, null, 2));
|
|
60749
62186
|
s.stop(`${brandColor("added")} ${dim("commands to `package.json`")}`);
|
|
@@ -60759,7 +62196,8 @@ var createProject = async (ctx) => {
|
|
|
60759
62196
|
const CLOUDFLARE_ACCOUNT_ID = ctx.account.id;
|
|
60760
62197
|
const compatFlags = ctx.framework?.config.compatibilityFlags?.join(" ");
|
|
60761
62198
|
const compatFlagsArg = compatFlags ? `--compatibility-flags ${compatFlags}` : "";
|
|
60762
|
-
const
|
|
62199
|
+
const productionBranch = await getProductionBranch(ctx.project.path);
|
|
62200
|
+
const cmd = `${npx5} wrangler pages project create ${ctx.project.name} --production-branch ${productionBranch} ${compatFlagsArg}`;
|
|
60763
62201
|
try {
|
|
60764
62202
|
await retry(
|
|
60765
62203
|
CREATE_PROJECT_RETRIES,
|
|
@@ -60768,7 +62206,7 @@ var createProject = async (ctx) => {
|
|
|
60768
62206
|
cwd: ctx.project.path,
|
|
60769
62207
|
env: { CLOUDFLARE_ACCOUNT_ID },
|
|
60770
62208
|
startText: "Creating Pages project",
|
|
60771
|
-
doneText: `${brandColor("created")} ${dim(`via \`${cmd}\``)}`
|
|
62209
|
+
doneText: `${brandColor("created")} ${dim(`via \`${cmd.trim()}\``)}`
|
|
60772
62210
|
})
|
|
60773
62211
|
);
|
|
60774
62212
|
} catch (error) {
|
|
@@ -60777,7 +62215,7 @@ var createProject = async (ctx) => {
|
|
|
60777
62215
|
};
|
|
60778
62216
|
|
|
60779
62217
|
// src/workers.ts
|
|
60780
|
-
var
|
|
62218
|
+
var import_promises2 = require("fs/promises");
|
|
60781
62219
|
var import_os = require("os");
|
|
60782
62220
|
var import_path9 = require("path");
|
|
60783
62221
|
var import_process4 = require("process");
|
|
@@ -60802,14 +62240,12 @@ var runWorkersGenerator = async (args) => {
|
|
|
60802
62240
|
await printSummary(ctx);
|
|
60803
62241
|
};
|
|
60804
62242
|
async function getTemplate(ctx) {
|
|
60805
|
-
|
|
60806
|
-
|
|
60807
|
-
|
|
60808
|
-
|
|
60809
|
-
|
|
60810
|
-
|
|
60811
|
-
});
|
|
60812
|
-
}
|
|
62243
|
+
ctx.args.ts = await processArgument(ctx.args, "ts", {
|
|
62244
|
+
type: "confirm",
|
|
62245
|
+
question: "Do you want to use TypeScript?",
|
|
62246
|
+
label: "typescript",
|
|
62247
|
+
defaultValue: C3_DEFAULTS.ts
|
|
62248
|
+
});
|
|
60813
62249
|
const preexisting = ctx.args.type === "pre-existing";
|
|
60814
62250
|
const template = preexisting ? "hello-world" : ctx.args.type;
|
|
60815
62251
|
const path3 = (0, import_path9.resolve)(
|
|
@@ -60826,21 +62262,25 @@ async function copyFiles(ctx) {
|
|
|
60826
62262
|
const { template, path: srcdir } = await getTemplate(ctx);
|
|
60827
62263
|
const destdir = ctx.project.path;
|
|
60828
62264
|
updateStatus(`Copying files from "${template}" template`);
|
|
60829
|
-
await (0,
|
|
62265
|
+
await (0, import_promises2.cp)(srcdir, destdir, { recursive: true });
|
|
60830
62266
|
}
|
|
60831
62267
|
async function copyExistingWorkerFiles(ctx) {
|
|
60832
62268
|
const { preexisting } = await getTemplate(ctx);
|
|
60833
62269
|
if (preexisting) {
|
|
60834
62270
|
await chooseAccount(ctx);
|
|
60835
62271
|
if (ctx.args.existingScript === void 0) {
|
|
60836
|
-
ctx.args.existingScript = await
|
|
60837
|
-
|
|
60838
|
-
|
|
60839
|
-
|
|
60840
|
-
|
|
60841
|
-
|
|
62272
|
+
ctx.args.existingScript = await processArgument(
|
|
62273
|
+
ctx.args,
|
|
62274
|
+
"existingScript",
|
|
62275
|
+
{
|
|
62276
|
+
type: "text",
|
|
62277
|
+
question: "Please specify the name of the existing worker in this account?",
|
|
62278
|
+
label: "worker",
|
|
62279
|
+
defaultValue: ctx.project.name
|
|
62280
|
+
}
|
|
62281
|
+
);
|
|
60842
62282
|
}
|
|
60843
|
-
const tempdir = await (0,
|
|
62283
|
+
const tempdir = await (0, import_promises2.mkdtemp)(
|
|
60844
62284
|
(0, import_path9.join)((0, import_os.tmpdir)(), "c3-wrangler-init--from-dash-")
|
|
60845
62285
|
);
|
|
60846
62286
|
await runCommand(
|
|
@@ -60856,15 +62296,15 @@ async function copyExistingWorkerFiles(ctx) {
|
|
|
60856
62296
|
)}`
|
|
60857
62297
|
}
|
|
60858
62298
|
);
|
|
60859
|
-
for (const filename of await (0,
|
|
60860
|
-
await (0,
|
|
62299
|
+
for (const filename of await (0, import_promises2.readdir)((0, import_path9.join)(ctx.project.path, "src"))) {
|
|
62300
|
+
await (0, import_promises2.rm)((0, import_path9.join)(ctx.project.path, "src", filename));
|
|
60861
62301
|
}
|
|
60862
|
-
await (0,
|
|
62302
|
+
await (0, import_promises2.cp)(
|
|
60863
62303
|
(0, import_path9.join)(tempdir, ctx.args.existingScript, "src"),
|
|
60864
62304
|
(0, import_path9.join)(ctx.project.path, "src"),
|
|
60865
62305
|
{ recursive: true }
|
|
60866
62306
|
);
|
|
60867
|
-
await (0,
|
|
62307
|
+
await (0, import_promises2.cp)(
|
|
60868
62308
|
(0, import_path9.join)(tempdir, ctx.args.existingScript, "wrangler.toml"),
|
|
60869
62309
|
(0, import_path9.join)(ctx.project.path, "wrangler.toml")
|
|
60870
62310
|
);
|
|
@@ -60876,8 +62316,8 @@ async function updateFiles(ctx) {
|
|
|
60876
62316
|
wranglertoml: (0, import_path9.resolve)(ctx.project.path, "wrangler.toml")
|
|
60877
62317
|
};
|
|
60878
62318
|
const contents = {
|
|
60879
|
-
packagejson: JSON.parse(await (0,
|
|
60880
|
-
wranglertoml: await (0,
|
|
62319
|
+
packagejson: JSON.parse(await (0, import_promises2.readFile)(paths.packagejson, "utf-8")),
|
|
62320
|
+
wranglertoml: await (0, import_promises2.readFile)(paths.wranglertoml, "utf-8")
|
|
60881
62321
|
};
|
|
60882
62322
|
if (contents.packagejson.name === "<TBD>") {
|
|
60883
62323
|
contents.packagejson.name = ctx.project.name;
|
|
@@ -60886,27 +62326,63 @@ async function updateFiles(ctx) {
|
|
|
60886
62326
|
/^compatibility_date\s*=\s*"<TBD>"/m,
|
|
60887
62327
|
`compatibility_date = "${await getWorkerdCompatibilityDate()}"`
|
|
60888
62328
|
);
|
|
60889
|
-
await (0,
|
|
62329
|
+
await (0, import_promises2.writeFile)(
|
|
60890
62330
|
paths.packagejson,
|
|
60891
62331
|
JSON.stringify(contents.packagejson, null, 2)
|
|
60892
62332
|
);
|
|
60893
|
-
await (0,
|
|
62333
|
+
await (0, import_promises2.writeFile)(paths.wranglertoml, contents.wranglertoml);
|
|
60894
62334
|
}
|
|
60895
62335
|
|
|
60896
62336
|
// src/cli.ts
|
|
62337
|
+
var C3_DEFAULTS = {
|
|
62338
|
+
projectName: new import_haikunator.default().haikunate({ tokenHex: true }),
|
|
62339
|
+
type: "hello-world",
|
|
62340
|
+
framework: "angular",
|
|
62341
|
+
deploy: true,
|
|
62342
|
+
git: true,
|
|
62343
|
+
open: true,
|
|
62344
|
+
ts: true
|
|
62345
|
+
};
|
|
62346
|
+
var WRANGLER_DEFAULTS = {
|
|
62347
|
+
...C3_DEFAULTS,
|
|
62348
|
+
deploy: false
|
|
62349
|
+
};
|
|
60897
62350
|
var main = async (argv) => {
|
|
60898
62351
|
const args = await parseArgs(argv);
|
|
60899
62352
|
printBanner();
|
|
62353
|
+
const projectName = await processArgument(args, "projectName", {
|
|
62354
|
+
type: "text",
|
|
62355
|
+
question: `In which directory do you want to create your application?`,
|
|
62356
|
+
helpText: "also used as application name",
|
|
62357
|
+
defaultValue: C3_DEFAULTS.projectName,
|
|
62358
|
+
label: "dir",
|
|
62359
|
+
validate: (value) => validateProjectDirectory(String(value) || C3_DEFAULTS.projectName),
|
|
62360
|
+
format: (val) => `./${val}`
|
|
62361
|
+
});
|
|
62362
|
+
if (!args.type) {
|
|
62363
|
+
if (args.framework) {
|
|
62364
|
+
args.type = "webFramework";
|
|
62365
|
+
} else if (args.existingScript) {
|
|
62366
|
+
args.type = "pre-existing";
|
|
62367
|
+
}
|
|
62368
|
+
}
|
|
62369
|
+
const templateOptions = Object.entries(templateMap).filter(([_3, { hidden: hidden2 }]) => !hidden2).map(([value, { label }]) => ({ value, label }));
|
|
62370
|
+
const type = await processArgument(args, "type", {
|
|
62371
|
+
type: "select",
|
|
62372
|
+
question: "What type of application do you want to create?",
|
|
62373
|
+
label: "type",
|
|
62374
|
+
options: templateOptions,
|
|
62375
|
+
defaultValue: C3_DEFAULTS.type
|
|
62376
|
+
});
|
|
62377
|
+
if (!type || !Object.keys(templateMap).includes(type)) {
|
|
62378
|
+
return crash("An application type must be specified to continue.");
|
|
62379
|
+
}
|
|
60900
62380
|
const validatedArgs = {
|
|
60901
62381
|
...args,
|
|
60902
|
-
|
|
60903
|
-
|
|
60904
|
-
}),
|
|
60905
|
-
type: await validateType(args.type, {
|
|
60906
|
-
acceptDefault: args.wranglerDefaults
|
|
60907
|
-
})
|
|
62382
|
+
type,
|
|
62383
|
+
projectName
|
|
60908
62384
|
};
|
|
60909
|
-
const { handler } = templateMap[
|
|
62385
|
+
const { handler } = templateMap[type];
|
|
60910
62386
|
await handler(validatedArgs);
|
|
60911
62387
|
};
|
|
60912
62388
|
var printBanner = () => {
|
|
@@ -60923,42 +62399,17 @@ var parseArgs = async (argv) => {
|
|
|
60923
62399
|
}).option("existing-script", {
|
|
60924
62400
|
type: "string",
|
|
60925
62401
|
hidden: templateMap["pre-existing"].hidden
|
|
62402
|
+
}).option("accept-defaults", {
|
|
62403
|
+
alias: "y",
|
|
62404
|
+
type: "boolean"
|
|
60926
62405
|
}).option("wrangler-defaults", { type: "boolean", hidden: true }).version(version).help().argv;
|
|
60927
62406
|
return {
|
|
62407
|
+
...args.wranglerDefaults && WRANGLER_DEFAULTS,
|
|
62408
|
+
...args.acceptDefaults && C3_DEFAULTS,
|
|
60928
62409
|
projectName: args._[0],
|
|
60929
62410
|
...args
|
|
60930
62411
|
};
|
|
60931
62412
|
};
|
|
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
62413
|
var templateMap = {
|
|
60963
62414
|
webFramework: {
|
|
60964
62415
|
label: "Website or web app",
|
|
@@ -60996,7 +62447,9 @@ var templateMap = {
|
|
|
60996
62447
|
main(process.argv).catch((e) => crash(e));
|
|
60997
62448
|
// Annotate the CommonJS export names for ESM import in node:
|
|
60998
62449
|
0 && (module.exports = {
|
|
60999
|
-
|
|
62450
|
+
C3_DEFAULTS,
|
|
62451
|
+
main,
|
|
62452
|
+
parseArgs
|
|
61000
62453
|
});
|
|
61001
62454
|
/*! Bundled license information:
|
|
61002
62455
|
|