securemark 0.233.2 → 0.234.1

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,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.234.1
4
+
5
+ - Fix emstrong parser, emphasis parser, strong parser, and mark parser.
6
+
7
+ ## 0.234.0
8
+
9
+ - Extend anchor syntax.
10
+ - Refine comment parser.
11
+
12
+ ## 0.233.3
13
+
14
+ - Refactoring.
15
+
3
16
  ## 0.233.2
4
17
 
5
18
  - Refactoring.
@@ -1,4 +1,4 @@
1
- /*! securemark v0.233.2 https://github.com/falsandtru/securemark | (c) 2017, falsandtru | UNLICENSED */
1
+ /*! securemark v0.234.1 https://github.com/falsandtru/securemark | (c) 2017, falsandtru | UNLICENSED */
2
2
  require = function () {
3
3
  function r(e, n, t) {
4
4
  function o(i, f) {
@@ -5844,8 +5844,14 @@ require = function () {
5844
5844
  const source_1 = _dereq_('../../source');
5845
5845
  const typed_dom_1 = _dereq_('typed-dom');
5846
5846
  exports.cite = (0, combinator_1.creator)((0, combinator_1.line)((0, combinator_1.fmap)((0, combinator_1.validate)('>>', (0, combinator_1.reverse)((0, combinator_1.tails)([
5847
- (0, source_1.str)(/^>*(?=>>)/),
5848
- (0, combinator_1.validate)(new RegExp(`${ anchor_1.syntax.source }[^\S\n]*(?:$|\n)`), anchor_1.anchor)
5847
+ (0, source_1.str)(/^>*(?=>>[^>\s]+[^\S\n]*(?:$|\n))/),
5848
+ (0, combinator_1.union)([
5849
+ anchor_1.anchor,
5850
+ (0, combinator_1.focus)(/^>>\.[^\S\n]*(?:$|\n)/, () => [
5851
+ [(0, typed_dom_1.html)('a', { class: 'anchor' }, '>>.')],
5852
+ ''
5853
+ ])
5854
+ ])
5849
5855
  ]))), ([el, quotes = '']) => [
5850
5856
  (0, typed_dom_1.html)('span', { class: 'cite' }, (0, typed_dom_1.defrag)([
5851
5857
  `${ quotes }>`,
@@ -6337,24 +6343,21 @@ require = function () {
6337
6343
  function (_dereq_, module, exports) {
6338
6344
  'use strict';
6339
6345
  Object.defineProperty(exports, '__esModule', { value: true });
6340
- exports.anchor = exports.syntax = void 0;
6346
+ exports.anchor = void 0;
6341
6347
  const combinator_1 = _dereq_('../../../combinator');
6342
6348
  const link_1 = _dereq_('../link');
6343
- const source_1 = _dereq_('../../source');
6344
6349
  const typed_dom_1 = _dereq_('typed-dom');
6345
- exports.syntax = /^>>[0-9a-z]+(?:-[0-9a-z]+)*(?![0-9A-Za-z@#:])/;
6346
- exports.anchor = (0, combinator_1.lazy)(() => (0, combinator_1.validate)('>>', (0, combinator_1.fmap)((0, combinator_1.rewrite)((0, source_1.str)(exports.syntax), (0, combinator_1.context)({
6350
+ exports.anchor = (0, combinator_1.lazy)(() => (0, combinator_1.validate)('>>', (0, combinator_1.fmap)((0, combinator_1.focus)(/^>>(?:[A-Za-z][0-9A-Za-z]*(?:-[0-9A-Za-z]+)*\/)?[0-9A-Za-z]+(?:-[0-9A-Za-z]+)*(?![0-9A-Za-z@#:])/, (0, combinator_1.context)({
6347
6351
  syntax: {
6348
6352
  inline: {
6349
6353
  link: true,
6350
6354
  autolink: false
6351
6355
  }
6352
6356
  }
6353
- }, (0, combinator_1.convert)(source => `[${ source }]{ ?comment=${ source.slice(2) } }`, (0, combinator_1.union)([link_1.link])))), ([el]) => [(0, typed_dom_1.define)(el, { class: 'anchor' })])));
6357
+ }, (0, combinator_1.convert)(source => `[${ source }]{ ${ source.includes('/') ? `/@${ source.slice(2).replace('/', '/timeline/') }` : `?at=${ source.slice(2) }` } }`, (0, combinator_1.union)([link_1.link])))), ([el]) => [(0, typed_dom_1.define)(el, { class: 'anchor' })])));
6354
6358
  },
6355
6359
  {
6356
6360
  '../../../combinator': 27,
6357
- '../../source': 128,
6358
6361
  '../link': 114,
6359
6362
  'typed-dom': 26
6360
6363
  }
@@ -6603,24 +6606,25 @@ require = function () {
6603
6606
  'use strict';
6604
6607
  Object.defineProperty(exports, '__esModule', { value: true });
6605
6608
  exports.comment = void 0;
6606
- const parser_1 = _dereq_('../../combinator/data/parser');
6607
6609
  const combinator_1 = _dereq_('../../combinator');
6608
6610
  const inline_1 = _dereq_('../inline');
6609
6611
  const source_1 = _dereq_('../source');
6610
6612
  const typed_dom_1 = _dereq_('typed-dom');
6611
6613
  const memoize_1 = _dereq_('spica/memoize');
6612
6614
  const array_1 = _dereq_('spica/array');
6613
- exports.comment = (0, combinator_1.lazy)(() => (0, combinator_1.creator)((0, combinator_1.validate)('[#', (0, combinator_1.match)(/^(?=\[(#+)\s)/, (0, memoize_1.memoize)(([, fence], closer = new RegExp(String.raw`^\s+${ fence }\]`)) => (0, combinator_1.surround)((0, source_1.str)(/^\[(\S+)\s+(?!\1\])/), (0, combinator_1.union)([(0, combinator_1.some)(inline_1.inline, closer)]), (0, source_1.str)(closer), true, ([, bs = []], rest) => [
6614
- [(0, typed_dom_1.html)('span', { class: 'comment' }, (0, typed_dom_1.defrag)((0, array_1.push)((0, array_1.unshift)([`[${ fence } `], bs), [` ${ fence }]`])))],
6615
+ exports.comment = (0, combinator_1.lazy)(() => (0, combinator_1.creator)((0, combinator_1.validate)('[#', (0, combinator_1.match)(/^(?=\[(#+)\s)/, (0, memoize_1.memoize)(([, fence]) => (0, combinator_1.surround)((0, combinator_1.open)((0, source_1.str)(`[${ fence }`), (0, combinator_1.some)(source_1.text, new RegExp(String.raw`^\s+${ fence }\]|^\S`)), true), (0, combinator_1.union)([(0, combinator_1.some)(inline_1.inline, new RegExp(String.raw`^\s+${ fence }\]`))]), (0, combinator_1.close)((0, combinator_1.some)(source_1.text, /^\S/), (0, source_1.str)(`${ fence }]`)), true, ([as, bs = [], cs], rest) => [
6616
+ [(0, typed_dom_1.html)('span', { class: 'comment' }, [
6617
+ (0, typed_dom_1.html)('input', { type: 'checkbox' }),
6618
+ (0, typed_dom_1.html)('span', (0, typed_dom_1.defrag)((0, array_1.push)((0, array_1.unshift)(as, bs), cs)))
6619
+ ])],
6615
6620
  rest
6616
- ], ([as, bs = []], rest, context) => [
6617
- (0, array_1.unshift)((0, array_1.pop)((0, parser_1.eval)((0, combinator_1.some)(source_1.text)(`${ as[0] }!`, context)))[0], bs),
6621
+ ], ([as, bs = []], rest) => [
6622
+ (0, array_1.unshift)(as, bs),
6618
6623
  rest
6619
6624
  ]), ([, fence]) => fence)))));
6620
6625
  },
6621
6626
  {
6622
6627
  '../../combinator': 27,
6623
- '../../combinator/data/parser': 47,
6624
6628
  '../inline': 88,
6625
6629
  '../source': 128,
6626
6630
  'spica/array': 6,
@@ -6670,7 +6674,11 @@ require = function () {
6670
6674
  const array_1 = _dereq_('spica/array');
6671
6675
  exports.emphasis = (0, combinator_1.lazy)(() => (0, combinator_1.creator)((0, combinator_1.surround)((0, combinator_1.close)((0, source_1.str)('*'), /^(?!\*)/), (0, util_1.startTight)((0, combinator_1.some)((0, combinator_1.union)([
6672
6676
  strong_1.strong,
6673
- (0, combinator_1.some)(inline_1.inline, '*')
6677
+ (0, combinator_1.some)(inline_1.inline, /^\s*\*/),
6678
+ (0, combinator_1.sequence)([
6679
+ (0, combinator_1.some)(inline_1.inline, '*'),
6680
+ inline_1.inline
6681
+ ])
6674
6682
  ]))), (0, source_1.str)('*'), false, ([as, bs, cs], rest) => (0, util_1.isEndTightNodes)(bs) ? [
6675
6683
  [(0, typed_dom_1.html)('em', (0, typed_dom_1.defrag)(bs))],
6676
6684
  rest
@@ -6699,11 +6707,33 @@ require = function () {
6699
6707
  exports.emstrong = void 0;
6700
6708
  const combinator_1 = _dereq_('../../combinator');
6701
6709
  const inline_1 = _dereq_('../inline');
6710
+ const strong_1 = _dereq_('./strong');
6702
6711
  const source_1 = _dereq_('../source');
6703
6712
  const util_1 = _dereq_('../util');
6704
6713
  const typed_dom_1 = _dereq_('typed-dom');
6705
6714
  const array_1 = _dereq_('spica/array');
6706
- exports.emstrong = (0, combinator_1.lazy)(() => (0, combinator_1.creator)((0, combinator_1.surround)((0, source_1.str)('***'), (0, util_1.startTight)((0, combinator_1.union)([(0, combinator_1.some)(inline_1.inline, '*')])), (0, source_1.str)(/^\*{1,3}/), false, ([as, bs, cs], rest, context) => {
6715
+ const substrong = (0, combinator_1.lazy)(() => (0, combinator_1.some)((0, combinator_1.union)([
6716
+ (0, combinator_1.some)(inline_1.inline, /^\s*\*\*/),
6717
+ (0, combinator_1.sequence)([
6718
+ (0, combinator_1.some)(inline_1.inline, '*'),
6719
+ inline_1.inline
6720
+ ])
6721
+ ])));
6722
+ const subemphasis = (0, combinator_1.lazy)(() => (0, combinator_1.some)((0, combinator_1.union)([
6723
+ strong_1.strong,
6724
+ (0, combinator_1.some)(inline_1.inline, /^\s*\*/),
6725
+ (0, combinator_1.sequence)([
6726
+ (0, combinator_1.some)(inline_1.inline, '*'),
6727
+ inline_1.inline
6728
+ ])
6729
+ ])));
6730
+ exports.emstrong = (0, combinator_1.lazy)(() => (0, combinator_1.creator)((0, combinator_1.surround)((0, source_1.str)('***'), (0, util_1.startTight)((0, combinator_1.some)((0, combinator_1.union)([
6731
+ (0, combinator_1.some)(inline_1.inline, /^\s*\*/),
6732
+ (0, combinator_1.sequence)([
6733
+ (0, combinator_1.some)(inline_1.inline, '*'),
6734
+ inline_1.inline
6735
+ ])
6736
+ ]))), (0, source_1.str)(/^\*{1,3}/), false, ([as, bs, cs], rest, context) => {
6707
6737
  var _a, _b;
6708
6738
  if (!(0, util_1.isEndTightNodes)(bs))
6709
6739
  return [
@@ -6712,7 +6742,7 @@ require = function () {
6712
6742
  ];
6713
6743
  switch (cs[0]) {
6714
6744
  case '*':
6715
- return (_a = (0, combinator_1.bind)((0, combinator_1.union)([(0, combinator_1.some)(inline_1.inline, '**')]), (ds, rest) => rest.slice(0, 2) === '**' && (0, util_1.isEndTightNodes)(ds) ? [
6745
+ return (_a = (0, combinator_1.bind)(substrong, (ds, rest) => rest.slice(0, 2) === '**' && (0, util_1.isEndTightNodes)(ds) ? [
6716
6746
  [(0, typed_dom_1.html)('strong', (0, array_1.unshift)([(0, typed_dom_1.html)('em', (0, typed_dom_1.defrag)(bs))], (0, typed_dom_1.defrag)(ds)))],
6717
6747
  rest.slice(2)
6718
6748
  ] : [
@@ -6729,7 +6759,7 @@ require = function () {
6729
6759
  rest
6730
6760
  ];
6731
6761
  case '**':
6732
- return (_b = (0, combinator_1.bind)((0, combinator_1.union)([(0, combinator_1.some)(inline_1.inline, '*')]), (ds, rest) => rest.slice(0, 1) === '*' && (0, util_1.isEndTightNodes)(ds) ? [
6762
+ return (_b = (0, combinator_1.bind)(subemphasis, (ds, rest) => rest.slice(0, 1) === '*' && (0, util_1.isEndTightNodes)(ds) ? [
6733
6763
  [(0, typed_dom_1.html)('em', (0, array_1.unshift)([(0, typed_dom_1.html)('strong', (0, typed_dom_1.defrag)(bs))], (0, typed_dom_1.defrag)(ds)))],
6734
6764
  rest.slice(1)
6735
6765
  ] : [
@@ -6761,6 +6791,7 @@ require = function () {
6761
6791
  '../inline': 88,
6762
6792
  '../source': 128,
6763
6793
  '../util': 134,
6794
+ './strong': 121,
6764
6795
  'spica/array': 6,
6765
6796
  'typed-dom': 26
6766
6797
  }
@@ -7281,13 +7312,13 @@ require = function () {
7281
7312
  const url_1 = _dereq_('spica/url');
7282
7313
  const optspec = { rel: ['nofollow'] };
7283
7314
  (0, alias_1.ObjectSetPrototypeOf)(optspec, null);
7284
- exports.link = (0, combinator_1.lazy)(() => (0, combinator_1.creator)(10, (0, combinator_1.bind)((0, combinator_1.reverse)((0, combinator_1.validate)([
7315
+ exports.link = (0, combinator_1.lazy)(() => (0, combinator_1.creator)(10, (0, combinator_1.bind)((0, combinator_1.validate)([
7285
7316
  '[',
7286
7317
  '{'
7287
7318
  ], '}', '\n', (0, combinator_1.guard)(context => {
7288
7319
  var _a, _b, _c;
7289
7320
  return (_c = (_b = (_a = context.syntax) === null || _a === void 0 ? void 0 : _a.inline) === null || _b === void 0 ? void 0 : _b.link) !== null && _c !== void 0 ? _c : true;
7290
- }, (0, combinator_1.tails)([
7321
+ }, (0, combinator_1.reverse)((0, combinator_1.tails)([
7291
7322
  (0, combinator_1.context)({ syntax: { inline: { link: false } } }, (0, combinator_1.dup)((0, combinator_1.union)([
7292
7323
  (0, combinator_1.surround)('[', inline_1.media, ']'),
7293
7324
  (0, combinator_1.surround)('[', inline_1.shortmedia, ']'),
@@ -7418,7 +7449,13 @@ require = function () {
7418
7449
  const util_1 = _dereq_('../util');
7419
7450
  const typed_dom_1 = _dereq_('typed-dom');
7420
7451
  const array_1 = _dereq_('spica/array');
7421
- exports.mark = (0, combinator_1.lazy)(() => (0, combinator_1.creator)((0, combinator_1.surround)((0, source_1.str)('=='), (0, util_1.startTight)((0, combinator_1.union)([(0, combinator_1.some)(inline_1.inline, '==')])), (0, source_1.str)('=='), false, ([as, bs, cs], rest) => (0, util_1.isEndTightNodes)(bs) ? [
7452
+ exports.mark = (0, combinator_1.lazy)(() => (0, combinator_1.creator)((0, combinator_1.surround)((0, source_1.str)('=='), (0, util_1.startTight)((0, combinator_1.some)((0, combinator_1.union)([
7453
+ (0, combinator_1.some)(inline_1.inline, /^\s*==/),
7454
+ (0, combinator_1.sequence)([
7455
+ (0, combinator_1.some)(inline_1.inline, '='),
7456
+ inline_1.inline
7457
+ ])
7458
+ ]))), (0, source_1.str)('=='), false, ([as, bs, cs], rest) => (0, util_1.isEndTightNodes)(bs) ? [
7422
7459
  [(0, typed_dom_1.html)('mark', (0, typed_dom_1.defrag)(bs))],
7423
7460
  rest
7424
7461
  ] : [
@@ -7445,11 +7482,10 @@ require = function () {
7445
7482
  exports.math = void 0;
7446
7483
  const combinator_1 = _dereq_('../../combinator');
7447
7484
  const source_1 = _dereq_('../source');
7448
- const util_1 = _dereq_('../util');
7449
7485
  const typed_dom_1 = _dereq_('typed-dom');
7450
7486
  const disallowedCommand = /\\(?:begin|tiny|huge|large)(?![0-9a-z])/i;
7451
7487
  exports.math = (0, combinator_1.lazy)(() => (0, combinator_1.creator)((0, combinator_1.validate)('$', (0, combinator_1.rewrite)((0, combinator_1.union)([
7452
- (0, combinator_1.surround)('$', (0, combinator_1.verify)((0, source_1.str)(/^(?![\s{}#$%&]|\d+(?:[,.]\d+)*[^-+*/=<>^_~\\$]|-[\da-z]|[a-z]+-)(?:\\\$|[\x20-\x23\x25-\x7E])+/i), util_1.isEndTightNodes), /^\$(?![0-9a-z])/i),
7488
+ (0, combinator_1.surround)('$', (0, source_1.str)(/^(?![\s{}#$%&]|\d+(?:[,.]\d+)*[^-+*/=<>^_~\\$]|-[\da-z]|[a-z]+-)(?:\\\$|\x20(?!\$)|[\x21-\x23\x25-\x7E])+/i), /^\$(?![0-9a-z])/i),
7453
7489
  (0, combinator_1.surround)('$', bracket, '$')
7454
7490
  ]), (source, {
7455
7491
  caches: {math: cache} = {}
@@ -7478,7 +7514,6 @@ require = function () {
7478
7514
  {
7479
7515
  '../../combinator': 27,
7480
7516
  '../source': 128,
7481
- '../util': 134,
7482
7517
  'typed-dom': 26
7483
7518
  }
7484
7519
  ],
@@ -7832,16 +7867,17 @@ require = function () {
7832
7867
  exports.strong = void 0;
7833
7868
  const combinator_1 = _dereq_('../../combinator');
7834
7869
  const inline_1 = _dereq_('../inline');
7835
- const emphasis_1 = _dereq_('./emphasis');
7836
7870
  const source_1 = _dereq_('../source');
7837
7871
  const util_1 = _dereq_('../util');
7838
7872
  const typed_dom_1 = _dereq_('typed-dom');
7839
7873
  const array_1 = _dereq_('spica/array');
7840
7874
  exports.strong = (0, combinator_1.lazy)(() => (0, combinator_1.creator)((0, combinator_1.surround)((0, combinator_1.close)((0, source_1.str)('**'), /^(?!\*)/), (0, util_1.startTight)((0, combinator_1.some)((0, combinator_1.union)([
7841
- emphasis_1.emphasis,
7842
- (0, combinator_1.some)(inline_1.inline, '*'),
7843
- (0, source_1.str)('*')
7844
- ]), '**')), (0, source_1.str)('**'), false, ([as, bs, cs], rest) => (0, util_1.isEndTightNodes)(bs) ? [
7875
+ (0, combinator_1.some)(inline_1.inline, /^\s*\*\*/),
7876
+ (0, combinator_1.sequence)([
7877
+ (0, combinator_1.some)(inline_1.inline, '*'),
7878
+ inline_1.inline
7879
+ ])
7880
+ ]))), (0, source_1.str)('**'), false, ([as, bs, cs], rest) => (0, util_1.isEndTightNodes)(bs) ? [
7845
7881
  [(0, typed_dom_1.html)('strong', (0, typed_dom_1.defrag)(bs))],
7846
7882
  rest
7847
7883
  ] : [
@@ -7857,7 +7893,6 @@ require = function () {
7857
7893
  '../inline': 88,
7858
7894
  '../source': 128,
7859
7895
  '../util': 134,
7860
- './emphasis': 102,
7861
7896
  'spica/array': 6,
7862
7897
  'typed-dom': 26
7863
7898
  }
@@ -8732,7 +8767,6 @@ require = function () {
8732
8767
  case '\t':
8733
8768
  case '\n':
8734
8769
  return false;
8735
- case '\x1B':
8736
8770
  case '\\':
8737
8771
  return ((_a = source[1]) === null || _a === void 0 ? void 0 : _a.trimStart()) !== '';
8738
8772
  case '&':
@@ -8760,11 +8794,7 @@ require = function () {
8760
8794
  function isEndTightNodes(nodes) {
8761
8795
  if (nodes.length === 0)
8762
8796
  return true;
8763
- for (let i = nodes.length; i--;) {
8764
- const node = nodes[i];
8765
- return isVisible(node, -1);
8766
- }
8767
- return false;
8797
+ return isVisible(nodes[nodes.length - 1], -1);
8768
8798
  }
8769
8799
  exports.isEndTightNodes = isEndTightNodes;
8770
8800
  function isVisible(node, strpos) {
package/markdown.d.ts CHANGED
@@ -572,7 +572,10 @@ export namespace MarkdownParser {
572
572
  Block<'reply/cite'>,
573
573
  Parser<HTMLSpanElement | HTMLBRElement, Context, [
574
574
  SourceParser.StrParser,
575
- InlineParser.AutolinkParser.AnchorParser,
575
+ Parser<HTMLAnchorElement, Context, [
576
+ InlineParser.AutolinkParser.AnchorParser,
577
+ Parser<HTMLAnchorElement, Context, []>,
578
+ ]>,
576
579
  ]> {
577
580
  }
578
581
  export interface QuoteParser extends
@@ -967,6 +970,10 @@ export namespace MarkdownParser {
967
970
  Inline<'mark'>,
968
971
  Parser<HTMLElement | string, Context, [
969
972
  InlineParser,
973
+ Parser<HTMLElement | string, Context, [
974
+ InlineParser,
975
+ InlineParser,
976
+ ]>,
970
977
  ]> {
971
978
  }
972
979
  export interface EmStrongParser extends
@@ -974,15 +981,21 @@ export namespace MarkdownParser {
974
981
  Inline<'emstrong'>,
975
982
  Parser<HTMLElement | string, Context, [
976
983
  InlineParser,
984
+ Parser<HTMLElement | string, Context, [
985
+ InlineParser,
986
+ InlineParser,
987
+ ]>,
977
988
  ]> {
978
989
  }
979
990
  export interface StrongParser extends
980
991
  // **abc**
981
992
  Inline<'strong'>,
982
993
  Parser<HTMLElement | string, Context, [
983
- EmphasisParser,
984
994
  InlineParser,
985
- SourceParser.StrParser,
995
+ Parser<HTMLElement | string, Context, [
996
+ InlineParser,
997
+ InlineParser,
998
+ ]>,
986
999
  ]> {
987
1000
  }
988
1001
  export interface EmphasisParser extends
@@ -991,6 +1004,10 @@ export namespace MarkdownParser {
991
1004
  Parser<HTMLElement | string, Context, [
992
1005
  StrongParser,
993
1006
  InlineParser,
1007
+ Parser<HTMLElement | string, Context, [
1008
+ InlineParser,
1009
+ InlineParser,
1010
+ ]>,
994
1011
  ]> {
995
1012
  }
996
1013
  export interface CodeParser extends
@@ -1057,7 +1074,7 @@ export namespace MarkdownParser {
1057
1074
  export interface UrlParser extends
1058
1075
  // https://host
1059
1076
  Inline<'url'>,
1060
- Parser<HTMLElement, Context, [
1077
+ Parser<HTMLAnchorElement, Context, [
1061
1078
  LinkParser,
1062
1079
  ]> {
1063
1080
  }
package/package-lock.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "securemark",
3
- "version": "0.233.2",
3
+ "version": "0.234.1",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
@@ -3030,9 +3030,9 @@
3030
3030
  "dev": true
3031
3031
  },
3032
3032
  "electron-to-chromium": {
3033
- "version": "1.4.94",
3034
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.94.tgz",
3035
- "integrity": "sha512-CoOKsuACoa0PAG3hQXxbh/XDiFcjGuSyGKUi09cjMHOt6RCi7/EXgXhaFF3I+aC89Omudqmkzd0YOQKxwtf/Bg==",
3033
+ "version": "1.4.96",
3034
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.96.tgz",
3035
+ "integrity": "sha512-DPNjvNGPabv6FcyjzLAN4C0psN/GgD9rSGvMTuv81SeXG/EX3mCz0wiw9N1tUEnfQXYCJi3H8M0oFPRziZh7rw==",
3036
3036
  "dev": true
3037
3037
  },
3038
3038
  "elliptic": {
@@ -3210,9 +3210,9 @@
3210
3210
  }
3211
3211
  },
3212
3212
  "es-abstract": {
3213
- "version": "1.19.1",
3214
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
3215
- "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
3213
+ "version": "1.19.2",
3214
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz",
3215
+ "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==",
3216
3216
  "dev": true,
3217
3217
  "requires": {
3218
3218
  "call-bind": "^1.0.2",
@@ -3221,15 +3221,15 @@
3221
3221
  "get-intrinsic": "^1.1.1",
3222
3222
  "get-symbol-description": "^1.0.0",
3223
3223
  "has": "^1.0.3",
3224
- "has-symbols": "^1.0.2",
3224
+ "has-symbols": "^1.0.3",
3225
3225
  "internal-slot": "^1.0.3",
3226
3226
  "is-callable": "^1.2.4",
3227
- "is-negative-zero": "^2.0.1",
3227
+ "is-negative-zero": "^2.0.2",
3228
3228
  "is-regex": "^1.1.4",
3229
3229
  "is-shared-array-buffer": "^1.0.1",
3230
3230
  "is-string": "^1.0.7",
3231
- "is-weakref": "^1.0.1",
3232
- "object-inspect": "^1.11.0",
3231
+ "is-weakref": "^1.0.2",
3232
+ "object-inspect": "^1.12.0",
3233
3233
  "object-keys": "^1.1.1",
3234
3234
  "object.assign": "^4.1.2",
3235
3235
  "string.prototype.trimend": "^1.0.4",
@@ -11500,9 +11500,9 @@
11500
11500
  },
11501
11501
  "dependencies": {
11502
11502
  "ansi-regex": {
11503
- "version": "3.0.0",
11504
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
11505
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
11503
+ "version": "3.0.1",
11504
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
11505
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
11506
11506
  "dev": true
11507
11507
  },
11508
11508
  "is-fullwidth-code-point": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "securemark",
3
- "version": "0.233.2",
3
+ "version": "0.234.1",
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",
@@ -8,7 +8,8 @@ export interface Ctx {
8
8
  export type Parser<T, C extends Ctx = Ctx, D extends Parser<unknown, C>[] = any>
9
9
  = (source: string, context: C) => Result<T, C, D>;
10
10
  export type Result<T, C extends Ctx = Ctx, D extends Parser<unknown, C>[] = any>
11
- = readonly [T[], string, C?, D?]
11
+ = readonly [T[], string, C, D]
12
+ | readonly [T[], string]
12
13
  | undefined;
13
14
  export type Tree<P extends Parser<unknown>> = P extends Parser<infer T> ? T : never;
14
15
  export type SubParsers<P extends Parser<unknown>> = P extends Parser<unknown, any, infer D> ? D : never;
@@ -53,10 +53,10 @@ describe('Unit: parser/api/parse', () => {
53
53
  ['<p>&lt;wbr&gt;<br>a</p>']);
54
54
  assert.deepStrictEqual(
55
55
  [...parse('[#\n<wbr>\n#]').children].map(el => el.outerHTML),
56
- ['<p><span class="comment">[# &lt;wbr&gt; #]</span></p>']);
56
+ ['<p><span class="comment"><input type="checkbox"><span>[#<br>&lt;wbr&gt;<br>#]</span></span></p>']);
57
57
  assert.deepStrictEqual(
58
58
  [...parse('[#\n<wbr>\n#]\na').children].map(el => el.outerHTML),
59
- ['<p><span class="comment">[# &lt;wbr&gt; #]</span><br>a</p>']);
59
+ ['<p><span class="comment"><input type="checkbox"><span>[#<br>&lt;wbr&gt;<br>#]</span></span><br>a</p>']);
60
60
  });
61
61
 
62
62
  it('linebreak', () => {
@@ -25,13 +25,13 @@ describe('Unit: parser/block/blockquote', () => {
25
25
  assert.deepStrictEqual(inspect(parser('> a\nb')), [['<blockquote><pre>a<br>b</pre></blockquote>'], '']);
26
26
  assert.deepStrictEqual(inspect(parser('> a\n b ')), [['<blockquote><pre>a<br> b </pre></blockquote>'], '']);
27
27
  assert.deepStrictEqual(inspect(parser('> a\n>')), [['<blockquote><pre>a<br></pre></blockquote>'], '']);
28
- assert.deepStrictEqual(inspect(parser('> a\n>>1')), [['<blockquote><pre>a<br><a href="?comment=1" class="anchor">&gt;&gt;1</a></pre></blockquote>'], '']);
28
+ assert.deepStrictEqual(inspect(parser('> a\n>>1')), [['<blockquote><pre>a<br><a href="?at=1" class="anchor">&gt;&gt;1</a></pre></blockquote>'], '']);
29
29
  assert.deepStrictEqual(inspect(parser('> a\n> b ')), [['<blockquote><pre>a<br>b </pre></blockquote>'], '']);
30
30
  assert.deepStrictEqual(inspect(parser('> a\n>\n')), [['<blockquote><pre>a<br></pre></blockquote>'], '']);
31
31
  assert.deepStrictEqual(inspect(parser('> a\n>\nb')), [['<blockquote><pre>a<br><br>b</pre></blockquote>'], '']);
32
32
  assert.deepStrictEqual(inspect(parser('> a\n>\n b ')), [['<blockquote><pre>a<br><br> b </pre></blockquote>'], '']);
33
33
  assert.deepStrictEqual(inspect(parser('> a\n>\n>')), [['<blockquote><pre>a<br><br></pre></blockquote>'], '']);
34
- assert.deepStrictEqual(inspect(parser('> a\n>\n>>1')), [['<blockquote><pre>a<br><br><a href="?comment=1" class="anchor">&gt;&gt;1</a></pre></blockquote>'], '']);
34
+ assert.deepStrictEqual(inspect(parser('> a\n>\n>>1')), [['<blockquote><pre>a<br><br><a href="?at=1" class="anchor">&gt;&gt;1</a></pre></blockquote>'], '']);
35
35
  assert.deepStrictEqual(inspect(parser('> a\n>\n> b ')), [['<blockquote><pre>a<br><br>b </pre></blockquote>'], '']);
36
36
  assert.deepStrictEqual(inspect(parser('> a\\\nb')), [['<blockquote><pre>a\\<br>b</pre></blockquote>'], '']);
37
37
  assert.deepStrictEqual(inspect(parser('> a ')), [['<blockquote><pre> a </pre></blockquote>'], '']);
@@ -44,8 +44,8 @@ describe('Unit: parser/block/blockquote', () => {
44
44
  assert.deepStrictEqual(inspect(parser('> !http://host')), [['<blockquote><pre>!<a href="http://host" target="_blank">http://host</a></pre></blockquote>'], '']);
45
45
  assert.deepStrictEqual(inspect(parser('> #a')), [['<blockquote><pre><a href="/hashtags/a" class="hashtag">#a</a></pre></blockquote>'], '']);
46
46
  assert.deepStrictEqual(inspect(parser('> @a#b')), [['<blockquote><pre><a href="/@a?ch=b" class="channel">@a#b</a></pre></blockquote>'], '']);
47
- assert.deepStrictEqual(inspect(parser('> >>1\n> > b')), [['<blockquote><pre><a href="?comment=1" class="anchor">&gt;&gt;1</a><br>&gt; b</pre></blockquote>'], '']);
48
- assert.deepStrictEqual(inspect(parser('> >>1\n> > b\n> c')), [['<blockquote><pre><a href="?comment=1" class="anchor">&gt;&gt;1</a><br>&gt; b<br>c</pre></blockquote>'], '']);
47
+ assert.deepStrictEqual(inspect(parser('> >>1\n> > b')), [['<blockquote><pre><a href="?at=1" class="anchor">&gt;&gt;1</a><br>&gt; b</pre></blockquote>'], '']);
48
+ assert.deepStrictEqual(inspect(parser('> >>1\n> > b\n> c')), [['<blockquote><pre><a href="?at=1" class="anchor">&gt;&gt;1</a><br>&gt; b<br>c</pre></blockquote>'], '']);
49
49
  });
50
50
 
51
51
  it('nest', () => {
@@ -25,35 +25,41 @@ describe('Unit: parser/block/paragraph', () => {
25
25
  assert.deepStrictEqual(inspect(parser('<wbr>\na')), [['<p>&lt;wbr&gt;<br>a</p>'], '']);
26
26
  assert.deepStrictEqual(inspect(parser('a\n<wbr>\n')), [['<p>a<br>&lt;wbr&gt;</p>'], '']);
27
27
  assert.deepStrictEqual(inspect(parser('a\n<wbr>\nb')), [['<p>a<br>&lt;wbr&gt;<br>b</p>'], '']);
28
+ assert.deepStrictEqual(inspect(parser('*a\n<wbr>*\nb')), [['<p>*a<br><wbr>*<br>b</p>'], '']);
29
+ assert.deepStrictEqual(inspect(parser('**a\n<wbr>**\nb')), [['<p>**a<br><wbr>**<br>b</p>'], '']);
30
+ assert.deepStrictEqual(inspect(parser('***a\n<wbr>***\nb')), [['<p>***a<br><wbr>***<br>b</p>'], '']);
31
+ assert.deepStrictEqual(inspect(parser('***a*b\n<wbr>**\nc')), [['<p>**<em>a</em>b<br><wbr>**<br>c</p>'], '']);
32
+ assert.deepStrictEqual(inspect(parser('***a**b\n<wbr>*\nc')), [['<p>*<strong>a</strong>b<br><wbr>*<br>c</p>'], '']);
33
+ assert.deepStrictEqual(inspect(parser('==a\n<wbr>==\nb')), [['<p>==a<br><wbr>==<br>b</p>'], '']);
28
34
  assert.deepStrictEqual(inspect(parser(' a')), [['<p>a</p>'], '']);
29
35
  });
30
36
 
31
37
  it('anchor', () => {
32
- assert.deepStrictEqual(inspect(parser('>>1 a\nb')), [['<p><a href="?comment=1" class="anchor">&gt;&gt;1</a> a<br>b</p>'], '']);
33
- assert.deepStrictEqual(inspect(parser('>>1 a\n>>2')), [['<p><a href="?comment=1" class="anchor">&gt;&gt;1</a> a<br><a href="?comment=2" class="anchor">&gt;&gt;2</a></p>'], '']);
34
- assert.deepStrictEqual(inspect(parser('>>1 a\n>>b')), [['<p><a href="?comment=1" class="anchor">&gt;&gt;1</a> a<br><a href="?comment=b" class="anchor">&gt;&gt;b</a></p>'], '']);
35
- assert.deepStrictEqual(inspect(parser('>>1 a\n>> b')), [['<p><a href="?comment=1" class="anchor">&gt;&gt;1</a> a<br>&gt;&gt; b</p>'], '']);
36
- assert.deepStrictEqual(inspect(parser('>>11.')), [['<p><a href="?comment=11" class="anchor">&gt;&gt;11</a>.</p>'], '']);
37
- assert.deepStrictEqual(inspect(parser('>>11 a')), [['<p><a href="?comment=11" class="anchor">&gt;&gt;11</a> a</p>'], '']);
38
- assert.deepStrictEqual(inspect(parser('>>>11 a')), [['<p>&gt;<a href="?comment=11" class="anchor">&gt;&gt;11</a> a</p>'], '']);
39
- assert.deepStrictEqual(inspect(parser('>> a\n>>1')), [['<p>&gt;&gt; a<br><a href="?comment=1" class="anchor">&gt;&gt;1</a></p>'], '']);
40
- assert.deepStrictEqual(inspect(parser('a>>1')), [['<p>a<a href="?comment=1" class="anchor">&gt;&gt;1</a></p>'], '']);
41
- assert.deepStrictEqual(inspect(parser('a >>1')), [['<p>a <a href="?comment=1" class="anchor">&gt;&gt;1</a></p>'], '']);
42
- assert.deepStrictEqual(inspect(parser('a\n>>1')), [['<p>a<br><a href="?comment=1" class="anchor">&gt;&gt;1</a></p>'], '']);
43
- assert.deepStrictEqual(inspect(parser('a\n>>1\nb')), [['<p>a<br><a href="?comment=1" class="anchor">&gt;&gt;1</a><br>b</p>'], '']);
38
+ assert.deepStrictEqual(inspect(parser('>>1 a\nb')), [['<p><a href="?at=1" class="anchor">&gt;&gt;1</a> a<br>b</p>'], '']);
39
+ assert.deepStrictEqual(inspect(parser('>>1 a\n>>2')), [['<p><a href="?at=1" class="anchor">&gt;&gt;1</a> a<br><a href="?at=2" class="anchor">&gt;&gt;2</a></p>'], '']);
40
+ assert.deepStrictEqual(inspect(parser('>>1 a\n>>b')), [['<p><a href="?at=1" class="anchor">&gt;&gt;1</a> a<br><a href="?at=b" class="anchor">&gt;&gt;b</a></p>'], '']);
41
+ assert.deepStrictEqual(inspect(parser('>>1 a\n>> b')), [['<p><a href="?at=1" class="anchor">&gt;&gt;1</a> a<br>&gt;&gt; b</p>'], '']);
42
+ assert.deepStrictEqual(inspect(parser('>>11.')), [['<p><a href="?at=11" class="anchor">&gt;&gt;11</a>.</p>'], '']);
43
+ assert.deepStrictEqual(inspect(parser('>>11 a')), [['<p><a href="?at=11" class="anchor">&gt;&gt;11</a> a</p>'], '']);
44
+ assert.deepStrictEqual(inspect(parser('>>>11 a')), [['<p>&gt;<a href="?at=11" class="anchor">&gt;&gt;11</a> a</p>'], '']);
45
+ assert.deepStrictEqual(inspect(parser('>> a\n>>1')), [['<p>&gt;&gt; a<br><a href="?at=1" class="anchor">&gt;&gt;1</a></p>'], '']);
46
+ assert.deepStrictEqual(inspect(parser('a>>1')), [['<p>a<a href="?at=1" class="anchor">&gt;&gt;1</a></p>'], '']);
47
+ assert.deepStrictEqual(inspect(parser('a >>1')), [['<p>a <a href="?at=1" class="anchor">&gt;&gt;1</a></p>'], '']);
48
+ assert.deepStrictEqual(inspect(parser('a\n>>1')), [['<p>a<br><a href="?at=1" class="anchor">&gt;&gt;1</a></p>'], '']);
49
+ assert.deepStrictEqual(inspect(parser('a\n>>1\nb')), [['<p>a<br><a href="?at=1" class="anchor">&gt;&gt;1</a><br>b</p>'], '']);
44
50
  assert.deepStrictEqual(inspect(parser('a\n>> b\nc')), [['<p>a<br>&gt;&gt; b<br>c</p>'], '']);
45
- assert.deepStrictEqual(inspect(parser(' >>1')), [['<p><a href="?comment=1" class="anchor">&gt;&gt;1</a></p>'], '']);
46
- assert.deepStrictEqual(inspect(parser(' >>>1')), [['<p>&gt;<a href="?comment=1" class="anchor">&gt;&gt;1</a></p>'], '']);
51
+ assert.deepStrictEqual(inspect(parser(' >>1')), [['<p><a href="?at=1" class="anchor">&gt;&gt;1</a></p>'], '']);
52
+ assert.deepStrictEqual(inspect(parser(' >>>1')), [['<p>&gt;<a href="?at=1" class="anchor">&gt;&gt;1</a></p>'], '']);
47
53
  });
48
54
 
49
55
  it('comment', () => {
50
- assert.deepStrictEqual(inspect(parser('[# a #]')), [['<p><span class="comment">[# a #]</span></p>'], '']);
51
- assert.deepStrictEqual(inspect(parser('[# a #]b')), [['<p><span class="comment">[# a #]</span>b</p>'], '']);
52
- assert.deepStrictEqual(inspect(parser('[# a #]\nb')), [['<p><span class="comment">[# a #]</span><br>b</p>'], '']);
53
- assert.deepStrictEqual(inspect(parser('[## a ##]')), [['<p><span class="comment">[## a ##]</span></p>'], '']);
54
- assert.deepStrictEqual(inspect(parser('[#\n<wbr>\n#]')), [['<p><span class="comment">[# &lt;wbr&gt; #]</span></p>'], '']);
55
- assert.deepStrictEqual(inspect(parser('[#\n<wbr>\n#]a')), [['<p><span class="comment">[# &lt;wbr&gt; #]</span>a</p>'], '']);
56
- assert.deepStrictEqual(inspect(parser('[#\n<wbr>\n#]\na')), [['<p><span class="comment">[# &lt;wbr&gt; #]</span><br>a</p>'], '']);
56
+ assert.deepStrictEqual(inspect(parser('[# a #]')), [['<p><span class="comment"><input type="checkbox"><span>[# a #]</span></span></p>'], '']);
57
+ assert.deepStrictEqual(inspect(parser('[# a #]b')), [['<p><span class="comment"><input type="checkbox"><span>[# a #]</span></span>b</p>'], '']);
58
+ assert.deepStrictEqual(inspect(parser('[# a #]\nb')), [['<p><span class="comment"><input type="checkbox"><span>[# a #]</span></span><br>b</p>'], '']);
59
+ assert.deepStrictEqual(inspect(parser('[## a ##]')), [['<p><span class="comment"><input type="checkbox"><span>[## a ##]</span></span></p>'], '']);
60
+ assert.deepStrictEqual(inspect(parser('[#\n<wbr>\n#]')), [['<p><span class="comment"><input type="checkbox"><span>[#<br>&lt;wbr&gt;<br>#]</span></span></p>'], '']);
61
+ assert.deepStrictEqual(inspect(parser('[#\n<wbr>\n#]a')), [['<p><span class="comment"><input type="checkbox"><span>[#<br>&lt;wbr&gt;<br>#]</span></span>a</p>'], '']);
62
+ assert.deepStrictEqual(inspect(parser('[#\n<wbr>\n#]\na')), [['<p><span class="comment"><input type="checkbox"><span>[#<br>&lt;wbr&gt;<br>#]</span></span><br>a</p>'], '']);
57
63
  });
58
64
 
59
65
  it('template', () => {
@@ -13,32 +13,32 @@ describe('Unit: parser/block/reply/cite', () => {
13
13
  assert.deepStrictEqual(inspect(parser('>\n')), undefined);
14
14
  assert.deepStrictEqual(inspect(parser('>>')), undefined);
15
15
  assert.deepStrictEqual(inspect(parser('>> ')), undefined);
16
- assert.deepStrictEqual(inspect(parser('>>0A')), undefined);
17
16
  assert.deepStrictEqual(inspect(parser('>>0 a')), undefined);
18
- assert.deepStrictEqual(inspect(parser('>>A')), undefined);
19
17
  assert.deepStrictEqual(inspect(parser('>>/')), undefined);
20
18
  assert.deepStrictEqual(inspect(parser('>>\\')), undefined);
21
19
  assert.deepStrictEqual(inspect(parser('>>01#')), undefined);
22
20
  assert.deepStrictEqual(inspect(parser('>>01@')), undefined);
23
21
  assert.deepStrictEqual(inspect(parser('>>https://host')), undefined);
24
22
  assert.deepStrictEqual(inspect(parser('>>tel:1234567890')), undefined);
23
+ assert.deepStrictEqual(inspect(parser('>>..')), undefined);
25
24
  assert.deepStrictEqual(inspect(parser('>> 0')), undefined);
26
25
  assert.deepStrictEqual(inspect(parser(' >>0')), undefined);
27
26
  assert.deepStrictEqual(inspect(parser('\\>>0')), undefined);
28
27
  });
29
28
 
30
29
  it('valid', () => {
31
- assert.deepStrictEqual(inspect(parser('>>0')), [['<span class="cite">&gt;<a href="?comment=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>'], '']);
32
- assert.deepStrictEqual(inspect(parser('>>0 ')), [['<span class="cite">&gt;<a href="?comment=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>'], '']);
33
- assert.deepStrictEqual(inspect(parser('>>0\n')), [['<span class="cite">&gt;<a href="?comment=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>'], '']);
34
- assert.deepStrictEqual(inspect(parser('>>>0')), [['<span class="cite">&gt;&gt;<a href="?comment=0" class="anchor" data-depth="2">&gt;0</a></span>', '<br>'], '']);
35
- assert.deepStrictEqual(inspect(parser('>>0\n1')), [['<span class="cite">&gt;<a href="?comment=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>'], '1']);
36
- assert.deepStrictEqual(inspect(parser('>>0\n>1')), [['<span class="cite">&gt;<a href="?comment=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>'], '>1']);
37
- assert.deepStrictEqual(inspect(parser('>>0\n>>')), [['<span class="cite">&gt;<a href="?comment=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>'], '>>']);
38
- assert.deepStrictEqual(inspect(parser('>>0\n>>1')), [['<span class="cite">&gt;<a href="?comment=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>', '<span class="cite">&gt;<a href="?comment=1" class="anchor" data-depth="1">&gt;1</a></span>', '<br>'], '']);
39
- assert.deepStrictEqual(inspect(parser('>>0\n>>>1')), [['<span class="cite">&gt;<a href="?comment=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>', '<span class="cite">&gt;&gt;<a href="?comment=1" class="anchor" data-depth="2">&gt;1</a></span>', '<br>'], '']);
40
- assert.deepStrictEqual(inspect(parser('>>>0\n>>')), [['<span class="cite">&gt;&gt;<a href="?comment=0" class="anchor" data-depth="2">&gt;0</a></span>', '<br>'], '>>']);
41
- assert.deepStrictEqual(inspect(parser('>>>0\n>>1')), [['<span class="cite">&gt;&gt;<a href="?comment=0" class="anchor" data-depth="2">&gt;0</a></span>', '<br>', '<span class="cite">&gt;<a href="?comment=1" class="anchor" data-depth="1">&gt;1</a></span>', '<br>'], '']);
30
+ assert.deepStrictEqual(inspect(parser('>>0')), [['<span class="cite">&gt;<a href="?at=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>'], '']);
31
+ assert.deepStrictEqual(inspect(parser('>>0 ')), [['<span class="cite">&gt;<a href="?at=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>'], '']);
32
+ assert.deepStrictEqual(inspect(parser('>>0\n')), [['<span class="cite">&gt;<a href="?at=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>'], '']);
33
+ assert.deepStrictEqual(inspect(parser('>>>0')), [['<span class="cite">&gt;&gt;<a href="?at=0" class="anchor" data-depth="2">&gt;0</a></span>', '<br>'], '']);
34
+ assert.deepStrictEqual(inspect(parser('>>0\n1')), [['<span class="cite">&gt;<a href="?at=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>'], '1']);
35
+ assert.deepStrictEqual(inspect(parser('>>0\n>1')), [['<span class="cite">&gt;<a href="?at=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>'], '>1']);
36
+ assert.deepStrictEqual(inspect(parser('>>0\n>>')), [['<span class="cite">&gt;<a href="?at=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>'], '>>']);
37
+ assert.deepStrictEqual(inspect(parser('>>0\n>>1')), [['<span class="cite">&gt;<a href="?at=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>', '<span class="cite">&gt;<a href="?at=1" class="anchor" data-depth="1">&gt;1</a></span>', '<br>'], '']);
38
+ assert.deepStrictEqual(inspect(parser('>>0\n>>>1')), [['<span class="cite">&gt;<a href="?at=0" class="anchor" data-depth="1">&gt;0</a></span>', '<br>', '<span class="cite">&gt;&gt;<a href="?at=1" class="anchor" data-depth="2">&gt;1</a></span>', '<br>'], '']);
39
+ assert.deepStrictEqual(inspect(parser('>>>0\n>>')), [['<span class="cite">&gt;&gt;<a href="?at=0" class="anchor" data-depth="2">&gt;0</a></span>', '<br>'], '>>']);
40
+ assert.deepStrictEqual(inspect(parser('>>>0\n>>1')), [['<span class="cite">&gt;&gt;<a href="?at=0" class="anchor" data-depth="2">&gt;0</a></span>', '<br>', '<span class="cite">&gt;<a href="?at=1" class="anchor" data-depth="1">&gt;1</a></span>', '<br>'], '']);
41
+ assert.deepStrictEqual(inspect(parser('>>.')), [['<span class="cite">&gt;<a class="anchor" data-depth="1">&gt;.</a></span>', '<br>'], '']);
42
42
  });
43
43
 
44
44
  });