@haverstack/server 0.11.0 → 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/queryWorker/protocol.d.ts +1 -1
- package/dist/lib/queryWorker/worker.js +1 -1
- package/dist/lib/queryWorker/worker.js.map +1 -1
- package/dist/lib/resumeBuffer.d.ts +0 -1
- package/dist/lib/resumeBuffer.d.ts.map +1 -1
- package/dist/lib/resumeBuffer.js +2 -1
- package/dist/lib/resumeBuffer.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 +3 -5
- package/dist/middleware/params.d.ts.map +1 -1
- package/dist/middleware/params.js +3 -12
- package/dist/middleware/params.js.map +1 -1
- package/dist/routes/attachments.d.ts.map +1 -1
- package/dist/routes/attachments.js +5 -5
- package/dist/routes/attachments.js.map +1 -1
- package/dist/routes/auth.d.ts.map +1 -1
- package/dist/routes/auth.js +9 -20
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/changes.d.ts.map +1 -1
- package/dist/routes/changes.js +6 -7
- package/dist/routes/changes.js.map +1 -1
- package/dist/routes/entity.d.ts.map +1 -1
- package/dist/routes/entity.js +9 -11
- package/dist/routes/entity.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 +105 -165
- package/dist/routes/records.js.map +1 -1
- package/dist/routes/types.d.ts.map +1 -1
- package/dist/routes/types.js +7 -39
- package/dist/routes/types.js.map +1 -1
- package/dist/routes/wellknown.d.ts.map +1 -1
- package/dist/routes/wellknown.js +2 -0
- 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 +28 -6
- package/dist/stack.js.map +1 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +13 -2
- package/dist/testing.js.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/stack.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
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. ownerEntityId goes in as a lazy provider so
|
|
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,
|
|
16
|
+
create: 'ifMissing',
|
|
15
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)');
|
|
@@ -29,13 +31,25 @@ export async function initStack(config, logger) {
|
|
|
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":"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"}
|
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,
|
|
49
|
+
create: 'exclusive',
|
|
48
50
|
ownerEntityId: TEST_ENTITY_ID,
|
|
49
51
|
...(opts.timezone !== undefined && { timezone: opts.timezone }),
|
|
50
52
|
});
|
|
51
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":"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,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AACnG,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,IAAI,CAAC;QACtC,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,WAAW;QACnB,aAAa,EAAE,cAAc;QAC7B,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;KAChE,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IAClE,MAAM,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC;IACzF,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;QACtC,IAAI,EAAE,EAAE,MAAM,EAAE;QAChB,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,EAAE;QACd,MAAM;KACP,CAAC,CAAC;IACH,OAAO;QACL,OAAO;QACP,KAAK;QACL,MAAM;QACN,MAAM;QACN,eAAe;QACf,WAAW;QACX,aAAa,EAAE,IAAI,oBAAoB,EAAE;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,OAAwB,EAAE,QAAQ,EAAE,KAAK,EAAE;IACpF,OAAO;QACL,IAAI,EAAE,IAAI;QACV,MAAM;QACN,QAAQ,EAAE,cAAc;QACxB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,GAAG;QAChB,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC;QAC5C,kBAAkB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;QACpC,eAAe,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;QAChC,cAAc,EAAE,MAAM;QACtB,mBAAmB,EAAE,CAAC;QACtB,eAAe,EAAE,EAAE;QACnB,gBAAgB,EAAE,KAAK;QACvB,iBAAiB,EAAE,MAAM;KAC1B,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,KAAK,UAAU,WAAW;IACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;YAChC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/E,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;gBACf,IAAI,IAAI;oBAAE,OAAO,CAAC,IAAI,CAAC,CAAC;;oBACnB,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAWD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAwB,EAAE,QAAQ,EAAE,KAAK,EAAE;IAE3C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAC;IACvC,MAAM,MAAM,GAAW;QACrB,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;QAC3B,IAAI;QACJ,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,iBAAiB,CAAC,GAAG,CAAC;KACnC,CAAC;IACF,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3C,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAA2B,CAAC,OAAO,EAAE,EAAE;QACrE,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,sEAAsE;IACtE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACvB,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACrC,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"}
|