🎉 initiate project *astro_rewrite*
This commit is contained in:
parent
ffd4d5e86c
commit
2ba37bfbe3
8658 changed files with 2268794 additions and 2538 deletions
1
node_modules/hast-util-parse-selector/lib/extract-legacy.ts
generated
vendored
Normal file
1
node_modules/hast-util-parse-selector/lib/extract-legacy.ts
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
export type ExtractTagName<X, Y> = string
|
||||
16
node_modules/hast-util-parse-selector/lib/extract.d.ts
generated
vendored
Normal file
16
node_modules/hast-util-parse-selector/lib/extract.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
export type ExtractTagName<
|
||||
SimpleSelector extends string,
|
||||
DefaultTagName extends string
|
||||
> = SimpleSelector extends `#${infer Rest}`
|
||||
? DefaultTagName
|
||||
: SimpleSelector extends `.${infer Rest}`
|
||||
? DefaultTagName
|
||||
: SimpleSelector extends `${infer TagName}.${infer Rest}`
|
||||
? ExtractTagName<TagName, DefaultTagName>
|
||||
: SimpleSelector extends `${infer TagName}#${infer Rest}`
|
||||
? TagName
|
||||
: SimpleSelector extends ''
|
||||
? DefaultTagName
|
||||
: SimpleSelector extends string
|
||||
? SimpleSelector
|
||||
: DefaultTagName
|
||||
16
node_modules/hast-util-parse-selector/lib/extract.ts
generated
vendored
Normal file
16
node_modules/hast-util-parse-selector/lib/extract.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
export type ExtractTagName<
|
||||
SimpleSelector extends string,
|
||||
DefaultTagName extends string
|
||||
> = SimpleSelector extends `#${infer Rest}`
|
||||
? DefaultTagName
|
||||
: SimpleSelector extends `.${infer Rest}`
|
||||
? DefaultTagName
|
||||
: SimpleSelector extends `${infer TagName}.${infer Rest}`
|
||||
? ExtractTagName<TagName, DefaultTagName>
|
||||
: SimpleSelector extends `${infer TagName}#${infer Rest}`
|
||||
? TagName
|
||||
: SimpleSelector extends ''
|
||||
? DefaultTagName
|
||||
: SimpleSelector extends string
|
||||
? SimpleSelector
|
||||
: DefaultTagName
|
||||
29
node_modules/hast-util-parse-selector/lib/index.d.ts
generated
vendored
Normal file
29
node_modules/hast-util-parse-selector/lib/index.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
/**
|
||||
* Create a hast element from a simple CSS selector.
|
||||
*
|
||||
* @template {string} Selector
|
||||
* Type of selector.
|
||||
* @template {string} [DefaultTagName='div']
|
||||
* Type of default tag name.
|
||||
* @param {Selector | null | undefined} [selector]
|
||||
* Simple CSS selector.
|
||||
*
|
||||
* Can contain a tag-name (`foo`), classes (`.bar`), and an ID (`#baz`).
|
||||
* Multiple classes are allowed.
|
||||
* Uses the last ID if multiple IDs are found.
|
||||
* @param {DefaultTagName | null | undefined} [defaultTagName='div']
|
||||
* Tag name to use if `selector` does not specify one (default: `'div'`).
|
||||
* @returns {Element & {tagName: import('./extract.js').ExtractTagName<Selector, DefaultTagName>}}
|
||||
* Built element.
|
||||
*/
|
||||
export function parseSelector<
|
||||
Selector extends string,
|
||||
DefaultTagName extends string = 'div'
|
||||
>(
|
||||
selector?: Selector | null | undefined,
|
||||
defaultTagName?: DefaultTagName | null | undefined
|
||||
): import('hast').Element & {
|
||||
tagName: import('./extract.js').ExtractTagName<Selector, DefaultTagName>
|
||||
}
|
||||
export type Properties = import('hast').Properties
|
||||
export type Element = import('hast').Element
|
||||
68
node_modules/hast-util-parse-selector/lib/index.js
generated
vendored
Normal file
68
node_modules/hast-util-parse-selector/lib/index.js
generated
vendored
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
/**
|
||||
* @typedef {import('hast').Properties} Properties
|
||||
* @typedef {import('hast').Element} Element
|
||||
*/
|
||||
|
||||
const search = /[#.]/g
|
||||
|
||||
/**
|
||||
* Create a hast element from a simple CSS selector.
|
||||
*
|
||||
* @template {string} Selector
|
||||
* Type of selector.
|
||||
* @template {string} [DefaultTagName='div']
|
||||
* Type of default tag name.
|
||||
* @param {Selector | null | undefined} [selector]
|
||||
* Simple CSS selector.
|
||||
*
|
||||
* Can contain a tag name (`foo`), classes (`.bar`), and an ID (`#baz`).
|
||||
* Multiple classes are allowed.
|
||||
* Uses the last ID if multiple IDs are found.
|
||||
* @param {DefaultTagName | null | undefined} [defaultTagName='div']
|
||||
* Tag name to use if `selector` does not specify one (default: `'div'`).
|
||||
* @returns {Element & {tagName: import('./extract.js').ExtractTagName<Selector, DefaultTagName>}}
|
||||
* Built element.
|
||||
*/
|
||||
export function parseSelector(selector, defaultTagName) {
|
||||
const value = selector || ''
|
||||
/** @type {Properties} */
|
||||
const props = {}
|
||||
let start = 0
|
||||
/** @type {string | undefined} */
|
||||
let previous
|
||||
/** @type {string | undefined} */
|
||||
let tagName
|
||||
|
||||
while (start < value.length) {
|
||||
search.lastIndex = start
|
||||
const match = search.exec(value)
|
||||
const subvalue = value.slice(start, match ? match.index : value.length)
|
||||
|
||||
if (subvalue) {
|
||||
if (!previous) {
|
||||
tagName = subvalue
|
||||
} else if (previous === '#') {
|
||||
props.id = subvalue
|
||||
} else if (Array.isArray(props.className)) {
|
||||
props.className.push(subvalue)
|
||||
} else {
|
||||
props.className = [subvalue]
|
||||
}
|
||||
|
||||
start += subvalue.length
|
||||
}
|
||||
|
||||
if (match) {
|
||||
previous = match[0]
|
||||
start++
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'element',
|
||||
// @ts-expect-error: fine.
|
||||
tagName: tagName || defaultTagName || 'div',
|
||||
properties: props,
|
||||
children: []
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue