mapples 0.2.0-beta.0 → 0.2.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -22
- package/dist/adopt/scan.d.ts +8 -2
- package/dist/adopt/scan.js +31 -13
- package/dist/adopt/scan.js.map +1 -1
- package/dist/api/auth.d.ts +2 -0
- package/dist/api/auth.js +28 -6
- package/dist/api/auth.js.map +1 -1
- package/dist/api/client.d.ts +10 -1
- package/dist/api/client.js +24 -4
- package/dist/api/client.js.map +1 -1
- package/dist/api/commit.d.ts +9 -0
- package/dist/api/commit.js +35 -0
- package/dist/api/commit.js.map +1 -1
- package/dist/api/errors.js +8 -0
- package/dist/api/errors.js.map +1 -1
- package/dist/api/objects.d.ts +22 -5
- package/dist/api/objects.js +151 -10
- package/dist/api/objects.js.map +1 -1
- package/dist/api/poll.d.ts +5 -3
- package/dist/api/poll.js +17 -6
- package/dist/api/poll.js.map +1 -1
- package/dist/assets/assets.d.ts +9 -0
- package/dist/assets/assets.js +33 -4
- package/dist/assets/assets.js.map +1 -1
- package/dist/codegen/emit.d.ts +27 -1
- package/dist/codegen/emit.js +130 -9
- package/dist/codegen/emit.js.map +1 -1
- package/dist/codegen/imports.d.ts +2 -0
- package/dist/codegen/imports.js +38 -0
- package/dist/codegen/imports.js.map +1 -1
- package/dist/codegen/instances.d.ts +16 -0
- package/dist/codegen/instances.js +141 -0
- package/dist/codegen/instances.js.map +1 -0
- package/dist/codegen/styles.d.ts +11 -0
- package/dist/codegen/styles.js +131 -0
- package/dist/codegen/styles.js.map +1 -0
- package/dist/commands/impl/createImpl.js +8 -4
- package/dist/commands/impl/createImpl.js.map +1 -1
- package/dist/commands/impl/initImpl.js +5 -4
- package/dist/commands/impl/initImpl.js.map +1 -1
- package/dist/commands/impl/syncImpl.js +20 -2
- package/dist/commands/impl/syncImpl.js.map +1 -1
- package/dist/merge/applyOps.d.ts +1 -1
- package/dist/merge/applyOps.js +33 -2
- package/dist/merge/applyOps.js.map +1 -1
- package/dist/merge/diff.d.ts +1 -1
- package/dist/merge/diff.js +30 -17
- package/dist/merge/diff.js.map +1 -1
- package/dist/merge/threeWay.d.ts +1 -1
- package/dist/merge/threeWay.js +38 -6
- package/dist/merge/threeWay.js.map +1 -1
- package/dist/merge/toEdits.d.ts +1 -1
- package/dist/merge/toEdits.js +4 -1
- package/dist/merge/toEdits.js.map +1 -1
- package/dist/nav/navigatorTree.d.ts +78 -0
- package/dist/nav/navigatorTree.js +410 -0
- package/dist/nav/navigatorTree.js.map +1 -0
- package/dist/nav/placement.d.ts +53 -0
- package/dist/nav/placement.js +260 -0
- package/dist/nav/placement.js.map +1 -0
- package/dist/nav/routeTree.d.ts +8 -2
- package/dist/nav/routeTree.js +79 -151
- package/dist/nav/routeTree.js.map +1 -1
- package/dist/nav/screenOptions.d.ts +15 -0
- package/dist/nav/screenOptions.js +213 -0
- package/dist/nav/screenOptions.js.map +1 -0
- package/dist/project/baseStore.d.ts +8 -0
- package/dist/project/baseStore.js +15 -0
- package/dist/project/baseStore.js.map +1 -1
- package/dist/project/componentsMap.d.ts +7 -0
- package/dist/project/componentsMap.js +21 -0
- package/dist/project/componentsMap.js.map +1 -0
- package/dist/project/config.d.ts +12 -3
- package/dist/project/config.js +11 -2
- package/dist/project/config.js.map +1 -1
- package/dist/project/env.d.ts +10 -3
- package/dist/project/env.js +23 -5
- package/dist/project/env.js.map +1 -1
- package/dist/project/pagesMap.d.ts +2 -0
- package/dist/project/pagesMap.js.map +1 -1
- package/dist/services/adoptService.d.ts +3 -0
- package/dist/services/adoptService.js +346 -38
- package/dist/services/adoptService.js.map +1 -1
- package/dist/services/clientFactory.js +4 -2
- package/dist/services/clientFactory.js.map +1 -1
- package/dist/services/doctorService.js +77 -66
- package/dist/services/doctorService.js.map +1 -1
- package/dist/services/syncEngine.d.ts +7 -0
- package/dist/services/syncEngine.js +428 -292
- package/dist/services/syncEngine.js.map +1 -1
- package/dist/types.d.ts +21 -1
- package/dist/types.js +22 -0
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/templates/app/_layout.tsx +3 -0
- package/templates/mapples/sid.d.ts +6 -0
|
@@ -5,6 +5,7 @@ import { join } from 'node:path';
|
|
|
5
5
|
import { extract } from '@mapples/sid-ast';
|
|
6
6
|
import { BaseStore } from '../project/baseStore.js';
|
|
7
7
|
import { readHead } from '../project/head.js';
|
|
8
|
+
import { readComponentsMap } from '../project/componentsMap.js';
|
|
8
9
|
import { readPagesMap } from '../project/pagesMap.js';
|
|
9
10
|
import { deepEqual } from '../merge/mergePatch.js';
|
|
10
11
|
function collectSids(root) {
|
|
@@ -25,89 +26,99 @@ export function runDoctorChecks(root) {
|
|
|
25
26
|
return { issues, checkedFiles: 0 };
|
|
26
27
|
}
|
|
27
28
|
const base = new BaseStore(root).readAll();
|
|
28
|
-
const pagesMap = readPagesMap(root);
|
|
29
29
|
let checkedFiles = 0;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
30
|
+
const kinds = [
|
|
31
|
+
{ label: 'page', manifest: 'pages.json', map: readPagesMap(root), base: base.pages },
|
|
32
|
+
{
|
|
33
|
+
label: 'component',
|
|
34
|
+
manifest: 'components.json',
|
|
35
|
+
map: readComponentsMap(root),
|
|
36
|
+
base: base.components,
|
|
37
|
+
},
|
|
38
|
+
];
|
|
40
39
|
const seenSids = new Map(); // sid -> file (cross-file duplicates)
|
|
41
|
-
for (const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
const filePath = join(root, mapping.file);
|
|
52
|
-
if (!existsSync(filePath)) {
|
|
53
|
-
issues.push({
|
|
54
|
-
kind: 'missing-file',
|
|
55
|
-
file: mapping.file,
|
|
56
|
-
detail: `mapped file is missing — the next sync will regenerate it`,
|
|
57
|
-
});
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
checkedFiles += 1;
|
|
61
|
-
const source = readFileSync(filePath, 'utf8');
|
|
62
|
-
const extracted = extract(source);
|
|
63
|
-
for (const w of extracted.warnings) {
|
|
64
|
-
if (w.kind === 'DUPLICATE_SID') {
|
|
65
|
-
issues.push({ kind: 'duplicate-sid', file: mapping.file, sid: w.sid, detail: w.detail });
|
|
40
|
+
for (const kind of kinds) {
|
|
41
|
+
// Orphaned base entries: base entities with no mapping.
|
|
42
|
+
for (const id of kind.base.keys()) {
|
|
43
|
+
if (!kind.map[id]) {
|
|
44
|
+
issues.push({
|
|
45
|
+
kind: 'orphaned-base',
|
|
46
|
+
sid: id,
|
|
47
|
+
detail: `base has ${kind.label} ${id} but .mapples/${kind.manifest} does not map it to a file`,
|
|
48
|
+
});
|
|
66
49
|
}
|
|
67
50
|
}
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const otherFile = seenSids.get(sid);
|
|
72
|
-
if (otherFile) {
|
|
51
|
+
for (const [id, mapping] of Object.entries(kind.map)) {
|
|
52
|
+
const baseEntity = kind.base.get(id);
|
|
53
|
+
if (!baseEntity) {
|
|
73
54
|
issues.push({
|
|
74
|
-
kind: '
|
|
55
|
+
kind: 'orphaned-base',
|
|
75
56
|
file: mapping.file,
|
|
76
|
-
|
|
77
|
-
detail: `sid also appears in ${otherFile}`,
|
|
57
|
+
detail: `${kind.manifest} maps ${id} -> ${mapping.file} but base has no such ${kind.label}`,
|
|
78
58
|
});
|
|
59
|
+
continue;
|
|
79
60
|
}
|
|
80
|
-
|
|
81
|
-
if (!
|
|
61
|
+
const filePath = join(root, mapping.file);
|
|
62
|
+
if (!existsSync(filePath)) {
|
|
82
63
|
issues.push({
|
|
83
|
-
kind: '
|
|
64
|
+
kind: 'missing-file',
|
|
84
65
|
file: mapping.file,
|
|
85
|
-
|
|
86
|
-
detail: `sid is not in the base snapshot at HEAD ${head.head} — was it hand-edited or copied?`,
|
|
66
|
+
detail: `mapped file is missing — the next sync will regenerate it`,
|
|
87
67
|
});
|
|
68
|
+
continue;
|
|
88
69
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
70
|
+
checkedFiles += 1;
|
|
71
|
+
const source = readFileSync(filePath, 'utf8');
|
|
72
|
+
const extracted = extract(source);
|
|
73
|
+
for (const w of extracted.warnings) {
|
|
74
|
+
if (w.kind === 'DUPLICATE_SID') {
|
|
75
|
+
issues.push({ kind: 'duplicate-sid', file: mapping.file, sid: w.sid, detail: w.detail });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const baseSids = collectSids(baseEntity.root);
|
|
79
|
+
const fileSids = collectSids(extracted.dom);
|
|
80
|
+
for (const sid of fileSids) {
|
|
81
|
+
const otherFile = seenSids.get(sid);
|
|
82
|
+
if (otherFile) {
|
|
83
|
+
issues.push({
|
|
84
|
+
kind: 'duplicate-sid',
|
|
85
|
+
file: mapping.file,
|
|
86
|
+
sid,
|
|
87
|
+
detail: `sid also appears in ${otherFile}`,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
seenSids.set(sid, mapping.file);
|
|
91
|
+
if (!sid.startsWith('c_') && !baseSids.has(sid)) {
|
|
92
|
+
issues.push({
|
|
93
|
+
kind: 'unknown-sid',
|
|
94
|
+
file: mapping.file,
|
|
95
|
+
sid,
|
|
96
|
+
detail: `sid is not in the base snapshot at HEAD ${head.head} — was it hand-edited or copied?`,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
for (const sid of baseSids) {
|
|
101
|
+
if (!fileSids.has(sid)) {
|
|
102
|
+
issues.push({
|
|
103
|
+
kind: 'missing-sid',
|
|
104
|
+
file: mapping.file,
|
|
105
|
+
sid,
|
|
106
|
+
detail: 'node exists in base but its $sid is gone from the file (deleted locally?)',
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Drift: re-extract vs base at HEAD (pending local edits — informational).
|
|
111
|
+
if (extracted.dom &&
|
|
112
|
+
fileSids.size === baseSids.size &&
|
|
113
|
+
[...fileSids].every((s) => baseSids.has(s)) &&
|
|
114
|
+
!deepEqual(stripNonLiteralHoles(extracted.dom, baseEntity.root), baseEntity.root)) {
|
|
92
115
|
issues.push({
|
|
93
|
-
kind: '
|
|
116
|
+
kind: 'drift',
|
|
94
117
|
file: mapping.file,
|
|
95
|
-
|
|
96
|
-
detail: 'node exists in base but its $sid is gone from the file (deleted locally?)',
|
|
118
|
+
detail: 'file drifted from base at HEAD — local edits pending; run `mapples sync` to push them',
|
|
97
119
|
});
|
|
98
120
|
}
|
|
99
121
|
}
|
|
100
|
-
// Drift: re-extract vs base at HEAD (pending local edits — informational).
|
|
101
|
-
if (extracted.dom &&
|
|
102
|
-
fileSids.size === baseSids.size &&
|
|
103
|
-
[...fileSids].every((s) => baseSids.has(s)) &&
|
|
104
|
-
!deepEqual(stripNonLiteralHoles(extracted.dom, basePage.root), basePage.root)) {
|
|
105
|
-
issues.push({
|
|
106
|
-
kind: 'drift',
|
|
107
|
-
file: mapping.file,
|
|
108
|
-
detail: 'file drifted from base at HEAD — local edits pending; run `mapples sync` to push them',
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
122
|
}
|
|
112
123
|
return { issues, checkedFiles };
|
|
113
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctorService.js","sourceRoot":"","sources":["../../src/services/doctorService.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,oEAAoE;AAEpE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAmBnD,SAAS,WAAW,CAAC,IAA0B;IAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,CAAC,CAAgB,EAAQ,EAAE;QACtC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,6CAA6C,EAAE,CAAC,CAAC;QACxF,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"doctorService.js","sourceRoot":"","sources":["../../src/services/doctorService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { JpatchClient } from '../api/client.js';
|
|
2
2
|
import { type SyncReport } from '../ui/report.js';
|
|
3
|
+
import type { RenderDomNode } from '../types.js';
|
|
3
4
|
export interface SyncEngineInput {
|
|
4
5
|
root: string;
|
|
5
6
|
client: JpatchClient;
|
|
6
7
|
}
|
|
7
8
|
export declare function runSyncEngine({ root, client }: SyncEngineInput): Promise<SyncReport>;
|
|
9
|
+
/**
|
|
10
|
+
* Replace every sid the server would reject with a freshly minted `c_` id,
|
|
11
|
+
* in place. Returns old -> new so the caller can rewrite the file the same
|
|
12
|
+
* way `rewriteIds` does after a push.
|
|
13
|
+
*/
|
|
14
|
+
export declare function normalizeClientIds(root: RenderDomNode): Map<string, string>;
|
|
8
15
|
export declare function verifyNoLocalDrift(root: string): {
|
|
9
16
|
file: string;
|
|
10
17
|
drifted: boolean;
|