@marsx-dev/launcher 0.0.2 → 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.
- 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 +90 -59
- 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 +5 -5
- package/package.json +12 -51
- 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
package/dist/loader.js
CHANGED
|
@@ -12,7 +12,7 @@ const lodash_1 = __importDefault(require("lodash"));
|
|
|
12
12
|
const path_1 = __importDefault(require("path"));
|
|
13
13
|
const configuration_1 = require("./configuration");
|
|
14
14
|
const sfc_1 = require("./utils/sfc");
|
|
15
|
-
const
|
|
15
|
+
const fileUtils_1 = require("./utils/fileUtils");
|
|
16
16
|
const v3_1 = require("./utils/v3");
|
|
17
17
|
async function downloadFromExternal(externalImport) {
|
|
18
18
|
const params = { api_key: externalImport.api_key, git_commit_ish: externalImport.git_commit_ish || '' };
|
|
@@ -31,14 +31,14 @@ async function loadCachedOrDownload(externalImport) {
|
|
|
31
31
|
const hash = crypto_1.default.createHash('md5').update((0, json_stable_stringify_1.default)(externalImport)).digest('hex');
|
|
32
32
|
const cacheFileName = `${externalImport.name}_${externalImport.git_commit_ish}_${hash}.json`.replace(/[^\w.]+/g, '_');
|
|
33
33
|
const cacheFilePath = path_1.default.join(configuration_1.config.cacheDir, 'imports', cacheFileName);
|
|
34
|
-
if (await (0,
|
|
34
|
+
if (await (0, fileUtils_1.isFile)(cacheFilePath)) {
|
|
35
35
|
const content = await fs_1.promises.readFile(cacheFilePath);
|
|
36
36
|
console.log(`Loading cached blocks from ${externalImport.url}`);
|
|
37
37
|
return JSON.parse(content.toString('utf-8'));
|
|
38
38
|
}
|
|
39
39
|
const data = await downloadFromExternal(externalImport);
|
|
40
40
|
console.log(`Downloaded ${data.length} blocks from ${externalImport.url}`);
|
|
41
|
-
await (0,
|
|
41
|
+
await (0, fileUtils_1.writeFileMakeDir)(cacheFilePath, JSON.stringify(data, null, 2), 'utf-8');
|
|
42
42
|
return data;
|
|
43
43
|
}
|
|
44
44
|
async function downloadAll(externalImports) {
|
|
@@ -51,7 +51,7 @@ async function readBlockFile(blocksDir, filePath) {
|
|
|
51
51
|
return (0, sfc_1.parseSFC)(relPath, content);
|
|
52
52
|
}
|
|
53
53
|
async function readBlockFiles(blocksDir) {
|
|
54
|
-
const files = await (0,
|
|
54
|
+
const files = await (0, fileUtils_1.listFilesRecursive)(blocksDir);
|
|
55
55
|
return await Promise.all(files.filter(f => !path_1.default.basename(f).startsWith('.')).map(f => readBlockFile(blocksDir, f)));
|
|
56
56
|
}
|
|
57
57
|
async function loadAllBlocks() {
|
|
@@ -60,3 +60,4 @@ async function loadAllBlocks() {
|
|
|
60
60
|
return [...externalBlocks, ...localBlocks];
|
|
61
61
|
}
|
|
62
62
|
exports.loadAllBlocks = loadAllBlocks;
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsb0RBQTRCO0FBQzVCLDJCQUFvQztBQUNwQyxrRkFBOEM7QUFDOUMsb0RBQXVCO0FBQ3ZCLGdEQUF3QjtBQUN4QixtREFBOEQ7QUFDOUQscUNBQWlEO0FBQ2pELGlEQUFpRjtBQUNqRixtQ0FBMEQ7QUFFMUQsS0FBSyxVQUFVLG9CQUFvQixDQUFDLGNBQW1DO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxjQUFjLElBQUksRUFBRSxFQUFFLENBQUM7SUFFeEcsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0QsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBYSxHQUFHLGNBQWMsQ0FBQyxHQUFHLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMzRyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FDcEI7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsR0FBRyxzQ0FBc0MsQ0FBQyxDQUFDO0tBQzFFO0lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxlQUFLLENBQUMsR0FBRyxDQUFpQixHQUFHLGNBQWMsQ0FBQyxHQUFHLDJCQUEyQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3RyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBQSxtQkFBYyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVELEtBQUssVUFBVSxv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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SfcBlock } from './sfc';
|
|
2
|
+
export declare function transpileTypescript(sourceCode: string, options?: {
|
|
3
|
+
sourceRoot?: string;
|
|
4
|
+
originalFilePath?: string;
|
|
5
|
+
compiledFilePath?: string;
|
|
6
|
+
lineOffset?: number | undefined;
|
|
7
|
+
}): string;
|
|
8
|
+
export declare function compileSfcSource(sfcBlock: SfcBlock, sourceId: string): Promise<string>;
|
|
9
|
+
//# sourceMappingURL=compile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/utils/compile.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQjC,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,GACA,MAAM,CA0BR;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU5F"}
|
package/dist/utils/compile.js
CHANGED
|
@@ -7,7 +7,8 @@ exports.compileSfcSource = exports.transpileTypescript = void 0;
|
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const typescript_1 = __importDefault(require("typescript"));
|
|
9
9
|
const configuration_1 = require("../configuration");
|
|
10
|
-
const
|
|
10
|
+
const fileUtils_1 = require("./fileUtils");
|
|
11
|
+
const textUtils_1 = require("./textUtils");
|
|
11
12
|
function genSourceMapComment(sourceMap) {
|
|
12
13
|
return `\n//# sourceMappingURL=data:application/json;base64,${Buffer.from(JSON.stringify(sourceMap)).toString('base64')}`;
|
|
13
14
|
}
|
|
@@ -27,7 +28,7 @@ function transpileTypescript(sourceCode, options) {
|
|
|
27
28
|
// inlineSourceMap: true,
|
|
28
29
|
},
|
|
29
30
|
});
|
|
30
|
-
(0,
|
|
31
|
+
(0, textUtils_1.assert)(transpiled.sourceMapText);
|
|
31
32
|
const sourceMap = JSON.parse(transpiled.sourceMapText);
|
|
32
33
|
sourceMap.sourceRoot = options?.sourceRoot || '';
|
|
33
34
|
sourceMap.file = compiledFilePath;
|
|
@@ -39,11 +40,12 @@ exports.transpileTypescript = transpileTypescript;
|
|
|
39
40
|
async function compileSfcSource(sfcBlock, sourceId) {
|
|
40
41
|
const sourceCode = sfcBlock.sources[sourceId];
|
|
41
42
|
if (!sourceCode)
|
|
42
|
-
throw new Error(`Source code block ${sourceId} not found in ${sfcBlock.
|
|
43
|
-
const compiledFilePath = path_1.default.join(configuration_1.config.cacheDir, 'compiled', `${sfcBlock.
|
|
44
|
-
const originalFilePath = path_1.default.join(configuration_1.config.blocksDir, sfcBlock.
|
|
43
|
+
throw new Error(`Source code block ${sourceId} not found in ${sfcBlock.path.filePath}`);
|
|
44
|
+
const compiledFilePath = path_1.default.join(configuration_1.config.cacheDir, 'compiled', `${sfcBlock.path.filePath}.${sourceId}.js`);
|
|
45
|
+
const originalFilePath = path_1.default.join(configuration_1.config.blocksDir, sfcBlock.path.filePath);
|
|
45
46
|
const code = transpileTypescript(sourceCode.source, { compiledFilePath, originalFilePath, lineOffset: sourceCode.lineOffset });
|
|
46
|
-
await (0,
|
|
47
|
+
await (0, fileUtils_1.writeFileMakeDir)(compiledFilePath, code, 'utf-8');
|
|
47
48
|
return compiledFilePath;
|
|
48
49
|
}
|
|
49
50
|
exports.compileSfcSource = compileSfcSource;
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb21waWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLGdEQUF3QjtBQUN4Qiw0REFBNEI7QUFDNUIsb0RBQTBDO0FBRTFDLDJDQUErQztBQUMvQywyQ0FBcUM7QUFFckMsU0FBUyxtQkFBbUIsQ0FBQyxTQUEyQjtJQUN0RCxPQUFPLHVEQUF1RCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUM1SCxDQUFDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQ2pDLFVBQWtCLEVBQ2xCLE9BS0M7SUFFRCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxjQUFjLENBQUM7SUFDckUsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLEVBQUUsZ0JBQWdCLElBQUksY0FBYyxDQUFDO0lBRXJFLElBQUksT0FBTyxFQUFFLFVBQVUsRUFBRTtRQUN2QixVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxDQUFDO0tBQzNEO0lBRUQsTUFBTSxVQUFVLEdBQUcsb0JBQUUsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFO1FBQ2hELGVBQWUsRUFBRTtZQUNmLE1BQU0sRUFBRSxvQkFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRO1lBQzlCLE1BQU0sRUFBRSxvQkFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQzlCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsdUJBQXVCO1lBQ3ZCLHlCQUF5QjtTQUMxQjtLQUNGLENBQUMsQ0FBQztJQUNILElBQUEsa0JBQU0sRUFBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFakMsTUFBTSxTQUFTLEdBQXFCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pFLFNBQVMsQ0FBQyxVQUFVLEdBQUcsT0FBTyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7SUFDakQsU0FBUyxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztJQUNsQyxTQUFTLENBQUMsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN2QyxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hELE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLEVBQUUsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7QUFDN0YsQ0FBQztBQWxDRCxrREFrQ0M7QUFFTSxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsUUFBa0IsRUFBRSxRQUFnQjtJQUN6RSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLElBQUksQ0FBQyxVQUFVO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsUUFBUSxpQkFBaUIsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRXpHLE1BQU0sZ0JBQWdCLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxzQkFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDO0lBQzVHLE1BQU0sZ0JBQWdCLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxzQkFBTSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFL0gsTUFBTSxJQUFBLDRCQUFnQixFQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RCxPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUM7QUFWRCw0Q0FVQyJ9
|
|
@@ -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,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,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"}
|