@marsx-dev/launcher 0.0.3 → 0.0.4

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 (49) hide show
  1. package/dist/cli/index.d.ts +4 -0
  2. package/dist/cli/index.d.ts.map +1 -0
  3. package/dist/cli/index.js +1 -0
  4. package/dist/cli/init.d.ts +2 -0
  5. package/dist/cli/init.d.ts.map +1 -0
  6. package/dist/cli/init.js +2 -1
  7. package/dist/cli/migrate.d.ts +2 -0
  8. package/dist/cli/migrate.d.ts.map +1 -0
  9. package/dist/cli/migrate.js +1 -0
  10. package/dist/cli/start.d.ts +3 -0
  11. package/dist/cli/start.d.ts.map +1 -0
  12. package/dist/cli/start.js +1 -0
  13. package/dist/configuration.d.ts +24 -0
  14. package/dist/configuration.d.ts.map +1 -0
  15. package/dist/configuration.js +1 -0
  16. package/dist/index.d.ts +6 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +39 -5
  19. package/dist/launcher.d.ts +2 -0
  20. package/dist/launcher.d.ts.map +1 -0
  21. package/dist/launcher.js +1 -0
  22. package/dist/loader.d.ts +3 -0
  23. package/dist/loader.d.ts.map +1 -0
  24. package/dist/loader.js +1 -0
  25. package/dist/utils/compile.d.ts +9 -0
  26. package/dist/utils/compile.d.ts.map +1 -0
  27. package/dist/utils/compile.js +1 -0
  28. package/dist/utils/sfc.d.ts +55 -0
  29. package/dist/utils/sfc.d.ts.map +1 -0
  30. package/dist/utils/sfc.js +1 -0
  31. package/dist/utils/utils.d.ts +16 -0
  32. package/dist/utils/utils.d.ts.map +1 -0
  33. package/dist/utils/utils.js +1 -0
  34. package/dist/utils/v3.d.ts +12 -0
  35. package/dist/utils/v3.d.ts.map +1 -0
  36. package/dist/utils/v3.js +1 -0
  37. package/package.json +2 -1
  38. package/src/cli/index.ts +37 -0
  39. package/src/cli/init.ts +141 -0
  40. package/src/cli/migrate.ts +23 -0
  41. package/src/cli/start.ts +34 -0
  42. package/src/configuration.ts +53 -0
  43. package/src/index.ts +5 -0
  44. package/src/launcher.ts +38 -0
  45. package/src/loader.ts +65 -0
  46. package/src/utils/compile.ts +58 -0
  47. package/src/utils/sfc.ts +178 -0
  48. package/src/utils/utils.ts +72 -0
  49. package/src/utils/v3.ts +105 -0
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ export declare class CliError extends Error {
3
+ }
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAQA,qBAAa,QAAS,SAAQ,KAAK;CAAG"}
package/dist/cli/index.js CHANGED
@@ -38,3 +38,4 @@ async function main() {
38
38
  }
39
39
  }
40
40
  main();
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQSxrREFBMEI7QUFDMUIseUNBQW9DO0FBQ3BDLGlDQUFxQztBQUNyQyx1Q0FBMEM7QUFDMUMsbUNBQWdDO0FBRWhDLE1BQWEsUUFBUyxTQUFRLEtBQUs7Q0FBRztBQUF0Qyw0QkFBc0M7QUFFdEMsS0FBSyxVQUFVLElBQUk7SUFDakIsSUFBSTtRQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksbUJBQU8sRUFBRSxDQUFDO1FBRTlCLDhEQUE4RDtRQUM5RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDdEQsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0UsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBSyxDQUFDLENBQUM7UUFDOUYsT0FBTzthQUNKLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQzthQUM5QixXQUFXLENBQUMscUZBQXFGLENBQUM7YUFDbEcsTUFBTSxDQUFDLGtCQUFXLENBQUMsQ0FBQztRQUN2QixPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx1QkFBYSxDQUFDLENBQUM7UUFFL0YsTUFBTSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7S0FDNUI7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLElBQUksQ0FBQyxZQUFZLFFBQVEsRUFBRTtZQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDckM7YUFBTTtZQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqQjtBQUNILENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ export declare function initProject(projectName: string): Promise<void>;
2
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAkEA,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,iBA0EpD"}
package/dist/cli/init.js CHANGED
@@ -107,7 +107,7 @@ async function initProject(projectName) {
107
107
  ],
108
108
  };
109
109
  await (0, utils_1.writeFileMakeDir)(path_1.default.join(projectDir, 'config', 'default.json'), JSON.stringify(config, null, 2));
110
- await (0, utils_1.writeFileMakeDir)(path_1.default.join(projectDir, '.gitignore'), 'node_modules\ndist');
110
+ await (0, utils_1.writeFileMakeDir)(path_1.default.join(projectDir, '.gitignore'), 'node_modules\ndist\n.cache\n');
111
111
  await (0, utils_1.writeFileMakeDir)(path_1.default.join(projectDir, 'blocks', 'Booter.service.vue'), DEMO_BOOTER);
112
112
  function run(...args) {
113
113
  const cmd = args[0];
@@ -126,3 +126,4 @@ async function initProject(projectName) {
126
126
  console.log(chalk_1.default.dim(`\nInside that directory, you can start MarsX with\n\n cd ${projectName}\n npm run start\n`));
127
127
  }
128
128
  exports.initProject = initProject;
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGkvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsaURBQTBDO0FBQzFDLG1DQUFxQztBQUNyQyxnREFBd0I7QUFFeEIsMENBQXVFO0FBQ3ZFLG1DQUFtQztBQUVuQyxNQUFNLFlBQVksR0FBRztJQUNuQixrQkFBa0I7SUFDbEIsU0FBUztJQUNULGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLGNBQWM7SUFDZCxjQUFjO0lBQ2QsZUFBZTtJQUNmLGtCQUFrQjtJQUNsQixnQkFBZ0I7SUFDaEIsbUJBQW1CO0lBQ25CLHlCQUF5QjtJQUN6QixnQkFBZ0I7SUFDaEIsbUJBQW1CO0NBQ3BCLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRztJQUNsQixxQkFBcUI7SUFDckIsU0FBUztJQUNULE9BQU87SUFDUCxlQUFlO0lBQ2YsUUFBUTtJQUNSLFFBQVE7SUFDUixVQUFVO0lBQ1YsUUFBUTtJQUNSLHdCQUF3QjtJQUN4Qix3QkFBd0I7SUFDeEIsWUFBWTtJQUNaLE1BQU07SUFDTixRQUFRO0NBQ1QsQ0FBQztBQUVGLE1BQU0sT0FBTyxHQUFHO0lBQ2QsWUFBWTtJQUNaLGtDQUFrQztJQUNsQyxRQUFRO0lBQ1IsV0FBVztJQUNYLGNBQWM7SUFDZCxlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixZQUFZO0NBQ2IsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUVuRSxNQUFNLFdBQVcsR0FBRzs7Ozs7Ozs7O1VBU1YsQ0FBQztBQUVKLEtBQUssVUFBVSxXQUFXLENBQUMsV0FBbUI7SUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksV0FBVyxLQUFLLFdBQVcsQ0FB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
@@ -0,0 +1,2 @@
1
+ export declare function migrateV3ToV4(): Promise<void>;
2
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"AAQA,wBAAsB,aAAa,kBAclC"}
@@ -25,3 +25,4 @@ async function migrateV3ToV4() {
25
25
  console.log(chalk_1.default.green('\nMigration complete successfully!'));
26
26
  }
27
27
  exports.migrateV3ToV4 = migrateV3ToV4;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGkvbWlncmF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFDMUIscUNBQXNDO0FBQ3RDLGdEQUF3QjtBQUN4QixvREFBMEM7QUFDMUMsc0NBQTRDO0FBQzVDLDBDQUFrRDtBQUNsRCxvQ0FBMkQ7QUFFcEQsS0FBSyxVQUFVLGFBQWE7SUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxxQkFBVyxDQUFDLHNCQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxzQkFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBZSxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMvRSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsU0FBUyxDQUFDLE1BQU0sV0FBVyxDQUFDLENBQUM7SUFFdkQsS0FBSyxNQUFNLEtBQUssSUFBSSxTQUFTLEVBQUU7UUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBQSxrQkFBWSxFQUFDLElBQUEsbUJBQWMsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sSUFBQSx3QkFBZ0IsRUFBQyxjQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQzdDO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBZEQsc0NBY0MifQ==
@@ -0,0 +1,3 @@
1
+ export declare const RESTART_EXIT_CODe = 9;
2
+ export declare const start: () => Promise<void>;
3
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,eAAO,MAAM,KAAK,qBA0BjB,CAAC"}
package/dist/cli/start.js CHANGED
@@ -37,3 +37,4 @@ const start = async () => {
37
37
  }
38
38
  };
39
39
  exports.start = start;
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL3N0YXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtFQUEwQztBQUMxQyxvREFBMEM7QUFDMUMsMENBQTJDO0FBQzNDLDBDQUF3QztBQUUzQixRQUFBLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUU1QixNQUFNLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRTtJQUM5QixJQUFJLHNCQUFNLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtRQUN0RCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixPQUFPLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztRQUN4RCxNQUFNLElBQUEsdUJBQVksR0FBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO1NBQU07UUFDTCxNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUU7WUFDMUIsSUFBQSxjQUFNLEVBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLHVCQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNsSCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtnQkFDbEIsR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUU7Z0JBQy9DLEtBQUssRUFBRSxTQUFTO2FBQ2pCLENBQUMsQ0FBQztZQUVILEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUU7Z0JBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEtBQUssQ0FBQyxHQUFHLG9CQUFvQixJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLElBQUksS0FBSyx5QkFBaUIsRUFBRTtvQkFDOUIsVUFBVSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztpQkFDakM7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDcEI7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVGLGNBQWMsRUFBRSxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQyxDQUFDO0FBMUJXLFFBQUEsS0FBSyxTQTBCaEIifQ==
@@ -0,0 +1,24 @@
1
+ export interface ImportProjectConfig {
2
+ name: string;
3
+ url: string;
4
+ api_key: string;
5
+ git_commit_ish?: string | undefined;
6
+ }
7
+ export declare const config: {
8
+ production: boolean;
9
+ port: number;
10
+ blocksDir: string;
11
+ cacheDir: string;
12
+ mongoConn: string;
13
+ mongoDbName: string;
14
+ azureStorageConnection: string;
15
+ azureStorageAccountName: string;
16
+ azureStorageUrl: string;
17
+ secret: string;
18
+ webFilesTable: string;
19
+ webRecentFilesTable: string;
20
+ webFilesBlob: string;
21
+ importProjects: ImportProjectConfig[];
22
+ };
23
+ export declare type Configuration = typeof config;
24
+ //# sourceMappingURL=configuration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAyCD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;CAAoB,CAAC;AACxC,oBAAY,aAAa,GAAG,OAAO,MAAM,CAAC"}
@@ -42,3 +42,4 @@ function validatedConfig() {
42
42
  };
43
43
  }
44
44
  exports.config = validatedConfig();
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDbkQsb0RBQWtDO0FBQ2xDLGdEQUF3QjtBQUN4Qix5Q0FBdUM7QUFTdkMsTUFBTSxVQUFVLEdBQ2QsQ0FBSSxRQUFnQixFQUFFLEVBQUUsQ0FDeEIsQ0FBQyxVQUFrQixFQUFLLEVBQUU7SUFDeEIsTUFBTSxLQUFLLEdBQUcsZ0JBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsSUFBQSxjQUFNLEVBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDbEMsT0FBTyxLQUFVLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBRUosTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFTLFFBQVEsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBVSxTQUFTLENBQUMsQ0FBQztBQUNyRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQVMsUUFBUSxDQUFDLENBQUM7QUFFbEQsU0FBUyxlQUFlO0lBQ3RCLElBQUksZ0JBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JELE9BQU8sSUFBSSxLQUFLLENBQUMsRUFBVyxFQUFFO1lBQzVCLEdBQUc7Z0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO1lBQ3hGLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtJQUVELE9BQU87UUFDTCxVQUFVLEVBQUUsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUMxQixTQUFTLEVBQUUsY0FBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsUUFBUSxFQUFFLGNBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELFNBQVMsRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDO1FBQ3BDLFdBQVcsRUFBRSxZQUFZLENBQUMsYUFBYSxDQUFDO1FBQ3hDLHNCQUFzQixFQUFFLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQztRQUM5RCx1QkFBdUIsRUFBRSxZQUFZLENBQUMseUJBQXlCLENBQUM7UUFDaEUsZUFBZSxFQUFFLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztRQUNoRCxNQUFNLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUM5QixhQUFhLEVBQUUsWUFBWSxDQUFDLGVBQWUsQ0FBQztRQUM1QyxtQkFBbUIsRUFBRSxZQUFZLENBQUMscUJBQXFCLENBQUM7UUFDeEQsWUFBWSxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUM7UUFDMUMsY0FBYyxFQUFFLGdCQUFZLENBQUMsR0FBRyxDQUF3QixnQkFBZ0IsQ0FBQztLQUMxRSxDQUFDO0FBQ0osQ0FBQztBQUVZLFFBQUEsTUFBTSxHQUFHLGVBQWUsRUFBRSxDQUFDIn0=
@@ -0,0 +1,6 @@
1
+ export { config, ImportProjectConfig, Configuration } from './configuration';
2
+ export { compileSfcSource, transpileTypescript } from './utils/compile';
3
+ export { parseSFC, serializeSfc, SfcBlock, SfcIdentity, SfcSource, parseSfcIdentity, serializeSfcIdentity } from './utils/sfc';
4
+ export * as utils from './utils/utils';
5
+ export { convertSfcToV3, convertV3ToSfc, V3MongoBlock } from './utils/v3';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC/H,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,41 @@
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
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.migrateV3ToV4 = exports.start = void 0;
4
- var start_1 = require("./cli/start");
5
- Object.defineProperty(exports, "start", { enumerable: true, get: function () { return start_1.start; } });
6
- var migrate_1 = require("./cli/migrate");
7
- Object.defineProperty(exports, "migrateV3ToV4", { enumerable: true, get: function () { return migrate_1.migrateV3ToV4; } });
26
+ exports.convertV3ToSfc = exports.convertSfcToV3 = exports.utils = exports.serializeSfcIdentity = exports.parseSfcIdentity = exports.serializeSfc = exports.parseSFC = exports.transpileTypescript = exports.compileSfcSource = exports.config = void 0;
27
+ var configuration_1 = require("./configuration");
28
+ Object.defineProperty(exports, "config", { enumerable: true, get: function () { return configuration_1.config; } });
29
+ var compile_1 = require("./utils/compile");
30
+ Object.defineProperty(exports, "compileSfcSource", { enumerable: true, get: function () { return compile_1.compileSfcSource; } });
31
+ Object.defineProperty(exports, "transpileTypescript", { enumerable: true, get: function () { return compile_1.transpileTypescript; } });
32
+ var sfc_1 = require("./utils/sfc");
33
+ Object.defineProperty(exports, "parseSFC", { enumerable: true, get: function () { return sfc_1.parseSFC; } });
34
+ Object.defineProperty(exports, "serializeSfc", { enumerable: true, get: function () { return sfc_1.serializeSfc; } });
35
+ Object.defineProperty(exports, "parseSfcIdentity", { enumerable: true, get: function () { return sfc_1.parseSfcIdentity; } });
36
+ Object.defineProperty(exports, "serializeSfcIdentity", { enumerable: true, get: function () { return sfc_1.serializeSfcIdentity; } });
37
+ exports.utils = __importStar(require("./utils/utils"));
38
+ var v3_1 = require("./utils/v3");
39
+ Object.defineProperty(exports, "convertSfcToV3", { enumerable: true, get: function () { return v3_1.convertSfcToV3; } });
40
+ Object.defineProperty(exports, "convertV3ToSfc", { enumerable: true, get: function () { return v3_1.convertV3ToSfc; } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBNkU7QUFBcEUsdUdBQUEsTUFBTSxPQUFBO0FBQ2YsMkNBQXdFO0FBQS9ELDJHQUFBLGdCQUFnQixPQUFBO0FBQUUsOEdBQUEsbUJBQW1CLE9BQUE7QUFDOUMsbUNBQStIO0FBQXRILCtGQUFBLFFBQVEsT0FBQTtBQUFFLG1HQUFBLFlBQVksT0FBQTtBQUFvQyx1R0FBQSxnQkFBZ0IsT0FBQTtBQUFFLDJHQUFBLG9CQUFvQixPQUFBO0FBQ3pHLHVEQUF1QztBQUN2QyxpQ0FBMEU7QUFBakUsb0dBQUEsY0FBYyxPQUFBO0FBQUUsb0dBQUEsY0FBYyxPQUFBIn0=
@@ -0,0 +1,2 @@
1
+ export declare function launchBooter(booterBlockName?: string): Promise<void>;
2
+ //# sourceMappingURL=launcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"AAkBA,wBAAsB,YAAY,CAAC,eAAe,SAAW,iBAmB5D"}
package/dist/launcher.js CHANGED
@@ -36,3 +36,4 @@ async function launchBooter(booterBlockName = 'Booter') {
36
36
  }
37
37
  }
38
38
  exports.launchBooter = launchBooter;
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF1bmNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbGF1bmNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXlDO0FBQ3pDLHFDQUF5QztBQUN6Qyw2Q0FBd0U7QUFDeEUscUNBQXFEO0FBQ3JELHlDQUF5RDtBQUN6RCxtQ0FBNEQ7QUFFNUQsTUFBTSxjQUFjLEdBQUc7SUFDckIsTUFBTSxFQUFOLHNCQUFNO0lBQ04sUUFBUSxFQUFSLGNBQVE7SUFDUixZQUFZLEVBQVosa0JBQVk7SUFDWixjQUFjLEVBQWQsbUJBQWM7SUFDZCxjQUFjLEVBQWQsbUJBQWM7SUFDZCxtQkFBbUIsRUFBbkIsNkJBQW1CO0lBQ25CLGdCQUFnQixFQUFoQiwwQkFBZ0I7SUFDaEIsZ0JBQWdCLEVBQWhCLHdCQUFnQjtDQUNqQixDQUFDO0FBRUssS0FBSyxVQUFVLFlBQVksQ0FBQyxlQUFlLEdBQUcsUUFBUTtJQUMzRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEsc0JBQWEsR0FBRSxDQUFDO0lBRXhDLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQztJQUNoRixJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixlQUFlLDJEQUEyRCxDQUFDLENBQUM7SUFFOUcsdUZBQXVGO0lBQ3ZGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFELElBQUEsY0FBTSxFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBCLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxJQUFBLDBCQUFnQixFQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUNoRixJQUFJO1FBQ0YsOERBQThEO1FBQzlELE1BQU0sT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztLQUN0RTtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pCO0FBQ0gsQ0FBQztBQW5CRCxvQ0FtQkMifQ==
@@ -0,0 +1,3 @@
1
+ import { SfcBlock } from './utils/sfc';
2
+ export declare function loadAllBlocks(): Promise<SfcBlock[]>;
3
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAOA,OAAO,EAAY,QAAQ,EAAE,MAAM,aAAa,CAAC;AAqDjD,wBAAsB,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAIzD"}
package/dist/loader.js CHANGED
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsb0RBQTRCO0FBQzVCLDJCQUFvQztBQUNwQyxrRkFBOEM7QUFDOUMsb0RBQXVCO0FBQ3ZCLGdEQUF3QjtBQUN4QixtREFBOEQ7QUFDOUQscUNBQWlEO0FBQ2pELHlDQUE2RTtBQUM3RSxtQ0FBMEQ7QUFFMUQsS0FBSyxVQUFVLG9CQUFvQixDQUFDLGNBQW1DO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxjQUFjLElBQUksRUFBRSxFQUFFLENBQUM7SUFFeEcsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0QsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBYSxHQUFHLGNBQWMsQ0FBQyxHQUFHLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMzRyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FDcEI7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsR0FBRyxzQ0FBc0MsQ0FBQyxDQUFDO0tBQzFFO0lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxlQUFLLENBQUMsR0FBRyxDQUFpQixHQUFHLGNBQWMsQ0FBQyxHQUFHLDJCQUEyQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3RyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBQSxtQkFBYyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVELEtBQUssVUFBVSxv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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;AAOjC,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"}
@@ -47,3 +47,4 @@ async function compileSfcSource(sfcBlock, sourceId) {
47
47
  return compiledFilePath;
48
48
  }
49
49
  exports.compileSfcSource = compileSfcSource;
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb21waWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLGdEQUF3QjtBQUN4Qiw0REFBNEI7QUFDNUIsb0RBQTBDO0FBRTFDLG1DQUFtRDtBQUVuRCxTQUFTLG1CQUFtQixDQUFDLFNBQTJCO0lBQ3RELE9BQU8sdURBQXVELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQzVILENBQUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FDakMsVUFBa0IsRUFDbEIsT0FLQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxFQUFFLGdCQUFnQixJQUFJLGNBQWMsQ0FBQztJQUNyRSxNQUFNLGdCQUFnQixHQUFHLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxjQUFjLENBQUM7SUFFckUsSUFBSSxPQUFPLEVBQUUsVUFBVSxFQUFFO1FBQ3ZCLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxVQUFVLENBQUM7S0FDM0Q7SUFFRCxNQUFNLFVBQVUsR0FBRyxvQkFBRSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUU7UUFDaEQsZUFBZSxFQUFFO1lBQ2YsTUFBTSxFQUFFLG9CQUFFLENBQUMsVUFBVSxDQUFDLFFBQVE7WUFDOUIsTUFBTSxFQUFFLG9CQUFFLENBQUMsWUFBWSxDQUFDLE1BQU07WUFDOUIsZUFBZSxFQUFFLElBQUk7WUFDckIsU0FBUyxFQUFFLElBQUk7WUFDZix1QkFBdUI7WUFDdkIseUJBQXlCO1NBQzFCO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsSUFBQSxjQUFNLEVBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRWpDLE1BQU0sU0FBUyxHQUFxQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6RSxTQUFTLENBQUMsVUFBVSxHQUFHLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO0lBQ2pELFNBQVMsQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7SUFDbEMsU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RCxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLDZCQUE2QixFQUFFLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO0FBQzdGLENBQUM7QUFsQ0Qsa0RBa0NDO0FBRU0sS0FBSyxVQUFVLGdCQUFnQixDQUFDLFFBQWtCLEVBQUUsUUFBZ0I7SUFDekUsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxJQUFJLENBQUMsVUFBVTtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLFFBQVEsaUJBQWlCLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUU3RyxNQUFNLGdCQUFnQixHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsc0JBQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxLQUFLLENBQUMsQ0FBQztJQUNoSCxNQUFNLGdCQUFnQixHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsc0JBQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRixNQUFNLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBRS9ILE1BQU0sSUFBQSx3QkFBZ0IsRUFBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsT0FBTyxnQkFBZ0IsQ0FBQztBQUMxQixDQUFDO0FBVkQsNENBVUMifQ==
@@ -0,0 +1,55 @@
1
+ /// <reference types="node" />
2
+ export declare const METADATA = "metadata";
3
+ export declare const SFC_EXT = "vue";
4
+ export declare type SfcIdentity = {
5
+ folder: string;
6
+ name: string;
7
+ blockTypeName: string;
8
+ ext: string;
9
+ fullName: string;
10
+ filePath: string;
11
+ };
12
+ export declare function parseSfcIdentity(filePath: string): SfcIdentity;
13
+ export declare function serializeSfcIdentity(identity: SfcIdentity): string;
14
+ declare type EmptyObject = {
15
+ [K in string]: never;
16
+ };
17
+ declare const LANG_TAG_MAP: {
18
+ html: string;
19
+ pug: string;
20
+ js: string;
21
+ jsx: string;
22
+ ts: string;
23
+ tsx: string;
24
+ css: string;
25
+ scss: string;
26
+ less: string;
27
+ sass: string;
28
+ stylus: string;
29
+ text: string;
30
+ };
31
+ export declare type SfcSource = {
32
+ source: string;
33
+ lang: keyof typeof LANG_TAG_MAP | string | undefined;
34
+ lineOffset?: number;
35
+ };
36
+ export declare type SfcBlock = {
37
+ identity: SfcIdentity;
38
+ } & ({
39
+ metadata: Record<string, unknown>;
40
+ jsons: Record<string, unknown>;
41
+ sources: Record<string, SfcSource>;
42
+ rawContent: null;
43
+ } | {
44
+ metadata: EmptyObject;
45
+ jsons: EmptyObject;
46
+ sources: EmptyObject;
47
+ rawContent: Buffer;
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":";AAUA,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,OAAO,QAAQ,CAAC;AAG7B,oBAAY,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IAEZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAoB9D;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAElE;AAED,aAAK,WAAW,GAAG;KAChB,CAAC,IAAI,MAAM,GAAG,KAAK;CACrB,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;;;CAajB,CAAC;AAEF,oBAAY,SAAS,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtH,oBAAY,QAAQ,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,GAAG,CAC/C;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;AAMF,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAsEpE;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAuBnF"}
package/dist/utils/sfc.js CHANGED
@@ -169,3 +169,4 @@ function serializeSfc(block) {
169
169
  return { filePath, content: Buffer.from(content, 'utf-8') };
170
170
  }
171
171
  exports.serializeSfc = serializeSfc;
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ZjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3NmYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLCtEQUFpRDtBQUVqRCxrRkFBOEM7QUFDOUMsa0RBQTBCO0FBQzFCLG9EQUF1QjtBQUN2QixnREFBd0I7QUFDeEIsd0RBQTZDO0FBQzdDLG1DQUEyRTtBQUU5RCxRQUFBLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDdEIsUUFBQSxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQzdCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBWWhDLFNBQWdCLGdCQUFnQixDQUFDLFFBQWdCO0lBQy9DLGlKQUFpSjtJQUNqSixNQUFNLGNBQWMsR0FBRyxjQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDdkMsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEMsTUFBTSxNQUFNLEdBQUcsY0FBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN6RixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxQyxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekQsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FB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
@@ -0,0 +1,16 @@
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 assert(value: unknown, message?: string): asserts value;
6
+ export declare function escapeCloseTag(str: string, tag: string): string;
7
+ export declare function unescapeCloseTag(str: string, tag: string): string;
8
+ export declare function escapeHtmlAttr(str: string): string;
9
+ export declare function listFilesRecursive(dir: string): Promise<string[]>;
10
+ export declare function isFile(filePath: string): Promise<boolean>;
11
+ export declare function isDirectory(dirPath: string): Promise<boolean>;
12
+ export declare function writeFileMakeDir(filePath: string, data: string | NodeJS.ArrayBufferView | Iterable<string | NodeJS.ArrayBufferView> | AsyncIterable<string | NodeJS.ArrayBufferView> | Stream, options?: (ObjectEncodingOptions & {
13
+ mode?: Mode | undefined;
14
+ flag?: OpenMode | undefined;
15
+ } & Abortable) | BufferEncoding | null): Promise<void>;
16
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -57,3 +57,4 @@ async function writeFileMakeDir(filePath, data, options) {
57
57
  await fs_1.promises.writeFile(filePath, data, options);
58
58
  }
59
59
  exports.writeFileMakeDir = writeFileMakeDir;
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkJBQW9DO0FBQ3BDLG9EQUF1QjtBQUl2QixnREFBd0I7QUFFeEIsU0FBZ0IsTUFBTSxDQUFDLEtBQWMsRUFBRSxPQUFPLEdBQUcsdUJBQXVCO0lBQ3RFLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzFCO0FBQ0gsQ0FBQztBQUpELHdCQUlDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLEdBQVcsRUFBRSxHQUFXO0lBQ3JELE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRkQsd0NBRUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxHQUFXLEVBQUUsR0FBVztJQUN2RCxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUZELDRDQUVDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLEdBQVc7SUFDeEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN4RyxDQUFDO0FBRkQsd0NBRUM7QUFFTSxLQUFLLFVBQVUsa0JBQWtCLENBQUMsR0FBVztJQUNsRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQXFCLEVBQUU7UUFDN0MsTUFBTSxTQUFTLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyxDQUFDLE1BQU0sYUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0YsT0FBTyxnQkFBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBVkQsZ0RBVUM7QUFFTSxLQUFLLFVBQVUsTUFBTSxDQUFDLFFBQWdCO0lBQzNDLElBQUk7UUFDRixPQUFPLENBQUMsTUFBTSxhQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7S0FDM0M7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBTkQsd0JBTUM7QUFFTSxLQUFLLFVBQVUsV0FBVyxDQUFDLE9BQWU7SUFDL0MsSUFBSTtRQUNGLE9BQU8sQ0FBQyxNQUFNLGFBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUMvQztJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUM7QUFORCxrQ0FNQztBQUVNLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsUUFBZ0IsRUFDaEIsSUFLVSxFQUNWLE9BTVE7SUFFUixNQUFNLGFBQUUsQ0FBQyxLQUFLLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVELE1BQU0sYUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFsQkQsNENBa0JDIn0=
@@ -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,CAuC5D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,YAAY,CAc1D"}
package/dist/utils/v3.js CHANGED
@@ -95,3 +95,4 @@ function convertSfcToV3(sfc) {
95
95
  return block;
96
96
  }
97
97
  exports.convertSfcToV3 = convertSfcToV3;
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdjMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBU0EsTUFBTSxhQUFhLEdBQTJCO0lBQzVDLFFBQVE7SUFDUixRQUFRLEVBQUUsTUFBTTtJQUNoQixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxNQUFNO0lBQ2IsTUFBTSxFQUFFLE1BQU07SUFDZCxNQUFNLEVBQUUsTUFBTTtJQUNkLEtBQUssRUFBRSxNQUFNO0lBQ2IsVUFBVTtJQUNWLGFBQWEsRUFBRSxJQUFJO0lBQ25CLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLGFBQWEsRUFBRSxJQUFJO0lBQ25CLHVCQUF1QixFQUFFLElBQUk7SUFDN0IsR0FBRyxFQUFFLEtBQUs7SUFDVixhQUFhLEVBQUUsSUFBSTtJQUNuQixPQUFPLEVBQUUsS0FBSztJQUNkLGlCQUFpQixFQUFFLElBQUk7SUFDdkIsTUFBTSxFQUFFLElBQUk7SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLFFBQVEsRUFBRSxJQUFJO0lBQ2QsY0FBYyxFQUFFLElBQUk7SUFDcEIscUJBQXFCLEVBQUUsSUFBSTtJQUMzQiw2QkFBNkI7SUFDN0IsaUJBQWlCO0lBQ2pCLElBQUksRUFBRSxRQUFRO0lBQ2QsSUFBSSxFQUFFLFFBQVE7SUFDZCxNQUFNLEVBQUUsUUFBUTtJQUNoQixrQ0FBa0M7SUFDbEMsR0FBRyxFQUFFLFFBQVE7SUFDYixPQUFPLEVBQUUsUUFBUTtJQUNqQixXQUFXLEVBQUUsUUFBUTtJQUNyQixTQUFTLEVBQUUsUUFBUTtJQUNuQixTQUFTLEVBQUUsUUFBUTtJQUNuQixTQUFTLEVBQUUsUUFBUTtJQUNuQixTQUFTLEVBQUUsUUFBUTtJQUNuQixtREFBbUQ7Q0FDcEQsQ0FBQztBQUVGLFNBQWdCLGNBQWMsQ0FBQyxLQUFtQjtJQUNoRCxNQUFNLEdBQUcsR0FBYTtRQUNwQixRQUFRLEVBQUU7WUFDUixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLGFBQWEsRUFBRSxLQUFLLENBQUMsSUFBSTtZQUN6QixHQUFHLEVBQUUsS0FBSztZQUNWLFFBQVEsRUFBRSxFQUFFO1lBQ1osUUFBUSxFQUFFLEVBQUU7U0FDYjtRQUNELFFBQVEsRUFBRSxFQUFFO1FBQ1osS0FBSyxFQUFFLEVBQUU7UUFDVCxPQUFPLEVBQUUsRUFBRTtRQUNYLFVBQVUsRUFBRSxJQUFJO0tBQ2pCLENBQUM7SUFDRixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNqRCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDO1FBRWxELFFBQVEsT0FBTyxFQUFFO1lBQ2YsS0FBSyxNQUFNO2dCQUNULElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7b0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsSUFBSSxXQUFXLENBQUMsQ0FBQztnQkFDNUgsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDM0IsTUFBTTtZQUNSO2dCQUNFLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtvQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixJQUFJLFdBQVcsQ0FBQyxDQUFDO2dCQUMxRixHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQ3JELE1BQU07U0FDVDtLQUNGO0lBRUQsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ2IsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ2hEO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBdkNELHdDQXVDQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxHQUFhO0lBQzFDLE1BQU0sS0FBSyxHQUFpQjtRQUMxQixJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJO1FBQ3ZCLElBQUksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWE7UUFDaEMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTTtRQUMzQixHQUFHLEdBQUcsQ0FBQyxRQUFRO1FBQ2YsR0FBRyxHQUFHLENBQUMsS0FBSztLQUNiLENBQUM7SUFFRixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDdEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7S0FDM0I7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFkRCx3Q0FjQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marsx-dev/launcher",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
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
  ],
@@ -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();
@@ -0,0 +1,141 @@
1
+ import chalk from 'chalk';
2
+ import { spawnSync } from 'child_process';
3
+ import { randomBytes } from 'crypto';
4
+ import path from 'path';
5
+ import { Configuration } from '../configuration';
6
+ import { assert, isDirectory, writeFileMakeDir } from '../utils/utils';
7
+ import { CliError } from './index';
8
+
9
+ const FASTIFY_DEPS = [
10
+ '@fastify/session',
11
+ 'fastify',
12
+ 'fastify-accepts',
13
+ 'fastify-compress',
14
+ 'fastify-cookie',
15
+ 'fastify-cors',
16
+ 'fastify-csrf',
17
+ 'fastify-flash',
18
+ 'fastify-formbody',
19
+ 'fastify-helmet',
20
+ 'fastify-multipart',
21
+ 'fastify-request-context',
22
+ 'fastify-static',
23
+ 'fastify-websocket',
24
+ ];
25
+
26
+ const COMMON_DEPS = [
27
+ '@marsx-dev/launcher',
28
+ 'aws-sdk',
29
+ 'axios',
30
+ 'azure-storage',
31
+ 'base-x',
32
+ 'bcrypt',
33
+ 'chokidar',
34
+ 'lodash',
35
+ 'mongodb4@npm:mongodb@4',
36
+ 'mongodb3@npm:mongodb@3',
37
+ 'typescript',
38
+ 'uuid',
39
+ 'xxhash',
40
+ ];
41
+
42
+ const V3_DEPS = [
43
+ 'babel-core',
44
+ 'babel-plugin-transform-react-jsx',
45
+ 'config',
46
+ 'crypto-js',
47
+ 'jsonwebtoken',
48
+ 'mobile-detect',
49
+ 'moment-timezone',
50
+ 'route-pattern',
51
+ 'route-sort',
52
+ ];
53
+
54
+ const DEFAULT_DEPS = [...FASTIFY_DEPS, ...COMMON_DEPS, ...V3_DEPS];
55
+
56
+ const DEMO_BOOTER = `<json id='metadata'>
57
+ {"version": 4, "restartOnChange": true}
58
+ </json>
59
+
60
+
61
+ <script id='BlockFunction' lang='tsx'>
62
+ export default async () => {
63
+ console.log('MarsX loaded!')
64
+ };
65
+ </script>`;
66
+
67
+ export async function initProject(projectName: string) {
68
+ if (!projectName.match(/^\w+$/) || projectName !== projectName.toLowerCase()) {
69
+ throw new CliError(
70
+ `Project name "${projectName}" may contain only lower case alphanumeric characters and underscores (eg. my_project_name)`,
71
+ );
72
+ }
73
+
74
+ const projectDir = path.resolve(projectName);
75
+
76
+ if (await isDirectory(projectDir)) {
77
+ throw new CliError(`Project dir "${projectName}" already exist. Delete it or choose a different name.`);
78
+ }
79
+
80
+ console.log(`Creating a new MarsX project in ${chalk.green(projectDir)}`);
81
+
82
+ const packageJson = {
83
+ name: projectName,
84
+ version: '0.0.0',
85
+ private: true,
86
+ scripts: {
87
+ start: 'marsx start',
88
+ },
89
+ dependencies: {},
90
+ };
91
+ const packageJsonStr = JSON.stringify(packageJson, null, 2);
92
+ await writeFileMakeDir(path.join(projectDir, 'package.json'), packageJsonStr);
93
+
94
+ const config: Configuration = {
95
+ production: false,
96
+ port: 3000,
97
+ blocksDir: 'blocks',
98
+ cacheDir: '.cache',
99
+ mongoConn: '<CONN_STR>',
100
+ mongoDbName: projectName,
101
+ azureStorageConnection: '<CONN_STR>',
102
+ azureStorageAccountName: projectName,
103
+ azureStorageUrl: `https://${projectName}.blob.core.windows.net`,
104
+ webFilesTable: 'webFiles',
105
+ webRecentFilesTable: 'webRecentFiles',
106
+ webFilesBlob: 'web-files',
107
+ secret: (await randomBytes(48)).toString('hex'),
108
+ importProjects: [
109
+ {
110
+ name: 'mars-ide',
111
+ url: 'https://ide.marscloud.dev',
112
+ api_key: '<API_KEY>',
113
+ git_commit_ish: 'main',
114
+ },
115
+ ],
116
+ };
117
+
118
+ await writeFileMakeDir(path.join(projectDir, 'config', 'default.json'), JSON.stringify(config, null, 2));
119
+ await writeFileMakeDir(path.join(projectDir, '.gitignore'), 'node_modules\ndist\n.cache\n');
120
+
121
+ await writeFileMakeDir(path.join(projectDir, 'blocks', 'Booter.service.vue'), DEMO_BOOTER);
122
+
123
+ function run(...args: string[]) {
124
+ const cmd = args[0];
125
+ assert(cmd);
126
+ spawnSync(cmd, args.slice(1), { cwd: projectDir, stdio: 'inherit' });
127
+ }
128
+ console.log('Installing dependencies. This might take a couple of minutes.');
129
+ run('npm', 'i', ...DEFAULT_DEPS);
130
+
131
+ run('git', 'init');
132
+ run('git', 'add', '.gitignore');
133
+ run('git', 'add', '-A');
134
+ run('git', 'commit', '-m', 'Initial commit');
135
+ console.log('Initialized git repository and created initial commit.');
136
+
137
+ console.log(chalk.yellow(`\nMake sure to update parameters in config/default.json`));
138
+
139
+ console.log(`${chalk.green('Success!')} Created ${projectName} at ${projectDir}`);
140
+ console.log(chalk.dim(`\nInside that directory, you can start MarsX with\n\n cd ${projectName}\n npm run start\n`));
141
+ }
@@ -0,0 +1,23 @@
1
+ import chalk from 'chalk';
2
+ import { MongoClient } from 'mongodb';
3
+ import path from 'path';
4
+ import { config } from '../configuration';
5
+ import { serializeSfc } from '../utils/sfc';
6
+ import { writeFileMakeDir } from '../utils/utils';
7
+ import { convertV3ToSfc, V3MongoBlock } from '../utils/v3';
8
+
9
+ export async function migrateV3ToV4() {
10
+ console.log('Connecting to MongoDB...');
11
+ const mongoConn = await new MongoClient(config.mongoConn).connect();
12
+ const db = mongoConn.db(config.mongoDbName);
13
+ const allBlocks = await db.collection<V3MongoBlock>('blocks').find().toArray();
14
+ console.log(`Downloaded ${allBlocks.length} block(s)`);
15
+
16
+ for (const block of allBlocks) {
17
+ const serialized = serializeSfc(convertV3ToSfc(block));
18
+ await writeFileMakeDir(path.join(config.blocksDir, serialized.filePath), serialized.content);
19
+ console.log(`Saved ${serialized.filePath}`);
20
+ }
21
+
22
+ console.log(chalk.green('\nMigration complete successfully!'));
23
+ }
@@ -0,0 +1,34 @@
1
+ import child_process from 'child_process';
2
+ import { config } from '../configuration';
3
+ import { launchBooter } from '../launcher';
4
+ import { assert } from '../utils/utils';
5
+
6
+ export const RESTART_EXIT_CODe = 9;
7
+
8
+ export const start = async () => {
9
+ if (config.production || process.env['MARSX_NO_SPAWN']) {
10
+ console.log(`MarsX process ${process.pid} starting...`);
11
+ await launchBooter();
12
+ console.log(`MarsX process ${process.pid} started`);
13
+ } else {
14
+ const spawnChildProc = () => {
15
+ assert(process.argv[0]);
16
+ const child = child_process.spawn(process.argv[0], ['--inspect', '--enable-source-maps', ...process.argv.slice(1)], {
17
+ cwd: process.cwd(),
18
+ env: { ...process.env, MARSX_NO_SPAWN: 'true' },
19
+ stdio: 'inherit',
20
+ });
21
+
22
+ child.on('close', (code: number) => {
23
+ console.log(`MarsX process ${child.pid} terminated with ${code}`);
24
+ if (code === RESTART_EXIT_CODe) {
25
+ setTimeout(spawnChildProc, 100);
26
+ } else {
27
+ process.exit(code);
28
+ }
29
+ });
30
+ };
31
+
32
+ spawnChildProc();
33
+ }
34
+ };
@@ -0,0 +1,53 @@
1
+ process.env['SUPPRESS_NO_CONFIG_WARNING'] = 'true';
2
+ import configModule from 'config';
3
+ import path from 'path';
4
+ import { assert } from './utils/utils';
5
+
6
+ export interface ImportProjectConfig {
7
+ name: string;
8
+ url: string;
9
+ api_key: string;
10
+ git_commit_ish?: string | undefined;
11
+ }
12
+
13
+ const ensureType =
14
+ <T>(typeName: string) =>
15
+ (configName: string): T => {
16
+ const value = configModule.get(configName);
17
+ assert(typeof value === typeName);
18
+ return value as T;
19
+ };
20
+
21
+ const ensureString = ensureType<string>('string');
22
+ const ensureBoolean = ensureType<boolean>('boolean');
23
+ const ensureNumber = ensureType<number>('number');
24
+
25
+ function validatedConfig() {
26
+ if (configModule.util.getConfigSources().length === 0) {
27
+ return new Proxy({} as never, {
28
+ get() {
29
+ throw new Error('Config file not found, ensure you have "config/default.json" file.');
30
+ },
31
+ });
32
+ }
33
+
34
+ return {
35
+ production: ensureBoolean('production'),
36
+ port: ensureNumber('port'),
37
+ blocksDir: path.resolve(ensureString('blocksDir')),
38
+ cacheDir: path.resolve(ensureString('cacheDir')),
39
+ mongoConn: ensureString('mongoConn'),
40
+ mongoDbName: ensureString('mongoDbName'),
41
+ azureStorageConnection: ensureString('azureStorageConnection'),
42
+ azureStorageAccountName: ensureString('azureStorageAccountName'),
43
+ azureStorageUrl: ensureString('azureStorageUrl'),
44
+ secret: ensureString('secret'),
45
+ webFilesTable: ensureString('webFilesTable'),
46
+ webRecentFilesTable: ensureString('webRecentFilesTable'),
47
+ webFilesBlob: ensureString('webFilesBlob'),
48
+ importProjects: configModule.get<ImportProjectConfig[]>('importProjects'),
49
+ };
50
+ }
51
+
52
+ export const config = validatedConfig();
53
+ export type Configuration = typeof config;
package/src/index.ts ADDED
@@ -0,0 +1,5 @@
1
+ export { config, ImportProjectConfig, Configuration } from './configuration';
2
+ export { compileSfcSource, transpileTypescript } from './utils/compile';
3
+ export { parseSFC, serializeSfc, SfcBlock, SfcIdentity, SfcSource, parseSfcIdentity, serializeSfcIdentity } from './utils/sfc';
4
+ export * as utils from './utils/utils';
5
+ export { convertSfcToV3, convertV3ToSfc, V3MongoBlock } from './utils/v3';
@@ -0,0 +1,38 @@
1
+ import { config } from './configuration';
2
+ import { loadAllBlocks } from './loader';
3
+ import { compileSfcSource, transpileTypescript } from './utils/compile';
4
+ import { parseSFC, serializeSfc } from './utils/sfc';
5
+ import { assert, writeFileMakeDir } from './utils/utils';
6
+ import { convertSfcToV3, convertV3ToSfc } from './utils/v3';
7
+
8
+ const LAUNCHER_UTILS = {
9
+ config,
10
+ parseSFC,
11
+ serializeSfc,
12
+ convertV3ToSfc,
13
+ convertSfcToV3,
14
+ transpileTypescript,
15
+ compileSfcSource,
16
+ writeFileMakeDir,
17
+ };
18
+
19
+ export async function launchBooter(booterBlockName = 'Booter') {
20
+ const allBlocks = await loadAllBlocks();
21
+
22
+ const booterBlocks = allBlocks.filter(b => b.identity.name === booterBlockName);
23
+ if (booterBlocks.length === 0)
24
+ throw new Error(`Booter block ${booterBlockName} not found. Ensure you have it locally or it is imported.`);
25
+
26
+ // Take last because order of imports matter and local blocks always override imported.
27
+ const booterBlock = booterBlocks[booterBlocks.length - 1];
28
+ assert(booterBlock);
29
+
30
+ const compiledBooterPath = await compileSfcSource(booterBlock, 'BlockFunction');
31
+ try {
32
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
33
+ await require(compiledBooterPath).default(allBlocks, LAUNCHER_UTILS);
34
+ } catch (e) {
35
+ console.error('Booter failed with:', e);
36
+ process.exit(1);
37
+ }
38
+ }
package/src/loader.ts ADDED
@@ -0,0 +1,65 @@
1
+ import axios from 'axios';
2
+ import crypto from 'crypto';
3
+ import { promises as fs } from 'fs';
4
+ import stringify from 'json-stable-stringify';
5
+ import _ from 'lodash';
6
+ import path from 'path';
7
+ import { config, ImportProjectConfig } from './configuration';
8
+ import { parseSFC, SfcBlock } from './utils/sfc';
9
+ import { isFile, listFilesRecursive, writeFileMakeDir } from './utils/utils';
10
+ import { convertV3ToSfc, V3MongoBlock } from './utils/v3';
11
+
12
+ async function downloadFromExternal(externalImport: ImportProjectConfig): Promise<SfcBlock[]> {
13
+ const params = { api_key: externalImport.api_key, git_commit_ish: externalImport.git_commit_ish || '' };
14
+
15
+ console.log(`Downloading blocks from ${externalImport.url}`);
16
+ try {
17
+ const v4Resp = await axios.get<SfcBlock[]>(`${externalImport.url}/api/GetExportedAppBlocksV4`, { params });
18
+ return v4Resp.data;
19
+ } catch (e) {
20
+ console.log(`${externalImport.url} does not support V4, fallback to V3`);
21
+ }
22
+
23
+ const v3Resp = await axios.get<V3MongoBlock[]>(`${externalImport.url}/api/GetExportedAppBlocks`, { params });
24
+ return v3Resp.data.map(b => convertV3ToSfc(b));
25
+ }
26
+
27
+ async function loadCachedOrDownload(externalImport: ImportProjectConfig): Promise<SfcBlock[]> {
28
+ const hash = crypto.createHash('md5').update(stringify(externalImport)).digest('hex');
29
+ const cacheFileName = `${externalImport.name}_${externalImport.git_commit_ish}_${hash}.json`.replace(/[^\w.]+/g, '_');
30
+ const cacheFilePath = path.join(config.cacheDir, 'imports', cacheFileName);
31
+
32
+ if (await isFile(cacheFilePath)) {
33
+ const content = await fs.readFile(cacheFilePath);
34
+ console.log(`Loading cached blocks from ${externalImport.url}`);
35
+ return JSON.parse(content.toString('utf-8'));
36
+ }
37
+
38
+ const data = await downloadFromExternal(externalImport);
39
+ console.log(`Downloaded ${data.length} blocks from ${externalImport.url}`);
40
+
41
+ await writeFileMakeDir(cacheFilePath, JSON.stringify(data, null, 2), 'utf-8');
42
+ return data;
43
+ }
44
+
45
+ async function downloadAll(externalImports: ImportProjectConfig[]) {
46
+ const responses = await Promise.all(externalImports.map(loadCachedOrDownload));
47
+ return _.flatten(responses);
48
+ }
49
+
50
+ async function readBlockFile(blocksDir: string, filePath: string): Promise<SfcBlock> {
51
+ const content = await fs.readFile(filePath);
52
+ const relPath = path.relative(blocksDir, filePath);
53
+ return parseSFC(relPath, content);
54
+ }
55
+
56
+ async function readBlockFiles(blocksDir: string) {
57
+ const files = await listFilesRecursive(blocksDir);
58
+ return await Promise.all(files.filter(f => !path.basename(f).startsWith('.')).map(f => readBlockFile(blocksDir, f)));
59
+ }
60
+
61
+ export async function loadAllBlocks(): Promise<SfcBlock[]> {
62
+ const externalBlocks = await downloadAll(config.importProjects);
63
+ const localBlocks = await readBlockFiles(config.blocksDir);
64
+ return [...externalBlocks, ...localBlocks];
65
+ }
@@ -0,0 +1,58 @@
1
+ import { SourceMapPayload } from 'module';
2
+ import path from 'path';
3
+ import ts from 'typescript';
4
+ import { config } from '../configuration';
5
+ import { SfcBlock } from './sfc';
6
+ import { assert, writeFileMakeDir } from './utils';
7
+
8
+ function genSourceMapComment(sourceMap: SourceMapPayload): string {
9
+ return `\n//# sourceMappingURL=data:application/json;base64,${Buffer.from(JSON.stringify(sourceMap)).toString('base64')}`;
10
+ }
11
+
12
+ export function transpileTypescript(
13
+ sourceCode: string,
14
+ options?: {
15
+ sourceRoot?: string;
16
+ originalFilePath?: string;
17
+ compiledFilePath?: string;
18
+ lineOffset?: number | undefined;
19
+ },
20
+ ): string {
21
+ const compiledFilePath = options?.compiledFilePath || '<UNKNOWN>.js';
22
+ const originalFilePath = options?.originalFilePath || '<UNKNOWN>.ts';
23
+
24
+ if (options?.lineOffset) {
25
+ sourceCode = '\n'.repeat(options.lineOffset) + sourceCode;
26
+ }
27
+
28
+ const transpiled = ts.transpileModule(sourceCode, {
29
+ compilerOptions: {
30
+ module: ts.ModuleKind.CommonJS,
31
+ target: ts.ScriptTarget.Latest,
32
+ esModuleInterop: true,
33
+ sourceMap: true,
34
+ // inlineSources: true,
35
+ // inlineSourceMap: true,
36
+ },
37
+ });
38
+ assert(transpiled.sourceMapText);
39
+
40
+ const sourceMap: SourceMapPayload = JSON.parse(transpiled.sourceMapText);
41
+ sourceMap.sourceRoot = options?.sourceRoot || '';
42
+ sourceMap.file = compiledFilePath;
43
+ sourceMap.sources = [originalFilePath];
44
+ const sourceMapComment = genSourceMapComment(sourceMap);
45
+ return transpiled.outputText.replace(/\n\/\/# sourceMappingURL=.+/, '') + sourceMapComment;
46
+ }
47
+
48
+ export async function compileSfcSource(sfcBlock: SfcBlock, sourceId: string): Promise<string> {
49
+ const sourceCode = sfcBlock.sources[sourceId];
50
+ if (!sourceCode) throw new Error(`Source code block ${sourceId} not found in ${sfcBlock.identity.filePath}`);
51
+
52
+ const compiledFilePath = path.join(config.cacheDir, 'compiled', `${sfcBlock.identity.filePath}.${sourceId}.js`);
53
+ const originalFilePath = path.join(config.blocksDir, sfcBlock.identity.filePath);
54
+ const code = transpileTypescript(sourceCode.source, { compiledFilePath, originalFilePath, lineOffset: sourceCode.lineOffset });
55
+
56
+ await writeFileMakeDir(compiledFilePath, code, 'utf-8');
57
+ return compiledFilePath;
58
+ }
@@ -0,0 +1,178 @@
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 JSON5 from 'json5';
6
+ import _ from 'lodash';
7
+ import path from 'path';
8
+ import prettier, { Options } from 'prettier';
9
+ import { escapeCloseTag, escapeHtmlAttr, unescapeCloseTag } from './utils';
10
+
11
+ export const METADATA = 'metadata';
12
+ export const SFC_EXT = 'vue';
13
+ const SAVE_EMPTY_SOURCES = true;
14
+
15
+ export type SfcIdentity = {
16
+ folder: string;
17
+ name: string;
18
+ blockTypeName: string;
19
+ ext: string;
20
+ // Derived
21
+ fullName: string;
22
+ filePath: string;
23
+ };
24
+
25
+ export function parseSfcIdentity(filePath: string): SfcIdentity {
26
+ // Blog/BlogPost.page.vue => {id: "BlogPost.page", folder:"Blog", name: "BlogPost", blockTypeName: "page", ext: "vue", fullName: "Blog.BlogPost"}
27
+ const originalParsed = path.parse(filePath);
28
+ const withoutExt = originalParsed.name;
29
+ const ext = originalParsed.ext.slice(1);
30
+
31
+ const parsed = path.parse(withoutExt);
32
+ if (!parsed.name || !parsed.ext) throw new Error(`Invalid block file path: ${filePath}`);
33
+ const blockTypeName = parsed.ext.slice(1);
34
+
35
+ const namespace = originalParsed.dir.replace(/\//g, '.');
36
+ const fullName = namespace.length > 0 ? `${namespace}.${parsed.name}` : parsed.name;
37
+ return {
38
+ folder: originalParsed.dir,
39
+ name: parsed.name,
40
+ blockTypeName,
41
+ ext,
42
+ fullName,
43
+ filePath,
44
+ };
45
+ }
46
+
47
+ export function serializeSfcIdentity(identity: SfcIdentity): string {
48
+ return path.join(identity.folder, `${identity.name}.${identity.blockTypeName}.${identity.ext}`);
49
+ }
50
+
51
+ type EmptyObject = {
52
+ [K in string]: never;
53
+ };
54
+
55
+ const LANG_TAG_MAP = {
56
+ html: 'html',
57
+ pug: 'template',
58
+ js: 'script',
59
+ jsx: 'script',
60
+ ts: 'script',
61
+ tsx: 'script',
62
+ css: 'style',
63
+ scss: 'style',
64
+ less: 'style',
65
+ sass: 'style',
66
+ stylus: 'style',
67
+ text: 'text',
68
+ };
69
+
70
+ export type SfcSource = { source: string; lang: keyof typeof LANG_TAG_MAP | string | undefined; lineOffset?: number };
71
+
72
+ export type SfcBlock = { identity: SfcIdentity } & (
73
+ | { metadata: Record<string, unknown>; jsons: Record<string, unknown>; sources: Record<string, SfcSource>; rawContent: null }
74
+ | { metadata: EmptyObject; jsons: EmptyObject; sources: EmptyObject; rawContent: Buffer }
75
+ );
76
+
77
+ function getNodeAttr(node: CompilerDOM.ElementNode, attr: string) {
78
+ return node.props.map(p => (p.name == attr && p.type === NodeTypes.ATTRIBUTE ? p.value?.content : undefined)).find(p => !!p);
79
+ }
80
+
81
+ export function parseSFC(filePath: string, content: Buffer): SfcBlock {
82
+ const identity = parseSfcIdentity(filePath);
83
+ if (identity.ext !== SFC_EXT) {
84
+ return { identity, metadata: {}, jsons: {}, sources: {}, rawContent: content };
85
+ }
86
+
87
+ const errors: (CompilerError | SyntaxError)[] = [];
88
+
89
+ const ast = CompilerDOM.parse(content.toString('utf-8'), {
90
+ // there are no components at SFC parsing level
91
+ isNativeTag: () => true,
92
+ // preserve all whitespaces
93
+ isPreTag: () => true,
94
+ getTextMode: () => TextModes.RAWTEXT,
95
+ onError: e => errors.push(e),
96
+ });
97
+
98
+ const block: SfcBlock = {
99
+ identity: parseSfcIdentity(filePath),
100
+ metadata: {},
101
+ jsons: {},
102
+ sources: {},
103
+ rawContent: null,
104
+ };
105
+ const seenIds = new Set<string>();
106
+
107
+ ast.children.forEach(node => {
108
+ if (node.type === NodeTypes.ELEMENT) {
109
+ const child = node.children.length === 1 ? node.children[0] : null;
110
+ const content = child && child.type === NodeTypes.TEXT ? child.content : null;
111
+
112
+ if (content) {
113
+ const sectionId = getNodeAttr(node, 'id');
114
+
115
+ if (!sectionId) {
116
+ errors.push({ name: `missing-id`, message: `Id property is missing`, code: 0, loc: node.loc });
117
+ return;
118
+ }
119
+ if (seenIds.has(sectionId)) {
120
+ errors.push({ name: `duplicate-id`, message: `Duplicate section id: ${sectionId}`, code: 0, loc: node.loc });
121
+ return;
122
+ }
123
+ seenIds.add(sectionId);
124
+
125
+ if (node.tag === 'json') {
126
+ try {
127
+ const jsonData = JSON5.parse(content);
128
+ if (sectionId === METADATA) {
129
+ block.metadata = jsonData;
130
+ } else {
131
+ block.jsons[sectionId] = jsonData;
132
+ }
133
+ } catch (e) {
134
+ errors.push({ name: 'invalid-json', message: `${e}`, code: 0, loc: node.loc });
135
+ }
136
+ } else {
137
+ const source = unescapeCloseTag(content.slice(1, -1), node.tag);
138
+ const lang = getNodeAttr(node, 'lang');
139
+ const lineOffset = node.loc.start.line;
140
+ block.sources[sectionId] = { source, lang, lineOffset };
141
+ }
142
+ }
143
+ }
144
+ });
145
+
146
+ if (errors.length) {
147
+ throw new Error(`Parsing SFC ${filePath} failed with ${JSON.stringify(errors)}`);
148
+ }
149
+
150
+ return block;
151
+ }
152
+
153
+ const PRETTIER_JSON_CONFIG: Options = { parser: 'json5', printWidth: 120, trailingComma: 'all' };
154
+
155
+ export function serializeSfc(block: SfcBlock): { filePath: string; content: Buffer } {
156
+ const filePath = serializeSfcIdentity(block.identity);
157
+ if (block.identity.ext !== SFC_EXT) {
158
+ if (block.rawContent === null) throw new Error(`SfcBlock must have rawContent if ext!="${SFC_EXT}"`);
159
+ return { filePath, content: block.rawContent };
160
+ }
161
+
162
+ if (block.rawContent !== null) throw new Error(`SfcBlock cannot have rawContent if ext=="${SFC_EXT}"`);
163
+
164
+ let content = '';
165
+
166
+ for (const [name, source] of [[METADATA, block.metadata] as const, ..._.sortBy(Object.entries(block.jsons), e => e[0])]) {
167
+ const jsonStr = prettier.format('(' + stringify(source) + ')', PRETTIER_JSON_CONFIG);
168
+ content += `<json id="${escapeHtmlAttr(name)}">\n${jsonStr}</json>\n\n`;
169
+ }
170
+
171
+ for (const [name, source] of _.sortBy(Object.entries(block.sources), e => e[0])) {
172
+ if (!SAVE_EMPTY_SOURCES && !source.source.trim()) continue;
173
+ const tag = (LANG_TAG_MAP as Record<string, string>)[source.lang || ''] || 'script';
174
+ content += `<${tag} id="${escapeHtmlAttr(name)}" lang="${source.lang}">\n${escapeCloseTag(source.source, tag)}\n</${tag}>\n\n`;
175
+ }
176
+
177
+ return { filePath, content: Buffer.from(content, 'utf-8') };
178
+ }
@@ -0,0 +1,72 @@
1
+ import { promises as fs } from 'fs';
2
+ import _ from 'lodash';
3
+ import { Abortable } from 'node:events';
4
+ import { Mode, ObjectEncodingOptions, OpenMode } from 'node:fs';
5
+ import { Stream } from 'node:stream';
6
+ import path from 'path';
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
+ export async function listFilesRecursive(dir: string): Promise<string[]> {
27
+ const entries = await fs.readdir(dir);
28
+
29
+ const files = await Promise.all(
30
+ entries.map(async (entry): Promise<string[]> => {
31
+ const entryPath = path.resolve(dir, entry);
32
+ return (await fs.stat(entryPath)).isDirectory() ? listFilesRecursive(entryPath) : [entryPath];
33
+ }),
34
+ );
35
+ return _.flatten(files);
36
+ }
37
+
38
+ export async function isFile(filePath: string): Promise<boolean> {
39
+ try {
40
+ return (await fs.stat(filePath)).isFile();
41
+ } catch (e) {
42
+ return false;
43
+ }
44
+ }
45
+
46
+ export async function isDirectory(dirPath: string): Promise<boolean> {
47
+ try {
48
+ return (await fs.stat(dirPath)).isDirectory();
49
+ } catch (e) {
50
+ return false;
51
+ }
52
+ }
53
+
54
+ export async function writeFileMakeDir(
55
+ filePath: string,
56
+ data:
57
+ | string
58
+ | NodeJS.ArrayBufferView
59
+ | Iterable<string | NodeJS.ArrayBufferView>
60
+ | AsyncIterable<string | NodeJS.ArrayBufferView>
61
+ | Stream,
62
+ options?:
63
+ | (ObjectEncodingOptions & {
64
+ mode?: Mode | undefined;
65
+ flag?: OpenMode | undefined;
66
+ } & Abortable)
67
+ | BufferEncoding
68
+ | null,
69
+ ): Promise<void> {
70
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
71
+ await fs.writeFile(filePath, data, options);
72
+ }
@@ -0,0 +1,105 @@
1
+ import { SfcBlock } from './sfc';
2
+
3
+ export type V3MongoBlock = {
4
+ Folder: string;
5
+ Name: string;
6
+ Type: string;
7
+ app?: { name: string };
8
+ } & Record<string, unknown>;
9
+
10
+ const SFC_FIELD_MAP: Record<string, string> = {
11
+ // JSONs
12
+ DataArgs: 'json',
13
+ Page: 'json',
14
+ pages: 'json',
15
+ blocks: 'json',
16
+ Config: 'json',
17
+ langs: 'json',
18
+ // Scripts
19
+ BlockFunction: 'ts',
20
+ Html: 'html',
21
+ HTML: 'html',
22
+ Jsx: 'tsx',
23
+ JsxTranspiled: 'js',
24
+ JsxTranspiledTranspiled: 'js',
25
+ JSX: 'tsx',
26
+ JSXTranspiled: 'js',
27
+ DemoJsx: 'tsx',
28
+ DemoJsxTranspiled: 'js',
29
+ Script: 'ts',
30
+ Css: 'css',
31
+ TestCode: 'ts',
32
+ JestDefinition: 'ts',
33
+ DataForScriptFunction: 'ts',
34
+ // Ignore (part of file path)
35
+ // _id: 'DELETE',
36
+ Name: 'DELETE',
37
+ Type: 'DELETE',
38
+ Folder: 'DELETE',
39
+ // Ignore (will be tracked by git)
40
+ app: 'DELETE',
41
+ Created: 'DELETE',
42
+ LastChanged: 'DELETE',
43
+ createdAt: 'DELETE',
44
+ createdBy: 'DELETE',
45
+ updatedAt: 'DELETE',
46
+ updatedBy: 'DELETE',
47
+ // ... rest of the fields will be saved in metadata
48
+ };
49
+
50
+ export function convertV3ToSfc(block: V3MongoBlock): SfcBlock {
51
+ const sfc: SfcBlock = {
52
+ identity: {
53
+ folder: block.Folder,
54
+ name: block.Name,
55
+ blockTypeName: block.Type,
56
+ ext: 'vue',
57
+ fullName: '',
58
+ filePath: '',
59
+ },
60
+ metadata: {},
61
+ jsons: {},
62
+ sources: {},
63
+ rawContent: null,
64
+ };
65
+ for (const [prop, value] of Object.entries(block)) {
66
+ const sfcLang = SFC_FIELD_MAP[prop] || 'METADATA';
67
+
68
+ switch (sfcLang) {
69
+ case 'json':
70
+ if (typeof value !== 'object' && !Array.isArray(value)) throw new Error(`Object or array is expected for ${prop} property`);
71
+ sfc.jsons[prop] = value;
72
+ break;
73
+ case 'DELETE':
74
+ break;
75
+ case 'METADATA':
76
+ sfc.metadata[prop] = value;
77
+ break;
78
+ default:
79
+ if (typeof value !== 'string') throw new Error(`String is expected for ${prop} property`);
80
+ sfc.sources[prop] = { source: value, lang: sfcLang };
81
+ break;
82
+ }
83
+ }
84
+
85
+ if (block.app) {
86
+ sfc.metadata['app'] = { name: block.app.name };
87
+ }
88
+ return sfc;
89
+ }
90
+
91
+ export function convertSfcToV3(sfc: SfcBlock): V3MongoBlock {
92
+ const block: V3MongoBlock = {
93
+ Name: sfc.identity.name,
94
+ Type: sfc.identity.blockTypeName,
95
+ Folder: sfc.identity.folder,
96
+ ...sfc.metadata,
97
+ ...sfc.jsons,
98
+ };
99
+
100
+ for (const [key, value] of Object.entries(sfc.sources)) {
101
+ block[key] = value.source;
102
+ }
103
+
104
+ return block;
105
+ }