@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.
@@ -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 the
5
- * syntaxes built into prettier.
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,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,2BAA4B,YAAW,oBAAoB;;IASxE,qBAAqB,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAM5D;IAEK,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBhE;IAEK,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAYrF;CACF"}
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 the
4
- * syntaxes built into prettier.
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 = new Array();
8
- #syntaxNameToPluginnMap = new Map();
9
- async #populateBuiltInSyntaxes() {
10
- const languages = (await prettier.getSupportInfo()).languages;
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
- async registerSyntax(syntaxName, syntaxPlugin) {
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
- throw new Error(`Syntax name already registered: ${name}`);
27
+ return Promise.reject(new Error(`Syntax name already registered: ${name}`));
41
28
  }
42
29
  this.#registeredSyntaxes.push(name);
43
- this.#syntaxNameToPluginnMap.set(name, syntaxPlugin);
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": "7.1.3",
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 the
7
- * syntaxes built into prettier.
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 = new Array<string>();
11
- #syntaxNameToPluginnMap = new Map<string, Plugin<unknown>>();
14
+ readonly #registeredSyntaxes = ["json"];
15
+ readonly #plugins: Array<Plugin<unknown>> = [babel, estree as Plugin<unknown>];
12
16
 
13
- async #populateBuiltInSyntaxes(): Promise<void> {
14
- const languages = (await prettier.getSupportInfo()).languages;
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: prettier.Options = { parser: syntaxName };
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
- async registerSyntax(syntaxName: string, syntaxPlugin: Plugin<unknown>): Promise<void> {
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
- throw new Error(`Syntax name already registered: ${name}`);
35
+ return Promise.reject(new Error(`Syntax name already registered: ${name}`));
54
36
  }
55
37
 
56
38
  this.#registeredSyntaxes.push(name);
57
- this.#syntaxNameToPluginnMap.set(name, syntaxPlugin);
39
+ this.#plugins.push(syntaxPlugin);
40
+ return Promise.resolve();
58
41
  }
59
42
  }