@expo/metro-config 56.0.12 → 56.0.13

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.
@@ -9,6 +9,7 @@ const msgpackr_1 = require("msgpackr");
9
9
  const node_fs_1 = __importDefault(require("node:fs"));
10
10
  const node_path_1 = __importDefault(require("node:path"));
11
11
  const file_store_1 = require("./file-store");
12
+ const { pid } = process;
12
13
  const debug = require('debug')('expo:metro:cache');
13
14
  /** Pre-create shard directories all at once as a preflight task */
14
15
  function ensureShardDirs(root) {
@@ -19,6 +20,18 @@ function ensureShardDirs(root) {
19
20
  }
20
21
  return Promise.all(tasks).then(() => undefined);
21
22
  }
23
+ async function renameWithRetry(from, to) {
24
+ try {
25
+ await node_fs_1.default.promises.rename(from, to);
26
+ }
27
+ catch (err) {
28
+ if (err?.code !== 'EPERM' && err?.code !== 'EBUSY')
29
+ throw err;
30
+ await new Promise((resolve) => setTimeout(resolve, 50));
31
+ await node_fs_1.default.promises.rename(from, to);
32
+ }
33
+ }
34
+ const getTmpName = (name) => `.tmp${pid}_${name}`;
22
35
  class BinaryFileStore extends FileStore_1.default {
23
36
  #root;
24
37
  #prepare;
@@ -30,7 +43,7 @@ class BinaryFileStore extends FileStore_1.default {
30
43
  });
31
44
  constructor(options) {
32
45
  super(options);
33
- this.#root = options.root;
46
+ this.#root = node_path_1.default.resolve(options.root);
34
47
  }
35
48
  prepare() {
36
49
  if (!this.#prepare) {
@@ -39,9 +52,10 @@ class BinaryFileStore extends FileStore_1.default {
39
52
  return this.#prepare;
40
53
  }
41
54
  async get(key) {
55
+ const filePath = this.#getFileDir(key) + node_path_1.default.sep + this.#getFileName(key);
42
56
  let data;
43
57
  try {
44
- data = await node_fs_1.default.promises.readFile(this.#getFilePath(key));
58
+ data = await node_fs_1.default.promises.readFile(filePath);
45
59
  }
46
60
  catch (err) {
47
61
  if (err.code === 'ENOENT') {
@@ -49,7 +63,13 @@ class BinaryFileStore extends FileStore_1.default {
49
63
  }
50
64
  throw err;
51
65
  }
52
- return this.#packr.decode(data);
66
+ try {
67
+ return this.#packr.decode(data);
68
+ }
69
+ catch (err) {
70
+ node_fs_1.default.promises.unlink(filePath).catch(() => { });
71
+ return null;
72
+ }
53
73
  }
54
74
  async set(key, value) {
55
75
  // Prevent caching of CSS files that have the skipCache flag set.
@@ -59,9 +79,15 @@ class BinaryFileStore extends FileStore_1.default {
59
79
  }
60
80
  const buffer = this.#packr.encode(value);
61
81
  await this.prepare();
62
- const filePath = this.#getFilePath(key);
82
+ const fileDir = this.#getFileDir(key);
83
+ const fileName = this.#getFileName(key);
84
+ const targetTemp = fileDir + node_path_1.default.sep + getTmpName(fileName);
85
+ const targetPath = fileDir + node_path_1.default.sep + fileName;
86
+ let renamed = false;
63
87
  try {
64
- await node_fs_1.default.promises.writeFile(filePath, buffer);
88
+ await node_fs_1.default.promises.writeFile(targetTemp, buffer);
89
+ await renameWithRetry(targetTemp, targetPath);
90
+ renamed = true;
65
91
  }
66
92
  catch (err) {
67
93
  // The cache root can disappear underneath us if a parallel process clears the cache root
@@ -69,7 +95,13 @@ class BinaryFileStore extends FileStore_1.default {
69
95
  throw err;
70
96
  this.#prepare = undefined;
71
97
  await this.prepare();
72
- await node_fs_1.default.promises.writeFile(filePath, buffer);
98
+ await node_fs_1.default.promises.writeFile(targetTemp, buffer);
99
+ await renameWithRetry(targetTemp, targetPath);
100
+ renamed = true;
101
+ }
102
+ finally {
103
+ if (!renamed)
104
+ await node_fs_1.default.promises.unlink(targetTemp).catch(() => { });
73
105
  }
74
106
  }
75
107
  clear() {
@@ -78,8 +110,11 @@ class BinaryFileStore extends FileStore_1.default {
78
110
  super.clear();
79
111
  }
80
112
  }
81
- #getFilePath(key) {
82
- return node_path_1.default.join(this.#root, key.subarray(0, 1).toString('hex'), key.subarray(1).toString('hex') + '.mp');
113
+ #getFileDir(key) {
114
+ return this.#root + node_path_1.default.sep + key.subarray(0, 1).toString('hex');
115
+ }
116
+ #getFileName(key) {
117
+ return key.subarray(1).toString('hex') + '.mp';
83
118
  }
84
119
  }
85
120
  exports.FileStore = BinaryFileStore;
@@ -1 +1 @@
1
- {"version":3,"file":"binary-file-store.js","sourceRoot":"","sources":["../src/binary-file-store.ts"],"names":[],"mappings":";;;;;;AAAA,yFAA2F;AAC3F,uCAAiC;AACjC,sDAAyB;AACzB,0DAA6B;AAE7B,6CAAuD;AAEvD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAuB,CAAC;AAEzE,mEAAmE;AACnE,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,KAAK,GAAuB,EAAE,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,iBAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,eAAmB,SAAQ,mBAAoB;IACnD,KAAK,CAAS;IACd,QAAQ,CAA4B;IAEpC,MAAM,GAAG,IAAI,gBAAK,CAAC;QACjB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,yFAAyF;QACzF,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,iBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAQ;QAC7B,iEAAiE;QACjE,IAAK,KAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;YACtD,KAAK,CAAC,gCAAgC,EAAG,KAAa,CAAC,IAAI,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,iBAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,yFAAyF;YACzF,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ;gBAAE,MAAM,GAAG,CAAC;YACtC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,iBAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,IAAA,oCAAuB,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,YAAY,CAAC,GAAW;QACtB,OAAO,mBAAI,CAAC,IAAI,CACd,IAAI,CAAC,KAAK,EACV,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAClC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CACxC,CAAC;IACJ,CAAC;CACF;AAE2B,oCAAS"}
1
+ {"version":3,"file":"binary-file-store.js","sourceRoot":"","sources":["../src/binary-file-store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/metro-config",
3
- "version": "56.0.12",
3
+ "version": "56.0.13",
4
4
  "description": "A Metro config for running React Native projects with the Metro bundler",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -89,13 +89,13 @@
89
89
  "dedent": "^1.5.3",
90
90
  "metro-minify-terser": "^0.84.2",
91
91
  "sass": "^1.60.0",
92
- "expo": "56.0.4",
92
+ "expo": "56.0.5",
93
93
  "expo-module-scripts": "56.0.2"
94
94
  },
95
95
  "publishConfig": {
96
96
  "access": "public"
97
97
  },
98
- "gitHead": "6dfb0e4c958a1ea1d66d3f7952494ac58430ad45",
98
+ "gitHead": "f67a101bcbe56114e982184834b93da7bbed00af",
99
99
  "scripts": {
100
100
  "build": "expo-module tsc",
101
101
  "clean": "expo-module clean",