trellis 3.1.35 → 3.2.2
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/CHANGELOG.md +23 -5
- package/README.md +63 -156
- package/bin/trellis.mjs +2 -75
- package/dist/{better-sqlite-backend-ahx5p0br.js → better-sqlite-backend-2P4F6AOJ.js} +91 -29
- package/dist/boot-middleware-MHLHFCUC.js +9 -0
- package/dist/browser/index.d.ts +18 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +95 -0
- package/dist/{index-53f3b8p8.js → chunk-2W3MHTMG.js} +552 -213
- package/dist/chunk-44FFQKQX.js +142 -0
- package/dist/chunk-4HYPLFJD.js +150 -0
- package/dist/chunk-4XIVMVHC.js +361 -0
- package/dist/{index-yp88he8n.js → chunk-6CTA6MCE.js} +88 -64
- package/dist/chunk-6GEZ6DN5.js +394 -0
- package/dist/chunk-7ZFRVCUE.js +211 -0
- package/dist/chunk-CAG4FULI.js +121 -0
- package/dist/chunk-FF36CQHZ.js +61 -0
- package/dist/{index-h32txmxe.js → chunk-FKQO5A3H.js} +6 -13
- package/dist/{index-nq520y6k.js → chunk-FWRS4CSC.js} +46 -32
- package/dist/chunk-GFZCJ4EH.js +108 -0
- package/dist/chunk-GLM4HGN4.js +55 -0
- package/dist/{index-4cdr7x2x.js → chunk-GU374KWZ.js} +182 -111
- package/dist/chunk-H6JB3PZ3.js +45 -0
- package/dist/chunk-IZX2PLIB.js +1240 -0
- package/dist/chunk-J2TXUFCZ.js +289 -0
- package/dist/chunk-J3WYZO3Q.js +211 -0
- package/dist/{index-xzym9w0m.js → chunk-JA7AIHRK.js} +12 -7
- package/dist/chunk-JHHEXEDM.js +162 -0
- package/dist/chunk-JUEMDWLU.js +233 -0
- package/dist/chunk-KFQGP6VL.js +33 -0
- package/dist/chunk-KIJITUZB.js +419 -0
- package/dist/{index-4wxa8xz4.js → chunk-KQ4A2D2P.js} +162 -23
- package/dist/chunk-KSU2GW22.js +958 -0
- package/dist/{index-rv1p47gp.js → chunk-L5N5PR2S.js} +3015 -2480
- package/dist/{index-h9e2efx4.js → chunk-LNUIGRDZ.js} +71 -55
- package/dist/{index-skhn0agf.js → chunk-MLC5BUYO.js} +19 -20
- package/dist/chunk-MPXUVGT3.js +104 -0
- package/dist/chunk-N6MYZT4O.js +68 -0
- package/dist/chunk-O2AV5WMN.js +48 -0
- package/dist/chunk-PZ4XYZ4J.js +143 -0
- package/dist/chunk-QB5ISE47.js +419 -0
- package/dist/chunk-RSWUFTO2.js +857 -0
- package/dist/chunk-S3XLFZ27.js +1095 -0
- package/dist/{index-w5wccer3.js → chunk-S6GBJ2ZB.js} +28 -12
- package/dist/{index-7pjz3tsy.js → chunk-SGMDTWJJ.js} +57 -15
- package/dist/chunk-SPSPV5BC.js +390 -0
- package/dist/chunk-TCKXSOBP.js +123 -0
- package/dist/chunk-UBGUDMUV.js +59 -0
- package/dist/{index-wt8rz4gn.js → chunk-UQISRW6T.js} +97 -26
- package/dist/chunk-USEINYUL.js +12 -0
- package/dist/{index-bmyt7k8n.js → chunk-UZRUP7QW.js} +12 -4
- package/dist/{index-xhcp6xrn.js → chunk-VBYUTRXX.js} +695 -514
- package/dist/{index-vkpkfwhq.js → chunk-VDAKEOML.js} +234 -194
- package/dist/chunk-WXSWA3MV.js +0 -0
- package/dist/{index-n9f2qyh5.js → chunk-X5FLTRUB.js} +55 -33
- package/dist/{index-h7zxhhhh.js → chunk-XMQ7G77X.js} +46 -38
- package/dist/{index-w7ng765c.js → chunk-YCM7ZYEZ.js} +102 -49
- package/dist/cli/deploy-cli.d.ts +18 -0
- package/dist/cli/deploy-cli.d.ts.map +1 -0
- package/dist/cli/errors.d.ts +6 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/examples.d.ts +23 -0
- package/dist/cli/examples.d.ts.map +1 -0
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2426 -6225
- package/dist/client/index.browser.d.ts +29 -0
- package/dist/client/index.browser.d.ts.map +1 -0
- package/dist/client/index.browser.js +64 -0
- package/dist/client/index.d.ts +6 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +41 -21
- package/dist/client/live.d.ts +67 -0
- package/dist/client/live.d.ts.map +1 -0
- package/dist/client/reactive.d.ts +31 -0
- package/dist/client/reactive.d.ts.map +1 -0
- package/dist/client/sdk.browser.d.ts +104 -0
- package/dist/client/sdk.browser.d.ts.map +1 -0
- package/dist/client/sdk.browser.js +9 -0
- package/dist/client/sdk.d.ts +26 -2
- package/dist/client/sdk.d.ts.map +1 -1
- package/dist/client/sdk.js +9 -0
- package/dist/client/vcs-client.d.ts +129 -0
- package/dist/client/vcs-client.d.ts.map +1 -0
- package/dist/cms/index.js +171 -163
- package/dist/{config-8hczw0rs.js → config-PFTP67TR.js} +8 -9
- package/dist/core/computation/index.d.ts +5 -0
- package/dist/core/computation/index.d.ts.map +1 -0
- package/dist/core/computation/rollup.d.ts +18 -0
- package/dist/core/computation/rollup.d.ts.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +171 -104
- package/dist/core/kernel/boot-middleware.d.ts +10 -0
- package/dist/core/kernel/boot-middleware.d.ts.map +1 -0
- package/dist/core/kernel/logic-middleware.d.ts +7 -1
- package/dist/core/kernel/logic-middleware.d.ts.map +1 -1
- package/dist/core/kernel/trellis-kernel.d.ts.map +1 -1
- package/dist/core/ontology/types.d.ts +5 -0
- package/dist/core/ontology/types.d.ts.map +1 -1
- package/dist/core/persist/better-sqlite-backend.d.ts +9 -2
- package/dist/core/persist/better-sqlite-backend.d.ts.map +1 -1
- package/dist/core/persist/factory.d.ts +6 -7
- package/dist/core/persist/factory.d.ts.map +1 -1
- package/dist/core/persist/factory.js +2 -3
- package/dist/core/persist/sqljs-backend.js +2 -3
- package/dist/db/index.d.ts +4 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +67 -54
- package/dist/db/inspector.js +11 -19
- package/dist/db/trellis.css +1 -1
- package/dist/decisions/index.js +9 -10
- package/dist/deploy-LQ7GUGJ5.js +9 -0
- package/dist/deploy-YNVG5E4E.js +9 -0
- package/dist/deploy-cli-24BCHAXY.js +67 -0
- package/dist/deploy-cli-C35HTITO.js +67 -0
- package/dist/embeddings/auto-embed.d.ts +2 -2
- package/dist/embeddings/auto-embed.d.ts.map +1 -1
- package/dist/embeddings/index.js +20 -22
- package/dist/embeddings/search.d.ts +2 -1
- package/dist/embeddings/search.d.ts.map +1 -1
- package/dist/embeddings/store.d.ts +25 -4
- package/dist/embeddings/store.d.ts.map +1 -1
- package/dist/engine.d.ts +59 -19
- package/dist/engine.d.ts.map +1 -1
- package/dist/import-UZEKXU3B.js +10 -0
- package/dist/index.js +102 -93
- package/dist/launch-explorer-HZ4ZJA4X.js +95 -0
- package/dist/links/index.js +24 -26
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/plugins/agent-memory/index.js +316 -0
- package/dist/plugins/idea-garden/index.js +165 -0
- package/dist/plugins/plan-approval/index.js +579 -0
- package/dist/plugins/proactive-watcher/index.js +194 -0
- package/dist/{index-2r4jxwnb.js → query-XYLTJYSA.js} +14 -15
- package/dist/react/index.js +39 -70
- package/dist/react/realtime.js +11 -0
- package/dist/react/schema-hooks.js +87 -0
- package/dist/realtime/broadcast-channel-transport.d.ts +43 -0
- package/dist/realtime/broadcast-channel-transport.d.ts.map +1 -0
- package/dist/realtime/durable-object-relay-transport.d.ts +96 -0
- package/dist/realtime/durable-object-relay-transport.d.ts.map +1 -0
- package/dist/realtime/index.d.ts +44 -0
- package/dist/realtime/index.d.ts.map +1 -0
- package/dist/realtime/index.js +40 -0
- package/dist/realtime/memory-hub.d.ts +32 -0
- package/dist/realtime/memory-hub.d.ts.map +1 -0
- package/dist/realtime/persistent-channel.d.ts +105 -0
- package/dist/realtime/persistent-channel.d.ts.map +1 -0
- package/dist/realtime/presence.d.ts +73 -0
- package/dist/realtime/presence.d.ts.map +1 -0
- package/dist/realtime/relay-persistence.d.ts +37 -0
- package/dist/realtime/relay-persistence.d.ts.map +1 -0
- package/dist/realtime/relay-persistence.js +107 -0
- package/dist/realtime/relay-server.d.ts +103 -0
- package/dist/realtime/relay-server.d.ts.map +1 -0
- package/dist/realtime/room.d.ts +98 -0
- package/dist/realtime/room.d.ts.map +1 -0
- package/dist/realtime/text.d.ts +73 -0
- package/dist/realtime/text.d.ts.map +1 -0
- package/dist/realtime/types.d.ts +89 -0
- package/dist/realtime/types.d.ts.map +1 -0
- package/dist/realtime/websocket-relay-transport.d.ts +28 -0
- package/dist/realtime/websocket-relay-transport.d.ts.map +1 -0
- package/dist/realtime.bundle.js +1100 -0
- package/dist/{remote-manager-xvbg4230.js → remote-manager-ODE3T2KR.js} +25 -15
- package/dist/scaffold/seed.d.ts.map +1 -1
- package/dist/scaffold/write.d.ts +1 -1
- package/dist/scaffold/write.d.ts.map +1 -1
- package/dist/schema/define.d.ts +137 -0
- package/dist/schema/define.d.ts.map +1 -0
- package/dist/schema/entity-projection.d.ts +34 -0
- package/dist/schema/entity-projection.d.ts.map +1 -0
- package/dist/schema/eql.d.ts +46 -0
- package/dist/schema/eql.d.ts.map +1 -0
- package/dist/schema/index.d.ts +21 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +46 -0
- package/dist/schema/kernel-resolve.d.ts +21 -0
- package/dist/schema/kernel-resolve.d.ts.map +1 -0
- package/dist/schema/mutations.d.ts +20 -0
- package/dist/schema/mutations.d.ts.map +1 -0
- package/dist/schema/resolve.d.ts +21 -0
- package/dist/schema/resolve.d.ts.map +1 -0
- package/dist/server/deploy-meta.d.ts +25 -0
- package/dist/server/deploy-meta.d.ts.map +1 -0
- package/dist/server/deploy.d.ts +7 -2
- package/dist/server/deploy.d.ts.map +1 -1
- package/dist/server/index.d.ts +7 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +100 -58
- package/dist/server/node-adapter.js +5 -104
- package/dist/server/realtime.d.ts +14 -3
- package/dist/server/realtime.d.ts.map +1 -1
- package/dist/server/server.d.ts +8 -16
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/sprites.d.ts +18 -1
- package/dist/server/sprites.d.ts.map +1 -1
- package/dist/server/tenancy.d.ts +4 -0
- package/dist/server/tenancy.d.ts.map +1 -1
- package/dist/server/usage-meter.d.ts +53 -0
- package/dist/server/usage-meter.d.ts.map +1 -0
- package/dist/server-MB3OPSPI.js +18 -0
- package/dist/server-ZVWGLLRF.js +18 -0
- package/dist/sprites-KQGTGM6W.js +27 -0
- package/dist/{sprites-vc4qbrp1.js → sprites-RU3E4XQN.js} +6 -7
- package/dist/svelte/index.d.ts +17 -0
- package/dist/svelte/index.d.ts.map +1 -0
- package/dist/svelte/index.js +51 -0
- package/dist/svelte/schema-hooks.d.ts +45 -0
- package/dist/svelte/schema-hooks.d.ts.map +1 -0
- package/dist/svelte/schema-hooks.js +71 -0
- package/dist/svelte/stores.d.ts +78 -0
- package/dist/svelte/stores.d.ts.map +1 -0
- package/dist/sync/http-transport.d.ts +3 -3
- package/dist/sync/http-transport.d.ts.map +1 -1
- package/dist/sync/index.d.ts +15 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +617 -0
- package/dist/sync/memory-room.d.ts +37 -0
- package/dist/sync/memory-room.d.ts.map +1 -0
- package/dist/sync/memory-transport.d.ts +3 -3
- package/dist/sync/memory-transport.d.ts.map +1 -1
- package/dist/sync/partykit-room.d.ts +40 -0
- package/dist/sync/partykit-room.d.ts.map +1 -0
- package/dist/sync/partykit-transport.d.ts +84 -0
- package/dist/sync/partykit-transport.d.ts.map +1 -0
- package/dist/sync/room-core.d.ts +53 -0
- package/dist/sync/room-core.d.ts.map +1 -0
- package/dist/sync/sync-engine.d.ts +40 -2
- package/dist/sync/sync-engine.d.ts.map +1 -1
- package/dist/sync/sync-room-server.d.ts +39 -0
- package/dist/sync/sync-room-server.d.ts.map +1 -0
- package/dist/sync/types.d.ts +70 -3
- package/dist/sync/types.d.ts.map +1 -1
- package/dist/sync/vcs-sync-peer.d.ts +63 -0
- package/dist/sync/vcs-sync-peer.d.ts.map +1 -0
- package/dist/sync/ws-transport.d.ts +2 -2
- package/dist/sync/ws-transport.d.ts.map +1 -1
- package/dist/tenancy-NBLLGCNJ.js +14 -0
- package/dist/tenancy-POMWQP6M.js +16 -0
- package/dist/ui/client.html +355 -67
- package/dist/ui/launch-explorer.d.ts +22 -0
- package/dist/ui/launch-explorer.d.ts.map +1 -0
- package/dist/ui/server.d.ts +1 -1
- package/dist/ui/server.d.ts.map +1 -1
- package/dist/vcs/blob-store.d.ts.map +1 -1
- package/dist/vcs/idb-op-log.d.ts +67 -0
- package/dist/vcs/idb-op-log.d.ts.map +1 -0
- package/dist/vcs/index.d.ts +1 -0
- package/dist/vcs/index.d.ts.map +1 -1
- package/dist/vcs/index.js +81 -72
- package/dist/vcs/issue.d.ts +22 -5
- package/dist/vcs/issue.d.ts.map +1 -1
- package/dist/vcs/lane-materialize.d.ts +5 -0
- package/dist/vcs/lane-materialize.d.ts.map +1 -1
- package/dist/vcs/op-log.d.ts +28 -2
- package/dist/vcs/op-log.d.ts.map +1 -1
- package/dist/vcs/ops.d.ts +10 -0
- package/dist/vcs/ops.d.ts.map +1 -1
- package/dist/vcs/types.d.ts +2 -0
- package/dist/vcs/types.d.ts.map +1 -1
- package/dist/{vm-config-6xhsj6b3.js → vm-config-JI4OXKDQ.js} +9 -10
- package/dist/vue/hooks.d.ts +64 -0
- package/dist/vue/hooks.d.ts.map +1 -0
- package/dist/vue/index.d.ts +19 -0
- package/dist/vue/index.d.ts.map +1 -0
- package/dist/vue/index.js +59 -0
- package/dist/vue/schema-hooks.d.ts +41 -0
- package/dist/vue/schema-hooks.d.ts.map +1 -0
- package/dist/vue/schema-hooks.js +64 -0
- package/package.json +130 -17
- package/dist/deploy-999q207z.js +0 -10
- package/dist/engine-y0724kjq.js +0 -8
- package/dist/import-s2b8e0ft.js +0 -11
- package/dist/index-a76rekgs.js +0 -67
- package/dist/index-c9h37r6h.js +0 -1
- package/dist/index-hr9qvv77.js +0 -860
- package/dist/index-k5b0xskw.js +0 -1
- package/dist/index-nzb3am4f.js +0 -80
- package/dist/index-wncptktd.js +0 -292
- package/dist/index-y6a4kj0p.js +0 -43
- package/dist/index-yhwjgfvj.js +0 -342
- package/dist/sdk-bepky0xs.js +0 -16
- package/dist/server-szdjx0nt.js +0 -13
- package/dist/sqlite-backend-0vsmc6qj.js +0 -8
- package/dist/tenancy-pjm32b4v.js +0 -14
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
// @bun
|
|
2
1
|
import {
|
|
3
2
|
TrellisVcsEngine,
|
|
4
3
|
init_engine
|
|
5
|
-
} from "./
|
|
6
|
-
import"./
|
|
7
|
-
import"./
|
|
8
|
-
import"./
|
|
9
|
-
import"./
|
|
10
|
-
import"./
|
|
4
|
+
} from "./chunk-L5N5PR2S.js";
|
|
5
|
+
import "./chunk-GU374KWZ.js";
|
|
6
|
+
import "./chunk-4XIVMVHC.js";
|
|
7
|
+
import "./chunk-VBYUTRXX.js";
|
|
8
|
+
import "./chunk-N6MYZT4O.js";
|
|
9
|
+
import "./chunk-GLM4HGN4.js";
|
|
10
|
+
import "./chunk-KFQGP6VL.js";
|
|
11
11
|
|
|
12
12
|
// src/federation/remote-manager.ts
|
|
13
13
|
init_engine();
|
|
14
14
|
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
|
|
15
15
|
import { join, resolve } from "path";
|
|
16
|
-
|
|
17
|
-
class RemoteManager {
|
|
16
|
+
var RemoteManager = class {
|
|
18
17
|
trellisPath;
|
|
19
18
|
remotesPath;
|
|
20
19
|
constructor(trellisPath) {
|
|
21
20
|
this.trellisPath = trellisPath;
|
|
22
21
|
this.remotesPath = join(trellisPath, "remotes.json");
|
|
23
22
|
}
|
|
23
|
+
/** Load remotes configuration */
|
|
24
24
|
loadRemotes() {
|
|
25
25
|
if (!existsSync(this.remotesPath)) {
|
|
26
26
|
return { remotes: {} };
|
|
@@ -32,6 +32,7 @@ class RemoteManager {
|
|
|
32
32
|
throw new Error(`Failed to load remotes config: ${error}`);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
+
/** Save remotes configuration */
|
|
35
36
|
saveRemotes(config) {
|
|
36
37
|
try {
|
|
37
38
|
if (!existsSync(this.trellisPath)) {
|
|
@@ -42,6 +43,7 @@ class RemoteManager {
|
|
|
42
43
|
throw new Error(`Failed to save remotes config: ${error}`);
|
|
43
44
|
}
|
|
44
45
|
}
|
|
46
|
+
/** Add a new remote */
|
|
45
47
|
addRemote(name, path) {
|
|
46
48
|
const config = this.loadRemotes();
|
|
47
49
|
if (config.remotes[name]) {
|
|
@@ -57,6 +59,7 @@ class RemoteManager {
|
|
|
57
59
|
};
|
|
58
60
|
this.saveRemotes(config);
|
|
59
61
|
}
|
|
62
|
+
/** Remove a remote */
|
|
60
63
|
removeRemote(name) {
|
|
61
64
|
const config = this.loadRemotes();
|
|
62
65
|
if (!config.remotes[name]) {
|
|
@@ -65,10 +68,12 @@ class RemoteManager {
|
|
|
65
68
|
delete config.remotes[name];
|
|
66
69
|
this.saveRemotes(config);
|
|
67
70
|
}
|
|
71
|
+
/** List all remotes */
|
|
68
72
|
listRemotes() {
|
|
69
73
|
const config = this.loadRemotes();
|
|
70
74
|
return Object.values(config.remotes);
|
|
71
75
|
}
|
|
76
|
+
/** Pull new ops from a specific remote */
|
|
72
77
|
async pullRemote(remoteName, localEngine) {
|
|
73
78
|
const startTime = Date.now();
|
|
74
79
|
const config = this.loadRemotes();
|
|
@@ -98,14 +103,18 @@ class RemoteManager {
|
|
|
98
103
|
startIndex = remoteOps.findIndex((op) => op.hash === lastOpHash);
|
|
99
104
|
if (startIndex === -1) {
|
|
100
105
|
startIndex = 0;
|
|
101
|
-
errors.push(
|
|
106
|
+
errors.push(
|
|
107
|
+
`Last op hash ${lastOpHash} not found in remote, pulling all ops`
|
|
108
|
+
);
|
|
102
109
|
} else {
|
|
103
110
|
startIndex++;
|
|
104
111
|
}
|
|
105
112
|
}
|
|
106
113
|
const opsToPull = remoteOps.slice(startIndex);
|
|
107
114
|
if (opsToPull.length > 0) {
|
|
108
|
-
const prefixedOps = opsToPull.map(
|
|
115
|
+
const prefixedOps = opsToPull.map(
|
|
116
|
+
(op) => this.prefixOpEntities(op, remoteName)
|
|
117
|
+
);
|
|
109
118
|
for (const op of prefixedOps) {
|
|
110
119
|
localEngine.opLog.append(op);
|
|
111
120
|
newOps++;
|
|
@@ -113,7 +122,7 @@ class RemoteManager {
|
|
|
113
122
|
latestOpId = remoteOps[remoteOps.length - 1].hash;
|
|
114
123
|
}
|
|
115
124
|
remote.lastOpId = latestOpId;
|
|
116
|
-
remote.pulledAt = new Date().toISOString();
|
|
125
|
+
remote.pulledAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
117
126
|
this.saveRemotes(config);
|
|
118
127
|
} catch (error) {
|
|
119
128
|
errors.push(`Failed to pull from remote: ${error}`);
|
|
@@ -126,6 +135,7 @@ class RemoteManager {
|
|
|
126
135
|
errors
|
|
127
136
|
};
|
|
128
137
|
}
|
|
138
|
+
/** Pull from all configured remotes */
|
|
129
139
|
async pullAll(localEngine) {
|
|
130
140
|
const config = this.loadRemotes();
|
|
131
141
|
const remoteNames = Object.keys(config.remotes);
|
|
@@ -160,6 +170,7 @@ class RemoteManager {
|
|
|
160
170
|
totalDurationMs: Date.now() - startTime
|
|
161
171
|
};
|
|
162
172
|
}
|
|
173
|
+
/** Prefix entity IDs in operations with remote name */
|
|
163
174
|
prefixOpEntities(op, remoteName) {
|
|
164
175
|
const prefixed = { ...op };
|
|
165
176
|
if (op.vcs) {
|
|
@@ -199,8 +210,7 @@ class RemoteManager {
|
|
|
199
210
|
e2: link.e2.includes(":") ? link.e2 : `${remoteName}:${link.e2}`
|
|
200
211
|
}));
|
|
201
212
|
}
|
|
202
|
-
if (!prefixed.facts)
|
|
203
|
-
prefixed.facts = [];
|
|
213
|
+
if (!prefixed.facts) prefixed.facts = [];
|
|
204
214
|
prefixed.facts.push({
|
|
205
215
|
e: "op",
|
|
206
216
|
a: "remote",
|
|
@@ -208,7 +218,7 @@ class RemoteManager {
|
|
|
208
218
|
});
|
|
209
219
|
return prefixed;
|
|
210
220
|
}
|
|
211
|
-
}
|
|
221
|
+
};
|
|
212
222
|
export {
|
|
213
223
|
RemoteManager
|
|
214
224
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/scaffold/seed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/scaffold/seed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAwFxE"}
|
package/dist/scaffold/write.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export interface ScaffoldInput {
|
|
|
24
24
|
profile: UserProfile | null;
|
|
25
25
|
context: ProjectContext;
|
|
26
26
|
}
|
|
27
|
-
export type IdeType = 'cursor' | '
|
|
27
|
+
export type IdeType = 'cursor' | 'devin' | 'claude' | 'copilot' | 'codex' | 'gemini' | 'none';
|
|
28
28
|
export type WorkspaceFootprint = 'minimal' | 'standard' | 'full';
|
|
29
29
|
export type FrameworkType = 'react' | 'vue' | 'svelte' | 'next' | 'nuxt' | 'remotion' | 'expo' | 'bun' | 'node' | 'cli' | 'library' | 'animation' | 'games' | 'none';
|
|
30
30
|
export interface IdeScaffoldInput {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/scaffold/write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/scaffold/write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAMhD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,MAAM,OAAO,GACf,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,OAAO,GACP,QAAQ,GACR,MAAM,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AACjE,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,KAAK,GACL,QAAQ,GACR,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,GACN,KAAK,GACL,MAAM,GACN,KAAK,GACL,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,CAAC;AAEX,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,kBAAkB,CAAC;IAC9B,SAAS,EAAE,aAAa,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AA8QD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,GACnB,IAAI,CAoCN;AAq4BD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,gBAAgB,GACtB,IAAI,CA4IN"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trellis Schema — typed entity definitions over the ontology.
|
|
3
|
+
*
|
|
4
|
+
* `defineType` is the Trellis answer to Jazz's `co.map`: one definition produces
|
|
5
|
+
* BOTH a runtime {@link SchemaDefinition} (registerable in the kernel via
|
|
6
|
+
* `createOntology`) AND a static TypeScript type via {@link InferType}. Zod
|
|
7
|
+
* handles leaf validation + inference; a second options bag handles the graph
|
|
8
|
+
* semantics Zod can't express — relation cardinality, rollups, formulas, tier.
|
|
9
|
+
*
|
|
10
|
+
* This deliberately targets `SchemaDefinition` (the live kernel path consumed by
|
|
11
|
+
* schema/rollup middleware), not the legacy `OntologySchema` registry — see
|
|
12
|
+
* {@link TrellisType.toOntologySchema} for the legacy adapter.
|
|
13
|
+
*
|
|
14
|
+
* import { defineType, rel } from 'trellis/schema';
|
|
15
|
+
* import { z } from 'zod';
|
|
16
|
+
*
|
|
17
|
+
* const NavItem = defineType('NavItem', {
|
|
18
|
+
* label: z.string(),
|
|
19
|
+
* icon: z.string().optional(),
|
|
20
|
+
* order: z.number(),
|
|
21
|
+
* }, { title: 'label' });
|
|
22
|
+
*
|
|
23
|
+
* const NavSection = defineType('NavSection', {
|
|
24
|
+
* label: z.string(),
|
|
25
|
+
* order: z.number(),
|
|
26
|
+
* collapsed: z.boolean(),
|
|
27
|
+
* }, { title: 'label', relations: { items: rel(() => NavItem, 'many') } });
|
|
28
|
+
*
|
|
29
|
+
* type Section = InferType<typeof NavSection>;
|
|
30
|
+
* // { id: string; type: 'NavSection'; label: string; order: number;
|
|
31
|
+
* // collapsed: boolean; items: Ref<typeof NavItem>[] }
|
|
32
|
+
*
|
|
33
|
+
* @module trellis/schema
|
|
34
|
+
*/
|
|
35
|
+
import { z } from 'zod';
|
|
36
|
+
import type { OntologySchema, OntologyTier, PropertyType, PropertyValueSpecification, SchemaDefinition } from '../core/ontology/types.js';
|
|
37
|
+
/**
|
|
38
|
+
* A reference to another entity. Unresolved it is the target's id (a `string`);
|
|
39
|
+
* a future `resolve` option swaps it for the loaded {@link InferType} value.
|
|
40
|
+
*/
|
|
41
|
+
export type Ref<S extends AnyType = AnyType> = string & {
|
|
42
|
+
readonly __ref?: S;
|
|
43
|
+
};
|
|
44
|
+
export type RelTarget<S extends AnyType> = (() => S) | string;
|
|
45
|
+
export interface Relation<S extends AnyType, C extends 'one' | 'many'> {
|
|
46
|
+
readonly target: RelTarget<S>;
|
|
47
|
+
readonly cardinality: C;
|
|
48
|
+
}
|
|
49
|
+
/** Declare a relation field. Target may be a thunk (define-order safe) or a name. */
|
|
50
|
+
export declare function rel<S extends AnyType, C extends 'one' | 'many' = 'one'>(target: RelTarget<S>, cardinality?: C): Relation<S, C>;
|
|
51
|
+
export type RelationMap = Record<string, Relation<AnyType, 'one' | 'many'>>;
|
|
52
|
+
export interface ComputedField {
|
|
53
|
+
readonly spec: Partial<PropertyValueSpecification> & {
|
|
54
|
+
valueType: PropertyType;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export type ComputedMap = Record<string, ComputedField>;
|
|
58
|
+
/** Declare a rollup over a relation (e.g. count of linked items). */
|
|
59
|
+
export declare function rollup(cfg: NonNullable<PropertyValueSpecification['rollup']>): ComputedField;
|
|
60
|
+
/** Declare a formula field. */
|
|
61
|
+
export declare function formula(expr: string): ComputedField;
|
|
62
|
+
export interface TrellisType<Name extends string, Z extends z.ZodRawShape, R extends RelationMap, C extends ComputedMap> {
|
|
63
|
+
readonly type: Name;
|
|
64
|
+
/** Leaf validator (does not include relations/computed). */
|
|
65
|
+
readonly zod: z.ZodObject<Z>;
|
|
66
|
+
readonly relations: R;
|
|
67
|
+
readonly computed: C;
|
|
68
|
+
/** Kernel-facing schema, keyed by `@id` = `trellis:<Name>`. */
|
|
69
|
+
readonly definition: SchemaDefinition;
|
|
70
|
+
/** Adapter to the legacy OntologyRegistry (relation resolution only). */
|
|
71
|
+
toOntologySchema(): OntologySchema;
|
|
72
|
+
}
|
|
73
|
+
export type AnyType = TrellisType<string, z.ZodRawShape, RelationMap, ComputedMap>;
|
|
74
|
+
type RelValue<X> = X extends Relation<infer S, infer C> ? C extends 'many' ? Ref<S>[] : Ref<S> : never;
|
|
75
|
+
export type InferType<T> = T extends TrellisType<infer Name, infer Z, infer R, infer C> ? {
|
|
76
|
+
id: string;
|
|
77
|
+
type: Name;
|
|
78
|
+
} & z.infer<z.ZodObject<Z>> & {
|
|
79
|
+
[K in keyof R]: RelValue<R[K]>;
|
|
80
|
+
} & {
|
|
81
|
+
readonly [K in keyof C]: number;
|
|
82
|
+
} : never;
|
|
83
|
+
/** Target entity schema of a relation field. */
|
|
84
|
+
type RelationTarget<R> = R extends Relation<infer S, 'one' | 'many'> ? S : never;
|
|
85
|
+
/**
|
|
86
|
+
* Typed `resolve` spec for {@link InferResolvedType} — mirrors runtime
|
|
87
|
+
* {@link import('./resolve.js').ResolveSpec} but keyed to declared relations.
|
|
88
|
+
*
|
|
89
|
+
* `{ items: true }` — expand `items` to full entities.
|
|
90
|
+
* `{ items: { section: true } }` — expand `items`, then each item's `section`.
|
|
91
|
+
*/
|
|
92
|
+
export type ResolveSpecFor<T extends AnyType> = {
|
|
93
|
+
[K in keyof T['relations'] & string]?: true | ResolveSpecFor<RelationTarget<T['relations'][K]>>;
|
|
94
|
+
};
|
|
95
|
+
/** Expand one relation key according to a resolve spec entry (`true` or nested). */
|
|
96
|
+
type ApplyResolve<Field extends Relation<AnyType, 'one' | 'many'>, Spec> = Field extends Relation<infer S, infer C> ? [Spec] extends [true] ? C extends 'many' ? InferType<S>[] : InferType<S> : Spec extends ResolveSpecFor<S> ? C extends 'many' ? InferResolvedType<S, Spec>[] : InferResolvedType<S, Spec> : RelValue<Field> : never;
|
|
97
|
+
/**
|
|
98
|
+
* Like {@link InferType}, but relation keys in `resolve` are expanded entity
|
|
99
|
+
* shapes instead of `Ref` ids. Nested objects recurse (TRL-4).
|
|
100
|
+
*/
|
|
101
|
+
export type InferResolvedType<T extends AnyType, R extends ResolveSpecFor<T>> = T extends TrellisType<infer Name, infer Z, infer Rel, infer C> ? {
|
|
102
|
+
id: string;
|
|
103
|
+
type: Name;
|
|
104
|
+
} & z.infer<z.ZodObject<Z>> & {
|
|
105
|
+
[K in keyof Rel]: K extends keyof R ? ApplyResolve<Rel[K], R[K]> : RelValue<Rel[K]>;
|
|
106
|
+
} & {
|
|
107
|
+
readonly [K in keyof C]: number;
|
|
108
|
+
} : never;
|
|
109
|
+
/**
|
|
110
|
+
* Infer the entity array shape returned by typed live reads (`useEntities`,
|
|
111
|
+
* `entitiesStore`) from optional read options.
|
|
112
|
+
*/
|
|
113
|
+
export type InferEntitiesRead<S extends AnyType, O> = O extends {
|
|
114
|
+
resolve: infer R;
|
|
115
|
+
} ? R extends ResolveSpecFor<S> ? InferResolvedType<S, R>[] : InferType<S>[] : InferType<S>[];
|
|
116
|
+
/**
|
|
117
|
+
* Infer the entity shape returned by typed single-entity reads (`useEntity`,
|
|
118
|
+
* `entityStore`) from optional read options.
|
|
119
|
+
*/
|
|
120
|
+
export type InferEntityRead<S extends AnyType, O> = O extends {
|
|
121
|
+
resolve: infer R;
|
|
122
|
+
} ? R extends ResolveSpecFor<S> ? InferResolvedType<S, R> | null : InferType<S> | null : InferType<S> | null;
|
|
123
|
+
export interface DefineTypeOptions<Z extends z.ZodRawShape, R extends RelationMap, C extends ComputedMap> {
|
|
124
|
+
/** Which leaf key is the entity's `title` property. */
|
|
125
|
+
title?: Extract<keyof Z, string>;
|
|
126
|
+
relations?: R;
|
|
127
|
+
computed?: C;
|
|
128
|
+
/** Defaults to 'user'. Core/system are reserved for shipped schemas. */
|
|
129
|
+
tier?: OntologyTier;
|
|
130
|
+
version?: string;
|
|
131
|
+
/** Parent type name (`subClassOf`). */
|
|
132
|
+
extends?: string;
|
|
133
|
+
label?: string;
|
|
134
|
+
}
|
|
135
|
+
export declare function defineType<Name extends string, Z extends z.ZodRawShape, R extends RelationMap = Record<never, never>, C extends ComputedMap = Record<never, never>>(type: Name, shape: Z, opts?: DefineTypeOptions<Z, R, C>): TrellisType<Name, Z, R, C>;
|
|
136
|
+
export {};
|
|
137
|
+
//# sourceMappingURL=define.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../src/schema/define.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entity projection — sparse EQL bindings ↔ plain entity records.
|
|
3
|
+
*
|
|
4
|
+
* Shared by the realtime subscription path (server hydrates before push) and
|
|
5
|
+
* the client read layer (skips `read()` when rows are already full entities).
|
|
6
|
+
*
|
|
7
|
+
* @module trellis/schema
|
|
8
|
+
*/
|
|
9
|
+
import type { EntityData } from '../client/sdk.js';
|
|
10
|
+
/** Minimal kernel surface for hydration. */
|
|
11
|
+
export interface EntityReader {
|
|
12
|
+
getEntity(id: string): EntityRecordLike | null;
|
|
13
|
+
}
|
|
14
|
+
export interface EntityRecordLike {
|
|
15
|
+
id: string;
|
|
16
|
+
type: string;
|
|
17
|
+
facts: Array<{
|
|
18
|
+
a: string;
|
|
19
|
+
v: unknown;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
export declare function entityRecordToPlain(entity: EntityRecordLike): EntityData;
|
|
23
|
+
/** Extract an entity id from a query binding row. */
|
|
24
|
+
export declare function bindingEntityId(row: Record<string, unknown>): string | null;
|
|
25
|
+
/** True when the row is a sparse `{ e: id }` trigger, not a hydrated entity. */
|
|
26
|
+
export declare function isSparseBinding(row: Record<string, unknown>): boolean;
|
|
27
|
+
/** Normalize a binding row to {@link EntityData} (hydrated or sparse+partial). */
|
|
28
|
+
export declare function bindingToEntity(row: Record<string, unknown>): EntityData;
|
|
29
|
+
/**
|
|
30
|
+
* Hydrate sparse subscription bindings to full entity records via the kernel.
|
|
31
|
+
* Already-hydrated rows pass through unchanged.
|
|
32
|
+
*/
|
|
33
|
+
export declare function hydrateBindings(kernel: EntityReader, bindings: Record<string, unknown>[]): EntityData[];
|
|
34
|
+
//# sourceMappingURL=entity-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-projection.d.ts","sourceRoot":"","sources":["../../src/schema/entity-projection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACzC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAMxE;AAED,qDAAqD;AACrD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAG3E;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAIrE;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAOxE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAClC,UAAU,EAAE,CAOd"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EQL-S query builders shared by every typed read adapter (React/Vue/Svelte).
|
|
3
|
+
*
|
|
4
|
+
* Centralised so filter encoding has one home — typed reads, live subscriptions,
|
|
5
|
+
* and HTTP `/query` all share the same `find ?e where …` shape.
|
|
6
|
+
*
|
|
7
|
+
* @module trellis/schema
|
|
8
|
+
*/
|
|
9
|
+
/** Escape a value for inclusion in a double-quoted EQL literal. */
|
|
10
|
+
export declare function escapeValue(v: string): string;
|
|
11
|
+
/** Comparison operators supported by {@link parseSimple}. */
|
|
12
|
+
export type WhereOp = 'eq' | 'ne' | 'lt' | 'lte' | 'gt' | 'gte' | 'contains' | 'startsWith' | 'endsWith';
|
|
13
|
+
/** Structured filter for one attribute (TRL-7). */
|
|
14
|
+
export type WhereFilter = {
|
|
15
|
+
eq?: unknown;
|
|
16
|
+
ne?: unknown;
|
|
17
|
+
lt?: number | string;
|
|
18
|
+
lte?: number | string;
|
|
19
|
+
gt?: number | string;
|
|
20
|
+
gte?: number | string;
|
|
21
|
+
contains?: string;
|
|
22
|
+
startsWith?: string;
|
|
23
|
+
endsWith?: string;
|
|
24
|
+
};
|
|
25
|
+
/** Equality shorthand or a {@link WhereFilter} object. */
|
|
26
|
+
export type WhereValue = unknown | WhereFilter;
|
|
27
|
+
export declare function isWhereFilter(value: unknown): value is WhereFilter;
|
|
28
|
+
/** Format a JS value as an EQL-S literal (quoted string, bare number, or boolean). */
|
|
29
|
+
export declare function formatEqlLiteral(value: unknown): string;
|
|
30
|
+
/**
|
|
31
|
+
* One `attr op value` fragment for `find ?e where …`.
|
|
32
|
+
* Throws when a filter object specifies more than one operator.
|
|
33
|
+
*/
|
|
34
|
+
export declare function whereCondition(attr: string, value: WhereValue): string;
|
|
35
|
+
export type WhereInput = Record<string, WhereValue>;
|
|
36
|
+
/**
|
|
37
|
+
* `find ?e where type = "<Type>" [and <k> <op> <v> …]` — entities of a type,
|
|
38
|
+
* optionally narrowed by attribute filters (ANDed).
|
|
39
|
+
*/
|
|
40
|
+
export declare function entitiesQuery(type: string, where?: WhereInput): string;
|
|
41
|
+
/**
|
|
42
|
+
* Single-entity live subscription query (TRL-9).
|
|
43
|
+
* Narrows the type pattern to one entity id — avoids full-type fan-out on the wire.
|
|
44
|
+
*/
|
|
45
|
+
export declare function entityQuery(type: string, entityId: string): string;
|
|
46
|
+
//# sourceMappingURL=eql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eql.d.ts","sourceRoot":"","sources":["../../src/schema/eql.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,6DAA6D;AAC7D,MAAM,MAAM,OAAO,GACf,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,UAAU,GACV,YAAY,GACZ,UAAU,CAAC;AAEf,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;AAc/C,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAOlE;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQvD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAiBtE;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAOtE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIlE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trellis Schema — Public API Surface
|
|
3
|
+
*
|
|
4
|
+
* Typed entity definitions (`defineType`) that emit a kernel `SchemaDefinition`
|
|
5
|
+
* and a static TS type. Import from `trellis/schema`:
|
|
6
|
+
*
|
|
7
|
+
* import { defineType, rel, type InferType } from 'trellis/schema';
|
|
8
|
+
*
|
|
9
|
+
* @module trellis/schema
|
|
10
|
+
*/
|
|
11
|
+
export { defineType, rel, rollup, formula, } from './define.js';
|
|
12
|
+
export type { AnyType, ComputedField, ComputedMap, DefineTypeOptions, InferEntitiesRead, InferEntityRead, InferType, InferResolvedType, Ref, Relation, RelationMap, RelTarget, ResolveSpecFor, TrellisType, } from './define.js';
|
|
13
|
+
export { entitiesQuery, entityQuery, escapeValue, formatEqlLiteral, isWhereFilter, whereCondition, } from './eql.js';
|
|
14
|
+
export type { WhereFilter, WhereInput, WhereOp, WhereValue } from './eql.js';
|
|
15
|
+
export { entityMutations } from './mutations.js';
|
|
16
|
+
export type { EntityMutations } from './mutations.js';
|
|
17
|
+
export { resolveRelations, inverseForeignKey } from './resolve.js';
|
|
18
|
+
export type { ResolveSpec } from './resolve.js';
|
|
19
|
+
export { bindingEntityId, bindingToEntity, entityRecordToPlain, hydrateBindings, isSparseBinding, } from './entity-projection.js';
|
|
20
|
+
export type { EntityReader, EntityRecordLike } from './entity-projection.js';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,UAAU,EACV,GAAG,EACH,MAAM,EACN,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,OAAO,EACP,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,GAAG,EACH,QAAQ,EACR,WAAW,EACX,SAAS,EACT,cAAc,EACd,WAAW,GACZ,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG7E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACnE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import "../chunk-WXSWA3MV.js";
|
|
2
|
+
import {
|
|
3
|
+
entityMutations
|
|
4
|
+
} from "../chunk-USEINYUL.js";
|
|
5
|
+
import {
|
|
6
|
+
defineType,
|
|
7
|
+
formula,
|
|
8
|
+
rel,
|
|
9
|
+
rollup
|
|
10
|
+
} from "../chunk-44FFQKQX.js";
|
|
11
|
+
import {
|
|
12
|
+
bindingEntityId,
|
|
13
|
+
bindingToEntity,
|
|
14
|
+
entitiesQuery,
|
|
15
|
+
entityQuery,
|
|
16
|
+
entityRecordToPlain,
|
|
17
|
+
escapeValue,
|
|
18
|
+
formatEqlLiteral,
|
|
19
|
+
hydrateBindings,
|
|
20
|
+
inverseForeignKey,
|
|
21
|
+
isSparseBinding,
|
|
22
|
+
isWhereFilter,
|
|
23
|
+
resolveRelations,
|
|
24
|
+
whereCondition
|
|
25
|
+
} from "../chunk-JUEMDWLU.js";
|
|
26
|
+
import "../chunk-KFQGP6VL.js";
|
|
27
|
+
export {
|
|
28
|
+
bindingEntityId,
|
|
29
|
+
bindingToEntity,
|
|
30
|
+
defineType,
|
|
31
|
+
entitiesQuery,
|
|
32
|
+
entityMutations,
|
|
33
|
+
entityQuery,
|
|
34
|
+
entityRecordToPlain,
|
|
35
|
+
escapeValue,
|
|
36
|
+
formatEqlLiteral,
|
|
37
|
+
formula,
|
|
38
|
+
hydrateBindings,
|
|
39
|
+
inverseForeignKey,
|
|
40
|
+
isSparseBinding,
|
|
41
|
+
isWhereFilter,
|
|
42
|
+
rel,
|
|
43
|
+
resolveRelations,
|
|
44
|
+
rollup,
|
|
45
|
+
whereCondition
|
|
46
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { TrellisKernel } from '../core/kernel/trellis-kernel.js';
|
|
2
|
+
import type { SchemaDefinition } from '../core/ontology/types.js';
|
|
3
|
+
import type { EntityData } from '../client/sdk.js';
|
|
4
|
+
import type { RelationResolveClient } from './resolve.js';
|
|
5
|
+
import { type AnyType } from './define.js';
|
|
6
|
+
import { type ResolveSpec } from './resolve.js';
|
|
7
|
+
/** Short name from `trellis:NavSection` → `NavSection`. */
|
|
8
|
+
export declare function ontologyTypeName(id: string): string;
|
|
9
|
+
/** Find a registered ontology schema by entity `type` fact value. */
|
|
10
|
+
export declare function findOntologyByTypeName(kernel: TrellisKernel, typeName: string): SchemaDefinition | undefined;
|
|
11
|
+
/** Build a minimal {@link AnyType} handle from a kernel ontology (for server resolve). */
|
|
12
|
+
export declare function schemaHandleFromOntology(def: SchemaDefinition, typeName?: string): AnyType;
|
|
13
|
+
/** Lookup table for relation targets registered in the kernel. */
|
|
14
|
+
export declare function createSchemaLookup(kernel: TrellisKernel): (typeName: string) => AnyType | null;
|
|
15
|
+
/** {@link TrellisDb} surface backed by an in-process kernel (server resolve path). */
|
|
16
|
+
export declare function createKernelResolveClient(kernel: TrellisKernel): RelationResolveClient;
|
|
17
|
+
/**
|
|
18
|
+
* Hydrate query bindings and optionally expand relations before wire push.
|
|
19
|
+
*/
|
|
20
|
+
export declare function hydrateAndResolve(kernel: TrellisKernel, bindings: Record<string, unknown>[], entityType?: string, resolve?: ResolveSpec): Promise<EntityData[]>;
|
|
21
|
+
//# sourceMappingURL=kernel-resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel-resolve.d.ts","sourceRoot":"","sources":["../../src/schema/kernel-resolve.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAEL,KAAK,OAAO,EAGb,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAElE,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,GACf,gBAAgB,GAAG,SAAS,CAS9B;AAED,0FAA0F;AAC1F,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAsBT;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,GACpB,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAUtC;AAED,sFAAsF;AACtF,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,GACpB,qBAAqB,CAkBvB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACnC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,EAAE,CAAC,CAgBvB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework-agnostic, schema-typed mutations. The React `useMutation`, Vue
|
|
3
|
+
* `useMutation`, and Svelte mutation helper all delegate here so create/update
|
|
4
|
+
* payloads are checked against the schema in exactly one place.
|
|
5
|
+
*
|
|
6
|
+
* @module trellis/schema
|
|
7
|
+
*/
|
|
8
|
+
import type { TrellisDb } from '../client/sdk.js';
|
|
9
|
+
import type { AnyType, InferType } from './define.js';
|
|
10
|
+
export interface EntityMutations<E> {
|
|
11
|
+
/** Create an entity of this type. Returns the new id. */
|
|
12
|
+
create(attrs: Omit<E, 'id' | 'type'>): Promise<string>;
|
|
13
|
+
/** Patch an entity's attributes. */
|
|
14
|
+
update(id: string, attrs: Partial<Omit<E, 'id' | 'type'>>): Promise<void>;
|
|
15
|
+
/** Delete an entity by id. */
|
|
16
|
+
remove(id: string): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
/** Bind create/update/remove for a schema to a client. */
|
|
19
|
+
export declare function entityMutations<S extends AnyType>(client: TrellisDb, schema: S): EntityMutations<InferType<S>>;
|
|
20
|
+
//# sourceMappingURL=mutations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../../src/schema/mutations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,yDAAyD;IACzD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,oCAAoC;IACpC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,8BAA8B;IAC9B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,CAAC,SAAS,OAAO,EAC/C,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,CAAC,GACR,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAQ/B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { AnyType } from './define.js';
|
|
2
|
+
import type { EntityData, TrellisDb } from '../client/sdk.js';
|
|
3
|
+
/** Read/query surface used by relation expansion (client or in-process kernel). */
|
|
4
|
+
export type RelationResolveClient = Pick<TrellisDb, 'read' | 'query'>;
|
|
5
|
+
/**
|
|
6
|
+
* Runtime resolve map (loose keys). For static types use
|
|
7
|
+
* {@link import('./define.js').ResolveSpecFor}.
|
|
8
|
+
*/
|
|
9
|
+
export type ResolveSpec = {
|
|
10
|
+
[key: string]: boolean | ResolveSpec | undefined;
|
|
11
|
+
};
|
|
12
|
+
/** Child attribute pointing at `parent` (inverse of a `many` relation). */
|
|
13
|
+
export declare function inverseForeignKey(parent: AnyType, relationName: string, child: AnyType): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Expand `resolve` relation keys on hydrated entities. Mutates rows in place.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveRelations(client: RelationResolveClient, schema: AnyType, entities: EntityData[], spec: ResolveSpec, opts?: {
|
|
18
|
+
copy?: boolean;
|
|
19
|
+
schemaLookup?: (typeName: string) => AnyType | null;
|
|
20
|
+
}): Promise<EntityData[]>;
|
|
21
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/schema/resolve.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE9D,mFAAmF;AACnF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;AAEtE;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;CAClD,CAAC;AAoBF,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,GACb,MAAM,GAAG,IAAI,CAKf;AA4ED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,UAAU,EAAE,EACtB,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAA;CAAE,GAC7E,OAAO,CAAC,UAAU,EAAE,CAAC,CA6DvB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TurtleDB deploy — name validation and URL helpers.
|
|
3
|
+
*
|
|
4
|
+
* @module trellis/server
|
|
5
|
+
*/
|
|
6
|
+
export declare class DeployNameError extends Error {
|
|
7
|
+
constructor(message: string);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Normalize user input (trim, lowercase).
|
|
11
|
+
*/
|
|
12
|
+
export declare function normalizeDeployName(name: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Validate a Sprite / room-node slug. Returns normalized name or throws.
|
|
15
|
+
*/
|
|
16
|
+
export declare function validateDeployName(name: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Stub / docs URL pattern (`https://<slug>.sprites.app`).
|
|
19
|
+
* Live deploy must call `resolveSpritePublicUrl()` — Sprites assigns
|
|
20
|
+
* `https://<slug>-<org>.sprites.app`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildDeployUrl(name: string): string;
|
|
23
|
+
/** Sprites public HTTP URL routes to this port by default. */
|
|
24
|
+
export declare const SPRITE_PUBLIC_HTTP_PORT = 8080;
|
|
25
|
+
//# sourceMappingURL=deploy-meta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-meta.d.ts","sourceRoot":"","sources":["../../src/server/deploy-meta.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuBvD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,8DAA8D;AAC9D,eAAO,MAAM,uBAAuB,OAAO,CAAC"}
|
package/dist/server/deploy.d.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Deploys a Trellis DB server to a Sprites cloud environment.
|
|
5
5
|
*
|
|
6
|
-
* Sprites is a cloud VM platform. Each Sprite gets a persistent URL
|
|
7
|
-
*
|
|
6
|
+
* Sprites is a cloud VM platform. Each Sprite gets a persistent URL from
|
|
7
|
+
* `sprite url` (typically `https://<name>-<org>.sprites.app`).
|
|
8
8
|
*
|
|
9
9
|
* Deployment steps:
|
|
10
10
|
* 1. Bundle the server entrypoint with Bun
|
|
@@ -34,6 +34,11 @@ export interface DeployOptions {
|
|
|
34
34
|
configDir?: string;
|
|
35
35
|
/** Progress callback. */
|
|
36
36
|
onProgress?: (msg: string) => void;
|
|
37
|
+
/**
|
|
38
|
+
* Skip Sprite provisioning — validate name and write `.trellis-db.json` only.
|
|
39
|
+
* For local dry-runs and CI (`trellis deploy --stub`).
|
|
40
|
+
*/
|
|
41
|
+
stub?: boolean;
|
|
37
42
|
}
|
|
38
43
|
export interface DeployResult {
|
|
39
44
|
url: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/server/deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/server/deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAwBH,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAqFvE"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -14,13 +14,18 @@ export { resolveAuth, signJwt, verifyJwt, buildOAuthUrl, exchangeOAuthCode, GOOG
|
|
|
14
14
|
export type { AuthContext, AuthConfig, OAuthProvider } from './auth.js';
|
|
15
15
|
export { PermissionRegistry, PermissionError, PUBLIC_READ, FULLY_PUBLIC, OWNER_ONLY, ADMIN_ONLY, } from './permissions.js';
|
|
16
16
|
export type { PermissionRule, PermissionsDef, CrudOp } from './permissions.js';
|
|
17
|
-
export { TenantPool, DEFAULT_TENANT } from './tenancy.js';
|
|
17
|
+
export { TenantPool, DEFAULT_TENANT, resolvePoolBackendFromEnv, } from './tenancy.js';
|
|
18
18
|
export { SubscriptionManager } from './realtime.js';
|
|
19
19
|
export type { Subscription as RealtimeSubscription, WsClient, } from './realtime.js';
|
|
20
|
+
export { UsageMeter, sampleTenantStorage, resolveUsageTenantId, verifyAdminKey, dayKey, } from './usage-meter.js';
|
|
21
|
+
export type { DayBucket, MeterName, TenantUsageSnapshot, } from './usage-meter.js';
|
|
22
|
+
export { attachRealtimeRelay, createRealtimeRelay, } from '../realtime/relay-server.js';
|
|
23
|
+
export type { RealtimeRelay, RealtimeRelayOptions, StandaloneRealtimeRelay, StandaloneRealtimeRelayOptions, } from '../realtime/relay-server.js';
|
|
20
24
|
export { importFile, importRecords } from './import.js';
|
|
21
25
|
export type { ImportOptions, ImportResult } from './import.js';
|
|
22
26
|
export { deploy } from './deploy.js';
|
|
23
27
|
export type { DeployOptions, DeployResult } from './deploy.js';
|
|
24
|
-
export {
|
|
28
|
+
export { validateDeployName, normalizeDeployName, buildDeployUrl, SPRITE_PUBLIC_HTTP_PORT, DeployNameError, } from './deploy-meta.js';
|
|
29
|
+
export { runSpriteCmd, runSpriteCopy, runSpriteExec, runSpriteInteractive, assertSpriteCli, resolveSprite, parseSpriteUrlOutput, resolveSpritePublicUrl, ensureSpritePublicAccess, ensureSprite, SPRITE_ENSURE_BUN_SH, } from './sprites.js';
|
|
25
30
|
export { loadVmConfig, saveVmConfig, getActiveSprite, setActiveSprite, trackSprite, untrackSprite, isSpriteTracked, getSprite, VmConfig, } from './vm-config.js';
|
|
26
31
|
//# sourceMappingURL=index.d.ts.map
|