@isdk/util 0.3.6 → 0.3.7

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.
Files changed (60) hide show
  1. package/dist/index.d.mts +104 -23
  2. package/dist/index.d.ts +104 -23
  3. package/dist/index.js +1 -1
  4. package/dist/index.mjs +1 -1
  5. package/docs/classes/BinarySemaphore.md +25 -25
  6. package/docs/classes/ConfigFile.md +6 -6
  7. package/docs/classes/Deque.md +13 -13
  8. package/docs/classes/IntSet.md +12 -12
  9. package/docs/classes/Semaphore.md +26 -26
  10. package/docs/classes/SignalGate.md +9 -9
  11. package/docs/functions/RateLimit.md +1 -1
  12. package/docs/functions/arrayHasAll.md +1 -1
  13. package/docs/functions/extNameLevel.md +1 -1
  14. package/docs/functions/extractCodeBlock.md +91 -0
  15. package/docs/functions/filenameReservedRegex.md +1 -1
  16. package/docs/functions/findPort.md +1 -1
  17. package/docs/functions/getMultiLevelExtname.md +1 -1
  18. package/docs/functions/glob.md +1 -1
  19. package/docs/functions/isStringIn.md +1 -1
  20. package/docs/functions/isValidFilename.md +1 -1
  21. package/docs/functions/isValidFilepath.md +1 -1
  22. package/docs/functions/normalizeIncludeFiles.md +1 -1
  23. package/docs/functions/omitDeepBy.md +1 -1
  24. package/docs/functions/omitEmptyDeep.md +1 -1
  25. package/docs/functions/parseFrontMatter.md +1 -1
  26. package/docs/functions/parseYaml.md +1 -1
  27. package/docs/functions/reControlCharsRegex.md +1 -1
  28. package/docs/functions/registerYamlTag.md +1 -1
  29. package/docs/functions/removeLeadingEmptyLines.md +1 -1
  30. package/docs/functions/sanitizeFilename.md +1 -1
  31. package/docs/functions/sanitizeFilepath.md +1 -1
  32. package/docs/functions/sleep.md +1 -1
  33. package/docs/functions/stringifyYaml.md +1 -1
  34. package/docs/functions/toCamelCase.md +1 -1
  35. package/docs/functions/toCapitalCase.md +1 -1
  36. package/docs/functions/toPascalCase.md +1 -1
  37. package/docs/functions/traverseFolder.md +1 -1
  38. package/docs/functions/traverseFolderSync.md +1 -1
  39. package/docs/functions/yieldExec.md +1 -1
  40. package/docs/globals.md +3 -0
  41. package/docs/interfaces/BinarySemaphoreAcquireOptions.md +2 -2
  42. package/docs/interfaces/BinarySemaphoreOptions.md +5 -5
  43. package/docs/interfaces/BinarySemaphoreReleaseOptions.md +2 -2
  44. package/docs/interfaces/BinarySemaphoreReleaserFunc.md +3 -3
  45. package/docs/interfaces/CodeString.md +1712 -0
  46. package/docs/interfaces/ExtractCodeBlockOptions.md +43 -0
  47. package/docs/interfaces/IncludeFiles.md +3 -3
  48. package/docs/interfaces/LoadConfigFileOptions.md +3 -3
  49. package/docs/interfaces/SanitizeFilenameOptions.md +3 -3
  50. package/docs/interfaces/SemaphoreOptions.md +7 -7
  51. package/docs/interfaces/SemaphoreTaskItem.md +5 -5
  52. package/docs/type-aliases/SemaphoreIsReadyFuncType.md +1 -1
  53. package/docs/type-aliases/StringifyFunc.md +1 -1
  54. package/docs/type-aliases/TraverseFolderHandler.md +1 -1
  55. package/docs/type-aliases/TraverseFolderSyncHandler.md +1 -1
  56. package/docs/variables/DefaultAllTextFiles.md +1 -1
  57. package/docs/variables/DefaultAsyncSemaphoreCapacity.md +1 -1
  58. package/docs/variables/FilenameReservedRegex.md +1 -1
  59. package/docs/variables/WindowsReservedNameRegex.md +1 -1
  60. package/package.json +2 -1
@@ -6,7 +6,7 @@
6
6
 
7
7
  # Class: Semaphore
8
8
 
9
- Defined in: [src/async-semaphore.ts:372](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L372)
9
+ Defined in: [src/async-semaphore.ts:377](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L377)
10
10
 
11
11
  A Semaphore implementation for managing concurrency in asynchronous operations.
12
12
  Semaphores allow a fixed number of resources to be accessed concurrently.
@@ -57,7 +57,7 @@ const data = await Promise.all(array.map(fetchData));
57
57
 
58
58
  > **new Semaphore**(`maxConcurrency`, `options?`): `Semaphore`
59
59
 
60
- Defined in: [src/async-semaphore.ts:390](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L390)
60
+ Defined in: [src/async-semaphore.ts:395](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L395)
61
61
 
62
62
  Creates a semaphore object. The first argument is the maximum concurrently number and the second argument is optional.
63
63
 
@@ -87,7 +87,7 @@ The maximum number of callers allowed to acquire the semaphore concurrently.
87
87
 
88
88
  > `protected` **\_activeCount**: `number`
89
89
 
90
- Defined in: [src/async-semaphore.ts:97](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L97)
90
+ Defined in: [src/async-semaphore.ts:97](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L97)
91
91
 
92
92
  #### Inherited from
93
93
 
@@ -99,7 +99,7 @@ Defined in: [src/async-semaphore.ts:97](https://github.com/isdk/util.js/blob/618
99
99
 
100
100
  > `protected` **emitter**: `EventEmitter`
101
101
 
102
- Defined in: [src/async-semaphore.ts:91](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L91)
102
+ Defined in: [src/async-semaphore.ts:91](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L91)
103
103
 
104
104
  #### Inherited from
105
105
 
@@ -111,7 +111,7 @@ Defined in: [src/async-semaphore.ts:91](https://github.com/isdk/util.js/blob/618
111
111
 
112
112
  > `protected` **free**: [`Deque`](Deque.md)\<`any`\>
113
113
 
114
- Defined in: [src/async-semaphore.ts:374](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L374)
114
+ Defined in: [src/async-semaphore.ts:379](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L379)
115
115
 
116
116
  #### Overrides
117
117
 
@@ -123,7 +123,7 @@ Defined in: [src/async-semaphore.ts:374](https://github.com/isdk/util.js/blob/61
123
123
 
124
124
  > `protected` **initTokenFn**: (`token?`) => `void`
125
125
 
126
- Defined in: [src/async-semaphore.ts:95](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L95)
126
+ Defined in: [src/async-semaphore.ts:95](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L95)
127
127
 
128
128
  #### Parameters
129
129
 
@@ -145,7 +145,7 @@ Defined in: [src/async-semaphore.ts:95](https://github.com/isdk/util.js/blob/618
145
145
 
146
146
  > `readonly` **maxConcurrency**: `number`
147
147
 
148
- Defined in: [src/async-semaphore.ts:373](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L373)
148
+ Defined in: [src/async-semaphore.ts:378](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L378)
149
149
 
150
150
  ***
151
151
 
@@ -153,7 +153,7 @@ Defined in: [src/async-semaphore.ts:373](https://github.com/isdk/util.js/blob/61
153
153
 
154
154
  > `protected` **paused**: `boolean`
155
155
 
156
- Defined in: [src/async-semaphore.ts:96](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L96)
156
+ Defined in: [src/async-semaphore.ts:96](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L96)
157
157
 
158
158
  #### Inherited from
159
159
 
@@ -165,7 +165,7 @@ Defined in: [src/async-semaphore.ts:96](https://github.com/isdk/util.js/blob/618
165
165
 
166
166
  > `protected` `optional` **pauseFn**: () => `void`
167
167
 
168
- Defined in: [src/async-semaphore.ts:93](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L93)
168
+ Defined in: [src/async-semaphore.ts:93](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L93)
169
169
 
170
170
  #### Returns
171
171
 
@@ -181,7 +181,7 @@ Defined in: [src/async-semaphore.ts:93](https://github.com/isdk/util.js/blob/618
181
181
 
182
182
  > `protected` `optional` **resumeFn**: () => `void`
183
183
 
184
- Defined in: [src/async-semaphore.ts:94](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L94)
184
+ Defined in: [src/async-semaphore.ts:94](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L94)
185
185
 
186
186
  #### Returns
187
187
 
@@ -197,7 +197,7 @@ Defined in: [src/async-semaphore.ts:94](https://github.com/isdk/util.js/blob/618
197
197
 
198
198
  > `protected` **useDefaultTokens**: `boolean`
199
199
 
200
- Defined in: [src/async-semaphore.ts:92](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L92)
200
+ Defined in: [src/async-semaphore.ts:92](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L92)
201
201
 
202
202
  #### Inherited from
203
203
 
@@ -209,7 +209,7 @@ Defined in: [src/async-semaphore.ts:92](https://github.com/isdk/util.js/blob/618
209
209
 
210
210
  > `readonly` **waiting**: [`Deque`](Deque.md)\<[`SemaphoreTaskItem`](../interfaces/SemaphoreTaskItem.md) \| `undefined`\>
211
211
 
212
- Defined in: [src/async-semaphore.ts:89](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L89)
212
+ Defined in: [src/async-semaphore.ts:89](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L89)
213
213
 
214
214
  #### Inherited from
215
215
 
@@ -223,7 +223,7 @@ Defined in: [src/async-semaphore.ts:89](https://github.com/isdk/util.js/blob/618
223
223
 
224
224
  > **get** **activeCount**(): `number`
225
225
 
226
- Defined in: [src/async-semaphore.ts:318](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L318)
226
+ Defined in: [src/async-semaphore.ts:323](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L323)
227
227
 
228
228
  Get the total count of all active operations.
229
229
 
@@ -249,7 +249,7 @@ The total count of active operations, including both waiting and ongoing tasks.
249
249
 
250
250
  > **get** **pendingCount**(): `number`
251
251
 
252
- Defined in: [src/async-semaphore.ts:327](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L327)
252
+ Defined in: [src/async-semaphore.ts:332](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L332)
253
253
 
254
254
  Get the number of callers waiting on the semaphore, i.e. the number of pending promises.
255
255
 
@@ -269,7 +269,7 @@ The number of waiters in the waiting list.
269
269
 
270
270
  > **\_dispatchTask**(`task`, `options?`): `void`
271
271
 
272
- Defined in: [src/async-semaphore.ts:212](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L212)
272
+ Defined in: [src/async-semaphore.ts:210](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L210)
273
273
 
274
274
  #### Parameters
275
275
 
@@ -295,7 +295,7 @@ Defined in: [src/async-semaphore.ts:212](https://github.com/isdk/util.js/blob/61
295
295
 
296
296
  > **\_newReleaser**(`options?`): [`BinarySemaphoreReleaserFunc`](../interfaces/BinarySemaphoreReleaserFunc.md)
297
297
 
298
- Defined in: [src/async-semaphore.ts:199](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L199)
298
+ Defined in: [src/async-semaphore.ts:195](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L195)
299
299
 
300
300
  #### Parameters
301
301
 
@@ -317,7 +317,7 @@ Defined in: [src/async-semaphore.ts:199](https://github.com/isdk/util.js/blob/61
317
317
 
318
318
  > **abort**(`reason?`): `void`
319
319
 
320
- Defined in: [src/async-semaphore.ts:301](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L301)
320
+ Defined in: [src/async-semaphore.ts:306](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L306)
321
321
 
322
322
  #### Parameters
323
323
 
@@ -339,7 +339,7 @@ Defined in: [src/async-semaphore.ts:301](https://github.com/isdk/util.js/blob/61
339
339
 
340
340
  > **acquire**(`options?`): `Promise`\<[`BinarySemaphoreReleaserFunc`](../interfaces/BinarySemaphoreReleaserFunc.md)\>
341
341
 
342
- Defined in: [src/async-semaphore.ts:243](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L243)
342
+ Defined in: [src/async-semaphore.ts:244](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L244)
343
343
 
344
344
  Acquire a token from the semaphore, thus decrement the number of available execution slots. If initFn is not used then the return value of the function can be discarded.
345
345
 
@@ -365,7 +365,7 @@ A promise that resolves to a release function when a token is acquired. If the s
365
365
 
366
366
  > **drain**(): `Promise`\<`any`[]\>
367
367
 
368
- Defined in: [src/async-semaphore.ts:439](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L439)
368
+ Defined in: [src/async-semaphore.ts:451](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L451)
369
369
 
370
370
  Drains the semaphore and returns all the initialized tokens in an array. Draining is an ideal way to ensure there are no pending async tasks, for example before a process will terminate.
371
371
 
@@ -383,7 +383,7 @@ Drains the semaphore and returns all the initialized tokens in an array. Drainin
383
383
 
384
384
  > **init**(`options`): `void`
385
385
 
386
- Defined in: [src/async-semaphore.ts:193](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L193)
386
+ Defined in: [src/async-semaphore.ts:189](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L189)
387
387
 
388
388
  #### Parameters
389
389
 
@@ -405,7 +405,7 @@ Defined in: [src/async-semaphore.ts:193](https://github.com/isdk/util.js/blob/61
405
405
 
406
406
  > **initFree**(`options`): `void`
407
407
 
408
- Defined in: [src/async-semaphore.ts:408](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L408)
408
+ Defined in: [src/async-semaphore.ts:413](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L413)
409
409
 
410
410
  #### Parameters
411
411
 
@@ -427,7 +427,7 @@ Defined in: [src/async-semaphore.ts:408](https://github.com/isdk/util.js/blob/61
427
427
 
428
428
  > **lock**(`options?`): `any`
429
429
 
430
- Defined in: [src/async-semaphore.ts:435](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L435)
430
+ Defined in: [src/async-semaphore.ts:447](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L447)
431
431
 
432
432
  #### Parameters
433
433
 
@@ -449,7 +449,7 @@ Defined in: [src/async-semaphore.ts:435](https://github.com/isdk/util.js/blob/61
449
449
 
450
450
  > **onReleased**(`options?`): `void`
451
451
 
452
- Defined in: [src/async-semaphore.ts:177](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L177)
452
+ Defined in: [src/async-semaphore.ts:173](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L173)
453
453
 
454
454
  #### Parameters
455
455
 
@@ -471,7 +471,7 @@ Defined in: [src/async-semaphore.ts:177](https://github.com/isdk/util.js/blob/61
471
471
 
472
472
  > **release**(`options?`): `void`
473
473
 
474
- Defined in: [src/async-semaphore.ts:288](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L288)
474
+ Defined in: [src/async-semaphore.ts:293](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L293)
475
475
 
476
476
  Releases the semaphore, incrementing the number of free execution slots. If there are tasks in the waiting queue, the next task will be dispatched.
477
477
 
@@ -495,7 +495,7 @@ Releases the semaphore, incrementing the number of free execution slots. If ther
495
495
 
496
496
  > **tryAcquire**(`options?`): `any`
497
497
 
498
- Defined in: [src/async-semaphore.ts:416](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L416)
498
+ Defined in: [src/async-semaphore.ts:424](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L424)
499
499
 
500
500
  Attempt to acquire a token from the semaphore, if one is available immediately. Otherwise, return undefined.
501
501
 
@@ -521,7 +521,7 @@ Returns a token if the semaphore is not full; otherwise, returns `undefined`.
521
521
 
522
522
  > **unlock**(`token?`): `void`
523
523
 
524
- Defined in: [src/async-semaphore.ts:431](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L431)
524
+ Defined in: [src/async-semaphore.ts:443](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L443)
525
525
 
526
526
  #### Parameters
527
527
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  # Class: SignalGate\<T\>
8
8
 
9
- Defined in: [src/async-signal-gate.ts:20](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-signal-gate.ts#L20)
9
+ Defined in: [src/async-signal-gate.ts:20](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-signal-gate.ts#L20)
10
10
 
11
11
  An asynchronous signal gate that blocks operations until a signal is emitted.
12
12
  This class allows multiple awaiters to wait for a signal and resolves all pending promises with the emitted value.
@@ -46,7 +46,7 @@ valueGate.signal(42); // Must provide a number value
46
46
 
47
47
  > `protected` **\_isSignaled**: `boolean` = `false`
48
48
 
49
- Defined in: [src/async-signal-gate.ts:21](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-signal-gate.ts#L21)
49
+ Defined in: [src/async-signal-gate.ts:21](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-signal-gate.ts#L21)
50
50
 
51
51
  ***
52
52
 
@@ -54,7 +54,7 @@ Defined in: [src/async-signal-gate.ts:21](https://github.com/isdk/util.js/blob/6
54
54
 
55
55
  > `protected` **\_signalValue**: `T` \| `undefined`
56
56
 
57
- Defined in: [src/async-signal-gate.ts:22](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-signal-gate.ts#L22)
57
+ Defined in: [src/async-signal-gate.ts:22](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-signal-gate.ts#L22)
58
58
 
59
59
  ***
60
60
 
@@ -62,7 +62,7 @@ Defined in: [src/async-signal-gate.ts:22](https://github.com/isdk/util.js/blob/6
62
62
 
63
63
  > `protected` **waitQueue**: `object`[] = `[]`
64
64
 
65
- Defined in: [src/async-signal-gate.ts:23](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-signal-gate.ts#L23)
65
+ Defined in: [src/async-signal-gate.ts:23](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-signal-gate.ts#L23)
66
66
 
67
67
  #### reject()
68
68
 
@@ -100,7 +100,7 @@ Defined in: [src/async-signal-gate.ts:23](https://github.com/isdk/util.js/blob/6
100
100
 
101
101
  > **get** **signaled**(): `boolean`
102
102
 
103
- Defined in: [src/async-signal-gate.ts:28](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-signal-gate.ts#L28)
103
+ Defined in: [src/async-signal-gate.ts:28](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-signal-gate.ts#L28)
104
104
 
105
105
  ##### Returns
106
106
 
@@ -112,7 +112,7 @@ Defined in: [src/async-signal-gate.ts:28](https://github.com/isdk/util.js/blob/6
112
112
 
113
113
  > **abort**(`reason?`): `void`
114
114
 
115
- Defined in: [src/async-signal-gate.ts:65](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-signal-gate.ts#L65)
115
+ Defined in: [src/async-signal-gate.ts:65](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-signal-gate.ts#L65)
116
116
 
117
117
  Aborts all pending waits, rejecting their promises with an error.
118
118
  This does **not** reset the signal state (the gate remains signaled or unsignaled).
@@ -135,7 +135,7 @@ The reason for aborting the waits.
135
135
 
136
136
  > **reset**(): `void`
137
137
 
138
- Defined in: [src/async-signal-gate.ts:53](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-signal-gate.ts#L53)
138
+ Defined in: [src/async-signal-gate.ts:53](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-signal-gate.ts#L53)
139
139
 
140
140
  Resets the gate to its initial state, allowing a new signal to be emitted.
141
141
 
@@ -149,7 +149,7 @@ Resets the gate to its initial state, allowing a new signal to be emitted.
149
149
 
150
150
  > **signal**(`value?`): `void`
151
151
 
152
- Defined in: [src/async-signal-gate.ts:38](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-signal-gate.ts#L38)
152
+ Defined in: [src/async-signal-gate.ts:38](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-signal-gate.ts#L38)
153
153
 
154
154
  Emits the signal with an optional value, resolving all pending [wait](#wait) promises.
155
155
  Subsequent calls have no effect until [reset](#reset) is called.
@@ -172,7 +172,7 @@ The value to emit with the signal (only required if T is not void).
172
172
 
173
173
  > **wait**(): `Promise`\<`T`\>
174
174
 
175
- Defined in: [src/async-signal-gate.ts:83](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-signal-gate.ts#L83)
175
+ Defined in: [src/async-signal-gate.ts:83](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-signal-gate.ts#L83)
176
176
 
177
177
  Returns a promise that resolves with the emitted signal value.
178
178
  If called after the signal has been emitted, resolves immediately with the stored value.
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **RateLimit**(`rps`, `__namedParameters?`): () => `Promise`\<`void`\>
10
10
 
11
- Defined in: [src/async-semaphore.ts:476](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/async-semaphore.ts#L476)
11
+ Defined in: [src/async-semaphore.ts:488](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/async-semaphore.ts#L488)
12
12
 
13
13
  Creates a rate limiter function that blocks with a promise whenever the rate limit is hit and resolves the promise once the call rate is within the limit set by rps. The second argument is optional.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **arrayHasAll**\<`T`\>(`array`, `elements`): `boolean`
10
10
 
11
- Defined in: [src/array-has-all.ts:15](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/array-has-all.ts#L15)
11
+ Defined in: [src/array-has-all.ts:15](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/array-has-all.ts#L15)
12
12
 
13
13
  Checks whether the provided array contains all of the specified elements.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **extNameLevel**(`extName`): `number`
10
10
 
11
- Defined in: [src/filename.ts:189](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/filename.ts#L189)
11
+ Defined in: [src/filename.ts:226](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/filename.ts#L226)
12
12
 
13
13
  Calculates the level of an extension name.
14
14
 
@@ -0,0 +1,91 @@
1
+ [**@isdk/util**](../README.md)
2
+
3
+ ***
4
+
5
+ [@isdk/util](../globals.md) / extractCodeBlock
6
+
7
+ # Function: extractCodeBlock()
8
+
9
+ ## Call Signature
10
+
11
+ > **extractCodeBlock**(`text`, `lang?`): `string` \| [`CodeString`](../interfaces/CodeString.md)
12
+
13
+ Defined in: [src/extract-code-block.ts:61](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/extract-code-block.ts#L61)
14
+
15
+ Extracts fenced code block(s) from the input `text`, optionally filtered by language.
16
+
17
+ This function supports both triple-backtick (```) and triple-tilde (~~~) fenced code block
18
+ syntaxes as commonly used in Markdown.
19
+
20
+ ### Parameters
21
+
22
+ #### text
23
+
24
+ `string`
25
+
26
+ The input string that may contain one or more fenced code blocks.
27
+
28
+ #### lang?
29
+
30
+ `string`
31
+
32
+ Optional. The expected language identifier (case-insensitive). If omitted,
33
+ the last code block in the text is returned, irrespective of its language.
34
+
35
+ ### Returns
36
+
37
+ `string` \| [`CodeString`](../interfaces/CodeString.md)
38
+
39
+ The extracted code content as a [CodeString](../interfaces/CodeString.md) instance (with `lang` and `meta` properties)
40
+ if a matching code block is found, or as the original `text` if no match is found.
41
+
42
+ ### Example
43
+
44
+ ```ts
45
+ const input = 'Intro\n```js\nconsole.log("hello");\n```\nOutro';
46
+ const code = extractCodeBlock(input, 'js');
47
+ console.log(code); // 'console.log("hello");'
48
+ console.log(code.lang); // 'js'
49
+ ```
50
+
51
+ ## Call Signature
52
+
53
+ > **extractCodeBlock**(`text`, `options?`): `string` \| [`CodeString`](../interfaces/CodeString.md) \| (`string` \| [`CodeString`](../interfaces/CodeString.md))[]
54
+
55
+ Defined in: [src/extract-code-block.ts:85](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/extract-code-block.ts#L85)
56
+
57
+ Extracts fenced code block(s) from the input `text` with options.
58
+
59
+ ### Parameters
60
+
61
+ #### text
62
+
63
+ `string`
64
+
65
+ The input string that may contain one or more fenced code blocks.
66
+
67
+ #### options?
68
+
69
+ [`ExtractCodeBlockOptions`](../interfaces/ExtractCodeBlockOptions.md)
70
+
71
+ Optional. Extraction options:
72
+ - `lang`: Filter by language (case-insensitive).
73
+ - `index`: The index of the block to extract. `-1` is the last one (default).
74
+ - `all`: If `true`, returns an array of all matching blocks.
75
+
76
+ ### Returns
77
+
78
+ `string` \| [`CodeString`](../interfaces/CodeString.md) \| (`string` \| [`CodeString`](../interfaces/CodeString.md))[]
79
+
80
+ If `options.all` is true, returns an array of [CodeString](../interfaces/CodeString.md) or string.
81
+ Otherwise, returns a single [CodeString](../interfaces/CodeString.md) or the original `text` if no match is found at the specified index.
82
+
83
+ ### Example
84
+
85
+ ```ts
86
+ const input = '```js\n1\n```\n```ts\n2\n```';
87
+ // Get the first block
88
+ const first = extractCodeBlock(input, { index: 0 }); // '1\n' (js)
89
+ // Get all blocks
90
+ const all = extractCodeBlock(input, { all: true }); // ['1\n' (js), '2\n' (ts)]
91
+ ```
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **filenameReservedRegex**(): `RegExp`
10
10
 
11
- Defined in: [src/filename.ts:42](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/filename.ts#L42)
11
+ Defined in: [src/filename.ts:44](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/filename.ts#L44)
12
12
 
13
13
  Returns a new regular expression instance for reserved filename characters with the 'g' flag.
14
14
  use this to reset the with global option
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **findPort**(`port`, `portRetryCount?`): `Promise`\<`number`\>
10
10
 
11
- Defined in: [src/find-port.ts:3](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/find-port.ts#L3)
11
+ Defined in: [src/find-port.ts:3](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/find-port.ts#L3)
12
12
 
13
13
  ## Parameters
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **getMultiLevelExtname**(`filename`, `level?`): `string`
10
10
 
11
- Defined in: [src/get-multi-level-extname.ts:9](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/get-multi-level-extname.ts#L9)
11
+ Defined in: [src/get-multi-level-extname.ts:9](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/get-multi-level-extname.ts#L9)
12
12
 
13
13
  Retrieves multi-level file extension
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **glob**(`filepath`, `pattern`, `rootDir?`): `boolean` \| `undefined`
10
10
 
11
- Defined in: [src/glob.ts:29](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/glob.ts#L29)
11
+ Defined in: [src/glob.ts:29](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/glob.ts#L29)
12
12
 
13
13
  Matches a file path against a list of glob patterns.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **isStringIn**(`str`, `arr`): `boolean`
10
10
 
11
- Defined in: [src/is-string-in.ts:17](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/is-string-in.ts#L17)
11
+ Defined in: [src/is-string-in.ts:17](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/is-string-in.ts#L17)
12
12
 
13
13
  Checks if a given string exists within an array of strings or a single string.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **isValidFilename**(`filename`): `boolean` \| `""`
10
10
 
11
- Defined in: [src/filename.ts:63](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/filename.ts#L63)
11
+ Defined in: [src/filename.ts:65](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/filename.ts#L65)
12
12
 
13
13
  Validates if a given string is a valid filename.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **isValidFilepath**(`filepath`): `boolean`
10
10
 
11
- Defined in: [src/filename.ts:72](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/filename.ts#L72)
11
+ Defined in: [src/filename.ts:82](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/filename.ts#L82)
12
12
 
13
13
  Validates whether the given filepath is valid.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **normalizeIncludeFiles**(`files?`, `defaultFiles?`): `string`[]
10
10
 
11
- Defined in: [src/include-files.ts:34](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/include-files.ts#L34)
11
+ Defined in: [src/include-files.ts:34](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/include-files.ts#L34)
12
12
 
13
13
  Normalizes a list of file patterns for glob matching.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **omitDeepBy**\<`T`\>(`value`, `predicate`, `cache?`): `any`
10
10
 
11
- Defined in: [src/omit-deep-by.ts:92](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/omit-deep-by.ts#L92)
11
+ Defined in: [src/omit-deep-by.ts:92](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/omit-deep-by.ts#L92)
12
12
 
13
13
  Recursively removes properties from an object or array that satisfy the given predicate condition.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **omitEmptyDeep**\<`T`\>(`value`, `omitFunc?`): `any`
10
10
 
11
- Defined in: [src/omit-empty-deep.ts:33](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/omit-empty-deep.ts#L33)
11
+ Defined in: [src/omit-empty-deep.ts:33](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/omit-empty-deep.ts#L33)
12
12
 
13
13
  Deeply removes empty values from objects or arrays, supporting both string and Symbol keys.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **parseFrontMatter**(`value`, `delimiter?`): `object`
10
10
 
11
- Defined in: [src/front-matter.ts:6](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/front-matter.ts#L6)
11
+ Defined in: [src/front-matter.ts:6](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/front-matter.ts#L6)
12
12
 
13
13
  ## Parameters
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **parseYaml**(`content`, `options?`): `any`
10
10
 
11
- Defined in: [src/yaml.ts:51](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/yaml.ts#L51)
11
+ Defined in: [src/yaml.ts:66](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/yaml.ts#L66)
12
12
 
13
13
  Parses a YAML string into a JavaScript object with optional custom tags.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **reControlCharsRegex**(): `RegExp`
10
10
 
11
- Defined in: [src/filename.ts:50](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/filename.ts#L50)
11
+ Defined in: [src/filename.ts:52](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/filename.ts#L52)
12
12
 
13
13
  Returns a new regular expression instance for control characters in a filename with the 'g' flag.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **registerYamlTag**(`tags`): `void`
10
10
 
11
- Defined in: [src/yaml.ts:23](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/yaml.ts#L23)
11
+ Defined in: [src/yaml.ts:34](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/yaml.ts#L34)
12
12
 
13
13
  Registers custom YAML tags to be used in parsing and stringifying YAML content.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **removeLeadingEmptyLines**(`text`): `string`
10
10
 
11
- Defined in: [src/remove-leading-empty-lines.ts:16](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/remove-leading-empty-lines.ts#L16)
11
+ Defined in: [src/remove-leading-empty-lines.ts:16](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/remove-leading-empty-lines.ts#L16)
12
12
 
13
13
  Removes all leading empty lines or "#" comments line from the given string.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **sanitizeFilename**(`filename`, `options?`): `string`
10
10
 
11
- Defined in: [src/filename.ts:97](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/filename.ts#L97)
11
+ Defined in: [src/filename.ts:110](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/filename.ts#L110)
12
12
 
13
13
  Sanitizes a given filename by replacing invalid characters with a specified replacement character or a default.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **sanitizeFilepath**(`filepath`, `options?`): `string`
10
10
 
11
- Defined in: [src/filename.ts:149](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/filename.ts#L149)
11
+ Defined in: [src/filename.ts:178](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/filename.ts#L178)
12
12
 
13
13
  Sanitizes each part of a file path and reassembles it, ensuring the path is valid according to provided options.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **sleep**(`ms`): `Promise`\<`void`\>
10
10
 
11
- Defined in: [src/sleep.ts:12](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/sleep.ts#L12)
11
+ Defined in: [src/sleep.ts:12](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/sleep.ts#L12)
12
12
 
13
13
  Suspends execution for a specified number of milliseconds
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **stringifyYaml**(`content`, `options?`): `string`
10
10
 
11
- Defined in: [src/yaml.ts:85](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/yaml.ts#L85)
11
+ Defined in: [src/yaml.ts:103](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/yaml.ts#L103)
12
12
 
13
13
  Converts a JavaScript object into a YAML string with optional custom tags.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **toCamelCase**(`str`): `string`
10
10
 
11
- Defined in: [src/to-camel-case.ts:17](https://github.com/isdk/util.js/blob/61856e5b1bbb9d976eeb1fdfe1a4d88a26997dec/src/to-camel-case.ts#L17)
11
+ Defined in: [src/to-camel-case.ts:17](https://github.com/isdk/util.js/blob/20d48780d60e0a0a6f6a696a3efdfa46d4cb3b1e/src/to-camel-case.ts#L17)
12
12
 
13
13
  Converts a string to camelCase.
14
14