diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..15bc310c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,132 @@
+### Node
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional stylelint cache
+.stylelintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variable files
+.env
+.env.development.local
+.env.test.local
+.env.production.local
+.env.local
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+.temp
+.cache
+
+# Docusaurus cache and generated files
+.docusaurus
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v2
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
+
diff --git a/.yarnrc.yml b/.yarnrc.yml
new file mode 100644
index 00000000..3186f3f0
--- /dev/null
+++ b/.yarnrc.yml
@@ -0,0 +1 @@
+nodeLinker: node-modules
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..bd083b11
--- /dev/null
+++ b/README.md
@@ -0,0 +1,54 @@
+# vue-advertising
+
+## Usage
+
+### How to set advertising
+
+1. Create a `GPT` config
+
+```
+const gptConfig = {
+ slots: [
+ {
+ id: 'banner-ad',
+ path: '/6355419/Travel/Europe/France/Paris',
+ sizes: [[300, 250]],
+ },
+ ],
+ usePrebid: false,
+ useAPS: false,
+ customEvents: {
+ blueBackground: {
+ eventMessagePrefix: 'BlueBackground:',
+ },
+ },
+}
+```
+
+2. Wrap the entire area that you want to display ad with `AdvertisingProvider` to provide the config
+
+```
+
+
+ ...
+
+
+```
+
+3. Place `AdvertisingSlot` to the position that you want to insert ad inside `AdvertisingProvider`
+
+ ```html
+
+ ```
+
+4. You will see advertise appear
+
+
+### Preload the advertising
+
+Use `GlobalAdvertisingProvider` and `GlobalAdvertisingSlot`, ads can be loaded as fast as possible (need to use `@vueuse/head` or `@unhead/vue` to preload the script)
+
+## Credits
+
+- @KijijiCA - original [react-advertising](https://github.com/KijijiCA/react-advertising)
+- @ches4117 - rewrite react-advertising to vue-advertising
diff --git a/build.config.ts b/build.config.ts
new file mode 100644
index 00000000..749a5d87
--- /dev/null
+++ b/build.config.ts
@@ -0,0 +1,6 @@
+import { defineBuildConfig } from 'unbuild'
+
+export default defineBuildConfig({
+ entries: [{ input: 'src/', outDir: 'dist/' }],
+ declaration: true,
+})
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..2e50c6d2
--- /dev/null
+++ b/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "@storipress/vue-advertising",
+ "version": "1.0.2",
+ "repository": "git@github.com:storipress/framework-scaffolding.git",
+ "main": "./dist/index.mjs",
+ "module": "./dist/index.mjs",
+ "type": "module",
+ "types": "./dist/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./dist/index.d.ts",
+ "import": "./dist/index.mjs"
+ }
+ },
+ "scripts": {
+ "build": "unbuild",
+ "test": "vitest",
+ "prepack": "yarn build"
+ },
+ "files": [
+ "dist/**/*",
+ "!dist/**/*.test.d.ts",
+ "!dist/**/*.test.mjs",
+ "!dist/**/__snapshots__/**"
+ ],
+ "publishConfig": {
+ "access": "restricted"
+ },
+ "dependencies": {
+ "@guanghechen/fast-deep-equal": "^2.2.4",
+ "@vueuse/core": "^9.13.0",
+ "vue3-lazy-hydration": "^1.2.1"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ },
+ "packageManager": "yarn@3.2.4",
+ "devDependencies": {
+ "@unhead/vue": "^1.1.22",
+ "happy-dom": "^8.9.0",
+ "sass": "^1.59.2",
+ "typescript": "^4.9.5",
+ "unbuild": "^1.1.2",
+ "vite": "^4.1.4",
+ "vitest": "^0.29.2",
+ "vue": "^3.2.47"
+ }
+}
diff --git a/src/.npmignore b/src/.npmignore
new file mode 100644
index 00000000..6d4bb1ed
--- /dev/null
+++ b/src/.npmignore
@@ -0,0 +1,2 @@
+*.test.js
+__snapshots__
diff --git a/src/Advertising.js b/src/Advertising.js
new file mode 100644
index 00000000..2ebc6eb9
--- /dev/null
+++ b/src/Advertising.js
@@ -0,0 +1,449 @@
+export default class Advertising {
+ constructor(config, plugins = [], onError = () => {}) {
+ this.config = config
+ this.slots = {}
+ this.outOfPageSlots = {}
+ this.plugins = plugins
+ this.onError = onError
+ this.gptSizeMappings = {}
+ this.customEventCallbacks = {}
+ this.customEventHandlers = {}
+ this.queue = []
+ this.setDefaultConfig()
+ this.defaultLazyLoadConfig = {
+ marginPercent: 0,
+ mobileScaling: 1,
+ }
+
+ this.requestManager = {
+ aps: false,
+ prebid: false,
+ }
+ }
+
+ // ---------- PUBLIC METHODS ----------
+
+ async setup() {
+ this.isPrebidUsed =
+ typeof this.config.usePrebid === 'undefined' ? typeof window.pbjs !== 'undefined' : this.config.usePrebid
+ this.isAPSUsed =
+ typeof this.config.useAPS === 'undefined' ? typeof window.apstag !== 'undefined' : this.config.useAPS
+ this.executePlugins('setup')
+ const { slots, outOfPageSlots, queue, isPrebidUsed, isAPSUsed } = this
+ this.setupCustomEvents()
+ const setUpQueueItems = [Advertising.queueForGPT(this.setupGpt.bind(this), this.onError)]
+ if (isAPSUsed) {
+ try {
+ window.apstag.init({
+ ...this.config.aps,
+ adServer: 'googletag',
+ })
+ } catch (error) {
+ this.onError(error)
+ }
+ }
+ if (isPrebidUsed) {
+ setUpQueueItems.push(Advertising.queueForPrebid(this.setupPrebid.bind(this), this.onError))
+ }
+
+ await Promise.all(setUpQueueItems)
+ if (queue.length === 0) {
+ return
+ }
+ for (let i = 0; i < queue.length; i++) {
+ const { id, customEventHandlers } = queue[i]
+ Object.keys(customEventHandlers).forEach((customEventId) => {
+ if (!this.customEventCallbacks[customEventId]) {
+ this.customEventCallbacks[customEventId] = {}
+ }
+ return (this.customEventCallbacks[customEventId][id] = customEventHandlers[customEventId])
+ })
+ }
+ const divIds = queue.filter(({ id }) => id)
+ const selectedSlots = queue.map(({ id }) => {
+ return slots[id].gpt || outOfPageSlots[id]
+ })
+
+ if (isPrebidUsed) {
+ Advertising.queueForPrebid(
+ () =>
+ window.pbjs.requestBids({
+ adUnitCodes: divIds,
+ bidsBackHandler: () => {
+ window.pbjs.setTargetingForGPTAsync(divIds)
+ this.requestManager.prebid = true
+ this.refreshSlots(selectedSlots)
+ },
+ }),
+ this.onError
+ )
+ }
+
+ if (this.isAPSUsed) {
+ try {
+ window.apstag.fetchBids(
+ {
+ slots: selectedSlots.map((slot) => slot.aps),
+ },
+ () => {
+ Advertising.queueForGPT(() => {
+ window.apstag.setDisplayBids()
+ this.requestManager.aps = true // signals that APS request has completed
+ this.refreshSlots(selectedSlots) // checks whether both APS and Prebid have returned
+ }, this.onError)
+ }
+ )
+ } catch (error) {
+ this.onError(error)
+ }
+ }
+
+ if (!isPrebidUsed && !isAPSUsed) {
+ Advertising.queueForGPT(() => window.googletag.pubads().refresh(selectedSlots), this.onError)
+ }
+ }
+
+ async teardown() {
+ this.teardownCustomEvents()
+ const teardownQueueItems = [Advertising.queueForGPT(this.teardownGpt.bind(this), this.onError)]
+ if (this.isPrebidUsed) {
+ teardownQueueItems.push(Advertising.queueForPrebid(this.teardownPrebid.bind(this), this.onError))
+ }
+ await Promise.all(teardownQueueItems)
+ this.slots = {}
+ this.gptSizeMappings = {}
+ this.queue = []
+ }
+
+ activate(id, customEventHandlers = {}) {
+ const { slots, isPrebidUsed } = this
+ // check if have slots from configurations
+ if (Object.values(slots).length === 0 && id) {
+ this.queue.push({ id, customEventHandlers })
+ return
+ }
+ Object.keys(customEventHandlers).forEach((customEventId) => {
+ if (!this.customEventCallbacks[customEventId]) {
+ this.customEventCallbacks[customEventId] = {}
+ }
+ return (this.customEventCallbacks[customEventId][id] = customEventHandlers[customEventId])
+ })
+ if (isPrebidUsed) {
+ Advertising.queueForPrebid(
+ () =>
+ window.pbjs.requestBids({
+ adUnitCodes: [id],
+ bidsBackHandler: () => {
+ window.pbjs.setTargetingForGPTAsync([id])
+ this.requestManager.prebid = true
+ this.refreshSlots([slots[id].gpt])
+ },
+ }),
+ this.onError
+ )
+ }
+
+ if (this.isAPSUsed) {
+ try {
+ window.apstag.fetchBids(
+ {
+ slots: [slots[id].aps],
+ },
+ () => {
+ Advertising.queueForGPT(() => {
+ window.apstag.setDisplayBids()
+ this.requestManager.aps = true // signals that APS request has completed
+ this.refreshSlots([slots[id].gpt]) // checks whether both APS and Prebid have returned
+ }, this.onError)
+ }
+ )
+ } catch (error) {
+ this.onError(error)
+ }
+ }
+
+ if (!this.isPrebidUsed && !this.isAPSUsed) {
+ Advertising.queueForGPT(() => window.googletag.pubads().refresh([slots[id].gpt]), this.onError)
+ }
+ }
+
+ isConfigReady() {
+ return Boolean(this.config)
+ }
+
+ setConfig(config) {
+ this.config = config
+ this.setDefaultConfig()
+ }
+
+ // ---------- PRIVATE METHODS ----------
+
+ setupCustomEvents() {
+ if (!this.config.customEvents) {
+ return
+ }
+ Object.keys(this.config.customEvents).forEach((customEventId) =>
+ this.setupCustomEvent(customEventId, this.config.customEvents[customEventId])
+ )
+ }
+
+ setupCustomEvent(customEventId, { eventMessagePrefix, divIdPrefix }) {
+ const { customEventCallbacks } = this
+ this.customEventHandlers[customEventId] = ({ data }) => {
+ if (typeof data !== 'string' || !data.startsWith(`${eventMessagePrefix}`)) {
+ return
+ }
+ const divId = `${divIdPrefix || ''}${data.substr(eventMessagePrefix.length)}`
+ const callbacks = customEventCallbacks[customEventId]
+ if (!callbacks) {
+ return
+ }
+ const callback = callbacks[divId]
+ if (callback) {
+ callback()
+ }
+ }
+ window.addEventListener('message', this.customEventHandlers[customEventId])
+ }
+
+ teardownCustomEvents() {
+ if (!this.config.customEvents) {
+ return
+ }
+ Object.keys(this.config.customEvents).forEach((customEventId) =>
+ window.removeEventListener('message', this.customEventHandlers[customEventId])
+ )
+ }
+
+ defineGptSizeMappings() {
+ if (!this.config.sizeMappings) {
+ return
+ }
+ const entries = Object.entries(this.config.sizeMappings)
+ for (let i = 0; i < entries.length; i++) {
+ const [key, value] = entries[i]
+ const sizeMapping = window.googletag.sizeMapping()
+ for (let q = 0; q < value.length; q++) {
+ const { viewPortSize, sizes } = value[q]
+ sizeMapping.addSize(viewPortSize, sizes)
+ }
+ this.gptSizeMappings[key] = sizeMapping.build()
+ }
+ }
+
+ getGptSizeMapping(sizeMappingName) {
+ return sizeMappingName && this.gptSizeMappings[sizeMappingName] ? this.gptSizeMappings[sizeMappingName] : null
+ }
+
+ defineSlots() {
+ if (!this.config.slots) {
+ return
+ }
+ this.config.slots.forEach(({ id, path, collapseEmptyDiv, targeting = {}, sizes, sizeMappingName }) => {
+ const gptSlot = window.googletag.defineSlot(path || this.config.path, sizes, id)
+
+ const sizeMapping = this.getGptSizeMapping(sizeMappingName)
+ if (sizeMapping) {
+ gptSlot.defineSizeMapping(sizeMapping)
+ }
+
+ if (collapseEmptyDiv && collapseEmptyDiv.length && collapseEmptyDiv.length > 0) {
+ gptSlot.setCollapseEmptyDiv(...collapseEmptyDiv)
+ }
+
+ const entries = Object.entries(targeting)
+ for (let i = 0; i < entries.length; i++) {
+ const [key, value] = entries[i]
+ gptSlot.setTargeting(key, value)
+ }
+
+ gptSlot.addService(window.googletag.pubads())
+
+ const apsSlot = {
+ slotID: id,
+ slotName: path,
+ sizes: sizes.filter(
+ // APS requires sizes to have type number[][]. Each entry in sizes
+ // should be an array containing height and width.
+ (size) => typeof size === 'object' && typeof size[0] === 'number' && typeof size[1] === 'number'
+ ),
+ }
+
+ this.slots[id] = { gpt: gptSlot, aps: apsSlot }
+ })
+ }
+
+ defineOutOfPageSlots() {
+ if (this.config.outOfPageSlots) {
+ this.config.outOfPageSlots.forEach(({ id, path }) => {
+ const slot = window.googletag.defineOutOfPageSlot(path || this.config.path, id)
+ slot.addService(window.googletag.pubads())
+ this.outOfPageSlots[id] = slot
+ })
+ }
+ }
+
+ defineInterstitialSlot() {
+ if (this.config.interstitialSlot) {
+ const { path, targeting } = this.config.interstitialSlot
+ const slot = window.googletag.defineOutOfPageSlot(
+ path || this.config.path,
+ window.googletag.enums.OutOfPageFormat.INTERSTITIAL
+ )
+ if (slot) {
+ const entries = Object.entries(targeting || [])
+ for (let i = 0; i < entries.length; i++) {
+ const [key, value] = entries[i]
+ slot.setTargeting(key, value)
+ }
+ slot.addService(window.googletag.pubads())
+ this.interstitialSlot = slot
+ }
+ }
+ }
+
+ displaySlots() {
+ this.executePlugins('displaySlots')
+ this.config.slots.forEach(({ id }) => {
+ window.googletag.display(id)
+ })
+ }
+
+ displayOutOfPageSlots() {
+ this.executePlugins('displayOutOfPageSlot')
+ if (this.config.outOfPageSlots) {
+ this.config.outOfPageSlots.forEach(({ id }) => {
+ window.googletag.display(id)
+ })
+ }
+ }
+
+ refreshInterstitialSlot() {
+ this.executePlugins('refreshInterstitialSlot')
+ if (this.interstitialSlot) {
+ window.googletag.pubads().refresh([this.interstitialSlot])
+ }
+ }
+
+ getAdUnits(slots) {
+ return slots.reduce(
+ (acc, currSlot) =>
+ acc.concat(
+ currSlot.prebid.map((currPrebid) => ({
+ code: currSlot.id,
+ mediaTypes: currPrebid.mediaTypes,
+ bids: currPrebid.bids,
+ }))
+ ),
+ []
+ )
+ }
+
+ setupPrebid() {
+ this.executePlugins('setupPrebid')
+ const adUnits = this.getAdUnits(this.config.slots)
+ window.pbjs.addAdUnits(adUnits)
+ window.pbjs.setConfig(this.config.prebid)
+ }
+
+ teardownPrebid() {
+ this.executePlugins('teardownPrebid')
+ this.getAdUnits(this.config.slots).forEach(({ code }) => window.pbjs.removeAdUnit(code))
+ }
+
+ setupGpt() {
+ this.executePlugins('setupGpt')
+ const pubads = window.googletag.pubads()
+ const { targeting } = this.config
+ this.defineGptSizeMappings()
+ this.defineSlots()
+ this.defineOutOfPageSlots()
+ this.defineInterstitialSlot()
+ const entries = Object.entries(targeting)
+ for (let i = 0; i < entries.length; i++) {
+ const [key, value] = entries[i]
+ pubads.setTargeting(key, value)
+ }
+ pubads.disableInitialLoad()
+ pubads.enableSingleRequest()
+
+ window.googletag.enableServices()
+ this.displaySlots()
+ this.displayOutOfPageSlots()
+ this.refreshInterstitialSlot()
+ }
+
+ teardownGpt() {
+ this.executePlugins('teardownGpt')
+ window.googletag.destroySlots()
+ }
+
+ setDefaultConfig() {
+ if (!this.config) {
+ return
+ }
+ if (!this.config.prebid) {
+ this.config.prebid = {}
+ }
+ if (!this.config.metaData) {
+ this.config.metaData = {}
+ }
+ if (!this.config.targeting) {
+ this.config.targeting = {}
+ }
+ if (this.config.enableLazyLoad === true) {
+ this.config.enableLazyLoad = this.defaultLazyLoadConfig
+ }
+ if (this.config.slots) {
+ this.config.slots = this.config.slots.map((slot) =>
+ slot.enableLazyLoad === true ? { ...slot, enableLazyLoad: this.defaultLazyLoadConfig } : slot
+ )
+ }
+ }
+
+ executePlugins(method) {
+ for (let i = 0; i < this.plugins.length; i++) {
+ const func = this.plugins[i][method]
+ if (func) {
+ func.call(this)
+ }
+ }
+ }
+
+ // when both APS and Prebid have returned, initiate ad request
+ refreshSlots(selectedSlots) {
+ // If using APS, we need to check that we got a bid from APS.
+ // If using Prebid, we need to check that we got a bid from Prebid.
+ if (this.isAPSUsed !== this.requestManager.aps || this.isPrebidUsed !== this.requestManager.prebid) {
+ return
+ }
+
+ Advertising.queueForGPT(() => {
+ window.googletag.pubads().refresh(selectedSlots)
+ }, this.onError)
+
+ this.requestManager.aps = false
+ this.requestManager.prebid = false
+ }
+
+ static queueForGPT(func, onError) {
+ return Advertising.withQueue(window.googletag.cmd, func, onError)
+ }
+
+ static queueForPrebid(func, onError) {
+ return Advertising.withQueue(window.pbjs.que, func, onError)
+ }
+
+ static withQueue(queue, func, onError) {
+ return new Promise((resolve) =>
+ queue.push(() => {
+ try {
+ func()
+ resolve()
+ } catch (error) {
+ onError(error)
+ }
+ })
+ )
+ }
+}
diff --git a/src/AdvertisingContext.ts b/src/AdvertisingContext.ts
new file mode 100644
index 00000000..c4e0efe3
--- /dev/null
+++ b/src/AdvertisingContext.ts
@@ -0,0 +1,28 @@
+import { createInjectionState } from '@vueuse/core'
+import type { Ref } from 'vue'
+import type { TAdvertisingConfig } from './components/utils/AdvertisingConfig'
+import type Advertising from './Advertising'
+
+interface TAdvertisingContext {
+ activate: Ref<((id: string, customEventHandlers: Record void>) => Advertising | void) | undefined>
+ config: Ref
+}
+
+const [useProvideAdvertisingContext, useAdvertisingContext] = createInjectionState(
+ ({ activate, config }: TAdvertisingContext) => {
+ return {
+ activate,
+ config,
+ }
+ }
+)
+
+export function useAdvertisingContextWithDefault() {
+ return (
+ useAdvertisingContext() ?? {
+ activate: ref(() => undefined),
+ config: ref(null),
+ }
+ )
+}
+export { useProvideAdvertisingContext, useAdvertisingContext }
diff --git a/src/components/AdvertisingProvider.vue b/src/components/AdvertisingProvider.vue
new file mode 100644
index 00000000..95f8b2a8
--- /dev/null
+++ b/src/components/AdvertisingProvider.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
diff --git a/src/components/AdvertisingSlot.vue b/src/components/AdvertisingSlot.vue
new file mode 100644
index 00000000..3b18ef0f
--- /dev/null
+++ b/src/components/AdvertisingSlot.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
diff --git a/src/components/GlobalAdvertisingProvider.vue b/src/components/GlobalAdvertisingProvider.vue
new file mode 100644
index 00000000..221336dc
--- /dev/null
+++ b/src/components/GlobalAdvertisingProvider.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
diff --git a/src/components/GlobalAdvertisingSlot.vue b/src/components/GlobalAdvertisingSlot.vue
new file mode 100644
index 00000000..456db148
--- /dev/null
+++ b/src/components/GlobalAdvertisingSlot.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/index.ts b/src/components/index.ts
new file mode 100644
index 00000000..4d964acf
--- /dev/null
+++ b/src/components/index.ts
@@ -0,0 +1,4 @@
+export { default as AdvertisingProvider } from './AdvertisingProvider.vue'
+export { default as GlobalAdvertisingProvider } from './GlobalAdvertisingProvider.vue'
+export { default as AdvertisingSlot } from './AdvertisingSlot.vue'
+export { default as GlobalAdvertisingSlot } from './GlobalAdvertisingSlot.vue'
diff --git a/src/components/utils/AdvertisingConfig.ts b/src/components/utils/AdvertisingConfig.ts
new file mode 100644
index 00000000..ae1a5f35
--- /dev/null
+++ b/src/components/utils/AdvertisingConfig.ts
@@ -0,0 +1,108 @@
+import type { TAdvertisingSlotConfig } from './AdvertisingSlotConfig'
+
+export interface TAdvertisingConfig {
+ path?: string
+ targeting?: object
+ usePrebid?: boolean
+ prebid?: {
+ debug?: boolean
+ bidderTimeout?: number
+ enableSendAllBids?: boolean
+ bidderSequence?: 'rand: TAdvertisingConfigom' | 'fixed'
+ publisherDomain?: string
+ cookieSyncDelay?: number
+ priceGranularity?:
+ | 'low'
+ | 'medium'
+ | 'high'
+ | 'auto'
+ | 'dense'
+ | {
+ buckets: {
+ precision?: number
+ max: number
+ increment: number
+ }[]
+ }
+ mediaTypePriceGranularity?: {
+ video?:
+ | 'low'
+ | 'medium'
+ | 'high'
+ | 'auto'
+ | 'dense'
+ | {
+ buckets: {
+ precision?: number
+ max: number
+ increment: number
+ }[]
+ }
+ banner?:
+ | 'low'
+ | 'medium'
+ | 'high'
+ | 'auto'
+ | 'dense'
+ | {
+ buckets: {
+ precision?: number
+ max: number
+ increment: number
+ }[]
+ }
+ native?:
+ | 'low'
+ | 'medium'
+ | 'high'
+ | 'auto'
+ | 'dense'
+ | {
+ buckets: {
+ precision?: number
+ max: number
+ increment: number
+ }[]
+ }
+ }
+ sizeConfig?: {
+ mediaQuery: string
+ sizesSupported?: string | number[][]
+ labels?: string[]
+ }[]
+ }
+ useAPS?: boolean
+ aps?: {
+ pubID?: string
+ bidTimeout?: number
+ deals?: boolean
+ }
+ sizeMappings?: Record<
+ string,
+ {
+ viewPortSize: number[]
+ sizes: string | number[][]
+ }[]
+ >
+ slots?: TAdvertisingSlotConfig[]
+ outOfPageSlots?: {
+ id?: string
+ }[]
+ interstitialSlot?: {
+ path: string
+ targeting?: object
+ }
+ customEvents?: Record<
+ string,
+ {
+ eventMessagePrefix: string
+ divIdPrefix?: string
+ }
+ >
+ enableLazyLoad?:
+ | boolean
+ | {
+ marginPercent?: number
+ mobileScaling?: number
+ }
+}
diff --git a/src/components/utils/AdvertisingSlotConfig.ts b/src/components/utils/AdvertisingSlotConfig.ts
new file mode 100644
index 00000000..91e86ff2
--- /dev/null
+++ b/src/components/utils/AdvertisingSlotConfig.ts
@@ -0,0 +1,28 @@
+export interface TAdvertisingSlotConfig {
+ id: string
+ path?: string
+ collapseEmptyDiv?: boolean[]
+ targeting?: object
+ sizes?: string | string[] | number[] | number[][]
+ sizeMappingName?: string
+ prebid?: {
+ mediaTypes: Record<
+ string,
+ {
+ sizes?: number[][]
+ }
+ >
+ bids: {
+ bidder: string
+ params?: object
+ labelAny?: string[]
+ labelAll?: string[]
+ }[]
+ }[]
+ enableLazyLoad?:
+ | boolean
+ | {
+ marginPercent?: number
+ mobileScaling?: number
+ }
+}
diff --git a/src/components/utils/__snapshots__/connectToAdServer.test.js.snap b/src/components/utils/__snapshots__/connectToAdServer.test.js.snap
new file mode 100644
index 00000000..a07bc984
--- /dev/null
+++ b/src/components/utils/__snapshots__/connectToAdServer.test.js.snap
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`When I connect a component to the ad server the connected component renders correctly (activate prop is added, other props are proxied through) 1`] = `
+
+`;
diff --git a/src/components/utils/calculateRootMargin.test.js b/src/components/utils/calculateRootMargin.test.js
new file mode 100644
index 00000000..77eab504
--- /dev/null
+++ b/src/components/utils/calculateRootMargin.test.js
@@ -0,0 +1,25 @@
+import { vi, test, expect } from 'vitest'
+import calculateRootMargin from './calculateRootMargin'
+import isMobileDevice from './isMobileDevice'
+
+vi.mock('./isMobileDevice')
+window.innerHeight = 600
+
+test.each`
+ marginPercent | isMobileDeviceValue | mobileScaling | expected
+ ${undefined} | ${false} | ${undefined} | ${undefined}
+ ${0} | ${false} | ${undefined} | ${undefined}
+ ${50} | ${false} | ${undefined} | ${'300px'}
+ ${100} | ${false} | ${undefined} | ${'600px'}
+ ${50} | ${true} | ${undefined} | ${'300px'}
+ ${50} | ${true} | ${-1} | ${'300px'}
+ ${50} | ${true} | ${1} | ${'300px'}
+ ${50} | ${true} | ${2} | ${'600px'}
+`(
+ 'returns $expected when called with margin percentage $marginPercent, ' +
+ 'is mobile device $isMobileDeviceValue, mobile scaling $mobileScaling',
+ ({ marginPercent, isMobileDeviceValue, mobileScaling, expected }) => {
+ isMobileDevice.mockReturnValue(isMobileDeviceValue)
+ expect(calculateRootMargin({ marginPercent, mobileScaling })).toBe(expected)
+ }
+)
diff --git a/src/components/utils/calculateRootMargin.ts b/src/components/utils/calculateRootMargin.ts
new file mode 100644
index 00000000..6e1115c2
--- /dev/null
+++ b/src/components/utils/calculateRootMargin.ts
@@ -0,0 +1,15 @@
+import isMobileDevice from './isMobileDevice'
+
+export default function calculateRootMargin({
+ marginPercent,
+ mobileScaling,
+}: { marginPercent?: number; mobileScaling?: number } = {}) {
+ if (!marginPercent) {
+ return undefined
+ }
+ const finalMarginPercent =
+ isMobileDevice() && mobileScaling !== undefined && mobileScaling !== -1
+ ? marginPercent * mobileScaling
+ : marginPercent
+ return `${(finalMarginPercent / 100) * window.innerHeight}px`
+}
diff --git a/src/components/utils/getLazyLoadConfig.test.js b/src/components/utils/getLazyLoadConfig.test.js
new file mode 100644
index 00000000..a3d1988c
--- /dev/null
+++ b/src/components/utils/getLazyLoadConfig.test.js
@@ -0,0 +1,21 @@
+/* eslint-disable max-len */
+import { test, expect } from 'vitest'
+import { config, DIV_ID_FOO } from '../../utils/testAdvertisingConfig'
+import getLazyLoadConfig from './getLazyLoadConfig'
+
+test.each`
+ inputDesc | expectedDesc | input | id | expected
+ ${'there is no config'} | ${'null'} | ${undefined} | ${DIV_ID_FOO} | ${null}
+ ${'there is no slot config'} | ${'null'} | ${{}} | ${DIV_ID_FOO} | ${null}
+ ${'there is no slot config for the specified id'} | ${'null'} | ${config} | ${'blam'} | ${null}
+ ${'the lazy load config for the specified slot is null and there is no global lazy load config'} | ${'null'} | ${{ slots: [{ id: DIV_ID_FOO, enableLazyLoad: null }] }} | ${DIV_ID_FOO} | ${null}
+ ${'the lazy load config of the specified slot is null'} | ${'the global lazy load config'} | ${{ enableLazyLoad: 'my-global-lazy-load-config', slots: [{ id: DIV_ID_FOO, enableLazyLoad: null }] }} | ${DIV_ID_FOO} | ${'my-global-lazy-load-config'}
+ ${'the specified slot has no lazy load config and there is no global lazy load config'} | ${'null'} | ${config} | ${DIV_ID_FOO} | ${null}
+ ${'the specified slot has not lazy load config'} | ${'the global lazy load config'} | ${{ enableLazyLoad: 'my-global-lazy-load-config', slots: config.slots }} | ${DIV_ID_FOO} | ${'my-global-lazy-load-config'}
+ ${'the specified slot has a lazy load config'} | ${"the slot's lazy load config"} | ${{ slots: [{ id: DIV_ID_FOO, enableLazyLoad: 'slot-lazy-load-config' }] }} | ${DIV_ID_FOO} | ${'slot-lazy-load-config'}
+ ${'the specified slot has a lazy load config and there is a global lazy load config'} | ${"the slot's lazy load config"} | ${{ enableLazyLoad: 'my-global-lazy-load-config', slots: [{ id: DIV_ID_FOO, enableLazyLoad: 'slot-lazy-load-config' }] }} | ${DIV_ID_FOO} | ${'slot-lazy-load-config'}
+ ${"the specified slot's lazy loading config is set to false"} | ${'false'} | ${{ slots: [{ id: DIV_ID_FOO, enableLazyLoad: false }] }} | ${DIV_ID_FOO} | ${false}
+ ${"the specified slot's lazy loading config is set to false and there is a global lazy load config"} | ${'false'} | ${{ enableLazyLoad: 'my-global-lazy-load-config', slots: [{ id: DIV_ID_FOO, enableLazyLoad: false }] }} | ${DIV_ID_FOO} | ${false}
+`('returns $expectedDesc when $inputDesc', ({ input, id, expected }) =>
+ expect(getLazyLoadConfig(input, id)).toBe(expected)
+)
diff --git a/src/components/utils/getLazyLoadConfig.ts b/src/components/utils/getLazyLoadConfig.ts
new file mode 100644
index 00000000..79e5ff4e
--- /dev/null
+++ b/src/components/utils/getLazyLoadConfig.ts
@@ -0,0 +1,15 @@
+import { TAdvertisingConfig } from './AdvertisingConfig'
+
+export default function getLazyLoadConfig(config: TAdvertisingConfig, id: string) {
+ if (!config?.slots) {
+ return null
+ }
+ const slotConfig = config.slots.find((slot) => slot.id === id)
+ if (!slotConfig) {
+ return null
+ }
+ if (typeof slotConfig.enableLazyLoad !== 'undefined' && slotConfig.enableLazyLoad !== null) {
+ return slotConfig.enableLazyLoad
+ }
+ return config?.enableLazyLoad === undefined ? null : config?.enableLazyLoad
+}
diff --git a/src/components/utils/index.ts b/src/components/utils/index.ts
new file mode 100644
index 00000000..ca32433a
--- /dev/null
+++ b/src/components/utils/index.ts
@@ -0,0 +1,6 @@
+export type { TAdvertisingConfig } from './AdvertisingConfig'
+export type { TAdvertisingSlotConfig } from './AdvertisingSlotConfig'
+export interface TStickySetting {
+ time?: number
+ top?: number
+}
diff --git a/src/components/utils/isLazyLoading.test.js b/src/components/utils/isLazyLoading.test.js
new file mode 100644
index 00000000..181404c6
--- /dev/null
+++ b/src/components/utils/isLazyLoading.test.js
@@ -0,0 +1,16 @@
+import { test, expect } from 'vitest'
+import isLazyLoading from './isLazyLoading'
+
+test.each`
+ lazyLoadConfig | expected
+ ${undefined} | ${false}
+ ${null} | ${false}
+ ${true} | ${true}
+ ${false} | ${false}
+ ${{}} | ${true}
+ ${{ marginPercent: 100 }} | ${true}
+ ${{ marginPercent: 0 }} | ${true}
+ ${{ marginPercent: -1 }} | ${false}
+`('returns $expected when called with lazy load config $lazyLoadConfig', ({ lazyLoadConfig, expected }) =>
+ expect(isLazyLoading(lazyLoadConfig)).toBe(expected)
+)
diff --git a/src/components/utils/isLazyLoading.ts b/src/components/utils/isLazyLoading.ts
new file mode 100644
index 00000000..40e0f5f5
--- /dev/null
+++ b/src/components/utils/isLazyLoading.ts
@@ -0,0 +1,19 @@
+import { TAdvertisingConfig } from './AdvertisingConfig'
+
+export default function isLazyLoading(lazyLoadConfig: TAdvertisingConfig['enableLazyLoad'] | boolean) {
+ if (typeof lazyLoadConfig === 'boolean') {
+ return lazyLoadConfig
+ }
+
+ if (!lazyLoadConfig) {
+ return false
+ }
+
+ const { marginPercent } = lazyLoadConfig
+
+ if (!marginPercent) {
+ return true
+ }
+
+ return marginPercent > -1
+}
diff --git a/src/components/utils/isMobileDevice.test.js b/src/components/utils/isMobileDevice.test.js
new file mode 100644
index 00000000..4c2486aa
--- /dev/null
+++ b/src/components/utils/isMobileDevice.test.js
@@ -0,0 +1,108 @@
+import { describe, beforeAll, afterAll, it, expect, vi } from 'vitest'
+import isMobileDevice from './isMobileDevice'
+
+describe('A device', () => {
+ const originalUserAgent = global.navigator.userAgent
+ let userAgent = null
+ beforeAll(() => {
+ vi.stubGlobal('navigator', {
+ get userAgent() {
+ return userAgent
+ },
+ })
+ })
+ describe('that has navigator.maxTouchPoints 0', () => {
+ it('is not a mobile device', () => {
+ vi.stubGlobal('navigator', { maxTouchPoints: 0 })
+ navigator.maxTouchPoints = 0
+ expect(isMobileDevice()).toBeFalsy()
+ })
+ })
+ describe('that has navigator.maxTouchPoints 1', () => {
+ it('is a mobile device', () => {
+ navigator.maxTouchPoints = 1
+ expect(isMobileDevice()).toBeTruthy()
+ })
+ })
+ describe('that does not have a navigator.maxTouchPoints property', () => {
+ beforeAll(() => {
+ delete navigator.maxTouchPoints
+ })
+ describe('and has navigator.msMaxTouchPoints 0', () => {
+ it('is a not mobile device', () => {
+ vi.stubGlobal('navigator', { msMaxTouchPoints: 0 })
+ expect(isMobileDevice()).toBeFalsy()
+ })
+ })
+ describe('and has navigator.msMaxTouchPoints 1', () => {
+ it('is a mobile device', () => {
+ vi.stubGlobal('navigator', { msMaxTouchPoints: 1 })
+ expect(isMobileDevice()).toBeTruthy()
+ })
+ })
+ describe('and does not have a navigator.msMaxTouchPoints property', () => {
+ beforeAll(() => {
+ vi.stubGlobal('navigator', {})
+ })
+ describe('and matches a (pointer:coarse) media query', () => {
+ it('is a mobile device', () => {
+ window.matchMedia = vi.fn().mockReturnValue({
+ media: '(pointer:coarse)',
+ matches: true,
+ })
+ expect(isMobileDevice()).toBeTruthy()
+ })
+ })
+ describe('and does not match a (pointer:coarse) media query', () => {
+ it('is not a mobile device', () => {
+ window.matchMedia = vi.fn().mockReturnValue({
+ media: '(pointer:coarse)',
+ matches: false,
+ })
+ expect(isMobileDevice()).toBeFalsy()
+ })
+ })
+ describe('and does not support the matchMedia API', () => {
+ beforeAll(() => {
+ delete window.matchMedia
+ })
+ describe('and has a window.orientation property', () => {
+ it('is a mobile device', () => {
+ window.orientation = 'vertical'
+ expect(isMobileDevice()).toBeTruthy()
+ })
+ })
+ describe.skip('and has no window.orientation property', () => {
+ beforeAll(() => {
+ delete window.orientation
+ })
+ describe('and has a mobile phone user agent', () => {
+ it('is a mobile device', () => {
+ userAgent =
+ 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_4_2 like Mac OS X) AppleWebKit/605.1.15 ' +
+ '(KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1'
+ expect(isMobileDevice()).toBeTruthy()
+ })
+ })
+ describe('and has a tablet user agent', () => {
+ it('is a mobile device', () => {
+ userAgent =
+ 'Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) ' +
+ 'CriOS/87.0.4280.163 Mobile/15E148 Safari/604.1'
+ expect(isMobileDevice()).toBeTruthy()
+ })
+ })
+ describe('and has a desktop browser user agent', () => {
+ it('is not a mobile device', () => {
+ userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0'
+ expect(isMobileDevice()).toBeFalsy()
+ })
+ })
+ })
+ })
+ })
+ })
+ afterAll(() => {
+ userAgent = originalUserAgent
+ })
+})
diff --git a/src/components/utils/isMobileDevice.ts b/src/components/utils/isMobileDevice.ts
new file mode 100644
index 00000000..89161e4f
--- /dev/null
+++ b/src/components/utils/isMobileDevice.ts
@@ -0,0 +1,23 @@
+// Mobile device detection, based on MDN solution:
+// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent
+export default function isMobileDevice() {
+ if ('maxTouchPoints' in navigator) {
+ return navigator.maxTouchPoints > 0
+ }
+ if ('msMaxTouchPoints' in navigator) {
+ // @ts-expect-error deprecated
+ return navigator.msMaxTouchPoints > 0
+ }
+ // @ts-expect-error ensure matchMedia is available
+ const mQ = window.matchMedia && matchMedia('(pointer:coarse)')
+ if (mQ && mQ.media === '(pointer:coarse)') {
+ return Boolean(mQ.matches)
+ }
+ if ('orientation' in window) {
+ return true // deprecated, but good fallback
+ }
+ // Only as a last resort, fall back to user agent sniffing
+ // @ts-expect-error deprecated
+ const UA = navigator.userAgent
+ return /\b(BlackBerry|webOS|iPhone|IEMobile)\b/i.test(UA) || /\b(Android|Windows Phone|iPad|iPod)\b/i.test(UA)
+}
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 00000000..704b4f5d
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,3 @@
+export { AdvertisingProvider, AdvertisingSlot, GlobalAdvertisingProvider, GlobalAdvertisingSlot } from './components'
+// export { default as connectToAdServer } from './components/utils/connectToAdServer'
+export type { TAdvertisingConfig, TAdvertisingSlotConfig } from './components/utils'
diff --git a/src/utils/__snapshots__/getAdUnits.test.js.snap b/src/utils/__snapshots__/getAdUnits.test.js.snap
new file mode 100644
index 00000000..d6540748
--- /dev/null
+++ b/src/utils/__snapshots__/getAdUnits.test.js.snap
@@ -0,0 +1,48 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`When I get ad units from a given config > the result > is correct 1`] = `
+[
+ {
+ "bids": [
+ {
+ "bidder": "bidder-foo",
+ "params": {
+ "foo": "bar",
+ },
+ },
+ ],
+ "code": "div-gpt-ad-foo",
+ "mediaTypes": {
+ "banner": {
+ "sizes": [
+ [
+ 320,
+ 240,
+ ],
+ ],
+ },
+ },
+ },
+ {
+ "bids": [
+ {
+ "bidder": "bidder-bar",
+ "params": {
+ "bar": "foo",
+ },
+ },
+ ],
+ "code": "div-gpt-ad-bar",
+ "mediaTypes": {
+ "banner": {
+ "sizes": [
+ [
+ 320,
+ 240,
+ ],
+ ],
+ },
+ },
+ },
+]
+`;
diff --git a/src/utils/__snapshots__/testAdvertisingConfig.test.js.snap b/src/utils/__snapshots__/testAdvertisingConfig.test.js.snap
new file mode 100644
index 00000000..7df12d69
--- /dev/null
+++ b/src/utils/__snapshots__/testAdvertisingConfig.test.js.snap
@@ -0,0 +1,162 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`The test advertising configuration for unit tests > is correct 1`] = `
+{
+ "active": true,
+ "aps": {
+ "bidTimeout": 2000,
+ "deals": true,
+ "pubID": "apsid",
+ },
+ "customEvents": {
+ "collapse": {
+ "divIdPrefix": "div-gpt-ad-",
+ "eventMessagePrefix": "CloseAdvContainer:",
+ },
+ },
+ "metaData": {
+ "usdToEurRate": 2,
+ },
+ "path": "global/ad/unit/path",
+ "prebid": {
+ "bidderSequence": "random",
+ "bidderTimeout": 1500,
+ "priceGranularity": "medium",
+ },
+ "sizeMappings": {
+ "mobailAndTablet": [
+ {
+ "sizes": [],
+ "viewPortSize": [
+ 0,
+ 0,
+ ],
+ },
+ {
+ "sizes": [
+ [
+ 300,
+ 250,
+ ],
+ [
+ 320,
+ 50,
+ ],
+ ],
+ "viewPortSize": [
+ 320,
+ 700,
+ ],
+ },
+ {
+ "sizes": [],
+ "viewPortSize": [
+ 1050,
+ 200,
+ ],
+ },
+ ],
+ },
+ "slots": [
+ {
+ "id": "div-gpt-ad-foo",
+ "prebid": [
+ {
+ "bids": [
+ {
+ "bidder": "bidder-foo",
+ "params": {
+ "foo": "bar",
+ },
+ },
+ ],
+ "mediaTypes": {
+ "banner": {
+ "sizes": [
+ [
+ 320,
+ 240,
+ ],
+ ],
+ },
+ },
+ },
+ ],
+ "sizes": [
+ "fluid",
+ [
+ 320,
+ 240,
+ ],
+ ],
+ "targeting": {
+ "a": 666,
+ },
+ },
+ {
+ "collapseEmptyDiv": [
+ true,
+ true,
+ ],
+ "id": "div-gpt-ad-bar",
+ "path": "slot/ad/unit/path",
+ "prebid": [
+ {
+ "bids": [
+ {
+ "bidder": "bidder-bar",
+ "params": {
+ "bar": "foo",
+ },
+ },
+ ],
+ "mediaTypes": {
+ "banner": {
+ "sizes": [
+ [
+ 320,
+ 240,
+ ],
+ ],
+ },
+ },
+ },
+ ],
+ "sizeMappingName": "mobailAndTablet",
+ "sizes": [
+ "fluid",
+ [
+ 320,
+ 240,
+ ],
+ ],
+ "targeting": {
+ "a": [
+ 11,
+ 666,
+ ],
+ },
+ },
+ ],
+ "targeting": {
+ "eagt": [
+ 666,
+ ],
+ "mt-ab": "test",
+ "mt-ma": [
+ "Poserwagen",
+ ],
+ "mt-mo": [
+ "Brummstinko",
+ "Grand Umweltverpestino",
+ ],
+ "mt-thread": [
+ 666,
+ ],
+ "mt-u2": [
+ "00",
+ ],
+ "mt-u4": true,
+ },
+}
+`;
diff --git a/src/utils/getAdUnits.js b/src/utils/getAdUnits.js
new file mode 100644
index 00000000..5237ef43
--- /dev/null
+++ b/src/utils/getAdUnits.js
@@ -0,0 +1,12 @@
+export default (slots) =>
+ slots.reduce(
+ (acc, currSlot) =>
+ acc.concat(
+ currSlot.prebid.map((currPrebid) => ({
+ code: currSlot.id,
+ mediaTypes: currPrebid.mediaTypes,
+ bids: currPrebid.bids,
+ }))
+ ),
+ []
+ )
diff --git a/src/utils/getAdUnits.test.js b/src/utils/getAdUnits.test.js
new file mode 100644
index 00000000..6d72e436
--- /dev/null
+++ b/src/utils/getAdUnits.test.js
@@ -0,0 +1,9 @@
+import { describe, beforeEach, it, expect } from 'vitest'
+import getAdUnits from './getAdUnits'
+import { config } from './testAdvertisingConfig'
+
+describe('When I get ad units from a given config', () => {
+ let adUnits
+ beforeEach(() => (adUnits = getAdUnits(config.slots)))
+ describe('the result', () => void it('is correct', () => expect(adUnits).toMatchSnapshot()))
+})
diff --git a/src/utils/testAdvertisingConfig.js b/src/utils/testAdvertisingConfig.js
new file mode 100644
index 00000000..63a2dfd7
--- /dev/null
+++ b/src/utils/testAdvertisingConfig.js
@@ -0,0 +1,119 @@
+export const DIV_ID_FOO = 'div-gpt-ad-foo'
+const SLOT_ID_FOO = 666
+const PREBID_SIZES_FOO = [[320, 240]]
+const BIDDER_FOO = 'bidder-foo'
+const PARAMS_FOO = { foo: 'bar' }
+
+export const DIV_ID_BAR = 'div-gpt-ad-bar'
+const SLOT_ID_BAR = [11, 666]
+const PREBID_SIZES_BAR = [[320, 240]]
+const BIDDER_BAR = 'bidder-bar'
+const PARAMS_BAR = { bar: 'foo' }
+const COLLAPSE_EMPTY_DIV = [true, true]
+
+const GPT_SIZES = ['fluid', [320, 240]]
+
+const GLOBAL_AD_UNIT_PATH = 'global/ad/unit/path'
+const SLOT_AD_UNIT_PATH = 'slot/ad/unit/path'
+const USD_TO_EUR_RATE = 2
+
+export const configWithoutSlots = {
+ active: true,
+ path: GLOBAL_AD_UNIT_PATH,
+ aps: {
+ pubID: 'apsid',
+ bidTimeout: 2e3,
+ deals: true,
+ },
+ prebid: {
+ bidderTimeout: 1500,
+ priceGranularity: 'medium',
+ bidderSequence: 'random',
+ },
+ sizeMappings: {
+ mobailAndTablet: [
+ {
+ viewPortSize: [0, 0],
+ sizes: [],
+ },
+ {
+ viewPortSize: [320, 700],
+ sizes: [
+ [300, 250],
+ [320, 50],
+ ],
+ },
+ {
+ viewPortSize: [1050, 200],
+ sizes: [],
+ },
+ ],
+ },
+ metaData: {
+ usdToEurRate: USD_TO_EUR_RATE,
+ },
+
+ targeting: {
+ eagt: [666],
+ 'mt-ab': 'test',
+ 'mt-ma': ['Poserwagen'],
+ 'mt-mo': ['Brummstinko', 'Grand Umweltverpestino'],
+ 'mt-thread': [666],
+ 'mt-u2': ['00'],
+ 'mt-u4': true,
+ },
+ customEvents: {
+ collapse: {
+ eventMessagePrefix: 'CloseAdvContainer:',
+ divIdPrefix: 'div-gpt-ad-',
+ },
+ },
+}
+export const config = {
+ ...configWithoutSlots,
+ slots: [
+ {
+ id: DIV_ID_FOO,
+ targeting: { a: SLOT_ID_FOO },
+ sizes: GPT_SIZES,
+ prebid: [
+ {
+ mediaTypes: {
+ banner: {
+ sizes: PREBID_SIZES_FOO,
+ },
+ },
+ bids: [
+ {
+ bidder: BIDDER_FOO,
+ params: PARAMS_FOO,
+ },
+ ],
+ },
+ ],
+ },
+ {
+ id: DIV_ID_BAR,
+ path: SLOT_AD_UNIT_PATH,
+ targeting: { a: SLOT_ID_BAR },
+ sizes: GPT_SIZES,
+ sizeMappingName: 'mobailAndTablet',
+ collapseEmptyDiv: COLLAPSE_EMPTY_DIV,
+ prebid: [
+ {
+ mediaTypes: {
+ banner: {
+ sizes: PREBID_SIZES_BAR,
+ },
+ },
+ bids: [
+ {
+ bidder: BIDDER_BAR,
+ params: PARAMS_BAR,
+ },
+ ],
+ },
+ ],
+ },
+ ],
+}
diff --git a/src/utils/testAdvertisingConfig.test.js b/src/utils/testAdvertisingConfig.test.js
new file mode 100644
index 00000000..badc6b5b
--- /dev/null
+++ b/src/utils/testAdvertisingConfig.test.js
@@ -0,0 +1,5 @@
+import { describe, it, expect } from 'vitest'
+import { config } from './testAdvertisingConfig'
+
+describe('The test advertising configuration for unit tests', () =>
+ void it('is correct', () => expect(config).toMatchSnapshot()))
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 00000000..051aee4c
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "compilerOptions": {
+ /* Visit https://aka.ms/tsconfig to read more about this file */
+
+ /* Language and Environment */
+ "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
+
+ "lib": ["es2016", "dom"],
+
+ /* Modules */
+ "module": "ES2022" /* Specify what module code is generated. */,
+ // "rootDir": "./", /* Specify the root folder within your source files. */
+ "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */,
+ "allowJs": true /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */,
+
+ "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */,
+ "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
+
+ "strict": true /* Enable all strict type-checking options. */,
+ "skipLibCheck": true /* Skip type checking all .d.ts files. */
+ }
+}
diff --git a/vitest.config.ts b/vitest.config.ts
new file mode 100644
index 00000000..56feb5b7
--- /dev/null
+++ b/vitest.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vitest/config'
+
+export default defineConfig({
+ test: {
+ environment: 'happy-dom',
+ },
+})
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 00000000..5870759c
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,3526 @@
+# This file is generated by running "yarn install" inside your project.
+# Manual changes might be lost - proceed with caution!
+
+__metadata:
+ version: 6
+ cacheKey: 8
+
+"@ampproject/remapping@npm:^2.2.0":
+ version: 2.2.0
+ resolution: "@ampproject/remapping@npm:2.2.0"
+ dependencies:
+ "@jridgewell/gen-mapping": ^0.1.0
+ "@jridgewell/trace-mapping": ^0.3.9
+ checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292
+ languageName: node
+ linkType: hard
+
+"@babel/code-frame@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/code-frame@npm:7.18.6"
+ dependencies:
+ "@babel/highlight": ^7.18.6
+ checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba
+ languageName: node
+ linkType: hard
+
+"@babel/compat-data@npm:^7.20.5":
+ version: 7.21.0
+ resolution: "@babel/compat-data@npm:7.21.0"
+ checksum: dbf632c532f9c75ba0be7d1dc9f6cd3582501af52f10a6b90415d634ec5878735bd46064c91673b10317af94d4cc99c4da5bd9d955978cdccb7905fc33291e4d
+ languageName: node
+ linkType: hard
+
+"@babel/core@npm:^7.20.12":
+ version: 7.21.0
+ resolution: "@babel/core@npm:7.21.0"
+ dependencies:
+ "@ampproject/remapping": ^2.2.0
+ "@babel/code-frame": ^7.18.6
+ "@babel/generator": ^7.21.0
+ "@babel/helper-compilation-targets": ^7.20.7
+ "@babel/helper-module-transforms": ^7.21.0
+ "@babel/helpers": ^7.21.0
+ "@babel/parser": ^7.21.0
+ "@babel/template": ^7.20.7
+ "@babel/traverse": ^7.21.0
+ "@babel/types": ^7.21.0
+ convert-source-map: ^1.7.0
+ debug: ^4.1.0
+ gensync: ^1.0.0-beta.2
+ json5: ^2.2.2
+ semver: ^6.3.0
+ checksum: 357f4dd3638861ceebf6d95ff49ad8b902065ee8b7b352621deed5666c2a6d702a48ca7254dba23ecae2a0afb67d20f90db7dd645c3b75e35e72ad9776c671aa
+ languageName: node
+ linkType: hard
+
+"@babel/generator@npm:^7.21.0, @babel/generator@npm:^7.21.1":
+ version: 7.21.1
+ resolution: "@babel/generator@npm:7.21.1"
+ dependencies:
+ "@babel/types": ^7.21.0
+ "@jridgewell/gen-mapping": ^0.3.2
+ "@jridgewell/trace-mapping": ^0.3.17
+ jsesc: ^2.5.1
+ checksum: 69085a211ff91a7a608ee3f86e6fcb9cf5e724b756d792a713b0c328a671cd3e423e1ef1b12533f366baba0616caffe0a7ba9d328727eab484de5961badbef00
+ languageName: node
+ linkType: hard
+
+"@babel/helper-compilation-targets@npm:^7.20.7":
+ version: 7.20.7
+ resolution: "@babel/helper-compilation-targets@npm:7.20.7"
+ dependencies:
+ "@babel/compat-data": ^7.20.5
+ "@babel/helper-validator-option": ^7.18.6
+ browserslist: ^4.21.3
+ lru-cache: ^5.1.1
+ semver: ^6.3.0
+ peerDependencies:
+ "@babel/core": ^7.0.0
+ checksum: 8c32c873ba86e2e1805b30e0807abd07188acbe00ebb97576f0b09061cc65007f1312b589eccb4349c5a8c7f8bb9f2ab199d41da7030bf103d9f347dcd3a3cf4
+ languageName: node
+ linkType: hard
+
+"@babel/helper-environment-visitor@npm:^7.18.9":
+ version: 7.18.9
+ resolution: "@babel/helper-environment-visitor@npm:7.18.9"
+ checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420
+ languageName: node
+ linkType: hard
+
+"@babel/helper-function-name@npm:^7.21.0":
+ version: 7.21.0
+ resolution: "@babel/helper-function-name@npm:7.21.0"
+ dependencies:
+ "@babel/template": ^7.20.7
+ "@babel/types": ^7.21.0
+ checksum: d63e63c3e0e3e8b3138fa47b0cd321148a300ef12b8ee951196994dcd2a492cc708aeda94c2c53759a5c9177fffaac0fd8778791286746f72a000976968daf4e
+ languageName: node
+ linkType: hard
+
+"@babel/helper-hoist-variables@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-hoist-variables@npm:7.18.6"
+ dependencies:
+ "@babel/types": ^7.18.6
+ checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f
+ languageName: node
+ linkType: hard
+
+"@babel/helper-module-imports@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-module-imports@npm:7.18.6"
+ dependencies:
+ "@babel/types": ^7.18.6
+ checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def
+ languageName: node
+ linkType: hard
+
+"@babel/helper-module-transforms@npm:^7.21.0":
+ version: 7.21.2
+ resolution: "@babel/helper-module-transforms@npm:7.21.2"
+ dependencies:
+ "@babel/helper-environment-visitor": ^7.18.9
+ "@babel/helper-module-imports": ^7.18.6
+ "@babel/helper-simple-access": ^7.20.2
+ "@babel/helper-split-export-declaration": ^7.18.6
+ "@babel/helper-validator-identifier": ^7.19.1
+ "@babel/template": ^7.20.7
+ "@babel/traverse": ^7.21.2
+ "@babel/types": ^7.21.2
+ checksum: 8a1c129a4f90bdf97d8b6e7861732c9580f48f877aaaafbc376ce2482febebcb8daaa1de8bc91676d12886487603f8c62a44f9e90ee76d6cac7f9225b26a49e1
+ languageName: node
+ linkType: hard
+
+"@babel/helper-simple-access@npm:^7.20.2":
+ version: 7.20.2
+ resolution: "@babel/helper-simple-access@npm:7.20.2"
+ dependencies:
+ "@babel/types": ^7.20.2
+ checksum: ad1e96ee2e5f654ffee2369a586e5e8d2722bf2d8b028a121b4c33ebae47253f64d420157b9f0a8927aea3a9e0f18c0103e74fdd531815cf3650a0a4adca11a1
+ languageName: node
+ linkType: hard
+
+"@babel/helper-split-export-declaration@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-split-export-declaration@npm:7.18.6"
+ dependencies:
+ "@babel/types": ^7.18.6
+ checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b
+ languageName: node
+ linkType: hard
+
+"@babel/helper-string-parser@npm:^7.19.4":
+ version: 7.19.4
+ resolution: "@babel/helper-string-parser@npm:7.19.4"
+ checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943
+ languageName: node
+ linkType: hard
+
+"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1":
+ version: 7.19.1
+ resolution: "@babel/helper-validator-identifier@npm:7.19.1"
+ checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a
+ languageName: node
+ linkType: hard
+
+"@babel/helper-validator-option@npm:^7.18.6":
+ version: 7.21.0
+ resolution: "@babel/helper-validator-option@npm:7.21.0"
+ checksum: 8ece4c78ffa5461fd8ab6b6e57cc51afad59df08192ed5d84b475af4a7193fc1cb794b59e3e7be64f3cdc4df7ac78bf3dbb20c129d7757ae078e6279ff8c2f07
+ languageName: node
+ linkType: hard
+
+"@babel/helpers@npm:^7.21.0":
+ version: 7.21.0
+ resolution: "@babel/helpers@npm:7.21.0"
+ dependencies:
+ "@babel/template": ^7.20.7
+ "@babel/traverse": ^7.21.0
+ "@babel/types": ^7.21.0
+ checksum: 9370dad2bb665c551869a08ac87c8bdafad53dbcdce1f5c5d498f51811456a3c005d9857562715151a0f00b2e912ac8d89f56574f837b5689f5f5072221cdf54
+ languageName: node
+ linkType: hard
+
+"@babel/highlight@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/highlight@npm:7.18.6"
+ dependencies:
+ "@babel/helper-validator-identifier": ^7.18.6
+ chalk: ^2.0.0
+ js-tokens: ^4.0.0
+ checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789
+ languageName: node
+ linkType: hard
+
+"@babel/parser@npm:^7.16.4, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.0, @babel/parser@npm:^7.21.2":
+ version: 7.21.2
+ resolution: "@babel/parser@npm:7.21.2"
+ bin:
+ parser: ./bin/babel-parser.js
+ checksum: e2b89de2c63d4cdd2cafeaea34f389bba729727eec7a8728f736bc472a59396059e3e9fe322c9bed8fd126d201fb609712949dc8783f4cae4806acd9a73da6ff
+ languageName: node
+ linkType: hard
+
+"@babel/standalone@npm:^7.20.12":
+ version: 7.21.2
+ resolution: "@babel/standalone@npm:7.21.2"
+ checksum: 3e581b4ea09b8581064d4e2289cffbf64a602e4607eb77378e087f2788b0dba8c4694aa019eab278301b4b1daa303a6fa3f7144452e6dd15b2b687400ec7af04
+ languageName: node
+ linkType: hard
+
+"@babel/template@npm:^7.20.7":
+ version: 7.20.7
+ resolution: "@babel/template@npm:7.20.7"
+ dependencies:
+ "@babel/code-frame": ^7.18.6
+ "@babel/parser": ^7.20.7
+ "@babel/types": ^7.20.7
+ checksum: 2eb1a0ab8d415078776bceb3473d07ab746e6bb4c2f6ca46ee70efb284d75c4a32bb0cd6f4f4946dec9711f9c0780e8e5d64b743208deac6f8e9858afadc349e
+ languageName: node
+ linkType: hard
+
+"@babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2":
+ version: 7.21.2
+ resolution: "@babel/traverse@npm:7.21.2"
+ dependencies:
+ "@babel/code-frame": ^7.18.6
+ "@babel/generator": ^7.21.1
+ "@babel/helper-environment-visitor": ^7.18.9
+ "@babel/helper-function-name": ^7.21.0
+ "@babel/helper-hoist-variables": ^7.18.6
+ "@babel/helper-split-export-declaration": ^7.18.6
+ "@babel/parser": ^7.21.2
+ "@babel/types": ^7.21.2
+ debug: ^4.1.0
+ globals: ^11.1.0
+ checksum: d851e3f5cfbdc2fac037a014eae7b0707709de50f7d2fbb82ffbf932d3eeba90a77431529371d6e544f8faaf8c6540eeb18fdd8d1c6fa2b61acea0fb47e18d4b
+ languageName: node
+ linkType: hard
+
+"@babel/types@npm:^7.18.6, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.2, @babel/types@npm:^7.8.3":
+ version: 7.21.2
+ resolution: "@babel/types@npm:7.21.2"
+ dependencies:
+ "@babel/helper-string-parser": ^7.19.4
+ "@babel/helper-validator-identifier": ^7.19.1
+ to-fast-properties: ^2.0.0
+ checksum: a45a52acde139e575502c6de42c994bdbe262bafcb92ae9381fb54cdf1a3672149086843fda655c7683ce9806e998fd002bbe878fa44984498d0fdc7935ce7ff
+ languageName: node
+ linkType: hard
+
+"@esbuild/android-arm64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/android-arm64@npm:0.16.17"
+ conditions: os=android & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/android-arm64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/android-arm64@npm:0.17.11"
+ conditions: os=android & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/android-arm@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/android-arm@npm:0.16.17"
+ conditions: os=android & cpu=arm
+ languageName: node
+ linkType: hard
+
+"@esbuild/android-arm@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/android-arm@npm:0.17.11"
+ conditions: os=android & cpu=arm
+ languageName: node
+ linkType: hard
+
+"@esbuild/android-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/android-x64@npm:0.16.17"
+ conditions: os=android & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/android-x64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/android-x64@npm:0.17.11"
+ conditions: os=android & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/darwin-arm64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/darwin-arm64@npm:0.16.17"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/darwin-arm64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/darwin-arm64@npm:0.17.11"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/darwin-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/darwin-x64@npm:0.16.17"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/darwin-x64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/darwin-x64@npm:0.17.11"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/freebsd-arm64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/freebsd-arm64@npm:0.16.17"
+ conditions: os=freebsd & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/freebsd-arm64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/freebsd-arm64@npm:0.17.11"
+ conditions: os=freebsd & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/freebsd-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/freebsd-x64@npm:0.16.17"
+ conditions: os=freebsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/freebsd-x64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/freebsd-x64@npm:0.17.11"
+ conditions: os=freebsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-arm64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-arm64@npm:0.16.17"
+ conditions: os=linux & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-arm64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/linux-arm64@npm:0.17.11"
+ conditions: os=linux & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-arm@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-arm@npm:0.16.17"
+ conditions: os=linux & cpu=arm
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-arm@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/linux-arm@npm:0.17.11"
+ conditions: os=linux & cpu=arm
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-ia32@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-ia32@npm:0.16.17"
+ conditions: os=linux & cpu=ia32
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-ia32@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/linux-ia32@npm:0.17.11"
+ conditions: os=linux & cpu=ia32
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-loong64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-loong64@npm:0.16.17"
+ conditions: os=linux & cpu=loong64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-loong64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/linux-loong64@npm:0.17.11"
+ conditions: os=linux & cpu=loong64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-mips64el@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-mips64el@npm:0.16.17"
+ conditions: os=linux & cpu=mips64el
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-mips64el@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/linux-mips64el@npm:0.17.11"
+ conditions: os=linux & cpu=mips64el
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-ppc64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-ppc64@npm:0.16.17"
+ conditions: os=linux & cpu=ppc64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-ppc64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/linux-ppc64@npm:0.17.11"
+ conditions: os=linux & cpu=ppc64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-riscv64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-riscv64@npm:0.16.17"
+ conditions: os=linux & cpu=riscv64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-riscv64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/linux-riscv64@npm:0.17.11"
+ conditions: os=linux & cpu=riscv64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-s390x@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-s390x@npm:0.16.17"
+ conditions: os=linux & cpu=s390x
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-s390x@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/linux-s390x@npm:0.17.11"
+ conditions: os=linux & cpu=s390x
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-x64@npm:0.16.17"
+ conditions: os=linux & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/linux-x64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/linux-x64@npm:0.17.11"
+ conditions: os=linux & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/netbsd-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/netbsd-x64@npm:0.16.17"
+ conditions: os=netbsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/netbsd-x64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/netbsd-x64@npm:0.17.11"
+ conditions: os=netbsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/openbsd-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/openbsd-x64@npm:0.16.17"
+ conditions: os=openbsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/openbsd-x64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/openbsd-x64@npm:0.17.11"
+ conditions: os=openbsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/sunos-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/sunos-x64@npm:0.16.17"
+ conditions: os=sunos & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/sunos-x64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/sunos-x64@npm:0.17.11"
+ conditions: os=sunos & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/win32-arm64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/win32-arm64@npm:0.16.17"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/win32-arm64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/win32-arm64@npm:0.17.11"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/win32-ia32@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/win32-ia32@npm:0.16.17"
+ conditions: os=win32 & cpu=ia32
+ languageName: node
+ linkType: hard
+
+"@esbuild/win32-ia32@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/win32-ia32@npm:0.17.11"
+ conditions: os=win32 & cpu=ia32
+ languageName: node
+ linkType: hard
+
+"@esbuild/win32-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/win32-x64@npm:0.16.17"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@esbuild/win32-x64@npm:0.17.11":
+ version: 0.17.11
+ resolution: "@esbuild/win32-x64@npm:0.17.11"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@gar/promisify@npm:^1.1.3":
+ version: 1.1.3
+ resolution: "@gar/promisify@npm:1.1.3"
+ checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1
+ languageName: node
+ linkType: hard
+
+"@guanghechen/fast-deep-equal@npm:^2.2.4":
+ version: 2.2.5
+ resolution: "@guanghechen/fast-deep-equal@npm:2.2.5"
+ checksum: 7af50a04fc82f73556111e6678f80950e6758e2180ee46660d8396ac3af091b3062c4ffe9a8e97b5d574770608e5d4ef654462c598a80b1db0049540974eda74
+ languageName: node
+ linkType: hard
+
+"@jridgewell/gen-mapping@npm:^0.1.0":
+ version: 0.1.1
+ resolution: "@jridgewell/gen-mapping@npm:0.1.1"
+ dependencies:
+ "@jridgewell/set-array": ^1.0.0
+ "@jridgewell/sourcemap-codec": ^1.4.10
+ checksum: 3bcc21fe786de6ffbf35c399a174faab05eb23ce6a03e8769569de28abbf4facc2db36a9ddb0150545ae23a8d35a7cf7237b2aa9e9356a7c626fb4698287d5cc
+ languageName: node
+ linkType: hard
+
+"@jridgewell/gen-mapping@npm:^0.3.2":
+ version: 0.3.2
+ resolution: "@jridgewell/gen-mapping@npm:0.3.2"
+ dependencies:
+ "@jridgewell/set-array": ^1.0.1
+ "@jridgewell/sourcemap-codec": ^1.4.10
+ "@jridgewell/trace-mapping": ^0.3.9
+ checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882
+ languageName: node
+ linkType: hard
+
+"@jridgewell/resolve-uri@npm:3.1.0":
+ version: 3.1.0
+ resolution: "@jridgewell/resolve-uri@npm:3.1.0"
+ checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267
+ languageName: node
+ linkType: hard
+
+"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1":
+ version: 1.1.2
+ resolution: "@jridgewell/set-array@npm:1.1.2"
+ checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e
+ languageName: node
+ linkType: hard
+
+"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13":
+ version: 1.4.14
+ resolution: "@jridgewell/sourcemap-codec@npm:1.4.14"
+ checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97
+ languageName: node
+ linkType: hard
+
+"@jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9":
+ version: 0.3.17
+ resolution: "@jridgewell/trace-mapping@npm:0.3.17"
+ dependencies:
+ "@jridgewell/resolve-uri": 3.1.0
+ "@jridgewell/sourcemap-codec": 1.4.14
+ checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339
+ languageName: node
+ linkType: hard
+
+"@nodelib/fs.scandir@npm:2.1.5":
+ version: 2.1.5
+ resolution: "@nodelib/fs.scandir@npm:2.1.5"
+ dependencies:
+ "@nodelib/fs.stat": 2.0.5
+ run-parallel: ^1.1.9
+ checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59
+ languageName: node
+ linkType: hard
+
+"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2":
+ version: 2.0.5
+ resolution: "@nodelib/fs.stat@npm:2.0.5"
+ checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0
+ languageName: node
+ linkType: hard
+
+"@nodelib/fs.walk@npm:^1.2.3":
+ version: 1.2.8
+ resolution: "@nodelib/fs.walk@npm:1.2.8"
+ dependencies:
+ "@nodelib/fs.scandir": 2.1.5
+ fastq: ^1.6.0
+ checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53
+ languageName: node
+ linkType: hard
+
+"@npmcli/fs@npm:^2.1.0":
+ version: 2.1.2
+ resolution: "@npmcli/fs@npm:2.1.2"
+ dependencies:
+ "@gar/promisify": ^1.1.3
+ semver: ^7.3.5
+ checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225
+ languageName: node
+ linkType: hard
+
+"@npmcli/move-file@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "@npmcli/move-file@npm:2.0.1"
+ dependencies:
+ mkdirp: ^1.0.4
+ rimraf: ^3.0.2
+ checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380
+ languageName: node
+ linkType: hard
+
+"@rollup/plugin-alias@npm:^4.0.3":
+ version: 4.0.3
+ resolution: "@rollup/plugin-alias@npm:4.0.3"
+ dependencies:
+ slash: ^4.0.0
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ checksum: 3efabf35bfe2a40722609397328513dcb72ed4e2d1e35082cd1c60b231af9041214285b3e74d8702e0f00e214ee5ef3022fbc442a1beb8d1b641e85cf2b10cbf
+ languageName: node
+ linkType: hard
+
+"@rollup/plugin-commonjs@npm:^24.0.1":
+ version: 24.0.1
+ resolution: "@rollup/plugin-commonjs@npm:24.0.1"
+ dependencies:
+ "@rollup/pluginutils": ^5.0.1
+ commondir: ^1.0.1
+ estree-walker: ^2.0.2
+ glob: ^8.0.3
+ is-reference: 1.2.1
+ magic-string: ^0.27.0
+ peerDependencies:
+ rollup: ^2.68.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ checksum: ff5b09f5c350640fe6836fcc97bf5c5612bf78b26eaaad01bf1aee955f0b136135d1a8950a02f680779aec1f16f2c6b6cf89d6080e84ed09be62737abb6b3a5f
+ languageName: node
+ linkType: hard
+
+"@rollup/plugin-json@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "@rollup/plugin-json@npm:6.0.0"
+ dependencies:
+ "@rollup/pluginutils": ^5.0.1
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ checksum: 77cfc941edaf77a5307977704ffaba706d83bea66f265b2b68f14be2a0af6d08b0fb1b04fdd773146c84cc70938ff64b00ae946808fd6ac057058af824d78128
+ languageName: node
+ linkType: hard
+
+"@rollup/plugin-node-resolve@npm:^15.0.1":
+ version: 15.0.1
+ resolution: "@rollup/plugin-node-resolve@npm:15.0.1"
+ dependencies:
+ "@rollup/pluginutils": ^5.0.1
+ "@types/resolve": 1.20.2
+ deepmerge: ^4.2.2
+ is-builtin-module: ^3.2.0
+ is-module: ^1.0.0
+ resolve: ^1.22.1
+ peerDependencies:
+ rollup: ^2.78.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ checksum: 90e30b41626a15ebf02746a83d34b15f9fe9051ddc156a9bf785504f489947980b3bdeb7bf2f80828a9becfe472a03a96d0238328a3e3e2198a482fcac7eb3aa
+ languageName: node
+ linkType: hard
+
+"@rollup/plugin-replace@npm:^5.0.2":
+ version: 5.0.2
+ resolution: "@rollup/plugin-replace@npm:5.0.2"
+ dependencies:
+ "@rollup/pluginutils": ^5.0.1
+ magic-string: ^0.27.0
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ checksum: 3a91b5fa2ce5acfe67c1faf8d479585da30f398f29499cf8a2d2153c899af0b2ef0363012db0e6edc2ebbb3d9fad6dd7ad591c9d977c1ae2ca3256b52e86d950
+ languageName: node
+ linkType: hard
+
+"@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.0.2":
+ version: 5.0.2
+ resolution: "@rollup/pluginutils@npm:5.0.2"
+ dependencies:
+ "@types/estree": ^1.0.0
+ estree-walker: ^2.0.2
+ picomatch: ^2.3.1
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ checksum: edea15e543bebc7dcac3b0ac8bc7b8e8e6dbd46e2864dbe5dd28072de1fbd5b0e10d545a610c0edaa178e8a7ac432e2a2a52e547ece1308471412caba47db8ce
+ languageName: node
+ linkType: hard
+
+"@storipress/vue-advertising@workspace:.":
+ version: 0.0.0-use.local
+ resolution: "@storipress/vue-advertising@workspace:."
+ dependencies:
+ "@guanghechen/fast-deep-equal": ^2.2.4
+ "@unhead/vue": ^1.1.22
+ "@vueuse/core": ^9.13.0
+ happy-dom: ^8.9.0
+ sass: ^1.59.2
+ typescript: ^4.9.5
+ unbuild: ^1.1.2
+ vite: ^4.1.4
+ vitest: ^0.29.2
+ vue: ^3.2.47
+ vue3-lazy-hydration: ^1.2.1
+ peerDependencies:
+ vue: ^3.0.0
+ languageName: unknown
+ linkType: soft
+
+"@tootallnate/once@npm:2":
+ version: 2.0.0
+ resolution: "@tootallnate/once@npm:2.0.0"
+ checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8
+ languageName: node
+ linkType: hard
+
+"@types/chai-subset@npm:^1.3.3":
+ version: 1.3.3
+ resolution: "@types/chai-subset@npm:1.3.3"
+ dependencies:
+ "@types/chai": "*"
+ checksum: 4481da7345022995f5a105e6683744f7203d2c3d19cfe88d8e17274d045722948abf55e0adfd97709e0f043dade37a4d4e98cd4c660e2e8a14f23e6ecf79418f
+ languageName: node
+ linkType: hard
+
+"@types/chai@npm:*, @types/chai@npm:^4.3.4":
+ version: 4.3.4
+ resolution: "@types/chai@npm:4.3.4"
+ checksum: 571184967beb03bf64c4392a13a7d44e72da9af5a1e83077ff81c39cf59c0fda2a5c78d2005084601cf8f3d11726608574d8b5b4a0e3e9736792807afd926cd0
+ languageName: node
+ linkType: hard
+
+"@types/estree@npm:*, @types/estree@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "@types/estree@npm:1.0.0"
+ checksum: 910d97fb7092c6738d30a7430ae4786a38542023c6302b95d46f49420b797f21619cdde11fa92b338366268795884111c2eb10356e4bd2c8ad5b92941e9e6443
+ languageName: node
+ linkType: hard
+
+"@types/node@npm:*":
+ version: 18.15.1
+ resolution: "@types/node@npm:18.15.1"
+ checksum: c63a40786919ef77c1dd26f60ffb1ed76c8b608fb156942e4d600d4536e06c19d09463a66cd76e6415f90cd281d7a1a4683e7cfd9a6f0927491853c56ffa17bf
+ languageName: node
+ linkType: hard
+
+"@types/resolve@npm:1.20.2":
+ version: 1.20.2
+ resolution: "@types/resolve@npm:1.20.2"
+ checksum: 61c2cad2499ffc8eab36e3b773945d337d848d3ac6b7b0a87c805ba814bc838ef2f262fc0f109bfd8d2e0898ff8bd80ad1025f9ff64f1f71d3d4294c9f14e5f6
+ languageName: node
+ linkType: hard
+
+"@types/web-bluetooth@npm:^0.0.16":
+ version: 0.0.16
+ resolution: "@types/web-bluetooth@npm:0.0.16"
+ checksum: f68a630d062202a25c46d48686ebae1cf429dc70b4578fcf13b8357b2db63e4aedfb6f6d752bd388366be46ebd19c1c9de45f8a15c2631bb79e904fdfc454f94
+ languageName: node
+ linkType: hard
+
+"@unhead/dom@npm:1.1.22":
+ version: 1.1.22
+ resolution: "@unhead/dom@npm:1.1.22"
+ dependencies:
+ "@unhead/schema": 1.1.22
+ "@unhead/shared": 1.1.22
+ checksum: fcf83a549948eaa8372c92126b7bf711740d11b096db3a57dc6931aa0a71f39074df6c5e90e2a3b0277c7c06334be178a3cfadf8e6002d4d1e7a032ffa8221c1
+ languageName: node
+ linkType: hard
+
+"@unhead/schema@npm:1.1.22":
+ version: 1.1.22
+ resolution: "@unhead/schema@npm:1.1.22"
+ dependencies:
+ hookable: ^5.4.2
+ zhead: ^2.0.4
+ checksum: 8b8225acf20d827864d52bd8e5197080ce362e4411934e002301e699a2d99598552e9bc5c2e3f773d4bfca2ae76b14b34e4c4e482e131cdaf028ad1b95f5771d
+ languageName: node
+ linkType: hard
+
+"@unhead/shared@npm:1.1.22":
+ version: 1.1.22
+ resolution: "@unhead/shared@npm:1.1.22"
+ dependencies:
+ "@unhead/schema": 1.1.22
+ checksum: 8b01d85ebf5f1e8f189daafc86ece8a014222c7ffbfdb4071a5d8e0a43b76a8770714c74a38876f755cb5c2ef5de0491e1469e7195f448832a0158cd86134b34
+ languageName: node
+ linkType: hard
+
+"@unhead/vue@npm:^1.1.22":
+ version: 1.1.22
+ resolution: "@unhead/vue@npm:1.1.22"
+ dependencies:
+ "@unhead/schema": 1.1.22
+ "@unhead/shared": 1.1.22
+ hookable: ^5.4.2
+ unhead: 1.1.22
+ peerDependencies:
+ vue: ">=2.7 || >=3"
+ checksum: 28596d70c5ece13f2d368f748be7efffc114a308c1d17580d16fe222c9d16c152ae3810c26e2ddb6b2792da7b193f2d38f1a49baae4f58def4bd4cdc3d3f980c
+ languageName: node
+ linkType: hard
+
+"@vitest/expect@npm:0.29.2":
+ version: 0.29.2
+ resolution: "@vitest/expect@npm:0.29.2"
+ dependencies:
+ "@vitest/spy": 0.29.2
+ "@vitest/utils": 0.29.2
+ chai: ^4.3.7
+ checksum: 90754976b1e7e200dad9296646d69f828b23bcc8e104d06ba34a7d25dd0bf45cc67ec9b4644afa0ecb9756ff296e4f69ca0ddf1da9f3592e24a3720b281e3a04
+ languageName: node
+ linkType: hard
+
+"@vitest/runner@npm:0.29.2":
+ version: 0.29.2
+ resolution: "@vitest/runner@npm:0.29.2"
+ dependencies:
+ "@vitest/utils": 0.29.2
+ p-limit: ^4.0.0
+ pathe: ^1.1.0
+ checksum: 254ccfbcb11695805fbc63173030a86e70a8e8b5d3adfdae3ec7918eebb82e4d77dd0146807c0d7f77237ffda6f5d9a451f4b5fd2e3d91f3c817794694a1bbcc
+ languageName: node
+ linkType: hard
+
+"@vitest/spy@npm:0.29.2":
+ version: 0.29.2
+ resolution: "@vitest/spy@npm:0.29.2"
+ dependencies:
+ tinyspy: ^1.0.2
+ checksum: e8225a833c168c760a7e9a36c982b4c79861c4fc9748048a718e1550894cddf9e42bad5ec4ff97aa1f36e204caeb05e2e95b4d8363327e33c35ca373f9b063a3
+ languageName: node
+ linkType: hard
+
+"@vitest/utils@npm:0.29.2":
+ version: 0.29.2
+ resolution: "@vitest/utils@npm:0.29.2"
+ dependencies:
+ cli-truncate: ^3.1.0
+ diff: ^5.1.0
+ loupe: ^2.3.6
+ picocolors: ^1.0.0
+ pretty-format: ^27.5.1
+ checksum: fcb3c47ec5a55e55f9f49d6ccbc35e622981fdc9a0edd21a8865217eab596b3a610a6befe5c785662ecb3b52debae19d9090ebe2d7dc13833160d68c067347d5
+ languageName: node
+ linkType: hard
+
+"@vue/compiler-core@npm:3.2.47":
+ version: 3.2.47
+ resolution: "@vue/compiler-core@npm:3.2.47"
+ dependencies:
+ "@babel/parser": ^7.16.4
+ "@vue/shared": 3.2.47
+ estree-walker: ^2.0.2
+ source-map: ^0.6.1
+ checksum: 9ccc2a0b897b59eea56ca4f92ed29c14cd1184f68532edf5fb0fe5cb2833bcf9e4836029effb6eb9a7c872e9e0350fafdcd96ff00c0b5b79e17ded0c068b5f84
+ languageName: node
+ linkType: hard
+
+"@vue/compiler-dom@npm:3.2.47":
+ version: 3.2.47
+ resolution: "@vue/compiler-dom@npm:3.2.47"
+ dependencies:
+ "@vue/compiler-core": 3.2.47
+ "@vue/shared": 3.2.47
+ checksum: 1eced735f865e6df0c2d7fa041f9f27996ff4c0d4baf5fad0f67e65e623215f4394c49bba337b78427c6e71f2cc2db12b19ec6b865b4c057c0a15ccedeb20752
+ languageName: node
+ linkType: hard
+
+"@vue/compiler-sfc@npm:3.2.47":
+ version: 3.2.47
+ resolution: "@vue/compiler-sfc@npm:3.2.47"
+ dependencies:
+ "@babel/parser": ^7.16.4
+ "@vue/compiler-core": 3.2.47
+ "@vue/compiler-dom": 3.2.47
+ "@vue/compiler-ssr": 3.2.47
+ "@vue/reactivity-transform": 3.2.47
+ "@vue/shared": 3.2.47
+ estree-walker: ^2.0.2
+ magic-string: ^0.25.7
+ postcss: ^8.1.10
+ source-map: ^0.6.1
+ checksum: 4588a513310b9319a00adfdbe789cfe60d5ec19c51e8f2098152b9e81f54be170e16c40463f6b5e4c7ab79796fc31e2de93587a9dd1af136023fa03712b62e68
+ languageName: node
+ linkType: hard
+
+"@vue/compiler-ssr@npm:3.2.47":
+ version: 3.2.47
+ resolution: "@vue/compiler-ssr@npm:3.2.47"
+ dependencies:
+ "@vue/compiler-dom": 3.2.47
+ "@vue/shared": 3.2.47
+ checksum: 91bc6e46744d5405713c08d8e576971aa6d13a0cde84ec592d3221bf6ee228e49ce12233af8c18dc39723455b420df2951f3616ceb99758eb432485475fa7bc2
+ languageName: node
+ linkType: hard
+
+"@vue/reactivity-transform@npm:3.2.47":
+ version: 3.2.47
+ resolution: "@vue/reactivity-transform@npm:3.2.47"
+ dependencies:
+ "@babel/parser": ^7.16.4
+ "@vue/compiler-core": 3.2.47
+ "@vue/shared": 3.2.47
+ estree-walker: ^2.0.2
+ magic-string: ^0.25.7
+ checksum: 6fe54374aa8c080c0c421e18134e84e723e2d3e53178cf084c1cd75bc8b1ffaaf07756801f3aa4e1e7ad1ba76356c28bbab4bc1b676159db8fc10f10f2cbd405
+ languageName: node
+ linkType: hard
+
+"@vue/reactivity@npm:3.2.47":
+ version: 3.2.47
+ resolution: "@vue/reactivity@npm:3.2.47"
+ dependencies:
+ "@vue/shared": 3.2.47
+ checksum: bd61134e4b2f281067e78b23b34d17f1290a0b3fdb0cd7f06424570b4428c899389451a396694144b0af2fc6dbb1459c38e79151119f12c4f818f4c5004b7d16
+ languageName: node
+ linkType: hard
+
+"@vue/runtime-core@npm:3.2.47":
+ version: 3.2.47
+ resolution: "@vue/runtime-core@npm:3.2.47"
+ dependencies:
+ "@vue/reactivity": 3.2.47
+ "@vue/shared": 3.2.47
+ checksum: 56fd41368cb56ac83d88ef93ffb9e8d2cdad30adf8395351c38ac744691dfe50c0add0bd14e8aa817cd59afd2534213eb2aaabf46b03aacce9a4af7497af2e69
+ languageName: node
+ linkType: hard
+
+"@vue/runtime-dom@npm:3.2.47":
+ version: 3.2.47
+ resolution: "@vue/runtime-dom@npm:3.2.47"
+ dependencies:
+ "@vue/runtime-core": 3.2.47
+ "@vue/shared": 3.2.47
+ csstype: ^2.6.8
+ checksum: 8987d7276174120ed346c456752cdb3633c400432ae89a1a866e342c964b7ed2f9e3e09926f2b4b81fe175b1e4fb3935fe3920c113bcc71464ff39b4e50931f5
+ languageName: node
+ linkType: hard
+
+"@vue/server-renderer@npm:3.2.47":
+ version: 3.2.47
+ resolution: "@vue/server-renderer@npm:3.2.47"
+ dependencies:
+ "@vue/compiler-ssr": 3.2.47
+ "@vue/shared": 3.2.47
+ peerDependencies:
+ vue: 3.2.47
+ checksum: 482fe3c9bbb0e154864259a976bac50f5a6cbbb86bc4376c5942a6108919466e57d9830c65060abff6ecb6a9ff1d5e3e4fede165f4312edf25b0088b8c0e26af
+ languageName: node
+ linkType: hard
+
+"@vue/shared@npm:3.2.47":
+ version: 3.2.47
+ resolution: "@vue/shared@npm:3.2.47"
+ checksum: 0aa711dc9160fa0e476e6e94eea4e019398adf2211352d0e4a672cfb6b65b104bbd5d234807d1c091107bdc0f5d818d0f12378987eb7861d39be3aa9f6cd6e3e
+ languageName: node
+ linkType: hard
+
+"@vueuse/core@npm:^9.13.0":
+ version: 9.13.0
+ resolution: "@vueuse/core@npm:9.13.0"
+ dependencies:
+ "@types/web-bluetooth": ^0.0.16
+ "@vueuse/metadata": 9.13.0
+ "@vueuse/shared": 9.13.0
+ vue-demi: "*"
+ checksum: 2b19d8ec4305f6c65650813c0fa9c15af6b322fc253ad656eb1c4bc8d7617a2ddd46a46d7ea359c4cdc5a5724aa5fc152fa7a3816ed6ebeaec4f7e58defb7153
+ languageName: node
+ linkType: hard
+
+"@vueuse/metadata@npm:9.13.0":
+ version: 9.13.0
+ resolution: "@vueuse/metadata@npm:9.13.0"
+ checksum: 91e137bf2fb1406587b523edae26b58b315d3a59797c9f2ed5dde9cb707026aa740b86da5955ea7f9662a93ce92249d0b3af763c65449b4a843bbd0725eb67f6
+ languageName: node
+ linkType: hard
+
+"@vueuse/shared@npm:9.13.0":
+ version: 9.13.0
+ resolution: "@vueuse/shared@npm:9.13.0"
+ dependencies:
+ vue-demi: "*"
+ checksum: e53e7312bdd2030b7970afcf4d3dc3f9a47f7721a92ccb51c364d23246233cb54758f7ddacbdb9ac63d1e86ec82e97d06cb53b05a4b8d43be877d16ab61dd9bb
+ languageName: node
+ linkType: hard
+
+"abbrev@npm:^1.0.0":
+ version: 1.1.1
+ resolution: "abbrev@npm:1.1.1"
+ checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17
+ languageName: node
+ linkType: hard
+
+"acorn-walk@npm:^8.2.0":
+ version: 8.2.0
+ resolution: "acorn-walk@npm:8.2.0"
+ checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1
+ languageName: node
+ linkType: hard
+
+"acorn@npm:^8.8.1, acorn@npm:^8.8.2":
+ version: 8.8.2
+ resolution: "acorn@npm:8.8.2"
+ bin:
+ acorn: bin/acorn
+ checksum: f790b99a1bf63ef160c967e23c46feea7787e531292bb827126334612c234ed489a0dc2c7ba33156416f0ffa8d25bf2b0fdb7f35c2ba60eb3e960572bece4001
+ languageName: node
+ linkType: hard
+
+"agent-base@npm:6, agent-base@npm:^6.0.2":
+ version: 6.0.2
+ resolution: "agent-base@npm:6.0.2"
+ dependencies:
+ debug: 4
+ checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d
+ languageName: node
+ linkType: hard
+
+"agentkeepalive@npm:^4.2.1":
+ version: 4.3.0
+ resolution: "agentkeepalive@npm:4.3.0"
+ dependencies:
+ debug: ^4.1.0
+ depd: ^2.0.0
+ humanize-ms: ^1.2.1
+ checksum: 982453aa44c11a06826c836025e5162c846e1200adb56f2d075400da7d32d87021b3b0a58768d949d824811f5654223d5a8a3dad120921a2439625eb847c6260
+ languageName: node
+ linkType: hard
+
+"aggregate-error@npm:^3.0.0":
+ version: 3.1.0
+ resolution: "aggregate-error@npm:3.1.0"
+ dependencies:
+ clean-stack: ^2.0.0
+ indent-string: ^4.0.0
+ checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79
+ languageName: node
+ linkType: hard
+
+"ansi-regex@npm:^5.0.1":
+ version: 5.0.1
+ resolution: "ansi-regex@npm:5.0.1"
+ checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b
+ languageName: node
+ linkType: hard
+
+"ansi-regex@npm:^6.0.1":
+ version: 6.0.1
+ resolution: "ansi-regex@npm:6.0.1"
+ checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169
+ languageName: node
+ linkType: hard
+
+"ansi-styles@npm:^3.2.1":
+ version: 3.2.1
+ resolution: "ansi-styles@npm:3.2.1"
+ dependencies:
+ color-convert: ^1.9.0
+ checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665
+ languageName: node
+ linkType: hard
+
+"ansi-styles@npm:^5.0.0":
+ version: 5.2.0
+ resolution: "ansi-styles@npm:5.2.0"
+ checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469
+ languageName: node
+ linkType: hard
+
+"ansi-styles@npm:^6.0.0":
+ version: 6.2.1
+ resolution: "ansi-styles@npm:6.2.1"
+ checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9
+ languageName: node
+ linkType: hard
+
+"anymatch@npm:~3.1.2":
+ version: 3.1.3
+ resolution: "anymatch@npm:3.1.3"
+ dependencies:
+ normalize-path: ^3.0.0
+ picomatch: ^2.0.4
+ checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2
+ languageName: node
+ linkType: hard
+
+"aproba@npm:^1.0.3 || ^2.0.0":
+ version: 2.0.0
+ resolution: "aproba@npm:2.0.0"
+ checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24
+ languageName: node
+ linkType: hard
+
+"are-we-there-yet@npm:^3.0.0":
+ version: 3.0.1
+ resolution: "are-we-there-yet@npm:3.0.1"
+ dependencies:
+ delegates: ^1.0.0
+ readable-stream: ^3.6.0
+ checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83
+ languageName: node
+ linkType: hard
+
+"assertion-error@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "assertion-error@npm:1.1.0"
+ checksum: fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf
+ languageName: node
+ linkType: hard
+
+"balanced-match@npm:^1.0.0":
+ version: 1.0.2
+ resolution: "balanced-match@npm:1.0.2"
+ checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65
+ languageName: node
+ linkType: hard
+
+"binary-extensions@npm:^2.0.0":
+ version: 2.2.0
+ resolution: "binary-extensions@npm:2.2.0"
+ checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8
+ languageName: node
+ linkType: hard
+
+"brace-expansion@npm:^1.1.7":
+ version: 1.1.11
+ resolution: "brace-expansion@npm:1.1.11"
+ dependencies:
+ balanced-match: ^1.0.0
+ concat-map: 0.0.1
+ checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07
+ languageName: node
+ linkType: hard
+
+"brace-expansion@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "brace-expansion@npm:2.0.1"
+ dependencies:
+ balanced-match: ^1.0.0
+ checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1
+ languageName: node
+ linkType: hard
+
+"braces@npm:^3.0.2, braces@npm:~3.0.2":
+ version: 3.0.2
+ resolution: "braces@npm:3.0.2"
+ dependencies:
+ fill-range: ^7.0.1
+ checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459
+ languageName: node
+ linkType: hard
+
+"browserslist@npm:^4.21.3":
+ version: 4.21.5
+ resolution: "browserslist@npm:4.21.5"
+ dependencies:
+ caniuse-lite: ^1.0.30001449
+ electron-to-chromium: ^1.4.284
+ node-releases: ^2.0.8
+ update-browserslist-db: ^1.0.10
+ bin:
+ browserslist: cli.js
+ checksum: 9755986b22e73a6a1497fd8797aedd88e04270be33ce66ed5d85a1c8a798292a65e222b0f251bafa1c2522261e237d73b08b58689d4920a607e5a53d56dc4706
+ languageName: node
+ linkType: hard
+
+"builtin-modules@npm:^3.3.0":
+ version: 3.3.0
+ resolution: "builtin-modules@npm:3.3.0"
+ checksum: db021755d7ed8be048f25668fe2117620861ef6703ea2c65ed2779c9e3636d5c3b82325bd912244293959ff3ae303afa3471f6a15bf5060c103e4cc3a839749d
+ languageName: node
+ linkType: hard
+
+"cac@npm:^6.7.14":
+ version: 6.7.14
+ resolution: "cac@npm:6.7.14"
+ checksum: 45a2496a9443abbe7f52a49b22fbe51b1905eff46e03fd5e6c98e3f85077be3f8949685a1849b1a9cd2bc3e5567dfebcf64f01ce01847baf918f1b37c839791a
+ languageName: node
+ linkType: hard
+
+"cacache@npm:^16.1.0":
+ version: 16.1.3
+ resolution: "cacache@npm:16.1.3"
+ dependencies:
+ "@npmcli/fs": ^2.1.0
+ "@npmcli/move-file": ^2.0.0
+ chownr: ^2.0.0
+ fs-minipass: ^2.1.0
+ glob: ^8.0.1
+ infer-owner: ^1.0.4
+ lru-cache: ^7.7.1
+ minipass: ^3.1.6
+ minipass-collect: ^1.0.2
+ minipass-flush: ^1.0.5
+ minipass-pipeline: ^1.2.4
+ mkdirp: ^1.0.4
+ p-map: ^4.0.0
+ promise-inflight: ^1.0.1
+ rimraf: ^3.0.2
+ ssri: ^9.0.0
+ tar: ^6.1.11
+ unique-filename: ^2.0.0
+ checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6
+ languageName: node
+ linkType: hard
+
+"caniuse-lite@npm:^1.0.30001449":
+ version: 1.0.30001464
+ resolution: "caniuse-lite@npm:1.0.30001464"
+ checksum: 67cdee102c1660d62d7b9dbd4740bb7af096236618f2509fd2e0039d50db5f02fb87c21d90b6d573fdcf50deaf3c84503d009e871502b5c221d0ba1dec18ba11
+ languageName: node
+ linkType: hard
+
+"chai@npm:^4.3.7":
+ version: 4.3.7
+ resolution: "chai@npm:4.3.7"
+ dependencies:
+ assertion-error: ^1.1.0
+ check-error: ^1.0.2
+ deep-eql: ^4.1.2
+ get-func-name: ^2.0.0
+ loupe: ^2.3.1
+ pathval: ^1.1.1
+ type-detect: ^4.0.5
+ checksum: 0bba7d267848015246a66995f044ce3f0ebc35e530da3cbdf171db744e14cbe301ab913a8d07caf7952b430257ccbb1a4a983c570a7c5748dc537897e5131f7c
+ languageName: node
+ linkType: hard
+
+"chalk@npm:^2.0.0":
+ version: 2.4.2
+ resolution: "chalk@npm:2.4.2"
+ dependencies:
+ ansi-styles: ^3.2.1
+ escape-string-regexp: ^1.0.5
+ supports-color: ^5.3.0
+ checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2
+ languageName: node
+ linkType: hard
+
+"chalk@npm:^5.2.0":
+ version: 5.2.0
+ resolution: "chalk@npm:5.2.0"
+ checksum: 03d8060277de6cf2fd567dc25fcf770593eb5bb85f460ce443e49255a30ff1242edd0c90a06a03803b0466ff0687a939b41db1757bec987113e83de89a003caa
+ languageName: node
+ linkType: hard
+
+"check-error@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "check-error@npm:1.0.2"
+ checksum: d9d106504404b8addd1ee3f63f8c0eaa7cd962a1a28eb9c519b1c4a1dc7098be38007fc0060f045ee00f075fbb7a2a4f42abcf61d68323677e11ab98dc16042e
+ languageName: node
+ linkType: hard
+
+"chokidar@npm:>=3.0.0 <4.0.0":
+ version: 3.5.3
+ resolution: "chokidar@npm:3.5.3"
+ dependencies:
+ anymatch: ~3.1.2
+ braces: ~3.0.2
+ fsevents: ~2.3.2
+ glob-parent: ~5.1.2
+ is-binary-path: ~2.1.0
+ is-glob: ~4.0.1
+ normalize-path: ~3.0.0
+ readdirp: ~3.6.0
+ dependenciesMeta:
+ fsevents:
+ optional: true
+ checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c
+ languageName: node
+ linkType: hard
+
+"chownr@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "chownr@npm:2.0.0"
+ checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f
+ languageName: node
+ linkType: hard
+
+"clean-stack@npm:^2.0.0":
+ version: 2.2.0
+ resolution: "clean-stack@npm:2.2.0"
+ checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68
+ languageName: node
+ linkType: hard
+
+"cli-truncate@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "cli-truncate@npm:3.1.0"
+ dependencies:
+ slice-ansi: ^5.0.0
+ string-width: ^5.0.0
+ checksum: c3243e41974445691c63f8b405df1d5a24049dc33d324fe448dc572e561a7b772ae982692900b1a5960901cc4fc7def25a629b9c69a4208ee89d12ab3332617a
+ languageName: node
+ linkType: hard
+
+"color-convert@npm:^1.9.0":
+ version: 1.9.3
+ resolution: "color-convert@npm:1.9.3"
+ dependencies:
+ color-name: 1.1.3
+ checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203
+ languageName: node
+ linkType: hard
+
+"color-name@npm:1.1.3":
+ version: 1.1.3
+ resolution: "color-name@npm:1.1.3"
+ checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d
+ languageName: node
+ linkType: hard
+
+"color-support@npm:^1.1.3":
+ version: 1.1.3
+ resolution: "color-support@npm:1.1.3"
+ bin:
+ color-support: bin.js
+ checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b
+ languageName: node
+ linkType: hard
+
+"commondir@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "commondir@npm:1.0.1"
+ checksum: 59715f2fc456a73f68826285718503340b9f0dd89bfffc42749906c5cf3d4277ef11ef1cca0350d0e79204f00f1f6d83851ececc9095dc88512a697ac0b9bdcb
+ languageName: node
+ linkType: hard
+
+"concat-map@npm:0.0.1":
+ version: 0.0.1
+ resolution: "concat-map@npm:0.0.1"
+ checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af
+ languageName: node
+ linkType: hard
+
+"consola@npm:^2.15.3":
+ version: 2.15.3
+ resolution: "consola@npm:2.15.3"
+ checksum: 8ef7a09b703ec67ac5c389a372a33b6dc97eda6c9876443a60d76a3076eea0259e7f67a4e54fd5a52f97df73690822d090cf8b7e102b5761348afef7c6d03e28
+ languageName: node
+ linkType: hard
+
+"console-control-strings@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "console-control-strings@npm:1.1.0"
+ checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed
+ languageName: node
+ linkType: hard
+
+"convert-source-map@npm:^1.7.0":
+ version: 1.9.0
+ resolution: "convert-source-map@npm:1.9.0"
+ checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8
+ languageName: node
+ linkType: hard
+
+"css.escape@npm:^1.5.1":
+ version: 1.5.1
+ resolution: "css.escape@npm:1.5.1"
+ checksum: f6d38088d870a961794a2580b2b2af1027731bb43261cfdce14f19238a88664b351cc8978abc20f06cc6bbde725699dec8deb6fe9816b139fc3f2af28719e774
+ languageName: node
+ linkType: hard
+
+"csstype@npm:^2.6.8":
+ version: 2.6.21
+ resolution: "csstype@npm:2.6.21"
+ checksum: 2ce8bc832375146eccdf6115a1f8565a27015b74cce197c35103b4494955e9516b246140425ad24103864076aa3e1257ac9bab25a06c8d931dd87a6428c9dccf
+ languageName: node
+ linkType: hard
+
+"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.3, debug@npm:^4.3.4":
+ version: 4.3.4
+ resolution: "debug@npm:4.3.4"
+ dependencies:
+ ms: 2.1.2
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708
+ languageName: node
+ linkType: hard
+
+"deep-eql@npm:^4.1.2":
+ version: 4.1.3
+ resolution: "deep-eql@npm:4.1.3"
+ dependencies:
+ type-detect: ^4.0.0
+ checksum: 7f6d30cb41c713973dc07eaadded848b2ab0b835e518a88b91bea72f34e08c4c71d167a722a6f302d3a6108f05afd8e6d7650689a84d5d29ec7fe6220420397f
+ languageName: node
+ linkType: hard
+
+"deepmerge@npm:^4.2.2":
+ version: 4.3.0
+ resolution: "deepmerge@npm:4.3.0"
+ checksum: c7980eb5c5be040b371f1df0d566473875cfabed9f672ccc177b81ba8eee5686ce2478de2f1d0076391621cbe729e5eacda397179a59ef0f68901849647db126
+ languageName: node
+ linkType: hard
+
+"defu@npm:^6.1.2":
+ version: 6.1.2
+ resolution: "defu@npm:6.1.2"
+ checksum: 2ec0ff8414d5a1ab2b8c7e9a79bbad6d97d23ea7ebf5dcf80c3c7ffd9715c30f84a3cc47b917379ea756b3db0dc4701ce6400e493a1ae1688dffcd0f884233b2
+ languageName: node
+ linkType: hard
+
+"delegates@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "delegates@npm:1.0.0"
+ checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd
+ languageName: node
+ linkType: hard
+
+"depd@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "depd@npm:2.0.0"
+ checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a
+ languageName: node
+ linkType: hard
+
+"diff@npm:^5.1.0":
+ version: 5.1.0
+ resolution: "diff@npm:5.1.0"
+ checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90
+ languageName: node
+ linkType: hard
+
+"dir-glob@npm:^3.0.1":
+ version: 3.0.1
+ resolution: "dir-glob@npm:3.0.1"
+ dependencies:
+ path-type: ^4.0.0
+ checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615
+ languageName: node
+ linkType: hard
+
+"eastasianwidth@npm:^0.2.0":
+ version: 0.2.0
+ resolution: "eastasianwidth@npm:0.2.0"
+ checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed
+ languageName: node
+ linkType: hard
+
+"electron-to-chromium@npm:^1.4.284":
+ version: 1.4.328
+ resolution: "electron-to-chromium@npm:1.4.328"
+ checksum: 82c1617a77e40ac4ca5011749318a2fee8f8c75f8b517fcff7602219c85fd97a9fab2d5a1353ea10fb7f9c7d18acb90c9ed58c2292256f81e2ffa42ee66c4b0b
+ languageName: node
+ linkType: hard
+
+"emoji-regex@npm:^8.0.0":
+ version: 8.0.0
+ resolution: "emoji-regex@npm:8.0.0"
+ checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192
+ languageName: node
+ linkType: hard
+
+"emoji-regex@npm:^9.2.2":
+ version: 9.2.2
+ resolution: "emoji-regex@npm:9.2.2"
+ checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601
+ languageName: node
+ linkType: hard
+
+"encoding@npm:^0.1.13":
+ version: 0.1.13
+ resolution: "encoding@npm:0.1.13"
+ dependencies:
+ iconv-lite: ^0.6.2
+ checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f
+ languageName: node
+ linkType: hard
+
+"env-paths@npm:^2.2.0":
+ version: 2.2.1
+ resolution: "env-paths@npm:2.2.1"
+ checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e
+ languageName: node
+ linkType: hard
+
+"err-code@npm:^2.0.2":
+ version: 2.0.3
+ resolution: "err-code@npm:2.0.3"
+ checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54
+ languageName: node
+ linkType: hard
+
+"esbuild@npm:^0.16.14":
+ version: 0.16.17
+ resolution: "esbuild@npm:0.16.17"
+ dependencies:
+ "@esbuild/android-arm": 0.16.17
+ "@esbuild/android-arm64": 0.16.17
+ "@esbuild/android-x64": 0.16.17
+ "@esbuild/darwin-arm64": 0.16.17
+ "@esbuild/darwin-x64": 0.16.17
+ "@esbuild/freebsd-arm64": 0.16.17
+ "@esbuild/freebsd-x64": 0.16.17
+ "@esbuild/linux-arm": 0.16.17
+ "@esbuild/linux-arm64": 0.16.17
+ "@esbuild/linux-ia32": 0.16.17
+ "@esbuild/linux-loong64": 0.16.17
+ "@esbuild/linux-mips64el": 0.16.17
+ "@esbuild/linux-ppc64": 0.16.17
+ "@esbuild/linux-riscv64": 0.16.17
+ "@esbuild/linux-s390x": 0.16.17
+ "@esbuild/linux-x64": 0.16.17
+ "@esbuild/netbsd-x64": 0.16.17
+ "@esbuild/openbsd-x64": 0.16.17
+ "@esbuild/sunos-x64": 0.16.17
+ "@esbuild/win32-arm64": 0.16.17
+ "@esbuild/win32-ia32": 0.16.17
+ "@esbuild/win32-x64": 0.16.17
+ dependenciesMeta:
+ "@esbuild/android-arm":
+ optional: true
+ "@esbuild/android-arm64":
+ optional: true
+ "@esbuild/android-x64":
+ optional: true
+ "@esbuild/darwin-arm64":
+ optional: true
+ "@esbuild/darwin-x64":
+ optional: true
+ "@esbuild/freebsd-arm64":
+ optional: true
+ "@esbuild/freebsd-x64":
+ optional: true
+ "@esbuild/linux-arm":
+ optional: true
+ "@esbuild/linux-arm64":
+ optional: true
+ "@esbuild/linux-ia32":
+ optional: true
+ "@esbuild/linux-loong64":
+ optional: true
+ "@esbuild/linux-mips64el":
+ optional: true
+ "@esbuild/linux-ppc64":
+ optional: true
+ "@esbuild/linux-riscv64":
+ optional: true
+ "@esbuild/linux-s390x":
+ optional: true
+ "@esbuild/linux-x64":
+ optional: true
+ "@esbuild/netbsd-x64":
+ optional: true
+ "@esbuild/openbsd-x64":
+ optional: true
+ "@esbuild/sunos-x64":
+ optional: true
+ "@esbuild/win32-arm64":
+ optional: true
+ "@esbuild/win32-ia32":
+ optional: true
+ "@esbuild/win32-x64":
+ optional: true
+ bin:
+ esbuild: bin/esbuild
+ checksum: 4c2cc609ecfb426554bc3f75beb92d89eb2d0c515cfceebaa36c7599d7dcaab7056b70f6d6b51e72b45951ddf9021ee28e356cf205f8e42cc055d522312ea30c
+ languageName: node
+ linkType: hard
+
+"esbuild@npm:^0.17.11, esbuild@npm:^0.17.8":
+ version: 0.17.11
+ resolution: "esbuild@npm:0.17.11"
+ dependencies:
+ "@esbuild/android-arm": 0.17.11
+ "@esbuild/android-arm64": 0.17.11
+ "@esbuild/android-x64": 0.17.11
+ "@esbuild/darwin-arm64": 0.17.11
+ "@esbuild/darwin-x64": 0.17.11
+ "@esbuild/freebsd-arm64": 0.17.11
+ "@esbuild/freebsd-x64": 0.17.11
+ "@esbuild/linux-arm": 0.17.11
+ "@esbuild/linux-arm64": 0.17.11
+ "@esbuild/linux-ia32": 0.17.11
+ "@esbuild/linux-loong64": 0.17.11
+ "@esbuild/linux-mips64el": 0.17.11
+ "@esbuild/linux-ppc64": 0.17.11
+ "@esbuild/linux-riscv64": 0.17.11
+ "@esbuild/linux-s390x": 0.17.11
+ "@esbuild/linux-x64": 0.17.11
+ "@esbuild/netbsd-x64": 0.17.11
+ "@esbuild/openbsd-x64": 0.17.11
+ "@esbuild/sunos-x64": 0.17.11
+ "@esbuild/win32-arm64": 0.17.11
+ "@esbuild/win32-ia32": 0.17.11
+ "@esbuild/win32-x64": 0.17.11
+ dependenciesMeta:
+ "@esbuild/android-arm":
+ optional: true
+ "@esbuild/android-arm64":
+ optional: true
+ "@esbuild/android-x64":
+ optional: true
+ "@esbuild/darwin-arm64":
+ optional: true
+ "@esbuild/darwin-x64":
+ optional: true
+ "@esbuild/freebsd-arm64":
+ optional: true
+ "@esbuild/freebsd-x64":
+ optional: true
+ "@esbuild/linux-arm":
+ optional: true
+ "@esbuild/linux-arm64":
+ optional: true
+ "@esbuild/linux-ia32":
+ optional: true
+ "@esbuild/linux-loong64":
+ optional: true
+ "@esbuild/linux-mips64el":
+ optional: true
+ "@esbuild/linux-ppc64":
+ optional: true
+ "@esbuild/linux-riscv64":
+ optional: true
+ "@esbuild/linux-s390x":
+ optional: true
+ "@esbuild/linux-x64":
+ optional: true
+ "@esbuild/netbsd-x64":
+ optional: true
+ "@esbuild/openbsd-x64":
+ optional: true
+ "@esbuild/sunos-x64":
+ optional: true
+ "@esbuild/win32-arm64":
+ optional: true
+ "@esbuild/win32-ia32":
+ optional: true
+ "@esbuild/win32-x64":
+ optional: true
+ bin:
+ esbuild: bin/esbuild
+ checksum: febf218155513bb9c9c970508c03ec58e0aacfdc23394f425836a09f1da0dae0afa12949274adfd382782eef097f86b2d6b3032293062291f2f471de204f77ec
+ languageName: node
+ linkType: hard
+
+"escalade@npm:^3.1.1":
+ version: 3.1.1
+ resolution: "escalade@npm:3.1.1"
+ checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133
+ languageName: node
+ linkType: hard
+
+"escape-string-regexp@npm:^1.0.5":
+ version: 1.0.5
+ resolution: "escape-string-regexp@npm:1.0.5"
+ checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410
+ languageName: node
+ linkType: hard
+
+"estree-walker@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "estree-walker@npm:2.0.2"
+ checksum: 6151e6f9828abe2259e57f5fd3761335bb0d2ebd76dc1a01048ccee22fabcfef3c0859300f6d83ff0d1927849368775ec5a6d265dde2f6de5a1be1721cd94efc
+ languageName: node
+ linkType: hard
+
+"fast-glob@npm:^3.2.11":
+ version: 3.2.12
+ resolution: "fast-glob@npm:3.2.12"
+ dependencies:
+ "@nodelib/fs.stat": ^2.0.2
+ "@nodelib/fs.walk": ^1.2.3
+ glob-parent: ^5.1.2
+ merge2: ^1.3.0
+ micromatch: ^4.0.4
+ checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2
+ languageName: node
+ linkType: hard
+
+"fastq@npm:^1.6.0":
+ version: 1.15.0
+ resolution: "fastq@npm:1.15.0"
+ dependencies:
+ reusify: ^1.0.4
+ checksum: 0170e6bfcd5d57a70412440b8ef600da6de3b2a6c5966aeaf0a852d542daff506a0ee92d6de7679d1de82e644bce69d7a574a6c93f0b03964b5337eed75ada1a
+ languageName: node
+ linkType: hard
+
+"fill-range@npm:^7.0.1":
+ version: 7.0.1
+ resolution: "fill-range@npm:7.0.1"
+ dependencies:
+ to-regex-range: ^5.0.1
+ checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917
+ languageName: node
+ linkType: hard
+
+"fs-extra@npm:^11.1.0":
+ version: 11.1.0
+ resolution: "fs-extra@npm:11.1.0"
+ dependencies:
+ graceful-fs: ^4.2.0
+ jsonfile: ^6.0.1
+ universalify: ^2.0.0
+ checksum: 5ca476103fa1f5ff4a9b3c4f331548f8a3c1881edaae323a4415d3153b5dc11dc6a981c8d1dd93eec8367ceee27b53f8bd27eecbbf66ffcdd04927510c171e7f
+ languageName: node
+ linkType: hard
+
+"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "fs-minipass@npm:2.1.0"
+ dependencies:
+ minipass: ^3.0.0
+ checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1
+ languageName: node
+ linkType: hard
+
+"fs.realpath@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "fs.realpath@npm:1.0.0"
+ checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0
+ languageName: node
+ linkType: hard
+
+"fsevents@npm:~2.3.2":
+ version: 2.3.2
+ resolution: "fsevents@npm:2.3.2"
+ dependencies:
+ node-gyp: latest
+ checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f
+ conditions: os=darwin
+ languageName: node
+ linkType: hard
+
+"fsevents@patch:fsevents@~2.3.2#~builtin":
+ version: 2.3.2
+ resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7"
+ dependencies:
+ node-gyp: latest
+ conditions: os=darwin
+ languageName: node
+ linkType: hard
+
+"function-bind@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "function-bind@npm:1.1.1"
+ checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a
+ languageName: node
+ linkType: hard
+
+"gauge@npm:^4.0.3":
+ version: 4.0.4
+ resolution: "gauge@npm:4.0.4"
+ dependencies:
+ aproba: ^1.0.3 || ^2.0.0
+ color-support: ^1.1.3
+ console-control-strings: ^1.1.0
+ has-unicode: ^2.0.1
+ signal-exit: ^3.0.7
+ string-width: ^4.2.3
+ strip-ansi: ^6.0.1
+ wide-align: ^1.1.5
+ checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d
+ languageName: node
+ linkType: hard
+
+"gensync@npm:^1.0.0-beta.2":
+ version: 1.0.0-beta.2
+ resolution: "gensync@npm:1.0.0-beta.2"
+ checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec
+ languageName: node
+ linkType: hard
+
+"get-func-name@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "get-func-name@npm:2.0.0"
+ checksum: 8d82e69f3e7fab9e27c547945dfe5cc0c57fc0adf08ce135dddb01081d75684a03e7a0487466f478872b341d52ac763ae49e660d01ab83741f74932085f693c3
+ languageName: node
+ linkType: hard
+
+"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2":
+ version: 5.1.2
+ resolution: "glob-parent@npm:5.1.2"
+ dependencies:
+ is-glob: ^4.0.1
+ checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e
+ languageName: node
+ linkType: hard
+
+"glob@npm:^7.1.3, glob@npm:^7.1.4":
+ version: 7.2.3
+ resolution: "glob@npm:7.2.3"
+ dependencies:
+ fs.realpath: ^1.0.0
+ inflight: ^1.0.4
+ inherits: 2
+ minimatch: ^3.1.1
+ once: ^1.3.0
+ path-is-absolute: ^1.0.0
+ checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133
+ languageName: node
+ linkType: hard
+
+"glob@npm:^8.0.1, glob@npm:^8.0.3":
+ version: 8.1.0
+ resolution: "glob@npm:8.1.0"
+ dependencies:
+ fs.realpath: ^1.0.0
+ inflight: ^1.0.4
+ inherits: 2
+ minimatch: ^5.0.1
+ once: ^1.3.0
+ checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47
+ languageName: node
+ linkType: hard
+
+"globals@npm:^11.1.0":
+ version: 11.12.0
+ resolution: "globals@npm:11.12.0"
+ checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e
+ languageName: node
+ linkType: hard
+
+"globby@npm:^13.1.3":
+ version: 13.1.3
+ resolution: "globby@npm:13.1.3"
+ dependencies:
+ dir-glob: ^3.0.1
+ fast-glob: ^3.2.11
+ ignore: ^5.2.0
+ merge2: ^1.4.1
+ slash: ^4.0.0
+ checksum: 93f06e02002cdf368f7e3d55bd59e7b00784c7cc8fe92c7ee5082cc7171ff6109fda45e1c97a80bb48bc811dedaf7843c7c9186f5f84bde4883ab630e13c43df
+ languageName: node
+ linkType: hard
+
+"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6":
+ version: 4.2.10
+ resolution: "graceful-fs@npm:4.2.10"
+ checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da
+ languageName: node
+ linkType: hard
+
+"happy-dom@npm:^8.9.0":
+ version: 8.9.0
+ resolution: "happy-dom@npm:8.9.0"
+ dependencies:
+ css.escape: ^1.5.1
+ he: ^1.2.0
+ iconv-lite: ^0.6.3
+ node-fetch: ^2.x.x
+ webidl-conversions: ^7.0.0
+ whatwg-encoding: ^2.0.0
+ whatwg-mimetype: ^3.0.0
+ checksum: 2a9d853199e924e4445c11844a3d0fdd75b9831edab4c5dda52c4725c4f7889cd919814333162b70b3ae43884ec70ed50fbc22564eb94ba09408218922870a34
+ languageName: node
+ linkType: hard
+
+"has-flag@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "has-flag@npm:3.0.0"
+ checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b
+ languageName: node
+ linkType: hard
+
+"has-unicode@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "has-unicode@npm:2.0.1"
+ checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400
+ languageName: node
+ linkType: hard
+
+"has@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "has@npm:1.0.3"
+ dependencies:
+ function-bind: ^1.1.1
+ checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792
+ languageName: node
+ linkType: hard
+
+"he@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "he@npm:1.2.0"
+ bin:
+ he: bin/he
+ checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7
+ languageName: node
+ linkType: hard
+
+"hookable@npm:^5.4.2":
+ version: 5.5.1
+ resolution: "hookable@npm:5.5.1"
+ checksum: 2836a3653fb677f3669d619b798f2a74d0813554b2be7be662801de7584639b5e46dfbd441f6eda24dfca24fa7ab706532e5abd55f6475646abc7f43d40008ac
+ languageName: node
+ linkType: hard
+
+"http-cache-semantics@npm:^4.1.0":
+ version: 4.1.1
+ resolution: "http-cache-semantics@npm:4.1.1"
+ checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236
+ languageName: node
+ linkType: hard
+
+"http-proxy-agent@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "http-proxy-agent@npm:5.0.0"
+ dependencies:
+ "@tootallnate/once": 2
+ agent-base: 6
+ debug: 4
+ checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786
+ languageName: node
+ linkType: hard
+
+"https-proxy-agent@npm:^5.0.0":
+ version: 5.0.1
+ resolution: "https-proxy-agent@npm:5.0.1"
+ dependencies:
+ agent-base: 6
+ debug: 4
+ checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765
+ languageName: node
+ linkType: hard
+
+"humanize-ms@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "humanize-ms@npm:1.2.1"
+ dependencies:
+ ms: ^2.0.0
+ checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16
+ languageName: node
+ linkType: hard
+
+"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3":
+ version: 0.6.3
+ resolution: "iconv-lite@npm:0.6.3"
+ dependencies:
+ safer-buffer: ">= 2.1.2 < 3.0.0"
+ checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf
+ languageName: node
+ linkType: hard
+
+"ignore@npm:^5.2.0":
+ version: 5.2.4
+ resolution: "ignore@npm:5.2.4"
+ checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef
+ languageName: node
+ linkType: hard
+
+"immutable@npm:^4.0.0":
+ version: 4.3.0
+ resolution: "immutable@npm:4.3.0"
+ checksum: bbd7ea99e2752e053323543d6ff1cc71a4b4614fa6121f321ca766db2bd2092f3f1e0a90784c5431350b7344a4f792fa002eac227062d59b9377b6c09063b58b
+ languageName: node
+ linkType: hard
+
+"imurmurhash@npm:^0.1.4":
+ version: 0.1.4
+ resolution: "imurmurhash@npm:0.1.4"
+ checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7
+ languageName: node
+ linkType: hard
+
+"indent-string@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "indent-string@npm:4.0.0"
+ checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612
+ languageName: node
+ linkType: hard
+
+"infer-owner@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "infer-owner@npm:1.0.4"
+ checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89
+ languageName: node
+ linkType: hard
+
+"inflight@npm:^1.0.4":
+ version: 1.0.6
+ resolution: "inflight@npm:1.0.6"
+ dependencies:
+ once: ^1.3.0
+ wrappy: 1
+ checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd
+ languageName: node
+ linkType: hard
+
+"inherits@npm:2, inherits@npm:^2.0.3":
+ version: 2.0.4
+ resolution: "inherits@npm:2.0.4"
+ checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1
+ languageName: node
+ linkType: hard
+
+"ip@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "ip@npm:2.0.0"
+ checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349
+ languageName: node
+ linkType: hard
+
+"is-binary-path@npm:~2.1.0":
+ version: 2.1.0
+ resolution: "is-binary-path@npm:2.1.0"
+ dependencies:
+ binary-extensions: ^2.0.0
+ checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c
+ languageName: node
+ linkType: hard
+
+"is-builtin-module@npm:^3.2.0":
+ version: 3.2.1
+ resolution: "is-builtin-module@npm:3.2.1"
+ dependencies:
+ builtin-modules: ^3.3.0
+ checksum: e8f0ffc19a98240bda9c7ada84d846486365af88d14616e737d280d378695c8c448a621dcafc8332dbf0fcd0a17b0763b845400709963fa9151ddffece90ae88
+ languageName: node
+ linkType: hard
+
+"is-core-module@npm:^2.9.0":
+ version: 2.11.0
+ resolution: "is-core-module@npm:2.11.0"
+ dependencies:
+ has: ^1.0.3
+ checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab
+ languageName: node
+ linkType: hard
+
+"is-extglob@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "is-extglob@npm:2.1.1"
+ checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85
+ languageName: node
+ linkType: hard
+
+"is-fullwidth-code-point@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "is-fullwidth-code-point@npm:3.0.0"
+ checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348
+ languageName: node
+ linkType: hard
+
+"is-fullwidth-code-point@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "is-fullwidth-code-point@npm:4.0.0"
+ checksum: 8ae89bf5057bdf4f57b346fb6c55e9c3dd2549983d54191d722d5c739397a903012cc41a04ee3403fd872e811243ef91a7c5196da7b5841dc6b6aae31a264a8d
+ languageName: node
+ linkType: hard
+
+"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1":
+ version: 4.0.3
+ resolution: "is-glob@npm:4.0.3"
+ dependencies:
+ is-extglob: ^2.1.1
+ checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4
+ languageName: node
+ linkType: hard
+
+"is-lambda@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "is-lambda@npm:1.0.1"
+ checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35
+ languageName: node
+ linkType: hard
+
+"is-module@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "is-module@npm:1.0.0"
+ checksum: 8cd5390730c7976fb4e8546dd0b38865ee6f7bacfa08dfbb2cc07219606755f0b01709d9361e01f13009bbbd8099fa2927a8ed665118a6105d66e40f1b838c3f
+ languageName: node
+ linkType: hard
+
+"is-number@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "is-number@npm:7.0.0"
+ checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a
+ languageName: node
+ linkType: hard
+
+"is-reference@npm:1.2.1":
+ version: 1.2.1
+ resolution: "is-reference@npm:1.2.1"
+ dependencies:
+ "@types/estree": "*"
+ checksum: e7b48149f8abda2c10849ea51965904d6a714193d68942ad74e30522231045acf06cbfae5a4be2702fede5d232e61bf50b3183acdc056e6e3afe07fcf4f4b2bc
+ languageName: node
+ linkType: hard
+
+"isexe@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "isexe@npm:2.0.0"
+ checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62
+ languageName: node
+ linkType: hard
+
+"jiti@npm:^1.17.1, jiti@npm:^1.17.2":
+ version: 1.17.2
+ resolution: "jiti@npm:1.17.2"
+ bin:
+ jiti: bin/jiti.js
+ checksum: 51941fea3622d1ff80d914ec6ec95ae463ede598a4a2317f1e8ff018823212eba6b9ea1c638c97c18f681870b1c2b9f49fbb13021b7c2415c46c8a3b1910f1e3
+ languageName: node
+ linkType: hard
+
+"js-tokens@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "js-tokens@npm:4.0.0"
+ checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78
+ languageName: node
+ linkType: hard
+
+"jsesc@npm:^2.5.1":
+ version: 2.5.2
+ resolution: "jsesc@npm:2.5.2"
+ bin:
+ jsesc: bin/jsesc
+ checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d
+ languageName: node
+ linkType: hard
+
+"json5@npm:^2.2.2":
+ version: 2.2.3
+ resolution: "json5@npm:2.2.3"
+ bin:
+ json5: lib/cli.js
+ checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349
+ languageName: node
+ linkType: hard
+
+"jsonc-parser@npm:^3.2.0":
+ version: 3.2.0
+ resolution: "jsonc-parser@npm:3.2.0"
+ checksum: 946dd9a5f326b745aa326d48a7257e3f4a4b62c5e98ec8e49fa2bdd8d96cef7e6febf1399f5c7016114fd1f68a1c62c6138826d5d90bc650448e3cf0951c53c7
+ languageName: node
+ linkType: hard
+
+"jsonfile@npm:^6.0.1":
+ version: 6.1.0
+ resolution: "jsonfile@npm:6.1.0"
+ dependencies:
+ graceful-fs: ^4.1.6
+ universalify: ^2.0.0
+ dependenciesMeta:
+ graceful-fs:
+ optional: true
+ checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354
+ languageName: node
+ linkType: hard
+
+"local-pkg@npm:^0.4.2":
+ version: 0.4.3
+ resolution: "local-pkg@npm:0.4.3"
+ checksum: 7825aca531dd6afa3a3712a0208697aa4a5cd009065f32e3fb732aafcc42ed11f277b5ac67229222e96f4def55197171cdf3d5522d0381b489d2e5547b407d55
+ languageName: node
+ linkType: hard
+
+"loupe@npm:^2.3.1, loupe@npm:^2.3.6":
+ version: 2.3.6
+ resolution: "loupe@npm:2.3.6"
+ dependencies:
+ get-func-name: ^2.0.0
+ checksum: cc83f1b124a1df7384601d72d8d1f5fe95fd7a8185469fec48bb2e4027e45243949e7a013e8d91051a138451ff0552310c32aa9786e60b6a30d1e801bdc2163f
+ languageName: node
+ linkType: hard
+
+"lru-cache@npm:^5.1.1":
+ version: 5.1.1
+ resolution: "lru-cache@npm:5.1.1"
+ dependencies:
+ yallist: ^3.0.2
+ checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb
+ languageName: node
+ linkType: hard
+
+"lru-cache@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "lru-cache@npm:6.0.0"
+ dependencies:
+ yallist: ^4.0.0
+ checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297
+ languageName: node
+ linkType: hard
+
+"lru-cache@npm:^7.7.1":
+ version: 7.18.3
+ resolution: "lru-cache@npm:7.18.3"
+ checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356
+ languageName: node
+ linkType: hard
+
+"magic-string@npm:^0.25.7":
+ version: 0.25.9
+ resolution: "magic-string@npm:0.25.9"
+ dependencies:
+ sourcemap-codec: ^1.4.8
+ checksum: 9a0e55a15c7303fc360f9572a71cffba1f61451bc92c5602b1206c9d17f492403bf96f946dfce7483e66822d6b74607262e24392e87b0ac27b786e69a40e9b1a
+ languageName: node
+ linkType: hard
+
+"magic-string@npm:^0.27.0":
+ version: 0.27.0
+ resolution: "magic-string@npm:0.27.0"
+ dependencies:
+ "@jridgewell/sourcemap-codec": ^1.4.13
+ checksum: 273faaa50baadb7a2df6e442eac34ad611304fc08fe16e24fe2e472fd944bfcb73ffb50d2dc972dc04e92784222002af46868cb9698b1be181c81830fd95a13e
+ languageName: node
+ linkType: hard
+
+"magic-string@npm:^0.29.0":
+ version: 0.29.0
+ resolution: "magic-string@npm:0.29.0"
+ dependencies:
+ "@jridgewell/sourcemap-codec": ^1.4.13
+ checksum: 19e5398fcfc44804917127c72ad622c68a19a0a10cbdb8d4f9f9417584a087fe9e117140bfb2463d86743cf1ed9cf4182ae0b0ad1a7536f7fdda257ee4449ffb
+ languageName: node
+ linkType: hard
+
+"make-fetch-happen@npm:^10.0.3":
+ version: 10.2.1
+ resolution: "make-fetch-happen@npm:10.2.1"
+ dependencies:
+ agentkeepalive: ^4.2.1
+ cacache: ^16.1.0
+ http-cache-semantics: ^4.1.0
+ http-proxy-agent: ^5.0.0
+ https-proxy-agent: ^5.0.0
+ is-lambda: ^1.0.1
+ lru-cache: ^7.7.1
+ minipass: ^3.1.6
+ minipass-collect: ^1.0.2
+ minipass-fetch: ^2.0.3
+ minipass-flush: ^1.0.5
+ minipass-pipeline: ^1.2.4
+ negotiator: ^0.6.3
+ promise-retry: ^2.0.1
+ socks-proxy-agent: ^7.0.0
+ ssri: ^9.0.0
+ checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c
+ languageName: node
+ linkType: hard
+
+"merge2@npm:^1.3.0, merge2@npm:^1.4.1":
+ version: 1.4.1
+ resolution: "merge2@npm:1.4.1"
+ checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2
+ languageName: node
+ linkType: hard
+
+"micromatch@npm:^4.0.4":
+ version: 4.0.5
+ resolution: "micromatch@npm:4.0.5"
+ dependencies:
+ braces: ^3.0.2
+ picomatch: ^2.3.1
+ checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc
+ languageName: node
+ linkType: hard
+
+"minimatch@npm:^3.1.1":
+ version: 3.1.2
+ resolution: "minimatch@npm:3.1.2"
+ dependencies:
+ brace-expansion: ^1.1.7
+ checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a
+ languageName: node
+ linkType: hard
+
+"minimatch@npm:^5.0.1":
+ version: 5.1.6
+ resolution: "minimatch@npm:5.1.6"
+ dependencies:
+ brace-expansion: ^2.0.1
+ checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77
+ languageName: node
+ linkType: hard
+
+"minipass-collect@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "minipass-collect@npm:1.0.2"
+ dependencies:
+ minipass: ^3.0.0
+ checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10
+ languageName: node
+ linkType: hard
+
+"minipass-fetch@npm:^2.0.3":
+ version: 2.1.2
+ resolution: "minipass-fetch@npm:2.1.2"
+ dependencies:
+ encoding: ^0.1.13
+ minipass: ^3.1.6
+ minipass-sized: ^1.0.3
+ minizlib: ^2.1.2
+ dependenciesMeta:
+ encoding:
+ optional: true
+ checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91
+ languageName: node
+ linkType: hard
+
+"minipass-flush@npm:^1.0.5":
+ version: 1.0.5
+ resolution: "minipass-flush@npm:1.0.5"
+ dependencies:
+ minipass: ^3.0.0
+ checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf
+ languageName: node
+ linkType: hard
+
+"minipass-pipeline@npm:^1.2.4":
+ version: 1.2.4
+ resolution: "minipass-pipeline@npm:1.2.4"
+ dependencies:
+ minipass: ^3.0.0
+ checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b
+ languageName: node
+ linkType: hard
+
+"minipass-sized@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "minipass-sized@npm:1.0.3"
+ dependencies:
+ minipass: ^3.0.0
+ checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60
+ languageName: node
+ linkType: hard
+
+"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6":
+ version: 3.3.6
+ resolution: "minipass@npm:3.3.6"
+ dependencies:
+ yallist: ^4.0.0
+ checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48
+ languageName: node
+ linkType: hard
+
+"minipass@npm:^4.0.0":
+ version: 4.2.5
+ resolution: "minipass@npm:4.2.5"
+ checksum: 4f9c19af23a5d4a9e7156feefc9110634b178a8cff8f8271af16ec5ebf7e221725a97429952c856f5b17b30c2065ebd24c81722d90c93d2122611d75b952b48f
+ languageName: node
+ linkType: hard
+
+"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2":
+ version: 2.1.2
+ resolution: "minizlib@npm:2.1.2"
+ dependencies:
+ minipass: ^3.0.0
+ yallist: ^4.0.0
+ checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3
+ languageName: node
+ linkType: hard
+
+"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "mkdirp@npm:1.0.4"
+ bin:
+ mkdirp: bin/cmd.js
+ checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f
+ languageName: node
+ linkType: hard
+
+"mkdist@npm:^1.1.1":
+ version: 1.1.2
+ resolution: "mkdist@npm:1.1.2"
+ dependencies:
+ defu: ^6.1.2
+ esbuild: ^0.17.11
+ fs-extra: ^11.1.0
+ globby: ^13.1.3
+ jiti: ^1.17.2
+ mlly: ^1.1.1
+ mri: ^1.2.0
+ pathe: ^1.1.0
+ peerDependencies:
+ sass: ^1.58.3
+ typescript: ">=4.9.5"
+ peerDependenciesMeta:
+ sass:
+ optional: true
+ typescript:
+ optional: true
+ bin:
+ mkdist: dist/cli.cjs
+ checksum: 914f8fa3e2c89ae96f2e3b4ec824a7fcd3ee3330401d0fb8291ae9cb1c9a24eb8852b4fabf181a8c855c311b0c975cf1301a35c0f60c97c0433a6320013fe3ce
+ languageName: node
+ linkType: hard
+
+"mlly@npm:^1.1.0, mlly@npm:^1.1.1":
+ version: 1.2.0
+ resolution: "mlly@npm:1.2.0"
+ dependencies:
+ acorn: ^8.8.2
+ pathe: ^1.1.0
+ pkg-types: ^1.0.2
+ ufo: ^1.1.1
+ checksum: 640b019eb20e8e556bd623141b861d47e5c05f8af00210376ce1015912695dbd93a38cfe7ba18ca04f00e75645378f0f94a48a90bfa6e1b5dee1f0ec9c14eed1
+ languageName: node
+ linkType: hard
+
+"mri@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "mri@npm:1.2.0"
+ checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85
+ languageName: node
+ linkType: hard
+
+"ms@npm:2.1.2":
+ version: 2.1.2
+ resolution: "ms@npm:2.1.2"
+ checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f
+ languageName: node
+ linkType: hard
+
+"ms@npm:^2.0.0":
+ version: 2.1.3
+ resolution: "ms@npm:2.1.3"
+ checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d
+ languageName: node
+ linkType: hard
+
+"nanoid@npm:^3.3.4":
+ version: 3.3.4
+ resolution: "nanoid@npm:3.3.4"
+ bin:
+ nanoid: bin/nanoid.cjs
+ checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c
+ languageName: node
+ linkType: hard
+
+"negotiator@npm:^0.6.3":
+ version: 0.6.3
+ resolution: "negotiator@npm:0.6.3"
+ checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9
+ languageName: node
+ linkType: hard
+
+"node-fetch@npm:^2.x.x":
+ version: 2.6.9
+ resolution: "node-fetch@npm:2.6.9"
+ dependencies:
+ whatwg-url: ^5.0.0
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+ checksum: acb04f9ce7224965b2b59e71b33c639794d8991efd73855b0b250921382b38331ffc9d61bce502571f6cc6e11a8905ca9b1b6d4aeb586ab093e2756a1fd190d0
+ languageName: node
+ linkType: hard
+
+"node-gyp@npm:latest":
+ version: 9.3.1
+ resolution: "node-gyp@npm:9.3.1"
+ dependencies:
+ env-paths: ^2.2.0
+ glob: ^7.1.4
+ graceful-fs: ^4.2.6
+ make-fetch-happen: ^10.0.3
+ nopt: ^6.0.0
+ npmlog: ^6.0.0
+ rimraf: ^3.0.2
+ semver: ^7.3.5
+ tar: ^6.1.2
+ which: ^2.0.2
+ bin:
+ node-gyp: bin/node-gyp.js
+ checksum: b860e9976fa645ca0789c69e25387401b4396b93c8375489b5151a6c55cf2640a3b6183c212b38625ef7c508994930b72198338e3d09b9d7ade5acc4aaf51ea7
+ languageName: node
+ linkType: hard
+
+"node-releases@npm:^2.0.8":
+ version: 2.0.10
+ resolution: "node-releases@npm:2.0.10"
+ checksum: d784ecde25696a15d449c4433077f5cce620ed30a1656c4abf31282bfc691a70d9618bae6868d247a67914d1be5cc4fde22f65a05f4398cdfb92e0fc83cadfbc
+ languageName: node
+ linkType: hard
+
+"nopt@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "nopt@npm:6.0.0"
+ dependencies:
+ abbrev: ^1.0.0
+ bin:
+ nopt: bin/nopt.js
+ checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac
+ languageName: node
+ linkType: hard
+
+"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0":
+ version: 3.0.0
+ resolution: "normalize-path@npm:3.0.0"
+ checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20
+ languageName: node
+ linkType: hard
+
+"npmlog@npm:^6.0.0":
+ version: 6.0.2
+ resolution: "npmlog@npm:6.0.2"
+ dependencies:
+ are-we-there-yet: ^3.0.0
+ console-control-strings: ^1.1.0
+ gauge: ^4.0.3
+ set-blocking: ^2.0.0
+ checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a
+ languageName: node
+ linkType: hard
+
+"once@npm:^1.3.0":
+ version: 1.4.0
+ resolution: "once@npm:1.4.0"
+ dependencies:
+ wrappy: 1
+ checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68
+ languageName: node
+ linkType: hard
+
+"p-limit@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "p-limit@npm:4.0.0"
+ dependencies:
+ yocto-queue: ^1.0.0
+ checksum: 01d9d70695187788f984226e16c903475ec6a947ee7b21948d6f597bed788e3112cc7ec2e171c1d37125057a5f45f3da21d8653e04a3a793589e12e9e80e756b
+ languageName: node
+ linkType: hard
+
+"p-map@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "p-map@npm:4.0.0"
+ dependencies:
+ aggregate-error: ^3.0.0
+ checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c
+ languageName: node
+ linkType: hard
+
+"path-is-absolute@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "path-is-absolute@npm:1.0.1"
+ checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8
+ languageName: node
+ linkType: hard
+
+"path-parse@npm:^1.0.7":
+ version: 1.0.7
+ resolution: "path-parse@npm:1.0.7"
+ checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a
+ languageName: node
+ linkType: hard
+
+"path-type@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "path-type@npm:4.0.0"
+ checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45
+ languageName: node
+ linkType: hard
+
+"pathe@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "pathe@npm:1.1.0"
+ checksum: 6b9be9968ea08a90c0824934799707a1c6a1ad22ac1f22080f377e3f75856d5e53a331b01d327329bfce538a14590587cfb250e8e7947f64408797c84c252056
+ languageName: node
+ linkType: hard
+
+"pathval@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "pathval@npm:1.1.1"
+ checksum: 090e3147716647fb7fb5b4b8c8e5b55e5d0a6086d085b6cd23f3d3c01fcf0ff56fd3cc22f2f4a033bd2e46ed55d61ed8379e123b42afe7d531a2a5fc8bb556d6
+ languageName: node
+ linkType: hard
+
+"picocolors@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "picocolors@npm:1.0.0"
+ checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981
+ languageName: node
+ linkType: hard
+
+"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1":
+ version: 2.3.1
+ resolution: "picomatch@npm:2.3.1"
+ checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf
+ languageName: node
+ linkType: hard
+
+"pkg-types@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "pkg-types@npm:1.0.2"
+ dependencies:
+ jsonc-parser: ^3.2.0
+ mlly: ^1.1.1
+ pathe: ^1.1.0
+ checksum: 2d0a70c1721c2ebbe075b912531a4f43136e6658fdcc59dc76c39966201ab5ddf265868d1211943183406d4b70d373c17e3b176487bc2020ea737d030b0fd080
+ languageName: node
+ linkType: hard
+
+"postcss@npm:^8.1.10, postcss@npm:^8.4.21":
+ version: 8.4.21
+ resolution: "postcss@npm:8.4.21"
+ dependencies:
+ nanoid: ^3.3.4
+ picocolors: ^1.0.0
+ source-map-js: ^1.0.2
+ checksum: e39ac60ccd1542d4f9d93d894048aac0d686b3bb38e927d8386005718e6793dbbb46930f0a523fe382f1bbd843c6d980aaea791252bf5e176180e5a4336d9679
+ languageName: node
+ linkType: hard
+
+"pretty-bytes@npm:^6.1.0":
+ version: 6.1.0
+ resolution: "pretty-bytes@npm:6.1.0"
+ checksum: cca3be45a299a28d1d3d95056ac709b8aeb01540aae7d906ed674c076b5f4b48cb6bf118f172d486c17e47b092a00e827b7f69608bc731ca35ca6f8d93e130f1
+ languageName: node
+ linkType: hard
+
+"pretty-format@npm:^27.5.1":
+ version: 27.5.1
+ resolution: "pretty-format@npm:27.5.1"
+ dependencies:
+ ansi-regex: ^5.0.1
+ ansi-styles: ^5.0.0
+ react-is: ^17.0.1
+ checksum: cf610cffcb793885d16f184a62162f2dd0df31642d9a18edf4ca298e909a8fe80bdbf556d5c9573992c102ce8bf948691da91bf9739bee0ffb6e79c8a8a6e088
+ languageName: node
+ linkType: hard
+
+"promise-inflight@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "promise-inflight@npm:1.0.1"
+ checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981
+ languageName: node
+ linkType: hard
+
+"promise-retry@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "promise-retry@npm:2.0.1"
+ dependencies:
+ err-code: ^2.0.2
+ retry: ^0.12.0
+ checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429
+ languageName: node
+ linkType: hard
+
+"queue-microtask@npm:^1.2.2":
+ version: 1.2.3
+ resolution: "queue-microtask@npm:1.2.3"
+ checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4
+ languageName: node
+ linkType: hard
+
+"react-is@npm:^17.0.1":
+ version: 17.0.2
+ resolution: "react-is@npm:17.0.2"
+ checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8
+ languageName: node
+ linkType: hard
+
+"readable-stream@npm:^3.6.0":
+ version: 3.6.2
+ resolution: "readable-stream@npm:3.6.2"
+ dependencies:
+ inherits: ^2.0.3
+ string_decoder: ^1.1.1
+ util-deprecate: ^1.0.1
+ checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d
+ languageName: node
+ linkType: hard
+
+"readdirp@npm:~3.6.0":
+ version: 3.6.0
+ resolution: "readdirp@npm:3.6.0"
+ dependencies:
+ picomatch: ^2.2.1
+ checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320
+ languageName: node
+ linkType: hard
+
+"resolve@npm:^1.22.1":
+ version: 1.22.1
+ resolution: "resolve@npm:1.22.1"
+ dependencies:
+ is-core-module: ^2.9.0
+ path-parse: ^1.0.7
+ supports-preserve-symlinks-flag: ^1.0.0
+ bin:
+ resolve: bin/resolve
+ checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e
+ languageName: node
+ linkType: hard
+
+"resolve@patch:resolve@^1.22.1#~builtin":
+ version: 1.22.1
+ resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b"
+ dependencies:
+ is-core-module: ^2.9.0
+ path-parse: ^1.0.7
+ supports-preserve-symlinks-flag: ^1.0.0
+ bin:
+ resolve: bin/resolve
+ checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b
+ languageName: node
+ linkType: hard
+
+"retry@npm:^0.12.0":
+ version: 0.12.0
+ resolution: "retry@npm:0.12.0"
+ checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c
+ languageName: node
+ linkType: hard
+
+"reusify@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "reusify@npm:1.0.4"
+ checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc
+ languageName: node
+ linkType: hard
+
+"rimraf@npm:^3.0.2":
+ version: 3.0.2
+ resolution: "rimraf@npm:3.0.2"
+ dependencies:
+ glob: ^7.1.3
+ bin:
+ rimraf: bin.js
+ checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0
+ languageName: node
+ linkType: hard
+
+"rollup-plugin-dts@npm:^5.2.0":
+ version: 5.2.0
+ resolution: "rollup-plugin-dts@npm:5.2.0"
+ dependencies:
+ "@babel/code-frame": ^7.18.6
+ magic-string: ^0.29.0
+ peerDependencies:
+ rollup: ^3.0.0
+ typescript: ^4.1
+ dependenciesMeta:
+ "@babel/code-frame":
+ optional: true
+ checksum: cb4a1ff5307efb9a89edd72b5bd1760d8dd3df7b7c5ea61615755669619ec1441e916fe1452068bc17dbae17efbd4cfe6f55478690eb809800f0ffdb76a52fc9
+ languageName: node
+ linkType: hard
+
+"rollup@npm:^3.10.0, rollup@npm:^3.15.0":
+ version: 3.19.1
+ resolution: "rollup@npm:3.19.1"
+ dependencies:
+ fsevents: ~2.3.2
+ dependenciesMeta:
+ fsevents:
+ optional: true
+ bin:
+ rollup: dist/bin/rollup
+ checksum: f78198c6de224b26650c70b16db156762d1fcceeb375d34fb2c76fc5b23a78f712c3c881d3248e6f277a511589e20d50c247bcf5c7920f1ddc0a43cadf9f0140
+ languageName: node
+ linkType: hard
+
+"run-parallel@npm:^1.1.9":
+ version: 1.2.0
+ resolution: "run-parallel@npm:1.2.0"
+ dependencies:
+ queue-microtask: ^1.2.2
+ checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d
+ languageName: node
+ linkType: hard
+
+"safe-buffer@npm:~5.2.0":
+ version: 5.2.1
+ resolution: "safe-buffer@npm:5.2.1"
+ checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491
+ languageName: node
+ linkType: hard
+
+"safer-buffer@npm:>= 2.1.2 < 3.0.0":
+ version: 2.1.2
+ resolution: "safer-buffer@npm:2.1.2"
+ checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0
+ languageName: node
+ linkType: hard
+
+"sass@npm:^1.59.2":
+ version: 1.59.2
+ resolution: "sass@npm:1.59.2"
+ dependencies:
+ chokidar: ">=3.0.0 <4.0.0"
+ immutable: ^4.0.0
+ source-map-js: ">=0.6.2 <2.0.0"
+ bin:
+ sass: sass.js
+ checksum: ab015ac49beb1252373023cc79b687aabd7850a7f450250b2fbe4eb3f64b0aef6759f8c7b33234221788a0e42cdd3999edfb5995218e474123b99cb126773e30
+ languageName: node
+ linkType: hard
+
+"scule@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "scule@npm:1.0.0"
+ checksum: 57f745022ef391868c6adfc77cd8bf1e8a10096cb4e7ba7bbb04f57fab5651804b419da9435692cd012abf1fd020f4b3f823385536f4ddc7247ea725488451c4
+ languageName: node
+ linkType: hard
+
+"semver@npm:^6.3.0":
+ version: 6.3.0
+ resolution: "semver@npm:6.3.0"
+ bin:
+ semver: ./bin/semver.js
+ checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9
+ languageName: node
+ linkType: hard
+
+"semver@npm:^7.3.5":
+ version: 7.3.8
+ resolution: "semver@npm:7.3.8"
+ dependencies:
+ lru-cache: ^6.0.0
+ bin:
+ semver: bin/semver.js
+ checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1
+ languageName: node
+ linkType: hard
+
+"set-blocking@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "set-blocking@npm:2.0.0"
+ checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02
+ languageName: node
+ linkType: hard
+
+"siginfo@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "siginfo@npm:2.0.0"
+ checksum: 8aa5a98640ca09fe00d74416eca97551b3e42991614a3d1b824b115fc1401543650914f651ab1311518177e4d297e80b953f4cd4cd7ea1eabe824e8f2091de01
+ languageName: node
+ linkType: hard
+
+"signal-exit@npm:^3.0.7":
+ version: 3.0.7
+ resolution: "signal-exit@npm:3.0.7"
+ checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318
+ languageName: node
+ linkType: hard
+
+"slash@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "slash@npm:4.0.0"
+ checksum: da8e4af73712253acd21b7853b7e0dbba776b786e82b010a5bfc8b5051a1db38ed8aba8e1e8f400dd2c9f373be91eb1c42b66e91abb407ff42b10feece5e1d2d
+ languageName: node
+ linkType: hard
+
+"slice-ansi@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "slice-ansi@npm:5.0.0"
+ dependencies:
+ ansi-styles: ^6.0.0
+ is-fullwidth-code-point: ^4.0.0
+ checksum: 7e600a2a55e333a21ef5214b987c8358fe28bfb03c2867ff2cbf919d62143d1812ac27b4297a077fdaf27a03da3678e49551c93e35f9498a3d90221908a1180e
+ languageName: node
+ linkType: hard
+
+"smart-buffer@npm:^4.2.0":
+ version: 4.2.0
+ resolution: "smart-buffer@npm:4.2.0"
+ checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b
+ languageName: node
+ linkType: hard
+
+"socks-proxy-agent@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "socks-proxy-agent@npm:7.0.0"
+ dependencies:
+ agent-base: ^6.0.2
+ debug: ^4.3.3
+ socks: ^2.6.2
+ checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846
+ languageName: node
+ linkType: hard
+
+"socks@npm:^2.6.2":
+ version: 2.7.1
+ resolution: "socks@npm:2.7.1"
+ dependencies:
+ ip: ^2.0.0
+ smart-buffer: ^4.2.0
+ checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748
+ languageName: node
+ linkType: hard
+
+"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "source-map-js@npm:1.0.2"
+ checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c
+ languageName: node
+ linkType: hard
+
+"source-map@npm:^0.6.1":
+ version: 0.6.1
+ resolution: "source-map@npm:0.6.1"
+ checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2
+ languageName: node
+ linkType: hard
+
+"sourcemap-codec@npm:^1.4.8":
+ version: 1.4.8
+ resolution: "sourcemap-codec@npm:1.4.8"
+ checksum: b57981c05611afef31605732b598ccf65124a9fcb03b833532659ac4d29ac0f7bfacbc0d6c5a28a03e84c7510e7e556d758d0bb57786e214660016fb94279316
+ languageName: node
+ linkType: hard
+
+"ssri@npm:^9.0.0":
+ version: 9.0.1
+ resolution: "ssri@npm:9.0.1"
+ dependencies:
+ minipass: ^3.1.1
+ checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb
+ languageName: node
+ linkType: hard
+
+"stackback@npm:0.0.2":
+ version: 0.0.2
+ resolution: "stackback@npm:0.0.2"
+ checksum: 2d4dc4e64e2db796de4a3c856d5943daccdfa3dd092e452a1ce059c81e9a9c29e0b9badba91b43ef0d5ff5c04ee62feb3bcc559a804e16faf447bac2d883aa99
+ languageName: node
+ linkType: hard
+
+"std-env@npm:^3.3.1":
+ version: 3.3.2
+ resolution: "std-env@npm:3.3.2"
+ checksum: c02256bb041ba1870d23f8360bc7e47a9cf1fabcd02c8b7c4246d48f2c6bb47b4f45c70964348844e6d36521df84c4a9d09d468654b51e0eb5c600e3392b4570
+ languageName: node
+ linkType: hard
+
+"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.2.3":
+ version: 4.2.3
+ resolution: "string-width@npm:4.2.3"
+ dependencies:
+ emoji-regex: ^8.0.0
+ is-fullwidth-code-point: ^3.0.0
+ strip-ansi: ^6.0.1
+ checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb
+ languageName: node
+ linkType: hard
+
+"string-width@npm:^5.0.0":
+ version: 5.1.2
+ resolution: "string-width@npm:5.1.2"
+ dependencies:
+ eastasianwidth: ^0.2.0
+ emoji-regex: ^9.2.2
+ strip-ansi: ^7.0.1
+ checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193
+ languageName: node
+ linkType: hard
+
+"string_decoder@npm:^1.1.1":
+ version: 1.3.0
+ resolution: "string_decoder@npm:1.3.0"
+ dependencies:
+ safe-buffer: ~5.2.0
+ checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56
+ languageName: node
+ linkType: hard
+
+"strip-ansi@npm:^6.0.1":
+ version: 6.0.1
+ resolution: "strip-ansi@npm:6.0.1"
+ dependencies:
+ ansi-regex: ^5.0.1
+ checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c
+ languageName: node
+ linkType: hard
+
+"strip-ansi@npm:^7.0.1":
+ version: 7.0.1
+ resolution: "strip-ansi@npm:7.0.1"
+ dependencies:
+ ansi-regex: ^6.0.1
+ checksum: 257f78fa433520e7f9897722731d78599cb3fce29ff26a20a5e12ba4957463b50a01136f37c43707f4951817a75e90820174853d6ccc240997adc5df8f966039
+ languageName: node
+ linkType: hard
+
+"strip-literal@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "strip-literal@npm:1.0.1"
+ dependencies:
+ acorn: ^8.8.2
+ checksum: ab40496820f02220390d95cdd620a997168efb69d5bd7d180bc4ef83ca562a95447843d8c7c88b8284879a29cf4eedc89d8001d1e098c1a1e23d12a9c755dff4
+ languageName: node
+ linkType: hard
+
+"supports-color@npm:^5.3.0":
+ version: 5.5.0
+ resolution: "supports-color@npm:5.5.0"
+ dependencies:
+ has-flag: ^3.0.0
+ checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac
+ languageName: node
+ linkType: hard
+
+"supports-preserve-symlinks-flag@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "supports-preserve-symlinks-flag@npm:1.0.0"
+ checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae
+ languageName: node
+ linkType: hard
+
+"tar@npm:^6.1.11, tar@npm:^6.1.2":
+ version: 6.1.13
+ resolution: "tar@npm:6.1.13"
+ dependencies:
+ chownr: ^2.0.0
+ fs-minipass: ^2.0.0
+ minipass: ^4.0.0
+ minizlib: ^2.1.1
+ mkdirp: ^1.0.3
+ yallist: ^4.0.0
+ checksum: 8a278bed123aa9f53549b256a36b719e317c8b96fe86a63406f3c62887f78267cea9b22dc6f7007009738509800d4a4dccc444abd71d762287c90f35b002eb1c
+ languageName: node
+ linkType: hard
+
+"tinybench@npm:^2.3.1":
+ version: 2.4.0
+ resolution: "tinybench@npm:2.4.0"
+ checksum: cfbe90f75755488653dde256019cc810f65e90f63fdd962e71e8b209b49598c5fc90c2227d2087eb807944895fafe7f12fe9ecae2b5e89db5adde66415e9b836
+ languageName: node
+ linkType: hard
+
+"tinypool@npm:^0.3.1":
+ version: 0.3.1
+ resolution: "tinypool@npm:0.3.1"
+ checksum: 23af5f3889ccab1619a0459748bd419db52b5cbdfd409241f8d42993ace485af5fa4eb3d945e5c37f4b90690b727b7858696967b00b4292149b5d71fb5848185
+ languageName: node
+ linkType: hard
+
+"tinyspy@npm:^1.0.2":
+ version: 1.1.1
+ resolution: "tinyspy@npm:1.1.1"
+ checksum: 4ea908fdfddb92044c4454193ec543f5980ced0bd25c5b3d240a94c1511e47e765ad39cd13ae6d3370fb730f62038eedc357f55e4e239416e126bc418f0eee79
+ languageName: node
+ linkType: hard
+
+"to-fast-properties@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "to-fast-properties@npm:2.0.0"
+ checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168
+ languageName: node
+ linkType: hard
+
+"to-regex-range@npm:^5.0.1":
+ version: 5.0.1
+ resolution: "to-regex-range@npm:5.0.1"
+ dependencies:
+ is-number: ^7.0.0
+ checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed
+ languageName: node
+ linkType: hard
+
+"tr46@npm:~0.0.3":
+ version: 0.0.3
+ resolution: "tr46@npm:0.0.3"
+ checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3
+ languageName: node
+ linkType: hard
+
+"type-detect@npm:^4.0.0, type-detect@npm:^4.0.5":
+ version: 4.0.8
+ resolution: "type-detect@npm:4.0.8"
+ checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15
+ languageName: node
+ linkType: hard
+
+"typescript@npm:^4.9.5":
+ version: 4.9.5
+ resolution: "typescript@npm:4.9.5"
+ bin:
+ tsc: bin/tsc
+ tsserver: bin/tsserver
+ checksum: ee000bc26848147ad423b581bd250075662a354d84f0e06eb76d3b892328d8d4440b7487b5a83e851b12b255f55d71835b008a66cbf8f255a11e4400159237db
+ languageName: node
+ linkType: hard
+
+"typescript@patch:typescript@^4.9.5#~builtin":
+ version: 4.9.5
+ resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=701156"
+ bin:
+ tsc: bin/tsc
+ tsserver: bin/tsserver
+ checksum: 2eee5c37cad4390385db5db5a8e81470e42e8f1401b0358d7390095d6f681b410f2c4a0c496c6ff9ebd775423c7785cdace7bcdad76c7bee283df3d9718c0f20
+ languageName: node
+ linkType: hard
+
+"ufo@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "ufo@npm:1.1.1"
+ checksum: 6bd210ed93d8c0dedd76c456b1d1dfb0e3b08c2216ee6080e61f0f545de0bac24b3d3a5530cd6a403810855f8d8fc3922583965296142e04cfc287442635e6c7
+ languageName: node
+ linkType: hard
+
+"unbuild@npm:^1.1.2":
+ version: 1.1.2
+ resolution: "unbuild@npm:1.1.2"
+ dependencies:
+ "@rollup/plugin-alias": ^4.0.3
+ "@rollup/plugin-commonjs": ^24.0.1
+ "@rollup/plugin-json": ^6.0.0
+ "@rollup/plugin-node-resolve": ^15.0.1
+ "@rollup/plugin-replace": ^5.0.2
+ "@rollup/pluginutils": ^5.0.2
+ chalk: ^5.2.0
+ consola: ^2.15.3
+ defu: ^6.1.2
+ esbuild: ^0.17.8
+ globby: ^13.1.3
+ hookable: ^5.4.2
+ jiti: ^1.17.1
+ magic-string: ^0.29.0
+ mkdist: ^1.1.1
+ mlly: ^1.1.1
+ mri: ^1.2.0
+ pathe: ^1.1.0
+ pkg-types: ^1.0.2
+ pretty-bytes: ^6.1.0
+ rollup: ^3.15.0
+ rollup-plugin-dts: ^5.2.0
+ scule: ^1.0.0
+ typescript: ^4.9.5
+ untyped: ^1.2.2
+ bin:
+ unbuild: dist/cli.mjs
+ checksum: ca7ef7f37013de453ecf3eeb0a7a8cd9c907d7135e8511893b13947c58b8d75466414b6762f0d986773ad71ff674da0d5c7637c9dd9562fabd72d5a0d8863ec2
+ languageName: node
+ linkType: hard
+
+"unhead@npm:1.1.22":
+ version: 1.1.22
+ resolution: "unhead@npm:1.1.22"
+ dependencies:
+ "@unhead/dom": 1.1.22
+ "@unhead/schema": 1.1.22
+ "@unhead/shared": 1.1.22
+ hookable: ^5.4.2
+ checksum: bd2086c0e774a52efe98fee3accc1d8fe745471da421f272db1fa93bddf87e66e876b67827d190f858c3c57bf2826480af6a64321663186877316bc2c79e9ea6
+ languageName: node
+ linkType: hard
+
+"unique-filename@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "unique-filename@npm:2.0.1"
+ dependencies:
+ unique-slug: ^3.0.0
+ checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f
+ languageName: node
+ linkType: hard
+
+"unique-slug@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "unique-slug@npm:3.0.0"
+ dependencies:
+ imurmurhash: ^0.1.4
+ checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c
+ languageName: node
+ linkType: hard
+
+"universalify@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "universalify@npm:2.0.0"
+ checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44
+ languageName: node
+ linkType: hard
+
+"untyped@npm:^1.2.2":
+ version: 1.2.2
+ resolution: "untyped@npm:1.2.2"
+ dependencies:
+ "@babel/core": ^7.20.12
+ "@babel/standalone": ^7.20.12
+ "@babel/types": ^7.20.7
+ scule: ^1.0.0
+ checksum: 556bb7a3ee10f580c4e775ecbd02130e38635b290d312e65bbc29973a07346f34457850515e8e68add5ced79676336ef92574ca9a21fe1b0ae528a6838df8a74
+ languageName: node
+ linkType: hard
+
+"update-browserslist-db@npm:^1.0.10":
+ version: 1.0.10
+ resolution: "update-browserslist-db@npm:1.0.10"
+ dependencies:
+ escalade: ^3.1.1
+ picocolors: ^1.0.0
+ peerDependencies:
+ browserslist: ">= 4.21.0"
+ bin:
+ browserslist-lint: cli.js
+ checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0
+ languageName: node
+ linkType: hard
+
+"util-deprecate@npm:^1.0.1":
+ version: 1.0.2
+ resolution: "util-deprecate@npm:1.0.2"
+ checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2
+ languageName: node
+ linkType: hard
+
+"vite-node@npm:0.29.2":
+ version: 0.29.2
+ resolution: "vite-node@npm:0.29.2"
+ dependencies:
+ cac: ^6.7.14
+ debug: ^4.3.4
+ mlly: ^1.1.0
+ pathe: ^1.1.0
+ picocolors: ^1.0.0
+ vite: ^3.0.0 || ^4.0.0
+ bin:
+ vite-node: vite-node.mjs
+ checksum: 0f231e4d61a5c84e981d098cc1ce878300b8d690cb9e24e270e19fb116800dfd3530a1d8d74a8b25859ce6e80981469d6a1b26b6da4c2e5f8a0f7219f37935a6
+ languageName: node
+ linkType: hard
+
+"vite@npm:^3.0.0 || ^4.0.0, vite@npm:^4.1.4":
+ version: 4.1.4
+ resolution: "vite@npm:4.1.4"
+ dependencies:
+ esbuild: ^0.16.14
+ fsevents: ~2.3.2
+ postcss: ^8.4.21
+ resolve: ^1.22.1
+ rollup: ^3.10.0
+ peerDependencies:
+ "@types/node": ">= 14"
+ less: "*"
+ sass: "*"
+ stylus: "*"
+ sugarss: "*"
+ terser: ^5.4.0
+ dependenciesMeta:
+ fsevents:
+ optional: true
+ peerDependenciesMeta:
+ "@types/node":
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ bin:
+ vite: bin/vite.js
+ checksum: 50a9a1f2e29e0ee8fefdec60314d38fb9b746df0bb6ae5a8114014b5bfd95e0fc9b29c0d5e73939361ba53af7eb66c7d20c5656bbe53a783e96540bd3b907c47
+ languageName: node
+ linkType: hard
+
+"vitest@npm:^0.29.2":
+ version: 0.29.2
+ resolution: "vitest@npm:0.29.2"
+ dependencies:
+ "@types/chai": ^4.3.4
+ "@types/chai-subset": ^1.3.3
+ "@types/node": "*"
+ "@vitest/expect": 0.29.2
+ "@vitest/runner": 0.29.2
+ "@vitest/spy": 0.29.2
+ "@vitest/utils": 0.29.2
+ acorn: ^8.8.1
+ acorn-walk: ^8.2.0
+ cac: ^6.7.14
+ chai: ^4.3.7
+ debug: ^4.3.4
+ local-pkg: ^0.4.2
+ pathe: ^1.1.0
+ picocolors: ^1.0.0
+ source-map: ^0.6.1
+ std-env: ^3.3.1
+ strip-literal: ^1.0.0
+ tinybench: ^2.3.1
+ tinypool: ^0.3.1
+ tinyspy: ^1.0.2
+ vite: ^3.0.0 || ^4.0.0
+ vite-node: 0.29.2
+ why-is-node-running: ^2.2.2
+ peerDependencies:
+ "@edge-runtime/vm": "*"
+ "@vitest/browser": "*"
+ "@vitest/ui": "*"
+ happy-dom: "*"
+ jsdom: "*"
+ peerDependenciesMeta:
+ "@edge-runtime/vm":
+ optional: true
+ "@vitest/browser":
+ optional: true
+ "@vitest/ui":
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+ bin:
+ vitest: vitest.mjs
+ checksum: d3b1069cc80f52649dead896f2dcd77b604724f64f35e0bb9478d5078547302bd4a13c18bc69d078516dd136e7aca343e2fe584c92d658e9545f40ca9cfb406e
+ languageName: node
+ linkType: hard
+
+"vue-demi@npm:*":
+ version: 0.13.11
+ resolution: "vue-demi@npm:0.13.11"
+ peerDependencies:
+ "@vue/composition-api": ^1.0.0-rc.1
+ vue: ^3.0.0-0 || ^2.6.0
+ peerDependenciesMeta:
+ "@vue/composition-api":
+ optional: true
+ bin:
+ vue-demi-fix: bin/vue-demi-fix.js
+ vue-demi-switch: bin/vue-demi-switch.js
+ checksum: 0fbe9bf8ab7fe498ffa2bbd0cfc8f6f43a6bbaa5eda3e20ef1b70dca7c8b0ddb216a7ff2f632b694fe0735805638975abb441c621ec0bd2e6d4656353f316c15
+ languageName: node
+ linkType: hard
+
+"vue3-lazy-hydration@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "vue3-lazy-hydration@npm:1.2.1"
+ peerDependencies:
+ vue: ">=3.0.0"
+ checksum: 59746b8883e28a9539a4c567069c996d72a3e2e636ff4c0de9f92d541e0237f5251645a12b397cf61ab7729a8b670ed240fccdf04a06e2c4c45c62c275a5a73c
+ languageName: node
+ linkType: hard
+
+"vue@npm:^3.2.47":
+ version: 3.2.47
+ resolution: "vue@npm:3.2.47"
+ dependencies:
+ "@vue/compiler-dom": 3.2.47
+ "@vue/compiler-sfc": 3.2.47
+ "@vue/runtime-dom": 3.2.47
+ "@vue/server-renderer": 3.2.47
+ "@vue/shared": 3.2.47
+ checksum: 3b586f61fd2cdfdd24459a946a2831c0f164056993cc005badde4fea10d53e430f1cedf1b62d52a6992b58fe656fc5fc67b32f594a2832dfe440c6db46d6f158
+ languageName: node
+ linkType: hard
+
+"webidl-conversions@npm:^3.0.0":
+ version: 3.0.1
+ resolution: "webidl-conversions@npm:3.0.1"
+ checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c
+ languageName: node
+ linkType: hard
+
+"webidl-conversions@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "webidl-conversions@npm:7.0.0"
+ checksum: f05588567a2a76428515333eff87200fae6c83c3948a7482ebb109562971e77ef6dc49749afa58abb993391227c5697b3ecca52018793e0cb4620a48f10bd21b
+ languageName: node
+ linkType: hard
+
+"whatwg-encoding@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "whatwg-encoding@npm:2.0.0"
+ dependencies:
+ iconv-lite: 0.6.3
+ checksum: 7087810c410aa9b689cbd6af8773341a53cdc1f3aae2a882c163bd5522ec8ca4cdfc269aef417a5792f411807d5d77d50df4c24e3abb00bb60192858a40cc675
+ languageName: node
+ linkType: hard
+
+"whatwg-mimetype@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "whatwg-mimetype@npm:3.0.0"
+ checksum: ce08bbb36b6aaf64f3a84da89707e3e6a31e5ab1c1a2379fd68df79ba712a4ab090904f0b50e6693b0dafc8e6343a6157e40bf18fdffd26e513cf95ee2a59824
+ languageName: node
+ linkType: hard
+
+"whatwg-url@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "whatwg-url@npm:5.0.0"
+ dependencies:
+ tr46: ~0.0.3
+ webidl-conversions: ^3.0.0
+ checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c
+ languageName: node
+ linkType: hard
+
+"which@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "which@npm:2.0.2"
+ dependencies:
+ isexe: ^2.0.0
+ bin:
+ node-which: ./bin/node-which
+ checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1
+ languageName: node
+ linkType: hard
+
+"why-is-node-running@npm:^2.2.2":
+ version: 2.2.2
+ resolution: "why-is-node-running@npm:2.2.2"
+ dependencies:
+ siginfo: ^2.0.0
+ stackback: 0.0.2
+ bin:
+ why-is-node-running: cli.js
+ checksum: 50820428f6a82dfc3cbce661570bcae9b658723217359b6037b67e495255409b4c8bc7931745f5c175df71210450464517cab32b2f7458ac9c40b4925065200a
+ languageName: node
+ linkType: hard
+
+"wide-align@npm:^1.1.5":
+ version: 1.1.5
+ resolution: "wide-align@npm:1.1.5"
+ dependencies:
+ string-width: ^1.0.2 || 2 || 3 || 4
+ checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3
+ languageName: node
+ linkType: hard
+
+"wrappy@npm:1":
+ version: 1.0.2
+ resolution: "wrappy@npm:1.0.2"
+ checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5
+ languageName: node
+ linkType: hard
+
+"yallist@npm:^3.0.2":
+ version: 3.1.1
+ resolution: "yallist@npm:3.1.1"
+ checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d
+ languageName: node
+ linkType: hard
+
+"yallist@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "yallist@npm:4.0.0"
+ checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5
+ languageName: node
+ linkType: hard
+
+"yocto-queue@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "yocto-queue@npm:1.0.0"
+ checksum: 2cac84540f65c64ccc1683c267edce396b26b1e931aa429660aefac8fbe0188167b7aee815a3c22fa59a28a58d898d1a2b1825048f834d8d629f4c2a5d443801
+ languageName: node
+ linkType: hard
+
+"zhead@npm:^2.0.4":
+ version: 2.0.4
+ resolution: "zhead@npm:2.0.4"
+ checksum: a5b506a6945e93a2a3356d7944a61f9b9b2bf303ee26b10075790a262039cae9b4af7a2ffb8fb02c43a3d9bbfd93598001da8c4d448f0044797a14ae114016ab
+ languageName: node
+ linkType: hard