Refactor routing in App component to enhance navigation and improve error handling by integrating dynamic routes and updating the NotFound route.
This commit is contained in:
2
node_modules/mdast-util-to-markdown/lib/util/association.d.ts
generated
vendored
Normal file
2
node_modules/mdast-util-to-markdown/lib/util/association.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export function association(node: import("mdast").Association): string;
|
||||
//# sourceMappingURL=association.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/association.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/association.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"association.d.ts","sourceRoot":"","sources":["association.js"],"names":[],"mappings":""}
|
33
node_modules/mdast-util-to-markdown/lib/util/association.js
generated
vendored
Normal file
33
node_modules/mdast-util-to-markdown/lib/util/association.js
generated
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* @import {AssociationId} from '../types.js'
|
||||
*/
|
||||
|
||||
import {decodeString} from 'micromark-util-decode-string'
|
||||
|
||||
/**
|
||||
* Get an identifier from an association to match it to others.
|
||||
*
|
||||
* Associations are nodes that match to something else through an ID:
|
||||
* <https://github.com/syntax-tree/mdast#association>.
|
||||
*
|
||||
* The `label` of an association is the string value: character escapes and
|
||||
* references work, and casing is intact.
|
||||
* The `identifier` is used to match one association to another:
|
||||
* controversially, character escapes and references don’t work in this
|
||||
* matching: `©` does not match `©`, and `\+` does not match `+`.
|
||||
*
|
||||
* But casing is ignored (and whitespace) is trimmed and collapsed: ` A\nb`
|
||||
* matches `a b`.
|
||||
* So, we do prefer the label when figuring out how we’re going to serialize:
|
||||
* it has whitespace, casing, and we can ignore most useless character
|
||||
* escapes and all character references.
|
||||
*
|
||||
* @type {AssociationId}
|
||||
*/
|
||||
export function association(node) {
|
||||
if (node.label || !node.identifier) {
|
||||
return node.label || ''
|
||||
}
|
||||
|
||||
return decodeString(node.identifier)
|
||||
}
|
11
node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.d.ts
generated
vendored
Normal file
11
node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.d.ts
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['bulletOrdered'], null | undefined>}
|
||||
*/
|
||||
export function checkBulletOrdered(state: State): Exclude<Options["bulletOrdered"], null | undefined>;
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
import type { Options } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=check-bullet-ordered.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"check-bullet-ordered.d.ts","sourceRoot":"","sources":["check-bullet-ordered.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,0CAHW,KAAK,GACH,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAc/D;2BAnBgC,wBAAwB;6BAAxB,wBAAwB"}
|
21
node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js
generated
vendored
Normal file
21
node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['bulletOrdered'], null | undefined>}
|
||||
*/
|
||||
export function checkBulletOrdered(state) {
|
||||
const marker = state.options.bulletOrdered || '.'
|
||||
|
||||
if (marker !== '.' && marker !== ')') {
|
||||
throw new Error(
|
||||
'Cannot serialize items with `' +
|
||||
marker +
|
||||
'` for `options.bulletOrdered`, expected `.` or `)`'
|
||||
)
|
||||
}
|
||||
|
||||
return marker
|
||||
}
|
8
node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.d.ts
generated
vendored
Normal file
8
node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.d.ts
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['bullet'], null | undefined>}
|
||||
*/
|
||||
export function checkBulletOther(state: State): Exclude<Options["bullet"], null | undefined>;
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
import type { Options } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=check-bullet-other.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"check-bullet-other.d.ts","sourceRoot":"","sources":["check-bullet-other.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wCAHW,KAAK,GACH,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CA6BxD;2BApCgC,wBAAwB;6BAAxB,wBAAwB"}
|
38
node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js
generated
vendored
Normal file
38
node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
|
||||
import {checkBullet} from './check-bullet.js'
|
||||
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['bullet'], null | undefined>}
|
||||
*/
|
||||
export function checkBulletOther(state) {
|
||||
const bullet = checkBullet(state)
|
||||
const bulletOther = state.options.bulletOther
|
||||
|
||||
if (!bulletOther) {
|
||||
return bullet === '*' ? '-' : '*'
|
||||
}
|
||||
|
||||
if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') {
|
||||
throw new Error(
|
||||
'Cannot serialize items with `' +
|
||||
bulletOther +
|
||||
'` for `options.bulletOther`, expected `*`, `+`, or `-`'
|
||||
)
|
||||
}
|
||||
|
||||
if (bulletOther === bullet) {
|
||||
throw new Error(
|
||||
'Expected `bullet` (`' +
|
||||
bullet +
|
||||
'`) and `bulletOther` (`' +
|
||||
bulletOther +
|
||||
'`) to be different'
|
||||
)
|
||||
}
|
||||
|
||||
return bulletOther
|
||||
}
|
11
node_modules/mdast-util-to-markdown/lib/util/check-bullet.d.ts
generated
vendored
Normal file
11
node_modules/mdast-util-to-markdown/lib/util/check-bullet.d.ts
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['bullet'], null | undefined>}
|
||||
*/
|
||||
export function checkBullet(state: State): Exclude<Options["bullet"], null | undefined>;
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
import type { Options } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=check-bullet.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/check-bullet.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/check-bullet.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"check-bullet.d.ts","sourceRoot":"","sources":["check-bullet.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,mCAHW,KAAK,GACH,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAcxD;2BAnBgC,wBAAwB;6BAAxB,wBAAwB"}
|
21
node_modules/mdast-util-to-markdown/lib/util/check-bullet.js
generated
vendored
Normal file
21
node_modules/mdast-util-to-markdown/lib/util/check-bullet.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['bullet'], null | undefined>}
|
||||
*/
|
||||
export function checkBullet(state) {
|
||||
const marker = state.options.bullet || '*'
|
||||
|
||||
if (marker !== '*' && marker !== '+' && marker !== '-') {
|
||||
throw new Error(
|
||||
'Cannot serialize items with `' +
|
||||
marker +
|
||||
'` for `options.bullet`, expected `*`, `+`, or `-`'
|
||||
)
|
||||
}
|
||||
|
||||
return marker
|
||||
}
|
11
node_modules/mdast-util-to-markdown/lib/util/check-emphasis.d.ts
generated
vendored
Normal file
11
node_modules/mdast-util-to-markdown/lib/util/check-emphasis.d.ts
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['emphasis'], null | undefined>}
|
||||
*/
|
||||
export function checkEmphasis(state: State): Exclude<Options["emphasis"], null | undefined>;
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
import type { Options } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=check-emphasis.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/check-emphasis.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/check-emphasis.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"check-emphasis.d.ts","sourceRoot":"","sources":["check-emphasis.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,qCAHW,KAAK,GACH,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAc1D;2BAnBgC,wBAAwB;6BAAxB,wBAAwB"}
|
21
node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js
generated
vendored
Normal file
21
node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['emphasis'], null | undefined>}
|
||||
*/
|
||||
export function checkEmphasis(state) {
|
||||
const marker = state.options.emphasis || '*'
|
||||
|
||||
if (marker !== '*' && marker !== '_') {
|
||||
throw new Error(
|
||||
'Cannot serialize emphasis with `' +
|
||||
marker +
|
||||
'` for `options.emphasis`, expected `*`, or `_`'
|
||||
)
|
||||
}
|
||||
|
||||
return marker
|
||||
}
|
11
node_modules/mdast-util-to-markdown/lib/util/check-fence.d.ts
generated
vendored
Normal file
11
node_modules/mdast-util-to-markdown/lib/util/check-fence.d.ts
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['fence'], null | undefined>}
|
||||
*/
|
||||
export function checkFence(state: State): Exclude<Options["fence"], null | undefined>;
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
import type { Options } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=check-fence.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/check-fence.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/check-fence.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"check-fence.d.ts","sourceRoot":"","sources":["check-fence.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,kCAHW,KAAK,GACH,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAcvD;2BAnBgC,wBAAwB;6BAAxB,wBAAwB"}
|
21
node_modules/mdast-util-to-markdown/lib/util/check-fence.js
generated
vendored
Normal file
21
node_modules/mdast-util-to-markdown/lib/util/check-fence.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['fence'], null | undefined>}
|
||||
*/
|
||||
export function checkFence(state) {
|
||||
const marker = state.options.fence || '`'
|
||||
|
||||
if (marker !== '`' && marker !== '~') {
|
||||
throw new Error(
|
||||
'Cannot serialize code with `' +
|
||||
marker +
|
||||
'` for `options.fence`, expected `` ` `` or `~`'
|
||||
)
|
||||
}
|
||||
|
||||
return marker
|
||||
}
|
11
node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.d.ts
generated
vendored
Normal file
11
node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.d.ts
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['listItemIndent'], null | undefined>}
|
||||
*/
|
||||
export function checkListItemIndent(state: State): Exclude<Options["listItemIndent"], null | undefined>;
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
import type { Options } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=check-list-item-indent.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"check-list-item-indent.d.ts","sourceRoot":"","sources":["check-list-item-indent.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,2CAHW,KAAK,GACH,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAchE;2BAnBgC,wBAAwB;6BAAxB,wBAAwB"}
|
21
node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js
generated
vendored
Normal file
21
node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['listItemIndent'], null | undefined>}
|
||||
*/
|
||||
export function checkListItemIndent(state) {
|
||||
const style = state.options.listItemIndent || 'one'
|
||||
|
||||
if (style !== 'tab' && style !== 'one' && style !== 'mixed') {
|
||||
throw new Error(
|
||||
'Cannot serialize items with `' +
|
||||
style +
|
||||
'` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'
|
||||
)
|
||||
}
|
||||
|
||||
return style
|
||||
}
|
11
node_modules/mdast-util-to-markdown/lib/util/check-quote.d.ts
generated
vendored
Normal file
11
node_modules/mdast-util-to-markdown/lib/util/check-quote.d.ts
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['quote'], null | undefined>}
|
||||
*/
|
||||
export function checkQuote(state: State): Exclude<Options["quote"], null | undefined>;
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
import type { Options } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=check-quote.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/check-quote.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/check-quote.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"check-quote.d.ts","sourceRoot":"","sources":["check-quote.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,kCAHW,KAAK,GACH,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAcvD;2BAnBgC,wBAAwB;6BAAxB,wBAAwB"}
|
21
node_modules/mdast-util-to-markdown/lib/util/check-quote.js
generated
vendored
Normal file
21
node_modules/mdast-util-to-markdown/lib/util/check-quote.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['quote'], null | undefined>}
|
||||
*/
|
||||
export function checkQuote(state) {
|
||||
const marker = state.options.quote || '"'
|
||||
|
||||
if (marker !== '"' && marker !== "'") {
|
||||
throw new Error(
|
||||
'Cannot serialize title with `' +
|
||||
marker +
|
||||
'` for `options.quote`, expected `"`, or `\'`'
|
||||
)
|
||||
}
|
||||
|
||||
return marker
|
||||
}
|
11
node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.d.ts
generated
vendored
Normal file
11
node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.d.ts
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['ruleRepetition'], null | undefined>}
|
||||
*/
|
||||
export function checkRuleRepetition(state: State): Exclude<Options["ruleRepetition"], null | undefined>;
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
import type { Options } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=check-rule-repetition.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"check-rule-repetition.d.ts","sourceRoot":"","sources":["check-rule-repetition.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,2CAHW,KAAK,GACH,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAchE;2BAnBgC,wBAAwB;6BAAxB,wBAAwB"}
|
21
node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js
generated
vendored
Normal file
21
node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['ruleRepetition'], null | undefined>}
|
||||
*/
|
||||
export function checkRuleRepetition(state) {
|
||||
const repetition = state.options.ruleRepetition || 3
|
||||
|
||||
if (repetition < 3) {
|
||||
throw new Error(
|
||||
'Cannot serialize rules with repetition `' +
|
||||
repetition +
|
||||
'` for `options.ruleRepetition`, expected `3` or more'
|
||||
)
|
||||
}
|
||||
|
||||
return repetition
|
||||
}
|
11
node_modules/mdast-util-to-markdown/lib/util/check-rule.d.ts
generated
vendored
Normal file
11
node_modules/mdast-util-to-markdown/lib/util/check-rule.d.ts
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['rule'], null | undefined>}
|
||||
*/
|
||||
export function checkRule(state: State): Exclude<Options["rule"], null | undefined>;
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
import type { Options } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=check-rule.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/check-rule.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/check-rule.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"check-rule.d.ts","sourceRoot":"","sources":["check-rule.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,iCAHW,KAAK,GACH,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CActD;2BAnBgC,wBAAwB;6BAAxB,wBAAwB"}
|
21
node_modules/mdast-util-to-markdown/lib/util/check-rule.js
generated
vendored
Normal file
21
node_modules/mdast-util-to-markdown/lib/util/check-rule.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['rule'], null | undefined>}
|
||||
*/
|
||||
export function checkRule(state) {
|
||||
const marker = state.options.rule || '*'
|
||||
|
||||
if (marker !== '*' && marker !== '-' && marker !== '_') {
|
||||
throw new Error(
|
||||
'Cannot serialize rules with `' +
|
||||
marker +
|
||||
'` for `options.rule`, expected `*`, `-`, or `_`'
|
||||
)
|
||||
}
|
||||
|
||||
return marker
|
||||
}
|
11
node_modules/mdast-util-to-markdown/lib/util/check-strong.d.ts
generated
vendored
Normal file
11
node_modules/mdast-util-to-markdown/lib/util/check-strong.d.ts
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['strong'], null | undefined>}
|
||||
*/
|
||||
export function checkStrong(state: State): Exclude<Options["strong"], null | undefined>;
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
import type { Options } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=check-strong.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/check-strong.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/check-strong.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"check-strong.d.ts","sourceRoot":"","sources":["check-strong.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,mCAHW,KAAK,GACH,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAcxD;2BAnBgC,wBAAwB;6BAAxB,wBAAwB"}
|
21
node_modules/mdast-util-to-markdown/lib/util/check-strong.js
generated
vendored
Normal file
21
node_modules/mdast-util-to-markdown/lib/util/check-strong.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
* @import {Options, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {State} state
|
||||
* @returns {Exclude<Options['strong'], null | undefined>}
|
||||
*/
|
||||
export function checkStrong(state) {
|
||||
const marker = state.options.strong || '*'
|
||||
|
||||
if (marker !== '*' && marker !== '_') {
|
||||
throw new Error(
|
||||
'Cannot serialize strong with `' +
|
||||
marker +
|
||||
'` for `options.strong`, expected `*`, or `_`'
|
||||
)
|
||||
}
|
||||
|
||||
return marker
|
||||
}
|
2
node_modules/mdast-util-to-markdown/lib/util/compile-pattern.d.ts
generated
vendored
Normal file
2
node_modules/mdast-util-to-markdown/lib/util/compile-pattern.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export function compilePattern(info: import("../types.js").Unsafe): RegExp;
|
||||
//# sourceMappingURL=compile-pattern.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/compile-pattern.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/compile-pattern.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"compile-pattern.d.ts","sourceRoot":"","sources":["compile-pattern.js"],"names":[],"mappings":""}
|
24
node_modules/mdast-util-to-markdown/lib/util/compile-pattern.js
generated
vendored
Normal file
24
node_modules/mdast-util-to-markdown/lib/util/compile-pattern.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
/**
|
||||
* @import {CompilePattern} from '../types.js'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @type {CompilePattern}
|
||||
*/
|
||||
export function compilePattern(pattern) {
|
||||
if (!pattern._compiled) {
|
||||
const before =
|
||||
(pattern.atBreak ? '[\\r\\n][\\t ]*' : '') +
|
||||
(pattern.before ? '(?:' + pattern.before + ')' : '')
|
||||
|
||||
pattern._compiled = new RegExp(
|
||||
(before ? '(' + before + ')' : '') +
|
||||
(/[|\\{}()[\]^$+*?.-]/.test(pattern.character) ? '\\' : '') +
|
||||
pattern.character +
|
||||
(pattern.after ? '(?:' + pattern.after + ')' : ''),
|
||||
'g'
|
||||
)
|
||||
}
|
||||
|
||||
return pattern._compiled
|
||||
}
|
19
node_modules/mdast-util-to-markdown/lib/util/container-flow.d.ts
generated
vendored
Normal file
19
node_modules/mdast-util-to-markdown/lib/util/container-flow.d.ts
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
* @import {State} from 'mdast-util-to-markdown'
|
||||
* @import {FlowChildren, FlowParents, TrackFields} from '../types.js'
|
||||
*/
|
||||
/**
|
||||
* @param {FlowParents} parent
|
||||
* Parent of flow nodes.
|
||||
* @param {State} state
|
||||
* Info passed around about the current state.
|
||||
* @param {TrackFields} info
|
||||
* Info on where we are in the document we are generating.
|
||||
* @returns {string}
|
||||
* Serialized children, joined by (blank) lines.
|
||||
*/
|
||||
export function containerFlow(parent: FlowParents, state: State, info: TrackFields): string;
|
||||
import type { FlowParents } from '../types.js';
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
import type { TrackFields } from '../types.js';
|
||||
//# sourceMappingURL=container-flow.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/container-flow.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/container-flow.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"container-flow.d.ts","sourceRoot":"","sources":["container-flow.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AACH,sCATW,WAAW,SAEX,KAAK,QAEL,WAAW,GAET,MAAM,CA0ClB;iCApDwD,aAAa;2BAD9C,wBAAwB;iCACS,aAAa"}
|
84
node_modules/mdast-util-to-markdown/lib/util/container-flow.js
generated
vendored
Normal file
84
node_modules/mdast-util-to-markdown/lib/util/container-flow.js
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
/**
|
||||
* @import {State} from 'mdast-util-to-markdown'
|
||||
* @import {FlowChildren, FlowParents, TrackFields} from '../types.js'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {FlowParents} parent
|
||||
* Parent of flow nodes.
|
||||
* @param {State} state
|
||||
* Info passed around about the current state.
|
||||
* @param {TrackFields} info
|
||||
* Info on where we are in the document we are generating.
|
||||
* @returns {string}
|
||||
* Serialized children, joined by (blank) lines.
|
||||
*/
|
||||
export function containerFlow(parent, state, info) {
|
||||
const indexStack = state.indexStack
|
||||
const children = parent.children || []
|
||||
const tracker = state.createTracker(info)
|
||||
/** @type {Array<string>} */
|
||||
const results = []
|
||||
let index = -1
|
||||
|
||||
indexStack.push(-1)
|
||||
|
||||
while (++index < children.length) {
|
||||
const child = children[index]
|
||||
|
||||
indexStack[indexStack.length - 1] = index
|
||||
|
||||
results.push(
|
||||
tracker.move(
|
||||
state.handle(child, parent, state, {
|
||||
before: '\n',
|
||||
after: '\n',
|
||||
...tracker.current()
|
||||
})
|
||||
)
|
||||
)
|
||||
|
||||
if (child.type !== 'list') {
|
||||
state.bulletLastUsed = undefined
|
||||
}
|
||||
|
||||
if (index < children.length - 1) {
|
||||
results.push(
|
||||
tracker.move(between(child, children[index + 1], parent, state))
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
indexStack.pop()
|
||||
|
||||
return results.join('')
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {FlowChildren} left
|
||||
* @param {FlowChildren} right
|
||||
* @param {FlowParents} parent
|
||||
* @param {State} state
|
||||
* @returns {string}
|
||||
*/
|
||||
function between(left, right, parent, state) {
|
||||
let index = state.join.length
|
||||
|
||||
while (index--) {
|
||||
const result = state.join[index](left, right, parent, state)
|
||||
|
||||
if (result === true || result === 1) {
|
||||
break
|
||||
}
|
||||
|
||||
if (typeof result === 'number') {
|
||||
return '\n'.repeat(1 + result)
|
||||
}
|
||||
|
||||
if (result === false) {
|
||||
return '\n\n<!---->\n\n'
|
||||
}
|
||||
}
|
||||
|
||||
return '\n\n'
|
||||
}
|
19
node_modules/mdast-util-to-markdown/lib/util/container-phrasing.d.ts
generated
vendored
Normal file
19
node_modules/mdast-util-to-markdown/lib/util/container-phrasing.d.ts
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
* Serialize the children of a parent that contains phrasing children.
|
||||
*
|
||||
* These children will be joined flush together.
|
||||
*
|
||||
* @param {PhrasingParents} parent
|
||||
* Parent of flow nodes.
|
||||
* @param {State} state
|
||||
* Info passed around about the current state.
|
||||
* @param {Info} info
|
||||
* Info on where we are in the document we are generating.
|
||||
* @returns {string}
|
||||
* Serialized children, joined together.
|
||||
*/
|
||||
export function containerPhrasing(parent: PhrasingParents, state: State, info: Info): string;
|
||||
import type { PhrasingParents } from '../types.js';
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
import type { Info } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=container-phrasing.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/container-phrasing.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/container-phrasing.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"container-phrasing.d.ts","sourceRoot":"","sources":["container-phrasing.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;GAaG;AACH,0CATW,eAAe,SAEf,KAAK,QAEL,IAAI,GAEF,MAAM,CA0GlB;qCA1HiC,aAAa;2BADT,wBAAwB;0BAAxB,wBAAwB"}
|
125
node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js
generated
vendored
Normal file
125
node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js
generated
vendored
Normal file
@@ -0,0 +1,125 @@
|
||||
/**
|
||||
* @import {Handle, Info, State} from 'mdast-util-to-markdown'
|
||||
* @import {PhrasingParents} from '../types.js'
|
||||
*/
|
||||
|
||||
import {encodeCharacterReference} from './encode-character-reference.js'
|
||||
|
||||
/**
|
||||
* Serialize the children of a parent that contains phrasing children.
|
||||
*
|
||||
* These children will be joined flush together.
|
||||
*
|
||||
* @param {PhrasingParents} parent
|
||||
* Parent of flow nodes.
|
||||
* @param {State} state
|
||||
* Info passed around about the current state.
|
||||
* @param {Info} info
|
||||
* Info on where we are in the document we are generating.
|
||||
* @returns {string}
|
||||
* Serialized children, joined together.
|
||||
*/
|
||||
export function containerPhrasing(parent, state, info) {
|
||||
const indexStack = state.indexStack
|
||||
const children = parent.children || []
|
||||
/** @type {Array<string>} */
|
||||
const results = []
|
||||
let index = -1
|
||||
let before = info.before
|
||||
/** @type {string | undefined} */
|
||||
let encodeAfter
|
||||
|
||||
indexStack.push(-1)
|
||||
let tracker = state.createTracker(info)
|
||||
|
||||
while (++index < children.length) {
|
||||
const child = children[index]
|
||||
/** @type {string} */
|
||||
let after
|
||||
|
||||
indexStack[indexStack.length - 1] = index
|
||||
|
||||
if (index + 1 < children.length) {
|
||||
/** @type {Handle} */
|
||||
// @ts-expect-error: hush, it’s actually a `zwitch`.
|
||||
let handle = state.handle.handlers[children[index + 1].type]
|
||||
/** @type {Handle} */
|
||||
// @ts-expect-error: hush, it’s actually a `zwitch`.
|
||||
if (handle && handle.peek) handle = handle.peek
|
||||
after = handle
|
||||
? handle(children[index + 1], parent, state, {
|
||||
before: '',
|
||||
after: '',
|
||||
...tracker.current()
|
||||
}).charAt(0)
|
||||
: ''
|
||||
} else {
|
||||
after = info.after
|
||||
}
|
||||
|
||||
// In some cases, html (text) can be found in phrasing right after an eol.
|
||||
// When we’d serialize that, in most cases that would be seen as html
|
||||
// (flow).
|
||||
// As we can’t escape or so to prevent it from happening, we take a somewhat
|
||||
// reasonable approach: replace that eol with a space.
|
||||
// See: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15>
|
||||
if (
|
||||
results.length > 0 &&
|
||||
(before === '\r' || before === '\n') &&
|
||||
child.type === 'html'
|
||||
) {
|
||||
results[results.length - 1] = results[results.length - 1].replace(
|
||||
/(\r?\n|\r)$/,
|
||||
' '
|
||||
)
|
||||
before = ' '
|
||||
|
||||
// To do: does this work to reset tracker?
|
||||
tracker = state.createTracker(info)
|
||||
tracker.move(results.join(''))
|
||||
}
|
||||
|
||||
let value = state.handle(child, parent, state, {
|
||||
...tracker.current(),
|
||||
after,
|
||||
before
|
||||
})
|
||||
|
||||
// If we had to encode the first character after the previous node and it’s
|
||||
// still the same character,
|
||||
// encode it.
|
||||
if (encodeAfter && encodeAfter === value.slice(0, 1)) {
|
||||
value =
|
||||
encodeCharacterReference(encodeAfter.charCodeAt(0)) + value.slice(1)
|
||||
}
|
||||
|
||||
const encodingInfo = state.attentionEncodeSurroundingInfo
|
||||
state.attentionEncodeSurroundingInfo = undefined
|
||||
encodeAfter = undefined
|
||||
|
||||
// If we have to encode the first character before the current node and
|
||||
// it’s still the same character,
|
||||
// encode it.
|
||||
if (encodingInfo) {
|
||||
if (
|
||||
results.length > 0 &&
|
||||
encodingInfo.before &&
|
||||
before === results[results.length - 1].slice(-1)
|
||||
) {
|
||||
results[results.length - 1] =
|
||||
results[results.length - 1].slice(0, -1) +
|
||||
encodeCharacterReference(before.charCodeAt(0))
|
||||
}
|
||||
|
||||
if (encodingInfo.after) encodeAfter = after
|
||||
}
|
||||
|
||||
tracker.move(value)
|
||||
results.push(value)
|
||||
before = value.slice(-1)
|
||||
}
|
||||
|
||||
indexStack.pop()
|
||||
|
||||
return results.join('')
|
||||
}
|
7
node_modules/mdast-util-to-markdown/lib/util/emphasis-strong-marker.d.ts
generated
vendored
Normal file
7
node_modules/mdast-util-to-markdown/lib/util/emphasis-strong-marker.d.ts
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
* @this {State}
|
||||
* @returns {'*' | '_'}
|
||||
*/
|
||||
export function emphasisStrongMarker(this: State): "*" | "_";
|
||||
import type { State } from '../types.js';
|
||||
//# sourceMappingURL=emphasis-strong-marker.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/emphasis-strong-marker.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/emphasis-strong-marker.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"emphasis-strong-marker.d.ts","sourceRoot":"","sources":["emphasis-strong-marker.js"],"names":[],"mappings":"AAOA;;;GAGG;AACH,mDAFa,GAAG,GAAG,GAAG,CAqBrB;2BA7BuB,aAAa"}
|
10
node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.d.ts
generated
vendored
Normal file
10
node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.d.ts
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* Encode a code point as a character reference.
|
||||
*
|
||||
* @param {number} code
|
||||
* Code point to encode.
|
||||
* @returns {string}
|
||||
* Encoded character reference.
|
||||
*/
|
||||
export function encodeCharacterReference(code: number): string;
|
||||
//# sourceMappingURL=encode-character-reference.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"encode-character-reference.d.ts","sourceRoot":"","sources":["encode-character-reference.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,+CALW,MAAM,GAEJ,MAAM,CAKlB"}
|
11
node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.js
generated
vendored
Normal file
11
node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.js
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* Encode a code point as a character reference.
|
||||
*
|
||||
* @param {number} code
|
||||
* Code point to encode.
|
||||
* @returns {string}
|
||||
* Encoded character reference.
|
||||
*/
|
||||
export function encodeCharacterReference(code) {
|
||||
return '&#x' + code.toString(16).toUpperCase() + ';'
|
||||
}
|
33
node_modules/mdast-util-to-markdown/lib/util/encode-info.d.ts
generated
vendored
Normal file
33
node_modules/mdast-util-to-markdown/lib/util/encode-info.d.ts
generated
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* Check whether to encode (as a character reference) the characters
|
||||
* surrounding an attention run.
|
||||
*
|
||||
* Which characters are around an attention run influence whether it works or
|
||||
* not.
|
||||
*
|
||||
* See <https://github.com/orgs/syntax-tree/discussions/60> for more info.
|
||||
* See this markdown in a particular renderer to see what works:
|
||||
*
|
||||
* ```markdown
|
||||
* | | A (letter inside) | B (punctuation inside) | C (whitespace inside) | D (nothing inside) |
|
||||
* | ----------------------- | ----------------- | ---------------------- | --------------------- | ------------------ |
|
||||
* | 1 (letter outside) | x*y*z | x*.*z | x* *z | x**z |
|
||||
* | 2 (punctuation outside) | .*y*. | .*.*. | .* *. | .**. |
|
||||
* | 3 (whitespace outside) | x *y* z | x *.* z | x * * z | x ** z |
|
||||
* | 4 (nothing outside) | *x* | *.* | * * | ** |
|
||||
* ```
|
||||
*
|
||||
* @param {number} outside
|
||||
* Code point on the outer side of the run.
|
||||
* @param {number} inside
|
||||
* Code point on the inner side of the run.
|
||||
* @param {'*' | '_'} marker
|
||||
* Marker of the run.
|
||||
* Underscores are handled more strictly (they form less often) than
|
||||
* asterisks.
|
||||
* @returns {EncodeSides}
|
||||
* Whether to encode characters.
|
||||
*/
|
||||
export function encodeInfo(outside: number, inside: number, marker: "*" | "_"): EncodeSides;
|
||||
import type { EncodeSides } from '../types.js';
|
||||
//# sourceMappingURL=encode-info.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/encode-info.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/encode-info.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"encode-info.d.ts","sourceRoot":"","sources":["encode-info.js"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAKH,oCAfW,MAAM,UAEN,MAAM,UAEN,GAAG,GAAG,GAAG,GAIP,WAAW,CAgDvB;iCAhF6B,aAAa"}
|
82
node_modules/mdast-util-to-markdown/lib/util/encode-info.js
generated
vendored
Normal file
82
node_modules/mdast-util-to-markdown/lib/util/encode-info.js
generated
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* @import {EncodeSides} from '../types.js'
|
||||
*/
|
||||
|
||||
import {classifyCharacter} from 'micromark-util-classify-character'
|
||||
|
||||
/**
|
||||
* Check whether to encode (as a character reference) the characters
|
||||
* surrounding an attention run.
|
||||
*
|
||||
* Which characters are around an attention run influence whether it works or
|
||||
* not.
|
||||
*
|
||||
* See <https://github.com/orgs/syntax-tree/discussions/60> for more info.
|
||||
* See this markdown in a particular renderer to see what works:
|
||||
*
|
||||
* ```markdown
|
||||
* | | A (letter inside) | B (punctuation inside) | C (whitespace inside) | D (nothing inside) |
|
||||
* | ----------------------- | ----------------- | ---------------------- | --------------------- | ------------------ |
|
||||
* | 1 (letter outside) | x*y*z | x*.*z | x* *z | x**z |
|
||||
* | 2 (punctuation outside) | .*y*. | .*.*. | .* *. | .**. |
|
||||
* | 3 (whitespace outside) | x *y* z | x *.* z | x * * z | x ** z |
|
||||
* | 4 (nothing outside) | *x* | *.* | * * | ** |
|
||||
* ```
|
||||
*
|
||||
* @param {number} outside
|
||||
* Code point on the outer side of the run.
|
||||
* @param {number} inside
|
||||
* Code point on the inner side of the run.
|
||||
* @param {'*' | '_'} marker
|
||||
* Marker of the run.
|
||||
* Underscores are handled more strictly (they form less often) than
|
||||
* asterisks.
|
||||
* @returns {EncodeSides}
|
||||
* Whether to encode characters.
|
||||
*/
|
||||
// Important: punctuation must never be encoded.
|
||||
// Punctuation is solely used by markdown constructs.
|
||||
// And by encoding itself.
|
||||
// Encoding them will break constructs or double encode things.
|
||||
export function encodeInfo(outside, inside, marker) {
|
||||
const outsideKind = classifyCharacter(outside)
|
||||
const insideKind = classifyCharacter(inside)
|
||||
|
||||
// Letter outside:
|
||||
if (outsideKind === undefined) {
|
||||
return insideKind === undefined
|
||||
? // Letter inside:
|
||||
// we have to encode *both* letters for `_` as it is looser.
|
||||
// it already forms for `*` (and GFMs `~`).
|
||||
marker === '_'
|
||||
? {inside: true, outside: true}
|
||||
: {inside: false, outside: false}
|
||||
: insideKind === 1
|
||||
? // Whitespace inside: encode both (letter, whitespace).
|
||||
{inside: true, outside: true}
|
||||
: // Punctuation inside: encode outer (letter)
|
||||
{inside: false, outside: true}
|
||||
}
|
||||
|
||||
// Whitespace outside:
|
||||
if (outsideKind === 1) {
|
||||
return insideKind === undefined
|
||||
? // Letter inside: already forms.
|
||||
{inside: false, outside: false}
|
||||
: insideKind === 1
|
||||
? // Whitespace inside: encode both (whitespace).
|
||||
{inside: true, outside: true}
|
||||
: // Punctuation inside: already forms.
|
||||
{inside: false, outside: false}
|
||||
}
|
||||
|
||||
// Punctuation outside:
|
||||
return insideKind === undefined
|
||||
? // Letter inside: already forms.
|
||||
{inside: false, outside: false}
|
||||
: insideKind === 1
|
||||
? // Whitespace inside: encode inner (whitespace).
|
||||
{inside: true, outside: false}
|
||||
: // Punctuation inside: already forms.
|
||||
{inside: false, outside: false}
|
||||
}
|
13
node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.d.ts
generated
vendored
Normal file
13
node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.d.ts
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* @import {State} from 'mdast-util-to-markdown'
|
||||
* @import {Code} from 'mdast'
|
||||
*/
|
||||
/**
|
||||
* @param {Code} node
|
||||
* @param {State} state
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function formatCodeAsIndented(node: Code, state: State): boolean;
|
||||
import type { Code } from 'mdast';
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=format-code-as-indented.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"format-code-as-indented.d.ts","sourceRoot":"","sources":["format-code-as-indented.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,2CAJW,IAAI,SACJ,KAAK,GACH,OAAO,CAanB;0BAnBsB,OAAO;2BADN,wBAAwB"}
|
22
node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js
generated
vendored
Normal file
22
node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
/**
|
||||
* @import {State} from 'mdast-util-to-markdown'
|
||||
* @import {Code} from 'mdast'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {Code} node
|
||||
* @param {State} state
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function formatCodeAsIndented(node, state) {
|
||||
return Boolean(
|
||||
state.options.fences === false &&
|
||||
node.value &&
|
||||
// If there’s no info…
|
||||
!node.lang &&
|
||||
// And there’s a non-whitespace character…
|
||||
/[^ \r\n]/.test(node.value) &&
|
||||
// And the value doesn’t start or end in a blank…
|
||||
!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(node.value)
|
||||
)
|
||||
}
|
9
node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.d.ts
generated
vendored
Normal file
9
node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.d.ts
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
/**
|
||||
* @param {Heading} node
|
||||
* @param {State} state
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function formatHeadingAsSetext(node: Heading, state: State): boolean;
|
||||
import type { Heading } from 'mdast';
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=format-heading-as-setext.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"format-heading-as-setext.d.ts","sourceRoot":"","sources":["format-heading-as-setext.js"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,4CAJW,OAAO,SACP,KAAK,GACH,OAAO,CAsBnB;6BA/ByB,OAAO;2BADT,wBAAwB"}
|
34
node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js
generated
vendored
Normal file
34
node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* @import {State} from 'mdast-util-to-markdown'
|
||||
* @import {Heading} from 'mdast'
|
||||
*/
|
||||
|
||||
import {EXIT, visit} from 'unist-util-visit'
|
||||
import {toString} from 'mdast-util-to-string'
|
||||
|
||||
/**
|
||||
* @param {Heading} node
|
||||
* @param {State} state
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function formatHeadingAsSetext(node, state) {
|
||||
let literalWithBreak = false
|
||||
|
||||
// Look for literals with a line break.
|
||||
// Note that this also
|
||||
visit(node, function (node) {
|
||||
if (
|
||||
('value' in node && /\r?\n|\r/.test(node.value)) ||
|
||||
node.type === 'break'
|
||||
) {
|
||||
literalWithBreak = true
|
||||
return EXIT
|
||||
}
|
||||
})
|
||||
|
||||
return Boolean(
|
||||
(!node.depth || node.depth < 3) &&
|
||||
toString(node) &&
|
||||
(state.options.setext || literalWithBreak)
|
||||
)
|
||||
}
|
9
node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.d.ts
generated
vendored
Normal file
9
node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.d.ts
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
/**
|
||||
* @param {Link} node
|
||||
* @param {State} state
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function formatLinkAsAutolink(node: Link, state: State): boolean;
|
||||
import type { Link } from 'mdast';
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=format-link-as-autolink.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"format-link-as-autolink.d.ts","sourceRoot":"","sources":["format-link-as-autolink.js"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,2CAJW,IAAI,SACJ,KAAK,GACH,OAAO,CAuBnB;0BA/BsB,OAAO;2BADN,wBAAwB"}
|
34
node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js
generated
vendored
Normal file
34
node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* @import {State} from 'mdast-util-to-markdown'
|
||||
* @import {Link} from 'mdast'
|
||||
*/
|
||||
|
||||
import {toString} from 'mdast-util-to-string'
|
||||
|
||||
/**
|
||||
* @param {Link} node
|
||||
* @param {State} state
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function formatLinkAsAutolink(node, state) {
|
||||
const raw = toString(node)
|
||||
|
||||
return Boolean(
|
||||
!state.options.resourceLink &&
|
||||
// If there’s a url…
|
||||
node.url &&
|
||||
// And there’s a no title…
|
||||
!node.title &&
|
||||
// And the content of `node` is a single text node…
|
||||
node.children &&
|
||||
node.children.length === 1 &&
|
||||
node.children[0].type === 'text' &&
|
||||
// And if the url is the same as the content…
|
||||
(raw === node.url || 'mailto:' + raw === node.url) &&
|
||||
// And that starts w/ a protocol…
|
||||
/^[a-z][a-z+.-]+:/i.test(node.url) &&
|
||||
// And that doesn’t contain ASCII control codes (character escapes and
|
||||
// references don’t work), space, or angle brackets…
|
||||
!/[\0- <>\u007F]/.test(node.url)
|
||||
)
|
||||
}
|
2
node_modules/mdast-util-to-markdown/lib/util/indent-lines.d.ts
generated
vendored
Normal file
2
node_modules/mdast-util-to-markdown/lib/util/indent-lines.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export function indentLines(value: string, map: import("../types.js").Map): string;
|
||||
//# sourceMappingURL=indent-lines.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/indent-lines.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/indent-lines.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"indent-lines.d.ts","sourceRoot":"","sources":["indent-lines.js"],"names":[],"mappings":""}
|
35
node_modules/mdast-util-to-markdown/lib/util/indent-lines.js
generated
vendored
Normal file
35
node_modules/mdast-util-to-markdown/lib/util/indent-lines.js
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* @import {IndentLines} from '../types.js'
|
||||
*/
|
||||
|
||||
const eol = /\r?\n|\r/g
|
||||
|
||||
/**
|
||||
* @type {IndentLines}
|
||||
*/
|
||||
export function indentLines(value, map) {
|
||||
/** @type {Array<string>} */
|
||||
const result = []
|
||||
let start = 0
|
||||
let line = 0
|
||||
/** @type {RegExpExecArray | null} */
|
||||
let match
|
||||
|
||||
while ((match = eol.exec(value))) {
|
||||
one(value.slice(start, match.index))
|
||||
result.push(match[0])
|
||||
start = match.index + match[0].length
|
||||
line++
|
||||
}
|
||||
|
||||
one(value.slice(start))
|
||||
|
||||
return result.join('')
|
||||
|
||||
/**
|
||||
* @param {string} value
|
||||
*/
|
||||
function one(value) {
|
||||
result.push(map(value, line, !value))
|
||||
}
|
||||
}
|
12
node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.d.ts
generated
vendored
Normal file
12
node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.d.ts
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
/**
|
||||
* @param {Array<ConstructName>} stack
|
||||
* @param {Unsafe} pattern
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function patternInScope(stack: Array<ConstructName>, pattern: Unsafe): boolean;
|
||||
import type { ConstructName } from 'mdast-util-to-markdown';
|
||||
import type { Unsafe } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=pattern-in-scope.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"pattern-in-scope.d.ts","sourceRoot":"","sources":["pattern-in-scope.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,sCAJW,KAAK,CAAC,aAAa,CAAC,WACpB,MAAM,GACJ,OAAO,CAOnB;mCAbuC,wBAAwB;4BAAxB,wBAAwB"}
|
41
node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js
generated
vendored
Normal file
41
node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {Array<ConstructName>} stack
|
||||
* @param {Unsafe} pattern
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function patternInScope(stack, pattern) {
|
||||
return (
|
||||
listInScope(stack, pattern.inConstruct, true) &&
|
||||
!listInScope(stack, pattern.notInConstruct, false)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Array<ConstructName>} stack
|
||||
* @param {Unsafe['inConstruct']} list
|
||||
* @param {boolean} none
|
||||
* @returns {boolean}
|
||||
*/
|
||||
function listInScope(stack, list, none) {
|
||||
if (typeof list === 'string') {
|
||||
list = [list]
|
||||
}
|
||||
|
||||
if (!list || list.length === 0) {
|
||||
return none
|
||||
}
|
||||
|
||||
let index = -1
|
||||
|
||||
while (++index < list.length) {
|
||||
if (stack.includes(list[index])) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
29
node_modules/mdast-util-to-markdown/lib/util/safe.d.ts
generated
vendored
Normal file
29
node_modules/mdast-util-to-markdown/lib/util/safe.d.ts
generated
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* Make a string safe for embedding in markdown constructs.
|
||||
*
|
||||
* In markdown, almost all punctuation characters can, in certain cases,
|
||||
* result in something.
|
||||
* Whether they do is highly subjective to where they happen and in what
|
||||
* they happen.
|
||||
*
|
||||
* To solve this, `mdast-util-to-markdown` tracks:
|
||||
*
|
||||
* * Characters before and after something;
|
||||
* * What “constructs” we are in.
|
||||
*
|
||||
* This information is then used by this function to escape or encode
|
||||
* special characters.
|
||||
*
|
||||
* @param {State} state
|
||||
* Info passed around about the current state.
|
||||
* @param {string | null | undefined} input
|
||||
* Raw value to make safe.
|
||||
* @param {SafeConfig} config
|
||||
* Configuration.
|
||||
* @returns {string}
|
||||
* Serialized markdown safe for embedding.
|
||||
*/
|
||||
export function safe(state: State, input: string | null | undefined, config: SafeConfig): string;
|
||||
import type { State } from 'mdast-util-to-markdown';
|
||||
import type { SafeConfig } from 'mdast-util-to-markdown';
|
||||
//# sourceMappingURL=safe.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/safe.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/safe.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["safe.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,4BATW,KAAK,SAEL,MAAM,GAAG,IAAI,GAAG,SAAS,UAEzB,UAAU,GAER,MAAM,CAoGlB;2BAhImC,wBAAwB;gCAAxB,wBAAwB"}
|
174
node_modules/mdast-util-to-markdown/lib/util/safe.js
generated
vendored
Normal file
174
node_modules/mdast-util-to-markdown/lib/util/safe.js
generated
vendored
Normal file
@@ -0,0 +1,174 @@
|
||||
/**
|
||||
* @import {SafeConfig, State} from 'mdast-util-to-markdown'
|
||||
*/
|
||||
|
||||
import {encodeCharacterReference} from './encode-character-reference.js'
|
||||
import {patternInScope} from './pattern-in-scope.js'
|
||||
|
||||
/**
|
||||
* Make a string safe for embedding in markdown constructs.
|
||||
*
|
||||
* In markdown, almost all punctuation characters can, in certain cases,
|
||||
* result in something.
|
||||
* Whether they do is highly subjective to where they happen and in what
|
||||
* they happen.
|
||||
*
|
||||
* To solve this, `mdast-util-to-markdown` tracks:
|
||||
*
|
||||
* * Characters before and after something;
|
||||
* * What “constructs” we are in.
|
||||
*
|
||||
* This information is then used by this function to escape or encode
|
||||
* special characters.
|
||||
*
|
||||
* @param {State} state
|
||||
* Info passed around about the current state.
|
||||
* @param {string | null | undefined} input
|
||||
* Raw value to make safe.
|
||||
* @param {SafeConfig} config
|
||||
* Configuration.
|
||||
* @returns {string}
|
||||
* Serialized markdown safe for embedding.
|
||||
*/
|
||||
export function safe(state, input, config) {
|
||||
const value = (config.before || '') + (input || '') + (config.after || '')
|
||||
/** @type {Array<number>} */
|
||||
const positions = []
|
||||
/** @type {Array<string>} */
|
||||
const result = []
|
||||
/** @type {Record<number, {before: boolean, after: boolean}>} */
|
||||
const infos = {}
|
||||
let index = -1
|
||||
|
||||
while (++index < state.unsafe.length) {
|
||||
const pattern = state.unsafe[index]
|
||||
|
||||
if (!patternInScope(state.stack, pattern)) {
|
||||
continue
|
||||
}
|
||||
|
||||
const expression = state.compilePattern(pattern)
|
||||
/** @type {RegExpExecArray | null} */
|
||||
let match
|
||||
|
||||
while ((match = expression.exec(value))) {
|
||||
const before = 'before' in pattern || Boolean(pattern.atBreak)
|
||||
const after = 'after' in pattern
|
||||
const position = match.index + (before ? match[1].length : 0)
|
||||
|
||||
if (positions.includes(position)) {
|
||||
if (infos[position].before && !before) {
|
||||
infos[position].before = false
|
||||
}
|
||||
|
||||
if (infos[position].after && !after) {
|
||||
infos[position].after = false
|
||||
}
|
||||
} else {
|
||||
positions.push(position)
|
||||
infos[position] = {before, after}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
positions.sort(numerical)
|
||||
|
||||
let start = config.before ? config.before.length : 0
|
||||
const end = value.length - (config.after ? config.after.length : 0)
|
||||
index = -1
|
||||
|
||||
while (++index < positions.length) {
|
||||
const position = positions[index]
|
||||
|
||||
// Character before or after matched:
|
||||
if (position < start || position >= end) {
|
||||
continue
|
||||
}
|
||||
|
||||
// If this character is supposed to be escaped because it has a condition on
|
||||
// the next character, and the next character is definitly being escaped,
|
||||
// then skip this escape.
|
||||
if (
|
||||
(position + 1 < end &&
|
||||
positions[index + 1] === position + 1 &&
|
||||
infos[position].after &&
|
||||
!infos[position + 1].before &&
|
||||
!infos[position + 1].after) ||
|
||||
(positions[index - 1] === position - 1 &&
|
||||
infos[position].before &&
|
||||
!infos[position - 1].before &&
|
||||
!infos[position - 1].after)
|
||||
) {
|
||||
continue
|
||||
}
|
||||
|
||||
if (start !== position) {
|
||||
// If we have to use a character reference, an ampersand would be more
|
||||
// correct, but as backslashes only care about punctuation, either will
|
||||
// do the trick
|
||||
result.push(escapeBackslashes(value.slice(start, position), '\\'))
|
||||
}
|
||||
|
||||
start = position
|
||||
|
||||
if (
|
||||
/[!-/:-@[-`{-~]/.test(value.charAt(position)) &&
|
||||
(!config.encode || !config.encode.includes(value.charAt(position)))
|
||||
) {
|
||||
// Character escape.
|
||||
result.push('\\')
|
||||
} else {
|
||||
// Character reference.
|
||||
result.push(encodeCharacterReference(value.charCodeAt(position)))
|
||||
start++
|
||||
}
|
||||
}
|
||||
|
||||
result.push(escapeBackslashes(value.slice(start, end), config.after))
|
||||
|
||||
return result.join('')
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {number} a
|
||||
* @param {number} b
|
||||
* @returns {number}
|
||||
*/
|
||||
function numerical(a, b) {
|
||||
return a - b
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} value
|
||||
* @param {string} after
|
||||
* @returns {string}
|
||||
*/
|
||||
function escapeBackslashes(value, after) {
|
||||
const expression = /\\(?=[!-/:-@[-`{-~])/g
|
||||
/** @type {Array<number>} */
|
||||
const positions = []
|
||||
/** @type {Array<string>} */
|
||||
const results = []
|
||||
const whole = value + after
|
||||
let index = -1
|
||||
let start = 0
|
||||
/** @type {RegExpExecArray | null} */
|
||||
let match
|
||||
|
||||
while ((match = expression.exec(whole))) {
|
||||
positions.push(match.index)
|
||||
}
|
||||
|
||||
while (++index < positions.length) {
|
||||
if (start !== positions[index]) {
|
||||
results.push(value.slice(start, positions[index]))
|
||||
}
|
||||
|
||||
results.push('\\')
|
||||
start = positions[index]
|
||||
}
|
||||
|
||||
results.push(value.slice(start))
|
||||
|
||||
return results.join('')
|
||||
}
|
2
node_modules/mdast-util-to-markdown/lib/util/track.d.ts
generated
vendored
Normal file
2
node_modules/mdast-util-to-markdown/lib/util/track.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export function track(info: import("../types.js").TrackFields): import("../types.js").Tracker;
|
||||
//# sourceMappingURL=track.d.ts.map
|
1
node_modules/mdast-util-to-markdown/lib/util/track.d.ts.map
generated
vendored
Normal file
1
node_modules/mdast-util-to-markdown/lib/util/track.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["track.js"],"names":[],"mappings":""}
|
55
node_modules/mdast-util-to-markdown/lib/util/track.js
generated
vendored
Normal file
55
node_modules/mdast-util-to-markdown/lib/util/track.js
generated
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
/**
|
||||
* @import {CreateTracker, TrackCurrent, TrackMove, TrackShift} from '../types.js'
|
||||
*/
|
||||
|
||||
/**
|
||||
* Track positional info in the output.
|
||||
*
|
||||
* @type {CreateTracker}
|
||||
*/
|
||||
export function track(config) {
|
||||
// Defaults are used to prevent crashes when older utilities somehow activate
|
||||
// this code.
|
||||
/* c8 ignore next 5 */
|
||||
const options = config || {}
|
||||
const now = options.now || {}
|
||||
let lineShift = options.lineShift || 0
|
||||
let line = now.line || 1
|
||||
let column = now.column || 1
|
||||
|
||||
return {move, current, shift}
|
||||
|
||||
/**
|
||||
* Get the current tracked info.
|
||||
*
|
||||
* @type {TrackCurrent}
|
||||
*/
|
||||
function current() {
|
||||
return {now: {line, column}, lineShift}
|
||||
}
|
||||
|
||||
/**
|
||||
* Define an increased line shift (the typical indent for lines).
|
||||
*
|
||||
* @type {TrackShift}
|
||||
*/
|
||||
function shift(value) {
|
||||
lineShift += value
|
||||
}
|
||||
|
||||
/**
|
||||
* Move past some generated markdown.
|
||||
*
|
||||
* @type {TrackMove}
|
||||
*/
|
||||
function move(input) {
|
||||
// eslint-disable-next-line unicorn/prefer-default-parameters
|
||||
const value = input || ''
|
||||
const chunks = value.split(/\r?\n|\r/g)
|
||||
const tail = chunks[chunks.length - 1]
|
||||
line += chunks.length - 1
|
||||
column =
|
||||
chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift
|
||||
return value
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user