securemark 0.280.4 → 0.280.6

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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.280.6
4
+
5
+ - Refactoring.
6
+
7
+ ## 0.280.5
8
+
9
+ - Refactoring.
10
+
3
11
  ## 0.280.4
4
12
 
5
13
  - Refactoring.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! securemark v0.280.4 https://github.com/falsandtru/securemark | (c) 2017, falsandtru | UNLICENSED License */
1
+ /*! securemark v0.280.6 https://github.com/falsandtru/securemark | (c) 2017, falsandtru | UNLICENSED License */
2
2
  (function webpackUniversalModuleDefinition(root, factory) {
3
3
  if(typeof exports === 'object' && typeof module === 'object')
4
4
  module.exports = factory(require("Prism"), require("DOMPurify"));
@@ -40,6 +40,7 @@ var __exportStar = this && this.__exportStar || function (m, exports) {
40
40
  Object.defineProperty(exports, "__esModule", ({
41
41
  value: true
42
42
  }));
43
+ __webpack_require__(4128);
43
44
  __exportStar(__webpack_require__(3019), exports);
44
45
  __exportStar(__webpack_require__(4613), exports);
45
46
  __exportStar(__webpack_require__(256), exports);
@@ -2713,7 +2714,6 @@ Object.defineProperty(exports, "__esModule", ({
2713
2714
  value: true
2714
2715
  }));
2715
2716
  exports.verify = exports.validate = void 0;
2716
- __webpack_require__(4128);
2717
2717
  const alias_1 = __webpack_require__(5406);
2718
2718
  const parser_1 = __webpack_require__(6728);
2719
2719
  function validate(patterns, has, parser) {
@@ -4518,12 +4518,13 @@ exports.dlist = void 0;
4518
4518
  const combinator_1 = __webpack_require__(2087);
4519
4519
  const inline_1 = __webpack_require__(1160);
4520
4520
  const source_1 = __webpack_require__(6743);
4521
+ const util_1 = __webpack_require__(9437);
4521
4522
  const visibility_1 = __webpack_require__(7618);
4522
4523
  const array_1 = __webpack_require__(8112);
4523
4524
  const dom_1 = __webpack_require__(3252);
4524
4525
  exports.dlist = (0, combinator_1.lazy)(() => (0, combinator_1.block)((0, combinator_1.fmap)((0, combinator_1.validate)(/^~[^\S\n]+(?=\S)/, (0, combinator_1.some)((0, combinator_1.inits)([(0, combinator_1.state)(256 /* State.annotation */ | 128 /* State.reference */ | 64 /* State.index */ | 32 /* State.label */ | 16 /* State.link */ | 8 /* State.media */, (0, combinator_1.some)(term)), (0, combinator_1.some)(desc)]))), es => [(0, dom_1.html)('dl', fillTrailingDescription(es))])));
4525
4526
  const term = (0, combinator_1.creation)(1, false, (0, combinator_1.line)((0, inline_1.indexee)((0, combinator_1.fmap)((0, combinator_1.open)(/^~[^\S\n]+(?=\S)/, (0, visibility_1.visualize)((0, visibility_1.trimBlankStart)((0, combinator_1.some)((0, combinator_1.union)([inline_1.indexer, inline_1.inline])))), true), ns => [(0, dom_1.html)('dt', (0, visibility_1.trimNodeEnd)((0, dom_1.defrag)(ns)))]))));
4526
- const desc = (0, combinator_1.creation)(1, false, (0, combinator_1.block)((0, combinator_1.fmap)((0, combinator_1.open)(/^:[^\S\n]+(?=\S)|/, (0, combinator_1.rewrite)((0, combinator_1.some)(source_1.anyline, /^[~:][^\S\n]+\S/), (0, visibility_1.visualize)((0, combinator_1.some)((0, combinator_1.union)([inline_1.inline])))), true), ns => [(0, dom_1.html)('dd', (0, visibility_1.trimNodeEnd)((0, dom_1.defrag)(ns)))]), false));
4527
+ const desc = (0, combinator_1.creation)(1, false, (0, combinator_1.block)((0, combinator_1.fmap)((0, combinator_1.open)(/^:[^\S\n]+(?=\S)|/, (0, combinator_1.rewrite)((0, combinator_1.some)(source_1.anyline, /^[~:][^\S\n]+\S/), (0, visibility_1.visualize)((0, util_1.lineable)((0, combinator_1.some)((0, combinator_1.union)([inline_1.inline]))))), true), ns => [(0, dom_1.html)('dd', (0, visibility_1.trimNodeEnd)((0, dom_1.defrag)(ns)))]), false));
4527
4528
  function fillTrailingDescription(es) {
4528
4529
  return es.length > 0 && es[es.length - 1].tagName === 'DT' ? (0, array_1.push)(es, [(0, dom_1.html)('dd')]) : es;
4529
4530
  }
@@ -4968,6 +4969,7 @@ const parser_1 = __webpack_require__(6728);
4968
4969
  const combinator_1 = __webpack_require__(2087);
4969
4970
  const inline_1 = __webpack_require__(1160);
4970
4971
  const source_1 = __webpack_require__(6743);
4972
+ const util_1 = __webpack_require__(9437);
4971
4973
  const visibility_1 = __webpack_require__(7618);
4972
4974
  const array_1 = __webpack_require__(8112);
4973
4975
  const dom_1 = __webpack_require__(3252);
@@ -5009,7 +5011,7 @@ const alignment = /^[-=<>]+(?:\/[-=^v]*)?(?=[^\S\n]*\n)/;
5009
5011
  const align = (0, combinator_1.line)((0, combinator_1.fmap)((0, combinator_1.union)([(0, source_1.str)(alignment)]), ([s]) => s.split('/').map(s => s.split(''))));
5010
5012
  const delimiter = /^[-=<>]+(?:\/[-=^v]*)?(?=[^\S\n]*\n)|^[#:](?:(?!:\D|0)\d*:(?!0)\d*)?(?:!+[+]?)?(?=\s)/;
5011
5013
  const head = (0, combinator_1.creation)(1, false, (0, combinator_1.block)((0, combinator_1.fmap)((0, combinator_1.open)((0, source_1.str)(/^#(?:(?!:\D|0)\d*:(?!0)\d*)?(?:!+[+]?)?(?=\s)/), (0, combinator_1.rewrite)((0, combinator_1.inits)([source_1.anyline, (0, combinator_1.some)(source_1.contentline, delimiter)]), (0, combinator_1.union)([(0, combinator_1.block)((0, combinator_1.surround)(/^[^\n]/, inline_1.medialink, /^\s*$/)), (0, combinator_1.block)((0, combinator_1.surround)(/^[^\n]/, inline_1.media, /^\s*$/)), (0, combinator_1.block)((0, combinator_1.surround)(/^[^\n]/, inline_1.shortmedia, /^\s*$/)), (0, combinator_1.open)(/^(?:\s*\n|\s)/, (0, visibility_1.visualize)((0, visibility_1.trimBlankStart)((0, combinator_1.some)(inline_1.inline))), true)])), true), ns => [(0, dom_1.html)('th', attributes(ns.shift()), (0, visibility_1.trimNodeEnd)((0, dom_1.defrag)(ns)))]), false));
5012
- const data = (0, combinator_1.creation)(1, false, (0, combinator_1.block)((0, combinator_1.fmap)((0, combinator_1.open)((0, source_1.str)(/^:(?:(?!:\D|0)\d*:(?!0)\d*)?(?:!+[+]?)?(?=\s)/), (0, combinator_1.rewrite)((0, combinator_1.inits)([source_1.anyline, (0, combinator_1.some)(source_1.contentline, delimiter)]), (0, combinator_1.union)([(0, combinator_1.block)((0, combinator_1.surround)(/^[^\n]/, inline_1.medialink, /^\s*$/)), (0, combinator_1.block)((0, combinator_1.surround)(/^[^\n]/, inline_1.media, /^\s*$/)), (0, combinator_1.block)((0, combinator_1.surround)(/^[^\n]/, inline_1.shortmedia, /^\s*$/)), (0, combinator_1.open)(/^(?:\s*\n|\s)/, (0, visibility_1.visualize)((0, combinator_1.some)(inline_1.inline)), true)])), true), ns => [(0, dom_1.html)('td', attributes(ns.shift()), (0, visibility_1.trimNodeEnd)((0, dom_1.defrag)(ns)))]), false));
5014
+ const data = (0, combinator_1.creation)(1, false, (0, combinator_1.block)((0, combinator_1.fmap)((0, combinator_1.open)((0, source_1.str)(/^:(?:(?!:\D|0)\d*:(?!0)\d*)?(?:!+[+]?)?(?=\s)/), (0, combinator_1.rewrite)((0, combinator_1.inits)([source_1.anyline, (0, combinator_1.some)(source_1.contentline, delimiter)]), (0, combinator_1.union)([(0, combinator_1.block)((0, combinator_1.surround)(/^[^\n]/, inline_1.medialink, /^\s*$/)), (0, combinator_1.block)((0, combinator_1.surround)(/^[^\n]/, inline_1.media, /^\s*$/)), (0, combinator_1.block)((0, combinator_1.surround)(/^[^\n]/, inline_1.shortmedia, /^\s*$/)), (0, combinator_1.open)(/^(?:\s*\n|\s)/, (0, visibility_1.visualize)((0, util_1.lineable)((0, combinator_1.some)(inline_1.inline))), true)])), true), ns => [(0, dom_1.html)('td', attributes(ns.shift()), (0, visibility_1.trimNodeEnd)((0, dom_1.defrag)(ns)))]), false));
5013
5015
  const dataline = (0, combinator_1.creation)(1, false, (0, combinator_1.line)((0, combinator_1.rewrite)(source_1.contentline, (0, combinator_1.union)([(0, combinator_1.validate)(/^!+\s/, (0, combinator_1.convert)(source => `:${source}`, data)), (0, combinator_1.convert)(source => `: ${source}`, data)]))));
5014
5016
  function attributes(source) {
5015
5017
  let [, rowspan = undefined, colspan = undefined, highlight = undefined, extension = undefined] = source.match(/^[#:](?:(\d+)?:(\d+)?)?(?:(!+)([+]?))?$/) ?? [];
@@ -5259,9 +5261,11 @@ const combinator_1 = __webpack_require__(2087);
5259
5261
  const ulist_1 = __webpack_require__(5425);
5260
5262
  const olist_1 = __webpack_require__(7471);
5261
5263
  const inline_1 = __webpack_require__(1160);
5264
+ const util_1 = __webpack_require__(9437);
5265
+ const visibility_1 = __webpack_require__(7618);
5262
5266
  const dom_1 = __webpack_require__(3252);
5263
5267
  exports.ilist = (0, combinator_1.lazy)(() => (0, combinator_1.block)((0, combinator_1.validate)(/^[-+*](?=[^\S\n]|\n[^\S\n]*\S)/, exports.ilist_)));
5264
- exports.ilist_ = (0, combinator_1.lazy)(() => (0, combinator_1.block)((0, combinator_1.fmap)((0, combinator_1.validate)(/^[-+*](?:$|\s)/, (0, combinator_1.some)((0, combinator_1.creation)(1, false, (0, combinator_1.union)([(0, combinator_1.fmap)((0, combinator_1.fallback)((0, combinator_1.inits)([(0, combinator_1.line)((0, combinator_1.open)(/^[-+*](?:$|\s)/, (0, combinator_1.some)(inline_1.inline), true)), (0, combinator_1.indent)((0, combinator_1.union)([ulist_1.ulist_, olist_1.olist_, exports.ilist_]))]), ulist_1.invalid), ns => [(0, dom_1.html)('li', (0, dom_1.defrag)((0, ulist_1.fillFirstLine)(ns)))])])))), es => [(0, dom_1.html)('ul', {
5268
+ exports.ilist_ = (0, combinator_1.lazy)(() => (0, combinator_1.block)((0, combinator_1.fmap)((0, combinator_1.validate)(/^[-+*](?:$|\s)/, (0, combinator_1.some)((0, combinator_1.creation)(1, false, (0, combinator_1.union)([(0, combinator_1.fmap)((0, combinator_1.fallback)((0, combinator_1.inits)([(0, combinator_1.line)((0, combinator_1.open)(/^[-+*](?:$|\s)/, (0, combinator_1.trim)((0, visibility_1.visualize)((0, visibility_1.trimBlank)((0, util_1.lineable)((0, combinator_1.some)(inline_1.inline))))), true)), (0, combinator_1.indent)((0, combinator_1.union)([ulist_1.ulist_, olist_1.olist_, exports.ilist_]))]), ulist_1.invalid), ns => [(0, dom_1.html)('li', (0, dom_1.defrag)((0, ulist_1.fillFirstLine)(ns)))])])))), es => [(0, dom_1.html)('ul', {
5265
5269
  class: 'invalid',
5266
5270
  'data-invalid-syntax': 'list',
5267
5271
  'data-invalid-type': 'syntax',
@@ -5343,7 +5347,7 @@ const combinator_1 = __webpack_require__(2087);
5343
5347
  const ulist_1 = __webpack_require__(5425);
5344
5348
  const ilist_1 = __webpack_require__(238);
5345
5349
  const inline_1 = __webpack_require__(1160);
5346
- const index_1 = __webpack_require__(4479);
5350
+ const util_1 = __webpack_require__(9437);
5347
5351
  const visibility_1 = __webpack_require__(7618);
5348
5352
  const memoize_1 = __webpack_require__(1808);
5349
5353
  const dom_1 = __webpack_require__(3252);
@@ -5353,10 +5357,7 @@ const openers = {
5353
5357
  };
5354
5358
  exports.olist = (0, combinator_1.lazy)(() => (0, combinator_1.block)((0, combinator_1.validate)(new RegExp([/^([0-9]+|[a-z]+|[A-Z]+)(?:-[0-9]+)*\.(?=[^\S\n]|\n[^\S\n]*\S)/.source, /^\(([0-9]+|[a-z]+)\)(?:-[0-9]+)*(?=[^\S\n]|\n[^\S\n]*\S)/.source].join('|')), exports.olist_)));
5355
5359
  exports.olist_ = (0, combinator_1.lazy)(() => (0, combinator_1.block)((0, combinator_1.union)([(0, combinator_1.match)(openers['.'], (0, memoize_1.memoize)(ms => list(type(ms[1]), '.'), ms => idx(ms[1]), [])), (0, combinator_1.match)(openers['('], (0, memoize_1.memoize)(ms => list(type(ms[1]), '('), ms => idx(ms[1]), []))])));
5356
- const list = (type, form) => (0, combinator_1.fmap)((0, combinator_1.some)((0, combinator_1.creation)(1, false, (0, combinator_1.union)([(0, inline_1.indexee)((0, combinator_1.fmap)((0, combinator_1.fallback)((0, combinator_1.inits)([(0, combinator_1.line)((0, combinator_1.open)(heads[form], (0, combinator_1.subsequence)([ulist_1.checkbox, (0, combinator_1.trim)((0, combinator_1.union)([(0, combinator_1.fmap)((0, combinator_1.close)((0, combinator_1.union)([index_1.index]), /^$/), ([el]) => [(0, dom_1.define)(el, {
5357
- class: void el.classList.add('indexer'),
5358
- 'data-index': ''
5359
- })]), (0, visibility_1.visualize)((0, visibility_1.trimBlank)((0, combinator_1.some)((0, combinator_1.union)([inline_1.indexer, inline_1.inline]))))]))]), true)), (0, combinator_1.indent)((0, combinator_1.union)([ulist_1.ulist_, exports.olist_, ilist_1.ilist_]))]), ulist_1.invalid), ns => [(0, dom_1.html)('li', {
5360
+ const list = (type, form) => (0, combinator_1.fmap)((0, combinator_1.some)((0, combinator_1.creation)(1, false, (0, combinator_1.union)([(0, inline_1.indexee)((0, combinator_1.fmap)((0, combinator_1.fallback)((0, combinator_1.inits)([(0, combinator_1.line)((0, combinator_1.open)(heads[form], (0, combinator_1.subsequence)([ulist_1.checkbox, (0, combinator_1.trim)((0, visibility_1.visualize)((0, util_1.lineable)((0, visibility_1.trimBlank)((0, combinator_1.some)((0, combinator_1.union)([inline_1.indexer, inline_1.inline]))))))]), true)), (0, combinator_1.indent)((0, combinator_1.union)([ulist_1.ulist_, exports.olist_, ilist_1.ilist_]))]), ulist_1.invalid), ns => [(0, dom_1.html)('li', {
5360
5361
  'data-marker': ns.shift() || undefined
5361
5362
  }, (0, dom_1.defrag)((0, ulist_1.fillFirstLine)(ns)))]), true)]))), es => [format((0, dom_1.html)('ol', es), type, form)]);
5362
5363
  const heads = {
@@ -5487,9 +5488,10 @@ Object.defineProperty(exports, "__esModule", ({
5487
5488
  exports.paragraph = void 0;
5488
5489
  const combinator_1 = __webpack_require__(2087);
5489
5490
  const inline_1 = __webpack_require__(1160);
5491
+ const util_1 = __webpack_require__(9437);
5490
5492
  const visibility_1 = __webpack_require__(7618);
5491
5493
  const dom_1 = __webpack_require__(3252);
5492
- exports.paragraph = (0, combinator_1.block)((0, combinator_1.fmap)((0, combinator_1.convert)(source => `\r${source}`, (0, visibility_1.visualize)((0, combinator_1.some)((0, combinator_1.union)([inline_1.inline])))), ns => [(0, dom_1.html)('p', (0, visibility_1.trimNodeEnd)((0, dom_1.defrag)(ns)))]));
5494
+ exports.paragraph = (0, combinator_1.block)((0, combinator_1.fmap)((0, visibility_1.visualize)((0, util_1.lineable)((0, combinator_1.some)((0, combinator_1.union)([inline_1.inline])))), ns => [(0, dom_1.html)('p', (0, visibility_1.trimNodeEnd)((0, dom_1.defrag)(ns)))]));
5493
5495
 
5494
5496
  /***/ }),
5495
5497
 
@@ -5508,6 +5510,7 @@ const cite_1 = __webpack_require__(6315);
5508
5510
  const quote_1 = __webpack_require__(6058);
5509
5511
  const inline_1 = __webpack_require__(1160);
5510
5512
  const source_1 = __webpack_require__(6743);
5513
+ const util_1 = __webpack_require__(9437);
5511
5514
  const visibility_1 = __webpack_require__(7618);
5512
5515
  const array_1 = __webpack_require__(8112);
5513
5516
  const dom_1 = __webpack_require__(3252);
@@ -5517,7 +5520,7 @@ const dom_1 = __webpack_require__(3252);
5517
5520
  対象をURLで指定すべき(引用ツリーにルートを追加する)場合はない
5518
5521
  対象と引用は1:N(分割)、N:1(統合)のみ可能、N:N(混合)は不可能
5519
5522
  */
5520
- exports.reply = (0, combinator_1.block)((0, combinator_1.validate)('>', (0, combinator_1.fmap)((0, combinator_1.inits)([(0, combinator_1.some)((0, combinator_1.inits)([cite_1.cite, quote_1.quote])), (0, combinator_1.some)((0, combinator_1.subsequence)([(0, combinator_1.some)(quote_1.quote), (0, combinator_1.fmap)((0, combinator_1.rewrite)((0, combinator_1.some)(source_1.anyline, quote_1.syntax), (0, visibility_1.visualize)((0, combinator_1.some)(inline_1.inline))), ns => (0, array_1.push)(ns, [(0, dom_1.html)('br')]))]))]), ns => [(0, dom_1.html)('p', (0, visibility_1.trimNodeEnd)((0, dom_1.defrag)(ns)))])));
5523
+ exports.reply = (0, combinator_1.block)((0, combinator_1.validate)('>', (0, combinator_1.fmap)((0, combinator_1.inits)([(0, combinator_1.some)((0, combinator_1.inits)([cite_1.cite, quote_1.quote])), (0, combinator_1.some)((0, combinator_1.subsequence)([(0, combinator_1.some)(quote_1.quote), (0, combinator_1.fmap)((0, combinator_1.rewrite)((0, combinator_1.some)(source_1.anyline, quote_1.syntax), (0, visibility_1.visualize)((0, util_1.lineable)((0, combinator_1.some)(inline_1.inline)))), ns => (0, array_1.push)(ns, [(0, dom_1.html)('br')]))]))]), ns => [(0, dom_1.html)('p', (0, visibility_1.trimNodeEnd)((0, dom_1.defrag)(ns)))])));
5521
5524
 
5522
5525
  /***/ }),
5523
5526
 
@@ -5672,16 +5675,13 @@ const combinator_1 = __webpack_require__(2087);
5672
5675
  const olist_1 = __webpack_require__(7471);
5673
5676
  const ilist_1 = __webpack_require__(238);
5674
5677
  const inline_1 = __webpack_require__(1160);
5675
- const index_1 = __webpack_require__(4479);
5676
5678
  const source_1 = __webpack_require__(6743);
5679
+ const util_1 = __webpack_require__(9437);
5677
5680
  const visibility_1 = __webpack_require__(7618);
5678
5681
  const array_1 = __webpack_require__(8112);
5679
5682
  const dom_1 = __webpack_require__(3252);
5680
5683
  exports.ulist = (0, combinator_1.lazy)(() => (0, combinator_1.block)((0, combinator_1.validate)(/^-(?=[^\S\n]|\n[^\S\n]*\S)/, exports.ulist_)));
5681
- exports.ulist_ = (0, combinator_1.lazy)(() => (0, combinator_1.block)((0, combinator_1.fmap)((0, combinator_1.validate)(/^-(?=$|\s)/, (0, combinator_1.some)((0, combinator_1.creation)(1, false, (0, combinator_1.union)([(0, inline_1.indexee)((0, combinator_1.fmap)((0, combinator_1.fallback)((0, combinator_1.inits)([(0, combinator_1.line)((0, combinator_1.open)(/^-(?:$|\s)/, (0, combinator_1.subsequence)([exports.checkbox, (0, combinator_1.trim)((0, combinator_1.union)([(0, combinator_1.fmap)((0, combinator_1.close)((0, combinator_1.union)([index_1.index]), /^$/), ([el]) => [(0, dom_1.define)(el, {
5682
- class: void el.classList.add('indexer'),
5683
- 'data-index': ''
5684
- })]), (0, visibility_1.visualize)((0, visibility_1.trimBlank)((0, combinator_1.some)((0, combinator_1.union)([inline_1.indexer, inline_1.inline]))))]))]), true)), (0, combinator_1.indent)((0, combinator_1.union)([exports.ulist_, olist_1.olist_, ilist_1.ilist_]))]), exports.invalid), ns => [(0, dom_1.html)('li', (0, dom_1.defrag)(fillFirstLine(ns)))]), true)])))), es => [format((0, dom_1.html)('ul', es))])));
5684
+ exports.ulist_ = (0, combinator_1.lazy)(() => (0, combinator_1.block)((0, combinator_1.fmap)((0, combinator_1.validate)(/^-(?=$|\s)/, (0, combinator_1.some)((0, combinator_1.creation)(1, false, (0, combinator_1.union)([(0, inline_1.indexee)((0, combinator_1.fmap)((0, combinator_1.fallback)((0, combinator_1.inits)([(0, combinator_1.line)((0, combinator_1.open)(/^-(?:$|\s)/, (0, combinator_1.subsequence)([exports.checkbox, (0, combinator_1.trim)((0, visibility_1.visualize)((0, util_1.lineable)((0, visibility_1.trimBlank)((0, combinator_1.some)((0, combinator_1.union)([inline_1.indexer, inline_1.inline]))))))]), true)), (0, combinator_1.indent)((0, combinator_1.union)([exports.ulist_, olist_1.olist_, ilist_1.ilist_]))]), exports.invalid), ns => [(0, dom_1.html)('li', (0, dom_1.defrag)(fillFirstLine(ns)))]), true)])))), es => [format((0, dom_1.html)('ul', es))])));
5685
5685
  exports.checkbox = (0, combinator_1.creation)(1, false, (0, combinator_1.focus)(/^\[[xX ]\](?=$|\s)/, ({
5686
5686
  source
5687
5687
  }) => [[(0, dom_1.html)('span', {
@@ -6251,7 +6251,6 @@ function identity(id, text, type = 'index') {
6251
6251
  if (cs.length <= 120) return `${type}:${id ?? ''}:${text}`;
6252
6252
  switch (type) {
6253
6253
  case 'index':
6254
- return `${type}:${id ?? ''}:${cs.slice(0, 120 - 3).join('')}...`;
6255
6254
  case 'mark':
6256
6255
  return `${type}:${id ?? ''}:${cs.slice(0, 38).join('')}...${cs.slice(cs.length / 2 - 38 / 2 | 0).slice(0, 38).join('')}...${cs.slice(-38).join('')}`;
6257
6256
  }
@@ -7669,8 +7668,13 @@ exports.unescsource = (0, combinator_1.creation)(1, false, ({
7669
7668
  Object.defineProperty(exports, "__esModule", ({
7670
7669
  value: true
7671
7670
  }));
7672
- exports.stringify = exports.unmarkInvalid = exports.markInvalid = void 0;
7671
+ exports.stringify = exports.unmarkInvalid = exports.markInvalid = exports.lineable = void 0;
7672
+ const combinator_1 = __webpack_require__(2087);
7673
7673
  const dom_1 = __webpack_require__(3252);
7674
+ function lineable(parser) {
7675
+ return (0, combinator_1.convert)(source => `\r${source}`, parser);
7676
+ }
7677
+ exports.lineable = lineable;
7674
7678
  function markInvalid(el, syntax, type, message) {
7675
7679
  return (0, dom_1.define)(el, {
7676
7680
  class: void el.classList.add('invalid'),
@@ -7725,8 +7729,8 @@ const memoize_1 = __webpack_require__(1808);
7725
7729
  const array_1 = __webpack_require__(8112);
7726
7730
  var blank;
7727
7731
  (function (blank) {
7728
- blank.line = new RegExp(/^(?:\\?[^\S\n]|&IHN;|<wbr[^\S\n]*>|\\$)+$/.source.replace('IHN', `(?:${normalize_1.invisibleHTMLEntityNames.join('|')})`), 'gm');
7729
- blank.start = new RegExp(/^(?:\\?[^\S\n]|&IHN;|<wbr[^\S\n]*>)+/.source.replace('IHN', `(?:${normalize_1.invisibleHTMLEntityNames.join('|')})`));
7732
+ blank.line = new RegExp(/^(?:\\?[^\S\r\n]|&IHN;|<wbr[^\S\n]*>|\\$)+$/.source.replace('IHN', `(?:${normalize_1.invisibleHTMLEntityNames.join('|')})`), 'gm');
7733
+ blank.start = new RegExp(/^(?:\\?[^\S\r\n]|&IHN;|<wbr[^\S\n]*>)+/.source.replace('IHN', `(?:${normalize_1.invisibleHTMLEntityNames.join('|')})`));
7730
7734
  })(blank || (exports.blank = blank = {}));
7731
7735
  function visualize(parser) {
7732
7736
  return (0, combinator_1.union)([(0, combinator_1.convert)(source => source.replace(blank.line, line => line.replace(/[\\&<]/g, '\x1B$&')), (0, combinator_1.verify)(parser, (ns, rest) => !rest && hasVisible(ns))), (0, combinator_1.some)((0, combinator_1.union)([source_1.linebreak, source_1.unescsource]))]);
package/index.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import 'spica/global';
2
+
1
3
  export * from './src/parser';
2
4
  export * from './src/util';
3
5
  export * from './src/renderer';
package/markdown.d.ts CHANGED
@@ -119,13 +119,8 @@ export namespace MarkdownParser {
119
119
  Parser<HTMLElement | string, Context, [
120
120
  InlineParser,
121
121
  Parser<HTMLElement | string, Context, [
122
- Parser<HTMLElement, Context, [
123
- InlineParser.ExtensionParser.IndexParser,
124
- ]>,
125
- Parser<HTMLElement | string, Context, [
126
- InlineParser.ExtensionParser.IndexerParser,
127
- InlineParser,
128
- ]>,
122
+ InlineParser.ExtensionParser.IndexerParser,
123
+ InlineParser,
129
124
  ]>,
130
125
  ]>,
131
126
  Parser<HTMLUListElement | HTMLOListElement, Context, [
@@ -159,13 +154,8 @@ export namespace MarkdownParser {
159
154
  Parser<HTMLElement | string, Context, [
160
155
  InlineParser,
161
156
  Parser<HTMLElement | string, Context, [
162
- Parser<HTMLElement, Context, [
163
- InlineParser.ExtensionParser.IndexParser,
164
- ]>,
165
- Parser<HTMLElement | string, Context, [
166
- InlineParser.ExtensionParser.IndexerParser,
167
- InlineParser,
168
- ]>,
157
+ InlineParser.ExtensionParser.IndexerParser,
158
+ InlineParser,
169
159
  ]>,
170
160
  ]>,
171
161
  Parser<HTMLUListElement | HTMLOListElement, Context, [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "securemark",
3
- "version": "0.280.4",
3
+ "version": "0.280.6",
4
4
  "description": "Secure markdown renderer working on browsers for user input data.",
5
5
  "private": false,
6
6
  "homepage": "https://github.com/falsandtru/securemark",
@@ -1,4 +1,3 @@
1
- import 'spica/global';
2
1
  import { isArray } from 'spica/alias';
3
2
  import { Parser, Ctx, Tree, Context, eval, exec, check } from '../../data/parser';
4
3
 
@@ -3,6 +3,7 @@ import { union, inits, some, creation, state, block, line, validate, rewrite, op
3
3
  import { inline, indexee, indexer } from '../inline';
4
4
  import { anyline } from '../source';
5
5
  import { State } from '../context';
6
+ import { lineable } from '../util';
6
7
  import { visualize, trimBlankStart, trimNodeEnd } from '../visibility';
7
8
  import { push } from 'spica/array';
8
9
  import { html, defrag } from 'typed-dom/dom';
@@ -26,7 +27,7 @@ const desc: DListParser.DescriptionParser = creation(1, false, block(fmap(open(
26
27
  /^:[^\S\n]+(?=\S)|/,
27
28
  rewrite(
28
29
  some(anyline, /^[~:][^\S\n]+\S/),
29
- visualize(some(union([inline])))),
30
+ visualize(lineable(some(union([inline]))))),
30
31
  true),
31
32
  ns => [html('dd', trimNodeEnd(defrag(ns)))]),
32
33
  false));
@@ -4,6 +4,7 @@ import { Tree, eval } from '../../../combinator/data/parser';
4
4
  import { union, subsequence, inits, some, creation, block, line, validate, fence, rewrite, surround, open, clear, convert, dup, lazy, fmap } from '../../../combinator';
5
5
  import { inline, medialink, media, shortmedia } from '../../inline';
6
6
  import { str, anyline, emptyline, contentline } from '../../source';
7
+ import { lineable } from '../../util';
7
8
  import { visualize, trimBlankStart, trimNodeEnd } from '../../visibility';
8
9
  import { unshift, splice } from 'spica/array';
9
10
  import { html, define, defrag } from 'typed-dom/dom';
@@ -105,7 +106,7 @@ const data: CellParser.DataParser = creation(1, false, block(fmap(open(
105
106
  block(surround(/^[^\n]/, medialink, /^\s*$/)),
106
107
  block(surround(/^[^\n]/, media, /^\s*$/)),
107
108
  block(surround(/^[^\n]/, shortmedia, /^\s*$/)),
108
- open(/^(?:\s*\n|\s)/, visualize(some(inline)), true),
109
+ open(/^(?:\s*\n|\s)/, visualize(lineable(some(inline))), true),
109
110
  ])),
110
111
  true),
111
112
  ns => [html('td', attributes(ns.shift()! as string), trimNodeEnd(defrag(ns)))]),
@@ -1,8 +1,10 @@
1
1
  import { IListParser } from '../block';
2
- import { union, inits, some, creation, block, line, validate, indent, open, fallback, lazy, fmap } from '../../combinator';
2
+ import { union, inits, some, creation, block, line, validate, indent, open, trim, fallback, lazy, fmap } from '../../combinator';
3
3
  import { ulist_, invalid, fillFirstLine } from './ulist';
4
4
  import { olist_ } from './olist';
5
5
  import { inline } from '../inline';
6
+ import { lineable } from '../util';
7
+ import { visualize, trimBlank } from '../visibility';
6
8
  import { html, defrag } from 'typed-dom/dom';
7
9
 
8
10
  export const ilist: IListParser = lazy(() => block(validate(
@@ -14,7 +16,7 @@ export const ilist_: IListParser = lazy(() => block(fmap(validate(
14
16
  some(creation(1, false, union([
15
17
  fmap(fallback(
16
18
  inits([
17
- line(open(/^[-+*](?:$|\s)/, some(inline), true)),
19
+ line(open(/^[-+*](?:$|\s)/, trim(visualize(trimBlank(lineable(some(inline))))), true)),
18
20
  indent(union([ulist_, olist_, ilist_])),
19
21
  ]),
20
22
  invalid),
@@ -81,6 +81,8 @@ describe('Unit: parser/block/olist', () => {
81
81
  assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index::1">1<ol><li id="index::2">2</li><li id="index::3">3</li></ol></li></ol>'], '']);
82
82
  assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index::1">1<ol><li id="index::2">2<ol><li id="index::3">3</li></ol></li></ol></li></ol>'], '']);
83
83
  assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index::1">1<ol><li id="index::2">2</li></ol></li><li id="index::0._3"><span class="invalid"> 0. 3</span></li></ol>'], '']);
84
+ assert.deepStrictEqual(inspect(parser('0. a [#b]')), [['<ol><li id="index::a_b">a <a class="index" href="#index::b">b</a></li></ol>'], '']);
85
+ assert.deepStrictEqual(inspect(parser('0. http://host\\')), [['<ol><li id="index::http://host\\"><a class="url" href="http://host\\" target="_blank">http://host\\</a></li></ol>'], '']);
84
86
  assert.deepStrictEqual(inspect(parser('0. !http://host')), [['<ol><li id="index::!http://host">!<a class="url" href="http://host" target="_blank">http://host</a></li></ol>'], '']);
85
87
  });
86
88
 
@@ -127,10 +129,10 @@ describe('Unit: parser/block/olist', () => {
127
129
  });
128
130
 
129
131
  it('indexer', () => {
130
- assert.deepStrictEqual(inspect(parser('1. [|a]')), [['<ol><li id="index::a"><span class="invalid">a</span></li></ol>'], '']);
132
+ assert.deepStrictEqual(inspect(parser('1. [|a]')), [['<ol><li id="index::[|a]">[|a]</li></ol>'], '']);
131
133
  assert.deepStrictEqual(inspect(parser('1. a [|]')), [['<ol><li>a<span class="indexer" data-index=""></span></li></ol>'], '']);
132
134
  assert.deepStrictEqual(inspect(parser('1. a [|b]')), [['<ol><li id="index::b">a<span class="indexer" data-index="b"></span></li></ol>'], '']);
133
- assert.deepStrictEqual(inspect(parser('1. [ ] [|a]')), [['<ol class="checklist"><li id="index::a"><span class="checkbox">☐</span><span class="invalid">a</span></li></ol>'], '']);
135
+ assert.deepStrictEqual(inspect(parser('1. [ ] [|a]')), [['<ol class="checklist"><li id="index::[|a]"><span class="checkbox">☐</span>[|a]</li></ol>'], '']);
134
136
  assert.deepStrictEqual(inspect(parser('1. [ ] a [|b]')), [['<ol class="checklist"><li id="index::b"><span class="checkbox">☐</span>a<span class="indexer" data-index="b"></span></li></ol>'], '']);
135
137
  assert.deepStrictEqual(inspect(parser('1. a [|]\n 1. c [|d]')), [['<ol><li>a<span class="indexer" data-index=""></span><ol><li id="index::d">c<span class="indexer" data-index="d"></span></li></ol></li></ol>'], '']);
136
138
  assert.deepStrictEqual(inspect(parser('1. a [|b]\n 1. c [|d]')), [['<ol><li id="index::b">a<span class="indexer" data-index="b"></span><ol><li id="index::d">c<span class="indexer" data-index="d"></span></li></ol></li></ol>'], '']);
@@ -1,9 +1,9 @@
1
1
  import { OListParser } from '../block';
2
- import { union, inits, subsequence, some, creation, block, line, validate, indent, focus, open, close, match, trim, fallback, lazy, fmap } from '../../combinator';
2
+ import { union, inits, subsequence, some, creation, block, line, validate, indent, focus, open, match, trim, fallback, lazy, fmap } from '../../combinator';
3
3
  import { ulist_, checkbox, invalid, fillFirstLine } from './ulist';
4
4
  import { ilist_ } from './ilist';
5
5
  import { inline, indexee, indexer } from '../inline';
6
- import { index } from '../inline/extension/index';
6
+ import { lineable } from '../util';
7
7
  import { visualize, trimBlank } from '../visibility';
8
8
  import { memoize } from 'spica/memoize';
9
9
  import { html, define, defrag } from 'typed-dom/dom';
@@ -33,12 +33,9 @@ const list = (type: string, form: string): OListParser.ListParser => fmap(
33
33
  some(creation(1, false, union([
34
34
  indexee(fmap(fallback(
35
35
  inits([
36
- line(open(heads[form], subsequence([checkbox, trim(union([
37
- fmap(close(union([index]), /^$/), ([el]) => [
38
- define(el, { class: void el.classList.add('indexer'), 'data-index': '' })
39
- ]),
40
- visualize(trimBlank(some(union([indexer, inline])))),
41
- ]))]), true)),
36
+ line(open(heads[form], subsequence([
37
+ checkbox,
38
+ trim(visualize(lineable(trimBlank(some(union([indexer, inline]))))))]), true)),
42
39
  indent(union([ulist_, olist_, ilist_])),
43
40
  ]),
44
41
  invalid),
@@ -1,10 +1,10 @@
1
1
  import { ParagraphParser } from '../block';
2
- import { union, some, block, convert, fmap } from '../../combinator';
2
+ import { union, some, block, fmap } from '../../combinator';
3
3
  import { inline } from '../inline';
4
+ import { lineable } from '../util';
4
5
  import { visualize, trimNodeEnd } from '../visibility';
5
6
  import { html, defrag } from 'typed-dom/dom';
6
7
 
7
8
  export const paragraph: ParagraphParser = block(fmap(
8
- convert(source => `\r${source}`,
9
- visualize(some(union([inline])))),
9
+ visualize(lineable(some(union([inline])))),
10
10
  ns => [html('p', trimNodeEnd(defrag(ns)))]));
@@ -4,6 +4,7 @@ import { cite } from './reply/cite';
4
4
  import { quote, syntax as delimiter } from './reply/quote';
5
5
  import { inline } from '../inline';
6
6
  import { anyline } from '../source';
7
+ import { lineable } from '../util';
7
8
  import { visualize, trimNodeEnd } from '../visibility';
8
9
  import { push } from 'spica/array';
9
10
  import { html, defrag } from 'typed-dom/dom';
@@ -25,7 +26,7 @@ export const reply: ReplyParser = block(validate('>', fmap(
25
26
  some(quote),
26
27
  fmap(rewrite(
27
28
  some(anyline, delimiter),
28
- visualize(some(inline))),
29
+ visualize(lineable(some(inline)))),
29
30
  ns => push(ns, [html('br')])),
30
31
  ])),
31
32
  ]),
@@ -56,6 +56,8 @@ describe('Unit: parser/block/ulist', () => {
56
56
  assert.deepStrictEqual(inspect(parser('- 1\n 0.')), [['<ul><li id="index::1">1<ol><li></li></ol></li></ul>'], '']);
57
57
  assert.deepStrictEqual(inspect(parser('- 1\n 0. ')), [['<ul><li id="index::1">1<ol><li></li></ol></li></ul>'], '']);
58
58
  assert.deepStrictEqual(inspect(parser('- 1\n 0. 2')), [['<ul><li id="index::1">1<ol><li id="index::2">2</li></ol></li></ul>'], '']);
59
+ assert.deepStrictEqual(inspect(parser('- a [#b]')), [['<ul><li id="index::a_b">a <a class="index" href="#index::b">b</a></li></ul>'], '']);
60
+ assert.deepStrictEqual(inspect(parser('- http://host\\')), [['<ul><li id="index::http://host\\"><a class="url" href="http://host\\" target="_blank">http://host\\</a></li></ul>'], '']);
59
61
  assert.deepStrictEqual(inspect(parser('- !http://host')), [['<ul><li id="index::!http://host">!<a class="url" href="http://host" target="_blank">http://host</a></li></ul>'], '']);
60
62
  });
61
63
 
@@ -67,10 +69,10 @@ describe('Unit: parser/block/ulist', () => {
67
69
  });
68
70
 
69
71
  it('indexer', () => {
70
- assert.deepStrictEqual(inspect(parser('- [|a]')), [['<ul><li id="index::a"><span class="invalid">a</span></li></ul>'], '']);
72
+ assert.deepStrictEqual(inspect(parser('- [|a]')), [['<ul><li id="index::[|a]">[|a]</li></ul>'], '']);
71
73
  assert.deepStrictEqual(inspect(parser('- a [|]')), [['<ul><li>a<span class="indexer" data-index=""></span></li></ul>'], '']);
72
74
  assert.deepStrictEqual(inspect(parser('- a [|b]')), [['<ul><li id="index::b">a<span class="indexer" data-index="b"></span></li></ul>'], '']);
73
- assert.deepStrictEqual(inspect(parser('- [ ] [|a]')), [['<ul class="checklist"><li id="index::a"><span class="checkbox">☐</span><span class="invalid">a</span></li></ul>'], '']);
75
+ assert.deepStrictEqual(inspect(parser('- [ ] [|a]')), [['<ul class="checklist"><li id="index::[|a]"><span class="checkbox">☐</span>[|a]</li></ul>'], '']);
74
76
  assert.deepStrictEqual(inspect(parser('- [ ] a [|b]')), [['<ul class="checklist"><li id="index::b"><span class="checkbox">☐</span>a<span class="indexer" data-index="b"></span></li></ul>'], '']);
75
77
  assert.deepStrictEqual(inspect(parser('- a [|]\n - c [|d]')), [['<ul><li>a<span class="indexer" data-index=""></span><ul><li id="index::d">c<span class="indexer" data-index="d"></span></li></ul></li></ul>'], '']);
76
78
  assert.deepStrictEqual(inspect(parser('- a [|b]\n - c [|d]')), [['<ul><li id="index::b">a<span class="indexer" data-index="b"></span><ul><li id="index::d">c<span class="indexer" data-index="d"></span></li></ul></li></ul>'], '']);
@@ -1,14 +1,14 @@
1
1
  import { UListParser } from '../block';
2
2
  import { Parser } from '../../combinator/data/parser';
3
- import { union, inits, subsequence, some, creation, block, line, validate, indent, focus, rewrite, open, close, trim, fallback, lazy, fmap } from '../../combinator';
3
+ import { union, inits, subsequence, some, creation, block, line, validate, indent, focus, rewrite, open, trim, fallback, lazy, fmap } from '../../combinator';
4
4
  import { olist_ } from './olist';
5
5
  import { ilist_ } from './ilist';
6
6
  import { inline, indexer, indexee } from '../inline';
7
- import { index } from '../inline/extension/index';
8
7
  import { contentline } from '../source';
8
+ import { lineable } from '../util';
9
9
  import { visualize, trimBlank } from '../visibility';
10
10
  import { unshift } from 'spica/array';
11
- import { html, define, defrag } from 'typed-dom/dom';
11
+ import { html, defrag } from 'typed-dom/dom';
12
12
 
13
13
  export const ulist: UListParser = lazy(() => block(validate(
14
14
  /^-(?=[^\S\n]|\n[^\S\n]*\S)/,
@@ -19,12 +19,10 @@ export const ulist_: UListParser = lazy(() => block(fmap(validate(
19
19
  some(creation(1, false, union([
20
20
  indexee(fmap(fallback(
21
21
  inits([
22
- line(open(/^-(?:$|\s)/, subsequence([checkbox, trim(union([
23
- fmap(close(union([index]), /^$/), ([el]) => [
24
- define(el, { class: void el.classList.add('indexer'), 'data-index': '' })
25
- ]),
26
- visualize(trimBlank(some(union([indexer, inline])))),
27
- ]))]), true)),
22
+ line(open(/^-(?:$|\s)/, subsequence([
23
+ checkbox,
24
+ trim(visualize(lineable(trimBlank(some(union([indexer, inline])))))),
25
+ ]), true)),
28
26
  indent(union([ulist_, olist_, ilist_])),
29
27
  ]),
30
28
  invalid),
@@ -20,18 +20,14 @@ export function identity(id: string | undefined, text: string, type: 'index' | '
20
20
  if (cs.length <= 120) return `${type}:${id ?? ''}:${text}`;
21
21
  switch (type) {
22
22
  case 'index':
23
- return `${type}:${id ?? ''}:${cs.slice(0, 120 - 3).join('')}...`;
24
23
  case 'mark':
25
24
  return `${type}:${id ?? ''}:${cs.slice(0, 38).join('')}...${cs.slice(cs.length / 2 - 38 / 2 | 0).slice(0, 38).join('')}...${cs.slice(-38).join('')}`;
26
25
  }
27
26
  assert(false);
28
27
  }
29
28
  assert(identity(undefined, '0'.repeat(120 - 1) + 1)!.slice(7) === '0'.repeat(120 - 1) + 1);
30
- assert(identity(undefined, '0'.repeat(120) + 1)!.slice(7) === '0'.repeat(117) + '...');
31
- assert(identity(undefined, '0'.repeat(200) + 1)!.slice(7) === '0'.repeat(117) + '...');
32
- assert(identity(undefined, '0'.repeat(120 - 1) + 1, 'mark')!.slice(6) === '0'.repeat(120 - 1) + 1);
33
- assert(identity(undefined, '0'.repeat(41) + '1'.repeat(38) + '2'.repeat(41) + 3, 'mark')!.slice(6) === '0'.repeat(38) + '...' + '1'.repeat(38) + '...' + '2'.repeat(38 - 1) + 3);
34
- assert(identity(undefined, '0'.repeat(81) + '1'.repeat(38) + '2'.repeat(81) + 3, 'mark')!.slice(6) === '0'.repeat(38) + '...' + '1'.repeat(38) + '...' + '2'.repeat(38 - 1) + 3);
29
+ assert(identity(undefined, '0'.repeat(41) + '1'.repeat(38) + '2'.repeat(41) + 3)!.slice(7) === '0'.repeat(38) + '...' + '1'.repeat(38) + '...' + '2'.repeat(38 - 1) + 3);
30
+ assert(identity(undefined, '0'.repeat(81) + '1'.repeat(38) + '2'.repeat(81) + 3)!.slice(7) === '0'.repeat(38) + '...' + '1'.repeat(38) + '...' + '2'.repeat(38 - 1) + 3);
35
31
 
36
32
  export function index(source: Element, optional = false): string {
37
33
  assert(!source.matches('.indexer'));
@@ -1,5 +1,12 @@
1
+ import { Parser } from '../combinator/data/parser';
2
+ import { convert } from '../combinator';
1
3
  import { define } from 'typed-dom/dom';
2
4
 
5
+ export function lineable<P extends Parser<HTMLElement | string>>(parser: P): P;
6
+ export function lineable<T extends HTMLElement | string>(parser: Parser<T>): Parser<T> {
7
+ return convert(source => `\r${source}`, parser);
8
+ }
9
+
3
10
  export function markInvalid<T extends Element>(
4
11
  el: T,
5
12
  syntax: string,
@@ -9,11 +9,11 @@ import { push } from 'spica/array';
9
9
 
10
10
  export namespace blank {
11
11
  export const line = new RegExp(
12
- /^(?:\\?[^\S\n]|&IHN;|<wbr[^\S\n]*>|\\$)+$/.source
12
+ /^(?:\\?[^\S\r\n]|&IHN;|<wbr[^\S\n]*>|\\$)+$/.source
13
13
  .replace('IHN', `(?:${invisibleHTMLEntityNames.join('|')})`),
14
14
  'gm');
15
15
  export const start = new RegExp(
16
- /^(?:\\?[^\S\n]|&IHN;|<wbr[^\S\n]*>)+/.source
16
+ /^(?:\\?[^\S\r\n]|&IHN;|<wbr[^\S\n]*>)+/.source
17
17
  .replace('IHN', `(?:${invisibleHTMLEntityNames.join('|')})`));
18
18
  }
19
19