@diplodoc/mermaid-extension 0.0.6 → 0.0.7

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diplodoc/mermaid-extension",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "Mermaid plugin for Diplodoc transformer and builder",
5
5
  "main": "plugin/index.js",
6
6
  "types": "plugin/index.d.ts",
@@ -22,7 +22,7 @@
22
22
  "build:hooks": "./esbuild/hooks.sh",
23
23
  "build:runtime": "./esbuild/runtime.sh",
24
24
  "build:declarations": "tsc --emitDeclarationOnly --outDir .",
25
- "prepublish": "npm run build",
25
+ "prepublishOnly": "npm run build",
26
26
  "test": "jest"
27
27
  },
28
28
  "keywords": [
package/plugin/index.js CHANGED
@@ -35,8 +35,6 @@ __export(plugin_exports, {
35
35
  module.exports = __toCommonJS(plugin_exports);
36
36
 
37
37
  // src/plugin/transform.ts
38
- var import_node_path = require("node:path");
39
- var import_node_fs = require("node:fs");
40
38
  var import_markdown_it = __toESM(require("markdown-it"));
41
39
  function isMermaidBlock(token) {
42
40
  return token.type === "fence" && token.info.match(/^\s*mermaid(\s*|$)/);
@@ -51,8 +49,13 @@ function hidden(box, field, value) {
51
49
  return box;
52
50
  }
53
51
  function copy(from, to) {
54
- (0, import_node_fs.mkdirSync)((0, import_node_path.dirname)(to), { recursive: true });
55
- (0, import_node_fs.copyFileSync)(from, to);
52
+ const { mkdirSync, copyFileSync } = dynrequire("node:fs");
53
+ const { dirname } = dynrequire("node:path");
54
+ mkdirSync(dirname(to), { recursive: true });
55
+ copyFileSync(from, to);
56
+ }
57
+ function dynrequire(module) {
58
+ return eval(`require('${module}')`);
56
59
  }
57
60
  var registerTransforms = (md, {
58
61
  classes,
@@ -75,10 +78,11 @@ var registerTransforms = (md, {
75
78
  env.meta.script = env.meta.script || [];
76
79
  env.meta.script.push(runtime);
77
80
  if (bundle) {
78
- const file = (0, import_node_path.join)("@diplodoc/mermaid-extension", "runtime");
81
+ const { join } = dynrequire("node:path");
82
+ const file = join("@diplodoc/mermaid-extension", "runtime");
79
83
  if (!env.bundled.has(file)) {
80
84
  env.bundled.add(file);
81
- copy(require.resolve(file), (0, import_node_path.join)(output, runtime));
85
+ copy(require.resolve(file), join(output, runtime));
82
86
  }
83
87
  }
84
88
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/plugin/index.ts", "../src/plugin/transform.ts"],
4
- "sourcesContent": ["export { transform } from './transform';", "import { join, dirname } from 'node:path';\nimport { mkdirSync, copyFileSync } from 'node:fs';\nimport MarkdownIt from 'markdown-it';\nimport type { MarkdownItPluginCb, MarkdownItPluginOpts } from '@doc-tools/transform/lib/plugins/typings';\nimport type ParserCore from 'markdown-it/lib/parser_core';\nimport type Token from 'markdown-it/lib/token';\n\nexport type PluginOptions = {\n runtime: string;\n classes: string;\n bundle: boolean;\n}\n\nfunction isMermaidBlock(token: Token) {\n return token.type === 'fence' && token.info.match(/^\\s*mermaid(\\s*|$)/);\n}\n\nfunction hidden<B extends Record<string | symbol, unknown>, F extends string | symbol, V>(\n box: B,\n field: F,\n value: V\n) {\n if (!(field in box)) {\n Object.defineProperty(box, field, {\n enumerable: false,\n value: value\n });\n }\n\n return box as B & { [P in F]: V };\n}\n\nfunction copy(from: string, to: string) {\n mkdirSync(dirname(to), { recursive: true });\n copyFileSync(from, to);\n}\n\nconst registerTransforms = (md: MarkdownIt, {\n classes, runtime, bundle, output, updateTokens\n}: PluginOptions & {\n output: string,\n updateTokens: boolean\n}) => {\n const applyTransforms: ParserCore.RuleCore = ({ tokens, env }) => {\n hidden(env, 'bundled', new Set<string>());\n\n const blocks = tokens.filter(isMermaidBlock);\n\n if (updateTokens && blocks.length) {\n blocks.forEach((token) => {\n token.type = 'mermaid';\n token.attrSet('class', `mermaid ${ classes }`);\n });\n }\n\n if (blocks.length) {\n env.meta = env.meta || {};\n env.meta.script = env.meta.script || [];\n env.meta.script.push(runtime);\n\n if (bundle) {\n const file = join(PACKAGE, 'runtime');\n if (!env.bundled.has(file)) {\n env.bundled.add(file);\n\n copy(require.resolve(file), join(output, runtime));\n }\n }\n }\n }\n\n try {\n md.core.ruler.after('fence', 'mermaid', applyTransforms);\n } catch (e) {\n md.core.ruler.push('mermaid', applyTransforms);\n }\n}\n\ntype InputOptions = MarkdownItPluginOpts & {\n destRoot: string;\n};\n\nexport function transform(options: Partial<PluginOptions> = {}) {\n const { runtime = '_assets/mermaid-extension.js', classes = 'yfm-mermaid', bundle = true } = options;\n\n const plugin: MarkdownItPluginCb<{ output: string }> = function(md: MarkdownIt, { output = '.' }) {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\n output,\n updateTokens: true\n });\n\n md.renderer.rules.mermaid = (tokens, idx) => {\n const token = tokens[idx];\n const code = encodeURIComponent(token.content.trim());\n\n return `<div class=\"mermaid\" data-content=\"${ code }\"></div>`;\n };\n };\n\n Object.assign(plugin, {\n collect(input: string, { destRoot }: InputOptions) {\n const md = new MarkdownIt().use((md) => {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\n output: destRoot,\n updateTokens: false\n });\n });\n\n md.parse(input, {});\n }\n });\n\n return plugin;\n}"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,uBAA8B;AAC9B,qBAAwC;AACxC,yBAAuB;AAWvB,SAAS,eAAe,OAAc;AAClC,SAAO,MAAM,SAAS,WAAW,MAAM,KAAK,MAAM,oBAAoB;AAC1E;AAEA,SAAS,OACL,KACA,OACA,OACF;AACE,MAAI,EAAE,SAAS,MAAM;AACjB,WAAO,eAAe,KAAK,OAAO;AAAA,MAC9B,YAAY;AAAA,MACZ;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,SAAO;AACX;AAEA,SAAS,KAAK,MAAc,IAAY;AACpC,oCAAU,0BAAQ,EAAE,GAAG,EAAE,WAAW,KAAK,CAAC;AAC1C,mCAAa,MAAM,EAAE;AACzB;AAEA,IAAM,qBAAqB,CAAC,IAAgB;AAAA,EACxC;AAAA,EAAS;AAAA,EAAS;AAAA,EAAQ;AAAA,EAAQ;AACtC,MAGM;AACF,QAAM,kBAAuC,CAAC,EAAE,QAAQ,IAAI,MAAM;AAC9D,WAAO,KAAK,WAAW,oBAAI,IAAY,CAAC;AAExC,UAAM,SAAS,OAAO,OAAO,cAAc;AAE3C,QAAI,gBAAgB,OAAO,QAAQ;AAC/B,aAAO,QAAQ,CAAC,UAAU;AACtB,cAAM,OAAO;AACb,cAAM,QAAQ,SAAS,WAAY,SAAU;AAAA,MACjD,CAAC;AAAA,IACL;AAEA,QAAI,OAAO,QAAQ;AACf,UAAI,OAAO,IAAI,QAAQ,CAAC;AACxB,UAAI,KAAK,SAAS,IAAI,KAAK,UAAU,CAAC;AACtC,UAAI,KAAK,OAAO,KAAK,OAAO;AAE5B,UAAI,QAAQ;AACR,cAAM,WAAO,uBAAK,+BAAS,SAAS;AACpC,YAAI,CAAC,IAAI,QAAQ,IAAI,IAAI,GAAG;AACxB,cAAI,QAAQ,IAAI,IAAI;AAEpB,eAAK,QAAQ,QAAQ,IAAI,OAAG,uBAAK,QAAQ,OAAO,CAAC;AAAA,QACrD;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI;AACA,OAAG,KAAK,MAAM,MAAM,SAAS,WAAW,eAAe;AAAA,EAC3D,SAAS,GAAP;AACE,OAAG,KAAK,MAAM,KAAK,WAAW,eAAe;AAAA,EACjD;AACJ;AAMO,SAAS,UAAU,UAAkC,CAAC,GAAG;AAC5D,QAAM,EAAE,UAAU,gCAAgC,UAAU,eAAe,SAAS,KAAK,IAAI;AAE7F,QAAM,SAAiD,SAAS,IAAgB,EAAE,SAAS,IAAI,GAAG;AAC9F,uBAAmB,IAAI;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,IAClB,CAAC;AAED,OAAG,SAAS,MAAM,UAAU,CAAC,QAAQ,QAAQ;AACzC,YAAM,QAAQ,OAAO,GAAG;AACxB,YAAM,OAAO,mBAAmB,MAAM,QAAQ,KAAK,CAAC;AAEpD,aAAO,sCAAuC;AAAA,IAClD;AAAA,EACJ;AAEA,SAAO,OAAO,QAAQ;AAAA,IAClB,QAAQ,OAAe,EAAE,SAAS,GAAiB;AAC/C,YAAM,KAAK,IAAI,mBAAAA,QAAW,EAAE,IAAI,CAACC,QAAO;AACpC,2BAAmBA,KAAI;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,UACR,cAAc;AAAA,QAClB,CAAC;AAAA,MACL,CAAC;AAED,SAAG,MAAM,OAAO,CAAC,CAAC;AAAA,IACtB;AAAA,EACJ,CAAC;AAED,SAAO;AACX;",
4
+ "sourcesContent": ["export { transform } from './transform';", "import MarkdownIt from 'markdown-it';\nimport type { MarkdownItPluginCb, MarkdownItPluginOpts } from '@doc-tools/transform/lib/plugins/typings';\nimport type ParserCore from 'markdown-it/lib/parser_core';\nimport type Token from 'markdown-it/lib/token';\n\nexport type PluginOptions = {\n runtime: string;\n classes: string;\n bundle: boolean;\n}\n\nfunction isMermaidBlock(token: Token) {\n return token.type === 'fence' && token.info.match(/^\\s*mermaid(\\s*|$)/);\n}\n\nfunction hidden<B extends Record<string | symbol, unknown>, F extends string | symbol, V>(\n box: B,\n field: F,\n value: V\n) {\n if (!(field in box)) {\n Object.defineProperty(box, field, {\n enumerable: false,\n value: value\n });\n }\n\n return box as B & { [P in F]: V };\n}\n\nfunction copy(from: string, to: string) {\n const { mkdirSync, copyFileSync } = dynrequire('node:fs');\n const { dirname } = dynrequire('node:path');\n\n mkdirSync(dirname(to), { recursive: true });\n copyFileSync(from, to);\n}\n\n/*\n* Runtime require hidden for builders.\n* Used for nodejs api\n*/\nfunction dynrequire(module: string) {\n return eval(`require('${ module }')`);\n}\n\nconst registerTransforms = (md: MarkdownIt, {\n classes, runtime, bundle, output, updateTokens\n}: PluginOptions & {\n output: string,\n updateTokens: boolean\n}) => {\n const applyTransforms: ParserCore.RuleCore = ({ tokens, env }) => {\n hidden(env, 'bundled', new Set<string>());\n\n const blocks = tokens.filter(isMermaidBlock);\n\n if (updateTokens && blocks.length) {\n blocks.forEach((token) => {\n token.type = 'mermaid';\n token.attrSet('class', `mermaid ${ classes }`);\n });\n }\n\n if (blocks.length) {\n env.meta = env.meta || {};\n env.meta.script = env.meta.script || [];\n env.meta.script.push(runtime);\n\n if (bundle) {\n const { join } = dynrequire('node:path');\n const file = join(PACKAGE, 'runtime');\n if (!env.bundled.has(file)) {\n env.bundled.add(file);\n\n copy(require.resolve(file), join(output, runtime));\n }\n }\n }\n }\n\n try {\n md.core.ruler.after('fence', 'mermaid', applyTransforms);\n } catch (e) {\n md.core.ruler.push('mermaid', applyTransforms);\n }\n}\n\ntype InputOptions = MarkdownItPluginOpts & {\n destRoot: string;\n};\n\nexport function transform(options: Partial<PluginOptions> = {}) {\n const { runtime = '_assets/mermaid-extension.js', classes = 'yfm-mermaid', bundle = true } = options;\n\n const plugin: MarkdownItPluginCb<{ output: string }> = function(md: MarkdownIt, { output = '.' }) {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\n output,\n updateTokens: true\n });\n\n md.renderer.rules.mermaid = (tokens, idx) => {\n const token = tokens[idx];\n const code = encodeURIComponent(token.content.trim());\n\n return `<div class=\"mermaid\" data-content=\"${ code }\"></div>`;\n };\n };\n\n Object.assign(plugin, {\n collect(input: string, { destRoot }: InputOptions) {\n const md = new MarkdownIt().use((md) => {\n registerTransforms(md, {\n classes,\n runtime,\n bundle,\n output: destRoot,\n updateTokens: false\n });\n });\n\n md.parse(input, {});\n }\n });\n\n return plugin;\n}"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,yBAAuB;AAWvB,SAAS,eAAe,OAAc;AAClC,SAAO,MAAM,SAAS,WAAW,MAAM,KAAK,MAAM,oBAAoB;AAC1E;AAEA,SAAS,OACL,KACA,OACA,OACF;AACE,MAAI,EAAE,SAAS,MAAM;AACjB,WAAO,eAAe,KAAK,OAAO;AAAA,MAC9B,YAAY;AAAA,MACZ;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,SAAO;AACX;AAEA,SAAS,KAAK,MAAc,IAAY;AACpC,QAAM,EAAE,WAAW,aAAa,IAAI,WAAW,SAAS;AACxD,QAAM,EAAE,QAAQ,IAAI,WAAW,WAAW;AAE1C,YAAU,QAAQ,EAAE,GAAG,EAAE,WAAW,KAAK,CAAC;AAC1C,eAAa,MAAM,EAAE;AACzB;AAMA,SAAS,WAAW,QAAgB;AAChC,SAAO,KAAK,YAAa,UAAW;AACxC;AAEA,IAAM,qBAAqB,CAAC,IAAgB;AAAA,EACxC;AAAA,EAAS;AAAA,EAAS;AAAA,EAAQ;AAAA,EAAQ;AACtC,MAGM;AACF,QAAM,kBAAuC,CAAC,EAAE,QAAQ,IAAI,MAAM;AAC9D,WAAO,KAAK,WAAW,oBAAI,IAAY,CAAC;AAExC,UAAM,SAAS,OAAO,OAAO,cAAc;AAE3C,QAAI,gBAAgB,OAAO,QAAQ;AAC/B,aAAO,QAAQ,CAAC,UAAU;AACtB,cAAM,OAAO;AACb,cAAM,QAAQ,SAAS,WAAY,SAAU;AAAA,MACjD,CAAC;AAAA,IACL;AAEA,QAAI,OAAO,QAAQ;AACf,UAAI,OAAO,IAAI,QAAQ,CAAC;AACxB,UAAI,KAAK,SAAS,IAAI,KAAK,UAAU,CAAC;AACtC,UAAI,KAAK,OAAO,KAAK,OAAO;AAE5B,UAAI,QAAQ;AACR,cAAM,EAAE,KAAK,IAAI,WAAW,WAAW;AACvC,cAAM,OAAO,KAAK,+BAAS,SAAS;AACpC,YAAI,CAAC,IAAI,QAAQ,IAAI,IAAI,GAAG;AACxB,cAAI,QAAQ,IAAI,IAAI;AAEpB,eAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK,QAAQ,OAAO,CAAC;AAAA,QACrD;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI;AACA,OAAG,KAAK,MAAM,MAAM,SAAS,WAAW,eAAe;AAAA,EAC3D,SAAS,GAAP;AACE,OAAG,KAAK,MAAM,KAAK,WAAW,eAAe;AAAA,EACjD;AACJ;AAMO,SAAS,UAAU,UAAkC,CAAC,GAAG;AAC5D,QAAM,EAAE,UAAU,gCAAgC,UAAU,eAAe,SAAS,KAAK,IAAI;AAE7F,QAAM,SAAiD,SAAS,IAAgB,EAAE,SAAS,IAAI,GAAG;AAC9F,uBAAmB,IAAI;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,IAClB,CAAC;AAED,OAAG,SAAS,MAAM,UAAU,CAAC,QAAQ,QAAQ;AACzC,YAAM,QAAQ,OAAO,GAAG;AACxB,YAAM,OAAO,mBAAmB,MAAM,QAAQ,KAAK,CAAC;AAEpD,aAAO,sCAAuC;AAAA,IAClD;AAAA,EACJ;AAEA,SAAO,OAAO,QAAQ;AAAA,IAClB,QAAQ,OAAe,EAAE,SAAS,GAAiB;AAC/C,YAAM,KAAK,IAAI,mBAAAA,QAAW,EAAE,IAAI,CAACC,QAAO;AACpC,2BAAmBA,KAAI;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,UACR,cAAc;AAAA,QAClB,CAAC;AAAA,MACL,CAAC;AAED,SAAG,MAAM,OAAO,CAAC,CAAC;AAAA,IACtB;AAAA,EACJ,CAAC;AAED,SAAO;AACX;",
6
6
  "names": ["MarkdownIt", "md"]
7
7
  }