@atlaskit/adf-utils 19.10.1 → 19.12.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 CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atlaskit/adf-utils
2
2
 
3
+ ## 19.12.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#156454](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/156454)
8
+ [`8dfa896f600a2`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/8dfa896f600a2) -
9
+ [ED-25499] this change adds a transformer for converting nested tables to extensions in outgoing
10
+ documents
11
+
12
+ ## 19.11.0
13
+
14
+ ### Minor Changes
15
+
16
+ - [#161679](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/161679)
17
+ [`27c4a6d9b2fb1`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/27c4a6d9b2fb1) -
18
+ ED-25498 Add nested table incoming transform for adf-utils
19
+
3
20
  ## 19.10.1
4
21
 
5
22
  ### Patch Changes
@@ -1,24 +1,24 @@
1
1
  {
2
- "extends": "../../../../tsconfig.entry-points.jira.json",
3
- "compilerOptions": {
4
- "declaration": true,
5
- "target": "es5",
6
- "outDir": "../../../../../tsDist/@atlaskit__adf-utils/app",
7
- "composite": true,
8
- "rootDir": "../"
9
- },
10
- "include": [
11
- "../src/**/*.ts",
12
- "../src/**/*.tsx"
13
- ],
14
- "exclude": [
15
- "../src/**/__tests__/*",
16
- "../src/**/*.test.*",
17
- "../src/**/test.*"
18
- ],
19
- "references": [
20
- {
21
- "path": "../../../monorepo-tooling/codemod-utils/afm-jira/tsconfig.json"
22
- }
23
- ]
24
- }
2
+ "extends": "../../../../tsconfig.entry-points.jira.json",
3
+ "compilerOptions": {
4
+ "declaration": true,
5
+ "target": "es5",
6
+ "outDir": "../../../../../tsDist/@atlaskit__adf-utils/app",
7
+ "rootDir": "../",
8
+ "composite": true
9
+ },
10
+ "include": [
11
+ "../src/**/*.ts",
12
+ "../src/**/*.tsx"
13
+ ],
14
+ "exclude": [
15
+ "../src/**/__tests__/*",
16
+ "../src/**/*.test.*",
17
+ "../src/**/test.*"
18
+ ],
19
+ "references": [
20
+ {
21
+ "path": "../../../monorepo-tooling/codemod-utils/afm-jira/tsconfig.json"
22
+ }
23
+ ]
24
+ }
@@ -1,24 +1,24 @@
1
1
  {
2
- "extends": "../../../../tsconfig.entry-points.post-office.json",
3
- "compilerOptions": {
4
- "declaration": true,
5
- "target": "es5",
6
- "outDir": "../../../../../tsDist/@atlaskit__adf-utils/app",
7
- "composite": true,
8
- "rootDir": "../"
9
- },
10
- "include": [
11
- "../src/**/*.ts",
12
- "../src/**/*.tsx"
13
- ],
14
- "exclude": [
15
- "../src/**/__tests__/*",
16
- "../src/**/*.test.*",
17
- "../src/**/test.*"
18
- ],
19
- "references": [
20
- {
21
- "path": "../../../monorepo-tooling/codemod-utils/afm-post-office/tsconfig.json"
22
- }
23
- ]
24
- }
2
+ "extends": "../../../../tsconfig.entry-points.post-office.json",
3
+ "compilerOptions": {
4
+ "declaration": true,
5
+ "target": "es5",
6
+ "outDir": "../../../../../tsDist/@atlaskit__adf-utils/app",
7
+ "rootDir": "../",
8
+ "composite": true
9
+ },
10
+ "include": [
11
+ "../src/**/*.ts",
12
+ "../src/**/*.tsx"
13
+ ],
14
+ "exclude": [
15
+ "../src/**/__tests__/*",
16
+ "../src/**/*.test.*",
17
+ "../src/**/test.*"
18
+ ],
19
+ "references": [
20
+ {
21
+ "path": "../../../monorepo-tooling/codemod-utils/afm-post-office/tsconfig.json"
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.transformNestedTablesIncomingDocument = exports.transformNestedTableNodeOutgoingDocument = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _traverse = require("../traverse/traverse");
10
+ var _builders = require("../builders");
11
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
+ var NESTED_TABLE_EXTENSION_TYPE = 'com.atlassian.nesting',
14
+ NESTED_TABLE_EXTENSION_KEY = 'nested-table';
15
+ var isNestedTableExtension = function isNestedTableExtension(extensionNode) {
16
+ var _extensionNode$attrs, _extensionNode$attrs2;
17
+ 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;
18
+ };
19
+ var transformNestedTableExtension = function transformNestedTableExtension(nestedTableExtension) {
20
+ var _nestedTableExtension;
21
+ // No content - drop the extension node
22
+ if (!((_nestedTableExtension = nestedTableExtension.attrs) !== null && _nestedTableExtension !== void 0 && (_nestedTableExtension = _nestedTableExtension.parameters) !== null && _nestedTableExtension !== void 0 && (_nestedTableExtension = _nestedTableExtension.macroParams) !== null && _nestedTableExtension !== void 0 && _nestedTableExtension.nestedContent)) {
23
+ return false;
24
+ }
25
+ try {
26
+ var _nestedTableExtension2;
27
+ return JSON.parse((_nestedTableExtension2 = nestedTableExtension.attrs) === null || _nestedTableExtension2 === void 0 || (_nestedTableExtension2 = _nestedTableExtension2.parameters) === null || _nestedTableExtension2 === void 0 || (_nestedTableExtension2 = _nestedTableExtension2.macroParams) === null || _nestedTableExtension2 === void 0 ? void 0 : _nestedTableExtension2.nestedContent.value);
28
+ } catch (e) {
29
+ throw new Error('Failed to parse nested table content');
30
+ }
31
+ };
32
+ var transformNestedTablesIncomingDocument = exports.transformNestedTablesIncomingDocument = function transformNestedTablesIncomingDocument(adf) {
33
+ var isTransformed = false;
34
+ var transformedAdf = (0, _traverse.traverse)(adf, {
35
+ extension: function extension(node) {
36
+ if (isNestedTableExtension(node)) {
37
+ isTransformed = true;
38
+ return transformNestedTableExtension(node);
39
+ }
40
+ }
41
+ });
42
+ return {
43
+ transformedAdf: transformedAdf,
44
+ isTransformed: isTransformed
45
+ };
46
+ };
47
+ var transformNestedTableNodeOutgoingDocument = exports.transformNestedTableNodeOutgoingDocument = function transformNestedTableNodeOutgoingDocument(tableCellNode) {
48
+ var _tableCellNode$conten;
49
+ return _objectSpread(_objectSpread({}, tableCellNode), {}, {
50
+ content: (_tableCellNode$conten = tableCellNode.content) === null || _tableCellNode$conten === void 0 ? void 0 : _tableCellNode$conten.map(function (childNode) {
51
+ // wrap nested table in an extension node
52
+ if ((childNode === null || childNode === void 0 ? void 0 : childNode.type) === 'table') {
53
+ return (0, _builders.extension)({
54
+ extensionType: NESTED_TABLE_EXTENSION_TYPE,
55
+ extensionKey: NESTED_TABLE_EXTENSION_KEY,
56
+ parameters: {
57
+ macroParams: {
58
+ nestedContent: {
59
+ value: JSON.stringify(childNode)
60
+ }
61
+ }
62
+ }
63
+ });
64
+ }
65
+ return childNode;
66
+ })
67
+ });
68
+ };
@@ -27,6 +27,18 @@ Object.defineProperty(exports, "transformMediaLinkMarks", {
27
27
  return _mediaLinkTransform.transformMediaLinkMarks;
28
28
  }
29
29
  });
30
+ Object.defineProperty(exports, "transformNestedTableNodeOutgoingDocument", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _nestedTableTransform.transformNestedTableNodeOutgoingDocument;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "transformNestedTablesIncomingDocument", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _nestedTableTransform.transformNestedTablesIncomingDocument;
40
+ }
41
+ });
30
42
  Object.defineProperty(exports, "transformNodesMissingContent", {
31
43
  enumerable: true,
32
44
  get: function get() {
@@ -44,4 +56,5 @@ var _textLinkCodeTransform = require("./transforms/text-link-code-transform");
44
56
  var _dedupeMarksTransform = require("./transforms/dedupe-marks-transform");
45
57
  var _nodesMissingContentTransform = require("./transforms/nodes-missing-content-transform");
46
58
  var _indentationMarksTransform = require("./transforms/indentation-marks-transform");
47
- var _invalidMediaContentTransform = require("./transforms/invalid-media-content-transform");
59
+ var _invalidMediaContentTransform = require("./transforms/invalid-media-content-transform");
60
+ var _nestedTableTransform = require("./transforms/nested-table-transform");
@@ -0,0 +1,59 @@
1
+ import { traverse } from '../traverse/traverse';
2
+ import { extension } from '../builders';
3
+ const NESTED_TABLE_EXTENSION_TYPE = 'com.atlassian.nesting',
4
+ NESTED_TABLE_EXTENSION_KEY = 'nested-table';
5
+ const isNestedTableExtension = extensionNode => {
6
+ var _extensionNode$attrs, _extensionNode$attrs2;
7
+ 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;
8
+ };
9
+ const transformNestedTableExtension = nestedTableExtension => {
10
+ var _nestedTableExtension, _nestedTableExtension2, _nestedTableExtension3;
11
+ // No content - drop the extension node
12
+ if (!((_nestedTableExtension = nestedTableExtension.attrs) !== null && _nestedTableExtension !== void 0 && (_nestedTableExtension2 = _nestedTableExtension.parameters) !== null && _nestedTableExtension2 !== void 0 && (_nestedTableExtension3 = _nestedTableExtension2.macroParams) !== null && _nestedTableExtension3 !== void 0 && _nestedTableExtension3.nestedContent)) {
13
+ return false;
14
+ }
15
+ try {
16
+ var _nestedTableExtension4, _nestedTableExtension5, _nestedTableExtension6;
17
+ return JSON.parse((_nestedTableExtension4 = nestedTableExtension.attrs) === null || _nestedTableExtension4 === void 0 ? void 0 : (_nestedTableExtension5 = _nestedTableExtension4.parameters) === null || _nestedTableExtension5 === void 0 ? void 0 : (_nestedTableExtension6 = _nestedTableExtension5.macroParams) === null || _nestedTableExtension6 === void 0 ? void 0 : _nestedTableExtension6.nestedContent.value);
18
+ } catch (e) {
19
+ throw new Error('Failed to parse nested table content');
20
+ }
21
+ };
22
+ export const transformNestedTablesIncomingDocument = adf => {
23
+ let isTransformed = false;
24
+ const transformedAdf = traverse(adf, {
25
+ extension: node => {
26
+ if (isNestedTableExtension(node)) {
27
+ isTransformed = true;
28
+ return transformNestedTableExtension(node);
29
+ }
30
+ }
31
+ });
32
+ return {
33
+ transformedAdf,
34
+ isTransformed
35
+ };
36
+ };
37
+ export const transformNestedTableNodeOutgoingDocument = tableCellNode => {
38
+ var _tableCellNode$conten;
39
+ return {
40
+ ...tableCellNode,
41
+ content: (_tableCellNode$conten = tableCellNode.content) === null || _tableCellNode$conten === void 0 ? void 0 : _tableCellNode$conten.map(childNode => {
42
+ // wrap nested table in an extension node
43
+ if ((childNode === null || childNode === void 0 ? void 0 : childNode.type) === 'table') {
44
+ return extension({
45
+ extensionType: NESTED_TABLE_EXTENSION_TYPE,
46
+ extensionKey: NESTED_TABLE_EXTENSION_KEY,
47
+ parameters: {
48
+ macroParams: {
49
+ nestedContent: {
50
+ value: JSON.stringify(childNode)
51
+ }
52
+ }
53
+ }
54
+ });
55
+ }
56
+ return childNode;
57
+ })
58
+ };
59
+ };
@@ -3,4 +3,6 @@ export { transformTextLinkCodeMarks } from './transforms/text-link-code-transfor
3
3
  export { transformDedupeMarks } from './transforms/dedupe-marks-transform';
4
4
  export { transformNodesMissingContent } from './transforms/nodes-missing-content-transform';
5
5
  export { transformIndentationMarks } from './transforms/indentation-marks-transform';
6
- export { transformInvalidMediaContent } from './transforms/invalid-media-content-transform';
6
+ export { transformInvalidMediaContent } from './transforms/invalid-media-content-transform';
7
+ export { transformNestedTablesIncomingDocument } from './transforms/nested-table-transform';
8
+ export { transformNestedTableNodeOutgoingDocument } from './transforms/nested-table-transform';
@@ -0,0 +1,61 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ import { traverse } from '../traverse/traverse';
5
+ import { extension } from '../builders';
6
+ var NESTED_TABLE_EXTENSION_TYPE = 'com.atlassian.nesting',
7
+ NESTED_TABLE_EXTENSION_KEY = 'nested-table';
8
+ var isNestedTableExtension = function isNestedTableExtension(extensionNode) {
9
+ var _extensionNode$attrs, _extensionNode$attrs2;
10
+ 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;
11
+ };
12
+ var transformNestedTableExtension = function transformNestedTableExtension(nestedTableExtension) {
13
+ var _nestedTableExtension;
14
+ // No content - drop the extension node
15
+ if (!((_nestedTableExtension = nestedTableExtension.attrs) !== null && _nestedTableExtension !== void 0 && (_nestedTableExtension = _nestedTableExtension.parameters) !== null && _nestedTableExtension !== void 0 && (_nestedTableExtension = _nestedTableExtension.macroParams) !== null && _nestedTableExtension !== void 0 && _nestedTableExtension.nestedContent)) {
16
+ return false;
17
+ }
18
+ try {
19
+ var _nestedTableExtension2;
20
+ return JSON.parse((_nestedTableExtension2 = nestedTableExtension.attrs) === null || _nestedTableExtension2 === void 0 || (_nestedTableExtension2 = _nestedTableExtension2.parameters) === null || _nestedTableExtension2 === void 0 || (_nestedTableExtension2 = _nestedTableExtension2.macroParams) === null || _nestedTableExtension2 === void 0 ? void 0 : _nestedTableExtension2.nestedContent.value);
21
+ } catch (e) {
22
+ throw new Error('Failed to parse nested table content');
23
+ }
24
+ };
25
+ export var transformNestedTablesIncomingDocument = function transformNestedTablesIncomingDocument(adf) {
26
+ var isTransformed = false;
27
+ var transformedAdf = traverse(adf, {
28
+ extension: function extension(node) {
29
+ if (isNestedTableExtension(node)) {
30
+ isTransformed = true;
31
+ return transformNestedTableExtension(node);
32
+ }
33
+ }
34
+ });
35
+ return {
36
+ transformedAdf: transformedAdf,
37
+ isTransformed: isTransformed
38
+ };
39
+ };
40
+ export var transformNestedTableNodeOutgoingDocument = function transformNestedTableNodeOutgoingDocument(tableCellNode) {
41
+ var _tableCellNode$conten;
42
+ return _objectSpread(_objectSpread({}, tableCellNode), {}, {
43
+ content: (_tableCellNode$conten = tableCellNode.content) === null || _tableCellNode$conten === void 0 ? void 0 : _tableCellNode$conten.map(function (childNode) {
44
+ // wrap nested table in an extension node
45
+ if ((childNode === null || childNode === void 0 ? void 0 : childNode.type) === 'table') {
46
+ return extension({
47
+ extensionType: NESTED_TABLE_EXTENSION_TYPE,
48
+ extensionKey: NESTED_TABLE_EXTENSION_KEY,
49
+ parameters: {
50
+ macroParams: {
51
+ nestedContent: {
52
+ value: JSON.stringify(childNode)
53
+ }
54
+ }
55
+ }
56
+ });
57
+ }
58
+ return childNode;
59
+ })
60
+ });
61
+ };
@@ -3,4 +3,6 @@ export { transformTextLinkCodeMarks } from './transforms/text-link-code-transfor
3
3
  export { transformDedupeMarks } from './transforms/dedupe-marks-transform';
4
4
  export { transformNodesMissingContent } from './transforms/nodes-missing-content-transform';
5
5
  export { transformIndentationMarks } from './transforms/indentation-marks-transform';
6
- export { transformInvalidMediaContent } from './transforms/invalid-media-content-transform';
6
+ export { transformInvalidMediaContent } from './transforms/invalid-media-content-transform';
7
+ export { transformNestedTablesIncomingDocument } from './transforms/nested-table-transform';
8
+ export { transformNestedTableNodeOutgoingDocument } from './transforms/nested-table-transform';
@@ -0,0 +1,6 @@
1
+ import type { ADFEntity } from '../types';
2
+ export declare const transformNestedTablesIncomingDocument: (adf: ADFEntity) => {
3
+ transformedAdf: ADFEntity;
4
+ isTransformed: boolean;
5
+ };
6
+ export declare const transformNestedTableNodeOutgoingDocument: (tableCellNode: ADFEntity) => ADFEntity;
@@ -4,3 +4,5 @@ export { transformDedupeMarks } from './transforms/dedupe-marks-transform';
4
4
  export { transformNodesMissingContent } from './transforms/nodes-missing-content-transform';
5
5
  export { transformIndentationMarks } from './transforms/indentation-marks-transform';
6
6
  export { transformInvalidMediaContent } from './transforms/invalid-media-content-transform';
7
+ export { transformNestedTablesIncomingDocument } from './transforms/nested-table-transform';
8
+ export { transformNestedTableNodeOutgoingDocument } from './transforms/nested-table-transform';
@@ -0,0 +1,6 @@
1
+ import type { ADFEntity } from '../types';
2
+ export declare const transformNestedTablesIncomingDocument: (adf: ADFEntity) => {
3
+ transformedAdf: ADFEntity;
4
+ isTransformed: boolean;
5
+ };
6
+ export declare const transformNestedTableNodeOutgoingDocument: (tableCellNode: ADFEntity) => ADFEntity;
@@ -4,3 +4,5 @@ export { transformDedupeMarks } from './transforms/dedupe-marks-transform';
4
4
  export { transformNodesMissingContent } from './transforms/nodes-missing-content-transform';
5
5
  export { transformIndentationMarks } from './transforms/indentation-marks-transform';
6
6
  export { transformInvalidMediaContent } from './transforms/invalid-media-content-transform';
7
+ export { transformNestedTablesIncomingDocument } from './transforms/nested-table-transform';
8
+ export { transformNestedTableNodeOutgoingDocument } from './transforms/nested-table-transform';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/adf-utils",
3
- "version": "19.10.1",
3
+ "version": "19.12.0",
4
4
  "description": "Set of utilities to traverse, modify and create ADF documents.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"