@graview/ship 0.1.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/LICENSE +96 -0
- package/README.md +95 -0
- package/dist/browser-adapter.d.ts +84 -0
- package/dist/browser-adapter.d.ts.map +1 -0
- package/dist/browser-adapter.js +111 -0
- package/dist/browser-adapter.js.map +1 -0
- package/dist/browser.d.ts +26 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +16 -0
- package/dist/browser.js.map +1 -0
- package/dist/cli.d.ts +48 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +170 -0
- package/dist/cli.js.map +1 -0
- package/dist/dev.d.ts +148 -0
- package/dist/dev.d.ts.map +1 -0
- package/dist/dev.js +286 -0
- package/dist/dev.js.map +1 -0
- package/dist/door.d.ts +22 -0
- package/dist/door.d.ts.map +1 -0
- package/dist/door.js +43 -0
- package/dist/door.js.map +1 -0
- package/dist/export.d.ts +25 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +30 -0
- package/dist/export.js.map +1 -0
- package/dist/file-adapter.d.ts +28 -0
- package/dist/file-adapter.d.ts.map +1 -0
- package/dist/file-adapter.js +50 -0
- package/dist/file-adapter.js.map +1 -0
- package/dist/health.d.ts +19 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +16 -0
- package/dist/health.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations.d.ts +31 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +59 -0
- package/dist/migrations.js.map +1 -0
- package/dist/open-store.d.ts +57 -0
- package/dist/open-store.d.ts.map +1 -0
- package/dist/open-store.js +103 -0
- package/dist/open-store.js.map +1 -0
- package/dist/photos.d.ts +89 -0
- package/dist/photos.d.ts.map +1 -0
- package/dist/photos.js +102 -0
- package/dist/photos.js.map +1 -0
- package/dist/presence.d.ts +33 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +99 -0
- package/dist/presence.js.map +1 -0
- package/dist/remote.d.ts +73 -0
- package/dist/remote.d.ts.map +1 -0
- package/dist/remote.js +271 -0
- package/dist/remote.js.map +1 -0
- package/dist/serve.d.ts +121 -0
- package/dist/serve.d.ts.map +1 -0
- package/dist/serve.js +249 -0
- package/dist/serve.js.map +1 -0
- package/dist/snapshot.d.ts +20 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +41 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/source-edit.d.ts +52 -0
- package/dist/source-edit.d.ts.map +1 -0
- package/dist/source-edit.js +455 -0
- package/dist/source-edit.js.map +1 -0
- package/dist/steps.d.ts +98 -0
- package/dist/steps.d.ts.map +1 -0
- package/dist/steps.js +189 -0
- package/dist/steps.js.map +1 -0
- package/dist/studio-door.d.ts +36 -0
- package/dist/studio-door.d.ts.map +1 -0
- package/dist/studio-door.js +102 -0
- package/dist/studio-door.js.map +1 -0
- package/dist/sync-seed.d.ts +61 -0
- package/dist/sync-seed.d.ts.map +1 -0
- package/dist/sync-seed.js +95 -0
- package/dist/sync-seed.js.map +1 -0
- package/dist/typecheck.d.ts +15 -0
- package/dist/typecheck.d.ts.map +1 -0
- package/dist/typecheck.js +59 -0
- package/dist/typecheck.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { invert, normalise, writesOf, } from "@graview/core";
|
|
2
|
+
import { primitivesForSteps, sayStep } from "./steps.js";
|
|
3
|
+
const same = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
|
4
|
+
/**
|
|
5
|
+
* The steps that make `live` contain `seed`.
|
|
6
|
+
*
|
|
7
|
+
* Only the fields the seed SETS are compared: a record the live graph has
|
|
8
|
+
* given a field the seed never mentions keeps it. A record whose kind has
|
|
9
|
+
* changed is dropped and put again, because a kind is a record's identity
|
|
10
|
+
* to the schema and no patch can move it.
|
|
11
|
+
*/
|
|
12
|
+
export function seedSteps(seed, live, options = {}) {
|
|
13
|
+
const steps = [];
|
|
14
|
+
const liveNodes = new Map(live.nodes.map((node) => [node.id, node]));
|
|
15
|
+
const seedNodes = new Map(seed.nodes.map((node) => [node.id, node]));
|
|
16
|
+
for (const wanted of seed.nodes) {
|
|
17
|
+
const have = liveNodes.get(wanted.id);
|
|
18
|
+
if (!have) {
|
|
19
|
+
steps.push({ what: "put-node", node: wanted });
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (have.kind !== wanted.kind) {
|
|
23
|
+
steps.push({ what: "drop-node", id: wanted.id }, { what: "put-node", node: wanted });
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const fields = {};
|
|
27
|
+
for (const [key, value] of Object.entries(wanted)) {
|
|
28
|
+
if (key === "id" || key === "kind" || same(have[key], value))
|
|
29
|
+
continue;
|
|
30
|
+
fields[key] = value;
|
|
31
|
+
}
|
|
32
|
+
if (Object.keys(fields).length > 0)
|
|
33
|
+
steps.push({ what: "patch-node", id: wanted.id, fields });
|
|
34
|
+
}
|
|
35
|
+
for (const edge of seed.edges) {
|
|
36
|
+
if (live.edges.some((have) => have.kind === edge.kind && have.from === edge.from && have.to === edge.to))
|
|
37
|
+
continue;
|
|
38
|
+
steps.push({ what: "put-edge", edge });
|
|
39
|
+
}
|
|
40
|
+
if (options.prune) {
|
|
41
|
+
for (const edge of live.edges) {
|
|
42
|
+
if (seed.edges.some((want) => want.kind === edge.kind && want.from === edge.from && want.to === edge.to))
|
|
43
|
+
continue;
|
|
44
|
+
// An edge whose end is going goes with it; saying so twice is harmless and deduped.
|
|
45
|
+
steps.push({ what: "drop-edge", edge });
|
|
46
|
+
}
|
|
47
|
+
for (const node of live.nodes)
|
|
48
|
+
if (!seedNodes.has(node.id))
|
|
49
|
+
steps.push({ what: "drop-node", id: node.id });
|
|
50
|
+
}
|
|
51
|
+
return steps;
|
|
52
|
+
}
|
|
53
|
+
export const SEED_SYNC_AUTHOR = { kind: "system", id: "ship:sync-seed" };
|
|
54
|
+
/**
|
|
55
|
+
* Content steps as ONE OPERATION against a live graph: authored, stating
|
|
56
|
+
* what it did, carrying its inverse — the same shape a migration run
|
|
57
|
+
* appends, so the activity shows it, `undo` takes it back, and a host's
|
|
58
|
+
* adapter persists it like any other change. Null when the steps come to
|
|
59
|
+
* nothing against this graph, which is the honest answer to a second run.
|
|
60
|
+
*/
|
|
61
|
+
export function contentOperation(steps, live, options = {}) {
|
|
62
|
+
const primitives = primitivesForSteps(steps, live).map(normalise);
|
|
63
|
+
if (primitives.length === 0)
|
|
64
|
+
return null;
|
|
65
|
+
const now = options.now ?? (() => new Date().toISOString());
|
|
66
|
+
const at = now();
|
|
67
|
+
const author = options.author ?? SEED_SYNC_AUTHOR;
|
|
68
|
+
return {
|
|
69
|
+
id: options.id ?? `sync:${at}`,
|
|
70
|
+
seq: -1,
|
|
71
|
+
batch: options.batch ?? `sync:${at}`,
|
|
72
|
+
author,
|
|
73
|
+
intent: options.intent ?? `seed sync: ${steps.map(sayStep).join("; ")}`,
|
|
74
|
+
mutation: null,
|
|
75
|
+
primitives,
|
|
76
|
+
inverse: [...primitives].reverse().map(invert),
|
|
77
|
+
reads: [],
|
|
78
|
+
writes: [...new Set(primitives.flatMap(writesOf))],
|
|
79
|
+
at,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Lands content steps on an open store. Through `receive`, so the op keeps
|
|
84
|
+
* its author and intent, the subscribers — persistence among them — hear
|
|
85
|
+
* it exactly as they hear a person's change, and `store.undo(op.batch)` is
|
|
86
|
+
* the way back. Returns what landed, or null when there was nothing to do.
|
|
87
|
+
*/
|
|
88
|
+
export function applySteps(store, steps, options = {}) {
|
|
89
|
+
const op = contentOperation(steps, store.graph.snapshot(), options);
|
|
90
|
+
if (!op)
|
|
91
|
+
return null;
|
|
92
|
+
const [landed] = store.receive([op]);
|
|
93
|
+
return landed ?? null;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=sync-seed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-seed.js","sourceRoot":"","sources":["../src/sync-seed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { StudioDoorDiagnostic } from "@graview/core";
|
|
2
|
+
import type * as TS from "typescript";
|
|
3
|
+
/**
|
|
4
|
+
* WOULD IT COMPILE — asked of the app as it would be, before anything is
|
|
5
|
+
* written. The app's own `tsconfig.json`, its own files, and the edited ones
|
|
6
|
+
* laid over them in memory; the answer is the compiler's own sentences,
|
|
7
|
+
* each at the file and line it is about.
|
|
8
|
+
*
|
|
9
|
+
* A declaration change the checker is happy with can still leave the code
|
|
10
|
+
* around it wrong — an act whose body adds an edge the kind no longer
|
|
11
|
+
* declares, a page that reads a field that is gone — and the only honest
|
|
12
|
+
* judge of that is the compiler the app already builds with.
|
|
13
|
+
*/
|
|
14
|
+
export declare function typecheckWith(ts: typeof TS, root: string, overlay: ReadonlyMap<string, string>, limit?: number): readonly StudioDoorDiagnostic[];
|
|
15
|
+
//# sourceMappingURL=typecheck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typecheck.d.ts","sourceRoot":"","sources":["../src/typecheck.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,OAAO,EAAE,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,KAAK,SAAK,GACT,SAAS,oBAAoB,EAAE,CA6CjC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { resolve } from "node:path";
|
|
2
|
+
/**
|
|
3
|
+
* WOULD IT COMPILE — asked of the app as it would be, before anything is
|
|
4
|
+
* written. The app's own `tsconfig.json`, its own files, and the edited ones
|
|
5
|
+
* laid over them in memory; the answer is the compiler's own sentences,
|
|
6
|
+
* each at the file and line it is about.
|
|
7
|
+
*
|
|
8
|
+
* A declaration change the checker is happy with can still leave the code
|
|
9
|
+
* around it wrong — an act whose body adds an edge the kind no longer
|
|
10
|
+
* declares, a page that reads a field that is gone — and the only honest
|
|
11
|
+
* judge of that is the compiler the app already builds with.
|
|
12
|
+
*/
|
|
13
|
+
export function typecheckWith(ts, root, overlay, limit = 20) {
|
|
14
|
+
const configPath = ts.findConfigFile(root, ts.sys.fileExists, "tsconfig.json");
|
|
15
|
+
if (!configPath)
|
|
16
|
+
return [{ path: "tsconfig.json", line: 0, message: `No tsconfig.json in ${root}, so nothing can say whether this compiles.` }];
|
|
17
|
+
const parsed = ts.getParsedCommandLineOfConfigFile(configPath, { noEmit: true }, {
|
|
18
|
+
...ts.sys,
|
|
19
|
+
onUnRecoverableConfigFileDiagnostic: () => undefined,
|
|
20
|
+
});
|
|
21
|
+
if (!parsed)
|
|
22
|
+
return [{ path: "tsconfig.json", line: 0, message: "The app's tsconfig.json could not be read." }];
|
|
23
|
+
const options = {
|
|
24
|
+
...parsed.options,
|
|
25
|
+
noEmit: true,
|
|
26
|
+
composite: false,
|
|
27
|
+
incremental: false,
|
|
28
|
+
declaration: false,
|
|
29
|
+
declarationMap: false,
|
|
30
|
+
emitDeclarationOnly: false,
|
|
31
|
+
};
|
|
32
|
+
const edited = new Map([...overlay].map(([path, text]) => [resolve(root, path), text]));
|
|
33
|
+
const host = ts.createCompilerHost(options);
|
|
34
|
+
const readFile = host.readFile.bind(host);
|
|
35
|
+
const fileExists = host.fileExists.bind(host);
|
|
36
|
+
const getSourceFile = host.getSourceFile.bind(host);
|
|
37
|
+
host.readFile = (file) => edited.get(resolve(file)) ?? readFile(file);
|
|
38
|
+
host.fileExists = (file) => edited.has(resolve(file)) || fileExists(file);
|
|
39
|
+
host.getSourceFile = (file, language, onError, fresh) => {
|
|
40
|
+
const text = edited.get(resolve(file));
|
|
41
|
+
return text === undefined ? getSourceFile(file, language, onError, fresh) : ts.createSourceFile(file, text, language, true);
|
|
42
|
+
};
|
|
43
|
+
const program = ts.createProgram({
|
|
44
|
+
rootNames: parsed.fileNames,
|
|
45
|
+
options,
|
|
46
|
+
host,
|
|
47
|
+
...(parsed.projectReferences ? { projectReferences: parsed.projectReferences } : {}),
|
|
48
|
+
});
|
|
49
|
+
return ts
|
|
50
|
+
.getPreEmitDiagnostics(program)
|
|
51
|
+
.filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Error)
|
|
52
|
+
.slice(0, limit)
|
|
53
|
+
.map((diagnostic) => ({
|
|
54
|
+
path: diagnostic.file ? diagnostic.file.fileName.replace(`${resolve(root)}/`, "") : "the project",
|
|
55
|
+
line: diagnostic.file && diagnostic.start !== undefined ? diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start).line + 1 : 0,
|
|
56
|
+
message: ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"),
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=typecheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typecheck.js","sourceRoot":"","sources":["../src/typecheck.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@graview/ship",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"./browser": {
|
|
13
|
+
"types": "./dist/browser.d.ts",
|
|
14
|
+
"default": "./dist/browser.js"
|
|
15
|
+
},
|
|
16
|
+
"./dev": {
|
|
17
|
+
"types": "./dist/dev.d.ts",
|
|
18
|
+
"default": "./dist/dev.js"
|
|
19
|
+
},
|
|
20
|
+
"./cli": {
|
|
21
|
+
"types": "./dist/cli.d.ts",
|
|
22
|
+
"default": "./dist/cli.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@graview/core": "0.1.0"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"zod": "^4.4.3"
|
|
30
|
+
},
|
|
31
|
+
"description": "What every deployment needs, hosted or self-hosted: persistence wiring, op-log-native migrations, export, health.",
|
|
32
|
+
"keywords": [
|
|
33
|
+
"graview",
|
|
34
|
+
"context-graph",
|
|
35
|
+
"typed-graph",
|
|
36
|
+
"interface",
|
|
37
|
+
"declarative",
|
|
38
|
+
"persistence",
|
|
39
|
+
"migrations",
|
|
40
|
+
"sqlite",
|
|
41
|
+
"server"
|
|
42
|
+
],
|
|
43
|
+
"files": [
|
|
44
|
+
"dist",
|
|
45
|
+
"README.md"
|
|
46
|
+
],
|
|
47
|
+
"sideEffects": false,
|
|
48
|
+
"repository": {
|
|
49
|
+
"type": "git",
|
|
50
|
+
"url": "git+https://github.com/en-dash-consulting/graview.git",
|
|
51
|
+
"directory": "packages/ship"
|
|
52
|
+
},
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"access": "public"
|
|
55
|
+
},
|
|
56
|
+
"peerDependencies": {
|
|
57
|
+
"typescript": ">=5"
|
|
58
|
+
},
|
|
59
|
+
"peerDependenciesMeta": {
|
|
60
|
+
"typescript": {
|
|
61
|
+
"optional": true
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"license": "Elastic-2.0",
|
|
65
|
+
"homepage": "https://graview.dev/docs/packages/ship.html",
|
|
66
|
+
"bugs": {
|
|
67
|
+
"url": "https://github.com/en-dash-consulting/graview/issues"
|
|
68
|
+
},
|
|
69
|
+
"engines": {
|
|
70
|
+
"node": ">=22"
|
|
71
|
+
},
|
|
72
|
+
"scripts": {
|
|
73
|
+
"build": "tsc -b"
|
|
74
|
+
}
|
|
75
|
+
}
|