Explorar o código

Add markdown-it

simov %!s(int64=2) %!d(string=hai) anos
pai
achega
b98c13e5f4

+ 36 - 3
background/compilers/markdown-it.js

@@ -7,7 +7,18 @@ md.compilers['markdown-it'] = (() => {
     typographer: false,
     xhtmlOut: false,
     langPrefix: 'language-',
-    quotes: '“”‘’'
+    quotes: '“”‘’',
+    // plugins
+    abbr: false,
+    attrs: false,
+    cjk: false,
+    deflist: false,
+    footnote: false,
+    ins: false,
+    mark: false,
+    sub: false,
+    sup: false,
+    tasklists: false,
   }
 
   var description = {
@@ -15,14 +26,36 @@ md.compilers['markdown-it'] = (() => {
     html: 'Enable HTML tags in source',
     linkify: 'Autoconvert URL-like text to links',
     typographer: 'Enable some language-neutral replacement + quotes beautification',
-    xhtmlOut: 'Use / to close single tags (<br />)'
+    xhtmlOut: 'Use / to close single tags (<br />)',
+    // plugins
+    abbr: 'Abbreviation <abbr> support',
+    attrs: 'Custom attributes using {} curly brackets',
+    cjk: 'Suppress linebreaks between east asian characters',
+    deflist: 'Definition list <dl> support',
+    footnote: 'Footnotes support',
+    ins: 'Inserted text <ins> support',
+    mark: 'Marked text <mark> support',
+    sub: 'Subscript <sub> support',
+    sup: 'Superscript <sup> support',
+    tasklists: 'Task lists support',
   }
 
   var ctor = ({storage: {state}}) => ({
     defaults,
     description,
     compile: (markdown) =>
-      markdownit(state['markdown-it'])
+      mdit.mdit(state['markdown-it'])
+        .use(mdit.anchor, {})
+        .use(state['markdown-it'].abbr ? mdit.abbr : () => {})
+        .use(state['markdown-it'].attrs ? mdit.attrs : () => {})
+        .use(state['markdown-it'].cjk ? mdit.cjk : () => {})
+        .use(state['markdown-it'].deflist ? mdit.deflist : () => {})
+        .use(state['markdown-it'].footnote ? mdit.footnote : () => {})
+        .use(state['markdown-it'].ins ? mdit.ins : () => {})
+        .use(state['markdown-it'].mark ? mdit.mark : () => {})
+        .use(state['markdown-it'].sub ? mdit.sub : () => {})
+        .use(state['markdown-it'].sup ? mdit.sup : () => {})
+        .use(state['markdown-it'].tasklists ? mdit.tasklists : () => {})
         .render(markdown)
   })
 

+ 2 - 0
background/index.js

@@ -1,8 +1,10 @@
 
 importScripts('/vendor/marked.min.js')
 importScripts('/vendor/remark.min.js')
+importScripts('/vendor/markdown-it.min.js')
 importScripts('/background/compilers/marked.js')
 importScripts('/background/compilers/remark.js')
+importScripts('/background/compilers/markdown-it.js')
 
 importScripts('/background/storage.js')
 importScripts('/background/webrequest.js')

+ 18 - 3
background/storage.js

@@ -19,9 +19,6 @@ md.storage = ({compilers}) => {
     Object.assign(state, JSON.parse(JSON.stringify(
       !Object.keys(res).length ? defaults : res)))
 
-    // mutate
-    md.storage.migrations(state)
-
     // in case of new providers from the compilers branch
     Object.keys(compilers).forEach((compiler) => {
       if (!state[compiler]) {
@@ -29,6 +26,9 @@ md.storage = ({compilers}) => {
       }
     })
 
+    // mutate
+    md.storage.migrations(state)
+
     set(state)
   })
 
@@ -160,4 +160,19 @@ md.storage.migrations = (state) => {
       theme: 'light'
     }
   }
+  // v5.1 -> v5.2
+  if (state['markdown-it'].abbr === undefined) {
+    Object.assign(state['markdown-it'], {
+      abbr: false,
+      attrs: false,
+      cjk: false,
+      deflist: false,
+      footnote: false,
+      ins: false,
+      mark: false,
+      sub: false,
+      sup: false,
+      tasklists: false,
+    })
+  }
 }

+ 12 - 1
build/README.md

@@ -32,6 +32,18 @@ sh build/package.sh
 | cleanrmd            |  0.1.0
 | emojione            |  2.2.7
 | github-markdown-css |  5.2.0
+| markdown-it         | ^13.0.1
+| markdown-it-abbr    | ^1.0.4
+| markdown-it-anchor  | ^8.6.7
+| markdown-it-attrs   | ^4.1.6
+| markdown-it-cjk-breaks | ^1.1.3
+| markdown-it-deflist | ^2.1.0
+| markdown-it-footnote| ^3.0.3
+| markdown-it-ins     | ^3.0.1
+| markdown-it-mark    | ^3.0.1
+| markdown-it-sub     | ^1.0.0
+| markdown-it-sup     | ^1.0.0
+| markdown-it-task-lists | ^2.1.1
 | marked              |  4.2.5
 | mathjax             |  3.2.2
 | mermaid             |  9.4.0
@@ -49,6 +61,5 @@ sh build/package.sh
 | Module              | Version
 | :-                  | :-
 | commonmark          | 0.29.3
-| markdown-it         | 13.0.1
 | remarkable          | 1.7.4
 | showdown            | 2.1.0

+ 0 - 1
build/compilers/build.sh

@@ -4,7 +4,6 @@
 cd "$(dirname "$0")"
 
 curl https://cdnjs.cloudflare.com/ajax/libs/showdown/2.1.0/showdown.min.js --output ../../vendor/showdown.min.js
-curl https://cdnjs.cloudflare.com/ajax/libs/markdown-it/13.0.1/markdown-it.min.js --output ../../vendor/markdown-it.min.js
 curl https://cdnjs.cloudflare.com/ajax/libs/commonmark/0.29.3/commonmark.min.js --output ../../vendor/commonmark.min.js
 curl https://cdnjs.cloudflare.com/ajax/libs/remarkable/1.7.4/remarkable.min.js --output ../../vendor/remarkable.min.js
 

+ 0 - 2
build/compilers/import.js

@@ -10,11 +10,9 @@ var fpath = {
 
 var compilers = `
 importScripts('/vendor/showdown.min.js')
-importScripts('/vendor/markdown-it.min.js')
 importScripts('/vendor/remarkable.min.js')
 importScripts('/vendor/commonmark.min.js')
 importScripts('/background/compilers/showdown.js')
-importScripts('/background/compilers/markdown-it.js')
 importScripts('/background/compilers/remarkable.js')
 importScripts('/background/compilers/commonmark.js')
 `

+ 19 - 0
build/markdown-it/build.sh

@@ -0,0 +1,19 @@
+#!/bin/bash
+
+# set current working directory to directory of the shell script
+cd "$(dirname "$0")"
+
+# before
+npm install
+mkdir -p tmp
+
+# markdown-it.min.js
+npx rollup --config rollup.js --input markdown-it.mjs --file tmp/markdown-it.js
+npx terser --compress --mangle -- tmp/markdown-it.js > tmp/markdown-it.min.js
+
+# copy
+cp tmp/markdown-it.min.js ../../vendor/
+
+# after
+rm -r tmp/
+rm -rf node_modules/ package-lock.json

+ 29 - 0
build/markdown-it/markdown-it.mjs

@@ -0,0 +1,29 @@
+
+import mdit from 'markdown-it'
+import abbr from 'markdown-it-abbr'
+import anchor from 'markdown-it-anchor'
+import attrs from 'markdown-it-attrs'
+import cjk from 'markdown-it-cjk-breaks'
+import deflist from 'markdown-it-deflist'
+import footnote from 'markdown-it-footnote'
+import ins from 'markdown-it-ins'
+import mark from 'markdown-it-mark'
+import sub from 'markdown-it-sub'
+import sup from 'markdown-it-sup'
+import tasklists from 'markdown-it-task-lists'
+
+
+export {
+  mdit,
+  abbr,
+  anchor,
+  attrs,
+  cjk,
+  deflist,
+  footnote,
+  ins,
+  mark,
+  sub,
+  sup,
+  tasklists,
+}

+ 31 - 0
build/markdown-it/package.json

@@ -0,0 +1,31 @@
+{
+  "name": "markdown-viewer",
+  "version": "0.0.0",
+  "description": "Markdown Viewer / Browser Extension",
+  "private": true,
+  "dependencies": {
+    "markdown-it": "^13.0.1",
+    "markdown-it-abbr": "^1.0.4",
+    "markdown-it-anchor": "^8.6.7",
+    "markdown-it-attrs": "^4.1.6",
+    "markdown-it-cjk-breaks": "^1.1.3",
+    "markdown-it-deflist": "^2.1.0",
+    "markdown-it-footnote": "^3.0.3",
+    "markdown-it-ins": "^3.0.1",
+    "markdown-it-mark": "^3.0.1",
+    "markdown-it-sub": "^1.0.0",
+    "markdown-it-sup": "^1.0.0",
+    "markdown-it-task-lists": "^2.1.1"
+  },
+  "devDependencies": {
+    "@rollup/plugin-commonjs": "^23.0.2",
+    "@rollup/plugin-json": "^6.0.0",
+    "@rollup/plugin-node-resolve": "^15.0.1",
+    "rollup": "^2.35.1",
+    "rollup-plugin-polyfill-node": "^0.11.0",
+    "terser": "^5.5.1"
+  },
+  "engines": {
+    "node": ">=14.0.0"
+  }
+}

+ 23 - 0
build/markdown-it/rollup.js

@@ -0,0 +1,23 @@
+
+var common = require('@rollup/plugin-commonjs')
+var resolve = require('@rollup/plugin-node-resolve')
+var json = require('@rollup/plugin-json')
+var node = require('rollup-plugin-polyfill-node')
+
+
+export default {
+  context: 'window',
+  moduleContext: {id: 'window'},
+
+  plugins: [
+    common(),
+    resolve(),
+    json(),
+    node(),
+  ],
+
+  output: {
+    format: 'iife',
+    name: 'mdit',
+  },
+}

+ 1 - 0
build/package.sh

@@ -25,6 +25,7 @@ mkdir -p ../vendor
 
 # build deps
 sh bootstrap/build.sh
+sh markdown-it/build.sh
 sh marked/build.sh
 sh mathjax/build.sh
 sh mdc/build.sh