mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
Transform webpack config into TS
This commit is contained in:
parent
1c25c8233d
commit
cd58a89972
@ -1,6 +1,6 @@
|
|||||||
import { Watching, Configuration, webpack } from 'webpack'
|
import { Watching, Configuration, webpack } from 'webpack'
|
||||||
import exitHook from 'async-exit-hook'
|
import exitHook from 'async-exit-hook'
|
||||||
import { fromId } from '../../registry/webpack/id'
|
import { fromId } from '../../registry/lib/id'
|
||||||
import { defaultWatcherHandler } from './watcher-common'
|
import { defaultWatcherHandler } from './watcher-common'
|
||||||
import { sendMessage } from './web-socket-server'
|
import { sendMessage } from './web-socket-server'
|
||||||
import { devServerConfig } from './config'
|
import { devServerConfig } from './config'
|
||||||
|
|||||||
@ -17,14 +17,16 @@
|
|||||||
"@babel/plugin-proposal-class-properties": "^7.8.3",
|
"@babel/plugin-proposal-class-properties": "^7.8.3",
|
||||||
"@babel/preset-env": "^7.9.6",
|
"@babel/preset-env": "^7.9.6",
|
||||||
"@babel/preset-typescript": "^7.9.0",
|
"@babel/preset-typescript": "^7.9.0",
|
||||||
|
"@babel/types": "^7.18.4",
|
||||||
"@types/async-exit-hook": "^2.0.0",
|
"@types/async-exit-hook": "^2.0.0",
|
||||||
|
"@types/babel__core": "^7.1.19",
|
||||||
"@types/color": "^3.0.1",
|
"@types/color": "^3.0.1",
|
||||||
|
"@types/glob": "^7.2.0",
|
||||||
"@types/lodash": "^4.14.172",
|
"@types/lodash": "^4.14.172",
|
||||||
"@types/marked": "^1.2.0",
|
"@types/marked": "^1.2.0",
|
||||||
"@types/node": "^17.0.31",
|
"@types/node": "^17.0.31",
|
||||||
"@types/serve-handler": "^6.1.1",
|
"@types/serve-handler": "^6.1.1",
|
||||||
"@types/sortablejs": "^1.10.7",
|
"@types/sortablejs": "^1.10.7",
|
||||||
"@types/webpack": "^4.41.6",
|
|
||||||
"@types/webpack-env": "^1.15.1",
|
"@types/webpack-env": "^1.15.1",
|
||||||
"@types/ws": "^8.2.3",
|
"@types/ws": "^8.2.3",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.9.1",
|
"@typescript-eslint/eslint-plugin": "^5.9.1",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { ComponentMetadata } from '@/components/types'
|
import { ComponentMetadata } from '@/components/types'
|
||||||
import { DocSource, DocSourceItem } from '.'
|
import { DocSource, DocSourceItem } from '.'
|
||||||
import { getId } from '../../webpack/id'
|
import { getId } from '../id'
|
||||||
import { getThirdPartyDescription, thirdPartyComponents } from './third-party'
|
import { getThirdPartyDescription, thirdPartyComponents } from './third-party'
|
||||||
|
|
||||||
export const getComponentsDoc: DocSource = async rootPath => {
|
export const getComponentsDoc: DocSource = async rootPath => {
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { getDescriptionMarkdown } from '@/components/description'
|
import { getDescriptionMarkdown } from '@/components/description'
|
||||||
import { PluginMetadata } from '@/plugins/plugin'
|
import { PluginMetadata } from '@/plugins/plugin'
|
||||||
import { DocSource, DocSourceItem } from '.'
|
import { DocSource, DocSourceItem } from '.'
|
||||||
import { getId } from '../../webpack/id'
|
import { getId } from '../id'
|
||||||
import { getThirdPartyDescription, thirdPartyPlugins } from './third-party'
|
import { getThirdPartyDescription, thirdPartyPlugins } from './third-party'
|
||||||
|
|
||||||
export const getPluginsDoc: DocSource = async rootPath => {
|
export const getPluginsDoc: DocSource = async rootPath => {
|
||||||
|
|||||||
21
registry/lib/id.ts
Normal file
21
registry/lib/id.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/**
|
||||||
|
* Runs both in Node.js and browser (without path module).
|
||||||
|
* Paths are case-sensitive.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate id from relative path and remove filename
|
||||||
|
* @example getId('folder1/', 'folder1/folder2/index.ts') -> 'folder2'
|
||||||
|
*/
|
||||||
|
export const getId = (root: string, entry: string) => {
|
||||||
|
const relative = entry.replace(root, '').replace(/\\/g, '/')
|
||||||
|
return relative.replace(/\/[^\/]+$/, '')
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse method for `getId`
|
||||||
|
* @example getId('folder1/', 'folder2') -> 'folder1/folder2/index.ts'
|
||||||
|
*/
|
||||||
|
export const fromId = (root: string, id: string, filename = 'index.ts') => (
|
||||||
|
`${root.replace(/\\/g, '/')}${id.replace(/\\/g, '/')}/${filename}`
|
||||||
|
)
|
||||||
@ -1,7 +0,0 @@
|
|||||||
const builder = require('./build')
|
|
||||||
module.exports = async () => {
|
|
||||||
return [
|
|
||||||
...(await builder.component({ buildAll: true })),
|
|
||||||
...(await builder.plugin({ buildAll: true })),
|
|
||||||
]
|
|
||||||
}
|
|
||||||
8
registry/webpack/all.ts
Normal file
8
registry/webpack/all.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import { builders } from './build'
|
||||||
|
|
||||||
|
export default async () => {
|
||||||
|
return [
|
||||||
|
...(await builders.component({ buildAll: true })),
|
||||||
|
...(await builders.plugin({ buildAll: true })),
|
||||||
|
]
|
||||||
|
}
|
||||||
@ -1,9 +1,9 @@
|
|||||||
const { buildByEntry } = require('./config')
|
import { buildByEntry } from './config'
|
||||||
|
import glob from 'glob'
|
||||||
|
|
||||||
module.exports = Object.fromEntries(['component', 'plugin', 'doc'].map(type => {
|
export const builders = Object.fromEntries(['component', 'plugin', 'doc'].map(type => {
|
||||||
const src = `./registry/lib/${type}s/`
|
const src = `./registry/lib/${type}s/`
|
||||||
return [type, async ({ buildAll = false } = {}) => {
|
return [type, async ({ buildAll = false } = {}) => {
|
||||||
const glob = require('glob')
|
|
||||||
const entries = glob.sync(src + '**/index.ts')
|
const entries = glob.sync(src + '**/index.ts')
|
||||||
|
|
||||||
if (buildAll) {
|
if (buildAll) {
|
||||||
@ -11,7 +11,7 @@ module.exports = Object.fromEntries(['component', 'plugin', 'doc'].map(type => {
|
|||||||
return entries.map(entry => buildByEntry({ src, type, entry }))
|
return entries.map(entry => buildByEntry({ src, type, entry }))
|
||||||
}
|
}
|
||||||
|
|
||||||
let entry
|
let entry: string
|
||||||
if (entries.length > 1) {
|
if (entries.length > 1) {
|
||||||
const { AutoComplete } = require('enquirer')
|
const { AutoComplete } = require('enquirer')
|
||||||
const prompt = new AutoComplete({
|
const prompt = new AutoComplete({
|
||||||
@ -24,6 +24,6 @@ module.exports = Object.fromEntries(['component', 'plugin', 'doc'].map(type => {
|
|||||||
[entry] = entries
|
[entry] = entries
|
||||||
console.log(`Build target · ${entry}`)
|
console.log(`Build target · ${entry}`)
|
||||||
}
|
}
|
||||||
return buildByEntry({ src, type, entry })
|
return [buildByEntry({ src, type, entry })]
|
||||||
}]
|
}]
|
||||||
}))
|
}))
|
||||||
@ -1 +0,0 @@
|
|||||||
module.exports = require('./build').component()
|
|
||||||
3
registry/webpack/components.ts
Normal file
3
registry/webpack/components.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import { builders } from './build'
|
||||||
|
|
||||||
|
export default builders.component()
|
||||||
@ -1,71 +0,0 @@
|
|||||||
const buildByEntry = ({ src, type, entry }) => {
|
|
||||||
// const match = entry.match(/\/?registry\/dist\/([^\/]+)\/(.+)\/index\.ts/)
|
|
||||||
// if (!match) {
|
|
||||||
// throw new Error(`Invalid entry path: ${entry}`)
|
|
||||||
// }
|
|
||||||
const path = require('path')
|
|
||||||
const { getId } = require('./id')
|
|
||||||
const id = getId(src, entry)
|
|
||||||
const { getDefaultConfig } = require('../../webpack/webpack.config')
|
|
||||||
const config = Object.assign(getDefaultConfig(path.resolve('./registry/lib/')), {
|
|
||||||
mode: 'production',
|
|
||||||
entry: {
|
|
||||||
[id]: entry,
|
|
||||||
},
|
|
||||||
output: {
|
|
||||||
path: path.resolve(`./registry/dist/${type}s/`),
|
|
||||||
filename: '[name].js',
|
|
||||||
library: {
|
|
||||||
name: '[name]',
|
|
||||||
type: 'umd',
|
|
||||||
export: type,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
cache: false,
|
|
||||||
})
|
|
||||||
config.externals.push(function ({ request }, callback) {
|
|
||||||
const lodash = require('lodash')
|
|
||||||
const regexMatch = (regex, base) => {
|
|
||||||
const match = request.match(regex)
|
|
||||||
if (match) {
|
|
||||||
const subModules = match[1] ? match[1].split('/').map(name => {
|
|
||||||
if (name.match(/\.vue$/)) {
|
|
||||||
return name.replace(/\.vue$/, '')
|
|
||||||
}
|
|
||||||
return lodash.camelCase(name)
|
|
||||||
}) : []
|
|
||||||
return () => callback(null, ['coreApis', ...base, ...subModules], 'root')
|
|
||||||
}
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
const matches = [
|
|
||||||
{
|
|
||||||
regex: /^@\/core\/(.+)$/,
|
|
||||||
base: [],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
regex: /^@\/ui$/,
|
|
||||||
base: ['ui'],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
regex: /^@\/components\/(.+)$/,
|
|
||||||
base: ['componentApis'],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
regex: /^@\/plugins\/(.+)$/,
|
|
||||||
base: ['pluginApis'],
|
|
||||||
},
|
|
||||||
]
|
|
||||||
for (const { regex, base } of matches) {
|
|
||||||
const matchCallback = regexMatch(regex, base)
|
|
||||||
if (matchCallback) {
|
|
||||||
return matchCallback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return callback()
|
|
||||||
})
|
|
||||||
return config
|
|
||||||
}
|
|
||||||
module.exports = {
|
|
||||||
buildByEntry,
|
|
||||||
}
|
|
||||||
75
registry/webpack/config.ts
Normal file
75
registry/webpack/config.ts
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
import { getDefaultConfig } from '../../webpack/webpack.config'
|
||||||
|
import path from 'path'
|
||||||
|
import { getId } from '../lib/id'
|
||||||
|
import { Configuration } from 'webpack'
|
||||||
|
|
||||||
|
export const buildByEntry = ({ src, type, entry }: { src: string; type: string; entry: string }) => {
|
||||||
|
// const match = entry.match(/\/?registry\/dist\/([^\/]+)\/(.+)\/index\.ts/)
|
||||||
|
// if (!match) {
|
||||||
|
// throw new Error(`Invalid entry path: ${entry}`)
|
||||||
|
// }
|
||||||
|
const id = getId(src, entry)
|
||||||
|
const defaultConfig = getDefaultConfig(path.resolve('./registry/lib/'))
|
||||||
|
const config: Configuration = {
|
||||||
|
...defaultConfig,
|
||||||
|
mode: 'production',
|
||||||
|
entry: {
|
||||||
|
[id]: entry,
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
path: path.resolve(`./registry/dist/${type}s/`),
|
||||||
|
filename: '[name].js',
|
||||||
|
library: {
|
||||||
|
name: '[name]',
|
||||||
|
type: 'umd',
|
||||||
|
export: type,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cache: false,
|
||||||
|
externals: [
|
||||||
|
...(defaultConfig.externals as any[]),
|
||||||
|
({ request }, callback) => {
|
||||||
|
const lodash = require('lodash')
|
||||||
|
const regexMatch = (regex: RegExp, base: string[]) => {
|
||||||
|
const match = request.match(regex)
|
||||||
|
if (match) {
|
||||||
|
const subModules = match[1] ? match[1].split('/').map(name => {
|
||||||
|
if (name.match(/\.vue$/)) {
|
||||||
|
return name.replace(/\.vue$/, '')
|
||||||
|
}
|
||||||
|
return lodash.camelCase(name)
|
||||||
|
}) : []
|
||||||
|
return () => (callback as any)(null, ['coreApis', ...base, ...subModules], 'root')
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
const matches = [
|
||||||
|
{
|
||||||
|
regex: /^@\/core\/(.+)$/,
|
||||||
|
base: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
regex: /^@\/ui$/,
|
||||||
|
base: ['ui'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
regex: /^@\/components\/(.+)$/,
|
||||||
|
base: ['componentApis'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
regex: /^@\/plugins\/(.+)$/,
|
||||||
|
base: ['pluginApis'],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
for (const { regex, base } of matches) {
|
||||||
|
const matchCallback = regexMatch(regex, base)
|
||||||
|
if (matchCallback) {
|
||||||
|
return matchCallback()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return callback()
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
return config
|
||||||
|
}
|
||||||
@ -1,6 +0,0 @@
|
|||||||
module.exports = require('./build').doc().then(config => {
|
|
||||||
const path = require('path')
|
|
||||||
config.output.path = path.resolve(`./registry/dist/`)
|
|
||||||
config.output.filename = 'doc.js'
|
|
||||||
return config
|
|
||||||
})
|
|
||||||
10
registry/webpack/docs.ts
Normal file
10
registry/webpack/docs.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import { builders } from './build'
|
||||||
|
import path from 'path'
|
||||||
|
|
||||||
|
export default builders.doc().then(configs => {
|
||||||
|
return configs.map(config => {
|
||||||
|
config.output.path = path.resolve(`./registry/dist/`)
|
||||||
|
config.output.filename = 'doc.js'
|
||||||
|
return config
|
||||||
|
})
|
||||||
|
})
|
||||||
2
registry/webpack/id.d.ts
vendored
2
registry/webpack/id.d.ts
vendored
@ -1,2 +0,0 @@
|
|||||||
export const getId: (root: string, entry: string) => string
|
|
||||||
export const fromId: (root: string, id: string, filename?: string) => string
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
/**
|
|
||||||
* Runs both in Node.js and browser (without path module).
|
|
||||||
* Paths are case-sensitive.
|
|
||||||
*/
|
|
||||||
module.exports = {
|
|
||||||
/**
|
|
||||||
* Generate id from relative path and remove filename
|
|
||||||
* @example getId('folder1/', 'folder1/folder2/index.ts') -> 'folder2'
|
|
||||||
*/
|
|
||||||
getId: (root, entry) => {
|
|
||||||
const relative = entry.replace(root, '').replace(/\\/g, '/')
|
|
||||||
return relative.replace(/\/[^\/]+$/, '')
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
* Reverse method for `getId`
|
|
||||||
* @example getId('folder1/', 'folder2') -> 'folder1/folder2/index.ts'
|
|
||||||
*/
|
|
||||||
fromId: (root, id, filename = 'index.ts') => {
|
|
||||||
return `${root.replace(/\\/g, '/')}${id.replace(/\\/g, '/')}/${filename}`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
module.exports = require('./build').plugin()
|
|
||||||
3
registry/webpack/plugins.ts
Normal file
3
registry/webpack/plugins.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import { builders } from './build'
|
||||||
|
|
||||||
|
export default builders.plugin()
|
||||||
@ -92,3 +92,4 @@ state.settingsLoaded = true
|
|||||||
/** 脚本当前的设置 */
|
/** 脚本当前的设置 */
|
||||||
export const settings: Settings = state.internalSettings
|
export const settings: Settings = state.internalSettings
|
||||||
export * from './helpers'
|
export * from './helpers'
|
||||||
|
export * from './types'
|
||||||
|
|||||||
9
src/global.d.ts
vendored
9
src/global.d.ts
vendored
@ -8,13 +8,15 @@ declare global {
|
|||||||
const lodash: LoDashStatic
|
const lodash: LoDashStatic
|
||||||
const Vue: typeof import('vue/types/umd')
|
const Vue: typeof import('vue/types/umd')
|
||||||
|
|
||||||
interface CompilationInfo {
|
interface GitInfo {
|
||||||
year: string
|
|
||||||
commitHash: string
|
commitHash: string
|
||||||
branch: string
|
branch: string
|
||||||
version: string
|
|
||||||
nearestTag: string
|
nearestTag: string
|
||||||
versionWithTag: string
|
versionWithTag: string
|
||||||
|
}
|
||||||
|
interface CompilationInfo extends GitInfo {
|
||||||
|
year: string
|
||||||
|
version: string
|
||||||
altCdn: {
|
altCdn: {
|
||||||
owner: string
|
owner: string
|
||||||
host: string
|
host: string
|
||||||
@ -34,6 +36,7 @@ declare global {
|
|||||||
// buildTime: number
|
// buildTime: number
|
||||||
}
|
}
|
||||||
const webpackCompilationInfo: CompilationInfo
|
const webpackCompilationInfo: CompilationInfo
|
||||||
|
const webpackGitInfo: GitInfo
|
||||||
|
|
||||||
const BwpElement: {
|
const BwpElement: {
|
||||||
new(): HTMLVideoElement
|
new(): HTMLVideoElement
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"allowSyntheticDefaultImports": true,
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"lib": ["ESNext", "DOM", "DOM.Iterable"],
|
"lib": ["ESNext", "DOM", "DOM.Iterable"],
|
||||||
"module": "ESNext",
|
"module": "ESNext",
|
||||||
@ -21,12 +22,19 @@
|
|||||||
"include": [
|
"include": [
|
||||||
"src/**/*",
|
"src/**/*",
|
||||||
"tests/**/*",
|
"tests/**/*",
|
||||||
"registry/lib/**/*"
|
"registry/lib/**/*",
|
||||||
|
"webpack/**/*",
|
||||||
|
"registry/webpack/**/*"
|
||||||
],
|
],
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"node_modules",
|
"node_modules",
|
||||||
"dev",
|
"dev",
|
||||||
"packages",
|
"packages",
|
||||||
"typings"
|
"typings"
|
||||||
]
|
],
|
||||||
|
"ts-node": {
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "CommonJS"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -1,8 +1,5 @@
|
|||||||
{
|
{
|
||||||
"extends": "./tsconfig.json",
|
"extends": "./tsconfig.json",
|
||||||
"compilerOptions": {
|
|
||||||
"skipLibCheck": true,
|
|
||||||
},
|
|
||||||
"include": [
|
"include": [
|
||||||
"src/client/bilibili-evolved.ts",
|
"src/client/bilibili-evolved.ts",
|
||||||
"src/**/*.d.ts",
|
"src/**/*.d.ts",
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
|
import { CdnConfig } from './types'
|
||||||
|
|
||||||
const owner = 'the1812'
|
const owner = 'the1812'
|
||||||
const host = 'raw.githubusercontent.com'
|
const host = 'raw.githubusercontent.com'
|
||||||
const github = {
|
export const github: CdnConfig = {
|
||||||
owner,
|
owner,
|
||||||
host,
|
host,
|
||||||
stableClient: `https://${host}/${owner}/Bilibili-Evolved/master/dist/bilibili-evolved.user.js`,
|
stableClient: `https://${host}/${owner}/Bilibili-Evolved/master/dist/bilibili-evolved.user.js`,
|
||||||
@ -16,6 +18,3 @@ const github = {
|
|||||||
logo: `https://${host}/${owner}/Bilibili-Evolved/preview/images/logo.png`,
|
logo: `https://${host}/${owner}/Bilibili-Evolved/preview/images/logo.png`,
|
||||||
root: (branch, ownerOverride) => `https://${host}/${ownerOverride || owner}/Bilibili-Evolved/${branch}/`,
|
root: (branch, ownerOverride) => `https://${host}/${ownerOverride || owner}/Bilibili-Evolved/${branch}/`,
|
||||||
}
|
}
|
||||||
module.exports = {
|
|
||||||
github,
|
|
||||||
}
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
const { github } = require('./github')
|
|
||||||
const altCdn = github
|
|
||||||
module.exports = {
|
|
||||||
altCdn,
|
|
||||||
}
|
|
||||||
3
webpack/cdn/index.ts
Normal file
3
webpack/cdn/index.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import { github } from './github'
|
||||||
|
|
||||||
|
export const altCdn = github
|
||||||
@ -1,6 +1,8 @@
|
|||||||
|
import { CdnConfig } from './types'
|
||||||
|
|
||||||
const owner = 'the1812'
|
const owner = 'the1812'
|
||||||
const host = 'cdn.jsdelivr.net'
|
const host = 'cdn.jsdelivr.net'
|
||||||
const jsdelivr = {
|
export const jsdelivr: CdnConfig = {
|
||||||
owner,
|
owner,
|
||||||
host,
|
host,
|
||||||
stableClient: `https://${host}/gh/${owner}/Bilibili-Evolved@master/dist/bilibili-evolved.user.js`,
|
stableClient: `https://${host}/gh/${owner}/Bilibili-Evolved@master/dist/bilibili-evolved.user.js`,
|
||||||
@ -16,6 +18,3 @@ const jsdelivr = {
|
|||||||
logo: `https://${host}/gh/${owner}/Bilibili-Evolved@preview/images/logo.png`,
|
logo: `https://${host}/gh/${owner}/Bilibili-Evolved@preview/images/logo.png`,
|
||||||
root: (branch, ownerOverride) => `https://${host}/gh/${ownerOverride || owner}/Bilibili-Evolved@${branch}/`,
|
root: (branch, ownerOverride) => `https://${host}/gh/${ownerOverride || owner}/Bilibili-Evolved@${branch}/`,
|
||||||
}
|
}
|
||||||
module.exports = {
|
|
||||||
jsdelivr,
|
|
||||||
}
|
|
||||||
16
webpack/cdn/types.ts
Normal file
16
webpack/cdn/types.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
export interface CdnConfig {
|
||||||
|
owner: string
|
||||||
|
host: string
|
||||||
|
stableClient: string
|
||||||
|
previewClient: string
|
||||||
|
library: {
|
||||||
|
lodash: string
|
||||||
|
protobuf: string
|
||||||
|
jszip: string
|
||||||
|
sortable: string
|
||||||
|
mdi: string
|
||||||
|
},
|
||||||
|
smallLogo: string
|
||||||
|
logo: string
|
||||||
|
root: (branch: string, ownerOverride: string) => string
|
||||||
|
}
|
||||||
@ -1,25 +1,18 @@
|
|||||||
const process = require('child_process')
|
import process from 'child_process'
|
||||||
|
|
||||||
const commitHash = process
|
export const commitHash = process
|
||||||
.execSync('git rev-parse HEAD')
|
.execSync('git rev-parse HEAD')
|
||||||
.toString()
|
.toString()
|
||||||
.trim()
|
.trim()
|
||||||
const branch = process
|
export const branch = process
|
||||||
.execSync('git rev-parse --abbrev-ref HEAD')
|
.execSync('git rev-parse --abbrev-ref HEAD')
|
||||||
.toString()
|
.toString()
|
||||||
.trim()
|
.trim()
|
||||||
const nearestTag = process
|
export const nearestTag = process
|
||||||
.execSync('git describe --abbrev=0 --tags --always')
|
.execSync('git describe --abbrev=0 --tags --always')
|
||||||
.toString()
|
.toString()
|
||||||
.trim()
|
.trim()
|
||||||
const versionWithTag = process
|
export const versionWithTag = process
|
||||||
.execSync('git describe --tags --always')
|
.execSync('git describe --tags --always')
|
||||||
.toString()
|
.toString()
|
||||||
.trim()
|
.trim()
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
commitHash,
|
|
||||||
branch,
|
|
||||||
nearestTag,
|
|
||||||
versionWithTag,
|
|
||||||
}
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
const runtimeInfo = require('./runtime')
|
|
||||||
|
|
||||||
const compilationInfo = {
|
|
||||||
...runtimeInfo,
|
|
||||||
...webpackGitInfo,
|
|
||||||
}
|
|
||||||
module.exports = {
|
|
||||||
compilationInfo,
|
|
||||||
}
|
|
||||||
6
webpack/compilation-info/index.ts
Normal file
6
webpack/compilation-info/index.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import { runtimeInfo } from './runtime'
|
||||||
|
|
||||||
|
export const compilationInfo = {
|
||||||
|
...runtimeInfo,
|
||||||
|
...webpackGitInfo,
|
||||||
|
}
|
||||||
@ -1,8 +0,0 @@
|
|||||||
const commonMeta = require('../../src/client/common.meta.json')
|
|
||||||
const { altCdn } = require('../cdn')
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
year: new Date().getFullYear(),
|
|
||||||
version: commonMeta.version,
|
|
||||||
altCdn,
|
|
||||||
}
|
|
||||||
8
webpack/compilation-info/runtime.ts
Normal file
8
webpack/compilation-info/runtime.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import commonMeta from '../../src/client/common.meta.json'
|
||||||
|
import { altCdn } from '../cdn'
|
||||||
|
|
||||||
|
export const runtimeInfo = {
|
||||||
|
year: new Date().getFullYear(),
|
||||||
|
version: commonMeta.version,
|
||||||
|
altCdn,
|
||||||
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
const process = require('child_process')
|
import process from 'child_process'
|
||||||
|
|
||||||
const excludePatterns = [
|
const excludePatterns = [
|
||||||
/^docs?\//,
|
/^docs?\//,
|
||||||
@ -13,7 +13,7 @@ const excludePatterns = [
|
|||||||
/^LICENCE$/,
|
/^LICENCE$/,
|
||||||
]
|
]
|
||||||
|
|
||||||
const isSourceChanged = () => {
|
export const isSourceChanged = () => {
|
||||||
const lastDiff = process
|
const lastDiff = process
|
||||||
.execSync('git diff --name-only HEAD^')
|
.execSync('git diff --name-only HEAD^')
|
||||||
.toString()
|
.toString()
|
||||||
@ -23,7 +23,3 @@ const isSourceChanged = () => {
|
|||||||
const isAllExcluded = lastDiff.every(path => excludePatterns.some(p => p.test(path)))
|
const isAllExcluded = lastDiff.every(path => excludePatterns.some(p => p.test(path)))
|
||||||
return !isAllExcluded
|
return !isAllExcluded
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
isSourceChanged,
|
|
||||||
}
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
const runtimeInfo = require('../compilation-info/runtime')
|
|
||||||
const gitInfo = require('../compilation-info/git')
|
|
||||||
const nodePath = require('path')
|
|
||||||
|
|
||||||
module.exports = function (babel) {
|
|
||||||
const { types } = babel
|
|
||||||
return {
|
|
||||||
visitor: {
|
|
||||||
ExportNamedDeclaration (path, state) {
|
|
||||||
const { filename } = state.file.opts
|
|
||||||
const isFromRegistry = filename.startsWith(nodePath.resolve('./registry'))
|
|
||||||
const isEntryFile = nodePath.basename(filename) === 'index.ts'
|
|
||||||
if (!(isFromRegistry && isEntryFile)) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
const { node } = path
|
|
||||||
node.declaration?.declarations?.forEach(d => {
|
|
||||||
if (!['component', 'plugin'].includes(d.id?.name)) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
const targetExpression = d.init.type === 'CallExpression' ? d.init.arguments[0] : d.init
|
|
||||||
if (targetExpression.type !== 'ObjectExpression') {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
targetExpression.properties.push(...[
|
|
||||||
types.objectProperty(types.identifier('commitHash'), types.stringLiteral(gitInfo.commitHash)),
|
|
||||||
types.objectProperty(types.identifier('coreVersion'), types.stringLiteral(runtimeInfo.version)),
|
|
||||||
])
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
53
webpack/loaders/inject-metadata.ts
Normal file
53
webpack/loaders/inject-metadata.ts
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
import { runtimeInfo } from '../compilation-info/runtime'
|
||||||
|
import { commitHash } from '../compilation-info/git'
|
||||||
|
import nodePath from 'path'
|
||||||
|
import { PluginObj } from '@babel/core'
|
||||||
|
import {
|
||||||
|
Identifier,
|
||||||
|
objectProperty,
|
||||||
|
identifier,
|
||||||
|
stringLiteral,
|
||||||
|
} from '@babel/types'
|
||||||
|
|
||||||
|
export const injectMetadata = (): PluginObj => {
|
||||||
|
return {
|
||||||
|
visitor: {
|
||||||
|
ExportNamedDeclaration(path, state) {
|
||||||
|
const { filename } = state.file.opts
|
||||||
|
const isFromRegistry = filename.startsWith(
|
||||||
|
nodePath.resolve('./registry'),
|
||||||
|
)
|
||||||
|
const isEntryFile = nodePath.basename(filename) === 'index.ts'
|
||||||
|
if (!(isFromRegistry && isEntryFile)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const { node } = path
|
||||||
|
if (node.declaration?.type !== 'VariableDeclaration') {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
node.declaration.declarations?.forEach(d => {
|
||||||
|
if (!['component', 'plugin'].includes((d.id as Identifier)?.name)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const targetExpression =
|
||||||
|
d.init.type === 'CallExpression' ? d.init.arguments[0] : d.init
|
||||||
|
if (targetExpression.type !== 'ObjectExpression') {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
targetExpression.properties.push(
|
||||||
|
...[
|
||||||
|
objectProperty(
|
||||||
|
identifier('commitHash'),
|
||||||
|
stringLiteral(commitHash),
|
||||||
|
),
|
||||||
|
objectProperty(
|
||||||
|
identifier('coreVersion'),
|
||||||
|
stringLiteral(runtimeInfo.version),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,38 +0,0 @@
|
|||||||
const postcssPresetEnv = require('postcss-preset-env')
|
|
||||||
const autoPrefixer = require('autoprefixer')
|
|
||||||
// const sass = require('sass')
|
|
||||||
|
|
||||||
const cssLoader = {
|
|
||||||
loader: 'css-loader',
|
|
||||||
options: {
|
|
||||||
esModule: false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
const postCssLoader = {
|
|
||||||
loader: 'postcss-loader',
|
|
||||||
options: {
|
|
||||||
postcssOptions: {
|
|
||||||
plugins: [
|
|
||||||
postcssPresetEnv(),
|
|
||||||
autoPrefixer(),
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
const sassLoader = {
|
|
||||||
loader: 'fast-sass-loader',
|
|
||||||
options: {
|
|
||||||
// implementation: sass,
|
|
||||||
// sassOptions: {
|
|
||||||
includePaths: ['src/ui/'],
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
cssLoader,
|
|
||||||
postCssLoader,
|
|
||||||
sassLoader,
|
|
||||||
cssStyleLoaders: [ cssLoader, postCssLoader ],
|
|
||||||
sassStyleLoaders: [ cssLoader, postCssLoader, sassLoader ],
|
|
||||||
}
|
|
||||||
32
webpack/loaders/style-loaders.ts
Normal file
32
webpack/loaders/style-loaders.ts
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import postcssPresetEnv from 'postcss-preset-env'
|
||||||
|
import autoPrefixer from 'autoprefixer'
|
||||||
|
|
||||||
|
export const cssLoader = {
|
||||||
|
loader: 'css-loader',
|
||||||
|
options: {
|
||||||
|
esModule: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
export const postCssLoader = {
|
||||||
|
loader: 'postcss-loader',
|
||||||
|
options: {
|
||||||
|
postcssOptions: {
|
||||||
|
plugins: [
|
||||||
|
postcssPresetEnv(),
|
||||||
|
autoPrefixer(),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
export const sassLoader = {
|
||||||
|
loader: 'fast-sass-loader',
|
||||||
|
options: {
|
||||||
|
// implementation: sass,
|
||||||
|
// sassOptions: {
|
||||||
|
includePaths: ['src/ui/'],
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export const cssStyleLoaders = [ cssLoader, postCssLoader ]
|
||||||
|
export const sassStyleLoaders = [ cssLoader, postCssLoader, sassLoader ]
|
||||||
@ -1,4 +1,7 @@
|
|||||||
const babelLoader = {
|
import { RuleSetUseItem } from 'webpack'
|
||||||
|
import { injectMetadata } from './inject-metadata'
|
||||||
|
|
||||||
|
const babelLoader: RuleSetUseItem = {
|
||||||
loader: 'babel-loader',
|
loader: 'babel-loader',
|
||||||
options: {
|
options: {
|
||||||
presets: [
|
presets: [
|
||||||
@ -12,7 +15,8 @@ const babelLoader = {
|
|||||||
],
|
],
|
||||||
plugins: [
|
plugins: [
|
||||||
['@babel/plugin-proposal-class-properties'],
|
['@babel/plugin-proposal-class-properties'],
|
||||||
'./webpack/loaders/inject-metadata.js',
|
// './webpack/loaders/inject-metadata.js',
|
||||||
|
injectMetadata,
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -42,4 +46,4 @@ const babelLoader = {
|
|||||||
// tsLoader = babelLoader
|
// tsLoader = babelLoader
|
||||||
// }
|
// }
|
||||||
|
|
||||||
module.exports = [babelLoader]
|
export const tsLoaders = [babelLoader]
|
||||||
@ -1,17 +1,15 @@
|
|||||||
const VueLoaderPlugin = require('vue-loader/lib/plugin')
|
import VueLoaderPlugin from 'vue-loader/lib/plugin'
|
||||||
const TerserPlugin = require('terser-webpack-plugin')
|
import TerserPlugin from 'terser-webpack-plugin'
|
||||||
const webpack = require('webpack')
|
import webpack, { Configuration } from 'webpack'
|
||||||
const path = require('path')
|
import path from 'path'
|
||||||
const get = require('lodash/get')
|
import get from 'lodash/get'
|
||||||
const {
|
import { cssStyleLoaders, sassStyleLoaders } from './loaders/style-loaders'
|
||||||
cssStyleLoaders, sassStyleLoaders
|
import { tsLoaders } from './loaders/ts-loader'
|
||||||
} = require('./loaders/style-loaders')
|
import { runtimeInfo } from './compilation-info/runtime'
|
||||||
const tsLoader = require('./loaders/ts-loader')
|
import commonMeta from '../src/client/common.meta.json'
|
||||||
const runtimeInfo = require('./compilation-info/runtime')
|
|
||||||
|
|
||||||
const relativePath = p => path.join(process.cwd(), p)
|
const relativePath = (p: string) => path.join(process.cwd(), p)
|
||||||
const getDefaultConfig = (srcFolder) => {
|
export const getDefaultConfig = (src = relativePath('src')): Configuration => {
|
||||||
const src = srcFolder || relativePath('src')
|
|
||||||
return {
|
return {
|
||||||
mode: 'development',
|
mode: 'development',
|
||||||
// devtool: 'eval-source-map',
|
// devtool: 'eval-source-map',
|
||||||
@ -107,11 +105,12 @@ const getDefaultConfig = (srcFolder) => {
|
|||||||
{
|
{
|
||||||
test: /\.tsx?$/,
|
test: /\.tsx?$/,
|
||||||
use: [
|
use: [
|
||||||
...tsLoader,
|
...tsLoaders,
|
||||||
],
|
],
|
||||||
include: [
|
include: [
|
||||||
src,
|
src,
|
||||||
relativePath('tests'),
|
relativePath('tests'),
|
||||||
|
relativePath('webpack'),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -152,9 +151,7 @@ const getDefaultConfig = (srcFolder) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const commonMeta = require('../src/client/common.meta.json')
|
const replaceVariables = (text: string) => {
|
||||||
|
|
||||||
const replaceVariables = text => {
|
|
||||||
return text.replace(/\[([^\[\]]+)\]/g, match => {
|
return text.replace(/\[([^\[\]]+)\]/g, match => {
|
||||||
const value = get(runtimeInfo, match)
|
const value = get(runtimeInfo, match)
|
||||||
if (value !== undefined) {
|
if (value !== undefined) {
|
||||||
@ -163,7 +160,7 @@ const replaceVariables = text => {
|
|||||||
return match
|
return match
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const getBanner = meta => `// ==UserScript==\n${Object.entries(Object.assign(meta, commonMeta)).map(([key, value]) => {
|
export const getBanner = (meta: Record<string, string | string[]>) => `// ==UserScript==\n${Object.entries(Object.assign(meta, commonMeta)).map(([key, value]) => {
|
||||||
if (Array.isArray(value)) {
|
if (Array.isArray(value)) {
|
||||||
const lines = [...new Set(value.map(item => `// @${key.padEnd(16, ' ')}${replaceVariables(item)}`))]
|
const lines = [...new Set(value.map(item => `// @${key.padEnd(16, ' ')}${replaceVariables(item)}`))]
|
||||||
return lines.join('\n')
|
return lines.join('\n')
|
||||||
@ -173,8 +170,3 @@ const getBanner = meta => `// ==UserScript==\n${Object.entries(Object.assign(met
|
|||||||
// ==/UserScript==
|
// ==/UserScript==
|
||||||
/* eslint-disable */ /* spell-checker: disable */
|
/* eslint-disable */ /* spell-checker: disable */
|
||||||
// @[ You can find all source codes in GitHub repo ]`
|
// @[ You can find all source codes in GitHub repo ]`
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
getDefaultConfig,
|
|
||||||
getBanner,
|
|
||||||
}
|
|
||||||
@ -1,13 +1,14 @@
|
|||||||
const webpack = require('webpack')
|
import webpack from 'webpack'
|
||||||
const { getBanner, getDefaultConfig } = require('./webpack.config')
|
import { getBanner, getDefaultConfig } from './webpack.config'
|
||||||
const previewMeta = require('../src/client/bilibili-evolved.preview.meta.json')
|
import previewMeta from '../src/client/bilibili-evolved.preview.meta.json'
|
||||||
|
import { Configuration } from 'webpack'
|
||||||
|
|
||||||
const previewConfig = Object.assign(getDefaultConfig(), {
|
const previewConfig = Object.assign(getDefaultConfig(), {
|
||||||
entry: './src/client/bilibili-evolved.ts',
|
entry: './src/client/bilibili-evolved.ts',
|
||||||
output: {
|
output: {
|
||||||
filename: 'bilibili-evolved.dev.user.js',
|
filename: 'bilibili-evolved.dev.user.js',
|
||||||
},
|
},
|
||||||
})
|
}) as Configuration
|
||||||
previewConfig.plugins.push(
|
previewConfig.plugins.push(
|
||||||
new webpack.BannerPlugin({
|
new webpack.BannerPlugin({
|
||||||
banner: getBanner(previewMeta),
|
banner: getBanner(previewMeta),
|
||||||
@ -15,4 +16,5 @@ previewConfig.plugins.push(
|
|||||||
entryOnly: true,
|
entryOnly: true,
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
module.exports = previewConfig
|
|
||||||
|
export default previewConfig
|
||||||
@ -1,7 +1,7 @@
|
|||||||
const webpack = require('webpack')
|
import webpack, { Configuration } from 'webpack'
|
||||||
const { getBanner, getDefaultConfig } = require('./webpack.config')
|
import { getBanner, getDefaultConfig } from './webpack.config'
|
||||||
|
import previewConfig from './webpack.dev'
|
||||||
const mainMeta = require('../src/client/bilibili-evolved.meta.json')
|
import mainMeta from '../src/client/bilibili-evolved.meta.json'
|
||||||
|
|
||||||
const mainConfig = Object.assign(getDefaultConfig(), {
|
const mainConfig = Object.assign(getDefaultConfig(), {
|
||||||
mode: 'production',
|
mode: 'production',
|
||||||
@ -9,7 +9,7 @@ const mainConfig = Object.assign(getDefaultConfig(), {
|
|||||||
output: {
|
output: {
|
||||||
filename: 'bilibili-evolved.user.js',
|
filename: 'bilibili-evolved.user.js',
|
||||||
},
|
},
|
||||||
})
|
}) as Configuration
|
||||||
mainConfig.plugins.push(
|
mainConfig.plugins.push(
|
||||||
new webpack.BannerPlugin({
|
new webpack.BannerPlugin({
|
||||||
banner: getBanner(mainMeta),
|
banner: getBanner(mainMeta),
|
||||||
@ -17,7 +17,6 @@ mainConfig.plugins.push(
|
|||||||
entryOnly: true,
|
entryOnly: true,
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
const previewConfig = require('./webpack.dev')
|
|
||||||
|
|
||||||
previewConfig.output.filename = 'bilibili-evolved.preview.user.js'
|
previewConfig.output.filename = 'bilibili-evolved.preview.user.js'
|
||||||
previewConfig.mode = 'production'
|
previewConfig.mode = 'production'
|
||||||
@ -26,4 +25,5 @@ const targets = [mainConfig, previewConfig].map(config => {
|
|||||||
config.devtool = false
|
config.devtool = false
|
||||||
return config
|
return config
|
||||||
})
|
})
|
||||||
module.exports = targets
|
|
||||||
|
export default targets
|
||||||
104
yarn.lock
104
yarn.lock
@ -267,6 +267,11 @@
|
|||||||
chalk "^2.0.0"
|
chalk "^2.0.0"
|
||||||
js-tokens "^4.0.0"
|
js-tokens "^4.0.0"
|
||||||
|
|
||||||
|
"@babel/parser@^7.1.0":
|
||||||
|
version "7.18.5"
|
||||||
|
resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c"
|
||||||
|
integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==
|
||||||
|
|
||||||
"@babel/parser@^7.16.7", "@babel/parser@^7.17.9":
|
"@babel/parser@^7.16.7", "@babel/parser@^7.17.9":
|
||||||
version "7.17.10"
|
version "7.17.10"
|
||||||
resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78"
|
resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78"
|
||||||
@ -912,6 +917,14 @@
|
|||||||
debug "^4.1.0"
|
debug "^4.1.0"
|
||||||
globals "^11.1.0"
|
globals "^11.1.0"
|
||||||
|
|
||||||
|
"@babel/types@^7.0.0", "@babel/types@^7.18.4", "@babel/types@^7.3.0":
|
||||||
|
version "7.18.4"
|
||||||
|
resolved "https://registry.npmmirror.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354"
|
||||||
|
integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-validator-identifier" "^7.16.7"
|
||||||
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
"@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.4.4":
|
"@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.4.4":
|
||||||
version "7.17.10"
|
version "7.17.10"
|
||||||
resolved "https://registry.npmmirror.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4"
|
resolved "https://registry.npmmirror.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4"
|
||||||
@ -1177,6 +1190,39 @@
|
|||||||
resolved "https://registry.npmmirror.com/@types/async-exit-hook/-/async-exit-hook-2.0.0.tgz#162623f74b7018ec0da99a810d2284d697230837"
|
resolved "https://registry.npmmirror.com/@types/async-exit-hook/-/async-exit-hook-2.0.0.tgz#162623f74b7018ec0da99a810d2284d697230837"
|
||||||
integrity sha512-RNjIyjnVZdcP5a1zeIPb5c0hq2nbJc/NOCLNKUAqeCw+J5z2zMcINISn9wybCWhczHnUu3VSUFy7ZCO6ir4ZRw==
|
integrity sha512-RNjIyjnVZdcP5a1zeIPb5c0hq2nbJc/NOCLNKUAqeCw+J5z2zMcINISn9wybCWhczHnUu3VSUFy7ZCO6ir4ZRw==
|
||||||
|
|
||||||
|
"@types/babel__core@^7.1.19":
|
||||||
|
version "7.1.19"
|
||||||
|
resolved "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460"
|
||||||
|
integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.1.0"
|
||||||
|
"@babel/types" "^7.0.0"
|
||||||
|
"@types/babel__generator" "*"
|
||||||
|
"@types/babel__template" "*"
|
||||||
|
"@types/babel__traverse" "*"
|
||||||
|
|
||||||
|
"@types/babel__generator@*":
|
||||||
|
version "7.6.4"
|
||||||
|
resolved "https://registry.npmmirror.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7"
|
||||||
|
integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==
|
||||||
|
dependencies:
|
||||||
|
"@babel/types" "^7.0.0"
|
||||||
|
|
||||||
|
"@types/babel__template@*":
|
||||||
|
version "7.4.1"
|
||||||
|
resolved "https://registry.npmmirror.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969"
|
||||||
|
integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.1.0"
|
||||||
|
"@babel/types" "^7.0.0"
|
||||||
|
|
||||||
|
"@types/babel__traverse@*":
|
||||||
|
version "7.17.1"
|
||||||
|
resolved "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314"
|
||||||
|
integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==
|
||||||
|
dependencies:
|
||||||
|
"@babel/types" "^7.3.0"
|
||||||
|
|
||||||
"@types/color-convert@*":
|
"@types/color-convert@*":
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.npmmirror.com/@types/color-convert/-/color-convert-2.0.0.tgz#8f5ee6b9e863dcbee5703f5a517ffb13d3ea4e22"
|
resolved "https://registry.npmmirror.com/@types/color-convert/-/color-convert-2.0.0.tgz#8f5ee6b9e863dcbee5703f5a517ffb13d3ea4e22"
|
||||||
@ -1217,6 +1263,14 @@
|
|||||||
resolved "https://registry.npmmirror.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
|
resolved "https://registry.npmmirror.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
|
||||||
integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
|
integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
|
||||||
|
|
||||||
|
"@types/glob@^7.2.0":
|
||||||
|
version "7.2.0"
|
||||||
|
resolved "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
|
||||||
|
integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
|
||||||
|
dependencies:
|
||||||
|
"@types/minimatch" "*"
|
||||||
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/html-minifier-terser@^6.0.0":
|
"@types/html-minifier-terser@^6.0.0":
|
||||||
version "6.1.0"
|
version "6.1.0"
|
||||||
resolved "https://registry.npmmirror.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35"
|
resolved "https://registry.npmmirror.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35"
|
||||||
@ -1247,6 +1301,11 @@
|
|||||||
resolved "https://registry.npmmirror.com/@types/marked/-/marked-1.2.2.tgz#1f858a0e690247ecf3b2eef576f98f86e8d960d4"
|
resolved "https://registry.npmmirror.com/@types/marked/-/marked-1.2.2.tgz#1f858a0e690247ecf3b2eef576f98f86e8d960d4"
|
||||||
integrity sha512-wLfw1hnuuDYrFz97IzJja0pdVsC0oedtS4QsKH1/inyW9qkLQbXgMUqEQT0MVtUBx3twjWeInUfjQbhBVLECXw==
|
integrity sha512-wLfw1hnuuDYrFz97IzJja0pdVsC0oedtS4QsKH1/inyW9qkLQbXgMUqEQT0MVtUBx3twjWeInUfjQbhBVLECXw==
|
||||||
|
|
||||||
|
"@types/minimatch@*":
|
||||||
|
version "3.0.5"
|
||||||
|
resolved "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
|
||||||
|
integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
|
||||||
|
|
||||||
"@types/node@*", "@types/node@>=13.7.0", "@types/node@^17.0.31":
|
"@types/node@*", "@types/node@>=13.7.0", "@types/node@^17.0.31":
|
||||||
version "17.0.31"
|
version "17.0.31"
|
||||||
resolved "https://registry.npmmirror.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d"
|
resolved "https://registry.npmmirror.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d"
|
||||||
@ -1269,49 +1328,11 @@
|
|||||||
resolved "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.10.7.tgz#ab9039c85429f0516955ec6dbc0bb20139417b15"
|
resolved "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.10.7.tgz#ab9039c85429f0516955ec6dbc0bb20139417b15"
|
||||||
integrity sha512-lGCwwgpj8zW/ZmaueoPVSP7nnc9t8VqVWXS+ASX3eoUUENmiazv0rlXyTRludXzuX9ALjPsMqBu85TgJNWbTOg==
|
integrity sha512-lGCwwgpj8zW/ZmaueoPVSP7nnc9t8VqVWXS+ASX3eoUUENmiazv0rlXyTRludXzuX9ALjPsMqBu85TgJNWbTOg==
|
||||||
|
|
||||||
"@types/source-list-map@*":
|
|
||||||
version "0.1.2"
|
|
||||||
resolved "https://registry.npmmirror.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"
|
|
||||||
integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==
|
|
||||||
|
|
||||||
"@types/tapable@^1":
|
|
||||||
version "1.0.8"
|
|
||||||
resolved "https://registry.npmmirror.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310"
|
|
||||||
integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==
|
|
||||||
|
|
||||||
"@types/uglify-js@*":
|
|
||||||
version "3.13.2"
|
|
||||||
resolved "https://registry.npmmirror.com/@types/uglify-js/-/uglify-js-3.13.2.tgz#1044c1713fb81cb1ceef29ad8a9ee1ce08d690ef"
|
|
||||||
integrity sha512-/xFrPIo+4zOeNGtVMbf9rUm0N+i4pDf1ynExomqtokIJmVzR3962lJ1UE+MmexMkA0cmN9oTzg5Xcbwge0Ij2Q==
|
|
||||||
dependencies:
|
|
||||||
source-map "^0.6.1"
|
|
||||||
|
|
||||||
"@types/webpack-env@^1.15.1":
|
"@types/webpack-env@^1.15.1":
|
||||||
version "1.16.4"
|
version "1.16.4"
|
||||||
resolved "https://registry.npmmirror.com/@types/webpack-env/-/webpack-env-1.16.4.tgz#1f4969042bf76d7ef7b5914f59b3b60073f4e1f4"
|
resolved "https://registry.npmmirror.com/@types/webpack-env/-/webpack-env-1.16.4.tgz#1f4969042bf76d7ef7b5914f59b3b60073f4e1f4"
|
||||||
integrity sha512-llS8qveOUX3wxHnSykP5hlYFFuMfJ9p5JvIyCiBgp7WTfl6K5ZcyHj8r8JsN/J6QODkAsRRCLIcTuOCu8etkUw==
|
integrity sha512-llS8qveOUX3wxHnSykP5hlYFFuMfJ9p5JvIyCiBgp7WTfl6K5ZcyHj8r8JsN/J6QODkAsRRCLIcTuOCu8etkUw==
|
||||||
|
|
||||||
"@types/webpack-sources@*":
|
|
||||||
version "3.2.0"
|
|
||||||
resolved "https://registry.npmmirror.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b"
|
|
||||||
integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==
|
|
||||||
dependencies:
|
|
||||||
"@types/node" "*"
|
|
||||||
"@types/source-list-map" "*"
|
|
||||||
source-map "^0.7.3"
|
|
||||||
|
|
||||||
"@types/webpack@^4.41.6":
|
|
||||||
version "4.41.32"
|
|
||||||
resolved "https://registry.npmmirror.com/@types/webpack/-/webpack-4.41.32.tgz#a7bab03b72904070162b2f169415492209e94212"
|
|
||||||
integrity sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==
|
|
||||||
dependencies:
|
|
||||||
"@types/node" "*"
|
|
||||||
"@types/tapable" "^1"
|
|
||||||
"@types/uglify-js" "*"
|
|
||||||
"@types/webpack-sources" "*"
|
|
||||||
anymatch "^3.0.0"
|
|
||||||
source-map "^0.6.0"
|
|
||||||
|
|
||||||
"@types/ws@^8.2.3":
|
"@types/ws@^8.2.3":
|
||||||
version "8.2.3"
|
version "8.2.3"
|
||||||
resolved "https://registry.npmmirror.com/@types/ws/-/ws-8.2.3.tgz#0bca6b03ba2f41e0fab782d4a573fe284aa907ae"
|
resolved "https://registry.npmmirror.com/@types/ws/-/ws-8.2.3.tgz#0bca6b03ba2f41e0fab782d4a573fe284aa907ae"
|
||||||
@ -1667,7 +1688,7 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
color-convert "^2.0.1"
|
color-convert "^2.0.1"
|
||||||
|
|
||||||
anymatch@^3.0.0, anymatch@~3.1.2:
|
anymatch@~3.1.2:
|
||||||
version "3.1.2"
|
version "3.1.2"
|
||||||
resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
|
resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
|
||||||
integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
|
integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
|
||||||
@ -4643,11 +4664,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
|
|||||||
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||||
|
|
||||||
source-map@^0.7.3:
|
|
||||||
version "0.7.3"
|
|
||||||
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
|
|
||||||
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
|
|
||||||
|
|
||||||
source-map@~0.8.0-beta.0:
|
source-map@~0.8.0-beta.0:
|
||||||
version "0.8.0-beta.0"
|
version "0.8.0-beta.0"
|
||||||
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11"
|
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user