@calimero-network/mero-js 22.2.0 → 22.3.0

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.
package/dist/index.mjs CHANGED
@@ -7842,8 +7842,24 @@ function nodeReleaseVersionFromImage(osImage) {
7842
7842
  return `${Number(match[1])}.${Number(match[2])}.${Number(match[3])}`;
7843
7843
  }
7844
7844
  async function fetchNodeReleaseVersion(baseUrl, options = {}) {
7845
- const url = `${baseUrl.replace(/\/+$/, "")}/admin-api/tee/info`;
7846
- const response = await (options.fetch ?? fetch)(url, { headers: { accept: "application/json" } });
7845
+ const version = await readNodeReleaseVersion(baseUrl, options.fetch ?? fetch);
7846
+ if (version === void 0) {
7847
+ throw new Error(
7848
+ `${infoUrl(baseUrl)} was refused unsealed: the node requires sealing and is too old to name its release before a session exists. Name the release it runs yourself (createSignedReleaseSealedFetch's \`releaseVersion\`), or upgrade the node`
7849
+ );
7850
+ }
7851
+ return version;
7852
+ }
7853
+ function infoUrl(baseUrl) {
7854
+ return `${baseUrl.replace(/\/+$/, "")}/admin-api/tee/info`;
7855
+ }
7856
+ async function readNodeReleaseVersion(baseUrl, givenFetch) {
7857
+ const url = infoUrl(baseUrl);
7858
+ const response = await givenFetch(url, { headers: { accept: "application/json" } });
7859
+ if (response.status === 403) {
7860
+ const code = await response.json().then((body) => body?.error?.code).catch(() => void 0);
7861
+ if (code === "sealed_required") return void 0;
7862
+ }
7847
7863
  if (!response.ok) throw new Error(`Fetching ${url} failed: HTTP ${response.status}`);
7848
7864
  let osImage;
7849
7865
  try {
@@ -7890,10 +7906,19 @@ function createSignedReleaseVerifier(options) {
7890
7906
  return Object.assign(verifier, { includeCollateral: true });
7891
7907
  }
7892
7908
  function createSignedReleaseSealedFetch(options) {
7893
- const { baseUrl, releaseSource, applicationId, applicationHash, fetch: givenFetch, ...verifierOptions } = options;
7909
+ const {
7910
+ baseUrl,
7911
+ releaseSource,
7912
+ releaseVersion: fallbackVersion,
7913
+ applicationId,
7914
+ applicationHash,
7915
+ fetch: givenFetch,
7916
+ ...verifierOptions
7917
+ } = options;
7918
+ if (fallbackVersion !== void 0) releaseVersion(fallbackVersion, "releaseVersion");
7894
7919
  const baseFetch = givenFetch ?? ((input, init) => fetch(input, init));
7895
7920
  const release = async () => {
7896
- const version = await fetchNodeReleaseVersion(baseUrl, { fetch: baseFetch });
7921
+ const version = fallbackVersion === void 0 ? await fetchNodeReleaseVersion(baseUrl, { fetch: baseFetch }) : await readNodeReleaseVersion(baseUrl, baseFetch) ?? fallbackVersion;
7897
7922
  return typeof releaseSource === "function" ? releaseSource({ baseUrl, version, fetch: baseFetch }) : fetchNodeRelease(cloudNodeReleaseUrl(releaseSource ?? DEFAULT_RELEASE_MIRROR, version), { fetch: baseFetch });
7898
7923
  };
7899
7924
  return createAttestedSealedFetch({