feat: generate message type

This commit is contained in:
H01001000
2023-12-03 04:57:38 -08:00
parent b567c1317d
commit 4f7ec6a7d2
10 changed files with 451 additions and 8 deletions

5
.discordenorc.json Normal file
View File

@@ -0,0 +1,5 @@
{
"desiredProps": {
"message": ["id", "messageReference"]
}
}

View File

@@ -29,6 +29,7 @@
},
"devDependencies": {
"chokidar-cli": "^3.0.0",
"discordeno": "19.0.0-alpha.1",
"eslint": "^8.36.0",
"eslint-config-discordeno": "*",
"husky": "^8.0.3",

View File

@@ -0,0 +1 @@
import('../dist/esm/bin/index.js')

View File

@@ -1 +0,0 @@
import('../dist/bin/index.js')

View File

@@ -4,10 +4,10 @@
"main": "./dist/esm/index.js",
"exports": {
"import": "./dist/esm/index.js",
"require": "./dist/cjs/index.js",
"require": "./dist/cjs/index.cjs",
"types": "./dist/types/index.d.ts"
},
"bin": "./bin/disocrdeno.js",
"bin": "./bin/discordeno.js",
"types": "./dist/types/index.d.ts",
"type": "module",
"license": "Apache-2.0",
@@ -34,7 +34,8 @@
"@discordeno/rest": "19.0.0-alpha.1",
"@discordeno/types": "19.0.0-alpha.1",
"@discordeno/utils": "19.0.0-alpha.1",
"commander": "^11.0.0"
"commander": "^11.0.0",
"read-package-up": "^11.0.0"
},
"devDependencies": {
"@swc/cli": "^0.1.62",

View File

@@ -0,0 +1,142 @@
const messageTypeProps = {
activity: ` /** Sent with Rich Presence-related chat embeds */
activity?: {
/** Type of message activity */
type: MessageActivityTypes
/** party_id from a Rich Presence event */
partyId?: string
}\n`,
interaction: ` /** Sent if the message is a response to an Interaction */
interaction?: {
/** Id of the interaction */
id: bigint
/** The member who invoked the interaction in the guild */
member?: Member
/** The name of the ApplicationCommand including the name of the subcommand/subcommand group */
name: string
/** The type of interaction */
type: InteractionTypes
/** The user who invoked the interaction */
user: User
}\n`,
messageReference: ` /** Data showing the source of a crossposted channel follow add, pin or reply message */
messageReference?: {
/** id of the originating message's channel Note: channel_id is optional when creating a reply, but will always be present when receiving an event/response that includes this data model. */
channelId?: bigint
/** id of the originating message's guild */
guildId?: bigint
/** id of the originating message */
messageId?: bigint
}\n`,
reactions: ` /** Reactions on this message. */
reactions?: Array<{
/** Whether the current user reacted using this emoji */
me: boolean
/** Times this emoji has been used to react */
count: number
/** Emoji information */
emoji: Emoji
}>\n`,
stickerItems: ` /** Sent if the message contains stickers */
stickerItems?: Array<{
/** The id of this sticker. */
id: bigint
/** The name of this sticker. */
name: string
/** The type of this stickers format. */
formatType: StickerFormatTypes
}>\n`,
applicationId: ` /** if the message is an Interaction or application-owned webhook, this is the id of the application */
applicationId?: bigint\n`,
attachments: ` /** Any attached files on this message. */
attachments?: Attachment[]\n`,
author: ` /** The author of this message (not guaranteed to be a valid user) Note: The author object follows the structure of the user object, but is only a valid user in the case where the message is generated by a user or bot user. If the message is generated by a webhook, the author object corresponds to the webhook's id, username, and avatar. You can tell if a message is generated by a webhook by checking for the webhook_id on the message object. */
author: User\n`,
channelId: ` /** id of the channel the message was sent in */
channelId: bigint\n`,
components: ` /** The components related to this message */
components: Component[]\n`,
content: ` /** Contents of the message */
content: string\n`,
editedTimestamp: ` /** The timestamp in milliseconds when this message was edited last. */
editedTimestamp?: number\n`,
embeds: ` /** Any embedded content */
embeds?: Embed[]\n`,
guildId: ` /** id of the guild the message was sent in Note: For MESSAGE_CREATE and MESSAGE_UPDATE events, the message object may not contain a guild_id or member field since the events are sent directly to the receiving user and the bot who sent the message, rather than being sent through the guild like non-ephemeral messages. */
guildId?: bigint\n`,
id: ` /** id of the message */
id: bigint\n`,
member: ` /** Member properties for this message's author Note: The member object exists in MESSAGE_CREATE and MESSAGE_UPDATE events from text-based guild channels. This allows bots to obtain real-time member data without requiring bots to store member state in memory. */
member?: Member\n`,
mentions: ` /** Users specifically mentioned in the message Note: The user objects in the mentions array will only have the partial member field present in MESSAGE_CREATE and MESSAGE_UPDATE events from text-based guild channels. */
mentions?: User[]\n`,
mentionedChannelIds: ` /** Channels specifically mentioned in this message Note: Not all channel mentions in a message will appear in mention_channels. Only textual channels that are visible to everyone in a discoverable guild will ever be included. Only crossposted messages (via Channel Following) currently include mention_channels at all. If no mentions in the message meet these requirements, this field will not be sent. */
mentionedChannelIds?: bigint[]\n`,
mentionedRoleIds: ` /** Roles specifically mentioned in this message */
mentionedRoleIds?: bigint[]\n`,
nonce: ` /** Used for validating a message was sent */
nonce?: string | number\n`,
type: ` /** Type of message */
type: MessageTypes\n`,
thread: ` /** The thread that was started from this message, includes thread member object */
thread?: Channel\n`,
webhookId: ` /** If the message is generated by a webhook, this is the webhook's id */
webhookId?: bigint\n`,
}
export const messageTypeGenerator = (desiredProps: Array<keyof typeof messageTypeProps>): string => {
let generatedMessageType = `import type { DiscordMessage, InteractionTypes, MessageActivityTypes, MessageTypes, StickerFormatTypes } from '@discordeno/types'
import { CHANNEL_MENTION_REGEX } from '../constants.js'
import { snowflakeToTimestamp, type Bot } from '../index.js'
import { MessageFlags } from '../typings.js'
import type { Attachment } from './attachment.js'
import type { Channel } from './channel.js'
import type { Component } from './component.js'
import type { Embed } from './embed.js'
import type { Emoji } from './emoji.js'
import type { Member } from './member.js'
import { ToggleBitfield } from './toggles/ToggleBitfield.js'
import type { User } from './user.js'
export interface MessageBase {
/** Holds all the boolean values on this message. */
bitfield?: ToggleBitfield
/** Whether this message has been published to subscribed channels (via Channel Following) */
crossposted: boolean
/** Whether this message is only visible to the user who invoked the Interaction */
ephemeral: boolean
/** Whether this message failed to mention some roles and add their members to the thread */
failedToMentionSomeRolesInThread: boolean
/** Message flags combined as a bitfield */
flags?: ToggleBitfield
/** Whether this message has an associated thread, with the same id as the message */
hasThread: boolean
/** Whether this message originated from a message in another channel (via Channel Following) */
isCrosspost: boolean
/** Whether this message is an Interaction Response and the bot is "thinking" */
loading: boolean
/** The ids of the users who were mentioned in this message. */
mentionedUserIds: bigint[]
/** Whether this message mentions everyone */
mentionEveryone: boolean
/** Whether this message is pinned */
pinned: boolean
/** Whether the source message for this crosspost has been deleted (via Channel Following) */
sourceMessageDeleted: boolean
/** Whether do not include any embeds when serializing this message */
suppressEmbeds: boolean
/** Whether this message will not trigger push and desktop notifications */
suppressNotifications: boolean
/** The timestamp in milliseconds when this message was created */
timestamp: number
/** Whether this was a TTS message. */
tts: boolean
/** Whether this message came from the urgent message system */
urgent: boolean
}
export interface Message extends MessageBase {\n`
desiredProps.forEach((desiredProp) => (generatedMessageType += messageTypeProps[desiredProp]))
generatedMessageType += `}\n`
return generatedMessageType
}

View File

@@ -1,4 +1,9 @@
import { Command } from 'commander'
import { mkdir, writeFile } from 'node:fs/promises'
import path from 'node:path'
import { readPackageUp } from 'read-package-up'
import { messageTypeGenerator } from './generators/messageTypeGenerator.js'
import { readConfig } from './utils/readConfig.js'
const program = new Command()
program.name('discordeno').description('CLI to discordeno utilities').version('0.1.0')
@@ -6,6 +11,14 @@ program.name('discordeno').description('CLI to discordeno utilities').version('0
program
.command('generate')
.description('Generate types/schema for discordeno')
.action(() => {})
.action(async () => {
const config = await readConfig()
const packagePath = await readPackageUp({ cwd: process.cwd() })
const transformerPath = path.join(path.dirname(packagePath!.path), 'node_modules/.discordeno/transformer')
await mkdir(path.join(transformerPath, 'src'), { recursive: true })
// @ts-expect-error should check before, TODO later
await writeFile(path.join(transformerPath, 'src', 'message.ts'), messageTypeGenerator(config.desiredProps.message))
})
program.parse()

View File

@@ -0,0 +1,5 @@
export interface DiscordenoConfig {
desiredProps: {
message: string[]
}
}

View File

@@ -0,0 +1,38 @@
import { readFile } from 'node:fs/promises'
import path from 'node:path'
import { readPackageUp } from 'read-package-up'
import type { DiscordenoConfig } from '../types/DiscordenoConfig.js'
/**
*
* Credit: Primsa
* https://github.com/prisma/prisma/blob/862ae2d428edf32fb1440563f6ed4759489c7f30/packages/internals/src/cli/getSchema.ts
*/
export const readConfig = async (): Promise<DiscordenoConfig> => {
const configPath = await getConfigPath()
if (configPath === null) {
console.error('Error: No config found')
process.exit(1)
}
return await readFile(configPath, 'utf-8').then((config) => JSON.parse(config) as DiscordenoConfig)
}
const getConfigPath = async (): Promise<string | null> => {
const workDir = process.cwd()
const pkgJson = await readPackageUp({ cwd: workDir })
if (pkgJson?.packageJson?.discordeno) return pkgJson?.packageJson?.discordeno as string
const possibleFileName = ['.discordenorc', '.discordenorc.json', 'discordenorc.js']
const relativeConfigPath = await Promise.all(
possibleFileName.map(
async (filename) =>
await readFile(path.join(workDir, filename), 'utf-8')
.then(() => filename)
.catch(() => null),
),
)
const firstRelativeConfigPath = relativeConfigPath.find((config) => config !== null)
if (firstRelativeConfigPath) return firstRelativeConfigPath
return null
}

244
yarn.lock
View File

@@ -5,6 +5,34 @@ __metadata:
version: 6
cacheKey: 8
"@babel/code-frame@npm:^7.22.13":
version: 7.23.5
resolution: "@babel/code-frame@npm:7.23.5"
dependencies:
"@babel/highlight": ^7.23.4
chalk: ^2.4.2
checksum: d90981fdf56a2824a9b14d19a4c0e8db93633fd488c772624b4e83e0ceac6039a27cd298a247c3214faa952bf803ba23696172ae7e7235f3b97f43ba278c569a
languageName: node
linkType: hard
"@babel/helper-validator-identifier@npm:^7.22.20":
version: 7.22.20
resolution: "@babel/helper-validator-identifier@npm:7.22.20"
checksum: 136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc
languageName: node
linkType: hard
"@babel/highlight@npm:^7.23.4":
version: 7.23.4
resolution: "@babel/highlight@npm:7.23.4"
dependencies:
"@babel/helper-validator-identifier": ^7.22.20
chalk: ^2.4.2
js-tokens: ^4.0.0
checksum: 643acecdc235f87d925979a979b539a5d7d1f31ae7db8d89047269082694122d11aa85351304c9c978ceeb6d250591ccadb06c366f358ccee08bb9c122476b89
languageName: node
linkType: hard
"@bcoe/v8-coverage@npm:^0.2.3":
version: 0.2.3
resolution: "@bcoe/v8-coverage@npm:0.2.3"
@@ -714,6 +742,13 @@ __metadata:
languageName: node
linkType: hard
"@types/normalize-package-data@npm:^2.4.3":
version: 2.4.4
resolution: "@types/normalize-package-data@npm:2.4.4"
checksum: 65dff72b543997b7be8b0265eca7ace0e34b75c3e5fee31de11179d08fa7124a7a5587265d53d0409532ecb7f7fba662c2012807963e1f9b059653ec2c83ee05
languageName: node
linkType: hard
"@types/responselike@npm:^1.0.0":
version: 1.0.0
resolution: "@types/responselike@npm:1.0.0"
@@ -994,7 +1029,7 @@ __metadata:
languageName: node
linkType: hard
"ansi-styles@npm:^3.2.0":
"ansi-styles@npm:^3.2.0, ansi-styles@npm:^3.2.1":
version: 3.2.1
resolution: "ansi-styles@npm:3.2.1"
dependencies:
@@ -1424,6 +1459,17 @@ __metadata:
languageName: node
linkType: hard
"chalk@npm:^2.4.2":
version: 2.4.2
resolution: "chalk@npm:2.4.2"
dependencies:
ansi-styles: ^3.2.1
escape-string-regexp: ^1.0.5
supports-color: ^5.3.0
checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2
languageName: node
linkType: hard
"chalk@npm:^4.0.0, chalk@npm:^4.1.0":
version: 4.1.2
resolution: "chalk@npm:4.1.2"
@@ -1838,6 +1884,7 @@ __metadata:
resolution: "discordeno-monorepo@workspace:."
dependencies:
chokidar-cli: ^3.0.0
discordeno: 19.0.0-alpha.1
eslint: ^8.36.0
eslint-config-discordeno: "*"
husky: ^8.0.3
@@ -1851,7 +1898,7 @@ __metadata:
languageName: unknown
linkType: soft
"discordeno@workspace:packages/discordeno":
"discordeno@19.0.0-alpha.1, discordeno@workspace:packages/discordeno":
version: 0.0.0-use.local
resolution: "discordeno@workspace:packages/discordeno"
dependencies:
@@ -1872,12 +1919,13 @@ __metadata:
eslint: ^8.36.0
eslint-config-discordeno: "*"
mocha: ^10.2.0
read-package-up: ^11.0.0
sinon: ^15.0.2
ts-node: ^10.9.1
tsconfig: "*"
typescript: ^4.9.5
bin:
discordeno: ./bin/disocrdeno.js
discordeno: ./bin/discordeno.js
languageName: unknown
linkType: soft
@@ -2053,6 +2101,13 @@ __metadata:
languageName: node
linkType: hard
"escape-string-regexp@npm:^1.0.5":
version: 1.0.5
resolution: "escape-string-regexp@npm:1.0.5"
checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410
languageName: node
linkType: hard
"escape-string-regexp@npm:^5.0.0":
version: 5.0.0
resolution: "escape-string-regexp@npm:5.0.0"
@@ -2608,6 +2663,13 @@ __metadata:
languageName: node
linkType: hard
"find-up-simple@npm:^1.0.0":
version: 1.0.0
resolution: "find-up-simple@npm:1.0.0"
checksum: 91c3d51c1111b5eb4e6e6d71d21438f6571a37a69dc288d4222b98996756e2f472fa5393a4dddb5e1a84929405d87e86f4bdce798ba84ee513b79854960ec140
languageName: node
linkType: hard
"find-up@npm:5.0.0, find-up@npm:^5.0.0":
version: 5.0.0
resolution: "find-up@npm:5.0.0"
@@ -2732,6 +2794,13 @@ __metadata:
languageName: node
linkType: hard
"function-bind@npm:^1.1.2":
version: 1.1.2
resolution: "function-bind@npm:1.1.2"
checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1
languageName: node
linkType: hard
"function.prototype.name@npm:^1.1.5":
version: 1.1.5
resolution: "function.prototype.name@npm:1.1.5"
@@ -2983,6 +3052,13 @@ __metadata:
languageName: node
linkType: hard
"has-flag@npm:^3.0.0":
version: 3.0.0
resolution: "has-flag@npm:3.0.0"
checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b
languageName: node
linkType: hard
"has-flag@npm:^4.0.0":
version: 4.0.0
resolution: "has-flag@npm:4.0.0"
@@ -3038,6 +3114,15 @@ __metadata:
languageName: node
linkType: hard
"hasown@npm:^2.0.0":
version: 2.0.0
resolution: "hasown@npm:2.0.0"
dependencies:
function-bind: ^1.1.2
checksum: 6151c75ca12554565098641c98a40f4cc86b85b0fd5b6fe92360967e4605a4f9610f7757260b4e8098dd1c2ce7f4b095f2006fe72a570e3b6d2d28de0298c176
languageName: node
linkType: hard
"he@npm:1.2.0":
version: 1.2.0
resolution: "he@npm:1.2.0"
@@ -3047,6 +3132,15 @@ __metadata:
languageName: node
linkType: hard
"hosted-git-info@npm:^7.0.0":
version: 7.0.1
resolution: "hosted-git-info@npm:7.0.1"
dependencies:
lru-cache: ^10.0.1
checksum: be5280f0a20d6153b47e1ab578e09f5ae8ad734301b3ed7e547dc88a6814d7347a4888db1b4f9635cc738e3c0ef1fbff02272aba7d07c75d4c5a50ff8d618db6
languageName: node
linkType: hard
"html-escaper@npm:^2.0.0":
version: 2.0.2
resolution: "html-escaper@npm:2.0.2"
@@ -3171,6 +3265,13 @@ __metadata:
languageName: node
linkType: hard
"index-to-position@npm:^0.1.2":
version: 0.1.2
resolution: "index-to-position@npm:0.1.2"
checksum: ce0ab15544b154d6821b4f8b3fdb5dc410d560d20e43bcb0fb8ea2ccc5f93dc04caeee6b3ebd4abc7091e437156db4caaaef934ce20f05f079a1dbc73755f7e7
languageName: node
linkType: hard
"infer-owner@npm:^1.0.4":
version: 1.0.4
resolution: "infer-owner@npm:1.0.4"
@@ -3268,6 +3369,15 @@ __metadata:
languageName: node
linkType: hard
"is-core-module@npm:^2.8.1":
version: 2.13.1
resolution: "is-core-module@npm:2.13.1"
dependencies:
hasown: ^2.0.0
checksum: 256559ee8a9488af90e4bad16f5583c6d59e92f0742e9e8bb4331e758521ee86b810b93bae44f390766ffbc518a0488b18d9dab7da9a5ff997d499efc9403f7c
languageName: node
linkType: hard
"is-date-object@npm:^1.0.1":
version: 1.0.5
resolution: "is-date-object@npm:1.0.5"
@@ -3539,6 +3649,13 @@ __metadata:
languageName: node
linkType: hard
"js-tokens@npm:^4.0.0":
version: 4.0.0
resolution: "js-tokens@npm:4.0.0"
checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78
languageName: node
linkType: hard
"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0":
version: 4.1.0
resolution: "js-yaml@npm:4.1.0"
@@ -3758,6 +3875,13 @@ __metadata:
languageName: node
linkType: hard
"lru-cache@npm:^10.0.1":
version: 10.1.0
resolution: "lru-cache@npm:10.1.0"
checksum: 58056d33e2500fbedce92f8c542e7c11b50d7d086578f14b7074d8c241422004af0718e08a6eaae8705cee09c77e39a61c1c79e9370ba689b7010c152e6a76ab
languageName: node
linkType: hard
"lru-cache@npm:^4.0.1":
version: 4.1.5
resolution: "lru-cache@npm:4.1.5"
@@ -4204,6 +4328,18 @@ __metadata:
languageName: node
linkType: hard
"normalize-package-data@npm:^6.0.0":
version: 6.0.0
resolution: "normalize-package-data@npm:6.0.0"
dependencies:
hosted-git-info: ^7.0.0
is-core-module: ^2.8.1
semver: ^7.3.5
validate-npm-package-license: ^3.0.4
checksum: 741211a4354ba6d618caffa98f64e0e5ec9e5575bf3aefe47f4b68e662d65f9ba1b6b2d10640c16254763ed0879288155566138b5ffe384172352f6e969c1752
languageName: node
linkType: hard
"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0":
version: 3.0.0
resolution: "normalize-path@npm:3.0.0"
@@ -4431,6 +4567,17 @@ __metadata:
languageName: node
linkType: hard
"parse-json@npm:^8.0.0":
version: 8.1.0
resolution: "parse-json@npm:8.1.0"
dependencies:
"@babel/code-frame": ^7.22.13
index-to-position: ^0.1.2
type-fest: ^4.7.1
checksum: efc4256c91e835b1340e2b4f535272247f174fcba85eead15ff938be23b3ca2d521a04c76e564d1dc2f61c0c9ebcb6157d5433d459c7e736c81d014b49577b31
languageName: node
linkType: hard
"path-exists@npm:^3.0.0":
version: 3.0.0
resolution: "path-exists@npm:3.0.0"
@@ -4636,6 +4783,30 @@ __metadata:
languageName: node
linkType: hard
"read-package-up@npm:^11.0.0":
version: 11.0.0
resolution: "read-package-up@npm:11.0.0"
dependencies:
find-up-simple: ^1.0.0
read-pkg: ^9.0.0
type-fest: ^4.6.0
checksum: 535b7554d47fae5fb5c2e7aceebd48b5de4142cdfe7b21f942fa9a0f56db03d3b53cce298e19438e1149292279c285e6ba6722eca741d590fd242519c4bdbc17
languageName: node
linkType: hard
"read-pkg@npm:^9.0.0":
version: 9.0.1
resolution: "read-pkg@npm:9.0.1"
dependencies:
"@types/normalize-package-data": ^2.4.3
normalize-package-data: ^6.0.0
parse-json: ^8.0.0
type-fest: ^4.6.0
unicorn-magic: ^0.1.0
checksum: 5544bea2a58c6e5706db49a96137e8f0768c69395f25363f934064fbba00bdcdaa326fcd2f4281741df38cf81dbf27b76138240dc6de0ed718cf650475e0de3c
languageName: node
linkType: hard
"readable-stream@npm:^3.6.0":
version: 3.6.2
resolution: "readable-stream@npm:3.6.2"
@@ -5074,6 +5245,40 @@ __metadata:
languageName: node
linkType: hard
"spdx-correct@npm:^3.0.0":
version: 3.2.0
resolution: "spdx-correct@npm:3.2.0"
dependencies:
spdx-expression-parse: ^3.0.0
spdx-license-ids: ^3.0.0
checksum: e9ae98d22f69c88e7aff5b8778dc01c361ef635580e82d29e5c60a6533cc8f4d820803e67d7432581af0cc4fb49973125076ee3b90df191d153e223c004193b2
languageName: node
linkType: hard
"spdx-exceptions@npm:^2.1.0":
version: 2.3.0
resolution: "spdx-exceptions@npm:2.3.0"
checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0
languageName: node
linkType: hard
"spdx-expression-parse@npm:^3.0.0":
version: 3.0.1
resolution: "spdx-expression-parse@npm:3.0.1"
dependencies:
spdx-exceptions: ^2.1.0
spdx-license-ids: ^3.0.0
checksum: a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde
languageName: node
linkType: hard
"spdx-license-ids@npm:^3.0.0":
version: 3.0.16
resolution: "spdx-license-ids@npm:3.0.16"
checksum: 5cdaa85aaa24bd02f9353a2e357b4df0a4f205cb35655f3fd0a5674a4fb77081f28ffd425379214bc3be2c2b7593ce1215df6bcc75884aeee0a9811207feabe2
languageName: node
linkType: hard
"ssri@npm:^9.0.0":
version: 9.0.1
resolution: "ssri@npm:9.0.1"
@@ -5260,6 +5465,15 @@ __metadata:
languageName: node
linkType: hard
"supports-color@npm:^5.3.0":
version: 5.5.0
resolution: "supports-color@npm:5.5.0"
dependencies:
has-flag: ^3.0.0
checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac
languageName: node
linkType: hard
"supports-color@npm:^7.1.0, supports-color@npm:^7.2.0":
version: 7.2.0
resolution: "supports-color@npm:7.2.0"
@@ -5556,6 +5770,13 @@ __metadata:
languageName: node
linkType: hard
"type-fest@npm:^4.6.0, type-fest@npm:^4.7.1":
version: 4.8.2
resolution: "type-fest@npm:4.8.2"
checksum: 1809def7aadc62368fb087d0632b770b0831c8daeccb06e397ad68d6651fbbce11c73ce3a58f3f5a4b6a362a8a2f067f497b26d936973aa0607a00ca74edb2af
languageName: node
linkType: hard
"typed-array-length@npm:^1.0.4":
version: 1.0.4
resolution: "typed-array-length@npm:1.0.4"
@@ -5651,6 +5872,13 @@ __metadata:
languageName: node
linkType: hard
"unicorn-magic@npm:^0.1.0":
version: 0.1.0
resolution: "unicorn-magic@npm:0.1.0"
checksum: 48c5882ca3378f380318c0b4eb1d73b7e3c5b728859b060276e0a490051d4180966beeb48962d850fd0c6816543bcdfc28629dcd030bb62a286a2ae2acb5acb6
languageName: node
linkType: hard
"unique-filename@npm:^2.0.0":
version: 2.0.1
resolution: "unique-filename@npm:2.0.1"
@@ -5710,6 +5938,16 @@ __metadata:
languageName: node
linkType: hard
"validate-npm-package-license@npm:^3.0.4":
version: 3.0.4
resolution: "validate-npm-package-license@npm:3.0.4"
dependencies:
spdx-correct: ^3.0.0
spdx-expression-parse: ^3.0.0
checksum: 35703ac889d419cf2aceef63daeadbe4e77227c39ab6287eeb6c1b36a746b364f50ba22e88591f5d017bc54685d8137bc2d328d0a896e4d3fd22093c0f32a9ad
languageName: node
linkType: hard
"vscode-oniguruma@npm:^1.7.0":
version: 1.7.0
resolution: "vscode-oniguruma@npm:1.7.0"