securemark 0.235.2 → 0.237.0

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.
Files changed (58) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/securemark.js +200 -112
  3. package/karma.conf.js +1 -1
  4. package/markdown.d.ts +11 -10
  5. package/package-lock.json +111 -98
  6. package/package.json +3 -3
  7. package/src/debug.test.ts +3 -1
  8. package/src/parser/api/bind.ts +7 -3
  9. package/src/parser/api/parse.test.ts +3 -3
  10. package/src/parser/api/parse.ts +8 -11
  11. package/src/parser/block/blockquote.test.ts +1 -1
  12. package/src/parser/block/codeblock.ts +1 -1
  13. package/src/parser/block/dlist.ts +1 -3
  14. package/src/parser/block/extension/aside.test.ts +1 -1
  15. package/src/parser/block/extension/aside.ts +2 -2
  16. package/src/parser/block/extension/example.test.ts +2 -2
  17. package/src/parser/block/extension/example.ts +2 -2
  18. package/src/parser/block/extension/fig.test.ts +22 -20
  19. package/src/parser/block/extension/figure.test.ts +33 -31
  20. package/src/parser/block/extension/figure.ts +32 -3
  21. package/src/parser/block/extension/message.ts +2 -2
  22. package/src/parser/block/extension/placeholder.ts +1 -1
  23. package/src/parser/block/extension/table.ts +5 -5
  24. package/src/parser/block/extension.ts +1 -1
  25. package/src/parser/block/heading.ts +1 -3
  26. package/src/parser/block/ilist.ts +1 -1
  27. package/src/parser/block/mathblock.ts +1 -1
  28. package/src/parser/block/olist.test.ts +8 -0
  29. package/src/parser/block/olist.ts +7 -7
  30. package/src/parser/block/paragraph.test.ts +1 -1
  31. package/src/parser/block/reply/cite.test.ts +4 -0
  32. package/src/parser/block/reply/cite.ts +1 -0
  33. package/src/parser/block/reply/quote.ts +1 -1
  34. package/src/parser/block/table.ts +1 -1
  35. package/src/parser/block/ulist.test.ts +8 -0
  36. package/src/parser/block/ulist.ts +7 -7
  37. package/src/parser/header.ts +1 -1
  38. package/src/parser/inline/deletion.ts +1 -1
  39. package/src/parser/inline/emphasis.ts +1 -1
  40. package/src/parser/inline/emstrong.ts +3 -3
  41. package/src/parser/inline/extension/indexee.ts +8 -8
  42. package/src/parser/inline/extension/placeholder.ts +1 -1
  43. package/src/parser/inline/html.ts +7 -7
  44. package/src/parser/inline/htmlentity.test.ts +1 -1
  45. package/src/parser/inline/htmlentity.ts +18 -11
  46. package/src/parser/inline/insertion.ts +1 -1
  47. package/src/parser/inline/link.ts +4 -4
  48. package/src/parser/inline/mark.ts +1 -1
  49. package/src/parser/inline/math.ts +1 -1
  50. package/src/parser/inline/media.ts +3 -3
  51. package/src/parser/inline/reference.ts +1 -1
  52. package/src/parser/inline/ruby.ts +2 -2
  53. package/src/parser/inline/strong.ts +1 -1
  54. package/src/parser/inline.ts +2 -0
  55. package/src/parser/processor/figure.test.ts +33 -29
  56. package/src/parser/processor/figure.ts +25 -3
  57. package/src/parser/processor/footnote.ts +3 -3
  58. package/src/parser/util.ts +1 -1
package/karma.conf.js CHANGED
@@ -7,7 +7,7 @@ module.exports = function (config) {
7
7
  { pattern: 'https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js', watched: false, served: false, included: true },
8
8
  { pattern: 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.22.0/prism.js', watched: false, served: false, included: true },
9
9
  { pattern: 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.22.0/plugins/autoloader/prism-autoloader.min.js', watched: false, served: false, included: true },
10
- { pattern: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.1.2/es5/tex-chtml.min.js', watched: false, served: false, included: true },
10
+ { pattern: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.0/es5/tex-chtml.min.js', watched: false, served: false, included: true },
11
11
  { pattern: 'https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.2.2/purify.js', watched: false, served: false, included: true },
12
12
  { pattern: 'node_modules/power-assert/build/power-assert.js', watched: true, served: true, included: true },
13
13
  { pattern: 'dist/*.test.js', watched: true, served: true, included: true }
package/markdown.d.ts CHANGED
@@ -133,7 +133,10 @@ export namespace MarkdownParser {
133
133
  Parser<HTMLLIElement, Context, [
134
134
  Parser<HTMLElement | string, Context, [
135
135
  InlineParser,
136
- InlineParser,
136
+ Parser<HTMLElement | string, Context, [
137
+ InlineParser.ExtensionParser.IndexerParser,
138
+ InlineParser,
139
+ ]>,
137
140
  ]>,
138
141
  Parser<HTMLUListElement | HTMLOListElement, Context, [
139
142
  UListParser,
@@ -165,7 +168,10 @@ export namespace MarkdownParser {
165
168
  Parser<HTMLLIElement, Context, [
166
169
  Parser<HTMLElement | string, Context, [
167
170
  InlineParser,
168
- InlineParser,
171
+ Parser<HTMLElement | string, Context, [
172
+ InlineParser.ExtensionParser.IndexerParser,
173
+ InlineParser,
174
+ ]>,
169
175
  ]>,
170
176
  Parser<HTMLUListElement | HTMLOListElement, Context, [
171
177
  UListParser,
@@ -361,6 +367,8 @@ export namespace MarkdownParser {
361
367
  ]>,
362
368
  Parser<HTMLElement | string, Context, [
363
369
  Parser<HTMLElement | string, Context, [
370
+ UListParser,
371
+ OListParser,
364
372
  BlockParser.TableParser,
365
373
  CodeBlockParser,
366
374
  MathBlockParser,
@@ -430,14 +438,6 @@ export namespace MarkdownParser {
430
438
  InlineParser.ExtensionParser.LabelParser,
431
439
  ]> {
432
440
  }
433
- export namespace FigbaseParser {
434
- export interface SegmentParser extends
435
- Block<'extension/figbase/segment'>,
436
- Parser<never, Context, [
437
- InlineParser.ExtensionParser.LabelParser.SegmentParser,
438
- ]> {
439
- }
440
- }
441
441
  export interface TableParser extends
442
442
  // ~~~table
443
443
  // -/-
@@ -575,6 +575,7 @@ export namespace MarkdownParser {
575
575
  Parser<HTMLAnchorElement, Context, [
576
576
  InlineParser.AutolinkParser.AnchorParser,
577
577
  Parser<HTMLAnchorElement, Context, []>,
578
+ Parser<HTMLAnchorElement, Context, []>,
578
579
  ]>,
579
580
  ]> {
580
581
  }
package/package-lock.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "securemark",
3
- "version": "0.235.2",
3
+ "version": "0.237.0",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
@@ -448,12 +448,6 @@
448
448
  "which": "^2.0.2"
449
449
  },
450
450
  "dependencies": {
451
- "lru-cache": {
452
- "version": "7.7.3",
453
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz",
454
- "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==",
455
- "dev": true
456
- },
457
451
  "mkdirp": {
458
452
  "version": "1.0.4",
459
453
  "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
@@ -789,6 +783,12 @@
789
783
  "ms": "2.1.2"
790
784
  }
791
785
  },
786
+ "depd": {
787
+ "version": "1.1.2",
788
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
789
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
790
+ "dev": true
791
+ },
792
792
  "ms": {
793
793
  "version": "2.1.2",
794
794
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -1426,21 +1426,23 @@
1426
1426
  "dev": true
1427
1427
  },
1428
1428
  "body-parser": {
1429
- "version": "1.19.2",
1430
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz",
1431
- "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==",
1429
+ "version": "1.20.0",
1430
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
1431
+ "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
1432
1432
  "dev": true,
1433
1433
  "requires": {
1434
1434
  "bytes": "3.1.2",
1435
1435
  "content-type": "~1.0.4",
1436
1436
  "debug": "2.6.9",
1437
- "depd": "~1.1.2",
1438
- "http-errors": "1.8.1",
1437
+ "depd": "2.0.0",
1438
+ "destroy": "1.2.0",
1439
+ "http-errors": "2.0.0",
1439
1440
  "iconv-lite": "0.4.24",
1440
- "on-finished": "~2.3.0",
1441
- "qs": "6.9.7",
1442
- "raw-body": "2.4.3",
1443
- "type-is": "~1.6.18"
1441
+ "on-finished": "2.4.1",
1442
+ "qs": "6.10.3",
1443
+ "raw-body": "2.5.1",
1444
+ "type-is": "~1.6.18",
1445
+ "unpipe": "1.0.0"
1444
1446
  }
1445
1447
  },
1446
1448
  "boxen": {
@@ -1800,12 +1802,6 @@
1800
1802
  "unique-filename": "^1.1.1"
1801
1803
  },
1802
1804
  "dependencies": {
1803
- "lru-cache": {
1804
- "version": "7.7.3",
1805
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz",
1806
- "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==",
1807
- "dev": true
1808
- },
1809
1805
  "mkdirp": {
1810
1806
  "version": "1.0.4",
1811
1807
  "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
@@ -1927,9 +1923,9 @@
1927
1923
  "dev": true
1928
1924
  },
1929
1925
  "caniuse-lite": {
1930
- "version": "1.0.30001323",
1931
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001323.tgz",
1932
- "integrity": "sha512-e4BF2RlCVELKx8+RmklSEIVub1TWrmdhvA5kEUueummz1XyySW0DVk+3x9HyhU9MuWTa2BhqLgEuEmUwASAdCA==",
1926
+ "version": "1.0.30001324",
1927
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001324.tgz",
1928
+ "integrity": "sha512-/eYp1J6zYh1alySQB4uzYFkLmxxI8tk0kxldbNHXp8+v+rdMKdUBNjRLz7T7fz6Iox+1lIdYpc7rq6ZcXfTukg==",
1933
1929
  "dev": true
1934
1930
  },
1935
1931
  "chalk": {
@@ -2319,9 +2315,9 @@
2319
2315
  }
2320
2316
  },
2321
2317
  "concurrently": {
2322
- "version": "7.0.0",
2323
- "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.0.0.tgz",
2324
- "integrity": "sha512-WKM7PUsI8wyXpF80H+zjHP32fsgsHNQfPLw/e70Z5dYkV7hF+rf8q3D+ScWJIEr57CpkO3OWBko6hwhQLPR8Pw==",
2318
+ "version": "7.1.0",
2319
+ "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.1.0.tgz",
2320
+ "integrity": "sha512-Bz0tMlYKZRUDqJlNiF/OImojMB9ruKUz6GCfmhFnSapXgPe+3xzY4byqoKG9tUZ7L2PGEUjfLPOLfIX3labnmw==",
2325
2321
  "dev": true,
2326
2322
  "requires": {
2327
2323
  "chalk": "^4.1.0",
@@ -2737,9 +2733,9 @@
2737
2733
  "dev": true
2738
2734
  },
2739
2735
  "depd": {
2740
- "version": "1.1.2",
2741
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
2742
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
2736
+ "version": "2.0.0",
2737
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
2738
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
2743
2739
  "dev": true
2744
2740
  },
2745
2741
  "deps-sort": {
@@ -2870,6 +2866,12 @@
2870
2866
  "minimalistic-assert": "^1.0.0"
2871
2867
  }
2872
2868
  },
2869
+ "destroy": {
2870
+ "version": "1.2.0",
2871
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
2872
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
2873
+ "dev": true
2874
+ },
2873
2875
  "detect-file": {
2874
2876
  "version": "1.0.0",
2875
2877
  "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
@@ -4311,6 +4313,23 @@
4311
4313
  "parseurl": "~1.3.3",
4312
4314
  "statuses": "~1.5.0",
4313
4315
  "unpipe": "~1.0.0"
4316
+ },
4317
+ "dependencies": {
4318
+ "on-finished": {
4319
+ "version": "2.3.0",
4320
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
4321
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
4322
+ "dev": true,
4323
+ "requires": {
4324
+ "ee-first": "1.1.1"
4325
+ }
4326
+ },
4327
+ "statuses": {
4328
+ "version": "1.5.0",
4329
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
4330
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
4331
+ "dev": true
4332
+ }
4314
4333
  }
4315
4334
  },
4316
4335
  "find-parent-dir": {
@@ -5674,15 +5693,15 @@
5674
5693
  "dev": true
5675
5694
  },
5676
5695
  "http-errors": {
5677
- "version": "1.8.1",
5678
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
5679
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
5696
+ "version": "2.0.0",
5697
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
5698
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
5680
5699
  "dev": true,
5681
5700
  "requires": {
5682
- "depd": "~1.1.2",
5701
+ "depd": "2.0.0",
5683
5702
  "inherits": "2.0.4",
5684
5703
  "setprototypeof": "1.2.0",
5685
- "statuses": ">= 1.5.0 < 2",
5704
+ "statuses": "2.0.1",
5686
5705
  "toidentifier": "1.0.1"
5687
5706
  }
5688
5707
  },
@@ -6183,9 +6202,9 @@
6183
6202
  "dev": true
6184
6203
  },
6185
6204
  "is-number-object": {
6186
- "version": "1.0.6",
6187
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
6188
- "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
6205
+ "version": "1.0.7",
6206
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
6207
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
6189
6208
  "dev": true,
6190
6209
  "requires": {
6191
6210
  "has-tostringtag": "^1.0.0"
@@ -6244,10 +6263,13 @@
6244
6263
  }
6245
6264
  },
6246
6265
  "is-shared-array-buffer": {
6247
- "version": "1.0.1",
6248
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
6249
- "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
6250
- "dev": true
6266
+ "version": "1.0.2",
6267
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
6268
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
6269
+ "dev": true,
6270
+ "requires": {
6271
+ "call-bind": "^1.0.2"
6272
+ }
6251
6273
  },
6252
6274
  "is-stream": {
6253
6275
  "version": "2.0.1",
@@ -7069,13 +7091,10 @@
7069
7091
  "dev": true
7070
7092
  },
7071
7093
  "lru-cache": {
7072
- "version": "6.0.0",
7073
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
7074
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
7075
- "dev": true,
7076
- "requires": {
7077
- "yallist": "^4.0.0"
7078
- }
7094
+ "version": "7.7.3",
7095
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz",
7096
+ "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==",
7097
+ "dev": true
7079
7098
  },
7080
7099
  "make-dir": {
7081
7100
  "version": "3.1.0",
@@ -7116,14 +7135,6 @@
7116
7135
  "promise-retry": "^2.0.1",
7117
7136
  "socks-proxy-agent": "^6.1.1",
7118
7137
  "ssri": "^8.0.1"
7119
- },
7120
- "dependencies": {
7121
- "lru-cache": {
7122
- "version": "7.7.3",
7123
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz",
7124
- "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==",
7125
- "dev": true
7126
- }
7127
7138
  }
7128
7139
  },
7129
7140
  "make-iterator": {
@@ -8007,9 +8018,9 @@
8007
8018
  }
8008
8019
  },
8009
8020
  "npm-check-updates": {
8010
- "version": "12.5.4",
8011
- "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.4.tgz",
8012
- "integrity": "sha512-4+27zaTdieWgvPLaCZ/A6Q2WC1cYVcrc2SqVmLFYgkWBrKw1QkwpeV16FSvkFGZr3OdFyr7Dpjw8JRn4H2QxFw==",
8021
+ "version": "12.5.5",
8022
+ "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.5.tgz",
8023
+ "integrity": "sha512-7LH6KN6F1fZMtY4zNYAQPpJU1ToxZ6sSCxk948vrLIz97aNqmPLSX72MrmbOWwpyBgLCPbFJWY/k3zE18pmxfw==",
8013
8024
  "dev": true,
8014
8025
  "requires": {
8015
8026
  "chalk": "^4.1.2",
@@ -8021,7 +8032,7 @@
8021
8032
  "fp-and-or": "^0.1.3",
8022
8033
  "get-stdin": "^8.0.0",
8023
8034
  "globby": "^11.0.4",
8024
- "hosted-git-info": "^4.1.0",
8035
+ "hosted-git-info": "^5.0.0",
8025
8036
  "json-parse-helpfulerror": "^1.0.3",
8026
8037
  "jsonlines": "^0.1.1",
8027
8038
  "libnpmconfig": "^1.2.1",
@@ -8063,12 +8074,12 @@
8063
8074
  }
8064
8075
  },
8065
8076
  "hosted-git-info": {
8066
- "version": "4.1.0",
8067
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
8068
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
8077
+ "version": "5.0.0",
8078
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz",
8079
+ "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==",
8069
8080
  "dev": true,
8070
8081
  "requires": {
8071
- "lru-cache": "^6.0.0"
8082
+ "lru-cache": "^7.5.1"
8072
8083
  }
8073
8084
  },
8074
8085
  "locate-path": {
@@ -8149,12 +8160,6 @@
8149
8160
  "requires": {
8150
8161
  "lru-cache": "^7.5.1"
8151
8162
  }
8152
- },
8153
- "lru-cache": {
8154
- "version": "7.7.3",
8155
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz",
8156
- "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==",
8157
- "dev": true
8158
8163
  }
8159
8164
  }
8160
8165
  },
@@ -8354,9 +8359,9 @@
8354
8359
  }
8355
8360
  },
8356
8361
  "on-finished": {
8357
- "version": "2.3.0",
8358
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
8359
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
8362
+ "version": "2.4.1",
8363
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
8364
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
8360
8365
  "dev": true,
8361
8366
  "requires": {
8362
8367
  "ee-first": "1.1.1"
@@ -9035,10 +9040,13 @@
9035
9040
  "dev": true
9036
9041
  },
9037
9042
  "qs": {
9038
- "version": "6.9.7",
9039
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
9040
- "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==",
9041
- "dev": true
9043
+ "version": "6.10.3",
9044
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
9045
+ "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
9046
+ "dev": true,
9047
+ "requires": {
9048
+ "side-channel": "^1.0.4"
9049
+ }
9042
9050
  },
9043
9051
  "querystring": {
9044
9052
  "version": "0.2.0",
@@ -9084,13 +9092,13 @@
9084
9092
  "dev": true
9085
9093
  },
9086
9094
  "raw-body": {
9087
- "version": "2.4.3",
9088
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz",
9089
- "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==",
9095
+ "version": "2.5.1",
9096
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
9097
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
9090
9098
  "dev": true,
9091
9099
  "requires": {
9092
9100
  "bytes": "3.1.2",
9093
- "http-errors": "1.8.1",
9101
+ "http-errors": "2.0.0",
9094
9102
  "iconv-lite": "0.4.24",
9095
9103
  "unpipe": "1.0.0"
9096
9104
  }
@@ -9189,12 +9197,6 @@
9189
9197
  "lru-cache": "^7.5.1"
9190
9198
  }
9191
9199
  },
9192
- "lru-cache": {
9193
- "version": "7.7.3",
9194
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz",
9195
- "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==",
9196
- "dev": true
9197
- },
9198
9200
  "normalize-package-data": {
9199
9201
  "version": "4.0.0",
9200
9202
  "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz",
@@ -9787,6 +9789,17 @@
9787
9789
  "dev": true,
9788
9790
  "requires": {
9789
9791
  "lru-cache": "^6.0.0"
9792
+ },
9793
+ "dependencies": {
9794
+ "lru-cache": {
9795
+ "version": "6.0.0",
9796
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
9797
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
9798
+ "dev": true,
9799
+ "requires": {
9800
+ "yallist": "^4.0.0"
9801
+ }
9802
+ }
9790
9803
  }
9791
9804
  },
9792
9805
  "semver-diff": {
@@ -10350,9 +10363,9 @@
10350
10363
  }
10351
10364
  },
10352
10365
  "statuses": {
10353
- "version": "1.5.0",
10354
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
10355
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
10366
+ "version": "2.0.1",
10367
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
10368
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
10356
10369
  "dev": true
10357
10370
  },
10358
10371
  "stream-browserify": {
@@ -10940,9 +10953,9 @@
10940
10953
  "dev": true
10941
10954
  },
10942
10955
  "typed-dom": {
10943
- "version": "0.0.249",
10944
- "resolved": "https://registry.npmjs.org/typed-dom/-/typed-dom-0.0.249.tgz",
10945
- "integrity": "sha512-9SS9P99g+/FKWgAYVjHjlhkgX31RXKBzwfI75DfHQPRXDPnl00rupgixuNqWiVIfniT/vy/yRSflc/zR7JRJaQ==",
10956
+ "version": "0.0.250",
10957
+ "resolved": "https://registry.npmjs.org/typed-dom/-/typed-dom-0.0.250.tgz",
10958
+ "integrity": "sha512-hjCpUI+E7St1bGVgyjYZww0ruhXLbPrcih6puElqXTIGHG9JHqd70p94RVilWup/mKoLnzeIdbFDYHLuloCfdQ==",
10946
10959
  "dev": true
10947
10960
  },
10948
10961
  "typedarray": {
@@ -10961,9 +10974,9 @@
10961
10974
  }
10962
10975
  },
10963
10976
  "typescript": {
10964
- "version": "4.6.2",
10965
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz",
10966
- "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==",
10977
+ "version": "4.6.3",
10978
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz",
10979
+ "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==",
10967
10980
  "dev": true
10968
10981
  },
10969
10982
  "ua-parser-js": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "securemark",
3
- "version": "0.235.2",
3
+ "version": "0.237.0",
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",
@@ -63,8 +63,8 @@
63
63
  "semver": "^7.3.5",
64
64
  "spica": "0.0.515",
65
65
  "tsify": "^5.0.4",
66
- "typed-dom": "0.0.249",
67
- "typescript": "4.6.2",
66
+ "typed-dom": "0.0.250",
67
+ "typescript": "4.6.3",
68
68
  "vinyl-buffer": "^1.0.1",
69
69
  "vinyl-source-stream": "^2.0.0"
70
70
  },
package/src/debug.test.ts CHANGED
@@ -7,11 +7,13 @@ export function inspect(result: Result<HTMLElement | string>, until: number | st
7
7
  assert(node);
8
8
  if (typeof node === 'string') return node;
9
9
  node = node.cloneNode(true);
10
+ assert(!node.matches('.invalid[data-invalid-message$="."]'));
11
+ assert(!node.querySelector('.invalid[data-invalid-message$="."]'));
10
12
  [node, ...node.querySelectorAll('.invalid')].forEach(el =>
11
13
  define(el, {
12
14
  'data-invalid-syntax': null,
13
15
  'data-invalid-type': null,
14
- 'data-invalid-description': null,
16
+ 'data-invalid-message': null,
15
17
  }));
16
18
  until = typeof until === 'number'
17
19
  ? until
@@ -1,5 +1,5 @@
1
1
  import { undefined, location } from 'spica/global';
2
- import { ObjectAssign } from 'spica/alias';
2
+ import { ObjectAssign, ObjectCreate } from 'spica/alias';
3
3
  import { ParserSettings, Progress } from '../../..';
4
4
  import { MarkdownParser } from '../../../markdown';
5
5
  import { eval } from '../../combinator/data/parser';
@@ -21,7 +21,7 @@ export function bind(target: DocumentFragment | HTMLElement | ShadowRoot, settin
21
21
  nearest: (position: number) => HTMLElement | undefined;
22
22
  index: (block: HTMLElement) => number;
23
23
  } {
24
- let context: MarkdownParser.Context = ObjectAssign({ ...settings }, {
24
+ const context: MarkdownParser.Context = ObjectAssign(ObjectCreate(settings), {
25
25
  host: settings.host ?? new ReadonlyURL(location.pathname, location.origin),
26
26
  footnotes: undefined,
27
27
  chunk: undefined,
@@ -44,7 +44,11 @@ export function bind(target: DocumentFragment | HTMLElement | ShadowRoot, settin
44
44
  if (settings.chunk && revision) throw new Error('Chunks cannot be updated.');
45
45
  const url = headers(source).find(field => field.toLowerCase().startsWith('url:'))?.slice(4).trim() ?? '';
46
46
  source = normalize(validate(source, MAX_INPUT_SIZE) ? source : source.slice(0, MAX_INPUT_SIZE + 1));
47
- context = ObjectAssign({ ...context }, { url: url ? new ReadonlyURL(url as ':') : undefined });
47
+ ObjectAssign<MarkdownParser.Context, MarkdownParser.Context>(
48
+ context,
49
+ {
50
+ url: url ? new ReadonlyURL(url as ':') : undefined,
51
+ });
48
52
  const rev = revision = Symbol();
49
53
  const sourceSegments: string[] = [];
50
54
  for (const seg of segment(source)) {
@@ -118,7 +118,7 @@ describe('Unit: parser/api/parse', () => {
118
118
  '<p><a href="https://source/hashtags/a" target="_blank" class="hashtag">#a</a></p>',
119
119
  '<p><a href="https://domain/hashtags/a" target="_blank" class="hashtag">#domain/a</a></p>',
120
120
  '<p><a class="index" href="#index:a">a</a></p>',
121
- '<figure data-label="$-a" data-group="$" data-number="1" id="label:$-a"><div><div class="math" translate="no">$$\n$$</div></div><figcaption><span class="figindex">(1)</span></figcaption></figure>',
121
+ '<figure data-type="math" data-label="$-a" data-group="$" data-number="1" id="label:$-a"><div><div class="math" translate="no">$$\n$$</div></div><figcaption><span class="figindex">(1)</span></figcaption></figure>',
122
122
  '<p><a class="label" data-label="$-a" href="#label:$-a">(1)</a></p>',
123
123
  '<p><sup class="annotation" id="annotation:ref:1" title="a"><span hidden="">a</span><a href="#annotation:def:1">*1</a></sup></p>',
124
124
  '<p><a href="https://source/x/a" target="_blank">a</a></p>',
@@ -190,7 +190,7 @@ describe('Unit: parser/api/parse', () => {
190
190
  ].join('\n\n'), { host: new URL(`${location.origin}/z`) }).children].map(el => el.outerHTML),
191
191
  [
192
192
  `<details class="header" open=""><summary>Header</summary><span class="field" data-name="URL" data-value="https://example/x"><span class="field-name">URL</span>: <span class="field-value">https://example/x</span>\n</span></details>`,
193
- '<pre class="invalid" translate="no" data-invalid-syntax="header" data-invalid-type="syntax" data-invalid-description="Invalid syntax.">---\nURL: https://example/y\n---\n</pre>',
193
+ '<pre class="invalid" translate="no" data-invalid-syntax="header" data-invalid-type="syntax" data-invalid-message="Invalid syntax">---\nURL: https://example/y\n---\n</pre>',
194
194
  '<aside class="example" data-type="markdown"><pre translate="no">---\nURL: https://example/y\n---\n\n{#}</pre><hr><section><details class="header" open=""><summary>Header</summary><span class="field" data-name="URL" data-value="https://example/y"><span class="field-name">URL</span>: <span class="field-value">https://example/y</span>\n</span></details><p><a href="https://example/y#" target="_blank">#</a></p><ol class="annotations"></ol><ol class="references"></ol></section></aside>',
195
195
  '<p><a href="https://example/x#" target="_blank">#</a></p>',
196
196
  ]);
@@ -201,7 +201,7 @@ describe('Unit: parser/api/parse', () => {
201
201
  assert.deepStrictEqual(
202
202
  [...parse('$-a\n$$\n$$\n\n(($-a[[b]][[c*d*]]))', { footnotes }).children].map(el => el.outerHTML),
203
203
  [
204
- '<figure data-label="$-a" data-group="$" data-number="1" id="label:$-a"><div><div class="math" translate="no">$$\n$$</div></div><figcaption><span class="figindex">(1)</span></figcaption></figure>',
204
+ '<figure data-type="math" data-label="$-a" data-group="$" data-number="1" id="label:$-a"><div><div class="math" translate="no">$$\n$$</div></div><figcaption><span class="figindex">(1)</span></figcaption></figure>',
205
205
  '<p><sup class="annotation" id="annotation:ref:1" title="(1)[1][2]"><span hidden=""><a class="label" data-label="$-a" href="#label:$-a">(1)</a><sup class="reference" id="reference:ref:1" title="b"><span hidden="">b</span><a href="#reference:def:1">[1]</a></sup><sup class="reference" id="reference:ref:2" title="cd"><span hidden="">c<em>d</em></span><a href="#reference:def:2">[2]</a></sup></span><a href="#annotation:def:1">*1</a></sup></p>',
206
206
  ]);
207
207
  assert.deepStrictEqual(
@@ -1,5 +1,4 @@
1
1
  import { undefined, location } from 'spica/global';
2
- import { ObjectAssign, ObjectCreate } from 'spica/alias';
3
2
  import { ParserOptions } from '../../..';
4
3
  import { MarkdownParser } from '../../../markdown';
5
4
  import { eval } from '../../combinator/data/parser';
@@ -22,16 +21,14 @@ export function parse(source: string, opts: Options = {}, context?: MarkdownPars
22
21
  const url = headers(source).find(field => field.toLowerCase().startsWith('url:'))?.slice(4).trim() ?? '';
23
22
  source = !context ? normalize(source) : source;
24
23
  assert(!context?.delimiters);
25
- context = context && url === '' && context.id === opts.id
26
- ? context
27
- : ObjectAssign(ObjectCreate(context ?? {}), opts, {
28
- host: opts.host ?? context?.host ?? new ReadonlyURL(location.pathname, location.origin),
29
- url: url ? new ReadonlyURL(url as ':') : context?.url,
30
- id: opts.id ?? context?.id,
31
- footnotes: undefined,
32
- test: undefined,
33
- });
34
- assert(context.caches === arguments[2]?.caches);
24
+ context = {
25
+ url: url ? new ReadonlyURL(url as ':') : context?.url,
26
+ host: opts.host ?? context?.host ?? new ReadonlyURL(location.pathname, location.origin),
27
+ caches: context?.caches,
28
+ footnotes: undefined,
29
+ test: undefined,
30
+ ...opts,
31
+ };
35
32
  if (context.host?.origin === 'null') throw new Error(`Invalid host: ${context.host.href}`);
36
33
  const node = frag();
37
34
  let index = 0;
@@ -95,7 +95,7 @@ describe('Unit: parser/block/blockquote', () => {
95
95
  assert.deepStrictEqual(inspect(parser('!>\n> a')), [['<blockquote><section><p>a</p><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
96
96
  assert.deepStrictEqual(inspect(parser('!>> ## a\n> ## a')), [['<blockquote><blockquote><section><h2>a</h2><ol class="annotations"></ol><ol class="references"></ol></section></blockquote><section><h2>a</h2><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
97
97
  assert.deepStrictEqual(inspect(parser('!>> ~ a\n> ~ a')), [['<blockquote><blockquote><section><dl><dt>a</dt><dd></dd></dl><ol class="annotations"></ol><ol class="references"></ol></section></blockquote><section><dl><dt>a</dt><dd></dd></dl><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
98
- assert.deepStrictEqual(inspect(parser('!>> ~~~figure $fig-a\n>> > \n>>\n~~~\n> ~~~figure $fig-a\n> > \n>\n[#a]\n~~~')), [['<blockquote><blockquote><section><figure data-label="fig-a" data-group="fig" data-number="1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></blockquote><section><figure data-label="fig-a" data-group="fig" data-number="1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span><a class="index">a</a></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
98
+ assert.deepStrictEqual(inspect(parser('!>> ~~~figure $fig-a\n>> > \n>>\n~~~\n> ~~~figure $fig-a\n> > \n>\n[#a]\n~~~')), [['<blockquote><blockquote><section><figure data-type="quote" data-label="fig-a" data-group="fig" data-number="1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></blockquote><section><figure data-type="quote" data-label="fig-a" data-group="fig" data-number="1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span><a class="index">a</a></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
99
99
  assert.deepStrictEqual(inspect(parser('!>> ((a))\n> ((a))')), [['<blockquote><blockquote><section><p><sup class="annotation disabled" title="a"><span hidden="">a</span><a>*1</a></sup></p><ol class="annotations"><li>a<sup><a>^1</a></sup></li></ol><ol class="references"></ol></section></blockquote><section><p><sup class="annotation disabled" title="a"><span hidden="">a</span><a>*1</a></sup></p><ol class="annotations"><li>a<sup><a>^1</a></sup></li></ol><ol class="references"></ol></section></blockquote>'], '']);
100
100
  });
101
101
 
@@ -30,7 +30,7 @@ export const codeblock: CodeBlockParser = block(validate('```', fmap(
30
30
  translate: 'no',
31
31
  'data-invalid-syntax': 'codeblock',
32
32
  'data-invalid-type': !closer ? 'closer' : 'argument',
33
- 'data-invalid-description': !closer ? `Missing the closing delimiter "${delim}".` : 'Invalid argument.',
33
+ 'data-invalid-message': !closer ? `Missing the closing delimiter "${delim}"` : 'Invalid argument',
34
34
  }, `${opener}${body}${closer}`)];
35
35
  const file = path.split('/').pop() ?? '';
36
36
  const ext = file && file.includes('.', 1)
@@ -1,8 +1,6 @@
1
1
  import { DListParser } from '../block';
2
2
  import { union, inits, some, block, line, validate, rewrite, context, creator, open, trim, lazy, fmap } from '../../combinator';
3
- import { inline } from '../inline';
4
- import { indexer } from '../inline/extension/indexer';
5
- import { indexee } from '../inline/extension/indexee';
3
+ import { inline, indexee, indexer } from '../inline';
6
4
  import { anyline } from '../source';
7
5
  import { localize } from '../locale';
8
6
  import { visualize } from '../util';