@marsx-dev/launcher 0.0.3 → 0.0.6
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/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +1 -0
- package/dist/cli/init.d.ts +2 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +32 -31
- package/dist/cli/migrate.d.ts +2 -0
- package/dist/cli/migrate.d.ts.map +1 -0
- package/dist/cli/migrate.js +3 -2
- package/dist/cli/start.d.ts +3 -0
- package/dist/cli/start.d.ts.map +1 -0
- package/dist/cli/start.js +3 -2
- package/dist/configuration.d.ts +30 -0
- package/dist/configuration.d.ts.map +1 -0
- package/dist/configuration.js +95 -33
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -5
- package/dist/launcher.d.ts +2 -0
- package/dist/launcher.d.ts.map +1 -0
- package/dist/launcher.js +6 -4
- package/dist/loader.d.ts +3 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +5 -4
- package/dist/utils/compile.d.ts +9 -0
- package/dist/utils/compile.d.ts.map +1 -0
- package/dist/utils/compile.js +8 -6
- package/dist/utils/fileUtils.d.ts +12 -0
- package/dist/utils/fileUtils.d.ts.map +1 -0
- package/dist/utils/fileUtils.js +42 -0
- package/dist/utils/sfc.d.ts +55 -0
- package/dist/utils/sfc.d.ts.map +1 -0
- package/dist/utils/sfc.js +54 -97
- package/dist/utils/textUtils.d.ts +17 -0
- package/dist/utils/textUtils.d.ts.map +1 -0
- package/dist/utils/textUtils.js +105 -0
- package/dist/utils/v3.d.ts +12 -0
- package/dist/utils/v3.d.ts.map +1 -0
- package/dist/utils/v3.js +7 -6
- package/package.json +5 -2
- package/src/cli/index.ts +37 -0
- package/src/cli/init.ts +142 -0
- package/src/cli/migrate.ts +23 -0
- package/src/cli/start.ts +34 -0
- package/src/configuration.ts +104 -0
- package/src/index.ts +6 -0
- package/src/launcher.ts +39 -0
- package/src/loader.ts +65 -0
- package/src/utils/compile.ts +59 -0
- package/src/utils/fileUtils.ts +54 -0
- package/src/utils/sfc.ts +155 -0
- package/src/utils/textUtils.ts +82 -0
- package/src/utils/v3.ts +104 -0
- package/dist/utils/utils.js +0 -59
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Abortable } from 'node:events';
|
|
3
|
+
import { Mode, ObjectEncodingOptions, OpenMode } from 'node:fs';
|
|
4
|
+
import { Stream } from 'node:stream';
|
|
5
|
+
export declare function listFilesRecursive(dir: string): Promise<string[]>;
|
|
6
|
+
export declare function isFile(filePath: string): Promise<boolean>;
|
|
7
|
+
export declare function isDirectory(dirPath: string): Promise<boolean>;
|
|
8
|
+
export declare function writeFileMakeDir(filePath: string, data: string | NodeJS.ArrayBufferView | Iterable<string | NodeJS.ArrayBufferView> | AsyncIterable<string | NodeJS.ArrayBufferView> | Stream, options?: (ObjectEncodingOptions & {
|
|
9
|
+
mode?: Mode | undefined;
|
|
10
|
+
flag?: OpenMode | undefined;
|
|
11
|
+
} & Abortable) | BufferEncoding | null): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=fileUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileUtils.d.ts","sourceRoot":"","sources":["../../src/utils/fileUtils.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,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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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 = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
async function listFilesRecursive(dir) {
|
|
11
|
+
const entries = await fs_1.promises.readdir(dir);
|
|
12
|
+
const files = await Promise.all(entries.map(async (entry) => {
|
|
13
|
+
const entryPath = path_1.default.resolve(dir, entry);
|
|
14
|
+
return (await fs_1.promises.stat(entryPath)).isDirectory() ? listFilesRecursive(entryPath) : [entryPath];
|
|
15
|
+
}));
|
|
16
|
+
return lodash_1.default.flatten(files);
|
|
17
|
+
}
|
|
18
|
+
exports.listFilesRecursive = listFilesRecursive;
|
|
19
|
+
async function isFile(filePath) {
|
|
20
|
+
try {
|
|
21
|
+
return (await fs_1.promises.stat(filePath)).isFile();
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.isFile = isFile;
|
|
28
|
+
async function isDirectory(dirPath) {
|
|
29
|
+
try {
|
|
30
|
+
return (await fs_1.promises.stat(dirPath)).isDirectory();
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.isDirectory = isDirectory;
|
|
37
|
+
async function writeFileMakeDir(filePath, data, options) {
|
|
38
|
+
await fs_1.promises.mkdir(path_1.default.dirname(filePath), { recursive: true });
|
|
39
|
+
await fs_1.promises.writeFile(filePath, data, options);
|
|
40
|
+
}
|
|
41
|
+
exports.writeFileMakeDir = writeFileMakeDir;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZVV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2ZpbGVVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQkFBb0M7QUFDcEMsb0RBQXVCO0FBSXZCLGdEQUF3QjtBQUVqQixLQUFLLFVBQVUsa0JBQWtCLENBQUMsR0FBVztJQUNsRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQXFCLEVBQUU7UUFDN0MsTUFBTSxTQUFTLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyxDQUFDLE1BQU0sYUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0YsT0FBTyxnQkFBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBVkQsZ0RBVUM7QUFFTSxLQUFLLFVBQVUsTUFBTSxDQUFDLFFBQWdCO0lBQzNDLElBQUk7UUFDRixPQUFPLENBQUMsTUFBTSxhQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7S0FDM0M7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBTkQsd0JBTUM7QUFFTSxLQUFLLFVBQVUsV0FBVyxDQUFDLE9BQWU7SUFDL0MsSUFBSTtRQUNGLE9BQU8sQ0FBQyxNQUFNLGFBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUMvQztJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUM7QUFORCxrQ0FNQztBQUVNLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsUUFBZ0IsRUFDaEIsSUFLVSxFQUNWLE9BTVE7SUFFUixNQUFNLGFBQUUsQ0FBQyxLQUFLLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVELE1BQU0sYUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFsQkQsNENBa0JDIn0=
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export declare const METADATA_SECTION_ID = "metadata";
|
|
3
|
+
export declare const MARS_SFC_EXT = "mars";
|
|
4
|
+
export declare type SfcPath = {
|
|
5
|
+
folder: string;
|
|
6
|
+
name: string;
|
|
7
|
+
blockTypeName: string;
|
|
8
|
+
ext: string;
|
|
9
|
+
filePath: string;
|
|
10
|
+
};
|
|
11
|
+
export declare type SfcSource = {
|
|
12
|
+
source: string;
|
|
13
|
+
lang: keyof typeof LANG_TAG_MAP | string | undefined;
|
|
14
|
+
props?: Record<string, string | undefined>;
|
|
15
|
+
lineOffset?: number;
|
|
16
|
+
};
|
|
17
|
+
export declare type SfcBlock = {
|
|
18
|
+
path: SfcPath;
|
|
19
|
+
} & ({
|
|
20
|
+
metadata: Record<string, unknown>;
|
|
21
|
+
jsons: Record<string, unknown>;
|
|
22
|
+
sources: Record<string, SfcSource>;
|
|
23
|
+
rawContent: null;
|
|
24
|
+
} | {
|
|
25
|
+
metadata: EmptyObject;
|
|
26
|
+
jsons: EmptyObject;
|
|
27
|
+
sources: EmptyObject;
|
|
28
|
+
rawContent: Buffer;
|
|
29
|
+
});
|
|
30
|
+
export declare function parseSfcPath(filePath: string): SfcPath;
|
|
31
|
+
export declare function serializeSfcPath(identity: SfcPath): string;
|
|
32
|
+
declare type EmptyObject = {
|
|
33
|
+
[K in string]: never;
|
|
34
|
+
};
|
|
35
|
+
declare const LANG_TAG_MAP: {
|
|
36
|
+
html: string;
|
|
37
|
+
pug: string;
|
|
38
|
+
js: string;
|
|
39
|
+
jsx: string;
|
|
40
|
+
ts: string;
|
|
41
|
+
tsx: string;
|
|
42
|
+
css: string;
|
|
43
|
+
scss: string;
|
|
44
|
+
less: string;
|
|
45
|
+
sass: string;
|
|
46
|
+
stylus: string;
|
|
47
|
+
text: string;
|
|
48
|
+
};
|
|
49
|
+
export declare function parseSFC(filePath: string, content: Buffer): SfcBlock;
|
|
50
|
+
export declare function serializeSfc(block: SfcBlock): {
|
|
51
|
+
filePath: string;
|
|
52
|
+
content: Buffer;
|
|
53
|
+
};
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=sfc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sfc.d.ts","sourceRoot":"","sources":["../../src/utils/sfc.ts"],"names":[],"mappings":";AAMA,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,YAAY,SAAS,CAAC;AAInC,oBAAY,OAAO,GAAG;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,oBAAY,SAAS,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,OAAO,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,oBAAY,QAAQ,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,CACvC;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,GAC3H;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAC1F,CAAC;AAEF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAiBtD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAE1D;AAED,aAAK,WAAW,GAAG;KAChB,CAAC,IAAI,MAAM,GAAG,KAAK;CACrB,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;;;CAajB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAoDpE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA2BnF"}
|
package/dist/utils/sfc.js
CHANGED
|
@@ -1,44 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
4
|
};
|
|
28
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.serializeSfc = exports.parseSFC = exports.
|
|
30
|
-
const CompilerDOM = __importStar(require("@vue/compiler-dom"));
|
|
31
|
-
const json_stable_stringify_1 = __importDefault(require("json-stable-stringify"));
|
|
6
|
+
exports.serializeSfc = exports.parseSFC = exports.serializeSfcPath = exports.parseSfcPath = exports.MARS_SFC_EXT = exports.METADATA_SECTION_ID = void 0;
|
|
32
7
|
const json5_1 = __importDefault(require("json5"));
|
|
33
8
|
const lodash_1 = __importDefault(require("lodash"));
|
|
34
9
|
const path_1 = __importDefault(require("path"));
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
exports.
|
|
38
|
-
exports.SFC_EXT = 'vue';
|
|
10
|
+
const textUtils_1 = require("./textUtils");
|
|
11
|
+
exports.METADATA_SECTION_ID = 'metadata';
|
|
12
|
+
exports.MARS_SFC_EXT = 'mars';
|
|
39
13
|
const SAVE_EMPTY_SOURCES = true;
|
|
40
|
-
function
|
|
41
|
-
// Blog/BlogPost.page.
|
|
14
|
+
function parseSfcPath(filePath) {
|
|
15
|
+
// Blog/BlogPost.page.mars => {folder:"Blog", name: "BlogPost", blockTypeName: "page", ext: "mars", fullName: "Blog.BlogPost"}
|
|
42
16
|
const originalParsed = path_1.default.parse(filePath);
|
|
43
17
|
const withoutExt = originalParsed.name;
|
|
44
18
|
const ext = originalParsed.ext.slice(1);
|
|
@@ -46,22 +20,19 @@ function parseSfcIdentity(filePath) {
|
|
|
46
20
|
if (!parsed.name || !parsed.ext)
|
|
47
21
|
throw new Error(`Invalid block file path: ${filePath}`);
|
|
48
22
|
const blockTypeName = parsed.ext.slice(1);
|
|
49
|
-
const namespace = originalParsed.dir.replace(/\//g, '.');
|
|
50
|
-
const fullName = namespace.length > 0 ? `${namespace}.${parsed.name}` : parsed.name;
|
|
51
23
|
return {
|
|
52
24
|
folder: originalParsed.dir,
|
|
53
25
|
name: parsed.name,
|
|
54
26
|
blockTypeName,
|
|
55
27
|
ext,
|
|
56
|
-
fullName,
|
|
57
28
|
filePath,
|
|
58
29
|
};
|
|
59
30
|
}
|
|
60
|
-
exports.
|
|
61
|
-
function
|
|
31
|
+
exports.parseSfcPath = parseSfcPath;
|
|
32
|
+
function serializeSfcPath(identity) {
|
|
62
33
|
return path_1.default.join(identity.folder, `${identity.name}.${identity.blockTypeName}.${identity.ext}`);
|
|
63
34
|
}
|
|
64
|
-
exports.
|
|
35
|
+
exports.serializeSfcPath = serializeSfcPath;
|
|
65
36
|
const LANG_TAG_MAP = {
|
|
66
37
|
html: 'html',
|
|
67
38
|
pug: 'template',
|
|
@@ -76,96 +47,82 @@ const LANG_TAG_MAP = {
|
|
|
76
47
|
stylus: 'style',
|
|
77
48
|
text: 'text',
|
|
78
49
|
};
|
|
79
|
-
function getNodeAttr(node, attr) {
|
|
80
|
-
return node.props.map(p => (p.name == attr && p.type === 6 /* ATTRIBUTE */ ? p.value?.content : undefined)).find(p => !!p);
|
|
81
|
-
}
|
|
82
50
|
function parseSFC(filePath, content) {
|
|
83
|
-
const
|
|
84
|
-
if (
|
|
85
|
-
return {
|
|
51
|
+
const sfcPath = parseSfcPath(filePath);
|
|
52
|
+
if (sfcPath.ext !== exports.MARS_SFC_EXT) {
|
|
53
|
+
return { path: sfcPath, metadata: {}, jsons: {}, sources: {}, rawContent: content };
|
|
86
54
|
}
|
|
87
|
-
const errors = [];
|
|
88
|
-
const ast = CompilerDOM.parse(content.toString('utf-8'), {
|
|
89
|
-
// there are no components at SFC parsing level
|
|
90
|
-
isNativeTag: () => true,
|
|
91
|
-
// preserve all whitespaces
|
|
92
|
-
isPreTag: () => true,
|
|
93
|
-
getTextMode: () => 2 /* RAWTEXT */,
|
|
94
|
-
onError: e => errors.push(e),
|
|
95
|
-
});
|
|
96
55
|
const block = {
|
|
97
|
-
|
|
56
|
+
path: parseSfcPath(filePath),
|
|
98
57
|
metadata: {},
|
|
99
58
|
jsons: {},
|
|
100
59
|
sources: {},
|
|
101
60
|
rawContent: null,
|
|
102
61
|
};
|
|
103
62
|
const seenIds = new Set();
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
if (
|
|
120
|
-
|
|
121
|
-
const jsonData = json5_1.default.parse(content);
|
|
122
|
-
if (sectionId === exports.METADATA) {
|
|
123
|
-
block.metadata = jsonData;
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
block.jsons[sectionId] = jsonData;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
catch (e) {
|
|
130
|
-
errors.push({ name: 'invalid-json', message: `${e}`, code: 0, loc: node.loc });
|
|
131
|
-
}
|
|
63
|
+
const errors = [];
|
|
64
|
+
for (const node of (0, textUtils_1.parseVueLike)(content.toString('utf-8'), errors)) {
|
|
65
|
+
const { id: sectionId, lang, ...props } = node.props;
|
|
66
|
+
if (!sectionId) {
|
|
67
|
+
errors.push({ name: `missing-id`, message: `Id property is missing`, code: 0, loc: node.loc });
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (seenIds.has(sectionId)) {
|
|
71
|
+
errors.push({ name: `duplicate-id`, message: `Duplicate section id: ${sectionId}`, code: 0, loc: node.loc });
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
seenIds.add(sectionId);
|
|
75
|
+
if (node.tag === 'json') {
|
|
76
|
+
try {
|
|
77
|
+
const jsonData = json5_1.default.parse(node.content);
|
|
78
|
+
if (sectionId === exports.METADATA_SECTION_ID) {
|
|
79
|
+
block.metadata = jsonData;
|
|
132
80
|
}
|
|
133
81
|
else {
|
|
134
|
-
|
|
135
|
-
const lang = getNodeAttr(node, 'lang');
|
|
136
|
-
const lineOffset = node.loc.start.line;
|
|
137
|
-
block.sources[sectionId] = { source, lang, lineOffset };
|
|
82
|
+
block.jsons[sectionId] = jsonData;
|
|
138
83
|
}
|
|
139
84
|
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
errors.push({ name: 'invalid-json', message: `${e}`, code: 0, loc: node.loc });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
const source = (0, textUtils_1.unescapeCloseTag)(node.content.slice(1, -1), node.tag);
|
|
91
|
+
const lineOffset = node.loc.start.line;
|
|
92
|
+
block.sources[sectionId] = { source, lang, props, lineOffset };
|
|
140
93
|
}
|
|
141
|
-
}
|
|
94
|
+
}
|
|
142
95
|
if (errors.length) {
|
|
143
96
|
throw new Error(`Parsing SFC ${filePath} failed with ${JSON.stringify(errors)}`);
|
|
144
97
|
}
|
|
145
98
|
return block;
|
|
146
99
|
}
|
|
147
100
|
exports.parseSFC = parseSFC;
|
|
148
|
-
const PRETTIER_JSON_CONFIG = { parser: 'json5', printWidth: 120, trailingComma: 'all' };
|
|
149
101
|
function serializeSfc(block) {
|
|
150
|
-
const filePath =
|
|
151
|
-
if (block.
|
|
102
|
+
const filePath = serializeSfcPath(block.path);
|
|
103
|
+
if (block.path.ext !== exports.MARS_SFC_EXT) {
|
|
152
104
|
if (block.rawContent === null)
|
|
153
|
-
throw new Error(`SfcBlock must have rawContent if ext!="${exports.
|
|
105
|
+
throw new Error(`SfcBlock must have rawContent if ext!="${exports.MARS_SFC_EXT}"`);
|
|
154
106
|
return { filePath, content: block.rawContent };
|
|
155
107
|
}
|
|
156
108
|
if (block.rawContent !== null)
|
|
157
|
-
throw new Error(`SfcBlock cannot have rawContent if ext=="${exports.
|
|
109
|
+
throw new Error(`SfcBlock cannot have rawContent if ext=="${exports.MARS_SFC_EXT}"`);
|
|
158
110
|
let content = '';
|
|
159
|
-
for (const [name, source] of [[exports.
|
|
160
|
-
const jsonStr =
|
|
161
|
-
content += `<json id="${(0,
|
|
111
|
+
for (const [name, source] of [[exports.METADATA_SECTION_ID, block.metadata], ...lodash_1.default.sortBy(Object.entries(block.jsons), e => e[0])]) {
|
|
112
|
+
const jsonStr = (0, textUtils_1.stablePrettyJson)(source);
|
|
113
|
+
content += `<json id="${(0, textUtils_1.escapeHtmlAttr)(name)}">\n${jsonStr}</json>\n\n`;
|
|
162
114
|
}
|
|
163
115
|
for (const [name, source] of lodash_1.default.sortBy(Object.entries(block.sources), e => e[0])) {
|
|
164
116
|
if (!SAVE_EMPTY_SOURCES && !source.source.trim())
|
|
165
117
|
continue;
|
|
166
|
-
const tag = LANG_TAG_MAP[source.lang || ''] || '
|
|
167
|
-
|
|
118
|
+
const tag = LANG_TAG_MAP[source.lang || ''] || 'text';
|
|
119
|
+
const id = (0, textUtils_1.escapeHtmlAttr)(name);
|
|
120
|
+
const lang = (0, textUtils_1.escapeHtmlAttr)(source.lang || '');
|
|
121
|
+
const props = (0, textUtils_1.stableHtmlAttributes)(source.props);
|
|
122
|
+
const text = (0, textUtils_1.escapeCloseTag)(source.source, tag);
|
|
123
|
+
content += `<${tag} id="${id}" lang="${lang}"${props}>\n${text}\n</${tag}>\n\n`;
|
|
168
124
|
}
|
|
169
125
|
return { filePath, content: Buffer.from(content, 'utf-8') };
|
|
170
126
|
}
|
|
171
127
|
exports.serializeSfc = serializeSfc;
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ZjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3NmYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxrREFBMEI7QUFDMUIsb0RBQXVCO0FBQ3ZCLGdEQUF3QjtBQUN4QiwyQ0FBcUk7QUFFeEgsUUFBQSxtQkFBbUIsR0FBRyxVQUFVLENBQUM7QUFDakMsUUFBQSxZQUFZLEdBQUcsTUFBTSxDQUFDO0FBRW5DLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBc0JoQyxTQUFnQixZQUFZLENBQUMsUUFBZ0I7SUFDM0MsOEhBQThIO0lBQzlILE1BQU0sY0FBYyxHQUFHLGNBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQztJQUN2QyxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV4QyxNQUFNLE1BQU0sR0FBRyxjQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUc7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3pGLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTFDLE9BQU87UUFDTCxNQUFNLEVBQUUsY0FBYyxDQUFDLEdBQUc7UUFDMUIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLGFBQWE7UUFDYixHQUFHO1FBQ0gsUUFBUTtLQUNULENBQUM7QUFDSixDQUFDO0FBakJELG9DQWlCQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLFFBQWlCO0lBQ2hELE9BQU8sY0FBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMs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
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CompilerError } from '@vue/compiler-core';
|
|
2
|
+
import * as CompilerDOM from '@vue/compiler-dom';
|
|
3
|
+
export declare function assert(value: unknown, message?: string): asserts value;
|
|
4
|
+
export declare function escapeCloseTag(str: string, tag: string): string;
|
|
5
|
+
export declare function unescapeCloseTag(str: string, tag: string): string;
|
|
6
|
+
export declare function escapeHtmlAttr(str: string): string;
|
|
7
|
+
export declare function prettifyJson(json: string): string;
|
|
8
|
+
export declare function stableJson(data: unknown): string;
|
|
9
|
+
export declare function stablePrettyJson(data: unknown): string;
|
|
10
|
+
export declare function stableHtmlAttributes(attrs: Record<string, string | undefined | null> | undefined): string;
|
|
11
|
+
export declare function parseVueLike(content: string, errors: (CompilerError | SyntaxError)[]): {
|
|
12
|
+
tag: string;
|
|
13
|
+
props: Record<string, string>;
|
|
14
|
+
content: string;
|
|
15
|
+
loc: CompilerDOM.SourceLocation;
|
|
16
|
+
}[];
|
|
17
|
+
//# sourceMappingURL=textUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textUtils.d.ts","sourceRoot":"","sources":["../../src/utils/textUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAa,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AAMjD,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;AAID,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEhD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEtD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,SAAS,GAAG,MAAM,CAUzG;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,aAAa,GAAG,WAAW,CAAC,EAAE;;;;;IA8BpF"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.parseVueLike = exports.stableHtmlAttributes = exports.stablePrettyJson = exports.stableJson = exports.prettifyJson = exports.escapeHtmlAttr = exports.unescapeCloseTag = exports.escapeCloseTag = exports.assert = void 0;
|
|
30
|
+
const CompilerDOM = __importStar(require("@vue/compiler-dom"));
|
|
31
|
+
const json_stable_stringify_1 = __importDefault(require("json-stable-stringify"));
|
|
32
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
33
|
+
const prettier_1 = __importDefault(require("prettier"));
|
|
34
|
+
function assert(value, message = 'value must be defined') {
|
|
35
|
+
if (!value) {
|
|
36
|
+
throw new Error(message);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.assert = assert;
|
|
40
|
+
function escapeCloseTag(str, tag) {
|
|
41
|
+
return str.replaceAll(`</${tag}>`, `</ ${tag}>`);
|
|
42
|
+
}
|
|
43
|
+
exports.escapeCloseTag = escapeCloseTag;
|
|
44
|
+
function unescapeCloseTag(str, tag) {
|
|
45
|
+
return str.replaceAll(`</ ${tag}>`, `</${tag}>`);
|
|
46
|
+
}
|
|
47
|
+
exports.unescapeCloseTag = unescapeCloseTag;
|
|
48
|
+
function escapeHtmlAttr(str) {
|
|
49
|
+
return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
50
|
+
}
|
|
51
|
+
exports.escapeHtmlAttr = escapeHtmlAttr;
|
|
52
|
+
const PRETTIER_JSON_CONFIG = { parser: 'json5', printWidth: 120, trailingComma: 'all' };
|
|
53
|
+
function prettifyJson(json) {
|
|
54
|
+
return prettier_1.default.format(`(${json})`, PRETTIER_JSON_CONFIG);
|
|
55
|
+
}
|
|
56
|
+
exports.prettifyJson = prettifyJson;
|
|
57
|
+
function stableJson(data) {
|
|
58
|
+
return (0, json_stable_stringify_1.default)(data);
|
|
59
|
+
}
|
|
60
|
+
exports.stableJson = stableJson;
|
|
61
|
+
function stablePrettyJson(data) {
|
|
62
|
+
return prettifyJson(stableJson(data));
|
|
63
|
+
}
|
|
64
|
+
exports.stablePrettyJson = stablePrettyJson;
|
|
65
|
+
function stableHtmlAttributes(attrs) {
|
|
66
|
+
let result = '';
|
|
67
|
+
if (attrs) {
|
|
68
|
+
for (const [name, value] of lodash_1.default.sortBy(Object.entries(attrs), e => e[0])) {
|
|
69
|
+
if (value) {
|
|
70
|
+
result += ` ${name}="${escapeHtmlAttr(value)}"`;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
exports.stableHtmlAttributes = stableHtmlAttributes;
|
|
77
|
+
function parseVueLike(content, errors) {
|
|
78
|
+
const ast = CompilerDOM.parse(content, {
|
|
79
|
+
// there are no components at SFC parsing level
|
|
80
|
+
isNativeTag: () => true,
|
|
81
|
+
// preserve all whitespaces
|
|
82
|
+
isPreTag: () => true,
|
|
83
|
+
getTextMode: () => 2 /* RAWTEXT */,
|
|
84
|
+
onError: e => errors.push(e),
|
|
85
|
+
});
|
|
86
|
+
const result = [];
|
|
87
|
+
for (const node of ast.children) {
|
|
88
|
+
if (node.type === 1 /* ELEMENT */) {
|
|
89
|
+
const child = node.children.length === 1 ? node.children[0] : null;
|
|
90
|
+
const content = child && child.type === 2 /* TEXT */ ? child.content : null;
|
|
91
|
+
if (content) {
|
|
92
|
+
const props = {};
|
|
93
|
+
for (const prop of node.props) {
|
|
94
|
+
if (prop.type === 6 /* ATTRIBUTE */ && prop.value) {
|
|
95
|
+
props[prop.name] = prop.value.content;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
result.push({ tag: node.tag, props, content, loc: node.loc });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
exports.parseVueLike = parseVueLike;
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dFV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3RleHRVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLCtEQUFpRDtBQUVqRCxrRkFBOEM7QUFDOUMsb0RBQXVCO0FBQ3ZCLHdEQUE2QztBQUU3QyxTQUFnQixNQUFNLENBQUMsS0FBYyxFQUFFLE9BQU8sR0FBRyx1QkFBdUI7SUFDdEUsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDMUI7QUFDSCxDQUFDO0FBSkQsd0JBSUM7QUFFRCxTQUFnQixjQUFjLENBQUMsR0FBVyxFQUFFLEdBQVc7SUFDckQsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFGRCx3Q0FFQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLEdBQVcsRUFBRSxHQUFXO0lBQ3ZELE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRkQsNENBRUM7QUFFRCxTQUFnQixjQUFjLENBQUMsR0FBVztJQUN4QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hHLENBQUM7QUFGRCx3Q0FFQztBQUVELE1BQU0sb0JBQW9CLEdBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUss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
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SfcBlock } from './sfc';
|
|
2
|
+
export declare type V3MongoBlock = {
|
|
3
|
+
Folder: string;
|
|
4
|
+
Name: string;
|
|
5
|
+
Type: string;
|
|
6
|
+
app?: {
|
|
7
|
+
name: string;
|
|
8
|
+
};
|
|
9
|
+
} & Record<string, unknown>;
|
|
10
|
+
export declare function convertV3ToSfc(block: V3MongoBlock): SfcBlock;
|
|
11
|
+
export declare function convertSfcToV3(sfc: SfcBlock): V3MongoBlock;
|
|
12
|
+
//# sourceMappingURL=v3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3.d.ts","sourceRoot":"","sources":["../../src/utils/v3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE/C,oBAAY,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACxB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA0C5B,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,QAAQ,CAsC5D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,YAAY,CAc1D"}
|
package/dist/utils/v3.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.convertSfcToV3 = exports.convertV3ToSfc = void 0;
|
|
4
|
+
const sfc_1 = require("./sfc");
|
|
4
5
|
const SFC_FIELD_MAP = {
|
|
5
6
|
// JSONs
|
|
6
7
|
DataArgs: 'json',
|
|
@@ -42,12 +43,11 @@ const SFC_FIELD_MAP = {
|
|
|
42
43
|
};
|
|
43
44
|
function convertV3ToSfc(block) {
|
|
44
45
|
const sfc = {
|
|
45
|
-
|
|
46
|
+
path: {
|
|
46
47
|
folder: block.Folder,
|
|
47
48
|
name: block.Name,
|
|
48
49
|
blockTypeName: block.Type,
|
|
49
|
-
ext:
|
|
50
|
-
fullName: '',
|
|
50
|
+
ext: sfc_1.MARS_SFC_EXT,
|
|
51
51
|
filePath: '',
|
|
52
52
|
},
|
|
53
53
|
metadata: {},
|
|
@@ -83,9 +83,9 @@ function convertV3ToSfc(block) {
|
|
|
83
83
|
exports.convertV3ToSfc = convertV3ToSfc;
|
|
84
84
|
function convertSfcToV3(sfc) {
|
|
85
85
|
const block = {
|
|
86
|
-
Name: sfc.
|
|
87
|
-
Type: sfc.
|
|
88
|
-
Folder: sfc.
|
|
86
|
+
Name: sfc.path.name,
|
|
87
|
+
Type: sfc.path.blockTypeName,
|
|
88
|
+
Folder: sfc.path.folder,
|
|
89
89
|
...sfc.metadata,
|
|
90
90
|
...sfc.jsons,
|
|
91
91
|
};
|
|
@@ -95,3 +95,4 @@ function convertSfcToV3(sfc) {
|
|
|
95
95
|
return block;
|
|
96
96
|
}
|
|
97
97
|
exports.convertSfcToV3 = convertSfcToV3;
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdjMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStDO0FBUy9DLE1BQU0sYUFBYSxHQUEyQjtJQUM1QyxRQUFRO0lBQ1IsUUFBUSxFQUFFLE1BQU07SUFDaEIsSUFBSSxFQUFFLE1BQU07SUFDWixLQUFLLEVBQUUsTUFBTTtJQUNiLE1BQU0sRUFBRSxNQUFNO0lBQ2QsTUFBTSxFQUFFLE1BQU07SUFDZCxLQUFLLEVBQUUsTUFBTTtJQUNiLFVBQVU7SUFDVixhQUFhLEVBQUUsSUFBSTtJQUNuQixJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxNQUFNO0lBQ1osR0FBRyxFQUFFLEtBQUs7SUFDVixhQUFhLEVBQUUsSUFBSTtJQUNuQix1QkFBdUIsRUFBRSxJQUFJO0lBQzdCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsYUFBYSxFQUFFLElBQUk7SUFDbkIsT0FBTyxFQUFFLEtBQUs7SUFDZCxpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLE1BQU0sRUFBRSxJQUFJO0lBQ1osR0FBRyxFQUFFLEtBQUs7SUFDVixRQUFRLEVBQUUsSUFBSTtJQUNkLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLHFCQUFxQixFQUFFLElBQUk7SUFDM0IsNkJBQTZCO0lBQzdCLGlCQUFpQjtJQUNqQixJQUFJLEVBQUUsUUFBUTtJQUNkLElBQUksRUFBRSxRQUFRO0lBQ2QsTUFBTSxFQUFFLFFBQVE7SUFDaEIsa0NBQWtDO0lBQ2xDLEdBQUcsRUFBRSxRQUFRO0lBQ2IsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLFFBQVE7SUFDckIsU0FBUyxFQUFFLFFBQVE7SUFDbkIsU0FBUyxFQUFFLFFBQVE7SUFDbkIsU0FBUyxFQUFFLFFBQVE7SUFDbkIsU0FBUyxFQUFFLFFBQVE7SUFDbkIsbURBQW1EO0NBQ3BELENBQUM7QUFFRixTQUFnQixjQUFjLENBQUMsS0FBbUI7SUFDaEQsTUFB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marsx-dev/launcher",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "MarsX launcher",
|
|
5
5
|
"author": "MarsX team <team@marsx.dev>",
|
|
6
6
|
"homepage": "https://marsx.dev/",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
"dist",
|
|
22
|
+
"src",
|
|
22
23
|
"LICENSE",
|
|
23
24
|
"README.md"
|
|
24
25
|
],
|
|
@@ -42,7 +43,8 @@
|
|
|
42
43
|
"chalk": "^4.1.2",
|
|
43
44
|
"commander": "^9.1.0",
|
|
44
45
|
"json-stable-stringify": "^1.0.1",
|
|
45
|
-
"json5": "^2.2.0"
|
|
46
|
+
"json5": "^2.2.0",
|
|
47
|
+
"yup": "^0.32.11"
|
|
46
48
|
},
|
|
47
49
|
"peerDependencies": {
|
|
48
50
|
"@types/config": "^0.0.41",
|
|
@@ -58,6 +60,7 @@
|
|
|
58
60
|
},
|
|
59
61
|
"devDependencies": {
|
|
60
62
|
"@types/json-stable-stringify": "^1.0.34",
|
|
63
|
+
"@types/yup": "^0.29.13",
|
|
61
64
|
"@typescript-eslint/eslint-plugin": "^5.10.2",
|
|
62
65
|
"@typescript-eslint/parser": "^5.10.2",
|
|
63
66
|
"eslint": "^8.8.0",
|
package/src/cli/index.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { initProject } from './init';
|
|
6
|
+
import { migrateV3ToV4 } from './migrate';
|
|
7
|
+
import { start } from './start';
|
|
8
|
+
|
|
9
|
+
export class CliError extends Error {}
|
|
10
|
+
|
|
11
|
+
async function main() {
|
|
12
|
+
try {
|
|
13
|
+
const program = new Command();
|
|
14
|
+
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
16
|
+
const version = require('../../package.json').version;
|
|
17
|
+
program.name('marsx').description('CLI for MarsX launcher').version(version);
|
|
18
|
+
|
|
19
|
+
program.command('start', { isDefault: true }).description('Start MarsX server').action(start);
|
|
20
|
+
program
|
|
21
|
+
.command('init <project_name>')
|
|
22
|
+
.description('Initialize a new MarsX project named <project_name> in a directory of the same name')
|
|
23
|
+
.action(initProject);
|
|
24
|
+
program.command('migrate').description('Migrate MarsX V3 project to V4').action(migrateV3ToV4);
|
|
25
|
+
|
|
26
|
+
await program.parseAsync();
|
|
27
|
+
} catch (e) {
|
|
28
|
+
if (e instanceof CliError) {
|
|
29
|
+
console.error(chalk.red(e.message));
|
|
30
|
+
} else {
|
|
31
|
+
console.error(chalk.red(e));
|
|
32
|
+
}
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
main();
|