@w5s/dev 3.1.3 → 3.2.0

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.cts CHANGED
@@ -1,14 +1,15 @@
1
- import { ESLint } from 'eslint';
1
+ import { ESLint } from "eslint";
2
2
 
3
+ //#region src/directory.d.ts
3
4
  interface DirectoryOptions {
4
- /**
5
- * Directory path
6
- */
7
- readonly path: string;
8
- /**
9
- * Directory target state
10
- */
11
- readonly state: 'present' | 'absent';
5
+ /**
6
+ * Directory path
7
+ */
8
+ readonly path: string;
9
+ /**
10
+ * Directory target state
11
+ */
12
+ readonly state: 'present' | 'absent';
12
13
  }
13
14
  /**
14
15
  * Ensure directory is present/absent
@@ -38,56 +39,57 @@ declare function directory(options: DirectoryOptions): Promise<void>;
38
39
  * @param options
39
40
  */
40
41
  declare function directorySync(options: DirectoryOptions): void;
41
-
42
+ //#endregion
43
+ //#region src/ESLintConfig.d.ts
42
44
  declare namespace ESLintConfig {
43
- /**
44
- *
45
- * @param configs
46
- */
47
- function concat(...configs: ESLint.ConfigData[]): ESLint.ConfigData;
48
- /**
49
- * Always return 'off'. `_status` is the previous rule value.
50
- *
51
- * @param _status
52
- */
53
- function fixme(_status: string | number | [string | number, ...any[]] | undefined): "off";
54
- /**
55
- * Renames rules in the given object according to the given map.
56
- *
57
- * Given a map `{ 'old-prefix': 'new-prefix' }`, and a rule object
58
- * `{ 'old-prefix/rule-name': 'error' }`, this function will return
59
- * `{ 'new-prefix/rule-name': 'error' }`.
60
- *
61
- * @param rules - The object containing the rules to rename.
62
- * @param map - The object containing the rename map.
63
- * @returns The object with the renamed rules.
64
- */
65
- function renameRules(rules: Record<string, any>, map: Record<string, string>): Record<string, any>;
45
+ /**
46
+ *
47
+ * @param configs
48
+ */
49
+ function concat(...configs: ESLint.ConfigData[]): ESLint.ConfigData;
50
+ /**
51
+ * Always return 'off'. `_status` is the previous rule value.
52
+ *
53
+ * @param _status
54
+ */
55
+ function fixme(_status: string | number | [string | number, ...any[]] | undefined): "off";
56
+ /**
57
+ * Renames rules in the given object according to the given map.
58
+ *
59
+ * Given a map `{ 'old-prefix': 'new-prefix' }`, and a rule object
60
+ * `{ 'old-prefix/rule-name': 'error' }`, this function will return
61
+ * `{ 'new-prefix/rule-name': 'error' }`.
62
+ *
63
+ * @param rules The object containing the rules to rename.
64
+ * @param map The object containing the rename map.
65
+ */
66
+ function renameRules(rules: Record<string, any>, map: Record<string, string>): Record<string, any>;
66
67
  }
67
-
68
+ //#endregion
69
+ //#region src/block.d.ts
68
70
  interface BlockOptions {
69
- /**
70
- * The marker builder function that will take either `markerBegin` or `markerEnd`
71
- *
72
- * @default '# ${mark} MANAGED BLOCK'
73
- */
74
- marker?: (mark: 'Begin' | 'End') => string;
75
- /**
76
- * File path
77
- */
78
- path: string;
79
- /**
80
- * Block content to insert
81
- */
82
- block: string;
83
- /**
84
- * Insert position
85
- */
86
- insertPosition?: ['before', 'BeginningOfFile' | RegExp] | ['after', 'EndOfFile' | RegExp];
87
- /**
88
- * Block target state
89
- */
90
- state?: 'present' | 'absent';
71
+ /**
72
+ * The marker builder function that will take either `markerBegin` or `markerEnd`
73
+ *
74
+ * @default '# ${mark} MANAGED BLOCK'
75
+ */
76
+ marker?: (mark: 'Begin' | 'End') => string;
77
+ /**
78
+ * File path
79
+ */
80
+ path: string;
81
+ /**
82
+ * Block content to insert
83
+ */
84
+ block: string;
85
+ /**
86
+ * Insert position
87
+ */
88
+ insertPosition?: ['before', 'BeginningOfFile' | RegExp] | ['after', 'EndOfFile' | RegExp];
89
+ /**
90
+ * Block target state
91
+ */
92
+ state?: 'present' | 'absent';
91
93
  }
92
94
  /**
93
95
  * Replace asynchronously a block in file that follows pattern :
@@ -109,26 +111,26 @@ declare function block(options: BlockOptions): Promise<void>;
109
111
  * @param options
110
112
  */
111
113
  declare function blockSync(options: BlockOptions): void;
112
-
114
+ //#endregion
115
+ //#region src/file.d.ts
113
116
  interface FileOptions {
114
- /**
115
- * File path
116
- */
117
- readonly path: string;
118
- /**
119
- * File target state
120
- */
121
- readonly state: 'present' | 'absent';
122
- /**
123
- * File content mapping function
124
- *
125
- * @param content
126
- */
127
- readonly update?: ((content: string) => string | undefined) | undefined;
128
- /**
129
- * File encoding
130
- */
131
- readonly encoding?: BufferEncoding;
117
+ /**
118
+ * File path
119
+ */
120
+ readonly path: string;
121
+ /**
122
+ * File target state
123
+ */
124
+ readonly state: 'present' | 'absent';
125
+ /**
126
+ * File content mapping function
127
+ *
128
+ */
129
+ readonly update?: ((content: string) => string | undefined) | undefined;
130
+ /**
131
+ * File encoding
132
+ */
133
+ readonly encoding?: BufferEncoding;
132
134
  }
133
135
  /**
134
136
  * Ensure file is present/absent with content initialized or modified with `update
@@ -160,7 +162,8 @@ declare function file(options: FileOptions): Promise<void>;
160
162
  * @param options
161
163
  */
162
164
  declare function fileSync(options: FileOptions): void;
163
-
165
+ //#endregion
166
+ //#region src/interopDefault.d.ts
164
167
  /**
165
168
  * Resolves a module or promise-like object, returning the default export if available.
166
169
  *
@@ -179,60 +182,59 @@ declare function fileSync(options: FileOptions): void;
179
182
  * ```
180
183
  *
181
184
  * @template T - The type of the module or promise-like object.
182
- * @param m - The module or promise-like object to resolve.
183
- * @returns A promise resolving to the default export if present, otherwise the module itself.
185
+ * @param m The module or promise-like object to resolve.
184
186
  */
185
187
  declare function interopDefault<T>(m: PromiseLike<T>): Promise<T extends {
186
- default: infer U;
188
+ default: infer U;
187
189
  } ? U : T>;
188
190
  declare function interopDefault<T>(m: T): T extends {
189
- default: infer U;
191
+ default: infer U;
190
192
  } ? U : T;
191
-
193
+ //#endregion
194
+ //#region src/LanguageId.d.ts
192
195
  interface LanguageIdMap {
193
- css: true;
194
- graphql: true;
195
- javascript: true;
196
- javascriptreact: true;
197
- jpeg: true;
198
- json: true;
199
- jsonc: true;
200
- less: true;
201
- markdown: true;
202
- sass: true;
203
- scss: true;
204
- typescript: true;
205
- typescriptreact: true;
206
- vue: true;
207
- yaml: true;
196
+ css: true;
197
+ graphql: true;
198
+ javascript: true;
199
+ javascriptreact: true;
200
+ jpeg: true;
201
+ json: true;
202
+ jsonc: true;
203
+ less: true;
204
+ markdown: true;
205
+ sass: true;
206
+ scss: true;
207
+ typescript: true;
208
+ typescriptreact: true;
209
+ vue: true;
210
+ yaml: true;
208
211
  }
209
212
  /**
210
213
  * A list of "vscode-like" language identifiers (i.e. "javascript", "javascriptreact")
211
214
  */
212
215
  type LanguageId = keyof LanguageIdMap;
213
-
216
+ //#endregion
217
+ //#region src/json.d.ts
214
218
  type JSONValue = null | number | string | boolean | JSONValue[] | {
215
- [key: string]: JSONValue;
219
+ [key: string]: JSONValue;
216
220
  };
217
221
  interface JSONOption<V = JSONValue> {
218
- /**
219
- * File path
220
- */
221
- readonly path: string;
222
- /**
223
- * File target state
224
- */
225
- readonly state: 'present' | 'absent';
226
- /**
227
- * File content mapping function
228
- *
229
- * @param content
230
- */
231
- readonly update?: ((content: V | undefined) => V | undefined) | undefined;
232
- /**
233
- * File encoding
234
- */
235
- readonly encoding?: BufferEncoding;
222
+ /**
223
+ * File path
224
+ */
225
+ readonly path: string;
226
+ /**
227
+ * File target state
228
+ */
229
+ readonly state: 'present' | 'absent';
230
+ /**
231
+ * File content mapping function
232
+ */
233
+ readonly update?: ((content: V | undefined) => V | undefined) | undefined;
234
+ /**
235
+ * File encoding
236
+ */
237
+ readonly encoding?: BufferEncoding;
236
238
  }
237
239
  /**
238
240
  * Ensure file is present/absent asynchronously with content value initialized or modified with `update`
@@ -246,125 +248,132 @@ declare function json<Value>(options: JSONOption<Value>): Promise<void>;
246
248
  * @param options
247
249
  */
248
250
  declare function jsonSync<Value>(options: JSONOption<Value>): void;
249
-
251
+ //#endregion
252
+ //#region src/meta.d.ts
253
+ declare const meta: Readonly<{
254
+ name: string;
255
+ version: string;
256
+ buildNumber: number;
257
+ }>;
258
+ //#endregion
259
+ //#region src/Project.d.ts
250
260
  declare namespace Project {
251
- /**
252
- * A type of a file extension
253
- */
254
- type Extension = `.${string}`;
255
- /**
256
- * Object hash of all well-known file extension category to file extensions mapping
257
- */
258
- type ExtensionRegistry = {
259
- [K in LanguageId]: readonly Extension[];
260
- };
261
- /**
262
- * Supported ECMA version
263
- *
264
- * @example
265
- * ```ts
266
- * Project.ecmaVersion() // 2022
267
- * ```
268
- */
269
- function ecmaVersion(): 2022;
270
- /**
271
- * Return a list of extensions
272
- *
273
- * @example
274
- * ```ts
275
- * Project.queryExtensions(['javascript']); // ['.js', '.cjs', ...]
276
- * Project.queryExtensions(['typescript', 'typescriptreact']); // ['.ts', '.mts', ..., '.tsx']
277
- * ```
278
- *
279
- * @param languages
280
- */
281
- function queryExtensions(languages: LanguageId[]): readonly Extension[];
282
- /**
283
- * Supported file extensions
284
- *
285
- * @example
286
- * ```ts
287
- * Project.sourceExtensions() // ['.ts', '.js', ...]
288
- * ```
289
- */
290
- function sourceExtensions(): readonly `.${string}`[];
291
- /**
292
- * Resource file extensions
293
- *
294
- * @example
295
- * ```ts
296
- * Project.resourceExtensions() // ['.css', '.sass', ...]
297
- * ```
298
- */
299
- function resourceExtensions(): readonly `.${string}`[];
300
- /**
301
- * Files and folders to always ignore
302
- *
303
- * @example
304
- * ```ts
305
- * IGNORED // ['node_modules/', 'build/', ...]
306
- * ```
307
- */
308
- function ignored(): readonly string[];
309
- /**
310
- * Return a RegExp that will match any list of extensions
311
- *
312
- * @param extensions
313
- * @example
314
- * ```ts
315
- * Project.extensionsToMatcher(['.js', '.ts']) // RegExp = /(\.js|\.ts)$/
316
- * ```
317
- */
318
- function extensionsToMatcher(extensions: readonly Extension[]): RegExp;
319
- /**
320
- * Return a glob matcher that will match any list of extensions
321
- *
322
- * @param extensions
323
- * @example
324
- * ```ts
325
- * Project.extensionsToGlob(['.js', '.ts']) // '*.+(js|ts)'
326
- * ```
327
- */
328
- function extensionsToGlob(extensions: readonly Extension[]): string;
261
+ /**
262
+ * A type of a file extension
263
+ */
264
+ type Extension = `.${string}`;
265
+ /**
266
+ * Object hash of all well-known file extension category to file extensions mapping
267
+ */
268
+ type ExtensionRegistry = { [K in LanguageId]: readonly Extension[] };
269
+ /**
270
+ * Supported ECMA version
271
+ *
272
+ * @example
273
+ * ```ts
274
+ * Project.ecmaVersion() // 2022
275
+ * ```
276
+ */
277
+ function ecmaVersion(): 2022;
278
+ /**
279
+ * Return a list of extensions
280
+ *
281
+ * @example
282
+ * ```ts
283
+ * Project.queryExtensions(['javascript']); // ['.js', '.cjs', ...]
284
+ * Project.queryExtensions(['typescript', 'typescriptreact']); // ['.ts', '.mts', ..., '.tsx']
285
+ * ```
286
+ *
287
+ * @param languages
288
+ */
289
+ function queryExtensions(languages: LanguageId[]): readonly Extension[];
290
+ /**
291
+ * Supported file extensions
292
+ *
293
+ * @example
294
+ * ```ts
295
+ * Project.sourceExtensions() // ['.ts', '.js', ...]
296
+ * ```
297
+ */
298
+ function sourceExtensions(): readonly `.${string}`[];
299
+ /**
300
+ * Resource file extensions
301
+ *
302
+ * @example
303
+ * ```ts
304
+ * Project.resourceExtensions() // ['.css', '.sass', ...]
305
+ * ```
306
+ */
307
+ function resourceExtensions(): readonly `.${string}`[];
308
+ /**
309
+ * Files and folders to always ignore
310
+ *
311
+ * @example
312
+ * ```ts
313
+ * IGNORED // ['node_modules/', 'build/', ...]
314
+ * ```
315
+ */
316
+ function ignored(): readonly string[];
317
+ /**
318
+ * Return a RegExp that will match any list of extensions
319
+ *
320
+ * @param extensions
321
+ * @example
322
+ * ```ts
323
+ * Project.extensionsToMatcher(['.js', '.ts']) // RegExp = /(\.js|\.ts)$/
324
+ * ```
325
+ */
326
+ function extensionsToMatcher(extensions: readonly Extension[]): RegExp;
327
+ /**
328
+ * Return a glob matcher that will match any list of extensions
329
+ *
330
+ * @param extensions
331
+ * @example
332
+ * ```ts
333
+ * Project.extensionsToGlob(['.js', '.ts']) // '*.+(js|ts)'
334
+ * ```
335
+ */
336
+ function extensionsToGlob(extensions: readonly Extension[]): string;
329
337
  }
330
-
338
+ //#endregion
339
+ //#region src/ProjectScript.d.ts
331
340
  /**
332
341
  * Project common scripts
333
342
  */
334
343
  declare const ProjectScript: {
335
- readonly Build: "build";
336
- readonly Clean: "clean";
337
- readonly CodeAnalysis: "code-analysis";
338
- readonly Coverage: "coverage";
339
- readonly Develop: "develop";
340
- readonly Docs: "docs";
341
- readonly Format: "format";
342
- readonly Install: "install";
343
- readonly Lint: "lint";
344
- readonly Prepare: "prepare";
345
- readonly Release: "release";
346
- readonly Rescue: "rescue";
347
- readonly Spellcheck: "spellcheck";
348
- readonly Test: "test";
349
- readonly Validate: "validate";
344
+ readonly Build: "build";
345
+ readonly Clean: "clean";
346
+ readonly CodeAnalysis: "code-analysis";
347
+ readonly Coverage: "coverage";
348
+ readonly Develop: "develop";
349
+ readonly Docs: "docs";
350
+ readonly Format: "format";
351
+ readonly Install: "install";
352
+ readonly Lint: "lint";
353
+ readonly Prepare: "prepare";
354
+ readonly Release: "release";
355
+ readonly Rescue: "rescue";
356
+ readonly Spellcheck: "spellcheck";
357
+ readonly Test: "test";
358
+ readonly Validate: "validate";
350
359
  };
351
360
  type ProjectScript = (typeof ProjectScript)[keyof typeof ProjectScript];
352
-
361
+ //#endregion
362
+ //#region src/yarnConfig.d.ts
353
363
  interface YarnConfigOptions {
354
- /**
355
- * Configuration key
356
- */
357
- readonly key: string;
358
- /**
359
- * Option target state
360
- */
361
- readonly state: 'present' | 'absent';
362
- /**
363
- * File content mapping function
364
- *
365
- * @param content
366
- */
367
- readonly update?: ((content: string) => string | undefined) | undefined;
364
+ /**
365
+ * Configuration key
366
+ */
367
+ readonly key: string;
368
+ /**
369
+ * Option target state
370
+ */
371
+ readonly state: 'present' | 'absent';
372
+ /**
373
+ * File content mapping function
374
+ *
375
+ */
376
+ readonly update?: ((content: string) => string | undefined) | undefined;
368
377
  }
369
378
  /**
370
379
  * Synchronous version of {@link yarnConfig}
@@ -390,19 +399,19 @@ declare function yarnConfigSync(options: YarnConfigOptions): void;
390
399
  * })
391
400
  */
392
401
  declare function yarnConfig(options: YarnConfigOptions): Promise<void>;
393
-
402
+ //#endregion
403
+ //#region src/yarnVersion.d.ts
394
404
  type YarnVersionKind = 'berry' | 'classic';
395
405
  interface YarnVersionOptions {
396
- /**
397
- * Option target state
398
- */
399
- readonly state: 'present' | 'absent';
400
- /**
401
- * Version mapping function
402
- *
403
- * @param content
404
- */
405
- readonly update?: (() => YarnVersionKind | undefined) | undefined;
406
+ /**
407
+ * Option target state
408
+ */
409
+ readonly state: 'present' | 'absent';
410
+ /**
411
+ * Version mapping function
412
+ *
413
+ */
414
+ readonly update?: (() => YarnVersionKind | undefined) | undefined;
406
415
  }
407
416
  /**
408
417
  * Synchronous version of {@link yarnVersion}
@@ -426,5 +435,6 @@ declare function yarnVersionSync(options: YarnVersionOptions): void;
426
435
  * })
427
436
  */
428
437
  declare function yarnVersion(options: YarnVersionOptions): Promise<void>;
429
-
430
- export { type BlockOptions, type DirectoryOptions, ESLintConfig, type FileOptions, type JSONOption, type JSONValue, type LanguageId, type LanguageIdMap, Project, ProjectScript, type YarnConfigOptions, type YarnVersionKind, type YarnVersionOptions, block, blockSync, directory, directorySync, file, fileSync, interopDefault, json, jsonSync, yarnConfig, yarnConfigSync, yarnVersion, yarnVersionSync };
438
+ //#endregion
439
+ export { BlockOptions, DirectoryOptions, ESLintConfig, FileOptions, JSONOption, JSONValue, LanguageId, LanguageIdMap, Project, ProjectScript, YarnConfigOptions, YarnVersionKind, YarnVersionOptions, block, blockSync, directory, directorySync, file, fileSync, interopDefault, json, jsonSync, meta, yarnConfig, yarnConfigSync, yarnVersion, yarnVersionSync };
440
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/directory.ts","../src/ESLintConfig.ts","../src/block.ts","../src/file.ts","../src/interopDefault.ts","../src/LanguageId.ts","../src/json.ts","../src/meta.ts","../src/Project.ts","../src/ProjectScript.ts","../src/yarnConfig.ts","../src/yarnVersion.ts"],"mappings":"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"}