several fixes and initial preparation for docker deployment with legacy support
parent
4293f44262
commit
6d1b0b7c9c
@ -0,0 +1,5 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"sharp": "^0.32.1"
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
FROM node:18-alpine
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
COPY package*.json ./
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN apk add bash
|
||||
RUN npm ci --platform=linuxmusl --arch=x64 --ignore-scripts=false --foreground-scripts --verbose
|
||||
# RUN npm run build
|
||||
|
||||
ENV NITRO_HOST=0.0.0.0
|
||||
ENV NITRO_PORT=4000
|
||||
|
||||
EXPOSE 4000
|
||||
|
||||
# ENTRYPOINT ["npm", "run", "build", "node", ".output/server/index.mjs"]
|
@ -0,0 +1,313 @@
|
||||
<script>
|
||||
export default {
|
||||
name: 'CollapseTransition',
|
||||
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: 'collapse',
|
||||
},
|
||||
dimension: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: 'height',
|
||||
validator: (value) => {
|
||||
return ['height', 'width'].includes(value)
|
||||
},
|
||||
},
|
||||
duration: {
|
||||
type: Number,
|
||||
required: false,
|
||||
default: 300,
|
||||
},
|
||||
easing: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: 'ease-in-out',
|
||||
},
|
||||
},
|
||||
|
||||
emits: ['before-appear', 'appear', 'after-appear', 'appear-cancelled', 'before-enter', 'enter', 'after-enter', 'enter-cancelled', 'before-leave', 'leave', 'after-leave', 'leave-cancelled'],
|
||||
|
||||
data() {
|
||||
return {
|
||||
cachedStyles: null,
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
transition() {
|
||||
const transitions = []
|
||||
|
||||
Object.keys(this.cachedStyles).forEach((key) => {
|
||||
transitions.push(
|
||||
`${this.convertToCssProperty(key)} ${this.duration}ms ${this.easing}`,
|
||||
)
|
||||
})
|
||||
|
||||
return transitions.join(', ')
|
||||
},
|
||||
},
|
||||
|
||||
watch: {
|
||||
dimension() {
|
||||
this.clearCachedDimensions()
|
||||
},
|
||||
},
|
||||
|
||||
methods: {
|
||||
beforeAppear(el) {
|
||||
// Emit the event to the parent
|
||||
this.$emit('before-appear', el)
|
||||
},
|
||||
|
||||
appear(el) {
|
||||
// Emit the event to the parent
|
||||
this.$emit('appear', el)
|
||||
},
|
||||
|
||||
afterAppear(el) {
|
||||
// Emit the event to the parent
|
||||
this.$emit('after-appear', el)
|
||||
},
|
||||
|
||||
appearCancelled(el) {
|
||||
// Emit the event to the parent
|
||||
this.$emit('appear-cancelled', el)
|
||||
},
|
||||
|
||||
beforeEnter(el) {
|
||||
// Emit the event to the parent
|
||||
this.$emit('before-enter', el)
|
||||
},
|
||||
|
||||
enter(el, done) {
|
||||
// Because width and height may be 'auto',
|
||||
// first detect and cache the dimensions
|
||||
this.detectAndCacheDimensions(el)
|
||||
|
||||
// The order of applying styles is important:
|
||||
// - 1. Set styles for state before transition
|
||||
// - 2. Force repaint
|
||||
// - 3. Add transition style
|
||||
// - 4. Set styles for state after transition
|
||||
// If the order is not right and you open any 2nd level submenu
|
||||
// for the first time, the transition will not work.
|
||||
this.setClosedDimensions(el)
|
||||
this.hideOverflow(el)
|
||||
this.forceRepaint(el)
|
||||
this.setTransition(el)
|
||||
this.setOpenedDimensions(el)
|
||||
|
||||
// Emit the event to the parent
|
||||
this.$emit('enter', el, done)
|
||||
|
||||
// Call done() when the transition ends
|
||||
// to trigger the @after-enter event.
|
||||
setTimeout(done, this.duration)
|
||||
},
|
||||
|
||||
afterEnter(el) {
|
||||
// Clean up inline styles
|
||||
this.unsetOverflow(el)
|
||||
this.unsetTransition(el)
|
||||
this.unsetDimensions(el)
|
||||
this.clearCachedDimensions()
|
||||
|
||||
// Emit the event to the parent
|
||||
this.$emit('after-enter', el)
|
||||
},
|
||||
|
||||
enterCancelled(el) {
|
||||
// Emit the event to the parent
|
||||
this.$emit('enter-cancelled', el)
|
||||
},
|
||||
|
||||
beforeLeave(el) {
|
||||
// Emit the event to the parent
|
||||
this.$emit('before-leave', el)
|
||||
},
|
||||
|
||||
leave(el, done) {
|
||||
// For some reason, @leave triggered when starting
|
||||
// from open state on page load. So for safety,
|
||||
// check if the dimensions have been cached.
|
||||
this.detectAndCacheDimensions(el)
|
||||
|
||||
// The order of applying styles is less important
|
||||
// than in the enter phase, as long as we repaint
|
||||
// before setting the closed dimensions.
|
||||
// But it is probably best to use the same
|
||||
// order as the enter phase.
|
||||
this.setOpenedDimensions(el)
|
||||
this.hideOverflow(el)
|
||||
this.forceRepaint(el)
|
||||
this.setTransition(el)
|
||||
this.setClosedDimensions(el)
|
||||
|
||||
// Emit the event to the parent
|
||||
this.$emit('leave', el, done)
|
||||
|
||||
// Call done() when the transition ends
|
||||
// to trigger the @after-leave event.
|
||||
// This will also cause v-show
|
||||
// to reapply 'display: none'.
|
||||
setTimeout(done, this.duration)
|
||||
},
|
||||
|
||||
afterLeave(el) {
|
||||
// Clean up inline styles
|
||||
this.unsetOverflow(el)
|
||||
this.unsetTransition(el)
|
||||
this.unsetDimensions(el)
|
||||
this.clearCachedDimensions()
|
||||
|
||||
// Emit the event to the parent
|
||||
this.$emit('after-leave', el)
|
||||
},
|
||||
|
||||
leaveCancelled(el) {
|
||||
// Emit the event to the parent
|
||||
this.$emit('leave-cancelled', el)
|
||||
},
|
||||
|
||||
detectAndCacheDimensions(el) {
|
||||
// Cache actual dimensions
|
||||
// only once to void invalid values when
|
||||
// triggering during a transition
|
||||
if (this.cachedStyles)
|
||||
return
|
||||
|
||||
const visibility = el.style.visibility
|
||||
const display = el.style.display
|
||||
|
||||
// Trick to get the width and
|
||||
// height of a hidden element
|
||||
el.style.visibility = 'hidden'
|
||||
el.style.display = ''
|
||||
|
||||
this.cachedStyles = this.detectRelevantDimensions(el)
|
||||
|
||||
// Restore any original styling
|
||||
el.style.visibility = visibility
|
||||
el.style.display = display
|
||||
},
|
||||
|
||||
clearCachedDimensions() {
|
||||
this.cachedStyles = null
|
||||
},
|
||||
|
||||
detectRelevantDimensions(el) {
|
||||
// These properties will be transitioned
|
||||
if (this.dimension === 'height') {
|
||||
return {
|
||||
height: `${el.offsetHeight}px`,
|
||||
paddingTop:
|
||||
el.style.paddingTop || this.getCssValue(el, 'padding-top'),
|
||||
paddingBottom:
|
||||
el.style.paddingBottom || this.getCssValue(el, 'padding-bottom'),
|
||||
}
|
||||
}
|
||||
|
||||
if (this.dimension === 'width') {
|
||||
return {
|
||||
width: `${el.offsetWidth}px`,
|
||||
paddingLeft:
|
||||
el.style.paddingLeft || this.getCssValue(el, 'padding-left'),
|
||||
paddingRight:
|
||||
el.style.paddingRight || this.getCssValue(el, 'padding-right'),
|
||||
}
|
||||
}
|
||||
|
||||
return {}
|
||||
},
|
||||
|
||||
setTransition(el) {
|
||||
el.style.transition = this.transition
|
||||
},
|
||||
|
||||
unsetTransition(el) {
|
||||
el.style.transition = ''
|
||||
},
|
||||
|
||||
hideOverflow(el) {
|
||||
el.style.overflow = 'hidden'
|
||||
},
|
||||
|
||||
unsetOverflow(el) {
|
||||
el.style.overflow = ''
|
||||
},
|
||||
|
||||
setClosedDimensions(el) {
|
||||
Object.keys(this.cachedStyles).forEach((key) => {
|
||||
el.style[key] = '0'
|
||||
})
|
||||
},
|
||||
|
||||
setOpenedDimensions(el) {
|
||||
Object.keys(this.cachedStyles).forEach((key) => {
|
||||
el.style[key] = this.cachedStyles[key]
|
||||
})
|
||||
},
|
||||
|
||||
unsetDimensions(el) {
|
||||
Object.keys(this.cachedStyles).forEach((key) => {
|
||||
el.style[key] = ''
|
||||
})
|
||||
},
|
||||
|
||||
forceRepaint(el) {
|
||||
// Force repaint to make sure the animation is triggered correctly.
|
||||
// Thanks: https://markus.oberlehner.net/blog/transition-to-height-auto-with-vue/
|
||||
// eslint-disable-next-line no-unused-expressions
|
||||
getComputedStyle(el)[this.dimension]
|
||||
},
|
||||
|
||||
getCssValue(el, style) {
|
||||
return getComputedStyle(el, null).getPropertyValue(style)
|
||||
},
|
||||
|
||||
convertToCssProperty(style) {
|
||||
// Example: convert 'paddingTop' to 'padding-top'
|
||||
// Thanks: https://gist.github.com/tan-yuki/3450323
|
||||
const upperChars = style.match(/([A-Z])/g)
|
||||
|
||||
if (!upperChars)
|
||||
return style
|
||||
|
||||
for (let i = 0, n = upperChars.length; i < n; i++) {
|
||||
style = style.replace(
|
||||
new RegExp(upperChars[i]),
|
||||
`-${upperChars[i].toLowerCase()}`,
|
||||
)
|
||||
}
|
||||
|
||||
if (style.slice(0, 1) === '-')
|
||||
style = style.slice(1)
|
||||
|
||||
return style
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<transition
|
||||
:name="name"
|
||||
@before-appear="beforeAppear"
|
||||
@appear="appear"
|
||||
@after-appear="afterAppear"
|
||||
@appear-cancelled="appearCancelled"
|
||||
@before-enter="beforeEnter"
|
||||
@enter="enter"
|
||||
@after-enter="afterEnter"
|
||||
@enter-cancelled="enterCancelled"
|
||||
@before-leave="beforeLeave"
|
||||
@leave="leave"
|
||||
@after-leave="afterLeave"
|
||||
@leave-cancelled="leaveCancelled"
|
||||
>
|
||||
<slot />
|
||||
</transition>
|
||||
</template>
|
@ -0,0 +1,25 @@
|
||||
import type { Story } from '@storybook/vue3'
|
||||
import Collapsible from './Collapsible.vue'
|
||||
|
||||
export default {
|
||||
title: 'Components/Collapsible',
|
||||
component: Collapsible,
|
||||
args: {
|
||||
modelValue: false,
|
||||
title: 'Item',
|
||||
content: 'lorem ipsum dolor sit amet',
|
||||
},
|
||||
}
|
||||
|
||||
const Template: Story = (args, { argTypes }) => ({
|
||||
components: { Collapsible },
|
||||
setup() {
|
||||
return { args, argTypes }
|
||||
},
|
||||
template: `
|
||||
<Collapsible v-bind="args"/>
|
||||
`,
|
||||
})
|
||||
|
||||
export const Default = Template.bind({})
|
||||
Default.args = {}
|
@ -0,0 +1,88 @@
|
||||
<script lang="ts" setup>
|
||||
import { Disclosure, DisclosureButton, DisclosurePanel } from '@headlessui/vue'
|
||||
import { ref, toRefs, watch } from 'vue'
|
||||
import CollapseTransition from './CollapseTransition.vue'
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
modelValue?: boolean
|
||||
title: string
|
||||
content?: string
|
||||
classes?: {
|
||||
wrapper?: string
|
||||
button?: string
|
||||
title?: string
|
||||
panel?: string
|
||||
}
|
||||
}>(),
|
||||
{
|
||||
modelValue: false,
|
||||
},
|
||||
)
|
||||
|
||||
const emit = defineEmits([
|
||||
'update:modelValue',
|
||||
'change',
|
||||
'toggle',
|
||||
'open',
|
||||
'close',
|
||||
])
|
||||
|
||||
const { modelValue } = toRefs(props)
|
||||
const isOpen = ref(modelValue.value)
|
||||
|
||||
watch(modelValue, (val) => {
|
||||
isOpen.value = val
|
||||
})
|
||||
|
||||
watch(isOpen, (val) => {
|
||||
emit('update:modelValue', val)
|
||||
emit('change', val)
|
||||
|
||||
if (val)
|
||||
emit('open')
|
||||
else
|
||||
emit('close')
|
||||
})
|
||||
|
||||
const toggle = () => {
|
||||
emit('toggle')
|
||||
isOpen.value = !isOpen.value
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<Disclosure v-slot="{ open }" as="div">
|
||||
<DisclosureButton
|
||||
class="
|
||||
flex
|
||||
items-center
|
||||
justify-between
|
||||
w-full
|
||||
text-left
|
||||
rounded-lg
|
||||
focus:outline-none
|
||||
focus-visible:ring
|
||||
focus-visible:ring-blue-50
|
||||
focus-visible:ring-opacity-75
|
||||
"
|
||||
:class="classes?.button"
|
||||
type="button"
|
||||
@click="toggle"
|
||||
>
|
||||
<slot name="title"></slot>
|
||||
<Icon
|
||||
name="heroicons:chevron-down"
|
||||
:class="open ? 'transform rotate-180' : ''"
|
||||
class="w-5 h-5"
|
||||
/>
|
||||
</DisclosureButton>
|
||||
<CollapseTransition>
|
||||
<div v-show="isOpen">
|
||||
<DisclosurePanel static class="pb-2 text-15" :class="classes?.panel">
|
||||
<slot name="content"></slot>
|
||||
</DisclosurePanel>
|
||||
</div>
|
||||
</CollapseTransition>
|
||||
</Disclosure>
|
||||
</template>
|
@ -0,0 +1,38 @@
|
||||
import type { Story } from '@storybook/vue3'
|
||||
import CollapsibleGroup from './CollapsibleGroup.vue'
|
||||
|
||||
const genItems = (length = 5): any[] =>
|
||||
Array.from({ length }, (_, v) => ({
|
||||
title: `Item ${v + 1}`,
|
||||
content: `lorem ipsum ${v + 1}`,
|
||||
}))
|
||||
|
||||
const items = genItems(5)
|
||||
|
||||
export default {
|
||||
title: 'Components/CollapsibleGroup',
|
||||
component: CollapsibleGroup,
|
||||
args: {
|
||||
modelValue: false,
|
||||
accordion: false,
|
||||
items,
|
||||
},
|
||||
}
|
||||
|
||||
const Template: Story = (args, { argTypes }) => ({
|
||||
components: { CollapsibleGroup },
|
||||
setup() {
|
||||
return { args, argTypes }
|
||||
},
|
||||
template: `
|
||||
<CollapsibleGroup v-bind="args"/>
|
||||
`,
|
||||
})
|
||||
|
||||
export const Default = Template.bind({})
|
||||
Default.args = {}
|
||||
|
||||
export const Accordion = Template.bind({})
|
||||
Accordion.args = {
|
||||
accordion: true,
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
<script lang="ts" setup>
|
||||
import { Disclosure, DisclosureButton, DisclosurePanel } from '@headlessui/vue'
|
||||
import { ref, toRefs, watch } from 'vue'
|
||||
import Icon from '../Icon/index.vue'
|
||||
import Collapsible from './Collapsible.vue'
|
||||
|
||||
interface CollapsibleItem {
|
||||
title: string
|
||||
content: string
|
||||
isOpen?: boolean
|
||||
}
|
||||
|
||||
const props
|
||||
= defineProps<{
|
||||
items?: CollapsibleItem[]
|
||||
classes?: {
|
||||
wrapper?: string
|
||||
button?: string
|
||||
title?: string
|
||||
panel?: string
|
||||
}
|
||||
accordion?: boolean
|
||||
}>()
|
||||
|
||||
const { items } = toRefs(props)
|
||||
|
||||
const children = ref(props.items)
|
||||
|
||||
watch(items, (val) => {
|
||||
children.value = val
|
||||
})
|
||||
|
||||
const onToggle = (item: CollapsibleItem) => {
|
||||
if (props.accordion) {
|
||||
children.value.forEach((child) => {
|
||||
child.isOpen = false
|
||||
})
|
||||
item.isOpen = true
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="w-full p-2" :class="classes?.wrapper">
|
||||
<slot>
|
||||
<Collapsible
|
||||
v-for="(item, idx) in children"
|
||||
:key="idx"
|
||||
v-bind="item"
|
||||
v-model="item.isOpen"
|
||||
@toggle="onToggle(item)"
|
||||
/>
|
||||
</slot>
|
||||
</div>
|
||||
</template>
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,310 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
base64-js@^1.3.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
|
||||
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
|
||||
|
||||
bl@^4.0.3:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
|
||||
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
|
||||
dependencies:
|
||||
buffer "^5.5.0"
|
||||
inherits "^2.0.4"
|
||||
readable-stream "^3.4.0"
|
||||
|
||||
buffer@^5.5.0:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
|
||||
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
|
||||
dependencies:
|
||||
base64-js "^1.3.1"
|
||||
ieee754 "^1.1.13"
|
||||
|
||||
chownr@^1.1.1:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
|
||||
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
|
||||
|
||||
color-convert@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
|
||||
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
|
||||
dependencies:
|
||||
color-name "~1.1.4"
|
||||
|
||||
color-name@^1.0.0, color-name@~1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||
|
||||
color-string@^1.9.0:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
|
||||
integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
|
||||
dependencies:
|
||||
color-name "^1.0.0"
|
||||
simple-swizzle "^0.2.2"
|
||||
|
||||
color@^4.2.3:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a"
|
||||
integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==
|
||||
dependencies:
|
||||
color-convert "^2.0.1"
|
||||
color-string "^1.9.0"
|
||||
|
||||
decompress-response@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
|
||||
integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
|
||||
dependencies:
|
||||
mimic-response "^3.1.0"
|
||||
|
||||
deep-extend@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
|
||||
|
||||
detect-libc@^2.0.0, detect-libc@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd"
|
||||
integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==
|
||||
|
||||
end-of-stream@^1.1.0, end-of-stream@^1.4.1:
|
||||
version "1.4.4"
|
||||
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
|
||||
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
|
||||
dependencies:
|
||||
once "^1.4.0"
|
||||
|
||||
expand-template@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
|
||||
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
|
||||
|
||||
fs-constants@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
||||
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
|
||||
|
||||
github-from-package@0.0.0:
|
||||
version "0.0.0"
|
||||
resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
|
||||
integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==
|
||||
|
||||
ieee754@^1.1.13:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
|
||||
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
|
||||
|
||||
inherits@^2.0.3, inherits@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
ini@~1.3.0:
|
||||
version "1.3.8"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
|
||||
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
|
||||
|
||||
is-arrayish@^0.3.1:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
|
||||
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
|
||||
|
||||
lru-cache@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
|
||||
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
mimic-response@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
|
||||
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
|
||||
|
||||
minimist@^1.2.0, minimist@^1.2.3:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
|
||||
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
|
||||
|
||||
mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
|
||||
version "0.5.3"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
|
||||
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
|
||||
|
||||
napi-build-utils@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
|
||||
integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
|
||||
|
||||
node-abi@^3.3.0:
|
||||
version "3.45.0"
|
||||
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.45.0.tgz#f568f163a3bfca5aacfce1fbeee1fa2cc98441f5"
|
||||
integrity sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==
|
||||
dependencies:
|
||||
semver "^7.3.5"
|
||||
|
||||
node-addon-api@^6.1.0:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76"
|
||||
integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==
|
||||
|
||||
once@^1.3.1, once@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
|
||||
dependencies:
|
||||
wrappy "1"
|
||||
|
||||
prebuild-install@^7.1.1:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45"
|
||||
integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==
|
||||
dependencies:
|
||||
detect-libc "^2.0.0"
|
||||
expand-template "^2.0.3"
|
||||
github-from-package "0.0.0"
|
||||
minimist "^1.2.3"
|
||||
mkdirp-classic "^0.5.3"
|
||||
napi-build-utils "^1.0.1"
|
||||
node-abi "^3.3.0"
|
||||
pump "^3.0.0"
|
||||
rc "^1.2.7"
|
||||
simple-get "^4.0.0"
|
||||
tar-fs "^2.0.0"
|
||||
tunnel-agent "^0.6.0"
|
||||
|
||||
pump@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
|
||||
integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
|
||||
dependencies:
|
||||
end-of-stream "^1.1.0"
|
||||
once "^1.3.1"
|
||||
|
||||
rc@^1.2.7:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
|
||||
dependencies:
|
||||
deep-extend "^0.6.0"
|
||||
ini "~1.3.0"
|
||||
minimist "^1.2.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
|
||||
readable-stream@^3.1.1, readable-stream@^3.4.0:
|
||||
version "3.6.2"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
|
||||
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
|
||||
dependencies:
|
||||
inherits "^2.0.3"
|
||||
string_decoder "^1.1.1"
|
||||
util-deprecate "^1.0.1"
|
||||
|
||||
safe-buffer@^5.0.1, safe-buffer@~5.2.0:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
||||
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
|
||||
|
||||
semver@^7.3.5, semver@^7.5.0:
|
||||
version "7.5.2"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.2.tgz#5b851e66d1be07c1cdaf37dfc856f543325a2beb"
|
||||
integrity sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
sharp@^0.32.1:
|
||||
version "0.32.1"
|
||||
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.1.tgz#41aa0d0b2048b2e0ee453d9fcb14ec1f408390fe"
|
||||
integrity sha512-kQTFtj7ldpUqSe8kDxoGLZc1rnMFU0AO2pqbX6pLy3b7Oj8ivJIdoKNwxHVQG2HN6XpHPJqCSM2nsma2gOXvOg==
|
||||
dependencies:
|
||||
color "^4.2.3"
|
||||
detect-libc "^2.0.1"
|
||||
node-addon-api "^6.1.0"
|
||||
prebuild-install "^7.1.1"
|
||||
semver "^7.5.0"
|
||||
simple-get "^4.0.1"
|
||||
tar-fs "^2.1.1"
|
||||
tunnel-agent "^0.6.0"
|
||||
|
||||
simple-concat@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
|
||||
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
|
||||
|
||||
simple-get@^4.0.0, simple-get@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
|
||||
integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
|
||||
dependencies:
|
||||
decompress-response "^6.0.0"
|
||||
once "^1.3.1"
|
||||
simple-concat "^1.0.0"
|
||||
|
||||
simple-swizzle@^0.2.2:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
|
||||
integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
|
||||
dependencies:
|
||||
is-arrayish "^0.3.1"
|
||||
|
||||
string_decoder@^1.1.1:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
|
||||
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
|
||||
dependencies:
|
||||
safe-buffer "~5.2.0"
|
||||
|
||||
strip-json-comments@~2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
|
||||
|
||||
tar-fs@^2.0.0, tar-fs@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
|
||||
integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
|
||||
dependencies:
|
||||
chownr "^1.1.1"
|
||||
mkdirp-classic "^0.5.2"
|
||||
pump "^3.0.0"
|
||||
tar-stream "^2.1.4"
|
||||
|
||||
tar-stream@^2.1.4:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
|
||||
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
|
||||
dependencies:
|
||||
bl "^4.0.3"
|
||||
end-of-stream "^1.4.1"
|
||||
fs-constants "^1.0.0"
|
||||
inherits "^2.0.3"
|
||||
readable-stream "^3.1.1"
|
||||
|
||||
tunnel-agent@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
|
||||
integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
|
||||
dependencies:
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
util-deprecate@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
|
||||
|
||||
yallist@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
|
||||
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
Loading…
Reference in New Issue