screw-up 1.11.0 → 1.13.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/dist/analyzer.d.ts +2 -2
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/cli-internal.d.ts +2 -2
- package/dist/cli-internal.d.ts.map +1 -1
- package/dist/cli.d.ts +2 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/fast-tags.d.ts +2 -2
- package/dist/fast-tags.d.ts.map +1 -1
- package/dist/generated/packageMetadata.d.ts +4 -4
- package/dist/generated/packageMetadata.d.ts.map +1 -1
- package/dist/git-operations.d.ts +2 -2
- package/dist/git-operations.d.ts.map +1 -1
- package/dist/index.cjs +90 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +90 -17
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +2 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/main.cjs +4 -4
- package/dist/main.d.ts +2 -2
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +4 -4
- package/dist/{packageMetadata-CbJ6UwXP.cjs → packageMetadata-B-SWvYlj.cjs} +5 -5
- package/dist/{packageMetadata-CbJ6UwXP.cjs.map → packageMetadata-B-SWvYlj.cjs.map} +1 -1
- package/dist/{packageMetadata-sSqaeWXw.js → packageMetadata-CbtDrpYF.js} +5 -5
- package/dist/{packageMetadata-sSqaeWXw.js.map → packageMetadata-CbtDrpYF.js.map} +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/vite-plugin.d.ts +2 -2
- package/dist/vite-plugin.d.ts.map +1 -1
- package/package.json +6 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/async-primitives/dist/index.js","../src/vite-plugin.ts"],"sourcesContent":["/*!\n * name: async-primitives\n * version: 1.2.0\n * description: A collection of primitive functions for asynchronous operations\n * author: Kouji Matsui (@kekyo@mi.kekyo.net)\n * license: MIT\n * repository.url: https://github.com/kekyo/async-primitives.git\n * git.commit.hash: 3b7bffeaa8ae47aea6e8b0ef0f70e265a6d9ab08\n */\nconst __NOOP_HANDLER = () => {\n};\nconst __NOOP_RELEASABLE = {\n release: __NOOP_HANDLER,\n [Symbol.dispose]: __NOOP_HANDLER\n};\nconst onAbort = (signal, callback) => {\n if (!signal) {\n return __NOOP_RELEASABLE;\n }\n if (signal.aborted) {\n try {\n callback();\n } catch (error) {\n console.warn(\"AbortHook callback error: \", error);\n }\n return __NOOP_RELEASABLE;\n }\n let abortHandler;\n abortHandler = () => {\n if (abortHandler) {\n signal.removeEventListener(\"abort\", abortHandler);\n abortHandler = void 0;\n try {\n callback();\n } catch (error) {\n console.warn(\"AbortHook callback error: \", error);\n }\n }\n };\n const release = () => {\n if (abortHandler) {\n signal.removeEventListener(\"abort\", abortHandler);\n abortHandler = void 0;\n }\n };\n signal.addEventListener(\"abort\", abortHandler, { once: true });\n const handle = {\n release,\n [Symbol.dispose]: release\n };\n return handle;\n};\nconst delay = (msec, signal) => {\n if (signal) {\n if (signal.aborted) {\n throw new Error(\"Delay was aborted\");\n }\n return new Promise((resolve, reject) => {\n const abortHandle = onAbort(signal, () => {\n clearTimeout(timeoutId);\n reject(new Error(\"Delay was aborted\"));\n });\n const timeoutId = setTimeout(() => {\n abortHandle.release();\n resolve();\n }, msec);\n });\n } else {\n return new Promise((resolve) => {\n setTimeout(resolve, msec);\n });\n }\n};\nconst defer = (fn) => {\n if (typeof setImmediate === \"function\") {\n setImmediate(fn);\n } else {\n setTimeout(fn, 0);\n }\n};\nconst ABORTED_ERROR$2 = () => new Error(\"Lock acquisition was aborted\");\nconst createLockHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nconst createMutex = (maxConsecutiveCalls = 20) => {\n let isLocked = false;\n const queue = [];\n let count = 0;\n const processQueue = () => {\n var _a;\n if (isLocked || queue.length === 0) {\n return;\n }\n const item = queue.shift();\n if ((_a = item.signal) == null ? void 0 : _a.aborted) {\n item.reject(ABORTED_ERROR$2());\n scheduleNextProcess();\n return;\n }\n isLocked = true;\n const lockHandle = createLockHandle(releaseLock);\n item.resolve(lockHandle);\n };\n const scheduleNextProcess = () => {\n count++;\n if (count >= maxConsecutiveCalls) {\n count = 0;\n defer(processQueue);\n } else {\n processQueue();\n }\n };\n const releaseLock = () => {\n if (!isLocked) {\n return;\n }\n isLocked = false;\n scheduleNextProcess();\n };\n const removeFromQueue = (item) => {\n const index = queue.indexOf(item);\n if (index !== -1) {\n queue.splice(index, 1);\n }\n };\n const lock = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR$2();\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromQueue(queueItem);\n reject(ABORTED_ERROR$2());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n queue.push(queueItem);\n processQueue();\n });\n } else {\n return new Promise((resolve, reject) => {\n queue.push({\n resolve,\n reject\n });\n processQueue();\n });\n }\n };\n const result = {\n lock,\n waiter: {\n wait: lock\n },\n get isLocked() {\n return isLocked;\n },\n get pendingCount() {\n return queue.length;\n }\n };\n return result;\n};\nconst createDeferred = (signal) => {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n const disposer = onAbort(signal, () => {\n const _reject = reject;\n if (_reject) {\n resolve = void 0;\n reject = void 0;\n _reject(new Error(\"Deferred aborted\"));\n }\n });\n return {\n // The promise that resolves to the result\n promise,\n // Resolve the promise with a result\n resolve: (value) => {\n const _resolve = resolve;\n if (_resolve) {\n resolve = void 0;\n reject = void 0;\n disposer.release();\n _resolve(value);\n }\n },\n // Reject the promise with an error\n reject: (error) => {\n const _reject = reject;\n if (_reject) {\n resolve = void 0;\n reject = void 0;\n disposer.release();\n _reject(error);\n }\n }\n };\n};\nconst __NOOP_DUMMY_HANDLE = {\n get isActive() {\n return false;\n },\n release: __NOOP_HANDLER,\n [Symbol.dispose]: __NOOP_HANDLER\n};\nconst createConditional = () => {\n const waiters = [];\n const trigger = () => {\n if (waiters.length >= 1) {\n waiters.shift().resolve();\n }\n };\n const wait = async (signal) => {\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Conditional aborted\");\n }\n const waiter = createDeferred();\n waiters.push(waiter);\n const disposer = onAbort(signal, () => {\n waiters.splice(waiters.indexOf(waiter), 1);\n waiter.reject(new Error(\"Conditional aborted\"));\n });\n try {\n await waiter.promise;\n } finally {\n disposer.release();\n }\n return __NOOP_DUMMY_HANDLE;\n };\n const result = {\n trigger,\n wait,\n waiter: {\n wait\n }\n };\n return result;\n};\nconst createManuallyConditional = (initialState) => {\n const waiters = [];\n let raised = initialState != null ? initialState : false;\n const trigger = () => {\n raised = false;\n const waiter = waiters.shift();\n if (waiter) {\n waiter.resolve();\n raised = false;\n }\n };\n const raise = () => {\n while (waiters.length >= 1) {\n raised = true;\n waiters.shift().resolve();\n }\n raised = true;\n };\n const drop = () => {\n raised = false;\n };\n const wait = async (signal) => {\n if (raised) {\n return __NOOP_DUMMY_HANDLE;\n }\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Conditional aborted\");\n }\n const waiter = createDeferred();\n waiters.push(waiter);\n const disposer = onAbort(signal, () => {\n waiters.splice(waiters.indexOf(waiter), 1);\n waiter.reject(new Error(\"Conditional aborted\"));\n });\n try {\n await waiter.promise;\n } finally {\n disposer.release();\n }\n return __NOOP_DUMMY_HANDLE;\n };\n const result = {\n trigger,\n raise,\n drop,\n wait,\n waiter: {\n wait\n }\n };\n return result;\n};\nconst createDeferredGenerator = (options) => {\n const maxItemReserved = options == null ? void 0 : options.maxItemReserved;\n const signal = options == null ? void 0 : options.signal;\n const queue = [];\n const arrived = createManuallyConditional();\n const canReserve = maxItemReserved ? createManuallyConditional(true) : void 0;\n const generator = (async function* () {\n while (true) {\n while (true) {\n const item = queue.shift();\n if (maxItemReserved && queue.length === maxItemReserved - 1) {\n canReserve.raise();\n }\n if (!item) {\n break;\n }\n switch (item.kind) {\n // Yield return a value\n case \"value\":\n yield item.value;\n break;\n // Completed, exit the generator\n case \"completed\":\n return;\n // Error, throw an error\n case \"error\":\n throw item.error;\n }\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Deferred generator aborted\");\n }\n }\n arrived.drop();\n try {\n await arrived.wait(signal);\n } catch (error) {\n if (error instanceof Error && error.message === \"Conditional aborted\") {\n error.message = \"Deferred generator aborted\";\n }\n throw error;\n }\n }\n })();\n const enqueue = async (item, signal2) => {\n while (true) {\n if (!maxItemReserved || queue.length < maxItemReserved) {\n const remains = queue.push(item);\n if (remains === 1) {\n arrived.raise();\n }\n if (remains === maxItemReserved) {\n canReserve.drop();\n }\n break;\n }\n try {\n await canReserve.wait(signal2);\n } catch (error) {\n if (error instanceof Error && error.message === \"Conditional aborted\") {\n error.message = \"Deferred generator aborted\";\n }\n throw error;\n }\n }\n };\n return {\n // The async generator that yields values\n generator,\n // Yield a value to the generator\n yield: (value, signal2) => enqueue({ kind: \"value\", value }, signal2),\n // Complete the generator (equivalent to return)\n return: (signal2) => enqueue({ kind: \"completed\" }, signal2),\n // Throw an error to the generator\n throw: (error, signal2) => enqueue({ kind: \"error\", error }, signal2)\n };\n};\nconst createLogicalContext = (id) => {\n return { id, data: /* @__PURE__ */ new Map() };\n};\nlet currentLogicalContext = createLogicalContext(Symbol(\"[root]\"));\nconst setCurrentLogicalContext = (context) => {\n currentLogicalContext = context;\n};\nconst trampoline = (adjustment, callback, thisArg, ...args) => {\n const previousLogicalContext = currentLogicalContext;\n currentLogicalContext = adjustment.contextToUse;\n try {\n return callback.call(thisArg, ...args);\n } finally {\n adjustment.contextAfter = currentLogicalContext;\n currentLogicalContext = previousLogicalContext;\n }\n};\nlet isPrepared = false;\nconst prepare = () => {\n if (isPrepared) {\n return;\n }\n isPrepared = true;\n if (typeof globalThis.setTimeout !== \"undefined\") {\n const __setTimeout = globalThis.setTimeout;\n globalThis.setTimeout = ((handler, timeout, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setTimeout(\n (...args2) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, handler, void 0, ...args2);\n },\n timeout,\n ...args\n );\n });\n }\n if (typeof globalThis.setInterval !== \"undefined\") {\n const __setInterval = globalThis.setInterval;\n globalThis.setInterval = ((handler, timeout, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setInterval(\n (...args2) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, handler, void 0, ...args2);\n },\n timeout,\n ...args\n );\n });\n }\n if (typeof globalThis.queueMicrotask !== \"undefined\") {\n const __queueMicrotask = globalThis.queueMicrotask;\n globalThis.queueMicrotask = (callback) => {\n const capturedLogicalContext = currentLogicalContext;\n return __queueMicrotask(() => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, callback, void 0);\n });\n };\n }\n if (typeof globalThis.setImmediate !== \"undefined\") {\n const __setImmediate = globalThis.setImmediate;\n globalThis.setImmediate = ((callback, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setImmediate(\n (...callbackArgs) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, callback, void 0, ...callbackArgs);\n },\n ...args\n );\n });\n }\n if (typeof process !== \"undefined\" && process.nextTick) {\n const __nextTick = process.nextTick;\n process.nextTick = (callback, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __nextTick(() => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, callback, void 0, ...args);\n });\n };\n }\n if (typeof Promise !== \"undefined\") {\n const __then = Promise.prototype.then;\n const __catch = Promise.prototype.catch;\n const __finally = Promise.prototype.finally;\n Promise.prototype.then = function(onFulfilled, onRejected) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __then.call(\n this,\n onFulfilled ? (value) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onFulfilled, void 0, value);\n } : void 0,\n onRejected ? (reason) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onRejected, void 0, reason);\n } : void 0\n );\n return resultPromise;\n };\n Promise.prototype.catch = function(onRejected) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __catch.call(\n this,\n onRejected ? (reason) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onRejected, void 0, reason);\n } : void 0\n );\n return resultPromise;\n };\n Promise.prototype.finally = function(onFinally) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __finally.call(\n this,\n onFinally ? () => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onFinally, void 0);\n } : void 0\n );\n return resultPromise;\n };\n }\n if (typeof EventTarget !== \"undefined\" && EventTarget.prototype && EventTarget.prototype.addEventListener) {\n const __eventTargetAddEventListener = EventTarget.prototype.addEventListener;\n EventTarget.prototype.addEventListener = function(type, listener, options) {\n if (listener === null || listener === void 0) {\n return __eventTargetAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n }\n if (typeof listener === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return __eventTargetAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return __eventTargetAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n }\n return __eventTargetAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n };\n }\n if (typeof Element !== \"undefined\" && Element.prototype && Element.prototype.addEventListener) {\n const __elementAddEventListener = Element.prototype.addEventListener;\n Element.prototype.addEventListener = function(type, listener, options) {\n if (listener === null || listener === void 0) {\n return __elementAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n }\n if (typeof listener === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return __elementAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return __elementAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n }\n return __elementAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n };\n }\n if (typeof globalThis.requestAnimationFrame !== \"undefined\") {\n const __requestAnimationFrame = globalThis.requestAnimationFrame;\n globalThis.requestAnimationFrame = (callback) => {\n const capturedLogicalContext = currentLogicalContext;\n return __requestAnimationFrame((time) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, callback, void 0, time);\n });\n };\n }\n if (typeof globalThis.XMLHttpRequest !== \"undefined\") {\n const __XMLHttpRequest = globalThis.XMLHttpRequest;\n globalThis.XMLHttpRequest = class extends __XMLHttpRequest {\n constructor() {\n super();\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onreadystatechange\",\n \"onloadstart\",\n \"onprogress\",\n \"onabort\",\n \"onerror\",\n \"onload\",\n \"ontimeout\",\n \"onloadend\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.WebSocket !== \"undefined\") {\n const __WebSocket = globalThis.WebSocket;\n globalThis.WebSocket = class extends __WebSocket {\n constructor(url, protocols) {\n super(url, protocols);\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onopen\",\n \"onmessage\",\n \"onerror\",\n \"onclose\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.MutationObserver !== \"undefined\") {\n const __MutationObserver = globalThis.MutationObserver;\n globalThis.MutationObserver = class extends __MutationObserver {\n constructor(callback) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (mutations, observer) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(\n adjustment,\n callback,\n void 0,\n mutations,\n observer\n );\n };\n super(wrappedCallback);\n }\n };\n }\n if (typeof globalThis.ResizeObserver !== \"undefined\") {\n const __ResizeObserver = globalThis.ResizeObserver;\n globalThis.ResizeObserver = class extends __ResizeObserver {\n constructor(callback) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (entries, observer) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, callback, void 0, entries, observer);\n };\n super(wrappedCallback);\n }\n };\n }\n if (typeof globalThis.IntersectionObserver !== \"undefined\") {\n const __IntersectionObserver = globalThis.IntersectionObserver;\n globalThis.IntersectionObserver = class extends __IntersectionObserver {\n constructor(callback, options) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (entries, observer) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, callback, void 0, entries, observer);\n };\n super(wrappedCallback, options);\n }\n };\n }\n if (typeof globalThis.Worker !== \"undefined\") {\n const __Worker = globalThis.Worker;\n globalThis.Worker = class extends __Worker {\n constructor(scriptURL, options) {\n super(scriptURL, options);\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onmessage\",\n \"onmessageerror\",\n \"onerror\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.MessagePort !== \"undefined\") {\n const __MessagePort = globalThis.MessagePort;\n const createMessagePortWrapper = (originalPort) => {\n const _userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\"onmessage\", \"onmessageerror\"];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(originalPort, prop, {\n get: () => _userHandlers.get(prop) || null,\n set: (newHandler) => {\n _userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const descriptor = Object.getOwnPropertyDescriptor(\n __MessagePort.prototype,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(originalPort, wrappedHandler);\n }\n } else {\n const descriptor = Object.getOwnPropertyDescriptor(\n __MessagePort.prototype,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(originalPort, null);\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n const originalAddEventListener = originalPort.addEventListener;\n originalPort.addEventListener = function(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return originalAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return originalAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return originalAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n }\n return originalAddEventListener.call(this, type, listener, options);\n };\n return originalPort;\n };\n if (typeof globalThis.MessageChannel !== \"undefined\") {\n const __MessageChannel = globalThis.MessageChannel;\n globalThis.MessageChannel = class extends __MessageChannel {\n constructor() {\n super();\n createMessagePortWrapper(this.port1);\n createMessagePortWrapper(this.port2);\n }\n };\n }\n }\n};\nconst setLogicalContextValue = (key, value) => {\n prepare();\n if (value !== void 0) {\n currentLogicalContext.data.set(key, value);\n } else {\n currentLogicalContext.data.delete(key);\n }\n};\nconst getLogicalContextValue = (key) => {\n prepare();\n return currentLogicalContext.data.get(key);\n};\nconst runOnNewLogicalContext = (prefix, handler) => {\n const previousLogicalContext = currentLogicalContext;\n setCurrentLogicalContext(\n createLogicalContext(Symbol(`${prefix}-${crypto.randomUUID()}`))\n );\n try {\n return handler();\n } finally {\n setCurrentLogicalContext(previousLogicalContext);\n }\n};\nconst getCurrentLogicalContextId = () => {\n prepare();\n return currentLogicalContext.id;\n};\nconst createAsyncLocal = () => {\n const key = Symbol(`async-local-${crypto.randomUUID()}`);\n return {\n setValue: (value) => {\n setLogicalContextValue(key, value);\n },\n getValue: () => {\n return getLogicalContextValue(key);\n }\n };\n};\nconst ABORTED_ERROR$1 = () => new Error(\"Semaphore acquisition was aborted\");\nconst INVALID_COUNT_ERROR = () => new Error(\"Semaphore count must be greater than 0\");\nconst createSemaphoreHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nconst createSemaphore = (count, maxConsecutiveCalls = 20) => {\n if (count < 1) {\n throw INVALID_COUNT_ERROR();\n }\n let availableCount = count;\n const queue = [];\n let consecutiveCallCount = 0;\n const processQueue = () => {\n var _a;\n while (availableCount > 0 && queue.length > 0) {\n const item = queue.shift();\n if ((_a = item.signal) == null ? void 0 : _a.aborted) {\n item.reject(ABORTED_ERROR$1());\n continue;\n }\n availableCount--;\n const semaphoreHandle = createSemaphoreHandle(releaseSemaphore);\n item.resolve(semaphoreHandle);\n }\n };\n const scheduleNextProcess = () => {\n consecutiveCallCount++;\n if (consecutiveCallCount >= maxConsecutiveCalls) {\n consecutiveCallCount = 0;\n defer(processQueue);\n } else {\n processQueue();\n }\n };\n const releaseSemaphore = () => {\n availableCount++;\n scheduleNextProcess();\n };\n const removeFromQueue = (item) => {\n const index = queue.indexOf(item);\n if (index !== -1) {\n queue.splice(index, 1);\n }\n };\n const acquire = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR$1();\n }\n if (availableCount > 0) {\n availableCount--;\n return createSemaphoreHandle(releaseSemaphore);\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromQueue(queueItem);\n reject(ABORTED_ERROR$1());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n queue.push(queueItem);\n processQueue();\n });\n } else {\n if (availableCount > 0) {\n availableCount--;\n return createSemaphoreHandle(releaseSemaphore);\n }\n return new Promise((resolve, reject) => {\n queue.push({\n resolve,\n reject\n });\n processQueue();\n });\n }\n };\n const result = {\n acquire,\n waiter: {\n wait: acquire\n },\n get availableCount() {\n return availableCount;\n },\n get pendingCount() {\n return queue.length;\n }\n };\n return result;\n};\nconst ABORTED_ERROR = () => new Error(\"Lock acquisition was aborted\");\nconst createReadLockHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nconst createWriteLockHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nfunction createReaderWriterLock(optionsOrMaxCalls) {\n var _a, _b;\n let policy = \"write-preferring\";\n let maxConsecutiveCalls = 20;\n if (typeof optionsOrMaxCalls === \"number\") {\n maxConsecutiveCalls = optionsOrMaxCalls;\n } else if (optionsOrMaxCalls) {\n policy = (_a = optionsOrMaxCalls.policy) != null ? _a : \"write-preferring\";\n maxConsecutiveCalls = (_b = optionsOrMaxCalls.maxConsecutiveCalls) != null ? _b : 20;\n }\n let currentReaders = 0;\n let hasWriter = false;\n const readQueue = [];\n const writeQueue = [];\n let consecutiveCallCount = 0;\n const processQueues = () => {\n var _a2, _b2, _c, _d;\n if (policy === \"write-preferring\") {\n if (!hasWriter && currentReaders === 0 && writeQueue.length > 0) {\n const item = writeQueue.shift();\n if ((_a2 = item.signal) == null ? void 0 : _a2.aborted) {\n item.reject(ABORTED_ERROR());\n scheduleNextProcess();\n return;\n }\n hasWriter = true;\n const writeLockHandle = createWriteLockHandle(releaseWriteLock);\n item.resolve(writeLockHandle);\n } else if (!hasWriter && writeQueue.length === 0 && readQueue.length > 0) {\n const readersToProcess = [];\n while (readQueue.length > 0) {\n const item = readQueue.shift();\n if ((_b2 = item.signal) == null ? void 0 : _b2.aborted) {\n item.reject(ABORTED_ERROR());\n } else {\n readersToProcess.push(item);\n }\n }\n for (const item of readersToProcess) {\n currentReaders++;\n const readLockHandle = createReadLockHandle(releaseReadLock);\n item.resolve(readLockHandle);\n }\n }\n } else {\n if (!hasWriter && readQueue.length > 0) {\n const readersToProcess = [];\n while (readQueue.length > 0) {\n const item = readQueue.shift();\n if ((_c = item.signal) == null ? void 0 : _c.aborted) {\n item.reject(ABORTED_ERROR());\n } else {\n readersToProcess.push(item);\n }\n }\n for (const item of readersToProcess) {\n currentReaders++;\n const readLockHandle = createReadLockHandle(releaseReadLock);\n item.resolve(readLockHandle);\n }\n } else if (!hasWriter && currentReaders === 0 && writeQueue.length > 0) {\n const item = writeQueue.shift();\n if ((_d = item.signal) == null ? void 0 : _d.aborted) {\n item.reject(ABORTED_ERROR());\n scheduleNextProcess();\n return;\n }\n hasWriter = true;\n const writeLockHandle = createWriteLockHandle(releaseWriteLock);\n item.resolve(writeLockHandle);\n }\n }\n };\n const scheduleNextProcess = () => {\n consecutiveCallCount++;\n if (consecutiveCallCount >= maxConsecutiveCalls) {\n consecutiveCallCount = 0;\n defer(processQueues);\n } else {\n processQueues();\n }\n };\n const releaseReadLock = () => {\n if (currentReaders > 0) {\n currentReaders--;\n if (currentReaders === 0) {\n scheduleNextProcess();\n }\n }\n };\n const releaseWriteLock = () => {\n if (hasWriter) {\n hasWriter = false;\n scheduleNextProcess();\n }\n };\n const removeFromReadQueue = (item) => {\n const index = readQueue.indexOf(item);\n if (index !== -1) {\n readQueue.splice(index, 1);\n }\n };\n const removeFromWriteQueue = (item) => {\n const index = writeQueue.indexOf(item);\n if (index !== -1) {\n writeQueue.splice(index, 1);\n }\n };\n const readLock = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR();\n }\n const canAcquireImmediately = policy === \"read-preferring\" ? !hasWriter : !hasWriter && writeQueue.length === 0;\n if (canAcquireImmediately) {\n currentReaders++;\n return createReadLockHandle(releaseReadLock);\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromReadQueue(queueItem);\n reject(ABORTED_ERROR());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n readQueue.push(queueItem);\n processQueues();\n });\n } else {\n const canAcquireImmediately = policy === \"read-preferring\" ? !hasWriter : !hasWriter && writeQueue.length === 0;\n if (canAcquireImmediately) {\n currentReaders++;\n return createReadLockHandle(releaseReadLock);\n }\n return new Promise((resolve, reject) => {\n readQueue.push({\n resolve,\n reject\n });\n processQueues();\n });\n }\n };\n const writeLock = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR();\n }\n if (!hasWriter && currentReaders === 0) {\n hasWriter = true;\n return createWriteLockHandle(releaseWriteLock);\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromWriteQueue(queueItem);\n reject(ABORTED_ERROR());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n writeQueue.push(queueItem);\n processQueues();\n });\n } else {\n if (!hasWriter && currentReaders === 0) {\n hasWriter = true;\n return createWriteLockHandle(releaseWriteLock);\n }\n return new Promise((resolve, reject) => {\n writeQueue.push({\n resolve,\n reject\n });\n processQueues();\n });\n }\n };\n const readWaiter = {\n wait: readLock\n };\n const writeWaiter = {\n wait: writeLock\n };\n return {\n readLock,\n writeLock,\n readWaiter,\n writeWaiter,\n get currentReaders() {\n return currentReaders;\n },\n get hasWriter() {\n return hasWriter;\n },\n get pendingReadersCount() {\n return readQueue.length;\n },\n get pendingWritersCount() {\n return writeQueue.length;\n }\n };\n}\nexport {\n createAsyncLocal,\n createMutex as createAsyncLock,\n createConditional,\n createDeferred,\n createDeferredGenerator,\n createManuallyConditional,\n createManuallyConditional as createManuallySignal,\n createMutex,\n createReaderWriterLock,\n createSemaphore,\n createConditional as createSignal,\n defer,\n delay,\n getCurrentLogicalContextId,\n getLogicalContextValue,\n onAbort,\n runOnNewLogicalContext,\n setLogicalContextValue\n};\n//# sourceMappingURL=index.js.map\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport type { Plugin } from 'vite';\nimport type { OutputOptions } from 'rollup';\nimport { readFile, writeFile, readdir, mkdir } from 'fs/promises';\nimport { existsSync } from 'fs';\nimport { join, dirname, basename } from 'path';\nimport { createMutex } from 'async-primitives';\nimport { resolvePackageMetadata, createConsoleLogger } from './internal';\nimport { ScrewUpOptions, PackageMetadata } from './types';\nimport { getFetchGitMetadata } from './analyzer';\nimport { git_commit_hash, name, version } from './generated/packageMetadata';\n\n/**\n * Generate banner string from package.json metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output in specified order\n * @returns Banner string\n */\nexport const generateBanner = (\n metadata: PackageMetadata,\n outputKeys: string[]\n): string => {\n const parts: string[] = [];\n\n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n parts.push(`${key}: ${value}`);\n }\n }\n\n return parts.length > 0 ? `/*!\\n * ${parts.join('\\n * ')}\\n */` : '';\n};\n\n/**\n * Insert banner header at appropriate position considering shebang\n * @param content - The content to insert banner into\n * @param banner - The banner header to insert\n * @returns Content with banner header inserted\n */\nconst insertBannerHeader = (content: string, banner: string): string => {\n const lines = content.split('\\n');\n\n // Check if first line is shebang\n if (lines.length > 0 && lines[0].startsWith('#!')) {\n // Insert banner after shebang line\n return lines[0] + '\\n' + banner + '\\n' + lines.slice(1).join('\\n');\n } else {\n // Insert banner at the beginning\n return banner + '\\n' + content;\n }\n};\n\n/**\n * Convert string key to valid TypeScript identifier\n * @param key - The key to convert\n * @returns Valid TypeScript identifier\n */\nconst sanitizeKey = (key: string): string => {\n // Replace dots and other invalid characters with underscores\n return key.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^(\\d)/, '_$1');\n};\n\n/**\n * Generate TypeScript metadata file content from package metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output\n * @returns TypeScript file content\n */\nconst generateMetadataFileContent = (\n metadata: PackageMetadata,\n outputKeys: string[]\n): { content: string; exportedIdentifiers: string[] } => {\n const lines: string[] = [];\n const exportedIdentifiers: string[] = [];\n\n lines.push('// @ts-nocheck');\n lines.push('// This file is auto-generated by screw-up plugin');\n lines.push('// Do not edit manually');\n lines.push('');\n\n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n const sanitizedKey = sanitizeKey(key);\n const escapedValue = JSON.stringify(value);\n lines.push(`export const ${sanitizedKey} = ${escapedValue};`);\n exportedIdentifiers.push(sanitizedKey);\n }\n }\n\n lines.push('');\n\n return { content: lines.join('\\n'), exportedIdentifiers };\n};\n\n/**\n * Generate TypeScript type definition file content from output keys\n * @param outputKeys - Array of keys to output\n * @returns TypeScript type definition file content\n */\nconst generateMetadataTypeFileContent = (outputKeys: string[]): string => {\n const lines: string[] = [];\n\n lines.push('// This file is auto-generated by screw-up plugin');\n lines.push('// Do not edit manually');\n lines.push('');\n\n for (const key of outputKeys) {\n const sanitizedKey = sanitizeKey(key);\n lines.push(`export declare const ${sanitizedKey}: string;`);\n }\n\n lines.push('');\n\n return lines.join('\\n');\n};\n\n/////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Vite plugin that adds banner to the bundled code\n * @param options - Plugin options\n * @returns Vite plugin\n */\nexport const screwUp = (options: ScrewUpOptions = {}): Plugin => {\n const {\n outputKeys = [\n 'name',\n 'version',\n 'description',\n 'author',\n 'license',\n 'repository.url',\n 'git.commit.hash',\n ],\n assetFilters = ['\\\\.d\\\\.ts$'],\n outputMetadataFile = false,\n outputMetadataFilePath = 'src/generated/packageMetadata.ts',\n outputMetadataFileTypePath,\n outputMetadataKeys = [\n 'name',\n 'version',\n 'description',\n 'author',\n 'license',\n 'repository.url',\n 'git.commit.hash',\n ],\n checkWorkingDirectoryStatus = true,\n alwaysOverrideVersionFromGit = true,\n insertMetadataBanner = true,\n } = options;\n\n const assetFiltersRegex = assetFilters.map((filter) => new RegExp(filter));\n\n // Generate default type definition file path if not provided\n const resolvedOutputMetadataTypeFilePath =\n outputMetadataFileTypePath ||\n outputMetadataFilePath.replace(/\\.ts$/, '.d.ts');\n const generateMetadataSourceLocker = createMutex();\n\n const loggerPrefix = `${name}-vite`;\n let logger = createConsoleLogger(loggerPrefix);\n let banner = '';\n let metadata: any;\n let projectRoot: string;\n let fetchGitMetadata = () => Promise.resolve<any>({});\n\n // Helper function to write file if content has changed\n const writeFileIfChanged = async (\n filePath: string,\n content: string,\n description: string\n ): Promise<boolean> => {\n try {\n // Check if file exists and compare content\n let shouldWrite = !existsSync(filePath);\n if (!shouldWrite) {\n try {\n const existingContent = await readFile(filePath, 'utf-8');\n shouldWrite = existingContent !== content;\n } catch {\n // File doesn't exist or couldn't read, we should write it\n shouldWrite = true;\n }\n }\n\n if (shouldWrite) {\n // Ensure directory exists\n await mkdir(dirname(filePath), { recursive: true });\n // Write file only if content has changed\n await writeFile(filePath, content);\n return true;\n } else {\n // File content is the same, no need to write\n return false;\n }\n } catch (error) {\n logger.warn(`Failed to write ${description}: ${filePath}: ${error}`);\n return false;\n }\n };\n\n const ensureMetadataGitignore = async (\n metadataSourcePath: string\n ): Promise<boolean> => {\n const metadataDirectory = dirname(metadataSourcePath);\n const gitignorePath = join(metadataDirectory, '.gitignore');\n\n if (existsSync(gitignorePath)) {\n return false;\n }\n\n try {\n await mkdir(metadataDirectory, { recursive: true });\n const metadataFileName = basename(metadataSourcePath);\n const gitignoreContent = `# Auto-generated by screw-up plugin\\n${metadataFileName}\\n`;\n await writeFile(gitignorePath, gitignoreContent);\n return true;\n } catch (error) {\n logger.warn(\n `Failed to write .gitignore for metadata source: ${gitignorePath}: ${error}`\n );\n return false;\n }\n };\n\n // Generate and write metadata TypeScript file\n const generateMetadataSourceFiles = async () => {\n // Resolve package metadata\n const result = await resolvePackageMetadata(\n projectRoot,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n logger\n );\n metadata = result.metadata;\n // Regenerate banner with updated metadata\n banner = generateBanner(metadata, outputKeys);\n if (outputMetadataFile) {\n const { content: metadataSourceContent, exportedIdentifiers } =\n generateMetadataFileContent(metadata, outputMetadataKeys);\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n const metadataWritten = await writeFileIfChanged(\n metadataSourcePath,\n metadataSourceContent,\n 'metadata source file'\n );\n const metadataTypeContent =\n generateMetadataTypeFileContent(exportedIdentifiers);\n const metadataTypePath = join(\n projectRoot,\n resolvedOutputMetadataTypeFilePath\n );\n const metadataTypeWritten = await writeFileIfChanged(\n metadataTypePath,\n metadataTypeContent,\n 'metadata type definition file'\n );\n if (existsSync(metadataSourcePath)) {\n const gitignoreWritten =\n await ensureMetadataGitignore(metadataSourcePath);\n if (gitignoreWritten) {\n logger.info(\n `generateMetadataSourceFile: .gitignore is generated: ${join(\n dirname(outputMetadataFilePath),\n '.gitignore'\n )}`\n );\n }\n }\n if (metadataTypeWritten) {\n logger.info(\n `generateMetadataSourceFile: Metadata type definition file is generated: ${resolvedOutputMetadataTypeFilePath}`\n );\n }\n return metadataWritten || metadataTypeWritten;\n }\n return false;\n };\n\n // Generate and write metadata TypeScript type definition file\n const generateMetadataTypeDefinitionFileFromKeys = async (keys: string[]) => {\n if (outputMetadataFile) {\n const metadataTypeContent = generateMetadataTypeFileContent(keys);\n const metadataTypePath = join(\n projectRoot,\n resolvedOutputMetadataTypeFilePath\n );\n return await writeFileIfChanged(\n metadataTypePath,\n metadataTypeContent,\n 'metadata type definition file'\n );\n }\n return false;\n };\n\n // Generate dummy metadata TypeScript file with empty string values\n const generateMetadataFileFromKeys = async (keys: string[]) => {\n if (outputMetadataFile) {\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n // Only generate if file doesn't exist (don't overwrite existing files)\n if (!existsSync(metadataSourcePath)) {\n // Create dummy metadata with empty strings for all keys\n const dummyMetadata: any = {};\n keys.forEach((key) => {\n dummyMetadata[key] = '[Require first build]';\n });\n const { content: dummyContent } = generateMetadataFileContent(\n dummyMetadata,\n keys\n );\n return await writeFileIfChanged(\n metadataSourcePath,\n dummyContent,\n 'dummy metadata source file'\n );\n }\n }\n return false;\n };\n\n return {\n name: 'screw-up',\n // Ensure screw-up runs before other plugins\n // (especially vite-plugin-dts, avoid packageMetadata.ts is not found)\n enforce: 'pre',\n // Plugin starting\n applyToEnvironment: async (penv) => {\n // Prime metadata generation once so dependent files are ready immediately\n logger.info(`${version}-${git_commit_hash}: Started.`);\n\n // Partial (but maybe exact) project root\n projectRoot = penv.config.root;\n\n // Generate dummy type definition file early since it doesn't require actual metadata values\n if (\n projectRoot &&\n (await generateMetadataTypeDefinitionFileFromKeys(outputMetadataKeys))\n ) {\n logger.info(\n `applyToEnvironment: Metadata type definition file is generated: ${resolvedOutputMetadataTypeFilePath}`\n );\n }\n\n // Generate dummy metadata source file to prevent import errors on initial build\n if (\n projectRoot &&\n (await generateMetadataFileFromKeys(outputMetadataKeys))\n ) {\n logger.info(\n `applyToEnvironment: Dummy metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n\n return true;\n },\n // Build configuration phase\n config: (config) => {\n // Branch: When banner injection is disabled, leave rollup output untouched\n if (!insertMetadataBanner) {\n return;\n }\n\n config.build ??= {};\n const rollupOptions = (config.build.rollupOptions ??= {});\n // Normalize rollup outputs to an array so we can inject a banner even when empty\n const ensureOutputs = (): OutputOptions[] => {\n // Branch: Consumer already supplied an array of outputs (possibly empty)\n if (Array.isArray(rollupOptions.output)) {\n const outputs = rollupOptions.output as OutputOptions[];\n // Branch: Array exists but contains no entry yet; create one lazily\n if (outputs.length === 0) {\n const output: OutputOptions = {};\n outputs.push(output);\n return outputs;\n }\n outputs.forEach((output, index) => {\n // Branch: Array slot is nullish (user emptied it); replace with object to keep consistent\n if (!output) {\n outputs[index] = {};\n }\n });\n return outputs;\n }\n\n // Branch: Single output object was provided; wrap it to unify processing\n if (rollupOptions.output) {\n return [rollupOptions.output as OutputOptions];\n }\n\n // Branch: No output specified at all; create placeholder so banner hook can run\n const output: OutputOptions = {};\n rollupOptions.output = output;\n return [output];\n };\n\n const outputs = ensureOutputs();\n\n outputs.forEach((output) => {\n const previousBanner = output.banner;\n // Preserve any existing banner configuration and append ours later in order\n const resolvePreviousBanner = async (chunk: any) => {\n // Branch: User provided banner as function; resolve it per chunk for compatibility\n if (typeof previousBanner === 'function') {\n const resolved = await previousBanner(chunk);\n return resolved ?? '';\n }\n return previousBanner ?? '';\n };\n\n output.banner = async (chunk: any) => {\n const existingBanner = await resolvePreviousBanner(chunk);\n const currentBanner = banner ?? '';\n // If we have not generated the banner yet, fall back to the previous setting\n if (!currentBanner) {\n return existingBanner;\n }\n if (!existingBanner) {\n return currentBanner;\n }\n // Avoid duplicating when the existing banner already starts with our content\n if (existingBanner.startsWith(currentBanner)) {\n return existingBanner;\n }\n return `${currentBanner}\\n${existingBanner}`;\n };\n });\n },\n // Configuration resolved phase\n configResolved: async (config) => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n // Enable debug logging for performance analysis\n const tempEnableLogging = true;\n\n // Save project root\n projectRoot = config.root;\n if (tempEnableLogging || config?.logger) {\n logger = createConsoleLogger(loggerPrefix, config.logger);\n } else if (config?.customLogger) {\n logger = createConsoleLogger(loggerPrefix, config.customLogger);\n }\n\n logger.debug(`configResolved: Started.`);\n // Get Git metadata fetcher function\n fetchGitMetadata = getFetchGitMetadata(\n projectRoot,\n checkWorkingDirectoryStatus,\n logger\n );\n // Refresh banner string and generated files before TypeScript compilation kicks in\n // Generate metadata TypeScript file early to ensure it's available during TypeScript compilation\n if (await generateMetadataSourceFiles()) {\n logger.info(\n `configResolved: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n } finally {\n logger.debug(`configResolved: Exited.`);\n l.release();\n }\n },\n // Server hook\n configureServer: async (server) => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n logger.debug(`configureServer: Started.`);\n\n // Exclude generated metadata file from watcher to prevent infinite loop\n // Branch: Metadata file output is enabled and watcher is present; unwatch to avoid churn\n if (outputMetadataFile && server.watcher) {\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n // Use unwatch to exclude the file from being watched\n server.watcher.unwatch(metadataSourcePath);\n logger.debug(\n `configureServer: Excluded from watcher: ${outputMetadataFilePath}`\n );\n }\n\n // Rebuild banner metadata on dev server startup to keep values fresh\n if (await generateMetadataSourceFiles()) {\n logger.info(\n `configureServer: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n } finally {\n logger.debug(`configureServer: Exited.`);\n l.release();\n }\n },\n // Build start phase\n buildStart: async () => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n logger.debug(`buildStart: Started.`);\n // Re-resolve package metadata to capture any changes since configResolved\n // Update metadata TypeScript file with latest data\n if (await generateMetadataSourceFiles()) {\n logger.info(\n `buildStart: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n } finally {\n logger.debug(`buildStart: Exited.`);\n l.release();\n }\n },\n // Generate bundle phase\n generateBundle: (_options, bundle) => {\n // Add banner to each output file if enabled\n if (insertMetadataBanner) {\n let count = 0;\n for (const fileName in bundle) {\n const chunk = bundle[fileName];\n if (\n // Branch: Only treat assets that match filters; JS chunks already handled via rollup banner\n chunk.type === 'asset' &&\n assetFiltersRegex.some((filter) => filter.test(fileName))\n ) {\n if (typeof chunk.source === 'string') {\n // Assets are not covered by rollup banner injection, so prepend manually\n chunk.source = insertBannerHeader(chunk.source, banner + '\\n'); // insert more blank line\n count++;\n }\n }\n }\n if (count >= 1) {\n logger.debug(\n `generateBundle: Banner header inserted: ${count} file(s)`\n );\n }\n }\n },\n // Write bundle phase\n writeBundle: async (options) => {\n // Handle files written by other plugins (like vite-plugin-dts) if banner insertion is enabled\n if (!insertMetadataBanner || !options.dir) return;\n\n try {\n // Read all files in the output directory\n const files = await readdir(options.dir, { recursive: true });\n\n // Iterate over all files\n let count = 0;\n for (const file of files) {\n const filePath = join(options.dir, file);\n\n // Check if the file is target asset file\n // Branch: Apply banner only to filtered assets in post-write stage\n if (assetFiltersRegex.some((filter) => filter.test(file))) {\n try {\n // Read the asset file\n const content = await readFile(filePath, 'utf-8');\n // Append banner to the asset file if it doesn't already contain it\n if (!content.includes(banner)) {\n // Backfill banners onto assets emitted by other plugins as well\n await writeFile(\n filePath,\n insertBannerHeader(content, banner + '\\n')\n );\n count++;\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n }\n }\n if (count >= 1) {\n logger.debug(`writeBundle: Banner header inserted: ${count} file(s)`);\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n },\n };\n};\n"],"names":["outputs","output","options"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/async-primitives/dist/index.js","../src/vite-plugin.ts"],"sourcesContent":["/*!\n * name: async-primitives\n * version: 1.2.0\n * description: A collection of primitive functions for asynchronous operations\n * author: Kouji Matsui (@kekyo@mi.kekyo.net)\n * license: MIT\n * repository.url: https://github.com/kekyo/async-primitives.git\n * git.commit.hash: 3b7bffeaa8ae47aea6e8b0ef0f70e265a6d9ab08\n */\nconst __NOOP_HANDLER = () => {\n};\nconst __NOOP_RELEASABLE = {\n release: __NOOP_HANDLER,\n [Symbol.dispose]: __NOOP_HANDLER\n};\nconst onAbort = (signal, callback) => {\n if (!signal) {\n return __NOOP_RELEASABLE;\n }\n if (signal.aborted) {\n try {\n callback();\n } catch (error) {\n console.warn(\"AbortHook callback error: \", error);\n }\n return __NOOP_RELEASABLE;\n }\n let abortHandler;\n abortHandler = () => {\n if (abortHandler) {\n signal.removeEventListener(\"abort\", abortHandler);\n abortHandler = void 0;\n try {\n callback();\n } catch (error) {\n console.warn(\"AbortHook callback error: \", error);\n }\n }\n };\n const release = () => {\n if (abortHandler) {\n signal.removeEventListener(\"abort\", abortHandler);\n abortHandler = void 0;\n }\n };\n signal.addEventListener(\"abort\", abortHandler, { once: true });\n const handle = {\n release,\n [Symbol.dispose]: release\n };\n return handle;\n};\nconst delay = (msec, signal) => {\n if (signal) {\n if (signal.aborted) {\n throw new Error(\"Delay was aborted\");\n }\n return new Promise((resolve, reject) => {\n const abortHandle = onAbort(signal, () => {\n clearTimeout(timeoutId);\n reject(new Error(\"Delay was aborted\"));\n });\n const timeoutId = setTimeout(() => {\n abortHandle.release();\n resolve();\n }, msec);\n });\n } else {\n return new Promise((resolve) => {\n setTimeout(resolve, msec);\n });\n }\n};\nconst defer = (fn) => {\n if (typeof setImmediate === \"function\") {\n setImmediate(fn);\n } else {\n setTimeout(fn, 0);\n }\n};\nconst ABORTED_ERROR$2 = () => new Error(\"Lock acquisition was aborted\");\nconst createLockHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nconst createMutex = (maxConsecutiveCalls = 20) => {\n let isLocked = false;\n const queue = [];\n let count = 0;\n const processQueue = () => {\n var _a;\n if (isLocked || queue.length === 0) {\n return;\n }\n const item = queue.shift();\n if ((_a = item.signal) == null ? void 0 : _a.aborted) {\n item.reject(ABORTED_ERROR$2());\n scheduleNextProcess();\n return;\n }\n isLocked = true;\n const lockHandle = createLockHandle(releaseLock);\n item.resolve(lockHandle);\n };\n const scheduleNextProcess = () => {\n count++;\n if (count >= maxConsecutiveCalls) {\n count = 0;\n defer(processQueue);\n } else {\n processQueue();\n }\n };\n const releaseLock = () => {\n if (!isLocked) {\n return;\n }\n isLocked = false;\n scheduleNextProcess();\n };\n const removeFromQueue = (item) => {\n const index = queue.indexOf(item);\n if (index !== -1) {\n queue.splice(index, 1);\n }\n };\n const lock = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR$2();\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromQueue(queueItem);\n reject(ABORTED_ERROR$2());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n queue.push(queueItem);\n processQueue();\n });\n } else {\n return new Promise((resolve, reject) => {\n queue.push({\n resolve,\n reject\n });\n processQueue();\n });\n }\n };\n const result = {\n lock,\n waiter: {\n wait: lock\n },\n get isLocked() {\n return isLocked;\n },\n get pendingCount() {\n return queue.length;\n }\n };\n return result;\n};\nconst createDeferred = (signal) => {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n const disposer = onAbort(signal, () => {\n const _reject = reject;\n if (_reject) {\n resolve = void 0;\n reject = void 0;\n _reject(new Error(\"Deferred aborted\"));\n }\n });\n return {\n // The promise that resolves to the result\n promise,\n // Resolve the promise with a result\n resolve: (value) => {\n const _resolve = resolve;\n if (_resolve) {\n resolve = void 0;\n reject = void 0;\n disposer.release();\n _resolve(value);\n }\n },\n // Reject the promise with an error\n reject: (error) => {\n const _reject = reject;\n if (_reject) {\n resolve = void 0;\n reject = void 0;\n disposer.release();\n _reject(error);\n }\n }\n };\n};\nconst __NOOP_DUMMY_HANDLE = {\n get isActive() {\n return false;\n },\n release: __NOOP_HANDLER,\n [Symbol.dispose]: __NOOP_HANDLER\n};\nconst createConditional = () => {\n const waiters = [];\n const trigger = () => {\n if (waiters.length >= 1) {\n waiters.shift().resolve();\n }\n };\n const wait = async (signal) => {\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Conditional aborted\");\n }\n const waiter = createDeferred();\n waiters.push(waiter);\n const disposer = onAbort(signal, () => {\n waiters.splice(waiters.indexOf(waiter), 1);\n waiter.reject(new Error(\"Conditional aborted\"));\n });\n try {\n await waiter.promise;\n } finally {\n disposer.release();\n }\n return __NOOP_DUMMY_HANDLE;\n };\n const result = {\n trigger,\n wait,\n waiter: {\n wait\n }\n };\n return result;\n};\nconst createManuallyConditional = (initialState) => {\n const waiters = [];\n let raised = initialState != null ? initialState : false;\n const trigger = () => {\n raised = false;\n const waiter = waiters.shift();\n if (waiter) {\n waiter.resolve();\n raised = false;\n }\n };\n const raise = () => {\n while (waiters.length >= 1) {\n raised = true;\n waiters.shift().resolve();\n }\n raised = true;\n };\n const drop = () => {\n raised = false;\n };\n const wait = async (signal) => {\n if (raised) {\n return __NOOP_DUMMY_HANDLE;\n }\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Conditional aborted\");\n }\n const waiter = createDeferred();\n waiters.push(waiter);\n const disposer = onAbort(signal, () => {\n waiters.splice(waiters.indexOf(waiter), 1);\n waiter.reject(new Error(\"Conditional aborted\"));\n });\n try {\n await waiter.promise;\n } finally {\n disposer.release();\n }\n return __NOOP_DUMMY_HANDLE;\n };\n const result = {\n trigger,\n raise,\n drop,\n wait,\n waiter: {\n wait\n }\n };\n return result;\n};\nconst createDeferredGenerator = (options) => {\n const maxItemReserved = options == null ? void 0 : options.maxItemReserved;\n const signal = options == null ? void 0 : options.signal;\n const queue = [];\n const arrived = createManuallyConditional();\n const canReserve = maxItemReserved ? createManuallyConditional(true) : void 0;\n const generator = (async function* () {\n while (true) {\n while (true) {\n const item = queue.shift();\n if (maxItemReserved && queue.length === maxItemReserved - 1) {\n canReserve.raise();\n }\n if (!item) {\n break;\n }\n switch (item.kind) {\n // Yield return a value\n case \"value\":\n yield item.value;\n break;\n // Completed, exit the generator\n case \"completed\":\n return;\n // Error, throw an error\n case \"error\":\n throw item.error;\n }\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Deferred generator aborted\");\n }\n }\n arrived.drop();\n try {\n await arrived.wait(signal);\n } catch (error) {\n if (error instanceof Error && error.message === \"Conditional aborted\") {\n error.message = \"Deferred generator aborted\";\n }\n throw error;\n }\n }\n })();\n const enqueue = async (item, signal2) => {\n while (true) {\n if (!maxItemReserved || queue.length < maxItemReserved) {\n const remains = queue.push(item);\n if (remains === 1) {\n arrived.raise();\n }\n if (remains === maxItemReserved) {\n canReserve.drop();\n }\n break;\n }\n try {\n await canReserve.wait(signal2);\n } catch (error) {\n if (error instanceof Error && error.message === \"Conditional aborted\") {\n error.message = \"Deferred generator aborted\";\n }\n throw error;\n }\n }\n };\n return {\n // The async generator that yields values\n generator,\n // Yield a value to the generator\n yield: (value, signal2) => enqueue({ kind: \"value\", value }, signal2),\n // Complete the generator (equivalent to return)\n return: (signal2) => enqueue({ kind: \"completed\" }, signal2),\n // Throw an error to the generator\n throw: (error, signal2) => enqueue({ kind: \"error\", error }, signal2)\n };\n};\nconst createLogicalContext = (id) => {\n return { id, data: /* @__PURE__ */ new Map() };\n};\nlet currentLogicalContext = createLogicalContext(Symbol(\"[root]\"));\nconst setCurrentLogicalContext = (context) => {\n currentLogicalContext = context;\n};\nconst trampoline = (adjustment, callback, thisArg, ...args) => {\n const previousLogicalContext = currentLogicalContext;\n currentLogicalContext = adjustment.contextToUse;\n try {\n return callback.call(thisArg, ...args);\n } finally {\n adjustment.contextAfter = currentLogicalContext;\n currentLogicalContext = previousLogicalContext;\n }\n};\nlet isPrepared = false;\nconst prepare = () => {\n if (isPrepared) {\n return;\n }\n isPrepared = true;\n if (typeof globalThis.setTimeout !== \"undefined\") {\n const __setTimeout = globalThis.setTimeout;\n globalThis.setTimeout = ((handler, timeout, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setTimeout(\n (...args2) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, handler, void 0, ...args2);\n },\n timeout,\n ...args\n );\n });\n }\n if (typeof globalThis.setInterval !== \"undefined\") {\n const __setInterval = globalThis.setInterval;\n globalThis.setInterval = ((handler, timeout, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setInterval(\n (...args2) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, handler, void 0, ...args2);\n },\n timeout,\n ...args\n );\n });\n }\n if (typeof globalThis.queueMicrotask !== \"undefined\") {\n const __queueMicrotask = globalThis.queueMicrotask;\n globalThis.queueMicrotask = (callback) => {\n const capturedLogicalContext = currentLogicalContext;\n return __queueMicrotask(() => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, callback, void 0);\n });\n };\n }\n if (typeof globalThis.setImmediate !== \"undefined\") {\n const __setImmediate = globalThis.setImmediate;\n globalThis.setImmediate = ((callback, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setImmediate(\n (...callbackArgs) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, callback, void 0, ...callbackArgs);\n },\n ...args\n );\n });\n }\n if (typeof process !== \"undefined\" && process.nextTick) {\n const __nextTick = process.nextTick;\n process.nextTick = (callback, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __nextTick(() => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, callback, void 0, ...args);\n });\n };\n }\n if (typeof Promise !== \"undefined\") {\n const __then = Promise.prototype.then;\n const __catch = Promise.prototype.catch;\n const __finally = Promise.prototype.finally;\n Promise.prototype.then = function(onFulfilled, onRejected) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __then.call(\n this,\n onFulfilled ? (value) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onFulfilled, void 0, value);\n } : void 0,\n onRejected ? (reason) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onRejected, void 0, reason);\n } : void 0\n );\n return resultPromise;\n };\n Promise.prototype.catch = function(onRejected) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __catch.call(\n this,\n onRejected ? (reason) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onRejected, void 0, reason);\n } : void 0\n );\n return resultPromise;\n };\n Promise.prototype.finally = function(onFinally) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __finally.call(\n this,\n onFinally ? () => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onFinally, void 0);\n } : void 0\n );\n return resultPromise;\n };\n }\n if (typeof EventTarget !== \"undefined\" && EventTarget.prototype && EventTarget.prototype.addEventListener) {\n const __eventTargetAddEventListener = EventTarget.prototype.addEventListener;\n EventTarget.prototype.addEventListener = function(type, listener, options) {\n if (listener === null || listener === void 0) {\n return __eventTargetAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n }\n if (typeof listener === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return __eventTargetAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return __eventTargetAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n }\n return __eventTargetAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n };\n }\n if (typeof Element !== \"undefined\" && Element.prototype && Element.prototype.addEventListener) {\n const __elementAddEventListener = Element.prototype.addEventListener;\n Element.prototype.addEventListener = function(type, listener, options) {\n if (listener === null || listener === void 0) {\n return __elementAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n }\n if (typeof listener === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return __elementAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return __elementAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n }\n return __elementAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n };\n }\n if (typeof globalThis.requestAnimationFrame !== \"undefined\") {\n const __requestAnimationFrame = globalThis.requestAnimationFrame;\n globalThis.requestAnimationFrame = (callback) => {\n const capturedLogicalContext = currentLogicalContext;\n return __requestAnimationFrame((time) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, callback, void 0, time);\n });\n };\n }\n if (typeof globalThis.XMLHttpRequest !== \"undefined\") {\n const __XMLHttpRequest = globalThis.XMLHttpRequest;\n globalThis.XMLHttpRequest = class extends __XMLHttpRequest {\n constructor() {\n super();\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onreadystatechange\",\n \"onloadstart\",\n \"onprogress\",\n \"onabort\",\n \"onerror\",\n \"onload\",\n \"ontimeout\",\n \"onloadend\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.WebSocket !== \"undefined\") {\n const __WebSocket = globalThis.WebSocket;\n globalThis.WebSocket = class extends __WebSocket {\n constructor(url, protocols) {\n super(url, protocols);\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onopen\",\n \"onmessage\",\n \"onerror\",\n \"onclose\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.MutationObserver !== \"undefined\") {\n const __MutationObserver = globalThis.MutationObserver;\n globalThis.MutationObserver = class extends __MutationObserver {\n constructor(callback) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (mutations, observer) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(\n adjustment,\n callback,\n void 0,\n mutations,\n observer\n );\n };\n super(wrappedCallback);\n }\n };\n }\n if (typeof globalThis.ResizeObserver !== \"undefined\") {\n const __ResizeObserver = globalThis.ResizeObserver;\n globalThis.ResizeObserver = class extends __ResizeObserver {\n constructor(callback) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (entries, observer) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, callback, void 0, entries, observer);\n };\n super(wrappedCallback);\n }\n };\n }\n if (typeof globalThis.IntersectionObserver !== \"undefined\") {\n const __IntersectionObserver = globalThis.IntersectionObserver;\n globalThis.IntersectionObserver = class extends __IntersectionObserver {\n constructor(callback, options) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (entries, observer) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, callback, void 0, entries, observer);\n };\n super(wrappedCallback, options);\n }\n };\n }\n if (typeof globalThis.Worker !== \"undefined\") {\n const __Worker = globalThis.Worker;\n globalThis.Worker = class extends __Worker {\n constructor(scriptURL, options) {\n super(scriptURL, options);\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onmessage\",\n \"onmessageerror\",\n \"onerror\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.MessagePort !== \"undefined\") {\n const __MessagePort = globalThis.MessagePort;\n const createMessagePortWrapper = (originalPort) => {\n const _userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\"onmessage\", \"onmessageerror\"];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(originalPort, prop, {\n get: () => _userHandlers.get(prop) || null,\n set: (newHandler) => {\n _userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const descriptor = Object.getOwnPropertyDescriptor(\n __MessagePort.prototype,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(originalPort, wrappedHandler);\n }\n } else {\n const descriptor = Object.getOwnPropertyDescriptor(\n __MessagePort.prototype,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(originalPort, null);\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n const originalAddEventListener = originalPort.addEventListener;\n originalPort.addEventListener = function(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return originalAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return originalAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return originalAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n }\n return originalAddEventListener.call(this, type, listener, options);\n };\n return originalPort;\n };\n if (typeof globalThis.MessageChannel !== \"undefined\") {\n const __MessageChannel = globalThis.MessageChannel;\n globalThis.MessageChannel = class extends __MessageChannel {\n constructor() {\n super();\n createMessagePortWrapper(this.port1);\n createMessagePortWrapper(this.port2);\n }\n };\n }\n }\n};\nconst setLogicalContextValue = (key, value) => {\n prepare();\n if (value !== void 0) {\n currentLogicalContext.data.set(key, value);\n } else {\n currentLogicalContext.data.delete(key);\n }\n};\nconst getLogicalContextValue = (key) => {\n prepare();\n return currentLogicalContext.data.get(key);\n};\nconst runOnNewLogicalContext = (prefix, handler) => {\n const previousLogicalContext = currentLogicalContext;\n setCurrentLogicalContext(\n createLogicalContext(Symbol(`${prefix}-${crypto.randomUUID()}`))\n );\n try {\n return handler();\n } finally {\n setCurrentLogicalContext(previousLogicalContext);\n }\n};\nconst getCurrentLogicalContextId = () => {\n prepare();\n return currentLogicalContext.id;\n};\nconst createAsyncLocal = () => {\n const key = Symbol(`async-local-${crypto.randomUUID()}`);\n return {\n setValue: (value) => {\n setLogicalContextValue(key, value);\n },\n getValue: () => {\n return getLogicalContextValue(key);\n }\n };\n};\nconst ABORTED_ERROR$1 = () => new Error(\"Semaphore acquisition was aborted\");\nconst INVALID_COUNT_ERROR = () => new Error(\"Semaphore count must be greater than 0\");\nconst createSemaphoreHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nconst createSemaphore = (count, maxConsecutiveCalls = 20) => {\n if (count < 1) {\n throw INVALID_COUNT_ERROR();\n }\n let availableCount = count;\n const queue = [];\n let consecutiveCallCount = 0;\n const processQueue = () => {\n var _a;\n while (availableCount > 0 && queue.length > 0) {\n const item = queue.shift();\n if ((_a = item.signal) == null ? void 0 : _a.aborted) {\n item.reject(ABORTED_ERROR$1());\n continue;\n }\n availableCount--;\n const semaphoreHandle = createSemaphoreHandle(releaseSemaphore);\n item.resolve(semaphoreHandle);\n }\n };\n const scheduleNextProcess = () => {\n consecutiveCallCount++;\n if (consecutiveCallCount >= maxConsecutiveCalls) {\n consecutiveCallCount = 0;\n defer(processQueue);\n } else {\n processQueue();\n }\n };\n const releaseSemaphore = () => {\n availableCount++;\n scheduleNextProcess();\n };\n const removeFromQueue = (item) => {\n const index = queue.indexOf(item);\n if (index !== -1) {\n queue.splice(index, 1);\n }\n };\n const acquire = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR$1();\n }\n if (availableCount > 0) {\n availableCount--;\n return createSemaphoreHandle(releaseSemaphore);\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromQueue(queueItem);\n reject(ABORTED_ERROR$1());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n queue.push(queueItem);\n processQueue();\n });\n } else {\n if (availableCount > 0) {\n availableCount--;\n return createSemaphoreHandle(releaseSemaphore);\n }\n return new Promise((resolve, reject) => {\n queue.push({\n resolve,\n reject\n });\n processQueue();\n });\n }\n };\n const result = {\n acquire,\n waiter: {\n wait: acquire\n },\n get availableCount() {\n return availableCount;\n },\n get pendingCount() {\n return queue.length;\n }\n };\n return result;\n};\nconst ABORTED_ERROR = () => new Error(\"Lock acquisition was aborted\");\nconst createReadLockHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nconst createWriteLockHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nfunction createReaderWriterLock(optionsOrMaxCalls) {\n var _a, _b;\n let policy = \"write-preferring\";\n let maxConsecutiveCalls = 20;\n if (typeof optionsOrMaxCalls === \"number\") {\n maxConsecutiveCalls = optionsOrMaxCalls;\n } else if (optionsOrMaxCalls) {\n policy = (_a = optionsOrMaxCalls.policy) != null ? _a : \"write-preferring\";\n maxConsecutiveCalls = (_b = optionsOrMaxCalls.maxConsecutiveCalls) != null ? _b : 20;\n }\n let currentReaders = 0;\n let hasWriter = false;\n const readQueue = [];\n const writeQueue = [];\n let consecutiveCallCount = 0;\n const processQueues = () => {\n var _a2, _b2, _c, _d;\n if (policy === \"write-preferring\") {\n if (!hasWriter && currentReaders === 0 && writeQueue.length > 0) {\n const item = writeQueue.shift();\n if ((_a2 = item.signal) == null ? void 0 : _a2.aborted) {\n item.reject(ABORTED_ERROR());\n scheduleNextProcess();\n return;\n }\n hasWriter = true;\n const writeLockHandle = createWriteLockHandle(releaseWriteLock);\n item.resolve(writeLockHandle);\n } else if (!hasWriter && writeQueue.length === 0 && readQueue.length > 0) {\n const readersToProcess = [];\n while (readQueue.length > 0) {\n const item = readQueue.shift();\n if ((_b2 = item.signal) == null ? void 0 : _b2.aborted) {\n item.reject(ABORTED_ERROR());\n } else {\n readersToProcess.push(item);\n }\n }\n for (const item of readersToProcess) {\n currentReaders++;\n const readLockHandle = createReadLockHandle(releaseReadLock);\n item.resolve(readLockHandle);\n }\n }\n } else {\n if (!hasWriter && readQueue.length > 0) {\n const readersToProcess = [];\n while (readQueue.length > 0) {\n const item = readQueue.shift();\n if ((_c = item.signal) == null ? void 0 : _c.aborted) {\n item.reject(ABORTED_ERROR());\n } else {\n readersToProcess.push(item);\n }\n }\n for (const item of readersToProcess) {\n currentReaders++;\n const readLockHandle = createReadLockHandle(releaseReadLock);\n item.resolve(readLockHandle);\n }\n } else if (!hasWriter && currentReaders === 0 && writeQueue.length > 0) {\n const item = writeQueue.shift();\n if ((_d = item.signal) == null ? void 0 : _d.aborted) {\n item.reject(ABORTED_ERROR());\n scheduleNextProcess();\n return;\n }\n hasWriter = true;\n const writeLockHandle = createWriteLockHandle(releaseWriteLock);\n item.resolve(writeLockHandle);\n }\n }\n };\n const scheduleNextProcess = () => {\n consecutiveCallCount++;\n if (consecutiveCallCount >= maxConsecutiveCalls) {\n consecutiveCallCount = 0;\n defer(processQueues);\n } else {\n processQueues();\n }\n };\n const releaseReadLock = () => {\n if (currentReaders > 0) {\n currentReaders--;\n if (currentReaders === 0) {\n scheduleNextProcess();\n }\n }\n };\n const releaseWriteLock = () => {\n if (hasWriter) {\n hasWriter = false;\n scheduleNextProcess();\n }\n };\n const removeFromReadQueue = (item) => {\n const index = readQueue.indexOf(item);\n if (index !== -1) {\n readQueue.splice(index, 1);\n }\n };\n const removeFromWriteQueue = (item) => {\n const index = writeQueue.indexOf(item);\n if (index !== -1) {\n writeQueue.splice(index, 1);\n }\n };\n const readLock = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR();\n }\n const canAcquireImmediately = policy === \"read-preferring\" ? !hasWriter : !hasWriter && writeQueue.length === 0;\n if (canAcquireImmediately) {\n currentReaders++;\n return createReadLockHandle(releaseReadLock);\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromReadQueue(queueItem);\n reject(ABORTED_ERROR());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n readQueue.push(queueItem);\n processQueues();\n });\n } else {\n const canAcquireImmediately = policy === \"read-preferring\" ? !hasWriter : !hasWriter && writeQueue.length === 0;\n if (canAcquireImmediately) {\n currentReaders++;\n return createReadLockHandle(releaseReadLock);\n }\n return new Promise((resolve, reject) => {\n readQueue.push({\n resolve,\n reject\n });\n processQueues();\n });\n }\n };\n const writeLock = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR();\n }\n if (!hasWriter && currentReaders === 0) {\n hasWriter = true;\n return createWriteLockHandle(releaseWriteLock);\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromWriteQueue(queueItem);\n reject(ABORTED_ERROR());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n writeQueue.push(queueItem);\n processQueues();\n });\n } else {\n if (!hasWriter && currentReaders === 0) {\n hasWriter = true;\n return createWriteLockHandle(releaseWriteLock);\n }\n return new Promise((resolve, reject) => {\n writeQueue.push({\n resolve,\n reject\n });\n processQueues();\n });\n }\n };\n const readWaiter = {\n wait: readLock\n };\n const writeWaiter = {\n wait: writeLock\n };\n return {\n readLock,\n writeLock,\n readWaiter,\n writeWaiter,\n get currentReaders() {\n return currentReaders;\n },\n get hasWriter() {\n return hasWriter;\n },\n get pendingReadersCount() {\n return readQueue.length;\n },\n get pendingWritersCount() {\n return writeQueue.length;\n }\n };\n}\nexport {\n createAsyncLocal,\n createMutex as createAsyncLock,\n createConditional,\n createDeferred,\n createDeferredGenerator,\n createManuallyConditional,\n createManuallyConditional as createManuallySignal,\n createMutex,\n createReaderWriterLock,\n createSemaphore,\n createConditional as createSignal,\n defer,\n delay,\n getCurrentLogicalContextId,\n getLogicalContextValue,\n onAbort,\n runOnNewLogicalContext,\n setLogicalContextValue\n};\n//# sourceMappingURL=index.js.map\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport type { Plugin } from 'vite';\nimport type { OutputAsset, OutputOptions } from 'rollup';\nimport { readFile, writeFile, readdir, mkdir } from 'fs/promises';\nimport { existsSync } from 'fs';\nimport { join, dirname, basename } from 'path';\nimport { createMutex } from 'async-primitives';\nimport { resolvePackageMetadata, createConsoleLogger } from './internal';\nimport { ScrewUpOptions, PackageMetadata } from './types';\nimport { getFetchGitMetadata } from './analyzer';\nimport { git_commit_hash, name, version } from './generated/packageMetadata';\n\n/**\n * Generate banner string from package.json metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output in specified order\n * @returns Banner string\n */\nexport const generateBanner = (\n metadata: PackageMetadata,\n outputKeys: string[]\n): string => {\n const parts: string[] = [];\n\n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n parts.push(`${key}: ${value}`);\n }\n }\n\n return parts.length > 0 ? `/*!\\n * ${parts.join('\\n * ')}\\n */` : '';\n};\n\n/**\n * Insert banner header at appropriate position considering shebang\n * @param content - The content to insert banner into\n * @param banner - The banner header to insert\n * @returns Content with banner header inserted\n */\nconst insertBannerHeader = (content: string, banner: string): string => {\n const lines = content.split('\\n');\n\n // Check if first line is shebang\n if (lines.length > 0 && lines[0].startsWith('#!')) {\n // Insert banner after shebang line\n return lines[0] + '\\n' + banner + '\\n' + lines.slice(1).join('\\n');\n } else {\n // Insert banner at the beginning\n return banner + '\\n' + content;\n }\n};\n\n/**\n * Adds a trailing newline to the banner text when needed so subsequent\n * concatenations do not collapse onto the last line.\n */\nconst ensureTrailingNewline = (value: string, newline: string): string =>\n value.endsWith(newline) ? value : value + newline;\n\n/**\n * Merge screw-up's metadata banner with an existing Rollup banner, keeping any\n * shebang line at the very top and preventing duplicate metadata blocks.\n */\nconst mergeBanners = (\n currentBanner: string,\n existingBanner: string\n): string => {\n if (!currentBanner) {\n return existingBanner;\n }\n if (!existingBanner) {\n return currentBanner;\n }\n\n if (existingBanner.includes(currentBanner)) {\n return existingBanner;\n }\n\n // Preserve shebang at the very top while sliding the metadata banner underneath it.\n const shebangMatch = existingBanner.match(/^(#![^\\r\\n]*)(\\r?\\n)?([\\s\\S]*)$/);\n if (shebangMatch) {\n const [, shebangLine, newlineSeq = '\\n', rest = ''] = shebangMatch;\n if (rest.startsWith(currentBanner)) {\n return existingBanner;\n }\n const currentWithNewline = ensureTrailingNewline(currentBanner, newlineSeq);\n if (rest.length === 0) {\n return `${shebangLine}${newlineSeq}${currentWithNewline}`;\n }\n return `${shebangLine}${newlineSeq}${currentWithNewline}${rest}`;\n }\n\n // Default path: prepend metadata banner before the previous banner content.\n const newlineSeq = existingBanner.includes('\\r\\n') ? '\\r\\n' : '\\n';\n const currentWithNewline = ensureTrailingNewline(currentBanner, newlineSeq);\n return `${currentWithNewline}${existingBanner}`;\n};\n\n/**\n * Convert string key to valid TypeScript identifier\n * @param key - The key to convert\n * @returns Valid TypeScript identifier\n */\nconst sanitizeKey = (key: string): string => {\n // Replace dots and other invalid characters with underscores\n return key.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^(\\d)/, '_$1');\n};\n\n/**\n * Generate TypeScript metadata file content from package metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output\n * @returns TypeScript file content\n */\nconst generateMetadataFileContent = (\n metadata: PackageMetadata,\n outputKeys: string[]\n): { content: string; exportedIdentifiers: string[] } => {\n const lines: string[] = [];\n const exportedIdentifiers: string[] = [];\n\n lines.push('// @ts-nocheck');\n lines.push('// This file is auto-generated by screw-up plugin');\n lines.push('// Do not edit manually');\n lines.push('');\n\n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n const sanitizedKey = sanitizeKey(key);\n const escapedValue = JSON.stringify(value);\n lines.push(`export const ${sanitizedKey} = ${escapedValue};`);\n exportedIdentifiers.push(sanitizedKey);\n }\n }\n\n lines.push('');\n\n return { content: lines.join('\\n'), exportedIdentifiers };\n};\n\n/**\n * Generate TypeScript type definition file content from output keys\n * @param outputKeys - Array of keys to output\n * @returns TypeScript type definition file content\n */\nconst generateMetadataTypeFileContent = (outputKeys: string[]): string => {\n const lines: string[] = [];\n\n lines.push('// This file is auto-generated by screw-up plugin');\n lines.push('// Do not edit manually');\n lines.push('');\n\n for (const key of outputKeys) {\n const sanitizedKey = sanitizeKey(key);\n lines.push(`export declare const ${sanitizedKey}: string;`);\n }\n\n lines.push('');\n\n return lines.join('\\n');\n};\n\n/**\n * Count how many newline characters exist in the banner block.\n * The result equals the line delta that needs to be applied to sourcemaps.\n */\nconst countInsertedLines = (bannerWithTrailingNewline: string): number => {\n return bannerWithTrailingNewline.split('\\n').length - 1;\n};\n\n/**\n * Convert asset payloads to UTF-8 strings to simplify sourcemap adjustments.\n */\nconst stringifyAssetSource = (source: string | Uint8Array): string =>\n typeof source === 'string' ? source : Buffer.from(source).toString('utf-8');\n\n/**\n * Prepend the specified number of empty lines to a sourcemap by adding semicolons\n * at the beginning of the VLQ mappings string.\n * @returns Updated sourcemap JSON string, or undefined if no change is needed.\n */\nconst applyLineOffsetToSourceMap = (\n source: string | Uint8Array,\n lineOffset: number\n): string | undefined => {\n if (lineOffset <= 0) {\n return undefined;\n }\n\n const original = stringifyAssetSource(source);\n let map: any;\n try {\n map = JSON.parse(original);\n } catch {\n return undefined;\n }\n\n if (!map || typeof map.mappings !== 'string') {\n return undefined;\n }\n\n const prefix = ';'.repeat(lineOffset);\n if (map.mappings.startsWith(prefix)) {\n return undefined;\n }\n\n map.mappings = prefix + map.mappings;\n const serialized = JSON.stringify(map);\n return original.endsWith('\\n') ? `${serialized}\\n` : serialized;\n};\n\n/////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Vite plugin that adds banner to the bundled code\n * @param options - Plugin options\n * @returns Vite plugin\n */\nexport const screwUp = (options: ScrewUpOptions = {}): Plugin => {\n const {\n outputKeys = [\n 'name',\n 'version',\n 'description',\n 'author',\n 'license',\n 'repository.url',\n 'git.commit.hash',\n ],\n assetFilters = ['\\\\.d\\\\.ts$'],\n outputMetadataFile = false,\n outputMetadataFilePath = 'src/generated/packageMetadata.ts',\n outputMetadataFileTypePath,\n outputMetadataKeys = [\n 'name',\n 'version',\n 'description',\n 'author',\n 'license',\n 'repository.url',\n 'git.commit.hash',\n ],\n checkWorkingDirectoryStatus = true,\n alwaysOverrideVersionFromGit = true,\n insertMetadataBanner = true,\n } = options;\n\n const assetFiltersRegex = assetFilters.map((filter) => new RegExp(filter));\n\n // Generate default type definition file path if not provided\n const resolvedOutputMetadataTypeFilePath =\n outputMetadataFileTypePath ||\n outputMetadataFilePath.replace(/\\.ts$/, '.d.ts');\n const generateMetadataSourceLocker = createMutex();\n\n const loggerPrefix = `${name}-vite`;\n let logger = createConsoleLogger(loggerPrefix);\n let banner = '';\n let metadata: any;\n let projectRoot: string;\n let fetchGitMetadata = () => Promise.resolve<any>({});\n\n // Helper function to write file if content has changed\n const writeFileIfChanged = async (\n filePath: string,\n content: string,\n description: string\n ): Promise<boolean> => {\n try {\n // Check if file exists and compare content\n let shouldWrite = !existsSync(filePath);\n if (!shouldWrite) {\n try {\n const existingContent = await readFile(filePath, 'utf-8');\n shouldWrite = existingContent !== content;\n } catch {\n // File doesn't exist or couldn't read, we should write it\n shouldWrite = true;\n }\n }\n\n if (shouldWrite) {\n // Ensure directory exists\n await mkdir(dirname(filePath), { recursive: true });\n // Write file only if content has changed\n await writeFile(filePath, content);\n return true;\n } else {\n // File content is the same, no need to write\n return false;\n }\n } catch (error) {\n logger.warn(`Failed to write ${description}: ${filePath}: ${error}`);\n return false;\n }\n };\n\n const ensureMetadataGitignore = async (\n metadataSourcePath: string\n ): Promise<boolean> => {\n const metadataDirectory = dirname(metadataSourcePath);\n const gitignorePath = join(metadataDirectory, '.gitignore');\n\n if (existsSync(gitignorePath)) {\n return false;\n }\n\n try {\n await mkdir(metadataDirectory, { recursive: true });\n const metadataFileName = basename(metadataSourcePath);\n const gitignoreContent = `# Auto-generated by screw-up plugin\\n${metadataFileName}\\n`;\n await writeFile(gitignorePath, gitignoreContent);\n return true;\n } catch (error) {\n logger.warn(\n `Failed to write .gitignore for metadata source: ${gitignorePath}: ${error}`\n );\n return false;\n }\n };\n\n // Generate and write metadata TypeScript file\n const generateMetadataSourceFiles = async () => {\n // Resolve package metadata\n const result = await resolvePackageMetadata(\n projectRoot,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n logger\n );\n metadata = result.metadata;\n // Regenerate banner with updated metadata\n banner = generateBanner(metadata, outputKeys);\n if (outputMetadataFile) {\n const { content: metadataSourceContent, exportedIdentifiers } =\n generateMetadataFileContent(metadata, outputMetadataKeys);\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n const metadataWritten = await writeFileIfChanged(\n metadataSourcePath,\n metadataSourceContent,\n 'metadata source file'\n );\n const metadataTypeContent =\n generateMetadataTypeFileContent(exportedIdentifiers);\n const metadataTypePath = join(\n projectRoot,\n resolvedOutputMetadataTypeFilePath\n );\n const metadataTypeWritten = await writeFileIfChanged(\n metadataTypePath,\n metadataTypeContent,\n 'metadata type definition file'\n );\n if (existsSync(metadataSourcePath)) {\n const gitignoreWritten =\n await ensureMetadataGitignore(metadataSourcePath);\n if (gitignoreWritten) {\n logger.info(\n `generateMetadataSourceFile: .gitignore is generated: ${join(\n dirname(outputMetadataFilePath),\n '.gitignore'\n )}`\n );\n }\n }\n if (metadataTypeWritten) {\n logger.info(\n `generateMetadataSourceFile: Metadata type definition file is generated: ${resolvedOutputMetadataTypeFilePath}`\n );\n }\n return metadataWritten || metadataTypeWritten;\n }\n return false;\n };\n\n // Generate and write metadata TypeScript type definition file\n const generateMetadataTypeDefinitionFileFromKeys = async (keys: string[]) => {\n if (outputMetadataFile) {\n const metadataTypeContent = generateMetadataTypeFileContent(keys);\n const metadataTypePath = join(\n projectRoot,\n resolvedOutputMetadataTypeFilePath\n );\n return await writeFileIfChanged(\n metadataTypePath,\n metadataTypeContent,\n 'metadata type definition file'\n );\n }\n return false;\n };\n\n // Generate dummy metadata TypeScript file with empty string values\n const generateMetadataFileFromKeys = async (keys: string[]) => {\n if (outputMetadataFile) {\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n // Only generate if file doesn't exist (don't overwrite existing files)\n if (!existsSync(metadataSourcePath)) {\n // Create dummy metadata with empty strings for all keys\n const dummyMetadata: any = {};\n keys.forEach((key) => {\n dummyMetadata[key] = '[Require first build]';\n });\n const { content: dummyContent } = generateMetadataFileContent(\n dummyMetadata,\n keys\n );\n return await writeFileIfChanged(\n metadataSourcePath,\n dummyContent,\n 'dummy metadata source file'\n );\n }\n }\n return false;\n };\n\n return {\n name: 'screw-up',\n // Ensure screw-up runs before other plugins\n // (especially vite-plugin-dts, avoid packageMetadata.ts is not found)\n enforce: 'pre',\n // Plugin starting\n applyToEnvironment: async (penv) => {\n // Prime metadata generation once so dependent files are ready immediately\n logger.info(`${version}-${git_commit_hash}: Started.`);\n\n // Partial (but maybe exact) project root\n projectRoot = penv.config.root;\n\n // Generate dummy type definition file early since it doesn't require actual metadata values\n if (\n projectRoot &&\n (await generateMetadataTypeDefinitionFileFromKeys(outputMetadataKeys))\n ) {\n logger.info(\n `applyToEnvironment: Metadata type definition file is generated: ${resolvedOutputMetadataTypeFilePath}`\n );\n }\n\n // Generate dummy metadata source file to prevent import errors on initial build\n if (\n projectRoot &&\n (await generateMetadataFileFromKeys(outputMetadataKeys))\n ) {\n logger.info(\n `applyToEnvironment: Dummy metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n\n return true;\n },\n // Build configuration phase\n config: (config) => {\n // When banner injection is disabled, leave rollup output untouched\n if (!insertMetadataBanner) {\n return;\n }\n\n config.build ??= {};\n const rollupOptions = (config.build.rollupOptions ??= {});\n // Normalize rollup outputs to an array so we can inject a banner even when empty\n const ensureOutputs = (): OutputOptions[] => {\n // Consumer already supplied an array of outputs (possibly empty)\n if (Array.isArray(rollupOptions.output)) {\n const outputs = rollupOptions.output as OutputOptions[];\n // Array exists but contains no entry yet; create one lazily\n if (outputs.length === 0) {\n const output: OutputOptions = {};\n outputs.push(output);\n return outputs;\n }\n outputs.forEach((output, index) => {\n // Array slot is nullish (user emptied it); replace with object to keep consistent\n if (!output) {\n outputs[index] = {};\n }\n });\n return outputs;\n }\n\n // Single output object was provided; wrap it to unify processing\n if (rollupOptions.output) {\n return [rollupOptions.output as OutputOptions];\n }\n\n // No output specified at all; create placeholder so banner hook can run\n const output: OutputOptions = {};\n rollupOptions.output = output;\n return [output];\n };\n\n const outputs = ensureOutputs();\n\n outputs.forEach((output) => {\n const previousBanner = output.banner;\n // Preserve any existing banner configuration and append ours later in order\n const resolvePreviousBanner = async (chunk: any) => {\n // User provided banner as function; resolve it per chunk for compatibility\n if (typeof previousBanner === 'function') {\n const resolved = await previousBanner(chunk);\n return resolved ?? '';\n }\n return previousBanner ?? '';\n };\n\n output.banner = async (chunk: any) => {\n const existingBanner = await resolvePreviousBanner(chunk);\n const currentBanner = banner ?? '';\n return mergeBanners(currentBanner, existingBanner);\n };\n });\n },\n // Configuration resolved phase\n configResolved: async (config) => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n // Enable debug logging for performance analysis\n const tempEnableLogging = true;\n\n // Save project root\n projectRoot = config.root;\n if (tempEnableLogging || config?.logger) {\n logger = createConsoleLogger(loggerPrefix, config.logger);\n } else if (config?.customLogger) {\n logger = createConsoleLogger(loggerPrefix, config.customLogger);\n }\n\n logger.debug(`configResolved: Started.`);\n // Get Git metadata fetcher function\n fetchGitMetadata = getFetchGitMetadata(\n projectRoot,\n checkWorkingDirectoryStatus,\n logger\n );\n // Refresh banner string and generated files before TypeScript compilation kicks in\n // Generate metadata TypeScript file early to ensure it's available during TypeScript compilation\n if (await generateMetadataSourceFiles()) {\n logger.info(\n `configResolved: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n } finally {\n logger.debug(`configResolved: Exited.`);\n l.release();\n }\n },\n // Server hook\n configureServer: async (server) => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n logger.debug(`configureServer: Started.`);\n\n // Exclude generated metadata file from watcher to prevent infinite loop\n // Metadata file output is enabled and watcher is present; unwatch to avoid churn\n if (outputMetadataFile && server.watcher) {\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n // Use unwatch to exclude the file from being watched\n server.watcher.unwatch(metadataSourcePath);\n logger.debug(\n `configureServer: Excluded from watcher: ${outputMetadataFilePath}`\n );\n }\n\n // Rebuild banner metadata on dev server startup to keep values fresh\n if (await generateMetadataSourceFiles()) {\n logger.info(\n `configureServer: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n } finally {\n logger.debug(`configureServer: Exited.`);\n l.release();\n }\n },\n // Build start phase\n buildStart: async () => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n logger.debug(`buildStart: Started.`);\n // Re-resolve package metadata to capture any changes since configResolved\n // Update metadata TypeScript file with latest data\n if (await generateMetadataSourceFiles()) {\n logger.info(\n `buildStart: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n } finally {\n logger.debug(`buildStart: Exited.`);\n l.release();\n }\n },\n // Generate bundle phase\n generateBundle: (_options, bundle) => {\n // Add banner to each output file if enabled\n if (insertMetadataBanner) {\n let count = 0;\n for (const fileName in bundle) {\n const chunk = bundle[fileName];\n if (\n // Only treat assets that match filters; JS chunks already handled via rollup banner\n chunk.type === 'asset' &&\n assetFiltersRegex.some((filter) => filter.test(fileName))\n ) {\n if (typeof chunk.source === 'string') {\n // Assets are not covered by rollup banner injection, so prepend manually\n const bannerBlock = `${banner}\\n`;\n // Insert banner while preserving shebang semantics and capture line delta for maps\n chunk.source = insertBannerHeader(chunk.source, bannerBlock); // insert more blank line\n const lineOffset = countInsertedLines(bannerBlock);\n\n const mapFileName = `${fileName}.map`;\n const mapAsset = bundle[mapFileName] as OutputAsset | undefined;\n if (\n mapAsset &&\n mapAsset.type === 'asset' &&\n mapAsset.source !== undefined\n ) {\n // Rewrite the sourcemap mappings so declaration lines still map back correctly\n const adjusted = applyLineOffsetToSourceMap(\n mapAsset.source,\n lineOffset\n );\n if (adjusted !== undefined) {\n mapAsset.source = adjusted;\n }\n }\n count++;\n }\n }\n }\n if (count >= 1) {\n logger.debug(\n `generateBundle: Banner header inserted: ${count} file(s)`\n );\n }\n }\n },\n // Write bundle phase\n writeBundle: async (options) => {\n // Handle files written by other plugins (like vite-plugin-dts) if banner insertion is enabled\n if (!insertMetadataBanner || !options.dir) return;\n\n try {\n // Read all files in the output directory\n const files = await readdir(options.dir, { recursive: true });\n\n // Iterate over all files\n let count = 0;\n for (const file of files) {\n const filePath = join(options.dir, file);\n\n // Check if the file is target asset file\n // Apply banner only to filtered assets in post-write stage\n if (assetFiltersRegex.some((filter) => filter.test(file))) {\n try {\n // Read the asset file\n const content = await readFile(filePath, 'utf-8');\n // Append banner to the asset file if it doesn't already contain it\n if (!content.includes(banner)) {\n // Backfill banners onto assets emitted by other plugins as well\n const bannerBlock = `${banner}\\n`;\n await writeFile(\n filePath,\n insertBannerHeader(content, bannerBlock)\n );\n\n const lineOffset = countInsertedLines(bannerBlock);\n const mapPath = `${filePath}.map`;\n try {\n const mapContent = await readFile(mapPath, 'utf-8');\n // Align existing .d.ts.map files so consumer toolchains see accurate positions\n const adjusted = applyLineOffsetToSourceMap(\n mapContent,\n lineOffset\n );\n if (adjusted !== undefined) {\n await writeFile(mapPath, adjusted);\n }\n } catch {\n // Declarations without sourcemap can be safely ignored\n }\n count++;\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n }\n }\n if (count >= 1) {\n logger.debug(`writeBundle: Banner header inserted: ${count} file(s)`);\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n },\n };\n};\n"],"names":["newlineSeq","currentWithNewline","outputs","output","options"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/internal.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 1.
|
|
3
|
+
* version: 1.13.0
|
|
4
4
|
* description: Simply package metadata inserter on Vite plugin
|
|
5
5
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
6
6
|
* license: MIT
|
|
7
7
|
* repository.url: https://github.com/kekyo/screw-up.git
|
|
8
|
-
* git.commit.hash:
|
|
8
|
+
* git.commit.hash: d789a54f80dbff99d97cf2a263aadedfb8b0621d
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { PackageMetadata } from './types';
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAM1C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,SAAS,GAAG,KAAG,MAoBnE,CAAC;AAIF;;;GAGG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AA0BD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,WAAW,MAAM,EACjB,QAAQ,MAAM,KACb,OAAO,CAAC,MAAM,GAAG,SAAS,CA8B5B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACnC,eAAe,MAAM,EACrB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,mBAAmB,GAAG,CAAC,MAAM,CAAC,EAC9B,QAAQ,MAAM,KACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CA8DvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,GAC3C,aAAa,GAAG,EAChB,UAAU,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACvC,eAAe,MAAM,KACpB,GAuBF,CAAC;AAIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,gBAAgB,eAAe,EAC/B,eAAe,eAAe,EAC9B,iBAAiB,MAAM,EACvB,gBAAgB,MAAM,EACtB,iBAAiB,MAAM,KACtB,OAAO,CAAC,eAAe,CA+BzB,CAAC;AAuJF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GACjC,aAAa,MAAM,EACnB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,QAAQ,MAAM,KACb,OAAO,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAkBlD,CAAC;AAqBF;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,GACtC,aAAa,MAAM,EACnB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,mBAAmB,GAAG,CAAC,MAAM,CAAC,EAC9B,QAAQ,MAAM,KACb,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAmBtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":";;;;;;;;;AAUA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAM1C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,SAAS,GAAG,KAAG,MAoBnE,CAAC;AAIF;;;GAGG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AA0BD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,WAAW,MAAM,EACjB,QAAQ,MAAM,KACb,OAAO,CAAC,MAAM,GAAG,SAAS,CA8B5B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACnC,eAAe,MAAM,EACrB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,mBAAmB,GAAG,CAAC,MAAM,CAAC,EAC9B,QAAQ,MAAM,KACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CA8DvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,GAC3C,aAAa,GAAG,EAChB,UAAU,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACvC,eAAe,MAAM,KACpB,GAuBF,CAAC;AAIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,gBAAgB,eAAe,EAC/B,eAAe,eAAe,EAC9B,iBAAiB,MAAM,EACvB,gBAAgB,MAAM,EACtB,iBAAiB,MAAM,KACtB,OAAO,CAAC,eAAe,CA+BzB,CAAC;AAuJF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GACjC,aAAa,MAAM,EACnB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,QAAQ,MAAM,KACb,OAAO,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAkBlD,CAAC;AAqBF;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,GACtC,aAAa,MAAM,EACnB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,mBAAmB,GAAG,CAAC,MAAM,CAAC,EAC9B,QAAQ,MAAM,KACb,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAmBtC,CAAC"}
|
package/dist/main.cjs
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
/*!
|
|
4
4
|
* name: screw-up
|
|
5
|
-
* version: 1.
|
|
5
|
+
* version: 1.13.0
|
|
6
6
|
* description: Simply package metadata inserter on Vite plugin
|
|
7
7
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
8
8
|
* license: MIT
|
|
9
9
|
* repository.url: https://github.com/kekyo/screw-up.git
|
|
10
|
-
* git.commit.hash:
|
|
10
|
+
* git.commit.hash: d789a54f80dbff99d97cf2a263aadedfb8b0621d
|
|
11
11
|
*/
|
|
12
12
|
const path = require("path");
|
|
13
13
|
const fs$1 = require("fs");
|
|
@@ -17,7 +17,7 @@ const os = require("os");
|
|
|
17
17
|
const stream = require("stream");
|
|
18
18
|
const zlib = require("zlib");
|
|
19
19
|
const promises = require("stream/promises");
|
|
20
|
-
const packageMetadata = require("./packageMetadata-
|
|
20
|
+
const packageMetadata = require("./packageMetadata-B-SWvYlj.cjs");
|
|
21
21
|
/*!
|
|
22
22
|
* name: tar-vern
|
|
23
23
|
* version: 1.3.0
|
|
@@ -1159,7 +1159,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1159
1159
|
}
|
|
1160
1160
|
};
|
|
1161
1161
|
const showHelp = async () => {
|
|
1162
|
-
const { author, license, repository_url, version, git_commit_hash } = await Promise.resolve().then(() => require("./packageMetadata-
|
|
1162
|
+
const { author, license, repository_url, version, git_commit_hash } = await Promise.resolve().then(() => require("./packageMetadata-B-SWvYlj.cjs")).then((n) => n.packageMetadata);
|
|
1163
1163
|
console.info(`screw-up [${version}-${git_commit_hash}]
|
|
1164
1164
|
Easy package metadata inserter CLI
|
|
1165
1165
|
Copyright (c) ${author}
|
package/dist/main.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/*!
|
|
3
3
|
* name: screw-up
|
|
4
|
-
* version: 1.
|
|
4
|
+
* version: 1.13.0
|
|
5
5
|
* description: Simply package metadata inserter on Vite plugin
|
|
6
6
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
7
7
|
* license: MIT
|
|
8
8
|
* repository.url: https://github.com/kekyo/screw-up.git
|
|
9
|
-
* git.commit.hash:
|
|
9
|
+
* git.commit.hash: d789a54f80dbff99d97cf2a263aadedfb8b0621d
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
export {};
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;;;;;;"}
|
package/dist/main.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/*!
|
|
3
3
|
* name: screw-up
|
|
4
|
-
* version: 1.
|
|
4
|
+
* version: 1.13.0
|
|
5
5
|
* description: Simply package metadata inserter on Vite plugin
|
|
6
6
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
7
7
|
* license: MIT
|
|
8
8
|
* repository.url: https://github.com/kekyo/screw-up.git
|
|
9
|
-
* git.commit.hash:
|
|
9
|
+
* git.commit.hash: d789a54f80dbff99d97cf2a263aadedfb8b0621d
|
|
10
10
|
*/
|
|
11
11
|
import { join, dirname, resolve } from "path";
|
|
12
12
|
import { createWriteStream, createReadStream, existsSync } from "fs";
|
|
@@ -16,7 +16,7 @@ import { tmpdir } from "os";
|
|
|
16
16
|
import { Readable } from "stream";
|
|
17
17
|
import { createGunzip, createGzip } from "zlib";
|
|
18
18
|
import { pipeline } from "stream/promises";
|
|
19
|
-
import { b as resolveRawPackageJsonObject, f as findWorkspaceRoot, d as collectWorkspaceSiblings, e as replacePeerDependenciesWildcards, g as getFetchGitMetadata, c as createConsoleLogger, n as name } from "./packageMetadata-
|
|
19
|
+
import { b as resolveRawPackageJsonObject, f as findWorkspaceRoot, d as collectWorkspaceSiblings, e as replacePeerDependenciesWildcards, g as getFetchGitMetadata, c as createConsoleLogger, n as name } from "./packageMetadata-CbtDrpYF.js";
|
|
20
20
|
/*!
|
|
21
21
|
* name: tar-vern
|
|
22
22
|
* version: 1.3.0
|
|
@@ -1158,7 +1158,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1158
1158
|
}
|
|
1159
1159
|
};
|
|
1160
1160
|
const showHelp = async () => {
|
|
1161
|
-
const { author, license, repository_url, version, git_commit_hash } = await import("./packageMetadata-
|
|
1161
|
+
const { author, license, repository_url, version, git_commit_hash } = await import("./packageMetadata-CbtDrpYF.js").then((n) => n.p);
|
|
1162
1162
|
console.info(`screw-up [${version}-${git_commit_hash}]
|
|
1163
1163
|
Easy package metadata inserter CLI
|
|
1164
1164
|
Copyright (c) ${author}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*!
|
|
3
3
|
* name: screw-up
|
|
4
|
-
* version: 1.
|
|
4
|
+
* version: 1.13.0
|
|
5
5
|
* description: Simply package metadata inserter on Vite plugin
|
|
6
6
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
7
7
|
* license: MIT
|
|
8
8
|
* repository.url: https://github.com/kekyo/screw-up.git
|
|
9
|
-
* git.commit.hash:
|
|
9
|
+
* git.commit.hash: d789a54f80dbff99d97cf2a263aadedfb8b0621d
|
|
10
10
|
*/
|
|
11
11
|
const fs = require("fs");
|
|
12
12
|
const fs$1 = require("fs/promises");
|
|
@@ -2173,11 +2173,11 @@ const getFetchGitMetadata = (targetDir, checkWorkingDirectoryStatus, logger) =>
|
|
|
2173
2173
|
};
|
|
2174
2174
|
};
|
|
2175
2175
|
const name = "screw-up";
|
|
2176
|
-
const version = "1.
|
|
2176
|
+
const version = "1.13.0";
|
|
2177
2177
|
const author = "Kouji Matsui (@kekyo@mi.kekyo.net)";
|
|
2178
2178
|
const license = "MIT";
|
|
2179
2179
|
const repository_url = "https://github.com/kekyo/screw-up.git";
|
|
2180
|
-
const git_commit_hash = "
|
|
2180
|
+
const git_commit_hash = "d789a54f80dbff99d97cf2a263aadedfb8b0621d";
|
|
2181
2181
|
const packageMetadata = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
2182
2182
|
__proto__: null,
|
|
2183
2183
|
author,
|
|
@@ -2198,4 +2198,4 @@ exports.replacePeerDependenciesWildcards = replacePeerDependenciesWildcards;
|
|
|
2198
2198
|
exports.resolvePackageMetadata = resolvePackageMetadata;
|
|
2199
2199
|
exports.resolveRawPackageJsonObject = resolveRawPackageJsonObject;
|
|
2200
2200
|
exports.version = version;
|
|
2201
|
-
//# sourceMappingURL=packageMetadata-
|
|
2201
|
+
//# sourceMappingURL=packageMetadata-B-SWvYlj.cjs.map
|