@haklex/rich-headless 0.3.1 → 0.3.2

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/dist/index.d.ts CHANGED
@@ -126,4 +126,5 @@ export declare class GridContainerNode extends DecoratorNode<null> {
126
126
  export declare const customHeadlessNodes: Klass<LexicalNode>[];
127
127
  export declare const allHeadlessNodes: Klass<LexicalNode>[];
128
128
  export { $toMarkdown, allHeadlessTransformers } from './transformers';
129
+ export { sanitizeSerializedJSON, sanitizeSerializedState, type SanitizeOptions, } from './sanitize';
129
130
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -6,6 +6,73 @@ import { ListItemNode, ListNode } from "@lexical/list";
6
6
  import { HeadingNode, QuoteNode } from "@lexical/rich-text";
7
7
  import { TableCellNode, TableNode, TableRowNode } from "@lexical/table";
8
8
  import { DecoratorNode, ElementNode } from "lexical";
9
+ //#region src/sanitize.ts
10
+ var ROOT_TYPE = "root";
11
+ function collectKnownTypes(nodes) {
12
+ const out = new Set([ROOT_TYPE]);
13
+ for (const klass of nodes) {
14
+ const fn = klass.getType;
15
+ if (typeof fn === "function") out.add(fn.call(klass));
16
+ }
17
+ return out;
18
+ }
19
+ function sanitizeNode(node, known, reported, onUnknown) {
20
+ if (!node || typeof node !== "object") return [];
21
+ const sanitizedChildren = [];
22
+ if (Array.isArray(node.children)) for (const child of node.children) sanitizedChildren.push(...sanitizeNode(child, known, reported, onUnknown));
23
+ const type = typeof node.type === "string" ? node.type : void 0;
24
+ if (!type || !known.has(type)) {
25
+ if (type && onUnknown && !reported.has(type)) {
26
+ reported.add(type);
27
+ onUnknown(type);
28
+ }
29
+ return sanitizedChildren;
30
+ }
31
+ if (Array.isArray(node.children)) return [{
32
+ ...node,
33
+ children: sanitizedChildren
34
+ }];
35
+ return [node];
36
+ }
37
+ /**
38
+ * Returns a sanitized copy of `state` where any node whose `type` isn't in
39
+ * the configured node-set has been unwrapped (element) or dropped (leaf).
40
+ * Mutates nothing; safe to call on user-supplied JSON.
41
+ */
42
+ function sanitizeSerializedState(state, options) {
43
+ const known = collectKnownTypes(options.nodes);
44
+ const reported = /* @__PURE__ */ new Set();
45
+ const root = state.root;
46
+ if (!root || !Array.isArray(root.children)) return state;
47
+ const newChildren = [];
48
+ for (const child of root.children) newChildren.push(...sanitizeNode(child, known, reported, options.onUnknown));
49
+ return {
50
+ ...state,
51
+ root: {
52
+ ...root,
53
+ children: newChildren
54
+ }
55
+ };
56
+ }
57
+ /**
58
+ * String-in / string-out convenience for callers that work with raw JSON
59
+ * (e.g. `editor.parseEditorState(json)` paths).
60
+ *
61
+ * If the input isn't valid JSON, it's returned unchanged — the caller's
62
+ * existing parser will surface the JSON error.
63
+ */
64
+ function sanitizeSerializedJSON(json, options) {
65
+ let parsed;
66
+ try {
67
+ parsed = JSON.parse(json);
68
+ } catch {
69
+ return json;
70
+ }
71
+ if (!parsed || typeof parsed !== "object") return json;
72
+ const sanitized = sanitizeSerializedState(parsed, options);
73
+ return JSON.stringify(sanitized);
74
+ }
75
+ //#endregion
9
76
  //#region src/index.ts
10
77
  /**
11
78
  * @haklex/rich-headless
@@ -477,4 +544,4 @@ var customHeadlessNodes = [
477
544
  ];
478
545
  var allHeadlessNodes = [...builtinNodes, ...customHeadlessNodes];
479
546
  //#endregion
480
- export { $toMarkdown, AlertQuoteNode, BannerNode, CodeBlockNode, CodeSnippetNode, CommentNode, DetailsNode, EmbedNode, ExcalidrawNode, FootnoteNode, FootnoteSectionNode, GalleryNode, GridContainerNode, ImageNode, KaTeXBlockNode, KaTeXInlineNode, LinkCardNode, MentionNode, MermaidNode, NestedDocNode, PollNode, RubyNode, SpoilerNode, TagNode, VideoNode, allHeadlessNodes, allHeadlessTransformers, builtinNodes, customHeadlessNodes };
547
+ export { $toMarkdown, AlertQuoteNode, BannerNode, CodeBlockNode, CodeSnippetNode, CommentNode, DetailsNode, EmbedNode, ExcalidrawNode, FootnoteNode, FootnoteSectionNode, GalleryNode, GridContainerNode, ImageNode, KaTeXBlockNode, KaTeXInlineNode, LinkCardNode, MentionNode, MermaidNode, NestedDocNode, PollNode, RubyNode, SpoilerNode, TagNode, VideoNode, allHeadlessNodes, allHeadlessTransformers, builtinNodes, customHeadlessNodes, sanitizeSerializedJSON, sanitizeSerializedState };
@@ -0,0 +1,38 @@
1
+ import { Klass, LexicalNode } from 'lexical';
2
+ interface AnyNode {
3
+ type?: string;
4
+ children?: unknown[];
5
+ [key: string]: unknown;
6
+ }
7
+ export interface SanitizeOptions {
8
+ /**
9
+ * Lexical node classes to consider known. Defaults to all node classes
10
+ * registered in this package via `allHeadlessNodes`. Pass an explicit set
11
+ * if you've assembled a smaller registry.
12
+ */
13
+ nodes?: Klass<LexicalNode>[];
14
+ /** Called once per encountered unknown type for observability. */
15
+ onUnknown?: (type: string) => void;
16
+ }
17
+ /**
18
+ * Returns a sanitized copy of `state` where any node whose `type` isn't in
19
+ * the configured node-set has been unwrapped (element) or dropped (leaf).
20
+ * Mutates nothing; safe to call on user-supplied JSON.
21
+ */
22
+ export declare function sanitizeSerializedState<T extends {
23
+ root?: AnyNode;
24
+ }>(state: T, options: SanitizeOptions & {
25
+ nodes: Klass<LexicalNode>[];
26
+ }): T;
27
+ /**
28
+ * String-in / string-out convenience for callers that work with raw JSON
29
+ * (e.g. `editor.parseEditorState(json)` paths).
30
+ *
31
+ * If the input isn't valid JSON, it's returned unchanged — the caller's
32
+ * existing parser will surface the JSON error.
33
+ */
34
+ export declare function sanitizeSerializedJSON(json: string, options: SanitizeOptions & {
35
+ nodes: Klass<LexicalNode>[];
36
+ }): string;
37
+ export {};
38
+ //# sourceMappingURL=sanitize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAElD,UAAU,OAAO;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;IAC7B,kEAAkE;IAClE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAkDD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAClE,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,eAAe,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAA;CAAE,GACzD,CAAC,CAaH;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,eAAe,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAA;CAAE,GACzD,MAAM,CAaR"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haklex/rich-headless",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Headless Lexical node registry for server-side parsing (no React)",
5
5
  "repository": {
6
6
  "type": "git",