bingo-systems 0.5.1 → 0.5.3

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":"createWritingFileSystem.d.ts","sourceRoot":"","sources":["../../src/files/createWritingFileSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAK/C,wBAAgB,uBAAuB;oCAGC,MAAM;0BAGjC,MAAM,YACN,MAAM,YACN,mBAAmB;;;EAS/B"}
1
+ {"version":3,"file":"createWritingFileSystem.d.ts","sourceRoot":"","sources":["../../src/files/createWritingFileSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAK/C,wBAAgB,uBAAuB;oCAGC,MAAM;0BAGjC,MAAM,YACN,MAAM,YACN,mBAAmB;;;EAoB/B"}
@@ -5,6 +5,17 @@ export function createWritingFileSystem() {
5
5
  ...createReadingFileSystem(),
6
6
  writeDirectory: async (directoryPath) => void (await fs.mkdir(directoryPath, { recursive: true })),
7
7
  writeFile: async (filePath, contents, options) => {
8
+ try {
9
+ // If the file had custom permissions written, it might support
10
+ // being deleted but not being written to.
11
+ // https://github.com/JoshuaKGoldberg/bingo/issues/238
12
+ await fs.rm(filePath);
13
+ }
14
+ catch {
15
+ // If the file didn't exist, that's fine too.
16
+ // Or if we don't have rm permissions, we probably won't have
17
+ // write permissions, so the subsequent writeFile will fail.
18
+ }
8
19
  await fs.writeFile(filePath, contents, options?.executable ? { mode: 0x755 } : undefined);
9
20
  },
10
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"createWritingFileSystem.js","sourceRoot":"","sources":["../../src/files/createWritingFileSystem.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,UAAU,uBAAuB;IACtC,OAAO;QACN,GAAG,uBAAuB,EAAE;QAC5B,cAAc,EAAE,KAAK,EAAE,aAAqB,EAAE,EAAE,CAC/C,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,SAAS,EAAE,KAAK,EACf,QAAgB,EAChB,QAAgB,EAChB,OAA6B,EAC5B,EAAE;YACH,MAAM,EAAE,CAAC,SAAS,CACjB,QAAQ,EACR,QAAQ,EACR,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CACjD,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"createWritingFileSystem.js","sourceRoot":"","sources":["../../src/files/createWritingFileSystem.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,UAAU,uBAAuB;IACtC,OAAO;QACN,GAAG,uBAAuB,EAAE;QAC5B,cAAc,EAAE,KAAK,EAAE,aAAqB,EAAE,EAAE,CAC/C,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,SAAS,EAAE,KAAK,EACf,QAAgB,EAChB,QAAgB,EAChB,OAA6B,EAC5B,EAAE;YACH,IAAI,CAAC;gBACJ,+DAA+D;gBAC/D,0CAA0C;gBAC1C,sDAAsD;gBACtD,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACR,6CAA6C;gBAC7C,6DAA6D;gBAC7D,4DAA4D;YAC7D,CAAC;YAED,MAAM,EAAE,CAAC,SAAS,CACjB,QAAQ,EACR,QAAQ,EACR,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CACjD,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -1,11 +1,15 @@
1
1
  import { describe, expect, it, vi } from "vitest";
2
2
  import { createWritingFileSystem } from "./createWritingFileSystem.js";
3
3
  const mockMkdir = vi.fn();
4
+ const mockRm = vi.fn();
4
5
  const mockWriteFile = vi.fn();
5
6
  vi.mock("node:fs/promises", () => ({
6
7
  get mkdir() {
7
8
  return mockMkdir;
8
9
  },
10
+ get rm() {
11
+ return mockRm;
12
+ },
9
13
  get writeFile() {
10
14
  return mockWriteFile;
11
15
  },
@@ -24,7 +28,13 @@ describe("createWritingFileSystem", () => {
24
28
  });
25
29
  });
26
30
  describe("writeFile", () => {
27
- it("writes without mode when options does not exist", async () => {
31
+ it("writes without mode when options does not exist and rm rejects", async () => {
32
+ mockRm.mockRejectedValueOnce(new Error("Oh no!"));
33
+ const system = createWritingFileSystem();
34
+ await system.writeFile(filePath, contents);
35
+ expect(mockWriteFile).toHaveBeenCalledWith(filePath, contents, undefined);
36
+ });
37
+ it("writes without mode when options does not exist and rm does not reject", async () => {
28
38
  const system = createWritingFileSystem();
29
39
  await system.writeFile(filePath, contents);
30
40
  expect(mockWriteFile).toHaveBeenCalledWith(filePath, contents, undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"createWritingFileSystem.test.js","sourceRoot":"","sources":["../../src/files/createWritingFileSystem.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1B,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAE9B,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,IAAI,KAAK;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,SAAS;QACZ,OAAO,aAAa,CAAC;IACtB,CAAC;CACD,CAAC,CAAC,CAAC;AAEJ,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAC1B,MAAM,aAAa,GAAG,cAAc,CAAC;AACrC,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEhC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACxC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAEzC,MAAM,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAE3C,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,aAAa,EAAE;gBACrD,SAAS,EAAE,IAAI;aACf,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAEzC,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE3C,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAEzC,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YAElE,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAEzC,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjE,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE;gBAC9D,IAAI,EAAE,KAAK;aACX,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"createWritingFileSystem.test.js","sourceRoot":"","sources":["../../src/files/createWritingFileSystem.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AACvB,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAE9B,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,IAAI,KAAK;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,EAAE;QACL,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAI,SAAS;QACZ,OAAO,aAAa,CAAC;IACtB,CAAC;CACD,CAAC,CAAC,CAAC;AAEJ,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAC1B,MAAM,aAAa,GAAG,cAAc,CAAC;AACrC,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEhC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACxC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAEzC,MAAM,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAE3C,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,aAAa,EAAE;gBACrD,SAAS,EAAE,IAAI;aACf,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAEzC,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE3C,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACvF,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAEzC,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE3C,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAEzC,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YAElE,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAEzC,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjE,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE;gBAC9D,IAAI,EAAE,KAAK;aACX,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bingo-systems",
3
- "version": "0.5.1",
3
+ "version": "0.5.3",
4
4
  "description": "File, network, and shell wrapper APIs used by Bingo. 🧰",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,7 +24,7 @@
24
24
  "execa": "^9.5.2",
25
25
  "get-github-auth-token": "^0.1.1",
26
26
  "octokit": "^4.1.2",
27
- "bingo-fs": "^0.5.1"
27
+ "bingo-fs": "^0.5.3"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "22.13.4"