@omgbase/astro 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +92 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +2 -2
- package/dist/loader.js.map +1 -1
- package/dist/watch.d.ts +5 -25
- package/dist/watch.d.ts.map +1 -1
- package/dist/watch.js +52 -152
- package/dist/watch.js.map +1 -1
- package/package.json +2 -1
- package/dist/digest.d.ts +0 -67
- package/dist/digest.d.ts.map +0 -1
- package/dist/digest.js +0 -142
- package/dist/digest.js.map +0 -1
package/README.md
CHANGED
|
@@ -5,9 +5,10 @@ Use an [omgbase](https://github.com/omgbase/omgbase) repository as the CMS for a
|
|
|
5
5
|
The package provides:
|
|
6
6
|
|
|
7
7
|
- **`omgLoader`** — an Astro Content Layer loader driven by an **OQX** query
|
|
8
|
+
- **`omgLiveLoader`** — an Astro **live collection** loader for SSR: query and hydrate omg at request time, no build-time data store
|
|
8
9
|
- **Local transport** — embedded `@omgbase/core`
|
|
9
10
|
- **Remote transport** — Streamable HTTP MCP (`query` + `docs_get_many`), same as `omg … --server <url>`
|
|
10
|
-
- **Dev live-reload** — in `astro dev`, local vaults use Vite's FS watcher; remote polls MCP `changes_since
|
|
11
|
+
- **Dev live-reload** — in `astro dev`, local vaults use Vite's FS watcher; remote polls MCP `changes_since` and reconnects on its own when the server restarts. Both update Astro's content data store so the normal HMR path fires — no custom integration required
|
|
11
12
|
- **`createMcpHttpServer`** — optional local Streamable HTTP MCP server for demos/CI
|
|
12
13
|
|
|
13
14
|
## Install
|
|
@@ -93,6 +94,8 @@ Enabled by default whenever Astro passes a `watcher` into the loader:
|
|
|
93
94
|
|
|
94
95
|
On change, the loader re-queries/hydrates into the content data store. Astro already watches that store file and hot-reloads pages — we don’t invent a second HMR channel.
|
|
95
96
|
|
|
97
|
+
If the remote server restarts (or the Streamable HTTP session expires), the transport drops its stale session, reconnects, and retries the call once — polling resumes without restarting `astro dev`. While the server is down, the loader logs one warning and then a single info line when it comes back.
|
|
98
|
+
|
|
96
99
|
```ts
|
|
97
100
|
omgLoader({
|
|
98
101
|
url: process.env.OMG_URL!,
|
|
@@ -119,6 +122,94 @@ const mcp = await createMcpHttpServer({
|
|
|
119
122
|
|
|
120
123
|
Prefer your real wrapper/hosted endpoint for production builds.
|
|
121
124
|
|
|
125
|
+
## Live collections (SSR)
|
|
126
|
+
|
|
127
|
+
`omgLiveLoader` is an Astro [live collection](https://docs.astro.build/en/guides/content-collections/) loader (experimental in Astro 5.10+, stable in Astro 7). Nothing is loaded at build time: every `getLiveCollection` / `getLiveEntry` call runs an OQX query and/or `docs_get_many` against omg when the request comes in. Your site must render on the server (`output: "server"` in `astro.config.mjs`, with an adapter).
|
|
128
|
+
|
|
129
|
+
```ts
|
|
130
|
+
// src/live.config.ts
|
|
131
|
+
import { defineLiveCollection } from "astro:content";
|
|
132
|
+
import { omgLiveLoader } from "@omgbase/astro";
|
|
133
|
+
|
|
134
|
+
const notes = defineLiveCollection({
|
|
135
|
+
loader: omgLiveLoader({
|
|
136
|
+
url: process.env.OMG_URL!, // or `workspace: "../content"` for the local transport
|
|
137
|
+
token: process.env.OMG_TOKEN,
|
|
138
|
+
repo: "notes",
|
|
139
|
+
query: "select $path, $title, $updated_at from docs",
|
|
140
|
+
href: ({ slug }) => `/note/${slug}/`, // match your routes
|
|
141
|
+
}),
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
export const collections = { notes };
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
```astro
|
|
148
|
+
---
|
|
149
|
+
// src/pages/notes/index.astro
|
|
150
|
+
import { getLiveCollection } from "astro:content";
|
|
151
|
+
|
|
152
|
+
const { entries, error } = await getLiveCollection("notes", {
|
|
153
|
+
query: 'select $path, $title, $updated_at from docs where status == "published"',
|
|
154
|
+
limit: 50,
|
|
155
|
+
});
|
|
156
|
+
if (error) throw error;
|
|
157
|
+
---
|
|
158
|
+
<ul>
|
|
159
|
+
{entries.map((n) => <li><a href={`/note/${n.data.slug}/`}>{n.data.title}</a></li>)}
|
|
160
|
+
</ul>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
```astro
|
|
164
|
+
---
|
|
165
|
+
// src/pages/note/[...slug].astro
|
|
166
|
+
import { getLiveEntry, render } from "astro:content";
|
|
167
|
+
|
|
168
|
+
const { entry, error } = await getLiveEntry("notes", { slug: Astro.params.slug! });
|
|
169
|
+
if (error) throw error;
|
|
170
|
+
if (!entry) return Astro.redirect("/404");
|
|
171
|
+
const { Content } = await render(entry);
|
|
172
|
+
---
|
|
173
|
+
<h1>{entry.data.title}</h1>
|
|
174
|
+
<Content />
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Filters
|
|
178
|
+
|
|
179
|
+
| Call | Filter | Notes |
|
|
180
|
+
| --- | --- | --- |
|
|
181
|
+
| `getLiveCollection(name, filter?)` | `{ query?, limit?, hydrate? }` | Each field falls back to the loader option. `query` must return document hits |
|
|
182
|
+
| `getLiveEntry(name, filter)` | `{ id }` **or** `{ path }` **or** `{ slug }` | Exactly one key. `path` is repo-relative (a leading `/` is stripped); `slug` is mapped back to a path with `pathForSlug` (default `` `${slug}.md` ``) and looked up via `$path == "…"` |
|
|
183
|
+
|
|
184
|
+
A missing entry resolves to `entry: undefined`; every other failure comes back as `error`, an `OmgLiveError` with a `code` of `invalid_filter`, `query_failed`, `hydrate_failed` or `render_failed` — the loader never throws.
|
|
185
|
+
|
|
186
|
+
### Lean vs hydrated
|
|
187
|
+
|
|
188
|
+
By default a collection is **lean**: one `query` call, and each entry's `data` holds the query's projections (plus `path`, `docId`, `slug`, and `updatedAt` / `title` aliases of `$updated_at` / `$title` when projected). There is no `rendered` content and no `body`, so a list page costs a single round trip.
|
|
189
|
+
|
|
190
|
+
`getLiveEntry` always **hydrates**: `docs_get_many` for the doc, `data` = frontmatter + intrinsics (`path`, `docId`, `slug`, `contentHash`) + the lean projections + `body` (markdown after frontmatter), and `rendered.html`. Markdown links are rewritten to `href(...)` for the docs omg's out-edges say this doc links to; links to anything else are left as authored. Set `href: false` to skip rewriting.
|
|
191
|
+
|
|
192
|
+
Pass `hydrate: true` (loader option or collection filter) to get the hydrated shape for every collection entry — one `query`, one `docs_get_many`, one edge lookup.
|
|
193
|
+
|
|
194
|
+
`cacheHint.lastModified` is set from `$updated_at` (the newest hit for a collection) whenever your query projects it, so project it if you cache responses.
|
|
195
|
+
|
|
196
|
+
### Rendering
|
|
197
|
+
|
|
198
|
+
Bodies render through `@astrojs/markdown-remark`'s `createMarkdownProcessor`, created once per loader. Pass `markdown` to configure it, or `render` to replace it:
|
|
199
|
+
|
|
200
|
+
```ts
|
|
201
|
+
omgLiveLoader({
|
|
202
|
+
url: process.env.OMG_URL!,
|
|
203
|
+
query: "select $path, $title, $updated_at from docs",
|
|
204
|
+
markdown: { shikiConfig: { theme: "github-dark" } },
|
|
205
|
+
// render: async (markdown, { docId, path }) => ({ html: myRenderer(markdown) }),
|
|
206
|
+
});
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Connections
|
|
210
|
+
|
|
211
|
+
The loader connects lazily on the first request and keeps that transport for the life of the server process; the remote transport reconnects by itself when the MCP session is lost. Pass `transport` to share a connection between loaders or to inject a fake in tests.
|
|
212
|
+
|
|
122
213
|
## Identity & caching
|
|
123
214
|
|
|
124
215
|
- Astro entry **`id`** = omg document id (`d_…`)
|
package/dist/index.d.ts
CHANGED
|
@@ -5,9 +5,7 @@ export { createLocalTransport, LocalTransport } from "./local.js";
|
|
|
5
5
|
export type { LocalTransportOptions } from "./local.js";
|
|
6
6
|
export { createRemoteTransport, RemoteTransport, parseHeaderLine, resolveHeaders, } from "./remote.js";
|
|
7
7
|
export type { RemoteTransportOptions } from "./remote.js";
|
|
8
|
-
export type { WatchOption
|
|
9
|
-
export { withContentHash, encodeEntryDigest, parseEntryDigest } from "./digest.js";
|
|
10
|
-
export type { EntryDigest } from "./digest.js";
|
|
8
|
+
export type { WatchOption } from "./watch.js";
|
|
11
9
|
export { defaultSlug, stripFrontmatter, mapDoc, mergeHitProjections, contentHashOf } from "./map.js";
|
|
12
10
|
export type { SlugContext, MappedEntry } from "./map.js";
|
|
13
11
|
export type { OmgEntryIntrinsics } from "./schema.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjH,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,YAAY,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjH,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACrG,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACzD,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EACL,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export { omgLoader } from "./loader.js";
|
|
2
2
|
export { createLocalTransport, LocalTransport } from "./local.js";
|
|
3
3
|
export { createRemoteTransport, RemoteTransport, parseHeaderLine, resolveHeaders, } from "./remote.js";
|
|
4
|
-
export { withContentHash, encodeEntryDigest, parseEntryDigest } from "./digest.js";
|
|
5
4
|
export { defaultSlug, stripFrontmatter, mapDoc, mergeHitProjections, contentHashOf } from "./map.js";
|
|
6
5
|
export { defaultHref, buildHrefIndex, rewriteMarkdownLinks, resolveLinkHref, canonicalLinkPath, splitDestination, docDirOf, } from "./links.js";
|
|
7
6
|
export { createMcpHttpServer, createPublicationServer, } from "./server.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AASxC,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AASxC,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIrG,OAAO,EACL,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,GACT,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,aAAa,CAAC"}
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAElF,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IACpC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IAC9C;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,GAAG;IAC1D;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;AA2BrG;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAElF,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IACpC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IAC9C;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,GAAG;IAC1D;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;AA2BrG;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAsCxD"}
|
package/dist/loader.js
CHANGED
|
@@ -56,8 +56,8 @@ export function omgLoader(opts) {
|
|
|
56
56
|
};
|
|
57
57
|
try {
|
|
58
58
|
context.logger.info(`querying omgbase (${transport.kind})`);
|
|
59
|
-
const { seen
|
|
60
|
-
context.logger.info(`loaded ${seen} entries from omgbase
|
|
59
|
+
const { seen } = await syncEntries(context, transport, syncOpts);
|
|
60
|
+
context.logger.info(`loaded ${seen} entries from omgbase`);
|
|
61
61
|
if (context.watcher && watchOpt !== false) {
|
|
62
62
|
await startWatch(context, transport, { ...syncOpts, watch: watchOpt });
|
|
63
63
|
// Watch owns the transport lifetime.
|
package/dist/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAA8B,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAA+B,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,WAAW,EAAoB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,WAAW,EAAoB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAoB,MAAM,YAAY,CAAC;AAyDlF,SAAS,gBAAgB,CAAC,IAAsB;IAC9C,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1C,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,MAAM,GAA2B;YACrC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC;QACF,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,KAAK,GAA0B;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D,CAAC;QACF,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,KAAK,CACb,0GAA0G,CAC3G,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,IAAsB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IACxC,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAgB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;IAEjD,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,KAAK,CAAC,IAAI,CAAC,OAAsB;YAC/B,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAEpC,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;aACb,CAAC;YAEF,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;gBAC5D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACjE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,uBAAuB,CAAC,CAAC;gBAE3D,IAAI,OAAO,CAAC,OAAO,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;oBAC1C,MAAM,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACvE,qCAAqC;oBACrC,OAAO;gBACT,CAAC;gBAED,MAAM,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC1B,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/watch.d.ts
CHANGED
|
@@ -7,35 +7,16 @@ export type WatchOption = boolean | {
|
|
|
7
7
|
intervalMs?: number;
|
|
8
8
|
};
|
|
9
9
|
export declare function stopWatch(collection: string): Promise<void>;
|
|
10
|
-
export
|
|
11
|
-
/** Docs matched by the query (entries kept in the store). */
|
|
12
|
-
seen: number;
|
|
13
|
-
/** Entries re-parsed/re-rendered and written to the store. */
|
|
14
|
-
written: number;
|
|
15
|
-
/** Docs whose bodies were fetched from omg this pass. */
|
|
16
|
-
hydrated: number;
|
|
17
|
-
}
|
|
18
|
-
interface SyncOptions {
|
|
10
|
+
export declare function syncEntries(context: LoaderContext, transport: Transport, opts: {
|
|
19
11
|
query: string;
|
|
20
12
|
limit?: number;
|
|
21
13
|
repo?: string;
|
|
22
14
|
slug: (ctx: SlugContext) => string;
|
|
23
15
|
href: false | ((ctx: HrefContext) => string);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
* 1. Query with `$content_hash` projected.
|
|
29
|
-
* 2. Reuse any stored entry whose hash, path and hit projections are unchanged.
|
|
30
|
-
* 3. `docs_get_many` only new/changed docs.
|
|
31
|
-
* 4. Rebuild the href map for the whole collection (unchanged docs contribute
|
|
32
|
-
* the slug/href remembered in their digest) and, only when it moved, fetch
|
|
33
|
-
* edges and re-hydrate the unchanged docs whose link targets changed.
|
|
34
|
-
* 5. Map, rewrite links, render, and store just those docs.
|
|
35
|
-
*
|
|
36
|
-
* A no-change reload therefore costs one query and nothing else.
|
|
37
|
-
*/
|
|
38
|
-
export declare function syncEntries(context: LoaderContext, transport: Transport, opts: SyncOptions): Promise<SyncResult>;
|
|
16
|
+
}): Promise<{
|
|
17
|
+
seen: number;
|
|
18
|
+
written: number;
|
|
19
|
+
}>;
|
|
39
20
|
/**
|
|
40
21
|
* After the initial load, keep the collection fresh in `astro dev`.
|
|
41
22
|
*
|
|
@@ -54,5 +35,4 @@ export declare function startWatch(context: LoaderContext, transport: Transport,
|
|
|
54
35
|
href: false | ((ctx: HrefContext) => string);
|
|
55
36
|
watch: WatchOption;
|
|
56
37
|
}): Promise<void>;
|
|
57
|
-
export {};
|
|
58
38
|
//# sourceMappingURL=watch.d.ts.map
|
package/dist/watch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAKL,KAAK,WAAW,EAEjB,MAAM,YAAY,CAAC;AAKpB,MAAM,MAAM,WAAW,GACnB,OAAO,GACP;IACE,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AASN,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjE;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IACnC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;CAC9C,GACA,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAqG5C;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IACnC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IAC7C,KAAK,EAAE,WAAW,CAAC;CACpB,GACA,OAAO,CAAC,IAAI,CAAC,CAwGf"}
|
package/dist/watch.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mapDoc, mergeHitProjections } from "./map.js";
|
|
2
2
|
import { allowedDstsFor, buildHrefIndex, hrefIndexFingerprint, rewriteMarkdownLinks, } from "./links.js";
|
|
3
|
-
import { CONTENT_HASH_FIELD, encodeEntryDigest, hitContentHash, hitProjectionsFingerprint, linksFingerprint, parseEntryDigest, withContentHash, } from "./digest.js";
|
|
4
3
|
const CURSOR_META = "omg:changes-cursor";
|
|
5
4
|
const DEFAULT_POLL_MS = 2000;
|
|
6
5
|
/** Per-collection watch handles so a re-sync replaces the previous poll/listeners. */
|
|
@@ -12,156 +11,71 @@ export async function stopWatch(collection) {
|
|
|
12
11
|
watches.delete(collection);
|
|
13
12
|
await prev.stop();
|
|
14
13
|
}
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
* server's whole-file hash. If the augmented query is rejected (older server,
|
|
20
|
-
* unusual syntax), fall back to the user's query as written — every doc is
|
|
21
|
-
* then hydrated, exactly as before hash-first sync existed.
|
|
22
|
-
*/
|
|
23
|
-
async function queryHits(transport, opts, logger) {
|
|
24
|
-
const base = {
|
|
14
|
+
export async function syncEntries(context, transport, opts) {
|
|
15
|
+
const { store, logger, parseData, renderMarkdown, generateDigest } = context;
|
|
16
|
+
const hits = await transport.query({
|
|
17
|
+
query: opts.query,
|
|
25
18
|
...(opts.limit !== undefined ? { limit: opts.limit } : {}),
|
|
26
19
|
...(opts.repo !== undefined ? { repo: opts.repo } : {}),
|
|
27
|
-
};
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
logger.warn(`omgbase: could not project $content_hash; hydrating every doc: ${err instanceof Error ? err.message : String(err)}`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return { hits: await transport.query({ query: opts.query, ...base }), injected: false };
|
|
38
|
-
}
|
|
39
|
-
function stripInjectedHash(hit) {
|
|
40
|
-
const { [CONTENT_HASH_FIELD]: _hash, ...rest } = hit;
|
|
41
|
-
return rest;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Hash-first sync of one collection into Astro's data store.
|
|
45
|
-
*
|
|
46
|
-
* 1. Query with `$content_hash` projected.
|
|
47
|
-
* 2. Reuse any stored entry whose hash, path and hit projections are unchanged.
|
|
48
|
-
* 3. `docs_get_many` only new/changed docs.
|
|
49
|
-
* 4. Rebuild the href map for the whole collection (unchanged docs contribute
|
|
50
|
-
* the slug/href remembered in their digest) and, only when it moved, fetch
|
|
51
|
-
* edges and re-hydrate the unchanged docs whose link targets changed.
|
|
52
|
-
* 5. Map, rewrite links, render, and store just those docs.
|
|
53
|
-
*
|
|
54
|
-
* A no-change reload therefore costs one query and nothing else.
|
|
55
|
-
*/
|
|
56
|
-
export async function syncEntries(context, transport, opts) {
|
|
57
|
-
const { store, logger, meta, parseData, renderMarkdown } = context;
|
|
58
|
-
const repoArg = opts.repo !== undefined ? { repo: opts.repo } : {};
|
|
59
|
-
const { hits, injected } = await queryHits(transport, opts, logger);
|
|
60
|
-
// Decide, per hit, whether the stored entry can stand in for a fetch.
|
|
61
|
-
const seen = new Set();
|
|
62
|
-
const plans = new Map();
|
|
63
|
-
const toHydrate = [];
|
|
64
|
-
for (const hit of hits) {
|
|
65
|
-
if (plans.has(hit.id))
|
|
66
|
-
continue;
|
|
67
|
-
seen.add(hit.id);
|
|
68
|
-
const hash = hitContentHash(hit);
|
|
69
|
-
const hitsFp = hitProjectionsFingerprint(hit, injected);
|
|
70
|
-
const stored = parseEntryDigest(store.get(hit.id)?.digest);
|
|
71
|
-
const reusable = stored !== null &&
|
|
72
|
-
hash !== null &&
|
|
73
|
-
stored.hash === hash &&
|
|
74
|
-
stored.path === hit.path &&
|
|
75
|
-
stored.hitsFp === hitsFp;
|
|
76
|
-
plans.set(hit.id, { hit, hash, hitsFp, stored: reusable ? stored : null });
|
|
77
|
-
if (!reusable)
|
|
78
|
-
toHydrate.push(hit.id);
|
|
79
|
-
}
|
|
80
|
-
const docs = toHydrate.length
|
|
81
|
-
? await transport.hydrate({ ids: toHydrate, ...repoArg })
|
|
20
|
+
});
|
|
21
|
+
const ids = hits.map((h) => h.id);
|
|
22
|
+
const docs = ids.length
|
|
23
|
+
? await transport.hydrate({
|
|
24
|
+
ids,
|
|
25
|
+
...(opts.repo !== undefined ? { repo: opts.repo } : {}),
|
|
26
|
+
})
|
|
82
27
|
: [];
|
|
83
28
|
const byId = new Map(docs.map((d) => [d.id, d]));
|
|
84
|
-
|
|
29
|
+
const seen = new Set();
|
|
30
|
+
let written = 0;
|
|
31
|
+
// Identity → site URL for every hydrated doc in this collection.
|
|
85
32
|
let hrefIndex = buildHrefIndex([]);
|
|
33
|
+
let edges = [];
|
|
86
34
|
let hrefFp = "";
|
|
87
|
-
|
|
88
|
-
if (opts.href !== false) {
|
|
35
|
+
if (opts.href !== false && docs.length > 0) {
|
|
89
36
|
const hrefOf = opts.href;
|
|
90
|
-
const entries =
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
37
|
+
const entries = docs.map((doc) => {
|
|
38
|
+
const slug = opts.slug({
|
|
39
|
+
path: doc.path,
|
|
40
|
+
docId: doc.id,
|
|
41
|
+
properties: doc.properties,
|
|
42
|
+
});
|
|
43
|
+
const href = hrefOf({
|
|
44
|
+
path: doc.path,
|
|
45
|
+
docId: doc.id,
|
|
46
|
+
slug,
|
|
47
|
+
properties: doc.properties,
|
|
48
|
+
});
|
|
49
|
+
return { docId: doc.id, path: doc.path, href };
|
|
50
|
+
});
|
|
105
51
|
hrefIndex = buildHrefIndex(entries);
|
|
106
52
|
hrefFp = hrefIndexFingerprint(hrefIndex);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
let edgesOk = false;
|
|
114
|
-
if (opts.href !== false && transport.outEdges && (docs.length > 0 || hrefMoved)) {
|
|
115
|
-
try {
|
|
116
|
-
edges = await transport.outEdges({ ids: [...plans.keys()], ...repoArg });
|
|
117
|
-
edgesOk = true;
|
|
118
|
-
}
|
|
119
|
-
catch (err) {
|
|
120
|
-
logger.warn(`omgbase out-edges unavailable; link rewrite uses path resolution only: ${err instanceof Error ? err.message : String(err)}`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
const linksFpFor = (docId) => {
|
|
124
|
-
if (opts.href === false || hrefIndex.byDocId.size === 0)
|
|
125
|
-
return "";
|
|
126
|
-
// Without edges the rewrite resolves by path over the whole index.
|
|
127
|
-
if (!edgesOk)
|
|
128
|
-
return `idx:${hrefFp}`;
|
|
129
|
-
return linksFingerprint(docId, edges, hrefIndex, hrefFp);
|
|
130
|
-
};
|
|
131
|
-
// Unchanged docs whose link targets moved hold an already-rewritten body,
|
|
132
|
-
// so they must be fetched again to be rewritten against the new map.
|
|
133
|
-
if (hrefMoved) {
|
|
134
|
-
const stale = [];
|
|
135
|
-
for (const plan of plans.values()) {
|
|
136
|
-
if (!plan.stored || byId.has(plan.hit.id))
|
|
137
|
-
continue;
|
|
138
|
-
if (linksFpFor(plan.hit.id) !== plan.stored.linksFp) {
|
|
139
|
-
stale.push(plan.hit.id);
|
|
140
|
-
plan.stored = null;
|
|
53
|
+
if (transport.outEdges) {
|
|
54
|
+
try {
|
|
55
|
+
edges = await transport.outEdges({
|
|
56
|
+
ids: docs.map((d) => d.id),
|
|
57
|
+
...(opts.repo !== undefined ? { repo: opts.repo } : {}),
|
|
58
|
+
});
|
|
141
59
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
for (const doc of await transport.hydrate({ ids: stale, ...repoArg })) {
|
|
145
|
-
byId.set(doc.id, doc);
|
|
146
|
-
docs.push(doc);
|
|
60
|
+
catch (err) {
|
|
61
|
+
logger.warn(`omgbase out-edges unavailable; link rewrite uses path resolution only: ${err instanceof Error ? err.message : String(err)}`);
|
|
147
62
|
}
|
|
148
63
|
}
|
|
149
64
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
const doc = byId.get(plan.hit.id);
|
|
65
|
+
for (const hit of hits) {
|
|
66
|
+
const doc = byId.get(hit.id);
|
|
153
67
|
if (!doc) {
|
|
154
|
-
|
|
155
|
-
continue; // reused as-is
|
|
156
|
-
logger.warn(`hydrate missed doc ${plan.hit.id} (${plan.hit.path})`);
|
|
157
|
-
seen.delete(plan.hit.id);
|
|
68
|
+
logger.warn(`hydrate missed doc ${hit.id} (${hit.path})`);
|
|
158
69
|
continue;
|
|
159
70
|
}
|
|
71
|
+
seen.add(doc.id);
|
|
160
72
|
const mapped = mapDoc(doc, opts.slug);
|
|
161
|
-
mapped.data = mergeHitProjections(mapped.data,
|
|
73
|
+
mapped.data = mergeHitProjections(mapped.data, hit);
|
|
162
74
|
let body = mapped.body;
|
|
163
75
|
if (opts.href !== false && hrefIndex.byDocId.size > 0) {
|
|
164
|
-
const allowed = edges.length
|
|
76
|
+
const allowed = edges.length
|
|
77
|
+
? allowedDstsFor(doc.id, edges, hrefIndex)
|
|
78
|
+
: undefined;
|
|
165
79
|
// Prefer edge-gated rewrite when we have live out-edges; if this doc has
|
|
166
80
|
// none into the collection, still allow path resolution into hydrated docs.
|
|
167
81
|
const gate = allowed && allowed.size > 0 ? allowed : undefined;
|
|
@@ -171,20 +85,8 @@ export async function syncEntries(context, transport, opts) {
|
|
|
171
85
|
...(gate ? { allowedDstIds: gate } : {}),
|
|
172
86
|
});
|
|
173
87
|
}
|
|
174
|
-
const
|
|
175
|
-
const
|
|
176
|
-
const digest = encodeEntryDigest({
|
|
177
|
-
hash: knownHash ?? `body:${doc.body.length}`,
|
|
178
|
-
path: doc.path,
|
|
179
|
-
slug: route?.slug ?? String(mapped.data.slug ?? ""),
|
|
180
|
-
href: route?.href ?? "",
|
|
181
|
-
hitsFp: plan.hitsFp,
|
|
182
|
-
linksFp: linksFpFor(doc.id),
|
|
183
|
-
// No server hash: fall back to the inputs that used to drive the digest.
|
|
184
|
-
...(knownHash === null
|
|
185
|
-
? { fmFp: digestFingerprint(doc.properties.frontmatter ?? {}), rev: doc.rev }
|
|
186
|
-
: {}),
|
|
187
|
-
});
|
|
88
|
+
const baseDigest = mapped.digest || generateDigest(mapped.body);
|
|
89
|
+
const digest = hrefFp ? `${baseDigest}|href:${hrefFp}` : baseDigest;
|
|
188
90
|
const existing = store.get(doc.id);
|
|
189
91
|
if (existing?.digest === digest)
|
|
190
92
|
continue;
|
|
@@ -197,9 +99,7 @@ export async function syncEntries(context, transport, opts) {
|
|
|
197
99
|
if (!seen.has(id))
|
|
198
100
|
store.delete(id);
|
|
199
101
|
}
|
|
200
|
-
|
|
201
|
-
meta.set(HREF_FP_META, hrefFp);
|
|
202
|
-
return { seen: seen.size, written, hydrated: docs.length };
|
|
102
|
+
return { seen: seen.size, written };
|
|
203
103
|
}
|
|
204
104
|
/**
|
|
205
105
|
* After the initial load, keep the collection fresh in `astro dev`.
|
|
@@ -227,8 +127,8 @@ export async function startWatch(context, transport, opts) {
|
|
|
227
127
|
return;
|
|
228
128
|
busy = true;
|
|
229
129
|
try {
|
|
230
|
-
const { written
|
|
231
|
-
logger.info(`omgbase reload (${reason})
|
|
130
|
+
const { written } = await syncEntries(context, transport, opts);
|
|
131
|
+
logger.info(`omgbase reload (${reason})${written ? `: ${written} entries updated` : ""}`);
|
|
232
132
|
}
|
|
233
133
|
catch (err) {
|
|
234
134
|
logger.error(`omgbase reload failed: ${err instanceof Error ? err.message : String(err)}`);
|
package/dist/watch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omgbase/astro",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Astro Content Loader and helpers to use omgbase as a CMS",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"lint": "echo 'no lint yet'"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
+
"@astrojs/markdown-remark": "^7.3.0",
|
|
36
37
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
37
38
|
"@omgbase/core": "^0.5.0",
|
|
38
39
|
"@omgbase/sync": "^0.4.2"
|
package/dist/digest.d.ts
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hash-first sync support: the pieces that let `syncEntries` decide, from a
|
|
3
|
-
* lean OQX hit alone, whether a document needs to be fetched or re-rendered.
|
|
4
|
-
*
|
|
5
|
-
* - {@link withContentHash} projects `$content_hash` onto the user's query so
|
|
6
|
-
* every hit carries the server's whole-file hash (frontmatter included).
|
|
7
|
-
* - {@link encodeEntryDigest} / {@link parseEntryDigest} store everything the
|
|
8
|
-
* next sync needs to skip a doc — hash, path, slug, href, projection and link
|
|
9
|
-
* fingerprints — inside the Astro data-store `digest` string, so no extra
|
|
10
|
-
* state lives outside Astro's own persistence.
|
|
11
|
-
* - {@link linksFingerprint} pins a doc's rewritten body to the hrefs of the
|
|
12
|
-
* docs it links to, so a new/removed/moved doc only invalidates its linkers.
|
|
13
|
-
*/
|
|
14
|
-
import type { HrefIndex, OutEdge } from "./links.js";
|
|
15
|
-
export interface EntryDigest {
|
|
16
|
-
/** Server `$content_hash`, or `body:<len>` when the server has none. */
|
|
17
|
-
hash: string;
|
|
18
|
-
path: string;
|
|
19
|
-
slug: string;
|
|
20
|
-
/** Site href used for link rewriting; `""` when rewriting is disabled. */
|
|
21
|
-
href: string;
|
|
22
|
-
/** Fingerprint of the hit's extra OQX projections (they land in `data`). */
|
|
23
|
-
hitsFp: string;
|
|
24
|
-
/** Fingerprint of the hrefs of this doc's in-collection link targets. */
|
|
25
|
-
linksFp: string;
|
|
26
|
-
/** Only meaningful when `hash` is a `body:` fallback (no server hash). */
|
|
27
|
-
fmFp?: string;
|
|
28
|
-
rev?: string | null;
|
|
29
|
-
}
|
|
30
|
-
export declare function encodeEntryDigest(d: EntryDigest): string;
|
|
31
|
-
/** Parse a stored digest; `null` for legacy/foreign digests (forces a re-hydrate). */
|
|
32
|
-
export declare function parseEntryDigest(digest: string | number | undefined | null): EntryDigest | null;
|
|
33
|
-
export declare const CONTENT_HASH_FIELD = "$content_hash";
|
|
34
|
-
/**
|
|
35
|
-
* Add `$content_hash` to the top-level projection of an OQX query.
|
|
36
|
-
*
|
|
37
|
-
* OQX fixes clause order (`select … from … where …`) and only `select` may drop
|
|
38
|
-
* its keyword, so the projection is always at the very start of the string:
|
|
39
|
-
*
|
|
40
|
-
* - `select a, b from docs …` → `select $content_hash, a, b from docs …`
|
|
41
|
-
* - `a, b from docs …` → `$content_hash, a, b from docs …`
|
|
42
|
-
* - `from docs …` → `select $content_hash from docs …`
|
|
43
|
-
*
|
|
44
|
-
* Queries that already mention `$content_hash`, or scalar `$repo.` forms, are
|
|
45
|
-
* returned unchanged. Returns `{ query, injected }` so the caller can strip the
|
|
46
|
-
* field from hit projections again (it must not leak into entry `data`).
|
|
47
|
-
*/
|
|
48
|
-
export declare function withContentHash(query: string): {
|
|
49
|
-
query: string;
|
|
50
|
-
injected: boolean;
|
|
51
|
-
};
|
|
52
|
-
/** Read the projected hash off a hit; `null` when absent or malformed. */
|
|
53
|
-
export declare function hitContentHash(hit: Record<string, unknown>): string | null;
|
|
54
|
-
/**
|
|
55
|
-
* Fingerprint of a hit's extra projections (everything but `id`/`path` and an
|
|
56
|
-
* injected `$content_hash`). These merge into entry `data`, so a change in e.g.
|
|
57
|
-
* `outs: doc.out collect { … }` must re-map the entry even when content didn't move.
|
|
58
|
-
*/
|
|
59
|
-
export declare function hitProjectionsFingerprint(hit: Record<string, unknown>, stripContentHash: boolean): string;
|
|
60
|
-
/**
|
|
61
|
-
* Fingerprint of the hrefs this doc's body may be rewritten to: its live
|
|
62
|
-
* out-edges into the collection. A doc with no such edges falls back to path
|
|
63
|
-
* resolution against the whole index (see `syncEntries`), so it is pinned to
|
|
64
|
-
* the whole-index fingerprint instead.
|
|
65
|
-
*/
|
|
66
|
-
export declare function linksFingerprint(srcDocId: string, edges: OutEdge[], index: HrefIndex, wholeIndexFp: string): string;
|
|
67
|
-
//# sourceMappingURL=digest.d.ts.map
|
package/dist/digest.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"digest.d.ts","sourceRoot":"","sources":["../src/digest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKrD,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAYxD;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GACzC,WAAW,GAAG,IAAI,CAsBpB;AAED,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAoBnF;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAG1E;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,gBAAgB,EAAE,OAAO,GACxB,MAAM,CAQR;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EAAE,EAChB,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,MAAM,GACnB,MAAM,CAcR"}
|
package/dist/digest.js
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hash-first sync support: the pieces that let `syncEntries` decide, from a
|
|
3
|
-
* lean OQX hit alone, whether a document needs to be fetched or re-rendered.
|
|
4
|
-
*
|
|
5
|
-
* - {@link withContentHash} projects `$content_hash` onto the user's query so
|
|
6
|
-
* every hit carries the server's whole-file hash (frontmatter included).
|
|
7
|
-
* - {@link encodeEntryDigest} / {@link parseEntryDigest} store everything the
|
|
8
|
-
* next sync needs to skip a doc — hash, path, slug, href, projection and link
|
|
9
|
-
* fingerprints — inside the Astro data-store `digest` string, so no extra
|
|
10
|
-
* state lives outside Astro's own persistence.
|
|
11
|
-
* - {@link linksFingerprint} pins a doc's rewritten body to the hrefs of the
|
|
12
|
-
* docs it links to, so a new/removed/moved doc only invalidates its linkers.
|
|
13
|
-
*/
|
|
14
|
-
import { digestFingerprint } from "./map.js";
|
|
15
|
-
/** Version tag; bump when the digest shape changes so old stores re-hydrate once. */
|
|
16
|
-
const DIGEST_PREFIX = "omg2:";
|
|
17
|
-
export function encodeEntryDigest(d) {
|
|
18
|
-
const ordered = {
|
|
19
|
-
h: d.hash,
|
|
20
|
-
p: d.path,
|
|
21
|
-
s: d.slug,
|
|
22
|
-
u: d.href,
|
|
23
|
-
q: d.hitsFp,
|
|
24
|
-
l: d.linksFp,
|
|
25
|
-
};
|
|
26
|
-
if (d.fmFp !== undefined)
|
|
27
|
-
ordered.fm = d.fmFp;
|
|
28
|
-
if (d.rev !== undefined && d.rev !== null)
|
|
29
|
-
ordered.r = d.rev;
|
|
30
|
-
return `${DIGEST_PREFIX}${JSON.stringify(ordered)}`;
|
|
31
|
-
}
|
|
32
|
-
/** Parse a stored digest; `null` for legacy/foreign digests (forces a re-hydrate). */
|
|
33
|
-
export function parseEntryDigest(digest) {
|
|
34
|
-
if (typeof digest !== "string" || !digest.startsWith(DIGEST_PREFIX))
|
|
35
|
-
return null;
|
|
36
|
-
try {
|
|
37
|
-
const raw = JSON.parse(digest.slice(DIGEST_PREFIX.length));
|
|
38
|
-
const str = (k) => (typeof raw[k] === "string" ? raw[k] : null);
|
|
39
|
-
const hash = str("h");
|
|
40
|
-
const path = str("p");
|
|
41
|
-
const slug = str("s");
|
|
42
|
-
if (hash === null || path === null || slug === null)
|
|
43
|
-
return null;
|
|
44
|
-
return {
|
|
45
|
-
hash,
|
|
46
|
-
path,
|
|
47
|
-
slug,
|
|
48
|
-
href: str("u") ?? "",
|
|
49
|
-
hitsFp: str("q") ?? "",
|
|
50
|
-
linksFp: str("l") ?? "",
|
|
51
|
-
...(str("fm") !== null ? { fmFp: str("fm") } : {}),
|
|
52
|
-
...(str("r") !== null ? { rev: str("r") } : {}),
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
export const CONTENT_HASH_FIELD = "$content_hash";
|
|
60
|
-
/**
|
|
61
|
-
* Add `$content_hash` to the top-level projection of an OQX query.
|
|
62
|
-
*
|
|
63
|
-
* OQX fixes clause order (`select … from … where …`) and only `select` may drop
|
|
64
|
-
* its keyword, so the projection is always at the very start of the string:
|
|
65
|
-
*
|
|
66
|
-
* - `select a, b from docs …` → `select $content_hash, a, b from docs …`
|
|
67
|
-
* - `a, b from docs …` → `$content_hash, a, b from docs …`
|
|
68
|
-
* - `from docs …` → `select $content_hash from docs …`
|
|
69
|
-
*
|
|
70
|
-
* Queries that already mention `$content_hash`, or scalar `$repo.` forms, are
|
|
71
|
-
* returned unchanged. Returns `{ query, injected }` so the caller can strip the
|
|
72
|
-
* field from hit projections again (it must not leak into entry `data`).
|
|
73
|
-
*/
|
|
74
|
-
export function withContentHash(query) {
|
|
75
|
-
const trimmed = query.trimStart();
|
|
76
|
-
const lead = query.slice(0, query.length - trimmed.length);
|
|
77
|
-
if (/\$content_hash\b/.test(trimmed))
|
|
78
|
-
return { query, injected: false };
|
|
79
|
-
if (/^\$repo\./.test(trimmed))
|
|
80
|
-
return { query, injected: false };
|
|
81
|
-
if (/^select\s/i.test(trimmed)) {
|
|
82
|
-
return {
|
|
83
|
-
query: `${lead}select ${CONTENT_HASH_FIELD}, ${trimmed.slice("select".length).trimStart()}`,
|
|
84
|
-
injected: true,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
if (/^from\s/i.test(trimmed)) {
|
|
88
|
-
return { query: `${lead}select ${CONTENT_HASH_FIELD} ${trimmed}`, injected: true };
|
|
89
|
-
}
|
|
90
|
-
// Bare projection list (`$path, title from docs …`).
|
|
91
|
-
if (/\sfrom\s/i.test(trimmed)) {
|
|
92
|
-
return { query: `${lead}${CONTENT_HASH_FIELD}, ${trimmed}`, injected: true };
|
|
93
|
-
}
|
|
94
|
-
return { query, injected: false };
|
|
95
|
-
}
|
|
96
|
-
/** Read the projected hash off a hit; `null` when absent or malformed. */
|
|
97
|
-
export function hitContentHash(hit) {
|
|
98
|
-
const v = hit[CONTENT_HASH_FIELD];
|
|
99
|
-
return typeof v === "string" && v.length > 0 ? v : null;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Fingerprint of a hit's extra projections (everything but `id`/`path` and an
|
|
103
|
-
* injected `$content_hash`). These merge into entry `data`, so a change in e.g.
|
|
104
|
-
* `outs: doc.out collect { … }` must re-map the entry even when content didn't move.
|
|
105
|
-
*/
|
|
106
|
-
export function hitProjectionsFingerprint(hit, stripContentHash) {
|
|
107
|
-
const extras = {};
|
|
108
|
-
for (const [k, v] of Object.entries(hit)) {
|
|
109
|
-
if (k === "id" || k === "path")
|
|
110
|
-
continue;
|
|
111
|
-
if (stripContentHash && k === CONTENT_HASH_FIELD)
|
|
112
|
-
continue;
|
|
113
|
-
extras[k] = v;
|
|
114
|
-
}
|
|
115
|
-
return digestFingerprint(extras);
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Fingerprint of the hrefs this doc's body may be rewritten to: its live
|
|
119
|
-
* out-edges into the collection. A doc with no such edges falls back to path
|
|
120
|
-
* resolution against the whole index (see `syncEntries`), so it is pinned to
|
|
121
|
-
* the whole-index fingerprint instead.
|
|
122
|
-
*/
|
|
123
|
-
export function linksFingerprint(srcDocId, edges, index, wholeIndexFp) {
|
|
124
|
-
const parts = [];
|
|
125
|
-
let hasAnyDocEdge = false;
|
|
126
|
-
for (const e of edges) {
|
|
127
|
-
if (e.src !== srcDocId)
|
|
128
|
-
continue;
|
|
129
|
-
if (!e.dst || e.dst.startsWith("phantom:") || e.dst.startsWith("x_"))
|
|
130
|
-
continue;
|
|
131
|
-
hasAnyDocEdge = true;
|
|
132
|
-
const href = index.byDocId.get(e.dst);
|
|
133
|
-
if (href !== undefined)
|
|
134
|
-
parts.push(`${e.dst}=${href}`);
|
|
135
|
-
}
|
|
136
|
-
if (parts.length > 0)
|
|
137
|
-
return parts.sort().join("|");
|
|
138
|
-
// Edges exist but none land in this collection, or no edges at all: the
|
|
139
|
-
// rewrite is gated by path resolution over the full index.
|
|
140
|
-
return hasAnyDocEdge ? `idx:${wholeIndexFp}` : "";
|
|
141
|
-
}
|
|
142
|
-
//# sourceMappingURL=digest.js.map
|
package/dist/digest.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"digest.js","sourceRoot":"","sources":["../src/digest.ts"],"names":[],"mappings":"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"}
|