diff --git a/apps/extension/package.json b/apps/extension/package.json index 954a7436..1bee0ccc 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -13,9 +13,9 @@ }, "dependencies": { "@fontsource-variable/source-serif-4": "^5.3.1", - "@mdbase-dev/sdk": "0.1.0-beta.187", - "@mdbase-dev/sdk-lab": "file:../../packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz", - "@mdbase-dev/sdk-staging": "file:../../packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz", + "@mdbase-dev/sdk": "0.1.0-beta.188", + "@mdbase-dev/sdk-lab": "file:../../packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz", + "@mdbase-dev/sdk-staging": "file:../../packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz", "@lingui/core": "6.10.1", "@lingui/react": "6.10.1", "@mdbase-dev/i18n": "0.1.0-beta.149", diff --git a/apps/extension/src/connection-view.ts b/apps/extension/src/connection-view.ts index 647ed070..a18dff3d 100644 --- a/apps/extension/src/connection-view.ts +++ b/apps/extension/src/connection-view.ts @@ -1,5 +1,5 @@ import { t } from "@lingui/core/macro"; -import { describeError, type MdbaseApplicationSnapshot } from "@mdbase-reader/connect/native"; +import { describeError, type MdbaseSnapshot } from "@mdbase-reader/connect/native"; /** * What the extension's pages show for the SDK's application snapshot. The SDK owns @@ -101,10 +101,7 @@ function recoveryActionLabel(action: RecoveryAction): string | null { } /** The SDK's description of a settled problem, as one extension control. */ -function sdkProblem( - snapshot: MdbaseApplicationSnapshot, - readiness: boolean, -): ConnectionProblemView | null { +function sdkProblem(snapshot: MdbaseSnapshot, readiness: boolean): ConnectionProblemView | null { const described = describeError(snapshot); if (!described) { return null; @@ -134,7 +131,7 @@ function sdkProblem( }; } -function identityLabel(signIn: MdbaseApplicationSnapshot["signIn"]): string | null { +function identityLabel(signIn: MdbaseSnapshot["signIn"]): string | null { if (signIn?.state !== "paired") { return null; } @@ -151,7 +148,7 @@ type Screen = Pick; const plain = (status: ConnectionStatus): Screen => ({ status, problem: null }); /** Screens that win over everything else: closed, waiting in the mdbase tab, a problem. */ -function interruption(snapshot: MdbaseApplicationSnapshot): Screen | null { +function interruption(snapshot: MdbaseSnapshot): Screen | null { const { status, readiness, selection } = snapshot; if (status === "closed") { return plain("closed"); @@ -172,7 +169,7 @@ function interruption(snapshot: MdbaseApplicationSnapshot): Screen | null { } /** The step the reader (or the SDK) has to take next. */ -function nextStep(snapshot: MdbaseApplicationSnapshot): ConnectionStatus | null { +function nextStep(snapshot: MdbaseSnapshot): ConnectionStatus | null { const { status, readiness, selection } = snapshot; if (selection.state === "approval_required") { return "approval"; @@ -189,7 +186,7 @@ function nextStep(snapshot: MdbaseApplicationSnapshot): ConnectionStatus | null return status === "unselected" || selection.state === "invalid" ? "choosing" : null; } -function screen(snapshot: MdbaseApplicationSnapshot, usable: boolean): Screen { +function screen(snapshot: MdbaseSnapshot, usable: boolean): Screen { const interrupted = interruption(snapshot); if (interrupted) { return interrupted; @@ -212,7 +209,7 @@ function screen(snapshot: MdbaseApplicationSnapshot, usable: boolean): Screen { * mdbase opening; the SDK's own status is not changed. */ export function connectionView( - snapshot: MdbaseApplicationSnapshot, + snapshot: MdbaseSnapshot, usable: boolean, hostAvailable = true, ): ConnectionView { diff --git a/apps/extension/src/offscreen.ts b/apps/extension/src/offscreen.ts index 537abc88..1f03eb63 100644 --- a/apps/extension/src/offscreen.ts +++ b/apps/extension/src/offscreen.ts @@ -1,6 +1,5 @@ -import { MdbaseConnect } from "@mdbase-reader/connect/native"; +import { createMdbase } from "@mdbase-reader/connect/native"; -import { credentiallessFetch } from "./credentialless-fetch.js"; import { holdSdkHostLock } from "./offscreen-document.js"; import { extensionDeclaration } from "./sdk-declaration.js"; import { sdkHostSource } from "./sdk-host-source.js"; @@ -12,13 +11,11 @@ import { broadcastLink } from "./sdk-rpc.js"; * service worker reach it over sdk-rpc.ts; it has no UI. Offscreen documents only get * chrome.runtime, so sign-in opens from the page whose action started it. */ -globalThis.fetch = credentiallessFetch(globalThis.fetch.bind(globalThis)); - async function start(): Promise { await holdSdkHostLock(); const hostId = crypto.randomUUID(); let host: SdkHost | null = null; - const sdk = new MdbaseConnect(extensionDeclaration(), { + const sdk = createMdbase(extensionDeclaration(), { signIn: { open: (url) => host?.openSignIn(url) }, }); const source = sdkHostSource(sdk, hostId); diff --git a/apps/extension/src/sdk-client.ts b/apps/extension/src/sdk-client.ts index 6930400c..7d56c37a 100644 --- a/apps/extension/src/sdk-client.ts +++ b/apps/extension/src/sdk-client.ts @@ -15,15 +15,15 @@ import { } from "./sdk-rpc.js"; import type { ReaderConnectedCollection } from "@mdbase-reader/connect"; -import type { MdbaseApplication, MdbaseApplicationSnapshot } from "@mdbase-reader/connect/native"; +import type { Mdbase, MdbaseSnapshot } from "@mdbase-reader/connect/native"; /** The parts of the SDK application the extension's pages use. */ export type RemoteApplication = Pick< - MdbaseApplication, + Mdbase, | "getSnapshot" | "subscribe" | "start" - | "authorize" + | "signIn" | "approve" | "select" | "chooseAnother" @@ -76,7 +76,7 @@ class HostConnection { readonly #unlisten: () => void; #nextId = 0; #host: string | null = null; - #snapshot: MdbaseApplicationSnapshot | null = null; + #snapshot: MdbaseSnapshot | null = null; #shape: CollectionShape | null = null; #proxy: { readonly key: string; readonly collection: ReaderConnectedCollection } | null = null; #disposed = false; @@ -94,7 +94,7 @@ class HostConnection { }); } - get snapshot(): MdbaseApplicationSnapshot { + get snapshot(): MdbaseSnapshot { if (!this.#snapshot) { throw new Error(translate`mdbase has not started yet.`); } @@ -318,7 +318,7 @@ export async function createSdkClient( /** An application command whose answer must be an SDK snapshot. */ const command = (method: ApplicationCommand) => - async (...args: unknown[]): Promise => { + async (...args: unknown[]): Promise => { const answer = await connection.call({ app: true }, method, args); if (!isApplicationSnapshot(answer)) { throw new Error(`mdbase answered ${method} with something other than its state.`); @@ -329,7 +329,7 @@ export async function createSdkClient( getSnapshot: () => connection.snapshot, subscribe: (listener) => connection.subscribe(listener), start: command("start"), - authorize: command("authorize"), + signIn: command("signIn"), approve: command("approve"), select: command("select"), chooseAnother: command("chooseAnother"), diff --git a/apps/extension/src/sdk-host-source.ts b/apps/extension/src/sdk-host-source.ts index d35cbf83..7f4b10e9 100644 --- a/apps/extension/src/sdk-host-source.ts +++ b/apps/extension/src/sdk-host-source.ts @@ -1,8 +1,8 @@ import { nativeReaderCollection, type MdbaseApplicationConnection, - type MdbaseApplicationEntry, - type MdbaseApplicationSnapshot, + type Mdbase, + type MdbaseSnapshot, type NativeReaderCollection, } from "@mdbase-reader/connect/native"; import { MemoryStorage, StorageCreateJournal } from "@mdbase-reader/platform"; @@ -18,7 +18,7 @@ import type { SdkHostSource } from "./sdk-host.js"; */ const createStorage = new MemoryStorage(); -function readyEvidence(snapshot: MdbaseApplicationSnapshot): boolean { +function readyEvidence(snapshot: MdbaseSnapshot): boolean { const { readiness } = snapshot; return ( snapshot.status === "ready" && @@ -32,8 +32,8 @@ function readyEvidence(snapshot: MdbaseApplicationSnapshot): boolean { /** The SDK's current READY connection for the selected collection, or null. */ export function readyConnection( - sdk: MdbaseApplicationEntry, - snapshot: MdbaseApplicationSnapshot, + sdk: Mdbase, + snapshot: MdbaseSnapshot, ): MdbaseApplicationConnection | null { const selected = snapshot.selectedCollectionId; if (!selected || !readyEvidence(snapshot)) { @@ -48,13 +48,12 @@ export function readyConnection( * keyed by connection scope: a later snapshot may hand back a new facade for the same * connection, which must not retire them. */ -export function sdkHostSource(sdk: MdbaseApplicationEntry, hostId: string): SdkHostSource { - const application = sdk.application(); +export function sdkHostSource(sdk: Mdbase, hostId: string): SdkHostSource { let opened: { readonly key: string; readonly collection: NativeReaderCollection } | null = null; return { - application, + application: sdk, currentCollection() { - const connection = readyConnection(sdk, application.getSnapshot()); + const connection = readyConnection(sdk, sdk.getSnapshot()); const key = connection ? `${hostId}:${connection.id}:${connection.generation}` : null; if (opened?.key !== key) { opened?.collection.dispose(); diff --git a/apps/extension/src/sdk-host.ts b/apps/extension/src/sdk-host.ts index 1391115a..30bf2ce4 100644 --- a/apps/extension/src/sdk-host.ts +++ b/apps/extension/src/sdk-host.ts @@ -17,10 +17,10 @@ import { } from "./sdk-rpc.js"; import type { ReaderConnectedCollection } from "@mdbase-reader/connect"; -import type { MdbaseApplication } from "@mdbase-reader/connect/native"; +import type { Mdbase } from "@mdbase-reader/connect/native"; export interface SdkHostSource { - readonly application: MdbaseApplication; + readonly application: Mdbase; /** The adapters over the SDK's current READY connection, keyed by connection scope. */ currentCollection(): { readonly key: string; @@ -38,7 +38,7 @@ type CallMessage = Extract; type Method = (...args: unknown[]) => unknown; /** Calls a person starts; a sign-in they lead to opens from that person's page. */ -const interactive = new Set(["authorize", "approve", "chooseAnother", "select", "configure"]); +const interactive = new Set(["signIn", "approve", "chooseAnother", "select", "configure"]); function member(owner: unknown, name: string): Method | null { if (typeof owner !== "object" || owner === null) { diff --git a/apps/extension/src/sdk-rpc-lifetime.test.ts b/apps/extension/src/sdk-rpc-lifetime.test.ts index 02841421..8f92b5be 100644 --- a/apps/extension/src/sdk-rpc-lifetime.test.ts +++ b/apps/extension/src/sdk-rpc-lifetime.test.ts @@ -25,7 +25,7 @@ afterEach(() => { async function fixture(): Promise< ReturnType & { client: SdkClient; - application: ReturnType["entry"]["application"]>; + application: ReturnType["mdbase"]; } > { // Real public SDK lifecycle fixture, not a cast READY application/session. @@ -43,7 +43,7 @@ async function fixture(): Promise< initialSnapshot: signedOutSnapshot, }); fixtures.push(sdk); - const application = sdk.entry.application(); + const application = sdk.mdbase; const bus = memoryBus(); hosts.push( serveSdk(bus.endpoint(), { application, currentCollection: () => null }, "owned-host"), @@ -62,7 +62,7 @@ it("an already-aborted caller cannot invoke a protected SDK action through the b h.controls.setHandler("authorize", () => h.application.getSnapshot()); const caller = new AbortController(); caller.abort(); - await h.client.application.authorize({ signal: caller.signal }).catch(() => undefined); + await h.client.application.signIn({ signal: caller.signal }).catch(() => undefined); expect(h.controls.observedActions().filter((call) => call.action === "authorize")).toHaveLength( 0, ); @@ -78,7 +78,7 @@ it("disposing only this caller rejects its pending call without closing the SDK finish = () => resolve(h.application.getSnapshot()); }), ); - const result = h.client.application.authorize().then( + const result = h.client.application.signIn().then( () => "resolved", () => "rejected", ); diff --git a/apps/extension/src/sdk-rpc.test.ts b/apps/extension/src/sdk-rpc.test.ts index 1234c252..222ab3c0 100644 --- a/apps/extension/src/sdk-rpc.test.ts +++ b/apps/extension/src/sdk-rpc.test.ts @@ -15,7 +15,7 @@ import { import { memoryBus } from "./testing/memory-bus.js"; import { applicationFixture } from "./testing/sdk-fixture.js"; -import type { MdbaseApplicationSnapshot } from "@mdbase-reader/connect/native"; +import type { ApplicationFixtureSnapshot } from "@mdbase-reader/connect/testing"; const owned: { close(): void }[] = []; afterEach(() => { @@ -38,12 +38,12 @@ function host( function fixtureHost( bus: ReturnType, id: string, - initial: Partial = {}, + initial: Partial = {}, ): ReturnType & { served: ReturnType } { const sdk = applicationFixture(initial); owned.push(sdk.controls); const served = host(bus, id, { - application: sdk.entry.application(), + application: sdk.mdbase, currentCollection: () => null, }); return { ...sdk, served }; @@ -66,7 +66,7 @@ async function client( return created; } -const never = new Promise(() => undefined); +const never = new Promise(() => undefined); describe("SDK RPC between extension pages and the offscreen host", () => { it("serves only the public application commands, with the SDK's snapshot", async () => { @@ -104,7 +104,7 @@ describe("SDK RPC between extension pages and the offscreen host", () => { await client(bus, { openSignIn: bystander }); const opener = vi.fn(); const remote = await client(bus, { openSignIn: opener }); - await remote.application.authorize(); + await remote.application.signIn(); await vi.waitFor(() => expect(opener).toHaveBeenCalledWith("https://connect-lab.mdbase.dev/approve"), ); @@ -122,7 +122,7 @@ describe("SDK RPC between extension pages and the offscreen host", () => { hostGone: (id) => new Promise((resolve) => (id === "h1" ? (gone = resolve) : undefined)), }); - const pending = remote.application.authorize(); + const pending = remote.application.signIn(); await vi.waitFor(() => expect(first.controls.observedActions().some((call) => call.action === "authorize")).toBe( true, @@ -161,7 +161,7 @@ describe("SDK RPC between extension pages and the offscreen host", () => { }), ); const remote = await client(bus); - const pending = remote.application.authorize().then( + const pending = remote.application.signIn().then( () => "resolved", (reason: unknown) => (reason instanceof Error ? reason.message : "rejected"), ); @@ -189,7 +189,7 @@ describe("the READY collection over the SDK RPC", () => { const sdk = applicationFixture(); owned.push(sdk.controls); host(bus, "h1", { - application: sdk.entry.application(), + application: sdk.mdbase, currentCollection: () => ({ key: "h1:c:1", collection }), }); const remote = await client(bus); diff --git a/apps/extension/src/sdk-rpc.ts b/apps/extension/src/sdk-rpc.ts index aff47415..664e57a1 100644 --- a/apps/extension/src/sdk-rpc.ts +++ b/apps/extension/src/sdk-rpc.ts @@ -1,6 +1,6 @@ -import type { MdbaseApplicationSnapshot } from "@mdbase-reader/connect/native"; +import type { MdbaseSnapshot } from "@mdbase-reader/connect/native"; -type MdbaseApplicationReadinessSnapshot = MdbaseApplicationSnapshot["readiness"]; +type MdbaseApplicationReadinessSnapshot = MdbaseSnapshot["readiness"]; /** * The extension's SDK channel. One offscreen document owns the SDK (sdk-host.ts); the side @@ -34,7 +34,7 @@ export function broadcastLink(name = sdkChannelName): SdkLink & { close(): void /** The application commands the extension sends; nothing else reaches the SDK. */ export const applicationCommands = [ "start", - "authorize", + "signIn", "approve", "select", "chooseAnother", @@ -354,7 +354,7 @@ export function isReadinessSnapshot(value: unknown): value is MdbaseApplicationR } /** The fields the client reads from a host snapshot; anything else is not one. */ -export function isApplicationSnapshot(value: unknown): value is MdbaseApplicationSnapshot { +export function isApplicationSnapshot(value: unknown): value is MdbaseSnapshot { if (!isObject(value)) { return false; } diff --git a/apps/extension/src/sign-in-recovery.test.tsx b/apps/extension/src/sign-in-recovery.test.tsx index c0253c7b..913bfa6a 100644 --- a/apps/extension/src/sign-in-recovery.test.tsx +++ b/apps/extension/src/sign-in-recovery.test.tsx @@ -34,7 +34,7 @@ async function renderAndApprove( copy: ReturnType, ): Promise { owned.push(h.controls); - const application = h.entry.application(); + const application = h.mdbase; const scope = new AbortController(); const approve = async (): Promise => { await application.approve(undefined, { signal: scope.signal }); @@ -80,7 +80,7 @@ for (const status of ["blocked", "authorizing"] as const) { for (const code of ["refused", "expired"] as const) { it(`${status}/${code} keeps SDK copy and an enabled approval gesture`, async () => { const h = applicationFixture({ status, problem: code }); - const copy = describeError(h.entry.application().getSnapshot()); + const copy = describeError(h.mdbase.getSnapshot()); if (!copy?.actionLabel) { throw new Error("Missing public SDK sign-in description"); } diff --git a/apps/extension/src/testing/sdk-fixture.ts b/apps/extension/src/testing/sdk-fixture.ts index 0f7eefba..c5c08d19 100644 --- a/apps/extension/src/testing/sdk-fixture.ts +++ b/apps/extension/src/testing/sdk-fixture.ts @@ -2,12 +2,12 @@ import { createApplicationFixture } from "@mdbase-reader/connect/testing"; import manifest from "../generated/mdbase-app.json"; -import type { MdbaseApplicationSnapshot } from "@mdbase-reader/connect/native"; +import type { ApplicationFixtureSnapshot } from "@mdbase-reader/connect/testing"; const facet = { checking: false, assessment: null, problem: null }; /** A complete signed-out public snapshot, for the SDK's own application fixture. */ -export const signedOutSnapshot: MdbaseApplicationSnapshot = { +export const signedOutSnapshot: ApplicationFixtureSnapshot = { status: "signed_out", signIn: null, collections: [], @@ -35,7 +35,7 @@ export const signedOutSnapshot: MdbaseApplicationSnapshot = { /** The SDK's public application fixture: test metadata only, never runtime evidence. */ export function applicationFixture( - initial: Partial = {}, + initial: Partial = {}, ): ReturnType { return createApplicationFixture({ declaration: { diff --git a/apps/extension/src/use-extension-capture.test.tsx b/apps/extension/src/use-extension-capture.test.tsx index aabfce2c..3ed3a93b 100644 --- a/apps/extension/src/use-extension-capture.test.tsx +++ b/apps/extension/src/use-extension-capture.test.tsx @@ -30,7 +30,7 @@ const mocks = vi.hoisted(() => ({ clearPageSelection: vi.fn(), prepareCitation: vi.fn(), rememberCollection: vi.fn(), - authorize: vi.fn(), + signIn: vi.fn(), approve: vi.fn(), listeners: new Set<() => void>(), })); @@ -58,7 +58,7 @@ function publish(snapshot: Record): void { const application = { start: mocks.start, select: mocks.select, - authorize: mocks.authorize, + signIn: mocks.signIn, approve: mocks.approve, getSnapshot: (): Record => current, subscribe: (listener: () => void): (() => void) => { @@ -153,7 +153,7 @@ beforeEach(() => { current = readySnapshot("test"); mocks.createSession.mockImplementation(() => Promise.resolve(extension)); mocks.start.mockResolvedValue(undefined); - mocks.authorize.mockResolvedValue(undefined); + mocks.signIn.mockResolvedValue(undefined); mocks.approve.mockResolvedValue(undefined); mocks.select.mockImplementation((id: string) => { publish(readySnapshot(id)); @@ -271,7 +271,7 @@ it("offers sign-in again from a refused sign-in, even while the first is still a await controller.retry(); }); expect(mocks.approve).toHaveBeenCalledTimes(2); - expect(mocks.authorize).not.toHaveBeenCalled(); + expect(mocks.signIn).not.toHaveBeenCalled(); await act(async () => { finish(); await first; diff --git a/apps/reader/package.json b/apps/reader/package.json index 68a1c867..1f429e42 100644 --- a/apps/reader/package.json +++ b/apps/reader/package.json @@ -29,9 +29,9 @@ }, "dependencies": { "@fontsource-variable/source-serif-4": "^5.3.1", - "@mdbase-dev/sdk": "0.1.0-beta.187", - "@mdbase-dev/sdk-lab": "file:../../packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz", - "@mdbase-dev/sdk-staging": "file:../../packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz", + "@mdbase-dev/sdk": "0.1.0-beta.188", + "@mdbase-dev/sdk-lab": "file:../../packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz", + "@mdbase-dev/sdk-staging": "file:../../packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz", "@mdbase-dev/i18n": "0.1.0-beta.149", "@citation-js/plugin-csl": "0.9.0", "@lingui/core": "6.10.1", diff --git a/apps/reader/scripts/reader-sdk.mjs b/apps/reader/scripts/reader-sdk.mjs index 18a8b3a8..c58ce15c 100644 --- a/apps/reader/scripts/reader-sdk.mjs +++ b/apps/reader/scripts/reader-sdk.mjs @@ -10,9 +10,9 @@ import { readerDeployments } from "./deployment-environment.mjs"; const root = fileURLToPath(new URL("../../../", import.meta.url)); const vendor = "packages/connect/vendor/"; const pins = { - lab: ["@mdbase-dev/sdk-lab", "sdk-lab-beta157.json"], - staging: ["@mdbase-dev/sdk-staging", "sdk-staging-beta157.json"], - production: ["@mdbase-dev/sdk", "sdk-production-beta187.json"], + lab: ["@mdbase-dev/sdk-lab", "sdk-lab-beta188.json"], + staging: ["@mdbase-dev/sdk-staging", "sdk-staging-beta188.json"], + production: ["@mdbase-dev/sdk", "sdk-production-beta188.json"], }; const hash = (bytes) => createHash("sha256").update(bytes).digest("hex"); diff --git a/apps/reader/scripts/reader-sdk.test.mjs b/apps/reader/scripts/reader-sdk.test.mjs index 8453cf64..76463ae9 100644 --- a/apps/reader/scripts/reader-sdk.test.mjs +++ b/apps/reader/scripts/reader-sdk.test.mjs @@ -36,7 +36,7 @@ test("all three original archives match installed bytes and packaged target trus const pkg = JSON.parse(await readFile(join(repo, "apps/reader/package.json"), "utf8")); const name = target === "production" ? "@mdbase-dev/sdk" : "@mdbase-dev/sdk-" + target; if (target === "production") { - assert.equal(pkg.dependencies[name], "0.1.0-beta.187"); + assert.equal(pkg.dependencies[name], "0.1.0-beta.188"); } else { assert.ok(pkg.dependencies[name].endsWith(sdk.receipt.artifact)); } @@ -60,8 +60,8 @@ async function fixture(t, name = "@mdbase-dev/sdk-lab") { join(repo, "apps/reader/node_modules", name), join(root, "apps/reader/node_modules/@mdbase-dev/sdk-lab"), ); - const path = join(root, vendor, "sdk-lab-beta157.json"); - await cp(join(repo, vendor, "sdk-lab-beta157.json"), path); + const path = join(root, vendor, "sdk-lab-beta188.json"); + await cp(join(repo, vendor, "sdk-lab-beta188.json"), path); const pin = JSON.parse(await readFile(path, "utf8")); await cp(join(repo, vendor, pin.artifact), join(root, vendor, pin.artifact)); return { root, path, pin }; @@ -76,7 +76,7 @@ test("archive tampering refuses before any SDK import", async (t) => { test("a rehashed production archive cannot masquerade as LAB", async (t) => { const { root, path, pin } = await fixture(t, "@mdbase-dev/sdk"); - const production = "sdk-1907e67f-production-beta187.tgz"; + const production = "sdk-e8ffb806-production-beta188.tgz"; const bytes = await readFile(join(repo, vendor, production)); await cp(join(repo, vendor, production), join(root, vendor, production)); await writeFile( diff --git a/apps/reader/src/HighlightColorSettings.test.tsx b/apps/reader/src/HighlightColorSettings.test.tsx index c689d1ac..fad1954d 100644 --- a/apps/reader/src/HighlightColorSettings.test.tsx +++ b/apps/reader/src/HighlightColorSettings.test.tsx @@ -1,6 +1,5 @@ // @vitest-environment happy-dom /* eslint-disable @typescript-eslint/require-await -- async act flushes React's queued work */ -import { toValue, type PlainValue } from "@mdbase-dev/sdk"; import { nativeReaderCollection } from "@mdbase-reader/connect/native"; import { memoryConnection } from "@mdbase-reader/connect/testing"; import { act } from "react"; @@ -47,13 +46,7 @@ async function open(seed?: Record): Promise<{ memory.replica.seed({ path: settingsPath, types: ["reader-settings"], - // Lists and objects are arrays and data maps in the replica, as a save writes them. - frontmatter: Object.fromEntries( - Object.entries({ ...reserved, ...seed }).map(([key, value]) => [ - key, - toValue(value as PlainValue), - ]), - ), + frontmatter: { ...reserved, ...seed }, }); } const collection = nativeReaderCollection(memory.connection); diff --git a/apps/reader/src/ReaderSaveStatus.test.tsx b/apps/reader/src/ReaderSaveStatus.test.tsx index 4dd0ce9a..2d9f4ca4 100644 --- a/apps/reader/src/ReaderSaveStatus.test.tsx +++ b/apps/reader/src/ReaderSaveStatus.test.tsx @@ -28,9 +28,11 @@ it("offers a reload for old pending writes even while syncing", async () => { } as unknown as Mdbase; const snapshot = { phase: { kind: "starting" }, - writes: { - pending: [{ mutationId: "stalled", records: [], createdAt: Date.now() }], - rejected: [], + sync: { + writes: { + pending: [{ mutationId: "stalled", records: [], createdAt: Date.now() }], + rejected: [], + }, }, }; root = createRoot(host); @@ -52,9 +54,11 @@ it("shows the actual pending change and drops the warning only when the ledger d let snapshot = { phase: { kind: "starting" }, saveWarning: "storage_may_be_evicted", - writes: { - pending: [{ mutationId: "owned-write", records: ["owned-file"], createdAt: Date.now() }], - rejected: [], + sync: { + writes: { + pending: [{ mutationId: "owned-write", records: ["owned-file"], createdAt: Date.now() }], + rejected: [], + }, }, }; const mdbase = { @@ -91,7 +95,7 @@ it("shows the actual pending change and drops the warning only when the ledger d expect(host.querySelector(".reader-save-details > button")).toBeNull(); expect(host.querySelector(".reader-save-details li details")?.hasAttribute("open")).toBe(false); act(() => { - snapshot = { ...snapshot, writes: { pending: [], rejected: [] } }; + snapshot = { ...snapshot, sync: { writes: { pending: [], rejected: [] } } }; changed(); }); expect(host.querySelector("details")).toBeNull(); @@ -105,9 +109,11 @@ it("stays calm offline and starts the stalled timer only on reconnect", async () const snapshot = { phase: { kind: "starting" }, saveWarning: "storage_may_be_evicted", - writes: { - pending: [{ mutationId: "offline", records: [], createdAt: Date.now() - 60_000 }], - rejected: [], + sync: { + writes: { + pending: [{ mutationId: "offline", records: [], createdAt: Date.now() - 60_000 }], + rejected: [], + }, }, }; const mdbase = { @@ -142,12 +148,14 @@ it.each(["saved_on_device", "saving"])( let changed: () => void = () => undefined; let snapshot = { phase: { kind: "starting" }, - sync: { kind: "offline" }, saveWarning: "storage_may_be_evicted", - writes: { - saveState, - pending: [{ mutationId: "offline-sdk", records: [], createdAt: Date.now() }], - rejected: [], + sync: { + connection: "offline", + writes: { + saveState, + pending: [{ mutationId: "offline-sdk", records: [], createdAt: Date.now() }], + rejected: [], + }, }, }; const mdbase = { @@ -165,7 +173,7 @@ it.each(["saved_on_device", "saving"])( expect(host.textContent).not.toContain("may remove"); expect(host.querySelector(".reader-save-details > button")).toBeNull(); act(() => { - snapshot = { ...snapshot, sync: { kind: "synced" } }; + snapshot = { ...snapshot, sync: { ...snapshot.sync, connection: "online" } }; changed(); }); await act(() => vi.advanceTimersByTime(0)); @@ -177,7 +185,7 @@ it.each(["saved_on_device", "saving"])( "Reload Reader", ); act(() => { - snapshot = { ...snapshot, sync: { kind: "offline" } }; + snapshot = { ...snapshot, sync: { ...snapshot.sync, connection: "offline" } }; changed(); }); expect(host.querySelector(".reader-save-details > button")).toBeNull(); @@ -201,38 +209,29 @@ it.each([ const host = document.createElement("div"); document.body.append(host); const snapshot = { - phase: { - kind: "ready", - connection: { - records: { - status: { - incidents: [ - { - kind: "read_only", - details: new Map([ - ["service_code", "append_refused"], - ["reason", "collection_read_only"], - ]), - }, - { kind: "log_regressed", details: new Map() }, - ], - }, + phase: { kind: "ready" }, + sync: { + incidents: [ + { + kind: "read_only", + details: { service_code: "append_refused", reason: "collection_read_only" }, }, + { kind: "log_regressed", details: {} }, + ], + writes: { + pending: Array.from({ length: pending }, () => ({ + mutationId: "retained-refusal", + records: ["retained-record"], + createdAt: Date.now(), + })), + rejected: Array.from({ length: rejected }, () => ({ + mutationId: "rejected-refusal", + records: ["rejected-record"], + createdAt: Date.now(), + problem: { message: "The collection is read-only.", recovery: "contact_support" }, + })), }, }, - writes: { - pending: Array.from({ length: pending }, () => ({ - mutationId: "retained-refusal", - records: ["retained-record"], - createdAt: Date.now(), - })), - rejected: Array.from({ length: rejected }, () => ({ - mutationId: "rejected-refusal", - records: ["rejected-record"], - createdAt: Date.now(), - problem: { message: "The collection is read-only.", recovery: "contact_support" }, - })), - }, }; const mdbase = { subscribe: () => () => undefined, @@ -253,7 +252,7 @@ it.each([ expect(host.querySelector(".reader-save-details > details")?.textContent).toContain( "log_regressed", ); - expect(snapshot.writes.pending).toHaveLength(pending); - expect(snapshot.writes.rejected).toHaveLength(rejected); + expect(snapshot.sync.writes.pending).toHaveLength(pending); + expect(snapshot.sync.writes.rejected).toHaveLength(rejected); }, ); diff --git a/apps/reader/src/ReaderSaveStatus.tsx b/apps/reader/src/ReaderSaveStatus.tsx index 692a7eaf..cf3c35b9 100644 --- a/apps/reader/src/ReaderSaveStatus.tsx +++ b/apps/reader/src/ReaderSaveStatus.tsx @@ -2,7 +2,7 @@ import { Trans, useLingui } from "@lingui/react/macro"; import { useCallback, useContext, useSyncExternalStore, type JSX } from "react"; import { Menu } from "./Menu.js"; -import { sdkSyncIncidents } from "./sdk-connection-state.js"; +import { sdkOffline, sdkSyncIncidents } from "./sdk-connection-state.js"; import { SourceLibraryContext } from "./SourceLibraryContext.js"; import { useSustained } from "./use-sustained.js"; @@ -27,8 +27,8 @@ export function ReaderSaveStatus({ () => mdbase?.getSnapshot() ?? null, () => null, ); - const online = browserOnline && snapshot?.sync?.kind !== "offline"; - const { pending, rejected } = snapshot?.writes ?? { pending: [], rejected: [] }; + const online = browserOnline && !sdkOffline(snapshot); + const { pending, rejected } = snapshot?.sync?.writes ?? { pending: [], rejected: [] }; const incidents = sdkSyncIncidents(snapshot); const needsAttention = rejected.length + incidents.length > 0; const stalled = useSustained(online && Boolean(pending.length), 30_000); @@ -70,7 +70,7 @@ export function ReaderSaveStatus({ function SaveStatusEntries({ entries, }: { - readonly entries: NonNullable["pending"]; + readonly entries: NonNullable["writes"]>["pending"]; }): JSX.Element { const { t } = useLingui(); const sources = useContext(SourceLibraryContext); @@ -165,13 +165,9 @@ function SyncIncidentList({ {incidents.map((incident, index) => { const details = incident.details; const fields: JSX.Element[] = []; - if (details instanceof Map) { - for (const [key, value] of details) { - if ( - typeof key === "string" && - ["service_code", "code", "reason"].includes(key) && - typeof value === "string" - ) { + if (typeof details === "object" && details !== null && !Array.isArray(details)) { + for (const [key, value] of Object.entries(details)) { + if (["service_code", "code", "reason"].includes(key) && typeof value === "string") { fields.push({value}); } } diff --git a/apps/reader/src/sdk-connection-state.test.ts b/apps/reader/src/sdk-connection-state.test.ts index 0df325b5..34704275 100644 --- a/apps/reader/src/sdk-connection-state.test.ts +++ b/apps/reader/src/sdk-connection-state.test.ts @@ -5,31 +5,40 @@ import { sdkConnectionState } from "./sdk-connection-state.js"; import type { Mdbase } from "@mdbase-reader/connect/native"; type Snapshot = ReturnType; -const snapshot = (value: { saveState?: string; kind?: string }): Snapshot => +const snapshot = (value: { saveState?: string; connection?: string }): Snapshot => ({ phase: { kind: "starting" }, - writes: value.saveState ? { saveState: value.saveState, pending: [], rejected: [] } : null, - sync: value.kind ? { kind: value.kind } : null, + sync: { + connection: value.connection ?? "online", + attention: [], + writes: value.saveState ? { saveState: value.saveState, pending: [], rejected: [] } : null, + }, }) as unknown as Snapshot; describe("SDK connection state", () => { it("reports an incident with pending writes as attention, not progress or a fabricated rejection", () => { const pending = { - phase: { - kind: "ready", - connection: { records: { status: { incidents: [{ kind: "read_only" }] } } }, + phase: { kind: "ready" }, + sync: { + connection: "online", + attention: [], + incidents: [{ kind: "read_only" }], + writes: { pending: [{}], rejected: [], saveState: "saved_on_device" }, }, - writes: { pending: [{}], rejected: [], saveState: "saved_on_device" }, } as unknown as Snapshot; expect(sdkConnectionState(pending, "connected")).toBe("attention"); - expect(pending.writes?.rejected).toEqual([]); + expect(pending.sync?.writes?.rejected).toEqual([]); }); it("does not call rejected or parked writes progress", () => { expect( sdkConnectionState( { phase: { kind: "starting" }, - writes: { pending: [], rejected: [{}], saveState: "rejected" }, + sync: { + connection: "online", + attention: [], + writes: { pending: [], rejected: [{}], saveState: "rejected" }, + }, } as unknown as Snapshot, "connected", ), @@ -39,19 +48,26 @@ describe("SDK connection state", () => { ); }); it("never reports connected while offline or waiting to sync", () => { - expect(sdkConnectionState(snapshot({ kind: "offline" }), "connected")).toBe("offline"); + expect(sdkConnectionState(snapshot({ connection: "offline" }), "connected")).toBe("offline"); expect( - sdkConnectionState(snapshot({ kind: "offline", saveState: "saved_on_device" }), "connected"), + sdkConnectionState( + snapshot({ connection: "offline", saveState: "saved_on_device" }), + "connected", + ), ).toBe("saved_on_device"); - expect(sdkConnectionState(snapshot({ kind: "synced", saveState: "saved" }), "connected")).toBe( - "connected", - ); + expect( + sdkConnectionState(snapshot({ connection: "online", saveState: "saved" }), "connected"), + ).toBe("connected"); expect(sdkConnectionState(null, "connected")).toBe("connected"); expect( sdkConnectionState( { phase: { kind: "starting" }, - writes: { pending: [{}], rejected: [], saveState: "saving" }, + sync: { + connection: "online", + attention: [], + writes: { pending: [{}], rejected: [], saveState: "saving" }, + }, } as unknown as Snapshot, "connected", ), diff --git a/apps/reader/src/sdk-connection-state.ts b/apps/reader/src/sdk-connection-state.ts index 2a9c164b..e1910d72 100644 --- a/apps/reader/src/sdk-connection-state.ts +++ b/apps/reader/src/sdk-connection-state.ts @@ -6,13 +6,18 @@ import type { Mdbase } from "@mdbase-reader/connect/native"; const noop = (): void => undefined; type SdkSnapshot = ReturnType; -type SyncIncidents = Extract< - SdkSnapshot["phase"], - { kind: "ready" } ->["connection"]["records"]["status"]["incidents"]; -export function sdkSyncIncidents(snapshot: SdkSnapshot | null): SyncIncidents { - return snapshot?.phase.kind === "ready" ? snapshot.phase.connection.records.status.incidents : []; +export function sdkSyncIncidents( + snapshot: SdkSnapshot | null, +): NonNullable["incidents"] { + return snapshot?.sync?.incidents ?? []; +} + +/** The device has no network or the sync service did not answer. A busy or + * rate-limited service is not offline. */ +export function sdkOffline(snapshot: SdkSnapshot | null): boolean { + const sync = snapshot?.sync; + return sync?.connection === "offline" || sync?.health === "unreachable"; } /** The header's connection state from the SDK: never "connected" while it is @@ -24,26 +29,29 @@ export function sdkConnectionState( if (!snapshot) { return fallback; } + const sync = snapshot.sync; + const writes = sync?.writes; if ( sdkSyncIncidents(snapshot).length || - snapshot.writes?.rejected.length || - (snapshot.sync && + writes?.rejected.length || + sync?.attention.some((reason) => [ "update_required", "account_suspended", "collection_migrating", "collection_not_yet_migrated", - ].includes(snapshot.sync.kind)) + ].includes(reason), + ) ) { return "attention"; } - if (snapshot.writes?.saveState === "saved_on_device") { + if (writes?.saveState === "saved_on_device") { return "saved_on_device"; } - if (snapshot.sync?.kind === "offline") { + if (sdkOffline(snapshot)) { return "offline"; } - if (snapshot.writes?.pending.length || snapshot.saveWarning) { + if (writes?.pending.length || snapshot.saveWarning) { return "syncing"; } return fallback; diff --git a/apps/reader/src/use-source-addition.test.tsx b/apps/reader/src/use-source-addition.test.tsx index df23adc7..4685502c 100644 --- a/apps/reader/src/use-source-addition.test.tsx +++ b/apps/reader/src/use-source-addition.test.tsx @@ -22,8 +22,12 @@ it("clears offline addition errors on reconnect even while existing writes are s vi.stubGlobal("IS_REACT_ACT_ENVIRONMENT", true); const online = vi.spyOn(navigator, "onLine", "get").mockReturnValue(false); const snapshot = { - phase: { kind: "ready", connection: { records: { status: { incidents: [] } } } }, - writes: { pending: [{}], rejected: [], saveState: "saving" }, + phase: { kind: "ready" }, + sync: { + attention: [], + incidents: [], + writes: { pending: [{}], rejected: [], saveState: "saving" }, + }, }; const mdbase = { subscribe: () => () => undefined, diff --git a/changelog.d/sdk-polish-migration.md b/changelog.d/sdk-polish-migration.md new file mode 100644 index 00000000..e94d428f --- /dev/null +++ b/changelog.d/sdk-polish-migration.md @@ -0,0 +1,4 @@ +## Changed + +- Move Reader and the browser extension to the new `@mdbase-dev/sdk` API: one `createMdbase` entry, options-object reads, plain JSON record values and the SDK's `snapshot.sync` status. +- Update the LAB and staging SDK originals from `0.1.0-beta.157` to `0.1.0-beta.188`, the same release as production. diff --git a/packages/connect/package.json b/packages/connect/package.json index 52eb9b1a..e13e4ec6 100644 --- a/packages/connect/package.json +++ b/packages/connect/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@mdbase-dev/connect": "0.1.0-beta.149", - "@mdbase-dev/sdk": "0.1.0-beta.187", + "@mdbase-dev/sdk": "0.1.0-beta.188", "@mdbase-reader/core": "workspace:*", "@mdbase-reader/migration": "workspace:*", "knap": "0.6.0", diff --git a/packages/connect/src/native/create-follow-through.test.ts b/packages/connect/src/native/create-follow-through.test.ts index d7a165ed..33ea086b 100644 --- a/packages/connect/src/native/create-follow-through.test.ts +++ b/packages/connect/src/native/create-follow-through.test.ts @@ -1,4 +1,3 @@ -import { connect } from "@mdbase-dev/sdk"; import { annotationId, collectionId, @@ -268,11 +267,7 @@ describe("create follow-through", () => { const replica = new MemoryReplica({ confirmDelayMs: null, where: whereId }); const journal = new MemoryJournal(); const session = async (): Promise => { - const client = await connect({ - connector: replica.connector(), - app: { name: "reader-native-test", version: "test" }, - reconnect: false, - }); + const client = await replica.client(); cleanup.push(() => client.close()); return { ...(await memoryConnectionFor(replica)), records: client, files: client.files }; }; @@ -296,11 +291,7 @@ describe("create follow-through", () => { it("reconciles when the link opens again after a refusal it missed", async () => { const replica = new MemoryReplica({ confirmDelayMs: null, where: whereId }); - const client = await connect({ - connector: replica.connector(), - app: { name: "reader-native-test", version: "test" }, - reconnect: { minDelayMs: 10, maxDelayMs: 20 }, - }); + const client = await replica.client({ reconnect: { minDelayMs: 10, maxDelayMs: 20 } }); cleanup.push(() => client.close()); const journal = new MemoryJournal(); const collection = open( diff --git a/packages/connect/src/native/index.ts b/packages/connect/src/native/index.ts index d1693bcc..c7e5545e 100644 --- a/packages/connect/src/native/index.ts +++ b/packages/connect/src/native/index.ts @@ -1,18 +1,15 @@ import { createMdbase, type Mdbase, type MdbaseApplicationDeclaration } from "@mdbase-dev/sdk"; -export { MdbaseConnect, describeError, isMdbaseError, summarizeStatus } from "@mdbase-dev/sdk"; +export { createMdbase, describeError, isMdbaseError } from "@mdbase-dev/sdk"; export { nativeReaderCollection } from "./native-collection.js"; export type { NativeReaderCollection } from "./native-collection.js"; export type { - MdbaseApplication, MdbaseApplicationConnection, MdbaseApplicationDeclaration, - MdbaseApplicationEntry, - MdbaseApplicationSnapshot, MdbaseApplicationSelectionSnapshot, MdbaseErrorDescription, - MdbaseConnectOptions, + MdbaseOptions, MdbaseSignInOpener, MdbaseSetupPlan, Mdbase, diff --git a/packages/connect/src/native/native-client.test.ts b/packages/connect/src/native/native-client.test.ts index 9de8f3c2..3693566c 100644 --- a/packages/connect/src/native/native-client.test.ts +++ b/packages/connect/src/native/native-client.test.ts @@ -1,4 +1,4 @@ -import { connect, MdbaseError, type MdbaseClient } from "@mdbase-dev/sdk"; +import { MdbaseError, type MdbaseClient } from "@mdbase-dev/sdk"; import { MemoryReplica, type MemoryContract, @@ -31,11 +31,7 @@ async function native( receiptWaitMs?: number, ): Promise<{ replica: MemoryReplica; client: NativeReaderClient; sdk: MdbaseClient }> { const replica = new MemoryReplica({ confirmDelayMs: 0, ...options }); - const sdk = await connect({ - connector: replica.connector(), - app: { name: "reader-native-test", version: "test" }, - reconnect: false, - }); + const sdk = await replica.client(); clients.push(sdk); return { replica, diff --git a/packages/connect/src/native/native-client.ts b/packages/connect/src/native/native-client.ts index 4ac9613e..7dec4c0c 100644 --- a/packages/connect/src/native/native-client.ts +++ b/packages/connect/src/native/native-client.ts @@ -10,7 +10,6 @@ import { nativeQuery, outcome, OutcomeUnknown, - plain, queryRecord, recordDocument, resultMeta, @@ -146,7 +145,7 @@ class NativeRecords implements NativeReaderClient { const signal = this.#scope(options.signal); let receipt: Receipt; try { - receipt = await this.client.receipt(mutationId, signal); + receipt = await this.client.receipt(mutationId, { signal }); } catch (error) { // `receipt(id)` fails `not_found` once the replica no longer keeps it (§6: at least // 24 hours after it leaves `pending`), or when nothing was captured under that ID. @@ -160,13 +159,16 @@ class NativeRecords implements NativeReaderClient { }, recordAt: async (path, options = {}) => { const signal = this.#scope(options.signal); - const record = await this.client.find({ path }, { effective: true }, signal); + const record = await this.client.find({ path }, { include: { effective: true }, signal }); this.#check(signal); return record ? createdRecord(record) : null; }, local: async (replicaId, options = {}) => { const signal = this.#scope(options.signal); - const record = await this.client.find(replicaId, { effective: true, body: true }, signal); + const record = await this.client.find(replicaId, { + include: { effective: true, body: true }, + signal, + }); this.#check(signal); return record ? localRecord(record) : null; }, @@ -201,11 +203,13 @@ class NativeRecords implements NativeReaderClient { const signal = this.#scope(options.signal); if (input.contract) { // Contract views carry contract fields only; the body is never part of them. - const view = await this.client.getContract({ path: input.path }, input.contract, signal); + const view = await this.client.getContract({ path: input.path }, input.contract, { + signal, + }); this.#check(signal); return contractDocument(view); } - const record = await this.client.get({ path: input.path }, fullInclude, signal); + const record = await this.client.get({ path: input.path }, { include: fullInclude, signal }); this.#check(signal); return recordDocument(record); }); @@ -224,7 +228,7 @@ class NativeRecords implements NativeReaderClient { let next = 0; const worker = async (): Promise => { for (let path = unique[next++]; path !== undefined; path = unique[next++]) { - const record = await this.client.find({ path }, include, signal); + const record = await this.client.find({ path }, { include, signal }); this.#check(signal); if (record && (!types || record.types.some((type) => types.has(type)))) { found.set(path, record); @@ -265,7 +269,7 @@ class NativeRecords implements NativeReaderClient { return { results: rows, meta: last ? resultMeta(last) : { hasMore: false } }; } const { query, include } = nativeQuery(input); - const result = await this.client.query(query, include, signal); + const result = await this.client.query(query, { include, signal }); this.#check(signal); return { results: result.records.map(queryRecord), meta: resultMeta(result) }; }); @@ -505,10 +509,10 @@ class NativeRecords implements NativeReaderClient { contract?: ContractSelector, ): Promise { if (contract) { - await this.client.getContract({ path }, contract, signal); + await this.client.getContract({ path }, contract, { signal }); this.#check(signal); } - const record = await this.client.get({ path }, fullInclude, signal); + const record = await this.client.get({ path }, { include: fullInclude, signal }); this.#check(signal); if (ifRevision !== undefined && record.revision !== ifRevision) { throw new MdbaseError({ @@ -586,7 +590,7 @@ class NativeRecords implements NativeReaderClient { async #captured(mutationId: string): Promise { try { - await this.client.receipt(mutationId, AbortSignal.timeout(10_000)); + await this.client.receipt(mutationId, { signal: AbortSignal.timeout(10_000) }); return true; } catch (error) { return !isMdbaseError(error, "not_found"); @@ -606,13 +610,13 @@ class NativeRecords implements NativeReaderClient { this.#check(signal); // Still pending after the wait is saved on this device, not a failure. const receipt = await this.client - .awaitReceipt(mutation.mutationId, this.receiptWaitMs, signal) + .awaitReceipt(mutation.mutationId, { timeoutMs: this.receiptWaitMs, signal }) .catch((error: unknown) => { if (isMdbaseError(error, "cancelled")) { throw error; } this.#check(signal); - return this.client.receipt(mutation.mutationId, signal); + return this.client.receipt(mutation.mutationId, { signal }); }); this.#check(signal); if (receipt.mutation !== mutation.mutationId) { @@ -635,7 +639,7 @@ class NativeRecords implements NativeReaderClient { if (mutation.operation === "delete") { return null; } - const record = await this.client.get(mutation.record, fullInclude, signal); + const record = await this.client.get(mutation.record, { include: fullInclude, signal }); this.#check(signal); if ( typeof mutation.record === "string" @@ -648,7 +652,7 @@ class NativeRecords implements NativeReaderClient { throw new OutcomeUnknown(mutation.mutationId); } if (mutation.contract) { - const view = await this.client.getContract(record, mutation.contract, signal); + const view = await this.client.getContract(record, mutation.contract, { signal }); this.#check(signal); return contractDocument(view); } @@ -664,7 +668,7 @@ class NativeRecords implements NativeReaderClient { if (input.document !== undefined || input.body !== undefined) { throw unsupported("Contract updates change contract fields only, not the body."); } - const view = await this.client.getContract({ path: input.path }, contract, signal); + const view = await this.client.getContract({ path: input.path }, contract, { signal }); this.#check(signal); const changes = { contract, @@ -683,7 +687,7 @@ class NativeRecords implements NativeReaderClient { const { query, include } = nativeQuery({ ...input, limit: pageSize }); const uniquePath = /^file\.path == "(?:[^"\\]|\\.)*"$/u.test(input.where ?? ""); let loaded = 0; - for await (const page of this.client.pages(query, include, signal)) { + for await (const page of this.client.pages(query, { include, signal })) { this.#check(signal); loaded += page.records.length; if ( @@ -763,7 +767,7 @@ function contractRow( "A record implements this contract more than once; choose its type explicitly.", ); } - const fields = plain(projection.fields); + const fields = projection.fields; return { path: view.path, revision: view.revision, @@ -825,7 +829,7 @@ function mutationState(receipt: Receipt): ReaderMutationState { * even while later local edits are pending. */ function createdRecord(record: RecordView): ReaderCreatedRecord { - const fields = plain(record.effective ?? record.frontmatter); + const fields = record.effective ?? record.frontmatter; return { id: fields["id"], confirmed: record.state.state === "confirmed" || record.state.confirmedSeq > 0, @@ -837,7 +841,7 @@ function localRecord(record: RecordView): ReaderLocalRecord { ...createdRecord(record), path: record.path, // As written: what a create has to write again, without derived defaults. - frontmatter: plain(record.frontmatter), + frontmatter: record.frontmatter, ...(record.body === undefined ? {} : { body: record.body }), }; } diff --git a/packages/connect/src/native/native-collection.ts b/packages/connect/src/native/native-collection.ts index 072bb35f..2cc61e32 100644 --- a/packages/connect/src/native/native-collection.ts +++ b/packages/connect/src/native/native-collection.ts @@ -1,4 +1,4 @@ -import { MdbaseError, toPlain } from "@mdbase-dev/sdk"; +import { MdbaseError } from "@mdbase-dev/sdk"; import { collectionId } from "@mdbase-reader/core"; import { ConnectAnnotationAssetRepository } from "../annotation-assets.js"; @@ -17,7 +17,7 @@ import { ConnectSourceImportRepository } from "../source-imports.js"; import { nativeReaderClient } from "./native-client.js"; import { nativeReaderFiles } from "./native-files.js"; -import { plain, recordDocument } from "./native-mapping.js"; +import { recordDocument } from "./native-mapping.js"; import { NativeMigrationTarget } from "./native-migration.js"; import type { ReaderConnectedCollection } from "../application-session.js"; @@ -76,7 +76,7 @@ export function nativeReaderCollection( : noop; const settings = new ReaderSettingsStore(client, { watch: (path, onChange) => - connection.records.watchChanges(undefined, (batch) => { + connection.records.watchChanges((batch) => { if (current() && (batch.reset || batch.changes.some((change) => change.path === path))) { onChange(); } @@ -98,7 +98,7 @@ export function nativeReaderCollection( bodyRecovery: new ConnectBodyUpdateRecovery(client), ...(options.creates ? { createFollowThrough: creates } : {}), subscribeSourceChanges: (listener) => { - const watch = connection.records.watchChanges(undefined, (batch) => { + const watch = connection.records.watchChanges((batch) => { if (current() && (batch.reset || batch.changes.some(mayBeSource))) { listener(); } @@ -191,7 +191,7 @@ function nativeLibraryViews( return { async list(options = {}) { check(options.signal); - const listed = await sdk.views.list(undefined, options.signal); + const listed = await sdk.views.list(options); check(options.signal); return { views: listed.sources.map((source) => ({ @@ -204,7 +204,7 @@ function nativeLibraryViews( properties: view.properties.map((property) => ({ ...property })), ...(view.presentation === undefined ? {} - : { presentation: toPlain(view.presentation) as SavedViewPresentation }), + : { presentation: view.presentation as SavedViewPresentation }), })), })), meta: { totalCount: listed.sources.length }, @@ -259,7 +259,7 @@ function viewExecution(result: QueryResult, input: ExecuteViewInput): SavedViewE frontmatter: document.frontmatter, effectiveFrontmatter: document.effectiveFrontmatter, file: document.file, - ...(record.values ? { values: plain(record.values) } : {}), + ...(record.values ? { values: record.values } : {}), }; }), meta: { @@ -270,9 +270,9 @@ function viewExecution(result: QueryResult, input: ExecuteViewInput): SavedViewE ...(result.groups ? { groups: result.groups.map((group) => ({ - values: plain(group.values), + values: group.values, count: group.count, - summaries: plain(group.summaries), + summaries: group.summaries ?? {}, })), } : {}), diff --git a/packages/connect/src/native/native-files.test.ts b/packages/connect/src/native/native-files.test.ts index 85e6943f..82dad510 100644 --- a/packages/connect/src/native/native-files.test.ts +++ b/packages/connect/src/native/native-files.test.ts @@ -41,7 +41,7 @@ describe("native file confirmation", () => { await expect(adapter.upload("reading.html", new Blob(["reading"]))).resolves.toMatchObject({ fileId: "file", }); - expect(awaitReceipt).toHaveBeenCalledWith("mutation", 30_000, undefined); + expect(awaitReceipt).toHaveBeenCalledWith("mutation", { timeoutMs: 30_000 }); expect(files.get).toHaveBeenCalledOnce(); }); @@ -67,7 +67,7 @@ describe("native file confirmation", () => { const { adapter, awaitReceipt, files } = fixture(); const controller = new AbortController(); awaitReceipt.mockImplementation( - (_id, _timeout, signal: AbortSignal) => + (_id, { signal }: { signal: AbortSignal }) => new Promise((_resolve, reject) => { signal.addEventListener("abort", () => reject(signal.reason as Error), { once: true }); }), diff --git a/packages/connect/src/native/native-files.ts b/packages/connect/src/native/native-files.ts index 710bfa4f..0df49302 100644 --- a/packages/connect/src/native/native-files.ts +++ b/packages/connect/src/native/native-files.ts @@ -48,7 +48,7 @@ export function nativeReaderFiles( check(options.signal); const view = await files.get( target.path === undefined ? target.fileId : { path: target.path }, - options.signal, + options, ); check(options.signal); return connectSuccess(descriptor(view)); @@ -98,10 +98,10 @@ export function nativeReaderFiles( } } check(options.signal); - const receipt = await client.awaitReceipt(write.mutationId, 30_000, options.signal); + const receipt = await client.awaitReceipt(write.mutationId, { ...options, timeoutMs: 30_000 }); check(options.signal); requireConfirmedUpload(receipt, path); - const view = await files.get(write.fileId, options.signal); + const view = await files.get(write.fileId, options); check(options.signal); return descriptor(view); } @@ -110,7 +110,7 @@ export function nativeReaderFiles( stat, async download(file, options = {}) { check(options.signal); - const view = await files.get(file.fileId, options.signal); + const view = await files.get(file.fileId, options); check(options.signal); if (view.digest !== file.contentDigest) { throw new MdbaseError({ diff --git a/packages/connect/src/native/native-mapping.ts b/packages/connect/src/native/native-mapping.ts index bfb4294d..8e85190b 100644 --- a/packages/connect/src/native/native-mapping.ts +++ b/packages/connect/src/native/native-mapping.ts @@ -1,11 +1,10 @@ import { connectFailure, connectProblem, connectSuccess } from "@mdbase-dev/connect/advanced"; -import { isMdbaseError, MdbaseError, toPlain } from "@mdbase-dev/sdk"; +import { isMdbaseError, MdbaseError } from "@mdbase-dev/sdk"; import type { ReaderConnectProblem } from "../validation-issues.js"; import type { ConnectOutcome, ConnectProblemCode, - JsonObject, QueryInput, QueryMetadataInput, QueryMetadataRecord, @@ -19,7 +18,6 @@ import type { Query, QueryResult as NativeQueryResult, RecordView, - Value, } from "@mdbase-dev/sdk"; /** A native write whose outcome is not yet settled; carries its original mutation ID. */ @@ -111,10 +109,6 @@ export function nativeQuery(input: QueryInput | QueryMetadataInput): { }; } -export function plain(value: ReadonlyMap | undefined): JsonObject { - return value ? Object.fromEntries([...value].map(([key, item]) => [key, toPlain(item)])) : {}; -} - export function fileMetadata( record: Pick & Partial>, ): RecordDocument["file"] { @@ -134,8 +128,8 @@ export function recordDocument(record: RecordView): RecordDocument { path: record.path, revision: record.revision, types: [...record.types], - frontmatter: plain(record.frontmatter), - effectiveFrontmatter: plain(record.effective ?? record.frontmatter), + frontmatter: record.frontmatter, + effectiveFrontmatter: record.effective ?? record.frontmatter, ...(record.body === undefined ? {} : { body: record.body }), ...(record.document === undefined ? {} : { document: record.document }), file: fileMetadata(record), @@ -144,7 +138,7 @@ export function recordDocument(record: RecordView): RecordDocument { /** A contract view as Connect returns it: contract fields, no body (prod parity). */ export function contractDocument(view: ContractRecordView): RecordDocument { - const fields = plain(view.fields); + const fields = view.fields; return { path: view.path, revision: view.revision, @@ -161,11 +155,11 @@ export function queryRecord(record: RecordView): QueryRecord { path: record.path, revision: record.revision, types: [...record.types], - frontmatter: plain(record.frontmatter), - effectiveFrontmatter: plain(record.effective ?? record.frontmatter), + frontmatter: record.frontmatter, + effectiveFrontmatter: record.effective ?? record.frontmatter, ...(record.body === undefined ? {} : { body: record.body }), file: fileMetadata(record), - ...(record.values ? { values: plain(record.values) } : {}), + ...(record.values ? { values: record.values } : {}), }; } @@ -174,7 +168,7 @@ export function metadataRecord(record: RecordView): QueryMetadataRecord { path: record.path, types: [...record.types], revision: record.revision, - values: plain(record.values), + values: record.values ?? {}, }; } diff --git a/packages/connect/src/native/testing.ts b/packages/connect/src/native/testing.ts index 92169af7..1bf47449 100644 --- a/packages/connect/src/native/testing.ts +++ b/packages/connect/src/native/testing.ts @@ -1,11 +1,15 @@ /** Test-only native fixtures for Reader apps: the SDK's public application and app * fixtures and a real SDK client over MemoryReplica. None is native/LAB evidence. */ -import { connect, MdbasePeopleClient, type MdbaseApplicationConnection } from "@mdbase-dev/sdk"; +import { MdbasePeopleClient, type MdbaseApplicationConnection } from "@mdbase-dev/sdk"; import { MemoryReplica, type MemoryReplicaOptions } from "@mdbase-dev/sdk/testing"; export { createApplicationFixture, createTestApp, MemoryReplica } from "@mdbase-dev/sdk/testing"; export { mdbaseError } from "@mdbase-dev/sdk"; -export type { ApplicationFixture, TestApp } from "@mdbase-dev/sdk/testing"; +export type { + ApplicationFixture, + ApplicationFixtureSnapshot, + TestApp, +} from "@mdbase-dev/sdk/testing"; export async function memoryConnection(options: MemoryReplicaOptions = {}): Promise<{ readonly replica: MemoryReplica; @@ -14,11 +18,7 @@ export async function memoryConnection(options: MemoryReplicaOptions = {}): Prom readonly close: () => void; }> { const replica = new MemoryReplica({ confirmDelayMs: 0, ...options }); - const client = await connect({ - connector: replica.connector(), - app: { name: "reader-native-test", version: "test" }, - reconnect: false, - }); + const client = await replica.client({ app: { name: "reader-native-test", version: "test" } }); let current = true; const isCurrent = (): boolean => current; const connection: MdbaseApplicationConnection = { diff --git a/packages/connect/src/next-reader-records.test.ts b/packages/connect/src/next-reader-records.test.ts index 83c205ae..843b1da7 100644 --- a/packages/connect/src/next-reader-records.test.ts +++ b/packages/connect/src/next-reader-records.test.ts @@ -1,4 +1,4 @@ -import { connect, MdbaseError, toValue, type MdbaseClient, type wire } from "@mdbase-dev/sdk"; +import { MdbaseError, type DescribeResult, type MdbaseClient } from "@mdbase-dev/sdk"; import { MemoryReplica } from "@mdbase-dev/sdk/testing"; import { afterEach, describe, expect, it, vi, type MockInstance } from "vitest"; @@ -14,7 +14,7 @@ interface Fixture { source: ReturnType; annotation: ReturnType; client: MdbaseClient; - catalog: wire.DescribeResult; + catalog: DescribeResult; describe: MockInstance; records: NextReaderRecords; } @@ -36,7 +36,7 @@ async function fixture(): Promise { caption: "A paper", medium: "article", captured: "2026-10-10T10:00:00Z", - citation: toValue({ title: "A paper" }), + citation: { title: "A paper" }, }, body: "User-authored literature note\n", }); @@ -56,17 +56,13 @@ async function fixture(): Promise { types: ["note"], frontmatter: { id: "not-a-source", title: "Not admitted" }, }); - const client = await connect({ - connector: replica.connector(), - app: { name: "reader-data-test", version: "test" }, - reconnect: false, - }); + const client = await replica.client(); clients.push(client); // Synthetic exact contract/type metadata over actual SDK record frames. This // does not qualify Reader's native manifest/parser/runtime or sign-in setup. - const catalog: wire.DescribeResult = { + const catalog: DescribeResult = { specVersion: "0.3.0", - settings: new Map(), + settings: {}, inclusion: { include: [] }, issues: [], contracts: [ @@ -93,15 +89,13 @@ async function fixture(): Promise { { contract: sourceContract.id, version: sourceContract.version, - fields: new Map( - Object.entries({ - id: "work_id", - title: "caption", - kind: "medium", - saved_at: "captured", - csl: "citation", - }), - ), + fields: { + id: "work_id", + title: "caption", + kind: "medium", + saved_at: "captured", + csl: "citation", + }, }, ], }, @@ -112,14 +106,12 @@ async function fixture(): Promise { { contract: annotationContract.id, version: annotationContract.version, - fields: new Map( - Object.entries({ - id: "mark_id", - source: "for_work", - annotation_type: "mark_kind", - created_at: "made_at", - }), - ), + fields: { + id: "mark_id", + source: "for_work", + annotation_type: "mark_kind", + created_at: "made_at", + }, }, ], }, @@ -157,15 +149,14 @@ describe("NextReaderRecords (SDK stand-in, not native/LAB acceptance)", () => { expect(sources[0]?.record.id).toBe(f.source.id); expect(sources[0]?.providerType).toBe("bibliography-item"); expect(sources[0]?.fields.get("title")).toBe("A paper"); - expect(sources[0]?.fields.get("csl")).toBeInstanceOf(Map); - expect(sources[0]?.record.frontmatter.has("caption")).toBe(true); + expect(sources[0]?.fields.get("csl")).toEqual({ title: "A paper" }); + expect(sources[0]?.record.frontmatter).toHaveProperty("caption"); expect(sources[0]?.record.body).toBeUndefined(); expect(sources[0]?.record.document).toBeUndefined(); expect(sources[0]?.record.state.state).toBe("confirmed"); expect(query).toHaveBeenCalledWith( { types: ["bibliography-item"], limit: 1000 }, - { effective: true }, - expect.any(AbortSignal), + { include: { effective: true }, signal: expect.any(AbortSignal) }, ); expect(get).not.toHaveBeenCalled(); const annotations = await collect(f.records.annotations(signal())); @@ -179,7 +170,9 @@ describe("NextReaderRecords (SDK stand-in, not native/LAB acceptance)", () => { async (domain) => { const f = await fixture(); const id = domain === "source" ? f.source.id : f.annotation.id; - const expected = await f.client.get(id, { body: true, document: true, effective: true }); + const expected = await f.client.get(id, { + include: { body: true, document: true, effective: true }, + }); vi.spyOn(f.client, "get").mockResolvedValue(expected); const result = domain === "source" @@ -231,10 +224,10 @@ describe("NextReaderRecords (SDK stand-in, not native/LAB acceptance)", () => { f.catalog.types[0]!.implements.push(implementation); } if (failure === "required") { - implementation.fields.delete("id"); + delete implementation.fields["id"]; } if (failure === "nested") { - implementation.fields.set("title", "bibliography.title"); + implementation.fields["title"] = "bibliography.title"; } const query = vi.spyOn(f.client, "query"); await expect(collect(f.records.sources(signal()))).rejects.toThrow(); @@ -260,9 +253,7 @@ describe("NextReaderRecords full source (SDK stand-in, not native/LAB acceptance async (failure) => { const f = await fixture(); const record = await f.client.get(f.source.id, { - body: true, - document: true, - effective: true, + include: { body: true, document: true, effective: true }, }); if (failure === "body") { delete record.body; @@ -282,7 +273,9 @@ describe("NextReaderRecords full source (SDK stand-in, not native/LAB acceptance it("retains native pending/protected state without calling it saved or resubmitting", async () => { const f = await fixture(); - const record = await f.client.get(f.source.id, { body: true, document: true, effective: true }); + const record = await f.client.get(f.source.id, { + include: { body: true, document: true, effective: true }, + }); record.state = { ...record.state, state: "pending", @@ -297,12 +290,14 @@ describe("NextReaderRecords full source (SDK stand-in, not native/LAB acceptance it("uses effective fields but leaves the genuine record unchanged", async () => { const f = await fixture(); - const record = await f.client.get(f.source.id, { body: true, document: true, effective: true }); - record.effective = new Map(record.frontmatter).set("caption", "Effective title"); + const record = await f.client.get(f.source.id, { + include: { body: true, document: true, effective: true }, + }); + record.effective = { ...record.frontmatter, caption: "Effective title" }; vi.spyOn(f.client, "get").mockResolvedValue(record); const projected = await f.records.getSource(record.id, signal()); expect(projected.fields.get("title")).toBe("Effective title"); - expect(projected.record.frontmatter.get("caption")).toBe("A paper"); + expect(projected.record.frontmatter["caption"]).toBe("A paper"); expect(projected.record).toBe(record); }); @@ -317,8 +312,7 @@ describe("NextReaderRecords full source (SDK stand-in, not native/LAB acceptance expect((await f.records.getSource(selected, signal())).record.id).toBe(f.source.id); expect(get).toHaveBeenCalledWith( { path: f.source.path }, - { body: true, document: true, effective: true }, - expect.any(AbortSignal), + { include: { body: true, document: true, effective: true }, signal: expect.any(AbortSignal) }, ); }); }); @@ -326,7 +320,9 @@ describe("NextReaderRecords full source (SDK stand-in, not native/LAB acceptance describe("NextReaderRecords identity/provider safety (SDK stand-in)", () => { it("refuses an SDK readback that switches the selected UUID", async () => { const f = await fixture(); - const record = await f.client.get(f.source.id, { body: true, document: true, effective: true }); + const record = await f.client.get(f.source.id, { + include: { body: true, document: true, effective: true }, + }); vi.spyOn(f.client, "get").mockResolvedValue({ ...record, id: f.annotation.id }); await expect(f.records.getSource(f.source.id, signal())).rejects.toThrow( "selected native identity", @@ -335,7 +331,9 @@ describe("NextReaderRecords identity/provider safety (SDK stand-in)", () => { it("refuses records outside or ambiguous across admitted providers", async () => { const f = await fixture(); - const record = await f.client.get(f.source.id, { body: true, document: true, effective: true }); + const record = await f.client.get(f.source.id, { + include: { body: true, document: true, effective: true }, + }); const get = vi.spyOn(f.client, "get"); get.mockResolvedValue({ ...record, types: ["reader-source"] }); await expect(f.records.getSource(record.id, signal())).rejects.toThrow( @@ -353,7 +351,7 @@ describe("NextReaderRecords identity/provider safety (SDK stand-in)", () => { const get = f.client.get.bind(f.client); vi.spyOn(f.client, "get").mockImplementation(async (...args) => { const record = await get(...args); - f.catalog.types[0]!.implements[0]!.fields.set("title", "other_caption"); + f.catalog.types[0]!.implements[0]!.fields["title"] = "other_caption"; return record; }); await expect(f.records.getSource(f.source.id, signal())).rejects.toThrow("bindings changed"); @@ -361,9 +359,11 @@ describe("NextReaderRecords identity/provider safety (SDK stand-in)", () => { it("refuses records missing required role values", async () => { const f = await fixture(); - const record = await f.client.get(f.source.id, { body: true, document: true, effective: true }); - record.frontmatter.delete("work_id"); - record.effective?.delete("work_id"); + const record = await f.client.get(f.source.id, { + include: { body: true, document: true, effective: true }, + }); + delete record.frontmatter["work_id"]; + delete record.effective?.["work_id"]; vi.spyOn(f.client, "get").mockResolvedValue(record); await expect(f.records.getSource(record.id, signal())).rejects.toThrow( "lacks required contract fields", @@ -377,10 +377,10 @@ describe("NextReaderRecords pagination/lifetime (SDK stand-in)", () => { async (failure) => { const f = await fixture(); vi.spyOn(f.client, "pages").mockImplementation(async function* () { - const record = await f.client.get(f.source.id, { effective: true }); + const record = await f.client.get(f.source.id, { include: { effective: true } }); yield { records: [record], complete: failure !== "incomplete", asOf: 1 }; if (failure === "bindings") { - f.catalog.types[0]!.implements[0]!.fields.set("title", "other_caption"); + f.catalog.types[0]!.implements[0]!.fields["title"] = "other_caption"; } yield { records: failure === "duplicate" ? [record] : [], diff --git a/packages/connect/src/next-reader-records.ts b/packages/connect/src/next-reader-records.ts index fbdb7dd9..7ab8b0b5 100644 --- a/packages/connect/src/next-reader-records.ts +++ b/packages/connect/src/next-reader-records.ts @@ -1,4 +1,11 @@ -import { revisionOf, type MdbaseClient, type RecordRef, type wire } from "@mdbase-dev/sdk"; +import { + revisionOf, + type JsonValue, + type MdbaseClient, + type RecordRef, + type RecordView, + type wire, +} from "@mdbase-dev/sdk"; import { annotationContract, sourceContract } from "./contracts.js"; @@ -10,9 +17,9 @@ export interface NextReaderContractDigests { } export interface NextReaderRecord { - readonly record: wire.RecordView; + readonly record: RecordView; readonly providerType: string; - readonly fields: ReadonlyMap; + readonly fields: ReadonlyMap; } type Domain = keyof NextReaderContractDigests; @@ -24,7 +31,7 @@ const required = { }; /** Native read-only source/annotation foundation, not a Connect-shaped SDK - * facade. Returns actual SDK views/tagged values, retaining native state and + * facade. Returns actual SDK views and values, retaining native state and * identities. Sign-in/collection lifetime and all writes remain SDK-owned. */ export class NextReaderRecords { private readonly digests: NextReaderContractDigests; @@ -59,7 +66,7 @@ export class NextReaderRecords { private async providers(domain: Domain, signal: AbortSignal): Promise { signal.throwIfAborted(); - const catalog = await this.client.describe(signal); + const catalog = await this.client.describe({ signal }); signal.throwIfAborted(); const expected = contracts[domain]; const matching = catalog.contracts.filter( @@ -85,7 +92,7 @@ export class NextReaderRecords { if (!binding) { continue; } - const fields = new Map(binding.fields); + const fields = new Map(Object.entries(binding.fields)); if (required[domain].some((role) => !fields.get(role))) { throw new Error(`The Reader ${domain} provider lacks required field bindings.`); } @@ -109,8 +116,7 @@ export class NextReaderRecords { let asOf: number | undefined; for await (const page of this.client.pages( { types: [...providers.keys()], limit: 1000 }, - { effective: true }, - signal, + { include: { effective: true }, signal }, )) { signal.throwIfAborted(); if (!page.complete) { @@ -143,11 +149,10 @@ export class NextReaderRecords { const selected: RecordRef = typeof ref === "string" ? ref : "id" in ref ? ref.id : { path: ref.path }; const providers = await this.providers(domain, signal); - const record = await this.client.get( - selected, - { body: true, document: true, effective: true }, + const record = await this.client.get(selected, { + include: { body: true, document: true, effective: true }, signal, - ); + }); signal.throwIfAborted(); if (typeof selected === "string" ? record.id !== selected : record.path !== selected.path) { throw new Error("The Reader record changed its selected native identity."); @@ -187,20 +192,20 @@ export class NextReaderRecords { } } -function project(domain: Domain, record: wire.RecordView, providers: Providers): NextReaderRecord { +function project(domain: Domain, record: RecordView, providers: Providers): NextReaderRecord { const matching = record.types.filter((type) => providers.has(type)); const providerType = matching[0]; if (matching.length !== 1 || !providerType) { throw new Error("Reader cannot select a unique admitted provider for this record."); } const values = record.effective ?? record.frontmatter; - const fields = new Map(); + const fields = new Map(); const binding = providers.get(providerType); if (!binding) { throw new Error("The Reader provider is no longer admitted."); } for (const [role, field] of binding) { - const value = values.get(field); + const value = values[field]; if (value !== undefined) { fields.set(role, value); } diff --git a/packages/connect/src/reader-settings.test.ts b/packages/connect/src/reader-settings.test.ts index 3e257eb3..55de099a 100644 --- a/packages/connect/src/reader-settings.test.ts +++ b/packages/connect/src/reader-settings.test.ts @@ -1,4 +1,4 @@ -import { connect, mdbaseError, toValue, type MdbaseClient } from "@mdbase-dev/sdk"; +import { mdbaseError, type MdbaseClient } from "@mdbase-dev/sdk"; import { MemoryReplica } from "@mdbase-dev/sdk/testing"; import { annotationId, dateTime, mutationId, sourceId } from "@mdbase-reader/core"; import { afterEach, describe, expect, it, vi } from "vitest"; @@ -27,11 +27,7 @@ afterEach(() => { async function native(): Promise<{ replica: MemoryReplica; client: NativeReaderClient }> { const replica = new MemoryReplica({ confirmDelayMs: 0 }); - const sdk: MdbaseClient = await connect({ - connector: replica.connector(), - app: { name: "reader-native-test", version: "test" }, - reconnect: false, - }); + const sdk: MdbaseClient = await replica.client(); closers.push(() => sdk.close()); return { replica, client: nativeReaderClient(sdk, () => true) }; } @@ -133,8 +129,8 @@ describe("ReaderSettingsStore highlight colours", () => { types: ["reader-settings"], frontmatter: { ...record, - highlight_colors: toValue(["blue", "orange", "yellow", "blue"]), - highlight_meanings: toValue({ blue: " Term ", orange: "Nope", pink: "" }), + highlight_colors: ["blue", "orange", "yellow", "blue"], + highlight_meanings: { blue: " Term ", orange: "Nope", pink: "" }, }, }); const store = new ReaderSettingsStore(client); @@ -153,7 +149,7 @@ describe("ReaderSettingsStore highlight colours", () => { types: ["reader-settings"], frontmatter: { ...record, - highlight_colors: toValue(["orange"]), + highlight_colors: ["orange"], highlight_meanings: "Key idea", }, }); @@ -381,7 +377,7 @@ describe("ReaderSettingsStore follows the change feed", () => { memory.replica.seed({ path, types: ["reader-settings"], - frontmatter: { ...record, highlight_colors: toValue(["purple"]) }, + frontmatter: { ...record, highlight_colors: ["purple"] }, }); await vi.waitFor(async () => { @@ -406,11 +402,7 @@ describe("ReaderSettingsStore follows the change feed", () => { it("saves again over another device's record when head refuses a pending first save", async () => { const replica = new MemoryReplica({ confirmDelayMs: null }); - const sdk = await connect({ - connector: replica.connector(), - app: { name: "reader-native-test", version: "test" }, - reconnect: false, - }); + const sdk = await replica.client(); closers.push(() => sdk.close()); const client = nativeReaderClient(sdk, () => true, { receiptWaitMs: 20 }); let mutation = ""; @@ -426,7 +418,7 @@ describe("ReaderSettingsStore follows the change feed", () => { ); const store = new ReaderSettingsStore(client, { watch: (watched, onChange) => - sdk.watchChanges(undefined, (batch) => { + sdk.watchChanges((batch) => { if (batch.reset || batch.changes.some((change) => change.path === watched)) { onChange(); } diff --git a/packages/connect/src/validation-issues.test.ts b/packages/connect/src/validation-issues.test.ts index 468b8a20..420632d6 100644 --- a/packages/connect/src/validation-issues.test.ts +++ b/packages/connect/src/validation-issues.test.ts @@ -10,7 +10,7 @@ function required(field: string): Issue { code: "schema_required", severity: "error", message: `required property \`${field}\` is missing`, - details: new Map([["schema_location", "/required"]]), + details: { schema_location: "/required" }, }; } @@ -41,9 +41,7 @@ describe("record validation rejections", () => { expect(error).toBeInstanceOf(ConnectRepositoryError); const repositoryError = error as ConnectRepositoryError; expect(repositoryError.issues).toBe(issues); - expect(repositoryError.issues[0]?.details).toEqual( - new Map([["schema_location", "/required"]]), - ); + expect(repositoryError.issues[0]?.details).toEqual({ schema_location: "/required" }); expect(repositoryError.problem).toBe(outcome.ok ? null : outcome.problem); expect(repositoryError.message).toBe( `mdbase Connect could not ${operation}: \`sources/parts/chapter.md\` would not be valid: Saved date is required`, @@ -72,10 +70,7 @@ describe("record validation rejections", () => { code: "schema_type", severity: "error", message: secret, - details: new Map([ - ["schema_location", "/properties/title/type"], - ["record", secret], - ]), + details: { schema_location: "/properties/title/type", record: secret }, }, { code: "future_code", severity: "error", message: secret, details: secret }, required(secret), @@ -85,19 +80,19 @@ describe("record validation rejections", () => { ); }); - it("keeps nested friendly labels and unknown field keys without serializing CBOR details", () => { + it("keeps nested friendly labels and unknown field keys without serializing details", () => { expect( validationIssueSummary([ { code: "format_invalid", severity: "error", message: "private value", - details: new Map([["schema_location", "/properties/csl/properties/DOI/pattern"]]), + details: { schema_location: "/properties/csl/properties/DOI/pattern" }, }, required("custom_key"), { ...required("status"), - details: new Map([["schema_location", "/properties/reading/required"]]), + details: { schema_location: "/properties/reading/required" }, }, ]), ).toBe( diff --git a/packages/connect/src/validation-issues.ts b/packages/connect/src/validation-issues.ts index 1fb47224..7cbd0075 100644 --- a/packages/connect/src/validation-issues.ts +++ b/packages/connect/src/validation-issues.ts @@ -72,8 +72,8 @@ function schemaField(details: ConnectValidationIssue["details"]): string | undef // The server sends only the failing schema keyword's location, e.g. // `/properties/csl/properties/DOI/pattern`; its property names are schema-defined. const location = - details instanceof Map - ? [...details].find(([key]) => key === "schema_location")?.[1] + typeof details === "object" && details !== null && !Array.isArray(details) + ? details["schema_location"] : undefined; if (typeof location !== "string") { return undefined; diff --git a/packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz b/packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz deleted file mode 100644 index 4a3677b5..00000000 Binary files a/packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz and /dev/null differ diff --git a/packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz.sigstore.json b/packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz.sigstore.json deleted file mode 100644 index 803cf8c6..00000000 --- a/packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz.sigstore.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", - "verificationMaterial": { - "certificate": { - "rawBytes": "MIIHSjCCBtCgAwIBAgIUK7/p6h2sR01kZGq7HAb+DxbfNzswCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMTA2MTAzMDM1WhcNMjYxMTA2MTA0MDM1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwEALXRbfXC2CBj78xavZK732h/yxfx4V0MaadYN04RWFtOQoFdFQZAZybQkrEnhyflU3UdiWVym4jAR+RXm1PqOCBe8wggXrMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBwBgNVHREBAf8EZjBkhmJodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdC8uZ2l0aHViL3dvcmtmbG93cy9wdWJsaXNoLXNkay1ucG0ueW1sQHJlZnMvaGVhZHMvbWFpbjA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMBoGCisGAQQBg78wAQIEDHdvcmtmbG93X3J1bjA2BgorBgEEAYO/MAEDBCg0OTNkMjljYTJhMzQ5NGM1ZDU5Njc3ZThiODNlMzA5YjQ0YTI4YzMxMCYGCisGAQQBg78wAQQEGFB1Ymxpc2ggc291cmNlLWJ1aWx0IFNESzAnBgorBgEEAYO/MAEFBBltZGJhc2UtZGV2L21kYmFzZS1jb25uZWN0MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcgYKKwYBBAGDvzABCQRkDGJodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdC8uZ2l0aHViL3dvcmtmbG93cy9wdWJsaXNoLXNkay1ucG0ueW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAEKBCoMKDQ5M2QyOWNhMmEzNDk0YzVkNTk2NzdlOGI4M2UzMDliNDRhMjhjMzEwHQYKKwYBBAGDvzABCwQPDA1naXRodWItaG9zdGVkMDwGCisGAQQBg78wAQwELgwsaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QwOAYKKwYBBAGDvzABDQQqDCg0OTNkMjljYTJhMzQ5NGM1ZDU5Njc3ZThiODNlMzA5YjQ0YTI4YzMxMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTMwNzEzNzgwMDAtBgorBgEEAYO/MAEQBB8MHWh0dHBzOi8vZ2l0aHViLmNvbS9tZGJhc2UtZGV2MBkGCisGAQQBg78wAREECwwJMzA3MzMyMTU3MHIGCisGAQQBg78wARIEZAxiaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QvLmdpdGh1Yi93b3JrZmxvd3MvcHVibGlzaC1zZGstbnBtLnltbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABEwQqDCg0OTNkMjljYTJhMzQ5NGM1ZDU5Njc3ZThiODNlMzA5YjQ0YTI4YzMxMBwGCisGAQQBg78wARQEDgwMd29ya2Zsb3dfcnVuMGAGCisGAQQBg78wARUEUgxQaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QvYWN0aW9ucy9ydW5zLzQyMjAyMTU5NTMwL2F0dGVtcHRzLzEwFgYKKwYBBAGDvzABFgQIDAZwdWJsaWMwVwYKKwYBBAGDvzABGARJDEdyZXBvOm1kYmFzZS1kZXZAMzA3MzMyMTU3L21kYmFzZS1jb25uZWN0QDEzMDcxMzc4MDA6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABobBpBsoAAAQDAEYwRAIgdWTz+7MVz1UOEfDvOmtKpzHvySdjhblG6zKikebjQAACIFcEUU+6uTNfMLV4ifYt7chK5vAnD9z/NJqGaZBFnTLnMAoGCCqGSM49BAMDA2gAMGUCMCzV2dDRpFqvRJJ6rX/N200dL+kpcr0356cwJwS2z0HLeBhIv17zvaNYyHbTw0YNDAIxAJun70yQISoSUGKn09zGeXfeEmzAakpdKV0kjkhDIcq/0zbkhEP55guqFdVvJqvQ/w==" - }, - "tlogEntries": [ - { - "logIndex": "3715024899", - "logId": { "keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0=" }, - "kindVersion": { "kind": "dsse", "version": "0.0.1" }, - "integratedTime": "1793961035", - "inclusionPromise": { - "signedEntryTimestamp": "MEYCIQDPERsZWWgYmQehH8Mzeg3CsVCzEaSLJ+fjtD2LJt+aowIhAJOrSkwyNqUQ3BtIylPF5ViAbDoXepn8Mjr/Y8edMO4O" - }, - "inclusionProof": { - "logIndex": "3593120637", - "rootHash": "b3Zjm5BosbqjnJ8NOE67Al3E0kibbTnjrevNhqarW6s=", - "treeSize": "3593120689", - "hashes": [ - "24+9V5P0muDQ2rnG1Yjskgfmerp9vL2TT/N1H9ELoJY=", - "1ai8o6eZEMdxVek9kFQRLgyjD3KH4DLyrU2QR9imSiI=", - "NrrV9/olyZp185EsyrJDy+ZVM68SDpOdBj6RQBIahSU=", - "r629/oljeoF0MvhdoYckGQvjD/bV0wqcHoeDmmLs5QU=", - "mrtyOK5wgpu/D9Awcrm9fjdJErm4tbI4zjnNEvWiDTw=", - "+82iOz2w8h1eVW58DCT4t9KLELzUggn8UWXayI4wF8M=", - "iIX/JClJkOrxy3Z7tnn3AtIohAaEc2pgJfkN4AWrag0=", - "D/78tXm1oTR8r4Q3r05BwairwpGsHAiLeV3dkOIMKu8=", - "pLlpAn9pdCm/Txt1+DMJgOyZQ80mtsvvE8lT7aeD8cw=", - "JCURxeSm88bENiN1dlSnekOt1lMQcuuLGWo916EZ2ZM=", - "e7WI8i+bvkhhRvfhuP+xAoDucf5lbVG1pvEXlTBVsSw=", - "77Z5+9Me13I5WkdpjjFy8XfpbtWgiQnBkY68pcBOEhQ=", - "m91hXylpjWF/yCgGGabPnOAiCs5l+o9Ggfve+nQFk/k=", - "rzm7IKxnJSK7nAIO33qQrBO1/0S9Dn56GJSaWI6Iolg=", - "oL7mzlXbjtGF6livZrZPLeR0mSE6uWTI9AusOhVEeus=", - "W0CJJalcT5Y3vqkUlAtTGs495sT//zKJ643sj4m3oN4=", - "my/+Zl55N1AU/mFzahAu4GlANWBzfiwACU5JgAfgHCQ=", - "+/W1QXjmDCUSmr405DwH5XT+gRMljSLaFUUVp3vrXrI=", - "SlixnS34BhAO+yRI2FaGPSOh9V6JSVNPfLl1bHxrcQY=", - "1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=", - "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY=" - ], - "checkpoint": { - "envelope": "rekor.sigstore.dev - 1193050959916656506\n3593120689\nb3Zjm5BosbqjnJ8NOE67Al3E0kibbTnjrevNhqarW6s=\n\n— rekor.sigstore.dev wNI9ajBFAiBF5FGNkevXkIinx6bJ2LOuxW8UnnhdQPYgiVMnjB1ohQIhAMIPjcqsee7KrmnDxTOwuER9mfUs00zomfrkKSYOynnt\n" - } - }, - "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiZHNzZSIsInNwZWMiOnsiZW52ZWxvcGVIYXNoIjp7ImFsZ29yaXRobSI6InNoYTI1NiIsInZhbHVlIjoiZTA4MDQ2MzIxNzE2MDZkYTk5ZGZlM2UxZjExMGQ5NTUxZTRiNjg1YTk4MDA5YmFlOWUzOTkwNDZiYzRmMjMyOCJ9LCJwYXlsb2FkSGFzaCI6eyJhbGdvcml0aG0iOiJzaGEyNTYiLCJ2YWx1ZSI6ImQyMzZjYTA3MDU5ZWE3MmI0YTEwYWY1OTQwMmRiZDBjZDYzZTAzYTQwMDY3Yjc5Zjk3ZmE1YjliOWNkYjBjN2EifSwic2lnbmF0dXJlcyI6W3sic2lnbmF0dXJlIjoiTUVVQ0lRQzYwMG5nY3VFTDF6cUhwdmZmNTRneUtLVVEwN0VIUHUrTzk2dUhCNVp4Y1FJZ2IyNUQ3QnFkdEJlaUtlWUUwRktiSjNSaHBxWHVzK3pldUtXbC8wVC9TWEE9IiwidmVyaWZpZXIiOiJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VoVGFrTkRRblJEWjBGM1NVSkJaMGxWU3pjdmNEWm9Nbk5TTURGcldrZHhOMGhCWWl0RWVHSm1UbnB6ZDBObldVbExiMXBKZW1vd1JVRjNUWGNLVG5wRlZrMUNUVWRCTVZWRlEyaE5UV015Ykc1ak0xSjJZMjFWZFZwSFZqSk5ValIzU0VGWlJGWlJVVVJGZUZaNllWZGtlbVJIT1hsYVV6RndZbTVTYkFwamJURnNXa2RzYUdSSFZYZElhR05PVFdwWmVFMVVRVEpOVkVGNlRVUk5NVmRvWTA1TmFsbDRUVlJCTWsxVVFUQk5SRTB4VjJwQlFVMUdhM2RGZDFsSUNrdHZXa2w2YWpCRFFWRlpTVXR2V2tsNmFqQkVRVkZqUkZGblFVVjNSVUZNV0ZKaVpsaERNa05DYWpjNGVHRjJXa3MzTXpKb0wzbDRabmcwVmpCTllXRUtaRmxPTURSU1YwWjBUMUZ2Um1SR1VWcEJXbmxpVVd0eVJXNW9lV1pzVlROVlpHbFhWbmx0TkdwQlVpdFNXRzB4VUhGUFEwSmxPSGRuWjFoeVRVRTBSd3BCTVZWa1JIZEZRaTkzVVVWQmQwbElaMFJCVkVKblRsWklVMVZGUkVSQlMwSm5aM0pDWjBWR1FsRmpSRUY2UVdaQ1owNVdTRk5OUlVkRVFWZG5RbFJtQ2pBcmJsQldhVkZTYkhadGJ6SlBhMjlXWVV4SFRHaG9hMUI2UW5kQ1owNVdTRkpGUWtGbU9FVmFha0pyYUcxS2IyUklVbmRqZW05MlRESmtjR1JIYURFS1dXazFhbUl5TUhaaVYxSnBXVmhPYkV4WFVteGthVGwwV2tkS2FHTXlWWFJaTWpsMVltMVdhbVJET0hWYU1td3dZVWhXYVV3elpIWmpiWFJ0WWtjNU13cGplVGwzWkZkS2MyRllUbTlNV0U1cllYa3hkV05ITUhWbFZ6RnpVVWhLYkZwdVRYWmhSMVpvV2toTmRtSlhSbkJpYWtFMVFtZHZja0puUlVWQldVOHZDazFCUlVKQ1EzUnZaRWhTZDJONmIzWk1NMUoyWVRKV2RVeHRSbXBrUjJ4MlltNU5kVm95YkRCaFNGWnBaRmhPYkdOdFRuWmlibEpzWW01UmRWa3lPWFFLVFVKdlIwTnBjMGRCVVZGQ1p6YzRkMEZSU1VWRVNHUjJZMjEwYldKSE9UTllNMG94WW1wQk1rSm5iM0pDWjBWRlFWbFBMMDFCUlVSQ1EyY3dUMVJPYXdwTmFteHFXVlJLYUUxNlVUVk9SMDB4V2tSVk5VNXFZek5hVkdocFQwUk9iRTE2UVRWWmFsRXdXVlJKTkZsNlRYaE5RMWxIUTJselIwRlJVVUpuTnpoM0NrRlJVVVZIUmtJeFdXMTRjR015WjJkak1qa3hZMjFPYkV4WFNqRmhWM2d3U1VaT1JWTjZRVzVDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0pzZEZwSFNtZ0tZekpWZEZwSFZqSk1NakZyV1cxR2VscFRNV3BpTWpWMVdsZE9NRTFDTUVkRGFYTkhRVkZSUW1jM09IZEJVVmxGUkROS2JGcHVUWFpoUjFab1draE5kZ3BpVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTDAxQlJVbENRekJOU3pKb01HUklRbnBQYVRoMlpFYzVjbHBYTkhWWlYwNHdZVmM1ZFdONU5XNWhXRkp2Q21SWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcVlqSXdkMk5uV1V0TGQxbENRa0ZIUkhaNlFVSkRVVkpyUkVkS2IyUklVbmRqZW05MlRESmtjR1JIYURFS1dXazFhbUl5TUhaaVYxSnBXVmhPYkV4WFVteGthVGwwV2tkS2FHTXlWWFJaTWpsMVltMVdhbVJET0hWYU1td3dZVWhXYVV3elpIWmpiWFJ0WWtjNU13cGplVGwzWkZkS2MyRllUbTlNV0U1cllYa3hkV05ITUhWbFZ6RnpVVWhLYkZwdVRYWmhSMVpvV2toTmRtSlhSbkJpYWtFMFFtZHZja0puUlVWQldVOHZDazFCUlV0Q1EyOU5TMFJSTlUweVVYbFBWMDVvVFcxRmVrNUVhekJaZWxaclRsUnJNazU2Wkd4UFIwazBUVEpWZWsxRWJHbE9SRkpvVFdwb2FrMTZSWGNLU0ZGWlMwdDNXVUpDUVVkRWRucEJRa04zVVZCRVFURnVZVmhTYjJSWFNYUmhSemw2WkVkV2EwMUVkMGREYVhOSFFWRlJRbWMzT0hkQlVYZEZUR2QzY3dwaFNGSXdZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTWpGcldXMUdlbHBUTVd0YVdGbDJZbGRTYVZsWVRteE1WMDUyWW0wMWJGa3pVWGRQUVZsTENrdDNXVUpDUVVkRWRucEJRa1JSVVhGRVEyY3dUMVJPYTAxcWJHcFpWRXBvVFhwUk5VNUhUVEZhUkZVMVRtcGpNMXBVYUdsUFJFNXNUWHBCTlZscVVUQUtXVlJKTkZsNlRYaE5RamhIUTJselIwRlJVVUpuTnpoM1FWRTBSVVZSZDFCamJWWnRZM2s1YjFwWFJtdGplVGwwV1Zkc2RVMUNiMGREYVhOSFFWRlJRZ3BuTnpoM1FWRTRSVVJCZDB0TlZFMTNUbnBGZWs1NlozZE5SRUYwUW1kdmNrSm5SVVZCV1U4dlRVRkZVVUpDT0UxSVYyZ3daRWhDZWs5cE9IWmFNbXd3Q21GSVZtbE1iVTUyWWxNNWRGcEhTbWhqTWxWMFdrZFdNazFDYTBkRGFYTkhRVkZSUW1jM09IZEJVa1ZGUTNkM1NrMTZRVE5OZWsxNVRWUlZNMDFJU1VjS1EybHpSMEZSVVVKbk56aDNRVkpKUlZwQmVHbGhTRkl3WTBoTk5reDVPVzVoV0ZKdlpGZEpkVmt5T1hSTU1qRnJXVzFHZWxwVE1XdGFXRmwyWWxkU2FRcFpXRTVzVEZkT2RtSnROV3haTTFGMlRHMWtjR1JIYURGWmFUa3pZak5LY2xwdGVIWmtNMDEyWTBoV2FXSkhiSHBoUXpGNldrZHpkR0p1UW5STWJteDBDbUpGUW5sYVYxcDZUREpvYkZsWFVucE1NakZvWVZjMGQwOUJXVXRMZDFsQ1FrRkhSSFo2UVVKRmQxRnhSRU5uTUU5VVRtdE5hbXhxV1ZSS2FFMTZVVFVLVGtkTk1WcEVWVFZPYW1NeldsUm9hVTlFVG14TmVrRTFXV3BSTUZsVVNUUlplazE0VFVKM1IwTnBjMGRCVVZGQ1p6YzRkMEZTVVVWRVozZE5aREk1ZVFwaE1scHpZak5rWm1OdVZuVk5SMEZIUTJselIwRlJVVUpuTnpoM1FWSlZSVlZuZUZGaFNGSXdZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTWpGckNsbHRSbnBhVXpGcldsaFpkbUpYVW1sWldFNXNURmRPZG1KdE5XeFpNMUYyV1ZkT01HRlhPWFZqZVRsNVpGYzFla3g2VVhsTmFrRjVUVlJWTlU1VVRYY0tUREpHTUdSSFZuUmpTRko2VEhwRmQwWm5XVXRMZDFsQ1FrRkhSSFo2UVVKR1oxRkpSRUZhZDJSWFNuTmhWMDEzVm5kWlMwdDNXVUpDUVVkRWRucEJRZ3BIUVZKS1JFVmtlVnBZUW5aUGJURnJXVzFHZWxwVE1XdGFXRnBCVFhwQk0wMTZUWGxOVkZVelRESXhhMWx0Um5wYVV6RnFZakkxZFZwWFRqQlJSRVY2Q2sxRVkzaE5lbU0wVFVSQk5tTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBVVmxMUzNkWlFrSkJTRmRsVVVsRlFXZFNOMEpJYTBFS1pIZENNVUZPTURsTlIzSkhlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05aVFuQkNjMjlCUVVGUlJBcEJSVmwzVWtGSloyUlhWSG9yTjAxV2VqRlZUMFZtUkhaUGJYUkxjSHBJZG5sVFpHcG9ZbXhITm5wTGFXdGxZbXBSUVVGRFNVWmpSVlZWS3paMVZFNW1DazFNVmpScFpsbDBOMk5vU3pWMlFXNUVPWG92VGtweFIyRmFRa1p1VkV4dVRVRnZSME5EY1VkVFRUUTVRa0ZOUkVFeVowRk5SMVZEVFVONlZqSmtSRklLY0VaeGRsSktTalp5V0M5T01qQXdaRXdyYTNCamNqQXpOVFpqZDBwM1V6SjZNRWhNWlVKb1NYWXhOM3AyWVU1WmVVaGlWSGN3V1U1RVFVbDRRVXAxYmdvM01IbFJTVk52VTFWSFMyNHdPWHBIWlZobVpVVnRla0ZoYTNCa1MxWXdhMnByYUVSSlkzRXZNSHBpYTJoRlVEVTFaM1Z4Um1SV2RrcHhkbEV2ZHowOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9XX19" - } - ], - "timestampVerificationData": { "rfc3161Timestamps": [] } - }, - "dsseEnvelope": { - "payload": "eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjEiLCJzdWJqZWN0IjpbeyJuYW1lIjoic2RrLWxhYi50Z3oiLCJkaWdlc3QiOnsic2hhMjU2IjoiOTI3Y2M2ODhhMjJkMDkzMTIwN2Q5MTA4YjUzOTU4ZTMyNzlmMmQyZDcxMTM0MmIwNGFjODBjMDJkODA5MWUyNiJ9fV0sInByZWRpY2F0ZVR5cGUiOiJodHRwczovL3Nsc2EuZGV2L3Byb3ZlbmFuY2UvdjEiLCJwcmVkaWNhdGUiOnsiYnVpbGREZWZpbml0aW9uIjp7ImJ1aWxkVHlwZSI6Imh0dHBzOi8vYWN0aW9ucy5naXRodWIuaW8vYnVpbGR0eXBlcy93b3JrZmxvdy92MSIsImV4dGVybmFsUGFyYW1ldGVycyI6eyJ3b3JrZmxvdyI6eyJyZWYiOiJyZWZzL2hlYWRzL21haW4iLCJyZXBvc2l0b3J5IjoiaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QiLCJwYXRoIjoiLmdpdGh1Yi93b3JrZmxvd3MvcHVibGlzaC1zZGstbnBtLnltbCJ9fSwiaW50ZXJuYWxQYXJhbWV0ZXJzIjp7ImdpdGh1YiI6eyJldmVudF9uYW1lIjoid29ya2Zsb3dfcnVuIiwicmVwb3NpdG9yeV9pZCI6IjEzMDcxMzc4MDAiLCJyZXBvc2l0b3J5X293bmVyX2lkIjoiMzA3MzMyMTU3IiwicnVubmVyX2Vudmlyb25tZW50IjoiZ2l0aHViLWhvc3RlZCJ9fSwicmVzb2x2ZWREZXBlbmRlbmNpZXMiOlt7InVyaSI6ImdpdCtodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdEByZWZzL2hlYWRzL21haW4iLCJkaWdlc3QiOnsiZ2l0Q29tbWl0IjoiNDkzZDI5Y2EyYTM0OTRjNWQ1OTY3N2U4YjgzZTMwOWI0NGEyOGMzMSJ9fV19LCJydW5EZXRhaWxzIjp7ImJ1aWxkZXIiOnsiaWQiOiJodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdC8uZ2l0aHViL3dvcmtmbG93cy9wdWJsaXNoLXNkay1ucG0ueW1sQHJlZnMvaGVhZHMvbWFpbiJ9LCJtZXRhZGF0YSI6eyJpbnZvY2F0aW9uSWQiOiJodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdC9hY3Rpb25zL3J1bnMvNDIyMDIxNTk1MzAvYXR0ZW1wdHMvMSJ9fX19", - "payloadType": "application/vnd.in-toto+json", - "signatures": [ - { - "sig": "MEUCIQC600ngcuEL1zqHpvff54gyKKUQ07EHPu+O96uHB5ZxcQIgb25D7BqdtBeiKeYE0FKbJ3RhpqXus+zeuKWl/0T/SXA=", - "keyid": "" - } - ] - } -} diff --git a/packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz b/packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz deleted file mode 100644 index 90a4c6d8..00000000 Binary files a/packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz and /dev/null differ diff --git a/packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz.sigstore.json b/packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz.sigstore.json deleted file mode 100644 index b77c65f0..00000000 --- a/packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz.sigstore.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", - "verificationMaterial": { - "certificate": { - "rawBytes": "MIIHTDCCBtGgAwIBAgIUb05AZueNz3r4hdZuL6R3be3Q0SMwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMTA2MTAzMDMyWhcNMjYxMTA2MTA0MDMyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIOwudliapkEMh7Yb/cO0wnh7J0SpsqQn935otBMotDPCVt0Vwg1ebG84iz88mSqiql35zmKKpbc7hpwq5nXgl6OCBfAwggXsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBwBgNVHREBAf8EZjBkhmJodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdC8uZ2l0aHViL3dvcmtmbG93cy9wdWJsaXNoLXNkay1ucG0ueW1sQHJlZnMvaGVhZHMvbWFpbjA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMBoGCisGAQQBg78wAQIEDHdvcmtmbG93X3J1bjA2BgorBgEEAYO/MAEDBCg0OTNkMjljYTJhMzQ5NGM1ZDU5Njc3ZThiODNlMzA5YjQ0YTI4YzMxMCYGCisGAQQBg78wAQQEGFB1Ymxpc2ggc291cmNlLWJ1aWx0IFNESzAnBgorBgEEAYO/MAEFBBltZGJhc2UtZGV2L21kYmFzZS1jb25uZWN0MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcgYKKwYBBAGDvzABCQRkDGJodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdC8uZ2l0aHViL3dvcmtmbG93cy9wdWJsaXNoLXNkay1ucG0ueW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAEKBCoMKDQ5M2QyOWNhMmEzNDk0YzVkNTk2NzdlOGI4M2UzMDliNDRhMjhjMzEwHQYKKwYBBAGDvzABCwQPDA1naXRodWItaG9zdGVkMDwGCisGAQQBg78wAQwELgwsaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QwOAYKKwYBBAGDvzABDQQqDCg0OTNkMjljYTJhMzQ5NGM1ZDU5Njc3ZThiODNlMzA5YjQ0YTI4YzMxMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTMwNzEzNzgwMDAtBgorBgEEAYO/MAEQBB8MHWh0dHBzOi8vZ2l0aHViLmNvbS9tZGJhc2UtZGV2MBkGCisGAQQBg78wAREECwwJMzA3MzMyMTU3MHIGCisGAQQBg78wARIEZAxiaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QvLmdpdGh1Yi93b3JrZmxvd3MvcHVibGlzaC1zZGstbnBtLnltbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABEwQqDCg0OTNkMjljYTJhMzQ5NGM1ZDU5Njc3ZThiODNlMzA5YjQ0YTI4YzMxMBwGCisGAQQBg78wARQEDgwMd29ya2Zsb3dfcnVuMGAGCisGAQQBg78wARUEUgxQaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QvYWN0aW9ucy9ydW5zLzQyMjAyMTU5NTMwL2F0dGVtcHRzLzEwFgYKKwYBBAGDvzABFgQIDAZwdWJsaWMwVwYKKwYBBAGDvzABGARJDEdyZXBvOm1kYmFzZS1kZXZAMzA3MzMyMTU3L21kYmFzZS1jb25uZWN0QDEzMDcxMzc4MDA6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABobBo/S4AAAQDAEcwRQIgSgOJ/UkCRbXtwlX4fZqVyWl/37IZK93OLW8doXT0l3sCIQDSeQbtqsk9bK9kFIT2oOkQ/vsU/n5DyG9oChO4mhJs3zAKBggqhkjOPQQDAwNpADBmAjEA/UsnxYJC6Ljam5pwNw3RKSPxFlxOI8HUDj9IGSBMNocP/1uIz8lQcQL/3hk03gfqAjEAoI1D6EQyFz6gPEcoeH4EsCtRWMwKi8JRkrf56y5hAywdMwFkXalqUF/0+edxwiIV" - }, - "tlogEntries": [ - { - "logIndex": "3715024029", - "logId": { "keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0=" }, - "kindVersion": { "kind": "dsse", "version": "0.0.1" }, - "integratedTime": "1793961033", - "inclusionPromise": { - "signedEntryTimestamp": "MEYCIQD0AyTZImDKu1SjZ9gnAiOz8W66RWT3aLtd7RBLE1+i6wIhAMFyfj0e0mKMgXJoCSCUhRGyN4uajUZ/fCFIerBQwCjp" - }, - "inclusionProof": { - "logIndex": "3593119767", - "rootHash": "w/H7PCSArnQT90jUHWL7GFH6Kp8blMi/h9OZTr5DgUo=", - "treeSize": "3593119848", - "hashes": [ - "Ge//UMeg1kEApZNekN18D302eb1V+BHjokSCqecTNnY=", - "/I46kMWX0V68hpUSnOFTu4loKqRRan41tnKv+9oqWe4=", - "Kf7thE/V8fUCB2Vfdn3QE98F1HWDBhb70aa/97N8psc=", - "7wNr50CQQ6jo7joZTsbq5Rd+RACjxP3AY5DsurNTXqQ=", - "y/6BLxe+piDrBAREK+0JlLlTJgMmx7FTxzMnTwDN7cI=", - "kVfjAnAK4OAYcCae2mJJavW/g1ycJ03jcLFXRrS2hPA=", - "yayxwhP1gjOhWt+ZHCEqA8169VWwqele0jFy5xFdheY=", - "e7WI8i+bvkhhRvfhuP+xAoDucf5lbVG1pvEXlTBVsSw=", - "77Z5+9Me13I5WkdpjjFy8XfpbtWgiQnBkY68pcBOEhQ=", - "m91hXylpjWF/yCgGGabPnOAiCs5l+o9Ggfve+nQFk/k=", - "rzm7IKxnJSK7nAIO33qQrBO1/0S9Dn56GJSaWI6Iolg=", - "oL7mzlXbjtGF6livZrZPLeR0mSE6uWTI9AusOhVEeus=", - "W0CJJalcT5Y3vqkUlAtTGs495sT//zKJ643sj4m3oN4=", - "my/+Zl55N1AU/mFzahAu4GlANWBzfiwACU5JgAfgHCQ=", - "+/W1QXjmDCUSmr405DwH5XT+gRMljSLaFUUVp3vrXrI=", - "SlixnS34BhAO+yRI2FaGPSOh9V6JSVNPfLl1bHxrcQY=", - "1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=", - "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY=" - ], - "checkpoint": { - "envelope": "rekor.sigstore.dev - 1193050959916656506\n3593119848\nw/H7PCSArnQT90jUHWL7GFH6Kp8blMi/h9OZTr5DgUo=\n\n— rekor.sigstore.dev wNI9ajBFAiA+uNApfOcM9PGS4oIdumlQ7hRvJdG6hdaviq0Yv/P6NQIhAMJMNnjuAIIsBZQ6h0yJz3jfDqkPUEUIW5mYYouizp5q\n" - } - }, - "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiZHNzZSIsInNwZWMiOnsiZW52ZWxvcGVIYXNoIjp7ImFsZ29yaXRobSI6InNoYTI1NiIsInZhbHVlIjoiNDBmZTU0ZGUzYzI5YWU2OGRlMWJiZmQxNzFhMTc0NzliZDFhZmQ4MWU5YmE4YzQxNDEyMmFmNDgxMmQxMGNkNSJ9LCJwYXlsb2FkSGFzaCI6eyJhbGdvcml0aG0iOiJzaGEyNTYiLCJ2YWx1ZSI6IjBlOTFhMWE5MTc3NzU3NzdkOWZkODFjYjY5NGJiNmM4MmM3NWZlYjg4NDY4YWE5NjkxM2JmMWJjZmFlY2ZhMTEifSwic2lnbmF0dXJlcyI6W3sic2lnbmF0dXJlIjoiTUVVQ0lRQ01IL0ZUMk5VREk1czFzODdUREVBVWozd2tidVIwUTFXWXVjUjJUUDIzZGdJZ1A0amRMYWU1WVV4OTVXYnpVUGtmWmJFR0VKdlAwU2dyWlgvWkhnN1NBd2s9IiwidmVyaWZpZXIiOiJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VoVVJFTkRRblJIWjBGM1NVSkJaMGxWWWpBMVFWcDFaVTU2TTNJMGFHUmFkVXcyVWpOaVpUTlJNRk5OZDBObldVbExiMXBKZW1vd1JVRjNUWGNLVG5wRlZrMUNUVWRCTVZWRlEyaE5UV015Ykc1ak0xSjJZMjFWZFZwSFZqSk5ValIzU0VGWlJGWlJVVVJGZUZaNllWZGtlbVJIT1hsYVV6RndZbTVTYkFwamJURnNXa2RzYUdSSFZYZElhR05PVFdwWmVFMVVRVEpOVkVGNlRVUk5lVmRvWTA1TmFsbDRUVlJCTWsxVVFUQk5SRTE1VjJwQlFVMUdhM2RGZDFsSUNrdHZXa2w2YWpCRFFWRlpTVXR2V2tsNmFqQkVRVkZqUkZGblFVVkpUM2QxWkd4cFlYQnJSVTFvTjFsaUwyTlBNSGR1YURkS01GTndjM0ZSYmprek5XOEtkRUpOYjNSRVVFTldkREJXZDJjeFpXSkhPRFJwZWpnNGJWTnhhWEZzTXpWNmJVdExjR0pqTjJod2QzRTFibGhuYkRaUFEwSm1RWGRuWjFoelRVRTBSd3BCTVZWa1JIZEZRaTkzVVVWQmQwbElaMFJCVkVKblRsWklVMVZGUkVSQlMwSm5aM0pDWjBWR1FsRmpSRUY2UVdaQ1owNVdTRk5OUlVkRVFWZG5RbFJtQ2pBcmJsQldhVkZTYkhadGJ6SlBhMjlXWVV4SFRHaG9hMUI2UW5kQ1owNVdTRkpGUWtGbU9FVmFha0pyYUcxS2IyUklVbmRqZW05MlRESmtjR1JIYURFS1dXazFhbUl5TUhaaVYxSnBXVmhPYkV4WFVteGthVGwwV2tkS2FHTXlWWFJaTWpsMVltMVdhbVJET0hWYU1td3dZVWhXYVV3elpIWmpiWFJ0WWtjNU13cGplVGwzWkZkS2MyRllUbTlNV0U1cllYa3hkV05ITUhWbFZ6RnpVVWhLYkZwdVRYWmhSMVpvV2toTmRtSlhSbkJpYWtFMVFtZHZja0puUlVWQldVOHZDazFCUlVKQ1EzUnZaRWhTZDJONmIzWk1NMUoyWVRKV2RVeHRSbXBrUjJ4MlltNU5kVm95YkRCaFNGWnBaRmhPYkdOdFRuWmlibEpzWW01UmRWa3lPWFFLVFVKdlIwTnBjMGRCVVZGQ1p6YzRkMEZSU1VWRVNHUjJZMjEwYldKSE9UTllNMG94WW1wQk1rSm5iM0pDWjBWRlFWbFBMMDFCUlVSQ1EyY3dUMVJPYXdwTmFteHFXVlJLYUUxNlVUVk9SMDB4V2tSVk5VNXFZek5hVkdocFQwUk9iRTE2UVRWWmFsRXdXVlJKTkZsNlRYaE5RMWxIUTJselIwRlJVVUpuTnpoM0NrRlJVVVZIUmtJeFdXMTRjR015WjJkak1qa3hZMjFPYkV4WFNqRmhWM2d3U1VaT1JWTjZRVzVDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0pzZEZwSFNtZ0tZekpWZEZwSFZqSk1NakZyV1cxR2VscFRNV3BpTWpWMVdsZE9NRTFDTUVkRGFYTkhRVkZSUW1jM09IZEJVVmxGUkROS2JGcHVUWFpoUjFab1draE5kZ3BpVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTDAxQlJVbENRekJOU3pKb01HUklRbnBQYVRoMlpFYzVjbHBYTkhWWlYwNHdZVmM1ZFdONU5XNWhXRkp2Q21SWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcVlqSXdkMk5uV1V0TGQxbENRa0ZIUkhaNlFVSkRVVkpyUkVkS2IyUklVbmRqZW05MlRESmtjR1JIYURFS1dXazFhbUl5TUhaaVYxSnBXVmhPYkV4WFVteGthVGwwV2tkS2FHTXlWWFJaTWpsMVltMVdhbVJET0hWYU1td3dZVWhXYVV3elpIWmpiWFJ0WWtjNU13cGplVGwzWkZkS2MyRllUbTlNV0U1cllYa3hkV05ITUhWbFZ6RnpVVWhLYkZwdVRYWmhSMVpvV2toTmRtSlhSbkJpYWtFMFFtZHZja0puUlVWQldVOHZDazFCUlV0Q1EyOU5TMFJSTlUweVVYbFBWMDVvVFcxRmVrNUVhekJaZWxaclRsUnJNazU2Wkd4UFIwazBUVEpWZWsxRWJHbE9SRkpvVFdwb2FrMTZSWGNLU0ZGWlMwdDNXVUpDUVVkRWRucEJRa04zVVZCRVFURnVZVmhTYjJSWFNYUmhSemw2WkVkV2EwMUVkMGREYVhOSFFWRlJRbWMzT0hkQlVYZEZUR2QzY3dwaFNGSXdZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTWpGcldXMUdlbHBUTVd0YVdGbDJZbGRTYVZsWVRteE1WMDUyWW0wMWJGa3pVWGRQUVZsTENrdDNXVUpDUVVkRWRucEJRa1JSVVhGRVEyY3dUMVJPYTAxcWJHcFpWRXBvVFhwUk5VNUhUVEZhUkZVMVRtcGpNMXBVYUdsUFJFNXNUWHBCTlZscVVUQUtXVlJKTkZsNlRYaE5RamhIUTJselIwRlJVVUpuTnpoM1FWRTBSVVZSZDFCamJWWnRZM2s1YjFwWFJtdGplVGwwV1Zkc2RVMUNiMGREYVhOSFFWRlJRZ3BuTnpoM1FWRTRSVVJCZDB0TlZFMTNUbnBGZWs1NlozZE5SRUYwUW1kdmNrSm5SVVZCV1U4dlRVRkZVVUpDT0UxSVYyZ3daRWhDZWs5cE9IWmFNbXd3Q21GSVZtbE1iVTUyWWxNNWRGcEhTbWhqTWxWMFdrZFdNazFDYTBkRGFYTkhRVkZSUW1jM09IZEJVa1ZGUTNkM1NrMTZRVE5OZWsxNVRWUlZNMDFJU1VjS1EybHpSMEZSVVVKbk56aDNRVkpKUlZwQmVHbGhTRkl3WTBoTk5reDVPVzVoV0ZKdlpGZEpkVmt5T1hSTU1qRnJXVzFHZWxwVE1XdGFXRmwyWWxkU2FRcFpXRTVzVEZkT2RtSnROV3haTTFGMlRHMWtjR1JIYURGWmFUa3pZak5LY2xwdGVIWmtNMDEyWTBoV2FXSkhiSHBoUXpGNldrZHpkR0p1UW5STWJteDBDbUpGUW5sYVYxcDZUREpvYkZsWFVucE1NakZvWVZjMGQwOUJXVXRMZDFsQ1FrRkhSSFo2UVVKRmQxRnhSRU5uTUU5VVRtdE5hbXhxV1ZSS2FFMTZVVFVLVGtkTk1WcEVWVFZPYW1NeldsUm9hVTlFVG14TmVrRTFXV3BSTUZsVVNUUlplazE0VFVKM1IwTnBjMGRCVVZGQ1p6YzRkMEZTVVVWRVozZE5aREk1ZVFwaE1scHpZak5rWm1OdVZuVk5SMEZIUTJselIwRlJVVUpuTnpoM1FWSlZSVlZuZUZGaFNGSXdZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTWpGckNsbHRSbnBhVXpGcldsaFpkbUpYVW1sWldFNXNURmRPZG1KdE5XeFpNMUYyV1ZkT01HRlhPWFZqZVRsNVpGYzFla3g2VVhsTmFrRjVUVlJWTlU1VVRYY0tUREpHTUdSSFZuUmpTRko2VEhwRmQwWm5XVXRMZDFsQ1FrRkhSSFo2UVVKR1oxRkpSRUZhZDJSWFNuTmhWMDEzVm5kWlMwdDNXVUpDUVVkRWRucEJRZ3BIUVZKS1JFVmtlVnBZUW5aUGJURnJXVzFHZWxwVE1XdGFXRnBCVFhwQk0wMTZUWGxOVkZVelRESXhhMWx0Um5wYVV6RnFZakkxZFZwWFRqQlJSRVY2Q2sxRVkzaE5lbU0wVFVSQk5tTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBaMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPRUpJYjBFS1pVRkNNa0ZPTURsTlIzSkhlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05aVFtOHZVelJCUVVGUlJBcEJSV04zVWxGSloxTm5UMG92Vld0RFVtSllkSGRzV0RSbVduRldlVmRzTHpNM1NWcExPVE5QVEZjNFpHOVlWREJzTTNORFNWRkVVMlZSWW5SeGMyczVDbUpMT1d0R1NWUXliMDlyVVM5MmMxVXZialZFZVVjNWIwTm9UelJ0YUVwek0zcEJTMEpuWjNGb2EycFBVRkZSUkVGM1RuQkJSRUp0UVdwRlFTOVZjMjRLZUZsS1F6Wk1hbUZ0TlhCM1RuY3pVa3RUVUhoR2JIaFBTVGhJVlVScU9VbEhVMEpOVG05alVDOHhkVWw2T0d4UlkxRk1Mek5vYXpBeloyWnhRV3BGUVFwdlNURkVOa1ZSZVVaNk5tZFFSV052WlVnMFJYTkRkRkpYVFhkTGFUaEtVbXR5WmpVMmVUVm9RWGwzWkUxM1JtdFlZV3h4VlVZdk1DdGxaSGgzYVVsV0NpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9XX19" - } - ], - "timestampVerificationData": { "rfc3161Timestamps": [] } - }, - "dsseEnvelope": { - "payload": "eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjEiLCJzdWJqZWN0IjpbeyJuYW1lIjoic2RrLXN0YWdpbmcudGd6IiwiZGlnZXN0Ijp7InNoYTI1NiI6IjNlZmI3ODg4ZWY1OWI2NDQ5ZWNmZjdjNzE3YjEyM2RmYWY5NGIzYWU2MjU3YmNhZTRmMWU3MTEzYTgyYTBkNGMifX1dLCJwcmVkaWNhdGVUeXBlIjoiaHR0cHM6Ly9zbHNhLmRldi9wcm92ZW5hbmNlL3YxIiwicHJlZGljYXRlIjp7ImJ1aWxkRGVmaW5pdGlvbiI6eyJidWlsZFR5cGUiOiJodHRwczovL2FjdGlvbnMuZ2l0aHViLmlvL2J1aWxkdHlwZXMvd29ya2Zsb3cvdjEiLCJleHRlcm5hbFBhcmFtZXRlcnMiOnsid29ya2Zsb3ciOnsicmVmIjoicmVmcy9oZWFkcy9tYWluIiwicmVwb3NpdG9yeSI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tZGJhc2UtZGV2L21kYmFzZS1jb25uZWN0IiwicGF0aCI6Ii5naXRodWIvd29ya2Zsb3dzL3B1Ymxpc2gtc2RrLW5wbS55bWwifX0sImludGVybmFsUGFyYW1ldGVycyI6eyJnaXRodWIiOnsiZXZlbnRfbmFtZSI6IndvcmtmbG93X3J1biIsInJlcG9zaXRvcnlfaWQiOiIxMzA3MTM3ODAwIiwicmVwb3NpdG9yeV9vd25lcl9pZCI6IjMwNzMzMjE1NyIsInJ1bm5lcl9lbnZpcm9ubWVudCI6ImdpdGh1Yi1ob3N0ZWQifX0sInJlc29sdmVkRGVwZW5kZW5jaWVzIjpbeyJ1cmkiOiJnaXQraHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3RAcmVmcy9oZWFkcy9tYWluIiwiZGlnZXN0Ijp7ImdpdENvbW1pdCI6IjQ5M2QyOWNhMmEzNDk0YzVkNTk2NzdlOGI4M2UzMDliNDRhMjhjMzEifX1dfSwicnVuRGV0YWlscyI6eyJidWlsZGVyIjp7ImlkIjoiaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QvLmdpdGh1Yi93b3JrZmxvd3MvcHVibGlzaC1zZGstbnBtLnltbEByZWZzL2hlYWRzL21haW4ifSwibWV0YWRhdGEiOnsiaW52b2NhdGlvbklkIjoiaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QvYWN0aW9ucy9ydW5zLzQyMjAyMTU5NTMwL2F0dGVtcHRzLzEifX19fQ==", - "payloadType": "application/vnd.in-toto+json", - "signatures": [ - { - "sig": "MEUCIQCMH/FT2NUDI5s1s87TDEAUj3wkbuR0Q1WYucR2TP23dgIgP4jdLae5YUx95WbzUPkfZbEGEJvP0SgrZX/ZHg7SAwk=", - "keyid": "" - } - ] - } -} diff --git a/packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz b/packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz new file mode 100644 index 00000000..2ab895ca Binary files /dev/null and b/packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz differ diff --git a/packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz.sigstore.json b/packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz.sigstore.json new file mode 100644 index 00000000..f5348ebf --- /dev/null +++ b/packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz.sigstore.json @@ -0,0 +1,62 @@ +{ + "mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", + "verificationMaterial": { + "certificate": { + "rawBytes": "MIIHkjCCBxegAwIBAgIURhO1AOKZt4PrqFd0zFOa8EdSZzQwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMTEyMjIxMDM2WhcNMjYxMTEyMjIyMDM2WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJAdQjlpqQvPPbypjgbHOZB8jKKx2z7qzP1WsWTwg176lGiIj9uXuaWUYaffuyekWbelmC40nK/+WZ2HdgWigw6OCBjYwggYyMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzB6BgNVHREBAf8EcDBuhmxodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdC8uZ2l0aHViL3dvcmtmbG93cy9wdWJsaXNoLXNkay1ucG0ueW1sQHJlZnMvdGFncy92MC4xLjAtYmV0YS4xODgwOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChlOGZmYjgwNmQxNmM1OGZlMDNjZjUwYzk2ZmI2NmUyOWViYjYxMmJhMCYGCisGAQQBg78wAQQEGFB1Ymxpc2ggc291cmNlLWJ1aWx0IFNESzAnBgorBgEEAYO/MAEFBBltZGJhc2UtZGV2L21kYmFzZS1jb25uZWN0MCcGCisGAQQBg78wAQYEGXJlZnMvdGFncy92MC4xLjAtYmV0YS4xODgwOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMHwGCisGAQQBg78wAQkEbgxsaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QvLmdpdGh1Yi93b3JrZmxvd3MvcHVibGlzaC1zZGstbnBtLnltbEByZWZzL3RhZ3MvdjAuMS4wLWJldGEuMTg4MDgGCisGAQQBg78wAQoEKgwoZThmZmI4MDZkMTZjNThmZTAzY2Y1MGM5NmZiNjZlMjllYmI2MTJiYTAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwPAYKKwYBBAGDvzABDAQuDCxodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdDA4BgorBgEEAYO/MAENBCoMKGU4ZmZiODA2ZDE2YzU4ZmUwM2NmNTBjOTZmYjY2ZTI5ZWJiNjEyYmEwKQYKKwYBBAGDvzABDgQbDBlyZWZzL3RhZ3MvdjAuMS4wLWJldGEuMTg4MBoGCisGAQQBg78wAQ8EDAwKMTMwNzEzNzgwMDAtBgorBgEEAYO/MAEQBB8MHWh0dHBzOi8vZ2l0aHViLmNvbS9tZGJhc2UtZGV2MBkGCisGAQQBg78wAREECwwJMzA3MzMyMTU3MHwGCisGAQQBg78wARIEbgxsaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QvLmdpdGh1Yi93b3JrZmxvd3MvcHVibGlzaC1zZGstbnBtLnltbEByZWZzL3RhZ3MvdjAuMS4wLWJldGEuMTg4MDgGCisGAQQBg78wARMEKgwoZThmZmI4MDZkMTZjNThmZTAzY2Y1MGM5NmZiNjZlMjllYmI2MTJiYTAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGAGCisGAQQBg78wARUEUgxQaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QvYWN0aW9ucy9ydW5zLzQzMzE1OTg3MTgyL2F0dGVtcHRzLzEwFgYKKwYBBAGDvzABFgQIDAZwdWJsaWMwYQYKKwYBBAGDvzABGARTDFFyZXBvOm1kYmFzZS1kZXZAMzA3MzMyMTU3L21kYmFzZS1jb25uZWN0QDEzMDcxMzc4MDA6cmVmOnJlZnMvdGFncy92MC4xLjAtYmV0YS4xODgwgYoGCisGAQQB1nkCBAIEfAR6AHgAdgDdPTBqxscRMmMZHhyZZzcCokpeuN48rf+HinKALynujgAAAaHR0BIlAAAEAwBHMEUCIQCTwT1ajyo7HruWNlhwDuO5gMRh+fnZabeRIbz/x5zysQIgGmRx5MhlrRaq3MZ38NiXRczYiWnpD0baQnzOfyR8NEswCgYIKoZIzj0EAwMDaQAwZgIxAMfni1kUqQENAaMfBCtrasDklLfdaqNUw98CZVexH80ZokVykm0vlozKNag/iFkT2QIxAMDOdnYBAUyBYTSAg+66RGIop04o+uEzcGPPI/N2Flfo+PwmIQMR9DMtB7RkHcn0nw==" + }, + "tlogEntries": [ + { + "logIndex": "3840223142", + "logId": { "keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0=" }, + "kindVersion": { "kind": "dsse", "version": "0.0.1" }, + "integratedTime": "1794521437", + "inclusionPromise": { + "signedEntryTimestamp": "MEUCIBcLah/s+UP7lUaAAelpl6N+mkkiLoZ9hJPRNMFp35GnAiEAkx/W422D++haJMK9bERh5N1N4p/3hDtREIPCgIM0h+8=" + }, + "inclusionProof": { + "logIndex": "3718318880", + "rootHash": "NDX82OGhVJQIUu1GapoMtSQsqSTmvifvYDQDstllUY4=", + "treeSize": "3718319598", + "hashes": [ + "jA8WasY/8eagR8RsH1iiq9qs+B0DHcjjYPuoGg/Xgn4=", + "vFfGIknxkjcKEv5hZtIlLtgVvDCrXE2Ld0bXoVedvK4=", + "jPURQjEjuMX5NlG7Uf6uhSihpcvlW5gDXr9KyCuEhwY=", + "TBpr1G2FtskzSUyEUAOi/2BYD9359xacAw4EyPmYd2U=", + "khNM7ypGeGWBhs26RSClJ7wkaUJoCR2Yr0NnQowte/E=", + "G550ydBtt/+WwVNrXju7sLYiRoou9arZGTVCiuijlqo=", + "kNMJ39IWmLFXZMbyZNGnqnuib1jlh9eEA7NBJ+MsE28=", + "VxWs5A38lJQoW9DxAUFuEJhvHz4NeksvKdzOJ4PqEPw=", + "vIjM3Cs7KMxxk3gvZLB7iS1WUF0iGIbdE/NJum0KgE0=", + "gNSon6V8AD7us/dKHRqxkH+GsdBAPWJ7iKlFq9rXTxY=", + "/iXfoXMoFS51yjOpbn/Cf9Hfcc7blSp9ftHRJ+thCRM=", + "L8NBvUBAdpUks64aP8pOJeo6Derkjy8Eqiiyt9S7gb4=", + "s5N0/sDFWe+bUqu7bksHSd0G8U1mCSoIw/jvTpNk1Bw=", + "MCdAPHkfAn/LR3NqZlXbSpOsSneRm+qrvpuL2Pbgr78=", + "TwXbCXl7wRlKLPqZIOhBtokcEq/oDos0oIsn2CED27Y=", + "6Zb4lP4ayCR20KRzH6TKkjR8KLkBKgOkFeYZAzMxF/o=", + "bQpNk+RepvtefLx/ZZtfZFu2d5gzQ7CA4ZE2emImMC4=", + "XPex1okR3Qf1VhXr/LVSojah9cB4R1RgvK/mRrmdWLY=", + "SlixnS34BhAO+yRI2FaGPSOh9V6JSVNPfLl1bHxrcQY=", + "1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=", + "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY=" + ], + "checkpoint": { + "envelope": "rekor.sigstore.dev - 1193050959916656506\n3718319598\nNDX82OGhVJQIUu1GapoMtSQsqSTmvifvYDQDstllUY4=\n\n— rekor.sigstore.dev wNI9ajBFAiAXYCnNGRGXn5XVm2Dc+Fo1a+/sRmo/yChNY0eyI4sD3wIhANpj5hbip02cjckT6r03DCangLMZ+6Hs8ZBFqEqI9QJV\n" + } + }, + "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiZHNzZSIsInNwZWMiOnsiZW52ZWxvcGVIYXNoIjp7ImFsZ29yaXRobSI6InNoYTI1NiIsInZhbHVlIjoiNjhhYTI0ZjE3MDMxYTg0YTgyM2UyMTc4NmZhMzQ4MzRmZmE2NTFkYzhlYmIyMWQ0MjM4Nzk3MTU1NjkzNTM0MyJ9LCJwYXlsb2FkSGFzaCI6eyJhbGdvcml0aG0iOiJzaGEyNTYiLCJ2YWx1ZSI6IjFkYzI5MzQzZGQ0YTgyNDE0MGIwMWU1ODkwN2Q0NjRjYWExOWMyNGM4ZGZlNjBiZTAxODNkOGJiMTFjYWVlNzgifSwic2lnbmF0dXJlcyI6W3sic2lnbmF0dXJlIjoiTUVVQ0lRQ0VyVDY2ZGtCaC9ndlRORjl2QTJxbnpuUEFSVFppdXliSVRtWmVJeURQZHdJZ0JTSkpFVFdCNmQ3M2FzSXlRdmp6TDR5d3F3bkhvSW1SYXJOcHF6eW0yRWM9IiwidmVyaWZpZXIiOiJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VocmFrTkRRbmhsWjBGM1NVSkJaMGxWVW1oUE1VRlBTMXAwTkZCeWNVWmtNSHBHVDJFNFJXUlRXbnBSZDBObldVbExiMXBKZW1vd1JVRjNUWGNLVG5wRlZrMUNUVWRCTVZWRlEyaE5UV015Ykc1ak0xSjJZMjFWZFZwSFZqSk5ValIzU0VGWlJGWlJVVVJGZUZaNllWZGtlbVJIT1hsYVV6RndZbTVTYkFwamJURnNXa2RzYUdSSFZYZElhR05PVFdwWmVFMVVSWGxOYWtsNFRVUk5NbGRvWTA1TmFsbDRUVlJGZVUxcVNYbE5SRTB5VjJwQlFVMUdhM2RGZDFsSUNrdHZXa2w2YWpCRFFWRlpTVXR2V2tsNmFqQkVRVkZqUkZGblFVVktRV1JSYW14d2NWRjJVRkJpZVhCcVoySklUMXBDT0dwTFMzZ3llamR4ZWxBeFYzTUtWMVIzWnpFM05teEhhVWxxT1hWWWRXRlhWVmxoWm1aMWVXVnJWMkpsYkcxRE5EQnVTeThyVjFveVNHUm5WMmxuZHpaUFEwSnFXWGRuWjFsNVRVRTBSd3BCTVZWa1JIZEZRaTkzVVVWQmQwbElaMFJCVkVKblRsWklVMVZGUkVSQlMwSm5aM0pDWjBWR1FsRmpSRUY2UVdaQ1owNVdTRk5OUlVkRVFWZG5RbFJtQ2pBcmJsQldhVkZTYkhadGJ6SlBhMjlXWVV4SFRHaG9hMUI2UWpaQ1owNVdTRkpGUWtGbU9FVmpSRUoxYUcxNGIyUklVbmRqZW05MlRESmtjR1JIYURFS1dXazFhbUl5TUhaaVYxSnBXVmhPYkV4WFVteGthVGwwV2tkS2FHTXlWWFJaTWpsMVltMVdhbVJET0hWYU1td3dZVWhXYVV3elpIWmpiWFJ0WWtjNU13cGplVGwzWkZkS2MyRllUbTlNV0U1cllYa3hkV05ITUhWbFZ6RnpVVWhLYkZwdVRYWmtSMFp1WTNrNU1rMUROSGhNYWtGMFdXMVdNRmxUTkhoUFJHZDNDazlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5WVVoU01HTklUVFpNZVRrd1lqSjBiR0pwTldoWk0xSndZakkxZWt4dFpIQmtSMmd4V1c1V2VscFlTbW9LWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNKQ1owVkZRVmxQTDAxQlJVTkNRa1l6WWpOS2NscHRlSFprTVRscllWaE9kMWxZVW1waFJFRXlRbWR2Y2dwQ1owVkZRVmxQTDAxQlJVUkNRMmhzVDBkYWJWbHFaM2RPYlZGNFRtMU5NVTlIV214TlJFNXFXbXBWZDFsNmF6SmFiVWt5VG0xVmVVOVhWbWxaYWxsNENrMXRTbWhOUTFsSFEybHpSMEZSVVVKbk56aDNRVkZSUlVkR1FqRlpiWGh3WXpKbloyTXlPVEZqYlU1c1RGZEtNV0ZYZURCSlJrNUZVM3BCYmtKbmIzSUtRbWRGUlVGWlR5OU5RVVZHUWtKc2RGcEhTbWhqTWxWMFdrZFdNa3d5TVd0WmJVWjZXbE14YW1JeU5YVmFWMDR3VFVOalIwTnBjMGRCVVZGQ1p6YzRkd3BCVVZsRlIxaEtiRnB1VFhaa1IwWnVZM2s1TWsxRE5IaE1ha0YwV1cxV01GbFROSGhQUkdkM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2Q21SSVVuZGplbTkyVEROU2RtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVaDNSME5wYzBjS1FWRlJRbWMzT0hkQlVXdEZZbWQ0YzJGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5TVd0WmJVWjZXbE14YTFwWVdYWmlWMUpwV1ZoT2JBcE1WMDUyWW0wMWJGa3pVWFpNYldSd1pFZG9NVmxwT1ROaU0wcHlXbTE0ZG1RelRYWmpTRlpwWWtkc2VtRkRNWHBhUjNOMFltNUNkRXh1YkhSaVJVSjVDbHBYV25wTU0xSm9Xak5OZG1ScVFYVk5VelIzVEZkS2JHUkhSWFZOVkdjMFRVUm5SME5wYzBkQlVWRkNaemM0ZDBGUmIwVkxaM2R2V2xSb2JWcHRTVFFLVFVSYWEwMVVXbXBPVkdodFdsUkJlbGt5V1RGTlIwMDFUbTFhYVU1cVdteE5hbXhzV1cxSk1rMVVTbWxaVkVGa1FtZHZja0puUlVWQldVOHZUVUZGVEFwQ1FUaE5SRmRrY0dSSGFERlphVEZ2WWpOT01GcFhVWGRRUVZsTFMzZFpRa0pCUjBSMmVrRkNSRUZSZFVSRGVHOWtTRkozWTNwdmRrd3laSEJrUjJneENsbHBOV3BpTWpCMllsZFNhVmxZVG14TVYxSnNaR2s1ZEZwSFNtaGpNbFYwV1RJNWRXSnRWbXBrUkVFMFFtZHZja0puUlVWQldVOHZUVUZGVGtKRGIwMEtTMGRWTkZwdFdtbFBSRUV5V2tSRk1sbDZWVFJhYlZWM1RUSk9iVTVVUW1wUFZGcHRXV3BaTWxwVVNUVmFWMHBwVG1wRmVWbHRSWGRMVVZsTFMzZFpRZ3BDUVVkRWRucEJRa1JuVVdKRVFteDVXbGRhZWt3elVtaGFNMDEyWkdwQmRVMVROSGRNVjBwc1pFZEZkVTFVWnpSTlFtOUhRMmx6UjBGUlVVSm5OemgzQ2tGUk9FVkVRWGRMVFZSTmQwNTZSWHBPZW1kM1RVUkJkRUpuYjNKQ1owVkZRVmxQTDAxQlJWRkNRamhOU0Zkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1rS1RHMU9kbUpUT1hSYVIwcG9ZekpWZEZwSFZqSk5RbXRIUTJselIwRlJVVUpuTnpoM1FWSkZSVU4zZDBwTmVrRXpUWHBOZVUxVVZUTk5TSGRIUTJselJ3cEJVVkZDWnpjNGQwRlNTVVZpWjNoellVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERJeGExbHRSbnBhVXpGcldsaFpkbUpYVW1sWldFNXNDa3hYVG5aaWJUVnNXVE5SZGt4dFpIQmtSMmd4V1drNU0ySXpTbkphYlhoMlpETk5kbU5JVm1saVIyeDZZVU14ZWxwSGMzUmlia0owVEc1c2RHSkZRbmtLV2xkYWVrd3pVbWhhTTAxMlpHcEJkVTFUTkhkTVYwcHNaRWRGZFUxVVp6Uk5SR2RIUTJselIwRlJVVUpuTnpoM1FWSk5SVXRuZDI5YVZHaHRXbTFKTkFwTlJGcHJUVlJhYWs1VWFHMWFWRUY2V1RKWk1VMUhUVFZPYlZwcFRtcGFiRTFxYkd4WmJVa3lUVlJLYVZsVVFXaENaMjl5UW1kRlJVRlpUeTlOUVVWVkNrSkNUVTFGV0dSMlkyMTBiV0pIT1ROWU1sSndZek5DYUdSSFRtOU5SMEZIUTJselIwRlJVVUpuTnpoM1FWSlZSVlZuZUZGaFNGSXdZMGhOTmt4NU9XNEtZVmhTYjJSWFNYVlpNamwwVERJeGExbHRSbnBhVXpGcldsaFpkbUpYVW1sWldFNXNURmRPZG1KdE5XeFpNMUYyV1ZkT01HRlhPWFZqZVRsNVpGYzFlZ3BNZWxGNlRYcEZNVTlVWnpOTlZHZDVUREpHTUdSSFZuUmpTRko2VEhwRmQwWm5XVXRMZDFsQ1FrRkhSSFo2UVVKR1oxRkpSRUZhZDJSWFNuTmhWMDEzQ2xsUldVdExkMWxDUWtGSFJIWjZRVUpIUVZKVVJFWkdlVnBZUW5aUGJURnJXVzFHZWxwVE1XdGFXRnBCVFhwQk0wMTZUWGxOVkZVelRESXhhMWx0Um5vS1dsTXhhbUl5TlhWYVYwNHdVVVJGZWsxRVkzaE5lbU0wVFVSQk5tTnRWbTFQYmtwc1dtNU5kbVJIUm01amVUa3lUVU0wZUV4cVFYUlpiVll3V1ZNMGVBcFBSR2QzWjFsdlIwTnBjMGRCVVZGQ01XNXJRMEpCU1VWbVFWSTJRVWhuUVdSblJHUlFWRUp4ZUhOalVrMXRUVnBJYUhsYVducGpRMjlyY0dWMVRqUTRDbkptSzBocGJrdEJUSGx1ZFdwblFVRkJZVWhTTUVKSmJFRkJRVVZCZDBKSVRVVlZRMGxSUTFSM1ZERmhhbmx2TjBoeWRWZE9iR2gzUkhWUE5XZE5VbWdLSzJadVdtRmlaVkpKWW5vdmVEVjZlWE5SU1dkSGJWSjROVTFvYkhKU1lYRXpUVm96T0U1cFdGSmplbGxwVjI1d1JEQmlZVkZ1ZWs5bWVWSTRUa1Z6ZHdwRFoxbEpTMjlhU1hwcU1FVkJkMDFFWVZGQmQxcG5TWGhCVFdadWFURnJWWEZSUlU1QllVMW1Ra04wY21GelJHdHNUR1prWVhGT1ZYYzVPRU5hVm1WNENrZzRNRnB2YTFaNWEyMHdkbXh2ZWt0T1lXY3ZhVVpyVkRKUlNYaEJUVVJQWkc1WlFrRlZlVUpaVkZOQlp5czJObEpIU1c5d01EUnZLM1ZGZW1OSFVGQUtTUzlPTWtac1ptOHJVSGR0U1ZGTlVqbEVUWFJDTjFKclNHTnVNRzUzUFQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9XX19" + } + ], + "timestampVerificationData": { "rfc3161Timestamps": [] } + }, + "dsseEnvelope": { + "payload": "eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjEiLCJzdWJqZWN0IjpbeyJuYW1lIjoic2RrLWxhYi50Z3oiLCJkaWdlc3QiOnsic2hhMjU2IjoiZWUzMjgzYzVlMzdlYWRiNzI4YTMyMDc2YjQ4MzFlMWUyYmNjYTA2NGE1MjZmNzQ1NmFhYjQzYWUwMDM3NzFmOSJ9fV0sInByZWRpY2F0ZVR5cGUiOiJodHRwczovL3Nsc2EuZGV2L3Byb3ZlbmFuY2UvdjEiLCJwcmVkaWNhdGUiOnsiYnVpbGREZWZpbml0aW9uIjp7ImJ1aWxkVHlwZSI6Imh0dHBzOi8vYWN0aW9ucy5naXRodWIuaW8vYnVpbGR0eXBlcy93b3JrZmxvdy92MSIsImV4dGVybmFsUGFyYW1ldGVycyI6eyJ3b3JrZmxvdyI6eyJyZWYiOiJyZWZzL3RhZ3MvdjAuMS4wLWJldGEuMTg4IiwicmVwb3NpdG9yeSI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tZGJhc2UtZGV2L21kYmFzZS1jb25uZWN0IiwicGF0aCI6Ii5naXRodWIvd29ya2Zsb3dzL3B1Ymxpc2gtc2RrLW5wbS55bWwifX0sImludGVybmFsUGFyYW1ldGVycyI6eyJnaXRodWIiOnsiZXZlbnRfbmFtZSI6IndvcmtmbG93X2Rpc3BhdGNoIiwicmVwb3NpdG9yeV9pZCI6IjEzMDcxMzc4MDAiLCJyZXBvc2l0b3J5X293bmVyX2lkIjoiMzA3MzMyMTU3IiwicnVubmVyX2Vudmlyb25tZW50IjoiZ2l0aHViLWhvc3RlZCJ9fSwicmVzb2x2ZWREZXBlbmRlbmNpZXMiOlt7InVyaSI6ImdpdCtodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdEByZWZzL3RhZ3MvdjAuMS4wLWJldGEuMTg4IiwiZGlnZXN0Ijp7ImdpdENvbW1pdCI6ImU4ZmZiODA2ZDE2YzU4ZmUwM2NmNTBjOTZmYjY2ZTI5ZWJiNjEyYmEifX1dfSwicnVuRGV0YWlscyI6eyJidWlsZGVyIjp7ImlkIjoiaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QvLmdpdGh1Yi93b3JrZmxvd3MvcHVibGlzaC1zZGstbnBtLnltbEByZWZzL3RhZ3MvdjAuMS4wLWJldGEuMTg4In0sIm1ldGFkYXRhIjp7Imludm9jYXRpb25JZCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tZGJhc2UtZGV2L21kYmFzZS1jb25uZWN0L2FjdGlvbnMvcnVucy80MzMxNTk4NzE4Mi9hdHRlbXB0cy8xIn19fX0=", + "payloadType": "application/vnd.in-toto+json", + "signatures": [ + { + "sig": "MEUCIQCErT66dkBh/gvTNF9vA2qnznPARTZiuybITmZeIyDPdwIgBSJJETWB6d73asIyQvjzL4ywqwnHoImRarNpqzym2Ec=", + "keyid": "" + } + ] + } +} diff --git a/packages/connect/vendor/sdk-e8ffb806-production-beta188.tgz b/packages/connect/vendor/sdk-e8ffb806-production-beta188.tgz new file mode 100644 index 00000000..b4d999ce Binary files /dev/null and b/packages/connect/vendor/sdk-e8ffb806-production-beta188.tgz differ diff --git a/packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz b/packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz new file mode 100644 index 00000000..0b8e3603 Binary files /dev/null and b/packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz differ diff --git a/packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz.sigstore.json b/packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz.sigstore.json new file mode 100644 index 00000000..e205fae3 --- /dev/null +++ b/packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz.sigstore.json @@ -0,0 +1,61 @@ +{ + "mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", + "verificationMaterial": { + "certificate": { + "rawBytes": "MIIHkDCCBxagAwIBAgIUWp1OJkX7AJsvg2QLwTeGF6FtE1cwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMTEyMjIxMDMxWhcNMjYxMTEyMjIyMDMxWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEg+HCg3H2lCYsR5ujLds9ONhweVqfYCteyZsl384Gle/ErrUskbm+gEytTWi+hLyRG51TlYkzgx9RDm2E4lNSlaOCBjUwggYxMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzB6BgNVHREBAf8EcDBuhmxodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdC8uZ2l0aHViL3dvcmtmbG93cy9wdWJsaXNoLXNkay1ucG0ueW1sQHJlZnMvdGFncy92MC4xLjAtYmV0YS4xODgwOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChlOGZmYjgwNmQxNmM1OGZlMDNjZjUwYzk2ZmI2NmUyOWViYjYxMmJhMCYGCisGAQQBg78wAQQEGFB1Ymxpc2ggc291cmNlLWJ1aWx0IFNESzAnBgorBgEEAYO/MAEFBBltZGJhc2UtZGV2L21kYmFzZS1jb25uZWN0MCcGCisGAQQBg78wAQYEGXJlZnMvdGFncy92MC4xLjAtYmV0YS4xODgwOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMHwGCisGAQQBg78wAQkEbgxsaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QvLmdpdGh1Yi93b3JrZmxvd3MvcHVibGlzaC1zZGstbnBtLnltbEByZWZzL3RhZ3MvdjAuMS4wLWJldGEuMTg4MDgGCisGAQQBg78wAQoEKgwoZThmZmI4MDZkMTZjNThmZTAzY2Y1MGM5NmZiNjZlMjllYmI2MTJiYTAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwPAYKKwYBBAGDvzABDAQuDCxodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdDA4BgorBgEEAYO/MAENBCoMKGU4ZmZiODA2ZDE2YzU4ZmUwM2NmNTBjOTZmYjY2ZTI5ZWJiNjEyYmEwKQYKKwYBBAGDvzABDgQbDBlyZWZzL3RhZ3MvdjAuMS4wLWJldGEuMTg4MBoGCisGAQQBg78wAQ8EDAwKMTMwNzEzNzgwMDAtBgorBgEEAYO/MAEQBB8MHWh0dHBzOi8vZ2l0aHViLmNvbS9tZGJhc2UtZGV2MBkGCisGAQQBg78wAREECwwJMzA3MzMyMTU3MHwGCisGAQQBg78wARIEbgxsaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QvLmdpdGh1Yi93b3JrZmxvd3MvcHVibGlzaC1zZGstbnBtLnltbEByZWZzL3RhZ3MvdjAuMS4wLWJldGEuMTg4MDgGCisGAQQBg78wARMEKgwoZThmZmI4MDZkMTZjNThmZTAzY2Y1MGM5NmZiNjZlMjllYmI2MTJiYTAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGAGCisGAQQBg78wARUEUgxQaHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3QvYWN0aW9ucy9ydW5zLzQzMzE1OTg3MTgyL2F0dGVtcHRzLzEwFgYKKwYBBAGDvzABFgQIDAZwdWJsaWMwYQYKKwYBBAGDvzABGARTDFFyZXBvOm1kYmFzZS1kZXZAMzA3MzMyMTU3L21kYmFzZS1jb25uZWN0QDEzMDcxMzc4MDA6cmVmOnJlZnMvdGFncy92MC4xLjAtYmV0YS4xODgwgYkGCisGAQQB1nkCBAIEewR5AHcAdQDdPTBqxscRMmMZHhyZZzcCokpeuN48rf+HinKALynujgAAAaHRz/9MAAAEAwBGMEQCIDT0JUDImo8LaSyf5jclD4ksImOuUnaQsJUqZxljf8RLAiBd1CIjQzfM3a/ML/aIGJTfXCwnxDm0BM+w48zBWKAx2DAKBggqhkjOPQQDAwNoADBlAjEA7NNKvgzj5vfXt1gzIOq9obY3xJU9QofZYWzykm5AM6ywG0U236GoZk9Lxdl6zjjYAjAjnNOIWyMGMSyzZ/YDhFarMRk4c2qdRAHUv9iqHpPzwiEDVEjHYXoOky/ZAGLYqLA=" + }, + "tlogEntries": [ + { + "logIndex": "3840221650", + "logId": { "keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0=" }, + "kindVersion": { "kind": "dsse", "version": "0.0.1" }, + "integratedTime": "1794521432", + "inclusionPromise": { + "signedEntryTimestamp": "MEQCIApiCR8sIv9yqJ6bMcXQhKKVEwtIvG0/j+QUEQZwZBwcAiAs0rThkKdfaTYFdvTSbznGw5Aqd570zPmLFUJrMK8HDw==" + }, + "inclusionProof": { + "logIndex": "3718317388", + "rootHash": "3pRkMuXS6Lym18pX4S8lmucu1WYskZ9vgP1ARSah8Hg=", + "treeSize": "3718317614", + "hashes": [ + "c8vtN+AZgv5HjZ8kkd11GxZs2d9fSov4bjIHHLiL8YU=", + "3bF9MBnt0iT9aU94BxmdB8x02d7OgZU1H2gQV6In5SE=", + "tt3kv3p+kUZyCY/rj48IqE063MSL3KE/1gFZVs36j/E=", + "3KTH5ES6B4/suSyLQsNRYAmNa7ekZ9R2wUDIjwmauxM=", + "kwawS+IYpmlcnuiRGLlcQkrFwqhL6+SgwjwAmArY130=", + "IZqhJR22yz6JU1jftxGOnT+5kSVkf7HmSbTsOrGy6wY=", + "hYKHxMM77cdJz1LXmkH1TrR2JvtN0xU3saOmn1FvriM=", + "ksck2cE++eBwMyTvbJGKxQISTZBqkwtSZOVHCvdqZ/4=", + "y0gyy29hruiRxuW1vZtMV+ZeQLki50PNDOVLdZD+KPs=", + "hQyNCUg+sZivAAt/90SJkpEKlJ2PE6nT0qvqUpOjmaA=", + "XpVsnDn4Fs/bFjALHuN+XK3npAIidJevu5Xz1PBZfKQ=", + "s5N0/sDFWe+bUqu7bksHSd0G8U1mCSoIw/jvTpNk1Bw=", + "MCdAPHkfAn/LR3NqZlXbSpOsSneRm+qrvpuL2Pbgr78=", + "TwXbCXl7wRlKLPqZIOhBtokcEq/oDos0oIsn2CED27Y=", + "6Zb4lP4ayCR20KRzH6TKkjR8KLkBKgOkFeYZAzMxF/o=", + "bQpNk+RepvtefLx/ZZtfZFu2d5gzQ7CA4ZE2emImMC4=", + "XPex1okR3Qf1VhXr/LVSojah9cB4R1RgvK/mRrmdWLY=", + "SlixnS34BhAO+yRI2FaGPSOh9V6JSVNPfLl1bHxrcQY=", + "1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=", + "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY=" + ], + "checkpoint": { + "envelope": "rekor.sigstore.dev - 1193050959916656506\n3718317614\n3pRkMuXS6Lym18pX4S8lmucu1WYskZ9vgP1ARSah8Hg=\n\n— rekor.sigstore.dev wNI9ajBEAiBTkPUbTpJ4Ians0b0RsYsi9zDZ5chYSeZUt/IZu4BCCQIgIP8adbFzdJfNLB8y2fCzv2MCfY005+vbL9D0YXmSHSY=\n" + } + }, + "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiZHNzZSIsInNwZWMiOnsiZW52ZWxvcGVIYXNoIjp7ImFsZ29yaXRobSI6InNoYTI1NiIsInZhbHVlIjoiM2RmZjk3ZDE0Yjk2NDkzNWE3MjdkNzUxMjRkNGFlY2Y3ZjRkOTlmOGQ5ZGQ0ODdlMDVlMGFjZjZlNGMwNTRjZCJ9LCJwYXlsb2FkSGFzaCI6eyJhbGdvcml0aG0iOiJzaGEyNTYiLCJ2YWx1ZSI6IjllZTMxMDM2Zjc5NWQ4YjUwNjU3ODc5YmFlNzliNWQ5OWJjYjExZjYyOWM3N2M4NDJmMzZlOGZjMmQ5NDk3MzMifSwic2lnbmF0dXJlcyI6W3sic2lnbmF0dXJlIjoiTUVVQ0lHK1A0Yk53dUtXWStld1FoYVMxSXNONmdGclNtQVVzbDhCR1U1WHBNWEFPQWlFQWtFTW5sa3NKV0ZqMklKV0wvbzZremlSWTNnM3Z3cVJxeDNUYm00RUdzZzg9IiwidmVyaWZpZXIiOiJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VoclJFTkRRbmhoWjBGM1NVSkJaMGxWVjNBeFQwcHJXRGRCU25OMlp6SlJUSGRVWlVkR05rWjBSVEZqZDBObldVbExiMXBKZW1vd1JVRjNUWGNLVG5wRlZrMUNUVWRCTVZWRlEyaE5UV015Ykc1ak0xSjJZMjFWZFZwSFZqSk5ValIzU0VGWlJGWlJVVVJGZUZaNllWZGtlbVJIT1hsYVV6RndZbTVTYkFwamJURnNXa2RzYUdSSFZYZElhR05PVFdwWmVFMVVSWGxOYWtsNFRVUk5lRmRvWTA1TmFsbDRUVlJGZVUxcVNYbE5SRTE0VjJwQlFVMUdhM2RGZDFsSUNrdHZXa2w2YWpCRFFWRlpTVXR2V2tsNmFqQkVRVkZqUkZGblFVVm5LMGhEWnpOSU1teERXWE5TTlhWcVRHUnpPVTlPYUhkbFZuRm1XVU4wWlhsYWMyd0tNemcwUjJ4bEwwVnljbFZ6YTJKdEsyZEZlWFJVVjJrcmFFeDVVa2MxTVZSc1dXdDZaM2c1VWtSdE1rVTBiRTVUYkdGUFEwSnFWWGRuWjFsNFRVRTBSd3BCTVZWa1JIZEZRaTkzVVVWQmQwbElaMFJCVkVKblRsWklVMVZGUkVSQlMwSm5aM0pDWjBWR1FsRmpSRUY2UVdaQ1owNVdTRk5OUlVkRVFWZG5RbFJtQ2pBcmJsQldhVkZTYkhadGJ6SlBhMjlXWVV4SFRHaG9hMUI2UWpaQ1owNVdTRkpGUWtGbU9FVmpSRUoxYUcxNGIyUklVbmRqZW05MlRESmtjR1JIYURFS1dXazFhbUl5TUhaaVYxSnBXVmhPYkV4WFVteGthVGwwV2tkS2FHTXlWWFJaTWpsMVltMVdhbVJET0hWYU1td3dZVWhXYVV3elpIWmpiWFJ0WWtjNU13cGplVGwzWkZkS2MyRllUbTlNV0U1cllYa3hkV05ITUhWbFZ6RnpVVWhLYkZwdVRYWmtSMFp1WTNrNU1rMUROSGhNYWtGMFdXMVdNRmxUTkhoUFJHZDNDazlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5WVVoU01HTklUVFpNZVRrd1lqSjBiR0pwTldoWk0xSndZakkxZWt4dFpIQmtSMmd4V1c1V2VscFlTbW9LWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNKQ1owVkZRVmxQTDAxQlJVTkNRa1l6WWpOS2NscHRlSFprTVRscllWaE9kMWxZVW1waFJFRXlRbWR2Y2dwQ1owVkZRVmxQTDAxQlJVUkNRMmhzVDBkYWJWbHFaM2RPYlZGNFRtMU5NVTlIV214TlJFNXFXbXBWZDFsNmF6SmFiVWt5VG0xVmVVOVhWbWxaYWxsNENrMXRTbWhOUTFsSFEybHpSMEZSVVVKbk56aDNRVkZSUlVkR1FqRlpiWGh3WXpKbloyTXlPVEZqYlU1c1RGZEtNV0ZYZURCSlJrNUZVM3BCYmtKbmIzSUtRbWRGUlVGWlR5OU5RVVZHUWtKc2RGcEhTbWhqTWxWMFdrZFdNa3d5TVd0WmJVWjZXbE14YW1JeU5YVmFWMDR3VFVOalIwTnBjMGRCVVZGQ1p6YzRkd3BCVVZsRlIxaEtiRnB1VFhaa1IwWnVZM2s1TWsxRE5IaE1ha0YwV1cxV01GbFROSGhQUkdkM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2Q21SSVVuZGplbTkyVEROU2RtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVaDNSME5wYzBjS1FWRlJRbWMzT0hkQlVXdEZZbWQ0YzJGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5TVd0WmJVWjZXbE14YTFwWVdYWmlWMUpwV1ZoT2JBcE1WMDUyWW0wMWJGa3pVWFpNYldSd1pFZG9NVmxwT1ROaU0wcHlXbTE0ZG1RelRYWmpTRlpwWWtkc2VtRkRNWHBhUjNOMFltNUNkRXh1YkhSaVJVSjVDbHBYV25wTU0xSm9Xak5OZG1ScVFYVk5VelIzVEZkS2JHUkhSWFZOVkdjMFRVUm5SME5wYzBkQlVWRkNaemM0ZDBGUmIwVkxaM2R2V2xSb2JWcHRTVFFLVFVSYWEwMVVXbXBPVkdodFdsUkJlbGt5V1RGTlIwMDFUbTFhYVU1cVdteE5hbXhzV1cxSk1rMVVTbWxaVkVGa1FtZHZja0puUlVWQldVOHZUVUZGVEFwQ1FUaE5SRmRrY0dSSGFERlphVEZ2WWpOT01GcFhVWGRRUVZsTFMzZFpRa0pCUjBSMmVrRkNSRUZSZFVSRGVHOWtTRkozWTNwdmRrd3laSEJrUjJneENsbHBOV3BpTWpCMllsZFNhVmxZVG14TVYxSnNaR2s1ZEZwSFNtaGpNbFYwV1RJNWRXSnRWbXBrUkVFMFFtZHZja0puUlVWQldVOHZUVUZGVGtKRGIwMEtTMGRWTkZwdFdtbFBSRUV5V2tSRk1sbDZWVFJhYlZWM1RUSk9iVTVVUW1wUFZGcHRXV3BaTWxwVVNUVmFWMHBwVG1wRmVWbHRSWGRMVVZsTFMzZFpRZ3BDUVVkRWRucEJRa1JuVVdKRVFteDVXbGRhZWt3elVtaGFNMDEyWkdwQmRVMVROSGRNVjBwc1pFZEZkVTFVWnpSTlFtOUhRMmx6UjBGUlVVSm5OemgzQ2tGUk9FVkVRWGRMVFZSTmQwNTZSWHBPZW1kM1RVUkJkRUpuYjNKQ1owVkZRVmxQTDAxQlJWRkNRamhOU0Zkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1rS1RHMU9kbUpUT1hSYVIwcG9ZekpWZEZwSFZqSk5RbXRIUTJselIwRlJVVUpuTnpoM1FWSkZSVU4zZDBwTmVrRXpUWHBOZVUxVVZUTk5TSGRIUTJselJ3cEJVVkZDWnpjNGQwRlNTVVZpWjNoellVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERJeGExbHRSbnBhVXpGcldsaFpkbUpYVW1sWldFNXNDa3hYVG5aaWJUVnNXVE5SZGt4dFpIQmtSMmd4V1drNU0ySXpTbkphYlhoMlpETk5kbU5JVm1saVIyeDZZVU14ZWxwSGMzUmlia0owVEc1c2RHSkZRbmtLV2xkYWVrd3pVbWhhTTAxMlpHcEJkVTFUTkhkTVYwcHNaRWRGZFUxVVp6Uk5SR2RIUTJselIwRlJVVUpuTnpoM1FWSk5SVXRuZDI5YVZHaHRXbTFKTkFwTlJGcHJUVlJhYWs1VWFHMWFWRUY2V1RKWk1VMUhUVFZPYlZwcFRtcGFiRTFxYkd4WmJVa3lUVlJLYVZsVVFXaENaMjl5UW1kRlJVRlpUeTlOUVVWVkNrSkNUVTFGV0dSMlkyMTBiV0pIT1ROWU1sSndZek5DYUdSSFRtOU5SMEZIUTJselIwRlJVVUpuTnpoM1FWSlZSVlZuZUZGaFNGSXdZMGhOTmt4NU9XNEtZVmhTYjJSWFNYVlpNamwwVERJeGExbHRSbnBhVXpGcldsaFpkbUpYVW1sWldFNXNURmRPZG1KdE5XeFpNMUYyV1ZkT01HRlhPWFZqZVRsNVpGYzFlZ3BNZWxGNlRYcEZNVTlVWnpOTlZHZDVUREpHTUdSSFZuUmpTRko2VEhwRmQwWm5XVXRMZDFsQ1FrRkhSSFo2UVVKR1oxRkpSRUZhZDJSWFNuTmhWMDEzQ2xsUldVdExkMWxDUWtGSFJIWjZRVUpIUVZKVVJFWkdlVnBZUW5aUGJURnJXVzFHZWxwVE1XdGFXRnBCVFhwQk0wMTZUWGxOVkZVelRESXhhMWx0Um5vS1dsTXhhbUl5TlhWYVYwNHdVVVJGZWsxRVkzaE5lbU0wVFVSQk5tTnRWbTFQYmtwc1dtNU5kbVJIUm01amVUa3lUVU0wZUV4cVFYUlpiVll3V1ZNMGVBcFBSR2QzWjFsclIwTnBjMGRCVVZGQ01XNXJRMEpCU1VWbGQxSTFRVWhqUVdSUlJHUlFWRUp4ZUhOalVrMXRUVnBJYUhsYVducGpRMjlyY0dWMVRqUTRDbkptSzBocGJrdEJUSGx1ZFdwblFVRkJZVWhTZWk4NVRVRkJRVVZCZDBKSFRVVlJRMGxFVkRCS1ZVUkpiVzg0VEdGVGVXWTFhbU5zUkRScmMwbHRUM1VLVlc1aFVYTktWWEZhZUd4cVpqaFNURUZwUW1ReFEwbHFVWHBtVFROaEwwMU1MMkZKUjBwVVpsaERkMjU0Ukcwd1FrMHJkelE0ZWtKWFMwRjRNa1JCU3dwQ1oyZHhhR3RxVDFCUlVVUkJkMDV2UVVSQ2JFRnFSVUUzVGs1TGRtZDZhalYyWmxoME1XZDZTVTl4T1c5aVdUTjRTbFU1VVc5bVdsbFhlbmxyYlRWQkNrMDJlWGRITUZVeU16WkhiMXByT1V4NFpHdzJlbXBxV1VGcVFXcHVUazlKVjNsTlIwMVRlWHBhTDFsRWFFWmhjazFTYXpSak1uRmtVa0ZJVlhZNWFYRUtTSEJRZW5kcFJVUldSV3BJV1ZodlQydDVMMXBCUjB4WmNVeEJQUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In1dfX0=" + } + ], + "timestampVerificationData": { "rfc3161Timestamps": [] } + }, + "dsseEnvelope": { + "payload": "eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjEiLCJzdWJqZWN0IjpbeyJuYW1lIjoic2RrLXN0YWdpbmcudGd6IiwiZGlnZXN0Ijp7InNoYTI1NiI6IjA4ZDliOGQ4NzFhZWE5ZmQ2ODhjZmYyYjM5NWYwN2RiNjNkMGU0MTFjODc2NmI5NDdkMDkwN2RjNDJlM2NkYzYifX1dLCJwcmVkaWNhdGVUeXBlIjoiaHR0cHM6Ly9zbHNhLmRldi9wcm92ZW5hbmNlL3YxIiwicHJlZGljYXRlIjp7ImJ1aWxkRGVmaW5pdGlvbiI6eyJidWlsZFR5cGUiOiJodHRwczovL2FjdGlvbnMuZ2l0aHViLmlvL2J1aWxkdHlwZXMvd29ya2Zsb3cvdjEiLCJleHRlcm5hbFBhcmFtZXRlcnMiOnsid29ya2Zsb3ciOnsicmVmIjoicmVmcy90YWdzL3YwLjEuMC1iZXRhLjE4OCIsInJlcG9zaXRvcnkiOiJodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdCIsInBhdGgiOiIuZ2l0aHViL3dvcmtmbG93cy9wdWJsaXNoLXNkay1ucG0ueW1sIn19LCJpbnRlcm5hbFBhcmFtZXRlcnMiOnsiZ2l0aHViIjp7ImV2ZW50X25hbWUiOiJ3b3JrZmxvd19kaXNwYXRjaCIsInJlcG9zaXRvcnlfaWQiOiIxMzA3MTM3ODAwIiwicmVwb3NpdG9yeV9vd25lcl9pZCI6IjMwNzMzMjE1NyIsInJ1bm5lcl9lbnZpcm9ubWVudCI6ImdpdGh1Yi1ob3N0ZWQifX0sInJlc29sdmVkRGVwZW5kZW5jaWVzIjpbeyJ1cmkiOiJnaXQraHR0cHM6Ly9naXRodWIuY29tL21kYmFzZS1kZXYvbWRiYXNlLWNvbm5lY3RAcmVmcy90YWdzL3YwLjEuMC1iZXRhLjE4OCIsImRpZ2VzdCI6eyJnaXRDb21taXQiOiJlOGZmYjgwNmQxNmM1OGZlMDNjZjUwYzk2ZmI2NmUyOWViYjYxMmJhIn19XX0sInJ1bkRldGFpbHMiOnsiYnVpbGRlciI6eyJpZCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9tZGJhc2UtZGV2L21kYmFzZS1jb25uZWN0Ly5naXRodWIvd29ya2Zsb3dzL3B1Ymxpc2gtc2RrLW5wbS55bWxAcmVmcy90YWdzL3YwLjEuMC1iZXRhLjE4OCJ9LCJtZXRhZGF0YSI6eyJpbnZvY2F0aW9uSWQiOiJodHRwczovL2dpdGh1Yi5jb20vbWRiYXNlLWRldi9tZGJhc2UtY29ubmVjdC9hY3Rpb25zL3J1bnMvNDMzMTU5ODcxODIvYXR0ZW1wdHMvMSJ9fX19", + "payloadType": "application/vnd.in-toto+json", + "signatures": [ + { + "sig": "MEUCIG+P4bNwuKWY+ewQhaS1IsN6gFrSmAUsl8BGU5XpMXAOAiEAkEMnlksJWFj2IJWL/o6kziRY3g3vwqRqx3Tbm4EGsg8=", + "keyid": "" + } + ] + } +} diff --git a/packages/connect/vendor/sdk-lab-beta157.json b/packages/connect/vendor/sdk-lab-beta188.json similarity index 60% rename from packages/connect/vendor/sdk-lab-beta157.json rename to packages/connect/vendor/sdk-lab-beta188.json index bb615957..cfaf06e7 100644 --- a/packages/connect/vendor/sdk-lab-beta157.json +++ b/packages/connect/vendor/sdk-lab-beta188.json @@ -1,21 +1,21 @@ { "schema": "mdbase-reader/sdk-original/1", "package": "@mdbase-dev/sdk-lab", - "artifact": "sdk-493d29ca-lab-beta157.tgz", - "version": "0.1.0-beta.157", - "sourceCommit": "493d29ca2a3494c5d59677e8b83e309b44a28c31", + "artifact": "sdk-e8ffb806-lab-beta188.tgz", + "version": "0.1.0-beta.188", + "sourceCommit": "e8ffb806d16c58fe03cf50c96fb66e29ebb612ba", "environment": "lab", - "bytes": 4537675, - "sha256": "927cc688a22d0931207d9108b53958e3279f2d2d711342b04ac80c02d8091e26", - "sri": "sha512-Q71Vbuk4iQFZknK0GR/2CmUpeNsf0T/XL2GMuv/PVWNxqO+dYTMw1mDpvb8pAtYAMpRyVrnQUf26Vk9HAuSjuQ==", + "bytes": 4819910, + "sha256": "ee3283c5e37eadb728a32076b4831e1e2bcca064a526f7456aab43ae003771f9", + "sri": "sha512-Tc/R1WhEBNDc2ODSWSOkmw35Fr+EhKGogdfECBgNS9R1gawItPaMiqA96D1S2/vlh01+CH2X8H0e9fG1alUXRw==", "publication": { - "release": "sdk-v0.1.0-beta.157", + "release": "sdk-v0.1.0-beta.188", "asset": "sdk-lab.tgz", "repository": "mdbase-dev/mdbase-connect", "workflow": ".github/workflows/publish-sdk-npm.yml", - "ref": "refs/heads/main", + "ref": "refs/tags/v0.1.0-beta.188", "signatureVerified": true, - "certificateIdentity": "https://github.com/mdbase-dev/mdbase-connect/.github/workflows/publish-sdk-npm.yml@refs/heads/main" + "certificateIdentity": "https://github.com/mdbase-dev/mdbase-connect/.github/workflows/publish-sdk-npm.yml@refs/tags/v0.1.0-beta.188" }, "trust": { "package": "@mdbase-dev/sdk-lab", @@ -27,17 +27,17 @@ "sourceVersion": "0.1.0-beta.129" }, "runtime": { - "sha256": "d375ce16a48dec718801704f56ffb6a545247a2793912c2c8e68ceb171ff2537", - "bytes": 3797530, - "maxBytes": 3797530, + "sha256": "7004351583c3a79411e644fafe9f5786816d32ea058605d1905fd50666012f40", + "bytes": 3875815, + "maxBytes": 3875815, "source": { "repository": "mdbase-dev/mdbase-connect", - "commit": "3e433313e0a234513478789686a4f4274e4dd76c" + "commit": "aae332572834fbfa065c0f696017c0de3540649d" } }, "provenance": { "schema": "mdbase-sdk/npm-publication/1", - "commit": "493d29ca2a3494c5d59677e8b83e309b44a28c31", + "commit": "e8ffb806d16c58fe03cf50c96fb66e29ebb612ba", "environment": "lab", "trust": { "package": "@mdbase-dev/sdk-lab", @@ -49,12 +49,12 @@ "sourceVersion": "0.1.0-beta.129" }, "runtime": { - "sha256": "d375ce16a48dec718801704f56ffb6a545247a2793912c2c8e68ceb171ff2537", - "bytes": 3797530, - "maxBytes": 3797530, + "sha256": "7004351583c3a79411e644fafe9f5786816d32ea058605d1905fd50666012f40", + "bytes": 3875815, + "maxBytes": 3875815, "source": { "repository": "mdbase-dev/mdbase-connect", - "commit": "3e433313e0a234513478789686a4f4274e4dd76c" + "commit": "aae332572834fbfa065c0f696017c0de3540649d" } } } diff --git a/packages/connect/vendor/sdk-production-beta188.json b/packages/connect/vendor/sdk-production-beta188.json new file mode 100644 index 00000000..4c529a51 --- /dev/null +++ b/packages/connect/vendor/sdk-production-beta188.json @@ -0,0 +1,47 @@ +{ + "schema": "mdbase-reader/sdk-original/1", + "artifact": "sdk-e8ffb806-production-beta188.tgz", + "version": "0.1.0-beta.188", + "sourceCommit": "e8ffb806d16c58fe03cf50c96fb66e29ebb612ba", + "environment": "production", + "bytes": 4819840, + "sha256": "9ac39582b5440272f7e95177ac4f4840aebd4c8ddf832b24545232abe99c6b27", + "sri": "sha512-EDaInyP8q2Lz0Akz8P+CNj5O6OvinMJWR1bE04fKtWRFDt9mVRBRBYRja5okOtb3gtnKYyMdQFGLlFln7F1RrA==", + "publication": { + "repository": "mdbase-dev/mdbase-connect", + "workflow": ".github/workflows/publish-sdk-npm.yml", + "ref": "refs/tags/v0.1.0-beta.188", + "npm": "@mdbase-dev/sdk@0.1.0-beta.188", + "integrity": "sha512-EDaInyP8q2Lz0Akz8P+CNj5O6OvinMJWR1bE04fKtWRFDt9mVRBRBYRja5okOtb3gtnKYyMdQFGLlFln7F1RrA==", + "tarball": "https://registry.npmjs.org/@mdbase-dev/sdk/-/sdk-0.1.0-beta.188.tgz", + "attestations": "https://registry.npmjs.org/-/npm/v1/attestations/@mdbase-dev%2fsdk@0.1.0-beta.188" + }, + "trust": { + "package": "@mdbase-dev/sdk", + "sha256": "7912e40838213e60b65848350d319a48019021317b112e3326429b250f0133d7", + "bytes": 840, + "cpOrigin": "https://connect.mdbase.dev", + "logOrigin": "https://log.mdbase.dev", + "sourceCommit": "36abd4b065be9495a7f5ae0808865a1f2279af04", + "sourceVersion": "0.1.0-beta.141" + }, + "runtime": { + "sha256": "7004351583c3a79411e644fafe9f5786816d32ea058605d1905fd50666012f40", + "bytes": 3875815, + "maxBytes": 3875815, + "source": { + "repository": "mdbase-dev/mdbase-connect", + "commit": "aae332572834fbfa065c0f696017c0de3540649d" + } + }, + "packagedTrustModuleSha256": "cf9690968d68b3c1eed2356ccfa2c72198b2f8cf07b9b24b1bb7be499b05bffb", + "bundledDependencies": [ + { + "name": "@mdbase-dev/connect-protocol", + "member": "package/vendor/mdbase-dev-connect-protocol-0.1.0-beta.145-e6e66bcd172f.tgz", + "bytes": 106404, + "sha256": "e901144b8d93dc96fcf71d9d8f85dddbf647e9908913be21191c484e9224bb98" + } + ], + "package": "@mdbase-dev/sdk" +} diff --git a/packages/connect/vendor/sdk-staging-beta157.json b/packages/connect/vendor/sdk-staging-beta188.json similarity index 59% rename from packages/connect/vendor/sdk-staging-beta157.json rename to packages/connect/vendor/sdk-staging-beta188.json index 73120387..a1dac491 100644 --- a/packages/connect/vendor/sdk-staging-beta157.json +++ b/packages/connect/vendor/sdk-staging-beta188.json @@ -1,21 +1,21 @@ { "schema": "mdbase-reader/sdk-original/1", "package": "@mdbase-dev/sdk-staging", - "artifact": "sdk-493d29ca-staging-beta157.tgz", - "version": "0.1.0-beta.157", - "sourceCommit": "493d29ca2a3494c5d59677e8b83e309b44a28c31", + "artifact": "sdk-e8ffb806-staging-beta188.tgz", + "version": "0.1.0-beta.188", + "sourceCommit": "e8ffb806d16c58fe03cf50c96fb66e29ebb612ba", "environment": "staging", - "bytes": 4537508, - "sha256": "3efb7888ef59b6449ecff7c717b123dfaf94b3ae6257bcae4f1e7113a82a0d4c", - "sri": "sha512-ia47TMEcUfFWIahKWpkqhsuAMRoyZ0so6gJ5IZkJ9N4zz+zV6tL1GDu1SqtosCEj0Cql5qUH+dinqk9WBrYJfQ==", + "bytes": 4819824, + "sha256": "08d9b8d871aea9fd688cff2b395f07db63d0e411c8766b947d0907dc42e3cdc6", + "sri": "sha512-tlfCGDfKueciOkqEAtz4MTrIuG3PXWJPw6PitidrSWU+P4HZdvJUTSUOpc2ZO+rllivnTV2r7wU0P5ohSIv5Sg==", "publication": { - "release": "sdk-v0.1.0-beta.157", + "release": "sdk-v0.1.0-beta.188", "asset": "sdk-staging.tgz", "repository": "mdbase-dev/mdbase-connect", "workflow": ".github/workflows/publish-sdk-npm.yml", - "ref": "refs/heads/main", + "ref": "refs/tags/v0.1.0-beta.188", "signatureVerified": true, - "certificateIdentity": "https://github.com/mdbase-dev/mdbase-connect/.github/workflows/publish-sdk-npm.yml@refs/heads/main" + "certificateIdentity": "https://github.com/mdbase-dev/mdbase-connect/.github/workflows/publish-sdk-npm.yml@refs/tags/v0.1.0-beta.188" }, "trust": { "package": "@mdbase-dev/sdk-staging", @@ -27,17 +27,17 @@ "sourceVersion": "0.1.0-beta.141" }, "runtime": { - "sha256": "d375ce16a48dec718801704f56ffb6a545247a2793912c2c8e68ceb171ff2537", - "bytes": 3797530, - "maxBytes": 3797530, + "sha256": "7004351583c3a79411e644fafe9f5786816d32ea058605d1905fd50666012f40", + "bytes": 3875815, + "maxBytes": 3875815, "source": { "repository": "mdbase-dev/mdbase-connect", - "commit": "3e433313e0a234513478789686a4f4274e4dd76c" + "commit": "aae332572834fbfa065c0f696017c0de3540649d" } }, "provenance": { "schema": "mdbase-sdk/npm-publication/1", - "commit": "493d29ca2a3494c5d59677e8b83e309b44a28c31", + "commit": "e8ffb806d16c58fe03cf50c96fb66e29ebb612ba", "environment": "staging", "trust": { "package": "@mdbase-dev/sdk-staging", @@ -49,12 +49,12 @@ "sourceVersion": "0.1.0-beta.141" }, "runtime": { - "sha256": "d375ce16a48dec718801704f56ffb6a545247a2793912c2c8e68ceb171ff2537", - "bytes": 3797530, - "maxBytes": 3797530, + "sha256": "7004351583c3a79411e644fafe9f5786816d32ea058605d1905fd50666012f40", + "bytes": 3875815, + "maxBytes": 3875815, "source": { "repository": "mdbase-dev/mdbase-connect", - "commit": "3e433313e0a234513478789686a4f4274e4dd76c" + "commit": "aae332572834fbfa065c0f696017c0de3540649d" } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bfca7039..7ea773be 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -145,17 +145,17 @@ importers: specifier: 0.1.0-beta.149 version: 0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) '@mdbase-dev/sdk': - specifier: 0.1.0-beta.187 - version: 0.1.0-beta.187 + specifier: 0.1.0-beta.188 + version: 0.1.0-beta.188 '@mdbase-dev/sdk-lab': - specifier: file:../../packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz - version: file:packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz + specifier: file:../../packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz + version: file:packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz '@mdbase-dev/sdk-staging': - specifier: file:../../packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz - version: file:packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz + specifier: file:../../packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz + version: file:packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz '@mdbase-dev/ui': specifier: 0.1.0-beta.149 - version: 0.1.0-beta.149(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@0.1.0-beta.187)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + version: 0.1.0-beta.149(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@0.1.0-beta.188)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) '@mdbase-reader/connect': specifier: workspace:* version: link:../../packages/connect @@ -215,20 +215,20 @@ importers: specifier: 0.1.0-beta.149 version: 0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) '@mdbase-dev/sdk': - specifier: 0.1.0-beta.187 - version: 0.1.0-beta.187 + specifier: 0.1.0-beta.188 + version: 0.1.0-beta.188 '@mdbase-dev/sdk-lab': - specifier: file:../../packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz - version: file:packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz + specifier: file:../../packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz + version: file:packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz '@mdbase-dev/sdk-legacy-729b5391': specifier: file:../../vendor/mdbase-dev-sdk-0.0.0-729b5391.tgz version: '@mdbase-dev/sdk@file:vendor/mdbase-dev-sdk-0.0.0-729b5391.tgz' '@mdbase-dev/sdk-staging': - specifier: file:../../packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz - version: file:packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz + specifier: file:../../packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz + version: file:packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz '@mdbase-dev/ui': specifier: 0.1.0-beta.149 - version: 0.1.0-beta.149(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@0.1.0-beta.187)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + version: 0.1.0-beta.149(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@0.1.0-beta.188)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) '@mdbase-reader/connect': specifier: workspace:* version: link:../../packages/connect @@ -320,8 +320,8 @@ importers: specifier: 0.1.0-beta.149 version: 0.1.0-beta.149 '@mdbase-dev/sdk': - specifier: 0.1.0-beta.187 - version: 0.1.0-beta.187 + specifier: 0.1.0-beta.188 + version: 0.1.0-beta.188 '@mdbase-reader/core': specifier: workspace:* version: link:../core @@ -354,7 +354,7 @@ importers: version: 0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) '@mdbase-dev/ui': specifier: 0.1.0-beta.149 - version: 0.1.0-beta.149(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@0.1.0-beta.187)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + version: 0.1.0-beta.149(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@0.1.0-beta.188)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) react: specifier: ^19.3.1 version: 19.3.1 @@ -403,7 +403,7 @@ importers: version: 0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) '@mdbase-dev/ui': specifier: 0.1.0-beta.149 - version: 0.1.0-beta.149(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@0.1.0-beta.187)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + version: 0.1.0-beta.149(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@0.1.0-beta.188)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) '@mdbase-reader/core': specifier: workspace:* version: link:../core @@ -585,7 +585,7 @@ importers: version: 0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) '@mdbase-dev/ui': specifier: 0.1.0-beta.149 - version: 0.1.0-beta.149(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@0.1.0-beta.187)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + version: 0.1.0-beta.149(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@0.1.0-beta.188)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) '@phosphor-icons/react': specifier: ^2.1.10 version: 2.1.10(react-dom@19.3.1(react@19.3.1))(react@19.3.1) @@ -1685,22 +1685,22 @@ packages: '@lingui/react': 6.9.0 react: ^19.2.0 - '@mdbase-dev/sdk-lab@file:packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz': - resolution: {integrity: sha512-Q71Vbuk4iQFZknK0GR/2CmUpeNsf0T/XL2GMuv/PVWNxqO+dYTMw1mDpvb8pAtYAMpRyVrnQUf26Vk9HAuSjuQ==, tarball: file:packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz} - version: 0.1.0-beta.157 + '@mdbase-dev/sdk-lab@file:packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz': + resolution: {integrity: sha512-Tc/R1WhEBNDc2ODSWSOkmw35Fr+EhKGogdfECBgNS9R1gawItPaMiqA96D1S2/vlh01+CH2X8H0e9fG1alUXRw==, tarball: file:packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz} + version: 0.1.0-beta.188 engines: {node: '>=20'} bundledDependencies: - '@mdbase-dev/connect-protocol' - '@mdbase-dev/sdk-staging@file:packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz': - resolution: {integrity: sha512-ia47TMEcUfFWIahKWpkqhsuAMRoyZ0so6gJ5IZkJ9N4zz+zV6tL1GDu1SqtosCEj0Cql5qUH+dinqk9WBrYJfQ==, tarball: file:packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz} - version: 0.1.0-beta.157 + '@mdbase-dev/sdk-staging@file:packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz': + resolution: {integrity: sha512-tlfCGDfKueciOkqEAtz4MTrIuG3PXWJPw6PitidrSWU+P4HZdvJUTSUOpc2ZO+rllivnTV2r7wU0P5ohSIv5Sg==, tarball: file:packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz} + version: 0.1.0-beta.188 engines: {node: '>=20'} bundledDependencies: - '@mdbase-dev/connect-protocol' - '@mdbase-dev/sdk@0.1.0-beta.187': - resolution: {integrity: sha512-bNsqlaeBKwA5ig3e4WZaCBRKmnlJs/b1FB11pogNtb7ur/bQf8txlcJWawKU2Fjto5/7+8MYz9bZFzM7JOfK/Q==} + '@mdbase-dev/sdk@0.1.0-beta.188': + resolution: {integrity: sha512-EDaInyP8q2Lz0Akz8P+CNj5O6OvinMJWR1bE04fKtWRFDt9mVRBRBYRja5okOtb3gtnKYyMdQFGLlFln7F1RrA==} engines: {node: '>=20'} bundledDependencies: - '@mdbase-dev/connect-protocol' @@ -5872,19 +5872,19 @@ snapshots: - rolldown - supports-color - '@mdbase-dev/sdk-lab@file:packages/connect/vendor/sdk-493d29ca-lab-beta157.tgz': + '@mdbase-dev/sdk-lab@file:packages/connect/vendor/sdk-e8ffb806-lab-beta188.tgz': dependencies: '@noble/ciphers': 2.4.0 '@noble/curves': 2.4.0 '@noble/hashes': 2.4.0 - '@mdbase-dev/sdk-staging@file:packages/connect/vendor/sdk-493d29ca-staging-beta157.tgz': + '@mdbase-dev/sdk-staging@file:packages/connect/vendor/sdk-e8ffb806-staging-beta188.tgz': dependencies: '@noble/ciphers': 2.4.0 '@noble/curves': 2.4.0 '@noble/hashes': 2.4.0 - '@mdbase-dev/sdk@0.1.0-beta.187': + '@mdbase-dev/sdk@0.1.0-beta.188': dependencies: '@noble/ciphers': 2.4.0 '@noble/curves': 2.4.0 @@ -5896,7 +5896,7 @@ snapshots: '@noble/curves': 2.4.0 '@noble/hashes': 2.4.0 - '@mdbase-dev/ui@0.1.0-beta.149(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@0.1.0-beta.187)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)': + '@mdbase-dev/ui@0.1.0-beta.149(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.149(@lingui/core@6.10.1(@babel/core@8.0.9))(@lingui/react@6.10.1(@babel/core@8.0.9)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@0.1.0-beta.188)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)': dependencies: '@fontsource-variable/atkinson-hyperlegible-next': 5.3.0 '@fontsource/azeret-mono': 5.3.0 @@ -5906,7 +5906,7 @@ snapshots: react: 19.3.1 optionalDependencies: '@codemirror/view': 6.43.15 - '@mdbase-dev/sdk': 0.1.0-beta.187 + '@mdbase-dev/sdk': 0.1.0-beta.188 react-dom: 19.3.1(react@19.3.1) '@messageformat/date-skeleton@1.1.0': {}