@marsx-dev/launcher 0.0.26 → 0.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAQA,OAAO,EAA0B,QAAQ,EAAE,MAAM,aAAa,CAAC;AAuI/D,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,uBASrD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAKzD"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAQA,OAAO,EAA0B,QAAQ,EAAE,MAAM,aAAa,CAAC;AA4J/D,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,uBASrD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAKzD"}
package/dist/loader.js CHANGED
@@ -16,6 +16,7 @@ const sfc_1 = require("./utils/sfc");
16
16
  const fileUtils_1 = require("./utils/fileUtils");
17
17
  const v3_1 = require("./utils/v3");
18
18
  const IMPORTED_BLOCKS_DIR = '_imported';
19
+ let downloadedExternalBlockNames = new Set();
19
20
  function getImportedBlocksRoot() {
20
21
  return path_1.default.join(configuration_1.config.blocksDir, IMPORTED_BLOCKS_DIR);
21
22
  }
@@ -31,25 +32,38 @@ function isImportedBlockFile(filePath) {
31
32
  function isSettingsBlockFile(filePath) {
32
33
  return path_1.default.parse(filePath).name.endsWith('.settings');
33
34
  }
35
+ function rememberExternalBlocks(blocks) {
36
+ for (const block of blocks) {
37
+ downloadedExternalBlockNames.add(block.path.name);
38
+ }
39
+ }
40
+ function filterFreshExternalBlocks(blocks) {
41
+ const result = [];
42
+ for (const block of blocks) {
43
+ if (downloadedExternalBlockNames.has(block.path.name))
44
+ continue;
45
+ downloadedExternalBlockNames.add(block.path.name);
46
+ result.push(block);
47
+ }
48
+ return result;
49
+ }
34
50
  async function downloadFromExternal(externalImport) {
35
51
  const params = { api_key: externalImport.api_key, git_commit_ish: externalImport.git_commit_ish || '' };
36
52
  const url = lodash_1.default.trimEnd(externalImport.url, '/');
37
53
  console.log(`Downloading blocks from ${url}`);
38
54
  try {
39
55
  const v4Resp = await axios_1.default.get(`${url}/api/GetExportedAppBlocksV4`, { params });
40
- return v4Resp.data;
56
+ return { ...v4Resp.data, blocks: filterFreshExternalBlocks(v4Resp.data.blocks) };
41
57
  }
42
58
  catch (e) {
43
59
  console.log(`${url} does not support V4, fallback to V3`);
44
60
  }
45
61
  const v3Resp = await axios_1.default.get(`${url}/api/GetExportedAppBlocks`, { params });
46
- const v3BlocksAllRaw = v3Resp.data.reverse();
47
- const seenNames = new Set();
48
62
  const v3Blocks = [];
49
- for (const block of v3BlocksAllRaw) {
50
- if (seenNames.has(block.Name))
63
+ for (const block of v3Resp.data.reverse()) {
64
+ if (downloadedExternalBlockNames.has(block.Name))
51
65
  continue;
52
- seenNames.add(block.Name);
66
+ downloadedExternalBlockNames.add(block.Name);
53
67
  v3Blocks.push((0, v3_1.convertV3ToSfc)(block));
54
68
  }
55
69
  return { commit: '', hash: '', blocks: v3Blocks };
@@ -71,22 +85,27 @@ function getImportCacheFilePath(externalImport) {
71
85
  }
72
86
  async function downloadAndSave(externalImport) {
73
87
  const cacheFilePath = getImportCacheFilePath(externalImport);
88
+ let blocks = [];
74
89
  if (await (0, fileUtils_1.isFile)(cacheFilePath)) {
75
90
  const content = await fs_1.promises.readFile(cacheFilePath, 'utf-8');
76
- console.log(`Loading cached blocks from ${externalImport.url}`);
77
- return JSON.parse(content);
91
+ blocks = JSON.parse(content);
92
+ console.log(`Loaded ${blocks.length} cached blocks from ${externalImport.url}`);
93
+ rememberExternalBlocks(blocks);
94
+ }
95
+ else {
96
+ const response = await downloadFromExternal(externalImport);
97
+ blocks = response.blocks;
98
+ console.log(`Downloaded ${blocks.length} blocks from ${externalImport.url}`);
99
+ await (0, fileUtils_1.writeFileMakeDir)(cacheFilePath, JSON.stringify(blocks, null, 2), 'utf-8');
78
100
  }
79
- const response = await downloadFromExternal(externalImport);
80
- const blocks = response.blocks;
81
- console.log(`Downloaded ${blocks.length} blocks from ${externalImport.url}`);
82
- await (0, fileUtils_1.writeFileMakeDir)(cacheFilePath, JSON.stringify(blocks, null, 2), 'utf-8');
83
101
  if (!configuration_1.config.production) {
84
102
  await saveImportedBlocks(externalImport, blocks);
85
103
  }
86
104
  return blocks;
87
105
  }
88
106
  async function downloadAll(externalImports) {
89
- const responses = await Promise.all(externalImports.map(downloadAndSave));
107
+ downloadedExternalBlockNames = new Set();
108
+ const responses = await Promise.all([...externalImports].reverse().map(downloadAndSave));
90
109
  return lodash_1.default.flatten(responses);
91
110
  }
92
111
  async function downloadSettingsFromDb() {
@@ -138,4 +157,4 @@ async function loadAllBlocks() {
138
157
  return [...externalBlocks, ...localBlocks];
139
158
  }
140
159
  exports.loadAllBlocks = loadAllBlocks;
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsb0RBQTRCO0FBQzVCLDJCQUFvQztBQUNwQyxrRkFBOEM7QUFDOUMscUNBQXNDO0FBQ3RDLG9EQUF1QjtBQUN2QixnREFBd0I7QUFDeEIsbURBQThEO0FBQzlELHFDQUErRDtBQUMvRCxpREFBaUY7QUFDakYsbUNBQTBEO0FBRzFELE1BQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFDO0FBRXhDLFNBQVMscUJBQXFCO0lBQzVCLE9BQU8sY0FBSSxDQUFDLElBQUksQ0FBQyxzQkFBTSxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLGNBQW1DO0lBQ2hFLE9BQU8sY0FBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxRQUFnQjtJQUMzQyxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixFQUFFLENBQUM7SUFDbkQsTUFBTSxnQkFBZ0IsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sb0JBQW9CLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlELE9BQU8sZ0JBQWdCLEtBQUssb0JBQW9CLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEdBQUcsb0JBQW9CLEdBQUcsY0FBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDeEgsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsUUFBZ0I7SUFDM0MsT0FBTyxjQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENB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
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsb0RBQTRCO0FBQzVCLDJCQUFvQztBQUNwQyxrRkFBOEM7QUFDOUMscUNBQXNDO0FBQ3RDLG9EQUF1QjtBQUN2QixnREFBd0I7QUFDeEIsbURBQThEO0FBQzlELHFDQUErRDtBQUMvRCxpREFBaUY7QUFDakYsbUNBQTBEO0FBRzFELE1BQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFDO0FBQ3hDLElBQUksNEJBQTRCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztBQUVyRCxTQUFTLHFCQUFxQjtJQUM1QixPQUFPLGNBQUksQ0FBQyxJQUFJLENBQUMsc0JBQU0sQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxjQUFtQztJQUNoRSxPQUFPLGNBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsUUFBZ0I7SUFDM0MsTUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0lBQ25ELE1BQU0sZ0JBQWdCLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRCxNQUFNLG9CQUFvQixHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM5RCxPQUFPLGdCQUFnQixLQUFLLG9CQUFvQixJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxHQUFHLG9CQUFvQixHQUFHLGNBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3hILENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLFFBQWdCO0lBQzNDLE9BQU8sY0FBSSxDQUFDLEtBQUssQ0FBQyxRQUFR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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marsx-dev/launcher",
3
- "version": "0.0.26",
3
+ "version": "0.0.28",
4
4
  "description": "MarsX launcher",
5
5
  "author": "MarsX team <team@marsx.dev>",
6
6
  "homepage": "https://marsx.dev/",
package/src/loader.ts CHANGED
@@ -12,6 +12,7 @@ import { convertV3ToSfc, V3MongoBlock } from './utils/v3';
12
12
 
13
13
  type V4Response = { commit: string; hash: string; blocks: SfcBlock[] };
14
14
  const IMPORTED_BLOCKS_DIR = '_imported';
15
+ let downloadedExternalBlockNames = new Set<string>();
15
16
 
16
17
  function getImportedBlocksRoot() {
17
18
  return path.join(config.blocksDir, IMPORTED_BLOCKS_DIR);
@@ -32,6 +33,25 @@ function isSettingsBlockFile(filePath: string) {
32
33
  return path.parse(filePath).name.endsWith('.settings');
33
34
  }
34
35
 
36
+ function rememberExternalBlocks(blocks: SfcBlock[]) {
37
+ for (const block of blocks) {
38
+ downloadedExternalBlockNames.add(block.path.name);
39
+ }
40
+ }
41
+
42
+ function filterFreshExternalBlocks(blocks: SfcBlock[]) {
43
+ const result: SfcBlock[] = [];
44
+
45
+ for (const block of blocks) {
46
+ if (downloadedExternalBlockNames.has(block.path.name)) continue;
47
+
48
+ downloadedExternalBlockNames.add(block.path.name);
49
+ result.push(block);
50
+ }
51
+
52
+ return result;
53
+ }
54
+
35
55
  async function downloadFromExternal(externalImport: ImportProjectConfig): Promise<V4Response> {
36
56
  const params = { api_key: externalImport.api_key, git_commit_ish: externalImport.git_commit_ish || '' };
37
57
 
@@ -39,20 +59,18 @@ async function downloadFromExternal(externalImport: ImportProjectConfig): Promis
39
59
  console.log(`Downloading blocks from ${url}`);
40
60
  try {
41
61
  const v4Resp = await axios.get<V4Response>(`${url}/api/GetExportedAppBlocksV4`, { params });
42
- return v4Resp.data;
62
+ return { ...v4Resp.data, blocks: filterFreshExternalBlocks(v4Resp.data.blocks) };
43
63
  } catch (e) {
44
64
  console.log(`${url} does not support V4, fallback to V3`);
45
65
  }
46
66
 
47
67
  const v3Resp = await axios.get<V3MongoBlock[]>(`${url}/api/GetExportedAppBlocks`, { params });
48
- const v3BlocksAllRaw = v3Resp.data.reverse();
49
- const seenNames = new Set<string>();
50
68
  const v3Blocks: SfcBlock[] = [];
51
69
 
52
- for (const block of v3BlocksAllRaw) {
53
- if (seenNames.has(block.Name)) continue;
70
+ for (const block of v3Resp.data.reverse()) {
71
+ if (downloadedExternalBlockNames.has(block.Name)) continue;
54
72
 
55
- seenNames.add(block.Name);
73
+ downloadedExternalBlockNames.add(block.Name);
56
74
  v3Blocks.push(convertV3ToSfc(block));
57
75
  }
58
76
 
@@ -79,18 +97,20 @@ function getImportCacheFilePath(externalImport: ImportProjectConfig) {
79
97
 
80
98
  async function downloadAndSave(externalImport: ImportProjectConfig): Promise<SfcBlock[]> {
81
99
  const cacheFilePath = getImportCacheFilePath(externalImport);
100
+ let blocks: SfcBlock[] = [];
82
101
 
83
102
  if (await isFile(cacheFilePath)) {
84
103
  const content = await fs.readFile(cacheFilePath, 'utf-8');
85
- console.log(`Loading cached blocks from ${externalImport.url}`);
86
- return JSON.parse(content) as SfcBlock[];
104
+ blocks = JSON.parse(content) as SfcBlock[];
105
+ console.log(`Loaded ${blocks.length} cached blocks from ${externalImport.url}`);
106
+ rememberExternalBlocks(blocks);
107
+ } else {
108
+ const response = await downloadFromExternal(externalImport);
109
+ blocks = response.blocks;
110
+ console.log(`Downloaded ${blocks.length} blocks from ${externalImport.url}`);
111
+ await writeFileMakeDir(cacheFilePath, JSON.stringify(blocks, null, 2), 'utf-8');
87
112
  }
88
113
 
89
- const response = await downloadFromExternal(externalImport);
90
- const blocks = response.blocks;
91
- console.log(`Downloaded ${blocks.length} blocks from ${externalImport.url}`);
92
- await writeFileMakeDir(cacheFilePath, JSON.stringify(blocks, null, 2), 'utf-8');
93
-
94
114
  if (!config.production) {
95
115
  await saveImportedBlocks(externalImport, blocks);
96
116
  }
@@ -99,7 +119,8 @@ async function downloadAndSave(externalImport: ImportProjectConfig): Promise<Sfc
99
119
  }
100
120
 
101
121
  async function downloadAll(externalImports: ImportProjectConfig[]) {
102
- const responses = await Promise.all(externalImports.map(downloadAndSave));
122
+ downloadedExternalBlockNames = new Set<string>();
123
+ const responses = await Promise.all([...externalImports].reverse().map(downloadAndSave));
103
124
  return _.flatten(responses);
104
125
  }
105
126