@descope/flow-components 3.14.2 → 3.14.3

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.
@@ -5,7 +5,7 @@
5
5
  "name": "flowComponents",
6
6
  "type": "app",
7
7
  "buildInfo": {
8
- "buildVersion": "3.14.2",
8
+ "buildVersion": "3.14.3",
9
9
  "buildName": "@descope/flow-components"
10
10
  },
11
11
  "remoteEntry": {
@@ -5,7 +5,7 @@
5
5
  "name": "flowComponents",
6
6
  "type": "app",
7
7
  "buildInfo": {
8
- "buildVersion": "3.14.2",
8
+ "buildVersion": "3.14.3",
9
9
  "buildName": "@descope/flow-components"
10
10
  },
11
11
  "remoteEntry": {
package/dist/index.cjs.js CHANGED
@@ -7735,11 +7735,6 @@ function requireIndex_cjs$2 () {
7735
7735
  // DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead
7736
7736
  const tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');
7737
7737
 
7738
- function resetScanCache (self) {
7739
- self.__index__ = -1;
7740
- self.__text_cache__ = '';
7741
- }
7742
-
7743
7738
  function createValidator (re) {
7744
7739
  return function (text, pos) {
7745
7740
  const tail = text.slice(pos);
@@ -7778,8 +7773,11 @@ function requireIndex_cjs$2 () {
7778
7773
  function untpl (tpl) { return tpl.replace('%TLDS%', re.src_tlds) }
7779
7774
 
7780
7775
  re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i');
7776
+ re.email_fuzzy_global = RegExp(untpl(re.tpl_email_fuzzy), 'ig');
7781
7777
  re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i');
7778
+ re.link_fuzzy_global = RegExp(untpl(re.tpl_link_fuzzy), 'ig');
7782
7779
  re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i');
7780
+ re.link_no_ip_fuzzy_global = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'ig');
7783
7781
  re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i');
7784
7782
 
7785
7783
  //
@@ -7873,12 +7871,6 @@ function requireIndex_cjs$2 () {
7873
7871
  '(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@',
7874
7872
  'i'
7875
7873
  );
7876
-
7877
- //
7878
- // Cleanup
7879
- //
7880
-
7881
- resetScanCache(self);
7882
7874
  }
7883
7875
 
7884
7876
  /**
@@ -7886,55 +7878,45 @@ function requireIndex_cjs$2 () {
7886
7878
  *
7887
7879
  * Match result. Single element of array, returned by [[LinkifyIt#match]]
7888
7880
  **/
7889
- function Match (self, shift) {
7890
- const start = self.__index__;
7891
- const end = self.__last_index__;
7892
- const text = self.__text_cache__.slice(start, end);
7881
+ function Match (text, schema, index, lastIndex) {
7882
+ const raw = text.slice(index, lastIndex);
7893
7883
 
7894
7884
  /**
7895
7885
  * Match#schema -> String
7896
7886
  *
7897
7887
  * Prefix (protocol) for matched string.
7898
7888
  **/
7899
- this.schema = self.__schema__.toLowerCase();
7889
+ this.schema = schema.toLowerCase();
7900
7890
  /**
7901
7891
  * Match#index -> Number
7902
7892
  *
7903
7893
  * First position of matched string.
7904
7894
  **/
7905
- this.index = start + shift;
7895
+ this.index = index;
7906
7896
  /**
7907
7897
  * Match#lastIndex -> Number
7908
7898
  *
7909
7899
  * Next position after matched string.
7910
7900
  **/
7911
- this.lastIndex = end + shift;
7901
+ this.lastIndex = lastIndex;
7912
7902
  /**
7913
7903
  * Match#raw -> String
7914
7904
  *
7915
7905
  * Matched string.
7916
7906
  **/
7917
- this.raw = text;
7907
+ this.raw = raw;
7918
7908
  /**
7919
7909
  * Match#text -> String
7920
7910
  *
7921
7911
  * Notmalized text of matched string.
7922
7912
  **/
7923
- this.text = text;
7913
+ this.text = raw;
7924
7914
  /**
7925
7915
  * Match#url -> String
7926
7916
  *
7927
7917
  * Normalized url of matched string.
7928
7918
  **/
7929
- this.url = text;
7930
- }
7931
-
7932
- function createMatch (self, shift) {
7933
- const match = new Match(self, shift);
7934
-
7935
- self.__compiled__[match.schema].normalize(match, self);
7936
-
7937
- return match
7919
+ this.url = raw;
7938
7920
  }
7939
7921
 
7940
7922
  /**
@@ -7989,12 +7971,6 @@ function requireIndex_cjs$2 () {
7989
7971
 
7990
7972
  this.__opts__ = assign({}, defaultOptions, options);
7991
7973
 
7992
- // Cache last tested result. Used to skip repeating steps on next `match` call.
7993
- this.__index__ = -1;
7994
- this.__last_index__ = -1; // Next scan position
7995
- this.__schema__ = '';
7996
- this.__text_cache__ = '';
7997
-
7998
7974
  this.__schemas__ = assign({}, defaultSchemas, schemas);
7999
7975
  this.__compiled__ = {};
8000
7976
 
@@ -8036,69 +8012,38 @@ function requireIndex_cjs$2 () {
8036
8012
  * Searches linkifiable pattern and returns `true` on success or `false` on fail.
8037
8013
  **/
8038
8014
  LinkifyIt.prototype.test = function test (text) {
8039
- // Reset scan cache
8040
- this.__text_cache__ = text;
8041
- this.__index__ = -1;
8042
-
8043
8015
  if (!text.length) { return false }
8044
8016
 
8045
- let m, ml, me, len, shift, next, re, tld_pos, at_pos;
8017
+ let m, re;
8046
8018
 
8047
8019
  // try to scan for link with schema - that's the most simple rule
8048
8020
  if (this.re.schema_test.test(text)) {
8049
8021
  re = this.re.schema_search;
8050
8022
  re.lastIndex = 0;
8051
8023
  while ((m = re.exec(text)) !== null) {
8052
- len = this.testSchemaAt(text, m[2], re.lastIndex);
8053
- if (len) {
8054
- this.__schema__ = m[2];
8055
- this.__index__ = m.index + m[1].length;
8056
- this.__last_index__ = m.index + m[0].length + len;
8057
- break
8058
- }
8024
+ if (this.testSchemaAt(text, m[2], re.lastIndex)) { return true }
8059
8025
  }
8060
8026
  }
8061
8027
 
8062
8028
  if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {
8063
8029
  // guess schemaless links
8064
- tld_pos = text.search(this.re.host_fuzzy_test);
8065
- if (tld_pos >= 0) {
8066
- // if tld is located after found link - no need to check fuzzy pattern
8067
- if (this.__index__ < 0 || tld_pos < this.__index__) {
8068
- if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {
8069
- shift = ml.index + ml[1].length;
8070
-
8071
- if (this.__index__ < 0 || shift < this.__index__) {
8072
- this.__schema__ = '';
8073
- this.__index__ = shift;
8074
- this.__last_index__ = ml.index + ml[0].length;
8075
- }
8076
- }
8030
+ if (text.search(this.re.host_fuzzy_test) >= 0) {
8031
+ if (text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy) !== null) {
8032
+ return true
8077
8033
  }
8078
8034
  }
8079
8035
  }
8080
8036
 
8081
8037
  if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {
8082
8038
  // guess schemaless emails
8083
- at_pos = text.indexOf('@');
8084
- if (at_pos >= 0) {
8039
+ if (text.indexOf('@') >= 0) {
8085
8040
  // We can't skip this check, because this cases are possible:
8086
8041
  // 192.168.1.1@gmail.com, my.in@example.com
8087
- if ((me = text.match(this.re.email_fuzzy)) !== null) {
8088
- shift = me.index + me[1].length;
8089
- next = me.index + me[0].length;
8090
-
8091
- if (this.__index__ < 0 || shift < this.__index__ ||
8092
- (shift === this.__index__ && next > this.__last_index__)) {
8093
- this.__schema__ = 'mailto:';
8094
- this.__index__ = shift;
8095
- this.__last_index__ = next;
8096
- }
8097
- }
8042
+ if (text.match(this.re.email_fuzzy) !== null) { return true }
8098
8043
  }
8099
8044
  }
8100
8045
 
8101
- return this.__index__ >= 0
8046
+ return false
8102
8047
  };
8103
8048
 
8104
8049
  /**
@@ -8147,23 +8092,88 @@ function requireIndex_cjs$2 () {
8147
8092
  **/
8148
8093
  LinkifyIt.prototype.match = function match (text) {
8149
8094
  const result = [];
8150
- let shift = 0;
8095
+ const type_schemed = [];
8096
+ const type_fuzzy_link = [];
8097
+ const type_fuzzy_email = [];
8098
+ let m, len, re;
8099
+
8100
+ function choose (a, b) {
8101
+ if (!a) { return b }
8102
+ if (!b) { return a }
8103
+ if (a.index !== b.index) { return a.index < b.index ? a : b }
8104
+ return a.lastIndex >= b.lastIndex ? a : b
8105
+ }
8106
+
8107
+ if (!text.length) { return null }
8151
8108
 
8152
- // Try to take previous element from cache, if .test() called before
8153
- if (this.__index__ >= 0 && this.__text_cache__ === text) {
8154
- result.push(createMatch(this, shift));
8155
- shift = this.__last_index__;
8109
+ // scan for links with schema
8110
+ if (this.re.schema_test.test(text)) {
8111
+ re = this.re.schema_search;
8112
+ re.lastIndex = 0;
8113
+ while ((m = re.exec(text)) !== null) {
8114
+ len = this.testSchemaAt(text, m[2], re.lastIndex);
8115
+ if (len) {
8116
+ type_schemed.push({
8117
+ schema: m[2],
8118
+ index: m.index + m[1].length,
8119
+ lastIndex: m.index + m[0].length + len
8120
+ });
8121
+ }
8122
+ }
8123
+ }
8124
+
8125
+ if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {
8126
+ re = this.__opts__.fuzzyIP ? this.re.link_fuzzy_global : this.re.link_no_ip_fuzzy_global;
8127
+ re.lastIndex = 0;
8128
+ while ((m = re.exec(text)) !== null) {
8129
+ type_fuzzy_link.push({
8130
+ schema: '',
8131
+ index: m.index + m[1].length,
8132
+ lastIndex: m.index + m[0].length
8133
+ });
8134
+ }
8135
+ }
8136
+
8137
+ if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {
8138
+ re = this.re.email_fuzzy_global;
8139
+ re.lastIndex = 0;
8140
+ while ((m = re.exec(text)) !== null) {
8141
+ type_fuzzy_email.push({
8142
+ schema: 'mailto:',
8143
+ index: m.index + m[1].length,
8144
+ lastIndex: m.index + m[0].length
8145
+ });
8146
+ }
8156
8147
  }
8157
8148
 
8158
- // Cut head if cache was used
8159
- let tail = shift ? text.slice(shift) : text;
8149
+ const indexes = [0, 0, 0];
8150
+ let lastIndex = 0;
8160
8151
 
8161
- // Scan string until end reached
8162
- while (this.test(tail)) {
8163
- result.push(createMatch(this, shift));
8152
+ for (;;) {
8153
+ const candidates = [
8154
+ type_schemed[indexes[0]],
8155
+ type_fuzzy_email[indexes[1]],
8156
+ type_fuzzy_link[indexes[2]]
8157
+ ];
8158
+
8159
+ const candidate = choose(choose(candidates[0], candidates[1]), candidates[2]);
8160
+
8161
+ if (!candidate) { break }
8162
+
8163
+ if (candidate === candidates[0]) {
8164
+ indexes[0]++;
8165
+ } else if (candidate === candidates[1]) {
8166
+ indexes[1]++;
8167
+ } else {
8168
+ indexes[2]++;
8169
+ }
8164
8170
 
8165
- tail = tail.slice(this.__last_index__);
8166
- shift += this.__last_index__;
8171
+ if (candidate.index < lastIndex) { continue }
8172
+
8173
+ const match = new Match(text, candidate.schema, candidate.index, candidate.lastIndex);
8174
+ this.__compiled__[match.schema].normalize(match, this);
8175
+ result.push(match);
8176
+ lastIndex = candidate.lastIndex;
8167
8177
  }
8168
8178
 
8169
8179
  if (result.length) {
@@ -8180,10 +8190,6 @@ function requireIndex_cjs$2 () {
8180
8190
  * of the string, and null otherwise.
8181
8191
  **/
8182
8192
  LinkifyIt.prototype.matchAtStart = function matchAtStart (text) {
8183
- // Reset scan cache
8184
- this.__text_cache__ = text;
8185
- this.__index__ = -1;
8186
-
8187
8193
  if (!text.length) return null
8188
8194
 
8189
8195
  const m = this.re.schema_at_start.exec(text);
@@ -8192,11 +8198,10 @@ function requireIndex_cjs$2 () {
8192
8198
  const len = this.testSchemaAt(text, m[2], m[0].length);
8193
8199
  if (!len) return null
8194
8200
 
8195
- this.__schema__ = m[2];
8196
- this.__index__ = m.index + m[1].length;
8197
- this.__last_index__ = m.index + m[0].length + len;
8201
+ const match = new Match(text, m[2], m.index + m[1].length, m.index + m[0].length + len);
8198
8202
 
8199
- return createMatch(this, 0)
8203
+ this.__compiled__[match.schema].normalize(match, this);
8204
+ return match
8200
8205
  };
8201
8206
 
8202
8207
  /** chainable
@@ -8926,6 +8931,9 @@ function requireIndex_cjs$1 () {
8926
8931
  function isPunctChar(ch) {
8927
8932
  return ucmicro__namespace.P.test(ch) || ucmicro__namespace.S.test(ch);
8928
8933
  }
8934
+ function isPunctCharCode(code) {
8935
+ return isPunctChar(fromCodePoint(code));
8936
+ }
8929
8937
 
8930
8938
  // Markdown ASCII punctuation characters.
8931
8939
  //
@@ -8988,6 +8996,7 @@ function requireIndex_cjs$1 () {
8988
8996
  // (remove this when node v10 is no longer supported).
8989
8997
  //
8990
8998
  if ('ẞ'.toLowerCase() === 'Ṿ') {
8999
+ /* c8 ignore next 2 */
8991
9000
  str = str.replace(/ẞ/g, 'ß');
8992
9001
  }
8993
9002
 
@@ -9025,6 +9034,27 @@ function requireIndex_cjs$1 () {
9025
9034
  //
9026
9035
  return str.toLowerCase().toUpperCase();
9027
9036
  }
9037
+ function isAsciiTrimmable(c) {
9038
+ return c === 0x20 || c === 0x09 || c === 0x0a || c === 0x0d;
9039
+ }
9040
+
9041
+ // "Light" .trim() for blocks (headers, paragraphs), where unicode spaces
9042
+ // should be preserved.
9043
+ function asciiTrim(str) {
9044
+ let start = 0;
9045
+ for (; start < str.length; start++) {
9046
+ if (!isAsciiTrimmable(str.charCodeAt(start))) {
9047
+ break;
9048
+ }
9049
+ }
9050
+ let end = str.length - 1;
9051
+ for (; end >= start; end--) {
9052
+ if (!isAsciiTrimmable(str.charCodeAt(end))) {
9053
+ break;
9054
+ }
9055
+ }
9056
+ return str.slice(start, end + 1);
9057
+ }
9028
9058
 
9029
9059
  // Re-export libraries commonly used in both markdown-it and its plugins,
9030
9060
  // so plugins won't have to depend on them explicitly, which reduces their
@@ -9038,6 +9068,7 @@ function requireIndex_cjs$1 () {
9038
9068
  var utils = /*#__PURE__*/Object.freeze({
9039
9069
  __proto__: null,
9040
9070
  arrayReplaceAt: arrayReplaceAt,
9071
+ asciiTrim: asciiTrim,
9041
9072
  assign: assign,
9042
9073
  escapeHtml: escapeHtml,
9043
9074
  escapeRE: escapeRE,
@@ -9045,6 +9076,7 @@ function requireIndex_cjs$1 () {
9045
9076
  has: has,
9046
9077
  isMdAsciiPunct: isMdAsciiPunct,
9047
9078
  isPunctChar: isPunctChar,
9079
+ isPunctCharCode: isPunctCharCode,
9048
9080
  isSpace: isSpace,
9049
9081
  isString: isString,
9050
9082
  isValidEntityCode: isValidEntityCode,
@@ -10338,12 +10370,31 @@ function requireIndex_cjs$1 () {
10338
10370
  const QUOTE_RE = /['"]/g;
10339
10371
  const APOSTROPHE = '\u2019'; /* ’ */
10340
10372
 
10341
- function replaceAt(str, index, ch) {
10342
- return str.slice(0, index) + ch + str.slice(index + 1);
10373
+ function addReplacement(replacements, tokenIdx, pos, ch) {
10374
+ if (!replacements[tokenIdx]) {
10375
+ replacements[tokenIdx] = [];
10376
+ }
10377
+ replacements[tokenIdx].push({
10378
+ pos,
10379
+ ch
10380
+ });
10381
+ }
10382
+ function applyReplacements(str, replacements) {
10383
+ let result = '';
10384
+ let lastPos = 0;
10385
+ replacements.sort((a, b) => a.pos - b.pos);
10386
+ for (let i = 0; i < replacements.length; i++) {
10387
+ const replacement = replacements[i];
10388
+ result += str.slice(lastPos, replacement.pos) + replacement.ch;
10389
+ lastPos = replacement.pos + 1;
10390
+ }
10391
+ return result + str.slice(lastPos);
10343
10392
  }
10344
10393
  function process_inlines(tokens, state) {
10345
10394
  let j;
10346
10395
  const stack = [];
10396
+ // token index -> list of replacements in the original token content
10397
+ const replacements = {};
10347
10398
  for (let i = 0; i < tokens.length; i++) {
10348
10399
  const token = tokens[i];
10349
10400
  const thisLevel = tokens[i].level;
@@ -10356,9 +10407,9 @@ function requireIndex_cjs$1 () {
10356
10407
  if (token.type !== 'text') {
10357
10408
  continue;
10358
10409
  }
10359
- let text = token.content;
10410
+ const text = token.content;
10360
10411
  let pos = 0;
10361
- let max = text.length;
10412
+ const max = text.length;
10362
10413
 
10363
10414
  /* eslint no-labels:0,block-scoped-var:0 */
10364
10415
  OUTER: while (pos < max) {
@@ -10403,8 +10454,8 @@ function requireIndex_cjs$1 () {
10403
10454
  break;
10404
10455
  }
10405
10456
  }
10406
- const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));
10407
- const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));
10457
+ const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctCharCode(lastChar);
10458
+ const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctCharCode(nextChar);
10408
10459
  const isLastWhiteSpace = isWhiteSpace(lastChar);
10409
10460
  const isNextWhiteSpace = isWhiteSpace(nextChar);
10410
10461
  if (isNextWhiteSpace) {
@@ -10441,7 +10492,7 @@ function requireIndex_cjs$1 () {
10441
10492
  if (!canOpen && !canClose) {
10442
10493
  // middle of word
10443
10494
  if (isSingle) {
10444
- token.content = replaceAt(token.content, t.index, APOSTROPHE);
10495
+ addReplacement(replacements, i, t.index, APOSTROPHE);
10445
10496
  }
10446
10497
  continue;
10447
10498
  }
@@ -10463,18 +10514,8 @@ function requireIndex_cjs$1 () {
10463
10514
  openQuote = state.md.options.quotes[0];
10464
10515
  closeQuote = state.md.options.quotes[1];
10465
10516
  }
10466
-
10467
- // replace token.content *before* tokens[item.token].content,
10468
- // because, if they are pointing at the same token, replaceAt
10469
- // could mess up indices when quote length != 1
10470
- token.content = replaceAt(token.content, t.index, closeQuote);
10471
- tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, openQuote);
10472
- pos += closeQuote.length - 1;
10473
- if (item.token === i) {
10474
- pos += openQuote.length - 1;
10475
- }
10476
- text = token.content;
10477
- max = text.length;
10517
+ addReplacement(replacements, i, t.index, closeQuote);
10518
+ addReplacement(replacements, item.token, item.pos, openQuote);
10478
10519
  stack.length = j;
10479
10520
  continue OUTER;
10480
10521
  }
@@ -10488,10 +10529,13 @@ function requireIndex_cjs$1 () {
10488
10529
  level: thisLevel
10489
10530
  });
10490
10531
  } else if (canClose && isSingle) {
10491
- token.content = replaceAt(token.content, t.index, APOSTROPHE);
10532
+ addReplacement(replacements, i, t.index, APOSTROPHE);
10492
10533
  }
10493
10534
  }
10494
10535
  }
10536
+ Object.keys(replacements).forEach(function (tokenIdx) {
10537
+ tokens[tokenIdx].content = applyReplacements(tokens[tokenIdx].content, replacements[tokenIdx]);
10538
+ });
10495
10539
  }
10496
10540
  function smartquotes(state) {
10497
10541
  /* eslint max-depth:0 */
@@ -11951,12 +11995,23 @@ function requireIndex_cjs$1 () {
11951
11995
  }
11952
11996
  let nextLine = startLine + 1;
11953
11997
 
11998
+ // Block types 6 and 7 (the only ones whose end condition is a blank line)
11999
+ // have `/^$/` as their closing regexp. For all other types (1-5, e.g.
12000
+ // `<!--` comments), a blank line is regular content and must not terminate
12001
+ // the block - it ends only when its closing sequence is found.
12002
+ const endsOnBlankLine = HTML_SEQUENCES[i][1].test('');
12003
+
11954
12004
  // If we are here - we detected HTML block.
11955
12005
  // Let's roll down till block end.
11956
12006
  if (!HTML_SEQUENCES[i][1].test(lineText)) {
11957
12007
  for (; nextLine < endLine; nextLine++) {
11958
12008
  if (state.sCount[nextLine] < state.blkIndent) {
11959
- break;
12009
+ // An outdented blank line shouldn't end a block that doesn't end on a
12010
+ // blank line (e.g. a `<!--` comment inside a list item). Such blocks
12011
+ // must continue until their closing sequence regardless of indent.
12012
+ if (endsOnBlankLine || !state.isEmpty(nextLine)) {
12013
+ break;
12014
+ }
11960
12015
  }
11961
12016
  pos = state.bMarks[nextLine] + state.tShift[nextLine];
11962
12017
  max = state.eMarks[nextLine];
@@ -12017,7 +12072,7 @@ function requireIndex_cjs$1 () {
12017
12072
  token_o.markup = '########'.slice(0, level);
12018
12073
  token_o.map = [startLine, state.line];
12019
12074
  const token_i = state.push('inline', '', 0);
12020
- token_i.content = state.src.slice(pos, max).trim();
12075
+ token_i.content = asciiTrim(state.src.slice(pos, max));
12021
12076
  token_i.map = [startLine, state.line];
12022
12077
  token_i.children = [];
12023
12078
  const token_c = state.push('heading_close', 'h' + String(level), -1);
@@ -12086,9 +12141,10 @@ function requireIndex_cjs$1 () {
12086
12141
  }
12087
12142
  if (!level) {
12088
12143
  // Didn't find valid underline
12144
+ state.parentType = oldParentType;
12089
12145
  return false;
12090
12146
  }
12091
- const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();
12147
+ const content = asciiTrim(state.getLines(startLine, nextLine, state.blkIndent, false));
12092
12148
  state.line = nextLine + 1;
12093
12149
  const token_o = state.push('heading_open', 'h' + String(level), 1);
12094
12150
  token_o.markup = String.fromCharCode(marker);
@@ -12136,7 +12192,7 @@ function requireIndex_cjs$1 () {
12136
12192
  break;
12137
12193
  }
12138
12194
  }
12139
- const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();
12195
+ const content = asciiTrim(state.getLines(startLine, nextLine, state.blkIndent, false));
12140
12196
  state.line = nextLine;
12141
12197
  const token_o = state.push('paragraph_open', 'p', 1);
12142
12198
  token_o.map = [startLine, state.line];
@@ -12340,8 +12396,30 @@ function requireIndex_cjs$1 () {
12340
12396
  const max = this.posMax;
12341
12397
  const marker = this.src.charCodeAt(start);
12342
12398
 
12343
- // treat beginning of the line as a whitespace
12344
- const lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20;
12399
+ // Astral characters below are combined manually, because .codePointAt()
12400
+ // does not guarantee numeric type output. And we don't wish JIT cache issues.
12401
+ // The broken surrogate pairs are evaluated as U+FFFD to prevent possible
12402
+ // crashes.
12403
+
12404
+ let lastChar;
12405
+ if (start === 0) {
12406
+ // treat beginning of the line as a whitespace
12407
+ lastChar = 0x20;
12408
+ } else if (start === 1) {
12409
+ lastChar = this.src.charCodeAt(0);
12410
+ if ((lastChar & 0xF800) === 0xD800) {
12411
+ lastChar = 0xFFFD;
12412
+ }
12413
+ } else {
12414
+ lastChar = this.src.charCodeAt(start - 1);
12415
+ if ((lastChar & 0xFC00) === 0xDC00) {
12416
+ // low surrogate => add high one, replace broken pair with U+FFFD
12417
+ const highSurr = this.src.charCodeAt(start - 2);
12418
+ lastChar = (highSurr & 0xFC00) === 0xD800 ? 0x10000 + (highSurr - 0xD800 << 10) + (lastChar - 0xDC00) : 0xFFFD;
12419
+ } else if ((lastChar & 0xFC00) === 0xD800) {
12420
+ lastChar = 0xFFFD;
12421
+ }
12422
+ }
12345
12423
  let pos = start;
12346
12424
  while (pos < max && this.src.charCodeAt(pos) === marker) {
12347
12425
  pos++;
@@ -12349,9 +12427,16 @@ function requireIndex_cjs$1 () {
12349
12427
  const count = pos - start;
12350
12428
 
12351
12429
  // treat end of the line as a whitespace
12352
- const nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20;
12353
- const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));
12354
- const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));
12430
+ let nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20;
12431
+ if ((nextChar & 0xFC00) === 0xD800) {
12432
+ // high surrogate => add low one, replace broken pair with U+FFFD
12433
+ const lowSurr = this.src.charCodeAt(pos + 1);
12434
+ nextChar = (lowSurr & 0xFC00) === 0xDC00 ? 0x10000 + (nextChar - 0xD800 << 10) + (lowSurr - 0xDC00) : 0xFFFD;
12435
+ } else if ((nextChar & 0xFC00) === 0xDC00) {
12436
+ nextChar = 0xFFFD;
12437
+ }
12438
+ const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctCharCode(lastChar);
12439
+ const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctCharCode(nextChar);
12355
12440
  const isLastWhiteSpace = isWhiteSpace(lastChar);
12356
12441
  const isNextWhiteSpace = isWhiteSpace(nextChar);
12357
12442
  const left_flanking = !isNextWhiteSpace && (!isNextPunctChar || isLastWhiteSpace || isLastPunctChar);
@@ -13284,7 +13369,7 @@ function requireIndex_cjs$1 () {
13284
13369
  } else {
13285
13370
  const match = state.src.slice(pos).match(NAMED_RE);
13286
13371
  if (match) {
13287
- const decoded = entities.decodeHTML(match[0]);
13372
+ const decoded = entities.decodeHTMLStrict(match[0]);
13288
13373
  if (decoded !== match[0]) {
13289
13374
  if (!silent) {
13290
13375
  const token = state.push('text_special', '', 0);
@@ -14063,7 +14148,7 @@ function requireIndex_cjs$1 () {
14063
14148
  * ```javascript
14064
14149
  * var md = require('markdown-it')()
14065
14150
  * .set({ html: true, breaks: true })
14066
- * .set({ typographer, true });
14151
+ * .set({ typographer: true });
14067
14152
  * ```
14068
14153
  *
14069
14154
  * __Note:__ To achieve the best possible performance, don't modify a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@descope/flow-components",
3
- "version": "3.14.2",
3
+ "version": "3.14.3",
4
4
  "description": "",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -97,7 +97,7 @@
97
97
  "webpack-subresource-integrity": "5.2.0-rc.1"
98
98
  },
99
99
  "dependencies": {
100
- "@descope/web-components-ui": "3.14.2"
100
+ "@descope/web-components-ui": "3.14.3"
101
101
  },
102
102
  "peerDependencies": {
103
103
  "react": ">= 18"