@open-commune/editor 0.1.2 → 0.1.4

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 ADDED
@@ -0,0 +1,32 @@
1
+ # @open-commune/editor
2
+
3
+ The rich-text editor of [Open Commune](https://github.com/open-commune/open-commune): document schema, TipTap extensions, and the sanitisation that guards them.
4
+
5
+ Split out from the application so that the same document schema is shared by the editor writing the content and the server storing it — a document accepted by one is valid for the other.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install @open-commune/editor
11
+ ```
12
+
13
+ ## Use
14
+
15
+ ```ts
16
+ import { Callout, Details, Embed, FileNode, ImageNode, Uid, sanitizeDoc } from '@open-commune/editor';
17
+
18
+ // client — add the shared nodes to a TipTap editor
19
+ const editor = new Editor({
20
+ extensions: [StarterKit, Uid, Callout, ImageNode, FileNode, Embed, Details],
21
+ content: doc,
22
+ });
23
+
24
+ // server — never trust a document that came over the wire
25
+ const safe = sanitizeDoc(incoming);
26
+ ```
27
+
28
+ `sanitizeDoc` returns a document conforming to the schema, dropping anything the schema does not allow. It is what stands between stored content and injected markup, so run it on every write path.
29
+
30
+ ## Licence
31
+
32
+ AGPL-3.0-or-later.
package/dist/index.d.mts CHANGED
@@ -1,12 +1,12 @@
1
+ import * as _tiptap_extension_details from '@tiptap/extension-details';
2
+ import * as _tiptap_core from '@tiptap/core';
3
+ import { Node } from '@tiptap/core';
1
4
  import * as _tiptap_extension_typography from '@tiptap/extension-typography';
2
5
  import * as _tiptap_extension_highlight from '@tiptap/extension-highlight';
3
6
  import * as _tiptap_extension_text_style from '@tiptap/extension-text-style';
4
7
  import * as _tiptap_extension_text_align from '@tiptap/extension-text-align';
5
8
  import * as _tiptap_extension_file_handler from '@tiptap/extension-file-handler';
6
9
  import * as _tiptap_extension_unique_id from '@tiptap/extension-unique-id';
7
- import * as _tiptap_extension_details from '@tiptap/extension-details';
8
- import * as _tiptap_core from '@tiptap/core';
9
- import { Node } from '@tiptap/core';
10
10
  import * as _tiptap_extension_list from '@tiptap/extension-list';
11
11
  import * as _tiptap_extension_link from '@tiptap/extension-link';
12
12
 
@@ -80,7 +80,7 @@ interface CommunEditorMedia {
80
80
  * The parity extension set. UEditor must ALSO receive `:image="false"` and
81
81
  * `:mention="false"`: its defaults collide with our node names.
82
82
  */
83
- declare function communSchemaExtensions(media?: Partial<CommunEditorMedia>): (_tiptap_core.Node<UploadPlaceholderOptions, any> | _tiptap_core.Node<_tiptap_extension_details.DetailsOptions, any> | _tiptap_core.Node<_tiptap_extension_details.DetailsSummaryOptions, any> | _tiptap_core.Node<any, any> | _tiptap_core.Mark<_tiptap_extension_link.LinkOptions, any> | _tiptap_core.Node<_tiptap_extension_list.OrderedListOptions, any> | _tiptap_core.Extension<_tiptap_extension_unique_id.UniqueIDOptions, any> | _tiptap_core.Extension<Omit<_tiptap_extension_file_handler.FileHandlePluginOptions, "key" | "editor">, any> | _tiptap_core.Extension<_tiptap_extension_text_align.TextAlignOptions, any> | _tiptap_core.Mark<_tiptap_extension_text_style.TextStyleOptions, any> | _tiptap_core.Mark<_tiptap_extension_highlight.HighlightOptions, any> | _tiptap_core.Extension<_tiptap_extension_typography.TypographyOptions, any> | _tiptap_core.Node<FileNodeOptions, any>)[];
83
+ declare function communSchemaExtensions(media?: Partial<CommunEditorMedia>): (_tiptap_core.Mark<_tiptap_extension_link.LinkOptions, any> | _tiptap_core.Node<_tiptap_extension_list.OrderedListOptions, any> | _tiptap_core.Extension<_tiptap_extension_unique_id.UniqueIDOptions, any> | _tiptap_core.Extension<Omit<_tiptap_extension_file_handler.FileHandlePluginOptions, "key" | "editor">, any> | _tiptap_core.Extension<_tiptap_extension_text_align.TextAlignOptions, any> | _tiptap_core.Mark<_tiptap_extension_text_style.TextStyleOptions, any> | _tiptap_core.Mark<_tiptap_extension_highlight.HighlightOptions, any> | _tiptap_core.Extension<_tiptap_extension_typography.TypographyOptions, any> | _tiptap_core.Node<any, any> | _tiptap_core.Node<UploadPlaceholderOptions, any> | _tiptap_core.Node<FileNodeOptions, any> | _tiptap_core.Node<_tiptap_extension_details.DetailsOptions, any> | _tiptap_core.Node<_tiptap_extension_details.DetailsSummaryOptions, any>)[];
84
84
 
85
85
  /**
86
86
  * Stable block ids matching stored content: attribute `uid`, UUID v4.
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
+ import * as _tiptap_extension_details from '@tiptap/extension-details';
2
+ import * as _tiptap_core from '@tiptap/core';
3
+ import { Node } from '@tiptap/core';
1
4
  import * as _tiptap_extension_typography from '@tiptap/extension-typography';
2
5
  import * as _tiptap_extension_highlight from '@tiptap/extension-highlight';
3
6
  import * as _tiptap_extension_text_style from '@tiptap/extension-text-style';
4
7
  import * as _tiptap_extension_text_align from '@tiptap/extension-text-align';
5
8
  import * as _tiptap_extension_file_handler from '@tiptap/extension-file-handler';
6
9
  import * as _tiptap_extension_unique_id from '@tiptap/extension-unique-id';
7
- import * as _tiptap_extension_details from '@tiptap/extension-details';
8
- import * as _tiptap_core from '@tiptap/core';
9
- import { Node } from '@tiptap/core';
10
10
  import * as _tiptap_extension_list from '@tiptap/extension-list';
11
11
  import * as _tiptap_extension_link from '@tiptap/extension-link';
12
12
 
@@ -80,7 +80,7 @@ interface CommunEditorMedia {
80
80
  * The parity extension set. UEditor must ALSO receive `:image="false"` and
81
81
  * `:mention="false"`: its defaults collide with our node names.
82
82
  */
83
- declare function communSchemaExtensions(media?: Partial<CommunEditorMedia>): (_tiptap_core.Node<UploadPlaceholderOptions, any> | _tiptap_core.Node<_tiptap_extension_details.DetailsOptions, any> | _tiptap_core.Node<_tiptap_extension_details.DetailsSummaryOptions, any> | _tiptap_core.Node<any, any> | _tiptap_core.Mark<_tiptap_extension_link.LinkOptions, any> | _tiptap_core.Node<_tiptap_extension_list.OrderedListOptions, any> | _tiptap_core.Extension<_tiptap_extension_unique_id.UniqueIDOptions, any> | _tiptap_core.Extension<Omit<_tiptap_extension_file_handler.FileHandlePluginOptions, "key" | "editor">, any> | _tiptap_core.Extension<_tiptap_extension_text_align.TextAlignOptions, any> | _tiptap_core.Mark<_tiptap_extension_text_style.TextStyleOptions, any> | _tiptap_core.Mark<_tiptap_extension_highlight.HighlightOptions, any> | _tiptap_core.Extension<_tiptap_extension_typography.TypographyOptions, any> | _tiptap_core.Node<FileNodeOptions, any>)[];
83
+ declare function communSchemaExtensions(media?: Partial<CommunEditorMedia>): (_tiptap_core.Mark<_tiptap_extension_link.LinkOptions, any> | _tiptap_core.Node<_tiptap_extension_list.OrderedListOptions, any> | _tiptap_core.Extension<_tiptap_extension_unique_id.UniqueIDOptions, any> | _tiptap_core.Extension<Omit<_tiptap_extension_file_handler.FileHandlePluginOptions, "key" | "editor">, any> | _tiptap_core.Extension<_tiptap_extension_text_align.TextAlignOptions, any> | _tiptap_core.Mark<_tiptap_extension_text_style.TextStyleOptions, any> | _tiptap_core.Mark<_tiptap_extension_highlight.HighlightOptions, any> | _tiptap_core.Extension<_tiptap_extension_typography.TypographyOptions, any> | _tiptap_core.Node<any, any> | _tiptap_core.Node<UploadPlaceholderOptions, any> | _tiptap_core.Node<FileNodeOptions, any> | _tiptap_core.Node<_tiptap_extension_details.DetailsOptions, any> | _tiptap_core.Node<_tiptap_extension_details.DetailsSummaryOptions, any>)[];
84
84
 
85
85
  /**
86
86
  * Stable block ids matching stored content: attribute `uid`, UUID v4.
package/package.json CHANGED
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "description": "The rich-text editor: document schema, extensions and their sanitisation.",
38
38
  "license": "AGPL-3.0-or-later",
39
- "version": "0.1.2",
39
+ "version": "0.1.4",
40
40
  "sideEffects": false,
41
41
  "files": [
42
42
  "dist"