@atlaskit/adf-utils 19.14.0 → 19.15.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.
- package/CHANGELOG.md +17 -0
- package/afm-jira/tsconfig.json +1 -5
- package/afm-post-office/tsconfig.json +1 -5
- package/dist/cjs/builders/utils/create-text-nodes.js +5 -0
- package/dist/cjs/builders/utils/is-duplicate-mark.js +5 -0
- package/dist/cjs/scrub/default-node-replacements.js +2 -0
- package/dist/cjs/scrub/scrub-adf.js +3 -0
- package/dist/cjs/scrub/scrub-content.js +10 -3
- package/dist/cjs/transforms/errors.js +4 -5
- package/dist/cjs/transforms/nested-table-transform.js +14 -10
- package/dist/cjs/transforms/nodes-missing-content-transform.js +2 -0
- package/dist/cjs/transforms.js +6 -0
- package/dist/cjs/traverse/map.js +2 -0
- package/dist/cjs/traverse/reduce.js +2 -0
- package/dist/cjs/traverse/traverse.js +3 -0
- package/dist/cjs/validator/utils.js +5 -0
- package/dist/cjs/validator/validator.js +130 -15
- package/dist/es2019/builders/utils/create-text-nodes.js +6 -0
- package/dist/es2019/builders/utils/is-duplicate-mark.js +5 -0
- package/dist/es2019/scrub/default-node-replacements.js +4 -0
- package/dist/es2019/scrub/scrub-adf.js +3 -0
- package/dist/es2019/scrub/scrub-content.js +7 -0
- package/dist/es2019/transforms/dedupe-marks-transform.js +2 -2
- package/dist/es2019/transforms/invalid-media-content-transform.js +1 -1
- package/dist/es2019/transforms/nested-table-transform.js +15 -11
- package/dist/es2019/transforms/nodes-missing-content-transform.js +2 -0
- package/dist/es2019/transforms.js +1 -1
- package/dist/es2019/traverse/map.js +3 -0
- package/dist/es2019/traverse/reduce.js +3 -0
- package/dist/es2019/traverse/traverse.js +3 -0
- package/dist/es2019/validator/utils.js +5 -0
- package/dist/es2019/validator/validator.js +139 -19
- package/dist/esm/builders/utils/create-text-nodes.js +6 -0
- package/dist/esm/builders/utils/is-duplicate-mark.js +5 -0
- package/dist/esm/scrub/default-node-replacements.js +2 -0
- package/dist/esm/scrub/scrub-adf.js +3 -0
- package/dist/esm/scrub/scrub-content.js +10 -3
- package/dist/esm/transforms/errors.js +4 -5
- package/dist/esm/transforms/nested-table-transform.js +13 -9
- package/dist/esm/transforms/nodes-missing-content-transform.js +2 -0
- package/dist/esm/transforms.js +1 -1
- package/dist/esm/traverse/map.js +3 -0
- package/dist/esm/traverse/reduce.js +3 -0
- package/dist/esm/traverse/traverse.js +3 -0
- package/dist/esm/validator/utils.js +5 -0
- package/dist/esm/validator/validator.js +131 -14
- package/dist/types/transforms/nested-table-transform.d.ts +1 -0
- package/dist/types/transforms.d.ts +1 -1
- package/dist/types-ts4.5/transforms/nested-table-transform.d.ts +1 -0
- package/dist/types-ts4.5/transforms.d.ts +1 -1
- package/package.json +1 -1
- package/tsconfig.json +0 -1
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
// Ignored via go/ees005
|
|
2
|
+
// eslint-disable-next-line import/no-namespace
|
|
1
3
|
import * as specs from './specs';
|
|
2
4
|
import { copy, isBoolean, isDefined, isInteger, isNumber, isPlainObject, isString, makeArray } from './utils';
|
|
3
5
|
import { validatorFnMap } from './rules';
|
|
6
|
+
|
|
7
|
+
// Ignored via go/ees005
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4
9
|
function mapMarksItems(spec, fn = x => x) {
|
|
5
10
|
if (spec.props && spec.props.marks) {
|
|
11
|
+
// Ignored via go/ees005
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
6
13
|
const {
|
|
7
14
|
items,
|
|
8
15
|
...rest
|
|
@@ -25,6 +32,9 @@ function mapMarksItems(spec, fn = x => x) {
|
|
|
25
32
|
return spec;
|
|
26
33
|
}
|
|
27
34
|
}
|
|
35
|
+
|
|
36
|
+
// Ignored via go/ees005
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
38
|
const partitionObject = (obj, predicate) => Object.keys(obj).reduce((acc, key) => {
|
|
29
39
|
const result = predicate(key, obj[key], obj);
|
|
30
40
|
acc[result ? 0 : 1].push(key);
|
|
@@ -36,7 +46,11 @@ const partitionObject = (obj, predicate) => Object.keys(obj).reduce((acc, key) =
|
|
|
36
46
|
* We denormalised the spec to save bundle size.
|
|
37
47
|
*/
|
|
38
48
|
function createSpec(nodes, marks) {
|
|
49
|
+
// Ignored via go/ees005
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
51
|
return Object.keys(specs).reduce((newSpecs, k) => {
|
|
52
|
+
// Ignored via go/ees005
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
40
54
|
const spec = {
|
|
41
55
|
...specs[k]
|
|
42
56
|
};
|
|
@@ -47,6 +61,8 @@ function createSpec(nodes, marks) {
|
|
|
47
61
|
if (spec.props.content) {
|
|
48
62
|
// 'tableCell_content' => { type: 'array', items: [ ... ] }
|
|
49
63
|
if (isString(spec.props.content)) {
|
|
64
|
+
// Ignored via go/ees005
|
|
65
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
66
|
spec.props.content = specs[spec.props.content];
|
|
51
67
|
}
|
|
52
68
|
|
|
@@ -73,9 +89,21 @@ function createSpec(nodes, marks) {
|
|
|
73
89
|
spec.props.content.items = spec.props.content.items
|
|
74
90
|
// ['inline'] => [['emoji', 'hr', ...]]
|
|
75
91
|
// ['media'] => [['media']]
|
|
76
|
-
.map(item => isString(item) ?
|
|
92
|
+
.map(item => isString(item) ?
|
|
93
|
+
// Ignored via go/ees005
|
|
94
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
95
|
+
Array.isArray(specs[item]) ?
|
|
96
|
+
// Ignored via go/ees005
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
98
|
+
specs[item] : [item] : item)
|
|
77
99
|
// [['emoji', 'hr', 'inline_code']] => [['emoji', 'hr', ['text', { marks: {} }]]]
|
|
78
|
-
.map(item => item.map(subItem =>
|
|
100
|
+
.map(item => item.map(subItem =>
|
|
101
|
+
// Ignored via go/ees005
|
|
102
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
103
|
+
Array.isArray(specs[subItem]) ?
|
|
104
|
+
// Ignored via go/ees005
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
106
|
+
specs[subItem] : isString(subItem) ? subItem :
|
|
79
107
|
// Now `NoMark` produces `items: []`, should be fixed in generator
|
|
80
108
|
['text', subItem])
|
|
81
109
|
// Remove unsupported nodes & marks
|
|
@@ -109,6 +137,9 @@ function createSpec(nodes, marks) {
|
|
|
109
137
|
return newSpecs;
|
|
110
138
|
}, {});
|
|
111
139
|
}
|
|
140
|
+
|
|
141
|
+
// Ignored via go/ees005
|
|
142
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
112
143
|
function getOptionsForType(type, list) {
|
|
113
144
|
if (!list) {
|
|
114
145
|
return {};
|
|
@@ -135,7 +166,10 @@ export function validateAttrs(spec, value) {
|
|
|
135
166
|
}
|
|
136
167
|
if (isValidatorSpecAttrs(spec)) {
|
|
137
168
|
// If spec has ".props" it is ValidatorSpecAttrs and need to pipe back in recursively
|
|
138
|
-
const [_, invalidKeys] = partitionObject(spec.props, (key, subSpec) =>
|
|
169
|
+
const [_, invalidKeys] = partitionObject(spec.props, (key, subSpec) =>
|
|
170
|
+
// Ignored via go/ees005
|
|
171
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
172
|
+
validateAttrs(subSpec, value[key]));
|
|
139
173
|
return invalidKeys.length === 0;
|
|
140
174
|
}
|
|
141
175
|
// extension_node parameters has no type
|
|
@@ -151,7 +185,13 @@ export function validateAttrs(spec, value) {
|
|
|
151
185
|
return isInteger(value) && (isDefined(spec.minimum) ? spec.minimum <= value : true) && (isDefined(spec.maximum) ? spec.maximum >= value : true);
|
|
152
186
|
case 'string':
|
|
153
187
|
const validatorFnPassed = rule => typeof value === 'string' && isDefined(validatorFnMap[rule]) && validatorFnMap[rule](value);
|
|
154
|
-
return isString(value) && (
|
|
188
|
+
return isString(value) && (
|
|
189
|
+
// Ignored via go/ees005
|
|
190
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
191
|
+
isDefined(spec.minLength) ? spec.minLength <= value.length : true) && (isDefined(spec.validatorFn) ? validatorFnPassed(spec.validatorFn) : true) && (
|
|
192
|
+
// Ignored via go/ees005
|
|
193
|
+
// eslint-disable-next-line require-unicode-regexp
|
|
194
|
+
spec.pattern ? new RegExp(spec.pattern).test(value) : true);
|
|
155
195
|
case 'object':
|
|
156
196
|
return isPlainObject(value);
|
|
157
197
|
case 'array':
|
|
@@ -206,7 +246,10 @@ const invalidChildContent = (child, errorCallback, parentSpec) => {
|
|
|
206
246
|
}, getUnsupportedOptions(parentSpec));
|
|
207
247
|
}
|
|
208
248
|
};
|
|
209
|
-
const unsupportedMarkContent = (errorCode, mark, errorCallback, errorMessage
|
|
249
|
+
const unsupportedMarkContent = (errorCode, mark, errorCallback, errorMessage
|
|
250
|
+
// Ignored via go/ees005
|
|
251
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
252
|
+
) => {
|
|
210
253
|
const message = errorMessage || errorMessageFor(mark.type, 'unsupported mark');
|
|
211
254
|
if (!errorCallback) {
|
|
212
255
|
throw new Error(message);
|
|
@@ -224,7 +267,10 @@ const unsupportedMarkContent = (errorCode, mark, errorCallback, errorMessage) =>
|
|
|
224
267
|
});
|
|
225
268
|
}
|
|
226
269
|
};
|
|
227
|
-
const unsupportedNodeAttributesContent = (entity, errorCode, invalidAttributes, message, errorCallback
|
|
270
|
+
const unsupportedNodeAttributesContent = (entity, errorCode, invalidAttributes, message, errorCallback
|
|
271
|
+
// Ignored via go/ees005
|
|
272
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
273
|
+
) => {
|
|
228
274
|
if (!errorCallback) {
|
|
229
275
|
throw new Error(message);
|
|
230
276
|
} else {
|
|
@@ -248,6 +294,8 @@ export function validator(nodes, marks, options) {
|
|
|
248
294
|
mode = 'strict',
|
|
249
295
|
allowPrivateAttributes = false
|
|
250
296
|
} = options || {};
|
|
297
|
+
// Ignored via go/ees005
|
|
298
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
251
299
|
const validate = (entity, errorCallback, allowed, parentSpec) => {
|
|
252
300
|
const validationResult = validateNode(entity, errorCallback, allowed, parentSpec);
|
|
253
301
|
return {
|
|
@@ -255,11 +303,14 @@ export function validator(nodes, marks, options) {
|
|
|
255
303
|
valid: validationResult.valid
|
|
256
304
|
};
|
|
257
305
|
};
|
|
258
|
-
const validateNode = (entity, errorCallback, allowed, parentSpec, isMark = false
|
|
306
|
+
const validateNode = (entity, errorCallback, allowed, parentSpec, isMark = false
|
|
307
|
+
// Ignored via go/ees005
|
|
308
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
309
|
+
) => {
|
|
259
310
|
const {
|
|
260
311
|
type
|
|
261
312
|
} = entity;
|
|
262
|
-
|
|
313
|
+
const newEntity = {
|
|
263
314
|
...entity
|
|
264
315
|
};
|
|
265
316
|
const err = (code, msg, meta) => {
|
|
@@ -301,6 +352,9 @@ export function validator(nodes, marks, options) {
|
|
|
301
352
|
};
|
|
302
353
|
};
|
|
303
354
|
return validate;
|
|
355
|
+
|
|
356
|
+
// Ignored via go/ees005
|
|
357
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
304
358
|
function marksValidationFor(validator, entity, errorCallback, newEntity, err) {
|
|
305
359
|
let validationResult;
|
|
306
360
|
if (validator.props && validator.props.marks) {
|
|
@@ -316,6 +370,8 @@ export function validator(nodes, marks, options) {
|
|
|
316
370
|
}
|
|
317
371
|
return validationResult;
|
|
318
372
|
}
|
|
373
|
+
// Ignored via go/ees005
|
|
374
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
319
375
|
function validatorFor(spec, typeOptions) {
|
|
320
376
|
return {
|
|
321
377
|
...spec,
|
|
@@ -329,6 +385,9 @@ export function validator(nodes, marks, options) {
|
|
|
329
385
|
} : {})
|
|
330
386
|
};
|
|
331
387
|
}
|
|
388
|
+
|
|
389
|
+
// Ignored via go/ees005
|
|
390
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
332
391
|
function marksAfterValidation(entity, errorCallback, marksSet, validator) {
|
|
333
392
|
return entity.marks ? entity.marks.map(mark => {
|
|
334
393
|
const isAKnownMark = marks ? marks.indexOf(mark.type) > -1 : true;
|
|
@@ -368,12 +427,17 @@ export function validator(nodes, marks, options) {
|
|
|
368
427
|
}) : [];
|
|
369
428
|
}
|
|
370
429
|
function allowedMarksFor(validator) {
|
|
430
|
+
// Ignored via go/ees005
|
|
431
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
371
432
|
const {
|
|
372
433
|
items
|
|
373
434
|
} = validator.props.marks;
|
|
374
435
|
const marksSet = items.length ? Array.isArray(items[0]) ? items[0] : items : [];
|
|
375
436
|
return marksSet;
|
|
376
437
|
}
|
|
438
|
+
|
|
439
|
+
// Ignored via go/ees005
|
|
440
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
377
441
|
function marksForEntitySpecNotSupportingMarks(prevEntity, newEntity, errorCallback, err) {
|
|
378
442
|
const errorCode = 'REDUNDANT_MARKS';
|
|
379
443
|
const currentMarks = prevEntity.marks || [];
|
|
@@ -413,8 +477,13 @@ export function validator(nodes, marks, options) {
|
|
|
413
477
|
valid: true,
|
|
414
478
|
entity: prevEntity
|
|
415
479
|
};
|
|
480
|
+
// Ignored via go/ees005
|
|
481
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
416
482
|
if (validatorSpec.props.text) {
|
|
417
|
-
if (isDefined(prevEntity.text) &&
|
|
483
|
+
if (isDefined(prevEntity.text) &&
|
|
484
|
+
// Ignored via go/ees005
|
|
485
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
486
|
+
!validateAttrs(validatorSpec.props.text, prevEntity.text)) {
|
|
418
487
|
result = err('INVALID_TEXT', `'text' validation failed`);
|
|
419
488
|
}
|
|
420
489
|
}
|
|
@@ -425,7 +494,11 @@ export function validator(nodes, marks, options) {
|
|
|
425
494
|
valid: true,
|
|
426
495
|
entity: prevEntity
|
|
427
496
|
};
|
|
497
|
+
// Ignored via go/ees005
|
|
498
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
428
499
|
if (validatorSpec.props.content && prevEntity.content) {
|
|
500
|
+
// Ignored via go/ees005
|
|
501
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
429
502
|
const {
|
|
430
503
|
minItems,
|
|
431
504
|
maxItems
|
|
@@ -449,6 +522,8 @@ export function validator(nodes, marks, options) {
|
|
|
449
522
|
}
|
|
450
523
|
function invalidAttributesFor(validatorSpec, prevEntity) {
|
|
451
524
|
let invalidAttrs = [];
|
|
525
|
+
// Ignored via go/ees005
|
|
526
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
452
527
|
let validatorAttrs = {};
|
|
453
528
|
if (validatorSpec.props && validatorSpec.props.attrs) {
|
|
454
529
|
const attrOptions = makeArray(validatorSpec.props.attrs);
|
|
@@ -461,10 +536,14 @@ export function validator(nodes, marks, options) {
|
|
|
461
536
|
const attrOption = attrOptions[i];
|
|
462
537
|
if (attrOption && attrOption.props) {
|
|
463
538
|
[, invalidAttrs] = partitionObject(attrOption.props, (key, spec) => {
|
|
539
|
+
// Ignored via go/ees005
|
|
540
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
464
541
|
const valueToValidate = prevEntity.attrs[key];
|
|
465
542
|
return validateAttrs(spec, valueToValidate);
|
|
466
543
|
});
|
|
467
544
|
}
|
|
545
|
+
// Ignored via go/ees005
|
|
546
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
468
547
|
validatorAttrs = attrOption;
|
|
469
548
|
if (!invalidAttrs.length) {
|
|
470
549
|
break;
|
|
@@ -476,6 +555,9 @@ export function validator(nodes, marks, options) {
|
|
|
476
555
|
validatorAttrs
|
|
477
556
|
};
|
|
478
557
|
}
|
|
558
|
+
|
|
559
|
+
// Ignored via go/ees005
|
|
560
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
479
561
|
function attributesValidationFor(validatorSpec, prevEntity, newEntity, isMark, errorCallback) {
|
|
480
562
|
const validatorSpecAllowsAttributes = validatorSpec.props && validatorSpec.props.attrs;
|
|
481
563
|
if (prevEntity.attrs) {
|
|
@@ -503,13 +585,19 @@ export function validator(nodes, marks, options) {
|
|
|
503
585
|
entity: prevEntity
|
|
504
586
|
};
|
|
505
587
|
}
|
|
506
|
-
function validateAttributes(validatorSpec, prevEntity,
|
|
588
|
+
function validateAttributes(validatorSpec, prevEntity,
|
|
589
|
+
// Ignored via go/ees005
|
|
590
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
591
|
+
attributes) {
|
|
507
592
|
const invalidAttributesResult = invalidAttributesFor(validatorSpec, prevEntity);
|
|
508
593
|
const {
|
|
509
594
|
invalidAttrs
|
|
510
595
|
} = invalidAttributesResult;
|
|
511
596
|
const validatorAttrs = invalidAttributesResult.validatorAttrs;
|
|
512
597
|
const attrs = Object.keys(attributes).filter(k => !(allowPrivateAttributes && k.startsWith('__')));
|
|
598
|
+
|
|
599
|
+
// Ignored via go/ees005
|
|
600
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
513
601
|
const redundantAttrs = attrs.filter(a => !validatorAttrs.props[a]);
|
|
514
602
|
const hasRedundantAttrs = redundantAttrs.length > 0;
|
|
515
603
|
const hasUnsupportedAttrs = invalidAttrs.length || hasRedundantAttrs;
|
|
@@ -519,6 +607,9 @@ export function validator(nodes, marks, options) {
|
|
|
519
607
|
redundantAttrs
|
|
520
608
|
};
|
|
521
609
|
}
|
|
610
|
+
|
|
611
|
+
// Ignored via go/ees005
|
|
612
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
522
613
|
function handleUnsupportedNodeAttributes(prevEntity, newEntity, invalidAttrs, redundantAttrs, errorCallback) {
|
|
523
614
|
const attr = invalidAttrs.concat(redundantAttrs);
|
|
524
615
|
let result = {
|
|
@@ -554,7 +645,10 @@ export function validator(nodes, marks, options) {
|
|
|
554
645
|
marksValidationOutput: [markValidationResult]
|
|
555
646
|
};
|
|
556
647
|
}
|
|
557
|
-
function handleNoAttibutesAllowedInSpecForMark(prevEntity,
|
|
648
|
+
function handleNoAttibutesAllowedInSpecForMark(prevEntity,
|
|
649
|
+
// Ignored via go/ees005
|
|
650
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
651
|
+
attributes) {
|
|
558
652
|
const message = errorMessageFor('redundant attributes found', Object.keys(attributes).join(', '));
|
|
559
653
|
const errorCode = 'REDUNDANT_ATTRIBUTES';
|
|
560
654
|
const markValidationResult = {
|
|
@@ -568,9 +662,13 @@ export function validator(nodes, marks, options) {
|
|
|
568
662
|
marksValidationOutput: [markValidationResult]
|
|
569
663
|
};
|
|
570
664
|
}
|
|
665
|
+
|
|
666
|
+
// Ignored via go/ees005
|
|
667
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
571
668
|
function wrapUnSupportedNodeAttributes(prevEntity, newEntity, invalidAttrs, errorCode, message, errorCallback) {
|
|
572
|
-
|
|
573
|
-
|
|
669
|
+
const invalidValues = {};
|
|
670
|
+
// eslint-disable-next-line guard-for-in
|
|
671
|
+
for (const invalidAttr in invalidAttrs) {
|
|
574
672
|
invalidValues[invalidAttrs[invalidAttr]] = prevEntity.attrs && prevEntity.attrs[invalidAttrs[invalidAttr]];
|
|
575
673
|
if (newEntity.attrs) {
|
|
576
674
|
delete newEntity.attrs[invalidAttrs[invalidAttr]];
|
|
@@ -597,12 +695,18 @@ export function validator(nodes, marks, options) {
|
|
|
597
695
|
return [unsupportedNodeAttributeValues];
|
|
598
696
|
}
|
|
599
697
|
}
|
|
698
|
+
|
|
699
|
+
// Ignored via go/ees005
|
|
700
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
600
701
|
function extraPropsValidationFor(validatorSpec, prevEntity, err, newEntity, type) {
|
|
601
|
-
|
|
702
|
+
const result = {
|
|
602
703
|
valid: true,
|
|
603
704
|
entity: prevEntity
|
|
604
705
|
};
|
|
605
|
-
const [requiredProps, redundantProps] = partitionObject(prevEntity, k =>
|
|
706
|
+
const [requiredProps, redundantProps] = partitionObject(prevEntity, k =>
|
|
707
|
+
// Ignored via go/ees005
|
|
708
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
709
|
+
isDefined(validatorSpec.props[k]));
|
|
606
710
|
if (redundantProps.length) {
|
|
607
711
|
if (mode === 'loose') {
|
|
608
712
|
newEntity = {
|
|
@@ -619,8 +723,14 @@ export function validator(nodes, marks, options) {
|
|
|
619
723
|
}
|
|
620
724
|
return result;
|
|
621
725
|
}
|
|
622
|
-
|
|
623
|
-
|
|
726
|
+
|
|
727
|
+
// Ignored via go/ees005
|
|
728
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
729
|
+
function specBasedValidationFor(spec,
|
|
730
|
+
// Ignored via go/ees005
|
|
731
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
732
|
+
typeOptions, prevEntity, err, newEntity, type, errorCallback, isMark) {
|
|
733
|
+
const specBasedValidationResult = {
|
|
624
734
|
hasValidated: false
|
|
625
735
|
};
|
|
626
736
|
const validatorSpec = validatorFor(spec, typeOptions);
|
|
@@ -710,20 +820,30 @@ export function validator(nodes, marks, options) {
|
|
|
710
820
|
if (validatorSpec.props.content) {
|
|
711
821
|
const contentValidatorSpec = validatorSpec.props.content;
|
|
712
822
|
if (prevEntity.content) {
|
|
823
|
+
// Ignored via go/ees005
|
|
824
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
713
825
|
const validateChildNode = (child, index) => {
|
|
714
826
|
if (child === undefined) {
|
|
715
827
|
return child;
|
|
716
828
|
}
|
|
717
|
-
const validateChildMarks = (childEntity, marksValidationOutput, errorCallback, isLastValidationSpec, isParentTupleLike = false
|
|
829
|
+
const validateChildMarks = (childEntity, marksValidationOutput, errorCallback, isLastValidationSpec, isParentTupleLike = false
|
|
830
|
+
// Ignored via go/ees005
|
|
831
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
832
|
+
) => {
|
|
718
833
|
let marksAreValid = true;
|
|
719
834
|
if (childEntity && childEntity.marks && marksValidationOutput) {
|
|
720
835
|
const validMarks = marksValidationOutput.filter(mark => mark.valid);
|
|
836
|
+
// Ignored via go/ees005
|
|
837
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
721
838
|
const finalMarks = marksValidationOutput.map(mr => {
|
|
722
839
|
if (mr.valid) {
|
|
723
840
|
return mr.newMark;
|
|
724
841
|
} else {
|
|
725
842
|
if (validMarks.length || isLastValidationSpec || isParentTupleLike || mr.errorCode === 'INVALID_TYPE' || mr.errorCode === 'INVALID_CONTENT' || mr.errorCode === 'REDUNDANT_ATTRIBUTES' || mr.errorCode === 'INVALID_ATTRIBUTES') {
|
|
726
|
-
return unsupportedMarkContent(
|
|
843
|
+
return unsupportedMarkContent(
|
|
844
|
+
// Ignored via go/ees005
|
|
845
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
846
|
+
mr.errorCode, mr.originalMark, errorCallback, mr.message);
|
|
727
847
|
}
|
|
728
848
|
return;
|
|
729
849
|
}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { text } from '../nodes/text';
|
|
2
|
+
|
|
3
|
+
// Ignored via go/ees005
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2
5
|
export function createTextNodes(nodes) {
|
|
3
6
|
return nodes.map(createTextFromString);
|
|
4
7
|
}
|
|
8
|
+
|
|
9
|
+
// Ignored via go/ees005
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5
11
|
export function createTextFromString(str) {
|
|
6
12
|
return typeof str === 'string' ? text(str) : str;
|
|
7
13
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Ignored via go/ees005
|
|
2
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1
3
|
export function isDuplicateMark(node, type) {
|
|
2
4
|
if (node.marks && node.marks.some(function (mark) {
|
|
3
5
|
return mark.type === type;
|
|
@@ -6,6 +8,9 @@ export function isDuplicateMark(node, type) {
|
|
|
6
8
|
}
|
|
7
9
|
return false;
|
|
8
10
|
}
|
|
11
|
+
|
|
12
|
+
// Ignored via go/ees005
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
14
|
export function duplicateMarkError(node, type) {
|
|
10
15
|
return "Mark with the same name '".concat(type, "' already exists on a node: ").concat(JSON.stringify(node));
|
|
11
16
|
}
|
|
@@ -16,6 +16,8 @@ var mediaParent = function mediaParent(node) {
|
|
|
16
16
|
var _node$content;
|
|
17
17
|
return {
|
|
18
18
|
type: node.type,
|
|
19
|
+
// Ignored via go/ees005
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
19
21
|
attrs: node.attrs ? scrubAttrs(node.type, node.attrs) : undefined,
|
|
20
22
|
content: (_node$content = node.content) === null || _node$content === void 0 ? void 0 : _node$content.filter(function (c) {
|
|
21
23
|
return (c === null || c === void 0 ? void 0 : c.type) === 'media';
|
|
@@ -22,6 +22,9 @@ export default (function (adf) {
|
|
|
22
22
|
return result;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
+
|
|
26
|
+
// Ignored via go/ees005
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
28
|
var updatedNode = {};
|
|
26
29
|
Object.entries(node).forEach(function (_ref) {
|
|
27
30
|
var _ref2 = _slicedToArray(_ref, 2),
|
|
@@ -26,6 +26,8 @@ var BYPASS_ATTR_LIST = {
|
|
|
26
26
|
tableRow: ['defaultMarks'],
|
|
27
27
|
taskItem: ['state']
|
|
28
28
|
};
|
|
29
|
+
// Ignored via go/ees005
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
31
|
var fromEntries = function fromEntries(iterable) {
|
|
30
32
|
return _toConsumableArray(iterable).reduce(function (obj, _ref) {
|
|
31
33
|
var _ref2 = _slicedToArray(_ref, 2),
|
|
@@ -53,17 +55,17 @@ export var scrubStr = function scrubStr(val) {
|
|
|
53
55
|
if (/^(?:[0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD801[\uDCA0-\uDCA9]|\uD803[\uDD30-\uDD39]|\uD804[\uDC66-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF39]|\uD806[\uDCE0-\uDCE9\uDD50-\uDD59]|\uD807[\uDC50-\uDC59\uDD50-\uDD59\uDDA0-\uDDA9\uDF50-\uDF59]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD839[\uDCF0-\uDCF9]|\uD83A[\uDD50-\uDD59]|\uD83E[\uDFF0-\uDFF9])$/.test(char)) {
|
|
54
56
|
// Decimal digits
|
|
55
57
|
return scrubNum(parseInt(char, 10), index).toString();
|
|
56
|
-
} else if (/^(?:[\xA6\xA9\xAE\xB0\u0482\u058D\u058E\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u09FA\u0B70\u0BF3-\u0BF8\u0BFA\u0C7F\u0D4F\u0D79\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116\u2117\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u214A\u214C\u214D\u214F\u218A\u218B\u2195-\u2199\u219C-\u219F\u21A1\u21A2\u21A4\u21A5\u21A7-\u21AD\u21AF-\u21CD\u21D0\u21D1\u21D3\u21D5-\u21F3\u2300-\u2307\u230C-\u231F\u2322-\u2328\u232B-\u237B\u237D-\u239A\u23B4-\u23DB\u23E2-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u25B6\u25B8-\u25C0\u25C2-\u25F7\u2600-\u266E\u2670-\u2767\u2794-\u27BF\u2800-\u28FF\u2B00-\u2B2F\u2B45\u2B46\u2B4D-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\
|
|
58
|
+
} else if (/^(?:[\xA6\xA9\xAE\xB0\u0482\u058D\u058E\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u09FA\u0B70\u0BF3-\u0BF8\u0BFA\u0C7F\u0D4F\u0D79\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116\u2117\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u214A\u214C\u214D\u214F\u218A\u218B\u2195-\u2199\u219C-\u219F\u21A1\u21A2\u21A4\u21A5\u21A7-\u21AD\u21AF-\u21CD\u21D0\u21D1\u21D3\u21D5-\u21F3\u2300-\u2307\u230C-\u231F\u2322-\u2328\u232B-\u237B\u237D-\u239A\u23B4-\u23DB\u23E2-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u25B6\u25B8-\u25C0\u25C2-\u25F7\u2600-\u266E\u2670-\u2767\u2794-\u27BF\u2800-\u28FF\u2B00-\u2B2F\u2B45\u2B46\u2B4D-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA828-\uA82B\uA836\uA837\uA839\uAA77-\uAA79\uFD40-\uFD4F\uFDCF\uFDFD-\uFDFF\uFFE4\uFFE8\uFFED\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFDC\uDFE1-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838\uDD4F|\uD83B[\uDCAC\uDD2E]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFA]|\uD83D[\uDC00-\uDED7\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF76\uDF7B-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC5\uDECE-\uDEDB\uDEE0-\uDEE8\uDEF0-\uDEF8\uDF00-\uDF92\uDF94-\uDFCA])$/.test(char)) {
|
|
57
59
|
var _chars;
|
|
58
60
|
// Emoji
|
|
59
61
|
return ((_chars = chars[index - 1]) === null || _chars === void 0 ? void 0 : _chars.codePointAt(0)) === 8205 ? '' : '⭐️';
|
|
60
62
|
} else if (/^(?:[\$\xA2-\xA5\u058F\u060B\u07FE\u07FF\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20C0\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]|\uD807[\uDFDD-\uDFE0]|\uD838\uDEFF|\uD83B\uDCB0)$/.test(char)) {
|
|
61
63
|
// Currency
|
|
62
64
|
return '$';
|
|
63
|
-
} else if (/^(?:[\0-#%-\*,-\/:;\?@\[-\]_\{\}\x7F-\xA1\xA7\xAB\xAD\xB6\xB7\xBB\xBF\u0378\u0379\u037E\u0380-\u0383\u0387\u038B\u038D\u03A2\u0530\u0557\u0558\u055A-\u055F\u0589-\u058C\u0590\u05BE\u05C0\u05C3\u05C6\u05C8-\u05CF\u05EB-\u05EE\u05F3-\u0605\u0609\u060A\u060C\u060D\u061B-\u061F\u066A-\u066D\u06D4\u06DD\u0700-\u070F\u074B\u074C\u07B2-\u07BF\u07F7-\u07F9\u07FB\u07FC\u082E-\u083F\u085C-\u085F\u086B-\u086F\u088F-\u0897\u08E2\u0964\u0965\u0970\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FD\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF0\u0AF2-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C0D\u0C11\u0C29\u0C3A\u0C3B\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDC\u0CDF\u0CE4\u0CE5\u0CF0\u0CF4-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF4-\u0E00\u0E3B-\u0E3E\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F48\u0F6D-\u0F70\u0F85\u0F98\u0FBD\u0FCD\u0FD0-\u0FD4\u0FD9-\u0FFF\u104A-\u104F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u1360-\u1368\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE-\u1400\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u1716-\u171E\u1735-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17D4-\u17D6\u17D8-\u17DA\u17DE\u17DF\u17EA-\u17EF\u17FA-\u180A\u180E\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C-\u1A1F\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1AAF\u1ACF-\u1AFF\u1B4D-\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BF4-\u1BFF\u1C38-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CCF\u1CD3\u1CFB-\u1CFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF-\u2043\u2045-\u2051\u2053-\u206F\u2072\u2073\u207D\u207E\u208D-\u208F\u209D-\u209F\u20C1-\u20CF\u20F1-\u20FF\u218C-\u218F\u2308-\u230B\u2329\u232A\u2427-\u243F\u244B-\u245F\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2B74\u2B75\u2B96\u2CF4-\u2CFC\u2CFE\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\
|
|
65
|
+
} else if (/^(?:[\0-#%-\*,-\/:;\?@\[-\]_\{\}\x7F-\xA1\xA7\xAB\xAD\xB6\xB7\xBB\xBF\u0378\u0379\u037E\u0380-\u0383\u0387\u038B\u038D\u03A2\u0530\u0557\u0558\u055A-\u055F\u0589-\u058C\u0590\u05BE\u05C0\u05C3\u05C6\u05C8-\u05CF\u05EB-\u05EE\u05F3-\u0605\u0609\u060A\u060C\u060D\u061B-\u061F\u066A-\u066D\u06D4\u06DD\u0700-\u070F\u074B\u074C\u07B2-\u07BF\u07F7-\u07F9\u07FB\u07FC\u082E-\u083F\u085C-\u085F\u086B-\u086F\u088F-\u0897\u08E2\u0964\u0965\u0970\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FD\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF0\u0AF2-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C0D\u0C11\u0C29\u0C3A\u0C3B\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDC\u0CDF\u0CE4\u0CE5\u0CF0\u0CF4-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF4-\u0E00\u0E3B-\u0E3E\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F48\u0F6D-\u0F70\u0F85\u0F98\u0FBD\u0FCD\u0FD0-\u0FD4\u0FD9-\u0FFF\u104A-\u104F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u1360-\u1368\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE-\u1400\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u1716-\u171E\u1735-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17D4-\u17D6\u17D8-\u17DA\u17DE\u17DF\u17EA-\u17EF\u17FA-\u180A\u180E\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C-\u1A1F\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1AAF\u1ACF-\u1AFF\u1B4D-\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BF4-\u1BFF\u1C38-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CCF\u1CD3\u1CFB-\u1CFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF-\u2043\u2045-\u2051\u2053-\u206F\u2072\u2073\u207D\u207E\u208D-\u208F\u209D-\u209F\u20C1-\u20CF\u20F1-\u20FF\u218C-\u218F\u2308-\u230B\u2329\u232A\u2427-\u243F\u244B-\u245F\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2B74\u2B75\u2B96\u2CF4-\u2CFC\u2CFE\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u3000-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u3040\u3097\u3098\u30A0\u30FB\u3100-\u3104\u3130\u318F\u31E4-\u31EE\u321F\uA48D-\uA48F\uA4C7-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA673\uA67E\uA6F2-\uA6FF\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA82D-\uA82F\uA83A-\uA83F\uA874-\uA87F\uA8C6-\uA8CF\uA8DA-\uA8DF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA954-\uA95F\uA97D-\uA97F\uA9C1-\uA9CE\uA9DA-\uA9DF\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A-\uAA5F\uAAC3-\uAADA\uAADE\uAADF\uAAF0\uAAF1\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB6C-\uAB6F\uABEB\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC3-\uFBD2\uFD3E\uFD3F\uFD90\uFD91\uFDC8-\uFDCE\uFDD0-\uFDEF\uFE10-\uFE1F\uFE30-\uFE61\uFE63\uFE67\uFE68\uFE6A-\uFE6F\uFE75\uFEFD-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD06\uDD34-\uDD36\uDD8F\uDD9D-\uDD9F\uDDA1-\uDDCF\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC57\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE49-\uDE5F\uDE7F\uDEA0-\uDEBF\uDEE7-\uDEEA\uDEF0-\uDEFF\uDF36-\uDF3F\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD28-\uDD2F\uDD3A-\uDE5F\uDE7F\uDEAA\uDEAD-\uDEAF\uDEB2-\uDEFC\uDF28-\uDF2F\uDF55-\uDF6F\uDF86-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC47-\uDC51\uDC76-\uDC7E\uDCBB-\uDCC1\uDCC3-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD40-\uDD43\uDD48-\uDD4F\uDD74\uDD75\uDD77-\uDD7F\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDE0\uDDF5-\uDDFF\uDE12\uDE38-\uDE3D\uDE42-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC4B-\uDC4F\uDC5A-\uDC5D\uDC62-\uDC7F\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDC1-\uDDD7\uDDDE-\uDDFF\uDE41-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF3C-\uDF3E\uDF47-\uDFFF]|\uD806[\uDC3B-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD44-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE2\uDDE5-\uDDFF\uDE3F-\uDE46\uDE48-\uDE4F\uDE9A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC41-\uDC4F\uDC6D-\uDC71\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF7-\uDEFF\uDF11\uDF3B-\uDF3D\uDF43-\uDF4F\uDF5A-\uDFAF\uDFB1-\uDFBF\uDFF2-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD832\uD83F\uD87C\uD87D\uD87F\uD889-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC3F\uDC56-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6F\uDEBF\uDECA-\uDECF\uDEEE\uDEEF\uDEF5-\uDEFF\uDF37-\uDF3B\uDF44\uDF46-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE97-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE2\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A\uDC9B\uDC9F-\uDFFF]|\uD833[\uDC00-\uDEFF\uDF2E\uDF2F\uDF47-\uDF4F\uDFC4-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDD73-\uDD7A\uDDEB-\uDDFF\uDE46-\uDEBF\uDED4-\uDEDF\uDEF4-\uDEFF\uDF57-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]|\uD836[\uDE87-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDC2F\uDC6E-\uDC8E\uDC90-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD50-\uDE8F\uDEAF-\uDEBF\uDEFA-\uDEFE\uDF00-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCFA-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCB5-\uDD00\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDCFF\uDDAE-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDE5F\uDE66-\uDEFF]|\uD83D[\uDED8-\uDEDB\uDEED-\uDEEF\uDEFD-\uDEFF\uDF77-\uDF7A\uDFDA-\uDFDF\uDFEC-\uDFEF\uDFF1-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCB2-\uDCFF\uDE54-\uDE5F\uDE6E\uDE6F\uDE7D-\uDE7F\uDE89-\uDE8F\uDEBE\uDEC6-\uDECD\uDEDC-\uDEDF\uDEE9-\uDEEF\uDEF9-\uDEFF\uDF93\uDFCB-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF3A-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFEF]|\uD87B[\uDE5E-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD888[\uDFB0-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])$/.test(char)) {
|
|
64
66
|
// Punctuation, Seperators, Control
|
|
65
67
|
return char;
|
|
66
|
-
} else if (char.codePointAt(0) === 65039 && /^(?:[\xA6\xA9\xAE\xB0\u0482\u058D\u058E\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u09FA\u0B70\u0BF3-\u0BF8\u0BFA\u0C7F\u0D4F\u0D79\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116\u2117\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u214A\u214C\u214D\u214F\u218A\u218B\u2195-\u2199\u219C-\u219F\u21A1\u21A2\u21A4\u21A5\u21A7-\u21AD\u21AF-\u21CD\u21D0\u21D1\u21D3\u21D5-\u21F3\u2300-\u2307\u230C-\u231F\u2322-\u2328\u232B-\u237B\u237D-\u239A\u23B4-\u23DB\u23E2-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u25B6\u25B8-\u25C0\u25C2-\u25F7\u2600-\u266E\u2670-\u2767\u2794-\u27BF\u2800-\u28FF\u2B00-\u2B2F\u2B45\u2B46\u2B4D-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\
|
|
68
|
+
} else if (char.codePointAt(0) === 65039 && /^(?:[\xA6\xA9\xAE\xB0\u0482\u058D\u058E\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u09FA\u0B70\u0BF3-\u0BF8\u0BFA\u0C7F\u0D4F\u0D79\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116\u2117\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u214A\u214C\u214D\u214F\u218A\u218B\u2195-\u2199\u219C-\u219F\u21A1\u21A2\u21A4\u21A5\u21A7-\u21AD\u21AF-\u21CD\u21D0\u21D1\u21D3\u21D5-\u21F3\u2300-\u2307\u230C-\u231F\u2322-\u2328\u232B-\u237B\u237D-\u239A\u23B4-\u23DB\u23E2-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u25B6\u25B8-\u25C0\u25C2-\u25F7\u2600-\u266E\u2670-\u2767\u2794-\u27BF\u2800-\u28FF\u2B00-\u2B2F\u2B45\u2B46\u2B4D-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA828-\uA82B\uA836\uA837\uA839\uAA77-\uAA79\uFD40-\uFD4F\uFDCF\uFDFD-\uFDFF\uFFE4\uFFE8\uFFED\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFDC\uDFE1-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838\uDD4F|\uD83B[\uDCAC\uDD2E]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFA]|\uD83D[\uDC00-\uDED7\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF76\uDF7B-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC5\uDECE-\uDEDB\uDEE0-\uDEE8\uDEF0-\uDEF8\uDF00-\uDF92\uDF94-\uDFCA])$/.test(chars[index - 1])) {
|
|
67
69
|
// Ingore compound emoji control char
|
|
68
70
|
return '';
|
|
69
71
|
} else {
|
|
@@ -91,6 +93,8 @@ export var scrubLink = function scrubLink(marks, _ref3) {
|
|
|
91
93
|
});
|
|
92
94
|
};
|
|
93
95
|
var scrubObj = function scrubObj(nodeType, attrsObj) {
|
|
96
|
+
// Ignored via go/ees005
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
94
98
|
var entries = Object.entries(attrsObj).map(function (_ref4) {
|
|
95
99
|
var _BYPASS_ATTR_LIST$nod;
|
|
96
100
|
var _ref5 = _slicedToArray(_ref4, 2),
|
|
@@ -100,6 +104,9 @@ var scrubObj = function scrubObj(nodeType, attrsObj) {
|
|
|
100
104
|
});
|
|
101
105
|
return fromEntries(entries);
|
|
102
106
|
};
|
|
107
|
+
|
|
108
|
+
// Ignored via go/ees005
|
|
109
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
103
110
|
export var scrubAttrs = function scrubAttrs(nodeType, attrs) {
|
|
104
111
|
var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
105
112
|
if (typeof attrs === 'number') {
|
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
2
2
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
3
|
-
import _inherits from "@babel/runtime/helpers/inherits";
|
|
4
3
|
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
5
4
|
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
5
|
+
import _inherits from "@babel/runtime/helpers/inherits";
|
|
6
6
|
import _wrapNativeSuper from "@babel/runtime/helpers/wrapNativeSuper";
|
|
7
|
-
function
|
|
7
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
8
8
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
9
9
|
/** NodeNestingTransformError */
|
|
10
10
|
export var NodeNestingTransformError = /*#__PURE__*/function (_Error) {
|
|
11
|
-
_inherits(NodeNestingTransformError, _Error);
|
|
12
|
-
var _super = _createSuper(NodeNestingTransformError);
|
|
13
11
|
/**
|
|
14
12
|
* @param message - Error message - Do not use any UGC in this message
|
|
15
13
|
*/
|
|
16
14
|
function NodeNestingTransformError(message) {
|
|
17
15
|
var _this;
|
|
18
16
|
_classCallCheck(this, NodeNestingTransformError);
|
|
19
|
-
_this =
|
|
17
|
+
_this = _callSuper(this, NodeNestingTransformError, [message]);
|
|
20
18
|
_this.name = 'NodeNestingTransformError';
|
|
21
19
|
return _this;
|
|
22
20
|
}
|
|
21
|
+
_inherits(NodeNestingTransformError, _Error);
|
|
23
22
|
return _createClass(NodeNestingTransformError);
|
|
24
23
|
}( /*#__PURE__*/_wrapNativeSuper(Error));
|
|
@@ -4,21 +4,25 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
4
4
|
import { traverse } from '../traverse/traverse';
|
|
5
5
|
import { extension } from '../builders';
|
|
6
6
|
import { NodeNestingTransformError } from './errors';
|
|
7
|
-
var NESTED_TABLE_EXTENSION_TYPE = 'com.atlassian.
|
|
7
|
+
var NESTED_TABLE_EXTENSION_TYPE = 'com.atlassian.confluence.migration',
|
|
8
8
|
NESTED_TABLE_EXTENSION_KEY = 'nested-table';
|
|
9
|
-
var isNestedTableExtension = function isNestedTableExtension(extensionNode) {
|
|
9
|
+
export var isNestedTableExtension = function isNestedTableExtension(extensionNode) {
|
|
10
10
|
var _extensionNode$attrs, _extensionNode$attrs2;
|
|
11
11
|
return ((_extensionNode$attrs = extensionNode.attrs) === null || _extensionNode$attrs === void 0 ? void 0 : _extensionNode$attrs.extensionType) === NESTED_TABLE_EXTENSION_TYPE && ((_extensionNode$attrs2 = extensionNode.attrs) === null || _extensionNode$attrs2 === void 0 ? void 0 : _extensionNode$attrs2.extensionKey) === NESTED_TABLE_EXTENSION_KEY;
|
|
12
12
|
};
|
|
13
13
|
var transformNestedTableExtension = function transformNestedTableExtension(nestedTableExtension) {
|
|
14
14
|
var _nestedTableExtension;
|
|
15
15
|
// No content - drop the extension node
|
|
16
|
-
if (!((_nestedTableExtension = nestedTableExtension.attrs) !== null && _nestedTableExtension !== void 0 && (_nestedTableExtension = _nestedTableExtension.parameters) !== null && _nestedTableExtension !== void 0 &&
|
|
16
|
+
if (!((_nestedTableExtension = nestedTableExtension.attrs) !== null && _nestedTableExtension !== void 0 && (_nestedTableExtension = _nestedTableExtension.parameters) !== null && _nestedTableExtension !== void 0 && _nestedTableExtension.adf)) {
|
|
17
17
|
return false;
|
|
18
18
|
}
|
|
19
19
|
try {
|
|
20
20
|
var _nestedTableExtension2;
|
|
21
|
-
|
|
21
|
+
var adf = JSON.parse((_nestedTableExtension2 = nestedTableExtension.attrs) === null || _nestedTableExtension2 === void 0 || (_nestedTableExtension2 = _nestedTableExtension2.parameters) === null || _nestedTableExtension2 === void 0 ? void 0 : _nestedTableExtension2.adf);
|
|
22
|
+
if (!adf.content || adf.content.length === 0) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return adf.content[0];
|
|
22
26
|
} catch (e) {
|
|
23
27
|
throw new NodeNestingTransformError('Failed to parse nested table content');
|
|
24
28
|
}
|
|
@@ -49,11 +53,11 @@ export var transformNestedTableNodeOutgoingDocument = function transformNestedTa
|
|
|
49
53
|
extensionType: NESTED_TABLE_EXTENSION_TYPE,
|
|
50
54
|
extensionKey: NESTED_TABLE_EXTENSION_KEY,
|
|
51
55
|
parameters: {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
56
|
+
adf: JSON.stringify({
|
|
57
|
+
type: 'doc',
|
|
58
|
+
version: 1,
|
|
59
|
+
content: [childNode]
|
|
60
|
+
})
|
|
57
61
|
}
|
|
58
62
|
});
|
|
59
63
|
}
|
|
@@ -63,6 +63,8 @@ var tryCreateValidListItemWrappedChildren = function tryCreateValidListItemWrapp
|
|
|
63
63
|
case 'text':
|
|
64
64
|
return listItem([paragraph(childNode)]);
|
|
65
65
|
default:
|
|
66
|
+
// Ignored via go/ees005
|
|
67
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
66
68
|
return listItem([childNode]);
|
|
67
69
|
}
|
|
68
70
|
}
|
package/dist/esm/transforms.js
CHANGED
|
@@ -7,6 +7,6 @@ export { transformDedupeMarks } from './transforms/dedupe-marks-transform';
|
|
|
7
7
|
export { transformNodesMissingContent } from './transforms/nodes-missing-content-transform';
|
|
8
8
|
export { transformIndentationMarks } from './transforms/indentation-marks-transform';
|
|
9
9
|
export { transformInvalidMediaContent } from './transforms/invalid-media-content-transform';
|
|
10
|
-
export { transformNestedTablesIncomingDocument } from './transforms/nested-table-transform';
|
|
10
|
+
export { transformNestedTablesIncomingDocument, isNestedTableExtension } from './transforms/nested-table-transform';
|
|
11
11
|
export { transformNestedTableNodeOutgoingDocument } from './transforms/nested-table-transform';
|
|
12
12
|
export { NodeNestingTransformError } from './transforms/errors';
|