[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81652":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":11,"contributorsCount":11,"subscribersCount":11,"size":11,"stars1d":11,"stars7d":11,"stars30d":13,"stars90d":11,"forks30d":11,"starsTrendScore":11,"compositeScore":11,"rankGlobal":8,"rankLanguage":8,"license":14,"archived":15,"fork":15,"defaultBranch":16,"hasWiki":17,"hasPages":15,"topics":18,"createdAt":8,"pushedAt":8,"updatedAt":19,"readmeContent":20,"aiSummary":21,"trendingCount":11,"starSnapshotCount":11,"syncStatus":22,"lastSyncTime":23,"discoverSource":24},81652,"-shapeshift-labs-frontier","siliconjungle\u002F-shapeshift-labs-frontier","siliconjungle",null,"TypeScript",30,0,21,9,"MIT License",false,"main",true,[],"2026-06-12 02:04:18","# Frontier\n\nFast compact JSON diff and patch primitives for JavaScript values.\n\nFrontier compares JSON-shaped data and emits a replayable compact patch. It is built for application state, cached API results, editor models, game state, compiler data, and other in-memory JSON values where the useful output is not just \"different\", but \"what compact operations reproduce the new value?\".\n\nThis package is the small core package. It has no runtime dependencies and does not include Frontier query helpers, codecs, engine planning, state subscriptions, caches, schema helpers, logging, mutation planning, CRDTs, sync, or rich text. It also exposes dependency-free `.\u002Fruntime` and `.\u002Fregistry` subpaths for sharing scheduler and traceable feature-graph contracts across Frontier packages without creating higher-layer imports.\n\n- npm: [`@shapeshift-labs\u002Ffrontier`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier)\n- source: [`siliconjungle\u002F-shapeshift-labs-frontier`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier)\n- license: MIT\n\n## Related Packages\n\nThe published Frontier package family is generated from one shared package catalog so READMEs stay in sync across packages:\n\n- [`@shapeshift-labs\u002Ffrontier-query`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-query): Shared query-key, selector path, condition, entity identity, and table-shape primitives.\n- [`@shapeshift-labs\u002Ffrontier-codec`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-codec): Patch serialization, binary frames, canonical JSON, and patch-history codecs.\n- [`@shapeshift-labs\u002Ffrontier-engine`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-engine): Stateful planned diff engine, adaptive profiles, schema plans, and engine-level history helpers.\n- [`@shapeshift-labs\u002Ffrontier-state`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-state): Patch-routed app-state subscriptions, owned commits, maintained views, and path mapping.\n- [`@shapeshift-labs\u002Ffrontier-dataflow`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-dataflow): Serializable incremental dataflow and materialized-view graphs for Frontier apps, including selectors, dependency DAGs, filters, joins, aggregations, stale paths, recompute budgets, output patches, provenance records, and proof of why derived views changed.\n- [`@shapeshift-labs\u002Ffrontier-state-cache`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-state-cache): Normalized query-result cache with entity\u002Fquery watchers, persistence, change logs, optimistic layers, scheduled persistence, and mutation bridge.\n- [`@shapeshift-labs\u002Ffrontier-state-cache-idb`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-state-cache-idb): IndexedDB persistence adapter for Frontier state-cache snapshots and durable change logs.\n- [`@shapeshift-labs\u002Ffrontier-state-cache-file`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-state-cache-file): Structured file persistence adapter for Frontier state-cache snapshots and change logs.\n- [`@shapeshift-labs\u002Ffrontier-state-cache-sql`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-state-cache-sql): SQL persistence adapter for Frontier state-cache snapshots and change logs.\n- [`@shapeshift-labs\u002Ffrontier-schema`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-schema): JSON Schema validation, Frontier profile generation, CloudEvent envelopes, and query\u002Ftable schema helpers.\n- [`@shapeshift-labs\u002Ffrontier-migrations`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-migrations): Boundary-first data migrations, import normalization, plugin\u002FAPI version mapping, versioned envelopes, graph diagnostics, patch path rewrites, dry-run reports, and current-shape rehydration.\n- [`@shapeshift-labs\u002Ffrontier-event-log`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-event-log): Bounded event logs, replay cursors, consumer acknowledgements, keyed compaction, checkpoints, and Frontier patch event records.\n- [`@shapeshift-labs\u002Ffrontier-inspect`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-inspect): Cross-package inspection\u002Fevidence bundles, registry graph snapshots, feature\u002Fresource impact reports, timeline\u002Fevent normalization, redaction, JSONL import\u002Fexport, and AI-readable app feature maps.\n- [`@shapeshift-labs\u002Ffrontier-scheduler`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-scheduler): Deterministic work scheduling, lanes, cancellation, backpressure, frame policies, replay snapshots, and work graphs.\n- [`@shapeshift-labs\u002Ffrontier-logging`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-logging): Opt-in structured logging, browser telemetry, scheduled sinks, file sinks, exporters, benchmark traces, and Frontier patch\u002Fupdate summaries.\n- [`@shapeshift-labs\u002Ffrontier-mutation`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-mutation): Explicit mutation and selector plans compiled to Frontier patches or CRDT operations.\n- [`@shapeshift-labs\u002Ffrontier-effects`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-effects): Serializable effect descriptors and resource graphs for Frontier apps, including fetch, storage, timers, navigation, workers, clipboard, broadcast, WebSocket, stream, policy metadata, runtime records, redaction, JSONL, proof helpers, and registry graph output.\n- [`@shapeshift-labs\u002Ffrontier-policy`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-policy): Serializable policy and capability decisions for Frontier apps, effects, views, sync, routes, traces, and AI tools.\n- [`@shapeshift-labs\u002Ffrontier-tools`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-tools): Serializable app action\u002Ftool manifests for AI-operable Frontier apps, including availability, validation, dry-run plans, patch previews, effect\u002Ftool constraints, execution records, rollback links, and registry graph output.\n- [`@shapeshift-labs\u002Ffrontier-sandbox`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-sandbox): Runtime-agnostic sandbox contracts for Frontier patch-producing actions, including manifests, declared reads\u002Fwrites\u002Fcapabilities, host-validated patch\u002Feffect\u002Fevent\u002Flog results, dynamic source modules, source event replay, and structural runtime adapters.\n- [`@shapeshift-labs\u002Ffrontier-sandbox-quickjs`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-sandbox-quickjs): QuickJS\u002FWebAssembly runtime adapter for Frontier sandbox actions, including invocation\u002Fruntime isolation modes, deadline and memory limits, dynamic source execution, and patch\u002Feffect result normalization.\n- [`@shapeshift-labs\u002Ffrontier-workflow`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-workflow): Serializable durable workflow\u002Fprocess manifests for Frontier apps, including steps, waits, approvals, timers, retries, expected patches, compensation, records, timelines, and registry graph output.\n- [`@shapeshift-labs\u002Ffrontier-worker`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-worker): Serializable worker and edge task descriptors for Frontier apps, including queues, idempotency keys, retry and timeout policy, declared reads\u002Fwrites\u002Feffects, snapshots, patch outputs, produced assets, execution records, logs, trace links, proof hashes, dedupe indexes, and registry graph output.\n- [`@shapeshift-labs\u002Ffrontier-assets`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-assets): Serializable asset and content provenance graphs for Frontier apps, including source files, generated variants, thumbnails, LOD chunks, shader\u002Fmaterial dependencies, transforms, hashes, owners, runtime consumers, review plans, registry graph output, and impact queries.\n- [`@shapeshift-labs\u002Ffrontier-blueprint`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-blueprint): Serializable Blueprint\u002FPrefab flyweight templates for Frontier apps, including parameterized instantiation, deterministic ID\u002Fpath remapping, compact overrides, variants, effective-state materialization, scene\u002Fstate patch emission, dependency metadata, and registry graph output.\n- [`@shapeshift-labs\u002Ffrontier-triggers`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-triggers): Capability-gated event trigger registry, scoped event envelopes, listener\u002Freaction rules, structured rejection, deterministic event-to-action scheduling, replay\u002Fprovenance records, and registry graph output.\n- [`@shapeshift-labs\u002Ffrontier-virtual`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-virtual): DOM-neutral virtualization, layout providers, range materialization, grids, spatial\u002Ffrustum indexes, patch invalidation, camera anchors, and serializable layout state.\n- [`@shapeshift-labs\u002Ffrontier-scene`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-scene): Patch-native 2D\u002F3D scene graph, transform propagation, bounds queries, virtual\u002Fculling adapters, spatial invalidation, and camera\u002Ffrustum materialization.\n- [`@shapeshift-labs\u002Ffrontier-pathfinding`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-pathfinding): Patch-native grid pathfinding, typed-array A*\u002FDijkstra search, flow fields, connected components, line-of-sight smoothing, dirty-cell invalidation, and scheduler-friendly path jobs.\n- [`@shapeshift-labs\u002Ffrontier-lod`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-lod): Patch-native level-of-detail and significance selection for rendering and computation workloads, compact typed hot paths, multi-observer selection, budget degradation, materialization frames, and scheduler work plans.\n- [`@shapeshift-labs\u002Ffrontier-route`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-route): DOM-neutral app\u002Fgame route resources, route and scene manifests, match\u002Fresolve\u002Ftransition planning, dependency metadata, sessions, registry graph output, and impact queries.\n- [`@shapeshift-labs\u002Ffrontier-trace`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-trace): Serializable traces, spans, events, causal links, W3C trace context helpers, timeline\u002Fresource\u002Fpath queries, critical-path analysis, registry graph output, JSONL\u002Fproof helpers, Chrome trace export, and redaction for app-wide feature observability.\n- [`@shapeshift-labs\u002Ffrontier-manifest`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-manifest): Build\u002Fstatic feature manifests for owners, routes, actions, states, migrations, tests, source files, assets, resources, tasks, dependency metadata, registry graph output, feature maps, JSONL export, and impact queries.\n- [`@shapeshift-labs\u002Ffrontier-view`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-view): Renderer-neutral view manifests, type defaults, validation frames, action bindings, visual channels, virtual\u002FLOD hints, and data-to-representation mapping for Frontier apps.\n- [`@shapeshift-labs\u002Ffrontier-dom`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-dom): Patch-native DOM and host renderer bindings, manifest hydration, JSX runtime\u002Fcompiler helpers, SSR, devtools, and logging bridges.\n- [`@shapeshift-labs\u002Ffrontier-playwright`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-playwright): Playwright\u002Fheadless automation probes for Frontier state, DOM, devtools, marks, and timeline queries.\n- [`@shapeshift-labs\u002Ffrontier-test`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-test): Serializable test\u002Fspec evidence manifests for Frontier apps, including fixtures, commands, expected patches\u002Feffects\u002Froutes\u002Fpolicies, coverage declarations, run plans, run records, report adapters, replay proofs, fuzzers, benchmarks, registry graph output, and impact queries.\n- [`@shapeshift-labs\u002Ffrontier-history`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-history): Serializable temporal explanation and causality records for Frontier apps, including field-change explanations, action\u002Fworkflow\u002Fpolicy\u002Feffect\u002Ftrace\u002Ftest provenance, audit windows, undo planning, registry\u002Fprovenance graph output, JSONL replay bundles, and proof hashes.\n- [`@shapeshift-labs\u002Ffrontier-application`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-application): Serializable whole-application graph and impact queries for Frontier apps, including features, owners, packages, routes, views, actions, mutations, state paths, effects, workers, assets, tests, traces, policies, workflows, migrations, benchmarks, registry graph output, feature maps, JSONL bundles, and proof hashes.\n- [`@shapeshift-labs\u002Ffrontier-linter`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-linter): Serializable Frontier lint rules, diagnostics, fixes, reports, and fast rule execution for package catalogs, registry graphs, application maps, manifests, traces, policies, workflows, workers, assets, tests, benchmarks, and source snippets.\n- [`@shapeshift-labs\u002Ffrontier-crdt`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-crdt): Native CRDT documents, update tooling, awareness, branches, conflict introspection, version frames, and undo.\n- [`@shapeshift-labs\u002Ffrontier-crdt-sync`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-crdt-sync): CRDT sync endpoints, repo\u002Fstorage\u002Fprovider contracts, scheduled sync work, document URLs, local networks, model checking, forensics, and text binding contracts.\n- [`@shapeshift-labs\u002Ffrontier-crdt-websocket`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-crdt-websocket): WebSocket client\u002Fserver transports for Frontier CRDT sync providers.\n- [`@shapeshift-labs\u002Ffrontier-react`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-react): React external-store hooks and adapters for Frontier state, cache, and CRDT surfaces.\n- [`@shapeshift-labs\u002Ffrontier-richtext`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-richtext): Rich text Delta normalization\u002Fapplication, marks, embeds, ranges, and cursor\u002Fselection transforms for local editor integrations.\n- [`@shapeshift-labs\u002Ffrontier-realtime`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-realtime): Shared realtime command, tick, snapshot, prediction, reconciliation, interpolation, rollback, message, and delta primitives.\n- [`@shapeshift-labs\u002Ffrontier-realtime-server`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-realtime-server): Authoritative realtime room, tick, command validation, rate-limit, session, and snapshot-history runtime.\n- [`@shapeshift-labs\u002Ffrontier-realtime-websocket`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-realtime-websocket): WebSocket client, wire, and Node room-server transport for Frontier realtime.\n- [`@shapeshift-labs\u002Ffrontier-game`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@shapeshift-labs\u002Ffrontier-game): Game-facing entity, component, player, room, ownership, spatial interest, rollback, physics, and replication helpers above realtime.\n\nPackage source repositories:\n\n- [`siliconjungle\u002F-shapeshift-labs-frontier`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-query`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-query)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-codec`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-codec)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-engine`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-engine)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-state`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-state)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-dataflow`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-dataflow)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-state-cache`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-state-cache)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-state-cache-idb`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-state-cache-idb)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-state-cache-file`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-state-cache-file)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-state-cache-sql`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-state-cache-sql)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-schema`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-schema)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-migrations`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-migrations)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-event-log`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-event-log)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-inspect`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-inspect)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-scheduler`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-scheduler)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-logging`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-logging)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-mutation`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-mutation)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-effects`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-effects)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-policy`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-policy)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-tools`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-tools)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-sandbox`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-sandbox)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-sandbox-quickjs`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-sandbox-quickjs)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-workflow`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-workflow)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-worker`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-worker)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-assets`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-assets)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-blueprint`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-blueprint)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-triggers`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-triggers)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-virtual`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-virtual)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-scene`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-scene)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-pathfinding`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-pathfinding)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-lod`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-lod)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-route`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-route)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-trace`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-trace)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-manifest`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-manifest)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-view`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-view)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-dom`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-dom)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-playwright`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-playwright)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-test`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-test)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-history`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-history)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-application`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-application)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-linter`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-linter)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-crdt`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-crdt)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-crdt-sync`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-crdt-sync)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-crdt-websocket`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-crdt-websocket)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-react`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-react)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-richtext`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-richtext)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-realtime`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-realtime)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-realtime-server`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-realtime-server)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-realtime-websocket`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-realtime-websocket)\n- [`siliconjungle\u002F-shapeshift-labs-frontier-game`](https:\u002F\u002Fgithub.com\u002Fsiliconjungle\u002F-shapeshift-labs-frontier-game)\n\n## Install\n\n```sh\nnpm install @shapeshift-labs\u002Ffrontier\n```\n\n## Usage\n\n```ts\nimport { applyPatchImmutable, diff } from '@shapeshift-labs\u002Ffrontier';\n\nconst before = {\n  todos: [\n    { id: 'a', done: false },\n    { id: 'b', done: false }\n  ],\n  meta: { version: 1 }\n};\n\nconst after = {\n  todos: [\n    { id: 'a', done: true },\n    { id: 'b', done: false },\n    { id: 'c', done: false }\n  ],\n  meta: { version: 2 }\n};\n\nconst patch = diff(before, after, { arrayKey: 'id' });\nconst next = applyPatchImmutable(before, patch);\n\nconsole.log(next);\n```\n\n## API\n\n```ts\nimport {\n  diff,\n  diffInto,\n  diffStable,\n  applyPatch,\n  applyPatchImmutable,\n  applyJsonPatch,\n  applyJsonPatchImmutable,\n  normalizePatch,\n  assertPatch,\n  cloneJson,\n  equalsJson,\n  equalsJsonFast,\n  parsePointer,\n  stringifyPointer\n} from '@shapeshift-labs\u002Ffrontier';\n```\n\n### `diff(before, after, options?)`\n\nReturns a compact Frontier patch.\n\nUseful options:\n\n- `arrayKey`: key or getter used to match object-array rows.\n- `autoArrayKey`: enables conservative key detection for reordered object arrays.\n- `dirtyPaths`: trusted changed paths supplied by a producer.\n- `dirtyRows`: compact row-oriented dirty frontier.\n- `fingerprintKey` \u002F `versionKey`: trusted subtree tokens that skip unchanged branches.\n- `maxPatchOperations`: emits one root replacement when a patch would be too long.\n- `stable`: sorts object keys for deterministic patch order.\n\n### `diffInto(before, after, reusablePatch, options?)`\n\nWrites into a caller-owned patch array to reduce allocation in hot loops.\n\n```ts\nconst patch = [];\nfor (const frame of frames) {\n  diffInto(frame.before, frame.after, patch);\n  send(patch);\n}\n```\n\n### `applyPatch(value, patch, options?)`\n\nApplies a Frontier patch mutably where possible. Pass `{ cloneValues: true }` if inserted patch values should be cloned before assignment.\n\n### `applyPatchImmutable(value, patch, options?)`\n\nApplies a Frontier patch without mutating the input root. This is usually the safest API for app state.\n\n### JSON Pointer Helpers\n\n```ts\nimport { getPointer, parsePointer, stringifyPointer } from '@shapeshift-labs\u002Ffrontier';\n\nconst path = parsePointer('\u002Ftodos\u002F0\u002Fdone');\nconst pointer = stringifyPointer(path);\nconst value = getPointer(document, pointer);\n```\n\n### Registry Graphs\n\n`@shapeshift-labs\u002Ffrontier\u002Fregistry` defines the shared feature\u002Fmethod graph used by state engines, mutation actions, DOM manifests\u002Fdevtools, Playwright probes, and logging telemetry:\n\n```ts\nimport {\n  createFrontierRegistry,\n  frontierRegistryExplain,\n  frontierRegistryImpact,\n  frontierRegistryTrace\n} from '@shapeshift-labs\u002Ffrontier\u002Fregistry';\n\nconst registry = createFrontierRegistry();\nregistry.register({\n  id: 'todo.toggle',\n  kind: 'action',\n  package: '@app\u002Ftodos',\n  feature: 'todos',\n  source: { file: 'src\u002Ffeatures\u002Ftodos\u002Factions.ts', exportName: 'toggleTodo' },\n  reads: ['\u002Ftodos\u002F*\u002Fdone'],\n  writes: ['\u002Ftodos\u002F*\u002Fdone'],\n  invalidates: ['todo.visible'],\n  touches: ['route:\u002Ftodos'],\n  tags: ['mutation']\n});\n\nconst graph = registry.inspect();\nconst impact = frontierRegistryImpact(graph, {\n  paths: ['\u002Ftodos\u002Fa\u002Fdone']\n});\nconst explain = frontierRegistryExplain(graph, {\n  features: ['todos'],\n  validation: { requireFeature: true, requireSource: true }\n});\nconst trace = frontierRegistryTrace(graph, {\n  ids: ['todo.toggle'],\n  targets: { nodes: ['route:\u002Ftodos'] }\n});\n```\n\nThe graph stores declarative edges and observed records as data. Production code can keep direct imports\u002Fcalls while tools consume the sidecar graph for impact analysis, replay, validation, feature\u002Fpackage\u002Ftag\u002Fsource-file indexes, and AI-readable traces.\n\n### Equality And Clone Helpers\n\n```ts\nimport { cloneJson, equalsJson, equalsJsonFast } from '@shapeshift-labs\u002Ffrontier';\n\nconst copy = cloneJson(value);\nconst same = equalsJsonFast(copy, value);\n```\n\n### Runtime Budget Helpers\n\n```ts\nimport { diff } from '@shapeshift-labs\u002Ffrontier';\nimport { createRuntimeScheduler } from '@shapeshift-labs\u002Ffrontier\u002Fruntime';\n\nconst scheduler = createRuntimeScheduler({ maxUnits: 48 });\nconst patch = diff(before, after);\n\nscheduler.schedule({ area: 'diff', run: () => patch });\nscheduler.schedule({ area: 'codec', run: () => JSON.stringify(patch) });\nscheduler.schedule({ area: 'logging', priority: 'low', run: () => JSON.stringify({ event: 'patch', ops: patch.length }) });\n\nconst result = scheduler.run();\n```\n\nThe runtime subpath is intentionally structural and dependency-free. It provides `createRuntimeBudget()`, `createRuntimeScheduler()`, and the standard work areas `diff`, `apply`, `codec`, `sync`, `cache`, and `logging`. Higher packages can use the same budget object shape without the core package importing any of those packages.\n\n## Why Frontier Patches Are Compact\n\nFrontier's patch format uses numeric tuple opcodes instead of verbose JSON Patch objects. It can represent common state changes directly:\n\n- `OP_SET` for replacing a value.\n- `OP_REMOVE` for deleting an object field or array item.\n- `OP_APPEND` and `OP_ARRAY_SPLICE` for array edits.\n- `OP_STRING_SPLICE` and `OP_STRING_COPY` for localized text changes.\n- `OP_ARRAY_MOVE` for keyed row movement.\n- `OP_ASSIGN`, `OP_ARRAY_OBJECT_ASSIGN`, and tuple\u002Ffield assign ops for batches of related updates.\n\nThe normal invariant is:\n\n```ts\napplyPatchImmutable(before, diff(before, after)) === after\n```\n\nUse `diffStable()` or `{ stable: true }` when deterministic object-key walk order matters more than raw speed.\n\n## Patch Format\n\nA Frontier patch is an array of tuples. You normally do not need to construct these by hand, but the constants are exported for tooling and tests.\n\n```ts\nimport { OP_SET, type Patch } from '@shapeshift-labs\u002Ffrontier';\n\nconst patch: Patch = [[OP_SET, ['status'], 'done']];\n```\n\nThe tuple format is optimized for in-memory replay and for compact transport once a codec is added above this core package.\n\n## Subpath Imports\n\nUse subpaths when you want a narrower import surface:\n\n```ts\nimport { diff } from '@shapeshift-labs\u002Ffrontier\u002Fdiff';\nimport { applyPatchImmutable } from '@shapeshift-labs\u002Ffrontier\u002Fpatch';\nimport { parsePointer } from '@shapeshift-labs\u002Ffrontier\u002Fpointer';\nimport { equalsJsonFast } from '@shapeshift-labs\u002Ffrontier\u002Fequal';\nimport { createRuntimeScheduler } from '@shapeshift-labs\u002Ffrontier\u002Fruntime';\n```\n\n## Package Scope\n\nThis package is intentionally limited to:\n\n- JSON diffing.\n- Compact patch replay.\n- RFC6902-style JSON Patch apply helpers.\n- JSON Pointer helpers.\n- JSON clone\u002Fequality\u002Fvalidation helpers.\n- Unicode string utilities used by the diff core.\n- Dependency-free runtime budget and scheduler contracts for coordinating work in higher packages.\n\nQuery helpers, codecs, engine planning, state, state-cache, schema, event logs, logging, mutation, CRDT, sync, rich text, and package-specific tooling belong in companion packages. The core package stays focused on JSON diff\u002Fapply primitives and has no runtime dependencies.\n\n## TypeScript\n\nFrontier ships first-party TypeScript declarations for the root package and every core subpath. The runtime package is plain ESM JavaScript, and the types are included in `dist\u002F*.d.ts`.\n\n```ts\nimport { diff, applyPatchImmutable, type DiffOptions, type JsonValue, type Patch } from '@shapeshift-labs\u002Ffrontier';\nimport type { JsonPath, PatchOperation } from '@shapeshift-labs\u002Ffrontier\u002Ftypes';\n\nconst options: DiffOptions = { arrayKey: 'id' };\nconst patch: Patch = diff(before as JsonValue, after as JsonValue, options);\nconst next = applyPatchImmutable(before as JsonValue, patch);\n```\n\nSubpath declarations are also exported:\n\n```ts\nimport { diff } from '@shapeshift-labs\u002Ffrontier\u002Fdiff';\nimport { applyPatchImmutable, type Patch } from '@shapeshift-labs\u002Ffrontier\u002Fpatch';\n```\n\nThe package includes `exports.types`, a `.\u002Ftypes` subpath, and `typesVersions` mappings for TypeScript projects that still use older Node-style package resolution.\n\n## Validation\n\nThe standalone package repository includes package-level tests that run against the built JavaScript distribution:\n\n```sh\nnpm test\nnpm run fuzz\nnpm run bench\nnpm run pack:dry\n```\n\nThe test suite covers:\n\n- TypeScript consumer checks against the published declarations.\n- Smoke tests for root and subpath imports.\n- Deterministic core diff\u002Fapply API tests.\n- A seedable diff\u002Fapply fuzzer covering nested JSON objects, arrays, strings, scalars, stable diffing, patch validation, mutable apply, immutable apply, and normalized patch replay.\n\nThe fuzzer can be run directly:\n\n```sh\nnode test\u002Fdiff-fuzz.mjs --cases 5000 --seed 1234\n```\n\n## Benchmarks\n\nRun the package-local benchmark:\n\n```sh\nnpm run bench\n```\n\nLatest local package benchmark on Node v26.1.0, darwin arm64, 9 rounds. Timings are median microseconds per operation; p95 is shown to make noise visible.\n\n| Fixture | Patch | Bytes | `diff()` median | `diff()` p95 | `applyPatchImmutable()` median |\n| --- | ---: | ---: | ---: | ---: | ---: |\n| Small object field edit | 1 op | 26 B | 0.56 us | 0.65 us | 0.09 us |\n| 1k keyed rows, one field edit | 1 op | 31 B | 268.79 us | 272.13 us | 0.32 us |\n| 1k keyed rows with dirty path hint | 2 ops | 66 B | 0.59 us | 0.71 us | 0.39 us |\n| 10k text middle insert | 1 op | 32 B | 2.89 us | 3.02 us | 0.10 us |\n\nThe package benchmark also includes a runtime scheduling fixture. It compares independent per-area slices with one shared scheduler slice over mixed `diff`, `apply`, `codec`, `sync`, `cache`, and `logging` work.\n\n| Runtime fixture | Target units | Completed units | Overrun | Median |\n| --- | ---: | ---: | ---: | ---: |\n| Ad hoc per-area slices | 48 | 288 | 240 | 2,353.42 us |\n| Central scheduler slice | 48 | 48 | 0 | 449.21 us |\n| Direct full mixed work | 384 | 384 | 0 | 3,099.61 us |\n| Scheduler full mixed work | 384 | 384 | 0 | 3,267.48 us |\n\nThese numbers are Frontier-only package measurements, not a competitor comparison. Hardware, Node version, and data shape will affect absolute timings.\n\n## License\n\nMIT. See [LICENSE](.\u002FLICENSE).\n","Frontier 是一个用于JavaScript值的快速紧凑JSON差异和补丁工具。它能够比较JSON结构的数据，并生成可重放的紧凑补丁，特别适用于需要明确知道如何通过最小操作来重现新值的应用场景，如应用程序状态管理、缓存API结果处理、编辑器模型同步、游戏状态更新及编译器数据处理等。该库核心包小巧且无运行时依赖，专注于提供高效的基础功能，而不包含查询辅助、编码解码器、引擎规划等高级特性。对于追求性能并希望在内存中对JSON数据进行高效比较与更新的开发者来说，Frontier是一个理想的选择。",2,"2026-06-11 04:05:50","CREATED_QUERY"]