@atlaskit/adf-utils 19.27.10 → 19.27.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/adf-utils
2
2
 
3
+ ## 19.27.12
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+
9
+ ## 19.27.11
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies
14
+
3
15
  ## 19.27.10
4
16
 
5
17
  ### Patch Changes
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.nativeEmbedsFallbackTransform = void 0;
7
7
  var _traverse = require("../traverse/traverse");
8
+ var _validator = require("../validator/validator");
8
9
  var NATIVE_EMBED_EXTENSION_KEY = 'native-embed';
9
10
 
10
11
  /**
@@ -12,21 +13,25 @@ var NATIVE_EMBED_EXTENSION_KEY = 'native-embed';
12
13
  * `native-embed` with a paragraph containing an `inlineCard`
13
14
  * node pointing at the same URL.
14
15
  * If a native-embed node has no URL it is dropped from the document.
16
+ *
17
+ * The transformed ADF is validated against the ADF spec.
18
+ * If validation fails the original (untransformed) ADF is returned
19
+ * to avoid rendering broken content.
15
20
  */
16
21
  var nativeEmbedsFallbackTransform = exports.nativeEmbedsFallbackTransform = function nativeEmbedsFallbackTransform(adf) {
17
- var isTransformed = false;
22
+ var didTransform = false;
18
23
  var transformedAdf = (0, _traverse.traverse)(adf, {
19
24
  extension: function extension(node) {
20
25
  var _node$attrs, _node$attrs2;
21
26
  if (((_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs['extensionKey'].split(':')[0]) !== NATIVE_EMBED_EXTENSION_KEY) {
22
27
  return node;
23
28
  }
24
- var url = (_node$attrs2 = node.attrs) === null || _node$attrs2 === void 0 || (_node$attrs2 = _node$attrs2['parameters']) === null || _node$attrs2 === void 0 ? void 0 : _node$attrs2.url;
29
+ var url = (_node$attrs2 = node.attrs) === null || _node$attrs2 === void 0 || (_node$attrs2 = _node$attrs2['parameters']) === null || _node$attrs2 === void 0 || (_node$attrs2 = _node$attrs2.macroParams) === null || _node$attrs2 === void 0 || (_node$attrs2 = _node$attrs2.url) === null || _node$attrs2 === void 0 ? void 0 : _node$attrs2.value;
25
30
  if (!url) {
26
- isTransformed = true;
31
+ didTransform = true;
27
32
  return false;
28
33
  }
29
- isTransformed = true;
34
+ didTransform = true;
30
35
  return {
31
36
  type: 'paragraph',
32
37
  content: [{
@@ -38,8 +43,28 @@ var nativeEmbedsFallbackTransform = exports.nativeEmbedsFallbackTransform = func
38
43
  };
39
44
  }
40
45
  });
46
+ if (didTransform && transformedAdf) {
47
+ try {
48
+ var validate = (0, _validator.validator)();
49
+ var _validate = validate(transformedAdf),
50
+ valid = _validate.valid;
51
+ if (!valid) {
52
+ // Transformed ADF is invalid – fall back to the original document
53
+ return {
54
+ transformedAdf: adf,
55
+ hasValidTransform: false
56
+ };
57
+ }
58
+ } catch (_unused) {
59
+ // Validation threw – fall back to the original document
60
+ return {
61
+ transformedAdf: adf,
62
+ hasValidTransform: false
63
+ };
64
+ }
65
+ }
41
66
  return {
42
67
  transformedAdf: transformedAdf,
43
- isTransformed: isTransformed
68
+ hasValidTransform: didTransform
44
69
  };
45
70
  };
@@ -1,4 +1,5 @@
1
1
  import { traverse } from '../traverse/traverse';
2
+ import { validator } from '../validator/validator';
2
3
  const NATIVE_EMBED_EXTENSION_KEY = 'native-embed';
3
4
 
4
5
  /**
@@ -6,21 +7,25 @@ const NATIVE_EMBED_EXTENSION_KEY = 'native-embed';
6
7
  * `native-embed` with a paragraph containing an `inlineCard`
7
8
  * node pointing at the same URL.
8
9
  * If a native-embed node has no URL it is dropped from the document.
10
+ *
11
+ * The transformed ADF is validated against the ADF spec.
12
+ * If validation fails the original (untransformed) ADF is returned
13
+ * to avoid rendering broken content.
9
14
  */
10
15
  export const nativeEmbedsFallbackTransform = adf => {
11
- let isTransformed = false;
16
+ let didTransform = false;
12
17
  const transformedAdf = traverse(adf, {
13
18
  extension: node => {
14
- var _node$attrs, _node$attrs2, _node$attrs2$paramete;
19
+ var _node$attrs, _node$attrs2, _node$attrs2$paramete, _node$attrs2$paramete2, _node$attrs2$paramete3;
15
20
  if (((_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs['extensionKey'].split(':')[0]) !== NATIVE_EMBED_EXTENSION_KEY) {
16
21
  return node;
17
22
  }
18
- const url = (_node$attrs2 = node.attrs) === null || _node$attrs2 === void 0 ? void 0 : (_node$attrs2$paramete = _node$attrs2['parameters']) === null || _node$attrs2$paramete === void 0 ? void 0 : _node$attrs2$paramete.url;
23
+ const url = (_node$attrs2 = node.attrs) === null || _node$attrs2 === void 0 ? void 0 : (_node$attrs2$paramete = _node$attrs2['parameters']) === null || _node$attrs2$paramete === void 0 ? void 0 : (_node$attrs2$paramete2 = _node$attrs2$paramete.macroParams) === null || _node$attrs2$paramete2 === void 0 ? void 0 : (_node$attrs2$paramete3 = _node$attrs2$paramete2.url) === null || _node$attrs2$paramete3 === void 0 ? void 0 : _node$attrs2$paramete3.value;
19
24
  if (!url) {
20
- isTransformed = true;
25
+ didTransform = true;
21
26
  return false;
22
27
  }
23
- isTransformed = true;
28
+ didTransform = true;
24
29
  return {
25
30
  type: 'paragraph',
26
31
  content: [{
@@ -32,8 +37,29 @@ export const nativeEmbedsFallbackTransform = adf => {
32
37
  };
33
38
  }
34
39
  });
40
+ if (didTransform && transformedAdf) {
41
+ try {
42
+ const validate = validator();
43
+ const {
44
+ valid
45
+ } = validate(transformedAdf);
46
+ if (!valid) {
47
+ // Transformed ADF is invalid – fall back to the original document
48
+ return {
49
+ transformedAdf: adf,
50
+ hasValidTransform: false
51
+ };
52
+ }
53
+ } catch {
54
+ // Validation threw – fall back to the original document
55
+ return {
56
+ transformedAdf: adf,
57
+ hasValidTransform: false
58
+ };
59
+ }
60
+ }
35
61
  return {
36
62
  transformedAdf,
37
- isTransformed
63
+ hasValidTransform: didTransform
38
64
  };
39
65
  };
@@ -1,4 +1,5 @@
1
1
  import { traverse } from '../traverse/traverse';
2
+ import { validator } from '../validator/validator';
2
3
  var NATIVE_EMBED_EXTENSION_KEY = 'native-embed';
3
4
 
4
5
  /**
@@ -6,21 +7,25 @@ var NATIVE_EMBED_EXTENSION_KEY = 'native-embed';
6
7
  * `native-embed` with a paragraph containing an `inlineCard`
7
8
  * node pointing at the same URL.
8
9
  * If a native-embed node has no URL it is dropped from the document.
10
+ *
11
+ * The transformed ADF is validated against the ADF spec.
12
+ * If validation fails the original (untransformed) ADF is returned
13
+ * to avoid rendering broken content.
9
14
  */
10
15
  export var nativeEmbedsFallbackTransform = function nativeEmbedsFallbackTransform(adf) {
11
- var isTransformed = false;
16
+ var didTransform = false;
12
17
  var transformedAdf = traverse(adf, {
13
18
  extension: function extension(node) {
14
19
  var _node$attrs, _node$attrs2;
15
20
  if (((_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs['extensionKey'].split(':')[0]) !== NATIVE_EMBED_EXTENSION_KEY) {
16
21
  return node;
17
22
  }
18
- var url = (_node$attrs2 = node.attrs) === null || _node$attrs2 === void 0 || (_node$attrs2 = _node$attrs2['parameters']) === null || _node$attrs2 === void 0 ? void 0 : _node$attrs2.url;
23
+ var url = (_node$attrs2 = node.attrs) === null || _node$attrs2 === void 0 || (_node$attrs2 = _node$attrs2['parameters']) === null || _node$attrs2 === void 0 || (_node$attrs2 = _node$attrs2.macroParams) === null || _node$attrs2 === void 0 || (_node$attrs2 = _node$attrs2.url) === null || _node$attrs2 === void 0 ? void 0 : _node$attrs2.value;
19
24
  if (!url) {
20
- isTransformed = true;
25
+ didTransform = true;
21
26
  return false;
22
27
  }
23
- isTransformed = true;
28
+ didTransform = true;
24
29
  return {
25
30
  type: 'paragraph',
26
31
  content: [{
@@ -32,8 +37,28 @@ export var nativeEmbedsFallbackTransform = function nativeEmbedsFallbackTransfor
32
37
  };
33
38
  }
34
39
  });
40
+ if (didTransform && transformedAdf) {
41
+ try {
42
+ var validate = validator();
43
+ var _validate = validate(transformedAdf),
44
+ valid = _validate.valid;
45
+ if (!valid) {
46
+ // Transformed ADF is invalid – fall back to the original document
47
+ return {
48
+ transformedAdf: adf,
49
+ hasValidTransform: false
50
+ };
51
+ }
52
+ } catch (_unused) {
53
+ // Validation threw – fall back to the original document
54
+ return {
55
+ transformedAdf: adf,
56
+ hasValidTransform: false
57
+ };
58
+ }
59
+ }
35
60
  return {
36
61
  transformedAdf: transformedAdf,
37
- isTransformed: isTransformed
62
+ hasValidTransform: didTransform
38
63
  };
39
64
  };
@@ -4,8 +4,12 @@ import { type ADFEntity } from '../types';
4
4
  * `native-embed` with a paragraph containing an `inlineCard`
5
5
  * node pointing at the same URL.
6
6
  * If a native-embed node has no URL it is dropped from the document.
7
+ *
8
+ * The transformed ADF is validated against the ADF spec.
9
+ * If validation fails the original (untransformed) ADF is returned
10
+ * to avoid rendering broken content.
7
11
  */
8
12
  export declare const nativeEmbedsFallbackTransform: (adf: ADFEntity) => {
9
- isTransformed: boolean;
13
+ hasValidTransform: boolean;
10
14
  transformedAdf: false | ADFEntity;
11
15
  };
@@ -4,8 +4,12 @@ import { type ADFEntity } from '../types';
4
4
  * `native-embed` with a paragraph containing an `inlineCard`
5
5
  * node pointing at the same URL.
6
6
  * If a native-embed node has no URL it is dropped from the document.
7
+ *
8
+ * The transformed ADF is validated against the ADF spec.
9
+ * If validation fails the original (untransformed) ADF is returned
10
+ * to avoid rendering broken content.
7
11
  */
8
12
  export declare const nativeEmbedsFallbackTransform: (adf: ADFEntity) => {
9
- isTransformed: boolean;
13
+ hasValidTransform: boolean;
10
14
  transformedAdf: false | ADFEntity;
11
15
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/adf-utils",
3
- "version": "19.27.10",
3
+ "version": "19.27.12",
4
4
  "description": "Set of utilities to traverse, modify and create ADF documents.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -26,9 +26,9 @@
26
26
  "team": "Editor: Collaboration"
27
27
  },
28
28
  "dependencies": {
29
- "@atlaskit/adf-schema": "^52.2.0",
29
+ "@atlaskit/adf-schema": "^52.3.0",
30
30
  "@atlaskit/platform-feature-flags": "^1.1.0",
31
- "@atlaskit/tmp-editor-statsig": "^38.0.0",
31
+ "@atlaskit/tmp-editor-statsig": "^40.0.0",
32
32
  "@babel/runtime": "^7.0.0"
33
33
  },
34
34
  "devDependencies": {