63ecfeeff8
Align the polyfill's surface and docs with the verified NextGraph reality and
remove application-level concepts:
- Identity is an ID, not a username: AccountRecord.id, shim predicate shim:id,
normalizeId; accounts core becomes IdentityStore (set/clear/get) — the faux
login/logout framing is gone (identity is set at wallet-import time).
- Relationship/connection is an application concept, not a platform primitive
(NextGraph has no bilateral-connection primitive: grantee is unpersisted
scaffolding, cap-send is unimplemented). Remove connections.ts; caps exposes
only a directed grantRead(doc, granteeId) + a read-only protectedDocsOf(owner).
Delete the now-dead isolation.ts social-visibility axis.
- Inbox docs: NextGraph has no separate curator — the recipient's own verifier
unseals and applies each queued sealed message inline (process_inbox);
inbox_post_link is a proposed/future API. Stop attributing the emulated
curator to the platform.
- Read isolation reframed around the outcome: no cap -> empty union read;
targeted read of an unheld repo -> RepoNotFound; cap introspection
(canRead/governsRead) is emulation-only with no NextGraph API behind it.
- read-model.md corrected: the listing path is per-doc ANCHORED default-graph
queries, never the anchorless GRAPH ?g union (that is O(wallet)); the probe
section no longer claims the opposite.
- README recap table restructured (target | current NextGraph status | current
emulation); INDEX_ACCOUNT documented as reservedAccount("index") in the
sentinel namespace; de-domained generic-layer comments; softened tone.
Consumer application (Festipod) rewired separately to own the relationship
concept and feed the lib an id. Lib gates: bun test 83 pass / 0 fail, tsc clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
45 lines
2.1 KiB
TypeScript
45 lines
2.1 KiB
TypeScript
/**
|
|
* @ng-eventually/client — **SDK-identical** surface.
|
|
*
|
|
* This entry exposes ONLY what `@ng-org/web` / `@ng-org/orm` expose (current +
|
|
* anticipated: `inbox`). Import `ng` / `useShape` from here instead of the SDK
|
|
* during the polyfill period; at migration the build alias is removed and these
|
|
* resolve to the real SDK with **no code change**.
|
|
*
|
|
* The one non-SDK piece — the polyfill bootstrap (`configure`, capability
|
|
* helpers, current user) — lives at `@ng-eventually/client/polyfill`, and is the
|
|
* only thing removed at migration.
|
|
*/
|
|
|
|
export * from "./types";
|
|
export { useShape } from "./use-shape";
|
|
export { init, initNg } from "./lifecycle";
|
|
export * as inbox from "./inbox";
|
|
export * as discovery from "./discovery";
|
|
export type { IndexEntry, SubmitOptions } from "./discovery";
|
|
export * as docs from "./docs";
|
|
export * as readModel from "./read-model";
|
|
export type { UnionSubject } from "./read-model";
|
|
export * as storeRegistry from "./store-registry";
|
|
export type { AccountRecord, RegistrySession } from "./store-registry";
|
|
export * as accounts from "./accounts";
|
|
export type { AccountStorage } from "./accounts";
|
|
|
|
// SPARQL injection-safety helpers — so the app can reuse the same escaping /
|
|
// validation when it builds SPARQL by interpolation. `escapeLiteral` for string
|
|
// literals, `escapeIri` to embed untrusted values in an IRI, `assertNuri` to
|
|
// validate trusted-shaped NURIs before embedding them in an IRI.
|
|
export { escapeLiteral, escapeIri, assertNuri } from "./sparql";
|
|
|
|
// SDK type re-exports — so the app imports these from @ng-eventually/client too,
|
|
// not from @ng-org. `export type` is ERASED at build, so this adds NO runtime
|
|
// @ng-org import to the lib (no risk of a duplicate SDK copy in the bundle).
|
|
export type { ShapeType, BaseType, Schema } from "@ng-org/shex-orm";
|
|
export type { DeepSignalSet } from "@ng-org/alien-deepsignals";
|
|
export type { NG } from "@ng-org/web";
|
|
|
|
import { makeNg } from "./ng-proxy";
|
|
|
|
/** SDK-identical `ng` (wrapped). Drop-in replacement for `@ng-org/web`'s `ng`. */
|
|
export const ng: Record<string, any> = makeNg();
|