@isdk/util 0.3.1 → 0.3.3
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 +491 -1
- package/dist/index.d.ts +491 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/docs/classes/BinarySemaphore.md +418 -0
- package/docs/classes/ConfigFile.md +54 -5
- package/docs/classes/Deque.md +1912 -0
- package/docs/classes/IntSet.md +216 -0
- package/docs/classes/Semaphore.md +538 -0
- package/docs/classes/SignalGate.md +184 -0
- package/docs/functions/RateLimit.md +37 -0
- package/docs/functions/arrayHasAll.md +1 -1
- package/docs/functions/extNameLevel.md +1 -1
- package/docs/functions/filenameReservedRegex.md +1 -1
- package/docs/functions/findPort.md +25 -0
- 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/parseFrontMatter.md +1 -1
- package/docs/functions/parseYaml.md +1 -1
- package/docs/functions/reControlCharsRegex.md +1 -1
- package/docs/functions/registerYamlTag.md +2 -2
- 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 +36 -0
- 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 +27 -0
- package/docs/globals.md +17 -0
- package/docs/interfaces/BinarySemaphoreAcquireOptions.md +25 -0
- package/docs/interfaces/BinarySemaphoreOptions.md +57 -0
- package/docs/interfaces/BinarySemaphoreReleaseOptions.md +25 -0
- package/docs/interfaces/BinarySemaphoreReleaserFunc.md +37 -0
- 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 +89 -0
- package/docs/interfaces/SemaphoreTaskItem.md +73 -0
- package/docs/type-aliases/SemaphoreIsReadyFuncType.md +15 -0
- 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 +11 -0
- package/docs/variables/FilenameReservedRegex.md +1 -1
- package/docs/variables/WindowsReservedNameRegex.md +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
[**@isdk/util**](../README.md)
|
|
2
|
+
|
|
3
|
+
***
|
|
4
|
+
|
|
5
|
+
[@isdk/util](../globals.md) / BinarySemaphore
|
|
6
|
+
|
|
7
|
+
# Class: BinarySemaphore
|
|
8
|
+
|
|
9
|
+
Defined in: [src/async-semaphore.ts:88](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L88)
|
|
10
|
+
|
|
11
|
+
A binary semaphore implementation for managing concurrency in asynchronous operations.
|
|
12
|
+
Unlike a general semaphore, a binary semaphore allows only one caller to acquire the semaphore at a time.
|
|
13
|
+
It provides methods to acquire, release, and manage waiting tasks efficiently.
|
|
14
|
+
|
|
15
|
+
Example usage:
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
const semaphore = new Semaphore(5); // Allows 5 concurrent operations.
|
|
19
|
+
|
|
20
|
+
const semaphore = new Semaphore(
|
|
21
|
+
4, // Allow 4 concurrent async calls
|
|
22
|
+
{
|
|
23
|
+
capacity: 100 // Prealloc space for 100 tokens
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
async function fetchData(x) {
|
|
28
|
+
await semaphore.acquire()
|
|
29
|
+
try {
|
|
30
|
+
console.log(semaphore.pendingCount + ' calls to fetch are waiting')
|
|
31
|
+
// ... do some async stuff with x
|
|
32
|
+
} finally {
|
|
33
|
+
semaphore.release();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const data = await Promise.all(array.map(fetchData));
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Extended by
|
|
41
|
+
|
|
42
|
+
- [`Semaphore`](Semaphore.md)
|
|
43
|
+
|
|
44
|
+
## Constructors
|
|
45
|
+
|
|
46
|
+
### Constructor
|
|
47
|
+
|
|
48
|
+
> **new BinarySemaphore**(`options`): `BinarySemaphore`
|
|
49
|
+
|
|
50
|
+
Defined in: [src/async-semaphore.ts:145](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L145)
|
|
51
|
+
|
|
52
|
+
Creates a binary semaphore object for managing concurrency in asynchronous operations.
|
|
53
|
+
|
|
54
|
+
#### Parameters
|
|
55
|
+
|
|
56
|
+
##### options
|
|
57
|
+
|
|
58
|
+
[`BinarySemaphoreOptions`](../interfaces/BinarySemaphoreOptions.md) = `{}`
|
|
59
|
+
|
|
60
|
+
#### Returns
|
|
61
|
+
|
|
62
|
+
`BinarySemaphore`
|
|
63
|
+
|
|
64
|
+
## Properties
|
|
65
|
+
|
|
66
|
+
### \_activeCount
|
|
67
|
+
|
|
68
|
+
> `protected` **\_activeCount**: `number`
|
|
69
|
+
|
|
70
|
+
Defined in: [src/async-semaphore.ts:97](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L97)
|
|
71
|
+
|
|
72
|
+
***
|
|
73
|
+
|
|
74
|
+
### emitter
|
|
75
|
+
|
|
76
|
+
> `protected` **emitter**: `EventEmitter`
|
|
77
|
+
|
|
78
|
+
Defined in: [src/async-semaphore.ts:91](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L91)
|
|
79
|
+
|
|
80
|
+
***
|
|
81
|
+
|
|
82
|
+
### free
|
|
83
|
+
|
|
84
|
+
> `protected` **free**: `any`
|
|
85
|
+
|
|
86
|
+
Defined in: [src/async-semaphore.ts:90](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L90)
|
|
87
|
+
|
|
88
|
+
***
|
|
89
|
+
|
|
90
|
+
### initTokenFn()
|
|
91
|
+
|
|
92
|
+
> `protected` **initTokenFn**: (`token`?) => `void`
|
|
93
|
+
|
|
94
|
+
Defined in: [src/async-semaphore.ts:95](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L95)
|
|
95
|
+
|
|
96
|
+
#### Parameters
|
|
97
|
+
|
|
98
|
+
##### token?
|
|
99
|
+
|
|
100
|
+
`any`
|
|
101
|
+
|
|
102
|
+
#### Returns
|
|
103
|
+
|
|
104
|
+
`void`
|
|
105
|
+
|
|
106
|
+
***
|
|
107
|
+
|
|
108
|
+
### paused
|
|
109
|
+
|
|
110
|
+
> `protected` **paused**: `boolean`
|
|
111
|
+
|
|
112
|
+
Defined in: [src/async-semaphore.ts:96](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L96)
|
|
113
|
+
|
|
114
|
+
***
|
|
115
|
+
|
|
116
|
+
### pauseFn()?
|
|
117
|
+
|
|
118
|
+
> `protected` `optional` **pauseFn**: () => `void`
|
|
119
|
+
|
|
120
|
+
Defined in: [src/async-semaphore.ts:93](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L93)
|
|
121
|
+
|
|
122
|
+
#### Returns
|
|
123
|
+
|
|
124
|
+
`void`
|
|
125
|
+
|
|
126
|
+
***
|
|
127
|
+
|
|
128
|
+
### resumeFn()?
|
|
129
|
+
|
|
130
|
+
> `protected` `optional` **resumeFn**: () => `void`
|
|
131
|
+
|
|
132
|
+
Defined in: [src/async-semaphore.ts:94](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L94)
|
|
133
|
+
|
|
134
|
+
#### Returns
|
|
135
|
+
|
|
136
|
+
`void`
|
|
137
|
+
|
|
138
|
+
***
|
|
139
|
+
|
|
140
|
+
### useDefaultTokens
|
|
141
|
+
|
|
142
|
+
> `protected` **useDefaultTokens**: `boolean`
|
|
143
|
+
|
|
144
|
+
Defined in: [src/async-semaphore.ts:92](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L92)
|
|
145
|
+
|
|
146
|
+
***
|
|
147
|
+
|
|
148
|
+
### waiting
|
|
149
|
+
|
|
150
|
+
> `readonly` **waiting**: [`Deque`](Deque.md)\<`undefined` \| [`SemaphoreTaskItem`](../interfaces/SemaphoreTaskItem.md)\>
|
|
151
|
+
|
|
152
|
+
Defined in: [src/async-semaphore.ts:89](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L89)
|
|
153
|
+
|
|
154
|
+
## Accessors
|
|
155
|
+
|
|
156
|
+
### activeCount
|
|
157
|
+
|
|
158
|
+
#### Get Signature
|
|
159
|
+
|
|
160
|
+
> **get** **activeCount**(): `number`
|
|
161
|
+
|
|
162
|
+
Defined in: [src/async-semaphore.ts:318](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L318)
|
|
163
|
+
|
|
164
|
+
Get the total count of all active operations.
|
|
165
|
+
|
|
166
|
+
This method returns the number of operations that are either:
|
|
167
|
+
- Waiting in the queue to acquire the semaphore (`pendingCount`).
|
|
168
|
+
- Already acquired the semaphore but have not yet released it.
|
|
169
|
+
|
|
170
|
+
##### Returns
|
|
171
|
+
|
|
172
|
+
`number`
|
|
173
|
+
|
|
174
|
+
The total count of active operations, including both waiting and ongoing tasks.
|
|
175
|
+
|
|
176
|
+
***
|
|
177
|
+
|
|
178
|
+
### pendingCount
|
|
179
|
+
|
|
180
|
+
#### Get Signature
|
|
181
|
+
|
|
182
|
+
> **get** **pendingCount**(): `number`
|
|
183
|
+
|
|
184
|
+
Defined in: [src/async-semaphore.ts:327](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L327)
|
|
185
|
+
|
|
186
|
+
Get the number of callers waiting on the semaphore, i.e. the number of pending promises.
|
|
187
|
+
|
|
188
|
+
##### Returns
|
|
189
|
+
|
|
190
|
+
`number`
|
|
191
|
+
|
|
192
|
+
The number of waiters in the waiting list.
|
|
193
|
+
|
|
194
|
+
## Methods
|
|
195
|
+
|
|
196
|
+
### \_dispatchTask()
|
|
197
|
+
|
|
198
|
+
> **\_dispatchTask**(`task`, `options`?): `void`
|
|
199
|
+
|
|
200
|
+
Defined in: [src/async-semaphore.ts:212](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L212)
|
|
201
|
+
|
|
202
|
+
#### Parameters
|
|
203
|
+
|
|
204
|
+
##### task
|
|
205
|
+
|
|
206
|
+
[`SemaphoreTaskItem`](../interfaces/SemaphoreTaskItem.md)
|
|
207
|
+
|
|
208
|
+
##### options?
|
|
209
|
+
|
|
210
|
+
[`BinarySemaphoreReleaseOptions`](../interfaces/BinarySemaphoreReleaseOptions.md)
|
|
211
|
+
|
|
212
|
+
#### Returns
|
|
213
|
+
|
|
214
|
+
`void`
|
|
215
|
+
|
|
216
|
+
***
|
|
217
|
+
|
|
218
|
+
### \_newReleaser()
|
|
219
|
+
|
|
220
|
+
> **\_newReleaser**(`options`?): [`BinarySemaphoreReleaserFunc`](../interfaces/BinarySemaphoreReleaserFunc.md)
|
|
221
|
+
|
|
222
|
+
Defined in: [src/async-semaphore.ts:199](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L199)
|
|
223
|
+
|
|
224
|
+
#### Parameters
|
|
225
|
+
|
|
226
|
+
##### options?
|
|
227
|
+
|
|
228
|
+
[`BinarySemaphoreReleaseOptions`](../interfaces/BinarySemaphoreReleaseOptions.md)
|
|
229
|
+
|
|
230
|
+
#### Returns
|
|
231
|
+
|
|
232
|
+
[`BinarySemaphoreReleaserFunc`](../interfaces/BinarySemaphoreReleaserFunc.md)
|
|
233
|
+
|
|
234
|
+
***
|
|
235
|
+
|
|
236
|
+
### abort()
|
|
237
|
+
|
|
238
|
+
> **abort**(`reason`?): `void`
|
|
239
|
+
|
|
240
|
+
Defined in: [src/async-semaphore.ts:301](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L301)
|
|
241
|
+
|
|
242
|
+
#### Parameters
|
|
243
|
+
|
|
244
|
+
##### reason?
|
|
245
|
+
|
|
246
|
+
`any`
|
|
247
|
+
|
|
248
|
+
#### Returns
|
|
249
|
+
|
|
250
|
+
`void`
|
|
251
|
+
|
|
252
|
+
***
|
|
253
|
+
|
|
254
|
+
### acquire()
|
|
255
|
+
|
|
256
|
+
> **acquire**(`options`?): `Promise`\<[`BinarySemaphoreReleaserFunc`](../interfaces/BinarySemaphoreReleaserFunc.md)\>
|
|
257
|
+
|
|
258
|
+
Defined in: [src/async-semaphore.ts:243](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L243)
|
|
259
|
+
|
|
260
|
+
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.
|
|
261
|
+
|
|
262
|
+
#### Parameters
|
|
263
|
+
|
|
264
|
+
##### options?
|
|
265
|
+
|
|
266
|
+
[`BinarySemaphoreAcquireOptions`](../interfaces/BinarySemaphoreAcquireOptions.md)
|
|
267
|
+
|
|
268
|
+
#### Returns
|
|
269
|
+
|
|
270
|
+
`Promise`\<[`BinarySemaphoreReleaserFunc`](../interfaces/BinarySemaphoreReleaserFunc.md)\>
|
|
271
|
+
|
|
272
|
+
A promise that resolves to a release function when a token is acquired. If the semaphore is full, the caller will be added to a waiting queue.
|
|
273
|
+
|
|
274
|
+
***
|
|
275
|
+
|
|
276
|
+
### drain()
|
|
277
|
+
|
|
278
|
+
> **drain**(): `Promise`\<`any`[]\>
|
|
279
|
+
|
|
280
|
+
Defined in: [src/async-semaphore.ts:296](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L296)
|
|
281
|
+
|
|
282
|
+
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.
|
|
283
|
+
|
|
284
|
+
#### Returns
|
|
285
|
+
|
|
286
|
+
`Promise`\<`any`[]\>
|
|
287
|
+
|
|
288
|
+
***
|
|
289
|
+
|
|
290
|
+
### init()
|
|
291
|
+
|
|
292
|
+
> **init**(`options`): `void`
|
|
293
|
+
|
|
294
|
+
Defined in: [src/async-semaphore.ts:193](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L193)
|
|
295
|
+
|
|
296
|
+
#### Parameters
|
|
297
|
+
|
|
298
|
+
##### options
|
|
299
|
+
|
|
300
|
+
[`BinarySemaphoreOptions`](../interfaces/BinarySemaphoreOptions.md)
|
|
301
|
+
|
|
302
|
+
#### Returns
|
|
303
|
+
|
|
304
|
+
`void`
|
|
305
|
+
|
|
306
|
+
***
|
|
307
|
+
|
|
308
|
+
### initFree()
|
|
309
|
+
|
|
310
|
+
> **initFree**(`options`?): `void`
|
|
311
|
+
|
|
312
|
+
Defined in: [src/async-semaphore.ts:173](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L173)
|
|
313
|
+
|
|
314
|
+
#### Parameters
|
|
315
|
+
|
|
316
|
+
##### options?
|
|
317
|
+
|
|
318
|
+
[`BinarySemaphoreOptions`](../interfaces/BinarySemaphoreOptions.md)
|
|
319
|
+
|
|
320
|
+
#### Returns
|
|
321
|
+
|
|
322
|
+
`void`
|
|
323
|
+
|
|
324
|
+
***
|
|
325
|
+
|
|
326
|
+
### lock()
|
|
327
|
+
|
|
328
|
+
> **lock**(`options`?): `any`
|
|
329
|
+
|
|
330
|
+
Defined in: [src/async-semaphore.ts:217](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L217)
|
|
331
|
+
|
|
332
|
+
#### Parameters
|
|
333
|
+
|
|
334
|
+
##### options?
|
|
335
|
+
|
|
336
|
+
[`BinarySemaphoreAcquireOptions`](../interfaces/BinarySemaphoreAcquireOptions.md)
|
|
337
|
+
|
|
338
|
+
#### Returns
|
|
339
|
+
|
|
340
|
+
`any`
|
|
341
|
+
|
|
342
|
+
***
|
|
343
|
+
|
|
344
|
+
### onReleased()
|
|
345
|
+
|
|
346
|
+
> **onReleased**(`options`?): `void`
|
|
347
|
+
|
|
348
|
+
Defined in: [src/async-semaphore.ts:177](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L177)
|
|
349
|
+
|
|
350
|
+
#### Parameters
|
|
351
|
+
|
|
352
|
+
##### options?
|
|
353
|
+
|
|
354
|
+
[`BinarySemaphoreReleaseOptions`](../interfaces/BinarySemaphoreReleaseOptions.md)
|
|
355
|
+
|
|
356
|
+
#### Returns
|
|
357
|
+
|
|
358
|
+
`void`
|
|
359
|
+
|
|
360
|
+
***
|
|
361
|
+
|
|
362
|
+
### release()
|
|
363
|
+
|
|
364
|
+
> **release**(`options`?): `void`
|
|
365
|
+
|
|
366
|
+
Defined in: [src/async-semaphore.ts:288](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L288)
|
|
367
|
+
|
|
368
|
+
Releases the semaphore, incrementing the number of free execution slots. If there are tasks in the waiting queue, the next task will be dispatched.
|
|
369
|
+
|
|
370
|
+
#### Parameters
|
|
371
|
+
|
|
372
|
+
##### options?
|
|
373
|
+
|
|
374
|
+
[`BinarySemaphoreReleaseOptions`](../interfaces/BinarySemaphoreReleaseOptions.md)
|
|
375
|
+
|
|
376
|
+
#### Returns
|
|
377
|
+
|
|
378
|
+
`void`
|
|
379
|
+
|
|
380
|
+
***
|
|
381
|
+
|
|
382
|
+
### tryAcquire()
|
|
383
|
+
|
|
384
|
+
> **tryAcquire**(`options`?): `any`
|
|
385
|
+
|
|
386
|
+
Defined in: [src/async-semaphore.ts:234](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L234)
|
|
387
|
+
|
|
388
|
+
Attempt to acquire a token from the semaphore, if one is available immediately. Otherwise, return undefined.
|
|
389
|
+
|
|
390
|
+
#### Parameters
|
|
391
|
+
|
|
392
|
+
##### options?
|
|
393
|
+
|
|
394
|
+
[`BinarySemaphoreAcquireOptions`](../interfaces/BinarySemaphoreAcquireOptions.md)
|
|
395
|
+
|
|
396
|
+
#### Returns
|
|
397
|
+
|
|
398
|
+
`any`
|
|
399
|
+
|
|
400
|
+
Returns a token if the semaphore is not full; otherwise, returns `undefined`.
|
|
401
|
+
|
|
402
|
+
***
|
|
403
|
+
|
|
404
|
+
### unlock()
|
|
405
|
+
|
|
406
|
+
> **unlock**(`token`?): `void`
|
|
407
|
+
|
|
408
|
+
Defined in: [src/async-semaphore.ts:225](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/async-semaphore.ts#L225)
|
|
409
|
+
|
|
410
|
+
#### Parameters
|
|
411
|
+
|
|
412
|
+
##### token?
|
|
413
|
+
|
|
414
|
+
`any`
|
|
415
|
+
|
|
416
|
+
#### Returns
|
|
417
|
+
|
|
418
|
+
`void`
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
# Class: ConfigFile
|
|
8
8
|
|
|
9
|
-
Defined in: [config-file.ts:46](https://github.com/isdk/util.js/blob/
|
|
9
|
+
Defined in: [src/config-file.ts:46](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/config-file.ts#L46)
|
|
10
10
|
|
|
11
11
|
Represents a configuration file utility class that provides methods to load and save configuration files.
|
|
12
12
|
It supports multiple file formats such as YAML, JSON, etc., by registering corresponding parsers and stringifiers.
|
|
@@ -45,17 +45,66 @@ console.log(config); // Output: { key: 'value' }
|
|
|
45
45
|
|
|
46
46
|
> `static` **stringifys**: `Record`\<`string`, [`StringifyFunc`](../type-aliases/StringifyFunc.md)\> = `{}`
|
|
47
47
|
|
|
48
|
-
Defined in: [config-file.ts:50](https://github.com/isdk/util.js/blob/
|
|
48
|
+
Defined in: [src/config-file.ts:50](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/config-file.ts#L50)
|
|
49
49
|
|
|
50
50
|
A record of registered stringify functions for different file extensions.
|
|
51
51
|
|
|
52
52
|
## Methods
|
|
53
53
|
|
|
54
|
+
### existsSync()
|
|
55
|
+
|
|
56
|
+
> `static` **existsSync**(`filename`, `options`?): `boolean`
|
|
57
|
+
|
|
58
|
+
Defined in: [src/config-file.ts:132](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/config-file.ts#L132)
|
|
59
|
+
|
|
60
|
+
Checks if a configuration file exists at the specified path.
|
|
61
|
+
|
|
62
|
+
This method normalizes the filename by removing the extension (if present) and then delegates
|
|
63
|
+
to the underlying LoadConfigFile utility to perform the existence check. The normalization
|
|
64
|
+
ensures consistent handling of files regardless of whether they include extensions in the
|
|
65
|
+
provided filename.
|
|
66
|
+
|
|
67
|
+
#### Parameters
|
|
68
|
+
|
|
69
|
+
##### filename
|
|
70
|
+
|
|
71
|
+
`string`
|
|
72
|
+
|
|
73
|
+
The path to the configuration file to check for existence.
|
|
74
|
+
This can include or omit the file extension.
|
|
75
|
+
|
|
76
|
+
##### options?
|
|
77
|
+
|
|
78
|
+
[`LoadConfigFileOptions`](../interfaces/LoadConfigFileOptions.md)
|
|
79
|
+
|
|
80
|
+
Optional configuration options that may affect how the file existence
|
|
81
|
+
is checked, including extension level handling.
|
|
82
|
+
|
|
83
|
+
#### Returns
|
|
84
|
+
|
|
85
|
+
`boolean`
|
|
86
|
+
|
|
87
|
+
`true` if the configuration file exists, `false` otherwise.
|
|
88
|
+
|
|
89
|
+
#### Example
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
// Check if a YAML config file exists
|
|
93
|
+
const exists = ConfigFile.existsSync('config.yaml');
|
|
94
|
+
console.log(exists); // true or false
|
|
95
|
+
|
|
96
|
+
// Check with options
|
|
97
|
+
const existsWithExt = ConfigFile.existsSync('config', { extLevel: 2 });
|
|
98
|
+
console.log(existsWithExt); // true or false
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
***
|
|
102
|
+
|
|
54
103
|
### loadSync()
|
|
55
104
|
|
|
56
105
|
> `static` **loadSync**(`filename`, `options`?): `any`
|
|
57
106
|
|
|
58
|
-
Defined in: [config-file.ts:85](https://github.com/isdk/util.js/blob/
|
|
107
|
+
Defined in: [src/config-file.ts:85](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/config-file.ts#L85)
|
|
59
108
|
|
|
60
109
|
Loads a configuration file based on the provided filename and options.
|
|
61
110
|
|
|
@@ -92,7 +141,7 @@ console.log(config); // Output: { key: 'value' }
|
|
|
92
141
|
|
|
93
142
|
> `static` **register**(`extname`, `parser`, `stringify`): `void`
|
|
94
143
|
|
|
95
|
-
Defined in: [config-file.ts:64](https://github.com/isdk/util.js/blob/
|
|
144
|
+
Defined in: [src/config-file.ts:64](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/config-file.ts#L64)
|
|
96
145
|
|
|
97
146
|
Registers a parser and stringifier for specific file extensions.
|
|
98
147
|
|
|
@@ -132,7 +181,7 @@ ConfigFile.register(['.json'], JSON.parse, (obj) => JSON.stringify(obj, null, 2)
|
|
|
132
181
|
|
|
133
182
|
> `static` **saveSync**(`filename`, `config`, `options`?): `string`
|
|
134
183
|
|
|
135
|
-
Defined in: [config-file.ts:102](https://github.com/isdk/util.js/blob/
|
|
184
|
+
Defined in: [src/config-file.ts:102](https://github.com/isdk/util.js/blob/f6ac1e1b241d01211870dd55d000c1e9d4daa404/src/config-file.ts#L102)
|
|
136
185
|
|
|
137
186
|
Saves a configuration object to a file with the specified filename and options.
|
|
138
187
|
|