untested rewrite
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
import type { ReactNode } from "react"
|
||||
import React from "react"
|
||||
import { ReacordElement } from "../internal/element.js"
|
||||
import type { MessageOptions } from "../../internal/message"
|
||||
import { Node } from "../internal/node.js"
|
||||
import { Node } from "../node.js"
|
||||
import { ReacordElement } from "../reacord-element.js"
|
||||
|
||||
/**
|
||||
* Props for an action row
|
||||
@@ -31,17 +30,10 @@ export type ActionRowProps = {
|
||||
*/
|
||||
export function ActionRow(props: ActionRowProps) {
|
||||
return (
|
||||
<ReacordElement props={props} createNode={() => new ActionRowNode(props)}>
|
||||
<ReacordElement props={{}} createNode={() => new ActionRowNode({})}>
|
||||
{props.children}
|
||||
</ReacordElement>
|
||||
)
|
||||
}
|
||||
|
||||
class ActionRowNode extends Node<{}> {
|
||||
override modifyMessageOptions(options: MessageOptions): void {
|
||||
options.actionRows.push([])
|
||||
for (const child of this.children) {
|
||||
child.modifyMessageOptions(options)
|
||||
}
|
||||
}
|
||||
}
|
||||
export class ActionRowNode extends Node<{}> {}
|
||||
|
||||
@@ -2,8 +2,8 @@ import type { APIMessageComponentButtonInteraction } from "discord.js"
|
||||
import { randomUUID } from "node:crypto"
|
||||
import React from "react"
|
||||
import type { ComponentEvent } from "../core/component-event.js"
|
||||
import { ReacordElement } from "../internal/element.js"
|
||||
import { Node } from "../node.js"
|
||||
import { ReacordElement } from "../reacord-element.js"
|
||||
import type { ButtonSharedProps } from "./button-shared-props"
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import type { ReactNode } from "react"
|
||||
import React from "react"
|
||||
import { ReacordElement } from "../internal/element.js"
|
||||
import { Node } from "../internal/node.js"
|
||||
import { EmbedChildNode } from "./embed-child.js"
|
||||
import type { EmbedOptions } from "./embed-options"
|
||||
import { Node } from "../node.js"
|
||||
import { ReacordElement } from "../reacord-element.js"
|
||||
|
||||
/**
|
||||
* @category Embed
|
||||
@@ -21,21 +19,9 @@ export type EmbedAuthorProps = {
|
||||
export function EmbedAuthor(props: EmbedAuthorProps) {
|
||||
return (
|
||||
<ReacordElement props={props} createNode={() => new EmbedAuthorNode(props)}>
|
||||
<ReacordElement props={{}} createNode={() => new AuthorTextNode({})}>
|
||||
{props.name ?? props.children}
|
||||
</ReacordElement>
|
||||
</ReacordElement>
|
||||
)
|
||||
}
|
||||
|
||||
class EmbedAuthorNode extends EmbedChildNode<EmbedAuthorProps> {
|
||||
override modifyEmbedOptions(options: EmbedOptions): void {
|
||||
options.author = {
|
||||
name: this.children.findType(AuthorTextNode)?.text ?? "",
|
||||
url: this.props.url,
|
||||
icon_url: this.props.iconUrl,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class AuthorTextNode extends Node<{}> {}
|
||||
export class EmbedAuthorNode extends Node<EmbedAuthorProps> {}
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import type { ReactNode } from "react"
|
||||
import React from "react"
|
||||
import { ReacordElement } from "../internal/element.js"
|
||||
import { Node } from "../internal/node.js"
|
||||
import { EmbedChildNode } from "./embed-child.js"
|
||||
import type { EmbedOptions } from "./embed-options"
|
||||
import { Node } from "../node.js"
|
||||
import { ReacordElement } from "../reacord-element.js"
|
||||
|
||||
/**
|
||||
* @category Embed
|
||||
@@ -21,26 +19,26 @@ export type EmbedFieldProps = {
|
||||
export function EmbedField(props: EmbedFieldProps) {
|
||||
return (
|
||||
<ReacordElement props={props} createNode={() => new EmbedFieldNode(props)}>
|
||||
<ReacordElement props={{}} createNode={() => new FieldNameNode({})}>
|
||||
<ReacordElement props={{}} createNode={() => new EmbedFieldNameNode({})}>
|
||||
{props.name}
|
||||
</ReacordElement>
|
||||
<ReacordElement props={{}} createNode={() => new FieldValueNode({})}>
|
||||
{props.value || props.children}
|
||||
<ReacordElement props={{}} createNode={() => new EmbedFieldValueNode({})}>
|
||||
{props.value ?? props.children}
|
||||
</ReacordElement>
|
||||
</ReacordElement>
|
||||
)
|
||||
}
|
||||
|
||||
class EmbedFieldNode extends EmbedChildNode<EmbedFieldProps> {
|
||||
override modifyEmbedOptions(options: EmbedOptions): void {
|
||||
options.fields ??= []
|
||||
options.fields.push({
|
||||
name: this.children.findType(FieldNameNode)?.text ?? "",
|
||||
value: this.children.findType(FieldValueNode)?.text ?? "",
|
||||
inline: this.props.inline,
|
||||
})
|
||||
}
|
||||
export class EmbedFieldNode extends Node<EmbedFieldProps> {
|
||||
// override modifyEmbedOptions(options: EmbedOptions): void {
|
||||
// options.fields ??= []
|
||||
// options.fields.push({
|
||||
// name: this.children.findType(FieldNameNode)?.text ?? "",
|
||||
// value: this.children.findType(FieldValueNode)?.text ?? "",
|
||||
// inline: this.props.inline,
|
||||
// })
|
||||
// }
|
||||
}
|
||||
|
||||
class FieldNameNode extends Node<{}> {}
|
||||
class FieldValueNode extends Node<{}> {}
|
||||
export class EmbedFieldNameNode extends Node<{}> {}
|
||||
export class EmbedFieldValueNode extends Node<{}> {}
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import type { ReactNode } from "react"
|
||||
import React from "react"
|
||||
import { ReacordElement } from "../internal/element.js"
|
||||
import { Node } from "../internal/node.js"
|
||||
import { EmbedChildNode } from "./embed-child.js"
|
||||
import type { EmbedOptions } from "./embed-options"
|
||||
import { Node } from "../node.js"
|
||||
import { ReacordElement } from "../reacord-element.js"
|
||||
|
||||
/**
|
||||
* @category Embed
|
||||
@@ -21,25 +19,21 @@ export type EmbedFooterProps = {
|
||||
export function EmbedFooter({ text, children, ...props }: EmbedFooterProps) {
|
||||
return (
|
||||
<ReacordElement props={props} createNode={() => new EmbedFooterNode(props)}>
|
||||
<ReacordElement props={{}} createNode={() => new FooterTextNode({})}>
|
||||
{text ?? children}
|
||||
</ReacordElement>
|
||||
</ReacordElement>
|
||||
)
|
||||
}
|
||||
|
||||
class EmbedFooterNode extends EmbedChildNode<
|
||||
export class EmbedFooterNode extends Node<
|
||||
Omit<EmbedFooterProps, "text" | "children">
|
||||
> {
|
||||
override modifyEmbedOptions(options: EmbedOptions): void {
|
||||
options.footer = {
|
||||
text: this.children.findType(FooterTextNode)?.text ?? "",
|
||||
icon_url: this.props.iconUrl,
|
||||
}
|
||||
options.timestamp = this.props.timestamp
|
||||
? new Date(this.props.timestamp).toISOString()
|
||||
: undefined
|
||||
}
|
||||
// override modifyEmbedOptions(options: EmbedOptions): void {
|
||||
// options.footer = {
|
||||
// text: this.children.findType(FooterTextNode)?.text ?? "",
|
||||
// icon_url: this.props.iconUrl,
|
||||
// }
|
||||
// options.timestamp = this.props.timestamp
|
||||
// ? new Date(this.props.timestamp).toISOString()
|
||||
// : undefined
|
||||
// }
|
||||
}
|
||||
|
||||
class FooterTextNode extends Node<{}> {}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import React from "react"
|
||||
import { ReacordElement } from "../internal/element.js"
|
||||
import { EmbedChildNode } from "./embed-child.js"
|
||||
import type { EmbedOptions } from "./embed-options"
|
||||
import { Node } from "../node"
|
||||
import { ReacordElement } from "../reacord-element.js"
|
||||
|
||||
/**
|
||||
* @category Embed
|
||||
@@ -22,8 +21,4 @@ export function EmbedImage(props: EmbedImageProps) {
|
||||
)
|
||||
}
|
||||
|
||||
class EmbedImageNode extends EmbedChildNode<EmbedImageProps> {
|
||||
override modifyEmbedOptions(options: EmbedOptions): void {
|
||||
options.image = { url: this.props.url }
|
||||
}
|
||||
}
|
||||
export class EmbedImageNode extends Node<EmbedImageProps> {}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import React from "react"
|
||||
import { ReacordElement } from "../internal/element.js"
|
||||
import { EmbedChildNode } from "./embed-child.js"
|
||||
import type { EmbedOptions } from "./embed-options"
|
||||
import { Node } from "../node"
|
||||
import { ReacordElement } from "../reacord-element.js"
|
||||
|
||||
/**
|
||||
* @category Embed
|
||||
@@ -22,8 +21,4 @@ export function EmbedThumbnail(props: EmbedThumbnailProps) {
|
||||
)
|
||||
}
|
||||
|
||||
class EmbedThumbnailNode extends EmbedChildNode<EmbedThumbnailProps> {
|
||||
override modifyEmbedOptions(options: EmbedOptions): void {
|
||||
options.thumbnail = { url: this.props.url }
|
||||
}
|
||||
}
|
||||
export class EmbedThumbnailNode extends Node<EmbedThumbnailProps> {}
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import type { ReactNode } from "react"
|
||||
import React from "react"
|
||||
import { ReacordElement } from "../internal/element.js"
|
||||
import { Node } from "../internal/node.js"
|
||||
import { EmbedChildNode } from "./embed-child.js"
|
||||
import type { EmbedOptions } from "./embed-options"
|
||||
import type { Except } from "type-fest"
|
||||
import { Node } from "../node"
|
||||
import { ReacordElement } from "../reacord-element.js"
|
||||
|
||||
/**
|
||||
* @category Embed
|
||||
@@ -19,18 +18,9 @@ export type EmbedTitleProps = {
|
||||
export function EmbedTitle({ children, ...props }: EmbedTitleProps) {
|
||||
return (
|
||||
<ReacordElement props={props} createNode={() => new EmbedTitleNode(props)}>
|
||||
<ReacordElement props={{}} createNode={() => new TitleTextNode({})}>
|
||||
{children}
|
||||
</ReacordElement>
|
||||
</ReacordElement>
|
||||
)
|
||||
}
|
||||
|
||||
class EmbedTitleNode extends EmbedChildNode<Omit<EmbedTitleProps, "children">> {
|
||||
override modifyEmbedOptions(options: EmbedOptions): void {
|
||||
options.title = this.children.findType(TitleTextNode)?.text ?? ""
|
||||
options.url = this.props.url
|
||||
}
|
||||
}
|
||||
|
||||
class TitleTextNode extends Node<{}> {}
|
||||
export class EmbedTitleNode extends Node<Except<EmbedTitleProps, "children">> {}
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
import { snakeCaseDeep } from "@reacord/helpers/convert-object-property-case.js"
|
||||
import { omit } from "@reacord/helpers/omit.js"
|
||||
import React from "react"
|
||||
import type { MessageOptions } from "../../internal/message"
|
||||
import { ReacordElement } from "../internal/element.js"
|
||||
import { Node } from "../node.js"
|
||||
import { TextNode } from "../text-node"
|
||||
import { EmbedChildNode } from "./embed-child.js"
|
||||
import type { EmbedOptions } from "./embed-options"
|
||||
import { ReacordElement } from "../reacord-element.js"
|
||||
|
||||
/**
|
||||
* @category Embed
|
||||
@@ -39,24 +33,22 @@ export function Embed(props: EmbedProps) {
|
||||
)
|
||||
}
|
||||
|
||||
class EmbedNode extends Node<EmbedProps> {
|
||||
override modifyMessageOptions(options: MessageOptions): void {
|
||||
const embed: EmbedOptions = {
|
||||
...snakeCaseDeep(omit(this.props, ["children", "timestamp"])),
|
||||
timestamp: this.props.timestamp
|
||||
? new Date(this.props.timestamp).toISOString()
|
||||
: undefined,
|
||||
}
|
||||
|
||||
for (const child of this.children) {
|
||||
if (child instanceof EmbedChildNode) {
|
||||
child.modifyEmbedOptions(embed)
|
||||
}
|
||||
if (child instanceof TextNode) {
|
||||
embed.description = (embed.description || "") + child.props
|
||||
}
|
||||
}
|
||||
|
||||
options.embeds.push(embed)
|
||||
}
|
||||
export class EmbedNode extends Node<EmbedProps> {
|
||||
// override modifyMessageOptions(options: MessageOptions): void {
|
||||
// const embed: EmbedOptions = {
|
||||
// ...snakeCaseDeep(omit(this.props, ["children", "timestamp"])),
|
||||
// timestamp: this.props.timestamp
|
||||
// ? new Date(this.props.timestamp).toISOString()
|
||||
// : undefined,
|
||||
// }
|
||||
// for (const child of this.children) {
|
||||
// if (child instanceof EmbedChildNode) {
|
||||
// child.modifyEmbedOptions(embed)
|
||||
// }
|
||||
// if (child instanceof TextNode) {
|
||||
// embed.description = (embed.description || "") + child.props
|
||||
// }
|
||||
// }
|
||||
// options.embeds.push(embed)
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import React from "react"
|
||||
import { ReacordElement } from "../internal/element.js"
|
||||
import type { MessageOptions } from "../../internal/message"
|
||||
import { getNextActionRow } from "../internal/message"
|
||||
import { Node } from "../internal/node.js"
|
||||
import type { Except } from "type-fest"
|
||||
import { Node } from "../node.js"
|
||||
import { ReacordElement } from "../reacord-element.js"
|
||||
import type { ButtonSharedProps } from "./button-shared-props"
|
||||
|
||||
/**
|
||||
@@ -21,23 +20,9 @@ export type LinkProps = ButtonSharedProps & {
|
||||
export function Link({ label, children, ...props }: LinkProps) {
|
||||
return (
|
||||
<ReacordElement props={props} createNode={() => new LinkNode(props)}>
|
||||
<ReacordElement props={{}} createNode={() => new LinkTextNode({})}>
|
||||
{label || children}
|
||||
</ReacordElement>
|
||||
</ReacordElement>
|
||||
)
|
||||
}
|
||||
|
||||
class LinkNode extends Node<Omit<LinkProps, "label" | "children">> {
|
||||
override modifyMessageOptions(options: MessageOptions): void {
|
||||
getNextActionRow(options).push({
|
||||
type: "link",
|
||||
disabled: this.props.disabled,
|
||||
emoji: this.props.emoji,
|
||||
label: this.children.findType(LinkTextNode)?.text,
|
||||
url: this.props.url,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
class LinkTextNode extends Node<{}> {}
|
||||
export class LinkNode extends Node<Except<LinkProps, "label" | "children">> {}
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
import type { MessageSelectOptionOptions } from "../../internal/message"
|
||||
import { Node } from "../node"
|
||||
import type { OptionProps } from "./option"
|
||||
|
||||
export class OptionNode extends Node<
|
||||
Omit<OptionProps, "children" | "label" | "description">
|
||||
> {
|
||||
get options(): MessageSelectOptionOptions {
|
||||
return {
|
||||
label: this.children.findType(OptionLabelNode)?.text ?? this.props.value,
|
||||
value: this.props.value,
|
||||
description: this.children.findType(OptionDescriptionNode)?.text,
|
||||
emoji: this.props.emoji,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export class OptionLabelNode extends Node<{}> {}
|
||||
export class OptionDescriptionNode extends Node<{}> {}
|
||||
@@ -1,11 +1,7 @@
|
||||
import type { ReactNode } from "react"
|
||||
import React from "react"
|
||||
import { ReacordElement } from "../internal/element"
|
||||
import {
|
||||
OptionDescriptionNode,
|
||||
OptionLabelNode,
|
||||
OptionNode,
|
||||
} from "./option-node"
|
||||
import { Node } from "../node"
|
||||
import { ReacordElement } from "../reacord-element"
|
||||
|
||||
/**
|
||||
* @category Select
|
||||
@@ -60,3 +56,9 @@ export function Option({
|
||||
</ReacordElement>
|
||||
)
|
||||
}
|
||||
|
||||
export class OptionNode extends Node<
|
||||
Omit<OptionProps, "children" | "label" | "description">
|
||||
> {}
|
||||
export class OptionLabelNode extends Node<{}> {}
|
||||
export class OptionDescriptionNode extends Node<{}> {}
|
||||
|
||||
@@ -1,18 +1,10 @@
|
||||
import { isInstanceOf } from "@reacord/helpers/is-instance-of.js"
|
||||
import type { APIMessageComponentSelectMenuInteraction } from "discord.js"
|
||||
import { randomUUID } from "node:crypto"
|
||||
import type { ReactNode } from "react"
|
||||
import React from "react"
|
||||
import { ReacordElement } from "../internal/element.js"
|
||||
import type { ComponentInteraction } from "../../internal/interaction"
|
||||
import type {
|
||||
ActionRow,
|
||||
ActionRowItem,
|
||||
MessageOptions,
|
||||
} from "../../internal/message"
|
||||
import { Node } from "../internal/node.js"
|
||||
import type { ComponentEvent } from "../component-event"
|
||||
import { OptionNode } from "./option-node"
|
||||
import type { ComponentEvent } from "../core/component-event.js"
|
||||
import { Node } from "../node.js"
|
||||
import { ReacordElement } from "../reacord-element.js"
|
||||
|
||||
/**
|
||||
* @category Select
|
||||
@@ -100,64 +92,4 @@ export function Select(props: SelectProps) {
|
||||
|
||||
export class SelectNode extends Node<SelectProps> {
|
||||
readonly customId = randomUUID()
|
||||
|
||||
override modifyMessageOptions(message: MessageOptions): void {
|
||||
const actionRow: ActionRow = []
|
||||
message.actionRows.push(actionRow)
|
||||
|
||||
const options = [...this.children]
|
||||
.filter(isInstanceOf(OptionNode))
|
||||
.map((node) => node.options)
|
||||
|
||||
const {
|
||||
multiple,
|
||||
value,
|
||||
values,
|
||||
minValues = 0,
|
||||
maxValues = 25,
|
||||
children,
|
||||
onChange,
|
||||
onChangeValue,
|
||||
onChangeMultiple,
|
||||
...props
|
||||
} = this.props
|
||||
|
||||
const item: ActionRowItem = {
|
||||
...props,
|
||||
type: "select",
|
||||
customId: this.customId,
|
||||
options,
|
||||
values: [],
|
||||
}
|
||||
|
||||
if (multiple) {
|
||||
item.minValues = minValues
|
||||
item.maxValues = maxValues
|
||||
if (values) item.values = values
|
||||
}
|
||||
|
||||
if (!multiple && value != undefined) {
|
||||
item.values = [value]
|
||||
}
|
||||
|
||||
actionRow.push(item)
|
||||
}
|
||||
|
||||
override handleComponentInteraction(
|
||||
interaction: ComponentInteraction,
|
||||
): boolean {
|
||||
const isSelectInteraction =
|
||||
interaction.type === "select" &&
|
||||
interaction.customId === this.customId &&
|
||||
!this.props.disabled
|
||||
|
||||
if (!isSelectInteraction) return false
|
||||
|
||||
this.props.onChange?.(interaction.event)
|
||||
this.props.onChangeMultiple?.(interaction.event.values, interaction.event)
|
||||
if (interaction.event.values[0]) {
|
||||
this.props.onChangeValue?.(interaction.event.values[0], interaction.event)
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
244
packages/reacord/library/make-message-update-payload.ts
Normal file
244
packages/reacord/library/make-message-update-payload.ts
Normal file
@@ -0,0 +1,244 @@
|
||||
import type {
|
||||
APIActionRowComponent,
|
||||
APIButtonComponent,
|
||||
APIEmbed,
|
||||
APISelectMenuComponent,
|
||||
APISelectMenuOption,
|
||||
} from "discord-api-types/v10"
|
||||
import { ButtonStyle, ComponentType } from "discord-api-types/v10"
|
||||
import { ActionRowNode } from "./components/action-row"
|
||||
import type { ButtonProps } from "./components/button"
|
||||
import { ButtonNode } from "./components/button"
|
||||
import { EmbedNode } from "./components/embed"
|
||||
import { EmbedAuthorNode } from "./components/embed-author"
|
||||
import {
|
||||
EmbedFieldNameNode,
|
||||
EmbedFieldNode,
|
||||
EmbedFieldValueNode,
|
||||
} from "./components/embed-field"
|
||||
import { EmbedFooterNode } from "./components/embed-footer"
|
||||
import { EmbedImageNode } from "./components/embed-image"
|
||||
import { EmbedThumbnailNode } from "./components/embed-thumbnail"
|
||||
import { EmbedTitleNode } from "./components/embed-title"
|
||||
import { LinkNode } from "./components/link"
|
||||
import {
|
||||
OptionDescriptionNode,
|
||||
OptionLabelNode,
|
||||
OptionNode,
|
||||
} from "./components/option"
|
||||
import { SelectNode } from "./components/select"
|
||||
import type { Node } from "./node"
|
||||
|
||||
export type MessageUpdatePayload = {
|
||||
content: string
|
||||
embeds: APIEmbed[]
|
||||
components: Array<
|
||||
APIActionRowComponent<APIButtonComponent | APISelectMenuComponent>
|
||||
>
|
||||
}
|
||||
|
||||
export function makeMessageUpdatePayload(root: Node): MessageUpdatePayload {
|
||||
return {
|
||||
content: root.extractText(),
|
||||
embeds: makeEmbeds(root),
|
||||
components: makeActionRows(root),
|
||||
}
|
||||
}
|
||||
|
||||
function makeEmbeds(root: Node) {
|
||||
const embeds: APIEmbed[] = []
|
||||
|
||||
for (const node of root.children) {
|
||||
if (node instanceof EmbedNode) {
|
||||
const { props, children } = node
|
||||
|
||||
const embed: APIEmbed = {
|
||||
author: props.author && {
|
||||
name: props.author.name,
|
||||
icon_url: props.author.iconUrl,
|
||||
url: props.author.url,
|
||||
},
|
||||
color: props.color,
|
||||
description: props.description,
|
||||
fields: props.fields?.map(({ name, value, inline }) => ({
|
||||
name,
|
||||
value,
|
||||
inline,
|
||||
})),
|
||||
footer: props.footer && {
|
||||
text: props.footer.text,
|
||||
icon_url: props.footer.iconUrl,
|
||||
},
|
||||
image: props.image,
|
||||
thumbnail: props.thumbnail,
|
||||
title: props.title,
|
||||
url: props.url,
|
||||
video: props.video,
|
||||
}
|
||||
|
||||
if (props.timestamp !== undefined) {
|
||||
embed.timestamp = normalizeDatePropToISOString(props.timestamp)
|
||||
}
|
||||
|
||||
applyEmbedChildren(embed, children)
|
||||
|
||||
embeds.push(embed)
|
||||
}
|
||||
}
|
||||
|
||||
return embeds
|
||||
}
|
||||
|
||||
function applyEmbedChildren(embed: APIEmbed, children: Node[]) {
|
||||
for (const child of children) {
|
||||
if (child instanceof EmbedAuthorNode) {
|
||||
embed.author = {
|
||||
name: child.extractText(),
|
||||
icon_url: child.props.iconUrl,
|
||||
url: child.props.url,
|
||||
}
|
||||
}
|
||||
|
||||
if (child instanceof EmbedFieldNode) {
|
||||
embed.fields ??= []
|
||||
embed.fields.push({
|
||||
name: child.findInstanceOf(EmbedFieldNameNode)?.extractText() ?? "",
|
||||
value: child.findInstanceOf(EmbedFieldValueNode)?.extractText() ?? "",
|
||||
inline: child.props.inline,
|
||||
})
|
||||
}
|
||||
|
||||
if (child instanceof EmbedFooterNode) {
|
||||
embed.footer = {
|
||||
text: child.extractText(),
|
||||
icon_url: child.props.iconUrl,
|
||||
}
|
||||
if (child.props.timestamp != undefined) {
|
||||
embed.timestamp = normalizeDatePropToISOString(child.props.timestamp)
|
||||
}
|
||||
}
|
||||
|
||||
if (child instanceof EmbedImageNode) {
|
||||
embed.image = { url: child.props.url }
|
||||
}
|
||||
|
||||
if (child instanceof EmbedThumbnailNode) {
|
||||
embed.thumbnail = { url: child.props.url }
|
||||
}
|
||||
|
||||
if (child instanceof EmbedTitleNode) {
|
||||
embed.title = child.extractText()
|
||||
embed.url = child.props.url
|
||||
}
|
||||
|
||||
if (child instanceof EmbedNode) {
|
||||
applyEmbedChildren(embed, child.children)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeDatePropToISOString(value: string | number | Date) {
|
||||
return value instanceof Date
|
||||
? value.toISOString()
|
||||
: new Date(value).toISOString()
|
||||
}
|
||||
|
||||
function makeActionRows(root: Node) {
|
||||
const actionRows: Array<
|
||||
APIActionRowComponent<APIButtonComponent | APISelectMenuComponent>
|
||||
> = []
|
||||
|
||||
for (const node of root.children) {
|
||||
let currentRow = actionRows[actionRows.length - 1]
|
||||
if (
|
||||
!currentRow ||
|
||||
currentRow.components.length >= 5 ||
|
||||
currentRow.components[0]?.type === ComponentType.SelectMenu
|
||||
) {
|
||||
currentRow = {
|
||||
type: ComponentType.ActionRow,
|
||||
components: [],
|
||||
}
|
||||
actionRows.push(currentRow)
|
||||
}
|
||||
|
||||
if (node instanceof ButtonNode) {
|
||||
currentRow.components.push({
|
||||
type: ComponentType.Button,
|
||||
custom_id: node.customId,
|
||||
label: node.extractText(Number.POSITIVE_INFINITY),
|
||||
emoji: { name: node.props.emoji },
|
||||
style: translateButtonStyle(node.props.style ?? "secondary"),
|
||||
disabled: node.props.disabled,
|
||||
})
|
||||
}
|
||||
|
||||
if (node instanceof LinkNode) {
|
||||
currentRow.components.push({
|
||||
type: ComponentType.Button,
|
||||
label: node.extractText(Number.POSITIVE_INFINITY),
|
||||
url: node.props.url,
|
||||
style: ButtonStyle.Link,
|
||||
disabled: node.props.disabled,
|
||||
})
|
||||
}
|
||||
|
||||
if (node instanceof SelectNode) {
|
||||
const actionRow: APIActionRowComponent<APISelectMenuComponent> = {
|
||||
type: ComponentType.ActionRow,
|
||||
components: [],
|
||||
}
|
||||
actionRows.push(actionRow)
|
||||
|
||||
let selectedValues: string[] = []
|
||||
if (node.props.multiple && node.props.values) {
|
||||
selectedValues = node.props.values ?? []
|
||||
}
|
||||
if (!node.props.multiple && node.props.value != undefined) {
|
||||
selectedValues = [node.props.value]
|
||||
}
|
||||
|
||||
const options = [...node.children]
|
||||
.flatMap((child) => (child instanceof OptionNode ? child : []))
|
||||
.map<APISelectMenuOption>((child) => ({
|
||||
label: child.findInstanceOf(OptionLabelNode)?.extractText() ?? "",
|
||||
description: child
|
||||
.findInstanceOf(OptionDescriptionNode)
|
||||
?.extractText(),
|
||||
value: child.props.value,
|
||||
default: selectedValues.includes(child.props.value),
|
||||
emoji: { name: child.props.emoji },
|
||||
}))
|
||||
|
||||
const select: APISelectMenuComponent = {
|
||||
type: ComponentType.SelectMenu,
|
||||
custom_id: node.customId,
|
||||
options,
|
||||
disabled: node.props.disabled,
|
||||
}
|
||||
|
||||
if (node.props.multiple) {
|
||||
select.min_values = node.props.minValues
|
||||
select.max_values = node.props.maxValues
|
||||
}
|
||||
|
||||
actionRow.components.push(select)
|
||||
}
|
||||
|
||||
if (node instanceof ActionRowNode) {
|
||||
actionRows.push(...makeActionRows(node))
|
||||
}
|
||||
}
|
||||
|
||||
return actionRows
|
||||
}
|
||||
|
||||
function translateButtonStyle(style: NonNullable<ButtonProps["style"]>) {
|
||||
const styleMap = {
|
||||
primary: ButtonStyle.Primary,
|
||||
secondary: ButtonStyle.Secondary,
|
||||
danger: ButtonStyle.Danger,
|
||||
success: ButtonStyle.Success,
|
||||
} as const
|
||||
return styleMap[style]
|
||||
}
|
||||
@@ -38,4 +38,20 @@ export class Node<Props = unknown> {
|
||||
yield* child.walk()
|
||||
}
|
||||
}
|
||||
|
||||
findInstanceOf<T extends Node>(
|
||||
cls: new (...args: any[]) => T,
|
||||
): T | undefined {
|
||||
for (const child of this.children) {
|
||||
if (child instanceof cls) return child
|
||||
}
|
||||
}
|
||||
|
||||
extractText(depth = 1): string {
|
||||
if (this instanceof TextNode) return this.props.text
|
||||
if (depth <= 0) return ""
|
||||
return this.children.map((child) => child.extractText(depth - 1)).join("")
|
||||
}
|
||||
}
|
||||
|
||||
export class TextNode extends Node<{ text: string }> {}
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
InteractionType,
|
||||
} from "discord.js"
|
||||
import * as React from "react"
|
||||
import { InstanceProvider } from "./core/instance-context.js"
|
||||
import { InstanceProvider } from "./core/instance-context"
|
||||
import type { ReacordInstance } from "./reacord-instance.js"
|
||||
import { ReacordInstancePrivate } from "./reacord-instance.js"
|
||||
import type { Renderer } from "./renderer.js"
|
||||
@@ -79,7 +79,7 @@ export class ReacordClient {
|
||||
|
||||
send(channelId: string, initialContent?: React.ReactNode): ReacordInstance {
|
||||
return this.createInstance(
|
||||
new ChannelMessageRenderer(channelId),
|
||||
new ChannelMessageRenderer(channelId, this.client),
|
||||
initialContent,
|
||||
)
|
||||
}
|
||||
@@ -127,7 +127,11 @@ export class ReacordClient {
|
||||
const publicInstance: ReacordInstance = {
|
||||
render: (content: React.ReactNode) => {
|
||||
instance.render(
|
||||
<InstanceProvider value={publicInstance}>{content}</InstanceProvider>,
|
||||
React.createElement(
|
||||
InstanceProvider,
|
||||
{ value: publicInstance },
|
||||
content,
|
||||
),
|
||||
)
|
||||
},
|
||||
deactivate: () => {
|
||||
@@ -4,14 +4,14 @@ import type {
|
||||
APIMessageComponentSelectMenuInteraction,
|
||||
} from "discord.js"
|
||||
import { ComponentType } from "discord.js"
|
||||
import { ButtonNode } from "./components/button.js"
|
||||
import type { SelectChangeEvent } from "./components/select.js"
|
||||
import { SelectNode } from "./components/select.js"
|
||||
import type { ComponentEvent } from "./core/component-event.js"
|
||||
import { reconciler } from "./internal/reconciler.js"
|
||||
import { Node } from "./node.js"
|
||||
import type { ReacordClient } from "./reacord-client.js"
|
||||
import type { Renderer } from "./renderer.js"
|
||||
import { ButtonNode } from "./components/button"
|
||||
import type { SelectChangeEvent } from "./components/select"
|
||||
import { SelectNode } from "./components/select"
|
||||
import type { ComponentEvent } from "./core/component-event"
|
||||
import { Node } from "./node"
|
||||
import type { ReacordClient } from "./reacord-client"
|
||||
import { reconciler } from "./reconciler"
|
||||
import type { Renderer } from "./renderer"
|
||||
|
||||
/**
|
||||
* Represents an interactive message, which can later be replaced or deleted.
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
import { raise } from "@reacord/helpers/raise.js"
|
||||
import ReactReconciler from "react-reconciler"
|
||||
import { DefaultEventPriority } from "react-reconciler/constants"
|
||||
import { Node } from "./node.js"
|
||||
import { Node, TextNode } from "./node.js"
|
||||
import type { ReacordInstancePrivate } from "./reacord-instance.js"
|
||||
import { TextNode } from "./text-node.js"
|
||||
|
||||
export const reconciler = ReactReconciler<
|
||||
string, // Type,
|
||||
|
||||
@@ -1,35 +1,74 @@
|
||||
import { AsyncQueue } from "@reacord/helpers/async-queue"
|
||||
import type { Node } from "./internal/node.js"
|
||||
import type { Client, Message } from "discord.js"
|
||||
import { TextChannel } from "discord.js"
|
||||
import { makeMessageUpdatePayload } from "./make-message-update-payload.js"
|
||||
import type { Node } from "./node.js"
|
||||
import type { InteractionInfo } from "./reacord-client.js"
|
||||
|
||||
export type Renderer = {
|
||||
update(tree: Node<unknown>): Promise<void>
|
||||
update(tree: Node): Promise<void>
|
||||
deactivate(): Promise<void>
|
||||
destroy(): Promise<void>
|
||||
}
|
||||
|
||||
export class ChannelMessageRenderer implements Renderer {
|
||||
private readonly queue = new AsyncQueue()
|
||||
private channel: TextChannel | undefined
|
||||
private message: Message | undefined
|
||||
private active = true
|
||||
|
||||
constructor(private readonly channelId: string) {}
|
||||
constructor(
|
||||
private readonly channelId: string,
|
||||
private readonly client: Client,
|
||||
) {}
|
||||
|
||||
update(tree: Node<unknown>): Promise<void> {
|
||||
throw new Error("Method not implemented.")
|
||||
private async getChannel(): Promise<TextChannel> {
|
||||
if (this.channel) return this.channel
|
||||
|
||||
const channel =
|
||||
this.client.channels.cache.get(this.channelId) ??
|
||||
(await this.client.channels.fetch(this.channelId))
|
||||
|
||||
if (!(channel instanceof TextChannel)) {
|
||||
throw new TypeError(`Channel ${this.channelId} is not a text channel`)
|
||||
}
|
||||
|
||||
deactivate(): Promise<void> {
|
||||
throw new Error("Method not implemented.")
|
||||
this.channel = channel
|
||||
return channel
|
||||
}
|
||||
|
||||
destroy(): Promise<void> {
|
||||
throw new Error("Method not implemented.")
|
||||
update(tree: Node) {
|
||||
const payload = makeMessageUpdatePayload(tree)
|
||||
return this.queue.add(async () => {
|
||||
if (!this.active) return
|
||||
if (this.message) {
|
||||
await this.message.edit(payload)
|
||||
} else {
|
||||
const channel = await this.getChannel()
|
||||
this.message = await channel.send(payload)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
async deactivate() {
|
||||
return this.queue.add(async () => {
|
||||
this.active = false
|
||||
// TODO: disable message components
|
||||
})
|
||||
}
|
||||
|
||||
async destroy() {
|
||||
return this.queue.add(async () => {
|
||||
this.active = false
|
||||
await this.message?.delete()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export class InteractionReplyRenderer implements Renderer {
|
||||
constructor(private readonly interaction: InteractionInfo) {}
|
||||
|
||||
update(tree: Node<unknown>): Promise<void> {
|
||||
update(tree: Node): Promise<void> {
|
||||
throw new Error("Method not implemented.")
|
||||
}
|
||||
|
||||
@@ -45,7 +84,7 @@ export class InteractionReplyRenderer implements Renderer {
|
||||
export class EphemeralInteractionReplyRenderer implements Renderer {
|
||||
constructor(private readonly interaction: InteractionInfo) {}
|
||||
|
||||
update(tree: Node<unknown>): Promise<void> {
|
||||
update(tree: Node): Promise<void> {
|
||||
throw new Error("Method not implemented.")
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
import { Node } from "./node.js"
|
||||
|
||||
export class TextNode extends Node<{ text: string }> {}
|
||||
@@ -38,7 +38,7 @@
|
||||
"scripts": {
|
||||
"build": "cp ../../README.md . && cp ../../LICENSE . && tsup library/main.ts --target node16 --format cjs,esm --dts --sourcemap",
|
||||
"build-watch": "pnpm build --watch",
|
||||
"test-manual": "nodemon --exec tsx --ext ts,tsx ./scripts/discordjs-manual-test.tsx",
|
||||
"test-manual": "tsx watch ./scripts/discordjs-manual-test.tsx",
|
||||
"typecheck": "tsc --noEmit",
|
||||
"release": "bash scripts/release.sh"
|
||||
},
|
||||
@@ -62,17 +62,17 @@
|
||||
"devDependencies": {
|
||||
"@reacord/helpers": "workspace:*",
|
||||
"@types/lodash-es": "^4.17.6",
|
||||
"discord.js": "^14.0.3",
|
||||
"discord.js": "^14.1.2",
|
||||
"dotenv": "^16.0.1",
|
||||
"lodash-es": "^4.17.21",
|
||||
"nodemon": "^2.0.19",
|
||||
"prettier": "^2.7.1",
|
||||
"pretty-ms": "^8.0.0",
|
||||
"react": "^18.2.0",
|
||||
"release-it": "^15.1.3",
|
||||
"tsup": "^6.1.3",
|
||||
"release-it": "^15.2.0",
|
||||
"tsup": "^6.2.1",
|
||||
"tsx": "^3.8.0",
|
||||
"type-fest": "^2.17.0",
|
||||
"type-fest": "^2.18.0",
|
||||
"typescript": "^4.7.4"
|
||||
},
|
||||
"resolutions": {
|
||||
|
||||
@@ -3,16 +3,17 @@ import "dotenv/config"
|
||||
import { kebabCase } from "lodash-es"
|
||||
import * as React from "react"
|
||||
import { useState } from "react"
|
||||
import {
|
||||
Button,
|
||||
Option,
|
||||
ReacordDiscordJs,
|
||||
Select,
|
||||
useInstance,
|
||||
} from "../library/main"
|
||||
import { Button } from "../library/components/button"
|
||||
import { Option } from "../library/components/option"
|
||||
import { Select } from "../library/components/select"
|
||||
import { useInstance } from "../library/core/instance-context"
|
||||
import { ReacordClient } from "../library/reacord-client"
|
||||
|
||||
const client = new Client({ intents: IntentsBitField.Flags.Guilds })
|
||||
const reacord = new ReacordDiscordJs(client)
|
||||
|
||||
const reacord = new ReacordClient({
|
||||
token: process.env.TEST_BOT_TOKEN!,
|
||||
})
|
||||
|
||||
type TestCase = {
|
||||
name: string
|
||||
@@ -180,6 +181,7 @@ await Promise.all([
|
||||
tests.map(async (test, index) => {
|
||||
const channelName = getTestCaseChannelName(test, index)
|
||||
const channel = await getTestCaseChannel(channelName, index)
|
||||
console.info("running test:", test.name)
|
||||
await test.run(channel)
|
||||
}),
|
||||
),
|
||||
|
||||
441
pnpm-lock.yaml
generated
441
pnpm-lock.yaml
generated
@@ -45,9 +45,9 @@ importers:
|
||||
'@types/lodash-es': ^4.17.6
|
||||
'@types/node': '*'
|
||||
'@types/react': '*'
|
||||
'@types/react-reconciler': ^0.28.0
|
||||
'@types/react-reconciler': '*'
|
||||
discord-api-types: ^0.36.3
|
||||
discord.js: ^14.0.3
|
||||
discord.js: ^14.1.2
|
||||
dotenv: ^16.0.1
|
||||
lodash-es: ^4.17.21
|
||||
nodemon: ^2.0.19
|
||||
@@ -55,14 +55,14 @@ importers:
|
||||
pretty-ms: ^8.0.0
|
||||
react: ^18.2.0
|
||||
react-reconciler: ^0.29.0
|
||||
release-it: ^15.1.3
|
||||
release-it: ^15.2.0
|
||||
rxjs: ^7.5.6
|
||||
tsup: ^6.1.3
|
||||
tsup: ^6.2.1
|
||||
tsx: ^3.8.0
|
||||
type-fest: ^2.17.0
|
||||
type-fest: ^2.18.0
|
||||
typescript: ^4.7.4
|
||||
dependencies:
|
||||
'@types/node': 18.0.6
|
||||
'@types/node': 18.6.3
|
||||
'@types/react': 18.0.15
|
||||
'@types/react-reconciler': 0.28.0
|
||||
discord-api-types: 0.36.3
|
||||
@@ -71,17 +71,17 @@ importers:
|
||||
devDependencies:
|
||||
'@reacord/helpers': link:../helpers
|
||||
'@types/lodash-es': 4.17.6
|
||||
discord.js: 14.0.3
|
||||
discord.js: 14.1.2
|
||||
dotenv: 16.0.1
|
||||
lodash-es: 4.17.21
|
||||
nodemon: 2.0.19
|
||||
prettier: 2.7.1
|
||||
pretty-ms: 8.0.0
|
||||
react: 18.2.0
|
||||
release-it: 15.1.3
|
||||
tsup: 6.1.3_typescript@4.7.4
|
||||
release-it: 15.2.0
|
||||
tsup: 6.2.1_typescript@4.7.4
|
||||
tsx: 3.8.0
|
||||
type-fest: 2.17.0
|
||||
type-fest: 2.18.0
|
||||
typescript: 4.7.4
|
||||
|
||||
packages/website:
|
||||
@@ -1631,8 +1631,8 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@discordjs/builders/1.0.0:
|
||||
resolution: {integrity: sha512-8y91ZfpOHubiGJu5tVyGI9tQCEyHZDTeqUWVcJd0dq7B96xIf84S0L4fwmD1k9zTe1eqEFSk0gc7BpY+FKn7Ww==}
|
||||
/@discordjs/builders/1.1.0:
|
||||
resolution: {integrity: sha512-EO8TSltiIc9Z1wE854wAFvv5AccqEtvjFmao9PPoxQhRaJ0hEb7FwWRTCA1jGg4ZWI3hcp4m+RET5ufZQz3rOg==}
|
||||
engines: {node: '>=16.9.0'}
|
||||
dependencies:
|
||||
'@sapphire/shapeshift': 3.5.1
|
||||
@@ -1642,20 +1642,20 @@ packages:
|
||||
tslib: 2.4.0
|
||||
dev: true
|
||||
|
||||
/@discordjs/collection/1.0.0:
|
||||
resolution: {integrity: sha512-nAxDQYE5dNAzEGQ7HU20sujDsG5vLowUKCEqZkKUIlrXERZFTt/60zKUj/g4+AVCGeq+pXC5hivMaNtiC+PY5Q==}
|
||||
/@discordjs/collection/1.0.1:
|
||||
resolution: {integrity: sha512-5V/wswzR3r2RVYXLxxg4TvrAnBhVCNgHTXhC+OUtLoriJ072rPMHo+Iw1SS1vrCckp8Es40XM411+WkNRPaXFw==}
|
||||
engines: {node: '>=16.9.0'}
|
||||
dev: true
|
||||
|
||||
/@discordjs/rest/1.0.0:
|
||||
resolution: {integrity: sha512-uDAvnE0P2a8axMdD4C51EGjvCRQ2HZk2Yxf6vHWZgIqG87D8DGKMPwmquIxrrB07MjV+rwci2ObU+mGhGP+bJg==}
|
||||
/@discordjs/rest/1.0.1:
|
||||
resolution: {integrity: sha512-w08CTKVzzYYvKxEjXKOs9AdS7KQ1J502TrPfF8eCZ2lF6AfKuMP/32YgDakiwIyYTDjEQS/v0nKLSFcncHRMtg==}
|
||||
engines: {node: '>=16.9.0'}
|
||||
dependencies:
|
||||
'@discordjs/collection': 1.0.0
|
||||
'@discordjs/collection': 1.0.1
|
||||
'@sapphire/async-queue': 1.3.2
|
||||
'@sapphire/snowflake': 3.2.2
|
||||
discord-api-types: 0.36.3
|
||||
file-type: 17.1.3
|
||||
file-type: 17.1.4
|
||||
tslib: 2.4.0
|
||||
undici: 5.8.0
|
||||
dev: true
|
||||
@@ -1670,7 +1670,7 @@ packages:
|
||||
/@esbuild-kit/core-utils/2.1.0:
|
||||
resolution: {integrity: sha512-fZirrc2KjeTumVjE4bpleWOk2gD83b7WuGeQqOceKFQL+heNKKkNB5G5pekOUTLzfSBc0hP7hCSBoD9TuR0hLw==}
|
||||
dependencies:
|
||||
esbuild: 0.14.49
|
||||
esbuild: 0.14.51
|
||||
source-map-support: 0.5.21
|
||||
dev: true
|
||||
|
||||
@@ -1893,7 +1893,7 @@ packages:
|
||||
resolution: {integrity: sha512-MDNFUBcJIptB9At7HiV7VCvU3NcL4GnfCQaP8C5lrxWrRPMJBnemYtehaKSOlaM7AYxeRyj9etenu8LVpSpVaQ==}
|
||||
engines: {node: '>= 14'}
|
||||
dependencies:
|
||||
'@octokit/types': 6.40.0
|
||||
'@octokit/types': 6.41.0
|
||||
dev: true
|
||||
|
||||
/@octokit/core/4.0.4:
|
||||
@@ -1904,7 +1904,7 @@ packages:
|
||||
'@octokit/graphql': 5.0.0
|
||||
'@octokit/request': 6.2.0
|
||||
'@octokit/request-error': 3.0.0
|
||||
'@octokit/types': 6.40.0
|
||||
'@octokit/types': 6.41.0
|
||||
before-after-hook: 2.2.2
|
||||
universal-user-agent: 6.0.0
|
||||
transitivePeerDependencies:
|
||||
@@ -1915,7 +1915,7 @@ packages:
|
||||
resolution: {integrity: sha512-Kz/mIkOTjs9rV50hf/JK9pIDl4aGwAtT8pry6Rpy+hVXkAPhXanNQRxMoq6AeRgDCZR6t/A1zKniY2V1YhrzlQ==}
|
||||
engines: {node: '>= 14'}
|
||||
dependencies:
|
||||
'@octokit/types': 6.40.0
|
||||
'@octokit/types': 6.41.0
|
||||
is-plain-object: 5.0.0
|
||||
universal-user-agent: 6.0.0
|
||||
dev: true
|
||||
@@ -1925,24 +1925,24 @@ packages:
|
||||
engines: {node: '>= 14'}
|
||||
dependencies:
|
||||
'@octokit/request': 6.2.0
|
||||
'@octokit/types': 6.40.0
|
||||
'@octokit/types': 6.41.0
|
||||
universal-user-agent: 6.0.0
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
dev: true
|
||||
|
||||
/@octokit/openapi-types/12.10.1:
|
||||
resolution: {integrity: sha512-P+SukKanjFY0ZhsK6wSVnQmxTP2eVPPE8OPSNuxaMYtgVzwJZgfGdwlYjf4RlRU4vLEw4ts2fsE2icG4nZ5ddQ==}
|
||||
/@octokit/openapi-types/12.11.0:
|
||||
resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==}
|
||||
dev: true
|
||||
|
||||
/@octokit/plugin-paginate-rest/3.0.0_@octokit+core@4.0.4:
|
||||
resolution: {integrity: sha512-fvw0Q5IXnn60D32sKeLIxgXCEZ7BTSAjJd8cFAE6QU5qUp0xo7LjFUjjX1J5D7HgN355CN4EXE4+Q1/96JaNUA==}
|
||||
/@octokit/plugin-paginate-rest/3.1.0_@octokit+core@4.0.4:
|
||||
resolution: {integrity: sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA==}
|
||||
engines: {node: '>= 14'}
|
||||
peerDependencies:
|
||||
'@octokit/core': '>=4'
|
||||
dependencies:
|
||||
'@octokit/core': 4.0.4
|
||||
'@octokit/types': 6.40.0
|
||||
'@octokit/types': 6.41.0
|
||||
dev: true
|
||||
|
||||
/@octokit/plugin-request-log/1.0.4_@octokit+core@4.0.4:
|
||||
@@ -1953,14 +1953,14 @@ packages:
|
||||
'@octokit/core': 4.0.4
|
||||
dev: true
|
||||
|
||||
/@octokit/plugin-rest-endpoint-methods/6.1.2_@octokit+core@4.0.4:
|
||||
resolution: {integrity: sha512-sAfSKtLHNq0UQ2iFuI41I6m5SK6bnKFRJ5kUjDRVbmQXiRVi4aQiIcgG4cM7bt+bhSiWL4HwnTxDkWFlKeKClA==}
|
||||
/@octokit/plugin-rest-endpoint-methods/6.2.0_@octokit+core@4.0.4:
|
||||
resolution: {integrity: sha512-PZ+yfkbZAuRUtqu6Y191/V3eM0KBPx+Yq7nh+ONPdpm3EX4pd5UnK2y2XgO/0AtNum5a4aJCDjqsDuUZ2hWRXw==}
|
||||
engines: {node: '>= 14'}
|
||||
peerDependencies:
|
||||
'@octokit/core': '>=3'
|
||||
dependencies:
|
||||
'@octokit/core': 4.0.4
|
||||
'@octokit/types': 6.40.0
|
||||
'@octokit/types': 6.41.0
|
||||
deprecation: 2.3.1
|
||||
dev: true
|
||||
|
||||
@@ -1968,7 +1968,7 @@ packages:
|
||||
resolution: {integrity: sha512-WBtpzm9lR8z4IHIMtOqr6XwfkGvMOOILNLxsWvDwtzm/n7f5AWuqJTXQXdDtOvPfTDrH4TPhEvW2qMlR4JFA2w==}
|
||||
engines: {node: '>= 14'}
|
||||
dependencies:
|
||||
'@octokit/types': 6.40.0
|
||||
'@octokit/types': 6.41.0
|
||||
deprecation: 2.3.1
|
||||
once: 1.4.0
|
||||
dev: true
|
||||
@@ -1979,7 +1979,7 @@ packages:
|
||||
dependencies:
|
||||
'@octokit/endpoint': 7.0.0
|
||||
'@octokit/request-error': 3.0.0
|
||||
'@octokit/types': 6.40.0
|
||||
'@octokit/types': 6.41.0
|
||||
is-plain-object: 5.0.0
|
||||
node-fetch: 2.6.7
|
||||
universal-user-agent: 6.0.0
|
||||
@@ -1992,17 +1992,17 @@ packages:
|
||||
engines: {node: '>= 14'}
|
||||
dependencies:
|
||||
'@octokit/core': 4.0.4
|
||||
'@octokit/plugin-paginate-rest': 3.0.0_@octokit+core@4.0.4
|
||||
'@octokit/plugin-paginate-rest': 3.1.0_@octokit+core@4.0.4
|
||||
'@octokit/plugin-request-log': 1.0.4_@octokit+core@4.0.4
|
||||
'@octokit/plugin-rest-endpoint-methods': 6.1.2_@octokit+core@4.0.4
|
||||
'@octokit/plugin-rest-endpoint-methods': 6.2.0_@octokit+core@4.0.4
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
dev: true
|
||||
|
||||
/@octokit/types/6.40.0:
|
||||
resolution: {integrity: sha512-MFZOU5r8SwgJWDMhrLUSvyJPtVsqA6VnbVI3TNbsmw+Jnvrktzvq2fYES/6RiJA/5Ykdwq4mJmtlYUfW7CGjmw==}
|
||||
/@octokit/types/6.41.0:
|
||||
resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==}
|
||||
dependencies:
|
||||
'@octokit/openapi-types': 12.10.1
|
||||
'@octokit/openapi-types': 12.11.0
|
||||
dev: true
|
||||
|
||||
/@pnpm/network.ca-file/1.0.1:
|
||||
@@ -2265,6 +2265,11 @@ packages:
|
||||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/@sindresorhus/is/5.3.0:
|
||||
resolution: {integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==}
|
||||
engines: {node: '>=14.16'}
|
||||
dev: true
|
||||
|
||||
/@szmarczak/http-timer/4.0.6:
|
||||
resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -2339,7 +2344,7 @@ packages:
|
||||
dependencies:
|
||||
'@types/http-cache-semantics': 4.0.1
|
||||
'@types/keyv': 3.1.4
|
||||
'@types/node': 18.0.6
|
||||
'@types/node': 18.6.3
|
||||
'@types/responselike': 1.0.0
|
||||
dev: true
|
||||
|
||||
@@ -2428,7 +2433,7 @@ packages:
|
||||
/@types/keyv/3.1.4:
|
||||
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
|
||||
dependencies:
|
||||
'@types/node': 18.0.6
|
||||
'@types/node': 18.6.3
|
||||
dev: true
|
||||
|
||||
/@types/lodash-es/4.17.6:
|
||||
@@ -2471,6 +2476,10 @@ packages:
|
||||
|
||||
/@types/node/18.0.6:
|
||||
resolution: {integrity: sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==}
|
||||
dev: true
|
||||
|
||||
/@types/node/18.6.3:
|
||||
resolution: {integrity: sha512-6qKpDtoaYLM+5+AFChLhHermMQxc3TOEFIDzrZLPRGHPrLEwqFkkT5Kx3ju05g6X7uDPazz3jHbKPX0KzCjntg==}
|
||||
|
||||
/@types/normalize-package-data/2.4.1:
|
||||
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
|
||||
@@ -2513,7 +2522,7 @@ packages:
|
||||
/@types/responselike/1.0.0:
|
||||
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
|
||||
dependencies:
|
||||
'@types/node': 18.0.6
|
||||
'@types/node': 18.6.3
|
||||
dev: true
|
||||
|
||||
/@types/scheduler/0.16.2:
|
||||
@@ -2559,7 +2568,7 @@ packages:
|
||||
/@types/ws/8.5.3:
|
||||
resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==}
|
||||
dependencies:
|
||||
'@types/node': 18.0.6
|
||||
'@types/node': 18.6.3
|
||||
dev: true
|
||||
|
||||
/@types/yauzl/2.10.0:
|
||||
@@ -3269,7 +3278,7 @@ packages:
|
||||
chalk: 5.0.1
|
||||
cli-boxes: 3.0.0
|
||||
string-width: 5.1.2
|
||||
type-fest: 2.17.0
|
||||
type-fest: 2.18.0
|
||||
widest-line: 4.0.1
|
||||
wrap-ansi: 8.0.1
|
||||
dev: true
|
||||
@@ -3360,13 +3369,13 @@ packages:
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/bundle-require/3.0.4_esbuild@0.14.50:
|
||||
/bundle-require/3.0.4_esbuild@0.14.51:
|
||||
resolution: {integrity: sha512-VXG6epB1yrLAvWVQpl92qF347/UXmncQj7J3U8kZEbdVZ1ZkQyr4hYeL/9RvcE8vVVdp53dY78Fd/3pqfRqI1A==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
peerDependencies:
|
||||
esbuild: '>=0.13'
|
||||
dependencies:
|
||||
esbuild: 0.14.50
|
||||
esbuild: 0.14.51
|
||||
load-tsconfig: 0.2.3
|
||||
dev: true
|
||||
|
||||
@@ -3657,6 +3666,11 @@ packages:
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/cli-spinners/2.7.0:
|
||||
resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/cli-table3/0.6.2:
|
||||
resolution: {integrity: sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==}
|
||||
engines: {node: 10.* || >= 12.*}
|
||||
@@ -4318,13 +4332,13 @@ packages:
|
||||
/discord-api-types/0.36.3:
|
||||
resolution: {integrity: sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==}
|
||||
|
||||
/discord.js/14.0.3:
|
||||
resolution: {integrity: sha512-wH/VQl4CqN8/+dcXEtYis1iurqxGlDpEe0O4CqH5FGqZGIjVpTdtK0STXXx7bVNX8MT/0GvLZLkmO/5gLDWZVg==}
|
||||
/discord.js/14.1.2:
|
||||
resolution: {integrity: sha512-apdWNLkjAkeEnuNpB8H6rS/4OgrXQlSAjuuzeodjCOdIXy3OwOjD314V/HiSttcAlr9+r3ONhaT5qvbDad5SIg==}
|
||||
engines: {node: '>=16.9.0'}
|
||||
dependencies:
|
||||
'@discordjs/builders': 1.0.0
|
||||
'@discordjs/collection': 1.0.0
|
||||
'@discordjs/rest': 1.0.0
|
||||
'@discordjs/builders': 1.1.0
|
||||
'@discordjs/collection': 1.0.1
|
||||
'@discordjs/rest': 1.0.1
|
||||
'@sapphire/snowflake': 3.2.2
|
||||
'@types/ws': 8.5.3
|
||||
discord-api-types: 0.36.3
|
||||
@@ -4493,15 +4507,6 @@ packages:
|
||||
is-date-object: 1.0.5
|
||||
is-symbol: 1.0.4
|
||||
|
||||
/esbuild-android-64/0.14.49:
|
||||
resolution: {integrity: sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-android-64/0.14.50:
|
||||
resolution: {integrity: sha512-H7iUEm7gUJHzidsBlFPGF6FTExazcgXL/46xxLo6i6bMtPim6ZmXyTccS8yOMpy6HAC6dPZ/JCQqrkkin69n6Q==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -4511,10 +4516,10 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-android-arm64/0.14.49:
|
||||
resolution: {integrity: sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==}
|
||||
/esbuild-android-64/0.14.51:
|
||||
resolution: {integrity: sha512-6FOuKTHnC86dtrKDmdSj2CkcKF8PnqkaIXqvgydqfJmqBazCPdw+relrMlhGjkvVdiiGV70rpdnyFmA65ekBCQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
cpu: [x64]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
@@ -4529,11 +4534,11 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-darwin-64/0.14.49:
|
||||
resolution: {integrity: sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==}
|
||||
/esbuild-android-arm64/0.14.51:
|
||||
resolution: {integrity: sha512-vBtp//5VVkZWmYYvHsqBRCMMi1MzKuMIn5XDScmnykMTu9+TD9v0NMEDqQxvtFToeYmojdo5UCV2vzMQWJcJ4A==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
@@ -4547,10 +4552,10 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-darwin-arm64/0.14.49:
|
||||
resolution: {integrity: sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==}
|
||||
/esbuild-darwin-64/0.14.51:
|
||||
resolution: {integrity: sha512-YFmXPIOvuagDcwCejMRtCDjgPfnDu+bNeh5FU2Ryi68ADDVlWEpbtpAbrtf/lvFTWPexbgyKgzppNgsmLPr8PA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
@@ -4565,11 +4570,11 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-freebsd-64/0.14.49:
|
||||
resolution: {integrity: sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==}
|
||||
/esbuild-darwin-arm64/0.14.51:
|
||||
resolution: {integrity: sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
@@ -4583,10 +4588,10 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-freebsd-arm64/0.14.49:
|
||||
resolution: {integrity: sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==}
|
||||
/esbuild-freebsd-64/0.14.51:
|
||||
resolution: {integrity: sha512-cLEI/aXjb6vo5O2Y8rvVSQ7smgLldwYY5xMxqh/dQGfWO+R1NJOFsiax3IS4Ng300SVp7Gz3czxT6d6qf2cw0g==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
@@ -4601,11 +4606,11 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-32/0.14.49:
|
||||
resolution: {integrity: sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==}
|
||||
/esbuild-freebsd-arm64/0.14.51:
|
||||
resolution: {integrity: sha512-TcWVw/rCL2F+jUgRkgLa3qltd5gzKjIMGhkVybkjk6PJadYInPtgtUBp1/hG+mxyigaT7ib+od1Xb84b+L+1Mg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ia32]
|
||||
os: [linux]
|
||||
cpu: [arm64]
|
||||
os: [freebsd]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
@@ -4619,10 +4624,10 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-64/0.14.49:
|
||||
resolution: {integrity: sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==}
|
||||
/esbuild-linux-32/0.14.51:
|
||||
resolution: {integrity: sha512-RFqpyC5ChyWrjx8Xj2K0EC1aN0A37H6OJfmUXIASEqJoHcntuV3j2Efr9RNmUhMfNE6yEj2VpYuDteZLGDMr0w==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
cpu: [ia32]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
@@ -4637,10 +4642,10 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-arm/0.14.49:
|
||||
resolution: {integrity: sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==}
|
||||
/esbuild-linux-64/0.14.51:
|
||||
resolution: {integrity: sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm]
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
@@ -4655,10 +4660,10 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-arm64/0.14.49:
|
||||
resolution: {integrity: sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==}
|
||||
/esbuild-linux-arm/0.14.51:
|
||||
resolution: {integrity: sha512-LsJynDxYF6Neg7ZC7748yweCDD+N8ByCv22/7IAZglIEniEkqdF4HCaa49JNDLw1UQGlYuhOB8ZT/MmcSWzcWg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
@@ -4673,10 +4678,10 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-mips64le/0.14.49:
|
||||
resolution: {integrity: sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==}
|
||||
/esbuild-linux-arm64/0.14.51:
|
||||
resolution: {integrity: sha512-D9rFxGutoqQX3xJPxqd6o+kvYKeIbM0ifW2y0bgKk5HPgQQOo2k9/2Vpto3ybGYaFPCE5qTGtqQta9PoP6ZEzw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [mips64el]
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
@@ -4691,10 +4696,10 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-ppc64le/0.14.49:
|
||||
resolution: {integrity: sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==}
|
||||
/esbuild-linux-mips64le/0.14.51:
|
||||
resolution: {integrity: sha512-vS54wQjy4IinLSlb5EIlLoln8buh1yDgliP4CuEHumrPk4PvvP4kTRIG4SzMXm6t19N0rIfT4bNdAxzJLg2k6A==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ppc64]
|
||||
cpu: [mips64el]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
@@ -4709,10 +4714,10 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-riscv64/0.14.49:
|
||||
resolution: {integrity: sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==}
|
||||
/esbuild-linux-ppc64le/0.14.51:
|
||||
resolution: {integrity: sha512-xcdd62Y3VfGoyphNP/aIV9LP+RzFw5M5Z7ja+zdpQHHvokJM7d0rlDRMN+iSSwvUymQkqZO+G/xjb4/75du8BQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [riscv64]
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
@@ -4727,10 +4732,10 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-s390x/0.14.49:
|
||||
resolution: {integrity: sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==}
|
||||
/esbuild-linux-riscv64/0.14.51:
|
||||
resolution: {integrity: sha512-syXHGak9wkAnFz0gMmRBoy44JV0rp4kVCEA36P5MCeZcxFq8+fllBC2t6sKI23w3qd8Vwo9pTADCgjTSf3L3rA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [s390x]
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
@@ -4745,11 +4750,11 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-netbsd-64/0.14.49:
|
||||
resolution: {integrity: sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==}
|
||||
/esbuild-linux-s390x/0.14.51:
|
||||
resolution: {integrity: sha512-kFAJY3dv+Wq8o28K/C7xkZk/X34rgTwhknSsElIqoEo8armCOjMJ6NsMxm48KaWY2h2RUYGtQmr+RGuUPKBhyw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [netbsd]
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
@@ -4763,11 +4768,11 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-openbsd-64/0.14.49:
|
||||
resolution: {integrity: sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==}
|
||||
/esbuild-netbsd-64/0.14.51:
|
||||
resolution: {integrity: sha512-ZZBI7qrR1FevdPBVHz/1GSk1x5GDL/iy42Zy8+neEm/HA7ma+hH/bwPEjeHXKWUDvM36CZpSL/fn1/y9/Hb+1A==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [openbsd]
|
||||
os: [netbsd]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
@@ -4781,11 +4786,11 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-sunos-64/0.14.49:
|
||||
resolution: {integrity: sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==}
|
||||
/esbuild-openbsd-64/0.14.51:
|
||||
resolution: {integrity: sha512-7R1/p39M+LSVQVgDVlcY1KKm6kFKjERSX1lipMG51NPcspJD1tmiZSmmBXoY5jhHIu6JL1QkFDTx94gMYK6vfA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [sunos]
|
||||
os: [openbsd]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
@@ -4799,11 +4804,11 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-windows-32/0.14.49:
|
||||
resolution: {integrity: sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==}
|
||||
/esbuild-sunos-64/0.14.51:
|
||||
resolution: {integrity: sha512-HoHaCswHxLEYN8eBTtyO0bFEWvA3Kdb++hSQ/lLG7TyKF69TeSG0RNoBRAs45x/oCeWaTDntEZlYwAfQlhEtJA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
cpu: [x64]
|
||||
os: [sunos]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
@@ -4817,10 +4822,10 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-windows-64/0.14.49:
|
||||
resolution: {integrity: sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==}
|
||||
/esbuild-windows-32/0.14.51:
|
||||
resolution: {integrity: sha512-4rtwSAM35A07CBt1/X8RWieDj3ZUHQqUOaEo5ZBs69rt5WAFjP4aqCIobdqOy4FdhYw1yF8Z0xFBTyc9lgPtEg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
@@ -4835,10 +4840,10 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-windows-arm64/0.14.49:
|
||||
resolution: {integrity: sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==}
|
||||
/esbuild-windows-64/0.14.51:
|
||||
resolution: {integrity: sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
@@ -4853,33 +4858,14 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild/0.14.49:
|
||||
resolution: {integrity: sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==}
|
||||
/esbuild-windows-arm64/0.14.51:
|
||||
resolution: {integrity: sha512-JQDqPjuOH7o+BsKMSddMfmVJXrnYZxXDHsoLHc0xgmAZkOOCflRmC43q31pk79F9xuyWY45jDBPolb5ZgGOf9g==}
|
||||
engines: {node: '>=12'}
|
||||
hasBin: true
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
optionalDependencies:
|
||||
esbuild-android-64: 0.14.49
|
||||
esbuild-android-arm64: 0.14.49
|
||||
esbuild-darwin-64: 0.14.49
|
||||
esbuild-darwin-arm64: 0.14.49
|
||||
esbuild-freebsd-64: 0.14.49
|
||||
esbuild-freebsd-arm64: 0.14.49
|
||||
esbuild-linux-32: 0.14.49
|
||||
esbuild-linux-64: 0.14.49
|
||||
esbuild-linux-arm: 0.14.49
|
||||
esbuild-linux-arm64: 0.14.49
|
||||
esbuild-linux-mips64le: 0.14.49
|
||||
esbuild-linux-ppc64le: 0.14.49
|
||||
esbuild-linux-riscv64: 0.14.49
|
||||
esbuild-linux-s390x: 0.14.49
|
||||
esbuild-netbsd-64: 0.14.49
|
||||
esbuild-openbsd-64: 0.14.49
|
||||
esbuild-sunos-64: 0.14.49
|
||||
esbuild-windows-32: 0.14.49
|
||||
esbuild-windows-64: 0.14.49
|
||||
esbuild-windows-arm64: 0.14.49
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild/0.14.50:
|
||||
resolution: {integrity: sha512-SbC3k35Ih2IC6trhbMYW7hYeGdjPKf9atTKwBUHqMCYFZZ9z8zhuvfnZihsnJypl74FjiAKjBRqFkBkAd0rS/w==}
|
||||
@@ -4909,6 +4895,34 @@ packages:
|
||||
esbuild-windows-arm64: 0.14.50
|
||||
dev: true
|
||||
|
||||
/esbuild/0.14.51:
|
||||
resolution: {integrity: sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw==}
|
||||
engines: {node: '>=12'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
optionalDependencies:
|
||||
esbuild-android-64: 0.14.51
|
||||
esbuild-android-arm64: 0.14.51
|
||||
esbuild-darwin-64: 0.14.51
|
||||
esbuild-darwin-arm64: 0.14.51
|
||||
esbuild-freebsd-64: 0.14.51
|
||||
esbuild-freebsd-arm64: 0.14.51
|
||||
esbuild-linux-32: 0.14.51
|
||||
esbuild-linux-64: 0.14.51
|
||||
esbuild-linux-arm: 0.14.51
|
||||
esbuild-linux-arm64: 0.14.51
|
||||
esbuild-linux-mips64le: 0.14.51
|
||||
esbuild-linux-ppc64le: 0.14.51
|
||||
esbuild-linux-riscv64: 0.14.51
|
||||
esbuild-linux-s390x: 0.14.51
|
||||
esbuild-netbsd-64: 0.14.51
|
||||
esbuild-openbsd-64: 0.14.51
|
||||
esbuild-sunos-64: 0.14.51
|
||||
esbuild-windows-32: 0.14.51
|
||||
esbuild-windows-64: 0.14.51
|
||||
esbuild-windows-arm64: 0.14.51
|
||||
dev: true
|
||||
|
||||
/escalade/3.1.1:
|
||||
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
|
||||
engines: {node: '>=6'}
|
||||
@@ -5479,13 +5493,13 @@ packages:
|
||||
flat-cache: 3.0.4
|
||||
dev: true
|
||||
|
||||
/file-type/17.1.3:
|
||||
resolution: {integrity: sha512-MFVSozBIhvnx2dkxlf+010Xqn6+ojlMUT9LXQiPNoOijgRtXNMghWdGK0u2o1RoCqzHoVsw65IL8ZBcQ4MhIrw==}
|
||||
/file-type/17.1.4:
|
||||
resolution: {integrity: sha512-3w/rJUUPBj6CYhVER3D5JCKwYJJiC36uj5dP+LnyubHI6H6FJo1TeWVCEA09YLVoZqV3/mLP26j9+Pz1GjAyjQ==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
dependencies:
|
||||
readable-web-to-node-stream: 3.0.2
|
||||
strtok3: 7.0.0-alpha.8
|
||||
token-types: 5.0.0-alpha.2
|
||||
strtok3: 7.0.0-alpha.9
|
||||
token-types: 5.0.0-alpha.3
|
||||
dev: true
|
||||
|
||||
/file-uri-to-path/1.0.0:
|
||||
@@ -5514,11 +5528,6 @@ packages:
|
||||
dependencies:
|
||||
to-regex-range: 5.0.1
|
||||
|
||||
/filter-obj/1.1.0:
|
||||
resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/finalhandler/1.2.0:
|
||||
resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
|
||||
engines: {node: '>= 0.8'}
|
||||
@@ -5628,8 +5637,9 @@ packages:
|
||||
resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==}
|
||||
dev: true
|
||||
|
||||
/form-data-encoder/1.7.1:
|
||||
resolution: {integrity: sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==}
|
||||
/form-data-encoder/2.0.1:
|
||||
resolution: {integrity: sha512-Oy+P9w5mnO4TWXVgUiQvggNKPI9/ummcSt5usuIV6HkaLKigwzPpoenhEqmGmx3zHqm6ZLJ+CR/99N8JLinaEw==}
|
||||
engines: {node: '>= 14.17'}
|
||||
dev: true
|
||||
|
||||
/form-data/2.3.3:
|
||||
@@ -5861,17 +5871,17 @@ packages:
|
||||
resolution: {integrity: sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ==}
|
||||
dev: true
|
||||
|
||||
/git-up/4.0.5:
|
||||
resolution: {integrity: sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==}
|
||||
/git-up/6.0.0:
|
||||
resolution: {integrity: sha512-6RUFSNd1c/D0xtGnyWN2sxza2bZtZ/EmI9448n6rCZruFwV/ezeEn2fJP7XnUQGwf0RAtd/mmUCbtH6JPYA2SA==}
|
||||
dependencies:
|
||||
is-ssh: 1.4.0
|
||||
parse-url: 6.0.2
|
||||
parse-url: 7.0.2
|
||||
dev: true
|
||||
|
||||
/git-url-parse/11.6.0:
|
||||
resolution: {integrity: sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==}
|
||||
/git-url-parse/12.0.0:
|
||||
resolution: {integrity: sha512-I6LMWsxV87vysX1WfsoglXsXg6GjQRKq7+Dgiseo+h0skmp5Hp2rzmcEIRQot9CPA+uzU7x1x7jZdqvTFGnB+Q==}
|
||||
dependencies:
|
||||
git-up: 4.0.5
|
||||
git-up: 6.0.0
|
||||
dev: true
|
||||
|
||||
/glob-parent/5.1.2:
|
||||
@@ -5981,18 +5991,18 @@ packages:
|
||||
responselike: 2.0.1
|
||||
dev: true
|
||||
|
||||
/got/12.1.0:
|
||||
resolution: {integrity: sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==}
|
||||
/got/12.2.0:
|
||||
resolution: {integrity: sha512-A81ll5Z8wzeCmSdIlWVMDWFKDo82v2nmOaMZDQNHKGInNqDBcle+CSb6BBiZcn/Aiefz/kSpo520WBKi9QAO/A==}
|
||||
engines: {node: '>=14.16'}
|
||||
dependencies:
|
||||
'@sindresorhus/is': 4.6.0
|
||||
'@sindresorhus/is': 5.3.0
|
||||
'@szmarczak/http-timer': 5.0.1
|
||||
'@types/cacheable-request': 6.0.2
|
||||
'@types/responselike': 1.0.0
|
||||
cacheable-lookup: 6.0.4
|
||||
cacheable-request: 7.0.2
|
||||
decompress-response: 6.0.0
|
||||
form-data-encoder: 1.7.1
|
||||
form-data-encoder: 2.0.1
|
||||
get-stream: 6.0.1
|
||||
http2-wrapper: 2.1.11
|
||||
lowercase-keys: 3.0.0
|
||||
@@ -8026,7 +8036,7 @@ packages:
|
||||
resolution: {integrity: sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
dependencies:
|
||||
type-fest: 2.17.0
|
||||
type-fest: 2.18.0
|
||||
dev: true
|
||||
|
||||
/node-addon-api/1.7.2:
|
||||
@@ -8323,7 +8333,7 @@ packages:
|
||||
bl: 5.0.0
|
||||
chalk: 5.0.1
|
||||
cli-cursor: 4.0.0
|
||||
cli-spinners: 2.6.1
|
||||
cli-spinners: 2.7.0
|
||||
is-interactive: 2.0.0
|
||||
is-unicode-supported: 1.2.0
|
||||
log-symbols: 5.1.0
|
||||
@@ -8484,7 +8494,7 @@ packages:
|
||||
resolution: {integrity: sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==}
|
||||
engines: {node: '>=14.16'}
|
||||
dependencies:
|
||||
got: 12.1.0
|
||||
got: 12.2.0
|
||||
registry-auth-token: 5.0.1
|
||||
registry-url: 6.0.1
|
||||
semver: 7.3.7
|
||||
@@ -8538,22 +8548,19 @@ packages:
|
||||
resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==}
|
||||
dev: true
|
||||
|
||||
/parse-path/4.0.4:
|
||||
resolution: {integrity: sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw==}
|
||||
/parse-path/5.0.0:
|
||||
resolution: {integrity: sha512-qOpH55/+ZJ4jUu/oLO+ifUKjFPNZGfnPJtzvGzKN/4oLMil5m9OH4VpOj6++9/ytJcfks4kzH2hhi87GL/OU9A==}
|
||||
dependencies:
|
||||
is-ssh: 1.4.0
|
||||
protocols: 1.4.8
|
||||
qs: 6.11.0
|
||||
query-string: 6.14.1
|
||||
protocols: 2.0.1
|
||||
dev: true
|
||||
|
||||
/parse-url/6.0.2:
|
||||
resolution: {integrity: sha512-uCSjOvD3T+6B/sPWhR+QowAZcU/o4bjPrVBQBGFxcDF6J6FraCGIaDBsdoQawiaaAVdHvtqBe3w3vKlfBKySOQ==}
|
||||
/parse-url/7.0.2:
|
||||
resolution: {integrity: sha512-PqO4Z0eCiQ08Wj6QQmrmp5YTTxpYfONdOEamrtvK63AmzXpcavIVQubGHxOEwiIoDZFb8uDOoQFS0NCcjqIYQg==}
|
||||
dependencies:
|
||||
is-ssh: 1.4.0
|
||||
normalize-url: 6.1.0
|
||||
parse-path: 4.0.4
|
||||
protocols: 1.4.8
|
||||
parse-path: 5.0.0
|
||||
protocols: 2.0.1
|
||||
dev: true
|
||||
|
||||
/parse5/6.0.1:
|
||||
@@ -8873,10 +8880,6 @@ packages:
|
||||
engines: {node: '>=4'}
|
||||
dev: true
|
||||
|
||||
/protocols/1.4.8:
|
||||
resolution: {integrity: sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==}
|
||||
dev: true
|
||||
|
||||
/protocols/2.0.1:
|
||||
resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==}
|
||||
dev: true
|
||||
@@ -8964,28 +8967,11 @@ packages:
|
||||
dependencies:
|
||||
side-channel: 1.0.4
|
||||
|
||||
/qs/6.11.0:
|
||||
resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
|
||||
engines: {node: '>=0.6'}
|
||||
dependencies:
|
||||
side-channel: 1.0.4
|
||||
dev: true
|
||||
|
||||
/qs/6.5.3:
|
||||
resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==}
|
||||
engines: {node: '>=0.6'}
|
||||
dev: true
|
||||
|
||||
/query-string/6.14.1:
|
||||
resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==}
|
||||
engines: {node: '>=6'}
|
||||
dependencies:
|
||||
decode-uri-component: 0.2.0
|
||||
filter-obj: 1.1.0
|
||||
split-on-first: 1.1.0
|
||||
strict-uri-encode: 2.0.0
|
||||
dev: true
|
||||
|
||||
/queue-microtask/1.2.3:
|
||||
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
|
||||
|
||||
@@ -9388,8 +9374,8 @@ packages:
|
||||
unist-util-visit: 4.1.0
|
||||
dev: true
|
||||
|
||||
/release-it/15.1.3:
|
||||
resolution: {integrity: sha512-pdW9Ua59S3upm2wwzrWiQK8N5vXazNBBYk/UhpVf0faHV6mmY8GunS1ZzawSNi4fOOx55zSQFj2IHkOgfBxNUg==}
|
||||
/release-it/15.2.0:
|
||||
resolution: {integrity: sha512-zVtk/+BSX941e9lR2dhWGQhOIVdr98Fifgel4xUnsJVycU0uTtalOUhjoZM2jyDgcD22idmuDVgvgOTl9IyJ/g==}
|
||||
engines: {node: '>=14.9'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
@@ -9400,9 +9386,9 @@ packages:
|
||||
cosmiconfig: 7.0.1
|
||||
execa: 6.1.0
|
||||
form-data: 4.0.0
|
||||
git-url-parse: 11.6.0
|
||||
git-url-parse: 12.0.0
|
||||
globby: 13.1.2
|
||||
got: 12.1.0
|
||||
got: 12.2.0
|
||||
inquirer: 9.0.2
|
||||
is-ci: 3.0.1
|
||||
lodash: 4.17.21
|
||||
@@ -9607,6 +9593,14 @@ packages:
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/rollup/2.77.2:
|
||||
resolution: {integrity: sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
hasBin: true
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/run-async/2.4.1:
|
||||
resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
|
||||
engines: {node: '>=0.12.0'}
|
||||
@@ -10022,11 +10016,6 @@ packages:
|
||||
resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==}
|
||||
dev: true
|
||||
|
||||
/split-on-first/1.1.0:
|
||||
resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/split-string/3.1.0:
|
||||
resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
@@ -10085,11 +10074,6 @@ packages:
|
||||
mixme: 0.5.4
|
||||
dev: true
|
||||
|
||||
/strict-uri-encode/2.0.0:
|
||||
resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
|
||||
engines: {node: '>=4'}
|
||||
dev: true
|
||||
|
||||
/string-width/4.2.3:
|
||||
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -10209,8 +10193,8 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/strtok3/7.0.0-alpha.8:
|
||||
resolution: {integrity: sha512-u+k19v+rTxBjGYxncRQjGvZYwYvEd0uP3D+uHKe/s4WB1eXS5ZwpZsTlBu5xSS4zEd89mTXECXg6WW3FSeV8cA==}
|
||||
/strtok3/7.0.0-alpha.9:
|
||||
resolution: {integrity: sha512-G8WxjBFjTZ77toVElv1i7k3jCXNkBB14FVaZ/6LIOka/WGo4La5XHLrU7neFVLdKbXESZf4BejVKZu5maOmocA==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
dependencies:
|
||||
'@tokenizer/token': 0.3.0
|
||||
@@ -10223,8 +10207,8 @@ packages:
|
||||
inline-style-parser: 0.1.1
|
||||
dev: true
|
||||
|
||||
/sucrase/3.24.0:
|
||||
resolution: {integrity: sha512-SevqflhW356TKEyWjFHg2e5f3eH+5rzmsMJxrVMDvZIEHh/goYrpzDGA6APEj4ME9MdGm8oNgIzi1eF3c3dDQA==}
|
||||
/sucrase/3.25.0:
|
||||
resolution: {integrity: sha512-WxTtwEYXSmZArPGStGBicyRsg5TBEFhT5b7N+tF+zauImP0Acy+CoUK0/byJ8JNPK/5lbpWIVuFagI4+0l85QQ==}
|
||||
engines: {node: '>=8'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
@@ -10444,8 +10428,8 @@ packages:
|
||||
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
|
||||
engines: {node: '>=0.6'}
|
||||
|
||||
/token-types/5.0.0-alpha.2:
|
||||
resolution: {integrity: sha512-EsG9UxAW4M6VATrEEjhPFTKEUi1OiJqTUMIZOGBN49fGxYjZB36k0p7to3HZSmWRoHm1QfZgrg3e02fpqAt5fQ==}
|
||||
/token-types/5.0.0-alpha.3:
|
||||
resolution: {integrity: sha512-GWGtybxmoWRB1pNghnsNBftIfbzGLiTnytq1XKG/0ZQnLmSqgUA4x06dTvqRem5ZuXI0LY3zkNxl2/RG6QwJkA==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
dependencies:
|
||||
'@tokenizer/token': 0.3.0
|
||||
@@ -10517,8 +10501,8 @@ packages:
|
||||
/tslib/2.4.0:
|
||||
resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
|
||||
|
||||
/tsup/6.1.3_typescript@4.7.4:
|
||||
resolution: {integrity: sha512-eRpBnbfpDFng+EJNTQ90N7QAf4HAGGC7O3buHIjroKWK7D1ibk9/YnR/3cS8HsMU5T+6Oi+cnF+yU5WmCnB//Q==}
|
||||
/tsup/6.2.1_typescript@4.7.4:
|
||||
resolution: {integrity: sha512-KhBhCqVA3bHrIWhkcqTUA7R69H05IcBlHEtCVLEu42XDGUzz+bDqCcfu5PwpkKJ8DqK5tpdgM/qmyk4DdUbkZw==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@@ -10533,19 +10517,19 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
bundle-require: 3.0.4_esbuild@0.14.50
|
||||
bundle-require: 3.0.4_esbuild@0.14.51
|
||||
cac: 6.7.12
|
||||
chokidar: 3.5.3
|
||||
debug: 4.3.4
|
||||
esbuild: 0.14.50
|
||||
esbuild: 0.14.51
|
||||
execa: 5.1.1
|
||||
globby: 11.1.0
|
||||
joycon: 3.1.1
|
||||
postcss-load-config: 3.1.4
|
||||
resolve-from: 5.0.0
|
||||
rollup: 2.77.0
|
||||
rollup: 2.77.2
|
||||
source-map: 0.8.0-beta.0
|
||||
sucrase: 3.24.0
|
||||
sucrase: 3.25.0
|
||||
tree-kill: 1.2.2
|
||||
typescript: 4.7.4
|
||||
transitivePeerDependencies:
|
||||
@@ -10651,6 +10635,11 @@ packages:
|
||||
resolution: {integrity: sha512-U+g3/JVXnOki1kLSc+xZGPRll3Ah9u2VIG6Sn9iH9YX6UkPERmt6O/0fIyTgsd2/whV0+gAaHAg8fz6sG1QzMA==}
|
||||
engines: {node: '>=12.20'}
|
||||
|
||||
/type-fest/2.18.0:
|
||||
resolution: {integrity: sha512-pRS+/yrW5TjPPHNOvxhbNZexr2bS63WjrMU8a+VzEBhUi9Tz1pZeD+vQz3ut0svZ46P+SRqMEPnJmk2XnvNzTw==}
|
||||
engines: {node: '>=12.20'}
|
||||
dev: true
|
||||
|
||||
/type-is/1.6.18:
|
||||
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
|
||||
engines: {node: '>= 0.6'}
|
||||
|
||||
Reference in New Issue
Block a user