mailery 0.0.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +103 -11
- package/dist/admin/spa/index-B6riKdpB.css +1 -0
- package/dist/admin/spa/index-C_FJL_E_.js +41 -0
- package/dist/admin/spa/index-C_FJL_E_.js.map +1 -0
- package/dist/admin/spa/index.html +16 -0
- package/dist/admin/spa/template-editor-Cx1ky7rr.js +502 -0
- package/dist/admin/spa/template-editor-Cx1ky7rr.js.map +1 -0
- package/dist/index.cjs +3691 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +242 -2
- package/dist/index.d.ts +242 -2
- package/dist/index.js +3667 -3
- package/dist/index.js.map +1 -1
- package/dist/null-7gnz1V98.d.cts +959 -0
- package/dist/null-7gnz1V98.d.ts +959 -0
- package/dist/testing.cjs +16565 -2
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.cts +63 -2
- package/dist/testing.d.ts +63 -2
- package/dist/testing.js +16555 -2
- package/dist/testing.js.map +1 -1
- package/package.json +38 -5
- package/dist/admin/static/.gitkeep +0 -0
- package/dist/admin/views/.gitkeep +0 -0
package/dist/testing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/testing/index.ts"],"names":[],"mappings":";AAMO,IAAM,mBAAA,GAAsB","file":"testing.js","sourcesContent":["// Test helpers — imported by host apps as `mailery/testing`.\n// Phase 0 will export:\n// - createTestMailer({ ... }) → { mailer, db, redis, provider, adapter }\n// - NullProvider\n// - MemoryContactAdapter\n\nexport const TESTING_PLACEHOLDER = true\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/server/adapters/mongo.ts","../src/server/providers/sendgrid.ts","../node_modules/tslib/tslib.es6.mjs","../node_modules/camelcase/index.js","../node_modules/ms/index.js","../node_modules/debug/src/common.js","../node_modules/debug/src/browser.js","../node_modules/debug/src/node.js","../node_modules/debug/src/index.js","../node_modules/new-find-package-json/src/index.ts","../node_modules/mongodb-memory-server-core/src/util/errors.ts","../node_modules/semver/internal/constants.js","../node_modules/semver/internal/debug.js","../node_modules/semver/internal/re.js","../node_modules/semver/internal/parse-options.js","../node_modules/semver/internal/identifiers.js","../node_modules/semver/classes/semver.js","../node_modules/semver/functions/parse.js","../node_modules/semver/functions/valid.js","../node_modules/semver/functions/clean.js","../node_modules/semver/functions/inc.js","../node_modules/semver/functions/diff.js","../node_modules/semver/functions/major.js","../node_modules/semver/functions/minor.js","../node_modules/semver/functions/patch.js","../node_modules/semver/functions/prerelease.js","../node_modules/semver/functions/compare.js","../node_modules/semver/functions/rcompare.js","../node_modules/semver/functions/compare-loose.js","../node_modules/semver/functions/compare-build.js","../node_modules/semver/functions/sort.js","../node_modules/semver/functions/rsort.js","../node_modules/semver/functions/gt.js","../node_modules/semver/functions/lt.js","../node_modules/semver/functions/eq.js","../node_modules/semver/functions/neq.js","../node_modules/semver/functions/gte.js","../node_modules/semver/functions/lte.js","../node_modules/semver/functions/cmp.js","../node_modules/semver/functions/coerce.js","../node_modules/semver/functions/truncate.js","../node_modules/semver/internal/lrucache.js","../node_modules/semver/classes/range.js","../node_modules/semver/classes/comparator.js","../node_modules/semver/functions/satisfies.js","../node_modules/semver/ranges/to-comparators.js","../node_modules/semver/ranges/max-satisfying.js","../node_modules/semver/ranges/min-satisfying.js","../node_modules/semver/ranges/min-version.js","../node_modules/semver/ranges/valid.js","../node_modules/semver/ranges/outside.js","../node_modules/semver/ranges/gtr.js","../node_modules/semver/ranges/ltr.js","../node_modules/semver/ranges/intersects.js","../node_modules/semver/ranges/simplify.js","../node_modules/semver/ranges/subset.js","../node_modules/semver/index.js","../node_modules/mongodb-memory-server-core/src/util/utils.ts","../node_modules/mongodb-memory-server-core/src/util/resolveConfig.ts","../node_modules/mongodb-memory-server-core/src/util/getport/index.ts","../node_modules/follow-redirects/debug.js","../node_modules/follow-redirects/index.js","../node_modules/events-universal/default.js","../node_modules/fast-fifo/fixed-size.js","../node_modules/fast-fifo/index.js","../node_modules/b4a/index.js","../node_modules/text-decoder/lib/pass-through-decoder.js","../node_modules/text-decoder/lib/utf8-decoder.js","../node_modules/text-decoder/index.js","../node_modules/streamx/index.js","../node_modules/tar-stream/headers.js","../node_modules/tar-stream/extract.js","../node_modules/tar-stream/constants.js","../node_modules/tar-stream/pack.js","../node_modules/tar-stream/index.js","../node_modules/pend/index.js","../node_modules/yauzl/fd-slicer.js","../node_modules/buffer-crc32/index.js","../node_modules/yauzl/index.js","../node_modules/mongodb-memory-server-core/src/util/getos/index.ts","../node_modules/mongodb-memory-server-core/src/util/MongoBinaryDownloadUrl.ts","../node_modules/agent-base/src/helpers.ts","../node_modules/agent-base/src/index.ts","../node_modules/https-proxy-agent/src/parse-proxy-response.ts","../node_modules/https-proxy-agent/src/index.ts","../node_modules/commondir/index.js","../node_modules/p-try/index.js","../node_modules/p-limit/index.js","../node_modules/p-locate/index.js","../node_modules/locate-path/index.js","../node_modules/path-exists/index.js","../node_modules/find-up/index.js","../node_modules/pkg-dir/index.js","../node_modules/make-dir/node_modules/semver/semver.js","../node_modules/make-dir/index.js","../node_modules/find-cache-dir/index.js","../node_modules/mongodb-memory-server-core/src/util/DryMongoBinary.ts","../node_modules/mongodb-memory-server-core/src/util/MongoBinaryDownload.ts","../node_modules/async-mutex/lib/errors.js","../node_modules/async-mutex/lib/Semaphore.js","../node_modules/async-mutex/lib/Mutex.js","../node_modules/async-mutex/lib/withTimeout.js","../node_modules/async-mutex/lib/tryAcquire.js","../node_modules/async-mutex/lib/index.js","../node_modules/mongodb-memory-server-core/src/util/lockfile.ts","../node_modules/mongodb-memory-server-core/src/util/MongoBinary.ts","../node_modules/mongodb-memory-server-core/src/util/MongoInstance.ts","../node_modules/mongodb-memory-server-core/src/MongoMemoryServer.ts","../node_modules/mongodb-memory-server-core/src/MongoMemoryReplSet.ts","../node_modules/mongodb-memory-server-core/src/index.ts","../node_modules/mongodb-memory-server/index.js","../src/server/providers/null.ts","../src/shared/schemas.ts","../src/server/config.ts","../src/server/models/index.ts","../src/server/events.ts","../src/server/tokens.ts","../src/server/queues/index.ts","../src/server/runner/triggers.ts","../src/server/runner/predicate.ts","../src/server/templates/render.ts","../src/server/runner/suppression.ts","../src/server/runner/health.ts","../src/server/runner/send.ts","../src/server/runner/step.ts","../src/server/runner/sweep.ts","../src/server/runner/broadcasts.ts","../src/server/runner/bounce-promotion.ts","../src/server/runner/tick.ts","../src/server/runner/webhook.ts","../src/server/mailer.ts","../src/testing/memory-adapter.ts","../src/testing/index.ts"],"names":["ObjectId","crypto","v","d","b","__assign","o","options","useColors","path","z","require_valid","require_semver","resolveConfig","ResolveConfigVariables","port","require_debug","exports","fill","data","onerror","require_constants","buffer","err","Buffer","url","__importStar","req","__exportStar","__importDefault","i","range","comp","error","require_errors","Semaphore","Mutex","require_lib","LockFileStatus","LockFileEvents","lockStatus","MongoInstanceEvents","MongoMemoryServerEvents","MongoMemoryServerStates","MongoMemoryReplSetStates","MongoMemoryReplSetEvents","htmlToText","counter","processScheduledBroadcasts","MongoClient","MongoContactAdapter","SendGridProvider","ObjectIdCtor"],"mappings":"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AAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,QAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,QAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,QAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,UAAA;AAAA,MAAY,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,SAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAAY,UAAA;AAAA,MAChD,QAAA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","file":"testing.js","sourcesContent":["/**\n * MongoContactAdapter — reads contacts directly from the host's `users`\n * collection (read-mostly; optional narrow tag writes). Mailer never\n * duplicates identity data — the host is the source of truth.\n */\n\nimport type { Collection, Db, Filter } from 'mongodb'\nimport { ObjectId } from 'mongodb'\n\nimport type {\n AdapterFilter,\n Contact,\n ContactAdapter,\n} from '../../shared/types.js'\n\nexport interface MongoContactAdapterOptions {\n db: Db\n collection: string\n emailField?: string\n idField?: string\n /** Path to the tags array on the user document. */\n tagsField?: string\n /** When true, mailer writes tags via `$addToSet` / `$pull` on the user doc. */\n tagsWritable?: boolean\n /** 'strings' = ['vip','beta'], 'objects' = [{ name: 'vip' }]. */\n tagsArrayShape?: 'strings' | 'objects'\n /** Customize the projection mailer sees. Defaults pick up email + tags + a few common fields. */\n toContact?: (userDoc: any) => Contact\n /** Customize how AdapterFilter becomes a Mongo query. */\n translateFilter?: (filter: AdapterFilter) => Filter<any>\n /** Per-call default for query() limit. */\n batchSize?: number\n}\n\nexport class MongoContactAdapter implements ContactAdapter {\n private readonly col: Collection<any>\n private readonly emailField: string\n private readonly idField: string\n private readonly tagsField: string | null\n private readonly tagsWritable: boolean\n private readonly tagsArrayShape: 'strings' | 'objects'\n private readonly toContactFn: (doc: any) => Contact\n private readonly translateFilterFn: (filter: AdapterFilter) => Filter<any>\n private readonly batchSize: number\n\n constructor(opts: MongoContactAdapterOptions) {\n this.col = opts.db.collection(opts.collection)\n this.emailField = opts.emailField ?? 'email'\n this.idField = opts.idField ?? '_id'\n this.tagsField = opts.tagsField ?? null\n this.tagsWritable = !!opts.tagsWritable\n this.tagsArrayShape = opts.tagsArrayShape ?? 'strings'\n this.toContactFn = opts.toContact ?? this.defaultToContact.bind(this)\n this.translateFilterFn = opts.translateFilter ?? this.defaultTranslateFilter.bind(this)\n this.batchSize = opts.batchSize ?? 500\n\n // Only expose tag write methods if the host opted in.\n if (this.tagsWritable && this.tagsField) {\n this.addTags = this.addTagsImpl.bind(this)\n this.removeTags = this.removeTagsImpl.bind(this)\n }\n }\n\n async getById(externalId: string): Promise<Contact | null> {\n const filter = this.idFilter(externalId)\n const doc = await this.col.findOne(filter)\n return doc ? this.toContactFn(doc) : null\n }\n\n async getByEmail(email: string): Promise<Contact | null> {\n const doc = await this.col.findOne({ [this.emailField]: email.toLowerCase() })\n return doc ? this.toContactFn(doc) : null\n }\n\n async getBatch(externalIds: string[]): Promise<Map<string, Contact>> {\n if (externalIds.length === 0) return new Map()\n const tryObjectId = externalIds.every(canBeObjectId)\n const ids: any[] = tryObjectId ? externalIds.map((s) => new ObjectId(s)) : externalIds\n const docs = await this.col.find({ [this.idField]: { $in: ids } }).toArray()\n const out = new Map<string, Contact>()\n for (const doc of docs) {\n const c = this.toContactFn(doc)\n out.set(c.externalId, c)\n }\n return out\n }\n\n async query(\n filter: AdapterFilter,\n opts: { limit: number; cursor?: string },\n ): Promise<{ contacts: Contact[]; nextCursor?: string }> {\n const query = this.translateFilterFn(filter)\n const limit = Math.min(opts.limit, this.batchSize)\n\n // Cursor is an ObjectId-or-externalId encoded as a string; we use it as a >\n // bound on the idField for stable pagination ordered by id.\n if (opts.cursor) {\n const cursorVal = canBeObjectId(opts.cursor) ? new ObjectId(opts.cursor) : opts.cursor\n ;(query as any)[this.idField] = { ...((query as any)[this.idField] ?? {}), $gt: cursorVal }\n }\n\n const docs = await this.col\n .find(query)\n .sort({ [this.idField]: 1 })\n .limit(limit + 1)\n .toArray()\n\n const hasMore = docs.length > limit\n const slice = hasMore ? docs.slice(0, limit) : docs\n const contacts = slice.map((d) => this.toContactFn(d))\n const last = slice[slice.length - 1]\n const nextCursor = hasMore && last ? String((last as any)[this.idField]) : undefined\n return { contacts, nextCursor }\n }\n\n async count(filter: AdapterFilter): Promise<number> {\n const query = this.translateFilterFn(filter)\n return await this.col.countDocuments(query)\n }\n\n addTags?: (externalId: string, tags: string[]) => Promise<void>\n removeTags?: (externalId: string, tags: string[]) => Promise<void>\n\n // -------------------------------------------------------------------------\n // Private helpers\n // -------------------------------------------------------------------------\n\n private idFilter(externalId: string): Filter<any> {\n if (this.idField === '_id' && canBeObjectId(externalId)) {\n return { _id: new ObjectId(externalId) } as Filter<any>\n }\n return { [this.idField]: externalId }\n }\n\n private defaultToContact(doc: any): Contact {\n const tagsRaw = this.tagsField ? doc[this.tagsField] ?? [] : []\n const tags: string[] =\n this.tagsArrayShape === 'objects'\n ? (Array.isArray(tagsRaw) ? tagsRaw : []).map((t: any) => String(t.name ?? t))\n : (Array.isArray(tagsRaw) ? tagsRaw : []).map((t: any) => String(t))\n\n const externalId = String(doc[this.idField] ?? '')\n const email = String(doc[this.emailField] ?? '').toLowerCase()\n\n // Default projection: everything that's not _id / email / tags becomes a field.\n const fields: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(doc)) {\n if (k === this.idField || k === this.emailField || k === this.tagsField) continue\n fields[k] = v\n }\n\n return {\n externalId,\n email,\n tags,\n fields,\n timezone: typeof doc.timezone === 'string' ? doc.timezone : undefined,\n locale: typeof doc.locale === 'string' ? doc.locale : undefined,\n }\n }\n\n private defaultTranslateFilter(filter: AdapterFilter): Filter<any> {\n const q: Record<string, unknown> = {}\n\n if (filter.emailIn && filter.emailIn.length > 0) {\n q[this.emailField] = { $in: filter.emailIn.map((e) => e.toLowerCase()) }\n }\n if (filter.externalIdIn && filter.externalIdIn.length > 0) {\n const tryObjectId = filter.externalIdIn.every(canBeObjectId)\n q[this.idField] = {\n $in: tryObjectId ? filter.externalIdIn.map((s) => new ObjectId(s)) : filter.externalIdIn,\n }\n }\n if (filter.fieldEquals) {\n q[filter.fieldEquals.field] = filter.fieldEquals.value\n }\n if (filter.fieldIn) {\n q[filter.fieldIn.field] = { $in: filter.fieldIn.values }\n }\n if (filter.fieldExists) {\n q[filter.fieldExists] = { $exists: true }\n }\n if (filter.createdAfter || filter.createdBefore) {\n const r: any = {}\n if (filter.createdAfter) r.$gte = filter.createdAfter\n if (filter.createdBefore) r.$lte = filter.createdBefore\n q.createdAt = r\n }\n if (this.tagsField) {\n if (filter.hasTag) {\n q[this.tagsField] = filter.hasTag\n }\n if (filter.hasTagIn && filter.hasTagIn.length > 0) {\n q[this.tagsField] = { $in: filter.hasTagIn }\n }\n }\n return q\n }\n\n private async addTagsImpl(externalId: string, tags: string[]): Promise<void> {\n if (!this.tagsField || tags.length === 0) return\n const value =\n this.tagsArrayShape === 'objects'\n ? tags.map((name) => ({ name }))\n : tags\n await this.col.updateOne(this.idFilter(externalId), {\n $addToSet: { [this.tagsField]: { $each: value } } as any,\n })\n }\n\n private async removeTagsImpl(externalId: string, tags: string[]): Promise<void> {\n if (!this.tagsField || tags.length === 0) return\n const value =\n this.tagsArrayShape === 'objects'\n ? { $in: tags.map((name) => ({ name })) }\n : { $in: tags }\n await this.col.updateOne(this.idFilter(externalId), {\n $pull: { [this.tagsField]: value } as any,\n })\n }\n}\n\nfunction canBeObjectId(s: string): boolean {\n return typeof s === 'string' && /^[a-f0-9]{24}$/i.test(s)\n}\n","/**\n * SendGridProvider — sends mail through @sendgrid/mail, verifies the Event\n * Webhook signature with the ECDSA public key configured in SendGrid, and\n * normalizes inbound event payloads into our shared shape.\n *\n * Setup steps required on the SendGrid side (one-time):\n * 1. Authenticate sender domain (SPF, DKIM, DMARC).\n * 2. Configure event webhook → POST to https://your.host/m/webhooks/sendgrid\n * 3. Enable: delivered, open, click, bounce, dropped, spamreport, unsubscribe\n * 4. Generate Signed Event Webhook key → store as webhookVerificationKey\n */\n\nimport crypto from 'node:crypto'\nimport sgMail from '@sendgrid/mail'\n\nimport type {\n MailProvider,\n NormalizedEvent,\n SendArgs,\n SendResult,\n} from '../../shared/types.js'\n\nexport interface SendGridProviderOptions {\n apiKey: string\n /** ECDSA public key (PEM) from SendGrid → Settings → Mail Settings → Signed Event Webhook. */\n webhookVerificationKey?: string\n /** Send-rate cap per second (BullMQ group limiter consults this). */\n sendRatePerSecond?: number\n /** Sandbox mode bypasses actual delivery — useful in dev/test. */\n sandbox?: boolean\n}\n\nconst SG_SIG_HEADER = 'x-twilio-email-event-webhook-signature'\nconst SG_TS_HEADER = 'x-twilio-email-event-webhook-timestamp'\n\nexport class SendGridProvider implements MailProvider {\n readonly name = 'sendgrid'\n readonly sendRatePerSecond: number\n\n constructor(private readonly opts: SendGridProviderOptions) {\n sgMail.setApiKey(opts.apiKey)\n this.sendRatePerSecond = opts.sendRatePerSecond ?? 10\n }\n\n async send(args: SendArgs): Promise<SendResult> {\n const msg: sgMail.MailDataRequired = {\n to: args.to,\n from: { name: args.fromName, email: args.fromEmail },\n replyTo: args.replyTo,\n subject: args.subject,\n text: args.text,\n html: args.html,\n headers: args.headers,\n customArgs: args.messageMeta,\n trackingSettings: {\n // We do our own click/open tracking — let provider stay out of it.\n clickTracking: { enable: false, enableText: false },\n openTracking: { enable: false },\n },\n mailSettings: {\n sandboxMode: { enable: this.opts.sandbox ?? false },\n },\n }\n\n const [response] = await sgMail.send(msg)\n const providerId =\n (response.headers['x-message-id'] as string | undefined) ?? `sg-${Date.now()}`\n return {\n providerId,\n status: response.statusCode < 300 ? 'accepted' : 'rejected',\n raw: response,\n }\n }\n\n async verifyWebhook(rawBody: Buffer, headers: Record<string, string>): Promise<boolean> {\n if (!this.opts.webhookVerificationKey) return false\n const sig = headers[SG_SIG_HEADER]\n const ts = headers[SG_TS_HEADER]\n if (!sig || !ts) return false\n\n const payload = Buffer.concat([Buffer.from(ts, 'utf8'), rawBody])\n try {\n const verifier = crypto.createVerify('sha256')\n verifier.update(payload)\n return verifier.verify(this.opts.webhookVerificationKey, sig, 'base64')\n } catch {\n return false\n }\n }\n\n parseWebhookEvents(payload: unknown): NormalizedEvent[] {\n if (!Array.isArray(payload)) return []\n return payload\n .map((raw) => normalizeSendGridEvent(raw))\n .filter((e): e is NormalizedEvent => e !== null)\n }\n}\n\nfunction normalizeSendGridEvent(e: any): NormalizedEvent | null {\n const type = mapEventType(e.event)\n if (!type) return null\n return {\n type,\n providerEventId: String(e.sg_event_id ?? e['smtp-id'] ?? `${e.event}-${e.timestamp}-${e.email}`),\n providerMessageId: String(e.sg_message_id ?? e['smtp-id'] ?? ''),\n email: String(e.email ?? '').toLowerCase(),\n occurredAt: new Date(Number(e.timestamp) * 1000),\n details: {\n bounceType:\n e.event === 'bounce' ? (e.type === 'bounce' ? 'hard' : 'soft') : undefined,\n bounceReason: e.reason,\n clickedUrl: e.url,\n userAgent: e.useragent,\n ipAddress: e.ip,\n },\n }\n}\n\nfunction mapEventType(sgEvent: string): NormalizedEvent['type'] | null {\n switch (sgEvent) {\n case 'delivered':\n return 'delivered'\n case 'open':\n return 'open'\n case 'click':\n return 'click'\n case 'bounce':\n case 'dropped':\n return 'bounce'\n case 'spamreport':\n return 'spam_report'\n case 'unsubscribe':\n case 'group_unsubscribe':\n return 'unsubscribe'\n default:\n return null\n }\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","'use strict';\n\nconst UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier))\n\t\t.replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m));\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false ?\n\t\tstring => string.toLowerCase() :\n\t\tstring => string.toLocaleLowerCase(options.locale);\n\tconst toUpperCase = options.locale === false ?\n\t\tstring => string.toUpperCase() :\n\t\tstring => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\n\tif (options.preserveConsecutiveUppercase) {\n\t\tinput = preserveConsecutiveUppercase(input, toLowerCase);\n\t} else {\n\t\tinput = toLowerCase(input);\n\t}\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n",null,null,"'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numeric identifiers include numeric identifiers but can be longer.\n// Therefore non-numeric identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifier, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1\n }\n\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n if (this.major < other.major) {\n return -1\n }\n if (this.major > other.major) {\n return 1\n }\n if (this.minor < other.minor) {\n return -1\n }\n if (this.minor > other.minor) {\n return 1\n }\n if (this.patch < other.patch) {\n return -1\n }\n if (this.patch > other.patch) {\n return 1\n }\n return 0\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are prereleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nconst parse = require('./parse')\nconst constants = require('../internal/constants')\nconst SemVer = require('../classes/semver')\n\nconst truncate = (version, truncation, options) => {\n if (!constants.RELEASE_TYPES.includes(truncation)) {\n return null\n }\n\n const clonedVersion = cloneInputVersion(version, options)\n return clonedVersion && doTruncation(clonedVersion, truncation)\n}\n\nconst cloneInputVersion = (version, options) => {\n const versionStringToParse = (\n version instanceof SemVer ? version.version : version\n )\n\n return parse(versionStringToParse, options)\n}\n\nconst doTruncation = (version, truncation) => {\n if (isPrerelease(truncation)) {\n return version.version\n }\n\n version.prerelease = []\n\n switch (truncation) {\n case 'major':\n version.minor = 0\n version.patch = 0\n break\n case 'minor':\n version.patch = 0\n break\n }\n\n return version.format()\n}\n\nconst isPrerelease = (type) => {\n return type.startsWith('pre')\n}\n\nmodule.exports = truncate\n","'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n comp = comp.replace(re[t.BUILD], '')\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If LT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst truncate = require('./functions/truncate')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n truncate,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n",null,null,null,"var debug;\n\nmodule.exports = function () {\n if (!debug) {\n try {\n /* eslint global-require: off */\n debug = require(\"debug\")(\"follow-redirects\");\n }\n catch (error) { /* */ }\n if (typeof debug !== \"function\") {\n debug = function () { /* */ };\n }\n }\n debug.apply(null, arguments);\n};\n","var url = require(\"url\");\nvar URL = url.URL;\nvar http = require(\"http\");\nvar https = require(\"https\");\nvar Writable = require(\"stream\").Writable;\nvar assert = require(\"assert\");\nvar debug = require(\"./debug\");\n\n// Preventive platform detection\n// istanbul ignore next\n(function detectUnsupportedEnvironment() {\n var looksLikeNode = typeof process !== \"undefined\";\n var looksLikeBrowser = typeof window !== \"undefined\" && typeof document !== \"undefined\";\n var looksLikeV8 = isFunction(Error.captureStackTrace);\n if (!looksLikeNode && (looksLikeBrowser || !looksLikeV8)) {\n console.warn(\"The follow-redirects package should be excluded from browser builds.\");\n }\n}());\n\n// Whether to use the native URL object or the legacy url module\nvar useNativeURL = false;\ntry {\n assert(new URL(\"\"));\n}\ncatch (error) {\n useNativeURL = error.code === \"ERR_INVALID_URL\";\n}\n\n// HTTP headers to drop across HTTP/HTTPS and domain boundaries\nvar sensitiveHeaders = [\n \"Authorization\",\n \"Proxy-Authorization\",\n \"Cookie\",\n];\n\n// URL fields to preserve in copy operations\nvar preservedUrlFields = [\n \"auth\",\n \"host\",\n \"hostname\",\n \"href\",\n \"path\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"query\",\n \"search\",\n \"hash\",\n];\n\n// Create handlers that pass events from native requests\nvar events = [\"abort\", \"aborted\", \"connect\", \"error\", \"socket\", \"timeout\"];\nvar eventHandlers = Object.create(null);\nevents.forEach(function (event) {\n eventHandlers[event] = function (arg1, arg2, arg3) {\n this._redirectable.emit(event, arg1, arg2, arg3);\n };\n});\n\n// Error types with codes\nvar InvalidUrlError = createErrorType(\n \"ERR_INVALID_URL\",\n \"Invalid URL\",\n TypeError\n);\nvar RedirectionError = createErrorType(\n \"ERR_FR_REDIRECTION_FAILURE\",\n \"Redirected request failed\"\n);\nvar TooManyRedirectsError = createErrorType(\n \"ERR_FR_TOO_MANY_REDIRECTS\",\n \"Maximum number of redirects exceeded\",\n RedirectionError\n);\nvar MaxBodyLengthExceededError = createErrorType(\n \"ERR_FR_MAX_BODY_LENGTH_EXCEEDED\",\n \"Request body larger than maxBodyLength limit\"\n);\nvar WriteAfterEndError = createErrorType(\n \"ERR_STREAM_WRITE_AFTER_END\",\n \"write after end\"\n);\n\n// istanbul ignore next\nvar destroy = Writable.prototype.destroy || noop;\n\n// An HTTP(S) request that can be redirected\nfunction RedirectableRequest(options, responseCallback) {\n // Initialize the request\n Writable.call(this);\n this._sanitizeOptions(options);\n this._options = options;\n this._ended = false;\n this._ending = false;\n this._redirectCount = 0;\n this._redirects = [];\n this._requestBodyLength = 0;\n this._requestBodyBuffers = [];\n\n // Attach a callback if passed\n if (responseCallback) {\n this.on(\"response\", responseCallback);\n }\n\n // React to responses of native requests\n var self = this;\n this._onNativeResponse = function (response) {\n try {\n self._processResponse(response);\n }\n catch (cause) {\n self.emit(\"error\", cause instanceof RedirectionError ?\n cause : new RedirectionError({ cause: cause }));\n }\n };\n\n // Create filter for sensitive HTTP headers\n this._headerFilter = new RegExp(\"^(?:\" +\n sensitiveHeaders.concat(options.sensitiveHeaders).map(escapeRegex).join(\"|\") +\n \")$\", \"i\");\n\n // Perform the first request\n this._performRequest();\n}\nRedirectableRequest.prototype = Object.create(Writable.prototype);\n\nRedirectableRequest.prototype.abort = function () {\n destroyRequest(this._currentRequest);\n this._currentRequest.abort();\n this.emit(\"abort\");\n};\n\nRedirectableRequest.prototype.destroy = function (error) {\n destroyRequest(this._currentRequest, error);\n destroy.call(this, error);\n return this;\n};\n\n// Writes buffered data to the current native request\nRedirectableRequest.prototype.write = function (data, encoding, callback) {\n // Writing is not allowed if end has been called\n if (this._ending) {\n throw new WriteAfterEndError();\n }\n\n // Validate input and shift parameters if necessary\n if (!isString(data) && !isBuffer(data)) {\n throw new TypeError(\"data should be a string, Buffer or Uint8Array\");\n }\n if (isFunction(encoding)) {\n callback = encoding;\n encoding = null;\n }\n\n // Ignore empty buffers, since writing them doesn't invoke the callback\n // https://github.com/nodejs/node/issues/22066\n if (data.length === 0) {\n if (callback) {\n callback();\n }\n return;\n }\n // Only write when we don't exceed the maximum body length\n if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {\n this._requestBodyLength += data.length;\n this._requestBodyBuffers.push({ data: data, encoding: encoding });\n this._currentRequest.write(data, encoding, callback);\n }\n // Error when we exceed the maximum body length\n else {\n this.emit(\"error\", new MaxBodyLengthExceededError());\n this.abort();\n }\n};\n\n// Ends the current native request\nRedirectableRequest.prototype.end = function (data, encoding, callback) {\n // Shift parameters if necessary\n if (isFunction(data)) {\n callback = data;\n data = encoding = null;\n }\n else if (isFunction(encoding)) {\n callback = encoding;\n encoding = null;\n }\n\n // Write data if needed and end\n if (!data) {\n this._ended = this._ending = true;\n this._currentRequest.end(null, null, callback);\n }\n else {\n var self = this;\n var currentRequest = this._currentRequest;\n this.write(data, encoding, function () {\n self._ended = true;\n currentRequest.end(null, null, callback);\n });\n this._ending = true;\n }\n};\n\n// Sets a header value on the current native request\nRedirectableRequest.prototype.setHeader = function (name, value) {\n this._options.headers[name] = value;\n this._currentRequest.setHeader(name, value);\n};\n\n// Clears a header value on the current native request\nRedirectableRequest.prototype.removeHeader = function (name) {\n delete this._options.headers[name];\n this._currentRequest.removeHeader(name);\n};\n\n// Global timeout for all underlying requests\nRedirectableRequest.prototype.setTimeout = function (msecs, callback) {\n var self = this;\n\n // Destroys the socket on timeout\n function destroyOnTimeout(socket) {\n socket.setTimeout(msecs);\n socket.removeListener(\"timeout\", socket.destroy);\n socket.addListener(\"timeout\", socket.destroy);\n }\n\n // Sets up a timer to trigger a timeout event\n function startTimer(socket) {\n if (self._timeout) {\n clearTimeout(self._timeout);\n }\n self._timeout = setTimeout(function () {\n self.emit(\"timeout\");\n clearTimer();\n }, msecs);\n destroyOnTimeout(socket);\n }\n\n // Stops a timeout from triggering\n function clearTimer() {\n // Clear the timeout\n if (self._timeout) {\n clearTimeout(self._timeout);\n self._timeout = null;\n }\n\n // Clean up all attached listeners\n self.removeListener(\"abort\", clearTimer);\n self.removeListener(\"error\", clearTimer);\n self.removeListener(\"response\", clearTimer);\n self.removeListener(\"close\", clearTimer);\n if (callback) {\n self.removeListener(\"timeout\", callback);\n }\n if (!self.socket) {\n self._currentRequest.removeListener(\"socket\", startTimer);\n }\n }\n\n // Attach callback if passed\n if (callback) {\n this.on(\"timeout\", callback);\n }\n\n // Start the timer if or when the socket is opened\n if (this.socket) {\n startTimer(this.socket);\n }\n else {\n this._currentRequest.once(\"socket\", startTimer);\n }\n\n // Clean up on events\n this.on(\"socket\", destroyOnTimeout);\n this.on(\"abort\", clearTimer);\n this.on(\"error\", clearTimer);\n this.on(\"response\", clearTimer);\n this.on(\"close\", clearTimer);\n\n return this;\n};\n\n// Proxy all other public ClientRequest methods\n[\n \"flushHeaders\", \"getHeader\",\n \"setNoDelay\", \"setSocketKeepAlive\",\n].forEach(function (method) {\n RedirectableRequest.prototype[method] = function (a, b) {\n return this._currentRequest[method](a, b);\n };\n});\n\n// Proxy all public ClientRequest properties\n[\"aborted\", \"connection\", \"socket\"].forEach(function (property) {\n Object.defineProperty(RedirectableRequest.prototype, property, {\n get: function () { return this._currentRequest[property]; },\n });\n});\n\nRedirectableRequest.prototype._sanitizeOptions = function (options) {\n // Ensure headers are always present\n if (!options.headers) {\n options.headers = {};\n }\n if (!isArray(options.sensitiveHeaders)) {\n options.sensitiveHeaders = [];\n }\n\n // Since http.request treats host as an alias of hostname,\n // but the url module interprets host as hostname plus port,\n // eliminate the host property to avoid confusion.\n if (options.host) {\n // Use hostname if set, because it has precedence\n if (!options.hostname) {\n options.hostname = options.host;\n }\n delete options.host;\n }\n\n // Complete the URL object when necessary\n if (!options.pathname && options.path) {\n var searchPos = options.path.indexOf(\"?\");\n if (searchPos < 0) {\n options.pathname = options.path;\n }\n else {\n options.pathname = options.path.substring(0, searchPos);\n options.search = options.path.substring(searchPos);\n }\n }\n};\n\n\n// Executes the next native request (initial or redirect)\nRedirectableRequest.prototype._performRequest = function () {\n // Load the native protocol\n var protocol = this._options.protocol;\n var nativeProtocol = this._options.nativeProtocols[protocol];\n if (!nativeProtocol) {\n throw new TypeError(\"Unsupported protocol \" + protocol);\n }\n\n // If specified, use the agent corresponding to the protocol\n // (HTTP and HTTPS use different types of agents)\n if (this._options.agents) {\n var scheme = protocol.slice(0, -1);\n this._options.agent = this._options.agents[scheme];\n }\n\n // Create the native request and set up its event handlers\n var request = this._currentRequest =\n nativeProtocol.request(this._options, this._onNativeResponse);\n request._redirectable = this;\n for (var event of events) {\n request.on(event, eventHandlers[event]);\n }\n\n // RFC7230§5.3.1: When making a request directly to an origin server, […]\n // a client MUST send only the absolute path […] as the request-target.\n this._currentUrl = /^\\//.test(this._options.path) ?\n url.format(this._options) :\n // When making a request to a proxy, […]\n // a client MUST send the target URI in absolute-form […].\n this._options.path;\n\n // End a redirected request\n // (The first request must be ended explicitly with RedirectableRequest#end)\n if (this._isRedirect) {\n // Write the request entity and end\n var i = 0;\n var self = this;\n var buffers = this._requestBodyBuffers;\n (function writeNext(error) {\n // Only write if this request has not been redirected yet\n // istanbul ignore else\n if (request === self._currentRequest) {\n // Report any write errors\n // istanbul ignore if\n if (error) {\n self.emit(\"error\", error);\n }\n // Write the next buffer if there are still left\n else if (i < buffers.length) {\n var buffer = buffers[i++];\n // istanbul ignore else\n if (!request.finished) {\n request.write(buffer.data, buffer.encoding, writeNext);\n }\n }\n // End the request if `end` has been called on us\n else if (self._ended) {\n request.end();\n }\n }\n }());\n }\n};\n\n// Processes a response from the current native request\nRedirectableRequest.prototype._processResponse = function (response) {\n // Store the redirected response\n var statusCode = response.statusCode;\n if (this._options.trackRedirects) {\n this._redirects.push({\n url: this._currentUrl,\n headers: response.headers,\n statusCode: statusCode,\n });\n }\n\n // RFC7231§6.4: The 3xx (Redirection) class of status code indicates\n // that further action needs to be taken by the user agent in order to\n // fulfill the request. If a Location header field is provided,\n // the user agent MAY automatically redirect its request to the URI\n // referenced by the Location field value,\n // even if the specific status code is not understood.\n\n // If the response is not a redirect; return it as-is\n var location = response.headers.location;\n if (!location || this._options.followRedirects === false ||\n statusCode < 300 || statusCode >= 400) {\n response.responseUrl = this._currentUrl;\n response.redirects = this._redirects;\n this.emit(\"response\", response);\n\n // Clean up\n this._requestBodyBuffers = [];\n return;\n }\n\n // The response is a redirect, so abort the current request\n destroyRequest(this._currentRequest);\n // Discard the remainder of the response to avoid waiting for data\n response.destroy();\n\n // RFC7231§6.4: A client SHOULD detect and intervene\n // in cyclical redirections (i.e., \"infinite\" redirection loops).\n if (++this._redirectCount > this._options.maxRedirects) {\n throw new TooManyRedirectsError();\n }\n\n // Store the request headers if applicable\n var requestHeaders;\n var beforeRedirect = this._options.beforeRedirect;\n if (beforeRedirect) {\n requestHeaders = Object.assign({\n // The Host header was set by nativeProtocol.request\n Host: response.req.getHeader(\"host\"),\n }, this._options.headers);\n }\n\n // RFC7231§6.4: Automatic redirection needs to done with\n // care for methods not known to be safe, […]\n // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change\n // the request method from POST to GET for the subsequent request.\n var method = this._options.method;\n if ((statusCode === 301 || statusCode === 302) && this._options.method === \"POST\" ||\n // RFC7231§6.4.4: The 303 (See Other) status code indicates that\n // the server is redirecting the user agent to a different resource […]\n // A user agent can perform a retrieval request targeting that URI\n // (a GET or HEAD request if using HTTP) […]\n (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {\n this._options.method = \"GET\";\n // Drop a possible entity and headers related to it\n this._requestBodyBuffers = [];\n removeMatchingHeaders(/^content-/i, this._options.headers);\n }\n\n // Drop the Host header, as the redirect might lead to a different host\n var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);\n\n // If the redirect is relative, carry over the host of the last request\n var currentUrlParts = parseUrl(this._currentUrl);\n var currentHost = currentHostHeader || currentUrlParts.host;\n var currentUrl = /^\\w+:/.test(location) ? this._currentUrl :\n url.format(Object.assign(currentUrlParts, { host: currentHost }));\n\n // Create the redirected request\n var redirectUrl = resolveUrl(location, currentUrl);\n debug(\"redirecting to\", redirectUrl.href);\n this._isRedirect = true;\n spreadUrlObject(redirectUrl, this._options);\n\n // Drop confidential headers when redirecting to a less secure protocol\n // or to a different domain that is not a superdomain\n if (redirectUrl.protocol !== currentUrlParts.protocol &&\n redirectUrl.protocol !== \"https:\" ||\n redirectUrl.host !== currentHost &&\n !isSubdomain(redirectUrl.host, currentHost)) {\n removeMatchingHeaders(this._headerFilter, this._options.headers);\n }\n\n // Evaluate the beforeRedirect callback\n if (isFunction(beforeRedirect)) {\n var responseDetails = {\n headers: response.headers,\n statusCode: statusCode,\n };\n var requestDetails = {\n url: currentUrl,\n method: method,\n headers: requestHeaders,\n };\n beforeRedirect(this._options, responseDetails, requestDetails);\n this._sanitizeOptions(this._options);\n }\n\n // Perform the redirected request\n this._performRequest();\n};\n\n// Wraps the key/value object of protocols with redirect functionality\nfunction wrap(protocols) {\n // Default settings\n var exports = {\n maxRedirects: 21,\n maxBodyLength: 10 * 1024 * 1024,\n };\n\n // Wrap each protocol\n var nativeProtocols = {};\n Object.keys(protocols).forEach(function (scheme) {\n var protocol = scheme + \":\";\n var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];\n var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);\n\n // Executes a request, following redirects\n function request(input, options, callback) {\n // Parse parameters, ensuring that input is an object\n if (isURL(input)) {\n input = spreadUrlObject(input);\n }\n else if (isString(input)) {\n input = spreadUrlObject(parseUrl(input));\n }\n else {\n callback = options;\n options = validateUrl(input);\n input = { protocol: protocol };\n }\n if (isFunction(options)) {\n callback = options;\n options = null;\n }\n\n // Set defaults\n options = Object.assign({\n maxRedirects: exports.maxRedirects,\n maxBodyLength: exports.maxBodyLength,\n }, input, options);\n options.nativeProtocols = nativeProtocols;\n if (!isString(options.host) && !isString(options.hostname)) {\n options.hostname = \"::1\";\n }\n\n assert.equal(options.protocol, protocol, \"protocol mismatch\");\n debug(\"options\", options);\n return new RedirectableRequest(options, callback);\n }\n\n // Executes a GET request, following redirects\n function get(input, options, callback) {\n var wrappedRequest = wrappedProtocol.request(input, options, callback);\n wrappedRequest.end();\n return wrappedRequest;\n }\n\n // Expose the properties on the wrapped protocol\n Object.defineProperties(wrappedProtocol, {\n request: { value: request, configurable: true, enumerable: true, writable: true },\n get: { value: get, configurable: true, enumerable: true, writable: true },\n });\n });\n return exports;\n}\n\nfunction noop() { /* empty */ }\n\nfunction parseUrl(input) {\n var parsed;\n // istanbul ignore else\n if (useNativeURL) {\n parsed = new URL(input);\n }\n else {\n // Ensure the URL is valid and absolute\n parsed = validateUrl(url.parse(input));\n if (!isString(parsed.protocol)) {\n throw new InvalidUrlError({ input });\n }\n }\n return parsed;\n}\n\nfunction resolveUrl(relative, base) {\n // istanbul ignore next\n return useNativeURL ? new URL(relative, base) : parseUrl(url.resolve(base, relative));\n}\n\nfunction validateUrl(input) {\n if (/^\\[/.test(input.hostname) && !/^\\[[:0-9a-f]+\\]$/i.test(input.hostname)) {\n throw new InvalidUrlError({ input: input.href || input });\n }\n if (/^\\[/.test(input.host) && !/^\\[[:0-9a-f]+\\](:\\d+)?$/i.test(input.host)) {\n throw new InvalidUrlError({ input: input.href || input });\n }\n return input;\n}\n\nfunction spreadUrlObject(urlObject, target) {\n var spread = target || {};\n for (var key of preservedUrlFields) {\n spread[key] = urlObject[key];\n }\n\n // Fix IPv6 hostname\n if (spread.hostname.startsWith(\"[\")) {\n spread.hostname = spread.hostname.slice(1, -1);\n }\n // Ensure port is a number\n if (spread.port !== \"\") {\n spread.port = Number(spread.port);\n }\n // Concatenate path\n spread.path = spread.search ? spread.pathname + spread.search : spread.pathname;\n\n return spread;\n}\n\nfunction removeMatchingHeaders(regex, headers) {\n var lastValue;\n for (var header in headers) {\n if (regex.test(header)) {\n lastValue = headers[header];\n delete headers[header];\n }\n }\n return (lastValue === null || typeof lastValue === \"undefined\") ?\n undefined : String(lastValue).trim();\n}\n\nfunction createErrorType(code, message, baseClass) {\n // Create constructor\n function CustomError(properties) {\n // istanbul ignore else\n if (isFunction(Error.captureStackTrace)) {\n Error.captureStackTrace(this, this.constructor);\n }\n Object.assign(this, properties || {});\n this.code = code;\n this.message = this.cause ? message + \": \" + this.cause.message : message;\n }\n\n // Attach constructor and set default properties\n CustomError.prototype = new (baseClass || Error)();\n Object.defineProperties(CustomError.prototype, {\n constructor: {\n value: CustomError,\n enumerable: false,\n },\n name: {\n value: \"Error [\" + code + \"]\",\n enumerable: false,\n },\n });\n return CustomError;\n}\n\nfunction destroyRequest(request, error) {\n for (var event of events) {\n request.removeListener(event, eventHandlers[event]);\n }\n request.on(\"error\", noop);\n request.destroy(error);\n}\n\nfunction isSubdomain(subdomain, domain) {\n assert(isString(subdomain) && isString(domain));\n var dot = subdomain.length - domain.length - 1;\n return dot > 0 && subdomain[dot] === \".\" && subdomain.endsWith(domain);\n}\n\nfunction isArray(value) {\n return value instanceof Array;\n}\n\nfunction isString(value) {\n return typeof value === \"string\" || value instanceof String;\n}\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction isBuffer(value) {\n return typeof value === \"object\" && (\"length\" in value);\n}\n\nfunction isURL(value) {\n return URL && value instanceof URL;\n}\n\nfunction escapeRegex(regex) {\n return regex.replace(/[\\]\\\\/()*+?.$]/g, \"\\\\$&\");\n}\n\n// Exports\nmodule.exports = wrap({ http: http, https: https });\nmodule.exports.wrap = wrap;\n","module.exports = require('events')\n","module.exports = class FixedFIFO {\n constructor (hwm) {\n if (!(hwm > 0) || ((hwm - 1) & hwm) !== 0) throw new Error('Max size for a FixedFIFO should be a power of two')\n this.buffer = new Array(hwm)\n this.mask = hwm - 1\n this.top = 0\n this.btm = 0\n this.next = null\n }\n\n clear () {\n this.top = this.btm = 0\n this.next = null\n this.buffer.fill(undefined)\n }\n\n push (data) {\n if (this.buffer[this.top] !== undefined) return false\n this.buffer[this.top] = data\n this.top = (this.top + 1) & this.mask\n return true\n }\n\n shift () {\n const last = this.buffer[this.btm]\n if (last === undefined) return undefined\n this.buffer[this.btm] = undefined\n this.btm = (this.btm + 1) & this.mask\n return last\n }\n\n peek () {\n return this.buffer[this.btm]\n }\n\n isEmpty () {\n return this.buffer[this.btm] === undefined\n }\n}\n","const FixedFIFO = require('./fixed-size')\n\nmodule.exports = class FastFIFO {\n constructor (hwm) {\n this.hwm = hwm || 16\n this.head = new FixedFIFO(this.hwm)\n this.tail = this.head\n this.length = 0\n }\n\n clear () {\n this.head = this.tail\n this.head.clear()\n this.length = 0\n }\n\n push (val) {\n this.length++\n if (!this.head.push(val)) {\n const prev = this.head\n this.head = prev.next = new FixedFIFO(2 * this.head.buffer.length)\n this.head.push(val)\n }\n }\n\n shift () {\n if (this.length !== 0) this.length--\n const val = this.tail.shift()\n if (val === undefined && this.tail.next) {\n const next = this.tail.next\n this.tail.next = null\n this.tail = next\n return this.tail.shift()\n }\n\n return val\n }\n\n peek () {\n const val = this.tail.peek()\n if (val === undefined && this.tail.next) return this.tail.next.peek()\n return val\n }\n\n isEmpty () {\n return this.length === 0\n }\n}\n","function isBuffer(value) {\n return Buffer.isBuffer(value) || value instanceof Uint8Array\n}\n\nfunction isEncoding(encoding) {\n return Buffer.isEncoding(encoding)\n}\n\nfunction alloc(size, fill, encoding) {\n return Buffer.alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe(size) {\n return Buffer.allocUnsafe(size)\n}\n\nfunction allocUnsafeSlow(size) {\n return Buffer.allocUnsafeSlow(size)\n}\n\nfunction byteLength(string, encoding) {\n return Buffer.byteLength(string, encoding)\n}\n\nfunction compare(a, b) {\n return Buffer.compare(a, b)\n}\n\nfunction concat(buffers, totalLength) {\n return Buffer.concat(buffers, totalLength)\n}\n\nfunction copy(source, target, targetStart, start, end) {\n return toBuffer(source).copy(target, targetStart, start, end)\n}\n\nfunction equals(a, b) {\n return toBuffer(a).equals(b)\n}\n\nfunction fill(buffer, value, offset, end, encoding) {\n return toBuffer(buffer).fill(value, offset, end, encoding)\n}\n\nfunction from(value, encodingOrOffset, length) {\n return Buffer.from(value, encodingOrOffset, length)\n}\n\nfunction includes(buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).includes(value, byteOffset, encoding)\n}\n\nfunction indexOf(buffer, value, byfeOffset, encoding) {\n return toBuffer(buffer).indexOf(value, byfeOffset, encoding)\n}\n\nfunction lastIndexOf(buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).lastIndexOf(value, byteOffset, encoding)\n}\n\nfunction swap16(buffer) {\n return toBuffer(buffer).swap16()\n}\n\nfunction swap32(buffer) {\n return toBuffer(buffer).swap32()\n}\n\nfunction swap64(buffer) {\n return toBuffer(buffer).swap64()\n}\n\nfunction toBuffer(buffer) {\n if (Buffer.isBuffer(buffer)) return buffer\n return Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nfunction toString(buffer, encoding, start, end) {\n return toBuffer(buffer).toString(encoding, start, end)\n}\n\nfunction write(buffer, string, offset, length, encoding) {\n return toBuffer(buffer).write(string, offset, length, encoding)\n}\n\nfunction readDoubleBE(buffer, offset) {\n return toBuffer(buffer).readDoubleBE(offset)\n}\n\nfunction readDoubleLE(buffer, offset) {\n return toBuffer(buffer).readDoubleLE(offset)\n}\n\nfunction readFloatBE(buffer, offset) {\n return toBuffer(buffer).readFloatBE(offset)\n}\n\nfunction readFloatLE(buffer, offset) {\n return toBuffer(buffer).readFloatLE(offset)\n}\n\nfunction readInt32BE(buffer, offset) {\n return toBuffer(buffer).readInt32BE(offset)\n}\n\nfunction readInt32LE(buffer, offset) {\n return toBuffer(buffer).readInt32LE(offset)\n}\n\nfunction readUInt32BE(buffer, offset) {\n return toBuffer(buffer).readUInt32BE(offset)\n}\n\nfunction readUInt32LE(buffer, offset) {\n return toBuffer(buffer).readUInt32LE(offset)\n}\n\nfunction writeDoubleBE(buffer, value, offset) {\n return toBuffer(buffer).writeDoubleBE(value, offset)\n}\n\nfunction writeDoubleLE(buffer, value, offset) {\n return toBuffer(buffer).writeDoubleLE(value, offset)\n}\n\nfunction writeFloatBE(buffer, value, offset) {\n return toBuffer(buffer).writeFloatBE(value, offset)\n}\n\nfunction writeFloatLE(buffer, value, offset) {\n return toBuffer(buffer).writeFloatLE(value, offset)\n}\n\nfunction writeInt32BE(buffer, value, offset) {\n return toBuffer(buffer).writeInt32BE(value, offset)\n}\n\nfunction writeInt32LE(buffer, value, offset) {\n return toBuffer(buffer).writeInt32LE(value, offset)\n}\n\nfunction writeUInt32BE(buffer, value, offset) {\n return toBuffer(buffer).writeUInt32BE(value, offset)\n}\n\nfunction writeUInt32LE(buffer, value, offset) {\n return toBuffer(buffer).writeUInt32LE(value, offset)\n}\n\nmodule.exports = {\n isBuffer,\n isEncoding,\n alloc,\n allocUnsafe,\n allocUnsafeSlow,\n byteLength,\n compare,\n concat,\n copy,\n equals,\n fill,\n from,\n includes,\n indexOf,\n lastIndexOf,\n swap16,\n swap32,\n swap64,\n toBuffer,\n toString,\n write,\n readDoubleBE,\n readDoubleLE,\n readFloatBE,\n readFloatLE,\n readInt32BE,\n readInt32LE,\n readUInt32BE,\n readUInt32LE,\n writeDoubleBE,\n writeDoubleLE,\n writeFloatBE,\n writeFloatLE,\n writeInt32BE,\n writeInt32LE,\n writeUInt32BE,\n writeUInt32LE\n}\n","const b4a = require('b4a')\n\nmodule.exports = class PassThroughDecoder {\n constructor(encoding) {\n this.encoding = encoding\n }\n\n get remaining() {\n return 0\n }\n\n decode(data) {\n return b4a.toString(data, this.encoding)\n }\n\n flush() {\n return ''\n }\n}\n","const b4a = require('b4a')\n\n/**\n * https://encoding.spec.whatwg.org/#utf-8-decoder\n */\nmodule.exports = class UTF8Decoder {\n constructor() {\n this._reset()\n }\n\n get remaining() {\n return this.bytesSeen\n }\n\n decode(data) {\n if (data.byteLength === 0) return ''\n\n if (this.bytesNeeded === 0 && trailingIncomplete(data, 0) === 0) {\n this.bytesSeen = trailingBytesSeen(data)\n return b4a.toString(data, 'utf8')\n }\n\n let result = ''\n let start = 0\n\n if (this.bytesNeeded > 0) {\n while (start < data.byteLength) {\n const byte = data[start]\n\n if (byte < this.lowerBoundary || byte > this.upperBoundary) {\n result += '\\ufffd'\n this._reset()\n break\n }\n\n this.lowerBoundary = 0x80\n this.upperBoundary = 0xbf\n this.codePoint = (this.codePoint << 6) | (byte & 0x3f)\n this.bytesSeen++\n start++\n\n if (this.bytesSeen === this.bytesNeeded) {\n result += String.fromCodePoint(this.codePoint)\n this._reset()\n break\n }\n }\n\n if (this.bytesNeeded > 0) return result\n }\n\n const trailing = trailingIncomplete(data, start)\n const end = data.byteLength - trailing\n\n if (end > start) result += b4a.toString(data, 'utf8', start, end)\n\n for (let i = end; i < data.byteLength; i++) {\n const byte = data[i]\n\n if (this.bytesNeeded === 0) {\n if (byte <= 0x7f) {\n this.bytesSeen = 0\n result += String.fromCharCode(byte)\n } else if (byte >= 0xc2 && byte <= 0xdf) {\n this.bytesNeeded = 2\n this.bytesSeen = 1\n this.codePoint = byte & 0x1f\n } else if (byte >= 0xe0 && byte <= 0xef) {\n if (byte === 0xe0) this.lowerBoundary = 0xa0\n else if (byte === 0xed) this.upperBoundary = 0x9f\n this.bytesNeeded = 3\n this.bytesSeen = 1\n this.codePoint = byte & 0xf\n } else if (byte >= 0xf0 && byte <= 0xf4) {\n if (byte === 0xf0) this.lowerBoundary = 0x90\n else if (byte === 0xf4) this.upperBoundary = 0x8f\n this.bytesNeeded = 4\n this.bytesSeen = 1\n this.codePoint = byte & 0x7\n } else {\n this.bytesSeen = 1\n result += '\\ufffd'\n }\n\n continue\n }\n\n if (byte < this.lowerBoundary || byte > this.upperBoundary) {\n result += '\\ufffd'\n i--\n this._reset()\n\n continue\n }\n\n this.lowerBoundary = 0x80\n this.upperBoundary = 0xbf\n\n this.codePoint = (this.codePoint << 6) | (byte & 0x3f)\n this.bytesSeen++\n\n if (this.bytesSeen === this.bytesNeeded) {\n result += String.fromCodePoint(this.codePoint)\n this._reset()\n }\n }\n\n return result\n }\n\n flush() {\n const result = this.bytesNeeded > 0 ? '\\ufffd' : ''\n this._reset()\n return result\n }\n\n _reset() {\n this.codePoint = 0\n this.bytesNeeded = 0\n this.bytesSeen = 0\n this.lowerBoundary = 0x80\n this.upperBoundary = 0xbf\n }\n}\n\nfunction trailingIncomplete(data, start) {\n const len = data.byteLength\n if (len <= start) return 0\n\n const limit = Math.max(start, len - 4)\n\n let i = len - 1\n while (i > limit && (data[i] & 0xc0) === 0x80) i--\n\n if (i < start) return 0\n\n const byte = data[i]\n\n let needed\n if (byte <= 0x7f) return 0\n if (byte >= 0xc2 && byte <= 0xdf) needed = 2\n else if (byte >= 0xe0 && byte <= 0xef) needed = 3\n else if (byte >= 0xf0 && byte <= 0xf4) needed = 4\n else return 0\n\n const available = len - i\n return available < needed ? available : 0\n}\n\nfunction trailingBytesSeen(data) {\n const len = data.byteLength\n if (len === 0) return 0\n\n const last = data[len - 1]\n\n if (last <= 0x7f) return 0\n if ((last & 0xc0) !== 0x80) return 1\n\n const limit = Math.max(0, len - 4)\n\n let i = len - 2\n while (i >= limit && (data[i] & 0xc0) === 0x80) i--\n\n if (i < 0) return 1\n\n const first = data[i]\n\n let needed\n if (first >= 0xc2 && first <= 0xdf) needed = 2\n else if (first >= 0xe0 && first <= 0xef) needed = 3\n else if (first >= 0xf0 && first <= 0xf4) needed = 4\n else return 1\n\n if (len - i !== needed) return 1\n\n if (needed >= 3) {\n const second = data[i + 1]\n if (first === 0xe0 && second < 0xa0) return 1\n if (first === 0xed && second > 0x9f) return 1\n if (first === 0xf0 && second < 0x90) return 1\n if (first === 0xf4 && second > 0x8f) return 1\n }\n\n return 0\n}\n","const PassThroughDecoder = require('./lib/pass-through-decoder')\nconst UTF8Decoder = require('./lib/utf8-decoder')\n\nmodule.exports = class TextDecoder {\n constructor(encoding = 'utf8') {\n this.encoding = normalizeEncoding(encoding)\n\n switch (this.encoding) {\n case 'utf8':\n this.decoder = new UTF8Decoder()\n break\n case 'utf16le':\n case 'base64':\n throw new Error('Unsupported encoding: ' + this.encoding)\n default:\n this.decoder = new PassThroughDecoder(this.encoding)\n }\n }\n\n get remaining() {\n return this.decoder.remaining\n }\n\n push(data) {\n if (typeof data === 'string') return data\n return this.decoder.decode(data)\n }\n\n // For Node.js compatibility\n write(data) {\n return this.push(data)\n }\n\n end(data) {\n let result = ''\n if (data) result = this.push(data)\n result += this.decoder.flush()\n return result\n }\n}\n\nfunction normalizeEncoding(encoding) {\n encoding = encoding.toLowerCase()\n\n switch (encoding) {\n case 'utf8':\n case 'utf-8':\n return 'utf8'\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le'\n case 'latin1':\n case 'binary':\n return 'latin1'\n case 'base64':\n case 'ascii':\n case 'hex':\n return encoding\n default:\n throw new Error('Unknown encoding: ' + encoding)\n }\n}\n","const { EventEmitter } = require('events-universal')\nconst STREAM_DESTROYED = new Error('Stream was destroyed')\nconst PREMATURE_CLOSE = new Error('Premature close')\n\nconst FIFO = require('fast-fifo')\nconst TextDecoder = require('text-decoder')\n\n// if we do a future major, expect queue microtask to be there always, for now a bit defensive\nconst qmt =\n typeof queueMicrotask === 'undefined' ? (fn) => global.process.nextTick(fn) : queueMicrotask\n\n// 29 bits used total (4 from shared, 14 from read, and 11 from write)\nconst MAX = (1 << 29) - 1\n\n// Shared state\nconst OPENING = 0b0001\nconst PREDESTROYING = 0b0010\nconst DESTROYING = 0b0100\nconst DESTROYED = 0b1000\n\nconst NOT_OPENING = MAX ^ OPENING\nconst NOT_PREDESTROYING = MAX ^ PREDESTROYING\n\n// Read state (4 bit offset from shared state)\nconst READ_ACTIVE = 0b00000000000001 << 4\nconst READ_UPDATING = 0b00000000000010 << 4\nconst READ_PRIMARY = 0b00000000000100 << 4\nconst READ_QUEUED = 0b00000000001000 << 4\nconst READ_RESUMED = 0b00000000010000 << 4\nconst READ_PIPE_DRAINED = 0b00000000100000 << 4\nconst READ_ENDING = 0b00000001000000 << 4\nconst READ_EMIT_DATA = 0b00000010000000 << 4\nconst READ_EMIT_READABLE = 0b00000100000000 << 4\nconst READ_EMITTED_READABLE = 0b00001000000000 << 4\nconst READ_DONE = 0b00010000000000 << 4\nconst READ_NEXT_TICK = 0b00100000000000 << 4\nconst READ_NEEDS_PUSH = 0b01000000000000 << 4\nconst READ_READ_AHEAD = 0b10000000000000 << 4\n\n// Combined read state\nconst READ_FLOWING = READ_RESUMED | READ_PIPE_DRAINED\nconst READ_ACTIVE_AND_NEEDS_PUSH = READ_ACTIVE | READ_NEEDS_PUSH\nconst READ_PRIMARY_AND_ACTIVE = READ_PRIMARY | READ_ACTIVE\nconst READ_EMIT_READABLE_AND_QUEUED = READ_EMIT_READABLE | READ_QUEUED\nconst READ_RESUMED_READ_AHEAD = READ_RESUMED | READ_READ_AHEAD\n\nconst READ_NOT_ACTIVE = MAX ^ READ_ACTIVE\nconst READ_NON_PRIMARY = MAX ^ READ_PRIMARY\nconst READ_NON_PRIMARY_AND_PUSHED = MAX ^ (READ_PRIMARY | READ_NEEDS_PUSH)\nconst READ_PUSHED = MAX ^ READ_NEEDS_PUSH\nconst READ_PAUSED = MAX ^ READ_RESUMED\nconst READ_NOT_QUEUED = MAX ^ (READ_QUEUED | READ_EMITTED_READABLE)\nconst READ_NOT_ENDING = MAX ^ READ_ENDING\nconst READ_PIPE_NOT_DRAINED = MAX ^ READ_FLOWING\nconst READ_NOT_NEXT_TICK = MAX ^ READ_NEXT_TICK\nconst READ_NOT_UPDATING = MAX ^ READ_UPDATING\nconst READ_NO_READ_AHEAD = MAX ^ READ_READ_AHEAD\nconst READ_PAUSED_NO_READ_AHEAD = MAX ^ READ_RESUMED_READ_AHEAD\n\n// Write state (18 bit offset, 4 bit offset from shared state and 14 from read state)\nconst WRITE_ACTIVE = 0b00000000001 << 18\nconst WRITE_UPDATING = 0b00000000010 << 18\nconst WRITE_PRIMARY = 0b00000000100 << 18\nconst WRITE_QUEUED = 0b00000001000 << 18\nconst WRITE_UNDRAINED = 0b00000010000 << 18\nconst WRITE_DONE = 0b00000100000 << 18\nconst WRITE_EMIT_DRAIN = 0b00001000000 << 18\nconst WRITE_NEXT_TICK = 0b00010000000 << 18\nconst WRITE_WRITING = 0b00100000000 << 18\nconst WRITE_FINISHING = 0b01000000000 << 18\nconst WRITE_CORKED = 0b10000000000 << 18\n\nconst WRITE_NOT_ACTIVE = MAX ^ (WRITE_ACTIVE | WRITE_WRITING)\nconst WRITE_NON_PRIMARY = MAX ^ WRITE_PRIMARY\nconst WRITE_NOT_FINISHING = MAX ^ (WRITE_ACTIVE | WRITE_FINISHING)\nconst WRITE_DRAINED = MAX ^ WRITE_UNDRAINED\nconst WRITE_NOT_QUEUED = MAX ^ WRITE_QUEUED\nconst WRITE_NOT_NEXT_TICK = MAX ^ WRITE_NEXT_TICK\nconst WRITE_NOT_UPDATING = MAX ^ WRITE_UPDATING\nconst WRITE_NOT_CORKED = MAX ^ WRITE_CORKED\n\n// Combined shared state\nconst ACTIVE = READ_ACTIVE | WRITE_ACTIVE\nconst NOT_ACTIVE = MAX ^ ACTIVE\nconst DONE = READ_DONE | WRITE_DONE\nconst DESTROY_STATUS = DESTROYING | DESTROYED | PREDESTROYING\nconst OPEN_STATUS = DESTROY_STATUS | OPENING\nconst AUTO_DESTROY = DESTROY_STATUS | DONE\nconst NON_PRIMARY = WRITE_NON_PRIMARY & READ_NON_PRIMARY\nconst ACTIVE_OR_TICKING = WRITE_NEXT_TICK | READ_NEXT_TICK\nconst TICKING = ACTIVE_OR_TICKING & NOT_ACTIVE\nconst IS_OPENING = OPEN_STATUS | TICKING\n\n// Combined shared state and read state\nconst READ_PRIMARY_STATUS = OPEN_STATUS | READ_ENDING | READ_DONE\nconst READ_STATUS = OPEN_STATUS | READ_DONE | READ_QUEUED\nconst READ_ENDING_STATUS = OPEN_STATUS | READ_ENDING | READ_QUEUED\nconst READ_READABLE_STATUS = OPEN_STATUS | READ_EMIT_READABLE | READ_QUEUED | READ_EMITTED_READABLE\nconst SHOULD_NOT_READ =\n OPEN_STATUS | READ_ACTIVE | READ_ENDING | READ_DONE | READ_NEEDS_PUSH | READ_READ_AHEAD\nconst READ_BACKPRESSURE_STATUS = DESTROY_STATUS | READ_ENDING | READ_DONE\nconst READ_UPDATE_SYNC_STATUS = READ_UPDATING | OPEN_STATUS | READ_NEXT_TICK | READ_PRIMARY\nconst READ_NEXT_TICK_OR_OPENING = READ_NEXT_TICK | OPENING\n\n// Combined write state\nconst WRITE_PRIMARY_STATUS = OPEN_STATUS | WRITE_FINISHING | WRITE_DONE\nconst WRITE_QUEUED_AND_UNDRAINED = WRITE_QUEUED | WRITE_UNDRAINED\nconst WRITE_QUEUED_AND_ACTIVE = WRITE_QUEUED | WRITE_ACTIVE\nconst WRITE_DRAIN_STATUS = WRITE_QUEUED | WRITE_UNDRAINED | OPEN_STATUS | WRITE_ACTIVE\nconst WRITE_STATUS = OPEN_STATUS | WRITE_ACTIVE | WRITE_QUEUED | WRITE_CORKED\nconst WRITE_PRIMARY_AND_ACTIVE = WRITE_PRIMARY | WRITE_ACTIVE\nconst WRITE_ACTIVE_AND_WRITING = WRITE_ACTIVE | WRITE_WRITING\nconst WRITE_FINISHING_STATUS = OPEN_STATUS | WRITE_FINISHING | WRITE_QUEUED_AND_ACTIVE | WRITE_DONE\nconst WRITE_BACKPRESSURE_STATUS = WRITE_UNDRAINED | DESTROY_STATUS | WRITE_FINISHING | WRITE_DONE\nconst WRITE_UPDATE_SYNC_STATUS = WRITE_UPDATING | OPEN_STATUS | WRITE_NEXT_TICK | WRITE_PRIMARY\nconst WRITE_DROP_DATA = WRITE_FINISHING | WRITE_DONE | DESTROY_STATUS\n\nconst asyncIterator = Symbol.asyncIterator || Symbol('asyncIterator')\n\nclass WritableState {\n constructor(\n stream,\n { highWaterMark = 16384, map = null, mapWritable, byteLength, byteLengthWritable } = {}\n ) {\n this.stream = stream\n this.queue = new FIFO()\n this.highWaterMark = highWaterMark\n this.buffered = 0\n this.error = null\n this.pipeline = null\n this.drains = null // if we add more seldomly used helpers we might them into a subobject so its a single ptr\n this.byteLength = byteLengthWritable || byteLength || defaultByteLength\n this.map = mapWritable || map\n this.afterWrite = afterWrite.bind(this)\n this.afterUpdateNextTick = updateWriteNT.bind(this)\n }\n\n get ending() {\n return (this.stream._duplexState & WRITE_FINISHING) !== 0\n }\n\n get ended() {\n return (this.stream._duplexState & WRITE_DONE) !== 0\n }\n\n push(data) {\n if ((this.stream._duplexState & WRITE_DROP_DATA) !== 0) return false\n if (this.map !== null) data = this.map(data)\n\n this.buffered += this.byteLength(data)\n this.queue.push(data)\n\n if (this.buffered < this.highWaterMark) {\n this.stream._duplexState |= WRITE_QUEUED\n return true\n }\n\n this.stream._duplexState |= WRITE_QUEUED_AND_UNDRAINED\n return false\n }\n\n shift() {\n const data = this.queue.shift()\n\n this.buffered -= this.byteLength(data)\n if (this.buffered === 0) this.stream._duplexState &= WRITE_NOT_QUEUED\n\n return data\n }\n\n end(data) {\n if (typeof data === 'function') this.stream.once('finish', data)\n else if (data !== undefined && data !== null) this.push(data)\n this.stream._duplexState = (this.stream._duplexState | WRITE_FINISHING) & WRITE_NON_PRIMARY\n }\n\n autoBatch(data, cb) {\n const buffer = []\n const stream = this.stream\n\n buffer.push(data)\n while ((stream._duplexState & WRITE_STATUS) === WRITE_QUEUED_AND_ACTIVE) {\n buffer.push(stream._writableState.shift())\n }\n\n if ((stream._duplexState & OPEN_STATUS) !== 0) return cb(null)\n stream._writev(buffer, cb)\n }\n\n update() {\n const stream = this.stream\n\n stream._duplexState |= WRITE_UPDATING\n\n do {\n while ((stream._duplexState & WRITE_STATUS) === WRITE_QUEUED) {\n const data = this.shift()\n stream._duplexState |= WRITE_ACTIVE_AND_WRITING\n stream._write(data, this.afterWrite)\n }\n\n if ((stream._duplexState & WRITE_PRIMARY_AND_ACTIVE) === 0) this.updateNonPrimary()\n } while (this.continueUpdate() === true)\n\n stream._duplexState &= WRITE_NOT_UPDATING\n }\n\n updateNonPrimary() {\n const stream = this.stream\n\n if ((stream._duplexState & WRITE_FINISHING_STATUS) === WRITE_FINISHING) {\n stream._duplexState = stream._duplexState | WRITE_ACTIVE\n stream._final(afterFinal.bind(this))\n return\n }\n\n if ((stream._duplexState & DESTROY_STATUS) === DESTROYING) {\n if ((stream._duplexState & ACTIVE_OR_TICKING) === 0) {\n stream._duplexState |= ACTIVE\n stream._destroy(afterDestroy.bind(this))\n }\n return\n }\n\n if ((stream._duplexState & IS_OPENING) === OPENING) {\n stream._duplexState = (stream._duplexState | ACTIVE) & NOT_OPENING\n stream._open(afterOpen.bind(this))\n }\n }\n\n continueUpdate() {\n if ((this.stream._duplexState & WRITE_NEXT_TICK) === 0) return false\n this.stream._duplexState &= WRITE_NOT_NEXT_TICK\n return true\n }\n\n updateCallback() {\n if ((this.stream._duplexState & WRITE_UPDATE_SYNC_STATUS) === WRITE_PRIMARY) this.update()\n else this.updateNextTick()\n }\n\n updateNextTick() {\n if ((this.stream._duplexState & WRITE_NEXT_TICK) !== 0) return\n this.stream._duplexState |= WRITE_NEXT_TICK\n if ((this.stream._duplexState & WRITE_UPDATING) === 0) qmt(this.afterUpdateNextTick)\n }\n}\n\nclass ReadableState {\n constructor(\n stream,\n { highWaterMark = 16384, map = null, mapReadable, byteLength, byteLengthReadable } = {}\n ) {\n this.stream = stream\n this.queue = new FIFO()\n this.highWaterMark = highWaterMark === 0 ? 1 : highWaterMark\n this.buffered = 0\n this.readAhead = highWaterMark > 0\n this.error = null\n this.pipeline = null\n this.byteLength = byteLengthReadable || byteLength || defaultByteLength\n this.map = mapReadable || map\n this.pipeTo = null\n this.afterRead = afterRead.bind(this)\n this.afterUpdateNextTick = updateReadNT.bind(this)\n }\n\n get ending() {\n return (this.stream._duplexState & READ_ENDING) !== 0\n }\n\n get ended() {\n return (this.stream._duplexState & READ_DONE) !== 0\n }\n\n pipe(pipeTo, cb) {\n if (this.pipeTo !== null) throw new Error('Can only pipe to one destination')\n if (typeof cb !== 'function') cb = null\n\n this.stream._duplexState |= READ_PIPE_DRAINED\n this.pipeTo = pipeTo\n this.pipeline = new Pipeline(this.stream, pipeTo, cb)\n\n if (cb) this.stream.on('error', noop) // We already error handle this so supress crashes\n\n if (isStreamx(pipeTo)) {\n pipeTo._writableState.pipeline = this.pipeline\n if (cb) pipeTo.on('error', noop) // We already error handle this so supress crashes\n pipeTo.on('finish', this.pipeline.finished.bind(this.pipeline)) // TODO: just call finished from pipeTo itself\n } else {\n const onerror = this.pipeline.done.bind(this.pipeline, pipeTo)\n const onclose = this.pipeline.done.bind(this.pipeline, pipeTo, null) // onclose has a weird bool arg\n pipeTo.on('error', onerror)\n pipeTo.on('close', onclose)\n pipeTo.on('finish', this.pipeline.finished.bind(this.pipeline))\n }\n\n pipeTo.on('drain', afterDrain.bind(this))\n this.stream.emit('piping', pipeTo)\n pipeTo.emit('pipe', this.stream)\n }\n\n push(data) {\n const stream = this.stream\n\n if (data === null) {\n this.highWaterMark = 0\n stream._duplexState = (stream._duplexState | READ_ENDING) & READ_NON_PRIMARY_AND_PUSHED\n return false\n }\n\n if (this.map !== null) {\n data = this.map(data)\n if (data === null) {\n stream._duplexState &= READ_PUSHED\n return this.buffered < this.highWaterMark\n }\n }\n\n this.buffered += this.byteLength(data)\n this.queue.push(data)\n\n stream._duplexState = (stream._duplexState | READ_QUEUED) & READ_PUSHED\n\n return this.buffered < this.highWaterMark\n }\n\n shift() {\n const data = this.queue.shift()\n\n this.buffered -= this.byteLength(data)\n if (this.buffered === 0) this.stream._duplexState &= READ_NOT_QUEUED\n return data\n }\n\n unshift(data) {\n const pending = [this.map !== null ? this.map(data) : data]\n while (this.buffered > 0) pending.push(this.shift())\n\n for (let i = 0; i < pending.length - 1; i++) {\n const data = pending[i]\n this.buffered += this.byteLength(data)\n this.queue.push(data)\n }\n\n this.push(pending[pending.length - 1])\n }\n\n read() {\n const stream = this.stream\n\n if ((stream._duplexState & READ_STATUS) === READ_QUEUED) {\n const data = this.shift()\n if (this.pipeTo !== null && this.pipeTo.write(data) === false)\n stream._duplexState &= READ_PIPE_NOT_DRAINED\n if ((stream._duplexState & READ_EMIT_DATA) !== 0) stream.emit('data', data)\n return data\n }\n\n if (this.readAhead === false) {\n stream._duplexState |= READ_READ_AHEAD\n this.updateNextTick()\n }\n\n return null\n }\n\n drain() {\n const stream = this.stream\n\n while (\n (stream._duplexState & READ_STATUS) === READ_QUEUED &&\n (stream._duplexState & READ_FLOWING) !== 0\n ) {\n const data = this.shift()\n if (this.pipeTo !== null && this.pipeTo.write(data) === false)\n stream._duplexState &= READ_PIPE_NOT_DRAINED\n if ((stream._duplexState & READ_EMIT_DATA) !== 0) stream.emit('data', data)\n }\n }\n\n update() {\n const stream = this.stream\n\n stream._duplexState |= READ_UPDATING\n\n do {\n this.drain()\n\n while (\n this.buffered < this.highWaterMark &&\n (stream._duplexState & SHOULD_NOT_READ) === READ_READ_AHEAD\n ) {\n stream._duplexState |= READ_ACTIVE_AND_NEEDS_PUSH\n stream._read(this.afterRead)\n this.drain()\n }\n\n if ((stream._duplexState & READ_READABLE_STATUS) === READ_EMIT_READABLE_AND_QUEUED) {\n stream._duplexState |= READ_EMITTED_READABLE\n stream.emit('readable')\n }\n\n if ((stream._duplexState & READ_PRIMARY_AND_ACTIVE) === 0) this.updateNonPrimary()\n } while (this.continueUpdate() === true)\n\n stream._duplexState &= READ_NOT_UPDATING\n }\n\n updateNonPrimary() {\n const stream = this.stream\n\n if ((stream._duplexState & READ_ENDING_STATUS) === READ_ENDING) {\n stream._duplexState = (stream._duplexState | READ_DONE) & READ_NOT_ENDING\n stream.emit('end')\n if ((stream._duplexState & AUTO_DESTROY) === DONE) stream._duplexState |= DESTROYING\n if (this.pipeTo !== null) this.pipeTo.end()\n }\n\n if ((stream._duplexState & DESTROY_STATUS) === DESTROYING) {\n if ((stream._duplexState & ACTIVE_OR_TICKING) === 0) {\n stream._duplexState |= ACTIVE\n stream._destroy(afterDestroy.bind(this))\n }\n return\n }\n\n if ((stream._duplexState & IS_OPENING) === OPENING) {\n stream._duplexState = (stream._duplexState | ACTIVE) & NOT_OPENING\n stream._open(afterOpen.bind(this))\n }\n }\n\n continueUpdate() {\n if ((this.stream._duplexState & READ_NEXT_TICK) === 0) return false\n this.stream._duplexState &= READ_NOT_NEXT_TICK\n return true\n }\n\n updateCallback() {\n if ((this.stream._duplexState & READ_UPDATE_SYNC_STATUS) === READ_PRIMARY) this.update()\n else this.updateNextTick()\n }\n\n updateNextTickIfOpen() {\n if ((this.stream._duplexState & READ_NEXT_TICK_OR_OPENING) !== 0) return\n this.stream._duplexState |= READ_NEXT_TICK\n if ((this.stream._duplexState & READ_UPDATING) === 0) qmt(this.afterUpdateNextTick)\n }\n\n updateNextTick() {\n if ((this.stream._duplexState & READ_NEXT_TICK) !== 0) return\n this.stream._duplexState |= READ_NEXT_TICK\n if ((this.stream._duplexState & READ_UPDATING) === 0) qmt(this.afterUpdateNextTick)\n }\n}\n\nclass TransformState {\n constructor(stream) {\n this.data = null\n this.afterTransform = afterTransform.bind(stream)\n this.afterFinal = null\n }\n}\n\nclass Pipeline {\n constructor(src, dst, cb) {\n this.from = src\n this.to = dst\n this.afterPipe = cb\n this.error = null\n this.pipeToFinished = false\n }\n\n finished() {\n this.pipeToFinished = true\n }\n\n done(stream, err) {\n if (err) this.error = err\n\n if (stream === this.to) {\n this.to = null\n\n if (this.from !== null) {\n if ((this.from._duplexState & READ_DONE) === 0 || !this.pipeToFinished) {\n this.from.destroy(this.error || new Error('Writable stream closed prematurely'))\n }\n return\n }\n }\n\n if (stream === this.from) {\n this.from = null\n\n if (this.to !== null) {\n if ((stream._duplexState & READ_DONE) === 0) {\n this.to.destroy(this.error || new Error('Readable stream closed before ending'))\n }\n return\n }\n }\n\n if (this.afterPipe !== null) this.afterPipe(this.error)\n this.to = this.from = this.afterPipe = null\n }\n}\n\nfunction afterDrain() {\n this.stream._duplexState |= READ_PIPE_DRAINED\n this.updateCallback()\n}\n\nfunction afterFinal(err) {\n const stream = this.stream\n if (err) stream.destroy(err)\n if ((stream._duplexState & DESTROY_STATUS) === 0) {\n stream._duplexState |= WRITE_DONE\n stream.emit('finish')\n }\n if ((stream._duplexState & AUTO_DESTROY) === DONE) {\n stream._duplexState |= DESTROYING\n }\n\n stream._duplexState &= WRITE_NOT_FINISHING\n\n // no need to wait the extra tick here, so we short circuit that\n if ((stream._duplexState & WRITE_UPDATING) === 0) this.update()\n else this.updateNextTick()\n}\n\nfunction afterDestroy(err) {\n const stream = this.stream\n\n if (!err && this.error !== STREAM_DESTROYED) err = this.error\n if (err) stream.emit('error', err)\n stream._duplexState |= DESTROYED\n stream.emit('close')\n\n const rs = stream._readableState\n const ws = stream._writableState\n\n if (rs !== null && rs.pipeline !== null) rs.pipeline.done(stream, err)\n\n if (ws !== null) {\n while (ws.drains !== null && ws.drains.length > 0) ws.drains.shift().resolve(false)\n if (ws.pipeline !== null) ws.pipeline.done(stream, err)\n }\n}\n\nfunction afterWrite(err) {\n const stream = this.stream\n\n if (err) stream.destroy(err)\n stream._duplexState &= WRITE_NOT_ACTIVE\n\n if (this.drains !== null) tickDrains(this.drains)\n\n if ((stream._duplexState & WRITE_DRAIN_STATUS) === WRITE_UNDRAINED) {\n stream._duplexState &= WRITE_DRAINED\n if ((stream._duplexState & WRITE_EMIT_DRAIN) === WRITE_EMIT_DRAIN) {\n stream.emit('drain')\n }\n }\n\n this.updateCallback()\n}\n\nfunction afterRead(err) {\n if (err) this.stream.destroy(err)\n this.stream._duplexState &= READ_NOT_ACTIVE\n if (this.readAhead === false && (this.stream._duplexState & READ_RESUMED) === 0)\n this.stream._duplexState &= READ_NO_READ_AHEAD\n this.updateCallback()\n}\n\nfunction updateReadNT() {\n if ((this.stream._duplexState & READ_UPDATING) === 0) {\n this.stream._duplexState &= READ_NOT_NEXT_TICK\n this.update()\n }\n}\n\nfunction updateWriteNT() {\n if ((this.stream._duplexState & WRITE_UPDATING) === 0) {\n this.stream._duplexState &= WRITE_NOT_NEXT_TICK\n this.update()\n }\n}\n\nfunction tickDrains(drains) {\n for (let i = 0; i < drains.length; i++) {\n // drains.writes are monotonic, so if one is 0 its always the first one\n if (--drains[i].writes === 0) {\n drains.shift().resolve(true)\n i--\n }\n }\n}\n\nfunction afterOpen(err) {\n const stream = this.stream\n\n if (err) stream.destroy(err)\n\n if ((stream._duplexState & DESTROYING) === 0) {\n if ((stream._duplexState & READ_PRIMARY_STATUS) === 0) stream._duplexState |= READ_PRIMARY\n if ((stream._duplexState & WRITE_PRIMARY_STATUS) === 0) stream._duplexState |= WRITE_PRIMARY\n stream.emit('open')\n }\n\n stream._duplexState &= NOT_ACTIVE\n\n if (stream._writableState !== null) {\n stream._writableState.updateCallback()\n }\n\n if (stream._readableState !== null) {\n stream._readableState.updateCallback()\n }\n}\n\nfunction afterTransform(err, data) {\n if (data !== undefined && data !== null) this.push(data)\n this._writableState.afterWrite(err)\n}\n\nfunction newListener(name) {\n if (this._readableState !== null) {\n if (name === 'data') {\n this._duplexState |= READ_EMIT_DATA | READ_RESUMED_READ_AHEAD\n this._readableState.updateNextTick()\n }\n if (name === 'readable') {\n this._duplexState |= READ_EMIT_READABLE\n this._readableState.updateNextTick()\n }\n }\n\n if (this._writableState !== null) {\n if (name === 'drain') {\n this._duplexState |= WRITE_EMIT_DRAIN\n this._writableState.updateNextTick()\n }\n }\n}\n\nclass Stream extends EventEmitter {\n constructor(opts) {\n super()\n\n this._duplexState = 0\n this._readableState = null\n this._writableState = null\n\n if (opts) {\n if (opts.open) this._open = opts.open\n if (opts.destroy) this._destroy = opts.destroy\n if (opts.predestroy) this._predestroy = opts.predestroy\n if (opts.signal) {\n opts.signal.addEventListener('abort', abort.bind(this))\n }\n }\n\n this.on('newListener', newListener)\n }\n\n _open(cb) {\n cb(null)\n }\n\n _destroy(cb) {\n cb(null)\n }\n\n _predestroy() {\n // does nothing\n }\n\n get readable() {\n return this._readableState !== null ? true : undefined\n }\n\n get writable() {\n return this._writableState !== null ? true : undefined\n }\n\n get destroyed() {\n return (this._duplexState & DESTROYED) !== 0\n }\n\n get destroying() {\n return (this._duplexState & DESTROY_STATUS) !== 0\n }\n\n destroy(err) {\n if ((this._duplexState & DESTROY_STATUS) === 0) {\n if (!err) err = STREAM_DESTROYED\n this._duplexState = (this._duplexState | DESTROYING) & NON_PRIMARY\n\n if (this._readableState !== null) {\n this._readableState.highWaterMark = 0\n this._readableState.error = err\n }\n if (this._writableState !== null) {\n this._writableState.highWaterMark = 0\n this._writableState.error = err\n }\n\n this._duplexState |= PREDESTROYING\n this._predestroy()\n this._duplexState &= NOT_PREDESTROYING\n\n if (this._readableState !== null) this._readableState.updateNextTick()\n if (this._writableState !== null) this._writableState.updateNextTick()\n }\n }\n}\n\nclass Readable extends Stream {\n constructor(opts) {\n super(opts)\n\n this._duplexState |= OPENING | WRITE_DONE | READ_READ_AHEAD\n this._readableState = new ReadableState(this, opts)\n\n if (opts) {\n if (this._readableState.readAhead === false) this._duplexState &= READ_NO_READ_AHEAD\n if (opts.read) this._read = opts.read\n if (opts.eagerOpen) this._readableState.updateNextTick()\n if (opts.encoding) this.setEncoding(opts.encoding)\n }\n }\n\n setEncoding(encoding) {\n const dec = new TextDecoder(encoding)\n const map = this._readableState.map || echo\n this._readableState.map = mapOrSkip\n return this\n\n function mapOrSkip(data) {\n const next = dec.push(data)\n return next === '' && (data.byteLength !== 0 || dec.remaining > 0) ? null : map(next)\n }\n }\n\n _read(cb) {\n cb(null)\n }\n\n pipe(dest, cb) {\n this._readableState.updateNextTick()\n this._readableState.pipe(dest, cb)\n return dest\n }\n\n read() {\n this._readableState.updateNextTick()\n return this._readableState.read()\n }\n\n push(data) {\n this._readableState.updateNextTickIfOpen()\n return this._readableState.push(data)\n }\n\n unshift(data) {\n this._readableState.updateNextTickIfOpen()\n return this._readableState.unshift(data)\n }\n\n resume() {\n this._duplexState |= READ_RESUMED_READ_AHEAD\n this._readableState.updateNextTick()\n return this\n }\n\n pause() {\n this._duplexState &=\n this._readableState.readAhead === false ? READ_PAUSED_NO_READ_AHEAD : READ_PAUSED\n return this\n }\n\n static _fromAsyncIterator(ite, opts) {\n let destroy\n\n const rs = new Readable({\n ...opts,\n read(cb) {\n ite.next().then(push).then(cb.bind(null, null)).catch(cb)\n },\n predestroy() {\n destroy = ite.return()\n },\n destroy(cb) {\n if (!destroy) return cb(null)\n destroy.then(cb.bind(null, null)).catch(cb)\n }\n })\n\n return rs\n\n function push(data) {\n if (data.done) rs.push(null)\n else rs.push(data.value)\n }\n }\n\n static from(data, opts) {\n if (isReadStreamx(data)) return data\n if (data[asyncIterator]) return this._fromAsyncIterator(data[asyncIterator](), opts)\n if (!Array.isArray(data)) data = data === undefined ? [] : [data]\n\n let i = 0\n return new Readable({\n ...opts,\n read(cb) {\n this.push(i === data.length ? null : data[i++])\n cb(null)\n }\n })\n }\n\n static isBackpressured(rs) {\n return (\n (rs._duplexState & READ_BACKPRESSURE_STATUS) !== 0 ||\n rs._readableState.buffered >= rs._readableState.highWaterMark\n )\n }\n\n static isPaused(rs) {\n return (rs._duplexState & READ_RESUMED) === 0\n }\n\n [asyncIterator]() {\n const stream = this\n\n let error = null\n let promiseResolve = null\n let promiseReject = null\n\n this.on('error', (err) => {\n error = err\n })\n this.on('readable', onreadable)\n this.on('close', onclose)\n\n return {\n [asyncIterator]() {\n return this\n },\n next() {\n return new Promise(function (resolve, reject) {\n promiseResolve = resolve\n promiseReject = reject\n const data = stream.read()\n if (data !== null) ondata(data)\n else if ((stream._duplexState & DESTROYED) !== 0) ondata(null)\n })\n },\n return() {\n return destroy(null)\n },\n throw(err) {\n return destroy(err)\n }\n }\n\n function onreadable() {\n if (promiseResolve !== null) ondata(stream.read())\n }\n\n function onclose() {\n if (promiseResolve !== null) ondata(null)\n }\n\n function ondata(data) {\n if (promiseReject === null) return\n if (error) promiseReject(error)\n else if (data === null && (stream._duplexState & READ_DONE) === 0)\n promiseReject(STREAM_DESTROYED)\n else promiseResolve({ value: data, done: data === null })\n promiseReject = promiseResolve = null\n }\n\n function destroy(err) {\n stream.destroy(err)\n return new Promise((resolve, reject) => {\n if (stream._duplexState & DESTROYED) return resolve({ value: undefined, done: true })\n stream.once('close', function () {\n if (err) reject(err)\n else resolve({ value: undefined, done: true })\n })\n })\n }\n }\n}\n\nclass Writable extends Stream {\n constructor(opts) {\n super(opts)\n\n this._duplexState |= OPENING | READ_DONE\n this._writableState = new WritableState(this, opts)\n\n if (opts) {\n if (opts.writev) this._writev = opts.writev\n if (opts.write) this._write = opts.write\n if (opts.final) this._final = opts.final\n if (opts.eagerOpen) this._writableState.updateNextTick()\n }\n }\n\n cork() {\n this._duplexState |= WRITE_CORKED\n }\n\n uncork() {\n this._duplexState &= WRITE_NOT_CORKED\n this._writableState.updateNextTick()\n }\n\n _writev(batch, cb) {\n cb(null)\n }\n\n _write(data, cb) {\n this._writableState.autoBatch(data, cb)\n }\n\n _final(cb) {\n cb(null)\n }\n\n static isBackpressured(ws) {\n return (ws._duplexState & WRITE_BACKPRESSURE_STATUS) !== 0\n }\n\n static drained(ws) {\n if (ws.destroyed) return Promise.resolve(false)\n const state = ws._writableState\n const pending = isWritev(ws) ? Math.min(1, state.queue.length) : state.queue.length\n const writes = pending + (ws._duplexState & WRITE_WRITING ? 1 : 0)\n if (writes === 0) return Promise.resolve(true)\n if (state.drains === null) state.drains = []\n return new Promise((resolve) => {\n state.drains.push({ writes, resolve })\n })\n }\n\n write(data) {\n this._writableState.updateNextTick()\n return this._writableState.push(data)\n }\n\n end(data) {\n this._writableState.updateNextTick()\n this._writableState.end(data)\n return this\n }\n}\n\nclass Duplex extends Readable {\n // and Writable\n constructor(opts) {\n super(opts)\n\n this._duplexState = OPENING | (this._duplexState & READ_READ_AHEAD)\n this._writableState = new WritableState(this, opts)\n\n if (opts) {\n if (opts.writev) this._writev = opts.writev\n if (opts.write) this._write = opts.write\n if (opts.final) this._final = opts.final\n }\n }\n\n cork() {\n this._duplexState |= WRITE_CORKED\n }\n\n uncork() {\n this._duplexState &= WRITE_NOT_CORKED\n this._writableState.updateNextTick()\n }\n\n _writev(batch, cb) {\n cb(null)\n }\n\n _write(data, cb) {\n this._writableState.autoBatch(data, cb)\n }\n\n _final(cb) {\n cb(null)\n }\n\n write(data) {\n this._writableState.updateNextTick()\n return this._writableState.push(data)\n }\n\n end(data) {\n this._writableState.updateNextTick()\n this._writableState.end(data)\n return this\n }\n}\n\nclass Transform extends Duplex {\n constructor(opts) {\n super(opts)\n this._transformState = new TransformState(this)\n\n if (opts) {\n if (opts.transform) this._transform = opts.transform\n if (opts.flush) this._flush = opts.flush\n }\n }\n\n _write(data, cb) {\n if (this._readableState.buffered >= this._readableState.highWaterMark) {\n this._transformState.data = data\n } else {\n this._transform(data, this._transformState.afterTransform)\n }\n }\n\n _read(cb) {\n if (this._transformState.data !== null) {\n const data = this._transformState.data\n this._transformState.data = null\n cb(null)\n this._transform(data, this._transformState.afterTransform)\n } else {\n cb(null)\n }\n }\n\n destroy(err) {\n super.destroy(err)\n if (this._transformState.data !== null) {\n this._transformState.data = null\n this._transformState.afterTransform()\n }\n }\n\n _transform(data, cb) {\n cb(null, data)\n }\n\n _flush(cb) {\n cb(null)\n }\n\n _final(cb) {\n this._transformState.afterFinal = cb\n this._flush(transformAfterFlush.bind(this))\n }\n}\n\nclass PassThrough extends Transform {}\n\nfunction transformAfterFlush(err, data) {\n const cb = this._transformState.afterFinal\n if (err) return cb(err)\n if (data !== null && data !== undefined) this.push(data)\n this.push(null)\n cb(null)\n}\n\nfunction pipelinePromise(...streams) {\n return new Promise((resolve, reject) => {\n return pipeline(...streams, (err) => {\n if (err) return reject(err)\n resolve()\n })\n })\n}\n\nfunction pipeline(stream, ...streams) {\n const all = Array.isArray(stream) ? [...stream, ...streams] : [stream, ...streams]\n const done = all.length && typeof all[all.length - 1] === 'function' ? all.pop() : null\n\n if (all.length < 2) throw new Error('Pipeline requires at least 2 streams')\n\n let src = all[0]\n let dest = null\n let error = null\n\n for (let i = 1; i < all.length; i++) {\n dest = all[i]\n\n if (isStreamx(src)) {\n src.pipe(dest, onerror)\n } else {\n errorHandle(src, true, i > 1, onerror)\n src.pipe(dest)\n }\n\n src = dest\n }\n\n if (done) {\n let fin = false\n\n const autoDestroy =\n isStreamx(dest) || !!(dest._writableState && dest._writableState.autoDestroy)\n\n dest.on('error', (err) => {\n if (error === null) error = err\n })\n\n dest.on('finish', () => {\n fin = true\n if (!autoDestroy) done(error)\n })\n\n if (autoDestroy) {\n dest.on('close', () => done(error || (fin ? null : PREMATURE_CLOSE)))\n }\n }\n\n return dest\n\n function errorHandle(s, rd, wr, onerror) {\n s.on('error', onerror)\n s.on('close', onclose)\n\n function onclose() {\n if (rd && s._readableState && !s._readableState.ended) return onerror(PREMATURE_CLOSE)\n if (wr && s._writableState && !s._writableState.ended) return onerror(PREMATURE_CLOSE)\n }\n }\n\n function onerror(err) {\n if (!err || error) return\n error = err\n\n for (const s of all) {\n s.destroy(err)\n }\n }\n}\n\nfunction echo(s) {\n return s\n}\n\nfunction isStream(stream) {\n return !!stream._readableState || !!stream._writableState\n}\n\nfunction isStreamx(stream) {\n return typeof stream._duplexState === 'number' && isStream(stream)\n}\n\nfunction isEnding(stream) {\n return !!stream._readableState && stream._readableState.ending\n}\n\nfunction isEnded(stream) {\n return !!stream._readableState && stream._readableState.ended\n}\n\nfunction isFinishing(stream) {\n return !!stream._writableState && stream._writableState.ending\n}\n\nfunction isFinished(stream) {\n return !!stream._writableState && stream._writableState.ended\n}\n\nfunction getStreamError(stream, opts = {}) {\n const err =\n (stream._readableState && stream._readableState.error) ||\n (stream._writableState && stream._writableState.error)\n\n // avoid implicit errors by default\n return !opts.all && err === STREAM_DESTROYED ? null : err\n}\n\nfunction isReadStreamx(stream) {\n return isStreamx(stream) && stream.readable\n}\n\nfunction isDisturbed(stream) {\n return (\n (stream._duplexState & OPENING) !== OPENING ||\n (stream._duplexState & DESTROYING) === DESTROYING ||\n (stream._duplexState & ACTIVE_OR_TICKING) !== 0\n )\n}\n\nfunction isTypedArray(data) {\n return typeof data === 'object' && data !== null && typeof data.byteLength === 'number'\n}\n\nfunction defaultByteLength(data) {\n return isTypedArray(data) ? data.byteLength : 1024\n}\n\nfunction noop() {}\n\nfunction abort() {\n this.destroy(new Error('Stream aborted.'))\n}\n\nfunction isWritev(s) {\n return s._writev !== Writable.prototype._writev && s._writev !== Duplex.prototype._writev\n}\n\nmodule.exports = {\n pipeline,\n pipelinePromise,\n isStream,\n isStreamx,\n isEnding,\n isEnded,\n isFinishing,\n isFinished,\n isDisturbed,\n getStreamError,\n Stream,\n Writable,\n Readable,\n Duplex,\n Transform,\n // Export PassThrough for compatibility with Node.js core's stream module\n PassThrough\n}\n","const b4a = require('b4a')\n\nconst ZEROS = '0000000000000000000'\nconst SEVENS = '7777777777777777777'\nconst ZERO_OFFSET = '0'.charCodeAt(0)\nconst USTAR_MAGIC = b4a.from([0x75, 0x73, 0x74, 0x61, 0x72, 0x00]) // ustar\\x00\nconst USTAR_VER = b4a.from([ZERO_OFFSET, ZERO_OFFSET])\nconst GNU_MAGIC = b4a.from([0x75, 0x73, 0x74, 0x61, 0x72, 0x20]) // ustar\\x20\nconst GNU_VER = b4a.from([0x20, 0x00])\nconst MASK = 0o7777\nconst MAGIC_OFFSET = 257\nconst VERSION_OFFSET = 263\n\nexports.decodeLongPath = function decodeLongPath (buf, encoding) {\n return decodeStr(buf, 0, buf.length, encoding)\n}\n\nexports.encodePax = function encodePax (opts) { // TODO: encode more stuff in pax\n let result = ''\n if (opts.name) result += addLength(' path=' + opts.name + '\\n')\n if (opts.linkname) result += addLength(' linkpath=' + opts.linkname + '\\n')\n const pax = opts.pax\n if (pax) {\n for (const key in pax) {\n result += addLength(' ' + key + '=' + pax[key] + '\\n')\n }\n }\n return b4a.from(result)\n}\n\nexports.decodePax = function decodePax (buf) {\n const result = {}\n\n while (buf.length) {\n let i = 0\n while (i < buf.length && buf[i] !== 32) i++\n const len = parseInt(b4a.toString(buf.subarray(0, i)), 10)\n if (!len) return result\n\n const b = b4a.toString(buf.subarray(i + 1, len - 1))\n const keyIndex = b.indexOf('=')\n if (keyIndex === -1) return result\n result[b.slice(0, keyIndex)] = b.slice(keyIndex + 1)\n\n buf = buf.subarray(len)\n }\n\n return result\n}\n\nexports.encode = function encode (opts) {\n const buf = b4a.alloc(512)\n let name = opts.name\n let prefix = ''\n\n if (opts.typeflag === 5 && name[name.length - 1] !== '/') name += '/'\n if (b4a.byteLength(name) !== name.length) return null // utf-8\n\n while (b4a.byteLength(name) > 100) {\n const i = name.indexOf('/')\n if (i === -1) return null\n prefix += prefix ? '/' + name.slice(0, i) : name.slice(0, i)\n name = name.slice(i + 1)\n }\n\n if (b4a.byteLength(name) > 100 || b4a.byteLength(prefix) > 155) return null\n if (opts.linkname && b4a.byteLength(opts.linkname) > 100) return null\n\n b4a.write(buf, name)\n b4a.write(buf, encodeOct(opts.mode & MASK, 6), 100)\n b4a.write(buf, encodeOct(opts.uid, 6), 108)\n b4a.write(buf, encodeOct(opts.gid, 6), 116)\n encodeSize(opts.size, buf, 124)\n b4a.write(buf, encodeOct((opts.mtime.getTime() / 1000) | 0, 11), 136)\n\n buf[156] = ZERO_OFFSET + toTypeflag(opts.type)\n\n if (opts.linkname) b4a.write(buf, opts.linkname, 157)\n\n b4a.copy(USTAR_MAGIC, buf, MAGIC_OFFSET)\n b4a.copy(USTAR_VER, buf, VERSION_OFFSET)\n if (opts.uname) b4a.write(buf, opts.uname, 265)\n if (opts.gname) b4a.write(buf, opts.gname, 297)\n b4a.write(buf, encodeOct(opts.devmajor || 0, 6), 329)\n b4a.write(buf, encodeOct(opts.devminor || 0, 6), 337)\n\n if (prefix) b4a.write(buf, prefix, 345)\n\n b4a.write(buf, encodeOct(cksum(buf), 6), 148)\n\n return buf\n}\n\nexports.decode = function decode (buf, filenameEncoding, allowUnknownFormat) {\n let typeflag = buf[156] === 0 ? 0 : buf[156] - ZERO_OFFSET\n\n let name = decodeStr(buf, 0, 100, filenameEncoding)\n const mode = decodeOct(buf, 100, 8)\n const uid = decodeOct(buf, 108, 8)\n const gid = decodeOct(buf, 116, 8)\n const size = decodeOct(buf, 124, 12)\n const mtime = decodeOct(buf, 136, 12)\n const type = toType(typeflag)\n const linkname = buf[157] === 0 ? null : decodeStr(buf, 157, 100, filenameEncoding)\n const uname = decodeStr(buf, 265, 32)\n const gname = decodeStr(buf, 297, 32)\n const devmajor = decodeOct(buf, 329, 8)\n const devminor = decodeOct(buf, 337, 8)\n\n const c = cksum(buf)\n\n // checksum is still initial value if header was null.\n if (c === 8 * 32) return null\n\n // valid checksum\n if (c !== decodeOct(buf, 148, 8)) throw new Error('Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?')\n\n if (isUSTAR(buf)) {\n // ustar (posix) format.\n // prepend prefix, if present.\n if (buf[345]) name = decodeStr(buf, 345, 155, filenameEncoding) + '/' + name\n } else if (isGNU(buf)) {\n // 'gnu'/'oldgnu' format. Similar to ustar, but has support for incremental and\n // multi-volume tarballs.\n } else {\n if (!allowUnknownFormat) {\n throw new Error('Invalid tar header: unknown format.')\n }\n }\n\n // to support old tar versions that use trailing / to indicate dirs\n if (typeflag === 0 && name && name[name.length - 1] === '/') typeflag = 5\n\n return {\n name,\n mode,\n uid,\n gid,\n size,\n byteOffset: 0,\n mtime: new Date(1000 * mtime),\n type,\n linkname,\n uname,\n gname,\n devmajor,\n devminor,\n pax: null\n }\n}\n\nfunction isUSTAR (buf) {\n return b4a.equals(USTAR_MAGIC, buf.subarray(MAGIC_OFFSET, MAGIC_OFFSET + 6))\n}\n\nfunction isGNU (buf) {\n return b4a.equals(GNU_MAGIC, buf.subarray(MAGIC_OFFSET, MAGIC_OFFSET + 6)) &&\n b4a.equals(GNU_VER, buf.subarray(VERSION_OFFSET, VERSION_OFFSET + 2))\n}\n\nfunction clamp (index, len, defaultValue) {\n if (typeof index !== 'number') return defaultValue\n index = ~~index // Coerce to integer.\n if (index >= len) return len\n if (index >= 0) return index\n index += len\n if (index >= 0) return index\n return 0\n}\n\nfunction toType (flag) {\n switch (flag) {\n case 0:\n return 'file'\n case 1:\n return 'link'\n case 2:\n return 'symlink'\n case 3:\n return 'character-device'\n case 4:\n return 'block-device'\n case 5:\n return 'directory'\n case 6:\n return 'fifo'\n case 7:\n return 'contiguous-file'\n case 72:\n return 'pax-header'\n case 55:\n return 'pax-global-header'\n case 27:\n return 'gnu-long-link-path'\n case 28:\n case 30:\n return 'gnu-long-path'\n }\n\n return null\n}\n\nfunction toTypeflag (flag) {\n switch (flag) {\n case 'file':\n return 0\n case 'link':\n return 1\n case 'symlink':\n return 2\n case 'character-device':\n return 3\n case 'block-device':\n return 4\n case 'directory':\n return 5\n case 'fifo':\n return 6\n case 'contiguous-file':\n return 7\n case 'pax-header':\n return 72\n }\n\n return 0\n}\n\nfunction indexOf (block, num, offset, end) {\n for (; offset < end; offset++) {\n if (block[offset] === num) return offset\n }\n return end\n}\n\nfunction cksum (block) {\n let sum = 8 * 32\n for (let i = 0; i < 148; i++) sum += block[i]\n for (let j = 156; j < 512; j++) sum += block[j]\n return sum\n}\n\nfunction encodeOct (val, n) {\n val = val.toString(8)\n if (val.length > n) return SEVENS.slice(0, n) + ' '\n return ZEROS.slice(0, n - val.length) + val + ' '\n}\n\nfunction encodeSizeBin (num, buf, off) {\n buf[off] = 0x80\n for (let i = 11; i > 0; i--) {\n buf[off + i] = num & 0xff\n num = Math.floor(num / 0x100)\n }\n}\n\nfunction encodeSize (num, buf, off) {\n if (num.toString(8).length > 11) {\n encodeSizeBin(num, buf, off)\n } else {\n b4a.write(buf, encodeOct(num, 11), off)\n }\n}\n\n/* Copied from the node-tar repo and modified to meet\n * tar-stream coding standard.\n *\n * Source: https://github.com/npm/node-tar/blob/51b6627a1f357d2eb433e7378e5f05e83b7aa6cd/lib/header.js#L349\n */\nfunction parse256 (buf) {\n // first byte MUST be either 80 or FF\n // 80 for positive, FF for 2's comp\n let positive\n if (buf[0] === 0x80) positive = true\n else if (buf[0] === 0xFF) positive = false\n else return null\n\n // build up a base-256 tuple from the least sig to the highest\n const tuple = []\n let i\n for (i = buf.length - 1; i > 0; i--) {\n const byte = buf[i]\n if (positive) tuple.push(byte)\n else tuple.push(0xFF - byte)\n }\n\n let sum = 0\n const l = tuple.length\n for (i = 0; i < l; i++) {\n sum += tuple[i] * Math.pow(256, i)\n }\n\n return positive ? sum : -1 * sum\n}\n\nfunction decodeOct (val, offset, length) {\n val = val.subarray(offset, offset + length)\n offset = 0\n\n // If prefixed with 0x80 then parse as a base-256 integer\n if (val[offset] & 0x80) {\n return parse256(val)\n } else {\n // Older versions of tar can prefix with spaces\n while (offset < val.length && val[offset] === 32) offset++\n const end = clamp(indexOf(val, 32, offset, val.length), val.length, val.length)\n while (offset < end && val[offset] === 0) offset++\n if (end === offset) return 0\n return parseInt(b4a.toString(val.subarray(offset, end)), 8)\n }\n}\n\nfunction decodeStr (val, offset, length, encoding) {\n return b4a.toString(val.subarray(offset, indexOf(val, 0, offset, offset + length)), encoding)\n}\n\nfunction addLength (str) {\n const len = b4a.byteLength(str)\n let digits = Math.floor(Math.log(len) / Math.log(10)) + 1\n if (len + digits >= Math.pow(10, digits)) digits++\n\n return (len + digits) + str\n}\n","const { Writable, Readable, getStreamError } = require('streamx')\nconst FIFO = require('fast-fifo')\nconst b4a = require('b4a')\nconst headers = require('./headers')\n\nconst EMPTY = b4a.alloc(0)\nconst MAX_HEADER_SIZE = 4 * 1024 * 1024 // arbitrary big number\n\nclass BufferList {\n constructor () {\n this.buffered = 0\n this.shifted = 0\n this.queue = new FIFO()\n\n this._offset = 0\n }\n\n push (buffer) {\n this.buffered += buffer.byteLength\n this.queue.push(buffer)\n }\n\n shiftFirst (size) {\n return this.buffered === 0 ? null : this._next(size)\n }\n\n shift (size) {\n if (size > this.buffered) return null\n if (size === 0) return EMPTY\n\n let chunk = this._next(size)\n\n if (size === chunk.byteLength) return chunk // likely case\n\n const chunks = [chunk]\n\n while ((size -= chunk.byteLength) > 0) {\n chunk = this._next(size)\n chunks.push(chunk)\n }\n\n return b4a.concat(chunks)\n }\n\n _next (size) {\n const buf = this.queue.peek()\n const rem = buf.byteLength - this._offset\n\n if (size >= rem) {\n const sub = this._offset ? buf.subarray(this._offset, buf.byteLength) : buf\n this.queue.shift()\n this._offset = 0\n this.buffered -= rem\n this.shifted += rem\n return sub\n }\n\n this.buffered -= size\n this.shifted += size\n\n return buf.subarray(this._offset, (this._offset += size))\n }\n}\n\nclass Source extends Readable {\n constructor (self, header, offset) {\n super()\n\n this.header = header\n this.offset = offset\n\n this._parent = self\n }\n\n _read (cb) {\n if (this.header.size === 0) {\n this.push(null)\n }\n if (this._parent._stream === this) {\n this._parent._update()\n }\n cb(null)\n }\n\n _predestroy () {\n this._parent.destroy(getStreamError(this))\n }\n\n _detach () {\n if (this._parent._stream === this) {\n this._parent._stream = null\n this._parent._missing = overflow(this.header.size)\n this._parent._update()\n }\n }\n\n _destroy (cb) {\n this._detach()\n cb(null)\n }\n}\n\nclass Extract extends Writable {\n constructor (opts) {\n super(opts)\n\n if (!opts) opts = {}\n\n this._buffer = new BufferList()\n this._offset = 0\n this._header = null\n this._stream = null\n this._missing = 0\n this._longHeader = false\n this._callback = noop\n this._locked = false\n this._finished = false\n this._pax = null\n this._paxGlobal = null\n this._gnuLongPath = null\n this._gnuLongLinkPath = null\n this._filenameEncoding = opts.filenameEncoding || 'utf-8'\n this._allowUnknownFormat = !!opts.allowUnknownFormat\n this._unlockBound = this._unlock.bind(this)\n }\n\n _unlock (err) {\n this._locked = false\n\n if (err) {\n this.destroy(err)\n this._continueWrite(err)\n return\n }\n\n this._update()\n }\n\n _consumeHeader () {\n if (this._locked) return false\n\n this._offset = this._buffer.shifted\n\n try {\n this._header = headers.decode(this._buffer.shift(512), this._filenameEncoding, this._allowUnknownFormat)\n } catch (err) {\n this._continueWrite(err)\n return false\n }\n\n if (!this._header) return true\n\n this._header.byteOffset = this._buffer.shifted\n\n switch (this._header.type) {\n case 'gnu-long-path':\n case 'gnu-long-link-path':\n case 'pax-global-header':\n case 'pax-header':\n this._longHeader = true\n this._missing = this._header.size\n if (this._missing > MAX_HEADER_SIZE) {\n this._continueWrite(new Error('Header exceeds max size'))\n return false\n }\n return true\n }\n\n this._locked = true\n this._applyLongHeaders()\n\n if (!(this._header.size >= 0)) {\n this._continueWrite(new Error('Invalid header'))\n return false\n }\n\n if (this._header.size === 0 || this._header.type === 'directory') {\n this.emit('entry', this._header, this._createStream(), this._unlockBound)\n return true\n }\n\n this._stream = this._createStream()\n this._missing = this._header.size\n\n this.emit('entry', this._header, this._stream, this._unlockBound)\n return true\n }\n\n _applyLongHeaders () {\n if (this._gnuLongPath) {\n this._header.name = this._gnuLongPath\n this._gnuLongPath = null\n }\n\n if (this._gnuLongLinkPath) {\n this._header.linkname = this._gnuLongLinkPath\n this._gnuLongLinkPath = null\n }\n\n if (this._pax) {\n if (this._pax.path) this._header.name = this._pax.path\n if (this._pax.linkpath) this._header.linkname = this._pax.linkpath\n if (this._pax.size) this._header.size = parseInt(this._pax.size, 10)\n this._header.pax = this._pax\n this._pax = null\n }\n }\n\n _decodeLongHeader (buf) {\n switch (this._header.type) {\n case 'gnu-long-path':\n this._gnuLongPath = headers.decodeLongPath(buf, this._filenameEncoding)\n break\n case 'gnu-long-link-path':\n this._gnuLongLinkPath = headers.decodeLongPath(buf, this._filenameEncoding)\n break\n case 'pax-global-header':\n this._paxGlobal = headers.decodePax(buf)\n break\n case 'pax-header':\n this._pax = this._paxGlobal === null\n ? headers.decodePax(buf)\n : Object.assign({}, this._paxGlobal, headers.decodePax(buf))\n break\n }\n }\n\n _consumeLongHeader () {\n this._longHeader = false\n this._missing = overflow(this._header.size)\n\n const buf = this._buffer.shift(this._header.size)\n\n try {\n this._decodeLongHeader(buf)\n } catch (err) {\n this._continueWrite(err)\n return false\n }\n\n return true\n }\n\n _consumeStream () {\n const buf = this._buffer.shiftFirst(this._missing)\n if (buf === null) return false\n\n this._missing -= buf.byteLength\n const drained = this._stream.push(buf)\n\n if (this._missing === 0) {\n this._stream.push(null)\n if (drained) this._stream._detach()\n return drained && this._locked === false\n }\n\n return drained\n }\n\n _createStream () {\n return new Source(this, this._header, this._offset)\n }\n\n _update () {\n while (this._buffer.buffered > 0 && !this.destroying) {\n if (this._missing > 0) {\n if (this._stream !== null) {\n if (this._consumeStream() === false) return\n continue\n }\n\n if (this._longHeader === true) {\n if (this._missing > this._buffer.buffered) break\n if (this._consumeLongHeader() === false) return false\n continue\n }\n\n const ignore = this._buffer.shiftFirst(this._missing)\n if (ignore !== null) this._missing -= ignore.byteLength\n continue\n }\n\n if (this._buffer.buffered < 512) break\n if (this._stream !== null || this._consumeHeader() === false) return\n }\n\n this._continueWrite(null)\n }\n\n _continueWrite (err) {\n const cb = this._callback\n this._callback = noop\n cb(err)\n }\n\n _write (data, cb) {\n this._callback = cb\n this._buffer.push(data)\n this._update()\n }\n\n _final (cb) {\n this._finished = this._missing === 0 && this._buffer.buffered === 0\n cb(this._finished ? null : new Error('Unexpected end of data'))\n }\n\n _predestroy () {\n this._continueWrite(null)\n }\n\n _destroy (cb) {\n if (this._stream) this._stream.destroy(getStreamError(this))\n cb(null)\n }\n\n [Symbol.asyncIterator] () {\n let error = null\n\n let promiseResolve = null\n let promiseReject = null\n\n let entryStream = null\n let entryCallback = null\n\n const extract = this\n\n this.on('entry', onentry)\n this.on('error', (err) => { error = err })\n this.on('close', onclose)\n\n return {\n [Symbol.asyncIterator] () {\n return this\n },\n next () {\n return new Promise(onnext)\n },\n return () {\n return destroy(null)\n },\n throw (err) {\n return destroy(err)\n }\n }\n\n function consumeCallback (err) {\n if (!entryCallback) return\n const cb = entryCallback\n entryCallback = null\n cb(err)\n }\n\n function onnext (resolve, reject) {\n if (error) {\n return reject(error)\n }\n\n if (entryStream) {\n resolve({ value: entryStream, done: false })\n entryStream = null\n return\n }\n\n promiseResolve = resolve\n promiseReject = reject\n\n consumeCallback(null)\n\n if (extract._finished && promiseResolve) {\n promiseResolve({ value: undefined, done: true })\n promiseResolve = promiseReject = null\n }\n }\n\n function onentry (header, stream, callback) {\n entryCallback = callback\n stream.on('error', noop) // no way around this due to tick sillyness\n\n if (promiseResolve) {\n promiseResolve({ value: stream, done: false })\n promiseResolve = promiseReject = null\n } else {\n entryStream = stream\n }\n }\n\n function onclose () {\n consumeCallback(error)\n if (!promiseResolve) return\n if (error) promiseReject(error)\n else promiseResolve({ value: undefined, done: true })\n promiseResolve = promiseReject = null\n }\n\n function destroy (err) {\n extract.destroy(err)\n consumeCallback(err)\n return new Promise((resolve, reject) => {\n if (extract.destroyed) return resolve({ value: undefined, done: true })\n extract.once('close', function () {\n if (err) reject(err)\n else resolve({ value: undefined, done: true })\n })\n })\n }\n }\n}\n\nmodule.exports = function extract (opts) {\n return new Extract(opts)\n}\n\nfunction noop () {}\n\nfunction overflow (size) {\n size &= 511\n return size && 512 - size\n}\n","const constants = { // just for envs without fs\n S_IFMT: 61440,\n S_IFDIR: 16384,\n S_IFCHR: 8192,\n S_IFBLK: 24576,\n S_IFIFO: 4096,\n S_IFLNK: 40960\n}\n\ntry {\n module.exports = require('fs').constants || constants\n} catch {\n module.exports = constants\n}\n","const { Readable, Writable, getStreamError } = require('streamx')\nconst b4a = require('b4a')\n\nconst constants = require('./constants')\nconst headers = require('./headers')\n\nconst DMODE = 0o755\nconst FMODE = 0o644\n\nconst END_OF_TAR = b4a.alloc(1024)\n\nclass Sink extends Writable {\n constructor (pack, header, callback) {\n super({ mapWritable, eagerOpen: true })\n\n this.written = 0\n this.header = header\n\n this._callback = callback\n this._linkname = null\n this._isLinkname = header.type === 'symlink' && !header.linkname\n this._isVoid = header.type !== 'file' && header.type !== 'contiguous-file'\n this._finished = false\n this._pack = pack\n this._openCallback = null\n\n if (this._pack._stream === null) this._pack._stream = this\n else this._pack._pending.push(this)\n }\n\n _open (cb) {\n this._openCallback = cb\n if (this._pack._stream === this) this._continueOpen()\n }\n\n _continuePack (err) {\n if (this._callback === null) return\n\n const callback = this._callback\n this._callback = null\n\n callback(err)\n }\n\n _continueOpen () {\n if (this._pack._stream === null) this._pack._stream = this\n\n const cb = this._openCallback\n this._openCallback = null\n if (cb === null) return\n\n if (this._pack.destroying) return cb(new Error('pack stream destroyed'))\n if (this._pack._finalized) return cb(new Error('pack stream is already finalized'))\n\n this._pack._stream = this\n\n if (!this._isLinkname) {\n this._pack._encode(this.header)\n }\n\n if (this._isVoid) {\n this._finish()\n this._continuePack(null)\n }\n\n cb(null)\n }\n\n _write (data, cb) {\n if (this._isLinkname) {\n this._linkname = this._linkname ? b4a.concat([this._linkname, data]) : data\n return cb(null)\n }\n\n if (this._isVoid) {\n if (data.byteLength > 0) {\n return cb(new Error('No body allowed for this entry'))\n }\n return cb()\n }\n\n this.written += data.byteLength\n if (this._pack.push(data)) return cb()\n this._pack._drain = cb\n }\n\n _finish () {\n if (this._finished) return\n this._finished = true\n\n if (this._isLinkname) {\n this.header.linkname = this._linkname ? b4a.toString(this._linkname, 'utf-8') : ''\n this._pack._encode(this.header)\n }\n\n overflow(this._pack, this.header.size)\n\n this._pack._done(this)\n }\n\n _final (cb) {\n if (this.written !== this.header.size) { // corrupting tar\n return cb(new Error('Size mismatch'))\n }\n\n this._finish()\n cb(null)\n }\n\n _getError () {\n return getStreamError(this) || new Error('tar entry destroyed')\n }\n\n _predestroy () {\n this._pack.destroy(this._getError())\n }\n\n _destroy (cb) {\n this._pack._done(this)\n\n this._continuePack(this._finished ? null : this._getError())\n\n cb()\n }\n}\n\nclass Pack extends Readable {\n constructor (opts) {\n super(opts)\n this._drain = noop\n this._finalized = false\n this._finalizing = false\n this._pending = []\n this._stream = null\n }\n\n entry (header, buffer, callback) {\n if (this._finalized || this.destroying) throw new Error('already finalized or destroyed')\n\n if (typeof buffer === 'function') {\n callback = buffer\n buffer = null\n }\n\n if (!callback) callback = noop\n\n if (!header.size || header.type === 'symlink') header.size = 0\n if (!header.type) header.type = modeToType(header.mode)\n if (!header.mode) header.mode = header.type === 'directory' ? DMODE : FMODE\n if (!header.uid) header.uid = 0\n if (!header.gid) header.gid = 0\n if (!header.mtime) header.mtime = new Date()\n\n if (typeof buffer === 'string') buffer = b4a.from(buffer)\n\n const sink = new Sink(this, header, callback)\n\n if (b4a.isBuffer(buffer)) {\n header.size = buffer.byteLength\n sink.write(buffer)\n sink.end()\n return sink\n }\n\n if (sink._isVoid) {\n return sink\n }\n\n return sink\n }\n\n finalize () {\n if (this._stream || this._pending.length > 0) {\n this._finalizing = true\n return\n }\n\n if (this._finalized) return\n this._finalized = true\n\n this.push(END_OF_TAR)\n this.push(null)\n }\n\n _done (stream) {\n if (stream !== this._stream) return\n\n this._stream = null\n\n if (this._finalizing) this.finalize()\n if (this._pending.length) this._pending.shift()._continueOpen()\n }\n\n _encode (header) {\n if (!header.pax) {\n const buf = headers.encode(header)\n if (buf) {\n this.push(buf)\n return\n }\n }\n this._encodePax(header)\n }\n\n _encodePax (header) {\n const paxHeader = headers.encodePax({\n name: header.name,\n linkname: header.linkname,\n pax: header.pax\n })\n\n const newHeader = {\n name: 'PaxHeader',\n mode: header.mode,\n uid: header.uid,\n gid: header.gid,\n size: paxHeader.byteLength,\n mtime: header.mtime,\n type: 'pax-header',\n linkname: header.linkname && 'PaxHeader',\n uname: header.uname,\n gname: header.gname,\n devmajor: header.devmajor,\n devminor: header.devminor\n }\n\n this.push(headers.encode(newHeader))\n this.push(paxHeader)\n overflow(this, paxHeader.byteLength)\n\n newHeader.size = header.size\n newHeader.type = header.type\n this.push(headers.encode(newHeader))\n }\n\n _doDrain () {\n const drain = this._drain\n this._drain = noop\n drain()\n }\n\n _predestroy () {\n const err = getStreamError(this)\n\n if (this._stream) this._stream.destroy(err)\n\n while (this._pending.length) {\n const stream = this._pending.shift()\n stream.destroy(err)\n stream._continueOpen()\n }\n\n this._doDrain()\n }\n\n _read (cb) {\n this._doDrain()\n cb()\n }\n}\n\nmodule.exports = function pack (opts) {\n return new Pack(opts)\n}\n\nfunction modeToType (mode) {\n switch (mode & constants.S_IFMT) {\n case constants.S_IFBLK: return 'block-device'\n case constants.S_IFCHR: return 'character-device'\n case constants.S_IFDIR: return 'directory'\n case constants.S_IFIFO: return 'fifo'\n case constants.S_IFLNK: return 'symlink'\n }\n\n return 'file'\n}\n\nfunction noop () {}\n\nfunction overflow (self, size) {\n size &= 511\n if (size) self.push(END_OF_TAR.subarray(0, 512 - size))\n}\n\nfunction mapWritable (buf) {\n return b4a.isBuffer(buf) ? buf : b4a.from(buf)\n}\n","exports.extract = require('./extract')\nexports.pack = require('./pack')\n","module.exports = Pend;\n\nfunction Pend() {\n this.pending = 0;\n this.max = Infinity;\n this.listeners = [];\n this.waiting = [];\n this.error = null;\n}\n\nPend.prototype.go = function(fn) {\n if (this.pending < this.max) {\n pendGo(this, fn);\n } else {\n this.waiting.push(fn);\n }\n};\n\nPend.prototype.wait = function(cb) {\n if (this.pending === 0) {\n cb(this.error);\n } else {\n this.listeners.push(cb);\n }\n};\n\nPend.prototype.hold = function() {\n return pendHold(this);\n};\n\nfunction pendHold(self) {\n self.pending += 1;\n var called = false;\n return onCb;\n function onCb(err) {\n if (called) throw new Error(\"callback called twice\");\n called = true;\n self.error = self.error || err;\n self.pending -= 1;\n if (self.waiting.length > 0 && self.pending < self.max) {\n pendGo(self, self.waiting.shift());\n } else if (self.pending === 0) {\n var listeners = self.listeners;\n self.listeners = [];\n listeners.forEach(cbListener);\n }\n }\n function cbListener(listener) {\n listener(self.error);\n }\n}\n\nfunction pendGo(self, fn) {\n fn(pendHold(self));\n}\n","// This was adapted from https://github.com/andrewrk/node-fd-slicer by Andrew Kelley under the MIT License.\nvar fs = require('fs');\nvar util = require('util');\nvar stream = require('stream');\nvar Readable = stream.Readable;\nvar Writable = stream.Writable;\nvar PassThrough = stream.PassThrough;\nvar Pend = require('pend');\nvar EventEmitter = require('events').EventEmitter;\n\nexports.createFromBuffer = createFromBuffer;\nexports.createFromFd = createFromFd;\nexports.BufferSlicer = BufferSlicer;\nexports.FdSlicer = FdSlicer;\n\nutil.inherits(FdSlicer, EventEmitter);\nfunction FdSlicer(fd, options) {\n options = options || {};\n EventEmitter.call(this);\n\n this.fd = fd;\n this.pend = new Pend();\n this.pend.max = 1;\n this.refCount = 0;\n this.autoClose = !!options.autoClose;\n}\n\nFdSlicer.prototype.read = function(buffer, offset, length, position, callback) {\n var self = this;\n self.pend.go(function(cb) {\n fs.read(self.fd, buffer, offset, length, position, function(err, bytesRead, buffer) {\n cb();\n callback(err, bytesRead, buffer);\n });\n });\n};\n\nFdSlicer.prototype.write = function(buffer, offset, length, position, callback) {\n var self = this;\n self.pend.go(function(cb) {\n fs.write(self.fd, buffer, offset, length, position, function(err, written, buffer) {\n cb();\n callback(err, written, buffer);\n });\n });\n};\n\nFdSlicer.prototype.createReadStream = function(options) {\n return new ReadStream(this, options);\n};\n\nFdSlicer.prototype.createWriteStream = function(options) {\n return new WriteStream(this, options);\n};\n\nFdSlicer.prototype.ref = function() {\n this.refCount += 1;\n};\n\nFdSlicer.prototype.unref = function() {\n var self = this;\n self.refCount -= 1;\n\n if (self.refCount > 0) return;\n if (self.refCount < 0) throw new Error(\"invalid unref\");\n\n if (self.autoClose) {\n fs.close(self.fd, onCloseDone);\n }\n\n function onCloseDone(err) {\n if (err) {\n self.emit('error', err);\n } else {\n self.emit('close');\n }\n }\n};\n\nutil.inherits(ReadStream, Readable);\nfunction ReadStream(context, options) {\n options = options || {};\n Readable.call(this, options);\n\n this.context = context;\n this.context.ref();\n\n this.start = options.start || 0;\n this.endOffset = options.end;\n this.pos = this.start;\n this.destroyed = false;\n}\n\nReadStream.prototype._read = function(n) {\n var self = this;\n if (self.destroyed) return;\n\n var toRead = Math.min(self._readableState.highWaterMark, n);\n if (self.endOffset != null) {\n toRead = Math.min(toRead, self.endOffset - self.pos);\n }\n if (toRead <= 0) {\n self.destroyed = true;\n self.push(null);\n self.context.unref();\n return;\n }\n self.context.pend.go(function(cb) {\n if (self.destroyed) return cb();\n var buffer = Buffer.allocUnsafe(toRead);\n fs.read(self.context.fd, buffer, 0, toRead, self.pos, function(err, bytesRead) {\n if (err) {\n self.destroy(err);\n } else if (bytesRead === 0) {\n self.destroyed = true;\n self.push(null);\n self.context.unref();\n } else {\n self.pos += bytesRead;\n self.push(buffer.slice(0, bytesRead));\n }\n cb();\n });\n });\n};\n\nReadStream.prototype.destroy = function(err) {\n if (this.destroyed) return;\n err = err || new Error(\"stream destroyed\");\n this.destroyed = true;\n this.emit('error', err);\n this.context.unref();\n};\n\nutil.inherits(WriteStream, Writable);\nfunction WriteStream(context, options) {\n options = options || {};\n Writable.call(this, options);\n\n this.context = context;\n this.context.ref();\n\n this.start = options.start || 0;\n this.endOffset = (options.end == null) ? Infinity : +options.end;\n this.bytesWritten = 0;\n this.pos = this.start;\n this.destroyed = false;\n\n this.on('finish', this.destroy.bind(this));\n}\n\nWriteStream.prototype._write = function(buffer, encoding, callback) {\n var self = this;\n if (self.destroyed) return;\n\n if (self.pos + buffer.length > self.endOffset) {\n var err = new Error(\"maximum file length exceeded\");\n err.code = 'ETOOBIG';\n self.destroy();\n callback(err);\n return;\n }\n self.context.pend.go(function(cb) {\n if (self.destroyed) return cb();\n fs.write(self.context.fd, buffer, 0, buffer.length, self.pos, function(err, bytes) {\n if (err) {\n self.destroy();\n cb();\n callback(err);\n } else {\n self.bytesWritten += bytes;\n self.pos += bytes;\n self.emit('progress');\n cb();\n callback();\n }\n });\n });\n};\n\nWriteStream.prototype.destroy = function() {\n if (this.destroyed) return;\n this.destroyed = true;\n this.context.unref();\n};\n\nutil.inherits(BufferSlicer, EventEmitter);\nfunction BufferSlicer(buffer, options) {\n EventEmitter.call(this);\n\n options = options || {};\n this.refCount = 0;\n this.buffer = buffer;\n this.maxChunkSize = options.maxChunkSize || Number.MAX_SAFE_INTEGER;\n}\n\nBufferSlicer.prototype.read = function(buffer, offset, length, position, callback) {\n if (!(0 <= offset && offset <= buffer.length)) throw new RangeError(\"offset outside buffer: 0 <= \" + offset + \" <= \" + buffer.length);\n if (position < 0) throw new RangeError(\"position is negative: \" + position);\n if (offset + length > buffer.length) {\n // The caller's buffer can't hold all the bytes they're trying to read.\n // Clamp the length instead of giving an error.\n // The callback will be informed of fewer than expected bytes written.\n length = buffer.length - offset;\n }\n if (position + length > this.buffer.length) {\n // Clamp any attempt to read past the end of the source buffer.\n length = this.buffer.length - position;\n }\n if (length <= 0) {\n // After any clamping, we're fully out of bounds or otherwise have nothing to do.\n // This isn't an error; it's just zero bytes written.\n setImmediate(function() {\n callback(null, 0);\n });\n return;\n }\n this.buffer.copy(buffer, offset, position, position + length);\n setImmediate(function() {\n callback(null, length);\n });\n};\n\nBufferSlicer.prototype.write = function(buffer, offset, length, position, callback) {\n buffer.copy(this.buffer, position, offset, offset + length);\n setImmediate(function() {\n callback(null, length, buffer);\n });\n};\n\nBufferSlicer.prototype.createReadStream = function(options) {\n options = options || {};\n var readStream = new PassThrough(options);\n readStream.destroyed = false;\n readStream.start = options.start || 0;\n readStream.endOffset = options.end;\n // by the time this function returns, we'll be done.\n readStream.pos = readStream.endOffset || this.buffer.length;\n\n // respect the maxChunkSize option to slice up the chunk into smaller pieces.\n var entireSlice = this.buffer.slice(readStream.start, readStream.pos);\n var offset = 0;\n while (true) {\n var nextOffset = offset + this.maxChunkSize;\n if (nextOffset >= entireSlice.length) {\n // last chunk\n if (offset < entireSlice.length) {\n readStream.write(entireSlice.slice(offset, entireSlice.length));\n }\n break;\n }\n readStream.write(entireSlice.slice(offset, nextOffset));\n offset = nextOffset;\n }\n\n readStream.end();\n readStream.destroy = function() {\n readStream.destroyed = true;\n };\n return readStream;\n};\n\nBufferSlicer.prototype.createWriteStream = function(options) {\n var bufferSlicer = this;\n options = options || {};\n var writeStream = new Writable(options);\n writeStream.start = options.start || 0;\n writeStream.endOffset = (options.end == null) ? this.buffer.length : +options.end;\n writeStream.bytesWritten = 0;\n writeStream.pos = writeStream.start;\n writeStream.destroyed = false;\n writeStream._write = function(buffer, encoding, callback) {\n if (writeStream.destroyed) return;\n\n var end = writeStream.pos + buffer.length;\n if (end > writeStream.endOffset) {\n var err = new Error(\"maximum file length exceeded\");\n err.code = 'ETOOBIG';\n writeStream.destroyed = true;\n callback(err);\n return;\n }\n buffer.copy(bufferSlicer.buffer, writeStream.pos, 0, buffer.length);\n\n writeStream.bytesWritten += buffer.length;\n writeStream.pos = end;\n writeStream.emit('progress');\n callback();\n };\n writeStream.destroy = function() {\n writeStream.destroyed = true;\n };\n return writeStream;\n};\n\nBufferSlicer.prototype.ref = function() {\n this.refCount += 1;\n};\n\nBufferSlicer.prototype.unref = function() {\n this.refCount -= 1;\n\n if (this.refCount < 0) {\n throw new Error(\"invalid unref\");\n }\n};\n\nfunction createFromBuffer(buffer, options) {\n return new BufferSlicer(buffer, options);\n}\n\nfunction createFromFd(fd, options) {\n return new FdSlicer(fd, options);\n}\n","var Buffer = require('buffer').Buffer;\n\nvar CRC_TABLE = [\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,\n 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,\n 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,\n 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,\n 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,\n 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,\n 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,\n 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,\n 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,\n 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,\n 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,\n 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,\n 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,\n 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,\n 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,\n 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,\n 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,\n 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,\n 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,\n 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,\n 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,\n 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,\n 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,\n 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,\n 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,\n 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,\n 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,\n 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,\n 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,\n 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,\n 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,\n 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,\n 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,\n 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,\n 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,\n 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,\n 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,\n 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,\n 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,\n 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,\n 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,\n 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,\n 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,\n 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,\n 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,\n 0x2d02ef8d\n];\n\nif (typeof Int32Array !== 'undefined') {\n CRC_TABLE = new Int32Array(CRC_TABLE);\n}\n\nfunction ensureBuffer(input) {\n if (Buffer.isBuffer(input)) {\n return input;\n }\n\n var hasNewBufferAPI =\n typeof Buffer.alloc === \"function\" &&\n typeof Buffer.from === \"function\";\n\n if (typeof input === \"number\") {\n return hasNewBufferAPI ? Buffer.alloc(input) : new Buffer(input);\n }\n else if (typeof input === \"string\") {\n return hasNewBufferAPI ? Buffer.from(input) : new Buffer(input);\n }\n else {\n throw new Error(\"input must be buffer, number, or string, received \" +\n typeof input);\n }\n}\n\nfunction bufferizeInt(num) {\n var tmp = ensureBuffer(4);\n tmp.writeInt32BE(num, 0);\n return tmp;\n}\n\nfunction _crc32(buf, previous) {\n buf = ensureBuffer(buf);\n if (Buffer.isBuffer(previous)) {\n previous = previous.readUInt32BE(0);\n }\n var crc = ~~previous ^ -1;\n for (var n = 0; n < buf.length; n++) {\n crc = CRC_TABLE[(crc ^ buf[n]) & 0xff] ^ (crc >>> 8);\n }\n return (crc ^ -1);\n}\n\nfunction crc32() {\n return bufferizeInt(_crc32.apply(null, arguments));\n}\ncrc32.signed = function () {\n return _crc32.apply(null, arguments);\n};\ncrc32.unsigned = function () {\n return _crc32.apply(null, arguments) >>> 0;\n};\n\nmodule.exports = crc32;\n","var fs = require(\"fs\");\nvar zlib = require(\"zlib\");\nvar fd_slicer = require(\"./fd-slicer\");\nvar crc32 = require(\"buffer-crc32\");\nvar util = require(\"util\");\nvar EventEmitter = require(\"events\").EventEmitter;\nvar Transform = require(\"stream\").Transform;\nvar PassThrough = require(\"stream\").PassThrough;\nvar Writable = require(\"stream\").Writable;\n\nexports.open = open;\nexports.fromFd = fromFd;\nexports.fromBuffer = fromBuffer;\nexports.fromRandomAccessReader = fromRandomAccessReader;\nexports.dosDateTimeToDate = dosDateTimeToDate;\nexports.getFileNameLowLevel = getFileNameLowLevel;\nexports.validateFileName = validateFileName;\nexports.parseExtraFields = parseExtraFields;\nexports.ZipFile = ZipFile;\nexports.Entry = Entry;\nexports.LocalFileHeader = LocalFileHeader;\nexports.RandomAccessReader = RandomAccessReader;\n\nfunction open(path, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = null;\n }\n if (options == null) options = {};\n if (options.autoClose == null) options.autoClose = true;\n if (options.lazyEntries == null) options.lazyEntries = false;\n if (options.decodeStrings == null) options.decodeStrings = true;\n if (options.validateEntrySizes == null) options.validateEntrySizes = true;\n if (options.strictFileNames == null) options.strictFileNames = false;\n if (callback == null) callback = defaultCallback;\n fs.open(path, \"r\", function(err, fd) {\n if (err) return callback(err);\n fromFd(fd, options, function(err, zipfile) {\n if (err) fs.close(fd, defaultCallback);\n callback(err, zipfile);\n });\n });\n}\n\nfunction fromFd(fd, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = null;\n }\n if (options == null) options = {};\n if (options.autoClose == null) options.autoClose = false;\n if (options.lazyEntries == null) options.lazyEntries = false;\n if (options.decodeStrings == null) options.decodeStrings = true;\n if (options.validateEntrySizes == null) options.validateEntrySizes = true;\n if (options.strictFileNames == null) options.strictFileNames = false;\n if (callback == null) callback = defaultCallback;\n fs.fstat(fd, function(err, stats) {\n if (err) return callback(err);\n var reader = fd_slicer.createFromFd(fd, {autoClose: true});\n fromRandomAccessReader(reader, stats.size, options, callback);\n });\n}\n\nfunction fromBuffer(buffer, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = null;\n }\n if (options == null) options = {};\n options.autoClose = false;\n if (options.lazyEntries == null) options.lazyEntries = false;\n if (options.decodeStrings == null) options.decodeStrings = true;\n if (options.validateEntrySizes == null) options.validateEntrySizes = true;\n if (options.strictFileNames == null) options.strictFileNames = false;\n // limit the max chunk size. see https://github.com/thejoshwolfe/yauzl/issues/87\n var reader = fd_slicer.createFromBuffer(buffer, {maxChunkSize: 0x10000});\n fromRandomAccessReader(reader, buffer.length, options, callback);\n}\n\nfunction fromRandomAccessReader(reader, totalSize, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = null;\n }\n if (options == null) options = {};\n if (options.autoClose == null) options.autoClose = true;\n if (options.lazyEntries == null) options.lazyEntries = false;\n if (options.decodeStrings == null) options.decodeStrings = true;\n var decodeStrings = !!options.decodeStrings;\n if (options.validateEntrySizes == null) options.validateEntrySizes = true;\n if (options.strictFileNames == null) options.strictFileNames = false;\n if (callback == null) callback = defaultCallback;\n if (typeof totalSize !== \"number\") throw new Error(\"expected totalSize parameter to be a number\");\n if (totalSize > Number.MAX_SAFE_INTEGER) {\n throw new Error(\"zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double.\");\n }\n\n // the matching unref() call is in zipfile.close()\n reader.ref();\n\n // eocdr means End of Central Directory Record.\n // search backwards for the eocdr signature.\n // the last field of the eocdr is a variable-length comment.\n // the comment size is encoded in a 2-byte field in the eocdr, which we can't find without trudging backwards through the comment to find it.\n // as a consequence of this design decision, it's possible to have ambiguous zip file metadata if a coherent eocdr was in the comment.\n // we search backwards for a eocdr signature, and hope that whoever made the zip file was smart enough to forbid the eocdr signature in the comment.\n var eocdrWithoutCommentSize = 22;\n var zip64EocdlSize = 20; // Zip64 end of central directory locator\n var maxCommentSize = 0xffff; // 2-byte size\n var bufferSize = Math.min(zip64EocdlSize + eocdrWithoutCommentSize + maxCommentSize, totalSize);\n var buffer = newBuffer(bufferSize);\n var bufferReadStart = totalSize - buffer.length;\n readAndAssertNoEof(reader, buffer, 0, bufferSize, bufferReadStart, function(err) {\n if (err) return callback(err);\n for (var i = bufferSize - eocdrWithoutCommentSize; i >= 0; i -= 1) {\n if (buffer.readUInt32LE(i) !== 0x06054b50) continue;\n // found eocdr\n var eocdrBuffer = buffer.subarray(i);\n\n // 0 - End of central directory signature = 0x06054b50\n // 4 - Number of this disk\n var diskNumber = eocdrBuffer.readUInt16LE(4);\n // 6 - Disk where central directory starts\n // 8 - Number of central directory records on this disk\n // 10 - Total number of central directory records\n var entryCount = eocdrBuffer.readUInt16LE(10);\n // 12 - Size of central directory (bytes)\n // 16 - Offset of start of central directory, relative to start of archive\n var centralDirectoryOffset = eocdrBuffer.readUInt32LE(16);\n // 20 - Comment length\n var commentLength = eocdrBuffer.readUInt16LE(20);\n var expectedCommentLength = eocdrBuffer.length - eocdrWithoutCommentSize;\n if (commentLength !== expectedCommentLength) {\n return callback(new Error(\"Invalid comment length. Expected: \" + expectedCommentLength + \". Found: \" + commentLength + \". Are there extra bytes at the end of the file? Or is the end of central dir signature `PK☺☻` in the comment?\"));\n }\n // 22 - Comment\n // the encoding is always cp437.\n var comment = decodeStrings ? decodeBuffer(eocdrBuffer.subarray(22), false)\n : eocdrBuffer.subarray(22);\n\n // Look for a Zip64 end of central directory locator\n if (i - zip64EocdlSize >= 0 && buffer.readUInt32LE(i - zip64EocdlSize) === 0x07064b50) {\n // ZIP64 format\n var zip64EocdlBuffer = buffer.subarray(i - zip64EocdlSize, i - zip64EocdlSize + zip64EocdlSize);\n // 0 - zip64 end of central dir locator signature = 0x07064b50\n // 4 - number of the disk with the start of the zip64 end of central directory\n // 8 - relative offset of the zip64 end of central directory record\n var zip64EocdrOffset = readUInt64LE(zip64EocdlBuffer, 8);\n // 16 - total number of disks\n\n // ZIP64 end of central directory record\n var zip64EocdrBuffer = newBuffer(56);\n return readAndAssertNoEof(reader, zip64EocdrBuffer, 0, zip64EocdrBuffer.length, zip64EocdrOffset, function(err) {\n if (err) return callback(err);\n\n // 0 - zip64 end of central dir signature 4 bytes (0x06064b50)\n if (zip64EocdrBuffer.readUInt32LE(0) !== 0x06064b50) {\n return callback(new Error(\"invalid zip64 end of central directory record signature\"));\n }\n // 4 - size of zip64 end of central directory record 8 bytes\n // 12 - version made by 2 bytes\n // 14 - version needed to extract 2 bytes\n // 16 - number of this disk 4 bytes\n diskNumber = zip64EocdrBuffer.readUInt32LE(16);\n if (diskNumber !== 0) {\n // Check this only after zip64 overrides. See #118.\n return callback(new Error(\"multi-disk zip files are not supported: found disk number: \" + diskNumber));\n }\n // 20 - number of the disk with the start of the central directory 4 bytes\n // 24 - total number of entries in the central directory on this disk 8 bytes\n // 32 - total number of entries in the central directory 8 bytes\n entryCount = readUInt64LE(zip64EocdrBuffer, 32);\n // 40 - size of the central directory 8 bytes\n // 48 - offset of start of central directory with respect to the starting disk number 8 bytes\n centralDirectoryOffset = readUInt64LE(zip64EocdrBuffer, 48);\n // 56 - zip64 extensible data sector (variable size)\n return callback(null, new ZipFile(reader, centralDirectoryOffset, totalSize, entryCount, comment, options.autoClose, options.lazyEntries, decodeStrings, options.validateEntrySizes, options.strictFileNames));\n });\n }\n\n // Not ZIP64 format\n if (diskNumber !== 0) {\n return callback(new Error(\"multi-disk zip files are not supported: found disk number: \" + diskNumber));\n }\n return callback(null, new ZipFile(reader, centralDirectoryOffset, totalSize, entryCount, comment, options.autoClose, options.lazyEntries, decodeStrings, options.validateEntrySizes, options.strictFileNames));\n\n }\n\n // Not a zip file.\n callback(new Error(\"End of central directory record signature not found. Either not a zip file, or file is truncated.\"));\n });\n}\n\nutil.inherits(ZipFile, EventEmitter);\nfunction ZipFile(reader, centralDirectoryOffset, fileSize, entryCount, comment, autoClose, lazyEntries, decodeStrings, validateEntrySizes, strictFileNames) {\n var self = this;\n EventEmitter.call(self);\n self.reader = reader;\n // forward close events\n self.reader.on(\"error\", function(err) {\n // error closing the fd\n emitError(self, err);\n });\n self.reader.once(\"close\", function() {\n self.emit(\"close\");\n });\n self.readEntryCursor = centralDirectoryOffset;\n self.fileSize = fileSize;\n self.entryCount = entryCount;\n self.comment = comment;\n self.entriesRead = 0;\n self.autoClose = !!autoClose;\n self.lazyEntries = !!lazyEntries;\n self.decodeStrings = !!decodeStrings;\n self.validateEntrySizes = !!validateEntrySizes;\n self.strictFileNames = !!strictFileNames;\n self.isOpen = true;\n self.emittedError = false;\n\n if (!self.lazyEntries) self._readEntry();\n}\nZipFile.prototype.close = function() {\n if (!this.isOpen) return;\n this.isOpen = false;\n this.reader.unref();\n};\n\nfunction emitErrorAndAutoClose(self, err) {\n if (self.autoClose) self.close();\n emitError(self, err);\n}\nfunction emitError(self, err) {\n if (self.emittedError) return;\n self.emittedError = true;\n self.emit(\"error\", err);\n}\n\nZipFile.prototype.readEntry = function() {\n if (!this.lazyEntries) throw new Error(\"readEntry() called without lazyEntries:true\");\n this._readEntry();\n};\nZipFile.prototype._readEntry = function() {\n var self = this;\n if (self.entryCount === self.entriesRead) {\n // done with metadata\n setImmediate(function() {\n if (self.autoClose) self.close();\n if (self.emittedError) return;\n self.emit(\"end\");\n });\n return;\n }\n if (self.emittedError) return;\n var buffer = newBuffer(46);\n readAndAssertNoEof(self.reader, buffer, 0, buffer.length, self.readEntryCursor, function(err) {\n if (err) return emitErrorAndAutoClose(self, err);\n if (self.emittedError) return;\n var entry = new Entry();\n // 0 - Central directory file header signature\n var signature = buffer.readUInt32LE(0);\n if (signature !== 0x02014b50) return emitErrorAndAutoClose(self, new Error(\"invalid central directory file header signature: 0x\" + signature.toString(16)));\n // 4 - Version made by\n entry.versionMadeBy = buffer.readUInt16LE(4);\n // 6 - Version needed to extract (minimum)\n entry.versionNeededToExtract = buffer.readUInt16LE(6);\n // 8 - General purpose bit flag\n entry.generalPurposeBitFlag = buffer.readUInt16LE(8);\n // 10 - Compression method\n entry.compressionMethod = buffer.readUInt16LE(10);\n // 12 - File last modification time\n entry.lastModFileTime = buffer.readUInt16LE(12);\n // 14 - File last modification date\n entry.lastModFileDate = buffer.readUInt16LE(14);\n // 16 - CRC-32\n entry.crc32 = buffer.readUInt32LE(16);\n // 20 - Compressed size\n entry.compressedSize = buffer.readUInt32LE(20);\n // 24 - Uncompressed size\n entry.uncompressedSize = buffer.readUInt32LE(24);\n // 28 - File name length (n)\n entry.fileNameLength = buffer.readUInt16LE(28);\n // 30 - Extra field length (m)\n entry.extraFieldLength = buffer.readUInt16LE(30);\n // 32 - File comment length (k)\n entry.fileCommentLength = buffer.readUInt16LE(32);\n // 34 - Disk number where file starts\n // 36 - Internal file attributes\n entry.internalFileAttributes = buffer.readUInt16LE(36);\n // 38 - External file attributes\n entry.externalFileAttributes = buffer.readUInt32LE(38);\n // 42 - Relative offset of local file header\n entry.relativeOffsetOfLocalHeader = buffer.readUInt32LE(42);\n\n if (entry.generalPurposeBitFlag & 0x40) return emitErrorAndAutoClose(self, new Error(\"strong encryption is not supported\"));\n\n self.readEntryCursor += 46;\n\n buffer = newBuffer(entry.fileNameLength + entry.extraFieldLength + entry.fileCommentLength);\n readAndAssertNoEof(self.reader, buffer, 0, buffer.length, self.readEntryCursor, function(err) {\n if (err) return emitErrorAndAutoClose(self, err);\n if (self.emittedError) return;\n // 46 - File name\n entry.fileNameRaw = buffer.subarray(0, entry.fileNameLength);\n // 46+n - Extra field\n var fileCommentStart = entry.fileNameLength + entry.extraFieldLength;\n entry.extraFieldRaw = buffer.subarray(entry.fileNameLength, fileCommentStart);\n // 46+n+m - File comment\n entry.fileCommentRaw = buffer.subarray(fileCommentStart, fileCommentStart + entry.fileCommentLength);\n\n // Parse the extra fields, which we need for processing other fields.\n try {\n entry.extraFields = parseExtraFields(entry.extraFieldRaw);\n } catch (err) {\n return emitErrorAndAutoClose(self, err);\n }\n\n // Interpret strings according to bit flags, extra fields, and options.\n if (self.decodeStrings) {\n var isUtf8 = (entry.generalPurposeBitFlag & 0x800) !== 0;\n entry.fileComment = decodeBuffer(entry.fileCommentRaw, isUtf8);\n entry.fileName = getFileNameLowLevel(entry.generalPurposeBitFlag, entry.fileNameRaw, entry.extraFields, self.strictFileNames);\n var errorMessage = validateFileName(entry.fileName);\n if (errorMessage != null) return emitErrorAndAutoClose(self, new Error(errorMessage));\n } else {\n entry.fileComment = entry.fileCommentRaw;\n entry.fileName = entry.fileNameRaw;\n }\n // Maintain API compatibility. See https://github.com/thejoshwolfe/yauzl/issues/47\n entry.comment = entry.fileComment;\n\n self.readEntryCursor += buffer.length;\n self.entriesRead += 1;\n\n // Check for the Zip64 Extended Information Extra Field.\n for (var i = 0; i < entry.extraFields.length; i++) {\n var extraField = entry.extraFields[i];\n if (extraField.id !== 0x0001) continue;\n // Found it.\n\n var zip64EiefBuffer = extraField.data;\n var index = 0;\n // 0 - Original Size 8 bytes\n if (entry.uncompressedSize === 0xffffffff) {\n if (index + 8 > zip64EiefBuffer.length) {\n return emitErrorAndAutoClose(self, new Error(\"zip64 extended information extra field does not include uncompressed size\"));\n }\n entry.uncompressedSize = readUInt64LE(zip64EiefBuffer, index);\n index += 8;\n }\n // 8 - Compressed Size 8 bytes\n if (entry.compressedSize === 0xffffffff) {\n if (index + 8 > zip64EiefBuffer.length) {\n return emitErrorAndAutoClose(self, new Error(\"zip64 extended information extra field does not include compressed size\"));\n }\n entry.compressedSize = readUInt64LE(zip64EiefBuffer, index);\n index += 8;\n }\n // 16 - Relative Header Offset 8 bytes\n if (entry.relativeOffsetOfLocalHeader === 0xffffffff) {\n if (index + 8 > zip64EiefBuffer.length) {\n return emitErrorAndAutoClose(self, new Error(\"zip64 extended information extra field does not include relative header offset\"));\n }\n entry.relativeOffsetOfLocalHeader = readUInt64LE(zip64EiefBuffer, index);\n index += 8;\n }\n // 24 - Disk Start Number 4 bytes\n\n break;\n }\n\n // validate file size\n if (self.validateEntrySizes && entry.compressionMethod === 0) {\n var expectedCompressedSize = entry.uncompressedSize;\n if (entry.isEncrypted()) {\n // traditional encryption prefixes the file data with a header\n expectedCompressedSize += 12;\n }\n if (entry.compressedSize !== expectedCompressedSize) {\n var msg = \"compressed/uncompressed size mismatch for stored file: \" + entry.compressedSize + \" != \" + entry.uncompressedSize;\n return emitErrorAndAutoClose(self, new Error(msg));\n }\n }\n\n self.emit(\"entry\", entry);\n\n if (!self.lazyEntries) self._readEntry();\n });\n });\n};\n\nZipFile.prototype.openReadStream = function(entry, options, callback) {\n var self = this;\n // parameter validation\n var relativeStart = 0;\n var relativeEnd = entry.compressedSize;\n if (callback == null) {\n callback = options;\n options = null;\n }\n if (options == null) {\n options = {};\n } else {\n if (options.decodeFileData === false) {\n // new, simple option\n if (options.decrypt != null) {\n throw new Error(\"cannot use options.decrypt when options.decodeFileData === false\");\n }\n if (options.decompress != null) {\n throw new Error(\"cannot use options.decompress when options.decodeFileData === false\");\n }\n // start and end are allowed\n } else {\n // old, complicated options\n if (options.decrypt != null) {\n if (!entry.isEncrypted()) {\n throw new Error(\"options.decrypt can only be specified for encrypted entries. See also option decodeFileData.\");\n }\n if (options.decrypt !== false) throw new Error(\"invalid options.decrypt value: \" + options.decrypt);\n if (entry.isCompressed()) {\n if (options.decompress !== false) throw new Error(\"entry is encrypted and compressed, and options.decompress !== false. See also option decodeFileData.\");\n }\n }\n if (options.decompress != null) {\n if (!entry.isCompressed()) {\n throw new Error(\"options.decompress can only be specified for compressed entries. See also option decodeFileData.\");\n }\n if (!(options.decompress === false || options.decompress === true)) {\n throw new Error(\"invalid options.decompress value: \" + options.decompress);\n }\n decompress = options.decompress;\n }\n }\n if (options.start != null) {\n relativeStart = options.start;\n if (relativeStart < 0) throw new Error(\"options.start < 0\");\n if (relativeStart > entry.compressedSize) throw new Error(\"options.start > entry.compressedSize\");\n }\n if (options.end != null) {\n relativeEnd = options.end;\n if (relativeEnd < 0) throw new Error(\"options.end < 0\");\n if (relativeEnd > entry.compressedSize) throw new Error(\"options.end > entry.compressedSize\");\n if (relativeEnd < relativeStart) throw new Error(\"options.end < options.start\");\n }\n }\n var rawMode = (\n options.decodeFileData === false || // Explicitly requested raw.\n (\n (entry.compressionMethod === 0 || // Naturally without compression.\n (entry.compressionMethod === 8 && options.decompress === false) // Deprecated compression bypass option.\n ) &&\n (!entry.isEncrypted() || // Naturally without encryption.\n options.decrypt === false // Deprecated encryption bypass option.\n )\n )\n );\n if (options.start != null || options.end != null) {\n // Ensure slicing deals with raw data.\n if (!rawMode) throw new Error(\"start/end range require options.decodeFileData === false for non-trivial encoded entries.\");\n }\n\n // any further errors can either be caused by the zipfile,\n // or were introduced in a minor version of yauzl,\n // so should be passed to the client rather than thrown.\n if (!self.isOpen) return callback(new Error(\"closed\"));\n if (entry.isEncrypted() && !rawMode) {\n if (options.decrypt !== false) return callback(new Error(\"entry is encrypted, and options.decodeFileData !== false\"));\n }\n var decompress;\n if (rawMode) {\n decompress = false;\n } else if (entry.compressionMethod === 8) {\n // 8 - The file is Deflated\n decompress = options.decodeFileData !== true;\n } else {\n return callback(new Error(\"unsupported compression method: \" + entry.compressionMethod));\n }\n\n self.readLocalFileHeader(entry, {minimal: true}, function(err, localFileHeader) {\n if (err) return callback(err);\n self.openReadStreamLowLevel(\n localFileHeader.fileDataStart, entry.compressedSize,\n relativeStart, relativeEnd,\n decompress, entry.uncompressedSize,\n callback);\n });\n};\n\nZipFile.prototype.openReadStreamLowLevel = function(fileDataStart, compressedSize, relativeStart, relativeEnd, decompress, uncompressedSize, callback) {\n var self = this;\n\n var fileDataEnd = fileDataStart + compressedSize;\n var readStream = self.reader.createReadStream({\n start: fileDataStart + relativeStart,\n end: fileDataStart + relativeEnd,\n });\n var endpointStream = readStream;\n if (decompress) {\n var destroyed = false;\n var inflateFilter = zlib.createInflateRaw();\n readStream.on(\"error\", function(err) {\n // setImmediate here because errors can be emitted during the first call to pipe()\n setImmediate(function() {\n if (!destroyed) inflateFilter.emit(\"error\", err);\n });\n });\n readStream.pipe(inflateFilter);\n\n if (self.validateEntrySizes) {\n endpointStream = new AssertByteCountStream(uncompressedSize);\n inflateFilter.on(\"error\", function(err) {\n // forward zlib errors to the client-visible stream\n setImmediate(function() {\n if (!destroyed) endpointStream.emit(\"error\", err);\n });\n });\n inflateFilter.pipe(endpointStream);\n } else {\n // the zlib filter is the client-visible stream\n endpointStream = inflateFilter;\n }\n // this is part of yauzl's API, so implement this function on the client-visible stream\n installDestroyFn(endpointStream, function() {\n destroyed = true;\n if (inflateFilter !== endpointStream) inflateFilter.unpipe(endpointStream);\n readStream.unpipe(inflateFilter);\n // TODO: the inflateFilter may cause a memory leak. see Issue #27.\n readStream.destroy();\n });\n }\n callback(null, endpointStream);\n};\n\nZipFile.prototype.readLocalFileHeader = function(entry, options, callback) {\n var self = this;\n if (callback == null) {\n callback = options;\n options = null;\n }\n if (options == null) options = {};\n\n self.reader.ref();\n var buffer = newBuffer(30);\n readAndAssertNoEof(self.reader, buffer, 0, buffer.length, entry.relativeOffsetOfLocalHeader, function(err) {\n try {\n if (err) return callback(err);\n // 0 - Local file header signature = 0x04034b50\n var signature = buffer.readUInt32LE(0);\n if (signature !== 0x04034b50) {\n return callback(new Error(\"invalid local file header signature: 0x\" + signature.toString(16)));\n }\n\n var fileNameLength = buffer.readUInt16LE(26);\n var extraFieldLength = buffer.readUInt16LE(28);\n var fileDataStart = entry.relativeOffsetOfLocalHeader + 30 + fileNameLength + extraFieldLength;\n // We now have enough information to do this bounds check.\n if (fileDataStart + entry.compressedSize > self.fileSize) {\n return callback(new Error(\"file data overflows file bounds: \" +\n fileDataStart + \" + \" + entry.compressedSize + \" > \" + self.fileSize));\n }\n\n if (options.minimal) {\n return callback(null, {fileDataStart: fileDataStart});\n }\n\n var localFileHeader = new LocalFileHeader();\n localFileHeader.fileDataStart = fileDataStart;\n\n // 4 - Version needed to extract (minimum)\n localFileHeader.versionNeededToExtract = buffer.readUInt16LE(4);\n // 6 - General purpose bit flag\n localFileHeader.generalPurposeBitFlag = buffer.readUInt16LE(6);\n // 8 - Compression method\n localFileHeader.compressionMethod = buffer.readUInt16LE(8);\n // 10 - File last modification time\n localFileHeader.lastModFileTime = buffer.readUInt16LE(10);\n // 12 - File last modification date\n localFileHeader.lastModFileDate = buffer.readUInt16LE(12);\n // 14 - CRC-32\n localFileHeader.crc32 = buffer.readUInt32LE(14);\n // 18 - Compressed size\n localFileHeader.compressedSize = buffer.readUInt32LE(18);\n // 22 - Uncompressed size\n localFileHeader.uncompressedSize = buffer.readUInt32LE(22);\n // 26 - File name length (n)\n localFileHeader.fileNameLength = fileNameLength;\n // 28 - Extra field length (m)\n localFileHeader.extraFieldLength = extraFieldLength;\n // 30 - File name\n // 30+n - Extra field\n\n buffer = newBuffer(fileNameLength + extraFieldLength);\n self.reader.ref();\n readAndAssertNoEof(self.reader, buffer, 0, buffer.length, entry.relativeOffsetOfLocalHeader + 30, function(err) {\n try {\n if (err) return callback(err);\n localFileHeader.fileName = buffer.subarray(0, fileNameLength);\n localFileHeader.extraField = buffer.subarray(fileNameLength);\n return callback(null, localFileHeader);\n } finally {\n self.reader.unref();\n }\n });\n } finally {\n self.reader.unref();\n }\n });\n};\n\nfunction Entry() {\n}\nEntry.prototype.getLastModDate = function(options) {\n if (options == null) options = {};\n\n if (!options.forceDosFormat) {\n // Check extended fields.\n for (var i = 0; i < this.extraFields.length; i++) {\n var extraField = this.extraFields[i];\n if (extraField.id === 0x5455) {\n // Info-ZIP \"universal timestamp\" extended field (`0x5455` aka `\"UT\"`).\n // See the Info-ZIP source code unix/unix.c:set_extra_field() and zipfile.c:ef_scan_ut_time().\n var data = extraField.data;\n if (data.length < 5) continue; // Too short.\n // The flags define which of the three fields are present: mtime, atime, ctime.\n // We only care about mtime.\n // Also, ctime is never included in practice.\n // And also, atime is only included in the local file header for some reason\n // despite the flags lying about its inclusion in the central header.\n var flags = data[0];\n var HAS_MTIME = 1;\n if (!(flags & HAS_MTIME)) continue; // This will realistically never happen.\n // Although the positions of all of the fields shift around depending on the presence of other fields,\n // mtime is always first if present, and that's the only one we care about.\n var posixTimestamp = data.readInt32LE(1);\n return new Date(posixTimestamp * 1000);\n } else if (extraField.id === 0x000a) {\n var data = extraField.data;\n if (data.length !== 32) continue; // The length is always the same.\n // 4 bytes reserved\n // 2 bytes Tag\n if (data.readUInt16LE(4) !== 1) continue; // Tag1 is actually the only defined Tag.\n // 2 bytes Size\n if (data.readUInt16LE(6) !== 24) continue; // Size is always 24.\n // 8 bytes Mtime\n var hundredNanoSecondsSince1601 = data.readUInt32LE(8) + 4294967296 * data.readInt32LE(12);\n // Convert from NTFS to POSIX milliseconds.\n // The big number below is the milliseconds between year 1601 and year 1970\n // (i.e. the negative POSIX timestamp of 1601-01-01 00:00:00Z)\n var millisecondsSince1970 = hundredNanoSecondsSince1601 / 10000 - 11644473600000;\n // Note on numeric precision: JavaScript Number objects lose precision above Number.MAX_SAFE_INTEGER,\n // and NTFS timestamps are typically much bigger than that limit.\n // (MAX_SAFE_INTEGER would represent 1629-07-17T23:58:45.475Z.)\n // However, we're losing precision in the conversion from 100nanosecond units to millisecond units anyway,\n // and the time at which we also lose 1-millisecond precision is year 275760, the JavaScript Date limit (by design).\n // Up through the year 2057, this conversion only drops 4 bits of precision,\n // which is well under the 13-14 bits ratio between the milliseconds and 100nanoseconds.\n return new Date(millisecondsSince1970);\n }\n }\n }\n\n // Fallback to non-extended encoding.\n return dosDateTimeToDate(this.lastModFileDate, this.lastModFileTime, options.timezone);\n};\n\nEntry.prototype.canDecodeFileData = function() {\n return (\n !this.isEncrypted() &&\n (this.compressionMethod === 0 || this.compressionMethod === 8)\n );\n};\nEntry.prototype.isEncrypted = function() {\n return (this.generalPurposeBitFlag & 0x1) !== 0;\n};\nEntry.prototype.isCompressed = function() {\n return this.compressionMethod === 8;\n};\n\nfunction LocalFileHeader() {\n}\n\nfunction dosDateTimeToDate(date, time, timezone) {\n var day = date & 0x1f; // 1-31\n var month = (date >> 5 & 0xf) - 1; // 1-12, 0-11\n var year = (date >> 9 & 0x7f) + 1980; // 0-128, 1980-2108\n\n var millisecond = 0;\n var second = (time & 0x1f) * 2; // 0-29, 0-58 (even numbers)\n var minute = time >> 5 & 0x3f; // 0-59\n var hour = time >> 11 & 0x1f; // 0-23\n\n if (timezone == null || timezone === \"local\") {\n return new Date(year, month, day, hour, minute, second, millisecond);\n } else if (timezone === \"UTC\") {\n return new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));\n } else {\n throw new Error(\"unrecognized options.timezone: \" + options.timezone);\n }\n}\n\nfunction getFileNameLowLevel(generalPurposeBitFlag, fileNameBuffer, extraFields, strictFileNames) {\n var fileName = null;\n\n // check for Info-ZIP Unicode Path Extra Field (0x7075)\n // see https://github.com/thejoshwolfe/yauzl/issues/33\n for (var i = 0; i < extraFields.length; i++) {\n var extraField = extraFields[i];\n if (extraField.id === 0x7075) {\n if (extraField.data.length < 6) {\n // too short to be meaningful\n continue;\n }\n // Version 1 byte version of this extra field, currently 1\n if (extraField.data.readUInt8(0) !== 1) {\n // > Changes may not be backward compatible so this extra\n // > field should not be used if the version is not recognized.\n continue;\n }\n // NameCRC32 4 bytes File Name Field CRC32 Checksum\n var oldNameCrc32 = extraField.data.readUInt32LE(1);\n if (crc32.unsigned(fileNameBuffer) !== oldNameCrc32) {\n // > If the CRC check fails, this UTF-8 Path Extra Field should be\n // > ignored and the File Name field in the header should be used instead.\n continue;\n }\n // UnicodeName Variable UTF-8 version of the entry File Name\n fileName = decodeBuffer(extraField.data.subarray(5), true);\n break;\n }\n }\n\n if (fileName == null) {\n // The typical case.\n var isUtf8 = (generalPurposeBitFlag & 0x800) !== 0;\n fileName = decodeBuffer(fileNameBuffer, isUtf8);\n }\n\n if (!strictFileNames) {\n // Allow backslash.\n fileName = fileName.replace(/\\\\/g, \"/\");\n }\n return fileName;\n}\n\nfunction validateFileName(fileName) {\n if (fileName.indexOf(\"\\\\\") !== -1) {\n return \"invalid characters in fileName: \" + fileName;\n }\n if (/^[a-zA-Z]:/.test(fileName) || /^\\//.test(fileName)) {\n return \"absolute path: \" + fileName;\n }\n if (fileName.split(\"/\").indexOf(\"..\") !== -1) {\n return \"invalid relative path: \" + fileName;\n }\n // all good\n return null;\n}\n\nfunction parseExtraFields(extraFieldBuffer) {\n var extraFields = [];\n var i = 0;\n while (i < extraFieldBuffer.length - 3) {\n var headerId = extraFieldBuffer.readUInt16LE(i + 0);\n var dataSize = extraFieldBuffer.readUInt16LE(i + 2);\n var dataStart = i + 4;\n var dataEnd = dataStart + dataSize;\n if (dataEnd > extraFieldBuffer.length) throw new Error(\"extra field length exceeds extra field buffer size\");\n var dataBuffer = extraFieldBuffer.subarray(dataStart, dataEnd);\n extraFields.push({\n id: headerId,\n data: dataBuffer,\n });\n i = dataEnd;\n }\n return extraFields;\n}\n\nfunction readAndAssertNoEof(reader, buffer, offset, length, position, callback) {\n if (length === 0) {\n // fs.read will throw an out-of-bounds error if you try to read 0 bytes from a 0 byte file\n return setImmediate(function() { callback(null, newBuffer(0)); });\n }\n reader.read(buffer, offset, length, position, function(err, bytesRead) {\n if (err) return callback(err);\n if (bytesRead < length) {\n return callback(new Error(\"unexpected EOF\"));\n }\n callback();\n });\n}\n\nutil.inherits(AssertByteCountStream, Transform);\nfunction AssertByteCountStream(byteCount) {\n Transform.call(this);\n this.actualByteCount = 0;\n this.expectedByteCount = byteCount;\n}\nAssertByteCountStream.prototype._transform = function(chunk, encoding, cb) {\n this.actualByteCount += chunk.length;\n if (this.actualByteCount > this.expectedByteCount) {\n var msg = \"too many bytes in the stream. expected \" + this.expectedByteCount + \". got at least \" + this.actualByteCount;\n return cb(new Error(msg));\n }\n cb(null, chunk);\n};\nAssertByteCountStream.prototype._flush = function(cb) {\n if (this.actualByteCount < this.expectedByteCount) {\n var msg = \"not enough bytes in the stream. expected \" + this.expectedByteCount + \". got only \" + this.actualByteCount;\n return cb(new Error(msg));\n }\n cb();\n};\n\nutil.inherits(RandomAccessReader, EventEmitter);\nfunction RandomAccessReader() {\n EventEmitter.call(this);\n this.refCount = 0;\n}\nRandomAccessReader.prototype.ref = function() {\n this.refCount += 1;\n};\nRandomAccessReader.prototype.unref = function() {\n var self = this;\n self.refCount -= 1;\n\n if (self.refCount > 0) return;\n if (self.refCount < 0) throw new Error(\"invalid unref\");\n\n self.close(onCloseDone);\n\n function onCloseDone(err) {\n if (err) return self.emit('error', err);\n self.emit('close');\n }\n};\nRandomAccessReader.prototype.createReadStream = function(options) {\n if (options == null) options = {};\n var start = options.start;\n var end = options.end;\n if (start === end) {\n var emptyStream = new PassThrough();\n setImmediate(function() {\n emptyStream.end();\n });\n return emptyStream;\n }\n var stream = this._readStreamForRange(start, end);\n\n var destroyed = false;\n var refUnrefFilter = new RefUnrefFilter(this);\n stream.on(\"error\", function(err) {\n setImmediate(function() {\n if (!destroyed) refUnrefFilter.emit(\"error\", err);\n });\n });\n installDestroyFn(refUnrefFilter, function() {\n stream.unpipe(refUnrefFilter);\n refUnrefFilter.unref();\n stream.destroy();\n });\n\n var byteCounter = new AssertByteCountStream(end - start);\n refUnrefFilter.on(\"error\", function(err) {\n setImmediate(function() {\n if (!destroyed) byteCounter.emit(\"error\", err);\n });\n });\n installDestroyFn(byteCounter, function() {\n destroyed = true;\n refUnrefFilter.unpipe(byteCounter);\n refUnrefFilter.destroy();\n });\n\n return stream.pipe(refUnrefFilter).pipe(byteCounter);\n};\nRandomAccessReader.prototype._readStreamForRange = function(start, end) {\n throw new Error(\"not implemented\");\n};\nRandomAccessReader.prototype.read = function(buffer, offset, length, position, callback) {\n var readStream = this.createReadStream({start: position, end: position + length});\n var writeStream = new Writable();\n var written = 0;\n writeStream._write = function(chunk, encoding, cb) {\n chunk.copy(buffer, offset + written, 0, chunk.length);\n written += chunk.length;\n cb();\n };\n writeStream.on(\"finish\", callback);\n readStream.on(\"error\", function(error) {\n callback(error);\n });\n readStream.pipe(writeStream);\n};\nRandomAccessReader.prototype.close = function(callback) {\n setImmediate(callback);\n};\n\nutil.inherits(RefUnrefFilter, PassThrough);\nfunction RefUnrefFilter(context) {\n PassThrough.call(this);\n this.context = context;\n this.context.ref();\n this.unreffedYet = false;\n}\nRefUnrefFilter.prototype._flush = function(cb) {\n this.unref();\n cb();\n};\nRefUnrefFilter.prototype.unref = function(cb) {\n if (this.unreffedYet) return;\n this.unreffedYet = true;\n this.context.unref();\n};\n\nvar cp437 = '\\u0000☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ';\nfunction decodeBuffer(buffer, isUtf8) {\n if (isUtf8) {\n return buffer.toString(\"utf8\");\n } else {\n var result = \"\";\n for (var i = 0; i < buffer.length; i++) {\n result += cp437[buffer[i]];\n }\n return result;\n }\n}\n\nfunction readUInt64LE(buffer, offset) {\n // There is no native function for this, because we can't actually store 64-bit integers precisely.\n // after 53 bits, JavaScript's Number type (IEEE 754 double) can't store individual integers anymore.\n // but since 53 bits is a whole lot more than 32 bits, we do our best anyway.\n // As of 2020, Node has added support for BigInt, which obviates this whole function,\n // but yauzl hasn't been updated to depend on BigInt (yet?).\n var lower32 = buffer.readUInt32LE(offset);\n var upper32 = buffer.readUInt32LE(offset + 4);\n // we can't use bitshifting here, because JavaScript bitshifting only works on 32-bit integers.\n return upper32 * 0x100000000 + lower32;\n // as long as we're bounds checking the result of this function against the total file size,\n // we'll catch any overflow errors, because we already made sure the total file size was within reason.\n}\n\n// Node 10 deprecated new Buffer().\nvar newBuffer;\nif (typeof Buffer.allocUnsafe === \"function\") {\n newBuffer = function(len) {\n return Buffer.allocUnsafe(len);\n };\n} else {\n newBuffer = function(len) {\n return new Buffer(len);\n };\n}\n\n// Node 8 introduced a proper destroy() implementation on writable streams.\nfunction installDestroyFn(stream, fn) {\n if (typeof stream.destroy === \"function\") {\n // New API.\n stream._destroy = function(err, cb) {\n fn();\n if (cb != null) cb(err);\n };\n } else {\n // Old API.\n stream.destroy = fn;\n }\n}\n\nfunction defaultCallback(err) {\n if (err) throw err;\n}\n",null,null,null,null,null,null,"var path = require('path');\n\nmodule.exports = function (basedir, relfiles) {\n if (relfiles) {\n var files = relfiles.map(function (r) {\n return path.resolve(basedir, r);\n });\n }\n else {\n var files = basedir;\n }\n \n var res = files.slice(1).reduce(function (ps, file) {\n if (!file.match(/^([A-Za-z]:)?\\/|\\\\/)) {\n throw new Error('relative path without a basedir');\n }\n \n var xs = file.split(/\\/+|\\\\+/);\n for (\n var i = 0;\n ps[i] === xs[i] && i < Math.min(ps.length, xs.length);\n i++\n );\n return ps.slice(0, i);\n }, files[0].split(/\\/+|\\\\+/));\n \n // Windows correctly handles paths with forward-slashes\n return res.length > 1 ? res.join('/') : '/'\n};\n","'use strict';\n\nconst pTry = (fn, ...arguments_) => new Promise(resolve => {\n\tresolve(fn(...arguments_));\n});\n\nmodule.exports = pTry;\n// TODO: remove this in the next major version\nmodule.exports.default = pTry;\n","'use strict';\nconst pTry = require('p-try');\n\nconst pLimit = concurrency => {\n\tif (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {\n\t\treturn Promise.reject(new TypeError('Expected `concurrency` to be a number from 1 and up'));\n\t}\n\n\tconst queue = [];\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.length > 0) {\n\t\t\tqueue.shift()();\n\t\t}\n\t};\n\n\tconst run = (fn, resolve, ...args) => {\n\t\tactiveCount++;\n\n\t\tconst result = pTry(fn, ...args);\n\n\t\tresolve(result);\n\n\t\tresult.then(next, next);\n\t};\n\n\tconst enqueue = (fn, resolve, ...args) => {\n\t\tif (activeCount < concurrency) {\n\t\t\trun(fn, resolve, ...args);\n\t\t} else {\n\t\t\tqueue.push(run.bind(null, fn, resolve, ...args));\n\t\t}\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => enqueue(fn, resolve, ...args));\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.length\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.length = 0;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn generator;\n};\n\nmodule.exports = pLimit;\nmodule.exports.default = pLimit;\n","'use strict';\nconst pLimit = require('p-limit');\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// The input can also be a promise, so we await it\nconst testElement = async (element, tester) => tester(await element);\n\n// The input can also be a promise, so we `Promise.all()` them both\nconst finder = async element => {\n\tconst values = await Promise.all(element);\n\tif (values[1] === true) {\n\t\tthrow new EndError(values[0]);\n\t}\n\n\treturn false;\n};\n\nconst pLocate = async (iterable, tester, options) => {\n\toptions = {\n\t\tconcurrency: Infinity,\n\t\tpreserveOrder: true,\n\t\t...options\n\t};\n\n\tconst limit = pLimit(options.concurrency);\n\n\t// Start all the promises concurrently with optional limit\n\tconst items = [...iterable].map(element => [element, limit(testElement, element, tester)]);\n\n\t// Check the promises either serially or concurrently\n\tconst checkLimit = pLimit(options.preserveOrder ? 1 : Infinity);\n\n\ttry {\n\t\tawait Promise.all(items.map(element => checkLimit(finder, element)));\n\t} catch (error) {\n\t\tif (error instanceof EndError) {\n\t\t\treturn error.value;\n\t\t}\n\n\t\tthrow error;\n\t}\n};\n\nmodule.exports = pLocate;\n// TODO: Remove this for the next major release\nmodule.exports.default = pLocate;\n","'use strict';\nconst path = require('path');\nconst fs = require('fs');\nconst {promisify} = require('util');\nconst pLocate = require('p-locate');\n\nconst fsStat = promisify(fs.stat);\nconst fsLStat = promisify(fs.lstat);\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile'\n};\n\nfunction checkType({type}) {\n\tif (type in typeMappings) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => type === undefined || stat[typeMappings[type]]();\n\nmodule.exports = async (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\ttype: 'file',\n\t\tallowSymlinks: true,\n\t\t...options\n\t};\n\tcheckType(options);\n\tconst statFn = options.allowSymlinks ? fsStat : fsLStat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFn(path.resolve(options.cwd, path_));\n\t\t\treturn matchType(options.type, stat);\n\t\t} catch (_) {\n\t\t\treturn false;\n\t\t}\n\t}, options);\n};\n\nmodule.exports.sync = (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tallowSymlinks: true,\n\t\ttype: 'file',\n\t\t...options\n\t};\n\tcheckType(options);\n\tconst statFn = options.allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFn(path.resolve(options.cwd, path_));\n\n\t\t\tif (matchType(options.type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch (_) {\n\t\t}\n\t}\n};\n","'use strict';\nconst fs = require('fs');\nconst {promisify} = require('util');\n\nconst pAccess = promisify(fs.access);\n\nmodule.exports = async path => {\n\ttry {\n\t\tawait pAccess(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nmodule.exports.sync = path => {\n\ttry {\n\t\tfs.accessSync(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n","'use strict';\nconst path = require('path');\nconst locatePath = require('locate-path');\nconst pathExists = require('path-exists');\n\nconst stop = Symbol('findUp.stop');\n\nmodule.exports = async (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.sync = (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath.sync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath.sync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.exists = pathExists;\n\nmodule.exports.sync.exists = pathExists.sync;\n\nmodule.exports.stop = stop;\n","'use strict';\nconst path = require('path');\nconst findUp = require('find-up');\n\nconst pkgDir = async cwd => {\n\tconst filePath = await findUp('package.json', {cwd});\n\treturn filePath && path.dirname(filePath);\n};\n\nmodule.exports = pkgDir;\n// TODO: Remove this for the next major release\nmodule.exports.default = pkgDir;\n\nmodule.exports.sync = cwd => {\n\tconst filePath = findUp.sync('package.json', {cwd});\n\treturn filePath && path.dirname(filePath);\n};\n","exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n args.unshift('SEMVER')\n console.log.apply(console, args)\n }\n} else {\n debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\nvar MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar safeRe = exports.safeRe = []\nvar src = exports.src = []\nvar t = exports.tokens = {}\nvar R = 0\n\nfunction tok (n) {\n t[n] = R++\n}\n\nvar LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nvar safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nfunction makeSafeRe (value) {\n for (var i = 0; i < safeRegexReplacements.length; i++) {\n var token = safeRegexReplacements[i][0]\n var max = safeRegexReplacements[i][1]\n value = value\n .split(token + '*').join(token + '{0,' + max + '}')\n .split(token + '+').join(token + '{1,' + max + '}')\n }\n return value\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ntok('NUMERICIDENTIFIER')\nsrc[t.NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\ntok('NUMERICIDENTIFIERLOOSE')\nsrc[t.NUMERICIDENTIFIERLOOSE] = '\\\\d+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ntok('NONNUMERICIDENTIFIER')\nsrc[t.NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ntok('MAINVERSION')\nsrc[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIER] + ')'\n\ntok('MAINVERSIONLOOSE')\nsrc[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ntok('PRERELEASEIDENTIFIER')\nsrc[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +\n '|' + src[t.NONNUMERICIDENTIFIER] + ')'\n\ntok('PRERELEASEIDENTIFIERLOOSE')\nsrc[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +\n '|' + src[t.NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ntok('PRERELEASE')\nsrc[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'\n\ntok('PRERELEASELOOSE')\nsrc[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ntok('BUILDIDENTIFIER')\nsrc[t.BUILDIDENTIFIER] = LETTERDASHNUMBER + '+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ntok('BUILD')\nsrc[t.BUILD] = '(?:\\\\+(' + src[t.BUILDIDENTIFIER] +\n '(?:\\\\.' + src[t.BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ntok('FULL')\ntok('FULLPLAIN')\nsrc[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +\n src[t.PRERELEASE] + '?' +\n src[t.BUILD] + '?'\n\nsrc[t.FULL] = '^' + src[t.FULLPLAIN] + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ntok('LOOSEPLAIN')\nsrc[t.LOOSEPLAIN] = '[v=\\\\s]*' + src[t.MAINVERSIONLOOSE] +\n src[t.PRERELEASELOOSE] + '?' +\n src[t.BUILD] + '?'\n\ntok('LOOSE')\nsrc[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'\n\ntok('GTLT')\nsrc[t.GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ntok('XRANGEIDENTIFIERLOOSE')\nsrc[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\ntok('XRANGEIDENTIFIER')\nsrc[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\ntok('XRANGEPLAIN')\nsrc[t.XRANGEPLAIN] = '[v=\\\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:' + src[t.PRERELEASE] + ')?' +\n src[t.BUILD] + '?' +\n ')?)?'\n\ntok('XRANGEPLAINLOOSE')\nsrc[t.XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[t.PRERELEASELOOSE] + ')?' +\n src[t.BUILD] + '?' +\n ')?)?'\n\ntok('XRANGE')\nsrc[t.XRANGE] = '^' + src[t.GTLT] + '\\\\s*' + src[t.XRANGEPLAIN] + '$'\ntok('XRANGELOOSE')\nsrc[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\\\s*' + src[t.XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ntok('COERCE')\nsrc[t.COERCE] = '(^|[^\\\\d])' +\n '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:$|[^\\\\d])'\ntok('COERCERTL')\nre[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')\nsafeRe[t.COERCERTL] = new RegExp(makeSafeRe(src[t.COERCE]), 'g')\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ntok('LONETILDE')\nsrc[t.LONETILDE] = '(?:~>?)'\n\ntok('TILDETRIM')\nsrc[t.TILDETRIM] = '(\\\\s*)' + src[t.LONETILDE] + '\\\\s+'\nre[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')\nsafeRe[t.TILDETRIM] = new RegExp(makeSafeRe(src[t.TILDETRIM]), 'g')\nvar tildeTrimReplace = '$1~'\n\ntok('TILDE')\nsrc[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'\ntok('TILDELOOSE')\nsrc[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ntok('LONECARET')\nsrc[t.LONECARET] = '(?:\\\\^)'\n\ntok('CARETTRIM')\nsrc[t.CARETTRIM] = '(\\\\s*)' + src[t.LONECARET] + '\\\\s+'\nre[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')\nsafeRe[t.CARETTRIM] = new RegExp(makeSafeRe(src[t.CARETTRIM]), 'g')\nvar caretTrimReplace = '$1^'\n\ntok('CARET')\nsrc[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'\ntok('CARETLOOSE')\nsrc[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ntok('COMPARATORLOOSE')\nsrc[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'\ntok('COMPARATOR')\nsrc[t.COMPARATOR] = '^' + src[t.GTLT] + '\\\\s*(' + src[t.FULLPLAIN] + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ntok('COMPARATORTRIM')\nsrc[t.COMPARATORTRIM] = '(\\\\s*)' + src[t.GTLT] +\n '\\\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')\nsafeRe[t.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t.COMPARATORTRIM]), 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ntok('HYPHENRANGE')\nsrc[t.HYPHENRANGE] = '^\\\\s*(' + src[t.XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[t.XRANGEPLAIN] + ')' +\n '\\\\s*$'\n\ntok('HYPHENRANGELOOSE')\nsrc[t.HYPHENRANGELOOSE] = '^\\\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[t.XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\ntok('STAR')\nsrc[t.STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i])\n if (!re[i]) {\n re[i] = new RegExp(src[i])\n\n // Replace all greedy whitespace to prevent regex dos issues. These regex are\n // used internally via the safeRe object since all inputs in this library get\n // normalized first to trim and collapse all extra whitespace. The original\n // regexes are exported for userland consumption and lower level usage. A\n // future breaking change could export the safer regex only with a note that\n // all input should have extra whitespace removed.\n safeRe[i] = new RegExp(makeSafeRe(src[i]))\n }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n var r = options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n var v = parse(version, options)\n return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n }\n\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options)\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n\n var m = version.trim().match(options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL])\n\n if (!m) {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n}\n\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.')\n }\n return this.version\n}\n\nSemVer.prototype.toString = function () {\n return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n var i = 0\n do {\n var a = this.prerelease[i]\n var b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\nSemVer.prototype.compareBuild = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n var i = 0\n do {\n var a = this.build[i]\n var b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n var i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error('invalid increment argument: ' + release)\n }\n this.format()\n this.raw = this.version\n return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n if (typeof (loose) === 'string') {\n identifier = loose\n loose = undefined\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n if (eq(version1, version2)) {\n return null\n } else {\n var v1 = parse(version1)\n var v2 = parse(version2)\n var prefix = ''\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre'\n var defaultResult = 'prerelease'\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n var anum = numeric.test(a)\n var bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n return compare(a, b, true)\n}\n\nexports.compareBuild = compareBuild\nfunction compareBuild (a, b, loose) {\n var versionA = new SemVer(a, loose)\n var versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(a, b, loose)\n })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(b, a, loose)\n })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError('Invalid operator: ' + op)\n }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options)\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]\n var m = comp.match(r)\n\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n}\n\nComparator.prototype.toString = function () {\n return this.value\n}\n\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n var rangeTmp\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n rangeTmp = new Range(comp.value, options)\n return satisfies(this.value, rangeTmp, options)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n rangeTmp = new Range(this.value, options)\n return satisfies(comp.semver, rangeTmp, options)\n }\n\n var sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n var sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n var sameSemVer = this.semver.version === comp.semver.version\n var differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n var oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n ((this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<'))\n var oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n ((this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>'))\n\n return sameDirectionIncreasing || sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (range instanceof Range) {\n if (range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, options)\n }\n\n if (!(this instanceof Range)) {\n return new Range(range, options)\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split based on boolean or ||\n this.set = this.raw.split('||').map(function (range) {\n return this.parseRange(range.trim())\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length\n })\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + this.raw)\n }\n\n this.format()\n}\n\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim()\n }).join('||').trim()\n return this.range\n}\n\nRange.prototype.toString = function () {\n return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? safeRe[t.HYPHENRANGELOOSE] : safeRe[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace)\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(safeRe[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, safeRe[t.COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(safeRe[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(safeRe[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options)\n }, this).join(' ').split(/\\s+/)\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe)\n })\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options)\n }, this)\n\n return set\n}\n\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some(function (thisComparators) {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some(function (rangeComparators) {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every(function (thisComparator) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n}\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nfunction isSatisfiable (comparators, options) {\n var result = true\n var remainingComparators = comparators.slice()\n var testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every(function (otherComparator) {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value\n }).join(' ').trim().split(' ')\n })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nfunction isX (id) {\n return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options)\n }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n var r = options.loose ? safeRe[t.TILDELOOSE] : safeRe[t.TILDE]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options)\n }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n debug('caret', comp, options)\n var r = options.loose ? safeRe[t.CARETLOOSE] : safeRe[t.CARET]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + (+M + 1) + '.0.0'\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0'\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nfunction replaceXRanges (comp, options) {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n comp = comp.trim()\n var r = options.loose ? safeRe[t.XRANGELOOSE] : safeRe[t.XRANGE]\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n var xM = isX(M)\n var xm = xM || isX(m)\n var xp = xm || isX(p)\n var anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n ret = gtlt + M + '.' + m + '.' + p + pr\n } else if (xm) {\n ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0' + pr +\n ' <' + M + '.' + (+m + 1) + '.0' + pr\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(safeRe[t.STAR], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0'\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0'\n } else {\n from = '>=' + from\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0'\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0'\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n } else {\n to = '<=' + to\n }\n\n return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n}\n\nfunction testSet (set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n var max = null\n var maxSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n var min = null\n var minSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n range = new Range(range, loose)\n\n var minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator)\n }\n })\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n var gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n var high = null\n var low = null\n\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n var parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version, options) {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n var match = null\n if (!options.rtl) {\n match = version.match(safeRe[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n var next\n while ((next = safeRe[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n safeRe[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n safeRe[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(match[2] +\n '.' + (match[3] || '0') +\n '.' + (match[4] || '0'), options)\n}\n","'use strict';\nconst fs = require('fs');\nconst path = require('path');\nconst {promisify} = require('util');\nconst semver = require('semver');\n\nconst useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0');\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nconst checkPath = pth => {\n\tif (process.platform === 'win32') {\n\t\tconst pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''));\n\n\t\tif (pathHasInvalidWinCharacters) {\n\t\t\tconst error = new Error(`Path contains invalid characters: ${pth}`);\n\t\t\terror.code = 'EINVAL';\n\t\t\tthrow error;\n\t\t}\n\t}\n};\n\nconst processOptions = options => {\n\t// https://github.com/sindresorhus/make-dir/issues/18\n\tconst defaults = {\n\t\tmode: 0o777,\n\t\tfs\n\t};\n\n\treturn {\n\t\t...defaults,\n\t\t...options\n\t};\n};\n\nconst permissionError = pth => {\n\t// This replicates the exception of `fs.mkdir` with native the\n\t// `recusive` option when run on an invalid drive under Windows.\n\tconst error = new Error(`operation not permitted, mkdir '${pth}'`);\n\terror.code = 'EPERM';\n\terror.errno = -4048;\n\terror.path = pth;\n\terror.syscall = 'mkdir';\n\treturn error;\n};\n\nconst makeDir = async (input, options) => {\n\tcheckPath(input);\n\toptions = processOptions(options);\n\n\tconst mkdir = promisify(options.fs.mkdir);\n\tconst stat = promisify(options.fs.stat);\n\n\tif (useNativeRecursiveOption && options.fs.mkdir === fs.mkdir) {\n\t\tconst pth = path.resolve(input);\n\n\t\tawait mkdir(pth, {\n\t\t\tmode: options.mode,\n\t\t\trecursive: true\n\t\t});\n\n\t\treturn pth;\n\t}\n\n\tconst make = async pth => {\n\t\ttry {\n\t\t\tawait mkdir(pth, options.mode);\n\n\t\t\treturn pth;\n\t\t} catch (error) {\n\t\t\tif (error.code === 'EPERM') {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\tif (path.dirname(pth) === pth) {\n\t\t\t\t\tthrow permissionError(pth);\n\t\t\t\t}\n\n\t\t\t\tif (error.message.includes('null bytes')) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\tawait make(path.dirname(pth));\n\n\t\t\t\treturn make(pth);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst stats = await stat(pth);\n\t\t\t\tif (!stats.isDirectory()) {\n\t\t\t\t\tthrow new Error('The path is not a directory');\n\t\t\t\t}\n\t\t\t} catch (_) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn pth;\n\t\t}\n\t};\n\n\treturn make(path.resolve(input));\n};\n\nmodule.exports = makeDir;\n\nmodule.exports.sync = (input, options) => {\n\tcheckPath(input);\n\toptions = processOptions(options);\n\n\tif (useNativeRecursiveOption && options.fs.mkdirSync === fs.mkdirSync) {\n\t\tconst pth = path.resolve(input);\n\n\t\tfs.mkdirSync(pth, {\n\t\t\tmode: options.mode,\n\t\t\trecursive: true\n\t\t});\n\n\t\treturn pth;\n\t}\n\n\tconst make = pth => {\n\t\ttry {\n\t\t\toptions.fs.mkdirSync(pth, options.mode);\n\t\t} catch (error) {\n\t\t\tif (error.code === 'EPERM') {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\tif (path.dirname(pth) === pth) {\n\t\t\t\t\tthrow permissionError(pth);\n\t\t\t\t}\n\n\t\t\t\tif (error.message.includes('null bytes')) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\tmake(path.dirname(pth));\n\t\t\t\treturn make(pth);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tif (!options.fs.statSync(pth).isDirectory()) {\n\t\t\t\t\tthrow new Error('The path is not a directory');\n\t\t\t\t}\n\t\t\t} catch (_) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\treturn pth;\n\t};\n\n\treturn make(path.resolve(input));\n};\n","'use strict';\nconst path = require('path');\nconst fs = require('fs');\nconst commonDir = require('commondir');\nconst pkgDir = require('pkg-dir');\nconst makeDir = require('make-dir');\n\nconst {env, cwd} = process;\n\nconst isWritable = path => {\n\ttry {\n\t\tfs.accessSync(path, fs.constants.W_OK);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nfunction useDirectory(directory, options) {\n\tif (options.create) {\n\t\tmakeDir.sync(directory);\n\t}\n\n\tif (options.thunk) {\n\t\treturn (...arguments_) => path.join(directory, ...arguments_);\n\t}\n\n\treturn directory;\n}\n\nfunction getNodeModuleDirectory(directory) {\n\tconst nodeModules = path.join(directory, 'node_modules');\n\n\tif (\n\t\t!isWritable(nodeModules) &&\n\t\t(fs.existsSync(nodeModules) || !isWritable(path.join(directory)))\n\t) {\n\t\treturn;\n\t}\n\n\treturn nodeModules;\n}\n\nmodule.exports = (options = {}) => {\n\tif (env.CACHE_DIR && !['true', 'false', '1', '0'].includes(env.CACHE_DIR)) {\n\t\treturn useDirectory(path.join(env.CACHE_DIR, options.name), options);\n\t}\n\n\tlet {cwd: directory = cwd()} = options;\n\n\tif (options.files) {\n\t\tdirectory = commonDir(directory, options.files);\n\t}\n\n\tdirectory = pkgDir.sync(directory);\n\n\tif (!directory) {\n\t\treturn;\n\t}\n\n\tconst nodeModules = getNodeModuleDirectory(directory);\n\tif (!nodeModules) {\n\t\treturn undefined;\n\t}\n\n\treturn useDirectory(path.join(directory, 'node_modules', '.cache', options.name), options);\n};\n",null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.E_CANCELED = exports.E_ALREADY_LOCKED = exports.E_TIMEOUT = void 0;\nexports.E_TIMEOUT = new Error('timeout while waiting for mutex to become available');\nexports.E_ALREADY_LOCKED = new Error('mutex already locked');\nexports.E_CANCELED = new Error('request for lock canceled');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar errors_1 = require(\"./errors\");\nvar Semaphore = /** @class */ (function () {\n function Semaphore(_value, _cancelError) {\n if (_cancelError === void 0) { _cancelError = errors_1.E_CANCELED; }\n this._value = _value;\n this._cancelError = _cancelError;\n this._queue = [];\n this._weightedWaiters = [];\n }\n Semaphore.prototype.acquire = function (weight, priority) {\n var _this = this;\n if (weight === void 0) { weight = 1; }\n if (priority === void 0) { priority = 0; }\n if (weight <= 0)\n throw new Error(\"invalid weight \".concat(weight, \": must be positive\"));\n return new Promise(function (resolve, reject) {\n var task = { resolve: resolve, reject: reject, weight: weight, priority: priority };\n var i = findIndexFromEnd(_this._queue, function (other) { return priority <= other.priority; });\n if (i === -1 && weight <= _this._value) {\n // Needs immediate dispatch, skip the queue\n _this._dispatchItem(task);\n }\n else {\n _this._queue.splice(i + 1, 0, task);\n }\n });\n };\n Semaphore.prototype.runExclusive = function (callback_1) {\n return tslib_1.__awaiter(this, arguments, void 0, function (callback, weight, priority) {\n var _a, value, release;\n if (weight === void 0) { weight = 1; }\n if (priority === void 0) { priority = 0; }\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.acquire(weight, priority)];\n case 1:\n _a = _b.sent(), value = _a[0], release = _a[1];\n _b.label = 2;\n case 2:\n _b.trys.push([2, , 4, 5]);\n return [4 /*yield*/, callback(value)];\n case 3: return [2 /*return*/, _b.sent()];\n case 4:\n release();\n return [7 /*endfinally*/];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n Semaphore.prototype.waitForUnlock = function (weight, priority) {\n var _this = this;\n if (weight === void 0) { weight = 1; }\n if (priority === void 0) { priority = 0; }\n if (weight <= 0)\n throw new Error(\"invalid weight \".concat(weight, \": must be positive\"));\n if (this._couldLockImmediately(weight, priority)) {\n return Promise.resolve();\n }\n else {\n return new Promise(function (resolve) {\n if (!_this._weightedWaiters[weight - 1])\n _this._weightedWaiters[weight - 1] = [];\n insertSorted(_this._weightedWaiters[weight - 1], { resolve: resolve, priority: priority });\n });\n }\n };\n Semaphore.prototype.isLocked = function () {\n return this._value <= 0;\n };\n Semaphore.prototype.getValue = function () {\n return this._value;\n };\n Semaphore.prototype.setValue = function (value) {\n this._value = value;\n this._dispatchQueue();\n };\n Semaphore.prototype.release = function (weight) {\n if (weight === void 0) { weight = 1; }\n if (weight <= 0)\n throw new Error(\"invalid weight \".concat(weight, \": must be positive\"));\n this._value += weight;\n this._dispatchQueue();\n };\n Semaphore.prototype.cancel = function () {\n var _this = this;\n this._queue.forEach(function (entry) { return entry.reject(_this._cancelError); });\n this._queue = [];\n };\n Semaphore.prototype._dispatchQueue = function () {\n this._drainUnlockWaiters();\n while (this._queue.length > 0 && this._queue[0].weight <= this._value) {\n this._dispatchItem(this._queue.shift());\n this._drainUnlockWaiters();\n }\n };\n Semaphore.prototype._dispatchItem = function (item) {\n var previousValue = this._value;\n this._value -= item.weight;\n item.resolve([previousValue, this._newReleaser(item.weight)]);\n };\n Semaphore.prototype._newReleaser = function (weight) {\n var _this = this;\n var called = false;\n return function () {\n if (called)\n return;\n called = true;\n _this.release(weight);\n };\n };\n Semaphore.prototype._drainUnlockWaiters = function () {\n if (this._queue.length === 0) {\n for (var weight = this._value; weight > 0; weight--) {\n var waiters = this._weightedWaiters[weight - 1];\n if (!waiters)\n continue;\n waiters.forEach(function (waiter) { return waiter.resolve(); });\n this._weightedWaiters[weight - 1] = [];\n }\n }\n else {\n var queuedPriority_1 = this._queue[0].priority;\n for (var weight = this._value; weight > 0; weight--) {\n var waiters = this._weightedWaiters[weight - 1];\n if (!waiters)\n continue;\n var i = waiters.findIndex(function (waiter) { return waiter.priority <= queuedPriority_1; });\n (i === -1 ? waiters : waiters.splice(0, i))\n .forEach((function (waiter) { return waiter.resolve(); }));\n }\n }\n };\n Semaphore.prototype._couldLockImmediately = function (weight, priority) {\n return (this._queue.length === 0 || this._queue[0].priority < priority) &&\n weight <= this._value;\n };\n return Semaphore;\n}());\nfunction insertSorted(a, v) {\n var i = findIndexFromEnd(a, function (other) { return v.priority <= other.priority; });\n a.splice(i + 1, 0, v);\n}\nfunction findIndexFromEnd(a, predicate) {\n for (var i = a.length - 1; i >= 0; i--) {\n if (predicate(a[i])) {\n return i;\n }\n }\n return -1;\n}\nexports.default = Semaphore;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Semaphore_1 = require(\"./Semaphore\");\nvar Mutex = /** @class */ (function () {\n function Mutex(cancelError) {\n this._semaphore = new Semaphore_1.default(1, cancelError);\n }\n Mutex.prototype.acquire = function () {\n return tslib_1.__awaiter(this, arguments, void 0, function (priority) {\n var _a, releaser;\n if (priority === void 0) { priority = 0; }\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this._semaphore.acquire(1, priority)];\n case 1:\n _a = _b.sent(), releaser = _a[1];\n return [2 /*return*/, releaser];\n }\n });\n });\n };\n Mutex.prototype.runExclusive = function (callback, priority) {\n if (priority === void 0) { priority = 0; }\n return this._semaphore.runExclusive(function () { return callback(); }, 1, priority);\n };\n Mutex.prototype.isLocked = function () {\n return this._semaphore.isLocked();\n };\n Mutex.prototype.waitForUnlock = function (priority) {\n if (priority === void 0) { priority = 0; }\n return this._semaphore.waitForUnlock(1, priority);\n };\n Mutex.prototype.release = function () {\n if (this._semaphore.isLocked())\n this._semaphore.release();\n };\n Mutex.prototype.cancel = function () {\n return this._semaphore.cancel();\n };\n return Mutex;\n}());\nexports.default = Mutex;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withTimeout = void 0;\nvar tslib_1 = require(\"tslib\");\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar errors_1 = require(\"./errors\");\nfunction withTimeout(sync, timeout, timeoutError) {\n var _this = this;\n if (timeoutError === void 0) { timeoutError = errors_1.E_TIMEOUT; }\n return {\n acquire: function (weightOrPriority, priority) {\n var weight;\n if (isSemaphore(sync)) {\n weight = weightOrPriority;\n }\n else {\n weight = undefined;\n priority = weightOrPriority;\n }\n if (weight !== undefined && weight <= 0) {\n throw new Error(\"invalid weight \".concat(weight, \": must be positive\"));\n }\n return new Promise(function (resolve, reject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n var isTimeout, handle, ticket, release, e_1;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isTimeout = false;\n handle = setTimeout(function () {\n isTimeout = true;\n reject(timeoutError);\n }, timeout);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, (isSemaphore(sync)\n ? sync.acquire(weight, priority)\n : sync.acquire(priority))];\n case 2:\n ticket = _a.sent();\n if (isTimeout) {\n release = Array.isArray(ticket) ? ticket[1] : ticket;\n release();\n }\n else {\n clearTimeout(handle);\n resolve(ticket);\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n if (!isTimeout) {\n clearTimeout(handle);\n reject(e_1);\n }\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n }); });\n },\n runExclusive: function (callback, weight, priority) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var release, ticket;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n release = function () { return undefined; };\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 7, 8]);\n return [4 /*yield*/, this.acquire(weight, priority)];\n case 2:\n ticket = _a.sent();\n if (!Array.isArray(ticket)) return [3 /*break*/, 4];\n release = ticket[1];\n return [4 /*yield*/, callback(ticket[0])];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n release = ticket;\n return [4 /*yield*/, callback()];\n case 5: return [2 /*return*/, _a.sent()];\n case 6: return [3 /*break*/, 8];\n case 7:\n release();\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n },\n release: function (weight) {\n sync.release(weight);\n },\n cancel: function () {\n return sync.cancel();\n },\n waitForUnlock: function (weightOrPriority, priority) {\n var weight;\n if (isSemaphore(sync)) {\n weight = weightOrPriority;\n }\n else {\n weight = undefined;\n priority = weightOrPriority;\n }\n if (weight !== undefined && weight <= 0) {\n throw new Error(\"invalid weight \".concat(weight, \": must be positive\"));\n }\n return new Promise(function (resolve, reject) {\n var handle = setTimeout(function () { return reject(timeoutError); }, timeout);\n (isSemaphore(sync)\n ? sync.waitForUnlock(weight, priority)\n : sync.waitForUnlock(priority)).then(function () {\n clearTimeout(handle);\n resolve();\n });\n });\n },\n isLocked: function () { return sync.isLocked(); },\n getValue: function () { return sync.getValue(); },\n setValue: function (value) { return sync.setValue(value); },\n };\n}\nexports.withTimeout = withTimeout;\nfunction isSemaphore(sync) {\n return sync.getValue !== undefined;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tryAcquire = void 0;\nvar errors_1 = require(\"./errors\");\nvar withTimeout_1 = require(\"./withTimeout\");\n// eslint-disable-next-lisne @typescript-eslint/explicit-module-boundary-types\nfunction tryAcquire(sync, alreadyAcquiredError) {\n if (alreadyAcquiredError === void 0) { alreadyAcquiredError = errors_1.E_ALREADY_LOCKED; }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (0, withTimeout_1.withTimeout)(sync, 0, alreadyAcquiredError);\n}\nexports.tryAcquire = tryAcquire;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tryAcquire = exports.withTimeout = exports.Semaphore = exports.Mutex = void 0;\nvar tslib_1 = require(\"tslib\");\nvar Mutex_1 = require(\"./Mutex\");\nObject.defineProperty(exports, \"Mutex\", { enumerable: true, get: function () { return Mutex_1.default; } });\nvar Semaphore_1 = require(\"./Semaphore\");\nObject.defineProperty(exports, \"Semaphore\", { enumerable: true, get: function () { return Semaphore_1.default; } });\nvar withTimeout_1 = require(\"./withTimeout\");\nObject.defineProperty(exports, \"withTimeout\", { enumerable: true, get: function () { return withTimeout_1.withTimeout; } });\nvar tryAcquire_1 = require(\"./tryAcquire\");\nObject.defineProperty(exports, \"tryAcquire\", { enumerable: true, get: function () { return tryAcquire_1.tryAcquire; } });\ntslib_1.__exportStar(require(\"./errors\"), exports);\n",null,null,null,null,null,null,"'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst tslib = require('tslib');\ntslib.__exportStar(require('mongodb-memory-server-core'), exports);\n","/**\n * NullProvider — in-memory provider for tests and dev. Records every send\n * without dispatching anything. Inspect `.sent` to assert what would have\n * been delivered.\n */\n\nimport type { MailProvider, NormalizedEvent, SendArgs, SendResult } from '../../shared/types.js'\n\nlet counter = 0\n\nexport class NullProvider implements MailProvider {\n readonly name = 'null'\n readonly sendRatePerSecond = 1000\n public readonly sent: SendArgs[] = []\n\n async send(args: SendArgs): Promise<SendResult> {\n this.sent.push(args)\n return {\n providerId: `null-${Date.now()}-${++counter}`,\n status: 'accepted',\n }\n }\n\n async verifyWebhook(): Promise<boolean> {\n return true\n }\n\n parseWebhookEvents(): NormalizedEvent[] {\n return []\n }\n\n reset(): void {\n this.sent.length = 0\n }\n}\n","/**\n * Zod schemas for runtime validation at write boundaries — public API entry\n * points (fire, upsertSubscription, suppress, sendOneOff, scheduleBroadcast)\n * and REST handler bodies.\n *\n * Domain TypeScript types live in `./types.ts`; these schemas overlap with\n * those types deliberately so we get both compile-time and runtime checking\n * at the surfaces that need it.\n */\n\nimport { z } from 'zod'\n\n// ---------------------------------------------------------------------------\n// Primitive helpers\n// ---------------------------------------------------------------------------\n\nexport const externalIdSchema = z.string().min(1).max(256)\nexport const emailSchema = z.string().email().toLowerCase().trim()\nexport const slugSchema = z\n .string()\n .min(1)\n .max(128)\n .regex(/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/, 'must be kebab-case slug')\n\n// ---------------------------------------------------------------------------\n// Public API inputs\n// ---------------------------------------------------------------------------\n\nexport const fireInputSchema = z.object({\n eventName: z.string().min(1).max(128),\n externalId: externalIdSchema,\n properties: z.record(z.string(), z.unknown()).optional(),\n dedupeKey: z.string().min(1).max(512).optional(),\n})\nexport type FireInput = z.infer<typeof fireInputSchema>\n\nexport const registerEventSchema = z.object({\n name: z.string().min(1).max(128),\n dedupePolicy: z.enum(['once-per-contact', 'once-per-day', 'every-time']),\n})\nexport type RegisterEventInput = z.infer<typeof registerEventSchema>\n\nexport const upsertSubscriptionSchema = z.object({\n externalId: externalIdSchema,\n source: z.string().min(1).max(256),\n consentTimestamp: z.date().optional(),\n consentIp: z.string().optional(),\n consentUserAgent: z.string().optional(),\n})\nexport type UpsertSubscriptionInput = z.infer<typeof upsertSubscriptionSchema>\n\nexport const unsubscribeScopeSchema = z.enum(['all', 'marketing', 'transactional'])\nexport const unsubscribeReasonSchema = z.enum([\n 'user_request',\n 'hard_bounce',\n 'complaint',\n 'manual',\n 'gdpr_forget',\n 'list_cleaning',\n])\n\nexport const unsubscribeInputSchema = z.object({\n email: emailSchema,\n scope: unsubscribeScopeSchema,\n reason: unsubscribeReasonSchema.default('user_request'),\n source: z.string().max(256).default('manual'),\n notes: z.string().max(1024).optional(),\n})\nexport type UnsubscribeInput = z.infer<typeof unsubscribeInputSchema>\n\nexport const suppressInputSchema = z.object({\n email: emailSchema,\n scope: unsubscribeScopeSchema,\n reason: z.enum(['unsubscribed', 'hard_bounce', 'complaint', 'manual', 'list_cleaning', 'gdpr_forget']),\n source: z.string().max(256).default('manual'),\n notes: z.string().max(1024).optional(),\n expiresAt: z.date().optional(),\n})\nexport type SuppressInput = z.infer<typeof suppressInputSchema>\n\nexport const tagInputSchema = z.object({\n externalId: externalIdSchema,\n tag: z.string().min(1).max(128),\n})\nexport type TagInput = z.infer<typeof tagInputSchema>\n\nexport const sendOneOffInputSchema = z.object({\n templateSlug: slugSchema,\n externalId: externalIdSchema,\n vars: z.record(z.string(), z.unknown()).optional(),\n providerOverride: z.string().optional(),\n dedupeKey: z.string().min(1).max(512),\n})\nexport type SendOneOffInput = z.infer<typeof sendOneOffInputSchema>\n\n// ---------------------------------------------------------------------------\n// Flow step + predicate schemas (mirror types.ts)\n// ---------------------------------------------------------------------------\n\nexport const flowStepSchema: z.ZodType<unknown> = z.lazy(() =>\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('wait'),\n value: z.number().int().positive(),\n unit: z.enum(['minutes', 'hours', 'days', 'weeks']),\n }),\n z.object({\n type: z.literal('condition'),\n test: predicateSchema,\n ifFalse: z.enum(['continue', 'exit']),\n }),\n z.object({\n type: z.literal('branch'),\n test: predicateSchema,\n ifTrueSteps: z.array(flowStepSchema),\n ifFalseSteps: z.array(flowStepSchema),\n }),\n z.object({\n type: z.literal('send'),\n templateSlug: slugSchema,\n providerOverride: z.string().optional(),\n vars: z.record(z.string(), z.unknown()).optional(),\n }),\n z.object({\n type: z.literal('tag'),\n addTags: z.array(z.string()).optional(),\n removeTags: z.array(z.string()).optional(),\n }),\n z.object({\n type: z.literal('fire_event'),\n eventName: z.string().min(1).max(128),\n properties: z.record(z.string(), z.unknown()).optional(),\n }),\n z.object({\n type: z.literal('webhook'),\n url: z.string().url(),\n method: z.enum(['POST', 'PUT']).optional(),\n payload: z.record(z.string(), z.unknown()).optional(),\n failureMode: z.enum(['soft', 'fail_run']).optional(),\n }),\n z.object({\n type: z.literal('exit'),\n reason: z.string().optional(),\n }),\n ]),\n)\n\nexport const predicateSchema: z.ZodType<unknown> = z.lazy(() =>\n z.union([\n z.object({ hasTag: z.string() }),\n z.object({ notHasTag: z.string() }),\n z.object({ fieldEquals: z.object({ field: z.string(), value: z.unknown() }) }),\n z.object({ fieldExists: z.string() }),\n z.object({\n hasFiredEvent: z.string(),\n sinceFlowStart: z.boolean().optional(),\n withinDays: z.number().int().positive().optional(),\n }),\n z.object({\n notHasFiredEvent: z.string(),\n withinDays: z.number().int().positive().optional(),\n }),\n z.object({\n subscriptionStatus: z.enum(['subscribed', 'unsubscribed', 'pending_doi', 'bounced', 'complained']),\n }),\n z.object({\n hasOpened: z.object({\n templateSlug: slugSchema.optional(),\n sinceFlowStart: z.boolean().optional(),\n withinDays: z.number().int().positive().optional(),\n }),\n }),\n z.object({\n hasClicked: z.object({\n templateSlug: slugSchema.optional(),\n sinceFlowStart: z.boolean().optional(),\n withinDays: z.number().int().positive().optional(),\n }),\n }),\n z.object({\n hasOpenedExcludingBots: z.object({\n templateSlug: slugSchema.optional(),\n sinceFlowStart: z.boolean().optional(),\n withinDays: z.number().int().positive().optional(),\n }),\n }),\n z.object({\n hasClickedExcludingBots: z.object({\n templateSlug: slugSchema.optional(),\n sinceFlowStart: z.boolean().optional(),\n withinDays: z.number().int().positive().optional(),\n }),\n }),\n z.object({\n openedAtLeastN: z.object({ count: z.number().int().positive(), withinDays: z.number().int().positive() }),\n }),\n z.object({\n clickedAtLeastN: z.object({ count: z.number().int().positive(), withinDays: z.number().int().positive() }),\n }),\n z.object({ all: z.array(predicateSchema) }),\n z.object({ any: z.array(predicateSchema) }),\n z.object({ not: predicateSchema }),\n ]),\n)\n","/**\n * Mailer configuration shape. Required + optional surfaces with sane defaults.\n */\n\nimport type { Db } from 'mongodb'\nimport type IORedis from 'ioredis'\nimport type Handlebars from 'handlebars'\nimport type {\n ContactAdapter,\n MailProvider,\n} from '../shared/types.js'\n\nexport interface RedisOptions {\n host?: string\n port?: number\n password?: string\n url?: string\n db?: number\n username?: string\n tls?: boolean\n}\n\nexport interface CircuitBreakerThresholds {\n /** Trip when last-hour hard-bounce rate >= this percent (e.g. 2 = 2%). */\n hardBounceRatePctTrip: number\n complaintRatePctTrip: number\n combinedBounceRatePctTrip: number\n failedToSendRatePctDegrade: number\n windowMinutes: number\n minSendsBeforeEval: number\n}\n\nexport interface MailerConfig {\n // ---- Storage --------------------------------------------------------------\n db: Db\n collectionPrefix?: string\n adapter: ContactAdapter\n\n // ---- Queue ----------------------------------------------------------------\n /**\n * Connection options, a pre-built ioredis instance, or `null` to opt out of\n * BullMQ entirely (synchronous-only mode — used by tests).\n */\n redis: RedisOptions | IORedis | null\n\n // ---- Providers ------------------------------------------------------------\n providers: Record<string, MailProvider>\n defaultProvider: string\n defaultTransactionalProvider?: string\n\n // ---- Identity / URLs ------------------------------------------------------\n publicUrl: string\n unsubscribeSecret: string\n senderAddress?: string\n fromDefaults?: { name: string; email: string }\n transactionalFromDefaults?: { name: string; email: string }\n\n // ---- Compliance -----------------------------------------------------------\n requireDoubleOptIn?: boolean\n unsubscribeTokenLifetimeDays?: number\n transactionalRespectUnsubscribe?: boolean\n /** Slug of the transactional template sent for DOI confirmation. Defaults to 'doi-confirmation'. */\n doiTemplateSlug?: string\n /** How long the DOI token stays valid. Default 7 days. */\n doiTokenLifetimeDays?: number\n\n // ---- Circuit breaker ------------------------------------------------------\n circuitBreaker?: Partial<CircuitBreakerThresholds>\n\n // ---- Broadcast safety + throughput ---------------------------------------\n broadcastConfirmationThreshold?: number\n broadcastEnqueueBatchSize?: number\n broadcastEnqueueMaxWaiting?: number\n\n // ---- Worker behavior ------------------------------------------------------\n workerless?: boolean\n tickIntervalSeconds?: number\n sendConcurrency?: number\n sendRatePerSecond?: number\n softBouncePromotionThreshold?: number\n softBouncePromotionWindowDays?: number\n webhookRetryAttempts?: number\n sendRetryAttempts?: number\n\n // ---- Tracking -------------------------------------------------------------\n trackOpens?: boolean\n trackClicks?: boolean\n storeTrackingIp?: boolean\n storeRenderedBody?: boolean\n\n // ---- Hooks ----------------------------------------------------------------\n getAdminActor?: (req: any) => string\n onCircuitBreakerTrip?: (info: { reason: string; rates: Record<string, number> }) => Promise<void> | void\n onSendFailure?: (info: { send: any; error: Error }) => Promise<void> | void\n handlebarsHelpers?: Record<string, Handlebars.HelperDelegate>\n}\n\nexport type ResolvedConfig = Required<\n Pick<\n MailerConfig,\n | 'collectionPrefix'\n | 'requireDoubleOptIn'\n | 'unsubscribeTokenLifetimeDays'\n | 'transactionalRespectUnsubscribe'\n | 'doiTemplateSlug'\n | 'doiTokenLifetimeDays'\n | 'broadcastConfirmationThreshold'\n | 'broadcastEnqueueBatchSize'\n | 'broadcastEnqueueMaxWaiting'\n | 'workerless'\n | 'tickIntervalSeconds'\n | 'sendConcurrency'\n | 'sendRatePerSecond'\n | 'softBouncePromotionThreshold'\n | 'softBouncePromotionWindowDays'\n | 'webhookRetryAttempts'\n | 'sendRetryAttempts'\n | 'trackOpens'\n | 'trackClicks'\n | 'storeTrackingIp'\n | 'storeRenderedBody'\n >\n> & {\n circuitBreaker: CircuitBreakerThresholds\n} & MailerConfig\n\nexport const DEFAULTS = {\n collectionPrefix: 'mailer_',\n requireDoubleOptIn: false,\n unsubscribeTokenLifetimeDays: 90,\n transactionalRespectUnsubscribe: false,\n doiTemplateSlug: 'doi-confirmation',\n doiTokenLifetimeDays: 7,\n broadcastConfirmationThreshold: 1000,\n broadcastEnqueueBatchSize: 1000,\n broadcastEnqueueMaxWaiting: 5000,\n workerless: false,\n tickIntervalSeconds: 60,\n sendConcurrency: 5,\n sendRatePerSecond: 10,\n softBouncePromotionThreshold: 3,\n softBouncePromotionWindowDays: 30,\n webhookRetryAttempts: 3,\n sendRetryAttempts: 4,\n trackOpens: true,\n trackClicks: true,\n storeTrackingIp: false,\n storeRenderedBody: false,\n} as const\n\nexport const CIRCUIT_BREAKER_DEFAULTS: CircuitBreakerThresholds = {\n hardBounceRatePctTrip: 2,\n complaintRatePctTrip: 0.3,\n combinedBounceRatePctTrip: 5,\n failedToSendRatePctDegrade: 10,\n windowMinutes: 60,\n minSendsBeforeEval: 100,\n}\n\nexport function resolveConfig(c: MailerConfig): ResolvedConfig {\n return {\n ...c,\n collectionPrefix: c.collectionPrefix ?? DEFAULTS.collectionPrefix,\n requireDoubleOptIn: c.requireDoubleOptIn ?? DEFAULTS.requireDoubleOptIn,\n unsubscribeTokenLifetimeDays: c.unsubscribeTokenLifetimeDays ?? DEFAULTS.unsubscribeTokenLifetimeDays,\n transactionalRespectUnsubscribe: c.transactionalRespectUnsubscribe ?? DEFAULTS.transactionalRespectUnsubscribe,\n doiTemplateSlug: c.doiTemplateSlug ?? DEFAULTS.doiTemplateSlug,\n doiTokenLifetimeDays: c.doiTokenLifetimeDays ?? DEFAULTS.doiTokenLifetimeDays,\n broadcastConfirmationThreshold: c.broadcastConfirmationThreshold ?? DEFAULTS.broadcastConfirmationThreshold,\n broadcastEnqueueBatchSize: c.broadcastEnqueueBatchSize ?? DEFAULTS.broadcastEnqueueBatchSize,\n broadcastEnqueueMaxWaiting: c.broadcastEnqueueMaxWaiting ?? DEFAULTS.broadcastEnqueueMaxWaiting,\n workerless: c.workerless ?? DEFAULTS.workerless,\n tickIntervalSeconds: c.tickIntervalSeconds ?? DEFAULTS.tickIntervalSeconds,\n sendConcurrency: c.sendConcurrency ?? DEFAULTS.sendConcurrency,\n sendRatePerSecond: c.sendRatePerSecond ?? DEFAULTS.sendRatePerSecond,\n softBouncePromotionThreshold: c.softBouncePromotionThreshold ?? DEFAULTS.softBouncePromotionThreshold,\n softBouncePromotionWindowDays: c.softBouncePromotionWindowDays ?? DEFAULTS.softBouncePromotionWindowDays,\n webhookRetryAttempts: c.webhookRetryAttempts ?? DEFAULTS.webhookRetryAttempts,\n sendRetryAttempts: c.sendRetryAttempts ?? DEFAULTS.sendRetryAttempts,\n trackOpens: c.trackOpens ?? DEFAULTS.trackOpens,\n trackClicks: c.trackClicks ?? DEFAULTS.trackClicks,\n storeTrackingIp: c.storeTrackingIp ?? DEFAULTS.storeTrackingIp,\n storeRenderedBody: c.storeRenderedBody ?? DEFAULTS.storeRenderedBody,\n circuitBreaker: { ...CIRCUIT_BREAKER_DEFAULTS, ...(c.circuitBreaker ?? {}) },\n }\n}\n","/**\n * Mongo collection helpers + indexes for every mailer-owned collection.\n *\n * The single source of truth for `mailer_*` schemas lives in\n * `plans/02-data-model.md`. The TS interfaces here track that doc.\n *\n * const collections = getCollections(db)\n * await ensureIndexes(db)\n * await collections.events.insertOne({ ... })\n */\n\nimport type { Db, Collection, ObjectId } from 'mongodb'\n\nimport type {\n SubscriptionStatus,\n SendStatus,\n TemplateKind,\n SuppressionScope,\n SuppressionReason,\n FlowRunStatus,\n BroadcastStatus,\n HealthStatus,\n FlowGoal,\n} from '../../shared/enums.js'\nimport type { FlowStep, SegmentDefinition } from '../../shared/types.js'\n\n// ---------------------------------------------------------------------------\n// Document interfaces (per collection)\n// ---------------------------------------------------------------------------\n\nexport interface SubscriptionDoc {\n _id?: ObjectId\n externalId: string\n status: SubscriptionStatus\n subscribedAt: Date | null\n unsubscribedAt: Date | null\n unsubscribeReason: string | null\n doiTokenHash: string | null\n doiRequestedAt: Date | null\n doiConfirmedAt: Date | null\n doiIp: string | null\n doiUserAgent: string | null\n source: string\n emailAtSubscribe: string\n createdAt: Date\n updatedAt: Date\n}\n\nexport interface LeadDoc {\n _id?: ObjectId\n email: string\n source: string\n capturedFields: Record<string, unknown>\n status: 'lead' | 'promoted' | 'rejected'\n promotedToExternalId: string | null\n promotedAt: Date | null\n consentedAt: Date | null\n consentIp: string | null\n unsubscribedAt: Date | null\n createdAt: Date\n updatedAt: Date\n}\n\nexport interface EventDoc {\n _id?: ObjectId\n externalId: string\n name: string\n properties: Record<string, unknown>\n dedupeKey: string\n occurredAt: Date\n createdAt: Date\n}\n\nexport interface FlowTrigger {\n type: 'event' | 'segment_enter' | 'cron'\n eventName?: string\n segmentDefinition?: SegmentDefinition\n cronExpression?: string\n once: boolean\n}\n\nexport interface FlowDraft {\n steps: FlowStep[]\n notes: string\n lastModifiedBy: string\n lastModifiedAt: Date\n}\n\nexport interface FlowDoc {\n _id?: ObjectId\n slug: string\n name: string\n description: string\n trigger: FlowTrigger\n enabled: boolean\n steps: FlowStep[]\n version: number\n draft: FlowDraft | null\n goal: FlowGoal\n audience: string\n expectedVolumePerWeek: number | null\n stats: {\n activeRuns: number\n completedRuns: number\n sendsTotal: number\n sendsLast7Days: number\n }\n lastTriggerScanAt: Date | null\n publishedAt: Date | null\n publishedBy: string | null\n createdAt: Date\n updatedAt: Date\n}\n\nexport interface FlowVersionDoc {\n _id?: ObjectId\n flowId: ObjectId\n version: number\n steps: FlowStep[]\n trigger: FlowTrigger\n publishedAt: Date\n publishedBy: string\n}\n\nexport interface FlowRunHistoryEntry {\n stepIndex: number\n action:\n | 'entered'\n | 'wait_started'\n | 'wait_completed'\n | 'condition_evaluated'\n | 'branch_taken'\n | 'sent'\n | 'send_skipped'\n | 'tagged'\n | 'event_fired'\n | 'webhook_called'\n | 'exited'\n | 'failed'\n at: Date\n details?: Record<string, unknown>\n}\n\nexport interface FlowRunDoc {\n _id?: ObjectId\n externalId: string\n flowId: ObjectId\n flowSlug: string\n flowVersion: number\n emailAtEntry: string\n enteredAt: Date\n status: FlowRunStatus\n currentStepIndex: number\n currentBranchPath: Array<number | 'true' | 'false'>\n nextActionAt: Date\n attemptsForCurrentStep: number\n history: FlowRunHistoryEntry[]\n exitedAt: Date | null\n exitReason: string | null\n createdAt: Date\n updatedAt: Date\n}\n\nexport interface TemplateDraft {\n subject: string\n preheader: string\n /** MJML source (when template is authored as MJML). Empty string if Maily-authored. */\n mjml: string\n /** Maily editor JSON (when template is authored via the WYSIWYG editor). null otherwise. */\n editorJson: Record<string, unknown> | null\n notes: string\n lastModifiedBy: string\n lastModifiedAt: Date\n}\n\nexport interface TemplateDoc {\n _id?: ObjectId\n slug: string\n name: string\n description: string\n kind: TemplateKind\n fromName: string\n fromEmail: string\n replyTo: string | null\n providerOverride: string | null\n subject: string\n preheader: string\n body: {\n /** MJML source (set when published from MJML). */\n mjml: string\n /** Maily editor JSON (set when published from the WYSIWYG editor). null otherwise. */\n editorJson: Record<string, unknown> | null\n html: string\n plainText: string\n compiledAt: Date | null\n }\n variablesSchema: Record<\n string,\n {\n type: 'string' | 'number' | 'boolean' | 'date' | 'url'\n required: boolean\n description?: string\n defaultValue?: unknown\n }\n >\n draft: TemplateDraft | null\n tags: string[]\n trackOpens: boolean\n trackClicks: boolean\n stats: {\n sent: number\n delivered: number\n opened: number\n clicked: number\n bounced: number\n complained: number\n unsubscribed: number\n lastSentAt: Date | null\n }\n publishedAt: Date | null\n publishedBy: string | null\n createdAt: Date\n updatedAt: Date\n}\n\nexport interface TemplateVersionDoc {\n _id?: ObjectId\n templateId: ObjectId\n version: number\n mjml: string\n html: string\n plainText: string\n subject: string\n preheader: string\n publishedAt: Date\n publishedBy: string\n}\n\nexport interface SendDoc {\n _id?: ObjectId\n dedupeKey: string\n externalId: string\n emailAtSend: string\n templateId: ObjectId\n templateSlug: string\n flowRunId: ObjectId | null\n broadcastId: ObjectId | null\n manualSendBy: string | null\n kind: TemplateKind\n provider: string\n providerMessageId: string | null\n fromName: string\n fromEmail: string\n subject: string\n bodyHash: string\n status: SendStatus\n errorMessage: string | null\n bounceType: 'hard' | 'soft' | null\n bounceReason: string | null\n /** Pre-send map: every rewritten link's linkId → original URL. Lookup target on click. */\n links: Array<{ linkId: string; url: string }>\n /** Render-time vars from the flow step or one-off send. Re-applied at dispatch. */\n vars: Record<string, unknown>\n openedAt: Date | null\n openCount: number\n firstClickAt: Date | null\n clickCount: number\n /** History of actual clicks (a linkId may appear multiple times). */\n clickedLinks: Array<{ url: string; linkId: string; clickedAt: Date }>\n unsubscribedAt: Date | null\n complainedAt: Date | null\n queuedAt: Date\n sentAt: Date | null\n deliveredAt: Date | null\n}\n\nexport interface SuppressionDoc {\n _id?: ObjectId\n email: string | null\n emailHash: string\n scope: SuppressionScope\n reason: SuppressionReason\n source: string\n notes: string | null\n addedAt: Date\n expiresAt: Date | null\n}\n\nexport interface BroadcastDoc {\n _id?: ObjectId\n slug: string\n name: string\n templateSlug: string\n segmentDefinition: SegmentDefinition\n status: BroadcastStatus\n scheduledAt: Date | null\n startedAt: Date | null\n completedAt: Date | null\n confirmationRequired: boolean\n confirmedCount: number | null\n confirmedAt: Date | null\n confirmedBy: string | null\n recipientCount: number | null\n /** When true, dispatch fires each recipient at their local-timezone equivalent of `scheduledAt`. */\n respectRecipientTimezone?: boolean\n stats: {\n sent: number\n delivered: number\n opened: number\n clicked: number\n bounced: number\n complained: number\n unsubscribed: number\n }\n createdAt: Date\n createdBy: string\n updatedAt: Date\n}\n\nexport interface OutboxDoc {\n _id?: ObjectId\n payload: {\n type: 'event' | 'upsert_subscription' | 'unsubscribe'\n data: Record<string, unknown>\n dedupeKey: string\n }\n status: 'pending' | 'processed' | 'failed' | 'duplicate'\n attempts: number\n lastAttemptAt: Date | null\n lastError: string | null\n enqueuedAt: Date\n processedAt: Date | null\n}\n\nexport interface AuditLogDoc {\n _id?: ObjectId\n actor: string\n action: string\n resource: { collection: string; id?: ObjectId | string; slug?: string }\n before: Record<string, unknown> | null\n after: Record<string, unknown> | null\n diffSummary: string | null\n ip: string | null\n userAgent: string | null\n requestId: string | null\n occurredAt: Date\n}\n\nexport interface WebhookEventDoc {\n _id?: ObjectId\n provider: string\n providerEventId: string\n eventType: string\n normalizedType: 'delivered' | 'open' | 'click' | 'bounce' | 'complaint' | 'unsubscribe' | 'spam_report'\n providerMessageId: string\n email: string\n occurredAt: Date\n receivedAt: Date\n processed: boolean\n raw: unknown\n}\n\nexport interface HealthDoc {\n _id: 'singleton'\n windowStartedAt: Date\n windowDurationMs: number\n counters: {\n sent: number\n delivered: number\n bounced: number\n hardBounced: number\n softBounced: number\n complained: number\n failedToSend: number\n }\n rates: {\n bounceRate: number\n hardBounceRate: number\n complaintRate: number\n failureRate: number\n }\n status: HealthStatus\n trippedAt: Date | null\n trippedReason: string | null\n manuallyResumedAt: Date | null\n updatedAt: Date\n}\n\nexport interface ContactTagDoc {\n _id?: ObjectId\n externalId: string\n tag: string\n appliedBy: 'flow' | 'admin' | 'script' | 'import'\n appliedAt: Date\n}\n\n// ---------------------------------------------------------------------------\n// Collection factory\n// ---------------------------------------------------------------------------\n\nexport interface Collections {\n subscriptions: Collection<SubscriptionDoc>\n leads: Collection<LeadDoc>\n events: Collection<EventDoc>\n flows: Collection<FlowDoc>\n flowVersions: Collection<FlowVersionDoc>\n flowRuns: Collection<FlowRunDoc>\n templates: Collection<TemplateDoc>\n templateVersions: Collection<TemplateVersionDoc>\n sends: Collection<SendDoc>\n suppressions: Collection<SuppressionDoc>\n broadcasts: Collection<BroadcastDoc>\n outbox: Collection<OutboxDoc>\n auditLog: Collection<AuditLogDoc>\n webhookEvents: Collection<WebhookEventDoc>\n health: Collection<HealthDoc>\n contactTags: Collection<ContactTagDoc>\n}\n\nexport function getCollections(db: Db, prefix = 'mailer_'): Collections {\n return {\n subscriptions: db.collection<SubscriptionDoc>(`${prefix}subscriptions`),\n leads: db.collection<LeadDoc>(`${prefix}leads`),\n events: db.collection<EventDoc>(`${prefix}events`),\n flows: db.collection<FlowDoc>(`${prefix}flows`),\n flowVersions: db.collection<FlowVersionDoc>(`${prefix}flow_versions`),\n flowRuns: db.collection<FlowRunDoc>(`${prefix}flow_runs`),\n templates: db.collection<TemplateDoc>(`${prefix}templates`),\n templateVersions: db.collection<TemplateVersionDoc>(`${prefix}template_versions`),\n sends: db.collection<SendDoc>(`${prefix}sends`),\n suppressions: db.collection<SuppressionDoc>(`${prefix}suppressions`),\n broadcasts: db.collection<BroadcastDoc>(`${prefix}broadcasts`),\n outbox: db.collection<OutboxDoc>(`${prefix}outbox`),\n auditLog: db.collection<AuditLogDoc>(`${prefix}audit_log`),\n webhookEvents: db.collection<WebhookEventDoc>(`${prefix}webhook_events`),\n health: db.collection<HealthDoc>(`${prefix}health`),\n contactTags: db.collection<ContactTagDoc>(`${prefix}contact_tags`),\n }\n}\n\n// ---------------------------------------------------------------------------\n// Index ensurer\n// ---------------------------------------------------------------------------\n\nexport async function ensureIndexes(db: Db, prefix = 'mailer_'): Promise<void> {\n const c = getCollections(db, prefix)\n\n await Promise.all([\n c.subscriptions.createIndexes([\n { key: { externalId: 1 }, unique: true },\n { key: { status: 1, unsubscribedAt: -1 } },\n ]),\n c.leads.createIndexes([\n { key: { email: 1 }, unique: true },\n { key: { status: 1, createdAt: -1 } },\n ]),\n c.events.createIndexes([\n { key: { dedupeKey: 1 }, unique: true },\n { key: { externalId: 1, occurredAt: -1 } },\n { key: { name: 1, occurredAt: -1 } },\n { key: { externalId: 1, name: 1 } },\n ]),\n c.flows.createIndexes([\n { key: { slug: 1 }, unique: true },\n { key: { enabled: 1, 'trigger.type': 1, 'trigger.eventName': 1 } },\n ]),\n c.flowVersions.createIndexes([{ key: { flowId: 1, version: 1 }, unique: true }]),\n c.flowRuns.createIndexes([\n { key: { status: 1, nextActionAt: 1 } },\n { key: { externalId: 1, flowId: 1 } },\n { key: { flowId: 1, status: 1 } },\n ]),\n c.templates.createIndexes([\n { key: { slug: 1 }, unique: true },\n { key: { tags: 1 } },\n { key: { kind: 1 } },\n ]),\n c.templateVersions.createIndexes([{ key: { templateId: 1, version: 1 }, unique: true }]),\n c.sends.createIndexes([\n { key: { dedupeKey: 1 }, unique: true },\n { key: { externalId: 1, sentAt: -1 } },\n { key: { templateId: 1, sentAt: -1 } },\n { key: { flowRunId: 1 }, sparse: true },\n { key: { broadcastId: 1 }, sparse: true },\n { key: { providerMessageId: 1 }, sparse: true },\n { key: { status: 1, queuedAt: 1 } },\n ]),\n c.suppressions.createIndexes([\n { key: { email: 1, scope: 1 }, unique: true, partialFilterExpression: { email: { $type: 'string' } } },\n { key: { emailHash: 1 } },\n { key: { addedAt: -1 } },\n ]),\n c.broadcasts.createIndexes([\n { key: { slug: 1 }, unique: true },\n { key: { status: 1, scheduledAt: 1 } },\n ]),\n c.outbox.createIndexes([\n { key: { status: 1, enqueuedAt: 1 } },\n { key: { 'payload.dedupeKey': 1 }, unique: true },\n ]),\n c.auditLog.createIndexes([\n { key: { occurredAt: -1 } },\n { key: { 'resource.collection': 1, 'resource.id': 1, occurredAt: -1 } },\n { key: { actor: 1, occurredAt: -1 } },\n ]),\n c.webhookEvents.createIndexes([\n { key: { provider: 1, providerEventId: 1 }, unique: true },\n { key: { providerMessageId: 1 } },\n { key: { processed: 1, receivedAt: 1 } },\n ]),\n c.contactTags.createIndexes([\n { key: { externalId: 1, tag: 1 }, unique: true },\n { key: { tag: 1 } },\n ]),\n ])\n}\n","/**\n * Event registry + dedupe-key policy. INVARIANT 1: every `mailer_events` row\n * has a unique dedupeKey. Callers either pass one or `mailer.registerEvent`\n * declares a policy and we derive it.\n */\n\nimport crypto from 'node:crypto'\n\nexport type DedupePolicy = 'once-per-contact' | 'once-per-day' | 'every-time'\n\nexport interface EventRegistration {\n name: string\n dedupePolicy: DedupePolicy\n}\n\nexport class EventRegistry {\n private readonly policies = new Map<string, DedupePolicy>()\n\n register(reg: EventRegistration): void {\n this.policies.set(reg.name, reg.dedupePolicy)\n }\n\n has(name: string): boolean {\n return this.policies.has(name)\n }\n\n policy(name: string): DedupePolicy | undefined {\n return this.policies.get(name)\n }\n\n /**\n * Derive a dedupeKey for an event call. Returns null when no policy is\n * registered AND no key was passed — caller should throw.\n */\n deriveKey(\n name: string,\n externalId: string,\n passedKey: string | undefined,\n now: Date,\n ): string | null {\n if (passedKey) return passedKey\n const policy = this.policies.get(name)\n if (!policy) return null\n\n switch (policy) {\n case 'once-per-contact':\n return `${externalId}:${name}`\n case 'once-per-day':\n return `${externalId}:${name}:${isoDay(now)}`\n case 'every-time':\n return `${externalId}:${name}:${randomId()}`\n }\n }\n}\n\nfunction isoDay(d: Date): string {\n return d.toISOString().slice(0, 10)\n}\n\nfunction randomId(): string {\n return crypto.randomBytes(8).toString('hex')\n}\n","/**\n * HMAC-signed tokens for unsubscribe + preference-center URLs.\n *\n * Format: base64url(payload) '.' base64url(hmac)\n * payload = JSON.stringify({ e: email, s: scope, x: expiresAtMs })\n * hmac = HMAC-SHA256(secret, payload)\n *\n * Tokens expire because long-lived signed URLs are a liability.\n */\n\nimport crypto from 'node:crypto'\nimport type { SuppressionScope } from '../shared/enums.js'\n\nexport interface UnsubscribeTokenPayload {\n email: string\n scope: SuppressionScope\n expiresAt: Date\n}\n\nexport function signUnsubscribeToken(\n payload: UnsubscribeTokenPayload,\n secret: string,\n): string {\n const body = JSON.stringify({\n e: payload.email.toLowerCase(),\n s: payload.scope,\n x: payload.expiresAt.getTime(),\n })\n const bodyB64 = b64url(Buffer.from(body, 'utf8'))\n const hmac = crypto.createHmac('sha256', secret).update(bodyB64).digest()\n return `${bodyB64}.${b64url(hmac)}`\n}\n\nexport function verifyUnsubscribeToken(\n token: string,\n secret: string,\n now: Date = new Date(),\n): UnsubscribeTokenPayload | null {\n const parts = token.split('.')\n if (parts.length !== 2) return null\n const [bodyB64, sigB64] = parts as [string, string]\n\n const expected = crypto.createHmac('sha256', secret).update(bodyB64).digest()\n let actual: Buffer\n try {\n actual = b64urlDecode(sigB64)\n } catch {\n return null\n }\n if (expected.length !== actual.length) return null\n if (!crypto.timingSafeEqual(expected, actual)) return null\n\n let body: { e?: string; s?: string; x?: number }\n try {\n body = JSON.parse(b64urlDecode(bodyB64).toString('utf8'))\n } catch {\n return null\n }\n if (!body.e || !body.s || typeof body.x !== 'number') return null\n if (body.x < now.getTime()) return null\n if (body.s !== 'all' && body.s !== 'marketing' && body.s !== 'transactional') return null\n\n return {\n email: body.e,\n scope: body.s,\n expiresAt: new Date(body.x),\n }\n}\n\nfunction b64url(buf: Buffer): string {\n return buf.toString('base64').replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '')\n}\n\nfunction b64urlDecode(s: string): Buffer {\n const padded = s.replace(/-/g, '+').replace(/_/g, '/') + '==='.slice((s.length + 3) % 4)\n return Buffer.from(padded, 'base64')\n}\n\n/**\n * sha256 hex digest, used for storing email hashes (GDPR forget) and dedup helpers.\n */\nexport function sha256Hex(input: string): string {\n return crypto.createHash('sha256').update(input).digest('hex')\n}\n\n// ---------------------------------------------------------------------------\n// Double opt-in tokens\n// ---------------------------------------------------------------------------\n\nexport interface DoiTokenPayload {\n externalId: string\n expiresAt: Date\n}\n\n/**\n * Sign a DOI confirmation token. Same shape as the unsubscribe token, but\n * scoped to \"this externalId confirmed their subscription.\"\n */\nexport function signDoiToken(payload: DoiTokenPayload, secret: string): string {\n const body = JSON.stringify({\n i: payload.externalId,\n x: payload.expiresAt.getTime(),\n k: 'doi',\n })\n const bodyB64 = b64url(Buffer.from(body, 'utf8'))\n const hmac = crypto.createHmac('sha256', secret).update(bodyB64).digest()\n return `${bodyB64}.${b64url(hmac)}`\n}\n\nexport function verifyDoiToken(token: string, secret: string, now: Date = new Date()): DoiTokenPayload | null {\n const parts = token.split('.')\n if (parts.length !== 2) return null\n const [bodyB64, sigB64] = parts as [string, string]\n\n const expected = crypto.createHmac('sha256', secret).update(bodyB64).digest()\n let actual: Buffer\n try {\n actual = b64urlDecode(sigB64)\n } catch {\n return null\n }\n if (expected.length !== actual.length) return null\n if (!crypto.timingSafeEqual(expected, actual)) return null\n\n let body: { i?: string; x?: number; k?: string }\n try {\n body = JSON.parse(b64urlDecode(bodyB64).toString('utf8'))\n } catch {\n return null\n }\n if (!body.i || typeof body.x !== 'number' || body.k !== 'doi') return null\n if (body.x < now.getTime()) return null\n\n return { externalId: body.i, expiresAt: new Date(body.x) }\n}\n","/**\n * BullMQ wiring: four queues + the corresponding worker factories.\n *\n * mailer:tick → recovery sweep + event-trigger scan + scheduled broadcasts + outbox drain\n * mailer:advance → per-flow_run wakeup at nextActionAt (delayed jobs)\n * mailer:send → provider dispatch for a single send row\n * mailer:webhook → async normalization + apply of inbound provider events\n *\n * The Mailer class instantiates queues at init() and workers at startWorkers().\n * Job handlers themselves live in `runner/` and `api/webhook-processor.ts`.\n */\n\nimport { Queue, Worker, type QueueOptions, type WorkerOptions } from 'bullmq'\nimport IORedis, { type RedisOptions as IORedisOptions } from 'ioredis'\n\nimport type { RedisOptions } from '../config.js'\n\n/**\n * Minimal queue surface the runner depends on. Production wraps BullMQ; tests\n * can supply a no-op implementation.\n */\nexport interface QueueAPI {\n add(name: string, data: unknown, opts?: { delay?: number; attempts?: number; backoff?: { type: 'exponential'; delay: number }; jobId?: string }): Promise<unknown>\n getWaitingCount(): Promise<number>\n close(): Promise<void>\n}\n\nexport interface Queues {\n tick: QueueAPI\n advance: QueueAPI\n send: QueueAPI\n webhook: QueueAPI\n}\n\nfunction adaptBullQueue(q: Queue): QueueAPI {\n return {\n add: (name, data, opts) => q.add(name, data, opts),\n getWaitingCount: () => q.getWaitingCount(),\n close: () => q.close(),\n }\n}\n\nexport function noopQueueAPI(): QueueAPI {\n return {\n add: async () => undefined,\n getWaitingCount: async () => 0,\n close: async () => undefined,\n }\n}\n\nexport function noopQueues(): Queues {\n return {\n tick: noopQueueAPI(),\n advance: noopQueueAPI(),\n send: noopQueueAPI(),\n webhook: noopQueueAPI(),\n }\n}\n\nexport interface QueueNames {\n tick: string\n advance: string\n send: string\n webhook: string\n}\n\nexport function namespacedQueueNames(prefix: string): QueueNames {\n // BullMQ disallows `:` in queue names; use dashes for the namespace.\n void prefix\n return {\n tick: 'mailer-tick',\n advance: 'mailer-advance',\n send: 'mailer-send',\n webhook: 'mailer-webhook',\n }\n}\n\nexport function makeRedis(opts: RedisOptions | IORedis): IORedis {\n // Pre-built instance — used by tests with ioredis-mock and by hosts that\n // want to share a connection with other parts of their app.\n if (isRedisLike(opts)) return opts\n\n const config: IORedisOptions = {\n maxRetriesPerRequest: null, // BullMQ requirement\n enableReadyCheck: false,\n }\n if (opts.url) {\n return new IORedis(opts.url, config)\n }\n return new IORedis({\n ...config,\n host: opts.host ?? '127.0.0.1',\n port: opts.port ?? 6379,\n password: opts.password,\n db: opts.db,\n username: opts.username,\n tls: opts.tls ? {} : undefined,\n })\n}\n\nfunction isRedisLike(x: unknown): x is IORedis {\n return !!x && typeof x === 'object' && typeof (x as any).get === 'function' && typeof (x as any).set === 'function'\n}\n\nexport function createQueues(redis: IORedis): { queues: Queues; bullQueues: BullQueues } {\n const names = namespacedQueueNames('')\n const qOpts: QueueOptions = { connection: redis }\n const bullQueues: BullQueues = {\n tick: new Queue(names.tick, qOpts),\n advance: new Queue(names.advance, qOpts),\n send: new Queue(names.send, qOpts),\n webhook: new Queue(names.webhook, qOpts),\n }\n return {\n queues: {\n tick: adaptBullQueue(bullQueues.tick),\n advance: adaptBullQueue(bullQueues.advance),\n send: adaptBullQueue(bullQueues.send),\n webhook: adaptBullQueue(bullQueues.webhook),\n },\n bullQueues,\n }\n}\n\nexport interface BullQueues {\n tick: Queue\n advance: Queue\n send: Queue\n webhook: Queue\n}\n\n/** Register the repeating mailer-tick job. Idempotent (BullMQ dedupes by jobId). */\nexport async function scheduleTick(bullQueues: BullQueues, intervalSeconds: number): Promise<void> {\n await bullQueues.tick.upsertJobScheduler(\n 'mailer-tick-repeat',\n { every: intervalSeconds * 1000 },\n { name: 'tick', data: {} },\n )\n}\n\nexport interface CreateWorkersInput {\n redis: IORedis\n concurrency: { send: number }\n sendRateLimit?: { max: number; durationMs: number }\n handlers: {\n tick: (data: unknown) => Promise<void>\n advance: (data: { flowRunId: string }) => Promise<void>\n send: (data: { sendId: string }) => Promise<void>\n webhook: (data: { provider: string }) => Promise<void>\n }\n}\n\nexport interface Workers {\n tick: Worker\n advance: Worker\n send: Worker\n webhook: Worker\n}\n\nexport function createWorkers(input: CreateWorkersInput): Workers {\n const names = namespacedQueueNames('')\n const base: WorkerOptions = { connection: input.redis }\n\n const tick = new Worker(names.tick, async (job) => input.handlers.tick(job.data), {\n ...base,\n concurrency: 1, // single tick driver per worker process\n })\n\n const advance = new Worker(\n names.advance,\n async (job) => input.handlers.advance(job.data as any),\n { ...base, concurrency: 10 },\n )\n\n const sendOpts: WorkerOptions = {\n ...base,\n concurrency: input.concurrency.send,\n limiter: input.sendRateLimit\n ? { max: input.sendRateLimit.max, duration: input.sendRateLimit.durationMs }\n : undefined,\n }\n const send = new Worker(names.send, async (job) => input.handlers.send(job.data as any), sendOpts)\n\n const webhook = new Worker(\n names.webhook,\n async (job) => input.handlers.webhook(job.data as any),\n { ...base, concurrency: 4 },\n )\n\n return { tick, advance, send, webhook }\n}\n\nexport async function closeQueues(queues: Queues): Promise<void> {\n await Promise.all([queues.tick.close(), queues.advance.close(), queues.send.close(), queues.webhook.close()])\n}\n\nexport async function closeBullQueues(b: BullQueues): Promise<void> {\n await Promise.all([b.tick.close(), b.advance.close(), b.send.close(), b.webhook.close()])\n}\n\nexport async function closeWorkers(workers: Workers): Promise<void> {\n await Promise.all([workers.tick.close(), workers.advance.close(), workers.send.close(), workers.webhook.close()])\n}\n","/**\n * Event-trigger scan. Finds new event firings since each flow's\n * lastTriggerScanAt watermark, creates flow_runs for matching contacts,\n * enqueues immediate-advance jobs.\n */\n\nimport type { RunnerContext } from './index.js'\nimport type { FlowDoc, EventDoc } from '../models/index.js'\n\nconst BATCH_SIZE = 1000\n\nexport async function processNewlyFiredEventTriggers(ctx: RunnerContext): Promise<void> {\n const flows = await ctx.collections.flows.find({ enabled: true, 'trigger.type': 'event' }).toArray()\n for (const flow of flows) {\n await processFlowTriggers(flow, ctx)\n }\n}\n\nasync function processFlowTriggers(flow: FlowDoc, ctx: RunnerContext): Promise<void> {\n const eventName = flow.trigger.eventName\n if (!eventName) return\n const since = flow.lastTriggerScanAt ?? flow.createdAt\n\n const events = await ctx.collections.events\n .find({ name: eventName, occurredAt: { $gt: since } })\n .sort({ occurredAt: 1 })\n .limit(BATCH_SIZE)\n .toArray()\n\n if (events.length === 0) return\n\n for (const event of events) {\n await tryEnterFlow(flow, event, ctx)\n }\n\n const newestOccurredAt = events[events.length - 1]!.occurredAt\n await ctx.collections.flows.updateOne(\n { _id: flow._id },\n { $set: { lastTriggerScanAt: newestOccurredAt, updatedAt: new Date() } },\n )\n}\n\nasync function tryEnterFlow(flow: FlowDoc, event: EventDoc, ctx: RunnerContext): Promise<void> {\n if (flow.trigger.once) {\n const existing = await ctx.collections.flowRuns.findOne(\n { externalId: event.externalId, flowId: flow._id },\n { projection: { _id: 1 } },\n )\n if (existing) return\n }\n\n const sub = await ctx.collections.subscriptions.findOne({ externalId: event.externalId })\n if (!sub || sub.status !== 'subscribed') return\n\n const result = await ctx.collections.flowRuns.insertOne({\n externalId: event.externalId,\n flowId: flow._id!,\n flowSlug: flow.slug,\n flowVersion: flow.version,\n emailAtEntry: sub.emailAtSubscribe,\n enteredAt: new Date(),\n status: 'active',\n currentStepIndex: 0,\n currentBranchPath: [],\n nextActionAt: new Date(),\n attemptsForCurrentStep: 0,\n history: [{ stepIndex: -1, action: 'entered', at: new Date(), details: { eventDedupeKey: event.dedupeKey } }],\n exitedAt: null,\n exitReason: null,\n createdAt: new Date(),\n updatedAt: new Date(),\n })\n\n await ctx.queues.advance.add('advance', { flowRunId: String(result.insertedId) })\n}\n","/**\n * Predicate evaluator. Resolves all Predicate variants from `shared/types.ts`\n * against a Contact (host-side fields/tags) + mailer state (events, sends,\n * subscription).\n *\n * Network calls hit Mongo. Cache the Contact at the call site if you evaluate\n * many predicates in a row.\n */\n\nimport type { Contact, Predicate } from '../../shared/types.js'\nimport type { Collections, FlowRunDoc, SendDoc } from '../models/index.js'\n\nexport interface PredicateContext {\n contact: Contact\n run: FlowRunDoc\n collections: Collections\n now?: Date\n}\n\nconst BOT_UA_RE = /Mimecast|SafeLinks|proofpoint|HeadlessChrome|Googlebot|bingbot/i\n\nexport async function evaluatePredicate(\n predicate: Predicate,\n ctx: PredicateContext,\n): Promise<boolean> {\n const p = predicate as any\n\n if ('hasTag' in p) return ctx.contact.tags.includes(p.hasTag)\n if ('notHasTag' in p) return !ctx.contact.tags.includes(p.notHasTag)\n\n if ('fieldEquals' in p) {\n return ctx.contact.fields[p.fieldEquals.field] === p.fieldEquals.value\n }\n if ('fieldExists' in p) {\n return ctx.contact.fields[p.fieldExists] !== undefined\n }\n\n if ('subscriptionStatus' in p) {\n const sub = await ctx.collections.subscriptions.findOne({ externalId: ctx.contact.externalId })\n return sub?.status === p.subscriptionStatus\n }\n\n if ('hasFiredEvent' in p) {\n return hasEvent(ctx, p.hasFiredEvent, { sinceFlowStart: p.sinceFlowStart, withinDays: p.withinDays })\n }\n if ('notHasFiredEvent' in p) {\n return !(await hasEvent(ctx, p.notHasFiredEvent, { withinDays: p.withinDays }))\n }\n\n if ('hasOpened' in p) return await openOrClickCount(ctx, 'opened', p.hasOpened, false) > 0\n if ('hasClicked' in p) return await openOrClickCount(ctx, 'clicked', p.hasClicked, false) > 0\n if ('hasOpenedExcludingBots' in p) return await openOrClickCount(ctx, 'opened', p.hasOpenedExcludingBots, true) > 0\n if ('hasClickedExcludingBots' in p) return await openOrClickCount(ctx, 'clicked', p.hasClickedExcludingBots, true) > 0\n if ('openedAtLeastN' in p) return await openOrClickCount(ctx, 'opened', p.openedAtLeastN, true) >= p.openedAtLeastN.count\n if ('clickedAtLeastN' in p) return await openOrClickCount(ctx, 'clicked', p.clickedAtLeastN, true) >= p.clickedAtLeastN.count\n\n if ('all' in p) {\n for (const sub of p.all) {\n if (!(await evaluatePredicate(sub, ctx))) return false\n }\n return true\n }\n if ('any' in p) {\n for (const sub of p.any) {\n if (await evaluatePredicate(sub, ctx)) return true\n }\n return false\n }\n if ('not' in p) {\n return !(await evaluatePredicate(p.not, ctx))\n }\n\n return false\n}\n\nasync function hasEvent(\n ctx: PredicateContext,\n name: string,\n opts: { sinceFlowStart?: boolean; withinDays?: number },\n): Promise<boolean> {\n const filter: any = { externalId: ctx.contact.externalId, name }\n const lower = effectiveLowerBound(ctx, opts)\n if (lower) filter.occurredAt = { $gt: lower }\n const found = await ctx.collections.events.findOne(filter, { projection: { _id: 1 } })\n return !!found\n}\n\nasync function openOrClickCount(\n ctx: PredicateContext,\n kind: 'opened' | 'clicked',\n opts: { templateSlug?: string; sinceFlowStart?: boolean; withinDays?: number },\n excludeBots: boolean,\n): Promise<number> {\n const filter: any = { externalId: ctx.contact.externalId }\n if (opts.templateSlug) filter.templateSlug = opts.templateSlug\n if (kind === 'opened') filter.openedAt = { $ne: null }\n if (kind === 'clicked') filter.firstClickAt = { $ne: null }\n const lower = effectiveLowerBound(ctx, opts)\n if (lower) filter[kind === 'opened' ? 'openedAt' : 'firstClickAt'] = { $gt: lower }\n\n if (!excludeBots) {\n return await ctx.collections.sends.countDocuments(filter)\n }\n\n // Bot filter is best-effort: we only know UA for clicks (open pixel hits don't reliably carry one)\n const docs = await ctx.collections.sends.find(filter).limit(1000).toArray()\n let n = 0\n for (const s of docs) {\n if (kind === 'opened') {\n n++\n continue\n }\n const hasHumanClick = (s as SendDoc).clickedLinks?.some((c: any) => !c.userAgent || !BOT_UA_RE.test(c.userAgent))\n if (hasHumanClick) n++\n }\n return n\n}\n\nfunction effectiveLowerBound(ctx: PredicateContext, opts: { sinceFlowStart?: boolean; withinDays?: number }): Date | null {\n const now = ctx.now ?? new Date()\n if (opts.sinceFlowStart) return ctx.run.enteredAt\n if (opts.withinDays && opts.withinDays > 0) {\n return new Date(now.getTime() - opts.withinDays * 24 * 60 * 60 * 1000)\n }\n return null\n}\n","/**\n * Template render pipeline.\n *\n * authorMjml + handlebarsContext\n * ↓ Handlebars render → MJML with substituted vars\n * ↓ mjml-core compile → HTML\n * ↓ html-to-text derive → plain text alternative\n * ↓ applyTracking(sendId) → tracked HTML with rewritten links + open pixel\n *\n * Subject and preheader run through Handlebars too. Plain text is auto-derived\n * unless the template explicitly overrides it.\n */\n\nimport crypto from 'node:crypto'\nimport Handlebars from 'handlebars'\nimport { convert as htmlToText } from 'html-to-text'\nimport mjml2html from 'mjml'\n\nimport type { Contact } from '../../shared/types.js'\nimport type { TemplateDoc } from '../models/index.js'\n\n// ---------------------------------------------------------------------------\n// Compile (publish-time)\n// ---------------------------------------------------------------------------\n\nexport interface CompileResult {\n html: string\n plainText: string\n errors: Array<{ line?: number; message: string; tagName?: string; formattedMessage?: string }>\n}\n\n/** Compile MJML → HTML, then derive plain text. Called at template publish time. */\nexport async function compileTemplate(mjml: string): Promise<CompileResult> {\n const out = await mjml2html(mjml, { validationLevel: 'soft', minify: false })\n const plainText = derivePlaintext(out.html)\n return { html: out.html, plainText, errors: out.errors ?? [] }\n}\n\n/**\n * Compile Maily editor JSON (Tiptap-shape) → HTML via `@maily-to/render`, then\n * derive plain text. Called at template publish time when the template was\n * authored via the WYSIWYG editor.\n */\nexport async function compileMailyTemplate(content: unknown): Promise<CompileResult> {\n const { render } = await import('@maily-to/render')\n const html = await render(content as any)\n const plainText = derivePlaintext(html)\n return { html, plainText, errors: [] }\n}\n\n/** Auto-derive plain text from compiled HTML. */\nexport function derivePlaintext(html: string): string {\n return htmlToText(html, {\n wordwrap: 80,\n selectors: [\n { selector: 'img', format: 'skip' },\n { selector: 'a', options: { hideLinkHrefIfSameAsText: true } },\n ],\n }).trim()\n}\n\n// ---------------------------------------------------------------------------\n// Render (send-time)\n// ---------------------------------------------------------------------------\n\nexport interface RenderContext {\n contact: Contact\n vars: Record<string, unknown>\n /** URL the recipient hits to one-click unsubscribe. */\n unsubscribeUrl: string\n /** URL to view this email in a browser (when implemented). */\n viewInBrowserUrl?: string\n /** URL for the preference center (when implemented). */\n preferenceCenterUrl?: string\n /** Configured sender postal address (CAN-SPAM). */\n senderAddress?: string\n}\n\nexport interface RenderedTemplate {\n subject: string\n preheader: string\n html: string\n plainText: string\n fromName: string\n fromEmail: string\n replyTo: string | null\n}\n\nexport interface RenderOptions {\n /** Extra Handlebars helpers contributed by the host. */\n helpers?: Record<string, Handlebars.HelperDelegate>\n}\n\n/**\n * Render a published template against a contact + vars context. Returns the\n * substituted subject/preheader/html/plainText. Tracking is NOT applied here —\n * that step needs the send id and runs separately via `applyTracking`.\n */\nexport async function renderTemplate(\n template: TemplateDoc,\n ctx: RenderContext,\n opts: RenderOptions = {},\n): Promise<RenderedTemplate> {\n const hb = makeHandlebars(opts.helpers)\n\n const subject = hb.compile(template.subject)(ctx)\n const preheader = hb.compile(template.preheader)(ctx)\n\n // Prefer the compiled HTML if present; fall back to compiling MJML on the fly.\n let html: string\n if (template.body.html) {\n html = hb.compile(template.body.html)(ctx)\n } else {\n const compiled = await compileTemplate(template.body.mjml)\n html = hb.compile(compiled.html)(ctx)\n }\n\n const plainText = template.body.plainText\n ? hb.compile(template.body.plainText)(ctx)\n : derivePlaintext(html)\n\n return {\n subject,\n preheader,\n html,\n plainText,\n fromName: template.fromName,\n fromEmail: template.fromEmail,\n replyTo: template.replyTo,\n }\n}\n\n// ---------------------------------------------------------------------------\n// Tracking application\n// ---------------------------------------------------------------------------\n\nexport interface TrackingOptions {\n sendId: string\n publicUrl: string\n trackOpens: boolean\n trackClicks: boolean\n /** URL that must NOT be rewritten (e.g. the resolved unsubscribe URL). */\n preserveUrls?: string[]\n}\n\nexport interface TrackingResult {\n html: string\n /** linkId → original URL map; persist on `mailer_sends.links` for click resolution. */\n links: Array<{ linkId: string; url: string }>\n}\n\n/**\n * Rewrite `<a href>` in `html` to /m/click/<sendId>/<linkId>?... and append an\n * open pixel. Returns the modified HTML plus the link map to persist on the\n * send document.\n */\nexport function applyTracking(html: string, opts: TrackingOptions): TrackingResult {\n const preserve = new Set((opts.preserveUrls ?? []).map((u) => u.trim()))\n const links: Array<{ linkId: string; url: string }> = []\n const seen = new Map<string, string>() // url → linkId\n\n let out = html\n\n if (opts.trackClicks) {\n out = out.replace(/<a\\b([^>]*?)\\bhref=([\"'])([^\"']+)\\2([^>]*)>/gi, (full, pre, _q, url, post) => {\n if (shouldSkipClickRewrite(url, preserve, full)) return full\n let linkId = seen.get(url)\n if (!linkId) {\n linkId = shortHash(`${opts.sendId}:${url}:${links.length}`)\n seen.set(url, linkId)\n links.push({ linkId, url })\n }\n const newHref = `${opts.publicUrl}/m/click/${opts.sendId}/${linkId}`\n return `<a${pre}href=\"${newHref}\"${post}>`\n })\n }\n\n if (opts.trackOpens) {\n const pixel = `<img src=\"${opts.publicUrl}/m/open/${opts.sendId}.png\" width=\"1\" height=\"1\" alt=\"\" style=\"display:block;border:0\" />`\n if (/<\\/body>/i.test(out)) {\n out = out.replace(/<\\/body>/i, `${pixel}</body>`)\n } else {\n out = out + pixel\n }\n }\n\n return { html: out, links }\n}\n\nfunction shouldSkipClickRewrite(url: string, preserve: Set<string>, fullTag: string): boolean {\n if (!url) return true\n if (url.startsWith('mailto:')) return true\n if (url.startsWith('tel:')) return true\n if (url.startsWith('#')) return true\n if (url.startsWith('{{') || url.startsWith('{')) return true // unrendered handlebars\n if (preserve.has(url.trim())) return true\n if (/data-mailer-notrack=[\"']true[\"']/.test(fullTag)) return true\n return false\n}\n\nfunction shortHash(input: string): string {\n return crypto.createHash('sha256').update(input).digest('hex').slice(0, 12)\n}\n\n// ---------------------------------------------------------------------------\n// Handlebars instance + helpers\n// ---------------------------------------------------------------------------\n\nfunction makeHandlebars(extra?: Record<string, Handlebars.HelperDelegate>): typeof Handlebars {\n const hb = Handlebars.create()\n\n hb.registerHelper('eq', (a: unknown, b: unknown) => a === b)\n hb.registerHelper('ne', (a: unknown, b: unknown) => a !== b)\n hb.registerHelper('gt', (a: any, b: any) => a > b)\n hb.registerHelper('lt', (a: any, b: any) => a < b)\n hb.registerHelper('gte', (a: any, b: any) => a >= b)\n hb.registerHelper('lte', (a: any, b: any) => a <= b)\n hb.registerHelper('and', (...args: any[]) => args.slice(0, -1).every(Boolean))\n hb.registerHelper('or', (...args: any[]) => args.slice(0, -1).some(Boolean))\n hb.registerHelper('not', (a: unknown) => !a)\n\n hb.registerHelper('formatDate', (value: unknown, fmt?: string) => {\n if (!value) return ''\n const d = value instanceof Date ? value : new Date(String(value))\n if (Number.isNaN(d.getTime())) return ''\n if (fmt === 'long') return d.toLocaleDateString('en-US', { dateStyle: 'long' })\n if (fmt === 'short') return d.toLocaleDateString('en-US', { dateStyle: 'short' })\n return d.toISOString().slice(0, 10)\n })\n\n hb.registerHelper('formatNumber', (n: unknown) => {\n const v = Number(n)\n return Number.isFinite(v) ? v.toLocaleString('en-US') : ''\n })\n\n hb.registerHelper('formatCurrency', (cents: unknown, currency: string = 'usd') => {\n const v = Number(cents)\n if (!Number.isFinite(v)) return ''\n return new Intl.NumberFormat('en-US', { style: 'currency', currency }).format(v / 100)\n })\n\n hb.registerHelper('pluralize', (n: unknown, one: string, many: string) =>\n Number(n) === 1 ? one : many,\n )\n\n if (extra) {\n for (const [name, fn] of Object.entries(extra)) {\n hb.registerHelper(name, fn)\n }\n }\n\n return hb\n}\n\nexport { makeHandlebars }\n","/**\n * Suppression checks. INVARIANT 3: re-checked at send time, never trusted\n * from enqueue time. INVARIANT 9: hashed-suppression records (GDPR forget)\n * block sends without retaining the plaintext email.\n */\n\nimport type { Collections } from '../models/index.js'\nimport type { SuppressionScope, TemplateKind } from '../../shared/enums.js'\nimport { sha256Hex } from '../tokens.js'\n\nexport interface SuppressionResult {\n suppressed: boolean\n scope?: string\n reason?: string\n}\n\nconst SCOPES_BY_KIND: Record<TemplateKind, SuppressionScope[]> = {\n marketing: ['all', 'marketing'],\n transactional: ['all', 'transactional'],\n}\n\nexport async function isSuppressed(\n collections: Collections,\n email: string,\n kind: TemplateKind,\n): Promise<SuppressionResult> {\n const normalized = email.toLowerCase()\n const allowed = SCOPES_BY_KIND[kind]\n\n const byEmail = await collections.suppressions.findOne({\n email: normalized,\n scope: { $in: allowed },\n $or: [{ expiresAt: null }, { expiresAt: { $gt: new Date() } }],\n })\n if (byEmail) return { suppressed: true, scope: byEmail.scope, reason: byEmail.reason }\n\n const hashed = await collections.suppressions.findOne({\n emailHash: sha256Hex(normalized),\n scope: { $in: allowed },\n })\n if (hashed) return { suppressed: true, scope: hashed.scope, reason: hashed.reason }\n\n return { suppressed: false }\n}\n","/**\n * Circuit breaker. Tracks rolling counters in mailer_health, computes rates\n * on each tick, trips the breaker when thresholds are exceeded.\n *\n * status: 'healthy' — normal\n * 'degraded' — non-blocking warnings (e.g. high failed-to-send rate)\n * 'tripped' — marketing sends held; transactional bypasses (INVARIANT 6)\n *\n * Recovery is manual (admin UI: POST /api/health/resume).\n */\n\nimport type { HealthDoc } from '../models/index.js'\nimport type { RunnerContext } from './index.js'\n\ntype CounterKey =\n | 'sent'\n | 'delivered'\n | 'bounced'\n | 'hardBounced'\n | 'softBounced'\n | 'complained'\n | 'failedToSend'\n\n/**\n * Bump a counter on the singleton health doc. Called from the send / webhook\n * paths. Idempotent at the document level (upsert).\n */\nexport async function recordHealthCounter(ctx: RunnerContext, counter: CounterKey, by = 1): Promise<void> {\n await ctx.collections.health.updateOne(\n { _id: 'singleton' },\n {\n $inc: { [`counters.${counter}`]: by },\n $setOnInsert: {\n _id: 'singleton',\n windowStartedAt: new Date(),\n windowDurationMs: ctx.config.circuitBreaker.windowMinutes * 60 * 1000,\n status: 'healthy',\n trippedAt: null,\n trippedReason: null,\n manuallyResumedAt: null,\n rates: { bounceRate: 0, hardBounceRate: 0, complaintRate: 0, failureRate: 0 },\n } as Partial<HealthDoc>,\n $set: { updatedAt: new Date() },\n },\n { upsert: true },\n )\n}\n\n/**\n * Recompute rates from the rolling window and trip the breaker if thresholds\n * are exceeded. Called from the tick.\n */\nexport async function evaluateHealth(ctx: RunnerContext): Promise<void> {\n const cb = ctx.config.circuitBreaker\n const windowMs = cb.windowMinutes * 60 * 1000\n\n // Reset the window if we've rolled past it. Simple \"window of length N\" —\n // when the window expires, we reset counters to 0 and start fresh. This\n // matches the conservative behavior described in the spec.\n const doc = await ctx.collections.health.findOne({ _id: 'singleton' })\n if (!doc) return\n\n const windowAge = Date.now() - new Date(doc.windowStartedAt).getTime()\n if (windowAge > windowMs && doc.status !== 'tripped') {\n // Roll the window.\n await ctx.collections.health.updateOne(\n { _id: 'singleton' },\n {\n $set: {\n windowStartedAt: new Date(),\n windowDurationMs: windowMs,\n counters: { sent: 0, delivered: 0, bounced: 0, hardBounced: 0, softBounced: 0, complained: 0, failedToSend: 0 },\n rates: { bounceRate: 0, hardBounceRate: 0, complaintRate: 0, failureRate: 0 },\n updatedAt: new Date(),\n },\n },\n )\n return\n }\n\n const c = doc.counters\n const total = c.sent || 1 // avoid div-by-zero; rates against `sent` total\n const rates = {\n bounceRate: c.bounced / total,\n hardBounceRate: c.hardBounced / total,\n complaintRate: c.complained / total,\n failureRate: c.failedToSend / total,\n }\n\n await ctx.collections.health.updateOne(\n { _id: 'singleton' },\n { $set: { rates, updatedAt: new Date() } },\n )\n\n // Don't evaluate trips on tiny sample sizes.\n if (c.sent < cb.minSendsBeforeEval) return\n if (doc.status === 'tripped') return // already tripped; wait for manual resume\n\n // Trip rules — first matching rule wins.\n let trippedReason: string | null = null\n if (rates.hardBounceRate * 100 >= cb.hardBounceRatePctTrip) {\n trippedReason = `hard bounce rate ${(rates.hardBounceRate * 100).toFixed(2)}% >= ${cb.hardBounceRatePctTrip}%`\n } else if (rates.complaintRate * 100 >= cb.complaintRatePctTrip) {\n trippedReason = `complaint rate ${(rates.complaintRate * 100).toFixed(2)}% >= ${cb.complaintRatePctTrip}%`\n } else if (rates.bounceRate * 100 >= cb.combinedBounceRatePctTrip) {\n trippedReason = `combined bounce rate ${(rates.bounceRate * 100).toFixed(2)}% >= ${cb.combinedBounceRatePctTrip}%`\n }\n\n if (trippedReason) {\n await ctx.collections.health.updateOne(\n { _id: 'singleton' },\n { $set: { status: 'tripped', trippedAt: new Date(), trippedReason, updatedAt: new Date() } },\n )\n if (ctx.config.onCircuitBreakerTrip) {\n try {\n await ctx.config.onCircuitBreakerTrip({ reason: trippedReason, rates })\n } catch {\n /* swallow — alert hook failures don't propagate */\n }\n }\n return\n }\n\n // Degraded?\n if (rates.failureRate * 100 >= cb.failedToSendRatePctDegrade) {\n if (doc.status !== 'degraded') {\n await ctx.collections.health.updateOne(\n { _id: 'singleton' },\n { $set: { status: 'degraded', updatedAt: new Date() } },\n )\n }\n } else if (doc.status === 'degraded') {\n await ctx.collections.health.updateOne(\n { _id: 'singleton' },\n { $set: { status: 'healthy', updatedAt: new Date() } },\n )\n }\n}\n","/**\n * Send pipeline. `handleSend` is called by the runner state machine; it creates\n * the Send document and enqueues a mailer:send job. `dispatchSend` is the\n * worker — re-checks suppression + circuit breaker, applies tracking, calls\n * the provider, updates the Send row.\n */\n\nimport crypto from 'node:crypto'\nimport { ObjectId } from 'mongodb'\n\nimport type { Contact, FlowStep } from '../../shared/types.js'\nimport type { FlowRunDoc, FlowDoc, SendDoc, TemplateDoc } from '../models/index.js'\nimport {\n applyTracking,\n renderTemplate,\n type RenderContext,\n} from '../templates/render.js'\nimport { signUnsubscribeToken } from '../tokens.js'\nimport { isSuppressed } from './suppression.js'\nimport { advanceStep, failFlowRun } from './step.js'\nimport { recordHealthCounter } from './health.js'\nimport type { RunnerContext } from './index.js'\n\nexport async function handleSend(\n run: FlowRunDoc,\n step: Extract<FlowStep, { type: 'send' }>,\n contact: Contact,\n flow: FlowDoc,\n ctx: RunnerContext,\n): Promise<void> {\n const template = await ctx.collections.templates.findOne({ slug: step.templateSlug })\n if (!template) {\n await failFlowRun(run, `template not found: ${step.templateSlug}`, ctx)\n return\n }\n\n const dedupeKey = `flowrun:${run._id}:step${run.currentStepIndex}`\n\n // Idempotency: has this exact step already produced a send?\n const existing = await ctx.collections.sends.findOne({ dedupeKey })\n if (existing) {\n await advanceStep(run, ctx, {\n action: 'sent',\n details: { dedupeKey, alreadySent: true, sendId: String(existing._id) },\n })\n return\n }\n\n const providerName = pickProviderName(step.providerOverride, template, ctx)\n\n // Render now (with fresh contact + vars). Tracking application happens in\n // dispatchSend once we have the persisted sendId.\n const renderCtx = buildRenderContext(contact, run, step.vars ?? {}, ctx)\n let rendered\n try {\n rendered = await renderTemplate(template, renderCtx, { helpers: ctx.handlebarsHelpers })\n } catch (err: any) {\n await ctx.collections.sends.insertOne(\n newSendDoc({\n dedupeKey,\n run,\n contact,\n template,\n flow,\n providerName,\n renderedSubject: template.subject,\n bodyHash: '',\n status: 'failed',\n errorMessage: `render error: ${err?.message ?? err}`,\n }),\n )\n await advanceStep(run, ctx, {\n action: 'send_skipped',\n details: { reason: 'render_error', message: String(err?.message ?? err) },\n })\n return\n }\n\n const sendId = new ObjectId()\n await ctx.collections.sends.insertOne(\n newSendDoc({\n _id: sendId,\n dedupeKey,\n run,\n contact,\n template,\n flow,\n providerName,\n renderedSubject: rendered.subject,\n bodyHash: sha256(rendered.html),\n status: 'queued',\n renderedFrom: rendered.fromName ? { name: rendered.fromName, email: rendered.fromEmail } : undefined,\n vars: step.vars ?? {},\n }),\n )\n\n await ctx.queues.send.add(\n 'send',\n { sendId: String(sendId) },\n { attempts: ctx.config.sendRetryAttempts, backoff: { type: 'exponential', delay: 60_000 } },\n )\n\n await advanceStep(run, ctx, { action: 'sent', details: { dedupeKey, sendId: String(sendId) } })\n}\n\n// ---------------------------------------------------------------------------\n// Send worker entry point\n// ---------------------------------------------------------------------------\n\nexport async function dispatchSend(sendId: ObjectId, ctx: RunnerContext): Promise<void> {\n const send = await ctx.collections.sends.findOne({ _id: sendId })\n if (!send) return\n if (send.status !== 'queued' && send.status !== 'failed') return // already dispatched / cancelled\n\n const template = await ctx.collections.templates.findOne({ _id: send.templateId })\n if (!template) {\n await markFailed(send._id!, 'template_missing', ctx)\n return\n }\n\n // 1. Suppression check (INVARIANT 3: always re-checked at send time).\n const supp = await isSuppressed(ctx.collections, send.emailAtSend, send.kind)\n if (supp.suppressed) {\n await ctx.collections.sends.updateOne(\n { _id: send._id },\n { $set: { status: 'suppressed', errorMessage: `suppressed: ${supp.reason}` } },\n )\n return\n }\n\n // 2. Circuit-breaker check (only blocks marketing).\n if (send.kind === 'marketing') {\n const health = await ctx.collections.health.findOne({ _id: 'singleton' })\n if (health?.status === 'tripped') {\n // Re-enqueue with a delay; held until resume.\n await ctx.queues.send.add('send', { sendId: String(send._id) }, { delay: 60_000 })\n return\n }\n }\n\n // 3. Pull the contact + re-render (use the contact that exists now, not at flow entry).\n const contact = await ctx.adapter.getById(send.externalId)\n if (!contact) {\n await markFailed(send._id!, 'contact_missing', ctx)\n return\n }\n\n const run = send.flowRunId ? await ctx.collections.flowRuns.findOne({ _id: send.flowRunId }) : null\n const renderCtx = buildRenderContext(\n contact,\n run,\n send.vars ?? {},\n ctx,\n )\n const rendered = await renderTemplate(template, renderCtx, { helpers: ctx.handlebarsHelpers })\n\n // 4. Apply tracking using the now-known send id.\n const tracking = applyTracking(rendered.html, {\n sendId: String(send._id),\n publicUrl: ctx.config.publicUrl,\n trackOpens: template.trackOpens ?? ctx.config.trackOpens,\n trackClicks: template.trackClicks ?? ctx.config.trackClicks,\n preserveUrls: [renderCtx.unsubscribeUrl],\n })\n\n await ctx.collections.sends.updateOne(\n { _id: send._id },\n {\n $set: {\n links: tracking.links,\n bodyHash: sha256(tracking.html),\n status: 'sending',\n fromName: rendered.fromName,\n fromEmail: rendered.fromEmail,\n subject: rendered.subject,\n },\n },\n )\n\n // 5. Provider dispatch.\n const provider = ctx.providers[send.provider] ?? ctx.providers[ctx.config.defaultProvider]\n if (!provider) {\n await markFailed(send._id!, `provider_unknown: ${send.provider}`, ctx)\n return\n }\n\n try {\n const result = await provider.send({\n to: send.emailAtSend,\n fromName: rendered.fromName,\n fromEmail: rendered.fromEmail,\n replyTo: rendered.replyTo ?? undefined,\n subject: rendered.subject,\n html: tracking.html,\n text: rendered.plainText,\n headers: {\n 'List-Unsubscribe': `<${renderCtx.unsubscribeUrl}>`,\n 'List-Unsubscribe-Post': 'List-Unsubscribe=One-Click',\n },\n messageMeta: { sendId: String(send._id) },\n })\n\n await ctx.collections.sends.updateOne(\n { _id: send._id },\n {\n $set: {\n status: 'sent',\n sentAt: new Date(),\n providerMessageId: result.providerId,\n },\n },\n )\n await recordHealthCounter(ctx, 'sent')\n } catch (err: any) {\n await ctx.collections.sends.updateOne(\n { _id: send._id },\n { $set: { status: 'failed', errorMessage: String(err?.message ?? err) } },\n )\n await recordHealthCounter(ctx, 'failedToSend')\n if (ctx.config.onSendFailure) {\n try {\n await ctx.config.onSendFailure({ send, error: err })\n } catch {\n /* swallow */\n }\n }\n throw err // let BullMQ retry per the attempts policy\n }\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction pickProviderName(stepOverride: string | undefined, tpl: TemplateDoc, ctx: RunnerContext): string {\n if (stepOverride) return stepOverride\n if (tpl.providerOverride) return tpl.providerOverride\n if (tpl.kind === 'transactional' && ctx.config.defaultTransactionalProvider) {\n return ctx.config.defaultTransactionalProvider\n }\n return ctx.config.defaultProvider\n}\n\nfunction buildRenderContext(\n contact: Contact,\n run: FlowRunDoc | null,\n vars: Record<string, unknown>,\n ctx: RunnerContext,\n): RenderContext {\n const scope = 'marketing'\n const expiresAt = new Date(Date.now() + ctx.config.unsubscribeTokenLifetimeDays * 24 * 60 * 60 * 1000)\n const token = signUnsubscribeToken(\n { email: contact.email, scope, expiresAt },\n ctx.config.unsubscribeSecret,\n )\n const unsubscribeUrl = `${ctx.config.publicUrl}/m/unsub/${token}`\n\n void run\n return {\n contact,\n vars,\n unsubscribeUrl,\n senderAddress: ctx.config.senderAddress,\n }\n}\n\ninterface NewSendInput {\n _id?: ObjectId\n dedupeKey: string\n run: FlowRunDoc\n contact: Contact\n template: TemplateDoc\n flow: FlowDoc\n providerName: string\n renderedSubject: string\n bodyHash: string\n status: SendDoc['status']\n errorMessage?: string\n renderedFrom?: { name: string; email: string }\n vars?: Record<string, unknown>\n}\n\nfunction newSendDoc(input: NewSendInput): SendDoc {\n return {\n _id: input._id,\n dedupeKey: input.dedupeKey,\n externalId: input.run.externalId,\n emailAtSend: input.contact.email,\n templateId: input.template._id!,\n templateSlug: input.template.slug,\n flowRunId: input.run._id!,\n broadcastId: null,\n manualSendBy: null,\n kind: input.template.kind,\n provider: input.providerName,\n providerMessageId: null,\n fromName: input.renderedFrom?.name ?? input.template.fromName,\n fromEmail: input.renderedFrom?.email ?? input.template.fromEmail,\n subject: input.renderedSubject,\n bodyHash: input.bodyHash,\n status: input.status,\n errorMessage: input.errorMessage ?? null,\n bounceType: null,\n bounceReason: null,\n links: [],\n vars: input.vars ?? {},\n openedAt: null,\n openCount: 0,\n firstClickAt: null,\n clickCount: 0,\n clickedLinks: [],\n unsubscribedAt: null,\n complainedAt: null,\n queuedAt: new Date(),\n sentAt: null,\n deliveredAt: null,\n }\n}\n\nasync function markFailed(sendId: ObjectId, reason: string, ctx: RunnerContext): Promise<void> {\n await ctx.collections.sends.updateOne(\n { _id: sendId },\n { $set: { status: 'failed', errorMessage: reason } },\n )\n}\n\nfunction sha256(s: string): string {\n return crypto.createHash('sha256').update(s).digest('hex')\n}\n","/**\n * Flow_run state machine. One step transition per `processOneRunStep` call.\n * Idempotent — optimistic concurrency on `currentStepIndex` means two workers\n * racing on the same run advance exactly once.\n */\n\nimport type { ObjectId } from 'mongodb'\n\nimport type { FlowStep } from '../../shared/types.js'\nimport type { FlowRunDoc, FlowDoc } from '../models/index.js'\nimport { evaluatePredicate } from './predicate.js'\nimport type { RunnerContext } from './index.js'\nimport { handleSend } from './send.js'\n\nexport async function processOneRunStep(runId: ObjectId, ctx: RunnerContext): Promise<void> {\n const run = await ctx.collections.flowRuns.findOne({ _id: runId })\n if (!run || run.status !== 'active') return\n\n const flow = await ctx.collections.flows.findOne({ _id: run.flowId })\n if (!flow) {\n await failFlowRun(run, 'flow_missing', ctx)\n return\n }\n\n const steps = await loadStepsForRun(run, flow, ctx)\n const step = locateStep(steps, run.currentStepIndex, run.currentBranchPath)\n if (!step) {\n await completeFlowRun(run, 'completed', ctx)\n return\n }\n\n const contact = await ctx.adapter.getById(run.externalId)\n if (!contact) {\n await exitFlowRun(run, 'contact_missing', ctx)\n return\n }\n\n // Marketing-flow subscription gate. Transactional sends bypass this at\n // send-step level (re-checked there).\n const sub = await ctx.collections.subscriptions.findOne({ externalId: run.externalId })\n if (sub && sub.status !== 'subscribed') {\n await exitFlowRun(run, sub.status, ctx)\n return\n }\n\n switch (step.type) {\n case 'wait':\n return handleWait(run, step, ctx)\n case 'condition':\n return handleCondition(run, step, contact, ctx)\n case 'branch':\n return handleBranch(run, step, contact, ctx)\n case 'send':\n return handleSend(run, step, contact, flow, ctx)\n case 'tag':\n return handleTag(run, step, ctx)\n case 'fire_event':\n return handleFireEvent(run, step, ctx)\n case 'webhook':\n return handleWebhookStep(run, step, ctx)\n case 'exit':\n return exitFlowRun(run, step.reason ?? 'exit_step', ctx)\n }\n}\n\n// ---------------------------------------------------------------------------\n// Step handlers\n// ---------------------------------------------------------------------------\n\nasync function handleWait(\n run: FlowRunDoc,\n step: Extract<FlowStep, { type: 'wait' }>,\n ctx: RunnerContext,\n): Promise<void> {\n const ms = unitToMs(step.value, step.unit)\n const nextAt = new Date(Date.now() + ms)\n\n const updated = await ctx.collections.flowRuns.findOneAndUpdate(\n { _id: run._id, currentStepIndex: run.currentStepIndex },\n {\n $set: { nextActionAt: nextAt, attemptsForCurrentStep: 0, updatedAt: new Date() },\n $inc: { currentStepIndex: 1 },\n $push: {\n history: {\n stepIndex: run.currentStepIndex,\n action: 'wait_started',\n at: new Date(),\n details: { until: nextAt },\n },\n },\n },\n { returnDocument: 'after' },\n )\n\n if (!updated) return // another worker advanced; their job will fire.\n\n await ctx.queues.advance.add(\n 'advance',\n { flowRunId: String(run._id) },\n { delay: ms, jobId: `advance:${run._id}:${run.currentStepIndex + 1}` },\n )\n}\n\nasync function handleCondition(\n run: FlowRunDoc,\n step: Extract<FlowStep, { type: 'condition' }>,\n contact: Awaited<ReturnType<typeof ctx.adapter.getById>>,\n ctx: RunnerContext,\n): Promise<void> {\n if (!contact) return\n const result = await evaluatePredicate(step.test, { contact, run, collections: ctx.collections })\n\n if (result) {\n await advanceStep(run, ctx, { action: 'condition_evaluated', details: { result: true } })\n return\n }\n if (step.ifFalse === 'continue') {\n await advanceStep(run, ctx, { action: 'condition_evaluated', details: { result: false, skipped: 1 } }, { stepInc: 2 })\n return\n }\n await exitFlowRun(run, 'condition_false', ctx)\n}\n\nasync function handleBranch(\n run: FlowRunDoc,\n step: Extract<FlowStep, { type: 'branch' }>,\n contact: Awaited<ReturnType<typeof ctx.adapter.getById>>,\n ctx: RunnerContext,\n): Promise<void> {\n if (!contact) return\n const result = await evaluatePredicate(step.test, { contact, run, collections: ctx.collections })\n const newPath = [...run.currentBranchPath, run.currentStepIndex, result ? 'true' : 'false', 0] as Array<number | 'true' | 'false'>\n\n const updated = await ctx.collections.flowRuns.findOneAndUpdate(\n { _id: run._id, currentStepIndex: run.currentStepIndex },\n {\n $set: {\n currentBranchPath: newPath,\n currentStepIndex: 0,\n nextActionAt: new Date(),\n attemptsForCurrentStep: 0,\n updatedAt: new Date(),\n },\n $push: {\n history: {\n stepIndex: run.currentStepIndex,\n action: 'branch_taken',\n at: new Date(),\n details: { result },\n },\n },\n },\n { returnDocument: 'after' },\n )\n\n if (!updated) return\n await ctx.queues.advance.add('advance', { flowRunId: String(run._id) })\n}\n\nasync function handleTag(\n run: FlowRunDoc,\n step: Extract<FlowStep, { type: 'tag' }>,\n ctx: RunnerContext,\n): Promise<void> {\n const adds = step.addTags ?? []\n const removes = step.removeTags ?? []\n\n if (ctx.adapter.addTags && adds.length > 0) {\n await ctx.adapter.addTags(run.externalId, adds)\n } else if (adds.length > 0) {\n await ctx.collections.contactTags.bulkWrite(\n adds.map((tag) => ({\n updateOne: {\n filter: { externalId: run.externalId, tag },\n update: { $setOnInsert: { externalId: run.externalId, tag, appliedBy: 'flow', appliedAt: new Date() } },\n upsert: true,\n },\n })),\n )\n }\n\n if (ctx.adapter.removeTags && removes.length > 0) {\n await ctx.adapter.removeTags(run.externalId, removes)\n } else if (removes.length > 0) {\n await ctx.collections.contactTags.deleteMany({ externalId: run.externalId, tag: { $in: removes } })\n }\n\n await advanceStep(run, ctx, { action: 'tagged', details: { addTags: adds, removeTags: removes } })\n}\n\nasync function handleFireEvent(\n run: FlowRunDoc,\n step: Extract<FlowStep, { type: 'fire_event' }>,\n ctx: RunnerContext,\n): Promise<void> {\n const dedupeKey = `flowrun:${run._id}:step${run.currentStepIndex}:${step.eventName}`\n try {\n await ctx.collections.events.insertOne({\n externalId: run.externalId,\n name: step.eventName,\n properties: step.properties ?? {},\n dedupeKey,\n occurredAt: new Date(),\n createdAt: new Date(),\n })\n } catch (err: any) {\n if (err?.code !== 11000) throw err\n }\n await advanceStep(run, ctx, { action: 'event_fired', details: { name: step.eventName } })\n}\n\nasync function handleWebhookStep(\n run: FlowRunDoc,\n step: Extract<FlowStep, { type: 'webhook' }>,\n ctx: RunnerContext,\n): Promise<void> {\n try {\n const res = await fetch(step.url, {\n method: step.method ?? 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(step.payload ?? { externalId: run.externalId, flowRunId: String(run._id) }),\n signal: AbortSignal.timeout(10_000),\n })\n if (!res.ok) throw new Error(`webhook step returned ${res.status}`)\n await advanceStep(run, ctx, { action: 'webhook_called', details: { url: step.url, status: res.status } })\n } catch (err: any) {\n const attempts = (run.attemptsForCurrentStep ?? 0) + 1\n if (attempts >= ctx.config.webhookRetryAttempts) {\n if (step.failureMode === 'fail_run') {\n await failFlowRun(run, `webhook failed: ${err?.message}`, ctx)\n } else {\n // Soft fail — log and advance.\n await advanceStep(run, ctx, {\n action: 'webhook_called',\n details: { url: step.url, error: err?.message, exhausted: true },\n })\n }\n } else {\n await ctx.collections.flowRuns.updateOne(\n { _id: run._id, currentStepIndex: run.currentStepIndex },\n { $inc: { attemptsForCurrentStep: 1 }, $set: { nextActionAt: new Date(Date.now() + 60_000) } },\n )\n await ctx.queues.advance.add(\n 'advance',\n { flowRunId: String(run._id) },\n { delay: 60_000, jobId: `advance:${run._id}:${run.currentStepIndex}:retry-${attempts}` },\n )\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Common helpers\n// ---------------------------------------------------------------------------\n\nexport interface AdvanceOptions {\n stepInc?: number\n}\n\nexport interface AdvanceLog {\n action: FlowRunDoc['history'][number]['action']\n details?: Record<string, unknown>\n}\n\nexport async function advanceStep(\n run: FlowRunDoc,\n ctx: RunnerContext,\n log: AdvanceLog,\n opts: AdvanceOptions = {},\n): Promise<void> {\n const stepInc = opts.stepInc ?? 1\n const updated = await ctx.collections.flowRuns.findOneAndUpdate(\n { _id: run._id, currentStepIndex: run.currentStepIndex },\n {\n $set: { nextActionAt: new Date(), attemptsForCurrentStep: 0, updatedAt: new Date() },\n $inc: { currentStepIndex: stepInc },\n $push: {\n history: { stepIndex: run.currentStepIndex, action: log.action, at: new Date(), details: log.details },\n },\n },\n { returnDocument: 'after' },\n )\n if (!updated) return\n await ctx.queues.advance.add('advance', { flowRunId: String(run._id) })\n}\n\nexport async function exitFlowRun(run: FlowRunDoc, reason: string, ctx: RunnerContext): Promise<void> {\n await ctx.collections.flowRuns.updateOne(\n { _id: run._id, status: 'active' },\n {\n $set: { status: 'exited', exitedAt: new Date(), exitReason: reason, updatedAt: new Date() },\n $push: { history: { stepIndex: run.currentStepIndex, action: 'exited', at: new Date(), details: { reason } } },\n },\n )\n}\n\nexport async function completeFlowRun(run: FlowRunDoc, reason: string, ctx: RunnerContext): Promise<void> {\n await ctx.collections.flowRuns.updateOne(\n { _id: run._id, status: 'active' },\n {\n $set: { status: 'completed', exitedAt: new Date(), exitReason: reason, updatedAt: new Date() },\n },\n )\n}\n\nexport async function failFlowRun(run: FlowRunDoc, reason: string, ctx: RunnerContext): Promise<void> {\n await ctx.collections.flowRuns.updateOne(\n { _id: run._id, status: 'active' },\n {\n $set: { status: 'failed', exitedAt: new Date(), exitReason: reason, updatedAt: new Date() },\n $push: { history: { stepIndex: run.currentStepIndex, action: 'failed', at: new Date(), details: { reason } } },\n },\n )\n}\n\nexport async function loadStepsForRun(\n run: FlowRunDoc,\n flow: FlowDoc,\n ctx: RunnerContext,\n): Promise<FlowStep[]> {\n if (run.flowVersion === flow.version) return flow.steps\n const snapshot = await ctx.collections.flowVersions.findOne({ flowId: run.flowId, version: run.flowVersion })\n return snapshot?.steps ?? flow.steps\n}\n\n/**\n * Walk a branch path through nested branch steps to find the active step.\n * Branch path layout: [parentStepIndex, 'true'|'false', childStepIndex, ...repeat]\n */\nexport function locateStep(\n steps: FlowStep[],\n currentStepIndex: number,\n branchPath: ReadonlyArray<number | 'true' | 'false'>,\n): FlowStep | null {\n let arr: FlowStep[] = steps\n\n for (let i = 0; i < branchPath.length; i += 3) {\n const parentIndex = branchPath[i] as number\n const branchKey = branchPath[i + 1] as 'true' | 'false'\n const parent = arr[parentIndex]\n if (!parent || parent.type !== 'branch') return null\n arr = branchKey === 'true' ? parent.ifTrueSteps : parent.ifFalseSteps\n }\n\n return arr[currentStepIndex] ?? null\n}\n\nfunction unitToMs(value: number, unit: 'minutes' | 'hours' | 'days' | 'weeks'): number {\n const m = 60_000\n switch (unit) {\n case 'minutes':\n return value * m\n case 'hours':\n return value * 60 * m\n case 'days':\n return value * 24 * 60 * m\n case 'weeks':\n return value * 7 * 24 * 60 * m\n }\n}\n","/**\n * Recovery sweep: finds active flow_runs whose `nextActionAt` has passed but\n * weren't woken by their delayed `mailer:advance` job (worker restart, BullMQ\n * data loss). Processes each one inline.\n */\n\nimport { processOneRunStep } from './step.js'\nimport type { RunnerContext } from './index.js'\n\nconst SWEEP_LIMIT = 500\n\nexport async function sweepStrandedFlowRuns(ctx: RunnerContext): Promise<void> {\n const runs = await ctx.collections.flowRuns\n .find({ status: 'active', nextActionAt: { $lte: new Date() } })\n .sort({ nextActionAt: 1 })\n .limit(SWEEP_LIMIT)\n .toArray()\n\n for (const run of runs) {\n try {\n await processOneRunStep(run._id!, ctx)\n } catch (err) {\n console.error('mailery: sweep advance failed', { runId: String(run._id), err })\n }\n }\n}\n","/**\n * Broadcast dispatch. Picks up scheduled broadcasts whose `scheduledAt` has\n * passed, streams the segment via the adapter cursor + mailer-side post-filter,\n * and bulk-enqueues Send docs + jobs. Per-provider rate limiting + bounded\n * enqueue (pause when waitingCount > broadcastEnqueueMaxWaiting).\n */\n\nimport { ObjectId } from 'mongodb'\n\nimport type { Contact, SegmentDefinition, SegmentFilter, AdapterFilter } from '../../shared/types.js'\nimport type { BroadcastDoc, SendDoc, TemplateDoc } from '../models/index.js'\nimport { isSuppressed } from './suppression.js'\nimport { sha256Hex } from '../tokens.js'\nimport type { RunnerContext } from './index.js'\n\n/**\n * Process scheduled broadcasts whose `scheduledAt` has passed. Called from the\n * tick. Marks each broadcast `sending` before streaming so concurrent ticks\n * don't double-dispatch.\n */\nexport async function processScheduledBroadcasts(ctx: RunnerContext): Promise<void> {\n const now = new Date()\n const due = await ctx.collections.broadcasts\n .find({ status: 'scheduled', scheduledAt: { $lte: now } })\n .toArray()\n\n for (const b of due) {\n // Optimistic claim — only one worker takes this broadcast.\n const claimed = await ctx.collections.broadcasts.findOneAndUpdate(\n { _id: b._id, status: 'scheduled' },\n { $set: { status: 'sending', startedAt: now, updatedAt: now } },\n { returnDocument: 'after' },\n )\n if (!claimed) continue\n\n try {\n await dispatchBroadcast(claimed, ctx)\n } catch (err) {\n console.error('mailery: broadcast dispatch failed', { id: String(b._id), err })\n await ctx.collections.broadcasts.updateOne(\n { _id: b._id },\n { $set: { status: 'failed', updatedAt: new Date() } },\n )\n }\n }\n}\n\nasync function dispatchBroadcast(broadcast: BroadcastDoc, ctx: RunnerContext): Promise<void> {\n const template = await ctx.collections.templates.findOne({ slug: broadcast.templateSlug })\n if (!template) {\n await ctx.collections.broadcasts.updateOne(\n { _id: broadcast._id },\n { $set: { status: 'failed', updatedAt: new Date() } },\n )\n return\n }\n\n const hostFilter = toAdapterFilter(broadcast.segmentDefinition)\n const postFilters = broadcast.segmentDefinition.filters.filter((f) => isMailerSide(f))\n\n let cursor: string | undefined = undefined\n let total = 0\n const batchSize = ctx.config.broadcastEnqueueBatchSize\n const maxWaiting = ctx.config.broadcastEnqueueMaxWaiting\n const respectTimezone = broadcast.respectRecipientTimezone === true\n const scheduledMs = broadcast.scheduledAt?.getTime() ?? Date.now()\n\n for (;;) {\n const page = await ctx.adapter.query(hostFilter, { limit: batchSize, cursor })\n if (page.contacts.length === 0) break\n\n // Stage B: mailer-side post-filter.\n const eligible = await applyPostFilters(page.contacts, postFilters, ctx)\n\n if (eligible.length > 0) {\n // Backpressure: wait until the send queue's waiting set drains below cap.\n while ((await ctx.queues.send.getWaitingCount()) > maxWaiting) {\n await sleep(2000)\n }\n\n const sendDocs = await Promise.all(\n eligible.map(async (contact) => buildSendDoc(broadcast, template, contact, ctx, scheduledMs, respectTimezone)),\n )\n\n // Filter out suppressed (mailer-side suppression check is the same one\n // dispatchSend would do; we short-circuit here to avoid enqueuing).\n const inserted: Array<{ sendId: ObjectId; delayMs: number }> = []\n for (const { doc, delayMs } of sendDocs) {\n if (!doc) continue\n try {\n await ctx.collections.sends.insertOne(doc)\n inserted.push({ sendId: doc._id!, delayMs })\n } catch (err: any) {\n if (err?.code !== 11000) throw err\n // dup dedupeKey — already dispatched somewhere\n }\n }\n\n // Bulk enqueue.\n if (inserted.length > 0) {\n await Promise.all(\n inserted.map(({ sendId, delayMs }) =>\n ctx.queues.send.add(\n 'send',\n { sendId: String(sendId) },\n {\n attempts: ctx.config.sendRetryAttempts,\n backoff: { type: 'exponential', delay: 60_000 },\n ...(delayMs > 0 ? { delay: delayMs } : {}),\n },\n ),\n ),\n )\n }\n\n total += inserted.length\n }\n\n if (!page.nextCursor) break\n cursor = page.nextCursor\n }\n\n await ctx.collections.broadcasts.updateOne(\n { _id: broadcast._id },\n {\n $set: {\n status: 'sent',\n completedAt: new Date(),\n recipientCount: total,\n updatedAt: new Date(),\n },\n },\n )\n}\n\n// ---------------------------------------------------------------------------\n// Segment translation\n// ---------------------------------------------------------------------------\n\nfunction toAdapterFilter(seg: SegmentDefinition): AdapterFilter {\n const out: AdapterFilter = {}\n for (const f of seg.filters) {\n switch (f.kind) {\n case 'hasTag':\n out.hasTag = f.tag\n break\n case 'fieldEquals':\n out.fieldEquals = { field: f.field, value: f.value }\n break\n case 'fieldIn':\n out.fieldIn = { field: f.field, values: f.values }\n break\n case 'fieldExists':\n out.fieldExists = f.field\n break\n // notHasTag isn't a single-condition adapter filter, defer to post-filter\n // subscriptionStatus / firedEvent / opened are all mailer-side\n }\n }\n return out\n}\n\nfunction isMailerSide(f: SegmentFilter): boolean {\n return (\n f.kind === 'subscriptionStatus' ||\n f.kind === 'firedEvent' ||\n f.kind === 'notFiredEvent' ||\n f.kind === 'subscribedAfter' ||\n f.kind === 'subscribedBefore' ||\n f.kind === 'opened' ||\n f.kind === 'notOpened' ||\n f.kind === 'notHasTag' ||\n f.kind === 'any' ||\n f.kind === 'not'\n )\n}\n\nasync function applyPostFilters(contacts: Contact[], filters: SegmentFilter[], ctx: RunnerContext): Promise<Contact[]> {\n if (filters.length === 0) return contacts\n const externalIds = contacts.map((c) => c.externalId)\n\n // Cache common lookups in one Mongo round-trip per filter.\n const cache: Record<string, Set<string>> = {}\n for (const f of filters) {\n if (f.kind === 'subscriptionStatus') {\n const docs = await ctx.collections.subscriptions\n .find({ externalId: { $in: externalIds }, status: f.equals })\n .project<{ externalId: string }>({ externalId: 1 })\n .toArray()\n cache[`sub:${f.equals}`] = new Set(docs.map((d) => d.externalId))\n }\n if (f.kind === 'firedEvent' || f.kind === 'notFiredEvent') {\n const query: any = { externalId: { $in: externalIds }, name: f.eventName }\n if (f.withinDays) {\n query.occurredAt = { $gt: new Date(Date.now() - f.withinDays * 86_400_000) }\n }\n const docs = await ctx.collections.events\n .find(query)\n .project<{ externalId: string }>({ externalId: 1 })\n .toArray()\n cache[`evt:${f.eventName}`] = new Set(docs.map((d) => d.externalId))\n }\n }\n\n return contacts.filter((c) => filters.every((f) => filterMatches(c, f, cache)))\n}\n\nfunction filterMatches(c: Contact, f: SegmentFilter, cache: Record<string, Set<string>>): boolean {\n switch (f.kind) {\n case 'subscriptionStatus':\n return cache[`sub:${f.equals}`]?.has(c.externalId) ?? false\n case 'firedEvent':\n return cache[`evt:${f.eventName}`]?.has(c.externalId) ?? false\n case 'notFiredEvent':\n return !cache[`evt:${f.eventName}`]?.has(c.externalId)\n case 'notHasTag':\n return !c.tags.includes(f.tag)\n case 'opened':\n case 'notOpened':\n // V1: not implemented in batch — would need a per-contact send lookup.\n // Treat as pass for now; suppress at dispatch time.\n return true\n case 'subscribedAfter':\n case 'subscribedBefore':\n return true // V2\n case 'any':\n return f.filters.some((sub) => filterMatches(c, sub, cache))\n case 'not':\n return !filterMatches(c, f.filter, cache)\n default:\n return true\n }\n}\n\n// ---------------------------------------------------------------------------\n// Send doc construction\n// ---------------------------------------------------------------------------\n\ninterface BuildResult {\n doc: SendDoc | null\n delayMs: number\n}\n\nasync function buildSendDoc(\n broadcast: BroadcastDoc,\n template: TemplateDoc,\n contact: Contact,\n ctx: RunnerContext,\n scheduledMs: number,\n respectTimezone: boolean,\n): Promise<BuildResult> {\n // Final suppression check before we insert.\n const supp = await isSuppressed(ctx.collections, contact.email, template.kind)\n if (supp.suppressed) return { doc: null, delayMs: 0 }\n\n const sendId = new ObjectId()\n const dedupeKey = `broadcast:${broadcast._id}:${contact.externalId}`\n\n // Per-recipient TZ delay calculation.\n let delayMs = Math.max(0, scheduledMs - Date.now())\n if (respectTimezone && contact.timezone) {\n delayMs = Math.max(0, perRecipientDelayMs(scheduledMs, contact.timezone))\n }\n\n const doc: SendDoc = {\n _id: sendId,\n dedupeKey,\n externalId: contact.externalId,\n emailAtSend: contact.email,\n templateId: template._id!,\n templateSlug: template.slug,\n flowRunId: null,\n broadcastId: broadcast._id!,\n manualSendBy: null,\n kind: template.kind,\n provider: template.providerOverride ?? ctx.config.defaultProvider,\n providerMessageId: null,\n fromName: template.fromName,\n fromEmail: template.fromEmail,\n subject: template.subject,\n bodyHash: '',\n status: 'queued',\n errorMessage: null,\n bounceType: null,\n bounceReason: null,\n links: [],\n vars: {},\n openedAt: null,\n openCount: 0,\n firstClickAt: null,\n clickCount: 0,\n clickedLinks: [],\n unsubscribedAt: null,\n complainedAt: null,\n queuedAt: new Date(),\n sentAt: null,\n deliveredAt: null,\n }\n void sha256Hex\n return { doc, delayMs }\n}\n\n/**\n * Compute the delay so the recipient receives the email at `scheduledMs` in\n * their LOCAL timezone (rather than the configured scheduled UTC instant).\n *\n * Example: broadcast `scheduledAt` is 10am UTC, contact is in PST (UTC-8).\n * Without respect: contact gets it at 2am local. With respect: contact gets it\n * at 10am their time = 6pm UTC. delayMs = 8 hours.\n */\nfunction perRecipientDelayMs(scheduledMs: number, timezone: string): number {\n try {\n // Get the offset between the scheduled UTC instant interpreted as a wall\n // clock and the same wall clock in the recipient's tz.\n const scheduled = new Date(scheduledMs)\n const utc = scheduled.toLocaleString('en-US', { timeZone: 'UTC', hour12: false })\n const local = scheduled.toLocaleString('en-US', { timeZone: timezone, hour12: false })\n\n // Parse both as Date objects in the runner's local tz and take the diff.\n const parse = (s: string) => {\n const m = s.match(/(\\d+)\\/(\\d+)\\/(\\d+),\\s*(\\d+):(\\d+):(\\d+)/)\n if (!m) return 0\n return Date.UTC(+m[3]!, +m[1]! - 1, +m[2]!, +m[4]!, +m[5]!, +m[6]!)\n }\n const utcMs = parse(utc)\n const localMs = parse(local)\n const offsetMs = utcMs - localMs\n\n // Target = scheduledMs (as a wall-clock in tz) + (utc - local offset) so\n // it lands at the same WALL CLOCK in tz.\n return offsetMs\n } catch {\n return 0\n }\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n","/**\n * Soft → hard bounce promotion. Configurable threshold + window:\n *\n * softBouncePromotionThreshold soft bounces for the same email within\n * softBouncePromotionWindowDays → insert a hard suppression + mark\n * the subscription bounced.\n *\n * Runs on each tick. Idempotent: if a hard suppression already exists for\n * that email, we skip.\n */\n\nimport { sha256Hex } from '../tokens.js'\nimport { recordHealthCounter } from './health.js'\nimport type { RunnerContext } from './index.js'\n\nexport async function promoteSoftBounces(ctx: RunnerContext): Promise<void> {\n const threshold = ctx.config.softBouncePromotionThreshold\n const windowDays = ctx.config.softBouncePromotionWindowDays\n if (threshold <= 0 || windowDays <= 0) return\n\n const cutoff = new Date(Date.now() - windowDays * 86_400_000)\n\n // Aggregate: count soft bounces per emailAtSend since cutoff, hitting the\n // threshold. Bounded limit to keep the tick fast.\n const offenders = await ctx.collections.sends\n .aggregate<{ _id: string; count: number }>([\n { $match: { status: 'bounced', bounceType: 'soft', queuedAt: { $gt: cutoff } } },\n { $group: { _id: '$emailAtSend', count: { $sum: 1 } } },\n { $match: { count: { $gte: threshold } } },\n { $limit: 200 },\n ])\n .toArray()\n\n for (const o of offenders) {\n const email = String(o._id ?? '').toLowerCase()\n if (!email) continue\n\n // Skip if already hard-suppressed.\n const existing = await ctx.collections.suppressions.findOne({\n email,\n scope: 'all',\n })\n if (existing) continue\n\n await ctx.collections.suppressions.updateOne(\n { email, scope: 'all' },\n {\n $setOnInsert: {\n email,\n emailHash: sha256Hex(email),\n scope: 'all',\n reason: 'hard_bounce',\n source: 'soft_promotion',\n notes: `${o.count} soft bounces in last ${windowDays} days`,\n addedAt: new Date(),\n expiresAt: null,\n },\n },\n { upsert: true },\n )\n\n await ctx.collections.subscriptions.updateOne(\n { emailAtSubscribe: email },\n { $set: { status: 'bounced', updatedAt: new Date() } },\n )\n\n await recordHealthCounter(ctx, 'hardBounced')\n }\n}\n","/**\n * The mailer:tick handler. Orchestrates all the periodic work that doesn't\n * fit a delayed-job model: event-trigger scanning, recovery sweep,\n * scheduled-broadcast dispatch, outbox draining, rollups.\n */\n\nimport { processNewlyFiredEventTriggers } from './triggers.js'\nimport { sweepStrandedFlowRuns } from './sweep.js'\nimport { processScheduledBroadcasts as dispatchScheduled } from './broadcasts.js'\nimport { evaluateHealth } from './health.js'\nimport { promoteSoftBounces } from './bounce-promotion.js'\nimport type { RunnerContext } from './index.js'\n\nexport async function runTick(ctx: RunnerContext): Promise<void> {\n await processNewlyFiredEventTriggers(ctx).catch((err) => {\n console.error('mailery: triggers scan failed', err)\n })\n await sweepStrandedFlowRuns(ctx).catch((err) => {\n console.error('mailery: sweep failed', err)\n })\n await drainOutbox(ctx).catch((err) => {\n console.error('mailery: outbox drain failed', err)\n })\n await processScheduledBroadcasts(ctx).catch((err) => {\n console.error('mailery: broadcast dispatch failed', err)\n })\n await evaluateHealth(ctx).catch((err) => {\n console.error('mailery: health evaluation failed', err)\n })\n await promoteSoftBounces(ctx).catch((err) => {\n console.error('mailery: soft-bounce promotion failed', err)\n })\n}\n\n/**\n * Pull pending outbox rows committed by host transactions and promote them\n * into the real collections (events / subscriptions / suppressions).\n */\nasync function drainOutbox(ctx: RunnerContext): Promise<void> {\n const batch = await ctx.collections.outbox\n .find({ status: 'pending' })\n .sort({ enqueuedAt: 1 })\n .limit(200)\n .toArray()\n\n for (const row of batch) {\n try {\n if (row.payload.type === 'event') {\n try {\n await ctx.collections.events.insertOne({\n externalId: row.payload.data.externalId as string,\n name: row.payload.data.name as string,\n properties: (row.payload.data.properties as Record<string, unknown>) ?? {},\n dedupeKey: row.payload.dedupeKey,\n occurredAt: (row.payload.data.occurredAt as Date | undefined) ?? new Date(),\n createdAt: new Date(),\n })\n } catch (err: any) {\n if (err?.code !== 11000) throw err\n }\n }\n await ctx.collections.outbox.updateOne(\n { _id: row._id },\n { $set: { status: 'processed', processedAt: new Date() } },\n )\n } catch (err: any) {\n await ctx.collections.outbox.updateOne(\n { _id: row._id },\n {\n $set: { lastAttemptAt: new Date(), lastError: String(err?.message ?? err) },\n $inc: { attempts: 1 },\n },\n )\n }\n }\n}\n\n/**\n * Dispatch broadcasts whose `scheduledAt` has passed. Streams the segment\n * cursor and bulk-enqueues sends, pausing when the send queue's waiting\n * count exceeds the configured cap (broadcastEnqueueMaxWaiting).\n */\nasync function processScheduledBroadcasts(ctx: RunnerContext): Promise<void> {\n await dispatchScheduled(ctx)\n}\n","/**\n * Apply a normalized provider event to the corresponding Send + cascading\n * suppression / subscription updates. Called from the webhook worker.\n */\n\nimport type { NormalizedEvent } from '../../shared/types.js'\nimport type { RunnerContext } from './index.js'\nimport { sha256Hex } from '../tokens.js'\nimport { recordHealthCounter } from './health.js'\n\nexport async function applyWebhookEvent(event: NormalizedEvent, ctx: RunnerContext): Promise<void> {\n const send = await ctx.collections.sends.findOne(\n event.providerMessageId\n ? { $or: [{ providerMessageId: event.providerMessageId }, { emailAtSend: event.email }] }\n : { emailAtSend: event.email },\n { sort: { queuedAt: -1 } },\n )\n\n switch (event.type) {\n case 'delivered':\n if (send) {\n await ctx.collections.sends.updateOne(\n { _id: send._id },\n { $set: { status: 'delivered', deliveredAt: event.occurredAt } },\n )\n }\n await recordHealthCounter(ctx, 'delivered')\n break\n\n case 'open':\n if (send) {\n await ctx.collections.sends.updateOne(\n { _id: send._id },\n {\n $set: {\n openedAt: send.openedAt ?? event.occurredAt,\n status: send.status === 'sent' ? 'delivered' : send.status,\n },\n $inc: { openCount: 1 },\n },\n )\n }\n break\n\n case 'click':\n if (send) {\n await ctx.collections.sends.updateOne(\n { _id: send._id },\n {\n $set: { firstClickAt: send.firstClickAt ?? event.occurredAt },\n $inc: { clickCount: 1 },\n $push: {\n clickedLinks: {\n url: event.details.clickedUrl ?? '',\n linkId: '',\n clickedAt: event.occurredAt,\n },\n },\n },\n )\n }\n break\n\n case 'bounce': {\n const bounceType = event.details.bounceType ?? 'hard'\n if (send) {\n await ctx.collections.sends.updateOne(\n { _id: send._id },\n {\n $set: {\n status: 'bounced',\n bounceType,\n bounceReason: event.details.bounceReason ?? null,\n },\n },\n )\n }\n if (bounceType === 'hard') {\n await suppressOnce(ctx, event.email, 'hard_bounce', 'all')\n await ctx.collections.subscriptions.updateOne(\n { emailAtSubscribe: event.email },\n { $set: { status: 'bounced', updatedAt: new Date() } },\n )\n }\n await recordHealthCounter(ctx, 'bounced')\n await recordHealthCounter(ctx, bounceType === 'hard' ? 'hardBounced' : 'softBounced')\n break\n }\n\n case 'complaint':\n case 'spam_report':\n if (send) {\n await ctx.collections.sends.updateOne(\n { _id: send._id },\n { $set: { complainedAt: event.occurredAt, status: 'complained' } },\n )\n }\n await suppressOnce(ctx, event.email, 'complaint', 'all')\n await ctx.collections.subscriptions.updateOne(\n { emailAtSubscribe: event.email },\n { $set: { status: 'complained', updatedAt: new Date() } },\n )\n await recordHealthCounter(ctx, 'complained')\n break\n\n case 'unsubscribe':\n if (send) {\n await ctx.collections.sends.updateOne({ _id: send._id }, { $set: { unsubscribedAt: event.occurredAt } })\n }\n await suppressOnce(ctx, event.email, 'unsubscribed', 'marketing')\n await ctx.collections.subscriptions.updateOne(\n { emailAtSubscribe: event.email },\n {\n $set: {\n status: 'unsubscribed',\n unsubscribedAt: event.occurredAt,\n unsubscribeReason: 'user_request',\n updatedAt: new Date(),\n },\n },\n )\n break\n }\n}\n\nasync function suppressOnce(\n ctx: RunnerContext,\n email: string,\n reason: 'hard_bounce' | 'complaint' | 'unsubscribed',\n scope: 'all' | 'marketing' | 'transactional',\n): Promise<void> {\n const normalized = email.toLowerCase()\n await ctx.collections.suppressions.updateOne(\n { email: normalized, scope },\n {\n $setOnInsert: {\n email: normalized,\n emailHash: sha256Hex(normalized),\n scope,\n reason,\n source: 'provider_webhook',\n notes: null,\n addedAt: new Date(),\n expiresAt: null,\n },\n },\n { upsert: true },\n )\n}\n","/**\n * Mailer — public facade. Hosts call `Mailer.init(config)` and get an object\n * exposing the public API (fire, upsertSubscription, unsubscribe, ...) plus\n * mountable Express routers.\n *\n * See plans/10-public-api.md for the surface.\n */\n\nimport type { Db, ClientSession, ObjectId } from 'mongodb'\nimport { ObjectId as ObjectIdCtor } from 'mongodb'\nimport type IORedis from 'ioredis'\n\nimport type {\n ContactAdapter,\n MailProvider,\n} from '../shared/types.js'\nimport {\n fireInputSchema,\n registerEventSchema,\n sendOneOffInputSchema,\n suppressInputSchema,\n tagInputSchema,\n unsubscribeInputSchema,\n upsertSubscriptionSchema,\n type FireInput,\n type RegisterEventInput,\n type SendOneOffInput,\n type SuppressInput,\n type TagInput,\n type UnsubscribeInput,\n type UpsertSubscriptionInput,\n} from '../shared/schemas.js'\nimport { resolveConfig, type MailerConfig, type ResolvedConfig } from './config.js'\nimport {\n ensureIndexes,\n getCollections,\n} from './models/index.js'\nimport type { Collections } from './models/index.js'\nimport { EventRegistry } from './events.js'\nimport { sha256Hex, signDoiToken } from './tokens.js'\nimport {\n closeBullQueues,\n closeQueues,\n closeWorkers,\n createQueues,\n createWorkers,\n makeRedis,\n noopQueues,\n scheduleTick,\n type BullQueues,\n type Queues,\n type Workers,\n} from './queues/index.js'\nimport {\n dispatchSend,\n processOneRunStep,\n runTick,\n type RunnerContext,\n} from './runner/index.js'\nimport { applyWebhookEvent } from './runner/webhook.js'\n\nexport class Mailer {\n readonly db: Db\n readonly collections: Collections\n readonly adapter: ContactAdapter\n readonly providers: Record<string, MailProvider>\n readonly redis: IORedis | null\n readonly queues: Queues\n readonly config: ResolvedConfig\n readonly events: EventRegistry\n\n private workers: Workers | null = null\n private bullQueues: BullQueues | null\n private runnerContext: RunnerContext\n\n private constructor(args: {\n config: ResolvedConfig\n db: Db\n collections: Collections\n adapter: ContactAdapter\n providers: Record<string, MailProvider>\n redis: IORedis | null\n queues: Queues\n bullQueues: BullQueues | null\n events: EventRegistry\n }) {\n this.config = args.config\n this.db = args.db\n this.collections = args.collections\n this.adapter = args.adapter\n this.providers = args.providers\n this.redis = args.redis\n this.queues = args.queues\n this.bullQueues = args.bullQueues\n this.events = args.events\n\n this.runnerContext = {\n db: this.db,\n collections: this.collections,\n adapter: this.adapter,\n providers: this.providers,\n queues: this.queues,\n config: this.config,\n handlebarsHelpers: this.config.handlebarsHelpers,\n }\n }\n\n /**\n * Construct a Mailer from environment variables. Reads:\n *\n * MAILER_MONGODB_URI — Mongo connection string (required)\n * MAILER_MONGODB_DB — database name (optional; defaults to the URI default)\n * MAILER_REDIS_URL — Redis connection URL (required)\n * MAILER_PUBLIC_URL — base for tracking/unsub URLs (required)\n * MAILER_UNSUBSCRIBE_SECRET — HMAC key (required)\n * MAILER_SENDER_ADDRESS — postal address for CAN-SPAM (optional)\n * MAILER_FROM_NAME / MAILER_FROM_EMAIL\n * MAILER_DEFAULT_PROVIDER — defaults to 'sendgrid' if SENDGRID_API_KEY is set\n * MAILER_SENDGRID_API_KEY / MAILER_SENDGRID_WEBHOOK_KEY\n * MAILER_HOST_USERS_COLLECTION (default 'users')\n * MAILER_HOST_USERS_EMAIL_FIELD (default 'email')\n * MAILER_HOST_USERS_ID_FIELD (default '_id')\n * MAILER_HOST_USERS_TAGS_FIELD\n * MAILER_HOST_USERS_TAGS_WRITABLE — '1' or 'true' to enable\n *\n * For anything beyond this (custom toContact, custom providers, hooks),\n * use the programmatic init.\n */\n static async fromEnv(): Promise<Mailer> {\n const env = process.env\n const required = (k: string) => {\n const v = env[k]\n if (!v) throw new Error(`Mailer.fromEnv: missing env var ${k}`)\n return v\n }\n\n const { MongoClient } = await import('mongodb')\n const mongoClient = await MongoClient.connect(required('MAILER_MONGODB_URI'))\n const db = env.MAILER_MONGODB_DB ? mongoClient.db(env.MAILER_MONGODB_DB) : mongoClient.db()\n\n const { MongoContactAdapter } = await import('./adapters/mongo.js')\n const adapter = new MongoContactAdapter({\n db,\n collection: env.MAILER_HOST_USERS_COLLECTION ?? 'users',\n emailField: env.MAILER_HOST_USERS_EMAIL_FIELD ?? 'email',\n idField: env.MAILER_HOST_USERS_ID_FIELD ?? '_id',\n tagsField: env.MAILER_HOST_USERS_TAGS_FIELD,\n tagsWritable:\n env.MAILER_HOST_USERS_TAGS_WRITABLE === '1' || env.MAILER_HOST_USERS_TAGS_WRITABLE === 'true',\n })\n\n const providers: Record<string, MailProvider> = {}\n if (env.MAILER_SENDGRID_API_KEY) {\n const { SendGridProvider } = await import('./providers/sendgrid.js')\n providers.sendgrid = new SendGridProvider({\n apiKey: env.MAILER_SENDGRID_API_KEY,\n webhookVerificationKey: env.MAILER_SENDGRID_WEBHOOK_KEY,\n sandbox: env.NODE_ENV !== 'production',\n })\n }\n if (Object.keys(providers).length === 0) {\n throw new Error('Mailer.fromEnv: no provider configured (set MAILER_SENDGRID_API_KEY, ...)')\n }\n\n const defaultProvider = env.MAILER_DEFAULT_PROVIDER ?? Object.keys(providers)[0]!\n\n return Mailer.init({\n db,\n adapter,\n redis: { url: required('MAILER_REDIS_URL') },\n providers,\n defaultProvider,\n publicUrl: required('MAILER_PUBLIC_URL'),\n unsubscribeSecret: required('MAILER_UNSUBSCRIBE_SECRET'),\n senderAddress: env.MAILER_SENDER_ADDRESS,\n fromDefaults:\n env.MAILER_FROM_NAME && env.MAILER_FROM_EMAIL\n ? { name: env.MAILER_FROM_NAME, email: env.MAILER_FROM_EMAIL }\n : undefined,\n })\n }\n\n static async init(input: MailerConfig): Promise<Mailer> {\n const config = resolveConfig(input)\n if (!config.providers[config.defaultProvider]) {\n throw new Error(`defaultProvider \"${config.defaultProvider}\" not in providers map`)\n }\n\n const collections = getCollections(config.db, config.collectionPrefix)\n await ensureIndexes(config.db, config.collectionPrefix)\n\n // Allow opt-out from BullMQ entirely. Useful for tests, and for hosts that\n // want to run mailer in a queueless mode (synchronous-only). Triggered by\n // `redis: null` in the config.\n let redis: IORedis | null = null\n let queues: Queues\n let bullQueues: BullQueues | null = null\n if (config.redis === null) {\n queues = noopQueues()\n } else {\n redis = makeRedis(config.redis)\n const created = createQueues(redis)\n queues = created.queues\n bullQueues = created.bullQueues\n if (!config.workerless) {\n await scheduleTick(bullQueues, config.tickIntervalSeconds)\n }\n }\n\n return new Mailer({\n config,\n db: config.db,\n collections,\n adapter: config.adapter,\n providers: config.providers,\n redis,\n queues,\n bullQueues,\n events: new EventRegistry(),\n })\n }\n\n // -------------------------------------------------------------------------\n // Event registration + firing\n // -------------------------------------------------------------------------\n\n registerEvent(reg: RegisterEventInput): void {\n const parsed = registerEventSchema.parse(reg)\n this.events.register(parsed)\n }\n\n async fire(\n eventName: string,\n externalId: string,\n properties: Record<string, unknown> = {},\n dedupeKey?: string,\n ): Promise<void> {\n const input = fireInputSchema.parse({ eventName, externalId, properties, dedupeKey })\n const key = this.events.deriveKey(input.eventName, input.externalId, input.dedupeKey, new Date())\n if (!key) {\n throw new Error(\n `fire(\"${input.eventName}\") missing dedupeKey and no policy registered. ` +\n `Call mailer.registerEvent(\"${input.eventName}\", { dedupePolicy }) or pass a key explicitly.`,\n )\n }\n try {\n await this.collections.events.insertOne({\n externalId: input.externalId,\n name: input.eventName,\n properties: input.properties ?? {},\n dedupeKey: key,\n occurredAt: new Date(),\n createdAt: new Date(),\n })\n } catch (err: any) {\n if (err?.code !== 11000) throw err\n // Duplicate dedupeKey — no-op by design.\n }\n }\n\n async fireFromSession(\n session: ClientSession,\n eventName: string,\n externalId: string,\n properties: Record<string, unknown> = {},\n dedupeKey?: string,\n ): Promise<void> {\n const input = fireInputSchema.parse({ eventName, externalId, properties, dedupeKey })\n const key = this.events.deriveKey(input.eventName, input.externalId, input.dedupeKey, new Date())\n if (!key) {\n throw new Error(`fireFromSession(\"${input.eventName}\") missing dedupeKey and no policy registered.`)\n }\n try {\n await this.collections.outbox.insertOne(\n {\n payload: {\n type: 'event',\n data: {\n externalId: input.externalId,\n name: input.eventName,\n properties: input.properties ?? {},\n occurredAt: new Date(),\n },\n dedupeKey: key,\n },\n status: 'pending',\n attempts: 0,\n lastAttemptAt: null,\n lastError: null,\n enqueuedAt: new Date(),\n processedAt: null,\n },\n { session },\n )\n } catch (err: any) {\n if (err?.code !== 11000) throw err\n }\n }\n\n // -------------------------------------------------------------------------\n // Subscription / unsubscribe / tags / suppression\n // -------------------------------------------------------------------------\n\n async upsertSubscription(input: UpsertSubscriptionInput): Promise<void> {\n const parsed = upsertSubscriptionSchema.parse(input)\n const contact = await this.adapter.getById(parsed.externalId)\n if (!contact) throw new Error(`adapter has no contact for externalId ${parsed.externalId}`)\n\n const status = this.config.requireDoubleOptIn ? 'pending_doi' : 'subscribed'\n const now = new Date()\n\n // Generate a DOI token up front when DOI is required. We store its hash\n // (not the raw token) on the subscription doc for audit.\n let doiToken: string | null = null\n let doiTokenHash: string | null = null\n if (status === 'pending_doi') {\n const expiresAt = new Date(now.getTime() + this.config.doiTokenLifetimeDays * 86_400_000)\n doiToken = signDoiToken({ externalId: parsed.externalId, expiresAt }, this.config.unsubscribeSecret)\n doiTokenHash = sha256Hex(doiToken)\n }\n\n await this.collections.subscriptions.updateOne(\n { externalId: parsed.externalId },\n {\n $set: {\n status,\n source: parsed.source,\n emailAtSubscribe: contact.email,\n subscribedAt: status === 'subscribed' ? (parsed.consentTimestamp ?? now) : null,\n updatedAt: now,\n ...(doiTokenHash ? { doiTokenHash, doiRequestedAt: now } : {}),\n },\n $setOnInsert: {\n externalId: parsed.externalId,\n createdAt: now,\n unsubscribedAt: null,\n unsubscribeReason: null,\n doiTokenHash: null,\n doiRequestedAt: null,\n doiConfirmedAt: null,\n doiIp: parsed.consentIp ?? null,\n doiUserAgent: parsed.consentUserAgent ?? null,\n },\n },\n { upsert: true },\n )\n\n // Send the DOI confirmation email (best-effort — failures here don't\n // unwind the subscription; the host can poll pending DOI rows + re-fire).\n if (status === 'pending_doi' && doiToken) {\n const tpl = await this.collections.templates.findOne({ slug: this.config.doiTemplateSlug })\n if (!tpl) {\n console.warn(`mailery: DOI required but template \"${this.config.doiTemplateSlug}\" not found — skipping confirmation email`)\n return\n }\n const dedupeKey = `doi:${parsed.externalId}:${now.toISOString().slice(0, 10)}`\n try {\n await this.sendOneOff({\n templateSlug: tpl.slug,\n externalId: parsed.externalId,\n vars: { confirmDoiUrl: `${this.config.publicUrl}/m/confirm-doi/${doiToken}` },\n dedupeKey,\n })\n } catch (err) {\n console.error('mailery: DOI confirmation send failed', err)\n }\n }\n }\n\n async unsubscribe(email: string, opts: Omit<UnsubscribeInput, 'email'>): Promise<void> {\n const parsed = unsubscribeInputSchema.parse({ email, ...opts })\n const normalized = parsed.email\n const now = new Date()\n\n await this.collections.suppressions.updateOne(\n { email: normalized, scope: parsed.scope },\n {\n $setOnInsert: {\n email: normalized,\n emailHash: sha256Hex(normalized),\n scope: parsed.scope,\n // mailer_suppressions canonical reason — see plans/02-data-model.md.\n reason: 'unsubscribed' as const,\n source: parsed.source,\n notes: parsed.notes ?? null,\n addedAt: now,\n expiresAt: null,\n },\n },\n { upsert: true },\n )\n\n await this.collections.subscriptions.updateOne(\n { emailAtSubscribe: normalized },\n {\n $set: {\n status: 'unsubscribed' as const,\n unsubscribedAt: now,\n unsubscribeReason: parsed.reason,\n updatedAt: now,\n },\n },\n )\n }\n\n async suppress(email: string, opts: Omit<SuppressInput, 'email'>): Promise<void> {\n const parsed = suppressInputSchema.parse({ email, ...opts })\n await this.collections.suppressions.updateOne(\n { email: parsed.email, scope: parsed.scope },\n {\n $setOnInsert: {\n email: parsed.email,\n emailHash: sha256Hex(parsed.email),\n scope: parsed.scope,\n reason: parsed.reason,\n source: parsed.source,\n notes: parsed.notes ?? null,\n addedAt: new Date(),\n expiresAt: parsed.expiresAt ?? null,\n },\n },\n { upsert: true },\n )\n }\n\n async tag(externalId: string, tag: string): Promise<void> {\n const parsed = tagInputSchema.parse({ externalId, tag })\n if (this.adapter.addTags) {\n await this.adapter.addTags(parsed.externalId, [parsed.tag])\n } else {\n await this.collections.contactTags.updateOne(\n { externalId: parsed.externalId, tag: parsed.tag },\n {\n $setOnInsert: {\n externalId: parsed.externalId,\n tag: parsed.tag,\n appliedBy: 'admin',\n appliedAt: new Date(),\n },\n },\n { upsert: true },\n )\n }\n }\n\n async untag(externalId: string, tag: string): Promise<void> {\n const parsed = tagInputSchema.parse({ externalId, tag })\n if (this.adapter.removeTags) {\n await this.adapter.removeTags(parsed.externalId, [parsed.tag])\n } else {\n await this.collections.contactTags.deleteOne({ externalId: parsed.externalId, tag: parsed.tag })\n }\n }\n\n /**\n * GDPR right-to-erasure. Hard-deletes the contact's PII and leaves a hashed\n * suppression row to block re-import. INVARIANT 9.\n */\n async forget(externalId: string): Promise<void> {\n const sub = await this.collections.subscriptions.findOne({ externalId })\n const email = sub?.emailAtSubscribe?.toLowerCase()\n\n const collected = await Promise.all([\n this.collections.sends.find({ externalId }).map((s) => s.emailAtSend).toArray(),\n ])\n const emails = new Set<string>()\n if (email) emails.add(email)\n for (const e of collected[0]) if (e) emails.add(e.toLowerCase())\n\n await Promise.all([\n this.collections.events.deleteMany({ externalId }),\n this.collections.flowRuns.deleteMany({ externalId }),\n this.collections.sends.deleteMany({ externalId }),\n this.collections.subscriptions.deleteMany({ externalId }),\n this.collections.contactTags.deleteMany({ externalId }),\n ])\n if (email) {\n await this.collections.leads.deleteMany({ email })\n }\n\n for (const e of emails) {\n await this.collections.suppressions.updateOne(\n { emailHash: sha256Hex(e), scope: 'all' },\n {\n $setOnInsert: {\n email: null,\n emailHash: sha256Hex(e),\n scope: 'all',\n reason: 'gdpr_forget',\n source: 'gdpr_request',\n notes: null,\n addedAt: new Date(),\n expiresAt: null,\n },\n },\n { upsert: true },\n )\n }\n\n await this.audit({\n actor: 'system:gdpr',\n action: 'gdpr.forget',\n resource: { collection: 'mailer_subscriptions', id: sub?._id },\n diffSummary: `forget externalId=${externalId}`,\n })\n }\n\n /** GDPR data export. JSON-serializable. */\n async exportContactData(externalId: string): Promise<Record<string, unknown>> {\n const subscription = await this.collections.subscriptions.findOne({ externalId })\n const [events, flowRuns, sends, suppressions, tags] = await Promise.all([\n this.collections.events.find({ externalId }).toArray(),\n this.collections.flowRuns.find({ externalId }).toArray(),\n this.collections.sends.find({ externalId }).toArray(),\n subscription?.emailAtSubscribe\n ? this.collections.suppressions.find({ email: subscription.emailAtSubscribe }).toArray()\n : Promise.resolve([]),\n this.collections.contactTags.find({ externalId }).toArray(),\n ])\n return { subscription, events, flowRuns, sends, suppressions, tags }\n }\n\n // -------------------------------------------------------------------------\n // One-off transactional send (password reset etc.)\n // -------------------------------------------------------------------------\n\n async sendOneOff(input: SendOneOffInput): Promise<{ sendId: string }> {\n const parsed = sendOneOffInputSchema.parse(input)\n const template = await this.collections.templates.findOne({ slug: parsed.templateSlug })\n if (!template) throw new Error(`template not found: ${parsed.templateSlug}`)\n\n const contact = await this.adapter.getById(parsed.externalId)\n if (!contact) throw new Error(`contact not found: ${parsed.externalId}`)\n\n const dedupeKey = `oneoff:${parsed.dedupeKey}`\n const existing = await this.collections.sends.findOne({ dedupeKey })\n if (existing) return { sendId: String(existing._id) }\n\n const providerName =\n parsed.providerOverride\n ?? template.providerOverride\n ?? (template.kind === 'transactional' ? this.config.defaultTransactionalProvider : null)\n ?? this.config.defaultProvider\n\n const sendId = new ObjectIdCtor()\n await this.collections.sends.insertOne({\n _id: sendId,\n dedupeKey,\n externalId: parsed.externalId,\n emailAtSend: contact.email,\n templateId: template._id!,\n templateSlug: template.slug,\n flowRunId: null,\n broadcastId: null,\n manualSendBy: 'sendOneOff',\n kind: template.kind,\n provider: providerName,\n providerMessageId: null,\n fromName: template.fromName,\n fromEmail: template.fromEmail,\n subject: template.subject,\n bodyHash: '',\n status: 'queued',\n errorMessage: null,\n bounceType: null,\n bounceReason: null,\n links: [],\n vars: parsed.vars ?? {},\n openedAt: null,\n openCount: 0,\n firstClickAt: null,\n clickCount: 0,\n clickedLinks: [],\n unsubscribedAt: null,\n complainedAt: null,\n queuedAt: new Date(),\n sentAt: null,\n deliveredAt: null,\n })\n\n await this.queues.send.add(\n 'send',\n { sendId: String(sendId) },\n { attempts: this.config.sendRetryAttempts, backoff: { type: 'exponential', delay: 60_000 } },\n )\n\n return { sendId: String(sendId) }\n }\n\n // -------------------------------------------------------------------------\n // Audit log helper\n // -------------------------------------------------------------------------\n\n async audit(entry: {\n actor: string\n action: string\n resource: { collection: string; id?: string | ObjectId; slug?: string }\n before?: Record<string, unknown> | null\n after?: Record<string, unknown> | null\n diffSummary?: string\n ip?: string\n userAgent?: string\n requestId?: string\n }): Promise<void> {\n await this.collections.auditLog.insertOne({\n actor: entry.actor,\n action: entry.action,\n resource: entry.resource,\n before: entry.before ?? null,\n after: entry.after ?? null,\n diffSummary: entry.diffSummary ?? null,\n ip: entry.ip ?? null,\n userAgent: entry.userAgent ?? null,\n requestId: entry.requestId ?? null,\n occurredAt: new Date(),\n })\n }\n\n // -------------------------------------------------------------------------\n // Workers\n // -------------------------------------------------------------------------\n\n async startWorkers(): Promise<void> {\n if (this.workers) return\n if (!this.redis) throw new Error('startWorkers requires a Redis connection (redis was null in config)')\n const provider = this.providers[this.config.defaultProvider]\n const sendRate = provider?.sendRatePerSecond ?? this.config.sendRatePerSecond\n\n this.workers = createWorkers({\n redis: this.redis,\n concurrency: { send: this.config.sendConcurrency },\n sendRateLimit: { max: sendRate, durationMs: 1_000 },\n handlers: {\n tick: async () => {\n await runTick(this.runnerContext)\n },\n advance: async (data) => {\n if (!ObjectIdCtor.isValid(data.flowRunId)) return\n await processOneRunStep(new ObjectIdCtor(data.flowRunId), this.runnerContext)\n },\n send: async (data) => {\n if (!ObjectIdCtor.isValid(data.sendId)) return\n await dispatchSend(new ObjectIdCtor(data.sendId), this.runnerContext)\n },\n webhook: async () => {\n await this.processWebhookBacklog()\n },\n },\n })\n }\n\n /** Process unprocessed webhook events in mailer_webhook_events. */\n private async processWebhookBacklog(): Promise<void> {\n const batch = await this.collections.webhookEvents\n .find({ processed: false })\n .limit(500)\n .toArray()\n\n for (const evt of batch) {\n try {\n // The stored `raw` wraps the normalized event we captured at ingest;\n // pull details back out so applyWebhookEvent has the bounce reason etc.\n const normalized = (evt.raw as any)?.normalized\n const details = normalized?.details ?? {}\n await applyWebhookEvent(\n {\n type: evt.normalizedType,\n providerEventId: evt.providerEventId,\n providerMessageId: evt.providerMessageId,\n email: evt.email,\n occurredAt: evt.occurredAt,\n details,\n },\n this.runnerContext,\n )\n await this.collections.webhookEvents.updateOne({ _id: evt._id }, { $set: { processed: true } })\n } catch (err) {\n console.error('mailery: webhook apply failed', { id: String(evt._id), err })\n }\n }\n }\n\n async stop(): Promise<void> {\n if (this.workers) {\n await closeWorkers(this.workers)\n this.workers = null\n }\n if (this.bullQueues) {\n await closeBullQueues(this.bullQueues)\n this.bullQueues = null\n } else {\n await closeQueues(this.queues)\n }\n if (this.redis) {\n await this.redis.quit().catch(() => {})\n }\n }\n\n /** Used internally by the admin router and tests; not part of the public API. */\n getRunnerContext(): RunnerContext {\n return this.runnerContext\n }\n}\n","/**\n * MemoryContactAdapter — drop-in in-process ContactAdapter for tests.\n * Hold contacts in a Map; everything operates synchronously over RAM.\n */\n\nimport type {\n AdapterFilter,\n Contact,\n ContactAdapter,\n} from '../shared/types.js'\n\nexport class MemoryContactAdapter implements ContactAdapter {\n private readonly byId = new Map<string, Contact>()\n\n constructor(initial: Contact[] = []) {\n for (const c of initial) this.byId.set(c.externalId, c)\n }\n\n upsert(contact: Contact): void {\n this.byId.set(contact.externalId, {\n ...contact,\n email: contact.email.toLowerCase(),\n tags: [...contact.tags],\n fields: { ...contact.fields },\n })\n }\n\n delete(externalId: string): void {\n this.byId.delete(externalId)\n }\n\n async getById(externalId: string): Promise<Contact | null> {\n return this.byId.get(externalId) ?? null\n }\n\n async getByEmail(email: string): Promise<Contact | null> {\n const lower = email.toLowerCase()\n for (const c of this.byId.values()) {\n if (c.email === lower) return c\n }\n return null\n }\n\n async getBatch(externalIds: string[]): Promise<Map<string, Contact>> {\n const out = new Map<string, Contact>()\n for (const id of externalIds) {\n const c = this.byId.get(id)\n if (c) out.set(id, c)\n }\n return out\n }\n\n async query(\n filter: AdapterFilter,\n opts: { limit: number; cursor?: string },\n ): Promise<{ contacts: Contact[]; nextCursor?: string }> {\n const all = Array.from(this.byId.values())\n .filter((c) => matches(c, filter))\n .sort((a, b) => (a.externalId < b.externalId ? -1 : 1))\n\n const startIndex = opts.cursor\n ? all.findIndex((c) => c.externalId > opts.cursor!)\n : 0\n const slice = all.slice(startIndex === -1 ? all.length : startIndex, (startIndex === -1 ? all.length : startIndex) + opts.limit)\n const hasMore = startIndex !== -1 && startIndex + opts.limit < all.length\n\n return {\n contacts: slice,\n nextCursor: hasMore ? slice[slice.length - 1]?.externalId : undefined,\n }\n }\n\n async count(filter: AdapterFilter): Promise<number> {\n let n = 0\n for (const c of this.byId.values()) if (matches(c, filter)) n++\n return n\n }\n\n async addTags(externalId: string, tags: string[]): Promise<void> {\n const c = this.byId.get(externalId)\n if (!c) return\n const set = new Set(c.tags)\n for (const t of tags) set.add(t)\n c.tags = Array.from(set)\n }\n\n async removeTags(externalId: string, tags: string[]): Promise<void> {\n const c = this.byId.get(externalId)\n if (!c) return\n const remove = new Set(tags)\n c.tags = c.tags.filter((t) => !remove.has(t))\n }\n}\n\nfunction matches(c: Contact, f: AdapterFilter): boolean {\n if (f.emailIn && !f.emailIn.map((e) => e.toLowerCase()).includes(c.email)) return false\n if (f.externalIdIn && !f.externalIdIn.includes(c.externalId)) return false\n if (f.fieldEquals && c.fields[f.fieldEquals.field] !== f.fieldEquals.value) return false\n if (f.fieldIn && !f.fieldIn.values.includes(c.fields[f.fieldIn.field])) return false\n if (f.fieldExists && c.fields[f.fieldExists] === undefined) return false\n if (f.hasTag && !c.tags.includes(f.hasTag)) return false\n if (f.hasTagIn && !f.hasTagIn.some((t) => c.tags.includes(t))) return false\n return true\n}\n","/**\n * Test helpers — `import { ... } from 'mailery/testing'`.\n *\n * const harness = await createTestMailer({ seedContacts: [...] })\n * await harness.mailer.upsertSubscription({ externalId: 'u1', source: 'test' })\n * await harness.mailer.fire('Created', 'u1')\n * // drive the runner directly:\n * const { runTick, processOneRunStep, dispatchSend } = await import('mailery')\n * await runTick(harness.mailer.getRunnerContext())\n * expect(harness.provider.sent.length).toBe(1)\n * await harness.stop()\n *\n * Backed by mongodb-memory-server + ioredis-mock + NullProvider.\n */\n\nimport { MongoClient, type Db } from 'mongodb'\n\nimport type { ContactAdapter, Contact } from '../shared/types.js'\nimport { NullProvider } from '../server/providers/null.js'\nimport { Mailer } from '../server/mailer.js'\nimport { MemoryContactAdapter } from './memory-adapter.js'\n\nexport { NullProvider, MemoryContactAdapter }\n\nexport interface TestMailerOptions {\n adapter?: ContactAdapter\n seedContacts?: Contact[]\n provider?: NullProvider\n /** Override Mailer config (excluding required fields the harness fills in). */\n config?: Partial<Omit<Parameters<typeof Mailer.init>[0], 'db' | 'adapter' | 'redis' | 'providers' | 'defaultProvider'>>\n}\n\nexport interface TestMailerHarness {\n mailer: Mailer\n db: Db\n provider: NullProvider\n adapter: ContactAdapter\n memoryAdapter: MemoryContactAdapter | null\n stop: () => Promise<void>\n}\n\nexport async function createTestMailer(opts: TestMailerOptions = {}): Promise<TestMailerHarness> {\n // Lazy-load test-only deps so production bundles don't pay for them.\n const { MongoMemoryServer } = await import('mongodb-memory-server')\n\n const mongo = await MongoMemoryServer.create()\n const client = new MongoClient(mongo.getUri())\n await client.connect()\n const db = client.db('mailery-test')\n\n const memoryAdapter = opts.adapter ? null : new MemoryContactAdapter(opts.seedContacts ?? [])\n const adapter = opts.adapter ?? memoryAdapter!\n const provider = opts.provider ?? new NullProvider()\n\n // No BullMQ in tests. The runner's queue.add calls become no-ops; tests\n // call runTick / processOneRunStep / dispatchSend directly.\n const mailer = await Mailer.init({\n db,\n adapter,\n redis: null,\n providers: { null: provider },\n defaultProvider: 'null',\n publicUrl: 'http://localhost:3000',\n unsubscribeSecret: 'test-unsub-secret-32-bytes-or-more-please',\n senderAddress: '1 Test St, Brooklyn NY 11201',\n fromDefaults: { name: 'Test', email: 'test@example.com' },\n workerless: true,\n ...(opts.config ?? {}),\n })\n\n const stop = async () => {\n await mailer.stop().catch(() => {})\n await client.close().catch(() => {})\n await mongo.stop().catch(() => {})\n }\n\n return { mailer, db, provider, adapter, memoryAdapter, stop }\n}\n"]}
|