@marsx-dev/launcher 0.0.4 → 0.0.5

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 (41) hide show
  1. package/dist/cli/init.d.ts.map +1 -1
  2. package/dist/cli/init.js +32 -32
  3. package/dist/cli/migrate.js +3 -3
  4. package/dist/cli/start.js +3 -3
  5. package/dist/configuration.d.ts +9 -3
  6. package/dist/configuration.d.ts.map +1 -1
  7. package/dist/configuration.js +95 -34
  8. package/dist/index.d.ts +4 -3
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +6 -5
  11. package/dist/launcher.d.ts.map +1 -1
  12. package/dist/launcher.js +6 -5
  13. package/dist/loader.js +5 -5
  14. package/dist/utils/compile.d.ts.map +1 -1
  15. package/dist/utils/compile.js +8 -7
  16. package/dist/utils/{utils.d.ts → fileUtils.d.ts} +1 -5
  17. package/dist/utils/fileUtils.d.ts.map +1 -0
  18. package/dist/utils/fileUtils.js +42 -0
  19. package/dist/utils/sfc.d.ts +24 -24
  20. package/dist/utils/sfc.d.ts.map +1 -1
  21. package/dist/utils/sfc.js +54 -98
  22. package/dist/utils/textUtils.d.ts +17 -0
  23. package/dist/utils/textUtils.d.ts.map +1 -0
  24. package/dist/utils/textUtils.js +105 -0
  25. package/dist/utils/v3.d.ts.map +1 -1
  26. package/dist/utils/v3.js +5 -6
  27. package/package.json +4 -2
  28. package/src/cli/init.ts +31 -30
  29. package/src/cli/migrate.ts +1 -1
  30. package/src/cli/start.ts +1 -1
  31. package/src/configuration.ts +86 -35
  32. package/src/index.ts +4 -3
  33. package/src/launcher.ts +3 -2
  34. package/src/loader.ts +1 -1
  35. package/src/utils/compile.ts +5 -4
  36. package/src/utils/{utils.ts → fileUtils.ts} +0 -18
  37. package/src/utils/sfc.ts +62 -85
  38. package/src/utils/textUtils.ts +82 -0
  39. package/src/utils/v3.ts +4 -5
  40. package/dist/utils/utils.d.ts.map +0 -1
  41. package/dist/utils/utils.js +0 -60
@@ -0,0 +1,82 @@
1
+ import { CompilerError, TextModes } from '@vue/compiler-core';
2
+ import * as CompilerDOM from '@vue/compiler-dom';
3
+ import { NodeTypes } from '@vue/compiler-dom';
4
+ import stringify from 'json-stable-stringify';
5
+ import _ from 'lodash';
6
+ import prettier, { Options } from 'prettier';
7
+
8
+ export function assert(value: unknown, message = 'value must be defined'): asserts value {
9
+ if (!value) {
10
+ throw new Error(message);
11
+ }
12
+ }
13
+
14
+ export function escapeCloseTag(str: string, tag: string): string {
15
+ return str.replaceAll(`</${tag}>`, `</ ${tag}>`);
16
+ }
17
+
18
+ export function unescapeCloseTag(str: string, tag: string): string {
19
+ return str.replaceAll(`</ ${tag}>`, `</${tag}>`);
20
+ }
21
+
22
+ export function escapeHtmlAttr(str: string): string {
23
+ return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
24
+ }
25
+
26
+ const PRETTIER_JSON_CONFIG: Options = { parser: 'json5', printWidth: 120, trailingComma: 'all' };
27
+
28
+ export function prettifyJson(json: string): string {
29
+ return prettier.format(`(${json})`, PRETTIER_JSON_CONFIG);
30
+ }
31
+
32
+ export function stableJson(data: unknown): string {
33
+ return stringify(data);
34
+ }
35
+
36
+ export function stablePrettyJson(data: unknown): string {
37
+ return prettifyJson(stableJson(data));
38
+ }
39
+
40
+ export function stableHtmlAttributes(attrs: Record<string, string | undefined | null> | undefined): string {
41
+ let result = '';
42
+ if (attrs) {
43
+ for (const [name, value] of _.sortBy(Object.entries(attrs), e => e[0])) {
44
+ if (value) {
45
+ result += ` ${name}="${escapeHtmlAttr(value)}"`;
46
+ }
47
+ }
48
+ }
49
+ return result;
50
+ }
51
+
52
+ export function parseVueLike(content: string, errors: (CompilerError | SyntaxError)[]) {
53
+ const ast = CompilerDOM.parse(content, {
54
+ // there are no components at SFC parsing level
55
+ isNativeTag: () => true,
56
+ // preserve all whitespaces
57
+ isPreTag: () => true,
58
+ getTextMode: () => TextModes.RAWTEXT,
59
+ onError: e => errors.push(e),
60
+ });
61
+
62
+ const result = [];
63
+
64
+ for (const node of ast.children) {
65
+ if (node.type === NodeTypes.ELEMENT) {
66
+ const child = node.children.length === 1 ? node.children[0] : null;
67
+ const content = child && child.type === NodeTypes.TEXT ? child.content : null;
68
+
69
+ if (content) {
70
+ const props: Record<string, string> = {};
71
+ for (const prop of node.props) {
72
+ if (prop.type === NodeTypes.ATTRIBUTE && prop.value) {
73
+ props[prop.name] = prop.value.content;
74
+ }
75
+ }
76
+ result.push({ tag: node.tag, props, content, loc: node.loc });
77
+ }
78
+ }
79
+ }
80
+
81
+ return result;
82
+ }
package/src/utils/v3.ts CHANGED
@@ -49,12 +49,11 @@ const SFC_FIELD_MAP: Record<string, string> = {
49
49
 
50
50
  export function convertV3ToSfc(block: V3MongoBlock): SfcBlock {
51
51
  const sfc: SfcBlock = {
52
- identity: {
52
+ path: {
53
53
  folder: block.Folder,
54
54
  name: block.Name,
55
55
  blockTypeName: block.Type,
56
56
  ext: 'vue',
57
- fullName: '',
58
57
  filePath: '',
59
58
  },
60
59
  metadata: {},
@@ -90,9 +89,9 @@ export function convertV3ToSfc(block: V3MongoBlock): SfcBlock {
90
89
 
91
90
  export function convertSfcToV3(sfc: SfcBlock): V3MongoBlock {
92
91
  const block: V3MongoBlock = {
93
- Name: sfc.identity.name,
94
- Type: sfc.identity.blockTypeName,
95
- Folder: sfc.identity.folder,
92
+ Name: sfc.path.name,
93
+ Type: sfc.path.blockTypeName,
94
+ Folder: sfc.path.folder,
96
95
  ...sfc.metadata,
97
96
  ...sfc.jsons,
98
97
  };
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,SAA0B,GAAG,OAAO,CAAC,KAAK,CAIvF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAUvE;AAED,wBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAM/D;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMnE;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,IAAI,EACA,MAAM,GACN,MAAM,CAAC,eAAe,GACtB,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,GACzC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,GAC9C,MAAM,EACV,OAAO,CAAC,EACJ,CAAC,qBAAqB,GAAG;IACvB,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B,GAAG,SAAS,CAAC,GACd,cAAc,GACd,IAAI,GACP,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.writeFileMakeDir = exports.isDirectory = exports.isFile = exports.listFilesRecursive = exports.escapeHtmlAttr = exports.unescapeCloseTag = exports.escapeCloseTag = exports.assert = void 0;
7
- const fs_1 = require("fs");
8
- const lodash_1 = __importDefault(require("lodash"));
9
- const path_1 = __importDefault(require("path"));
10
- function assert(value, message = 'value must be defined') {
11
- if (!value) {
12
- throw new Error(message);
13
- }
14
- }
15
- exports.assert = assert;
16
- function escapeCloseTag(str, tag) {
17
- return str.replaceAll(`</${tag}>`, `</ ${tag}>`);
18
- }
19
- exports.escapeCloseTag = escapeCloseTag;
20
- function unescapeCloseTag(str, tag) {
21
- return str.replaceAll(`</ ${tag}>`, `</${tag}>`);
22
- }
23
- exports.unescapeCloseTag = unescapeCloseTag;
24
- function escapeHtmlAttr(str) {
25
- return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
26
- }
27
- exports.escapeHtmlAttr = escapeHtmlAttr;
28
- async function listFilesRecursive(dir) {
29
- const entries = await fs_1.promises.readdir(dir);
30
- const files = await Promise.all(entries.map(async (entry) => {
31
- const entryPath = path_1.default.resolve(dir, entry);
32
- return (await fs_1.promises.stat(entryPath)).isDirectory() ? listFilesRecursive(entryPath) : [entryPath];
33
- }));
34
- return lodash_1.default.flatten(files);
35
- }
36
- exports.listFilesRecursive = listFilesRecursive;
37
- async function isFile(filePath) {
38
- try {
39
- return (await fs_1.promises.stat(filePath)).isFile();
40
- }
41
- catch (e) {
42
- return false;
43
- }
44
- }
45
- exports.isFile = isFile;
46
- async function isDirectory(dirPath) {
47
- try {
48
- return (await fs_1.promises.stat(dirPath)).isDirectory();
49
- }
50
- catch (e) {
51
- return false;
52
- }
53
- }
54
- exports.isDirectory = isDirectory;
55
- async function writeFileMakeDir(filePath, data, options) {
56
- await fs_1.promises.mkdir(path_1.default.dirname(filePath), { recursive: true });
57
- await fs_1.promises.writeFile(filePath, data, options);
58
- }
59
- exports.writeFileMakeDir = writeFileMakeDir;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkJBQW9DO0FBQ3BDLG9EQUF1QjtBQUl2QixnREFBd0I7QUFFeEIsU0FBZ0IsTUFBTSxDQUFDLEtBQWMsRUFBRSxPQUFPLEdBQUcsdUJBQXVCO0lBQ3RFLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzFCO0FBQ0gsQ0FBQztBQUpELHdCQUlDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLEdBQVcsRUFBRSxHQUFXO0lBQ3JELE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRkQsd0NBRUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxHQUFXLEVBQUUsR0FBVztJQUN2RCxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUZELDRDQUVDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLEdBQVc7SUFDeEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN4RyxDQUFDO0FBRkQsd0NBRUM7QUFFTSxLQUFLLFVBQVUsa0JBQWtCLENBQUMsR0FBVztJQUNsRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQXFCLEVBQUU7UUFDN0MsTUFBTSxTQUFTLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyxDQUFDLE1BQU0sYUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0YsT0FBTyxnQkFBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBVkQsZ0RBVUM7QUFFTSxLQUFLLFVBQVUsTUFBTSxDQUFDLFFBQWdCO0lBQzNDLElBQUk7UUFDRixPQUFPLENBQUMsTUFBTSxhQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7S0FDM0M7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBTkQsd0JBTUM7QUFFTSxLQUFLLFVBQVUsV0FBVyxDQUFDLE9BQWU7SUFDL0MsSUFBSTtRQUNGLE9BQU8sQ0FBQyxNQUFNLGFBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUMvQztJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUM7QUFORCxrQ0FNQztBQUVNLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsUUFBZ0IsRUFDaEIsSUFLVSxFQUNWLE9BTVE7SUFFUixNQUFNLGFBQUUsQ0FBQyxLQUFLLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVELE1BQU0sYUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFsQkQsNENBa0JDIn0=