@isdk/util 0.3.7 → 0.3.8
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/dist/index.d.mts +73 -30
- package/dist/index.d.ts +73 -30
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/docs/classes/BinarySemaphore.md +25 -25
- package/docs/classes/ConfigFile.md +6 -6
- package/docs/classes/Deque.md +13 -13
- package/docs/classes/IntSet.md +12 -12
- package/docs/classes/Semaphore.md +26 -26
- package/docs/classes/SignalGate.md +9 -9
- package/docs/functions/RateLimit.md +1 -1
- package/docs/functions/arrayHasAll.md +1 -1
- package/docs/functions/extNameLevel.md +1 -1
- package/docs/functions/extractCodeBlock.md +22 -62
- package/docs/functions/extractTopLevelCodeBlocks.md +37 -0
- package/docs/functions/filenameReservedRegex.md +1 -1
- package/docs/functions/findPort.md +1 -1
- package/docs/functions/getMultiLevelExtname.md +1 -1
- package/docs/functions/glob.md +1 -1
- package/docs/functions/isStringIn.md +1 -1
- package/docs/functions/isValidFilename.md +1 -1
- package/docs/functions/isValidFilepath.md +1 -1
- package/docs/functions/normalizeIncludeFiles.md +1 -1
- package/docs/functions/omitDeepBy.md +1 -1
- package/docs/functions/omitEmptyDeep.md +1 -1
- package/docs/functions/parseCodeBlockSelector.md +34 -0
- package/docs/functions/parseFrontMatter.md +1 -1
- package/docs/functions/parseYaml.md +1 -1
- package/docs/functions/reControlCharsRegex.md +1 -1
- package/docs/functions/registerYamlTag.md +1 -1
- package/docs/functions/removeLeadingEmptyLines.md +1 -1
- package/docs/functions/sanitizeFilename.md +1 -1
- package/docs/functions/sanitizeFilepath.md +1 -1
- package/docs/functions/sleep.md +1 -1
- package/docs/functions/stringifyYaml.md +1 -1
- package/docs/functions/toCamelCase.md +1 -1
- package/docs/functions/toCapitalCase.md +1 -1
- package/docs/functions/toPascalCase.md +1 -1
- package/docs/functions/traverseFolder.md +1 -1
- package/docs/functions/traverseFolderSync.md +1 -1
- package/docs/functions/yieldExec.md +1 -1
- package/docs/globals.md +4 -0
- package/docs/interfaces/BinarySemaphoreAcquireOptions.md +2 -2
- package/docs/interfaces/BinarySemaphoreOptions.md +5 -5
- package/docs/interfaces/BinarySemaphoreReleaseOptions.md +2 -2
- package/docs/interfaces/BinarySemaphoreReleaserFunc.md +3 -3
- package/docs/interfaces/CodeBlockSelectorPart.md +36 -0
- package/docs/interfaces/CodeString.md +3 -3
- package/docs/interfaces/ExtractCodeBlockOptions.md +27 -6
- package/docs/interfaces/IncludeFiles.md +3 -3
- package/docs/interfaces/LoadConfigFileOptions.md +3 -3
- package/docs/interfaces/SanitizeFilenameOptions.md +3 -3
- package/docs/interfaces/SemaphoreOptions.md +7 -7
- package/docs/interfaces/SemaphoreTaskItem.md +5 -5
- package/docs/type-aliases/CodeBlockCombinator.md +18 -0
- package/docs/type-aliases/SemaphoreIsReadyFuncType.md +1 -1
- package/docs/type-aliases/StringifyFunc.md +1 -1
- package/docs/type-aliases/TraverseFolderHandler.md +1 -1
- package/docs/type-aliases/TraverseFolderSyncHandler.md +1 -1
- package/docs/variables/DefaultAllTextFiles.md +1 -1
- package/docs/variables/DefaultAsyncSemaphoreCapacity.md +1 -1
- package/docs/variables/FilenameReservedRegex.md +1 -1
- package/docs/variables/WindowsReservedNameRegex.md +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1056,16 +1056,47 @@ interface CodeString extends String {
|
|
|
1056
1056
|
*/
|
|
1057
1057
|
meta?: string;
|
|
1058
1058
|
}
|
|
1059
|
+
/**
|
|
1060
|
+
* Supported combinators for code block selectors.
|
|
1061
|
+
*
|
|
1062
|
+
* - `>` (Direct Child): Matches top-level code blocks within the current context.
|
|
1063
|
+
* - ` ` (Descendant): Matches all code blocks within the current context, including deeply nested ones. (Planned)
|
|
1064
|
+
* - `+` (Adjacent Sibling): Matches the very next code block at the same nesting level. (Planned)
|
|
1065
|
+
* - `~` (General Sibling): Matches all subsequent code blocks at the same nesting level. (Planned)
|
|
1066
|
+
*/
|
|
1067
|
+
type CodeBlockCombinator = '>' | ' ' | '+' | '~';
|
|
1068
|
+
/**
|
|
1069
|
+
* Represents a single segment in a code block selector path.
|
|
1070
|
+
*
|
|
1071
|
+
* A path like `md > ts` is parsed into two parts:
|
|
1072
|
+
* 1. `{ combinator: ' ', lang: 'md' }`
|
|
1073
|
+
* 2. `{ combinator: '>', lang: 'ts' }`
|
|
1074
|
+
*/
|
|
1075
|
+
interface CodeBlockSelectorPart {
|
|
1076
|
+
/**
|
|
1077
|
+
* The relationship to the previous segment in the path.
|
|
1078
|
+
* For the first segment, ' ' usually implies a search in the root context.
|
|
1079
|
+
*/
|
|
1080
|
+
combinator: CodeBlockCombinator;
|
|
1081
|
+
/**
|
|
1082
|
+
* The target language identifier or alias to match.
|
|
1083
|
+
*/
|
|
1084
|
+
lang: string;
|
|
1085
|
+
}
|
|
1059
1086
|
/**
|
|
1060
1087
|
* Options for extracting code blocks.
|
|
1061
1088
|
*/
|
|
1062
1089
|
interface ExtractCodeBlockOptions {
|
|
1063
1090
|
/**
|
|
1064
|
-
* Optional. The expected language identifier
|
|
1091
|
+
* Optional. The expected language identifier or a CSS-like selector path.
|
|
1092
|
+
* Supports aliases (e.g., 'js' for 'javascript').
|
|
1093
|
+
*
|
|
1094
|
+
* @example 'ts' - Find the last TypeScript block.
|
|
1095
|
+
* @example 'md > ts' - Find ts blocks inside md blocks.
|
|
1065
1096
|
*/
|
|
1066
1097
|
lang?: string;
|
|
1067
1098
|
/**
|
|
1068
|
-
* Optional. The 0-based index of the code block to extract.
|
|
1099
|
+
* Optional. The 0-based index of the code block to extract from the final result set.
|
|
1069
1100
|
* Supports negative indexing: -1 means the last one, -2 means the second to last, etc.
|
|
1070
1101
|
* Defaults to -1.
|
|
1071
1102
|
*/
|
|
@@ -1074,48 +1105,60 @@ interface ExtractCodeBlockOptions {
|
|
|
1074
1105
|
* Optional. If true, returns an array of all matching code blocks.
|
|
1075
1106
|
*/
|
|
1076
1107
|
all?: boolean;
|
|
1108
|
+
/**
|
|
1109
|
+
* Optional. A map of language aliases to their normalized names.
|
|
1110
|
+
*/
|
|
1111
|
+
langMap?: Record<string, string>;
|
|
1077
1112
|
}
|
|
1078
1113
|
/**
|
|
1079
|
-
* Extracts fenced code
|
|
1114
|
+
* Extracts top-level fenced code blocks from the input `text`.
|
|
1080
1115
|
*
|
|
1081
|
-
* This function
|
|
1082
|
-
*
|
|
1116
|
+
* This function handles nested blocks correctly by ensuring the closing fence
|
|
1117
|
+
* matches the length and character of the opening fence. It only scans the
|
|
1118
|
+
* immediate level of the provided text.
|
|
1119
|
+
*
|
|
1120
|
+
* @param text - The input string.
|
|
1121
|
+
* @param options - Extraction options (uses `lang` and `langMap` for filtering).
|
|
1122
|
+
* @returns An array of {@link CodeString} objects representing the matched blocks.
|
|
1123
|
+
*/
|
|
1124
|
+
declare function extractTopLevelCodeBlocks(text: string, options?: ExtractCodeBlockOptions): CodeString[];
|
|
1125
|
+
/**
|
|
1126
|
+
* Parses a selector string into an array of structured {@link CodeBlockSelectorPart} objects.
|
|
1083
1127
|
*
|
|
1084
1128
|
* @example
|
|
1085
1129
|
* ```ts
|
|
1086
|
-
*
|
|
1087
|
-
*
|
|
1088
|
-
* console.log(code); // 'console.log("hello");'
|
|
1089
|
-
* console.log(code.lang); // 'js'
|
|
1130
|
+
* parseCodeBlockSelector('md > ts');
|
|
1131
|
+
* // => [{combinator: ' ', lang: 'md'}, {combinator: '>', lang: 'ts'}]
|
|
1090
1132
|
* ```
|
|
1091
1133
|
*
|
|
1092
|
-
* @param
|
|
1093
|
-
* @
|
|
1094
|
-
* the last code block in the text is returned, irrespective of its language.
|
|
1095
|
-
* @returns The extracted code content as a {@link CodeString} instance (with `lang` and `meta` properties)
|
|
1096
|
-
* if a matching code block is found, or as the original `text` if no match is found.
|
|
1134
|
+
* @param lang - The selector string.
|
|
1135
|
+
* @returns An array of parsed selector parts.
|
|
1097
1136
|
*/
|
|
1098
|
-
declare function
|
|
1137
|
+
declare function parseCodeBlockSelector(lang?: string): CodeBlockSelectorPart[];
|
|
1099
1138
|
/**
|
|
1100
|
-
* Extracts fenced code block(s) from the input `text
|
|
1139
|
+
* Extracts fenced code block(s) from the input `text`, with support for nested path selectors.
|
|
1140
|
+
*
|
|
1141
|
+
* This function acts as a query engine for Markdown code blocks. It can extract
|
|
1142
|
+
* single blocks, multiple blocks, or drill down into nested structures using
|
|
1143
|
+
* CSS-like syntax.
|
|
1101
1144
|
*
|
|
1102
1145
|
* @example
|
|
1103
1146
|
* ```ts
|
|
1104
|
-
*
|
|
1105
|
-
*
|
|
1106
|
-
*
|
|
1107
|
-
* //
|
|
1108
|
-
* const
|
|
1147
|
+
* // Simple extraction (last block)
|
|
1148
|
+
* const code = extractCodeBlock(input, 'js');
|
|
1149
|
+
*
|
|
1150
|
+
* // Nested extraction
|
|
1151
|
+
* const inner = extractCodeBlock(input, 'md > ts');
|
|
1152
|
+
*
|
|
1153
|
+
* // Extract all matching blocks
|
|
1154
|
+
* const all = extractCodeBlock(input, { lang: 'container > item', all: true });
|
|
1109
1155
|
* ```
|
|
1110
1156
|
*
|
|
1111
|
-
* @param text - The input string
|
|
1112
|
-
* @param
|
|
1113
|
-
*
|
|
1114
|
-
*
|
|
1115
|
-
* - `all`: If `true`, returns an array of all matching blocks.
|
|
1116
|
-
* @returns If `options.all` is true, returns an array of {@link CodeString} or string.
|
|
1117
|
-
* Otherwise, returns a single {@link CodeString} or the original `text` if no match is found at the specified index.
|
|
1157
|
+
* @param text - The input string containing Markdown.
|
|
1158
|
+
* @param langOrOptions - Either a language/selector string or a full {@link ExtractCodeBlockOptions} object.
|
|
1159
|
+
* @returns A single {@link CodeString}, an array of {@link CodeString}s (if `all: true`),
|
|
1160
|
+
* or the original `text` if no matches are found at the specified index.
|
|
1118
1161
|
*/
|
|
1119
|
-
declare function extractCodeBlock(text: string,
|
|
1162
|
+
declare function extractCodeBlock(text: string, langOrOptions?: string | ExtractCodeBlockOptions): CodeString | string | (CodeString | string)[];
|
|
1120
1163
|
|
|
1121
|
-
export { BinarySemaphore, type BinarySemaphoreAcquireOptions, type BinarySemaphoreOptions, type BinarySemaphoreReleaseOptions, type BinarySemaphoreReleaserFunc, type CodeString, ConfigFile, DefaultAllTextFiles, DefaultAsyncSemaphoreCapacity, Deque, type ExtractCodeBlockOptions, FilenameReservedRegex, type IncludeFiles, IntSet, type LoadConfigFileOptions, RateLimit, type SanitizeFilenameOptions, Semaphore, type SemaphoreIsReadyFuncType, type SemaphoreOptions, type SemaphoreTaskItem, SignalGate, type StringifyFunc, type TraverseFolderHandler, type TraverseFolderSyncHandler, WindowsReservedNameRegex, arrayHasAll, extNameLevel, extractCodeBlock, filenameReservedRegex, findPort, getMultiLevelExtname, glob, isStringIn, isValidFilename, isValidFilepath, normalizeIncludeFiles, omitDeepBy, omitEmptyDeep, parseFrontMatter, parseYaml, reControlCharsRegex, registerYamlTag, removeLeadingEmptyLines, sanitizeFilename, sanitizeFilepath, sleep, stringifyYaml, toCamelCase, toCapitalCase, toPascalCase, traverseFolder, traverseFolderSync, yieldExec };
|
|
1164
|
+
export { BinarySemaphore, type BinarySemaphoreAcquireOptions, type BinarySemaphoreOptions, type BinarySemaphoreReleaseOptions, type BinarySemaphoreReleaserFunc, type CodeBlockCombinator, type CodeBlockSelectorPart, type CodeString, ConfigFile, DefaultAllTextFiles, DefaultAsyncSemaphoreCapacity, Deque, type ExtractCodeBlockOptions, FilenameReservedRegex, type IncludeFiles, IntSet, type LoadConfigFileOptions, RateLimit, type SanitizeFilenameOptions, Semaphore, type SemaphoreIsReadyFuncType, type SemaphoreOptions, type SemaphoreTaskItem, SignalGate, type StringifyFunc, type TraverseFolderHandler, type TraverseFolderSyncHandler, WindowsReservedNameRegex, arrayHasAll, extNameLevel, extractCodeBlock, extractTopLevelCodeBlocks, filenameReservedRegex, findPort, getMultiLevelExtname, glob, isStringIn, isValidFilename, isValidFilepath, normalizeIncludeFiles, omitDeepBy, omitEmptyDeep, parseCodeBlockSelector, parseFrontMatter, parseYaml, reControlCharsRegex, registerYamlTag, removeLeadingEmptyLines, sanitizeFilename, sanitizeFilepath, sleep, stringifyYaml, toCamelCase, toCapitalCase, toPascalCase, traverseFolder, traverseFolderSync, yieldExec };
|
package/dist/index.d.ts
CHANGED
|
@@ -1056,16 +1056,47 @@ interface CodeString extends String {
|
|
|
1056
1056
|
*/
|
|
1057
1057
|
meta?: string;
|
|
1058
1058
|
}
|
|
1059
|
+
/**
|
|
1060
|
+
* Supported combinators for code block selectors.
|
|
1061
|
+
*
|
|
1062
|
+
* - `>` (Direct Child): Matches top-level code blocks within the current context.
|
|
1063
|
+
* - ` ` (Descendant): Matches all code blocks within the current context, including deeply nested ones. (Planned)
|
|
1064
|
+
* - `+` (Adjacent Sibling): Matches the very next code block at the same nesting level. (Planned)
|
|
1065
|
+
* - `~` (General Sibling): Matches all subsequent code blocks at the same nesting level. (Planned)
|
|
1066
|
+
*/
|
|
1067
|
+
type CodeBlockCombinator = '>' | ' ' | '+' | '~';
|
|
1068
|
+
/**
|
|
1069
|
+
* Represents a single segment in a code block selector path.
|
|
1070
|
+
*
|
|
1071
|
+
* A path like `md > ts` is parsed into two parts:
|
|
1072
|
+
* 1. `{ combinator: ' ', lang: 'md' }`
|
|
1073
|
+
* 2. `{ combinator: '>', lang: 'ts' }`
|
|
1074
|
+
*/
|
|
1075
|
+
interface CodeBlockSelectorPart {
|
|
1076
|
+
/**
|
|
1077
|
+
* The relationship to the previous segment in the path.
|
|
1078
|
+
* For the first segment, ' ' usually implies a search in the root context.
|
|
1079
|
+
*/
|
|
1080
|
+
combinator: CodeBlockCombinator;
|
|
1081
|
+
/**
|
|
1082
|
+
* The target language identifier or alias to match.
|
|
1083
|
+
*/
|
|
1084
|
+
lang: string;
|
|
1085
|
+
}
|
|
1059
1086
|
/**
|
|
1060
1087
|
* Options for extracting code blocks.
|
|
1061
1088
|
*/
|
|
1062
1089
|
interface ExtractCodeBlockOptions {
|
|
1063
1090
|
/**
|
|
1064
|
-
* Optional. The expected language identifier
|
|
1091
|
+
* Optional. The expected language identifier or a CSS-like selector path.
|
|
1092
|
+
* Supports aliases (e.g., 'js' for 'javascript').
|
|
1093
|
+
*
|
|
1094
|
+
* @example 'ts' - Find the last TypeScript block.
|
|
1095
|
+
* @example 'md > ts' - Find ts blocks inside md blocks.
|
|
1065
1096
|
*/
|
|
1066
1097
|
lang?: string;
|
|
1067
1098
|
/**
|
|
1068
|
-
* Optional. The 0-based index of the code block to extract.
|
|
1099
|
+
* Optional. The 0-based index of the code block to extract from the final result set.
|
|
1069
1100
|
* Supports negative indexing: -1 means the last one, -2 means the second to last, etc.
|
|
1070
1101
|
* Defaults to -1.
|
|
1071
1102
|
*/
|
|
@@ -1074,48 +1105,60 @@ interface ExtractCodeBlockOptions {
|
|
|
1074
1105
|
* Optional. If true, returns an array of all matching code blocks.
|
|
1075
1106
|
*/
|
|
1076
1107
|
all?: boolean;
|
|
1108
|
+
/**
|
|
1109
|
+
* Optional. A map of language aliases to their normalized names.
|
|
1110
|
+
*/
|
|
1111
|
+
langMap?: Record<string, string>;
|
|
1077
1112
|
}
|
|
1078
1113
|
/**
|
|
1079
|
-
* Extracts fenced code
|
|
1114
|
+
* Extracts top-level fenced code blocks from the input `text`.
|
|
1080
1115
|
*
|
|
1081
|
-
* This function
|
|
1082
|
-
*
|
|
1116
|
+
* This function handles nested blocks correctly by ensuring the closing fence
|
|
1117
|
+
* matches the length and character of the opening fence. It only scans the
|
|
1118
|
+
* immediate level of the provided text.
|
|
1119
|
+
*
|
|
1120
|
+
* @param text - The input string.
|
|
1121
|
+
* @param options - Extraction options (uses `lang` and `langMap` for filtering).
|
|
1122
|
+
* @returns An array of {@link CodeString} objects representing the matched blocks.
|
|
1123
|
+
*/
|
|
1124
|
+
declare function extractTopLevelCodeBlocks(text: string, options?: ExtractCodeBlockOptions): CodeString[];
|
|
1125
|
+
/**
|
|
1126
|
+
* Parses a selector string into an array of structured {@link CodeBlockSelectorPart} objects.
|
|
1083
1127
|
*
|
|
1084
1128
|
* @example
|
|
1085
1129
|
* ```ts
|
|
1086
|
-
*
|
|
1087
|
-
*
|
|
1088
|
-
* console.log(code); // 'console.log("hello");'
|
|
1089
|
-
* console.log(code.lang); // 'js'
|
|
1130
|
+
* parseCodeBlockSelector('md > ts');
|
|
1131
|
+
* // => [{combinator: ' ', lang: 'md'}, {combinator: '>', lang: 'ts'}]
|
|
1090
1132
|
* ```
|
|
1091
1133
|
*
|
|
1092
|
-
* @param
|
|
1093
|
-
* @
|
|
1094
|
-
* the last code block in the text is returned, irrespective of its language.
|
|
1095
|
-
* @returns The extracted code content as a {@link CodeString} instance (with `lang` and `meta` properties)
|
|
1096
|
-
* if a matching code block is found, or as the original `text` if no match is found.
|
|
1134
|
+
* @param lang - The selector string.
|
|
1135
|
+
* @returns An array of parsed selector parts.
|
|
1097
1136
|
*/
|
|
1098
|
-
declare function
|
|
1137
|
+
declare function parseCodeBlockSelector(lang?: string): CodeBlockSelectorPart[];
|
|
1099
1138
|
/**
|
|
1100
|
-
* Extracts fenced code block(s) from the input `text
|
|
1139
|
+
* Extracts fenced code block(s) from the input `text`, with support for nested path selectors.
|
|
1140
|
+
*
|
|
1141
|
+
* This function acts as a query engine for Markdown code blocks. It can extract
|
|
1142
|
+
* single blocks, multiple blocks, or drill down into nested structures using
|
|
1143
|
+
* CSS-like syntax.
|
|
1101
1144
|
*
|
|
1102
1145
|
* @example
|
|
1103
1146
|
* ```ts
|
|
1104
|
-
*
|
|
1105
|
-
*
|
|
1106
|
-
*
|
|
1107
|
-
* //
|
|
1108
|
-
* const
|
|
1147
|
+
* // Simple extraction (last block)
|
|
1148
|
+
* const code = extractCodeBlock(input, 'js');
|
|
1149
|
+
*
|
|
1150
|
+
* // Nested extraction
|
|
1151
|
+
* const inner = extractCodeBlock(input, 'md > ts');
|
|
1152
|
+
*
|
|
1153
|
+
* // Extract all matching blocks
|
|
1154
|
+
* const all = extractCodeBlock(input, { lang: 'container > item', all: true });
|
|
1109
1155
|
* ```
|
|
1110
1156
|
*
|
|
1111
|
-
* @param text - The input string
|
|
1112
|
-
* @param
|
|
1113
|
-
*
|
|
1114
|
-
*
|
|
1115
|
-
* - `all`: If `true`, returns an array of all matching blocks.
|
|
1116
|
-
* @returns If `options.all` is true, returns an array of {@link CodeString} or string.
|
|
1117
|
-
* Otherwise, returns a single {@link CodeString} or the original `text` if no match is found at the specified index.
|
|
1157
|
+
* @param text - The input string containing Markdown.
|
|
1158
|
+
* @param langOrOptions - Either a language/selector string or a full {@link ExtractCodeBlockOptions} object.
|
|
1159
|
+
* @returns A single {@link CodeString}, an array of {@link CodeString}s (if `all: true`),
|
|
1160
|
+
* or the original `text` if no matches are found at the specified index.
|
|
1118
1161
|
*/
|
|
1119
|
-
declare function extractCodeBlock(text: string,
|
|
1162
|
+
declare function extractCodeBlock(text: string, langOrOptions?: string | ExtractCodeBlockOptions): CodeString | string | (CodeString | string)[];
|
|
1120
1163
|
|
|
1121
|
-
export { BinarySemaphore, type BinarySemaphoreAcquireOptions, type BinarySemaphoreOptions, type BinarySemaphoreReleaseOptions, type BinarySemaphoreReleaserFunc, type CodeString, ConfigFile, DefaultAllTextFiles, DefaultAsyncSemaphoreCapacity, Deque, type ExtractCodeBlockOptions, FilenameReservedRegex, type IncludeFiles, IntSet, type LoadConfigFileOptions, RateLimit, type SanitizeFilenameOptions, Semaphore, type SemaphoreIsReadyFuncType, type SemaphoreOptions, type SemaphoreTaskItem, SignalGate, type StringifyFunc, type TraverseFolderHandler, type TraverseFolderSyncHandler, WindowsReservedNameRegex, arrayHasAll, extNameLevel, extractCodeBlock, filenameReservedRegex, findPort, getMultiLevelExtname, glob, isStringIn, isValidFilename, isValidFilepath, normalizeIncludeFiles, omitDeepBy, omitEmptyDeep, parseFrontMatter, parseYaml, reControlCharsRegex, registerYamlTag, removeLeadingEmptyLines, sanitizeFilename, sanitizeFilepath, sleep, stringifyYaml, toCamelCase, toCapitalCase, toPascalCase, traverseFolder, traverseFolderSync, yieldExec };
|
|
1164
|
+
export { BinarySemaphore, type BinarySemaphoreAcquireOptions, type BinarySemaphoreOptions, type BinarySemaphoreReleaseOptions, type BinarySemaphoreReleaserFunc, type CodeBlockCombinator, type CodeBlockSelectorPart, type CodeString, ConfigFile, DefaultAllTextFiles, DefaultAsyncSemaphoreCapacity, Deque, type ExtractCodeBlockOptions, FilenameReservedRegex, type IncludeFiles, IntSet, type LoadConfigFileOptions, RateLimit, type SanitizeFilenameOptions, Semaphore, type SemaphoreIsReadyFuncType, type SemaphoreOptions, type SemaphoreTaskItem, SignalGate, type StringifyFunc, type TraverseFolderHandler, type TraverseFolderSyncHandler, WindowsReservedNameRegex, arrayHasAll, extNameLevel, extractCodeBlock, extractTopLevelCodeBlocks, filenameReservedRegex, findPort, getMultiLevelExtname, glob, isStringIn, isValidFilename, isValidFilepath, normalizeIncludeFiles, omitDeepBy, omitEmptyDeep, parseCodeBlockSelector, parseFrontMatter, parseYaml, reControlCharsRegex, registerYamlTag, removeLeadingEmptyLines, sanitizeFilename, sanitizeFilepath, sleep, stringifyYaml, toCamelCase, toCapitalCase, toPascalCase, traverseFolder, traverseFolderSync, yieldExec };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var t,e=Object.create,i=Object.defineProperty,r=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,n=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,u=(t,e,n,u)=>{if(e&&"object"==typeof e||"function"==typeof e)for(let c of s(e))o.call(t,c)||c===n||i(t,c,{get:()=>e[c],enumerable:!(u=r(e,c))||u.enumerable});return t},c=(t,r,s)=>(s=null!=t?e(n(t)):{},u(!r&&t&&t.__esModule?s:i(s,"default",{value:t,enumerable:!0}),t)),a={};((t,e)=>{for(var r in e)i(t,r,{get:e[r],enumerable:!0})})(a,{BinarySemaphore:()=>lt,ConfigFile:()=>q,DefaultAllTextFiles:()=>R,DefaultAsyncSemaphoreCapacity:()=>at,Deque:()=>it,FilenameReservedRegex:()=>I,IntSet:()=>rt,RateLimit:()=>pt,Semaphore:()=>mt,SignalGate:()=>yt,WindowsReservedNameRegex:()=>_,arrayHasAll:()=>tt,extNameLevel:()=>X,extractCodeBlock:()=>qt,filenameReservedRegex:()=>W,findPort:()=>vt,getMultiLevelExtname:()=>p,glob:()=>A,isStringIn:()=>E,isValidFilename:()=>G,isValidFilepath:()=>H,normalizeIncludeFiles:()=>C,omitDeepBy:()=>bt,omitEmptyDeep:()=>Ft,parseFrontMatter:()=>F,parseYaml:()=>v,reControlCharsRegex:()=>Z,registerYamlTag:()=>g,removeLeadingEmptyLines:()=>b,sanitizeFilename:()=>K,sanitizeFilepath:()=>Q,sleep:()=>st,stringifyYaml:()=>w,toCamelCase:()=>M,toCapitalCase:()=>L,toPascalCase:()=>D,traverseFolder:()=>T,traverseFolderSync:()=>z,yieldExec:()=>nt}),module.exports=(t=a,u(i({},"__esModule",{value:!0}),t));var h=require("fs"),f=c(require("path")),l=require("load-config-file"),m=c(require("path"));function p(t,e=1){let i="";for(;e--;){const e=m.default.extname(t);if(!e)break;i=e+i,t=m.default.basename(t,e)}return i}var d=require("yaml"),y=[];function g(t){Array.isArray(t)||(t=[t]);for(const e of t){-1===y.indexOf(e)&&y.push(e)}}function v(t,e){if(e)if(e.customTags){if(Array.isArray(e.customTags))e.customTags=y.concat(e.customTags);else if("function"==typeof e.customTags){const t=e.customTags;e.customTags=e=>t(y.concat(e))}}else e.customTags=y;else e={customTags:y};return(0,d.parse)(t,e)}function w(t,e){if(e)if(e.customTags){if(Array.isArray(e.customTags))e.customTags=y.concat(e.customTags);else if("function"==typeof e.customTags){const t=e.customTags;e.customTags=e=>t(y.concat(e))}}else e.customTags=y;else e={customTags:y};return(0,d.stringify)(t,e)}function b(t){const e=/^\s*(#[^\r\n]*)?[\r\n]+/;let i;for(;null!==(i=e.exec(t))&&((t=t.substring(i[0].length)).startsWith("\n")||t.startsWith("\r")||t.trimStart().startsWith("#")););return t}var x="---";function F(t,e=x){const i=e.length,r=b(t);if(r.startsWith(e)&&("\n"===r[e.length]||"\r"===r[e.length])){let t=r.indexOf("\n"+e,i);if(-1!==t){const s=r.slice(i,t);for(t+=e.length+1;"\n"===r[t]||"\r"===r[t];)t++;const n=r.slice(t);return{data:v(s)||{},content:n}}}return{data:{},content:t}}var q=class{static register(t,e,i){l.Config.register(t,e),"string"==typeof t&&(t=[t]);for(const e of t)this.stringifys[e]=i}static loadSync(t,e){return function(t,{extLevel:e=1,externalFile:i}={}){t=S(t,e);let r=l.Config.loadSync(t);if(!r&&i){if(!f.default.isAbsolute(i)){const e=f.default.dirname(t);i=f.default.join(e,i)}if((0,h.existsSync)(i)){const t=F((0,h.readFileSync)(i,"utf8")).data;Object.keys(t).length&&(r=t)}}return r}(t,e)}static saveSync(t,e,i){return function(t,e,{extLevel:i=1}={}){const r=function(t,e=1){"."===t[0]&&e++;let i=p(t,e);(!i||i.split(".").length<=1)&&(t+=".yaml",i=".yaml");const r=new String(t);return r.extname=i,r}(t,i),s=r.extname;t=r.toString();const n=q.stringifys[s];if(!n)throw new Error(`${t} unsupported mime type: ${s}`);e=n(e);const o=f.default.dirname(t);(0,h.existsSync)(o)||(0,h.mkdirSync)(o,{recursive:!0});return(0,h.writeFileSync)(t,e,{encoding:"utf8"}),t}(t,e,i)}static existsSync(t,e){return t=S(t,e?.extLevel),l.Config.existsSync(t,e)}};function S(t,e=1){"."===t[0]&&e++;const i=p(t,e);return i&&i.split(".").length>1&&(t=t.slice(0,-i.length)),t}q.stringifys={},q.register([".yml",".yaml"],v,w),q.register([".json"],function(t){return JSON.parse(t)},t=>JSON.stringify(t,null,2));var k=require("@isdk/glob"),j=c(require("path"));function A(t,e,i){return i&&(t=j.default.relative(i,t)),(0,k.globMatch)(t,e)}function E(t,e){return"string"==typeof e&&(e=[e]),-1!==e.indexOf(t)}var R=["**/*.((j|t)s?(x)|m(j|t)s)?(x)","**/*.(md|markdown|txt|?(x)htm?(l)|yaml|yml|xml|json|bat|sh|bash|zsh|ini|css|scss|less|sass|py|rb|php|go|java|c|cpp|h|hpp|hxx|rust|zig)"];function C(t,e=[]){if(t)if(Array.isArray(t))t=[...t];else{const i=t.include||[],r=t.exclude||[];0===i.length&&i.push(...e),t=[...i];for(const e of r)t.push(`!${e}`)}else t=[...e];return 0===t.length&&t.push(...e),t}var O=require("fs/promises"),$=require("fs"),P=c(require("path"));async function T(t,e){const i=await(0,O.readdir)(t,{withFileTypes:!0});for(const r of i){const i=P.default.join(t,r.name);try{if(r.isDirectory()){await e(i,r)||await T(i,e)}else{if(!0===await e(i,r))break}}catch(t){console.error(`Error processing file: ${i}`),console.error(t)}}}function z(t,e){const i=(0,$.readdirSync)(t,{withFileTypes:!0});for(const r of i){const i=P.default.join(t,r.name);try{if(r.isDirectory()){e(i,r)||T(i,e)}else{if(!0===e(i,r))break}}catch(t){console.error(`Error processing file: ${i}`),console.error(t)}}}function D(t){if(!t)return"";return t.replace(/[-_ ]+/g," ").split(" ").filter(Boolean).map(t=>{let e=t.charAt(0).toUpperCase();t=t.slice(1);let i=0;for(;/[A-Z]/.test(t[i]);)i++;return e+=i?t.slice(0,i).toLowerCase()+t.slice(i):t,e}).join("")}function M(t){return(t=D(t)).charAt(0).toLowerCase()+t.slice(1)}function L(t){if(!t)return"";return t.replace(/[-_ ]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").split(" ").filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join(" ")}var N=c(require("path")),B=require("@isdk/common-error"),I=/[<>:"/\\|?*\u0000-\u001F]/,_=/^(con|prn|aux|nul|com\d|lpt\d)$/i,J=100,Y=/^\.+(\\|\/)|^\.+$/,U=/\.+$/,V=/[\u0000-\u001F\u0080-\u009F\u200E\u200F\u202A-\u202E\u2066-\u2069]/;function W(){return new RegExp(I.source,"g")}function Z(){return new RegExp(V.source,"g")}function G(t){return t&&!(I.test(t)||Z().test(t)||Y.test(t)||U.test(t))}function H(t){const e=t.split(N.default.sep);return("/"===t[0]||e[0]&&N.default.dirname(e[0])===e[0])&&e.shift(),e.every(G)}function K(t,e={}){const i=e.replacement||"!";if((I.test(i)||V.test(i))&&(0,B.throwError)("Replacement string cannot contain reserved filename characters","sanitizeFilename",B.ErrorCode.InvalidArgument),i.length>0){const e=/([<>:"/\\|?*\u0000-\u001F]){2,}/;t=t.replace(e,"$1")}if(t=(t=(t=(t=(t=t.normalize("NFD")).replace(Y,i)).replace(W(),i)).replace(Z(),i)).replace(U,""),i.length>0){"."===t[0]||"."!==t[0]||(t=i+t),"."===t[t.length-1]&&(t+=i)}t=_.test(t)?t+i:t;const r="number"==typeof e.maxLength?e.maxLength:J;if(t.length>r){const e=t.lastIndexOf(".");if(-1===e)t=t.slice(0,r);else{const i=t.slice(0,e),s=t.slice(e);t=i.slice(0,Math.max(1,r-s.length))+s}}return t}function Q(t,e={}){const i=t.split(N.default.sep);let r;("/"===t[0]||i[0]&&N.default.dirname(i[0])===i[0])&&(r=i.shift());const s=i.map(t=>K(t,e));return void 0!==r&&s.unshift(r),s.join(N.default.sep)}function X(t){return t.split(".").length-1}function tt(t,e){const i=new Set(e),r=new Set;for(const e of t)if(i.has(e)&&(r.add(e),r.size===i.size))return!0;return r.size===i.size}function et(t=0){return e=Math.min(Math.max(16,t),1073741824),e>>>=0,e-=1,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,1+(e|=e>>16);var e}var it=class extends Array{constructor(t,e){Array.isArray(t)?(super(...t),this._length=t.length,t=void 0):(super(),this._length=0),this._capacity=et(t),this._front=0,this._disableAutoResize=e}push(t){let e=this._length;this.checkCapacity(e+1);const i=this._front+e&this._capacity-1;return this[i]=t,++e<=this._capacity&&(this._length=e),i}unshift(t){let e=this._length;this.checkCapacity(++e);const i=this._capacity,r=(this._front-1&i-1^i)-i;return this[r]=t,this._front=r,e<=this._capacity&&(this._length=e),r}pop(t){let e=this._length;if(0===e)return;let i=this._front+e-1&this._capacity-1,r=this[i];for(;--e>0&&t&&null==r;)i--,r=this[i];return this[i]=void 0,this._length=e,r}shift(t){let e=this._length;if(0===e)return;let i=this._front,r=this[i];for(;--e>0&&t&&null==r;)i=i+1&this._capacity-1,r=this[i];return this[i]=void 0,this._front=i+1&this._capacity-1,this._length=e,r}get size(){return this._length}get(t){let e;if(t===(0|t)){const i=this._length;t<0&&(t+=i),t>=0&&t<i&&(e=this[this._front+t&this._capacity-1])}return e}peekBack(){const t=this._length;if(0===t)return;return this[this._front+t-1&this._capacity-1]}peekFront(){if(0!==this._length)return this[this._front]}clear(){const t=this._length,e=this._front,i=this._capacity;for(let r=0;r<t;++r)this[e+r&i-1]=void 0;this._length=0,this._front=0}isEmpty(){return 0===this._length}removeAt(t){const e=this._length;if(t<0||t>=e)return;const i=this._front,r=this._capacity-1,s=i+t&r,n=this[s];if(t<e/2)this.copyWithin(i+1&r,i,i+t&r),this[i]=void 0,this._front=i+1&r;else{this.copyWithin(s,s+1&r,i+e&r);this[i+e-1&r]=void 0}return this._length=e-1,n}checkCapacity(t){this._capacity<t&&!this._disableAutoResize&&this.resizeTo(et(1.5*this._capacity+16))}resizeTo(t){const e=this._capacity;this._capacity=t;const i=this._front,r=this._length;if(i+r>e){!function(t,e,i,r,s){for(let n=0;n<s;++n)i[n+r]=t[n+e],t[n+e]=void 0}(this,0,this,e,i+r&e-1)}}},rt=class t{constructor(t=0){this.bitField=t}static has(t,e){return!!(t&1<<e)}static add(t,e){return t|1<<e}static delete(t,e){return t&~(1<<e)}add(t){return this.bitField|=1<<t,this}delete(t){return this.bitField&=~(1<<t),this}has(e){return t.has(this.bitField,e)}clear(){return this.bitField=0,this}valueOf(){return this.bitField}toString(){return this.bitField.toString()}toJSON(){return this.bitField}};async function st(t){return new Promise(e=>setTimeout(e,t))}async function nt(){return new Promise(t=>{setImmediate(t)})}var ot=require("util-ex"),ut=require("events-ex"),ct=require("@isdk/common-error"),at=32;function ht(t){return"function"==typeof t}function ft(){return"1"}var lt=class{constructor(t={}){const{initFn:e=ft,pauseFn:i,resumeFn:r,capacity:s=at}=t;if(ht(i)!==ht(r))throw new Error("pauseFn and resumeFn must be both set for pausing");this.waiting=new it(s),this.emitter=new ut.EventEmitter,this.useDefaultTokens=e===ft,this.pauseFn=i,this.resumeFn=r,this.initTokenFn=e,this.paused=!1,this._activeCount=0,this.initFree(t),this.init(t)}initFree(t){this.free=this.initTokenFn()}onReleased(t){const e=t?.token,i=this.waiting.shift(!0);i?this._dispatchTask(i,t):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.unlock(e))}init(t){this.emitter.on("release",t=>{this.onReleased(t)})}_newReleaser(t){let e=!1;const i=()=>{e||(e=!0,this.release(t))};return t&&Object.assign(i,t),i}_dispatchTask(t,e){const{resolve:i}=t;i(this._newReleaser(e))}lock(t){const e=this.free;if(e)return this.free=void 0,e}unlock(t){this.free=this.useDefaultTokens?"1":t??this.initTokenFn()}tryAcquire(t){return this.lock(t)}async acquire(t){this._activeCount++;const e=t?.signal,i=t=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn());const i=this.waiting.push(t),r=t.reject;return e&&e.addEventListener("abort",()=>{this.waiting[i]=void 0;const t=e.reason instanceof Error?e.reason:new ct.AbortError(e.reason||"aborted");e.alreadyRejected=!0,r(t)}),i},r=this.tryAcquire(t),s=r&&(0,ot.isAsync)(r),n=e=>new Promise((r,s)=>{const n={...t,resolve:r,reject:s,token:e};void 0===e?i(n):this._dispatchTask(n,{...t,token:e})});return s?r.then(t=>n(t)):n(r)}release(t){this._activeCount--,this.emitter.emit("release",t)}drain(){const t=[this.acquire()];return Promise.all(t)}abort(t){let e;for(;e=this.waiting.shift(!0);)e.reject(new ct.AbortError(t))}get activeCount(){return this._activeCount}get pendingCount(){return this.waiting.size}},mt=class extends lt{constructor(t,e){if("number"==typeof t)(e=e||{}).maxConcurrency=t;else if("number"!=typeof(e=t).maxConcurrency)throw new Error("maxConcurrency must be set");super(e),this.maxConcurrency=e.maxConcurrency,e.isReadyFn&&(this.isReady=e.isReadyFn)}initFree(t){const e=t.maxConcurrency=Math.max(1,t.maxConcurrency);this.free=new it(e);for(let t=0;t<e;t++)this.free.push(this.initTokenFn())}tryAcquire(t){let e=this.isReady;if(e&&(0,ot.isAsync)(e)){return e instanceof Promise||(e=e()),e.then(e=>{if(e)return this.lock(t)})}if(!e||e())return this.lock(t)}unlock(t){this.free.push(this.useDefaultTokens?"1":t??this.initTokenFn())}lock(t){return this.free.pop()}drain(){const t=new Array(this.maxConcurrency);for(let e=0;e<this.maxConcurrency;e++)t[e]=this.acquire();return Promise.all(t)}};function pt(t,{timeUnit:e=1e3,uniformDistribution:i=!1}={}){const r=new mt(i?1:t),s=i?e/t:e;return async function(){await r.acquire(),setTimeout(()=>r.release(),s)}}var dt=require("@isdk/common-error"),yt=class{constructor(){this._isSignaled=!1,this.waitQueue=[]}get signaled(){return this._isSignaled}signal(t){if(this._isSignaled)return;this._isSignaled=!0,this._signalValue=t;const e=this.waitQueue.slice();for(this.waitQueue.length=0;e.length>0;){const t=e.shift();t?.resolve(this._signalValue)}}reset(){this._isSignaled=!1,this._signalValue=void 0,this.waitQueue.length=0}abort(t){if(this.waitQueue.length){const e=this.waitQueue.slice();this.waitQueue.length=0;const i=new dt.AbortError(t);for(;e.length>0;){const{reject:t}=e.shift();t(i)}}}async wait(){return new Promise((t,e)=>{this._isSignaled?t(this._signalValue):this.waitQueue.push({resolve:t,reject:e})})}},gt=c(require("net"));async function vt(t,e=10){return new Promise((i,r)=>{void 0===t?t=0:("string"==typeof t&&(t=parseInt(t)),t>=0||(t=0));const s=gt.default.createServer();s.on("error",i=>{"EADDRINUSE"===i.code&&(t++,--e>0)?s.listen(t):r(i)}),s.on("listening",async()=>{const t=s.address().port;s.close(e=>{e?r(e):i(t)})}),s.listen(t)})}var wt=require("lodash-es");function bt(t,e,i=new WeakMap){if(!(0,wt.isObject)(t)||(0,wt.isNil)(t))return t;if(i.has(t))return i.get(t);let r;if(Array.isArray(t)){r=[],i.set(t,r);const s=t.map(t=>bt(t,e,i)).filter((t,i)=>!e(t,i.toString()));return Object.assign(r,s),r.length>0?r:void 0}if((0,wt.isPlainObject)(t)){r={},i.set(t,r);const s=Reflect.ownKeys(t);for(const n of s){const s=bt(t[n],e,i);e(s,n)||(r[n]=s)}return(0,wt.isEmpty)(r)?void 0:r}return t}var xt=require("lodash-es");var Ft=(t,e)=>bt(t,t=>function(t){return!!(0,xt.isNil)(t)||"string"==typeof t&&0===t.trim().length||!(!(0,xt.isArray)(t)&&!(0,xt.isPlainObject)(t))&&(0,xt.isEmpty)(t)}(t)||e&&"function"==typeof t);function qt(t,e){const i="string"==typeof e?{lang:e}:e??{},{lang:r,index:s=-1,all:n}=i,o=t.trim(),u=/(```|~~~)(?<lang>\S*)[ \t]*(?<meta>\S*?)\n(?<code>[\s\S]*?)\1/gm,c=[];let a;for(;null!==(a=u.exec(o));){const t=a.groups?.lang?.toLowerCase();if(!r||r===t){let t=a.groups.code;if(a.groups.lang||a.groups.meta){const e=new String(t);a.groups.lang&&(e.lang=a.groups.lang.toLowerCase()),a.groups.meta&&(e.meta=a.groups.meta),t=e}else t=new String(t);c.push(t)}}if(n)return c;return c[s<0?c.length+s:s]??t}
|
|
1
|
+
"use strict";var t,e=Object.create,s=Object.defineProperty,r=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,c=(t,e,i,c)=>{if(e&&"object"==typeof e||"function"==typeof e)for(let u of n(e))o.call(t,u)||u===i||s(t,u,{get:()=>e[u],enumerable:!(c=r(e,u))||c.enumerable});return t},u=(t,r,n)=>(n=null!=t?e(i(t)):{},c(!r&&t&&t.__esModule?n:s(n,"default",{value:t,enumerable:!0}),t)),a={};((t,e)=>{for(var r in e)s(t,r,{get:e[r],enumerable:!0})})(a,{BinarySemaphore:()=>ft,ConfigFile:()=>F,DefaultAllTextFiles:()=>C,DefaultAsyncSemaphoreCapacity:()=>at,Deque:()=>st,FilenameReservedRegex:()=>I,IntSet:()=>rt,RateLimit:()=>pt,Semaphore:()=>mt,SignalGate:()=>yt,WindowsReservedNameRegex:()=>_,arrayHasAll:()=>tt,extNameLevel:()=>X,extractCodeBlock:()=>At,extractTopLevelCodeBlocks:()=>qt,filenameReservedRegex:()=>V,findPort:()=>vt,getMultiLevelExtname:()=>p,glob:()=>A,isStringIn:()=>E,isValidFilename:()=>Z,isValidFilepath:()=>H,normalizeIncludeFiles:()=>R,omitDeepBy:()=>wt,omitEmptyDeep:()=>kt,parseCodeBlockSelector:()=>St,parseFrontMatter:()=>k,parseYaml:()=>v,reControlCharsRegex:()=>W,registerYamlTag:()=>g,removeLeadingEmptyLines:()=>w,sanitizeFilename:()=>K,sanitizeFilepath:()=>Q,sleep:()=>nt,stringifyYaml:()=>b,toCamelCase:()=>M,toCapitalCase:()=>B,toPascalCase:()=>P,traverseFolder:()=>z,traverseFolderSync:()=>D,yieldExec:()=>it}),module.exports=(t=a,c(s({},"__esModule",{value:!0}),t));var h=require("fs"),l=u(require("path")),f=require("load-config-file"),m=u(require("path"));function p(t,e=1){let s="";for(;e--;){const e=m.default.extname(t);if(!e)break;s=e+s,t=m.default.basename(t,e)}return s}var d=require("yaml"),y=[];function g(t){Array.isArray(t)||(t=[t]);for(const e of t){-1===y.indexOf(e)&&y.push(e)}}function v(t,e){if(e)if(e.customTags){if(Array.isArray(e.customTags))e.customTags=y.concat(e.customTags);else if("function"==typeof e.customTags){const t=e.customTags;e.customTags=e=>t(y.concat(e))}}else e.customTags=y;else e={customTags:y};return(0,d.parse)(t,e)}function b(t,e){if(e)if(e.customTags){if(Array.isArray(e.customTags))e.customTags=y.concat(e.customTags);else if("function"==typeof e.customTags){const t=e.customTags;e.customTags=e=>t(y.concat(e))}}else e.customTags=y;else e={customTags:y};return(0,d.stringify)(t,e)}function w(t){const e=/^\s*(#[^\r\n]*)?[\r\n]+/;let s;for(;null!==(s=e.exec(t))&&((t=t.substring(s[0].length)).startsWith("\n")||t.startsWith("\r")||t.trimStart().startsWith("#")););return t}var x="---";function k(t,e=x){const s=e.length,r=w(t);if(r.startsWith(e)&&("\n"===r[e.length]||"\r"===r[e.length])){let t=r.indexOf("\n"+e,s);if(-1!==t){const n=r.slice(s,t);for(t+=e.length+1;"\n"===r[t]||"\r"===r[t];)t++;const i=r.slice(t);return{data:v(n)||{},content:i}}}return{data:{},content:t}}var F=class{static register(t,e,s){f.Config.register(t,e),"string"==typeof t&&(t=[t]);for(const e of t)this.stringifys[e]=s}static loadSync(t,e){return function(t,{extLevel:e=1,externalFile:s}={}){t=j(t,e);let r=f.Config.loadSync(t);if(!r&&s){if(!l.default.isAbsolute(s)){const e=l.default.dirname(t);s=l.default.join(e,s)}if((0,h.existsSync)(s)){const t=k((0,h.readFileSync)(s,"utf8")).data;Object.keys(t).length&&(r=t)}}return r}(t,e)}static saveSync(t,e,s){return function(t,e,{extLevel:s=1}={}){const r=function(t,e=1){"."===t[0]&&e++;let s=p(t,e);(!s||s.split(".").length<=1)&&(t+=".yaml",s=".yaml");const r=new String(t);return r.extname=s,r}(t,s),n=r.extname;t=r.toString();const i=F.stringifys[n];if(!i)throw new Error(`${t} unsupported mime type: ${n}`);e=i(e);const o=l.default.dirname(t);(0,h.existsSync)(o)||(0,h.mkdirSync)(o,{recursive:!0});return(0,h.writeFileSync)(t,e,{encoding:"utf8"}),t}(t,e,s)}static existsSync(t,e){return t=j(t,e?.extLevel),f.Config.existsSync(t,e)}};function j(t,e=1){"."===t[0]&&e++;const s=p(t,e);return s&&s.split(".").length>1&&(t=t.slice(0,-s.length)),t}F.stringifys={},F.register([".yml",".yaml"],v,b),F.register([".json"],function(t){return JSON.parse(t)},t=>JSON.stringify(t,null,2));var q=require("@isdk/glob"),S=u(require("path"));function A(t,e,s){return s&&(t=S.default.relative(s,t)),(0,q.globMatch)(t,e)}function E(t,e){return"string"==typeof e&&(e=[e]),-1!==e.indexOf(t)}var C=["**/*.((j|t)s?(x)|m(j|t)s)?(x)","**/*.(md|markdown|txt|?(x)htm?(l)|yaml|yml|xml|json|bat|sh|bash|zsh|ini|css|scss|less|sass|py|rb|php|go|java|c|cpp|h|hpp|hxx|rust|zig)"];function R(t,e=[]){if(t)if(Array.isArray(t))t=[...t];else{const s=t.include||[],r=t.exclude||[];0===s.length&&s.push(...e),t=[...s];for(const e of r)t.push(`!${e}`)}else t=[...e];return 0===t.length&&t.push(...e),t}var O=require("fs/promises"),$=require("fs"),T=u(require("path"));async function z(t,e){const s=await(0,O.readdir)(t,{withFileTypes:!0});for(const r of s){const s=T.default.join(t,r.name);try{if(r.isDirectory()){await e(s,r)||await z(s,e)}else{if(!0===await e(s,r))break}}catch(t){console.error(`Error processing file: ${s}`),console.error(t)}}}function D(t,e){const s=(0,$.readdirSync)(t,{withFileTypes:!0});for(const r of s){const s=T.default.join(t,r.name);try{if(r.isDirectory()){e(s,r)||z(s,e)}else{if(!0===e(s,r))break}}catch(t){console.error(`Error processing file: ${s}`),console.error(t)}}}function P(t){if(!t)return"";return t.replace(/[-_ ]+/g," ").split(" ").filter(Boolean).map(t=>{let e=t.charAt(0).toUpperCase();t=t.slice(1);let s=0;for(;/[A-Z]/.test(t[s]);)s++;return e+=s?t.slice(0,s).toLowerCase()+t.slice(s):t,e}).join("")}function M(t){return(t=P(t)).charAt(0).toLowerCase()+t.slice(1)}function B(t){if(!t)return"";return t.replace(/[-_ ]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").split(" ").filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join(" ")}var L=u(require("path")),N=require("@isdk/common-error"),I=/[<>:"/\\|?*\u0000-\u001F]/,_=/^(con|prn|aux|nul|com\d|lpt\d)$/i,J=100,Y=/^\.+(\\|\/)|^\.+$/,G=/\.+$/,U=/[\u0000-\u001F\u0080-\u009F\u200E\u200F\u202A-\u202E\u2066-\u2069]/;function V(){return new RegExp(I.source,"g")}function W(){return new RegExp(U.source,"g")}function Z(t){return t&&!(I.test(t)||W().test(t)||Y.test(t)||G.test(t))}function H(t){const e=t.split(L.default.sep);return("/"===t[0]||e[0]&&L.default.dirname(e[0])===e[0])&&e.shift(),e.every(Z)}function K(t,e={}){const s=e.replacement||"!";if((I.test(s)||U.test(s))&&(0,N.throwError)("Replacement string cannot contain reserved filename characters","sanitizeFilename",N.ErrorCode.InvalidArgument),s.length>0){const e=/([<>:"/\\|?*\u0000-\u001F]){2,}/;t=t.replace(e,"$1")}if(t=(t=(t=(t=(t=t.normalize("NFD")).replace(Y,s)).replace(V(),s)).replace(W(),s)).replace(G,""),s.length>0){"."===t[0]||"."!==t[0]||(t=s+t),"."===t[t.length-1]&&(t+=s)}t=_.test(t)?t+s:t;const r="number"==typeof e.maxLength?e.maxLength:J;if(t.length>r){const e=t.lastIndexOf(".");if(-1===e)t=t.slice(0,r);else{const s=t.slice(0,e),n=t.slice(e);t=s.slice(0,Math.max(1,r-n.length))+n}}return t}function Q(t,e={}){const s=t.split(L.default.sep);let r;("/"===t[0]||s[0]&&L.default.dirname(s[0])===s[0])&&(r=s.shift());const n=s.map(t=>K(t,e));return void 0!==r&&n.unshift(r),n.join(L.default.sep)}function X(t){return t.split(".").length-1}function tt(t,e){const s=new Set(e),r=new Set;for(const e of t)if(s.has(e)&&(r.add(e),r.size===s.size))return!0;return r.size===s.size}function et(t=0){return e=Math.min(Math.max(16,t),1073741824),e>>>=0,e-=1,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,1+(e|=e>>16);var e}var st=class extends Array{constructor(t,e){Array.isArray(t)?(super(...t),this._length=t.length,t=void 0):(super(),this._length=0),this._capacity=et(t),this._front=0,this._disableAutoResize=e}push(t){let e=this._length;this.checkCapacity(e+1);const s=this._front+e&this._capacity-1;return this[s]=t,++e<=this._capacity&&(this._length=e),s}unshift(t){let e=this._length;this.checkCapacity(++e);const s=this._capacity,r=(this._front-1&s-1^s)-s;return this[r]=t,this._front=r,e<=this._capacity&&(this._length=e),r}pop(t){let e=this._length;if(0===e)return;let s=this._front+e-1&this._capacity-1,r=this[s];for(;--e>0&&t&&null==r;)s--,r=this[s];return this[s]=void 0,this._length=e,r}shift(t){let e=this._length;if(0===e)return;let s=this._front,r=this[s];for(;--e>0&&t&&null==r;)s=s+1&this._capacity-1,r=this[s];return this[s]=void 0,this._front=s+1&this._capacity-1,this._length=e,r}get size(){return this._length}get(t){let e;if(t===(0|t)){const s=this._length;t<0&&(t+=s),t>=0&&t<s&&(e=this[this._front+t&this._capacity-1])}return e}peekBack(){const t=this._length;if(0===t)return;return this[this._front+t-1&this._capacity-1]}peekFront(){if(0!==this._length)return this[this._front]}clear(){const t=this._length,e=this._front,s=this._capacity;for(let r=0;r<t;++r)this[e+r&s-1]=void 0;this._length=0,this._front=0}isEmpty(){return 0===this._length}removeAt(t){const e=this._length;if(t<0||t>=e)return;const s=this._front,r=this._capacity-1,n=s+t&r,i=this[n];if(t<e/2)this.copyWithin(s+1&r,s,s+t&r),this[s]=void 0,this._front=s+1&r;else{this.copyWithin(n,n+1&r,s+e&r);this[s+e-1&r]=void 0}return this._length=e-1,i}checkCapacity(t){this._capacity<t&&!this._disableAutoResize&&this.resizeTo(et(1.5*this._capacity+16))}resizeTo(t){const e=this._capacity;this._capacity=t;const s=this._front,r=this._length;if(s+r>e){!function(t,e,s,r,n){for(let i=0;i<n;++i)s[i+r]=t[i+e],t[i+e]=void 0}(this,0,this,e,s+r&e-1)}}},rt=class t{constructor(t=0){this.bitField=t}static has(t,e){return!!(t&1<<e)}static add(t,e){return t|1<<e}static delete(t,e){return t&~(1<<e)}add(t){return this.bitField|=1<<t,this}delete(t){return this.bitField&=~(1<<t),this}has(e){return t.has(this.bitField,e)}clear(){return this.bitField=0,this}valueOf(){return this.bitField}toString(){return this.bitField.toString()}toJSON(){return this.bitField}};async function nt(t){return new Promise(e=>setTimeout(e,t))}async function it(){return new Promise(t=>{setImmediate(t)})}var ot=require("util-ex"),ct=require("events-ex"),ut=require("@isdk/common-error"),at=32;function ht(t){return"function"==typeof t}function lt(){return"1"}var ft=class{constructor(t={}){const{initFn:e=lt,pauseFn:s,resumeFn:r,capacity:n=at}=t;if(ht(s)!==ht(r))throw new Error("pauseFn and resumeFn must be both set for pausing");this.waiting=new st(n),this.emitter=new ct.EventEmitter,this.useDefaultTokens=e===lt,this.pauseFn=s,this.resumeFn=r,this.initTokenFn=e,this.paused=!1,this._activeCount=0,this.initFree(t),this.init(t)}initFree(t){this.free=this.initTokenFn()}onReleased(t){const e=t?.token,s=this.waiting.shift(!0);s?this._dispatchTask(s,t):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.unlock(e))}init(t){this.emitter.on("release",t=>{this.onReleased(t)})}_newReleaser(t){let e=!1;const s=()=>{e||(e=!0,this.release(t))};return t&&Object.assign(s,t),s}_dispatchTask(t,e){const{resolve:s}=t;s(this._newReleaser(e))}lock(t){const e=this.free;if(e)return this.free=void 0,e}unlock(t){this.free=this.useDefaultTokens?"1":t??this.initTokenFn()}tryAcquire(t){return this.lock(t)}async acquire(t){this._activeCount++;const e=t?.signal,s=t=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn());const s=this.waiting.push(t),r=t.reject;return e&&e.addEventListener("abort",()=>{this.waiting[s]=void 0;const t=e.reason instanceof Error?e.reason:new ut.AbortError(e.reason||"aborted");e.alreadyRejected=!0,r(t)}),s},r=this.tryAcquire(t),n=r&&(0,ot.isAsync)(r),i=e=>new Promise((r,n)=>{const i={...t,resolve:r,reject:n,token:e};void 0===e?s(i):this._dispatchTask(i,{...t,token:e})});return n?r.then(t=>i(t)):i(r)}release(t){this._activeCount--,this.emitter.emit("release",t)}drain(){const t=[this.acquire()];return Promise.all(t)}abort(t){let e;for(;e=this.waiting.shift(!0);)e.reject(new ut.AbortError(t))}get activeCount(){return this._activeCount}get pendingCount(){return this.waiting.size}},mt=class extends ft{constructor(t,e){if("number"==typeof t)(e=e||{}).maxConcurrency=t;else if("number"!=typeof(e=t).maxConcurrency)throw new Error("maxConcurrency must be set");super(e),this.maxConcurrency=e.maxConcurrency,e.isReadyFn&&(this.isReady=e.isReadyFn)}initFree(t){const e=t.maxConcurrency=Math.max(1,t.maxConcurrency);this.free=new st(e);for(let t=0;t<e;t++)this.free.push(this.initTokenFn())}tryAcquire(t){let e=this.isReady;if(e&&(0,ot.isAsync)(e)){return e instanceof Promise||(e=e()),e.then(e=>{if(e)return this.lock(t)})}if(!e||e())return this.lock(t)}unlock(t){this.free.push(this.useDefaultTokens?"1":t??this.initTokenFn())}lock(t){return this.free.pop()}drain(){const t=new Array(this.maxConcurrency);for(let e=0;e<this.maxConcurrency;e++)t[e]=this.acquire();return Promise.all(t)}};function pt(t,{timeUnit:e=1e3,uniformDistribution:s=!1}={}){const r=new mt(s?1:t),n=s?e/t:e;return async function(){await r.acquire(),setTimeout(()=>r.release(),n)}}var dt=require("@isdk/common-error"),yt=class{constructor(){this._isSignaled=!1,this.waitQueue=[]}get signaled(){return this._isSignaled}signal(t){if(this._isSignaled)return;this._isSignaled=!0,this._signalValue=t;const e=this.waitQueue.slice();for(this.waitQueue.length=0;e.length>0;){const t=e.shift();t?.resolve(this._signalValue)}}reset(){this._isSignaled=!1,this._signalValue=void 0,this.waitQueue.length=0}abort(t){if(this.waitQueue.length){const e=this.waitQueue.slice();this.waitQueue.length=0;const s=new dt.AbortError(t);for(;e.length>0;){const{reject:t}=e.shift();t(s)}}}async wait(){return new Promise((t,e)=>{this._isSignaled?t(this._signalValue):this.waitQueue.push({resolve:t,reject:e})})}},gt=u(require("net"));async function vt(t,e=10){return new Promise((s,r)=>{void 0===t?t=0:("string"==typeof t&&(t=parseInt(t)),t>=0||(t=0));const n=gt.default.createServer();n.on("error",s=>{"EADDRINUSE"===s.code&&(t++,--e>0)?n.listen(t):r(s)}),n.on("listening",async()=>{const t=n.address().port;n.close(e=>{e?r(e):s(t)})}),n.listen(t)})}var bt=require("lodash-es");function wt(t,e,s=new WeakMap){if(!(0,bt.isObject)(t)||(0,bt.isNil)(t))return t;if(s.has(t))return s.get(t);let r;if(Array.isArray(t)){r=[],s.set(t,r);const n=t.map(t=>wt(t,e,s)).filter((t,s)=>!e(t,s.toString()));return Object.assign(r,n),r.length>0?r:void 0}if((0,bt.isPlainObject)(t)){r={},s.set(t,r);const n=Reflect.ownKeys(t);for(const i of n){const n=wt(t[i],e,s);e(n,i)||(r[i]=n)}return(0,bt.isEmpty)(r)?void 0:r}return t}var xt=require("lodash-es");var kt=(t,e)=>wt(t,t=>function(t){return!!(0,xt.isNil)(t)||"string"==typeof t&&0===t.trim().length||!(!(0,xt.isArray)(t)&&!(0,xt.isPlainObject)(t))&&(0,xt.isEmpty)(t)}(t)||e&&"function"==typeof t),Ft={javascript:"js",jsx:"js",typescript:"ts",tsx:"ts",markdown:"md",python:"py",ruby:"rb",bash:"sh",zsh:"sh",shell:"sh",yaml:"yml",golang:"go",rust:"rs","c#":"cs",csharp:"cs","c++":"cpp"};function jt(t,e){if(!t)return t;const s=t.toLowerCase();return e&&s in e?e[s]:Ft[s]||s}function qt(t,e={}){const{lang:s,langMap:r}=e,n=jt(s,r),i=/^[ \t]*(?<fence>`{3,}|~{3,})(?<lang>\S*)[ \t]*(?<meta>\S*?)\n(?<code>[\s\S]+?\n)?[ \t]*\k<fence>$/gm,o=[];let c;for(i.lastIndex=0;null!==(c=i.exec(t));){const t=c.groups?.lang?.toLowerCase();if(!n||n===jt(t,r)){const t=c.groups.code||"",e=new String(t);c.groups.lang&&(e.lang=c.groups.lang.toLowerCase()),c.groups.meta&&(e.meta=c.groups.meta),o.push(e)}}return o}function St(t){if(!t)return[];const e=[],s=/([>+~])?\s*([^\s>+~]+)/g;let r;for(;null!==(r=s.exec(t));){const t=r[1]||" ",s=r[2];e.push({combinator:t,lang:s})}return e}function At(t,e){const s="string"==typeof e?{lang:e}:e??{},{index:r=-1,all:n}=s,i=St(s.lang);let o=[];if(0===i.length)o=qt(t,s);else{let e=[t];for(let t=0;t<i.length;t++){const{combinator:r,lang:n}=i[t],c=t===i.length-1,u=[],a=0===t&&" "===r?">":r;for(const t of e){let e=[];switch(a){case">":e=qt(t,{...s,lang:n,all:!0});break;case" ":console.warn('Descendant selector " " is not implemented yet.');break;case"+":console.warn('Adjacent sibling selector "+" is not implemented yet.');break;case"~":console.warn('General sibling selector "~" is not implemented yet.')}u.push(...e)}if(c)o=u;else if(e=u.map(t=>t.toString()),0===e.length)break}}if(n)return o;const c=o[r<0?o.length+r:r];return void 0!==c?c:t}
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{existsSync as t,mkdirSync as s,readFileSync as i,writeFileSync as r}from"fs";import n from"path";import{Config as e}from"load-config-file";import o from"path";function c(t,s=1){let i="";for(;s--;){const s=o.extname(t);if(!s)break;i=s+i,t=o.basename(t,s)}return i}import{parse as h,stringify as u}from"yaml";var f=[];function a(t){Array.isArray(t)||(t=[t]);for(const s of t){-1===f.indexOf(s)&&f.push(s)}}function l(t,s){if(s)if(s.customTags){if(Array.isArray(s.customTags))s.customTags=f.concat(s.customTags);else if("function"==typeof s.customTags){const t=s.customTags;s.customTags=s=>t(f.concat(s))}}else s.customTags=f;else s={customTags:f};return h(t,s)}function m(t,s){if(s)if(s.customTags){if(Array.isArray(s.customTags))s.customTags=f.concat(s.customTags);else if("function"==typeof s.customTags){const t=s.customTags;s.customTags=s=>t(f.concat(s))}}else s.customTags=f;else s={customTags:f};return u(t,s)}function p(t){const s=/^\s*(#[^\r\n]*)?[\r\n]+/;let i;for(;null!==(i=s.exec(t))&&((t=t.substring(i[0].length)).startsWith("\n")||t.startsWith("\r")||t.trimStart().startsWith("#")););return t}function d(t,s="---"){const i=s.length,r=p(t);if(r.startsWith(s)&&("\n"===r[s.length]||"\r"===r[s.length])){let t=r.indexOf("\n"+s,i);if(-1!==t){const n=r.slice(i,t);for(t+=s.length+1;"\n"===r[t]||"\r"===r[t];)t++;const e=r.slice(t);return{data:l(n)||{},content:e}}}return{data:{},content:t}}var y=class{static register(t,s,i){e.register(t,s),"string"==typeof t&&(t=[t]);for(const s of t)this.stringifys[s]=i}static loadSync(s,r){return function(s,{extLevel:r=1,externalFile:o}={}){s=g(s,r);let c=e.loadSync(s);if(!c&&o){if(!n.isAbsolute(o)){const t=n.dirname(s);o=n.join(t,o)}if(t(o)){const t=d(i(o,"utf8")).data;Object.keys(t).length&&(c=t)}}return c}(s,r)}static saveSync(i,e,o){return function(i,e,{extLevel:o=1}={}){const h=function(t,s=1){"."===t[0]&&s++;let i=c(t,s);(!i||i.split(".").length<=1)&&(t+=".yaml",i=".yaml");const r=new String(t);return r.extname=i,r}(i,o),u=h.extname;i=h.toString();const f=y.stringifys[u];if(!f)throw new Error(`${i} unsupported mime type: ${u}`);e=f(e);const a=n.dirname(i);t(a)||s(a,{recursive:!0});return r(i,e,{encoding:"utf8"}),i}(i,e,o)}static existsSync(t,s){return t=g(t,s?.extLevel),e.existsSync(t,s)}};function g(t,s=1){"."===t[0]&&s++;const i=c(t,s);return i&&i.split(".").length>1&&(t=t.slice(0,-i.length)),t}y.stringifys={},y.register([".yml",".yaml"],l,m),y.register([".json"],function(t){return JSON.parse(t)},t=>JSON.stringify(t,null,2));import{globMatch as v}from"@isdk/glob";import w from"path";function b(t,s,i){return i&&(t=w.relative(i,t)),v(t,s)}function x(t,s){return"string"==typeof s&&(s=[s]),-1!==s.indexOf(t)}var k=["**/*.((j|t)s?(x)|m(j|t)s)?(x)","**/*.(md|markdown|txt|?(x)htm?(l)|yaml|yml|xml|json|bat|sh|bash|zsh|ini|css|scss|less|sass|py|rb|php|go|java|c|cpp|h|hpp|hxx|rust|zig)"];function F(t,s=[]){if(t)if(Array.isArray(t))t=[...t];else{const i=t.include||[],r=t.exclude||[];0===i.length&&i.push(...s),t=[...i];for(const s of r)t.push(`!${s}`)}else t=[...s];return 0===t.length&&t.push(...s),t}import{readdir as A}from"fs/promises";import{readdirSync as S}from"fs";import E from"path";async function j(t,s){const i=await A(t,{withFileTypes:!0});for(const r of i){const i=E.join(t,r.name);try{if(r.isDirectory()){await s(i,r)||await j(i,s)}else{if(!0===await s(i,r))break}}catch(t){console.error(`Error processing file: ${i}`),console.error(t)}}}function $(t,s){const i=S(t,{withFileTypes:!0});for(const r of i){const i=E.join(t,r.name);try{if(r.isDirectory()){s(i,r)||j(i,s)}else{if(!0===s(i,r))break}}catch(t){console.error(`Error processing file: ${i}`),console.error(t)}}}function P(t){if(!t)return"";return t.replace(/[-_ ]+/g," ").split(" ").filter(Boolean).map(t=>{let s=t.charAt(0).toUpperCase();t=t.slice(1);let i=0;for(;/[A-Z]/.test(t[i]);)i++;return s+=i?t.slice(0,i).toLowerCase()+t.slice(i):t,s}).join("")}function O(t){return(t=P(t)).charAt(0).toLowerCase()+t.slice(1)}function T(t){if(!t)return"";return t.replace(/[-_ ]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").split(" ").filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join(" ")}import R from"path";import{ErrorCode as z,throwError as N}from"@isdk/common-error";var C=/[<>:"/\\|?*\u0000-\u001F]/,M=/^(con|prn|aux|nul|com\d|lpt\d)$/i,D=/^\.+(\\|\/)|^\.+$/,_=/\.+$/,q=/[\u0000-\u001F\u0080-\u009F\u200E\u200F\u202A-\u202E\u2066-\u2069]/;function B(){return new RegExp(C.source,"g")}function I(){return new RegExp(q.source,"g")}function J(t){return t&&!(C.test(t)||I().test(t)||D.test(t)||_.test(t))}function L(t){const s=t.split(R.sep);return("/"===t[0]||s[0]&&R.dirname(s[0])===s[0])&&s.shift(),s.every(J)}function U(t,s={}){const i=s.replacement||"!";if((C.test(i)||q.test(i))&&N("Replacement string cannot contain reserved filename characters","sanitizeFilename",z.InvalidArgument),i.length>0){const s=/([<>:"/\\|?*\u0000-\u001F]){2,}/;t=t.replace(s,"$1")}if(t=(t=(t=(t=(t=t.normalize("NFD")).replace(D,i)).replace(B(),i)).replace(I(),i)).replace(_,""),i.length>0){"."===t[0]||"."!==t[0]||(t=i+t),"."===t[t.length-1]&&(t+=i)}t=M.test(t)?t+i:t;const r="number"==typeof s.maxLength?s.maxLength:100;if(t.length>r){const s=t.lastIndexOf(".");if(-1===s)t=t.slice(0,r);else{const i=t.slice(0,s),n=t.slice(s);t=i.slice(0,Math.max(1,r-n.length))+n}}return t}function Z(t,s={}){const i=t.split(R.sep);let r;("/"===t[0]||i[0]&&R.dirname(i[0])===i[0])&&(r=i.shift());const n=i.map(t=>U(t,s));return void 0!==r&&n.unshift(r),n.join(R.sep)}function W(t){return t.split(".").length-1}function G(t,s){const i=new Set(s),r=new Set;for(const s of t)if(i.has(s)&&(r.add(s),r.size===i.size))return!0;return r.size===i.size}function H(t=0){return s=Math.min(Math.max(16,t),1073741824),s>>>=0,s-=1,s|=s>>1,s|=s>>2,s|=s>>4,s|=s>>8,1+(s|=s>>16);var s}var K=class extends Array{constructor(t,s){Array.isArray(t)?(super(...t),this._length=t.length,t=void 0):(super(),this._length=0),this._capacity=H(t),this._front=0,this._disableAutoResize=s}push(t){let s=this._length;this.checkCapacity(s+1);const i=this._front+s&this._capacity-1;return this[i]=t,++s<=this._capacity&&(this._length=s),i}unshift(t){let s=this._length;this.checkCapacity(++s);const i=this._capacity,r=(this._front-1&i-1^i)-i;return this[r]=t,this._front=r,s<=this._capacity&&(this._length=s),r}pop(t){let s=this._length;if(0===s)return;let i=this._front+s-1&this._capacity-1,r=this[i];for(;--s>0&&t&&null==r;)i--,r=this[i];return this[i]=void 0,this._length=s,r}shift(t){let s=this._length;if(0===s)return;let i=this._front,r=this[i];for(;--s>0&&t&&null==r;)i=i+1&this._capacity-1,r=this[i];return this[i]=void 0,this._front=i+1&this._capacity-1,this._length=s,r}get size(){return this._length}get(t){let s;if(t===(0|t)){const i=this._length;t<0&&(t+=i),t>=0&&t<i&&(s=this[this._front+t&this._capacity-1])}return s}peekBack(){const t=this._length;if(0===t)return;return this[this._front+t-1&this._capacity-1]}peekFront(){if(0!==this._length)return this[this._front]}clear(){const t=this._length,s=this._front,i=this._capacity;for(let r=0;r<t;++r)this[s+r&i-1]=void 0;this._length=0,this._front=0}isEmpty(){return 0===this._length}removeAt(t){const s=this._length;if(t<0||t>=s)return;const i=this._front,r=this._capacity-1,n=i+t&r,e=this[n];if(t<s/2)this.copyWithin(i+1&r,i,i+t&r),this[i]=void 0,this._front=i+1&r;else{this.copyWithin(n,n+1&r,i+s&r);this[i+s-1&r]=void 0}return this._length=s-1,e}checkCapacity(t){this._capacity<t&&!this._disableAutoResize&&this.resizeTo(H(1.5*this._capacity+16))}resizeTo(t){const s=this._capacity;this._capacity=t;const i=this._front,r=this._length;if(i+r>s){!function(t,s,i,r,n){for(let e=0;e<n;++e)i[e+r]=t[e+s],t[e+s]=void 0}(this,0,this,s,i+r&s-1)}}},Q=class t{constructor(t=0){this.bitField=t}static has(t,s){return!!(t&1<<s)}static add(t,s){return t|1<<s}static delete(t,s){return t&~(1<<s)}add(t){return this.bitField|=1<<t,this}delete(t){return this.bitField&=~(1<<t),this}has(s){return t.has(this.bitField,s)}clear(){return this.bitField=0,this}valueOf(){return this.bitField}toString(){return this.bitField.toString()}toJSON(){return this.bitField}};async function V(t){return new Promise(s=>setTimeout(s,t))}async function X(){return new Promise(t=>{setImmediate(t)})}import{isAsync as Y}from"util-ex";import{EventEmitter as tt}from"events-ex";import{AbortError as st}from"@isdk/common-error";var it=32;function rt(t){return"function"==typeof t}function nt(){return"1"}var et=class{constructor(t={}){const{initFn:s=nt,pauseFn:i,resumeFn:r,capacity:n=it}=t;if(rt(i)!==rt(r))throw new Error("pauseFn and resumeFn must be both set for pausing");this.waiting=new K(n),this.emitter=new tt,this.useDefaultTokens=s===nt,this.pauseFn=i,this.resumeFn=r,this.initTokenFn=s,this.paused=!1,this._activeCount=0,this.initFree(t),this.init(t)}initFree(t){this.free=this.initTokenFn()}onReleased(t){const s=t?.token,i=this.waiting.shift(!0);i?this._dispatchTask(i,t):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.unlock(s))}init(t){this.emitter.on("release",t=>{this.onReleased(t)})}_newReleaser(t){let s=!1;const i=()=>{s||(s=!0,this.release(t))};return t&&Object.assign(i,t),i}_dispatchTask(t,s){const{resolve:i}=t;i(this._newReleaser(s))}lock(t){const s=this.free;if(s)return this.free=void 0,s}unlock(t){this.free=this.useDefaultTokens?"1":t??this.initTokenFn()}tryAcquire(t){return this.lock(t)}async acquire(t){this._activeCount++;const s=t?.signal,i=t=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn());const i=this.waiting.push(t),r=t.reject;return s&&s.addEventListener("abort",()=>{this.waiting[i]=void 0;const t=s.reason instanceof Error?s.reason:new st(s.reason||"aborted");s.alreadyRejected=!0,r(t)}),i},r=this.tryAcquire(t),n=r&&Y(r),e=s=>new Promise((r,n)=>{const e={...t,resolve:r,reject:n,token:s};void 0===s?i(e):this._dispatchTask(e,{...t,token:s})});return n?r.then(t=>e(t)):e(r)}release(t){this._activeCount--,this.emitter.emit("release",t)}drain(){const t=[this.acquire()];return Promise.all(t)}abort(t){let s;for(;s=this.waiting.shift(!0);)s.reject(new st(t))}get activeCount(){return this._activeCount}get pendingCount(){return this.waiting.size}},ot=class extends et{constructor(t,s){if("number"==typeof t)(s=s||{}).maxConcurrency=t;else if("number"!=typeof(s=t).maxConcurrency)throw new Error("maxConcurrency must be set");super(s),this.maxConcurrency=s.maxConcurrency,s.isReadyFn&&(this.isReady=s.isReadyFn)}initFree(t){const s=t.maxConcurrency=Math.max(1,t.maxConcurrency);this.free=new K(s);for(let t=0;t<s;t++)this.free.push(this.initTokenFn())}tryAcquire(t){let s=this.isReady;if(s&&Y(s)){return s instanceof Promise||(s=s()),s.then(s=>{if(s)return this.lock(t)})}if(!s||s())return this.lock(t)}unlock(t){this.free.push(this.useDefaultTokens?"1":t??this.initTokenFn())}lock(t){return this.free.pop()}drain(){const t=new Array(this.maxConcurrency);for(let s=0;s<this.maxConcurrency;s++)t[s]=this.acquire();return Promise.all(t)}};function ct(t,{timeUnit:s=1e3,uniformDistribution:i=!1}={}){const r=new ot(i?1:t),n=i?s/t:s;return async function(){await r.acquire(),setTimeout(()=>r.release(),n)}}import{AbortError as ht}from"@isdk/common-error";var ut=class{constructor(){this._isSignaled=!1,this.waitQueue=[]}get signaled(){return this._isSignaled}signal(t){if(this._isSignaled)return;this._isSignaled=!0,this._signalValue=t;const s=this.waitQueue.slice();for(this.waitQueue.length=0;s.length>0;){const t=s.shift();t?.resolve(this._signalValue)}}reset(){this._isSignaled=!1,this._signalValue=void 0,this.waitQueue.length=0}abort(t){if(this.waitQueue.length){const s=this.waitQueue.slice();this.waitQueue.length=0;const i=new ht(t);for(;s.length>0;){const{reject:t}=s.shift();t(i)}}}async wait(){return new Promise((t,s)=>{this._isSignaled?t(this._signalValue):this.waitQueue.push({resolve:t,reject:s})})}};import ft from"net";async function at(t,s=10){return new Promise((i,r)=>{void 0===t?t=0:("string"==typeof t&&(t=parseInt(t)),t>=0||(t=0));const n=ft.createServer();n.on("error",i=>{"EADDRINUSE"===i.code&&(t++,--s>0)?n.listen(t):r(i)}),n.on("listening",async()=>{const t=n.address().port;n.close(s=>{s?r(s):i(t)})}),n.listen(t)})}import{isEmpty as lt,isNil as mt,isObject as pt,isPlainObject as dt}from"lodash-es";function yt(t,s,i=new WeakMap){if(!pt(t)||mt(t))return t;if(i.has(t))return i.get(t);let r;if(Array.isArray(t)){r=[],i.set(t,r);const n=t.map(t=>yt(t,s,i)).filter((t,i)=>!s(t,i.toString()));return Object.assign(r,n),r.length>0?r:void 0}if(dt(t)){r={},i.set(t,r);const n=Reflect.ownKeys(t);for(const e of n){const n=yt(t[e],s,i);s(n,e)||(r[e]=n)}return lt(r)?void 0:r}return t}import{isArray as gt,isEmpty as vt,isNil as wt,isPlainObject as bt}from"lodash-es";var xt=(t,s)=>yt(t,t=>function(t){return!!wt(t)||"string"==typeof t&&0===t.trim().length||!(!gt(t)&&!bt(t))&&vt(t)}(t)||s&&"function"==typeof t);function kt(t,s){const i="string"==typeof s?{lang:s}:s??{},{lang:r,index:n=-1,all:e}=i,o=t.trim(),c=/(```|~~~)(?<lang>\S*)[ \t]*(?<meta>\S*?)\n(?<code>[\s\S]*?)\1/gm,h=[];let u;for(;null!==(u=c.exec(o));){const t=u.groups?.lang?.toLowerCase();if(!r||r===t){let t=u.groups.code;if(u.groups.lang||u.groups.meta){const s=new String(t);u.groups.lang&&(s.lang=u.groups.lang.toLowerCase()),u.groups.meta&&(s.meta=u.groups.meta),t=s}else t=new String(t);h.push(t)}}if(e)return h;return h[n<0?h.length+n:n]??t}export{et as BinarySemaphore,y as ConfigFile,k as DefaultAllTextFiles,it as DefaultAsyncSemaphoreCapacity,K as Deque,C as FilenameReservedRegex,Q as IntSet,ct as RateLimit,ot as Semaphore,ut as SignalGate,M as WindowsReservedNameRegex,G as arrayHasAll,W as extNameLevel,kt as extractCodeBlock,B as filenameReservedRegex,at as findPort,c as getMultiLevelExtname,b as glob,x as isStringIn,J as isValidFilename,L as isValidFilepath,F as normalizeIncludeFiles,yt as omitDeepBy,xt as omitEmptyDeep,d as parseFrontMatter,l as parseYaml,I as reControlCharsRegex,a as registerYamlTag,p as removeLeadingEmptyLines,U as sanitizeFilename,Z as sanitizeFilepath,V as sleep,m as stringifyYaml,O as toCamelCase,T as toCapitalCase,P as toPascalCase,j as traverseFolder,$ as traverseFolderSync,X as yieldExec};
|
|
1
|
+
import{existsSync as t,mkdirSync as s,readFileSync as n,writeFileSync as r}from"fs";import i from"path";import{Config as e}from"load-config-file";import o from"path";function c(t,s=1){let n="";for(;s--;){const s=o.extname(t);if(!s)break;n=s+n,t=o.basename(t,s)}return n}import{parse as h,stringify as u}from"yaml";var f=[];function a(t){Array.isArray(t)||(t=[t]);for(const s of t){-1===f.indexOf(s)&&f.push(s)}}function l(t,s){if(s)if(s.customTags){if(Array.isArray(s.customTags))s.customTags=f.concat(s.customTags);else if("function"==typeof s.customTags){const t=s.customTags;s.customTags=s=>t(f.concat(s))}}else s.customTags=f;else s={customTags:f};return h(t,s)}function m(t,s){if(s)if(s.customTags){if(Array.isArray(s.customTags))s.customTags=f.concat(s.customTags);else if("function"==typeof s.customTags){const t=s.customTags;s.customTags=s=>t(f.concat(s))}}else s.customTags=f;else s={customTags:f};return u(t,s)}function p(t){const s=/^\s*(#[^\r\n]*)?[\r\n]+/;let n;for(;null!==(n=s.exec(t))&&((t=t.substring(n[0].length)).startsWith("\n")||t.startsWith("\r")||t.trimStart().startsWith("#")););return t}function y(t,s="---"){const n=s.length,r=p(t);if(r.startsWith(s)&&("\n"===r[s.length]||"\r"===r[s.length])){let t=r.indexOf("\n"+s,n);if(-1!==t){const i=r.slice(n,t);for(t+=s.length+1;"\n"===r[t]||"\r"===r[t];)t++;const e=r.slice(t);return{data:l(i)||{},content:e}}}return{data:{},content:t}}var d=class{static register(t,s,n){e.register(t,s),"string"==typeof t&&(t=[t]);for(const s of t)this.stringifys[s]=n}static loadSync(s,r){return function(s,{extLevel:r=1,externalFile:o}={}){s=g(s,r);let c=e.loadSync(s);if(!c&&o){if(!i.isAbsolute(o)){const t=i.dirname(s);o=i.join(t,o)}if(t(o)){const t=y(n(o,"utf8")).data;Object.keys(t).length&&(c=t)}}return c}(s,r)}static saveSync(n,e,o){return function(n,e,{extLevel:o=1}={}){const h=function(t,s=1){"."===t[0]&&s++;let n=c(t,s);(!n||n.split(".").length<=1)&&(t+=".yaml",n=".yaml");const r=new String(t);return r.extname=n,r}(n,o),u=h.extname;n=h.toString();const f=d.stringifys[u];if(!f)throw new Error(`${n} unsupported mime type: ${u}`);e=f(e);const a=i.dirname(n);t(a)||s(a,{recursive:!0});return r(n,e,{encoding:"utf8"}),n}(n,e,o)}static existsSync(t,s){return t=g(t,s?.extLevel),e.existsSync(t,s)}};function g(t,s=1){"."===t[0]&&s++;const n=c(t,s);return n&&n.split(".").length>1&&(t=t.slice(0,-n.length)),t}d.stringifys={},d.register([".yml",".yaml"],l,m),d.register([".json"],function(t){return JSON.parse(t)},t=>JSON.stringify(t,null,2));import{globMatch as v}from"@isdk/glob";import w from"path";function b(t,s,n){return n&&(t=w.relative(n,t)),v(t,s)}function k(t,s){return"string"==typeof s&&(s=[s]),-1!==s.indexOf(t)}var x=["**/*.((j|t)s?(x)|m(j|t)s)?(x)","**/*.(md|markdown|txt|?(x)htm?(l)|yaml|yml|xml|json|bat|sh|bash|zsh|ini|css|scss|less|sass|py|rb|php|go|java|c|cpp|h|hpp|hxx|rust|zig)"];function F(t,s=[]){if(t)if(Array.isArray(t))t=[...t];else{const n=t.include||[],r=t.exclude||[];0===n.length&&n.push(...s),t=[...n];for(const s of r)t.push(`!${s}`)}else t=[...s];return 0===t.length&&t.push(...s),t}import{readdir as j}from"fs/promises";import{readdirSync as A}from"fs";import E from"path";async function S(t,s){const n=await j(t,{withFileTypes:!0});for(const r of n){const n=E.join(t,r.name);try{if(r.isDirectory()){await s(n,r)||await S(n,s)}else{if(!0===await s(n,r))break}}catch(t){console.error(`Error processing file: ${n}`),console.error(t)}}}function $(t,s){const n=A(t,{withFileTypes:!0});for(const r of n){const n=E.join(t,r.name);try{if(r.isDirectory()){s(n,r)||S(n,s)}else{if(!0===s(n,r))break}}catch(t){console.error(`Error processing file: ${n}`),console.error(t)}}}function P(t){if(!t)return"";return t.replace(/[-_ ]+/g," ").split(" ").filter(Boolean).map(t=>{let s=t.charAt(0).toUpperCase();t=t.slice(1);let n=0;for(;/[A-Z]/.test(t[n]);)n++;return s+=n?t.slice(0,n).toLowerCase()+t.slice(n):t,s}).join("")}function O(t){return(t=P(t)).charAt(0).toLowerCase()+t.slice(1)}function T(t){if(!t)return"";return t.replace(/[-_ ]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").split(" ").filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join(" ")}import z from"path";import{ErrorCode as R,throwError as M}from"@isdk/common-error";var N=/[<>:"/\\|?*\u0000-\u001F]/,C=/^(con|prn|aux|nul|com\d|lpt\d)$/i,D=/^\.+(\\|\/)|^\.+$/,_=/\.+$/,q=/[\u0000-\u001F\u0080-\u009F\u200E\u200F\u202A-\u202E\u2066-\u2069]/;function B(){return new RegExp(N.source,"g")}function I(){return new RegExp(q.source,"g")}function J(t){return t&&!(N.test(t)||I().test(t)||D.test(t)||_.test(t))}function L(t){const s=t.split(z.sep);return("/"===t[0]||s[0]&&z.dirname(s[0])===s[0])&&s.shift(),s.every(J)}function U(t,s={}){const n=s.replacement||"!";if((N.test(n)||q.test(n))&&M("Replacement string cannot contain reserved filename characters","sanitizeFilename",R.InvalidArgument),n.length>0){const s=/([<>:"/\\|?*\u0000-\u001F]){2,}/;t=t.replace(s,"$1")}if(t=(t=(t=(t=(t=t.normalize("NFD")).replace(D,n)).replace(B(),n)).replace(I(),n)).replace(_,""),n.length>0){"."===t[0]||"."!==t[0]||(t=n+t),"."===t[t.length-1]&&(t+=n)}t=C.test(t)?t+n:t;const r="number"==typeof s.maxLength?s.maxLength:100;if(t.length>r){const s=t.lastIndexOf(".");if(-1===s)t=t.slice(0,r);else{const n=t.slice(0,s),i=t.slice(s);t=n.slice(0,Math.max(1,r-i.length))+i}}return t}function Z(t,s={}){const n=t.split(z.sep);let r;("/"===t[0]||n[0]&&z.dirname(n[0])===n[0])&&(r=n.shift());const i=n.map(t=>U(t,s));return void 0!==r&&i.unshift(r),i.join(z.sep)}function G(t){return t.split(".").length-1}function W(t,s){const n=new Set(s),r=new Set;for(const s of t)if(n.has(s)&&(r.add(s),r.size===n.size))return!0;return r.size===n.size}function H(t=0){return s=Math.min(Math.max(16,t),1073741824),s>>>=0,s-=1,s|=s>>1,s|=s>>2,s|=s>>4,s|=s>>8,1+(s|=s>>16);var s}var K=class extends Array{constructor(t,s){Array.isArray(t)?(super(...t),this._length=t.length,t=void 0):(super(),this._length=0),this._capacity=H(t),this._front=0,this._disableAutoResize=s}push(t){let s=this._length;this.checkCapacity(s+1);const n=this._front+s&this._capacity-1;return this[n]=t,++s<=this._capacity&&(this._length=s),n}unshift(t){let s=this._length;this.checkCapacity(++s);const n=this._capacity,r=(this._front-1&n-1^n)-n;return this[r]=t,this._front=r,s<=this._capacity&&(this._length=s),r}pop(t){let s=this._length;if(0===s)return;let n=this._front+s-1&this._capacity-1,r=this[n];for(;--s>0&&t&&null==r;)n--,r=this[n];return this[n]=void 0,this._length=s,r}shift(t){let s=this._length;if(0===s)return;let n=this._front,r=this[n];for(;--s>0&&t&&null==r;)n=n+1&this._capacity-1,r=this[n];return this[n]=void 0,this._front=n+1&this._capacity-1,this._length=s,r}get size(){return this._length}get(t){let s;if(t===(0|t)){const n=this._length;t<0&&(t+=n),t>=0&&t<n&&(s=this[this._front+t&this._capacity-1])}return s}peekBack(){const t=this._length;if(0===t)return;return this[this._front+t-1&this._capacity-1]}peekFront(){if(0!==this._length)return this[this._front]}clear(){const t=this._length,s=this._front,n=this._capacity;for(let r=0;r<t;++r)this[s+r&n-1]=void 0;this._length=0,this._front=0}isEmpty(){return 0===this._length}removeAt(t){const s=this._length;if(t<0||t>=s)return;const n=this._front,r=this._capacity-1,i=n+t&r,e=this[i];if(t<s/2)this.copyWithin(n+1&r,n,n+t&r),this[n]=void 0,this._front=n+1&r;else{this.copyWithin(i,i+1&r,n+s&r);this[n+s-1&r]=void 0}return this._length=s-1,e}checkCapacity(t){this._capacity<t&&!this._disableAutoResize&&this.resizeTo(H(1.5*this._capacity+16))}resizeTo(t){const s=this._capacity;this._capacity=t;const n=this._front,r=this._length;if(n+r>s){!function(t,s,n,r,i){for(let e=0;e<i;++e)n[e+r]=t[e+s],t[e+s]=void 0}(this,0,this,s,n+r&s-1)}}},Q=class t{constructor(t=0){this.bitField=t}static has(t,s){return!!(t&1<<s)}static add(t,s){return t|1<<s}static delete(t,s){return t&~(1<<s)}add(t){return this.bitField|=1<<t,this}delete(t){return this.bitField&=~(1<<t),this}has(s){return t.has(this.bitField,s)}clear(){return this.bitField=0,this}valueOf(){return this.bitField}toString(){return this.bitField.toString()}toJSON(){return this.bitField}};async function V(t){return new Promise(s=>setTimeout(s,t))}async function X(){return new Promise(t=>{setImmediate(t)})}import{isAsync as Y}from"util-ex";import{EventEmitter as tt}from"events-ex";import{AbortError as st}from"@isdk/common-error";var nt=32;function rt(t){return"function"==typeof t}function it(){return"1"}var et=class{constructor(t={}){const{initFn:s=it,pauseFn:n,resumeFn:r,capacity:i=nt}=t;if(rt(n)!==rt(r))throw new Error("pauseFn and resumeFn must be both set for pausing");this.waiting=new K(i),this.emitter=new tt,this.useDefaultTokens=s===it,this.pauseFn=n,this.resumeFn=r,this.initTokenFn=s,this.paused=!1,this._activeCount=0,this.initFree(t),this.init(t)}initFree(t){this.free=this.initTokenFn()}onReleased(t){const s=t?.token,n=this.waiting.shift(!0);n?this._dispatchTask(n,t):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.unlock(s))}init(t){this.emitter.on("release",t=>{this.onReleased(t)})}_newReleaser(t){let s=!1;const n=()=>{s||(s=!0,this.release(t))};return t&&Object.assign(n,t),n}_dispatchTask(t,s){const{resolve:n}=t;n(this._newReleaser(s))}lock(t){const s=this.free;if(s)return this.free=void 0,s}unlock(t){this.free=this.useDefaultTokens?"1":t??this.initTokenFn()}tryAcquire(t){return this.lock(t)}async acquire(t){this._activeCount++;const s=t?.signal,n=t=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn());const n=this.waiting.push(t),r=t.reject;return s&&s.addEventListener("abort",()=>{this.waiting[n]=void 0;const t=s.reason instanceof Error?s.reason:new st(s.reason||"aborted");s.alreadyRejected=!0,r(t)}),n},r=this.tryAcquire(t),i=r&&Y(r),e=s=>new Promise((r,i)=>{const e={...t,resolve:r,reject:i,token:s};void 0===s?n(e):this._dispatchTask(e,{...t,token:s})});return i?r.then(t=>e(t)):e(r)}release(t){this._activeCount--,this.emitter.emit("release",t)}drain(){const t=[this.acquire()];return Promise.all(t)}abort(t){let s;for(;s=this.waiting.shift(!0);)s.reject(new st(t))}get activeCount(){return this._activeCount}get pendingCount(){return this.waiting.size}},ot=class extends et{constructor(t,s){if("number"==typeof t)(s=s||{}).maxConcurrency=t;else if("number"!=typeof(s=t).maxConcurrency)throw new Error("maxConcurrency must be set");super(s),this.maxConcurrency=s.maxConcurrency,s.isReadyFn&&(this.isReady=s.isReadyFn)}initFree(t){const s=t.maxConcurrency=Math.max(1,t.maxConcurrency);this.free=new K(s);for(let t=0;t<s;t++)this.free.push(this.initTokenFn())}tryAcquire(t){let s=this.isReady;if(s&&Y(s)){return s instanceof Promise||(s=s()),s.then(s=>{if(s)return this.lock(t)})}if(!s||s())return this.lock(t)}unlock(t){this.free.push(this.useDefaultTokens?"1":t??this.initTokenFn())}lock(t){return this.free.pop()}drain(){const t=new Array(this.maxConcurrency);for(let s=0;s<this.maxConcurrency;s++)t[s]=this.acquire();return Promise.all(t)}};function ct(t,{timeUnit:s=1e3,uniformDistribution:n=!1}={}){const r=new ot(n?1:t),i=n?s/t:s;return async function(){await r.acquire(),setTimeout(()=>r.release(),i)}}import{AbortError as ht}from"@isdk/common-error";var ut=class{constructor(){this._isSignaled=!1,this.waitQueue=[]}get signaled(){return this._isSignaled}signal(t){if(this._isSignaled)return;this._isSignaled=!0,this._signalValue=t;const s=this.waitQueue.slice();for(this.waitQueue.length=0;s.length>0;){const t=s.shift();t?.resolve(this._signalValue)}}reset(){this._isSignaled=!1,this._signalValue=void 0,this.waitQueue.length=0}abort(t){if(this.waitQueue.length){const s=this.waitQueue.slice();this.waitQueue.length=0;const n=new ht(t);for(;s.length>0;){const{reject:t}=s.shift();t(n)}}}async wait(){return new Promise((t,s)=>{this._isSignaled?t(this._signalValue):this.waitQueue.push({resolve:t,reject:s})})}};import ft from"net";async function at(t,s=10){return new Promise((n,r)=>{void 0===t?t=0:("string"==typeof t&&(t=parseInt(t)),t>=0||(t=0));const i=ft.createServer();i.on("error",n=>{"EADDRINUSE"===n.code&&(t++,--s>0)?i.listen(t):r(n)}),i.on("listening",async()=>{const t=i.address().port;i.close(s=>{s?r(s):n(t)})}),i.listen(t)})}import{isEmpty as lt,isNil as mt,isObject as pt,isPlainObject as yt}from"lodash-es";function dt(t,s,n=new WeakMap){if(!pt(t)||mt(t))return t;if(n.has(t))return n.get(t);let r;if(Array.isArray(t)){r=[],n.set(t,r);const i=t.map(t=>dt(t,s,n)).filter((t,n)=>!s(t,n.toString()));return Object.assign(r,i),r.length>0?r:void 0}if(yt(t)){r={},n.set(t,r);const i=Reflect.ownKeys(t);for(const e of i){const i=dt(t[e],s,n);s(i,e)||(r[e]=i)}return lt(r)?void 0:r}return t}import{isArray as gt,isEmpty as vt,isNil as wt,isPlainObject as bt}from"lodash-es";var kt=(t,s)=>dt(t,t=>function(t){return!!wt(t)||"string"==typeof t&&0===t.trim().length||!(!gt(t)&&!bt(t))&&vt(t)}(t)||s&&"function"==typeof t),xt={javascript:"js",jsx:"js",typescript:"ts",tsx:"ts",markdown:"md",python:"py",ruby:"rb",bash:"sh",zsh:"sh",shell:"sh",yaml:"yml",golang:"go",rust:"rs","c#":"cs",csharp:"cs","c++":"cpp"};function Ft(t,s){if(!t)return t;const n=t.toLowerCase();return s&&n in s?s[n]:xt[n]||n}function jt(t,s={}){const{lang:n,langMap:r}=s,i=Ft(n,r),e=/^[ \t]*(?<fence>`{3,}|~{3,})(?<lang>\S*)[ \t]*(?<meta>\S*?)\n(?<code>[\s\S]+?\n)?[ \t]*\k<fence>$/gm,o=[];let c;for(e.lastIndex=0;null!==(c=e.exec(t));){const t=c.groups?.lang?.toLowerCase();if(!i||i===Ft(t,r)){const t=c.groups.code||"",s=new String(t);c.groups.lang&&(s.lang=c.groups.lang.toLowerCase()),c.groups.meta&&(s.meta=c.groups.meta),o.push(s)}}return o}function At(t){if(!t)return[];const s=[],n=/([>+~])?\s*([^\s>+~]+)/g;let r;for(;null!==(r=n.exec(t));){const t=r[1]||" ",n=r[2];s.push({combinator:t,lang:n})}return s}function Et(t,s){const n="string"==typeof s?{lang:s}:s??{},{index:r=-1,all:i}=n,e=At(n.lang);let o=[];if(0===e.length)o=jt(t,n);else{let s=[t];for(let t=0;t<e.length;t++){const{combinator:r,lang:i}=e[t],c=t===e.length-1,h=[],u=0===t&&" "===r?">":r;for(const t of s){let s=[];switch(u){case">":s=jt(t,{...n,lang:i,all:!0});break;case" ":console.warn('Descendant selector " " is not implemented yet.');break;case"+":console.warn('Adjacent sibling selector "+" is not implemented yet.');break;case"~":console.warn('General sibling selector "~" is not implemented yet.')}h.push(...s)}if(c)o=h;else if(s=h.map(t=>t.toString()),0===s.length)break}}if(i)return o;const c=o[r<0?o.length+r:r];return void 0!==c?c:t}export{et as BinarySemaphore,d as ConfigFile,x as DefaultAllTextFiles,nt as DefaultAsyncSemaphoreCapacity,K as Deque,N as FilenameReservedRegex,Q as IntSet,ct as RateLimit,ot as Semaphore,ut as SignalGate,C as WindowsReservedNameRegex,W as arrayHasAll,G as extNameLevel,Et as extractCodeBlock,jt as extractTopLevelCodeBlocks,B as filenameReservedRegex,at as findPort,c as getMultiLevelExtname,b as glob,k as isStringIn,J as isValidFilename,L as isValidFilepath,F as normalizeIncludeFiles,dt as omitDeepBy,kt as omitEmptyDeep,At as parseCodeBlockSelector,y as parseFrontMatter,l as parseYaml,I as reControlCharsRegex,a as registerYamlTag,p as removeLeadingEmptyLines,U as sanitizeFilename,Z as sanitizeFilepath,V as sleep,m as stringifyYaml,O as toCamelCase,T as toCapitalCase,P as toPascalCase,S as traverseFolder,$ as traverseFolderSync,X as yieldExec};
|