🎉 initiate project *astro_rewrite*

This commit is contained in:
sindrekjelsrud 2023-07-19 21:31:30 +02:00
parent ffd4d5e86c
commit 2ba37bfbe3
8658 changed files with 2268794 additions and 2538 deletions

View 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
View 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
View 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
View 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
View 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: []
}
}