@siafoundation/sia-storage 0.1.1 → 0.1.2

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.
@@ -40,32 +40,51 @@ __export(index_node_exports, {
40
40
  });
41
41
  module.exports = __toCommonJS(index_node_exports);
42
42
 
43
+ // src/node/platforms.ts
44
+ var NATIVE_PACKAGES = {
45
+ "darwin-arm64": "@siafoundation/sia-storage-darwin-arm64",
46
+ "darwin-x64": "@siafoundation/sia-storage-darwin-x64",
47
+ "linux-x64": "@siafoundation/sia-storage-linux-x64-gnu",
48
+ "linux-arm64": "@siafoundation/sia-storage-linux-arm64-gnu",
49
+ "win32-x64": "@siafoundation/sia-storage-win32-x64-msvc"
50
+ };
51
+
43
52
  // src/node/load.ts
44
53
  var addon = null;
45
54
  function loadNativeAddon() {
46
55
  if (addon) return addon;
47
- const platform = process.platform;
48
- const arch = process.arch;
56
+ const target = `${process.platform}-${process.arch}`;
57
+ let cause;
49
58
  try {
50
- if (platform === "darwin" && arch === "arm64") {
59
+ if (target === "darwin-arm64") {
51
60
  addon = require("@siafoundation/sia-storage-darwin-arm64");
52
- } else if (platform === "darwin" && arch === "x64") {
61
+ } else if (target === "darwin-x64") {
53
62
  addon = require("@siafoundation/sia-storage-darwin-x64");
54
- } else if (platform === "linux" && arch === "x64") {
63
+ } else if (target === "linux-x64") {
55
64
  addon = require("@siafoundation/sia-storage-linux-x64-gnu");
56
- } else if (platform === "linux" && arch === "arm64") {
65
+ } else if (target === "linux-arm64") {
57
66
  addon = require("@siafoundation/sia-storage-linux-arm64-gnu");
58
- } else if (platform === "win32" && arch === "x64") {
67
+ } else if (target === "win32-x64") {
59
68
  addon = require("@siafoundation/sia-storage-win32-x64-msvc");
60
69
  }
61
- } catch {
70
+ } catch (error) {
71
+ cause = error;
62
72
  }
63
- if (!addon) {
64
- throw new Error(
65
- `@siafoundation/sia-storage: Native addon not found for ${platform}-${arch}. Install @siafoundation/sia-storage-${platform}-${arch} or use the browser/WASM build.`
73
+ if (!addon) throw addonLoadError(target, cause);
74
+ return addon;
75
+ }
76
+ function addonLoadError(target, cause) {
77
+ const packageName = NATIVE_PACKAGES[target];
78
+ if (!packageName) {
79
+ return new Error(
80
+ `@siafoundation/sia-storage: no native addon is published for ${target}. Use the browser/WASM build.`
66
81
  );
67
82
  }
68
- return addon;
83
+ const reason = cause instanceof Error ? cause.message : String(cause);
84
+ return new Error(
85
+ `@siafoundation/sia-storage: could not load the native addon for ${target} from ${packageName}: ${reason}`,
86
+ { cause }
87
+ );
69
88
  }
70
89
 
71
90
  // src/node/napi.ts
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.node.ts","../src/node/load.ts","../src/node/napi.ts"],"sourcesContent":["export * from './node/napi'\nexport type * from './node/napi'\n\n/** Node's traffic never goes through iCloud Private Relay, which is Safari's. */\nexport async function detectPrivateRelay(): Promise<boolean> {\n return false\n}\n\n// openStreams hands a browser page URLs that a service worker serves. Node\n// streams objects with sdk.download() directly, so these only let code shared\n// with the browser import them, and server rendering call them, without\n// crashing.\nexport async function enableStreaming(): Promise<boolean> {\n return false\n}\n\nexport function openStreams() {\n const unavailable = () =>\n Promise.reject(\n new Error('openStreams is for browser pages. In Node, use sdk.download().'),\n )\n return { url: unavailable, download: unavailable, close() {} }\n}\n","import type * as Addon from './napi.generated'\n\nlet addon: typeof Addon | null = null\n\nexport function loadNativeAddon(): typeof Addon {\n if (addon) return addon\n\n const platform = process.platform\n const arch = process.arch\n\n try {\n if (platform === 'darwin' && arch === 'arm64') {\n addon = require('@siafoundation/sia-storage-darwin-arm64')\n } else if (platform === 'darwin' && arch === 'x64') {\n addon = require('@siafoundation/sia-storage-darwin-x64')\n } else if (platform === 'linux' && arch === 'x64') {\n addon = require('@siafoundation/sia-storage-linux-x64-gnu')\n } else if (platform === 'linux' && arch === 'arm64') {\n addon = require('@siafoundation/sia-storage-linux-arm64-gnu')\n } else if (platform === 'win32' && arch === 'x64') {\n addon = require('@siafoundation/sia-storage-win32-x64-msvc')\n }\n } catch {}\n\n if (!addon) {\n throw new Error(\n `@siafoundation/sia-storage: Native addon not found for ${platform}-${arch}. ` +\n `Install @siafoundation/sia-storage-${platform}-${arch} or use the browser/WASM build.`,\n )\n }\n\n return addon\n}\n","import { loadNativeAddon } from './load'\n\nconst addon = loadNativeAddon()\n\nexport const {\n AppKey,\n Builder,\n Sdk,\n PinnedObject,\n PackedUpload,\n ObjectEvent,\n SharingKey,\n KeyRecord,\n SharedSdk,\n generateRecoveryPhrase,\n validateRecoveryPhrase,\n setLogger,\n encodedSize,\n} = addon\n\nexport type * from './napi.generated'\n\n/** Force-load the native addon to surface missing-binary errors at startup. */\nexport async function initSia(): Promise<void> {\n loadNativeAddon()\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,IAAI,QAA6B;AAE1B,SAAS,kBAAgC;AAC9C,MAAI,MAAO,QAAO;AAElB,QAAM,WAAW,QAAQ;AACzB,QAAM,OAAO,QAAQ;AAErB,MAAI;AACF,QAAI,aAAa,YAAY,SAAS,SAAS;AAC7C,cAAQ,QAAQ,yCAAyC;AAAA,IAC3D,WAAW,aAAa,YAAY,SAAS,OAAO;AAClD,cAAQ,QAAQ,uCAAuC;AAAA,IACzD,WAAW,aAAa,WAAW,SAAS,OAAO;AACjD,cAAQ,QAAQ,0CAA0C;AAAA,IAC5D,WAAW,aAAa,WAAW,SAAS,SAAS;AACnD,cAAQ,QAAQ,4CAA4C;AAAA,IAC9D,WAAW,aAAa,WAAW,SAAS,OAAO;AACjD,cAAQ,QAAQ,2CAA2C;AAAA,IAC7D;AAAA,EACF,QAAQ;AAAA,EAAC;AAET,MAAI,CAAC,OAAO;AACV,UAAM,IAAI;AAAA,MACR,0DAA0D,QAAQ,IAAI,IAAI,wCAClC,QAAQ,IAAI,IAAI;AAAA,IAC1D;AAAA,EACF;AAEA,SAAO;AACT;;;AC9BA,IAAMA,SAAQ,gBAAgB;AAEvB,IAAM;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAIA;AAKJ,eAAsB,UAAyB;AAC7C,kBAAgB;AAClB;;;AFrBA,eAAsB,qBAAuC;AAC3D,SAAO;AACT;AAMA,eAAsB,kBAAoC;AACxD,SAAO;AACT;AAEO,SAAS,cAAc;AAC5B,QAAM,cAAc,MAClB,QAAQ;AAAA,IACN,IAAI,MAAM,gEAAgE;AAAA,EAC5E;AACF,SAAO,EAAE,KAAK,aAAa,UAAU,aAAa,QAAQ;AAAA,EAAC,EAAE;AAC/D;","names":["addon"]}
1
+ {"version":3,"sources":["../src/index.node.ts","../src/node/platforms.ts","../src/node/load.ts","../src/node/napi.ts"],"sourcesContent":["export * from './node/napi'\nexport type * from './node/napi'\n\n/** Node's traffic never goes through iCloud Private Relay, which is Safari's. */\nexport async function detectPrivateRelay(): Promise<boolean> {\n return false\n}\n\n// openStreams hands a browser page URLs that a service worker serves. Node\n// streams objects with sdk.download() directly, so these only let code shared\n// with the browser import them, and server rendering call them, without\n// crashing.\nexport async function enableStreaming(): Promise<boolean> {\n return false\n}\n\nexport function openStreams() {\n const unavailable = () =>\n Promise.reject(\n new Error('openStreams is for browser pages. In Node, use sdk.download().'),\n )\n return { url: unavailable, download: unavailable, close() {} }\n}\n","/**\n * The npm package that ships the native addon for each platform, keyed by\n * `${process.platform}-${process.arch}`. The Linux and Windows packages name\n * the C library or toolchain their binary was built against, so a package\n * name is not always the platform key with a prefix.\n *\n * scripts/publish.ts publishes these and lists them as the main package's\n * optionalDependencies.\n */\nexport const NATIVE_PACKAGES: Record<string, string> = {\n 'darwin-arm64': '@siafoundation/sia-storage-darwin-arm64',\n 'darwin-x64': '@siafoundation/sia-storage-darwin-x64',\n 'linux-x64': '@siafoundation/sia-storage-linux-x64-gnu',\n 'linux-arm64': '@siafoundation/sia-storage-linux-arm64-gnu',\n 'win32-x64': '@siafoundation/sia-storage-win32-x64-msvc',\n}\n","import type * as Addon from './napi.generated'\nimport { NATIVE_PACKAGES } from './platforms'\n\nlet addon: typeof Addon | null = null\n\nexport function loadNativeAddon(): typeof Addon {\n if (addon) return addon\n\n const target = `${process.platform}-${process.arch}`\n let cause: unknown\n\n // One literal require per package, rather than require(NATIVE_PACKAGES[...]),\n // so bundlers, including `bun build --compile`, can find and embed the addon.\n try {\n if (target === 'darwin-arm64') {\n addon = require('@siafoundation/sia-storage-darwin-arm64')\n } else if (target === 'darwin-x64') {\n addon = require('@siafoundation/sia-storage-darwin-x64')\n } else if (target === 'linux-x64') {\n addon = require('@siafoundation/sia-storage-linux-x64-gnu')\n } else if (target === 'linux-arm64') {\n addon = require('@siafoundation/sia-storage-linux-arm64-gnu')\n } else if (target === 'win32-x64') {\n addon = require('@siafoundation/sia-storage-win32-x64-msvc')\n }\n } catch (error) {\n cause = error\n }\n\n if (!addon) throw addonLoadError(target, cause)\n return addon\n}\n\n/**\n * Why the addon could not load. A missing package and a binary that fails to\n * load read differently, so the require error is kept as the cause and its\n * message is part of this one.\n */\nexport function addonLoadError(target: string, cause: unknown): Error {\n const packageName = NATIVE_PACKAGES[target]\n if (!packageName) {\n return new Error(\n `@siafoundation/sia-storage: no native addon is published for ${target}. ` +\n 'Use the browser/WASM build.',\n )\n }\n const reason = cause instanceof Error ? cause.message : String(cause)\n return new Error(\n `@siafoundation/sia-storage: could not load the native addon for ${target} ` +\n `from ${packageName}: ${reason}`,\n { cause },\n )\n}\n","import { loadNativeAddon } from './load'\n\nconst addon = loadNativeAddon()\n\nexport const {\n AppKey,\n Builder,\n Sdk,\n PinnedObject,\n PackedUpload,\n ObjectEvent,\n SharingKey,\n KeyRecord,\n SharedSdk,\n generateRecoveryPhrase,\n validateRecoveryPhrase,\n setLogger,\n encodedSize,\n} = addon\n\nexport type * from './napi.generated'\n\n/** Force-load the native addon to surface missing-binary errors at startup. */\nexport async function initSia(): Promise<void> {\n loadNativeAddon()\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACSO,IAAM,kBAA0C;AAAA,EACrD,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,eAAe;AAAA,EACf,aAAa;AACf;;;ACZA,IAAI,QAA6B;AAE1B,SAAS,kBAAgC;AAC9C,MAAI,MAAO,QAAO;AAElB,QAAM,SAAS,GAAG,QAAQ,QAAQ,IAAI,QAAQ,IAAI;AAClD,MAAI;AAIJ,MAAI;AACF,QAAI,WAAW,gBAAgB;AAC7B,cAAQ,QAAQ,yCAAyC;AAAA,IAC3D,WAAW,WAAW,cAAc;AAClC,cAAQ,QAAQ,uCAAuC;AAAA,IACzD,WAAW,WAAW,aAAa;AACjC,cAAQ,QAAQ,0CAA0C;AAAA,IAC5D,WAAW,WAAW,eAAe;AACnC,cAAQ,QAAQ,4CAA4C;AAAA,IAC9D,WAAW,WAAW,aAAa;AACjC,cAAQ,QAAQ,2CAA2C;AAAA,IAC7D;AAAA,EACF,SAAS,OAAO;AACd,YAAQ;AAAA,EACV;AAEA,MAAI,CAAC,MAAO,OAAM,eAAe,QAAQ,KAAK;AAC9C,SAAO;AACT;AAOO,SAAS,eAAe,QAAgB,OAAuB;AACpE,QAAM,cAAc,gBAAgB,MAAM;AAC1C,MAAI,CAAC,aAAa;AAChB,WAAO,IAAI;AAAA,MACT,gEAAgE,MAAM;AAAA,IAExE;AAAA,EACF;AACA,QAAM,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACpE,SAAO,IAAI;AAAA,IACT,mEAAmE,MAAM,SAC/D,WAAW,KAAK,MAAM;AAAA,IAChC,EAAE,MAAM;AAAA,EACV;AACF;;;AClDA,IAAMA,SAAQ,gBAAgB;AAEvB,IAAM;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAIA;AAKJ,eAAsB,UAAyB;AAC7C,kBAAgB;AAClB;;;AHrBA,eAAsB,qBAAuC;AAC3D,SAAO;AACT;AAMA,eAAsB,kBAAoC;AACxD,SAAO;AACT;AAEO,SAAS,cAAc;AAC5B,QAAM,cAAc,MAClB,QAAQ;AAAA,IACN,IAAI,MAAM,gEAAgE;AAAA,EAC5E;AACF,SAAO,EAAE,KAAK,aAAa,UAAU,aAAa,QAAQ;AAAA,EAAC,EAAE;AAC/D;","names":["addon"]}