@haverstack/server 0.10.3 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +2 -0
- package/dist/app.js.map +1 -1
- package/dist/lib/canonicalJson.d.ts +7 -0
- package/dist/lib/canonicalJson.d.ts.map +1 -0
- package/dist/lib/canonicalJson.js +18 -0
- package/dist/lib/canonicalJson.js.map +1 -0
- package/dist/lib/historyPage.d.ts +12 -0
- package/dist/lib/historyPage.d.ts.map +1 -0
- package/dist/lib/historyPage.js +24 -0
- package/dist/lib/historyPage.js.map +1 -0
- package/dist/lib/ifMatch.d.ts +11 -0
- package/dist/lib/ifMatch.d.ts.map +1 -0
- package/dist/lib/ifMatch.js +11 -0
- package/dist/lib/ifMatch.js.map +1 -0
- package/dist/lib/installRequestStore.d.ts +46 -0
- package/dist/lib/installRequestStore.d.ts.map +1 -0
- package/dist/lib/installRequestStore.js +102 -0
- package/dist/lib/installRequestStore.js.map +1 -0
- package/dist/lib/json.d.ts +7 -1
- package/dist/lib/json.d.ts.map +1 -1
- package/dist/lib/json.js +18 -4
- package/dist/lib/json.js.map +1 -1
- package/dist/lib/queryWorker/pool.d.ts +2 -1
- package/dist/lib/queryWorker/pool.d.ts.map +1 -1
- package/dist/lib/queryWorker/pool.js.map +1 -1
- package/dist/lib/queryWorker/protocol.d.ts +3 -2
- package/dist/lib/queryWorker/protocol.d.ts.map +1 -1
- package/dist/lib/queryWorker/worker.js +3 -3
- package/dist/lib/queryWorker/worker.js.map +1 -1
- package/dist/lib/resumeBuffer.d.ts +4 -4
- package/dist/lib/resumeBuffer.d.ts.map +1 -1
- package/dist/lib/resumeBuffer.js +23 -9
- package/dist/lib/resumeBuffer.js.map +1 -1
- package/dist/lib/resumeCursor.d.ts +1 -1
- package/dist/lib/resumeCursor.d.ts.map +1 -1
- package/dist/lib/resumeCursor.js +3 -3
- package/dist/lib/resumeCursor.js.map +1 -1
- package/dist/lib/selfService.d.ts +2 -0
- package/dist/lib/selfService.d.ts.map +1 -0
- package/dist/lib/selfService.js +6 -0
- package/dist/lib/selfService.js.map +1 -0
- package/dist/middleware/auth.d.ts +10 -9
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +21 -10
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/errors.js +1 -1
- package/dist/middleware/errors.js.map +1 -1
- package/dist/middleware/params.d.ts +10 -0
- package/dist/middleware/params.d.ts.map +1 -0
- package/dist/middleware/params.js +18 -0
- package/dist/middleware/params.js.map +1 -0
- package/dist/routes/attachments.d.ts.map +1 -1
- package/dist/routes/attachments.js +24 -14
- package/dist/routes/attachments.js.map +1 -1
- package/dist/routes/auth.d.ts.map +1 -1
- package/dist/routes/auth.js +13 -23
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/changes.d.ts +1 -1
- package/dist/routes/changes.d.ts.map +1 -1
- package/dist/routes/changes.js +17 -18
- package/dist/routes/changes.js.map +1 -1
- package/dist/routes/entity.d.ts.map +1 -1
- package/dist/routes/entity.js +12 -8
- package/dist/routes/entity.js.map +1 -1
- package/dist/routes/health.d.ts.map +1 -1
- package/dist/routes/health.js +2 -1
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/installs.d.ts +13 -0
- package/dist/routes/installs.d.ts.map +1 -0
- package/dist/routes/installs.js +101 -0
- package/dist/routes/installs.js.map +1 -0
- package/dist/routes/records.d.ts.map +1 -1
- package/dist/routes/records.js +114 -173
- package/dist/routes/records.js.map +1 -1
- package/dist/routes/tokens.d.ts.map +1 -1
- package/dist/routes/tokens.js +22 -18
- package/dist/routes/tokens.js.map +1 -1
- package/dist/routes/types.d.ts.map +1 -1
- package/dist/routes/types.js +11 -25
- package/dist/routes/types.js.map +1 -1
- package/dist/routes/wellknown.d.ts.map +1 -1
- package/dist/routes/wellknown.js +6 -3
- package/dist/routes/wellknown.js.map +1 -1
- package/dist/shutdown.d.ts.map +1 -1
- package/dist/shutdown.js +1 -0
- package/dist/shutdown.js.map +1 -1
- package/dist/stack.d.ts +2 -0
- package/dist/stack.d.ts.map +1 -1
- package/dist/stack.js +30 -8
- package/dist/stack.js.map +1 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +15 -4
- package/dist/testing.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/lib/queryLimit.d.ts +0 -6
- package/dist/lib/queryLimit.d.ts.map +0 -1
- package/dist/lib/queryLimit.js +0 -20
- package/dist/lib/queryLimit.js.map +0 -1
package/dist/routes/types.js
CHANGED
|
@@ -1,44 +1,30 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
|
+
import { knownParams } from '../middleware/params.js';
|
|
2
3
|
import { requireOwner } from '../middleware/auth.js';
|
|
3
4
|
import { readJson } from '../lib/json.js';
|
|
4
5
|
import { serializeType } from '@haverstack/wire-types';
|
|
5
|
-
import {
|
|
6
|
+
import { parseTypeBody } from '@haverstack/core/wire';
|
|
7
|
+
import { StackNotFoundError } from '@haverstack/core';
|
|
6
8
|
export function typeRoutes(ctx) {
|
|
7
9
|
const app = new Hono();
|
|
8
10
|
const { adapter, stack } = ctx;
|
|
9
|
-
app.get('/', async (c) => {
|
|
11
|
+
app.get('/', knownParams(), async (c) => {
|
|
10
12
|
const types = await adapter.listTypes();
|
|
11
13
|
return c.json(types.map(serializeType));
|
|
12
14
|
});
|
|
13
|
-
app.get('/:id', async (c) => {
|
|
15
|
+
app.get('/:id', knownParams(), async (c) => {
|
|
14
16
|
const id = decodeURIComponent(c.req.param('id'));
|
|
15
17
|
const type = await adapter.getType(id);
|
|
16
18
|
if (!type)
|
|
17
19
|
throw new StackNotFoundError('Type not found');
|
|
18
20
|
return c.json(serializeType(type));
|
|
19
21
|
});
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (!body.schema || typeof body.schema !== 'object')
|
|
27
|
-
throw new StackQueryError('schema is required');
|
|
28
|
-
if (!body.schemaHash || typeof body.schemaHash !== 'string')
|
|
29
|
-
throw new StackQueryError('schemaHash is required');
|
|
30
|
-
const computedHash = await hashSchema(body.schema);
|
|
31
|
-
if (body.schemaHash !== computedHash)
|
|
32
|
-
throw new StackValidationError([
|
|
33
|
-
{ path: 'schemaHash', message: 'schemaHash does not match schema' },
|
|
34
|
-
]);
|
|
35
|
-
// stack.defineType() (not adapter.saveType() directly) is what runs the
|
|
36
|
-
// schema-drift check: redefining an existing typeId with anything
|
|
37
|
-
// beyond additive evolution throws StackSchemaDriftError, which
|
|
38
|
-
// adapter.saveType() alone has no way to enforce — it's a raw write.
|
|
39
|
-
const type = await stack.defineType(body.id, body.name, body.schema, {
|
|
40
|
-
...(body.migratesFrom ? { migratesFrom: body.migratesFrom } : {}),
|
|
41
|
-
});
|
|
22
|
+
// Served through the unscoped Stack: ScopedStack has no defineType(), and
|
|
23
|
+
// no grant confers defining a stack-wide Type. stack.defineType() rather
|
|
24
|
+
// than adapter.saveType() is what runs the schema-drift check.
|
|
25
|
+
// See docs/spec/wire-format.md § Types.
|
|
26
|
+
app.post('/', knownParams(), requireOwner(stack.ownerEntityId), async (c) => {
|
|
27
|
+
const type = await stack.defineType(parseTypeBody(await readJson(c)));
|
|
42
28
|
return c.json(serializeType(type), 201);
|
|
43
29
|
});
|
|
44
30
|
return app;
|
package/dist/routes/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/routes/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/routes/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,UAAU,UAAU,CAAC,GAAiB;IAC1C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAC;IAC/B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAE/B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;QAC1D,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,yEAAyE;IACzE,+DAA+D;IAC/D,wCAAwC;IACxC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1E,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wellknown.d.ts","sourceRoot":"","sources":["../../src/routes/wellknown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAO5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"wellknown.d.ts","sourceRoot":"","sources":["../../src/routes/wellknown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAO5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CA6C/E"}
|
package/dist/routes/wellknown.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { WIRE_PROTOCOL_VERSION, AUTH_METHOD_DID_CHALLENGE, CHANGE_TRANSPORT_SSE, } from '@haverstack/wire-types';
|
|
3
|
+
import { knownParams } from '../middleware/params.js';
|
|
3
4
|
export function wellknownRoutes(ctx, config) {
|
|
4
5
|
const app = new Hono();
|
|
5
|
-
app.get('/stack', (c) => {
|
|
6
|
+
app.get('/stack', knownParams(), (c) => {
|
|
6
7
|
const body = {
|
|
7
8
|
version: WIRE_PROTOCOL_VERSION,
|
|
8
9
|
entityId: ctx.stack.ownerEntityId,
|
|
@@ -12,7 +13,7 @@ export function wellknownRoutes(ctx, config) {
|
|
|
12
13
|
// imposes a limit, but this server enforces both. See
|
|
13
14
|
// docs/spec/wire-format.md § Discovery.
|
|
14
15
|
capabilities: {
|
|
15
|
-
...ctx.stack.
|
|
16
|
+
...ctx.stack.capabilities,
|
|
16
17
|
limits: {
|
|
17
18
|
attachmentBytes: config.maxAttachmentBytes,
|
|
18
19
|
contentBytes: config.maxContentBytes,
|
|
@@ -24,7 +25,7 @@ export function wellknownRoutes(ctx, config) {
|
|
|
24
25
|
// rather than discovering it as a 404 partway through one.
|
|
25
26
|
auth: { methods: [AUTH_METHOD_DID_CHALLENGE] },
|
|
26
27
|
// Top-level rather than inside `capabilities`, which carries only
|
|
27
|
-
// what the `...ctx.stack.
|
|
28
|
+
// what the `...ctx.stack.capabilities` spread brings. An object rather
|
|
28
29
|
// than a boolean for the same reason `auth` is: the surface grows
|
|
29
30
|
// entries — another transport, batched frames — not more booleans.
|
|
30
31
|
//
|
|
@@ -37,6 +38,8 @@ export function wellknownRoutes(ctx, config) {
|
|
|
37
38
|
resume: true,
|
|
38
39
|
records: true,
|
|
39
40
|
},
|
|
41
|
+
// POST /installs is always served, so, like `changes`, always advertised.
|
|
42
|
+
installs: { requests: true },
|
|
40
43
|
};
|
|
41
44
|
return c.json(body);
|
|
42
45
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wellknown.js","sourceRoot":"","sources":["../../src/routes/wellknown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"wellknown.js","sourceRoot":"","sources":["../../src/routes/wellknown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAItD,MAAM,UAAU,eAAe,CAAC,GAAiB,EAAE,MAAc;IAC/D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAC;IAE/B,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;QACrC,MAAM,IAAI,GAAsB;YAC9B,OAAO,EAAE,qBAAqB;YAC9B,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa;YACjC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;YAC5B,iEAAiE;YACjE,iEAAiE;YACjE,sDAAsD;YACtD,wCAAwC;YACxC,YAAY,EAAE;gBACZ,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY;gBACzB,MAAM,EAAE;oBACN,eAAe,EAAE,MAAM,CAAC,kBAAkB;oBAC1C,YAAY,EAAE,MAAM,CAAC,eAAe;iBACrC;aACF;YACD,qEAAqE;YACrE,6DAA6D;YAC7D,mEAAmE;YACnE,2DAA2D;YAC3D,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,yBAAyB,CAAC,EAAE;YAC9C,kEAAkE;YAClE,uEAAuE;YACvE,kEAAkE;YAClE,mEAAmE;YACnE,EAAE;YACF,qEAAqE;YACrE,qEAAqE;YACrE,mEAAmE;YACnE,iCAAiC;YACjC,OAAO,EAAE;gBACP,UAAU,EAAE,CAAC,oBAAoB,CAAC;gBAClC,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,IAAI;aACd;YACD,0EAA0E;YAC1E,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC7B,CAAC;QACF,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/shutdown.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../src/shutdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAClC,mBAAmB,CAAC,IAAI,IAAI,CAAC;CAC9B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../src/shutdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAClC,mBAAmB,CAAC,IAAI,IAAI,CAAC;CAC9B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CA4BnC"}
|
package/dist/shutdown.js
CHANGED
package/dist/shutdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../src/shutdown.ts"],"names":[],"mappings":"AAiBA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAsB,EACtB,GAAiB,EACjB,MAAc,EACd,SAAiB;IAEjB,OAAO,KAAK,EAAE,MAAc,EAAE,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC;QAEzC,wEAAwE;QACxE,uDAAuD;QACvD,4BAA4B;QAC5B,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAE7B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,4DAA4D,CAAC,CAAC;gBACzF,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACjC,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;gBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../src/shutdown.ts"],"names":[],"mappings":"AAiBA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAsB,EACtB,GAAiB,EACjB,MAAc,EACd,SAAiB;IAEjB,OAAO,KAAK,EAAE,MAAc,EAAE,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC;QAEzC,wEAAwE;QACxE,uDAAuD;QACvD,4BAA4B;QAC5B,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAE7B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,4DAA4D,CAAC,CAAC;gBACzF,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACjC,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;gBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACnB,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/stack.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { StackTokenStore } from '@haverstack/core/wire';
|
|
|
4
4
|
import type { Logger } from 'pino';
|
|
5
5
|
import type { Config } from './config.js';
|
|
6
6
|
import { AuthNonceStore } from './lib/nonceStore.js';
|
|
7
|
+
import { InstallRequestStore } from './lib/installRequestStore.js';
|
|
7
8
|
import { QueryWorkerPool } from './lib/queryWorker/pool.js';
|
|
8
9
|
import { ChangeStreamRegistry } from './lib/changeStreams.js';
|
|
9
10
|
export type StackContext = {
|
|
@@ -13,6 +14,7 @@ export type StackContext = {
|
|
|
13
14
|
close(): Promise<void>;
|
|
14
15
|
};
|
|
15
16
|
nonces: AuthNonceStore;
|
|
17
|
+
installRequests: InstallRequestStore;
|
|
16
18
|
queryWorker: QueryWorkerPool;
|
|
17
19
|
changeStreams: ChangeStreamRegistry;
|
|
18
20
|
};
|
package/dist/stack.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../src/stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA2C,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../src/stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA2C,MAAM,2BAA2B,CAAC;AAclG,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAyB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAkC,MAAM,8BAA8B,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;IAIb,MAAM,EAAE,eAAe,GAAG;QAAE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IAGrD,MAAM,EAAE,cAAc,CAAC;IAGvB,eAAe,EAAE,mBAAmB,CAAC;IAIrC,WAAW,EAAE,eAAe,CAAC;IAG7B,aAAa,EAAE,oBAAoB,CAAC;CACrC,CAAC;AAEF,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA6ErF"}
|
package/dist/stack.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { LocalAdapter, NativeTokenStore, defaultTokenStorePath } from '@haverstack/adapter-local';
|
|
2
|
-
import { ARTICLE, BOOKMARK, CONTACT, NOTE, PAGE,
|
|
2
|
+
import { ARTICLE, BOOKMARK, CONTACT, IMAGE, NOTE, PAGE, PLACE, POST, SITE, TASK, defineCommonsTypes, } from '@haverstack/commons';
|
|
3
3
|
import { Stack } from '@haverstack/core';
|
|
4
4
|
import { AuthNonceStore, defaultNonceStorePath } from './lib/nonceStore.js';
|
|
5
|
+
import { InstallRequestStore, defaultInstallRequestStorePath } from './lib/installRequestStore.js';
|
|
5
6
|
import { QueryWorkerPool } from './lib/queryWorker/pool.js';
|
|
6
7
|
import { ChangeStreamRegistry } from './lib/changeStreams.js';
|
|
7
8
|
export async function initStack(config, logger) {
|
|
8
|
-
//
|
|
9
|
-
// gap.
|
|
9
|
+
// `create: 'ifMissing'` decides between open and create without a TOCTOU
|
|
10
|
+
// gap. ownerEntityId goes in as a lazy provider so open()'s own
|
|
10
11
|
// owner-mismatch check, which throws, never runs on the open path —
|
|
11
12
|
// ENTITY_ID divergence is a warning below, not a failure — and so a
|
|
12
13
|
// missing ENTITY_ID is an error only when creating a database.
|
|
13
|
-
const adapter = await LocalAdapter.
|
|
14
|
+
const adapter = await LocalAdapter.open({
|
|
14
15
|
path: config.dbPath,
|
|
15
|
-
|
|
16
|
+
create: 'ifMissing',
|
|
17
|
+
ownerEntityId: () => {
|
|
16
18
|
if (!config.entityId) {
|
|
17
19
|
throw new Error('ENTITY_ID is required when initializing a new database (DB_PATH does not exist yet)');
|
|
18
20
|
}
|
|
@@ -23,19 +25,31 @@ export async function initStack(config, logger) {
|
|
|
23
25
|
if (config.entityId && config.entityId !== adapter.ownerEntityId) {
|
|
24
26
|
logger.warn({ configuredEntityId: config.entityId, storedOwnerEntityId: adapter.ownerEntityId }, "ENTITY_ID does not match the stack's stored owner; the configured value is ignored");
|
|
25
27
|
}
|
|
26
|
-
const stack = await Stack.
|
|
28
|
+
const stack = await Stack.open(adapter, config.ownerName
|
|
27
29
|
? { ownerProfile: { name: config.ownerName, handle: config.ownerHandle ?? undefined } }
|
|
28
30
|
: undefined);
|
|
29
31
|
// Opt-in (SEED_COMMONS_TYPES). defineType() is idempotent — an identical
|
|
30
32
|
// schema is a no-op preserving createdAt — so this is safe every boot.
|
|
31
33
|
if (config.seedCommonsTypes) {
|
|
32
|
-
await defineCommonsTypes(stack, [
|
|
34
|
+
await defineCommonsTypes(stack, [
|
|
35
|
+
NOTE,
|
|
36
|
+
BOOKMARK,
|
|
37
|
+
TASK,
|
|
38
|
+
CONTACT,
|
|
39
|
+
ARTICLE,
|
|
40
|
+
PLACE,
|
|
41
|
+
PAGE,
|
|
42
|
+
IMAGE,
|
|
43
|
+
POST,
|
|
44
|
+
SITE,
|
|
45
|
+
]);
|
|
33
46
|
}
|
|
34
47
|
// Composed as a separate part rather than sniffed off the adapter: auth
|
|
35
48
|
// material lives in its own file beside stack.db (not inside the
|
|
36
49
|
// portable stack export) per docs/spec/wire-format.md § Authentication.
|
|
37
50
|
const tokens = await NativeTokenStore.open({ path: defaultTokenStorePath(config.dbPath) });
|
|
38
51
|
const nonces = AuthNonceStore.open(defaultNonceStorePath(config.dbPath));
|
|
52
|
+
const installRequests = InstallRequestStore.open(defaultInstallRequestStorePath(config.dbPath));
|
|
39
53
|
// Spawned only once the adapter has opened and seeded stack.db: each
|
|
40
54
|
// worker opens its own connection to that same file, and idempotent
|
|
41
55
|
// seeding makes the race survivable rather than worth running.
|
|
@@ -45,6 +59,14 @@ export async function initStack(config, logger) {
|
|
|
45
59
|
queueLimit: config.queryQueueLimit,
|
|
46
60
|
logger,
|
|
47
61
|
});
|
|
48
|
-
return {
|
|
62
|
+
return {
|
|
63
|
+
adapter,
|
|
64
|
+
stack,
|
|
65
|
+
tokens,
|
|
66
|
+
nonces,
|
|
67
|
+
installRequests,
|
|
68
|
+
queryWorker,
|
|
69
|
+
changeStreams: new ChangeStreamRegistry(),
|
|
70
|
+
};
|
|
49
71
|
}
|
|
50
72
|
//# sourceMappingURL=stack.js.map
|
package/dist/stack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../src/stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EACL,OAAO,EACP,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,
|
|
1
|
+
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../src/stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EACL,OAAO,EACP,QAAQ,EACR,OAAO,EACP,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzC,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAwB9D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,MAAc;IAC5D,yEAAyE;IACzE,gEAAgE;IAChE,oEAAoE;IACpE,oEAAoE;IACpE,+DAA+D;IAC/D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC;QACtC,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,MAAM,EAAE,WAAW;QACnB,aAAa,EAAE,GAAG,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;QACD,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC;QACjE,MAAM,CAAC,IAAI,CACT,EAAE,kBAAkB,EAAE,MAAM,CAAC,QAAQ,EAAE,mBAAmB,EAAE,OAAO,CAAC,aAAa,EAAE,EACnF,oFAAoF,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAC5B,OAAO,EACP,MAAM,CAAC,SAAS;QACd,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS,EAAE,EAAE;QACvF,CAAC,CAAC,SAAS,CACd,CAAC;IAEF,yEAAyE;IACzE,uEAAuE;IACvE,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,MAAM,kBAAkB,CAAC,KAAK,EAAE;YAC9B,IAAI;YACJ,QAAQ;YACR,IAAI;YACJ,OAAO;YACP,OAAO;YACP,KAAK;YACL,IAAI;YACJ,KAAK;YACL,IAAI;YACJ,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,iEAAiE;IACjE,wEAAwE;IACxE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,MAAM,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhG,qEAAqE;IACrE,oEAAoE;IACpE,+DAA+D;IAC/D,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;QACtC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAC/B,QAAQ,EAAE,MAAM,CAAC,mBAAmB;QACpC,UAAU,EAAE,MAAM,CAAC,eAAe;QAClC,MAAM;KACP,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,KAAK;QACL,MAAM;QACN,MAAM;QACN,eAAe;QACf,WAAW;QACX,aAAa,EAAE,IAAI,oBAAoB,EAAE;KAC1C,CAAC;AACJ,CAAC"}
|
package/dist/testing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAOnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,cAAc,oCAAoC,CAAC;AAChE,eAAO,MAAM,UAAU,sBAAsB,CAAC;AAC9C,eAAO,MAAM,eAAe,qCAAqC,CAAC;AAMlE,eAAO,MAAM,aAAa,8BAA8B,CAAC;AAEzD,eAAO,MAAM,MAAM,EAAE,MAAkC,CAAC;AAExD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,eAAqC,GAC1C,OAAO,CAAC,YAAY,CAAC,CA0BvB;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,eAAqC,GAAG,MAAM,CAoB9F;AAkBD,MAAM,MAAM,UAAU,GAAG;IACvB,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,IAAI,GAAE,eAAqC,GAC1C,OAAO,CAAC,UAAU,CAAC,CA0BrB"}
|
package/dist/testing.js
CHANGED
|
@@ -21,6 +21,7 @@ import pino from 'pino';
|
|
|
21
21
|
import { createApp } from './app.js';
|
|
22
22
|
import { createShutdownHandler } from './shutdown.js';
|
|
23
23
|
import { AuthNonceStore, defaultNonceStorePath } from './lib/nonceStore.js';
|
|
24
|
+
import { InstallRequestStore, defaultInstallRequestStorePath } from './lib/installRequestStore.js';
|
|
24
25
|
import { QueryWorkerPool } from './lib/queryWorker/pool.js';
|
|
25
26
|
import { ChangeStreamRegistry } from './lib/changeStreams.js';
|
|
26
27
|
export const TEST_ENTITY_ID = 'did:key:test-entity-id-00000001';
|
|
@@ -43,21 +44,31 @@ export function tempDbPath() {
|
|
|
43
44
|
return join(dir, 'stack.db');
|
|
44
45
|
}
|
|
45
46
|
export async function createTestContext(dbPath, opts = { timezone: 'UTC' }) {
|
|
46
|
-
const adapter = await LocalAdapter.
|
|
47
|
+
const adapter = await LocalAdapter.open({
|
|
47
48
|
path: dbPath,
|
|
48
|
-
|
|
49
|
+
create: 'exclusive',
|
|
50
|
+
ownerEntityId: TEST_ENTITY_ID,
|
|
49
51
|
...(opts.timezone !== undefined && { timezone: opts.timezone }),
|
|
50
52
|
});
|
|
51
|
-
const stack = await Stack.
|
|
53
|
+
const stack = await Stack.open(adapter);
|
|
52
54
|
const tokens = await NativeTokenStore.open({ path: defaultTokenStorePath(dbPath) });
|
|
53
55
|
const nonces = AuthNonceStore.open(defaultNonceStorePath(dbPath));
|
|
56
|
+
const installRequests = InstallRequestStore.open(defaultInstallRequestStorePath(dbPath));
|
|
54
57
|
const queryWorker = new QueryWorkerPool({
|
|
55
58
|
init: { dbPath },
|
|
56
59
|
poolSize: 1,
|
|
57
60
|
queueLimit: 64,
|
|
58
61
|
logger,
|
|
59
62
|
});
|
|
60
|
-
return {
|
|
63
|
+
return {
|
|
64
|
+
adapter,
|
|
65
|
+
stack,
|
|
66
|
+
tokens,
|
|
67
|
+
nonces,
|
|
68
|
+
installRequests,
|
|
69
|
+
queryWorker,
|
|
70
|
+
changeStreams: new ChangeStreamRegistry(),
|
|
71
|
+
};
|
|
61
72
|
}
|
|
62
73
|
export function testConfig(dbPath, opts = { timezone: 'UTC' }) {
|
|
63
74
|
return {
|
package/dist/testing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,MAAM,CAAC,MAAM,cAAc,GAAG,iCAAiC,CAAC;AAChE,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,kCAAkC,CAAC;AAClE,2EAA2E;AAC3E,sEAAsE;AACtE,oEAAoE;AACpE,4EAA4E;AAC5E,yDAAyD;AACzD,MAAM,CAAC,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAEzD,MAAM,CAAC,MAAM,MAAM,GAAW,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChF,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAC/B,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,OAAwB,EAAE,QAAQ,EAAE,KAAK,EAAE;IAE3C,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,+DAA+D;AAC/D,MAAM,MAAM,MAAM,GAAG;IACnB,SAAS,EAAE;QACT,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haverstack/server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Reference server implementation for Haverstack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
"format:check": "prettier --check ."
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@haverstack/adapter-local": "^0.
|
|
45
|
-
"@haverstack/commons": "^0.
|
|
46
|
-
"@haverstack/core": "^0.
|
|
47
|
-
"@haverstack/wire-types": "^0.
|
|
44
|
+
"@haverstack/adapter-local": "^0.42.0",
|
|
45
|
+
"@haverstack/commons": "^0.38.0",
|
|
46
|
+
"@haverstack/core": "^0.43.0",
|
|
47
|
+
"@haverstack/wire-types": "^0.42.0",
|
|
48
48
|
"@hono/node-server": "^2.1.1",
|
|
49
49
|
"hono": "^4.13.7",
|
|
50
50
|
"pino": "^10.3.1",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@eslint/js": "^10.0.1",
|
|
55
|
-
"@haverstack/conformance-fixtures": "^0.
|
|
55
|
+
"@haverstack/conformance-fixtures": "^0.37.0",
|
|
56
56
|
"@types/node": "^26.2.0",
|
|
57
57
|
"eslint": "^10.8.1",
|
|
58
58
|
"eslint-config-prettier": "^10.1.8",
|
package/dist/lib/queryLimit.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { StackQuery } from '@haverstack/core';
|
|
2
|
-
export declare const MAX_QUERY_LIMIT = 1000;
|
|
3
|
-
export declare function clampLimit(query: StackQuery): StackQuery;
|
|
4
|
-
export declare const MAX_JOURNAL_LIMIT = 500;
|
|
5
|
-
export declare function clampJournalLimit(limit: number | undefined): number;
|
|
6
|
-
//# sourceMappingURL=queryLimit.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queryLimit.d.ts","sourceRoot":"","sources":["../../src/lib/queryLimit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnD,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAGxD;AAQD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEnE"}
|
package/dist/lib/queryLimit.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
// core's parsers (@haverstack/core/wire) report `limit` as requested and
|
|
2
|
-
// never clamp it — a ceiling is deployment policy, not wire contract. This
|
|
3
|
-
// server's ceilings, applied at the call sites in records.ts.
|
|
4
|
-
export const MAX_QUERY_LIMIT = 1000;
|
|
5
|
-
export function clampLimit(query) {
|
|
6
|
-
if (query.limit === undefined)
|
|
7
|
-
return query;
|
|
8
|
-
return { ...query, limit: Math.min(query.limit, MAX_QUERY_LIMIT) };
|
|
9
|
-
}
|
|
10
|
-
// The journal is the one read with no ceiling when `limit` is omitted, so
|
|
11
|
-
// a page size can't be supplied on the caller's behalf: omitting `limit`
|
|
12
|
-
// reads the whole log by contract, and truncating it silently would betray
|
|
13
|
-
// exactly the caller reconstructing an association's full history. This
|
|
14
|
-
// server bounds a page and says so in `cursor` instead. See
|
|
15
|
-
// docs/spec/wire-format.md § Journal.
|
|
16
|
-
export const MAX_JOURNAL_LIMIT = 500;
|
|
17
|
-
export function clampJournalLimit(limit) {
|
|
18
|
-
return limit === undefined ? MAX_JOURNAL_LIMIT : Math.min(limit, MAX_JOURNAL_LIMIT);
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=queryLimit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queryLimit.js","sourceRoot":"","sources":["../../src/lib/queryLimit.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,2EAA2E;AAC3E,8DAA8D;AAC9D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,wEAAwE;AACxE,4DAA4D;AAC5D,sCAAsC;AACtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACtF,CAAC"}
|