@fileverse/content-processor 0.0.1 → 0.0.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.
@@ -1 +1 @@
1
- {"version":3,"file":"dom-setup.d.ts","sourceRoot":"","sources":["../src/dom-setup.ts"],"names":[],"mappings":"AAMA,wBAAgB,QAAQ,SA2CvB;AAED,wBAAgB,uBAAuB,kCAGtC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAGtD"}
1
+ {"version":3,"file":"dom-setup.d.ts","sourceRoot":"","sources":["../src/dom-setup.ts"],"names":[],"mappings":"AAKA,wBAAgB,QAAQ,SAqCvB;AAED,wBAAgB,uBAAuB,kCAGtC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAKtD"}
package/dist/dom-setup.js CHANGED
@@ -1,15 +1,10 @@
1
- import { JSDOM } from 'jsdom';
1
+ import { parseHTML } from 'linkedom';
2
2
  import createDOMPurify from 'dompurify';
3
3
  let domSetup = false;
4
- let jsdomInstance = null;
5
4
  export function setupDOM() {
6
5
  if (domSetup)
7
6
  return;
8
- jsdomInstance = new JSDOM('<!DOCTYPE html><html><body></body></html>', {
9
- pretendToBeVisual: true,
10
- });
11
- const { window } = jsdomInstance;
12
- const { document } = window;
7
+ const { window, document } = parseHTML('<!DOCTYPE html><html><head></head><body></body></html>');
13
8
  const g = globalThis;
14
9
  g.window = window;
15
10
  g.document = document;
@@ -19,7 +14,8 @@ export function setupDOM() {
19
14
  g.DOMParser = window.DOMParser;
20
15
  g.Element = window.Element;
21
16
  g.DocumentFragment = window.DocumentFragment;
22
- g.getComputedStyle = window.getComputedStyle.bind(window);
17
+ g.getComputedStyle =
18
+ window.getComputedStyle?.bind(window) ?? (() => ({}));
23
19
  g.requestAnimationFrame = (cb) => setTimeout(cb, 0);
24
20
  g.cancelAnimationFrame = clearTimeout;
25
21
  g.innerHeight = 768;
@@ -28,8 +24,6 @@ export function setupDOM() {
28
24
  g.scrollBy = () => { };
29
25
  g.MutationObserver = window.MutationObserver;
30
26
  g.Range = window.Range;
31
- g.Selection = window.Selection;
32
- g.getSelection = () => window.getSelection();
33
27
  try {
34
28
  Object.defineProperty(globalThis, 'navigator', {
35
29
  value: window.navigator,
@@ -37,17 +31,15 @@ export function setupDOM() {
37
31
  configurable: true,
38
32
  });
39
33
  }
40
- catch {
41
- // navigator may already be defined
42
- }
34
+ catch { }
43
35
  domSetup = true;
44
36
  }
45
37
  export function createDOMPurifyInstance() {
46
- const jsdomWindow = new JSDOM('').window;
47
- return createDOMPurify(jsdomWindow);
38
+ const { window } = parseHTML('');
39
+ return createDOMPurify(window);
48
40
  }
49
41
  export function parseHTMLString(html) {
50
- const dom = new JSDOM(`<!DOCTYPE html><html><body>${html}</body></html>`);
51
- return dom.window.document;
42
+ const { document } = parseHTML(`<!DOCTYPE html><html><body>${html}</body></html>`);
43
+ return document;
52
44
  }
53
45
  //# sourceMappingURL=dom-setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom-setup.js","sourceRoot":"","sources":["../src/dom-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,eAAe,MAAM,WAAW,CAAC;AAExC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,IAAI,aAAa,GAAiB,IAAI,CAAC;AAEvC,MAAM,UAAU,QAAQ;IACtB,IAAI,QAAQ;QAAE,OAAO;IAErB,aAAa,GAAG,IAAI,KAAK,CAAC,2CAA2C,EAAE;QACrE,iBAAiB,EAAE,IAAI;KACxB,CAAC,CAAC;IAEH,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,MAAM,CAAC,GAAG,UAAiB,CAAC;IAE5B,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACtB,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACnC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3B,CAAC,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC7C,CAAC,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC,CAAC,qBAAqB,GAAG,CAAC,EAAc,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,oBAAoB,GAAG,YAAY,CAAC;IACtC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;IACpB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACtB,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACtB,CAAC,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC7C,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACvB,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE;YAC7C,KAAK,EAAE,MAAM,CAAC,SAAS;YACvB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IAED,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,eAAe,CAAC,WAAkB,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,8BAA8B,IAAI,gBAAgB,CAAC,CAAC;IAC1E,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"dom-setup.js","sourceRoot":"","sources":["../src/dom-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,eAAe,MAAM,WAAW,CAAC;AAExC,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,MAAM,UAAU,QAAQ;IACtB,IAAI,QAAQ;QAAE,OAAO;IAErB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CACpC,wDAAwD,CACzD,CAAC;IAEF,MAAM,CAAC,GAAG,UAAiB,CAAC;IAE5B,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACtB,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACnC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3B,CAAC,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC7C,CAAC,CAAC,gBAAgB;QAChB,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,qBAAqB,GAAG,CAAC,EAAc,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,oBAAoB,GAAG,YAAY,CAAC;IACtC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;IACpB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACtB,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACtB,CAAC,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC7C,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE;YAC7C,KAAK,EAAE,MAAM,CAAC,SAAS;YACvB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IACjC,OAAO,eAAe,CAAC,MAAa,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAC5B,8BAA8B,IAAI,gBAAgB,CACnD,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fileverse/content-processor",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Convert markdown files to Yjs-encoded strings compatible with ddoc Tiptap editor",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -53,13 +53,12 @@
53
53
  "@tiptap/pm": "^2.11.5",
54
54
  "dompurify": "^3.2.4",
55
55
  "js-base64": "^3.7.7",
56
- "jsdom": "^26.0.0",
56
+ "linkedom": "^0.16.11",
57
57
  "markdown-it": "^14.1.0",
58
58
  "markdown-it-footnote": "^4.0.0",
59
59
  "yjs": "^13.6.22"
60
60
  },
61
61
  "devDependencies": {
62
- "@types/jsdom": "^21.1.7",
63
62
  "@types/markdown-it": "^14.1.2",
64
63
  "@types/markdown-it-footnote": "^3.0.4",
65
64
  "@types/node": "^22.13.1",
package/src/dom-setup.ts CHANGED
@@ -1,18 +1,14 @@
1
- import { JSDOM } from 'jsdom';
1
+ import { parseHTML } from 'linkedom';
2
2
  import createDOMPurify from 'dompurify';
3
3
 
4
4
  let domSetup = false;
5
- let jsdomInstance: JSDOM | null = null;
6
5
 
7
6
  export function setupDOM() {
8
7
  if (domSetup) return;
9
8
 
10
- jsdomInstance = new JSDOM('<!DOCTYPE html><html><body></body></html>', {
11
- pretendToBeVisual: true,
12
- });
13
-
14
- const { window } = jsdomInstance;
15
- const { document } = window;
9
+ const { window, document } = parseHTML(
10
+ '<!DOCTYPE html><html><head></head><body></body></html>'
11
+ );
16
12
 
17
13
  const g = globalThis as any;
18
14
 
@@ -24,7 +20,8 @@ export function setupDOM() {
24
20
  g.DOMParser = window.DOMParser;
25
21
  g.Element = window.Element;
26
22
  g.DocumentFragment = window.DocumentFragment;
27
- g.getComputedStyle = window.getComputedStyle.bind(window);
23
+ g.getComputedStyle =
24
+ window.getComputedStyle?.bind(window) ?? (() => ({}));
28
25
  g.requestAnimationFrame = (cb: () => void) => setTimeout(cb, 0);
29
26
  g.cancelAnimationFrame = clearTimeout;
30
27
  g.innerHeight = 768;
@@ -33,8 +30,6 @@ export function setupDOM() {
33
30
  g.scrollBy = () => {};
34
31
  g.MutationObserver = window.MutationObserver;
35
32
  g.Range = window.Range;
36
- g.Selection = window.Selection;
37
- g.getSelection = () => window.getSelection();
38
33
 
39
34
  try {
40
35
  Object.defineProperty(globalThis, 'navigator', {
@@ -42,19 +37,19 @@ export function setupDOM() {
42
37
  writable: true,
43
38
  configurable: true,
44
39
  });
45
- } catch {
46
- // navigator may already be defined
47
- }
40
+ } catch {}
48
41
 
49
42
  domSetup = true;
50
43
  }
51
44
 
52
45
  export function createDOMPurifyInstance() {
53
- const jsdomWindow = new JSDOM('').window;
54
- return createDOMPurify(jsdomWindow as any);
46
+ const { window } = parseHTML('');
47
+ return createDOMPurify(window as any);
55
48
  }
56
49
 
57
50
  export function parseHTMLString(html: string): Document {
58
- const dom = new JSDOM(`<!DOCTYPE html><html><body>${html}</body></html>`);
59
- return dom.window.document;
51
+ const { document } = parseHTML(
52
+ `<!DOCTYPE html><html><body>${html}</body></html>`
53
+ );
54
+ return document;
60
55
  }