Files
tutti/tools/scripts/package-pack-peer-contracts.test.mjs
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

122 lines
3.9 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import {
externalBundledTiptapImports,
packagePeerContractViolations
} from "./package-pack-peer-contracts.mjs";
test("accepts matching Tiptap peer and development dependencies", () => {
assert.deepEqual(
packagePeerContractViolations("@tutti-os/ui-rich-text", {
devDependencies: {
"@tiptap/core": "^3.23.6",
"@tiptap/extension-document": "^3.23.6",
"@tiptap/extension-hard-break": "^3.23.6",
"@tiptap/extension-paragraph": "^3.23.6",
"@tiptap/extension-text": "^3.23.6"
},
peerDependencies: { "@tiptap/core": "^3.23.6" }
}),
["@tiptap/react is missing from peerDependencies"]
);
assert.deepEqual(
packagePeerContractViolations("@tutti-os/ui-rich-text", {
devDependencies: {
"@tiptap/core": "^3.23.6",
"@tiptap/extension-document": "^3.23.6",
"@tiptap/extension-hard-break": "^3.23.6",
"@tiptap/extension-paragraph": "^3.23.6",
"@tiptap/extension-text": "^3.23.6",
"@tiptap/react": "^3.23.6"
},
peerDependencies: {
"@tiptap/core": "^3.23.6",
"@tiptap/react": "^3.23.6"
}
}),
[]
);
});
test("rejects package-private or mismatched Tiptap dependencies", () => {
assert.deepEqual(
packagePeerContractViolations("@tutti-os/ui-rich-text", {
devDependencies: {
"@tiptap/core": "^3.23.6",
"@tiptap/extension-document": "^3.23.6",
"@tiptap/extension-hard-break": "^3.23.6",
"@tiptap/extension-paragraph": "^3.23.6",
"@tiptap/extension-text": "^3.23.6",
"@tiptap/react": "^3.23.6"
},
peerDependencies: { "@tiptap/react": "^3.23.6" }
}),
["@tiptap/core is missing from peerDependencies"]
);
assert.deepEqual(
packagePeerContractViolations("@tutti-os/ui-rich-text", {
dependencies: { "@tiptap/extension-document": "^3.23.6" },
devDependencies: {
"@tiptap/core": "^3.23.6",
"@tiptap/extension-hard-break": "^3.23.6",
"@tiptap/extension-paragraph": "^3.23.6",
"@tiptap/extension-text": "^3.23.6",
"@tiptap/react": "^3.23.6"
},
peerDependencies: {
"@tiptap/core": "^3.23.6",
"@tiptap/react": "^3.23.6"
}
}),
[
"@tiptap/extension-document must be bundled from devDependencies",
"@tiptap/extension-document is missing from devDependencies"
]
);
assert.deepEqual(
packagePeerContractViolations("@tutti-os/agent-gui", {
dependencies: { "@tiptap/core": "^3.11.1" },
devDependencies: { "@tiptap/core": "^3.23.6" }
}),
[
"@tiptap/core must be a peer dependency",
"@tiptap/core is missing from peerDependencies",
"@tiptap/pm is missing from peerDependencies",
"@tiptap/react is missing from peerDependencies",
"@tiptap/starter-kit is missing from peerDependencies",
"@tiptap/suggestion is missing from peerDependencies"
]
);
assert.deepEqual(
packagePeerContractViolations("@tutti-os/agent-gui", {
devDependencies: { "@tiptap/core": "^3.11.1" },
peerDependencies: { "@tiptap/core": "^3.23.6" }
}),
[
"@tiptap/core must use the same peer and dev range",
"@tiptap/pm is missing from peerDependencies",
"@tiptap/react is missing from peerDependencies",
"@tiptap/starter-kit is missing from peerDependencies",
"@tiptap/suggestion is missing from peerDependencies"
]
);
});
test("finds component-internal Tiptap extensions left external", () => {
assert.deepEqual(
externalBundledTiptapImports(
"@tutti-os/ui-rich-text",
'import Document from "@tiptap/extension-document";'
),
["@tiptap/extension-document"]
);
assert.deepEqual(
externalBundledTiptapImports(
"@tutti-os/ui-rich-text",
'import { Extension } from "@tiptap/core";'
),
[]
);
});