@flowscripter/dynamic-cli-framework 7.1.3 → 8.0.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/src/service/prettyPrinter/DefaultPrettyPrinterService.d.ts +4 -2
- package/dist/src/service/prettyPrinter/DefaultPrettyPrinterService.d.ts.map +1 -1
- package/dist/src/service/prettyPrinter/DefaultPrettyPrinterService.js +16 -28
- package/package.json +2 -1
- package/src/service/prettyPrinter/DefaultPrettyPrinterService.ts +17 -34
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { PrettyPrinterService } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
2
|
import type { Plugin } from "prettier";
|
|
3
3
|
/**
|
|
4
|
-
* Default implementation of {@link PrettyPrinterService} which provides by default
|
|
5
|
-
*
|
|
4
|
+
* Default implementation of {@link PrettyPrinterService} which provides JSON by default.
|
|
5
|
+
*
|
|
6
|
+
* Only prettier's babel and estree plugins are bundled, which provide the JSON parser and printer.
|
|
7
|
+
* Other syntaxes are added with {@link registerSyntax}.
|
|
6
8
|
*/
|
|
7
9
|
export default class DefaultPrettyPrinterService implements PrettyPrinterService {
|
|
8
10
|
#private;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultPrettyPrinterService.d.ts","sourceRoot":"","sources":["../../../../src/service/prettyPrinter/DefaultPrettyPrinterService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"DefaultPrettyPrinterService.d.ts","sourceRoot":"","sources":["../../../../src/service/prettyPrinter/DefaultPrettyPrinterService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,OAAO,KAAK,EAAW,MAAM,EAAE,MAAM,UAAU,CAAC;AAIhD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,2BAA4B,YAAW,oBAAoB;;IAI9E,qBAAqB,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAEtD;IAEK,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAShE;IAED,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/E;CACF"}
|
|
@@ -1,45 +1,33 @@
|
|
|
1
|
-
import * as prettier from "prettier";
|
|
1
|
+
import * as prettier from "prettier/standalone";
|
|
2
|
+
import * as babel from "prettier/plugins/babel";
|
|
3
|
+
import * as estree from "prettier/plugins/estree";
|
|
2
4
|
/**
|
|
3
|
-
* Default implementation of {@link PrettyPrinterService} which provides by default
|
|
4
|
-
*
|
|
5
|
+
* Default implementation of {@link PrettyPrinterService} which provides JSON by default.
|
|
6
|
+
*
|
|
7
|
+
* Only prettier's babel and estree plugins are bundled, which provide the JSON parser and printer.
|
|
8
|
+
* Other syntaxes are added with {@link registerSyntax}.
|
|
5
9
|
*/
|
|
6
10
|
export default class DefaultPrettyPrinterService {
|
|
7
|
-
#registeredSyntaxes =
|
|
8
|
-
#
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
this.#registeredSyntaxes = languages.map((language) => language.name.toLowerCase());
|
|
12
|
-
}
|
|
13
|
-
async getRegisteredSyntaxes() {
|
|
14
|
-
if (this.#registeredSyntaxes.length === 0) {
|
|
15
|
-
await this.#populateBuiltInSyntaxes();
|
|
16
|
-
}
|
|
17
|
-
return this.#registeredSyntaxes;
|
|
11
|
+
#registeredSyntaxes = ["json"];
|
|
12
|
+
#plugins = [babel, estree];
|
|
13
|
+
getRegisteredSyntaxes() {
|
|
14
|
+
return Promise.resolve(this.#registeredSyntaxes);
|
|
18
15
|
}
|
|
19
16
|
async prettify(text, syntaxName) {
|
|
20
|
-
if (this.#registeredSyntaxes.length === 0) {
|
|
21
|
-
await this.#populateBuiltInSyntaxes();
|
|
22
|
-
}
|
|
23
17
|
const name = syntaxName.toLowerCase();
|
|
24
18
|
if (!this.#registeredSyntaxes.includes(name)) {
|
|
25
19
|
throw new Error(`Syntax name is not registered: ${name}`);
|
|
26
20
|
}
|
|
27
|
-
const options = { parser: syntaxName };
|
|
28
|
-
const syntaxPlugin = this.#syntaxNameToPluginnMap.get(name);
|
|
29
|
-
if (syntaxPlugin) {
|
|
30
|
-
options.plugins = [syntaxPlugin];
|
|
31
|
-
}
|
|
21
|
+
const options = { parser: syntaxName, plugins: this.#plugins };
|
|
32
22
|
return prettier.format(text, options);
|
|
33
23
|
}
|
|
34
|
-
|
|
35
|
-
if (this.#registeredSyntaxes.length === 0) {
|
|
36
|
-
await this.#populateBuiltInSyntaxes();
|
|
37
|
-
}
|
|
24
|
+
registerSyntax(syntaxName, syntaxPlugin) {
|
|
38
25
|
const name = syntaxName.toLowerCase();
|
|
39
26
|
if (this.#registeredSyntaxes.includes(name)) {
|
|
40
|
-
|
|
27
|
+
return Promise.reject(new Error(`Syntax name already registered: ${name}`));
|
|
41
28
|
}
|
|
42
29
|
this.#registeredSyntaxes.push(name);
|
|
43
|
-
this.#
|
|
30
|
+
this.#plugins.push(syntaxPlugin);
|
|
31
|
+
return Promise.resolve();
|
|
44
32
|
}
|
|
45
33
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowscripter/dynamic-cli-framework",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.0",
|
|
4
4
|
"description": "A framework for developing CLI applications which supports dynamic discovery and installation of new commands",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bun",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"LICENSE"
|
|
27
27
|
],
|
|
28
28
|
"type": "module",
|
|
29
|
+
"sideEffects": false,
|
|
29
30
|
"main": "dist/index.js",
|
|
30
31
|
"module": "dist/index.js",
|
|
31
32
|
"types": "dist/index.d.ts",
|
|
@@ -1,59 +1,42 @@
|
|
|
1
1
|
import type { PrettyPrinterService } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
|
-
import * as prettier from "prettier";
|
|
3
|
-
import type { Plugin } from "prettier";
|
|
2
|
+
import * as prettier from "prettier/standalone";
|
|
3
|
+
import type { Options, Plugin } from "prettier";
|
|
4
|
+
import * as babel from "prettier/plugins/babel";
|
|
5
|
+
import * as estree from "prettier/plugins/estree";
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
|
-
* Default implementation of {@link PrettyPrinterService} which provides by default
|
|
7
|
-
*
|
|
8
|
+
* Default implementation of {@link PrettyPrinterService} which provides JSON by default.
|
|
9
|
+
*
|
|
10
|
+
* Only prettier's babel and estree plugins are bundled, which provide the JSON parser and printer.
|
|
11
|
+
* Other syntaxes are added with {@link registerSyntax}.
|
|
8
12
|
*/
|
|
9
13
|
export default class DefaultPrettyPrinterService implements PrettyPrinterService {
|
|
10
|
-
#registeredSyntaxes =
|
|
11
|
-
#
|
|
14
|
+
readonly #registeredSyntaxes = ["json"];
|
|
15
|
+
readonly #plugins: Array<Plugin<unknown>> = [babel, estree as Plugin<unknown>];
|
|
12
16
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
this.#registeredSyntaxes = languages.map((language) => language.name.toLowerCase());
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
async getRegisteredSyntaxes(): Promise<ReadonlyArray<string>> {
|
|
19
|
-
if (this.#registeredSyntaxes.length === 0) {
|
|
20
|
-
await this.#populateBuiltInSyntaxes();
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return this.#registeredSyntaxes;
|
|
17
|
+
getRegisteredSyntaxes(): Promise<ReadonlyArray<string>> {
|
|
18
|
+
return Promise.resolve(this.#registeredSyntaxes);
|
|
24
19
|
}
|
|
25
20
|
|
|
26
21
|
async prettify(text: string, syntaxName: string): Promise<string> {
|
|
27
|
-
if (this.#registeredSyntaxes.length === 0) {
|
|
28
|
-
await this.#populateBuiltInSyntaxes();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
22
|
const name = syntaxName.toLowerCase();
|
|
32
23
|
if (!this.#registeredSyntaxes.includes(name)) {
|
|
33
24
|
throw new Error(`Syntax name is not registered: ${name}`);
|
|
34
25
|
}
|
|
35
26
|
|
|
36
|
-
const options:
|
|
37
|
-
|
|
38
|
-
const syntaxPlugin = this.#syntaxNameToPluginnMap.get(name);
|
|
39
|
-
if (syntaxPlugin) {
|
|
40
|
-
options.plugins = [syntaxPlugin];
|
|
41
|
-
}
|
|
27
|
+
const options: Options = { parser: syntaxName, plugins: this.#plugins };
|
|
42
28
|
|
|
43
29
|
return prettier.format(text, options);
|
|
44
30
|
}
|
|
45
31
|
|
|
46
|
-
|
|
47
|
-
if (this.#registeredSyntaxes.length === 0) {
|
|
48
|
-
await this.#populateBuiltInSyntaxes();
|
|
49
|
-
}
|
|
50
|
-
|
|
32
|
+
registerSyntax(syntaxName: string, syntaxPlugin: Plugin<unknown>): Promise<void> {
|
|
51
33
|
const name = syntaxName.toLowerCase();
|
|
52
34
|
if (this.#registeredSyntaxes.includes(name)) {
|
|
53
|
-
|
|
35
|
+
return Promise.reject(new Error(`Syntax name already registered: ${name}`));
|
|
54
36
|
}
|
|
55
37
|
|
|
56
38
|
this.#registeredSyntaxes.push(name);
|
|
57
|
-
this.#
|
|
39
|
+
this.#plugins.push(syntaxPlugin);
|
|
40
|
+
return Promise.resolve();
|
|
58
41
|
}
|
|
59
42
|
}
|