@forge/react 8.1.1 → 8.1.2-next.1

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,18 @@
1
1
  # @forge/react
2
2
 
3
+ ## 8.1.2-next.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 8ebcac27: Reintroduced improved reconciliation counting
8
+
9
+ ## 8.1.2-next.0
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [c1c5fb5]
14
+ - @forge/ui@1.9.5-next.0
15
+
3
16
  ## 8.1.1
4
17
 
5
18
  ### Patch Changes
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=hostConfig.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostConfig.test.d.ts","sourceRoot":"","sources":["../../src/__test__/hostConfig.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ let keyCount = 0;
4
+ jest.mock('uuid', () => (Object.assign(Object.assign({}, jest.requireActual('uuid')), { v4: () => `${keyCount++}` })));
5
+ const reconciler_1 = require("../reconciler");
6
+ const testUtils_1 = require("./testUtils");
7
+ const emptyForgeDoc = (0, reconciler_1.createElement)({ type: 'root', props: {} });
8
+ describe('hostConfig used functions', () => {
9
+ let bridgeCalls = [];
10
+ beforeAll(async () => {
11
+ bridgeCalls = (0, testUtils_1.setupBridge)();
12
+ keyCount = 0;
13
+ });
14
+ it('resetAfterCommit should call bridge', () => {
15
+ const testDoc = (0, reconciler_1.createElement)({ type: 'root', props: {} });
16
+ reconciler_1.hostConfig.resetAfterCommit(testDoc);
17
+ const forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
18
+ expect(forgeDoc).toMatchSnapshot();
19
+ });
20
+ it('createInstance returns empty ForgeDoc', () => {
21
+ const testProps = {
22
+ test: true
23
+ };
24
+ const instance = reconciler_1.hostConfig.createInstance('test', testProps, emptyForgeDoc, null, null);
25
+ expect(instance).toMatchSnapshot();
26
+ });
27
+ it('createTextInstance returns ForgeDoc with UUID', () => {
28
+ const testDoc = (0, reconciler_1.createElement)({ type: 'root', props: {} });
29
+ const textInstance = reconciler_1.hostConfig.createTextInstance('test', testDoc, null, null);
30
+ expect(textInstance).toMatchSnapshot();
31
+ });
32
+ it('appendInitialChild adds child to empty children array', () => {
33
+ const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
34
+ const child = (0, reconciler_1.createElement)({ type: 'child', props: {} });
35
+ expect(parent).toHaveProperty('children', []);
36
+ reconciler_1.hostConfig.appendInitialChild(parent, child);
37
+ expect(parent).toHaveProperty('children', [child]);
38
+ });
39
+ it('appendChild does not append same child twice', () => {
40
+ expect(reconciler_1.hostConfig).toHaveProperty('appendChild');
41
+ if (reconciler_1.hostConfig.appendChild !== undefined) {
42
+ const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
43
+ const child = (0, reconciler_1.createElement)({ type: 'child', props: {} });
44
+ expect(parent).toHaveProperty('children', []);
45
+ reconciler_1.hostConfig.appendChild(parent, child);
46
+ expect(parent).toHaveProperty('children', [child]);
47
+ reconciler_1.hostConfig.appendChild(parent, child);
48
+ expect(parent).toHaveProperty('children', [child]);
49
+ }
50
+ });
51
+ it('appendChildToContainer', () => {
52
+ expect(reconciler_1.hostConfig).toHaveProperty('appendChildToContainer');
53
+ if (reconciler_1.hostConfig.appendChildToContainer !== undefined) {
54
+ const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
55
+ const child = (0, reconciler_1.createElement)({ type: 'child', props: {} });
56
+ expect(parent).toHaveProperty('children', []);
57
+ reconciler_1.hostConfig.appendChildToContainer(parent, child);
58
+ expect(parent).toHaveProperty('children', [child]);
59
+ }
60
+ });
61
+ it('finalizeInitialChildren returns false', () => {
62
+ expect(reconciler_1.hostConfig.finalizeInitialChildren(emptyForgeDoc, 'test', {}, emptyForgeDoc, null)).toBe(false);
63
+ });
64
+ it('prepareUpdate should set new props as props on instance', () => {
65
+ const instance = (0, reconciler_1.createElement)({ type: 'test', props: { oldProps: true } });
66
+ const newProps = {
67
+ updated: true
68
+ };
69
+ expect(reconciler_1.hostConfig.prepareUpdate(instance, 'test', {}, newProps, emptyForgeDoc, null)).toBe(newProps);
70
+ expect(instance).not.toHaveProperty('oldProps');
71
+ expect(instance).toHaveProperty('props', newProps);
72
+ expect(instance).toHaveProperty('reconciliationCount', 2);
73
+ });
74
+ it('shouldSetTextContent returns false', () => {
75
+ expect(reconciler_1.hostConfig.shouldSetTextContent('test', {})).toBe(false);
76
+ });
77
+ it('insertBefore reorders children', () => {
78
+ expect(reconciler_1.hostConfig).toHaveProperty('insertBefore');
79
+ if (reconciler_1.hostConfig.insertBefore !== undefined) {
80
+ const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
81
+ const child1 = (0, reconciler_1.createElement)({ type: 'child1', props: {} });
82
+ const child2 = (0, reconciler_1.createElement)({ type: 'child2', props: {} });
83
+ reconciler_1.hostConfig.appendInitialChild(parent, child1);
84
+ expect(parent).toHaveProperty('children', [child1]);
85
+ reconciler_1.hostConfig.insertBefore(parent, child2, child1);
86
+ expect(parent).toHaveProperty('children', [child2, child1]);
87
+ }
88
+ });
89
+ it('insertInContainerBefore reorders children when child being inserted exists', () => {
90
+ expect(reconciler_1.hostConfig).toHaveProperty('insertInContainerBefore');
91
+ if (reconciler_1.hostConfig.insertInContainerBefore !== undefined) {
92
+ const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
93
+ const child1 = (0, reconciler_1.createElement)({ type: 'child1', props: {} });
94
+ const child2 = (0, reconciler_1.createElement)({ type: 'child2', props: {} });
95
+ reconciler_1.hostConfig.appendInitialChild(parent, child1);
96
+ reconciler_1.hostConfig.appendInitialChild(parent, child2);
97
+ expect(parent).toHaveProperty('children', [child1, child2]);
98
+ reconciler_1.hostConfig.insertInContainerBefore(parent, child2, child1);
99
+ expect(parent).toHaveProperty('children', [child2, child1]);
100
+ }
101
+ });
102
+ it('removeChild removes child', () => {
103
+ expect(reconciler_1.hostConfig).toHaveProperty('removeChild');
104
+ if (reconciler_1.hostConfig.removeChild !== undefined) {
105
+ const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
106
+ const child = (0, reconciler_1.createElement)({ type: 'child', props: {} });
107
+ expect(parent).toHaveProperty('children', []);
108
+ reconciler_1.hostConfig.appendInitialChild(parent, child);
109
+ expect(parent).toHaveProperty('children', [child]);
110
+ reconciler_1.hostConfig.removeChild(parent, child);
111
+ expect(parent).toHaveProperty('children', []);
112
+ }
113
+ });
114
+ it('removeChildFromContainer removes child', () => {
115
+ expect(reconciler_1.hostConfig).toHaveProperty('removeChildFromContainer');
116
+ if (reconciler_1.hostConfig.removeChildFromContainer !== undefined) {
117
+ const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
118
+ const child = (0, reconciler_1.createElement)({ type: 'child', props: {} });
119
+ expect(parent).toHaveProperty('children', []);
120
+ reconciler_1.hostConfig.appendInitialChild(parent, child);
121
+ expect(parent).toHaveProperty('children', [child]);
122
+ reconciler_1.hostConfig.removeChildFromContainer(parent, child);
123
+ expect(parent).toHaveProperty('children', []);
124
+ }
125
+ });
126
+ it('commitTextUpdate should update instance props', () => {
127
+ expect(reconciler_1.hostConfig).toHaveProperty('commitTextUpdate');
128
+ if (reconciler_1.hostConfig.commitTextUpdate !== undefined) {
129
+ const testDoc = (0, reconciler_1.createElement)({ type: 'root', props: {} });
130
+ const textInstance = reconciler_1.hostConfig.createTextInstance('test', testDoc, null, null);
131
+ reconciler_1.hostConfig.commitTextUpdate(textInstance, '', 'updated');
132
+ expect(textInstance).toEqual(expect.objectContaining({
133
+ type: 'String',
134
+ children: [],
135
+ props: {
136
+ text: 'updated'
137
+ },
138
+ key: expect.any(String)
139
+ }));
140
+ }
141
+ });
142
+ });
143
+ describe('hostConfig unused functions', () => {
144
+ it('should return empty object from getRootHostContext', () => {
145
+ expect(reconciler_1.hostConfig.getRootHostContext(emptyForgeDoc)).toEqual({});
146
+ });
147
+ it('should return null from getChildHostContext', () => {
148
+ expect(reconciler_1.hostConfig.getChildHostContext(null, 'test', emptyForgeDoc)).toBeNull();
149
+ });
150
+ it('should return supplied value to getPublicInstance', () => {
151
+ expect(reconciler_1.hostConfig.getPublicInstance(emptyForgeDoc)).toBe(emptyForgeDoc);
152
+ });
153
+ it('should return null from prepareForCommit', () => {
154
+ expect(reconciler_1.hostConfig.prepareForCommit(emptyForgeDoc)).toBeNull();
155
+ });
156
+ it('should return undefined from preparePortalMount', () => {
157
+ expect(reconciler_1.hostConfig.preparePortalMount(emptyForgeDoc)).toBeUndefined();
158
+ });
159
+ it('should return undefined from resetTextContent', () => {
160
+ if (reconciler_1.hostConfig.resetTextContent !== undefined) {
161
+ expect(reconciler_1.hostConfig.resetTextContent(emptyForgeDoc)).toBeUndefined();
162
+ }
163
+ });
164
+ it('should return undefined from commitMount', () => {
165
+ if (reconciler_1.hostConfig.commitMount !== undefined) {
166
+ expect(reconciler_1.hostConfig.commitMount(emptyForgeDoc, 'test', {}, null)).toBeUndefined();
167
+ }
168
+ });
169
+ it('should return undefined from commitUpdate', () => {
170
+ if (reconciler_1.hostConfig.commitUpdate !== undefined) {
171
+ expect(reconciler_1.hostConfig.commitUpdate(emptyForgeDoc, {}, 'test', {}, {}, null)).toBeUndefined();
172
+ }
173
+ });
174
+ it('should return undefined from hideInstance', () => {
175
+ if (reconciler_1.hostConfig.hideInstance !== undefined) {
176
+ expect(reconciler_1.hostConfig.hideInstance(emptyForgeDoc)).toBeUndefined();
177
+ }
178
+ });
179
+ it('should return undefined from unhideTextInstance', () => {
180
+ if (reconciler_1.hostConfig.unhideTextInstance !== undefined) {
181
+ expect(reconciler_1.hostConfig.unhideTextInstance(emptyForgeDoc, 'Test')).toBeUndefined();
182
+ }
183
+ });
184
+ it('should return undefined from clearContainer', () => {
185
+ if (reconciler_1.hostConfig.clearContainer !== undefined) {
186
+ expect(reconciler_1.hostConfig.clearContainer(emptyForgeDoc)).toBeUndefined();
187
+ }
188
+ });
189
+ it('should return undefined from detachDeletedInstance', () => {
190
+ expect(reconciler_1.hostConfig.detachDeletedInstance(emptyForgeDoc)).toBeUndefined();
191
+ });
192
+ it('should return undefined from getCurrentEventPriority', () => {
193
+ expect(reconciler_1.hostConfig.getCurrentEventPriority()).toBe(16);
194
+ });
195
+ it('should return null from getInstanceFromNode', () => {
196
+ expect(reconciler_1.hostConfig.getInstanceFromNode(null)).toBeNull();
197
+ });
198
+ it('should return undefined from beforeActiveInstanceBlur', () => {
199
+ expect(reconciler_1.hostConfig.beforeActiveInstanceBlur()).toBeUndefined();
200
+ });
201
+ it('should return undefined from afterActiveInstanceBlur', () => {
202
+ expect(reconciler_1.hostConfig.afterActiveInstanceBlur()).toBeUndefined();
203
+ });
204
+ it('should return undefined from prepareScopeUpdate', () => {
205
+ expect(reconciler_1.hostConfig.prepareScopeUpdate(null, null)).toBeUndefined();
206
+ });
207
+ it('should return null from getInstanceFromScope', () => {
208
+ expect(reconciler_1.hostConfig.getInstanceFromScope(null)).toBeNull();
209
+ });
210
+ });
@@ -17,7 +17,7 @@ describe('reconciled output', () => {
17
17
  };
18
18
  await reconcilerTestRenderer_1.default.create((0, jsx_runtime_1.jsx)(Test, {}));
19
19
  const forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
20
- expect(forgeDoc).toHaveProperty('forgeDoc.type', 'Root');
21
- expect(forgeDoc).toHaveProperty('forgeDoc.children[0].type', 'Inline');
20
+ expect(forgeDoc).toHaveProperty('type', 'Root');
21
+ expect(forgeDoc).toHaveProperty('children[0].type', 'Inline');
22
22
  });
23
23
  });
@@ -2,247 +2,127 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
+ let keyCount = 0;
6
+ jest.mock('uuid', () => (Object.assign(Object.assign({}, jest.requireActual('uuid')), { v4: () => `${keyCount++}` })));
5
7
  const react_1 = tslib_1.__importStar(require("react"));
6
- const reconciler_1 = require("../reconciler");
7
8
  const reconcilerTestRenderer_1 = tslib_1.__importDefault(require("./reconcilerTestRenderer"));
8
9
  const components_1 = require("../components");
10
+ const get_1 = tslib_1.__importDefault(require("lodash/get"));
9
11
  const testUtils_1 = require("./testUtils");
10
- const emptyForgeDoc = (0, reconciler_1.createElement)({ type: 'root', props: {} });
11
- const ButtonWithStatus = () => {
12
- const [bool, setBool] = (0, react_1.useState)(true);
13
- const appearance = bool ? 'inprogress' : 'success';
14
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(components_1.Button, Object.assign({ onClick: () => setBool(!bool) }, { children: "Click me!" })), (0, jsx_runtime_1.jsx)(components_1.Text, { children: (0, jsx_runtime_1.jsx)(components_1.StatusLozenge, Object.assign({ appearance: appearance }, { children: appearance })) })] }));
15
- };
16
12
  describe('Reconciliation counting', () => {
17
13
  let bridgeCalls = [];
14
+ const TEXT = 0;
15
+ const BUTTON = 1;
16
+ const STATIC_TEXT = 2;
17
+ const STRING = 0;
18
18
  beforeAll(async () => {
19
19
  bridgeCalls = (0, testUtils_1.setupBridge)();
20
20
  const Test = () => {
21
- return ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [(0, jsx_runtime_1.jsx)(ButtonWithStatus, {}), (0, jsx_runtime_1.jsx)(ButtonWithStatus, {})] }));
21
+ const [bool, setBool] = (0, react_1.useState)(false);
22
+ return ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [(0, jsx_runtime_1.jsx)(components_1.Text, { children: !bool ? 'Loading...' : 'Now loaded...' }), (0, jsx_runtime_1.jsx)(components_1.Button, Object.assign({ onClick: () => setBool(true) }, { children: "Click" })), (0, jsx_runtime_1.jsx)(components_1.StatusLozenge, Object.assign({ appearance: "inprogress" }, { children: "Test" }))] }));
22
23
  };
23
24
  await reconcilerTestRenderer_1.default.create((0, jsx_runtime_1.jsx)(Test, {}));
24
25
  });
25
26
  it('initial reconcilation output is correct', () => {
26
27
  const forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
27
- expect(forgeDoc).toHaveProperty('forgeDoc.children[0].props.onClick');
28
- expect(forgeDoc).toHaveProperty('forgeDoc.children[0].type', 'Button');
29
- expect(forgeDoc).toHaveProperty('forgeDoc.children[2].type', 'Button');
28
+ expect(forgeDoc).toHaveProperty('reconciliationCount', 1);
29
+ expect(forgeDoc).toHaveProperty(`children[${TEXT}].type`, 'Text');
30
+ expect(forgeDoc).toHaveProperty(`children[${TEXT}].reconciliationCount`, 1);
31
+ expect(forgeDoc).toHaveProperty(`children[${BUTTON}].type`, 'Button');
32
+ expect(forgeDoc).toHaveProperty(`children[${BUTTON}].reconciliationCount`, 1);
33
+ expect(forgeDoc).toHaveProperty(`children[${STATIC_TEXT}].type`, 'StatusLozenge');
34
+ expect(forgeDoc).toHaveProperty(`children[${STATIC_TEXT}].reconciliationCount`, 1);
35
+ });
36
+ it('calling the button click handler triggers reconciliation', () => {
37
+ let forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
38
+ const onClick = (0, get_1.default)(forgeDoc, `children[${BUTTON}].props.onClick`);
39
+ expect(onClick).not.toBeUndefined();
40
+ onClick();
41
+ forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
42
+ expect(forgeDoc).toHaveProperty('reconciliationCount', 2);
43
+ expect(forgeDoc).toHaveProperty(`children[${TEXT}].reconciliationCount`, 1);
44
+ expect(forgeDoc).toHaveProperty(`children[${TEXT}].children[${STRING}].type`, 'String');
45
+ expect(forgeDoc).toHaveProperty(`children[${TEXT}].children[${STRING}].reconciliationCount`, 2);
46
+ expect(forgeDoc).toHaveProperty(`children[${BUTTON}].reconciliationCount`, 2);
47
+ expect(forgeDoc).toHaveProperty(`children[${STATIC_TEXT}].reconciliationCount`, 1);
30
48
  });
31
49
  });
32
- describe('hostConfig used functions', () => {
50
+ describe('deep tree reconciliation', () => {
33
51
  let bridgeCalls = [];
34
52
  beforeAll(async () => {
35
53
  bridgeCalls = (0, testUtils_1.setupBridge)();
36
- });
37
- it('resetAfterCommit should call bridge', () => {
38
- const testDoc = (0, reconciler_1.createElement)({ type: 'root', props: {} });
39
- reconciler_1.hostConfig.resetAfterCommit(testDoc);
40
- const forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
41
- expect(forgeDoc).toEqual({
42
- forgeDoc: testDoc
43
- });
44
- });
45
- it('createInstance returns empty ForgeDoc', () => {
46
- const testProps = {
47
- test: true
48
- };
49
- const instance = reconciler_1.hostConfig.createInstance('test', testProps, emptyForgeDoc, null, null);
50
- expect(instance).toEqual(expect.objectContaining({
51
- type: 'test',
52
- children: [],
53
- props: {
54
- test: true
55
- },
56
- key: expect.any(String)
57
- }));
58
- });
59
- it('createTextInstance returns ForgeDoc with UUID', () => {
60
- const testDoc = (0, reconciler_1.createElement)({ type: 'root', props: {} });
61
- const textInstance = reconciler_1.hostConfig.createTextInstance('test', testDoc, null, null);
62
- expect(textInstance).toEqual(expect.objectContaining({
63
- type: 'String',
64
- children: [],
65
- props: {
66
- text: 'test'
67
- },
68
- key: expect.any(String)
69
- }));
70
- });
71
- it('appendInitialChild adds child to empty children array', () => {
72
- const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
73
- const child = (0, reconciler_1.createElement)({ type: 'child', props: {} });
74
- expect(parent).toHaveProperty('children', []);
75
- reconciler_1.hostConfig.appendInitialChild(parent, child);
76
- expect(parent).toHaveProperty('children', [child]);
77
- });
78
- it('appendChild does not append same child twice', () => {
79
- expect(reconciler_1.hostConfig).toHaveProperty('appendChild');
80
- if (reconciler_1.hostConfig.appendChild !== undefined) {
81
- const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
82
- const child = (0, reconciler_1.createElement)({ type: 'child', props: {} });
83
- expect(parent).toHaveProperty('children', []);
84
- reconciler_1.hostConfig.appendChild(parent, child);
85
- expect(parent).toHaveProperty('children', [child]);
86
- reconciler_1.hostConfig.appendChild(parent, child);
87
- expect(parent).toHaveProperty('children', [child]);
88
- }
89
- });
90
- it('appendChildToContainer', () => {
91
- expect(reconciler_1.hostConfig).toHaveProperty('appendChildToContainer');
92
- if (reconciler_1.hostConfig.appendChildToContainer !== undefined) {
93
- const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
94
- const child = (0, reconciler_1.createElement)({ type: 'child', props: {} });
95
- expect(parent).toHaveProperty('children', []);
96
- reconciler_1.hostConfig.appendChildToContainer(parent, child);
97
- expect(parent).toHaveProperty('children', [child]);
98
- }
99
- });
100
- it('finalizeInitialChildren returns false', () => {
101
- expect(reconciler_1.hostConfig.finalizeInitialChildren(emptyForgeDoc, 'test', {}, emptyForgeDoc, null)).toBe(false);
102
- });
103
- it('prepareUpdate should set new props as props on instance', () => {
104
- const instance = (0, reconciler_1.createElement)({ type: 'test', props: { oldProps: true } });
105
- const newProps = {
106
- updated: true
54
+ const Test = () => {
55
+ const [count, setCount] = (0, react_1.useState)(0);
56
+ function incrementCount() {
57
+ setCount(count + 1);
58
+ }
59
+ return ((0, jsx_runtime_1.jsx)(react_1.default.Fragment, { children: (0, jsx_runtime_1.jsxs)(components_1.Inline, { children: [(0, jsx_runtime_1.jsx)(components_1.Stack, { children: (0, jsx_runtime_1.jsx)(components_1.Text, { children: count }) }), (0, jsx_runtime_1.jsxs)(components_1.Stack, { children: [(0, jsx_runtime_1.jsx)(components_1.Text, { children: "Should not update" }), (0, jsx_runtime_1.jsx)(components_1.Button, Object.assign({ onClick: incrementCount }, { children: "Click" }))] })] }) }));
107
60
  };
108
- expect(reconciler_1.hostConfig.prepareUpdate(instance, 'test', {}, newProps, emptyForgeDoc, null)).toBe(newProps);
109
- expect(instance).not.toHaveProperty('oldProps');
110
- expect(instance).toHaveProperty('props', newProps);
111
- });
112
- it('shouldSetTextContent returns false', () => {
113
- expect(reconciler_1.hostConfig.shouldSetTextContent('test', {})).toBe(false);
114
- });
115
- it('insertBefore reorders children', () => {
116
- expect(reconciler_1.hostConfig).toHaveProperty('insertBefore');
117
- if (reconciler_1.hostConfig.insertBefore !== undefined) {
118
- const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
119
- const child1 = (0, reconciler_1.createElement)({ type: 'child1', props: {} });
120
- const child2 = (0, reconciler_1.createElement)({ type: 'child2', props: {} });
121
- reconciler_1.hostConfig.appendInitialChild(parent, child1);
122
- expect(parent).toHaveProperty('children', [child1]);
123
- reconciler_1.hostConfig.insertBefore(parent, child2, child1);
124
- expect(parent).toHaveProperty('children', [child2, child1]);
125
- }
126
- });
127
- it('insertInContainerBefore reorders children when child being inserted exists', () => {
128
- expect(reconciler_1.hostConfig).toHaveProperty('insertInContainerBefore');
129
- if (reconciler_1.hostConfig.insertInContainerBefore !== undefined) {
130
- const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
131
- const child1 = (0, reconciler_1.createElement)({ type: 'child1', props: {} });
132
- const child2 = (0, reconciler_1.createElement)({ type: 'child2', props: {} });
133
- reconciler_1.hostConfig.appendInitialChild(parent, child1);
134
- reconciler_1.hostConfig.appendInitialChild(parent, child2);
135
- expect(parent).toHaveProperty('children', [child1, child2]);
136
- reconciler_1.hostConfig.insertInContainerBefore(parent, child2, child1);
137
- expect(parent).toHaveProperty('children', [child2, child1]);
138
- }
139
- });
140
- it('removeChild removes child', () => {
141
- expect(reconciler_1.hostConfig).toHaveProperty('removeChild');
142
- if (reconciler_1.hostConfig.removeChild !== undefined) {
143
- const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
144
- const child = (0, reconciler_1.createElement)({ type: 'child', props: {} });
145
- expect(parent).toHaveProperty('children', []);
146
- reconciler_1.hostConfig.appendInitialChild(parent, child);
147
- expect(parent).toHaveProperty('children', [child]);
148
- reconciler_1.hostConfig.removeChild(parent, child);
149
- expect(parent).toHaveProperty('children', []);
150
- }
151
- });
152
- it('removeChildFromContainer removes child', () => {
153
- expect(reconciler_1.hostConfig).toHaveProperty('removeChildFromContainer');
154
- if (reconciler_1.hostConfig.removeChildFromContainer !== undefined) {
155
- const parent = (0, reconciler_1.createElement)({ type: 'parent', props: {} });
156
- const child = (0, reconciler_1.createElement)({ type: 'child', props: {} });
157
- expect(parent).toHaveProperty('children', []);
158
- reconciler_1.hostConfig.appendInitialChild(parent, child);
159
- expect(parent).toHaveProperty('children', [child]);
160
- reconciler_1.hostConfig.removeChildFromContainer(parent, child);
161
- expect(parent).toHaveProperty('children', []);
162
- }
61
+ await reconcilerTestRenderer_1.default.create((0, jsx_runtime_1.jsx)(Test, {}));
163
62
  });
164
- it('commitTextUpdate should update instance props', () => {
165
- expect(reconciler_1.hostConfig).toHaveProperty('commitTextUpdate');
166
- if (reconciler_1.hostConfig.commitTextUpdate !== undefined) {
167
- const testDoc = (0, reconciler_1.createElement)({ type: 'root', props: {} });
168
- const textInstance = reconciler_1.hostConfig.createTextInstance('test', testDoc, null, null);
169
- reconciler_1.hostConfig.commitTextUpdate(textInstance, '', 'updated');
170
- expect(textInstance).toEqual(expect.objectContaining({
171
- type: 'String',
172
- children: [],
173
- props: {
174
- text: 'updated'
175
- },
176
- key: expect.any(String)
177
- }));
178
- }
63
+ it('should match the initially rendered ForgeDoc snaphot', () => {
64
+ const forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
65
+ expect(forgeDoc).toMatchSnapshot();
66
+ });
67
+ it('should match snapshot after triggering update', () => {
68
+ var _a, _b;
69
+ let forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
70
+ expect(forgeDoc).not.toBeNull();
71
+ const button = (0, testUtils_1.findElementInForgeDoc)(forgeDoc, '14');
72
+ expect(button).not.toBeUndefined();
73
+ expect((_a = button === null || button === void 0 ? void 0 : button.props) === null || _a === void 0 ? void 0 : _a.onClick).not.toBeUndefined();
74
+ (_b = button === null || button === void 0 ? void 0 : button.props) === null || _b === void 0 ? void 0 : _b.onClick();
75
+ forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
76
+ expect(forgeDoc).toMatchSnapshot();
77
+ });
78
+ it('should set accurate reconciliation counts for updated text and string components', () => {
79
+ const forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
80
+ expect(forgeDoc).not.toBeNull();
81
+ const textComponent = (0, testUtils_1.findElementInForgeDoc)(forgeDoc, '9');
82
+ expect(textComponent).not.toBeUndefined();
83
+ expect(textComponent === null || textComponent === void 0 ? void 0 : textComponent.reconciliationCount).toBe(3);
84
+ const stringComponent = (0, testUtils_1.findElementInForgeDoc)(forgeDoc, '8');
85
+ expect(stringComponent).not.toBeUndefined();
86
+ expect(stringComponent === null || stringComponent === void 0 ? void 0 : stringComponent.reconciliationCount).toBe(4);
179
87
  });
180
88
  });
181
- describe('hostConfig unused functions', () => {
182
- it('should return empty object from getRootHostContext', () => {
183
- expect(reconciler_1.hostConfig.getRootHostContext(emptyForgeDoc)).toEqual({});
184
- });
185
- it('should return null from getChildHostContext', () => {
186
- expect(reconciler_1.hostConfig.getChildHostContext(null, 'test', emptyForgeDoc)).toBeNull();
187
- });
188
- it('should return supplied value to getPublicInstance', () => {
189
- expect(reconciler_1.hostConfig.getPublicInstance(emptyForgeDoc)).toBe(emptyForgeDoc);
190
- });
191
- it('should return null from prepareForCommit', () => {
192
- expect(reconciler_1.hostConfig.prepareForCommit(emptyForgeDoc)).toBeNull();
193
- });
194
- it('should return undefined from preparePortalMount', () => {
195
- expect(reconciler_1.hostConfig.preparePortalMount(emptyForgeDoc)).toBeUndefined();
196
- });
197
- it('should return undefined from resetTextContent', () => {
198
- if (reconciler_1.hostConfig.resetTextContent !== undefined) {
199
- expect(reconciler_1.hostConfig.resetTextContent(emptyForgeDoc)).toBeUndefined();
200
- }
201
- });
202
- it('should return undefined from commitMount', () => {
203
- if (reconciler_1.hostConfig.commitMount !== undefined) {
204
- expect(reconciler_1.hostConfig.commitMount(emptyForgeDoc, 'test', {}, null)).toBeUndefined();
205
- }
206
- });
207
- it('should return undefined from commitUpdate', () => {
208
- if (reconciler_1.hostConfig.commitUpdate !== undefined) {
209
- expect(reconciler_1.hostConfig.commitUpdate(emptyForgeDoc, {}, 'test', {}, {}, null)).toBeUndefined();
210
- }
211
- });
212
- it('should return undefined from hideInstance', () => {
213
- if (reconciler_1.hostConfig.hideInstance !== undefined) {
214
- expect(reconciler_1.hostConfig.hideInstance(emptyForgeDoc)).toBeUndefined();
215
- }
89
+ describe('swapping component type with same props', () => {
90
+ let bridgeCalls = [];
91
+ beforeAll(async () => {
92
+ bridgeCalls = (0, testUtils_1.setupBridge)();
93
+ const Test = () => {
94
+ const [bool, setBool] = (0, react_1.useState)(false);
95
+ return ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [bool ? (0, jsx_runtime_1.jsx)(components_1.Text, { children: "Text" }) : (0, jsx_runtime_1.jsx)(components_1.Heading, Object.assign({ size: "medium" }, { children: "Text" })), (0, jsx_runtime_1.jsx)(components_1.Button, Object.assign({ onClick: () => setBool(!bool) }, { children: "Click" }))] }));
96
+ };
97
+ await reconcilerTestRenderer_1.default.create((0, jsx_runtime_1.jsx)(Test, {}));
216
98
  });
217
- it('should return undefined from unhideTextInstance', () => {
218
- if (reconciler_1.hostConfig.unhideTextInstance !== undefined) {
219
- expect(reconciler_1.hostConfig.unhideTextInstance(emptyForgeDoc, 'Test')).toBeUndefined();
99
+ it('should match the initially rendered ForgeDoc snaphot', () => {
100
+ const forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
101
+ expect(forgeDoc).toMatchSnapshot();
102
+ });
103
+ it('should match snapshot after triggering update', () => {
104
+ var _a, _b;
105
+ let forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
106
+ expect(forgeDoc).not.toBeNull();
107
+ if (forgeDoc !== null) {
108
+ const button = (0, testUtils_1.findElementInForgeDoc)(forgeDoc, '21');
109
+ expect(button).not.toBeUndefined();
110
+ expect((_a = button === null || button === void 0 ? void 0 : button.props) === null || _a === void 0 ? void 0 : _a.onClick).not.toBeUndefined();
111
+ (_b = button === null || button === void 0 ? void 0 : button.props) === null || _b === void 0 ? void 0 : _b.onClick();
112
+ forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
113
+ expect(forgeDoc).toMatchSnapshot();
220
114
  }
221
115
  });
222
- it('should return undefined from clearContainer', () => {
223
- if (reconciler_1.hostConfig.clearContainer !== undefined) {
224
- expect(reconciler_1.hostConfig.clearContainer(emptyForgeDoc)).toBeUndefined();
116
+ it('should set accurate reconciliation counts for swapped in text and string components', () => {
117
+ const forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
118
+ expect(forgeDoc).not.toBeNull();
119
+ if (forgeDoc !== null) {
120
+ const textComponent = (0, testUtils_1.findElementInForgeDoc)(forgeDoc, '23');
121
+ expect(textComponent).not.toBeUndefined();
122
+ expect(textComponent === null || textComponent === void 0 ? void 0 : textComponent.reconciliationCount).toBe(6);
123
+ const stringComponent = (0, testUtils_1.findElementInForgeDoc)(forgeDoc, '22');
124
+ expect(stringComponent).not.toBeUndefined();
125
+ expect(stringComponent === null || stringComponent === void 0 ? void 0 : stringComponent.reconciliationCount).toBe(6);
225
126
  }
226
127
  });
227
- it('should return undefined from detachDeletedInstance', () => {
228
- expect(reconciler_1.hostConfig.detachDeletedInstance(emptyForgeDoc)).toBeUndefined();
229
- });
230
- it('should return undefined from getCurrentEventPriority', () => {
231
- expect(reconciler_1.hostConfig.getCurrentEventPriority()).toBe(16);
232
- });
233
- it('should return null from getInstanceFromNode', () => {
234
- expect(reconciler_1.hostConfig.getInstanceFromNode(null)).toBeNull();
235
- });
236
- it('should return undefined from beforeActiveInstanceBlur', () => {
237
- expect(reconciler_1.hostConfig.beforeActiveInstanceBlur()).toBeUndefined();
238
- });
239
- it('should return undefined from afterActiveInstanceBlur', () => {
240
- expect(reconciler_1.hostConfig.afterActiveInstanceBlur()).toBeUndefined();
241
- });
242
- it('should return undefined from prepareScopeUpdate', () => {
243
- expect(reconciler_1.hostConfig.prepareScopeUpdate(null, null)).toBeUndefined();
244
- });
245
- it('should return null from getInstanceFromScope', () => {
246
- expect(reconciler_1.hostConfig.getInstanceFromScope(null)).toBeNull();
247
- });
248
128
  });
@@ -17,7 +17,7 @@ describe('reconciled output', () => {
17
17
  };
18
18
  await reconcilerTestRenderer_1.default.create((0, jsx_runtime_1.jsx)(Test, {}));
19
19
  const forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
20
- expect(forgeDoc).toHaveProperty('forgeDoc.type', 'Root');
21
- expect(forgeDoc).toHaveProperty('forgeDoc.children[0].type', 'Stack');
20
+ expect(forgeDoc).toHaveProperty('type', 'Root');
21
+ expect(forgeDoc).toHaveProperty('children[0].type', 'Stack');
22
22
  });
23
23
  });
@@ -17,7 +17,7 @@ describe('reconciled output', () => {
17
17
  };
18
18
  await reconcilerTestRenderer_1.default.create((0, jsx_runtime_1.jsx)(Test, {}));
19
19
  const forgeDoc = (0, testUtils_1.getLastBridgeCallForgeDoc)(bridgeCalls);
20
- expect(forgeDoc).toHaveProperty('forgeDoc.type', 'Root');
21
- expect(forgeDoc).toHaveProperty('forgeDoc.children[0].type', 'Table');
20
+ expect(forgeDoc).toHaveProperty('type', 'Root');
21
+ expect(forgeDoc).toHaveProperty('children[0].type', 'Table');
22
22
  });
23
23
  });
@@ -1,13 +1,18 @@
1
1
  import { ForgeDoc } from '../types';
2
2
  export type BridgeCall = {
3
3
  cmd: string;
4
- data: ForgeDoc;
4
+ data: BridgeCallData;
5
5
  };
6
6
  type SetupBridge = () => BridgeCall[];
7
7
  type GetLastBridgeCall = (bridgeCalls: BridgeCall[]) => BridgeCall | null;
8
8
  type GetLastBridgeCallForgeDoc = (bridgeCalls: BridgeCall[]) => ForgeDoc | null;
9
+ type FindElementInForgeDoc = (forgeDoc: ForgeDoc | null, key: string) => ForgeDoc | undefined;
10
+ type BridgeCallData = {
11
+ forgeDoc: ForgeDoc;
12
+ };
9
13
  export declare const setupBridge: SetupBridge;
10
14
  export declare const getLastBridgeCall: GetLastBridgeCall;
11
15
  export declare const getLastBridgeCallForgeDoc: GetLastBridgeCallForgeDoc;
16
+ export declare const findElementInForgeDoc: FindElementInForgeDoc;
12
17
  export {};
13
18
  //# sourceMappingURL=testUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/__test__/testUtils.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,MAAM,UAAU,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AACzD,KAAK,WAAW,GAAG,MAAM,UAAU,EAAE,CAAC;AAEtC,KAAK,iBAAiB,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,UAAU,GAAG,IAAI,CAAC;AAC1E,KAAK,yBAAyB,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,QAAQ,GAAG,IAAI,CAAC;AAMhF,eAAO,MAAM,WAAW,EAAE,WAWzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBAK/B,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,yBAMvC,CAAC"}
1
+ {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/__test__/testUtils.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,MAAM,UAAU,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;AAC/D,KAAK,WAAW,GAAG,MAAM,UAAU,EAAE,CAAC;AAEtC,KAAK,iBAAiB,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,UAAU,GAAG,IAAI,CAAC;AAC1E,KAAK,yBAAyB,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,QAAQ,GAAG,IAAI,CAAC;AAChF,KAAK,qBAAqB,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS,CAAC;AAE9F,KAAK,cAAc,GAAG;IACpB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAMF,eAAO,MAAM,WAAW,EAAE,WAWzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBAK/B,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,yBAMvC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,qBAkBnC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLastBridgeCallForgeDoc = exports.getLastBridgeCall = exports.setupBridge = void 0;
3
+ exports.findElementInForgeDoc = exports.getLastBridgeCallForgeDoc = exports.getLastBridgeCall = exports.setupBridge = void 0;
4
4
  const setupBridge = () => {
5
5
  const bridgeCalls = [];
6
6
  global['self'] = {
@@ -25,6 +25,25 @@ const getLastBridgeCallForgeDoc = (bridgeCalls) => {
25
25
  if (lastBridgeCall === null) {
26
26
  return lastBridgeCall;
27
27
  }
28
- return lastBridgeCall.data;
28
+ return lastBridgeCall.data.forgeDoc;
29
29
  };
30
30
  exports.getLastBridgeCallForgeDoc = getLastBridgeCallForgeDoc;
31
+ const findElementInForgeDoc = (forgeDoc, key) => {
32
+ if (forgeDoc === null) {
33
+ return;
34
+ }
35
+ if (forgeDoc.key === key) {
36
+ return forgeDoc;
37
+ }
38
+ const { children } = forgeDoc;
39
+ if (forgeDoc.children) {
40
+ for (const child of children) {
41
+ const result = (0, exports.findElementInForgeDoc)(child, key);
42
+ if (result) {
43
+ return result;
44
+ }
45
+ }
46
+ }
47
+ return;
48
+ };
49
+ exports.findElementInForgeDoc = findElementInForgeDoc;
@@ -8,18 +8,20 @@ export interface ForgeDoc {
8
8
  props: ElementProps;
9
9
  children: ForgeDoc[];
10
10
  key: string;
11
+ reconciliationCount: number;
11
12
  }
12
13
  export type CallBridge = (cmd: string, data: {
13
14
  forgeDoc: ForgeDoc;
14
15
  }) => void;
15
16
  export declare const callBridge: CallBridge;
16
- export type CreateElement = (args: {
17
+ type CreateElement = (args: {
17
18
  type: ElementType;
18
19
  props: InstanceProps;
19
20
  }) => ForgeDoc;
20
21
  export declare const createElement: CreateElement;
21
22
  export declare const appendChild: (parent: ForgeDoc, child: ForgeDoc) => void;
22
23
  export declare const insertBefore: (parent: ForgeDoc, child: ForgeDoc, beforeChild: ForgeDoc) => void;
24
+ export declare const nonChildPropsAreEqual: (oldProps: InstanceProps, newProps: InstanceProps) => boolean;
23
25
  type HostConfigType = string;
24
26
  type InstanceProps = Record<string, any>;
25
27
  type Container = ForgeDoc;
@@ -1 +1 @@
1
- {"version":3,"file":"reconciler.d.ts","sourceRoot":"","sources":["../src/reconciler.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAmB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI1D,KAAK,WAAW,GAAG,MAAM,CAAC;AAC1B,KAAK,YAAY,GAAG,aAAa,CAAC;AAElC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,KAAK,IAAI,CAAC;AAC7E,eAAO,MAAM,UAAU,EAAE,UAGxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,KAAK,QAAQ,CAAC;AAE5F,eAAO,MAAM,aAAa,EAAE,aAS3B,CAAC;AAEF,eAAO,MAAM,WAAW,WAAY,QAAQ,SAAS,QAAQ,SAM5D,CAAC;AAEF,eAAO,MAAM,YAAY,WAAY,QAAQ,SAAS,QAAQ,eAAe,QAAQ,SAOpF,CAAC;AAEF,KAAK,cAAc,GAAG,MAAM,CAAC;AAE7B,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzC,KAAK,SAAS,GAAG,QAAQ,CAAC;AAC1B,KAAK,QAAQ,GAAG,QAAQ,CAAC;AACzB,KAAK,YAAY,GAAG,QAAQ,CAAC;AAC7B,KAAK,gBAAgB,GAAG,QAAQ,CAAC;AACjC,KAAK,kBAAkB,GAAG,QAAQ,CAAC;AACnC,KAAK,cAAc,GAAG,QAAQ,CAAC;AAE/B,KAAK,WAAW,GAAG,GAAG,CAAC;AAEvB,KAAK,aAAa,GAAG,GAAG,CAAC;AAEzB,KAAK,QAAQ,GAAG,GAAG,CAAC;AACpB,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AACnD,KAAK,SAAS,GAAG,CAAC,CAAC,CAAC;AAEpB,eAAO,MAAM,UAAU,EAAE,UAAU,CACjC,cAAc,EACd,aAAa,EACb,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,aAAa,EACb,QAAQ,EACR,aAAa,EACb,SAAS,CAoJV,CAAC;AAIF,eAAO,MAAM,eAAe;sBACR,SAAS;CAiB5B,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"reconciler.d.ts","sourceRoot":"","sources":["../src/reconciler.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAmB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI1D,KAAK,WAAW,GAAG,MAAM,CAAC;AAC1B,KAAK,YAAY,GAAG,aAAa,CAAC;AAElC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,KAAK,IAAI,CAAC;AAC7E,eAAO,MAAM,UAAU,EAAE,UAGxB,CAAC;AAEF,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,KAAK,QAAQ,CAAC;AAmCrF,eAAO,MAAM,aAAa,EAAE,aAe3B,CAAC;AAEF,eAAO,MAAM,WAAW,WAAY,QAAQ,SAAS,QAAQ,SAM5D,CAAC;AAEF,eAAO,MAAM,YAAY,WAAY,QAAQ,SAAS,QAAQ,eAAe,QAAQ,SAOpF,CAAC;AAeF,eAAO,MAAM,qBAAqB,aAAc,aAAa,YAAY,aAAa,YAerF,CAAC;AAEF,KAAK,cAAc,GAAG,MAAM,CAAC;AAE7B,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzC,KAAK,SAAS,GAAG,QAAQ,CAAC;AAC1B,KAAK,QAAQ,GAAG,QAAQ,CAAC;AACzB,KAAK,YAAY,GAAG,QAAQ,CAAC;AAC7B,KAAK,gBAAgB,GAAG,QAAQ,CAAC;AACjC,KAAK,kBAAkB,GAAG,QAAQ,CAAC;AACnC,KAAK,cAAc,GAAG,QAAQ,CAAC;AAE/B,KAAK,WAAW,GAAG,GAAG,CAAC;AAEvB,KAAK,aAAa,GAAG,GAAG,CAAC;AAEzB,KAAK,QAAQ,GAAG,GAAG,CAAC;AACpB,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AACnD,KAAK,SAAS,GAAG,CAAC,CAAC,CAAC;AAEpB,eAAO,MAAM,UAAU,EAAE,UAAU,CACjC,cAAc,EACd,aAAa,EACb,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,aAAa,EACb,QAAQ,EACR,aAAa,EACb,SAAS,CAoKV,CAAC;AAIF,eAAO,MAAM,eAAe;sBACR,SAAS;CAiB5B,CAAC;AAEF,eAAe,eAAe,CAAC"}
package/out/reconciler.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ForgeReconciler = exports.hostConfig = exports.insertBefore = exports.appendChild = exports.createElement = exports.callBridge = void 0;
3
+ exports.ForgeReconciler = exports.hostConfig = exports.nonChildPropsAreEqual = exports.insertBefore = exports.appendChild = exports.createElement = exports.callBridge = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_reconciler_1 = tslib_1.__importDefault(require("react-reconciler"));
6
6
  const constants_1 = require("react-reconciler/constants");
@@ -10,14 +10,37 @@ const callBridge = function (cmd, data) {
10
10
  (_a = self === null || self === void 0 ? void 0 : self.__bridge) === null || _a === void 0 ? void 0 : _a.callBridge(cmd, data);
11
11
  };
12
12
  exports.callBridge = callBridge;
13
+ class ReconciliationCounter {
14
+ constructor() {
15
+ this.count = 0;
16
+ this.count = 0;
17
+ }
18
+ static getInstance() {
19
+ if (!ReconciliationCounter.instance) {
20
+ ReconciliationCounter.instance = new ReconciliationCounter();
21
+ }
22
+ return ReconciliationCounter.instance;
23
+ }
24
+ increment() {
25
+ this.count++;
26
+ }
27
+ getCount() {
28
+ return this.count;
29
+ }
30
+ getNextCount() {
31
+ return this.count + 1;
32
+ }
33
+ }
13
34
  const createElement = ({ type, props = {} }) => {
14
35
  const { children } = props, restProps = tslib_1.__rest(props, ["children"]);
15
- return {
36
+ const element = {
16
37
  type,
17
38
  children: [],
18
39
  props: restProps,
19
- key: (0, uuid_1.v4)()
40
+ key: (0, uuid_1.v4)(),
41
+ reconciliationCount: ReconciliationCounter.getInstance().getNextCount()
20
42
  };
43
+ return element;
21
44
  };
22
45
  exports.createElement = createElement;
23
46
  const appendChild = (parent, child) => {
@@ -37,6 +60,20 @@ const insertBefore = (parent, child, beforeChild) => {
37
60
  parent.children.splice(insertIndex, 0, child);
38
61
  };
39
62
  exports.insertBefore = insertBefore;
63
+ const nonChildPropsAreEqual = (oldProps, newProps) => {
64
+ const newPropsKey = Object.keys(newProps).filter((key) => key !== 'children');
65
+ const oldPropsKey = Object.keys(oldProps).filter((key) => key !== 'children');
66
+ if (newPropsKey.length !== oldPropsKey.length) {
67
+ return false;
68
+ }
69
+ for (const key of newPropsKey) {
70
+ if (newProps[key] !== oldProps[key]) {
71
+ return false;
72
+ }
73
+ }
74
+ return true;
75
+ };
76
+ exports.nonChildPropsAreEqual = nonChildPropsAreEqual;
40
77
  exports.hostConfig = {
41
78
  supportsMutation: true,
42
79
  supportsPersistence: false,
@@ -44,6 +81,9 @@ exports.hostConfig = {
44
81
  isPrimaryRenderer: false,
45
82
  supportsHydration: false,
46
83
  resetAfterCommit(containerInfo) {
84
+ const counter = ReconciliationCounter.getInstance();
85
+ counter.increment();
86
+ containerInfo.reconciliationCount = counter.getCount();
47
87
  (0, exports.callBridge)('reconcile', { forgeDoc: containerInfo });
48
88
  },
49
89
  createInstance(type, instanceProps) {
@@ -67,6 +107,10 @@ exports.hostConfig = {
67
107
  return false;
68
108
  },
69
109
  prepareUpdate(instance, type, oldProps, newProps) {
110
+ if ((0, exports.nonChildPropsAreEqual)(oldProps, newProps)) {
111
+ return null;
112
+ }
113
+ instance.reconciliationCount = ReconciliationCounter.getInstance().getNextCount();
70
114
  instance.props = newProps;
71
115
  return newProps;
72
116
  },
@@ -108,6 +152,7 @@ exports.hostConfig = {
108
152
  },
109
153
  resetTextContent() { },
110
154
  commitTextUpdate(textInstance, oldText, newText) {
155
+ textInstance.reconciliationCount = ReconciliationCounter.getInstance().getNextCount();
111
156
  textInstance.props.text = newText;
112
157
  },
113
158
  commitMount() { },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/react",
3
- "version": "8.1.1",
3
+ "version": "8.1.2-next.1",
4
4
  "description": "Forge React reconciler",
5
5
  "author": "Atlassian",
6
6
  "license": "UNLICENSED",
@@ -13,7 +13,7 @@
13
13
  "pack": "./build/bundle-types.sh"
14
14
  },
15
15
  "peerDependencies": {
16
- "@forge/ui": "1.9.4"
16
+ "@forge/ui": "1.9.5-next.0"
17
17
  },
18
18
  "dependencies": {
19
19
  "@types/react-reconciler": "^0.28.4",
@@ -1 +1 @@
1
- {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/tslib/tslib.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/scheduler/tracing.d.ts","../../node_modules/@types/react/index.d.ts","../../node_modules/@types/react/jsx-runtime.d.ts","./src/types/forge.ts","./src/types/icons.ts","./src/types/components.ts","./src/types/legacy-effect.ts","./src/types/effect.ts","./src/types/extension.ts","./src/types/index.ts","./src/components.tsx","./src/globals.d.ts","../../node_modules/@types/react-reconciler/index.d.ts","../../node_modules/@types/react-reconciler/constants.d.ts","../../node_modules/@types/uuid/interfaces.d.ts","../../node_modules/@types/uuid/index.d.ts","./src/reconciler.ts","./src/index.ts","./src/__test__/reconcilerTestRenderer.ts","./src/__test__/testUtils.tsx","./src/__test__/inline.test.tsx","./src/__test__/reconciler.test.tsx","./src/__test__/stack.test.tsx","./src/__test__/table.test.tsx","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/events/index.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/globals.global.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/@jest/expect-utils/build/index.d.ts","../../node_modules/jest-matcher-utils/node_modules/chalk/index.d.ts","../../node_modules/pretty-format/node_modules/@sinclair/typebox/typebox.d.ts","../../node_modules/pretty-format/node_modules/@jest/schemas/build/index.d.ts","../../node_modules/pretty-format/build/index.d.ts","../../node_modules/jest-diff/build/index.d.ts","../../node_modules/jest-matcher-utils/build/index.d.ts","../../node_modules/expect/build/index.d.ts","../../node_modules/@types/jest/index.d.ts","../../node_modules/jest-matcher-specific-error/types/index.d.ts"],"fileInfos":[{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","impliedFormat":1},{"version":"7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","impliedFormat":1},{"version":"8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","impliedFormat":1},{"version":"5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","impliedFormat":1},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true,"impliedFormat":1},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true,"impliedFormat":1},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true,"impliedFormat":1},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true,"impliedFormat":1},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true,"impliedFormat":1},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true,"impliedFormat":1},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true,"impliedFormat":1},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true,"impliedFormat":1},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true,"impliedFormat":1},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true,"impliedFormat":1},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","impliedFormat":1},{"version":"49a253ec027e56c55c7450a0c331cfe96212b3d1cc215b1710ba94a083404cf3","affectsGlobalScope":true,"impliedFormat":1},{"version":"381899b8d1d4c1be716f18cb5242ba39f66f4b1e31d45af62a32a99f8edcb39d","impliedFormat":1},{"version":"f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","impliedFormat":1},{"version":"f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5","impliedFormat":1},{"version":"6a1c1a2911268b0ac9e6b0248ecbcbab53b197431965684491f153ef57e02726","affectsGlobalScope":true,"impliedFormat":1},{"version":"af7fd2870746deed40e130fc0a3966de74e8f52a97ec114d0fbb35876ab05ca9","impliedFormat":1},{"version":"15eeb27e455aa30b5d11d5ae818c7d706bd0944fb8075466c76e920510a2f7d4","signature":"1e31f2b46a6970d6a27709f2103c84c108dbc164cf90745a896efe580055f450","impliedFormat":1},{"version":"11c057ce7fd5b975ce63dcb6a5b2af636c406e9d1c0bc886d1b8555d6e20168b","signature":"8acc4d23ecd6110cce5a61d808e417708822d3d370f79113ea876d21322dfff9","impliedFormat":1},{"version":"a10625a3e86d04086d4839b1a70216daf809c59deb98ffcecebdb3638d9bde3d","signature":"22b8a50ee93e11aab253fbe0358311257994093cb27b17db5d370f447120d9e0","impliedFormat":1},{"version":"066ace8e087d2485b36e840f175e9281114f328fa8534747743e40acfb13cf16","signature":"5a6b91135ebfbf8bd41263819d4aebcdd1cf613721e9e054ba6c4a9fc6c0c1bf","impliedFormat":1},{"version":"98ac2df42f7dde2fba315caf973b6db95844051ec5ad3ce7f1dd17e7e1c81688","signature":"96749f501d240ad678a17e09ef380c6c80c419517a5bd5665eed78fe05317cd9","impliedFormat":1},{"version":"b97953a9f58eba4323f8894187ff5df1204eae4dab37965324414622edcdbe92","signature":"7741db2a3c047ea9d5f0476cb5856500a1527fa0ee8480afaf6cd326fe9ea488","impliedFormat":1},{"version":"f41772a47b572428702219f11038b5dd74a4263a35d2c3e81979d7f6e4c96927","signature":"ac1e0c3d4584e5c51dd74c2282a93b8f6566a688c1d72a7b674daea6e01b9401","impliedFormat":1},{"version":"80ff43658ad088a0c700dc3396ce0dc4b9178dbd9b35a4faa1497bb5047e3959","signature":"574469bffa60b8434db0b862f63091d72938c942c60e9190b1fb7dace3761309","impliedFormat":1},{"version":"c7422e5fa00f90d68ada7be6aaae5de28f6ac19ce770c7ea31dd5b494ad18866","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1d6096924754ce5e1eb7e4290e24e63abf8feab2cad79f6d953cc6a3a158e8","impliedFormat":1},{"version":"79b9d7f669b76f2bc9227a3bd5fa2c47a5d6440c7fced8370ece9a21ae748f64","impliedFormat":1},{"version":"f30f86562bcdbd3338d40837bcf14a28f975b5c2474a9422a3346d08624b245f","impliedFormat":1},{"version":"a82d61dcd7cac9bd35fd54bac823b7775f7020595eb0f5145caceb7dbffd53e4","impliedFormat":1},{"version":"c289907075e039b225f971d9a132c2f8f984ab3e3243aececcecd685e2d66d59","signature":"df87b3122190194f135a4d86b82a206b81a3fd3842f41293caf144832329cac2","impliedFormat":1},{"version":"3371a9923b5034cf18a0dcae117d06b6642f030b7914036ed915ef140f6e1595","signature":"d90382fa6306a07d89aa25d7606e169d4184ca3bc23d2860d4b40f4cdf9e6cac","impliedFormat":1},{"version":"9b5e4d455cfc3733ac5456e51abfc68602ccfca9aa1530641c1ad6677e644c4c","signature":"80bdfa71d7235e972120e244d7ce8e08196b380885b0740094907db03580de74","impliedFormat":1},{"version":"3f9cc0819f3d11ce37997d005e0e11b036dd4417daa85257ab44d983720ff8b3","signature":"cead4c245894c4ba504e5eb82cd20a250ba49dba29fac3fffaee97225eb1d523","impliedFormat":1},{"version":"5769a61d6e37045885ec95ba15dd96d3a4c8e121b8acfd60edca4e42ec9f3c68","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"fa44d28b763f0a045b818f267bfaf26bbe256b0b5e3f5136fd8af5f2df0822e1","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"a43170dfd63dded51a24f4aa388309a50ac3d01bc57e62cd3f4f65a7928476d8","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"b5405f5533c810903c10f21992dfa2690ed226a4c41d618b552102619f6e4f2a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"4c2c4f53e8eedd970f8afa369d7371544fb6231bf95e659f8602e09abe74d5a5","impliedFormat":1},{"version":"cb5a780979155e80a2184eb987cc411a95c9a1686019ade06918c312a0b7c9b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"a4aebbd743a1c46554d26ba56efe18506f026f17d23f830b37231324c88b8faa","impliedFormat":1},{"version":"3143a5add0467b83150961ecd33773b561a1207aec727002aa1d70333068eb1b","impliedFormat":1},{"version":"400db42c3a46984118bff14260d60cec580057dc1ab4c2d7310beb643e4f5935","impliedFormat":1},{"version":"f87191b7fafe7a0edad375710d99f900e49cef560b66bf309cf3f8e1b7177126","impliedFormat":1},{"version":"586af7d2abe2f9d59c5e757c370087d6c6baea81b033250f43b8df808d6dfb33","impliedFormat":1},{"version":"1a048ff164b8d9609f5de3139d4e37f6e8a82af82087ac414b9208f52ef8aac7","affectsGlobalScope":true,"impliedFormat":1},{"version":"3111079f3cb5f2b9c812ca3f46161562bce5bfb355e915f46ed46c41714dc1c3","impliedFormat":1},{"version":"e7bee4a6d9bb78afa390b25e0ce97a2f94787a1eb17f0a16e732dcbebba3f3ee","impliedFormat":1},{"version":"b32b6b16cb0bda68199582ad6f22242d07ee75fac9b1f28a98cd838afc5eea45","impliedFormat":1},{"version":"4441ee4119824bfaebc49308559edd7545978f9cb41a40f115074e1031dde75f","impliedFormat":1},{"version":"60693a88462d0e97900123b5bf7c73e146ce0cc94da46a61fe6775b430d2ff05","affectsGlobalScope":true,"impliedFormat":1},{"version":"588c69eda58b9202676ec7ca11a72c3762819b46a0ed72462c769846153c447c","affectsGlobalScope":true,"impliedFormat":1},{"version":"4d44a8614b2e45ae7eeb785584beb9def7b22cc7882a6a68f948f5c3dff5f574","impliedFormat":1},{"version":"92f019c55b21c939616f6a48f678e714ac7b109444cbbf23ad69310ce66ecbdc","impliedFormat":1},{"version":"bba259efdf9ab95e0c7d3cc8e99250f56bb6b31d6129efdf733ca4eb1d01feea","impliedFormat":1},{"version":"499b7544062cf44fab253daeaea8ba28877d9e7ff4149246b1f0154d1c9ed535","impliedFormat":1},{"version":"139fd681eff7771a38d0c025d13c7a11c5474f6aab61e01c41511d71496df173","impliedFormat":1},{"version":"f70f62f5f87ff8900090069554f79d9757f8e385322d0e26268463e27c098204","impliedFormat":1},{"version":"44e42ed6ec9c4451ebe89524e80ac8564e9dd0988c56e6c58f393c810730595d","impliedFormat":1},{"version":"a504c109b872b0e653549bd258eb06584c148c98d79406c7516995865a6d5089","impliedFormat":1},{"version":"155865f5f76db0996cd5e20cc5760613ea170ee5ad594c1f3d76fcaa05382161","impliedFormat":1},{"version":"e92852d673c836fc64e10c38640abcd67c463456e5df55723ac699b8e6ab3a8a","impliedFormat":1},{"version":"4455c78d226d061b1203c7614c6c6eb5f4f9db5f00d44ff47d0112de8766fbc4","impliedFormat":1},{"version":"ec369bb9d97c4dc09dd2a4093b7ca3ba69ad284831fccac8a1977785e9e38ce5","affectsGlobalScope":true,"impliedFormat":1},{"version":"4465a636f5f6e9665a90e30691862c9e0a3ac2edc0e66296704f10865e924f2a","impliedFormat":1},{"version":"9af781f03d44f5635ed7844be0ce370d9d595d4b4ec67cad88f0fac03255257e","impliedFormat":1},{"version":"f9fd4c3ef6de27fa0e256f4e75b61711c4be05a3399f7714621d3edc832e36b0","impliedFormat":1},{"version":"e49290b7a927995c0d7e6b2b9c8296284b68a9036d9966531de65185269258d7","impliedFormat":1},{"version":"aa95cc73ea5315e4f6fc8c6db43d49e3b7de3780cae20a4f1319032809013038","impliedFormat":1},{"version":"874ca809b79276460011480a2829f4c8d4db29416dd411f71efbf8f497f0ac09","impliedFormat":1},{"version":"6c903bceaf3f3bc04f2d4c7dcd89ce9fb148b3ba0a5f5408d8f6de2b7eecc7ea","impliedFormat":1},{"version":"504d049d9e550a65466b73ca39da6469ab41786074ea1d16d37c8853f9f6ab2e","impliedFormat":1},{"version":"23a28f834a078986bbf58f4e3705956983ff81c3c2493f3db3e5f0e8a9507779","impliedFormat":1},{"version":"4febdf7f3ec92706c58e0b4e8159cd6de718284ef384260b07c9641c13fc70ce","impliedFormat":1},{"version":"bf241ed073916ec9e21a3c138936edd444b6787d874844c0d05fc00a8f109d19","affectsGlobalScope":true,"impliedFormat":1},{"version":"7335933d9f30dcfd2c4b6080a8b78e81912a7fcefb1dafccb67ca4cb4b3ac23d","impliedFormat":1},{"version":"a6bfe9de9adef749010c118104b071d14943802ff0614732b47ce4f1c3e383cd","impliedFormat":1},{"version":"4c3d0e10396646db4a1e917fb852077ee77ae62e512913bef9cccc2bb0f8bd0e","impliedFormat":1},{"version":"3b220849d58140dcc6718f5b52dcd29fdb79c45bc28f561cbd29eb1cac6cce13","impliedFormat":1},{"version":"0ee22fce41f7417a24c808d266e91b850629113c104713a35854393d55994beb","impliedFormat":1},{"version":"22d1b1d965baba05766613e2e6c753bb005d4386c448cafd72c309ba689e8c24","impliedFormat":1},{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true,"impliedFormat":1},{"version":"c6c0bd221bb1e94768e94218f8298e47633495529d60cae7d8da9374247a1cf5","impliedFormat":1},{"version":"cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","impliedFormat":1},{"version":"1fe4f59d471c69fd533049505081f7e5d6d56486416b12aafb22ba9616034ab7","affectsGlobalScope":true,"impliedFormat":1},{"version":"50adbf55a460fd1048260f11c9b0ec28ee950e6aeaee179ddc09d14be6dedb4e","affectsGlobalScope":true,"impliedFormat":1}],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"importHelpers":true,"jsx":4,"module":1,"noUnusedLocals":true,"outDir":"./out","removeComments":true,"rootDir":"./src","skipLibCheck":true,"strict":true,"target":4,"useUnknownInCatchVariables":false},"fileIdsList":[[106,109],[57],[59],[60,66],[62,70,71,78,87],[62,63,70,78],[64,94],[65,66,71,79],[66,87],[67,68,70,78],[68],[69,70],[70],[70,71,72,87,93],[71,72],[70,73,78,87,93],[70,71,73,74,78,87,90,93],[73,75,87,90,93],[57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100],[70,76],[77,93],[68,70,78,87],[79],[80],[59,81],[82,92],[83],[84],[70,85],[85,86,94,96],[70,87],[88],[89],[78,87,90],[91],[78,92],[73,84,93],[94],[87,95],[96],[97],[70,72,87,93,96,98],[87,99],[34],[30,31,32,33],[47],[102,108],[106],[110],[103,107],[105],[104],[29,34,35,43,51,52],[29,34,35,43,49,51,52],[29,34,35,49],[29,35,42],[29,35,43,49],[29,34,35,45,46,48],[29,34,35,36,37],[29,35,36],[29,35],[29,35,36,37,38,39,40,41],[42],[43,49],[34,45],[34,36,37],[36],[36,37,38,39,40,41]],"referencedMap":[[110,1],[57,2],[59,3],[60,4],[62,5],[63,6],[64,7],[65,8],[66,9],[67,10],[68,11],[69,12],[70,13],[71,14],[72,15],[73,16],[74,17],[75,18],[101,19],[76,20],[77,21],[78,22],[79,23],[80,24],[81,25],[82,26],[83,27],[84,28],[85,29],[86,30],[87,31],[88,32],[89,33],[90,34],[91,35],[92,36],[93,37],[94,38],[95,39],[96,40],[97,41],[98,42],[99,43],[45,44],[34,45],[35,44],[48,46],[109,47],[107,48],[111,49],[108,50],[106,51],[105,52],[53,53],[54,54],[51,55],[55,53],[56,53],[52,56],[43,56],[50,57],[49,58],[38,59],[40,60],[41,60],[36,61],[37,61],[42,62],[39,60]],"exportedModulesMap":[[110,1],[57,2],[59,3],[60,4],[62,5],[63,6],[64,7],[65,8],[66,9],[67,10],[68,11],[69,12],[70,13],[71,14],[72,15],[73,16],[74,17],[75,18],[101,19],[76,20],[77,21],[78,22],[79,23],[80,24],[81,25],[82,26],[83,27],[84,28],[85,29],[86,30],[87,31],[88,32],[89,33],[90,34],[91,35],[92,36],[93,37],[94,38],[95,39],[96,40],[97,41],[98,42],[99,43],[45,44],[34,45],[35,44],[48,46],[109,47],[107,48],[111,49],[108,50],[106,51],[105,52],[51,44],[52,63],[43,63],[50,64],[49,65],[38,66],[40,67],[41,67],[42,68],[39,67]],"semanticDiagnosticsPerFile":[102,61,110,57,59,60,62,63,64,65,66,67,68,69,70,71,72,58,100,73,74,75,101,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,32,46,45,30,34,35,33,48,47,31,109,107,111,108,103,106,105,104,29,7,6,2,8,9,10,11,12,13,14,15,3,4,19,16,17,18,20,21,22,5,23,24,25,26,27,1,28,53,54,51,55,56,52,43,44,50,49,38,40,41,36,37,42,39],"latestChangedDtsFile":"./out/__test__/table.test.d.ts"},"version":"4.9.5"}
1
+ {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/tslib/tslib.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/scheduler/tracing.d.ts","../../node_modules/@types/react/index.d.ts","../../node_modules/@types/react/jsx-runtime.d.ts","./src/types/forge.ts","./src/types/icons.ts","./src/types/components.ts","./src/types/legacy-effect.ts","./src/types/effect.ts","./src/types/extension.ts","./src/types/index.ts","./src/components.tsx","./src/globals.d.ts","../../node_modules/@types/react-reconciler/index.d.ts","../../node_modules/@types/react-reconciler/constants.d.ts","../../node_modules/@types/uuid/interfaces.d.ts","../../node_modules/@types/uuid/index.d.ts","./src/reconciler.ts","./src/index.ts","./src/__test__/testUtils.tsx","./src/__test__/hostConfig.test.tsx","./src/__test__/reconcilerTestRenderer.ts","./src/__test__/inline.test.tsx","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../../node_modules/@types/lodash/get.d.ts","./src/__test__/reconciler.test.tsx","./src/__test__/stack.test.tsx","./src/__test__/table.test.tsx","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/events/index.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/globals.global.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/@jest/expect-utils/build/index.d.ts","../../node_modules/chalk/index.d.ts","../../node_modules/pretty-format/node_modules/@sinclair/typebox/typebox.d.ts","../../node_modules/pretty-format/node_modules/@jest/schemas/build/index.d.ts","../../node_modules/pretty-format/build/index.d.ts","../../node_modules/jest-diff/build/index.d.ts","../../node_modules/jest-matcher-utils/build/index.d.ts","../../node_modules/expect/build/index.d.ts","../../node_modules/@types/jest/index.d.ts","../../node_modules/jest-matcher-specific-error/types/index.d.ts"],"fileInfos":[{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","impliedFormat":1},{"version":"7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","impliedFormat":1},{"version":"8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","impliedFormat":1},{"version":"5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","impliedFormat":1},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true,"impliedFormat":1},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true,"impliedFormat":1},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true,"impliedFormat":1},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true,"impliedFormat":1},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true,"impliedFormat":1},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true,"impliedFormat":1},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true,"impliedFormat":1},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true,"impliedFormat":1},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true,"impliedFormat":1},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true,"impliedFormat":1},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","impliedFormat":1},{"version":"49a253ec027e56c55c7450a0c331cfe96212b3d1cc215b1710ba94a083404cf3","affectsGlobalScope":true,"impliedFormat":1},{"version":"381899b8d1d4c1be716f18cb5242ba39f66f4b1e31d45af62a32a99f8edcb39d","impliedFormat":1},{"version":"f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","impliedFormat":1},{"version":"f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5","impliedFormat":1},{"version":"6a1c1a2911268b0ac9e6b0248ecbcbab53b197431965684491f153ef57e02726","affectsGlobalScope":true,"impliedFormat":1},{"version":"af7fd2870746deed40e130fc0a3966de74e8f52a97ec114d0fbb35876ab05ca9","impliedFormat":1},{"version":"15eeb27e455aa30b5d11d5ae818c7d706bd0944fb8075466c76e920510a2f7d4","signature":"1e31f2b46a6970d6a27709f2103c84c108dbc164cf90745a896efe580055f450","impliedFormat":1},{"version":"11c057ce7fd5b975ce63dcb6a5b2af636c406e9d1c0bc886d1b8555d6e20168b","signature":"8acc4d23ecd6110cce5a61d808e417708822d3d370f79113ea876d21322dfff9","impliedFormat":1},{"version":"a10625a3e86d04086d4839b1a70216daf809c59deb98ffcecebdb3638d9bde3d","signature":"22b8a50ee93e11aab253fbe0358311257994093cb27b17db5d370f447120d9e0","impliedFormat":1},{"version":"066ace8e087d2485b36e840f175e9281114f328fa8534747743e40acfb13cf16","signature":"5a6b91135ebfbf8bd41263819d4aebcdd1cf613721e9e054ba6c4a9fc6c0c1bf","impliedFormat":1},{"version":"98ac2df42f7dde2fba315caf973b6db95844051ec5ad3ce7f1dd17e7e1c81688","signature":"96749f501d240ad678a17e09ef380c6c80c419517a5bd5665eed78fe05317cd9","impliedFormat":1},{"version":"b97953a9f58eba4323f8894187ff5df1204eae4dab37965324414622edcdbe92","signature":"7741db2a3c047ea9d5f0476cb5856500a1527fa0ee8480afaf6cd326fe9ea488","impliedFormat":1},{"version":"f41772a47b572428702219f11038b5dd74a4263a35d2c3e81979d7f6e4c96927","signature":"ac1e0c3d4584e5c51dd74c2282a93b8f6566a688c1d72a7b674daea6e01b9401","impliedFormat":1},{"version":"80ff43658ad088a0c700dc3396ce0dc4b9178dbd9b35a4faa1497bb5047e3959","signature":"574469bffa60b8434db0b862f63091d72938c942c60e9190b1fb7dace3761309","impliedFormat":1},{"version":"c7422e5fa00f90d68ada7be6aaae5de28f6ac19ce770c7ea31dd5b494ad18866","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1d6096924754ce5e1eb7e4290e24e63abf8feab2cad79f6d953cc6a3a158e8","impliedFormat":1},{"version":"79b9d7f669b76f2bc9227a3bd5fa2c47a5d6440c7fced8370ece9a21ae748f64","impliedFormat":1},{"version":"f30f86562bcdbd3338d40837bcf14a28f975b5c2474a9422a3346d08624b245f","impliedFormat":1},{"version":"a82d61dcd7cac9bd35fd54bac823b7775f7020595eb0f5145caceb7dbffd53e4","impliedFormat":1},{"version":"887a03ece42f5c89fc37a825c6051306550c8d74ea773ac7e03f3e2f4cdfc2b1","signature":"f21582ad1e0f709d2976cb688b1c161f2816ccf8e0f3104dd4eb1140c0e238f3","impliedFormat":1},{"version":"3371a9923b5034cf18a0dcae117d06b6642f030b7914036ed915ef140f6e1595","signature":"d90382fa6306a07d89aa25d7606e169d4184ca3bc23d2860d4b40f4cdf9e6cac","impliedFormat":1},{"version":"986489b7fb01085aad319c9b03c4b140a85c64d275183cb8a4133d13ab6ed1cc","signature":"3f33aa7ebe9f7a3ec8bf8bc21edd336786e481c3227559b4749c4bffd70814ce","impliedFormat":1},{"version":"be3bc7c8484643b2cec379872fa7d1eb67c65281805667017ad7416783a3d939","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"9b5e4d455cfc3733ac5456e51abfc68602ccfca9aa1530641c1ad6677e644c4c","signature":"80bdfa71d7235e972120e244d7ce8e08196b380885b0740094907db03580de74","impliedFormat":1},{"version":"c9818d4a154fff2a8881dba7f00d98c2bc96694a3529645258db5714084b85fc","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","impliedFormat":1},{"version":"458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","impliedFormat":1},{"version":"da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","impliedFormat":1},{"version":"187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","impliedFormat":1},{"version":"febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","impliedFormat":1},{"version":"98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","impliedFormat":1},{"version":"0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","impliedFormat":1},{"version":"00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","impliedFormat":1},{"version":"dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","impliedFormat":1},{"version":"3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","impliedFormat":1},{"version":"b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","impliedFormat":1},{"version":"df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","impliedFormat":1},{"version":"30abc554c7ad13063a02ddd06757929b34357aea1f6fcf4ca39114cb0fc19384","impliedFormat":1},{"version":"8c7bb1d03e5607e5ad3d27f48e53dbe70b61372ea73d75000c9ead7ad2ac0fbd","impliedFormat":1},{"version":"dab4645c48d890ee55d839e3eeed5c6eb54d2dc07e662d0ad98444aee750f653","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"a6111067706e96158af29b652ecfd01a3b11de75fcfc50e6737e3e85094ff9ec","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"7ffa16ec60c057d9cf3d39008c01a089cd2ccd3a0d62e12905f2ea7d8552e490","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"4c2c4f53e8eedd970f8afa369d7371544fb6231bf95e659f8602e09abe74d5a5","impliedFormat":1},{"version":"cb5a780979155e80a2184eb987cc411a95c9a1686019ade06918c312a0b7c9b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"a4aebbd743a1c46554d26ba56efe18506f026f17d23f830b37231324c88b8faa","impliedFormat":1},{"version":"3143a5add0467b83150961ecd33773b561a1207aec727002aa1d70333068eb1b","impliedFormat":1},{"version":"400db42c3a46984118bff14260d60cec580057dc1ab4c2d7310beb643e4f5935","impliedFormat":1},{"version":"f87191b7fafe7a0edad375710d99f900e49cef560b66bf309cf3f8e1b7177126","impliedFormat":1},{"version":"586af7d2abe2f9d59c5e757c370087d6c6baea81b033250f43b8df808d6dfb33","impliedFormat":1},{"version":"1a048ff164b8d9609f5de3139d4e37f6e8a82af82087ac414b9208f52ef8aac7","affectsGlobalScope":true,"impliedFormat":1},{"version":"3111079f3cb5f2b9c812ca3f46161562bce5bfb355e915f46ed46c41714dc1c3","impliedFormat":1},{"version":"e7bee4a6d9bb78afa390b25e0ce97a2f94787a1eb17f0a16e732dcbebba3f3ee","impliedFormat":1},{"version":"b32b6b16cb0bda68199582ad6f22242d07ee75fac9b1f28a98cd838afc5eea45","impliedFormat":1},{"version":"4441ee4119824bfaebc49308559edd7545978f9cb41a40f115074e1031dde75f","impliedFormat":1},{"version":"60693a88462d0e97900123b5bf7c73e146ce0cc94da46a61fe6775b430d2ff05","affectsGlobalScope":true,"impliedFormat":1},{"version":"588c69eda58b9202676ec7ca11a72c3762819b46a0ed72462c769846153c447c","affectsGlobalScope":true,"impliedFormat":1},{"version":"4d44a8614b2e45ae7eeb785584beb9def7b22cc7882a6a68f948f5c3dff5f574","impliedFormat":1},{"version":"92f019c55b21c939616f6a48f678e714ac7b109444cbbf23ad69310ce66ecbdc","impliedFormat":1},{"version":"bba259efdf9ab95e0c7d3cc8e99250f56bb6b31d6129efdf733ca4eb1d01feea","impliedFormat":1},{"version":"499b7544062cf44fab253daeaea8ba28877d9e7ff4149246b1f0154d1c9ed535","impliedFormat":1},{"version":"139fd681eff7771a38d0c025d13c7a11c5474f6aab61e01c41511d71496df173","impliedFormat":1},{"version":"f70f62f5f87ff8900090069554f79d9757f8e385322d0e26268463e27c098204","impliedFormat":1},{"version":"44e42ed6ec9c4451ebe89524e80ac8564e9dd0988c56e6c58f393c810730595d","impliedFormat":1},{"version":"a504c109b872b0e653549bd258eb06584c148c98d79406c7516995865a6d5089","impliedFormat":1},{"version":"155865f5f76db0996cd5e20cc5760613ea170ee5ad594c1f3d76fcaa05382161","impliedFormat":1},{"version":"e92852d673c836fc64e10c38640abcd67c463456e5df55723ac699b8e6ab3a8a","impliedFormat":1},{"version":"4455c78d226d061b1203c7614c6c6eb5f4f9db5f00d44ff47d0112de8766fbc4","impliedFormat":1},{"version":"ec369bb9d97c4dc09dd2a4093b7ca3ba69ad284831fccac8a1977785e9e38ce5","affectsGlobalScope":true,"impliedFormat":1},{"version":"4465a636f5f6e9665a90e30691862c9e0a3ac2edc0e66296704f10865e924f2a","impliedFormat":1},{"version":"9af781f03d44f5635ed7844be0ce370d9d595d4b4ec67cad88f0fac03255257e","impliedFormat":1},{"version":"f9fd4c3ef6de27fa0e256f4e75b61711c4be05a3399f7714621d3edc832e36b0","impliedFormat":1},{"version":"e49290b7a927995c0d7e6b2b9c8296284b68a9036d9966531de65185269258d7","impliedFormat":1},{"version":"aa95cc73ea5315e4f6fc8c6db43d49e3b7de3780cae20a4f1319032809013038","impliedFormat":1},{"version":"874ca809b79276460011480a2829f4c8d4db29416dd411f71efbf8f497f0ac09","impliedFormat":1},{"version":"6c903bceaf3f3bc04f2d4c7dcd89ce9fb148b3ba0a5f5408d8f6de2b7eecc7ea","impliedFormat":1},{"version":"504d049d9e550a65466b73ca39da6469ab41786074ea1d16d37c8853f9f6ab2e","impliedFormat":1},{"version":"23a28f834a078986bbf58f4e3705956983ff81c3c2493f3db3e5f0e8a9507779","impliedFormat":1},{"version":"4febdf7f3ec92706c58e0b4e8159cd6de718284ef384260b07c9641c13fc70ce","impliedFormat":1},{"version":"bf241ed073916ec9e21a3c138936edd444b6787d874844c0d05fc00a8f109d19","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0f55a0ab349053c95345f7e5d4583d69161f25a5d26b6850acffb9240dcf943","impliedFormat":1},{"version":"a6bfe9de9adef749010c118104b071d14943802ff0614732b47ce4f1c3e383cd","impliedFormat":1},{"version":"4c3d0e10396646db4a1e917fb852077ee77ae62e512913bef9cccc2bb0f8bd0e","impliedFormat":1},{"version":"3b220849d58140dcc6718f5b52dcd29fdb79c45bc28f561cbd29eb1cac6cce13","impliedFormat":1},{"version":"0ee22fce41f7417a24c808d266e91b850629113c104713a35854393d55994beb","impliedFormat":1},{"version":"22d1b1d965baba05766613e2e6c753bb005d4386c448cafd72c309ba689e8c24","impliedFormat":1},{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true,"impliedFormat":1},{"version":"c6c0bd221bb1e94768e94218f8298e47633495529d60cae7d8da9374247a1cf5","impliedFormat":1},{"version":"cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","impliedFormat":1},{"version":"1fe4f59d471c69fd533049505081f7e5d6d56486416b12aafb22ba9616034ab7","affectsGlobalScope":true,"impliedFormat":1},{"version":"50adbf55a460fd1048260f11c9b0ec28ee950e6aeaee179ddc09d14be6dedb4e","affectsGlobalScope":true,"impliedFormat":1}],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"importHelpers":true,"jsx":4,"module":1,"noUnusedLocals":true,"outDir":"./out","removeComments":true,"rootDir":"./src","skipLibCheck":true,"strict":true,"target":4,"useUnknownInCatchVariables":false},"fileIdsList":[[121,124],[55,57,58,59,60,61,62,63,64,65,66,67],[55,56,58,59,60,61,62,63,64,65,66,67],[56,57,58,59,60,61,62,63,64,65,66,67],[55,56,57,59,60,61,62,63,64,65,66,67],[55,56,57,58,60,61,62,63,64,65,66,67],[55,56,57,58,59,61,62,63,64,65,66,67],[55,56,57,58,59,60,62,63,64,65,66,67],[55,56,57,58,59,60,61,63,64,65,66,67],[55,56,57,58,59,60,61,62,64,65,66,67],[55,56,57,58,59,60,61,62,63,65,66,67],[55,56,57,58,59,60,61,62,63,64,66,67],[55,56,57,58,59,60,61,62,63,64,65,67],[67],[55,56,57,58,59,60,61,62,63,64,65,66],[72],[74],[75,81],[77,85,86,93,102],[77,78,85,93],[79,109],[80,81,86,94],[81,102],[82,83,85,93],[83],[84,85],[85],[85,86,87,102,108],[86,87],[85,88,93,102,108],[85,86,88,89,93,102,105,108],[88,90,102,105,108],[72,73,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115],[85,91],[92,108],[83,85,93,102],[94],[95],[74,96],[97,107],[98],[99],[85,100],[100,101,109,111],[85,102],[103],[104],[93,102,105],[106],[93,107],[88,99,108],[109],[102,110],[111],[112],[85,87,102,108,111,113],[102,114],[34],[30,31,32,33],[47],[117,123],[121],[125],[118,122],[120],[119],[29,35,49,51],[29,34,35,43,51,53],[29,34,35,43,51,53,68],[29,34,35,49],[29,35,42],[29,35,43,49],[29,34,35,45,46,48],[29,34,35,36,37],[29,35,36],[29,35],[29,35,36,37,38,39,40,41],[42],[43,49],[34,45],[34,36,37],[36],[36,37,38,39,40,41]],"referencedMap":[[125,1],[56,2],[57,3],[55,4],[58,5],[59,6],[60,7],[61,8],[62,9],[63,10],[64,11],[65,12],[66,13],[68,14],[67,15],[72,16],[74,17],[75,18],[77,19],[78,20],[79,21],[80,22],[81,23],[82,24],[83,25],[84,26],[85,27],[86,28],[87,29],[88,30],[89,31],[90,32],[116,33],[91,34],[92,35],[93,36],[94,37],[95,38],[96,39],[97,40],[98,41],[99,42],[100,43],[101,44],[102,45],[103,46],[104,47],[105,48],[106,49],[107,50],[108,51],[109,52],[110,53],[111,54],[112,55],[113,56],[114,57],[45,58],[34,59],[35,58],[48,60],[124,61],[122,62],[126,63],[123,64],[121,65],[120,66],[52,67],[54,68],[69,69],[53,70],[70,68],[71,68],[51,71],[43,71],[50,72],[49,73],[38,74],[40,75],[41,75],[36,76],[37,76],[42,77],[39,75]],"exportedModulesMap":[[125,1],[56,2],[57,3],[55,4],[58,5],[59,6],[60,7],[61,8],[62,9],[63,10],[64,11],[65,12],[66,13],[68,14],[67,15],[72,16],[74,17],[75,18],[77,19],[78,20],[79,21],[80,22],[81,23],[82,24],[83,25],[84,26],[85,27],[86,28],[87,29],[88,30],[89,31],[90,32],[116,33],[91,34],[92,35],[93,36],[94,37],[95,38],[96,39],[97,40],[98,41],[99,42],[100,43],[101,44],[102,45],[103,46],[104,47],[105,48],[106,49],[107,50],[108,51],[109,52],[110,53],[111,54],[112,55],[113,56],[114,57],[45,58],[34,59],[35,58],[48,60],[124,61],[122,62],[126,63],[123,64],[121,65],[120,66],[53,58],[51,78],[43,78],[50,79],[49,80],[38,81],[40,82],[41,82],[42,83],[39,82]],"semanticDiagnosticsPerFile":[117,76,125,56,57,55,58,59,60,61,62,63,64,65,66,68,67,72,74,75,77,78,79,80,81,82,83,84,85,86,87,73,115,88,89,90,116,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,32,46,45,30,34,35,33,48,47,118,31,124,122,126,123,121,120,119,29,7,6,2,8,9,10,11,12,13,14,15,3,4,19,16,17,18,20,21,22,5,23,24,25,26,27,1,28,52,54,69,53,70,71,51,43,44,50,49,38,40,41,36,37,42,39],"latestChangedDtsFile":"./out/__test__/table.test.d.ts"},"version":"4.9.5"}