@blamejs/blamejs-shop 0.0.113 → 0.0.114

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 (27) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/lib/analytics.js +1 -1
  3. package/lib/vendor/MANIFEST.json +2 -2
  4. package/lib/vendor/blamejs/CHANGELOG.md +16 -0
  5. package/lib/vendor/blamejs/api-snapshot.json +6 -2
  6. package/lib/vendor/blamejs/lib/archive-wrap.js +58 -0
  7. package/lib/vendor/blamejs/lib/archive.js +1 -0
  8. package/lib/vendor/blamejs/lib/backup/index.js +585 -10
  9. package/lib/vendor/blamejs/lib/safe-archive.js +112 -3
  10. package/lib/vendor/blamejs/package.json +1 -1
  11. package/lib/vendor/blamejs/release-notes/v0.12.13.json +31 -0
  12. package/lib/vendor/blamejs/release-notes/v0.12.14.json +18 -0
  13. package/lib/vendor/blamejs/release-notes/v0.12.15.json +27 -0
  14. package/lib/vendor/blamejs/release-notes/v0.12.16.json +18 -0
  15. package/lib/vendor/blamejs/release-notes/v0.12.17.json +22 -0
  16. package/lib/vendor/blamejs/release-notes/v0.12.18.json +22 -0
  17. package/lib/vendor/blamejs/release-notes/v0.12.19.json +22 -0
  18. package/lib/vendor/blamejs/release-notes/v0.12.20.json +18 -0
  19. package/lib/vendor/blamejs/test/layer-0-primitives/archive-sniff-envelope.test.js +118 -0
  20. package/lib/vendor/blamejs/test/layer-0-primitives/backup-bundle-info.test.js +279 -0
  21. package/lib/vendor/blamejs/test/layer-0-primitives/backup-object-store-adapter.test.js +167 -0
  22. package/lib/vendor/blamejs/test/layer-0-primitives/backup-verify-all-bundles.test.js +0 -0
  23. package/lib/vendor/blamejs/test/layer-0-primitives/backup-verify-bundle.test.js +186 -0
  24. package/lib/vendor/blamejs/test/layer-0-primitives/codebase-patterns.test.js +28 -0
  25. package/lib/vendor/blamejs/test/layer-0-primitives/safe-archive-auto-unwrap.test.js +116 -0
  26. package/lib/vendor/blamejs/test/layer-0-primitives/safe-archive-inspect-unwrap.test.js +89 -0
  27. package/package.json +1 -1
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ /**
3
+ * Layer 0 — b.safeArchive.extract auto-unwrap path for v0.12.10
4
+ * recipient + v0.12.11 passphrase envelopes.
5
+ */
6
+
7
+ var fs = require("node:fs");
8
+ var path = require("node:path");
9
+ var os = require("node:os");
10
+ var b = require("../../index");
11
+ var helpers = require("../helpers");
12
+ var check = helpers.check;
13
+
14
+ async function testAutoUnwrapRecipient() {
15
+ var pair = b.crypto.generateEncryptionKeyPair();
16
+ var srcDir = fs.mkdtempSync(path.join(os.tmpdir(), "bjs-auw-src-"));
17
+ fs.writeFileSync(path.join(srcDir, "data.json"), "{\"v\":1}", { mode: 0o600 });
18
+ var t = b.archive.tar();
19
+ t.addFile("data.json", fs.readFileSync(path.join(srcDir, "data.json")));
20
+ var sealed = b.archive.wrap(t.toBuffer(), { recipient: pair });
21
+ var sealedPath = path.join(os.tmpdir(), "auw-r-" + Date.now() + ".bin");
22
+ fs.writeFileSync(sealedPath, sealed, { mode: 0o600 });
23
+ var dest = path.join(os.tmpdir(), "auw-r-dest-" + Date.now());
24
+ try {
25
+ var result = await b.safeArchive.extract({
26
+ source: sealedPath,
27
+ destination: dest,
28
+ recipient: pair,
29
+ });
30
+ check("safeArchive.extract: BAWRP envelope auto-unwrapped + extracted",
31
+ result.format === "tar" &&
32
+ fs.readFileSync(path.join(dest, "data.json"), "utf-8") === "{\"v\":1}");
33
+ } finally {
34
+ try { fs.rmSync(srcDir, { recursive: true, force: true }); } catch (_e) { /* ignore */ }
35
+ try { fs.rmSync(dest, { recursive: true, force: true }); } catch (_e) { /* ignore */ }
36
+ try { fs.unlinkSync(sealedPath); } catch (_e) { /* ignore */ }
37
+ }
38
+ }
39
+
40
+ async function testAutoUnwrapPassphrase() {
41
+ var srcDir = fs.mkdtempSync(path.join(os.tmpdir(), "bjs-auw-p-"));
42
+ fs.writeFileSync(path.join(srcDir, "data.json"), "{\"v\":2}", { mode: 0o600 });
43
+ var t = b.archive.tar();
44
+ t.addFile("data.json", fs.readFileSync(path.join(srcDir, "data.json")));
45
+ var sealed = await b.archive.wrapWithPassphrase(t.toBuffer(), {
46
+ passphrase: "aLongCorrectHorseBatteryStaple9876!Phrase",
47
+ });
48
+ var sealedPath = path.join(os.tmpdir(), "auw-p-" + Date.now() + ".bin");
49
+ fs.writeFileSync(sealedPath, sealed, { mode: 0o600 });
50
+ var dest = path.join(os.tmpdir(), "auw-p-dest-" + Date.now());
51
+ try {
52
+ var result = await b.safeArchive.extract({
53
+ source: sealedPath,
54
+ destination: dest,
55
+ passphrase: "aLongCorrectHorseBatteryStaple9876!Phrase",
56
+ });
57
+ check("safeArchive.extract: BAWPP envelope auto-unwrapped + extracted",
58
+ result.format === "tar" &&
59
+ fs.readFileSync(path.join(dest, "data.json"), "utf-8") === "{\"v\":2}");
60
+ } finally {
61
+ try { fs.rmSync(srcDir, { recursive: true, force: true }); } catch (_e) { /* ignore */ }
62
+ try { fs.rmSync(dest, { recursive: true, force: true }); } catch (_e) { /* ignore */ }
63
+ try { fs.unlinkSync(sealedPath); } catch (_e) { /* ignore */ }
64
+ }
65
+ }
66
+
67
+ async function testAutoUnwrapRefusesMissingRecipient() {
68
+ var pair = b.crypto.generateEncryptionKeyPair();
69
+ var sealed = b.archive.wrap(Buffer.from("X"), { recipient: pair });
70
+ var sealedPath = path.join(os.tmpdir(), "auw-nor-" + Date.now() + ".bin");
71
+ fs.writeFileSync(sealedPath, sealed, { mode: 0o600 });
72
+ var refused = null;
73
+ try {
74
+ await b.safeArchive.extract({
75
+ source: sealedPath,
76
+ destination: path.join(os.tmpdir(), "auw-nor-d-" + Date.now()),
77
+ });
78
+ } catch (e) { refused = e; }
79
+ check("safeArchive.extract: BAWRP without opts.recipient refused upfront",
80
+ refused && /no-recipient-for-wrap/.test(refused.code || refused.message));
81
+ try { fs.unlinkSync(sealedPath); } catch (_e) { /* ignore */ }
82
+ }
83
+
84
+ async function testAutoUnwrapRefusesMissingPassphrase() {
85
+ var sealed = await b.archive.wrapWithPassphrase(Buffer.from("X"), {
86
+ passphrase: "aLongCorrectHorseBatteryStaple9876!Phrase",
87
+ });
88
+ var sealedPath = path.join(os.tmpdir(), "auw-nop-" + Date.now() + ".bin");
89
+ fs.writeFileSync(sealedPath, sealed, { mode: 0o600 });
90
+ var refused = null;
91
+ try {
92
+ await b.safeArchive.extract({
93
+ source: sealedPath,
94
+ destination: path.join(os.tmpdir(), "auw-nop-d-" + Date.now()),
95
+ });
96
+ } catch (e) { refused = e; }
97
+ check("safeArchive.extract: BAWPP without opts.passphrase refused upfront",
98
+ refused && /no-passphrase-for-wrap/.test(refused.code || refused.message));
99
+ try { fs.unlinkSync(sealedPath); } catch (_e) { /* ignore */ }
100
+ }
101
+
102
+ async function run() {
103
+ await testAutoUnwrapRecipient();
104
+ await testAutoUnwrapPassphrase();
105
+ await testAutoUnwrapRefusesMissingRecipient();
106
+ await testAutoUnwrapRefusesMissingPassphrase();
107
+ }
108
+
109
+ module.exports = { run: run };
110
+
111
+ if (require.main === module) {
112
+ run().then(
113
+ function () { console.log("[safe-archive-auto-unwrap] OK — " + helpers.getChecks() + " checks passed"); },
114
+ function (e) { console.error("FAIL:", e && e.stack || e); process.exit(1); }
115
+ );
116
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /**
3
+ * Layer 0 — b.safeArchive.inspect auto-unwrap for v0.12.10
4
+ * recipient + v0.12.11 passphrase envelopes (mirrors the
5
+ * v0.12.15 extract auto-unwrap path).
6
+ */
7
+
8
+ var fs = require("node:fs");
9
+ var path = require("node:path");
10
+ var os = require("node:os");
11
+ var b = require("../../index");
12
+ var helpers = require("../helpers");
13
+ var check = helpers.check;
14
+
15
+ async function testInspectAutoUnwrapRecipient() {
16
+ var pair = b.crypto.generateEncryptionKeyPair();
17
+ var t = b.archive.tar();
18
+ t.addFile("a.json", "{\"x\":1}");
19
+ t.addFile("b.json", "{\"y\":2}");
20
+ var sealed = b.archive.wrap(t.toBuffer(), { recipient: pair });
21
+ var sealedPath = path.join(os.tmpdir(), "insp-r-" + Date.now() + ".bin");
22
+ fs.writeFileSync(sealedPath, sealed, { mode: 0o600 });
23
+ try {
24
+ var summary = await b.safeArchive.inspect({
25
+ source: sealedPath,
26
+ recipient: pair,
27
+ });
28
+ check("safeArchive.inspect: BAWRP source auto-unwrapped + entries enumerated",
29
+ summary.format === "tar" && summary.entries.length === 2);
30
+ var names = summary.entries.map(function (e) { return e.name; }).sort();
31
+ check("safeArchive.inspect: entry names recovered after unwrap",
32
+ names[0] === "a.json" && names[1] === "b.json");
33
+ } finally {
34
+ try { fs.unlinkSync(sealedPath); } catch (_e) { /* ignore */ }
35
+ }
36
+ }
37
+
38
+ async function testInspectAutoUnwrapPassphrase() {
39
+ var t = b.archive.tar();
40
+ t.addFile("phi.json", "{\"id\":42}");
41
+ var sealed = await b.archive.wrapWithPassphrase(t.toBuffer(), {
42
+ passphrase: "aLongCorrectHorseBatteryStaple9876!Phrase",
43
+ });
44
+ var sealedPath = path.join(os.tmpdir(), "insp-p-" + Date.now() + ".bin");
45
+ fs.writeFileSync(sealedPath, sealed, { mode: 0o600 });
46
+ try {
47
+ var summary = await b.safeArchive.inspect({
48
+ source: sealedPath,
49
+ passphrase: "aLongCorrectHorseBatteryStaple9876!Phrase",
50
+ });
51
+ check("safeArchive.inspect: BAWPP source auto-unwrapped + entries enumerated",
52
+ summary.format === "tar" && summary.entries.length === 1 &&
53
+ summary.entries[0].name === "phi.json");
54
+ } finally {
55
+ try { fs.unlinkSync(sealedPath); } catch (_e) { /* ignore */ }
56
+ }
57
+ }
58
+
59
+ async function testInspectRefusesMissingKey() {
60
+ var pair = b.crypto.generateEncryptionKeyPair();
61
+ var sealed = b.archive.wrap(Buffer.from("X"), { recipient: pair });
62
+ var sealedPath = path.join(os.tmpdir(), "insp-nor-" + Date.now() + ".bin");
63
+ fs.writeFileSync(sealedPath, sealed, { mode: 0o600 });
64
+ try {
65
+ var refused = null;
66
+ try {
67
+ await b.safeArchive.inspect({ source: sealedPath });
68
+ } catch (e) { refused = e; }
69
+ check("safeArchive.inspect: BAWRP without opts.recipient refused upfront",
70
+ refused && /no-recipient-for-wrap/.test(refused.code || refused.message));
71
+ } finally {
72
+ try { fs.unlinkSync(sealedPath); } catch (_e) { /* ignore */ }
73
+ }
74
+ }
75
+
76
+ async function run() {
77
+ await testInspectAutoUnwrapRecipient();
78
+ await testInspectAutoUnwrapPassphrase();
79
+ await testInspectRefusesMissingKey();
80
+ }
81
+
82
+ module.exports = { run: run };
83
+
84
+ if (require.main === module) {
85
+ run().then(
86
+ function () { console.log("[safe-archive-inspect-unwrap] OK — " + helpers.getChecks() + " checks passed"); },
87
+ function (e) { console.error("FAIL:", e && e.stack || e); process.exit(1); }
88
+ );
89
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blamejs/blamejs-shop",
3
- "version": "0.0.113",
3
+ "version": "0.0.114",
4
4
  "description": "Open-source framework built on blamejs. Vendored stack, zero npm runtime deps, PQC-first crypto, security-on by default.",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {