@refinex-md/model 0.1.0-canary.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 +21 -0
- package/README.md +28 -0
- package/dist/index.d.ts +162 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1046 -0
- package/dist/index.js.map +1 -0
- package/dist/rich-blocks.d.ts +20 -0
- package/dist/rich-blocks.d.ts.map +1 -0
- package/package.json +50 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Refinex-Space
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# @refinex-md/model
|
|
2
|
+
|
|
3
|
+
文档模型与 schema 包,提供 `RefinexDoc`、ProseMirror schema、blockId、schema extension 和文档校验。
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add @refinex-md/model
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 最短示例
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { createRefinexDoc, validateDoc } from '@refinex-md/model'
|
|
15
|
+
|
|
16
|
+
const doc = createRefinexDoc({
|
|
17
|
+
type: 'doc',
|
|
18
|
+
content: [{ type: 'paragraph', content: [{ type: 'text', text: 'Hello Refinex' }] }],
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
const result = validateDoc(doc, { mode: 'strict' })
|
|
22
|
+
if (!result.ok) console.error(result.issues)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 文档
|
|
26
|
+
|
|
27
|
+
- [文档模型](../../docs/concepts/document-model.md)
|
|
28
|
+
- [API 参考](../../docs/api/README.md#refinex-mdmodel)
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { Node as ProseMirrorNode, Schema, MarkSpec, NodeSpec, NodeType } from 'prosemirror-model';
|
|
2
|
+
import { Plugin } from 'prosemirror-state';
|
|
3
|
+
export declare const REFINEX_DOC_VERSION = "1.0.0";
|
|
4
|
+
export declare const REFINEX_SCHEMA_ID = "@refinex-md/base";
|
|
5
|
+
export declare const REFINEX_SCHEMA_VERSION = "1.0.0";
|
|
6
|
+
export type BlockIdMode = 'required' | 'forbidden' | 'optional';
|
|
7
|
+
export type RefinexCapabilityToken = 'doc:read' | 'doc:write' | 'network:none' | string;
|
|
8
|
+
export type RefinexSchemaPlacement = 'append' | 'prepend';
|
|
9
|
+
export type RefinexNodeFallback = 'unwrap' | 'paragraph' | 'code_block' | 'drop';
|
|
10
|
+
export type RefinexMarkFallback = 'drop' | 'code' | 'link';
|
|
11
|
+
export interface RefinexMarkdownDeclaration {
|
|
12
|
+
readonly format: string;
|
|
13
|
+
}
|
|
14
|
+
export interface RefinexMigrationDeclaration {
|
|
15
|
+
readonly from: string;
|
|
16
|
+
readonly to: string;
|
|
17
|
+
}
|
|
18
|
+
type RefinexNodeSpec = NodeSpec & {
|
|
19
|
+
refinexBlockId?: BlockIdMode;
|
|
20
|
+
};
|
|
21
|
+
export interface RefinexNodeExtension {
|
|
22
|
+
readonly kind: 'node';
|
|
23
|
+
readonly name: string;
|
|
24
|
+
readonly version: string;
|
|
25
|
+
readonly spec: RefinexNodeSpec;
|
|
26
|
+
readonly placement?: RefinexSchemaPlacement;
|
|
27
|
+
readonly blockId?: BlockIdMode;
|
|
28
|
+
readonly capabilities: RefinexCapabilityToken[];
|
|
29
|
+
readonly fallback: RefinexNodeFallback;
|
|
30
|
+
readonly markdown?: RefinexMarkdownDeclaration;
|
|
31
|
+
readonly migration?: RefinexMigrationDeclaration;
|
|
32
|
+
}
|
|
33
|
+
export interface RefinexMarkExtension {
|
|
34
|
+
readonly kind: 'mark';
|
|
35
|
+
readonly name: string;
|
|
36
|
+
readonly version: string;
|
|
37
|
+
readonly spec: MarkSpec;
|
|
38
|
+
readonly placement?: RefinexSchemaPlacement;
|
|
39
|
+
readonly capabilities: RefinexCapabilityToken[];
|
|
40
|
+
readonly fallback: RefinexMarkFallback;
|
|
41
|
+
readonly markdown?: RefinexMarkdownDeclaration;
|
|
42
|
+
readonly migration?: RefinexMigrationDeclaration;
|
|
43
|
+
}
|
|
44
|
+
export type RefinexSchemaExtension = RefinexNodeExtension | RefinexMarkExtension;
|
|
45
|
+
export interface CreateRefinexSchemaOptions {
|
|
46
|
+
readonly extensions?: readonly RefinexSchemaExtension[];
|
|
47
|
+
}
|
|
48
|
+
export interface RegisterNodeSpecOptions {
|
|
49
|
+
readonly version?: string;
|
|
50
|
+
readonly placement?: RefinexSchemaPlacement;
|
|
51
|
+
readonly blockId?: BlockIdMode;
|
|
52
|
+
readonly capabilities?: readonly RefinexCapabilityToken[];
|
|
53
|
+
readonly fallback?: RefinexNodeFallback;
|
|
54
|
+
readonly markdown?: RefinexMarkdownDeclaration;
|
|
55
|
+
readonly migration?: RefinexMigrationDeclaration;
|
|
56
|
+
}
|
|
57
|
+
export interface RegisterMarkSpecOptions {
|
|
58
|
+
readonly version?: string;
|
|
59
|
+
readonly placement?: RefinexSchemaPlacement;
|
|
60
|
+
readonly capabilities?: readonly RefinexCapabilityToken[];
|
|
61
|
+
readonly fallback?: RefinexMarkFallback;
|
|
62
|
+
readonly markdown?: RefinexMarkdownDeclaration;
|
|
63
|
+
readonly migration?: RefinexMigrationDeclaration;
|
|
64
|
+
}
|
|
65
|
+
export interface ProseMirrorMarkJSON {
|
|
66
|
+
readonly type: string;
|
|
67
|
+
readonly attrs?: Record<string, unknown>;
|
|
68
|
+
}
|
|
69
|
+
export interface ProseMirrorNodeJSON {
|
|
70
|
+
readonly type: string;
|
|
71
|
+
readonly attrs?: Record<string, unknown>;
|
|
72
|
+
readonly content?: ProseMirrorNodeJSON[];
|
|
73
|
+
readonly text?: string;
|
|
74
|
+
readonly marks?: ProseMirrorMarkJSON[];
|
|
75
|
+
}
|
|
76
|
+
export type ProseMirrorDocJSON = ProseMirrorNodeJSON & {
|
|
77
|
+
readonly type: 'doc';
|
|
78
|
+
};
|
|
79
|
+
export interface RefinexExtensionRef {
|
|
80
|
+
readonly name: string;
|
|
81
|
+
readonly version: string;
|
|
82
|
+
}
|
|
83
|
+
export interface RefinexSchemaRef {
|
|
84
|
+
readonly id: typeof REFINEX_SCHEMA_ID;
|
|
85
|
+
readonly version: string;
|
|
86
|
+
readonly extensions: RefinexExtensionRef[];
|
|
87
|
+
}
|
|
88
|
+
export interface RefinexBlockPermission {
|
|
89
|
+
readonly access: 'read-write' | 'read-only' | 'comment-only' | 'locked';
|
|
90
|
+
readonly reason?: string;
|
|
91
|
+
}
|
|
92
|
+
export interface RefinexDocMetadata {
|
|
93
|
+
readonly docId?: string;
|
|
94
|
+
readonly title?: string;
|
|
95
|
+
readonly createdAt?: string;
|
|
96
|
+
readonly updatedAt?: string;
|
|
97
|
+
readonly createdBy?: string;
|
|
98
|
+
readonly updatedBy?: string;
|
|
99
|
+
readonly source?: 'api' | 'markdown-import' | 'html-import' | 'collab' | 'unknown';
|
|
100
|
+
readonly custom?: Record<string, unknown>;
|
|
101
|
+
}
|
|
102
|
+
export interface RefinexDocPermissions {
|
|
103
|
+
readonly policyVersion: '1.0';
|
|
104
|
+
readonly defaultAccess: 'read-write' | 'read-only' | 'comment-only' | 'locked';
|
|
105
|
+
readonly blockOverrides?: Record<string, RefinexBlockPermission>;
|
|
106
|
+
readonly custom?: Record<string, unknown>;
|
|
107
|
+
}
|
|
108
|
+
export interface RefinexDoc {
|
|
109
|
+
readonly refinexDocVersion: string;
|
|
110
|
+
readonly schema: RefinexSchemaRef;
|
|
111
|
+
readonly metadata: RefinexDocMetadata;
|
|
112
|
+
readonly permissions: RefinexDocPermissions;
|
|
113
|
+
readonly content: ProseMirrorDocJSON;
|
|
114
|
+
}
|
|
115
|
+
export type RefinexIssueCode = 'DOC_VERSION_UNSUPPORTED' | 'SCHEMA_VERSION_UNSUPPORTED' | 'EXTENSION_MISSING' | 'NODE_UNKNOWN' | 'MARK_UNKNOWN' | 'CONTENT_INVALID' | 'ATTR_INVALID' | 'BLOCK_ID_MISSING' | 'BLOCK_ID_INVALID' | 'BLOCK_ID_DUPLICATE' | 'BLOCK_ID_FORBIDDEN' | 'FALLBACK_APPLIED';
|
|
116
|
+
export type RefinexIssueSeverity = 'error' | 'warn' | 'info';
|
|
117
|
+
export interface RefinexDocIssue {
|
|
118
|
+
readonly code: RefinexIssueCode;
|
|
119
|
+
readonly severity: RefinexIssueSeverity;
|
|
120
|
+
readonly path: string;
|
|
121
|
+
readonly message: string;
|
|
122
|
+
}
|
|
123
|
+
export interface NormalizeDocIdsOptions {
|
|
124
|
+
readonly createId?: () => string;
|
|
125
|
+
}
|
|
126
|
+
export interface NormalizeDocIdsResult {
|
|
127
|
+
readonly doc: ProseMirrorNode;
|
|
128
|
+
readonly changed: boolean;
|
|
129
|
+
readonly issues: RefinexDocIssue[];
|
|
130
|
+
}
|
|
131
|
+
export interface CreateRefinexDocOptions {
|
|
132
|
+
readonly schema?: Partial<RefinexSchemaRef>;
|
|
133
|
+
readonly metadata?: RefinexDocMetadata;
|
|
134
|
+
readonly permissions?: Partial<RefinexDocPermissions>;
|
|
135
|
+
}
|
|
136
|
+
export interface ValidateDocOptions extends NormalizeDocIdsOptions {
|
|
137
|
+
readonly mode: 'strict' | 'repair';
|
|
138
|
+
readonly extensions?: readonly RefinexSchemaExtension[];
|
|
139
|
+
readonly allowUnknownExtensions?: boolean;
|
|
140
|
+
readonly preserveTrustedBlockIds?: boolean;
|
|
141
|
+
}
|
|
142
|
+
export interface ValidateDocResult {
|
|
143
|
+
readonly ok: boolean;
|
|
144
|
+
readonly doc?: RefinexDoc;
|
|
145
|
+
readonly normalized?: RefinexDoc;
|
|
146
|
+
readonly issues: RefinexDocIssue[];
|
|
147
|
+
}
|
|
148
|
+
export declare const baseNodes: Record<string, RefinexNodeSpec>;
|
|
149
|
+
export declare const baseMarks: Record<string, MarkSpec>;
|
|
150
|
+
export declare function registerNodeSpec(name: string, spec: NodeSpec, options?: RegisterNodeSpecOptions): RefinexNodeExtension;
|
|
151
|
+
export declare function registerMarkSpec(name: string, spec: MarkSpec, options?: RegisterMarkSpecOptions): RefinexMarkExtension;
|
|
152
|
+
export declare function createRefinexSchema(options?: CreateRefinexSchemaOptions): Schema;
|
|
153
|
+
export declare const defaultSchema: Schema<any, any>;
|
|
154
|
+
export declare const schema: Schema<any, any>;
|
|
155
|
+
export declare function createBlockId(): string;
|
|
156
|
+
export declare function isBlockIdNode(node: NodeType | ProseMirrorNodeJSON): boolean;
|
|
157
|
+
export declare function normalizeDocIds(doc: ProseMirrorNode, _schema: Schema, options?: NormalizeDocIdsOptions): NormalizeDocIdsResult;
|
|
158
|
+
export declare function createBlockIdPlugin(options?: NormalizeDocIdsOptions): Plugin;
|
|
159
|
+
export declare function createRefinexDoc(content: ProseMirrorNode | ProseMirrorDocJSON, options?: CreateRefinexDocOptions): RefinexDoc;
|
|
160
|
+
export declare function validateDoc(input: unknown, options: ValidateDocOptions): ValidateDocResult;
|
|
161
|
+
export * from './rich-blocks';
|
|
162
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|