@diplodoc/cli 5.9.2 → 5.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/app-9912bc5fc2ea22c6.js +2 -0
- package/assets/search-c72f8c6ef62ff42a.js +2 -0
- package/assets/{vendor-0ca3ecbd78ee745e.js → vendor-bc3eb63ddaa9dd73.js} +2 -2
- package/build/core/utils/graph/index.d.ts +1 -0
- package/build/index.js +3 -3
- package/build/index.mjs +3 -3
- package/build/manifest.json +4 -4
- package/lib/utils/graph/index.d.ts +1 -0
- package/lib/utils/index.js +3 -0
- package/lib/utils/index.js.map +2 -2
- package/lib/utils/index.mjs +3 -0
- package/lib/utils/index.mjs.map +2 -2
- package/package.json +2 -2
- package/assets/app-5320a31c05d20641.js +0 -2
- package/assets/search-81a7f828ef481c84.js +0 -2
|
@@ -20,6 +20,7 @@ export declare class Graph<Data = {
|
|
|
20
20
|
static deserialize(message: SerializedGraph): Graph<{
|
|
21
21
|
type: string;
|
|
22
22
|
}>;
|
|
23
|
+
constructor();
|
|
23
24
|
/**
|
|
24
25
|
* Extracts a subgraph related to the specified node
|
|
25
26
|
* @param nodeName - name of the node for which to extract the subgraph
|
package/build/index.js
CHANGED
|
@@ -353872,7 +353872,7 @@ var import_config68 = require("@diplodoc/cli/lib/config");
|
|
|
353872
353872
|
|
|
353873
353873
|
// src/constants.ts
|
|
353874
353874
|
var import_node_path2 = require("node:path");
|
|
353875
|
-
var VERSION = "5.9.
|
|
353875
|
+
var VERSION = "5.9.4" ? "5.9.4" : "0.0.0";
|
|
353876
353876
|
var MAIN_TIMER_ID = "Build time";
|
|
353877
353877
|
var ASSETS_FOLDER = (0, import_node_path2.resolve)(__dirname, "../assets");
|
|
353878
353878
|
var BUNDLE_FOLDER = "_bundle";
|
|
@@ -367957,8 +367957,8 @@ var run = async (argv2) => {
|
|
|
367957
367957
|
if (import_node_worker_threads4.isMainThread && require.main === module) {
|
|
367958
367958
|
(async () => {
|
|
367959
367959
|
import_utils88.console.time(MAIN_TIMER_ID);
|
|
367960
|
-
if ("5.9.
|
|
367961
|
-
import_utils88.console.log(`Using v${"5.9.
|
|
367960
|
+
if ("5.9.4") {
|
|
367961
|
+
import_utils88.console.log(`Using v${"5.9.4"} version`);
|
|
367962
367962
|
}
|
|
367963
367963
|
const report = await run(process.argv);
|
|
367964
367964
|
import_utils88.console.timeEnd(MAIN_TIMER_ID);
|
package/build/index.mjs
CHANGED
|
@@ -353860,7 +353860,7 @@ import { Command as Command8 } from "@diplodoc/cli/lib/config";
|
|
|
353860
353860
|
|
|
353861
353861
|
// src/constants.ts
|
|
353862
353862
|
import { resolve as resolve2 } from "node:path";
|
|
353863
|
-
var VERSION = "5.9.
|
|
353863
|
+
var VERSION = "5.9.4" ? "5.9.4" : "0.0.0";
|
|
353864
353864
|
var MAIN_TIMER_ID = "Build time";
|
|
353865
353865
|
var ASSETS_FOLDER = resolve2(__dirname, "../assets");
|
|
353866
353866
|
var BUNDLE_FOLDER = "_bundle";
|
|
@@ -367970,8 +367970,8 @@ var run = async (argv2) => {
|
|
|
367970
367970
|
if (isMainThread4 && __require.main === module) {
|
|
367971
367971
|
(async () => {
|
|
367972
367972
|
console5.time(MAIN_TIMER_ID);
|
|
367973
|
-
if ("5.9.
|
|
367974
|
-
console5.log(`Using v${"5.9.
|
|
367973
|
+
if ("5.9.4") {
|
|
367974
|
+
console5.log(`Using v${"5.9.4"} version`);
|
|
367975
367975
|
}
|
|
367976
367976
|
const report = await run(process.argv);
|
|
367977
367977
|
console5.timeEnd(MAIN_TIMER_ID);
|
package/build/manifest.json
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"444-eff261d7ea9f84b4.js"
|
|
6
6
|
],
|
|
7
7
|
"js": [
|
|
8
|
-
"search-
|
|
9
|
-
"vendor-
|
|
8
|
+
"search-c72f8c6ef62ff42a.js",
|
|
9
|
+
"vendor-bc3eb63ddaa9dd73.js",
|
|
10
10
|
"react-23c48c44d4a3ad02.js"
|
|
11
11
|
],
|
|
12
12
|
"css": [
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"444-eff261d7ea9f84b4.js"
|
|
24
24
|
],
|
|
25
25
|
"js": [
|
|
26
|
-
"vendor-
|
|
26
|
+
"vendor-bc3eb63ddaa9dd73.js",
|
|
27
27
|
"react-23c48c44d4a3ad02.js",
|
|
28
|
-
"app-
|
|
28
|
+
"app-9912bc5fc2ea22c6.js"
|
|
29
29
|
],
|
|
30
30
|
"css": [
|
|
31
31
|
"vendor-5c42c2d82fe19c6e.css",
|
|
@@ -20,6 +20,7 @@ export declare class Graph<Data = {
|
|
|
20
20
|
static deserialize(message: SerializedGraph): Graph<{
|
|
21
21
|
type: string;
|
|
22
22
|
}>;
|
|
23
|
+
constructor();
|
|
23
24
|
/**
|
|
24
25
|
* Extracts a subgraph related to the specified node
|
|
25
26
|
* @param nodeName - name of the node for which to extract the subgraph
|
package/lib/utils/index.js
CHANGED
|
@@ -537,6 +537,9 @@ var Graph = class _Graph extends import_dependency_graph.DepGraph {
|
|
|
537
537
|
static deserialize(message) {
|
|
538
538
|
return new _Graph().consume(message);
|
|
539
539
|
}
|
|
540
|
+
constructor() {
|
|
541
|
+
super({ circular: true });
|
|
542
|
+
}
|
|
540
543
|
/**
|
|
541
544
|
* Extracts a subgraph related to the specified node
|
|
542
545
|
* @param nodeName - name of the node for which to extract the subgraph
|
package/lib/utils/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/core/utils/index.ts", "../../src/core/utils/common.ts", "../../src/core/utils/decorators.ts", "../../src/core/utils/console.ts", "../../src/core/utils/extension.ts", "../../src/core/utils/path.ts", "../../src/core/utils/string.ts", "../../src/core/utils/url.ts", "../../src/core/utils/markdown.ts", "../../src/core/utils/file.ts", "../../src/core/utils/graph/index.ts", "../../src/core/utils/json/index.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './common';\nexport * from './console';\nexport * from './decorators';\nexport * from './extension';\nexport * from './path';\nexport * from './string';\nexport * from './url';\nexport * from './markdown';\nexport * from './file';\nexport * from './graph';\nexport * from './json';\n", "import {isObject} from 'lodash';\nimport {bounded} from './decorators';\n\nexport const all = Promise.all.bind(Promise);\n\nexport const race = Promise.race.bind(Promise);\n\nexport function get<K extends string>(key: K) {\n return function <T extends Record<K, any>>(\n object: T,\n ): T extends Record<K, infer V> ? V : never {\n return object[key];\n };\n}\n\nexport function zip<T = unknown>(keys: string[], values: T[]) {\n return keys.reduce((acc, key, index) => {\n acc[key] = values[index];\n return acc;\n }, {} as Hash<T>);\n}\n\nexport function own<V = unknown, T extends string = string>(\n box: unknown,\n field: T,\n): box is Record<T, V> {\n return (\n Boolean(box && typeof box === 'object') && Object.prototype.hasOwnProperty.call(box, field)\n );\n}\n\nexport function copyJson<T extends object>(\n json: T | undefined,\n): T extends DeepFrozen<infer R> ? R : T | undefined {\n // @ts-ignore\n return json ? JSON.parse(JSON.stringify(json)) : json;\n}\n\nexport function freezeJson<T>(target: T, visited = new Set()): T {\n if (!visited.has(target)) {\n visited.add(target);\n\n if (Array.isArray(target)) {\n target.forEach((item) => freezeJson(item, visited));\n }\n\n if (isObject(target) && !Object.isSealed(target)) {\n Object.freeze(target);\n Object.keys(target).forEach((key) =>\n freezeJson(target[key as keyof typeof target], visited),\n );\n }\n }\n\n return target;\n}\n\nexport function errorMessage(error: unknown): string {\n if (typeof error === 'string') {\n return error;\n }\n\n if (own<string, 'message'>(error, 'message')) {\n return error.message;\n }\n\n return String(error);\n}\n\nexport function fallbackLang(lang: string) {\n if (['kz', 'ua', 'be', 'ru'].includes(lang)) {\n return 'ru';\n }\n\n return 'en';\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class Defer<T = any> {\n promise: Promise<T>;\n\n resolve!: (result: T) => void;\n\n reject!: (error: unknown) => void;\n\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n\nexport function wait(delay: number, action = () => {}) {\n return new Promise((resolve) => {\n setTimeout(resolve, delay);\n }).then(action);\n}\n\nexport type Bucket<T> = {\n get(): T;\n set(value: T): void;\n};\n\nexport function bucket<T>() {\n let _value: T;\n\n return {\n get: () => _value,\n set: (value: T) => {\n _value = value;\n },\n };\n}\n\nexport class Buckets<T> {\n private scope: Map<string, T> = new Map();\n\n @bounded\n bind(key: string) {\n return {\n get: () => this.get(key),\n set: (value: T) => this.set(key, value),\n };\n }\n\n @bounded\n set(key: string, value: T) {\n this.scope.set(key, value);\n }\n\n @bounded\n get(key: string): T {\n return this.scope.get(key) as T;\n }\n\n @bounded\n delete(key: string) {\n this.scope.delete(key);\n }\n}\n", "export function bounded(_originalMethod: unknown, context: ClassMethodDecoratorContext) {\n const methodName = context.name;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context.addInitializer(function (this: any) {\n this[methodName] = this[methodName].bind(this);\n });\n}\n\nconst Release = Symbol('Cache');\n\ntype DecoratedMethod = Function & {\n [Release](args: unknown[]): void;\n};\n\nexport function memoize(...props: string[] | [Function]) {\n return function (_originalMethod: unknown, context: ClassMethodDecoratorContext) {\n const methodName = context.name;\n const hash =\n typeof props[0] === 'function'\n ? props[0]\n : function (...args: unknown[]) {\n const mem = args.slice(0, props.length);\n if (!mem.every(isPrimitive)) {\n return null;\n }\n\n return props.map((prop, index) => `${prop}=${mem[index]}`).join('&');\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context.addInitializer(function (this: any) {\n const cache = new Map();\n const method = this[methodName];\n\n this[methodName] = function (this: unknown, ...args: unknown[]) {\n const key = hash.call(this, ...args);\n\n if (key === null) {\n return method.call(this, ...args);\n }\n\n if (!cache.has(key)) {\n cache.set(key, method.call(this, ...args));\n }\n\n return cache.get(key);\n };\n this[methodName][Release] = (args: unknown[]) => {\n const key = hash.call(this, ...args);\n\n cache.delete(key);\n };\n });\n };\n}\n\nmemoize.release = (method: Function, ...args: unknown[]) => {\n if (Release in method) {\n (method as DecoratedMethod)[Release](args);\n }\n};\n\nconst PRIMITIVE_TYPES = ['string', 'number', 'symbol', 'boolean', 'undefined'];\n\nfunction isPrimitive(value: unknown) {\n return !value || PRIMITIVE_TYPES.includes(typeof value);\n}\n", "/* eslint-disable no-console */\n\nclass MutableConsole {\n log(...args: unknown[]) {\n this.write('log', args);\n }\n\n warn(...args: unknown[]) {\n console.warn(...args);\n }\n\n error(...args: unknown[]) {\n console.error(...args);\n }\n\n time(label: string) {\n if (process.env.NODE_ENV !== 'test') {\n console.time(label);\n }\n }\n\n timeEnd(label: string) {\n if (process.env.NODE_ENV !== 'test') {\n console.timeEnd(label);\n }\n }\n\n private write(level: 'log' | 'error' | 'warn', args: unknown[]) {\n if (process.env.NODE_ENV !== 'test') {\n console[level](...args);\n }\n }\n}\n\nconst _console = new MutableConsole();\n\nexport {_console as console};\n", "import type {Hook, HookMap} from 'tapable';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Hooks = Hash<Hook<any, any> | HookMap<any>>;\n\nexport function generateHooksAccess<THooks extends Hooks>(\n name: string,\n hooks: (name: string) => THooks,\n) {\n const Hooks = Symbol(`${name}Hooks`);\n\n function getHooks(program: object | undefined): THooks {\n return (program && (program as {[Hooks]: THooks})[Hooks]) || hooks('Unknown');\n }\n\n function withHooks<T extends ClassType>(Target: T, {kind}: ClassDecoratorContext): T {\n if (kind !== 'class') {\n throw new TypeError(`Decorator 'withHooks' is not applicable to '${kind}'.`);\n }\n\n return class extends Target {\n [Hooks] = intercept(this.name, hooks(this.name || name));\n };\n }\n\n return [getHooks, withHooks, Hooks] as const;\n}\n\nexport type HookMeta = {\n service: string;\n hook: string;\n name: string;\n type: string;\n};\n\nexport function intercept<T extends Hooks>(service: string, hooks: T): T {\n for (const [hook, handler] of Object.entries(hooks)) {\n handler.intercept({\n register: (info) => {\n const {type, name, fn} = info;\n const meta = {service, hook, name, type};\n\n if (type === 'promise') {\n info.fn = async (...args: unknown[]) => {\n try {\n return await fn(...args);\n } catch (error) {\n if (error instanceof Error) {\n Object.assign(error, {hook: meta});\n }\n\n throw error;\n }\n };\n } else if (type === 'sync') {\n info.fn = (...args: unknown[]) => {\n try {\n return fn(...args);\n } catch (error) {\n if (error instanceof Error) {\n Object.assign(error, {hook: meta});\n }\n\n throw error;\n }\n };\n } else {\n throw new TypeError('Unexpected hook tap type - ' + type);\n }\n\n return info;\n },\n });\n }\n\n return hooks;\n}\n", "import {dirname, extname, isAbsolute, join, normalize} from 'node:path';\nimport _normalizePath from 'normalize-path';\n\nimport {isExternalHref} from '~/core/utils';\n\nexport function normalizePath(path: string): NormalizedPath {\n return _normalizePath(normalize(_normalizePath(path, false)), false);\n}\n\nexport function isRelativePath(path: string): path is RelativePath {\n return !isExternalHref(path) && !isAbsolute(path);\n}\n\nexport function langFromPath(path: string, config: {lang?: string; langs: string[]}) {\n const {lang, langs} = config;\n const pathBaseLang = normalizePath(path).split('/')[0];\n const pathLang = langs.includes(pathBaseLang) && pathBaseLang;\n\n return pathLang || lang || langs[0];\n}\n\nexport function rebasePath(root: RelativePath, path: RelativePath) {\n return normalizePath(join(dirname(root), path));\n}\n\nexport function fullPath(\n path: AbsolutePath | NormalizedPath,\n root: NormalizedPath,\n): NormalizedPath {\n if (path.match(/^(\\/|\\\\)/)) {\n return normalizePath(path.slice(1));\n } else {\n return normalizePath(join(dirname(root), path));\n }\n}\n\nexport function getDepth(path: string) {\n return path\n .replace(/\\\\/g, '/')\n .replace(/^\\.\\/|\\/$/g, '')\n .split('/').length;\n}\n\nexport function getDepthPath(depth: number) {\n return Array(depth).fill('../').join('') || './';\n}\n\nexport function setExt<T extends AnyPath>(path: T, newext: string): T {\n newext = newext.startsWith('.') ? newext.slice(1) : newext;\n\n return (path.slice(0, -extname(path).length) + (newext ? '.' + newext : '')) as T;\n}\n", "export function replaceAll(string: string, match: string, replace: string) {\n if (!string) {\n return string;\n }\n\n const matches = [];\n\n let index = -1;\n while ((index = string.indexOf(match, index + 1)) > -1) {\n matches.push([index, index + match.length]);\n }\n\n return matches.reduceRight((string, match) => {\n return string.slice(0, match[0]) + replace + string.slice(match[1]);\n }, string);\n}\n", "import type {UrlWithStringQuery} from 'node:url';\n\nimport {parse} from 'node:url';\nimport {pick} from 'lodash';\n\nimport {normalizePath} from './path';\n\nexport function isExternalHref(href: string) {\n return /^(\\w{1,10}:)?\\/\\//.test(href) || /^([+\\w]{1,10}:)/.test(href);\n}\n\nexport function prettifyLink(href: string): string {\n if (isExternalHref(href)) {\n return href;\n }\n\n const [pathWithoutHash, hash] = href.split('#', 2);\n const [path, query] = pathWithoutHash.split('?', 2);\n\n let result = path\n .replace(/\\\\/g, '/')\n .replace(/\\/index\\.html$/, '/')\n .replace(/\\/index$/, '/')\n .replace(/^index\\.html$/, '.')\n .replace(/^index$/, '.')\n .replace(/\\.html$/, '');\n\n if (result === '' || result === './') {\n result = '.';\n }\n\n if (query) result += '?' + query;\n if (hash) result += '#' + hash;\n\n return result;\n}\n\nconst MEDIA_FORMATS = /\\.(svg|png|gif|jpe?g|bmp|webp|ico)$/i;\n\n// TODO: should we deprecate this?\nconst DOC_FORMATS = /\\.(txt|pdf|docx|xlsx|vsd)$/i;\n\nexport function isMediaLink(link: string) {\n return MEDIA_FORMATS.test(link) || DOC_FORMATS.test(link);\n}\n\ntype LocalUrlInfo = Pick<UrlWithStringQuery, 'hash' | 'search'> & {\n path: NormalizedPath;\n};\n\nconst UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~])/g;\n\nfunction unescapeAll(str: string) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_MD_RE, (_match: string, escaped: string) => escaped);\n}\n\nexport function parseLocalUrl<T = LocalUrlInfo>(url: string | undefined) {\n if (!url || isExternalHref(url) || url.startsWith('/')) {\n return null;\n }\n\n try {\n const parsed = parse(unescapeAll(url));\n\n if (parsed.host || parsed.protocol) {\n return null;\n }\n\n if (parsed.path) {\n parsed.path = normalizePath(parsed.path);\n }\n\n return pick(parsed, ['path', 'search', 'hash']) as T;\n } catch {\n return null;\n }\n}\n", "import type Token from 'markdown-it/lib/token';\n\ntype TokenWalker = (\n token: Token,\n state: {commented: boolean; index: number},\n) => void | undefined | {skip: number};\n\nexport function filterTokens(tokens: Token[], type: string, handler: TokenWalker) {\n let commented = false;\n\n if (!tokens || !tokens.length) {\n return;\n }\n\n for (let index = 0; index < tokens.length; index++) {\n const token = tokens[index];\n\n if (token.type === 'html_block') {\n const commentStart = token.content.match('<!--');\n const commentEnd = token.content.match('-->');\n\n if (commentStart && !commentEnd) {\n commented = true;\n }\n\n if (!commentStart && commentEnd) {\n commented = false;\n }\n }\n\n if (token.type === type) {\n const result = handler(token, {commented, index});\n if (result?.skip) {\n index += result?.skip - 1;\n }\n }\n }\n}\n", "import {normalizePath} from './path';\nimport {copyJson} from './common';\n\ntype Formatter<T, O> = (data: T) => O;\n\nconst toString = <T>(data: T) => {\n if (typeof data === 'string') {\n return data;\n }\n\n return JSON.stringify(data);\n};\n\nexport class VFile<T extends string | object = string | object, Info extends Hash = {}> {\n get path(): NormalizedPath {\n return this._path;\n }\n\n set path(value: RelativePath) {\n this._path = normalizePath(value);\n }\n\n get data() {\n return this._data;\n }\n\n set data(value: T) {\n this._data = value;\n }\n\n get info() {\n return this._info;\n }\n\n set info(value: Info) {\n this._info = value;\n }\n\n private _path: NormalizedPath;\n\n private _data: T;\n\n private _info: Info = {} as Info;\n\n private _format: Formatter<T, string>;\n\n constructor(path: RelativePath, data: T, formatter: Formatter<T, string> = toString) {\n this._path = normalizePath(path);\n this._data = data;\n this._format = formatter;\n }\n\n copy(path?: RelativePath) {\n const data = typeof this._data === 'string' ? this._data : copyJson(this._data);\n return new VFile<T>(path || this._path, data as T, this._format);\n }\n\n format(formatter: Formatter<T, string>) {\n this._format = formatter;\n }\n\n toString() {\n return this._format(this._data);\n }\n}\n", "import {DepGraph} from 'dependency-graph';\n\nexport type SerializedGraph<Data = {type: string}> = {\n nodes: Array<{\n name: string;\n data?: Data;\n }>;\n dependencies: Array<{\n from: string;\n to: string;\n }>;\n};\n\nexport class Graph<Data = {type: string}> extends DepGraph<Data> {\n static is<Data = {type: string}>(data: unknown): data is SerializedGraph<Data> {\n return Boolean(\n data instanceof Graph ||\n (data && typeof data === 'object' && '__type' in data && data.__type === '$$Graph'),\n );\n }\n\n static deserialize(message: SerializedGraph) {\n return new Graph().consume(message);\n }\n\n /**\n * Extracts a subgraph related to the specified node\n * @param nodeName - name of the node for which to extract the subgraph\n * @returns new Graph instance with the extracted subgraph\n */\n extract(nodeName: string): Graph<Data> {\n const extractedGraph = new Graph<Data>();\n\n if (!this.hasNode(nodeName)) {\n return extractedGraph;\n }\n\n // Recursively copy dependencies (nodes that the initial node depends on)\n this.copyDependenciesRecursively(nodeName, extractedGraph, new Set());\n\n // Recursively copy dependent nodes (nodes that depend on the initial node)\n this.copyDependentsRecursively(nodeName, extractedGraph, new Set());\n\n return extractedGraph;\n }\n\n /**\n * Consumes a serialized graph\n */\n consume(graph: Graph<any> | SerializedGraph<Data> | undefined): this {\n if (!graph) {\n return this;\n }\n\n if (graph instanceof Graph) {\n graph = graph.serialize();\n }\n\n // First add all nodes\n for (const node of graph.nodes) {\n this.addNode(node.name);\n if (node.data) {\n this.setNodeData(node.name, node.data);\n }\n }\n\n // Then add all dependencies\n for (const dep of graph.dependencies) {\n this.addDependency(dep.from, dep.to);\n }\n\n return this;\n }\n\n /**\n * Removes node from graph\n * If node dependencies has no other dependants, they will be removed too\n * @param nodeName - node name to remove\n */\n release(nodeName: string): this {\n if (!this.hasNode(nodeName)) {\n return this;\n }\n\n // Get direct parents before removing the node\n const directParents = this.directDependenciesOf(nodeName);\n\n // Remove all incoming dependencies (parents -> node)\n for (const parent of directParents) {\n this.removeDependency(nodeName, parent);\n }\n\n // Remove all outgoing dependencies (node -> children)\n const directDependents = this.directDependentsOf(nodeName);\n for (const dependent of directDependents) {\n this.removeDependency(dependent, nodeName);\n }\n\n // Remove the node itself\n this.removeNode(nodeName);\n\n // Recursively remove parents that have no children left\n for (const parent of directParents) {\n if (this.hasNode(parent) && this.directDependentsOf(parent).length === 0) {\n this.release(parent);\n }\n }\n\n return this;\n }\n\n /**\n * Serializes the graph to a format for transfer between threads\n * @returns serialized representation of the graph\n */\n serialize(): SerializedGraph<Data> {\n const nodes: SerializedGraph<Data>['nodes'] = [];\n const dependencies: SerializedGraph['dependencies'] = [];\n\n // Get all nodes in the graph\n const allNodes = this.overallOrder();\n\n for (const nodeName of allNodes) {\n const nodeData = this.getNodeData(nodeName);\n nodes.push({\n name: nodeName,\n data: nodeData,\n });\n }\n\n // Get all dependencies\n for (const nodeName of allNodes) {\n const directDeps = this.directDependenciesOf(nodeName);\n for (const dep of directDeps) {\n dependencies.push({\n from: nodeName,\n to: dep,\n });\n }\n }\n\n nodes.sort((a, b) => (a.name > b.name ? 1 : -1));\n dependencies.sort((a, b) => {\n if (a.from === b.from) {\n return a.to > b.to ? 1 : -1;\n }\n return a.from > b.from ? 1 : -1;\n });\n\n return {nodes, dependencies, __type: '$$Graph'} as SerializedGraph<Data>;\n }\n\n /**\n * Recursively copies node dependencies\n */\n private copyDependenciesRecursively(\n nodeName: string,\n targetGraph: Graph<Data>,\n processed: Set<string>,\n ): void {\n if (processed.has(nodeName)) {\n return;\n }\n\n processed.add(nodeName);\n\n // Add node to target graph\n if (!targetGraph.hasNode(nodeName)) {\n targetGraph.addNode(nodeName);\n const nodeData = this.getNodeData(nodeName);\n if (nodeData) {\n targetGraph.setNodeData(nodeName, nodeData);\n }\n }\n\n // Recursively process only direct dependencies\n const dependencies = this.directDependenciesOf(nodeName);\n for (const dep of dependencies) {\n this.copyDependenciesRecursively(dep, targetGraph, processed);\n targetGraph.addDependency(nodeName, dep);\n }\n }\n\n /**\n * Recursively copies dependent nodes\n */\n private copyDependentsRecursively(\n nodeName: string,\n targetGraph: Graph<Data>,\n processed: Set<string>,\n ): void {\n if (processed.has(nodeName)) {\n return;\n }\n\n processed.add(nodeName);\n\n // Add node to target graph\n if (!targetGraph.hasNode(nodeName)) {\n targetGraph.addNode(nodeName);\n const nodeData = this.getNodeData(nodeName);\n if (nodeData) {\n targetGraph.setNodeData(nodeName, nodeData);\n }\n }\n\n // Recursively process only direct dependent nodes\n const dependents = this.directDependentsOf(nodeName);\n for (const dep of dependents) {\n this.copyDependentsRecursively(dep, targetGraph, processed);\n targetGraph.addDependency(dep, nodeName);\n }\n }\n}\n", "export type JsonDiff = {\n added: string[];\n changed: string[];\n removed: string[];\n};\n\n/**\n * \u0421\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 JSON \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0440\u0435\u043A\u0443\u0440\u0441\u0438\u0432\u043D\u043E \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u044F\n * @param oldObj - \u0441\u0442\u0430\u0440\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @param newObj - \u043D\u043E\u0432\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @returns \u041E\u0431\u044A\u0435\u043A\u0442 \u0441 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\u043C\u0438 \u043F\u0443\u0442\u0435\u0439 \u043A \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u043C, \u0438\u0437\u043C\u0435\u043D\u0451\u043D\u043D\u044B\u043C \u0438 \u0443\u0434\u0430\u043B\u0451\u043D\u043D\u044B\u043C \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430\u043C\n */\nexport function compareJson(oldObj: object, newObj: object): JsonDiff {\n const added: string[] = [];\n const changed: string[] = [];\n const removed: string[] = [];\n\n compareObjects(oldObj, newObj, '', added, changed, removed);\n\n return {\n added: added.sort(),\n changed: changed.sort(),\n removed: removed.sort(),\n };\n}\n\n/**\n * \u0420\u0435\u043A\u0443\u0440\u0441\u0438\u0432\u043D\u043E \u0441\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0438 \u0437\u0430\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u043C\u0430\u0441\u0441\u0438\u0432\u044B \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0439\n * @param oldObj - \u0441\u0442\u0430\u0440\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @param newObj - \u043D\u043E\u0432\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @param path - \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u043F\u0443\u0442\u044C \u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u0435\n * @param added - \u043C\u0430\u0441\u0441\u0438\u0432 \u0434\u043B\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0445 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\n * @param changed - \u043C\u0430\u0441\u0441\u0438\u0432 \u0434\u043B\u044F \u0438\u0437\u043C\u0435\u043D\u0451\u043D\u043D\u044B\u0445 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\n * @param removed - \u043C\u0430\u0441\u0441\u0438\u0432 \u0434\u043B\u044F \u0443\u0434\u0430\u043B\u0451\u043D\u043D\u044B\u0445 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\n */\nfunction compareObjects(\n oldObj: unknown,\n newObj: unknown,\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n): void {\n if (isNullable(oldObj) && isNullable(newObj)) {\n return;\n }\n\n compareEntity(oldObj, newObj, path, added, changed, removed);\n}\n\nfunction addAllPaths(obj: unknown, path: string, arr: string[]): void {\n if (path) {\n arr.push(path);\n }\n\n if (typeof obj !== 'object' || obj === null) {\n return;\n }\n\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n const currentPath = path ? `${path}[${i}]` : `[${i}]`;\n addAllPaths(obj[i], currentPath, arr);\n }\n return;\n }\n\n for (const key of Object.keys(obj)) {\n const currentPath = path ? `${path}.${key}` : key;\n addAllPaths((obj as Hash)[key], currentPath, arr);\n }\n}\n\n/**\n * \u0421\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n */\nfunction compareArrays(\n oldArr: unknown[],\n newArr: unknown[],\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n): void {\n const maxLength = Math.max(oldArr.length, newArr.length);\n\n for (let i = 0; i < maxLength; i++) {\n const currentPath = path ? `${path}[${i}]` : `[${i}]`;\n const oldItem = oldArr[i];\n const newItem = newArr[i];\n\n if (i >= oldArr.length) {\n added.push(currentPath);\n } else if (i >= newArr.length) {\n removed.push(currentPath);\n } else {\n compareObjects(oldItem, newItem, currentPath, added, changed, removed);\n }\n }\n}\n\n/**\n * \u0421\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u0434\u0432\u0443\u0445 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432\n */\nfunction compareObjectProperties(\n oldObj: Hash,\n newObj: Hash,\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n): void {\n const allKeys = new Set([...Object.keys(oldObj), ...Object.keys(newObj)]);\n\n for (const key of allKeys) {\n const currentPath = path ? `${path}.${key}` : key;\n const oldValue = oldObj[key];\n const newValue = newObj[key];\n\n if (!(key in oldObj)) {\n addAllPaths(newValue, currentPath, added);\n } else if (!(key in newObj)) {\n addAllPaths(oldValue, currentPath, removed);\n } else {\n compareEntity(oldValue, newValue, currentPath, added, changed, removed);\n }\n }\n}\n\nfunction compareEntity(\n oldValue: unknown,\n newValue: unknown,\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n) {\n if (\n (isNullable(oldValue) || isNullable(newValue)) &&\n !(isNullable(oldValue) && isNullable(newValue))\n ) {\n changed.push(path);\n } else if (typeof oldValue !== typeof newValue) {\n changed.push(path);\n } else if (typeof oldValue !== 'object' || typeof newValue !== 'object') {\n if (oldValue !== newValue) {\n changed.push(path);\n }\n } else if (Array.isArray(oldValue) && Array.isArray(newValue)) {\n compareArrays(oldValue, newValue, path, added, changed, removed);\n } else if (!Array.isArray(oldValue) && !Array.isArray(newValue)) {\n compareObjectProperties(oldValue as Hash, newValue as Hash, path, added, changed, removed);\n } else {\n changed.push(path);\n }\n}\n\nfunction isNullable(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["export * from './common';\nexport * from './console';\nexport * from './decorators';\nexport * from './extension';\nexport * from './path';\nexport * from './string';\nexport * from './url';\nexport * from './markdown';\nexport * from './file';\nexport * from './graph';\nexport * from './json';\n", "import {isObject} from 'lodash';\nimport {bounded} from './decorators';\n\nexport const all = Promise.all.bind(Promise);\n\nexport const race = Promise.race.bind(Promise);\n\nexport function get<K extends string>(key: K) {\n return function <T extends Record<K, any>>(\n object: T,\n ): T extends Record<K, infer V> ? V : never {\n return object[key];\n };\n}\n\nexport function zip<T = unknown>(keys: string[], values: T[]) {\n return keys.reduce((acc, key, index) => {\n acc[key] = values[index];\n return acc;\n }, {} as Hash<T>);\n}\n\nexport function own<V = unknown, T extends string = string>(\n box: unknown,\n field: T,\n): box is Record<T, V> {\n return (\n Boolean(box && typeof box === 'object') && Object.prototype.hasOwnProperty.call(box, field)\n );\n}\n\nexport function copyJson<T extends object>(\n json: T | undefined,\n): T extends DeepFrozen<infer R> ? R : T | undefined {\n // @ts-ignore\n return json ? JSON.parse(JSON.stringify(json)) : json;\n}\n\nexport function freezeJson<T>(target: T, visited = new Set()): T {\n if (!visited.has(target)) {\n visited.add(target);\n\n if (Array.isArray(target)) {\n target.forEach((item) => freezeJson(item, visited));\n }\n\n if (isObject(target) && !Object.isSealed(target)) {\n Object.freeze(target);\n Object.keys(target).forEach((key) =>\n freezeJson(target[key as keyof typeof target], visited),\n );\n }\n }\n\n return target;\n}\n\nexport function errorMessage(error: unknown): string {\n if (typeof error === 'string') {\n return error;\n }\n\n if (own<string, 'message'>(error, 'message')) {\n return error.message;\n }\n\n return String(error);\n}\n\nexport function fallbackLang(lang: string) {\n if (['kz', 'ua', 'be', 'ru'].includes(lang)) {\n return 'ru';\n }\n\n return 'en';\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class Defer<T = any> {\n promise: Promise<T>;\n\n resolve!: (result: T) => void;\n\n reject!: (error: unknown) => void;\n\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n\nexport function wait(delay: number, action = () => {}) {\n return new Promise((resolve) => {\n setTimeout(resolve, delay);\n }).then(action);\n}\n\nexport type Bucket<T> = {\n get(): T;\n set(value: T): void;\n};\n\nexport function bucket<T>() {\n let _value: T;\n\n return {\n get: () => _value,\n set: (value: T) => {\n _value = value;\n },\n };\n}\n\nexport class Buckets<T> {\n private scope: Map<string, T> = new Map();\n\n @bounded\n bind(key: string) {\n return {\n get: () => this.get(key),\n set: (value: T) => this.set(key, value),\n };\n }\n\n @bounded\n set(key: string, value: T) {\n this.scope.set(key, value);\n }\n\n @bounded\n get(key: string): T {\n return this.scope.get(key) as T;\n }\n\n @bounded\n delete(key: string) {\n this.scope.delete(key);\n }\n}\n", "export function bounded(_originalMethod: unknown, context: ClassMethodDecoratorContext) {\n const methodName = context.name;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context.addInitializer(function (this: any) {\n this[methodName] = this[methodName].bind(this);\n });\n}\n\nconst Release = Symbol('Cache');\n\ntype DecoratedMethod = Function & {\n [Release](args: unknown[]): void;\n};\n\nexport function memoize(...props: string[] | [Function]) {\n return function (_originalMethod: unknown, context: ClassMethodDecoratorContext) {\n const methodName = context.name;\n const hash =\n typeof props[0] === 'function'\n ? props[0]\n : function (...args: unknown[]) {\n const mem = args.slice(0, props.length);\n if (!mem.every(isPrimitive)) {\n return null;\n }\n\n return props.map((prop, index) => `${prop}=${mem[index]}`).join('&');\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context.addInitializer(function (this: any) {\n const cache = new Map();\n const method = this[methodName];\n\n this[methodName] = function (this: unknown, ...args: unknown[]) {\n const key = hash.call(this, ...args);\n\n if (key === null) {\n return method.call(this, ...args);\n }\n\n if (!cache.has(key)) {\n cache.set(key, method.call(this, ...args));\n }\n\n return cache.get(key);\n };\n this[methodName][Release] = (args: unknown[]) => {\n const key = hash.call(this, ...args);\n\n cache.delete(key);\n };\n });\n };\n}\n\nmemoize.release = (method: Function, ...args: unknown[]) => {\n if (Release in method) {\n (method as DecoratedMethod)[Release](args);\n }\n};\n\nconst PRIMITIVE_TYPES = ['string', 'number', 'symbol', 'boolean', 'undefined'];\n\nfunction isPrimitive(value: unknown) {\n return !value || PRIMITIVE_TYPES.includes(typeof value);\n}\n", "/* eslint-disable no-console */\n\nclass MutableConsole {\n log(...args: unknown[]) {\n this.write('log', args);\n }\n\n warn(...args: unknown[]) {\n console.warn(...args);\n }\n\n error(...args: unknown[]) {\n console.error(...args);\n }\n\n time(label: string) {\n if (process.env.NODE_ENV !== 'test') {\n console.time(label);\n }\n }\n\n timeEnd(label: string) {\n if (process.env.NODE_ENV !== 'test') {\n console.timeEnd(label);\n }\n }\n\n private write(level: 'log' | 'error' | 'warn', args: unknown[]) {\n if (process.env.NODE_ENV !== 'test') {\n console[level](...args);\n }\n }\n}\n\nconst _console = new MutableConsole();\n\nexport {_console as console};\n", "import type {Hook, HookMap} from 'tapable';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Hooks = Hash<Hook<any, any> | HookMap<any>>;\n\nexport function generateHooksAccess<THooks extends Hooks>(\n name: string,\n hooks: (name: string) => THooks,\n) {\n const Hooks = Symbol(`${name}Hooks`);\n\n function getHooks(program: object | undefined): THooks {\n return (program && (program as {[Hooks]: THooks})[Hooks]) || hooks('Unknown');\n }\n\n function withHooks<T extends ClassType>(Target: T, {kind}: ClassDecoratorContext): T {\n if (kind !== 'class') {\n throw new TypeError(`Decorator 'withHooks' is not applicable to '${kind}'.`);\n }\n\n return class extends Target {\n [Hooks] = intercept(this.name, hooks(this.name || name));\n };\n }\n\n return [getHooks, withHooks, Hooks] as const;\n}\n\nexport type HookMeta = {\n service: string;\n hook: string;\n name: string;\n type: string;\n};\n\nexport function intercept<T extends Hooks>(service: string, hooks: T): T {\n for (const [hook, handler] of Object.entries(hooks)) {\n handler.intercept({\n register: (info) => {\n const {type, name, fn} = info;\n const meta = {service, hook, name, type};\n\n if (type === 'promise') {\n info.fn = async (...args: unknown[]) => {\n try {\n return await fn(...args);\n } catch (error) {\n if (error instanceof Error) {\n Object.assign(error, {hook: meta});\n }\n\n throw error;\n }\n };\n } else if (type === 'sync') {\n info.fn = (...args: unknown[]) => {\n try {\n return fn(...args);\n } catch (error) {\n if (error instanceof Error) {\n Object.assign(error, {hook: meta});\n }\n\n throw error;\n }\n };\n } else {\n throw new TypeError('Unexpected hook tap type - ' + type);\n }\n\n return info;\n },\n });\n }\n\n return hooks;\n}\n", "import {dirname, extname, isAbsolute, join, normalize} from 'node:path';\nimport _normalizePath from 'normalize-path';\n\nimport {isExternalHref} from '~/core/utils';\n\nexport function normalizePath(path: string): NormalizedPath {\n return _normalizePath(normalize(_normalizePath(path, false)), false);\n}\n\nexport function isRelativePath(path: string): path is RelativePath {\n return !isExternalHref(path) && !isAbsolute(path);\n}\n\nexport function langFromPath(path: string, config: {lang?: string; langs: string[]}) {\n const {lang, langs} = config;\n const pathBaseLang = normalizePath(path).split('/')[0];\n const pathLang = langs.includes(pathBaseLang) && pathBaseLang;\n\n return pathLang || lang || langs[0];\n}\n\nexport function rebasePath(root: RelativePath, path: RelativePath) {\n return normalizePath(join(dirname(root), path));\n}\n\nexport function fullPath(\n path: AbsolutePath | NormalizedPath,\n root: NormalizedPath,\n): NormalizedPath {\n if (path.match(/^(\\/|\\\\)/)) {\n return normalizePath(path.slice(1));\n } else {\n return normalizePath(join(dirname(root), path));\n }\n}\n\nexport function getDepth(path: string) {\n return path\n .replace(/\\\\/g, '/')\n .replace(/^\\.\\/|\\/$/g, '')\n .split('/').length;\n}\n\nexport function getDepthPath(depth: number) {\n return Array(depth).fill('../').join('') || './';\n}\n\nexport function setExt<T extends AnyPath>(path: T, newext: string): T {\n newext = newext.startsWith('.') ? newext.slice(1) : newext;\n\n return (path.slice(0, -extname(path).length) + (newext ? '.' + newext : '')) as T;\n}\n", "export function replaceAll(string: string, match: string, replace: string) {\n if (!string) {\n return string;\n }\n\n const matches = [];\n\n let index = -1;\n while ((index = string.indexOf(match, index + 1)) > -1) {\n matches.push([index, index + match.length]);\n }\n\n return matches.reduceRight((string, match) => {\n return string.slice(0, match[0]) + replace + string.slice(match[1]);\n }, string);\n}\n", "import type {UrlWithStringQuery} from 'node:url';\n\nimport {parse} from 'node:url';\nimport {pick} from 'lodash';\n\nimport {normalizePath} from './path';\n\nexport function isExternalHref(href: string) {\n return /^(\\w{1,10}:)?\\/\\//.test(href) || /^([+\\w]{1,10}:)/.test(href);\n}\n\nexport function prettifyLink(href: string): string {\n if (isExternalHref(href)) {\n return href;\n }\n\n const [pathWithoutHash, hash] = href.split('#', 2);\n const [path, query] = pathWithoutHash.split('?', 2);\n\n let result = path\n .replace(/\\\\/g, '/')\n .replace(/\\/index\\.html$/, '/')\n .replace(/\\/index$/, '/')\n .replace(/^index\\.html$/, '.')\n .replace(/^index$/, '.')\n .replace(/\\.html$/, '');\n\n if (result === '' || result === './') {\n result = '.';\n }\n\n if (query) result += '?' + query;\n if (hash) result += '#' + hash;\n\n return result;\n}\n\nconst MEDIA_FORMATS = /\\.(svg|png|gif|jpe?g|bmp|webp|ico)$/i;\n\n// TODO: should we deprecate this?\nconst DOC_FORMATS = /\\.(txt|pdf|docx|xlsx|vsd)$/i;\n\nexport function isMediaLink(link: string) {\n return MEDIA_FORMATS.test(link) || DOC_FORMATS.test(link);\n}\n\ntype LocalUrlInfo = Pick<UrlWithStringQuery, 'hash' | 'search'> & {\n path: NormalizedPath;\n};\n\nconst UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~])/g;\n\nfunction unescapeAll(str: string) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_MD_RE, (_match: string, escaped: string) => escaped);\n}\n\nexport function parseLocalUrl<T = LocalUrlInfo>(url: string | undefined) {\n if (!url || isExternalHref(url) || url.startsWith('/')) {\n return null;\n }\n\n try {\n const parsed = parse(unescapeAll(url));\n\n if (parsed.host || parsed.protocol) {\n return null;\n }\n\n if (parsed.path) {\n parsed.path = normalizePath(parsed.path);\n }\n\n return pick(parsed, ['path', 'search', 'hash']) as T;\n } catch {\n return null;\n }\n}\n", "import type Token from 'markdown-it/lib/token';\n\ntype TokenWalker = (\n token: Token,\n state: {commented: boolean; index: number},\n) => void | undefined | {skip: number};\n\nexport function filterTokens(tokens: Token[], type: string, handler: TokenWalker) {\n let commented = false;\n\n if (!tokens || !tokens.length) {\n return;\n }\n\n for (let index = 0; index < tokens.length; index++) {\n const token = tokens[index];\n\n if (token.type === 'html_block') {\n const commentStart = token.content.match('<!--');\n const commentEnd = token.content.match('-->');\n\n if (commentStart && !commentEnd) {\n commented = true;\n }\n\n if (!commentStart && commentEnd) {\n commented = false;\n }\n }\n\n if (token.type === type) {\n const result = handler(token, {commented, index});\n if (result?.skip) {\n index += result?.skip - 1;\n }\n }\n }\n}\n", "import {normalizePath} from './path';\nimport {copyJson} from './common';\n\ntype Formatter<T, O> = (data: T) => O;\n\nconst toString = <T>(data: T) => {\n if (typeof data === 'string') {\n return data;\n }\n\n return JSON.stringify(data);\n};\n\nexport class VFile<T extends string | object = string | object, Info extends Hash = {}> {\n get path(): NormalizedPath {\n return this._path;\n }\n\n set path(value: RelativePath) {\n this._path = normalizePath(value);\n }\n\n get data() {\n return this._data;\n }\n\n set data(value: T) {\n this._data = value;\n }\n\n get info() {\n return this._info;\n }\n\n set info(value: Info) {\n this._info = value;\n }\n\n private _path: NormalizedPath;\n\n private _data: T;\n\n private _info: Info = {} as Info;\n\n private _format: Formatter<T, string>;\n\n constructor(path: RelativePath, data: T, formatter: Formatter<T, string> = toString) {\n this._path = normalizePath(path);\n this._data = data;\n this._format = formatter;\n }\n\n copy(path?: RelativePath) {\n const data = typeof this._data === 'string' ? this._data : copyJson(this._data);\n return new VFile<T>(path || this._path, data as T, this._format);\n }\n\n format(formatter: Formatter<T, string>) {\n this._format = formatter;\n }\n\n toString() {\n return this._format(this._data);\n }\n}\n", "import {DepGraph} from 'dependency-graph';\n\nexport type SerializedGraph<Data = {type: string}> = {\n nodes: Array<{\n name: string;\n data?: Data;\n }>;\n dependencies: Array<{\n from: string;\n to: string;\n }>;\n};\n\nexport class Graph<Data = {type: string}> extends DepGraph<Data> {\n static is<Data = {type: string}>(data: unknown): data is SerializedGraph<Data> {\n return Boolean(\n data instanceof Graph ||\n (data && typeof data === 'object' && '__type' in data && data.__type === '$$Graph'),\n );\n }\n\n static deserialize(message: SerializedGraph) {\n return new Graph().consume(message);\n }\n\n constructor() {\n super({circular: true});\n }\n\n /**\n * Extracts a subgraph related to the specified node\n * @param nodeName - name of the node for which to extract the subgraph\n * @returns new Graph instance with the extracted subgraph\n */\n extract(nodeName: string): Graph<Data> {\n const extractedGraph = new Graph<Data>();\n\n if (!this.hasNode(nodeName)) {\n return extractedGraph;\n }\n\n // Recursively copy dependencies (nodes that the initial node depends on)\n this.copyDependenciesRecursively(nodeName, extractedGraph, new Set());\n\n // Recursively copy dependent nodes (nodes that depend on the initial node)\n this.copyDependentsRecursively(nodeName, extractedGraph, new Set());\n\n return extractedGraph;\n }\n\n /**\n * Consumes a serialized graph\n */\n consume(graph: Graph<any> | SerializedGraph<Data> | undefined): this {\n if (!graph) {\n return this;\n }\n\n if (graph instanceof Graph) {\n graph = graph.serialize();\n }\n\n // First add all nodes\n for (const node of graph.nodes) {\n this.addNode(node.name);\n if (node.data) {\n this.setNodeData(node.name, node.data);\n }\n }\n\n // Then add all dependencies\n for (const dep of graph.dependencies) {\n this.addDependency(dep.from, dep.to);\n }\n\n return this;\n }\n\n /**\n * Removes node from graph\n * If node dependencies has no other dependants, they will be removed too\n * @param nodeName - node name to remove\n */\n release(nodeName: string): this {\n if (!this.hasNode(nodeName)) {\n return this;\n }\n\n // Get direct parents before removing the node\n const directParents = this.directDependenciesOf(nodeName);\n\n // Remove all incoming dependencies (parents -> node)\n for (const parent of directParents) {\n this.removeDependency(nodeName, parent);\n }\n\n // Remove all outgoing dependencies (node -> children)\n const directDependents = this.directDependentsOf(nodeName);\n for (const dependent of directDependents) {\n this.removeDependency(dependent, nodeName);\n }\n\n // Remove the node itself\n this.removeNode(nodeName);\n\n // Recursively remove parents that have no children left\n for (const parent of directParents) {\n if (this.hasNode(parent) && this.directDependentsOf(parent).length === 0) {\n this.release(parent);\n }\n }\n\n return this;\n }\n\n /**\n * Serializes the graph to a format for transfer between threads\n * @returns serialized representation of the graph\n */\n serialize(): SerializedGraph<Data> {\n const nodes: SerializedGraph<Data>['nodes'] = [];\n const dependencies: SerializedGraph['dependencies'] = [];\n\n // Get all nodes in the graph\n const allNodes = this.overallOrder();\n\n for (const nodeName of allNodes) {\n const nodeData = this.getNodeData(nodeName);\n nodes.push({\n name: nodeName,\n data: nodeData,\n });\n }\n\n // Get all dependencies\n for (const nodeName of allNodes) {\n const directDeps = this.directDependenciesOf(nodeName);\n for (const dep of directDeps) {\n dependencies.push({\n from: nodeName,\n to: dep,\n });\n }\n }\n\n nodes.sort((a, b) => (a.name > b.name ? 1 : -1));\n dependencies.sort((a, b) => {\n if (a.from === b.from) {\n return a.to > b.to ? 1 : -1;\n }\n return a.from > b.from ? 1 : -1;\n });\n\n return {nodes, dependencies, __type: '$$Graph'} as SerializedGraph<Data>;\n }\n\n /**\n * Recursively copies node dependencies\n */\n private copyDependenciesRecursively(\n nodeName: string,\n targetGraph: Graph<Data>,\n processed: Set<string>,\n ): void {\n if (processed.has(nodeName)) {\n return;\n }\n\n processed.add(nodeName);\n\n // Add node to target graph\n if (!targetGraph.hasNode(nodeName)) {\n targetGraph.addNode(nodeName);\n const nodeData = this.getNodeData(nodeName);\n if (nodeData) {\n targetGraph.setNodeData(nodeName, nodeData);\n }\n }\n\n // Recursively process only direct dependencies\n const dependencies = this.directDependenciesOf(nodeName);\n for (const dep of dependencies) {\n this.copyDependenciesRecursively(dep, targetGraph, processed);\n targetGraph.addDependency(nodeName, dep);\n }\n }\n\n /**\n * Recursively copies dependent nodes\n */\n private copyDependentsRecursively(\n nodeName: string,\n targetGraph: Graph<Data>,\n processed: Set<string>,\n ): void {\n if (processed.has(nodeName)) {\n return;\n }\n\n processed.add(nodeName);\n\n // Add node to target graph\n if (!targetGraph.hasNode(nodeName)) {\n targetGraph.addNode(nodeName);\n const nodeData = this.getNodeData(nodeName);\n if (nodeData) {\n targetGraph.setNodeData(nodeName, nodeData);\n }\n }\n\n // Recursively process only direct dependent nodes\n const dependents = this.directDependentsOf(nodeName);\n for (const dep of dependents) {\n this.copyDependentsRecursively(dep, targetGraph, processed);\n targetGraph.addDependency(dep, nodeName);\n }\n }\n}\n", "export type JsonDiff = {\n added: string[];\n changed: string[];\n removed: string[];\n};\n\n/**\n * \u0421\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 JSON \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0440\u0435\u043A\u0443\u0440\u0441\u0438\u0432\u043D\u043E \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u044F\n * @param oldObj - \u0441\u0442\u0430\u0440\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @param newObj - \u043D\u043E\u0432\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @returns \u041E\u0431\u044A\u0435\u043A\u0442 \u0441 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\u043C\u0438 \u043F\u0443\u0442\u0435\u0439 \u043A \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u043C, \u0438\u0437\u043C\u0435\u043D\u0451\u043D\u043D\u044B\u043C \u0438 \u0443\u0434\u0430\u043B\u0451\u043D\u043D\u044B\u043C \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430\u043C\n */\nexport function compareJson(oldObj: object, newObj: object): JsonDiff {\n const added: string[] = [];\n const changed: string[] = [];\n const removed: string[] = [];\n\n compareObjects(oldObj, newObj, '', added, changed, removed);\n\n return {\n added: added.sort(),\n changed: changed.sort(),\n removed: removed.sort(),\n };\n}\n\n/**\n * \u0420\u0435\u043A\u0443\u0440\u0441\u0438\u0432\u043D\u043E \u0441\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0438 \u0437\u0430\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u043C\u0430\u0441\u0441\u0438\u0432\u044B \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0439\n * @param oldObj - \u0441\u0442\u0430\u0440\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @param newObj - \u043D\u043E\u0432\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @param path - \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u043F\u0443\u0442\u044C \u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u0435\n * @param added - \u043C\u0430\u0441\u0441\u0438\u0432 \u0434\u043B\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0445 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\n * @param changed - \u043C\u0430\u0441\u0441\u0438\u0432 \u0434\u043B\u044F \u0438\u0437\u043C\u0435\u043D\u0451\u043D\u043D\u044B\u0445 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\n * @param removed - \u043C\u0430\u0441\u0441\u0438\u0432 \u0434\u043B\u044F \u0443\u0434\u0430\u043B\u0451\u043D\u043D\u044B\u0445 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\n */\nfunction compareObjects(\n oldObj: unknown,\n newObj: unknown,\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n): void {\n if (isNullable(oldObj) && isNullable(newObj)) {\n return;\n }\n\n compareEntity(oldObj, newObj, path, added, changed, removed);\n}\n\nfunction addAllPaths(obj: unknown, path: string, arr: string[]): void {\n if (path) {\n arr.push(path);\n }\n\n if (typeof obj !== 'object' || obj === null) {\n return;\n }\n\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n const currentPath = path ? `${path}[${i}]` : `[${i}]`;\n addAllPaths(obj[i], currentPath, arr);\n }\n return;\n }\n\n for (const key of Object.keys(obj)) {\n const currentPath = path ? `${path}.${key}` : key;\n addAllPaths((obj as Hash)[key], currentPath, arr);\n }\n}\n\n/**\n * \u0421\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n */\nfunction compareArrays(\n oldArr: unknown[],\n newArr: unknown[],\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n): void {\n const maxLength = Math.max(oldArr.length, newArr.length);\n\n for (let i = 0; i < maxLength; i++) {\n const currentPath = path ? `${path}[${i}]` : `[${i}]`;\n const oldItem = oldArr[i];\n const newItem = newArr[i];\n\n if (i >= oldArr.length) {\n added.push(currentPath);\n } else if (i >= newArr.length) {\n removed.push(currentPath);\n } else {\n compareObjects(oldItem, newItem, currentPath, added, changed, removed);\n }\n }\n}\n\n/**\n * \u0421\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u0434\u0432\u0443\u0445 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432\n */\nfunction compareObjectProperties(\n oldObj: Hash,\n newObj: Hash,\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n): void {\n const allKeys = new Set([...Object.keys(oldObj), ...Object.keys(newObj)]);\n\n for (const key of allKeys) {\n const currentPath = path ? `${path}.${key}` : key;\n const oldValue = oldObj[key];\n const newValue = newObj[key];\n\n if (!(key in oldObj)) {\n addAllPaths(newValue, currentPath, added);\n } else if (!(key in newObj)) {\n addAllPaths(oldValue, currentPath, removed);\n } else {\n compareEntity(oldValue, newValue, currentPath, added, changed, removed);\n }\n }\n}\n\nfunction compareEntity(\n oldValue: unknown,\n newValue: unknown,\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n) {\n if (\n (isNullable(oldValue) || isNullable(newValue)) &&\n !(isNullable(oldValue) && isNullable(newValue))\n ) {\n changed.push(path);\n } else if (typeof oldValue !== typeof newValue) {\n changed.push(path);\n } else if (typeof oldValue !== 'object' || typeof newValue !== 'object') {\n if (oldValue !== newValue) {\n changed.push(path);\n }\n } else if (Array.isArray(oldValue) && Array.isArray(newValue)) {\n compareArrays(oldValue, newValue, path, added, changed, removed);\n } else if (!Array.isArray(oldValue) && !Array.isArray(newValue)) {\n compareObjectProperties(oldValue as Hash, newValue as Hash, path, added, changed, removed);\n } else {\n changed.push(path);\n }\n}\n\nfunction isNullable(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["isExternalHref", "_normalizePath", "string", "match", "import_lodash", "isExternalHref"]
|
|
7
7
|
}
|
package/lib/utils/index.mjs
CHANGED
|
@@ -471,6 +471,9 @@ var Graph = class _Graph extends DepGraph {
|
|
|
471
471
|
static deserialize(message) {
|
|
472
472
|
return new _Graph().consume(message);
|
|
473
473
|
}
|
|
474
|
+
constructor() {
|
|
475
|
+
super({ circular: true });
|
|
476
|
+
}
|
|
474
477
|
/**
|
|
475
478
|
* Extracts a subgraph related to the specified node
|
|
476
479
|
* @param nodeName - name of the node for which to extract the subgraph
|
package/lib/utils/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/core/utils/common.ts", "../../src/core/utils/decorators.ts", "../../src/core/utils/console.ts", "../../src/core/utils/extension.ts", "../../src/core/utils/path.ts", "../../src/core/utils/string.ts", "../../src/core/utils/url.ts", "../../src/core/utils/markdown.ts", "../../src/core/utils/file.ts", "../../src/core/utils/graph/index.ts", "../../src/core/utils/json/index.ts"],
|
|
4
|
-
"sourcesContent": ["import {isObject} from 'lodash';\nimport {bounded} from './decorators';\n\nexport const all = Promise.all.bind(Promise);\n\nexport const race = Promise.race.bind(Promise);\n\nexport function get<K extends string>(key: K) {\n return function <T extends Record<K, any>>(\n object: T,\n ): T extends Record<K, infer V> ? V : never {\n return object[key];\n };\n}\n\nexport function zip<T = unknown>(keys: string[], values: T[]) {\n return keys.reduce((acc, key, index) => {\n acc[key] = values[index];\n return acc;\n }, {} as Hash<T>);\n}\n\nexport function own<V = unknown, T extends string = string>(\n box: unknown,\n field: T,\n): box is Record<T, V> {\n return (\n Boolean(box && typeof box === 'object') && Object.prototype.hasOwnProperty.call(box, field)\n );\n}\n\nexport function copyJson<T extends object>(\n json: T | undefined,\n): T extends DeepFrozen<infer R> ? R : T | undefined {\n // @ts-ignore\n return json ? JSON.parse(JSON.stringify(json)) : json;\n}\n\nexport function freezeJson<T>(target: T, visited = new Set()): T {\n if (!visited.has(target)) {\n visited.add(target);\n\n if (Array.isArray(target)) {\n target.forEach((item) => freezeJson(item, visited));\n }\n\n if (isObject(target) && !Object.isSealed(target)) {\n Object.freeze(target);\n Object.keys(target).forEach((key) =>\n freezeJson(target[key as keyof typeof target], visited),\n );\n }\n }\n\n return target;\n}\n\nexport function errorMessage(error: unknown): string {\n if (typeof error === 'string') {\n return error;\n }\n\n if (own<string, 'message'>(error, 'message')) {\n return error.message;\n }\n\n return String(error);\n}\n\nexport function fallbackLang(lang: string) {\n if (['kz', 'ua', 'be', 'ru'].includes(lang)) {\n return 'ru';\n }\n\n return 'en';\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class Defer<T = any> {\n promise: Promise<T>;\n\n resolve!: (result: T) => void;\n\n reject!: (error: unknown) => void;\n\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n\nexport function wait(delay: number, action = () => {}) {\n return new Promise((resolve) => {\n setTimeout(resolve, delay);\n }).then(action);\n}\n\nexport type Bucket<T> = {\n get(): T;\n set(value: T): void;\n};\n\nexport function bucket<T>() {\n let _value: T;\n\n return {\n get: () => _value,\n set: (value: T) => {\n _value = value;\n },\n };\n}\n\nexport class Buckets<T> {\n private scope: Map<string, T> = new Map();\n\n @bounded\n bind(key: string) {\n return {\n get: () => this.get(key),\n set: (value: T) => this.set(key, value),\n };\n }\n\n @bounded\n set(key: string, value: T) {\n this.scope.set(key, value);\n }\n\n @bounded\n get(key: string): T {\n return this.scope.get(key) as T;\n }\n\n @bounded\n delete(key: string) {\n this.scope.delete(key);\n }\n}\n", "export function bounded(_originalMethod: unknown, context: ClassMethodDecoratorContext) {\n const methodName = context.name;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context.addInitializer(function (this: any) {\n this[methodName] = this[methodName].bind(this);\n });\n}\n\nconst Release = Symbol('Cache');\n\ntype DecoratedMethod = Function & {\n [Release](args: unknown[]): void;\n};\n\nexport function memoize(...props: string[] | [Function]) {\n return function (_originalMethod: unknown, context: ClassMethodDecoratorContext) {\n const methodName = context.name;\n const hash =\n typeof props[0] === 'function'\n ? props[0]\n : function (...args: unknown[]) {\n const mem = args.slice(0, props.length);\n if (!mem.every(isPrimitive)) {\n return null;\n }\n\n return props.map((prop, index) => `${prop}=${mem[index]}`).join('&');\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context.addInitializer(function (this: any) {\n const cache = new Map();\n const method = this[methodName];\n\n this[methodName] = function (this: unknown, ...args: unknown[]) {\n const key = hash.call(this, ...args);\n\n if (key === null) {\n return method.call(this, ...args);\n }\n\n if (!cache.has(key)) {\n cache.set(key, method.call(this, ...args));\n }\n\n return cache.get(key);\n };\n this[methodName][Release] = (args: unknown[]) => {\n const key = hash.call(this, ...args);\n\n cache.delete(key);\n };\n });\n };\n}\n\nmemoize.release = (method: Function, ...args: unknown[]) => {\n if (Release in method) {\n (method as DecoratedMethod)[Release](args);\n }\n};\n\nconst PRIMITIVE_TYPES = ['string', 'number', 'symbol', 'boolean', 'undefined'];\n\nfunction isPrimitive(value: unknown) {\n return !value || PRIMITIVE_TYPES.includes(typeof value);\n}\n", "/* eslint-disable no-console */\n\nclass MutableConsole {\n log(...args: unknown[]) {\n this.write('log', args);\n }\n\n warn(...args: unknown[]) {\n console.warn(...args);\n }\n\n error(...args: unknown[]) {\n console.error(...args);\n }\n\n time(label: string) {\n if (process.env.NODE_ENV !== 'test') {\n console.time(label);\n }\n }\n\n timeEnd(label: string) {\n if (process.env.NODE_ENV !== 'test') {\n console.timeEnd(label);\n }\n }\n\n private write(level: 'log' | 'error' | 'warn', args: unknown[]) {\n if (process.env.NODE_ENV !== 'test') {\n console[level](...args);\n }\n }\n}\n\nconst _console = new MutableConsole();\n\nexport {_console as console};\n", "import type {Hook, HookMap} from 'tapable';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Hooks = Hash<Hook<any, any> | HookMap<any>>;\n\nexport function generateHooksAccess<THooks extends Hooks>(\n name: string,\n hooks: (name: string) => THooks,\n) {\n const Hooks = Symbol(`${name}Hooks`);\n\n function getHooks(program: object | undefined): THooks {\n return (program && (program as {[Hooks]: THooks})[Hooks]) || hooks('Unknown');\n }\n\n function withHooks<T extends ClassType>(Target: T, {kind}: ClassDecoratorContext): T {\n if (kind !== 'class') {\n throw new TypeError(`Decorator 'withHooks' is not applicable to '${kind}'.`);\n }\n\n return class extends Target {\n [Hooks] = intercept(this.name, hooks(this.name || name));\n };\n }\n\n return [getHooks, withHooks, Hooks] as const;\n}\n\nexport type HookMeta = {\n service: string;\n hook: string;\n name: string;\n type: string;\n};\n\nexport function intercept<T extends Hooks>(service: string, hooks: T): T {\n for (const [hook, handler] of Object.entries(hooks)) {\n handler.intercept({\n register: (info) => {\n const {type, name, fn} = info;\n const meta = {service, hook, name, type};\n\n if (type === 'promise') {\n info.fn = async (...args: unknown[]) => {\n try {\n return await fn(...args);\n } catch (error) {\n if (error instanceof Error) {\n Object.assign(error, {hook: meta});\n }\n\n throw error;\n }\n };\n } else if (type === 'sync') {\n info.fn = (...args: unknown[]) => {\n try {\n return fn(...args);\n } catch (error) {\n if (error instanceof Error) {\n Object.assign(error, {hook: meta});\n }\n\n throw error;\n }\n };\n } else {\n throw new TypeError('Unexpected hook tap type - ' + type);\n }\n\n return info;\n },\n });\n }\n\n return hooks;\n}\n", "import {dirname, extname, isAbsolute, join, normalize} from 'node:path';\nimport _normalizePath from 'normalize-path';\n\nimport {isExternalHref} from '~/core/utils';\n\nexport function normalizePath(path: string): NormalizedPath {\n return _normalizePath(normalize(_normalizePath(path, false)), false);\n}\n\nexport function isRelativePath(path: string): path is RelativePath {\n return !isExternalHref(path) && !isAbsolute(path);\n}\n\nexport function langFromPath(path: string, config: {lang?: string; langs: string[]}) {\n const {lang, langs} = config;\n const pathBaseLang = normalizePath(path).split('/')[0];\n const pathLang = langs.includes(pathBaseLang) && pathBaseLang;\n\n return pathLang || lang || langs[0];\n}\n\nexport function rebasePath(root: RelativePath, path: RelativePath) {\n return normalizePath(join(dirname(root), path));\n}\n\nexport function fullPath(\n path: AbsolutePath | NormalizedPath,\n root: NormalizedPath,\n): NormalizedPath {\n if (path.match(/^(\\/|\\\\)/)) {\n return normalizePath(path.slice(1));\n } else {\n return normalizePath(join(dirname(root), path));\n }\n}\n\nexport function getDepth(path: string) {\n return path\n .replace(/\\\\/g, '/')\n .replace(/^\\.\\/|\\/$/g, '')\n .split('/').length;\n}\n\nexport function getDepthPath(depth: number) {\n return Array(depth).fill('../').join('') || './';\n}\n\nexport function setExt<T extends AnyPath>(path: T, newext: string): T {\n newext = newext.startsWith('.') ? newext.slice(1) : newext;\n\n return (path.slice(0, -extname(path).length) + (newext ? '.' + newext : '')) as T;\n}\n", "export function replaceAll(string: string, match: string, replace: string) {\n if (!string) {\n return string;\n }\n\n const matches = [];\n\n let index = -1;\n while ((index = string.indexOf(match, index + 1)) > -1) {\n matches.push([index, index + match.length]);\n }\n\n return matches.reduceRight((string, match) => {\n return string.slice(0, match[0]) + replace + string.slice(match[1]);\n }, string);\n}\n", "import type {UrlWithStringQuery} from 'node:url';\n\nimport {parse} from 'node:url';\nimport {pick} from 'lodash';\n\nimport {normalizePath} from './path';\n\nexport function isExternalHref(href: string) {\n return /^(\\w{1,10}:)?\\/\\//.test(href) || /^([+\\w]{1,10}:)/.test(href);\n}\n\nexport function prettifyLink(href: string): string {\n if (isExternalHref(href)) {\n return href;\n }\n\n const [pathWithoutHash, hash] = href.split('#', 2);\n const [path, query] = pathWithoutHash.split('?', 2);\n\n let result = path\n .replace(/\\\\/g, '/')\n .replace(/\\/index\\.html$/, '/')\n .replace(/\\/index$/, '/')\n .replace(/^index\\.html$/, '.')\n .replace(/^index$/, '.')\n .replace(/\\.html$/, '');\n\n if (result === '' || result === './') {\n result = '.';\n }\n\n if (query) result += '?' + query;\n if (hash) result += '#' + hash;\n\n return result;\n}\n\nconst MEDIA_FORMATS = /\\.(svg|png|gif|jpe?g|bmp|webp|ico)$/i;\n\n// TODO: should we deprecate this?\nconst DOC_FORMATS = /\\.(txt|pdf|docx|xlsx|vsd)$/i;\n\nexport function isMediaLink(link: string) {\n return MEDIA_FORMATS.test(link) || DOC_FORMATS.test(link);\n}\n\ntype LocalUrlInfo = Pick<UrlWithStringQuery, 'hash' | 'search'> & {\n path: NormalizedPath;\n};\n\nconst UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~])/g;\n\nfunction unescapeAll(str: string) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_MD_RE, (_match: string, escaped: string) => escaped);\n}\n\nexport function parseLocalUrl<T = LocalUrlInfo>(url: string | undefined) {\n if (!url || isExternalHref(url) || url.startsWith('/')) {\n return null;\n }\n\n try {\n const parsed = parse(unescapeAll(url));\n\n if (parsed.host || parsed.protocol) {\n return null;\n }\n\n if (parsed.path) {\n parsed.path = normalizePath(parsed.path);\n }\n\n return pick(parsed, ['path', 'search', 'hash']) as T;\n } catch {\n return null;\n }\n}\n", "import type Token from 'markdown-it/lib/token';\n\ntype TokenWalker = (\n token: Token,\n state: {commented: boolean; index: number},\n) => void | undefined | {skip: number};\n\nexport function filterTokens(tokens: Token[], type: string, handler: TokenWalker) {\n let commented = false;\n\n if (!tokens || !tokens.length) {\n return;\n }\n\n for (let index = 0; index < tokens.length; index++) {\n const token = tokens[index];\n\n if (token.type === 'html_block') {\n const commentStart = token.content.match('<!--');\n const commentEnd = token.content.match('-->');\n\n if (commentStart && !commentEnd) {\n commented = true;\n }\n\n if (!commentStart && commentEnd) {\n commented = false;\n }\n }\n\n if (token.type === type) {\n const result = handler(token, {commented, index});\n if (result?.skip) {\n index += result?.skip - 1;\n }\n }\n }\n}\n", "import {normalizePath} from './path';\nimport {copyJson} from './common';\n\ntype Formatter<T, O> = (data: T) => O;\n\nconst toString = <T>(data: T) => {\n if (typeof data === 'string') {\n return data;\n }\n\n return JSON.stringify(data);\n};\n\nexport class VFile<T extends string | object = string | object, Info extends Hash = {}> {\n get path(): NormalizedPath {\n return this._path;\n }\n\n set path(value: RelativePath) {\n this._path = normalizePath(value);\n }\n\n get data() {\n return this._data;\n }\n\n set data(value: T) {\n this._data = value;\n }\n\n get info() {\n return this._info;\n }\n\n set info(value: Info) {\n this._info = value;\n }\n\n private _path: NormalizedPath;\n\n private _data: T;\n\n private _info: Info = {} as Info;\n\n private _format: Formatter<T, string>;\n\n constructor(path: RelativePath, data: T, formatter: Formatter<T, string> = toString) {\n this._path = normalizePath(path);\n this._data = data;\n this._format = formatter;\n }\n\n copy(path?: RelativePath) {\n const data = typeof this._data === 'string' ? this._data : copyJson(this._data);\n return new VFile<T>(path || this._path, data as T, this._format);\n }\n\n format(formatter: Formatter<T, string>) {\n this._format = formatter;\n }\n\n toString() {\n return this._format(this._data);\n }\n}\n", "import {DepGraph} from 'dependency-graph';\n\nexport type SerializedGraph<Data = {type: string}> = {\n nodes: Array<{\n name: string;\n data?: Data;\n }>;\n dependencies: Array<{\n from: string;\n to: string;\n }>;\n};\n\nexport class Graph<Data = {type: string}> extends DepGraph<Data> {\n static is<Data = {type: string}>(data: unknown): data is SerializedGraph<Data> {\n return Boolean(\n data instanceof Graph ||\n (data && typeof data === 'object' && '__type' in data && data.__type === '$$Graph'),\n );\n }\n\n static deserialize(message: SerializedGraph) {\n return new Graph().consume(message);\n }\n\n /**\n * Extracts a subgraph related to the specified node\n * @param nodeName - name of the node for which to extract the subgraph\n * @returns new Graph instance with the extracted subgraph\n */\n extract(nodeName: string): Graph<Data> {\n const extractedGraph = new Graph<Data>();\n\n if (!this.hasNode(nodeName)) {\n return extractedGraph;\n }\n\n // Recursively copy dependencies (nodes that the initial node depends on)\n this.copyDependenciesRecursively(nodeName, extractedGraph, new Set());\n\n // Recursively copy dependent nodes (nodes that depend on the initial node)\n this.copyDependentsRecursively(nodeName, extractedGraph, new Set());\n\n return extractedGraph;\n }\n\n /**\n * Consumes a serialized graph\n */\n consume(graph: Graph<any> | SerializedGraph<Data> | undefined): this {\n if (!graph) {\n return this;\n }\n\n if (graph instanceof Graph) {\n graph = graph.serialize();\n }\n\n // First add all nodes\n for (const node of graph.nodes) {\n this.addNode(node.name);\n if (node.data) {\n this.setNodeData(node.name, node.data);\n }\n }\n\n // Then add all dependencies\n for (const dep of graph.dependencies) {\n this.addDependency(dep.from, dep.to);\n }\n\n return this;\n }\n\n /**\n * Removes node from graph\n * If node dependencies has no other dependants, they will be removed too\n * @param nodeName - node name to remove\n */\n release(nodeName: string): this {\n if (!this.hasNode(nodeName)) {\n return this;\n }\n\n // Get direct parents before removing the node\n const directParents = this.directDependenciesOf(nodeName);\n\n // Remove all incoming dependencies (parents -> node)\n for (const parent of directParents) {\n this.removeDependency(nodeName, parent);\n }\n\n // Remove all outgoing dependencies (node -> children)\n const directDependents = this.directDependentsOf(nodeName);\n for (const dependent of directDependents) {\n this.removeDependency(dependent, nodeName);\n }\n\n // Remove the node itself\n this.removeNode(nodeName);\n\n // Recursively remove parents that have no children left\n for (const parent of directParents) {\n if (this.hasNode(parent) && this.directDependentsOf(parent).length === 0) {\n this.release(parent);\n }\n }\n\n return this;\n }\n\n /**\n * Serializes the graph to a format for transfer between threads\n * @returns serialized representation of the graph\n */\n serialize(): SerializedGraph<Data> {\n const nodes: SerializedGraph<Data>['nodes'] = [];\n const dependencies: SerializedGraph['dependencies'] = [];\n\n // Get all nodes in the graph\n const allNodes = this.overallOrder();\n\n for (const nodeName of allNodes) {\n const nodeData = this.getNodeData(nodeName);\n nodes.push({\n name: nodeName,\n data: nodeData,\n });\n }\n\n // Get all dependencies\n for (const nodeName of allNodes) {\n const directDeps = this.directDependenciesOf(nodeName);\n for (const dep of directDeps) {\n dependencies.push({\n from: nodeName,\n to: dep,\n });\n }\n }\n\n nodes.sort((a, b) => (a.name > b.name ? 1 : -1));\n dependencies.sort((a, b) => {\n if (a.from === b.from) {\n return a.to > b.to ? 1 : -1;\n }\n return a.from > b.from ? 1 : -1;\n });\n\n return {nodes, dependencies, __type: '$$Graph'} as SerializedGraph<Data>;\n }\n\n /**\n * Recursively copies node dependencies\n */\n private copyDependenciesRecursively(\n nodeName: string,\n targetGraph: Graph<Data>,\n processed: Set<string>,\n ): void {\n if (processed.has(nodeName)) {\n return;\n }\n\n processed.add(nodeName);\n\n // Add node to target graph\n if (!targetGraph.hasNode(nodeName)) {\n targetGraph.addNode(nodeName);\n const nodeData = this.getNodeData(nodeName);\n if (nodeData) {\n targetGraph.setNodeData(nodeName, nodeData);\n }\n }\n\n // Recursively process only direct dependencies\n const dependencies = this.directDependenciesOf(nodeName);\n for (const dep of dependencies) {\n this.copyDependenciesRecursively(dep, targetGraph, processed);\n targetGraph.addDependency(nodeName, dep);\n }\n }\n\n /**\n * Recursively copies dependent nodes\n */\n private copyDependentsRecursively(\n nodeName: string,\n targetGraph: Graph<Data>,\n processed: Set<string>,\n ): void {\n if (processed.has(nodeName)) {\n return;\n }\n\n processed.add(nodeName);\n\n // Add node to target graph\n if (!targetGraph.hasNode(nodeName)) {\n targetGraph.addNode(nodeName);\n const nodeData = this.getNodeData(nodeName);\n if (nodeData) {\n targetGraph.setNodeData(nodeName, nodeData);\n }\n }\n\n // Recursively process only direct dependent nodes\n const dependents = this.directDependentsOf(nodeName);\n for (const dep of dependents) {\n this.copyDependentsRecursively(dep, targetGraph, processed);\n targetGraph.addDependency(dep, nodeName);\n }\n }\n}\n", "export type JsonDiff = {\n added: string[];\n changed: string[];\n removed: string[];\n};\n\n/**\n * \u0421\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 JSON \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0440\u0435\u043A\u0443\u0440\u0441\u0438\u0432\u043D\u043E \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u044F\n * @param oldObj - \u0441\u0442\u0430\u0440\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @param newObj - \u043D\u043E\u0432\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @returns \u041E\u0431\u044A\u0435\u043A\u0442 \u0441 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\u043C\u0438 \u043F\u0443\u0442\u0435\u0439 \u043A \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u043C, \u0438\u0437\u043C\u0435\u043D\u0451\u043D\u043D\u044B\u043C \u0438 \u0443\u0434\u0430\u043B\u0451\u043D\u043D\u044B\u043C \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430\u043C\n */\nexport function compareJson(oldObj: object, newObj: object): JsonDiff {\n const added: string[] = [];\n const changed: string[] = [];\n const removed: string[] = [];\n\n compareObjects(oldObj, newObj, '', added, changed, removed);\n\n return {\n added: added.sort(),\n changed: changed.sort(),\n removed: removed.sort(),\n };\n}\n\n/**\n * \u0420\u0435\u043A\u0443\u0440\u0441\u0438\u0432\u043D\u043E \u0441\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0438 \u0437\u0430\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u043C\u0430\u0441\u0441\u0438\u0432\u044B \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0439\n * @param oldObj - \u0441\u0442\u0430\u0440\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @param newObj - \u043D\u043E\u0432\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @param path - \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u043F\u0443\u0442\u044C \u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u0435\n * @param added - \u043C\u0430\u0441\u0441\u0438\u0432 \u0434\u043B\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0445 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\n * @param changed - \u043C\u0430\u0441\u0441\u0438\u0432 \u0434\u043B\u044F \u0438\u0437\u043C\u0435\u043D\u0451\u043D\u043D\u044B\u0445 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\n * @param removed - \u043C\u0430\u0441\u0441\u0438\u0432 \u0434\u043B\u044F \u0443\u0434\u0430\u043B\u0451\u043D\u043D\u044B\u0445 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\n */\nfunction compareObjects(\n oldObj: unknown,\n newObj: unknown,\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n): void {\n if (isNullable(oldObj) && isNullable(newObj)) {\n return;\n }\n\n compareEntity(oldObj, newObj, path, added, changed, removed);\n}\n\nfunction addAllPaths(obj: unknown, path: string, arr: string[]): void {\n if (path) {\n arr.push(path);\n }\n\n if (typeof obj !== 'object' || obj === null) {\n return;\n }\n\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n const currentPath = path ? `${path}[${i}]` : `[${i}]`;\n addAllPaths(obj[i], currentPath, arr);\n }\n return;\n }\n\n for (const key of Object.keys(obj)) {\n const currentPath = path ? `${path}.${key}` : key;\n addAllPaths((obj as Hash)[key], currentPath, arr);\n }\n}\n\n/**\n * \u0421\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n */\nfunction compareArrays(\n oldArr: unknown[],\n newArr: unknown[],\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n): void {\n const maxLength = Math.max(oldArr.length, newArr.length);\n\n for (let i = 0; i < maxLength; i++) {\n const currentPath = path ? `${path}[${i}]` : `[${i}]`;\n const oldItem = oldArr[i];\n const newItem = newArr[i];\n\n if (i >= oldArr.length) {\n added.push(currentPath);\n } else if (i >= newArr.length) {\n removed.push(currentPath);\n } else {\n compareObjects(oldItem, newItem, currentPath, added, changed, removed);\n }\n }\n}\n\n/**\n * \u0421\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u0434\u0432\u0443\u0445 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432\n */\nfunction compareObjectProperties(\n oldObj: Hash,\n newObj: Hash,\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n): void {\n const allKeys = new Set([...Object.keys(oldObj), ...Object.keys(newObj)]);\n\n for (const key of allKeys) {\n const currentPath = path ? `${path}.${key}` : key;\n const oldValue = oldObj[key];\n const newValue = newObj[key];\n\n if (!(key in oldObj)) {\n addAllPaths(newValue, currentPath, added);\n } else if (!(key in newObj)) {\n addAllPaths(oldValue, currentPath, removed);\n } else {\n compareEntity(oldValue, newValue, currentPath, added, changed, removed);\n }\n }\n}\n\nfunction compareEntity(\n oldValue: unknown,\n newValue: unknown,\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n) {\n if (\n (isNullable(oldValue) || isNullable(newValue)) &&\n !(isNullable(oldValue) && isNullable(newValue))\n ) {\n changed.push(path);\n } else if (typeof oldValue !== typeof newValue) {\n changed.push(path);\n } else if (typeof oldValue !== 'object' || typeof newValue !== 'object') {\n if (oldValue !== newValue) {\n changed.push(path);\n }\n } else if (Array.isArray(oldValue) && Array.isArray(newValue)) {\n compareArrays(oldValue, newValue, path, added, changed, removed);\n } else if (!Array.isArray(oldValue) && !Array.isArray(newValue)) {\n compareObjectProperties(oldValue as Hash, newValue as Hash, path, added, changed, removed);\n } else {\n changed.push(path);\n }\n}\n\nfunction isNullable(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import {isObject} from 'lodash';\nimport {bounded} from './decorators';\n\nexport const all = Promise.all.bind(Promise);\n\nexport const race = Promise.race.bind(Promise);\n\nexport function get<K extends string>(key: K) {\n return function <T extends Record<K, any>>(\n object: T,\n ): T extends Record<K, infer V> ? V : never {\n return object[key];\n };\n}\n\nexport function zip<T = unknown>(keys: string[], values: T[]) {\n return keys.reduce((acc, key, index) => {\n acc[key] = values[index];\n return acc;\n }, {} as Hash<T>);\n}\n\nexport function own<V = unknown, T extends string = string>(\n box: unknown,\n field: T,\n): box is Record<T, V> {\n return (\n Boolean(box && typeof box === 'object') && Object.prototype.hasOwnProperty.call(box, field)\n );\n}\n\nexport function copyJson<T extends object>(\n json: T | undefined,\n): T extends DeepFrozen<infer R> ? R : T | undefined {\n // @ts-ignore\n return json ? JSON.parse(JSON.stringify(json)) : json;\n}\n\nexport function freezeJson<T>(target: T, visited = new Set()): T {\n if (!visited.has(target)) {\n visited.add(target);\n\n if (Array.isArray(target)) {\n target.forEach((item) => freezeJson(item, visited));\n }\n\n if (isObject(target) && !Object.isSealed(target)) {\n Object.freeze(target);\n Object.keys(target).forEach((key) =>\n freezeJson(target[key as keyof typeof target], visited),\n );\n }\n }\n\n return target;\n}\n\nexport function errorMessage(error: unknown): string {\n if (typeof error === 'string') {\n return error;\n }\n\n if (own<string, 'message'>(error, 'message')) {\n return error.message;\n }\n\n return String(error);\n}\n\nexport function fallbackLang(lang: string) {\n if (['kz', 'ua', 'be', 'ru'].includes(lang)) {\n return 'ru';\n }\n\n return 'en';\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class Defer<T = any> {\n promise: Promise<T>;\n\n resolve!: (result: T) => void;\n\n reject!: (error: unknown) => void;\n\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n\nexport function wait(delay: number, action = () => {}) {\n return new Promise((resolve) => {\n setTimeout(resolve, delay);\n }).then(action);\n}\n\nexport type Bucket<T> = {\n get(): T;\n set(value: T): void;\n};\n\nexport function bucket<T>() {\n let _value: T;\n\n return {\n get: () => _value,\n set: (value: T) => {\n _value = value;\n },\n };\n}\n\nexport class Buckets<T> {\n private scope: Map<string, T> = new Map();\n\n @bounded\n bind(key: string) {\n return {\n get: () => this.get(key),\n set: (value: T) => this.set(key, value),\n };\n }\n\n @bounded\n set(key: string, value: T) {\n this.scope.set(key, value);\n }\n\n @bounded\n get(key: string): T {\n return this.scope.get(key) as T;\n }\n\n @bounded\n delete(key: string) {\n this.scope.delete(key);\n }\n}\n", "export function bounded(_originalMethod: unknown, context: ClassMethodDecoratorContext) {\n const methodName = context.name;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context.addInitializer(function (this: any) {\n this[methodName] = this[methodName].bind(this);\n });\n}\n\nconst Release = Symbol('Cache');\n\ntype DecoratedMethod = Function & {\n [Release](args: unknown[]): void;\n};\n\nexport function memoize(...props: string[] | [Function]) {\n return function (_originalMethod: unknown, context: ClassMethodDecoratorContext) {\n const methodName = context.name;\n const hash =\n typeof props[0] === 'function'\n ? props[0]\n : function (...args: unknown[]) {\n const mem = args.slice(0, props.length);\n if (!mem.every(isPrimitive)) {\n return null;\n }\n\n return props.map((prop, index) => `${prop}=${mem[index]}`).join('&');\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context.addInitializer(function (this: any) {\n const cache = new Map();\n const method = this[methodName];\n\n this[methodName] = function (this: unknown, ...args: unknown[]) {\n const key = hash.call(this, ...args);\n\n if (key === null) {\n return method.call(this, ...args);\n }\n\n if (!cache.has(key)) {\n cache.set(key, method.call(this, ...args));\n }\n\n return cache.get(key);\n };\n this[methodName][Release] = (args: unknown[]) => {\n const key = hash.call(this, ...args);\n\n cache.delete(key);\n };\n });\n };\n}\n\nmemoize.release = (method: Function, ...args: unknown[]) => {\n if (Release in method) {\n (method as DecoratedMethod)[Release](args);\n }\n};\n\nconst PRIMITIVE_TYPES = ['string', 'number', 'symbol', 'boolean', 'undefined'];\n\nfunction isPrimitive(value: unknown) {\n return !value || PRIMITIVE_TYPES.includes(typeof value);\n}\n", "/* eslint-disable no-console */\n\nclass MutableConsole {\n log(...args: unknown[]) {\n this.write('log', args);\n }\n\n warn(...args: unknown[]) {\n console.warn(...args);\n }\n\n error(...args: unknown[]) {\n console.error(...args);\n }\n\n time(label: string) {\n if (process.env.NODE_ENV !== 'test') {\n console.time(label);\n }\n }\n\n timeEnd(label: string) {\n if (process.env.NODE_ENV !== 'test') {\n console.timeEnd(label);\n }\n }\n\n private write(level: 'log' | 'error' | 'warn', args: unknown[]) {\n if (process.env.NODE_ENV !== 'test') {\n console[level](...args);\n }\n }\n}\n\nconst _console = new MutableConsole();\n\nexport {_console as console};\n", "import type {Hook, HookMap} from 'tapable';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Hooks = Hash<Hook<any, any> | HookMap<any>>;\n\nexport function generateHooksAccess<THooks extends Hooks>(\n name: string,\n hooks: (name: string) => THooks,\n) {\n const Hooks = Symbol(`${name}Hooks`);\n\n function getHooks(program: object | undefined): THooks {\n return (program && (program as {[Hooks]: THooks})[Hooks]) || hooks('Unknown');\n }\n\n function withHooks<T extends ClassType>(Target: T, {kind}: ClassDecoratorContext): T {\n if (kind !== 'class') {\n throw new TypeError(`Decorator 'withHooks' is not applicable to '${kind}'.`);\n }\n\n return class extends Target {\n [Hooks] = intercept(this.name, hooks(this.name || name));\n };\n }\n\n return [getHooks, withHooks, Hooks] as const;\n}\n\nexport type HookMeta = {\n service: string;\n hook: string;\n name: string;\n type: string;\n};\n\nexport function intercept<T extends Hooks>(service: string, hooks: T): T {\n for (const [hook, handler] of Object.entries(hooks)) {\n handler.intercept({\n register: (info) => {\n const {type, name, fn} = info;\n const meta = {service, hook, name, type};\n\n if (type === 'promise') {\n info.fn = async (...args: unknown[]) => {\n try {\n return await fn(...args);\n } catch (error) {\n if (error instanceof Error) {\n Object.assign(error, {hook: meta});\n }\n\n throw error;\n }\n };\n } else if (type === 'sync') {\n info.fn = (...args: unknown[]) => {\n try {\n return fn(...args);\n } catch (error) {\n if (error instanceof Error) {\n Object.assign(error, {hook: meta});\n }\n\n throw error;\n }\n };\n } else {\n throw new TypeError('Unexpected hook tap type - ' + type);\n }\n\n return info;\n },\n });\n }\n\n return hooks;\n}\n", "import {dirname, extname, isAbsolute, join, normalize} from 'node:path';\nimport _normalizePath from 'normalize-path';\n\nimport {isExternalHref} from '~/core/utils';\n\nexport function normalizePath(path: string): NormalizedPath {\n return _normalizePath(normalize(_normalizePath(path, false)), false);\n}\n\nexport function isRelativePath(path: string): path is RelativePath {\n return !isExternalHref(path) && !isAbsolute(path);\n}\n\nexport function langFromPath(path: string, config: {lang?: string; langs: string[]}) {\n const {lang, langs} = config;\n const pathBaseLang = normalizePath(path).split('/')[0];\n const pathLang = langs.includes(pathBaseLang) && pathBaseLang;\n\n return pathLang || lang || langs[0];\n}\n\nexport function rebasePath(root: RelativePath, path: RelativePath) {\n return normalizePath(join(dirname(root), path));\n}\n\nexport function fullPath(\n path: AbsolutePath | NormalizedPath,\n root: NormalizedPath,\n): NormalizedPath {\n if (path.match(/^(\\/|\\\\)/)) {\n return normalizePath(path.slice(1));\n } else {\n return normalizePath(join(dirname(root), path));\n }\n}\n\nexport function getDepth(path: string) {\n return path\n .replace(/\\\\/g, '/')\n .replace(/^\\.\\/|\\/$/g, '')\n .split('/').length;\n}\n\nexport function getDepthPath(depth: number) {\n return Array(depth).fill('../').join('') || './';\n}\n\nexport function setExt<T extends AnyPath>(path: T, newext: string): T {\n newext = newext.startsWith('.') ? newext.slice(1) : newext;\n\n return (path.slice(0, -extname(path).length) + (newext ? '.' + newext : '')) as T;\n}\n", "export function replaceAll(string: string, match: string, replace: string) {\n if (!string) {\n return string;\n }\n\n const matches = [];\n\n let index = -1;\n while ((index = string.indexOf(match, index + 1)) > -1) {\n matches.push([index, index + match.length]);\n }\n\n return matches.reduceRight((string, match) => {\n return string.slice(0, match[0]) + replace + string.slice(match[1]);\n }, string);\n}\n", "import type {UrlWithStringQuery} from 'node:url';\n\nimport {parse} from 'node:url';\nimport {pick} from 'lodash';\n\nimport {normalizePath} from './path';\n\nexport function isExternalHref(href: string) {\n return /^(\\w{1,10}:)?\\/\\//.test(href) || /^([+\\w]{1,10}:)/.test(href);\n}\n\nexport function prettifyLink(href: string): string {\n if (isExternalHref(href)) {\n return href;\n }\n\n const [pathWithoutHash, hash] = href.split('#', 2);\n const [path, query] = pathWithoutHash.split('?', 2);\n\n let result = path\n .replace(/\\\\/g, '/')\n .replace(/\\/index\\.html$/, '/')\n .replace(/\\/index$/, '/')\n .replace(/^index\\.html$/, '.')\n .replace(/^index$/, '.')\n .replace(/\\.html$/, '');\n\n if (result === '' || result === './') {\n result = '.';\n }\n\n if (query) result += '?' + query;\n if (hash) result += '#' + hash;\n\n return result;\n}\n\nconst MEDIA_FORMATS = /\\.(svg|png|gif|jpe?g|bmp|webp|ico)$/i;\n\n// TODO: should we deprecate this?\nconst DOC_FORMATS = /\\.(txt|pdf|docx|xlsx|vsd)$/i;\n\nexport function isMediaLink(link: string) {\n return MEDIA_FORMATS.test(link) || DOC_FORMATS.test(link);\n}\n\ntype LocalUrlInfo = Pick<UrlWithStringQuery, 'hash' | 'search'> & {\n path: NormalizedPath;\n};\n\nconst UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~])/g;\n\nfunction unescapeAll(str: string) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_MD_RE, (_match: string, escaped: string) => escaped);\n}\n\nexport function parseLocalUrl<T = LocalUrlInfo>(url: string | undefined) {\n if (!url || isExternalHref(url) || url.startsWith('/')) {\n return null;\n }\n\n try {\n const parsed = parse(unescapeAll(url));\n\n if (parsed.host || parsed.protocol) {\n return null;\n }\n\n if (parsed.path) {\n parsed.path = normalizePath(parsed.path);\n }\n\n return pick(parsed, ['path', 'search', 'hash']) as T;\n } catch {\n return null;\n }\n}\n", "import type Token from 'markdown-it/lib/token';\n\ntype TokenWalker = (\n token: Token,\n state: {commented: boolean; index: number},\n) => void | undefined | {skip: number};\n\nexport function filterTokens(tokens: Token[], type: string, handler: TokenWalker) {\n let commented = false;\n\n if (!tokens || !tokens.length) {\n return;\n }\n\n for (let index = 0; index < tokens.length; index++) {\n const token = tokens[index];\n\n if (token.type === 'html_block') {\n const commentStart = token.content.match('<!--');\n const commentEnd = token.content.match('-->');\n\n if (commentStart && !commentEnd) {\n commented = true;\n }\n\n if (!commentStart && commentEnd) {\n commented = false;\n }\n }\n\n if (token.type === type) {\n const result = handler(token, {commented, index});\n if (result?.skip) {\n index += result?.skip - 1;\n }\n }\n }\n}\n", "import {normalizePath} from './path';\nimport {copyJson} from './common';\n\ntype Formatter<T, O> = (data: T) => O;\n\nconst toString = <T>(data: T) => {\n if (typeof data === 'string') {\n return data;\n }\n\n return JSON.stringify(data);\n};\n\nexport class VFile<T extends string | object = string | object, Info extends Hash = {}> {\n get path(): NormalizedPath {\n return this._path;\n }\n\n set path(value: RelativePath) {\n this._path = normalizePath(value);\n }\n\n get data() {\n return this._data;\n }\n\n set data(value: T) {\n this._data = value;\n }\n\n get info() {\n return this._info;\n }\n\n set info(value: Info) {\n this._info = value;\n }\n\n private _path: NormalizedPath;\n\n private _data: T;\n\n private _info: Info = {} as Info;\n\n private _format: Formatter<T, string>;\n\n constructor(path: RelativePath, data: T, formatter: Formatter<T, string> = toString) {\n this._path = normalizePath(path);\n this._data = data;\n this._format = formatter;\n }\n\n copy(path?: RelativePath) {\n const data = typeof this._data === 'string' ? this._data : copyJson(this._data);\n return new VFile<T>(path || this._path, data as T, this._format);\n }\n\n format(formatter: Formatter<T, string>) {\n this._format = formatter;\n }\n\n toString() {\n return this._format(this._data);\n }\n}\n", "import {DepGraph} from 'dependency-graph';\n\nexport type SerializedGraph<Data = {type: string}> = {\n nodes: Array<{\n name: string;\n data?: Data;\n }>;\n dependencies: Array<{\n from: string;\n to: string;\n }>;\n};\n\nexport class Graph<Data = {type: string}> extends DepGraph<Data> {\n static is<Data = {type: string}>(data: unknown): data is SerializedGraph<Data> {\n return Boolean(\n data instanceof Graph ||\n (data && typeof data === 'object' && '__type' in data && data.__type === '$$Graph'),\n );\n }\n\n static deserialize(message: SerializedGraph) {\n return new Graph().consume(message);\n }\n\n constructor() {\n super({circular: true});\n }\n\n /**\n * Extracts a subgraph related to the specified node\n * @param nodeName - name of the node for which to extract the subgraph\n * @returns new Graph instance with the extracted subgraph\n */\n extract(nodeName: string): Graph<Data> {\n const extractedGraph = new Graph<Data>();\n\n if (!this.hasNode(nodeName)) {\n return extractedGraph;\n }\n\n // Recursively copy dependencies (nodes that the initial node depends on)\n this.copyDependenciesRecursively(nodeName, extractedGraph, new Set());\n\n // Recursively copy dependent nodes (nodes that depend on the initial node)\n this.copyDependentsRecursively(nodeName, extractedGraph, new Set());\n\n return extractedGraph;\n }\n\n /**\n * Consumes a serialized graph\n */\n consume(graph: Graph<any> | SerializedGraph<Data> | undefined): this {\n if (!graph) {\n return this;\n }\n\n if (graph instanceof Graph) {\n graph = graph.serialize();\n }\n\n // First add all nodes\n for (const node of graph.nodes) {\n this.addNode(node.name);\n if (node.data) {\n this.setNodeData(node.name, node.data);\n }\n }\n\n // Then add all dependencies\n for (const dep of graph.dependencies) {\n this.addDependency(dep.from, dep.to);\n }\n\n return this;\n }\n\n /**\n * Removes node from graph\n * If node dependencies has no other dependants, they will be removed too\n * @param nodeName - node name to remove\n */\n release(nodeName: string): this {\n if (!this.hasNode(nodeName)) {\n return this;\n }\n\n // Get direct parents before removing the node\n const directParents = this.directDependenciesOf(nodeName);\n\n // Remove all incoming dependencies (parents -> node)\n for (const parent of directParents) {\n this.removeDependency(nodeName, parent);\n }\n\n // Remove all outgoing dependencies (node -> children)\n const directDependents = this.directDependentsOf(nodeName);\n for (const dependent of directDependents) {\n this.removeDependency(dependent, nodeName);\n }\n\n // Remove the node itself\n this.removeNode(nodeName);\n\n // Recursively remove parents that have no children left\n for (const parent of directParents) {\n if (this.hasNode(parent) && this.directDependentsOf(parent).length === 0) {\n this.release(parent);\n }\n }\n\n return this;\n }\n\n /**\n * Serializes the graph to a format for transfer between threads\n * @returns serialized representation of the graph\n */\n serialize(): SerializedGraph<Data> {\n const nodes: SerializedGraph<Data>['nodes'] = [];\n const dependencies: SerializedGraph['dependencies'] = [];\n\n // Get all nodes in the graph\n const allNodes = this.overallOrder();\n\n for (const nodeName of allNodes) {\n const nodeData = this.getNodeData(nodeName);\n nodes.push({\n name: nodeName,\n data: nodeData,\n });\n }\n\n // Get all dependencies\n for (const nodeName of allNodes) {\n const directDeps = this.directDependenciesOf(nodeName);\n for (const dep of directDeps) {\n dependencies.push({\n from: nodeName,\n to: dep,\n });\n }\n }\n\n nodes.sort((a, b) => (a.name > b.name ? 1 : -1));\n dependencies.sort((a, b) => {\n if (a.from === b.from) {\n return a.to > b.to ? 1 : -1;\n }\n return a.from > b.from ? 1 : -1;\n });\n\n return {nodes, dependencies, __type: '$$Graph'} as SerializedGraph<Data>;\n }\n\n /**\n * Recursively copies node dependencies\n */\n private copyDependenciesRecursively(\n nodeName: string,\n targetGraph: Graph<Data>,\n processed: Set<string>,\n ): void {\n if (processed.has(nodeName)) {\n return;\n }\n\n processed.add(nodeName);\n\n // Add node to target graph\n if (!targetGraph.hasNode(nodeName)) {\n targetGraph.addNode(nodeName);\n const nodeData = this.getNodeData(nodeName);\n if (nodeData) {\n targetGraph.setNodeData(nodeName, nodeData);\n }\n }\n\n // Recursively process only direct dependencies\n const dependencies = this.directDependenciesOf(nodeName);\n for (const dep of dependencies) {\n this.copyDependenciesRecursively(dep, targetGraph, processed);\n targetGraph.addDependency(nodeName, dep);\n }\n }\n\n /**\n * Recursively copies dependent nodes\n */\n private copyDependentsRecursively(\n nodeName: string,\n targetGraph: Graph<Data>,\n processed: Set<string>,\n ): void {\n if (processed.has(nodeName)) {\n return;\n }\n\n processed.add(nodeName);\n\n // Add node to target graph\n if (!targetGraph.hasNode(nodeName)) {\n targetGraph.addNode(nodeName);\n const nodeData = this.getNodeData(nodeName);\n if (nodeData) {\n targetGraph.setNodeData(nodeName, nodeData);\n }\n }\n\n // Recursively process only direct dependent nodes\n const dependents = this.directDependentsOf(nodeName);\n for (const dep of dependents) {\n this.copyDependentsRecursively(dep, targetGraph, processed);\n targetGraph.addDependency(dep, nodeName);\n }\n }\n}\n", "export type JsonDiff = {\n added: string[];\n changed: string[];\n removed: string[];\n};\n\n/**\n * \u0421\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 JSON \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0440\u0435\u043A\u0443\u0440\u0441\u0438\u0432\u043D\u043E \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u044F\n * @param oldObj - \u0441\u0442\u0430\u0440\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @param newObj - \u043D\u043E\u0432\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @returns \u041E\u0431\u044A\u0435\u043A\u0442 \u0441 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\u043C\u0438 \u043F\u0443\u0442\u0435\u0439 \u043A \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u043C, \u0438\u0437\u043C\u0435\u043D\u0451\u043D\u043D\u044B\u043C \u0438 \u0443\u0434\u0430\u043B\u0451\u043D\u043D\u044B\u043C \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430\u043C\n */\nexport function compareJson(oldObj: object, newObj: object): JsonDiff {\n const added: string[] = [];\n const changed: string[] = [];\n const removed: string[] = [];\n\n compareObjects(oldObj, newObj, '', added, changed, removed);\n\n return {\n added: added.sort(),\n changed: changed.sort(),\n removed: removed.sort(),\n };\n}\n\n/**\n * \u0420\u0435\u043A\u0443\u0440\u0441\u0438\u0432\u043D\u043E \u0441\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0438 \u0437\u0430\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u043C\u0430\u0441\u0441\u0438\u0432\u044B \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0439\n * @param oldObj - \u0441\u0442\u0430\u0440\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @param newObj - \u043D\u043E\u0432\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442\n * @param path - \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u043F\u0443\u0442\u044C \u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u0435\n * @param added - \u043C\u0430\u0441\u0441\u0438\u0432 \u0434\u043B\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0445 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\n * @param changed - \u043C\u0430\u0441\u0441\u0438\u0432 \u0434\u043B\u044F \u0438\u0437\u043C\u0435\u043D\u0451\u043D\u043D\u044B\u0445 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\n * @param removed - \u043C\u0430\u0441\u0441\u0438\u0432 \u0434\u043B\u044F \u0443\u0434\u0430\u043B\u0451\u043D\u043D\u044B\u0445 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\n */\nfunction compareObjects(\n oldObj: unknown,\n newObj: unknown,\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n): void {\n if (isNullable(oldObj) && isNullable(newObj)) {\n return;\n }\n\n compareEntity(oldObj, newObj, path, added, changed, removed);\n}\n\nfunction addAllPaths(obj: unknown, path: string, arr: string[]): void {\n if (path) {\n arr.push(path);\n }\n\n if (typeof obj !== 'object' || obj === null) {\n return;\n }\n\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n const currentPath = path ? `${path}[${i}]` : `[${i}]`;\n addAllPaths(obj[i], currentPath, arr);\n }\n return;\n }\n\n for (const key of Object.keys(obj)) {\n const currentPath = path ? `${path}.${key}` : key;\n addAllPaths((obj as Hash)[key], currentPath, arr);\n }\n}\n\n/**\n * \u0421\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n */\nfunction compareArrays(\n oldArr: unknown[],\n newArr: unknown[],\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n): void {\n const maxLength = Math.max(oldArr.length, newArr.length);\n\n for (let i = 0; i < maxLength; i++) {\n const currentPath = path ? `${path}[${i}]` : `[${i}]`;\n const oldItem = oldArr[i];\n const newItem = newArr[i];\n\n if (i >= oldArr.length) {\n added.push(currentPath);\n } else if (i >= newArr.length) {\n removed.push(currentPath);\n } else {\n compareObjects(oldItem, newItem, currentPath, added, changed, removed);\n }\n }\n}\n\n/**\n * \u0421\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u0434\u0432\u0443\u0445 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432\n */\nfunction compareObjectProperties(\n oldObj: Hash,\n newObj: Hash,\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n): void {\n const allKeys = new Set([...Object.keys(oldObj), ...Object.keys(newObj)]);\n\n for (const key of allKeys) {\n const currentPath = path ? `${path}.${key}` : key;\n const oldValue = oldObj[key];\n const newValue = newObj[key];\n\n if (!(key in oldObj)) {\n addAllPaths(newValue, currentPath, added);\n } else if (!(key in newObj)) {\n addAllPaths(oldValue, currentPath, removed);\n } else {\n compareEntity(oldValue, newValue, currentPath, added, changed, removed);\n }\n }\n}\n\nfunction compareEntity(\n oldValue: unknown,\n newValue: unknown,\n path: string,\n added: string[],\n changed: string[],\n removed: string[],\n) {\n if (\n (isNullable(oldValue) || isNullable(newValue)) &&\n !(isNullable(oldValue) && isNullable(newValue))\n ) {\n changed.push(path);\n } else if (typeof oldValue !== typeof newValue) {\n changed.push(path);\n } else if (typeof oldValue !== 'object' || typeof newValue !== 'object') {\n if (oldValue !== newValue) {\n changed.push(path);\n }\n } else if (Array.isArray(oldValue) && Array.isArray(newValue)) {\n compareArrays(oldValue, newValue, path, added, changed, removed);\n } else if (!Array.isArray(oldValue) && !Array.isArray(newValue)) {\n compareObjectProperties(oldValue as Hash, newValue as Hash, path, added, changed, removed);\n } else {\n changed.push(path);\n }\n}\n\nfunction isNullable(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["string", "match", "isExternalHref"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@diplodoc/cli",
|
|
3
|
-
"version": "5.9.
|
|
3
|
+
"version": "5.9.4",
|
|
4
4
|
"description": "Make documentation using yfm-docs in Markdown and HTML formats",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"markdown",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
]
|
|
74
74
|
},
|
|
75
75
|
"dependencies": {
|
|
76
|
-
"@diplodoc/client": "^3.
|
|
76
|
+
"@diplodoc/client": "^3.11.0",
|
|
77
77
|
"@diplodoc/liquid": "^1.3.4",
|
|
78
78
|
"@diplodoc/translation": "^1.7.17",
|
|
79
79
|
"chalk": "^4.1.2",
|