@webkrafters/react-observable-context 5.0.0-rc.2 → 5.0.0-rc.4
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/package.json +17 -4
- package/dist/main/hooks/use-prehooks-ref/index.test.d.ts +0 -1
- package/dist/main/hooks/use-prehooks-ref/index.test.js +0 -21
- package/dist/main/hooks/use-render-key-provider/index.test.d.ts +0 -1
- package/dist/main/hooks/use-render-key-provider/index.test.js +0 -72
- package/dist/main/hooks/use-store/index.test.d.ts +0 -1
- package/dist/main/hooks/use-store/index.test.js +0 -456
- package/dist/main/index.test.d.ts +0 -11
- package/dist/main/index.test.js +0 -1298
- package/dist/main/test-apps/normal.d.ts +0 -36
- package/dist/main/test-apps/normal.js +0 -243
- package/dist/main/test-apps/with-connected-children.d.ts +0 -25
- package/dist/main/test-apps/with-connected-children.js +0 -229
- package/dist/main/test-apps/with-pure-children.d.ts +0 -15
- package/dist/main/test-apps/with-pure-children.js +0 -127
- package/dist/model/storage/index.test.d.ts +0 -1
- package/dist/model/storage/index.test.js +0 -139
- package/dist/test-artifacts/data/create-state-obj.d.ts +0 -58
- package/dist/test-artifacts/data/create-state-obj.js +0 -95
- package/dist/test-artifacts/suppress-render-compat.d.ts +0 -1
- package/dist/test-artifacts/suppress-render-compat.js +0 -7
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.Product = exports.MemoizedTallyDisplay = exports.MemoizedPriceSticker = exports.MemoizedProductDescription = exports.MemoizedEditor = exports.MemoizedCustomerPhoneDisplay = exports.MemoizedReset = void 0;
|
|
30
|
-
const react_1 = __importStar(require("react"));
|
|
31
|
-
const lodash_isempty_1 = __importDefault(require("lodash.isempty"));
|
|
32
|
-
const normal_1 = require("./normal");
|
|
33
|
-
exports.MemoizedReset = (0, react_1.memo)(normal_1.Reset);
|
|
34
|
-
exports.MemoizedCustomerPhoneDisplay = (0, react_1.memo)(normal_1.CustomerPhoneDisplay);
|
|
35
|
-
exports.MemoizedEditor = (0, react_1.memo)(normal_1.Editor);
|
|
36
|
-
exports.MemoizedProductDescription = (0, react_1.memo)(normal_1.ProductDescription);
|
|
37
|
-
exports.MemoizedPriceSticker = (0, react_1.memo)(normal_1.PriceSticker);
|
|
38
|
-
const TallyDisplay = () => {
|
|
39
|
-
const { data: { color, name, price, type } } = (0, normal_1.useObservableContext)({
|
|
40
|
-
color: 'color',
|
|
41
|
-
name: 'customer.name',
|
|
42
|
-
price: 'price',
|
|
43
|
-
type: 'type'
|
|
44
|
-
});
|
|
45
|
-
(0, react_1.useEffect)(() => console.log('TallyDisplay component rendered.....'));
|
|
46
|
-
return (react_1.default.createElement("div", { style: { margin: '20px 0 10px' } },
|
|
47
|
-
react_1.default.createElement("div", { style: { float: 'left', fontSize: '1.75rem' } },
|
|
48
|
-
"Customer:",
|
|
49
|
-
' ',
|
|
50
|
-
(0, lodash_isempty_1.default)(name.first) && (0, lodash_isempty_1.default)(name.last)
|
|
51
|
-
? 'n.a.'
|
|
52
|
-
: (react_1.default.createElement(react_1.default.Fragment, null,
|
|
53
|
-
react_1.default.createElement(normal_1.CapitalizedDisplay, { text: name.first }),
|
|
54
|
-
' ',
|
|
55
|
-
react_1.default.createElement(normal_1.CapitalizedDisplay, { text: name.last })))),
|
|
56
|
-
react_1.default.createElement("div", { style: { clear: 'both', paddingLeft: 3 } },
|
|
57
|
-
react_1.default.createElement(exports.MemoizedCustomerPhoneDisplay, null)),
|
|
58
|
-
react_1.default.createElement("table", null,
|
|
59
|
-
react_1.default.createElement("tbody", null,
|
|
60
|
-
react_1.default.createElement("tr", null,
|
|
61
|
-
react_1.default.createElement("td", null,
|
|
62
|
-
react_1.default.createElement("label", null, "Type:")),
|
|
63
|
-
react_1.default.createElement("td", null,
|
|
64
|
-
react_1.default.createElement(normal_1.CapitalizedDisplay, { text: type }))),
|
|
65
|
-
react_1.default.createElement("tr", null,
|
|
66
|
-
react_1.default.createElement("td", null,
|
|
67
|
-
react_1.default.createElement("label", null, "Color:")),
|
|
68
|
-
react_1.default.createElement("td", null,
|
|
69
|
-
react_1.default.createElement(normal_1.CapitalizedDisplay, { text: color }))),
|
|
70
|
-
react_1.default.createElement("tr", null,
|
|
71
|
-
react_1.default.createElement("td", null,
|
|
72
|
-
react_1.default.createElement("label", null, "Price:")),
|
|
73
|
-
react_1.default.createElement("td", null, price.toFixed(2))))),
|
|
74
|
-
react_1.default.createElement("div", { style: { textAlign: 'right' } },
|
|
75
|
-
react_1.default.createElement(exports.MemoizedReset, null))));
|
|
76
|
-
};
|
|
77
|
-
TallyDisplay.displayName = 'TallyDisplay';
|
|
78
|
-
exports.MemoizedTallyDisplay = (0, react_1.memo)(TallyDisplay);
|
|
79
|
-
const Product = ({ prehooks = undefined, type }) => {
|
|
80
|
-
const [state, setState] = (0, react_1.useState)(() => ({
|
|
81
|
-
color: 'Burgundy',
|
|
82
|
-
customer: {
|
|
83
|
-
name: { first: null, last: null },
|
|
84
|
-
phone: null
|
|
85
|
-
},
|
|
86
|
-
price: 22.5,
|
|
87
|
-
type
|
|
88
|
-
}));
|
|
89
|
-
(0, react_1.useEffect)(() => {
|
|
90
|
-
setState({ type }); // use this to update only the changed state
|
|
91
|
-
// setState({ ...state, type }); // this will override the context internal state for these values
|
|
92
|
-
}, [type]);
|
|
93
|
-
const overridePricing = (0, react_1.useCallback)(e => setState({
|
|
94
|
-
price: Number(e.target.value)
|
|
95
|
-
}), []);
|
|
96
|
-
return (react_1.default.createElement("div", null,
|
|
97
|
-
react_1.default.createElement("div", { style: { marginBottom: 10 } },
|
|
98
|
-
react_1.default.createElement("label", null,
|
|
99
|
-
"$ ",
|
|
100
|
-
react_1.default.createElement("input", { onKeyUp: overridePricing, placeholder: "override price here..." }))),
|
|
101
|
-
react_1.default.createElement(normal_1.ObservableContext.Provider, { prehooks: prehooks, value: state },
|
|
102
|
-
react_1.default.createElement("div", { style: {
|
|
103
|
-
borderBottom: '1px solid #333',
|
|
104
|
-
marginBottom: 10,
|
|
105
|
-
paddingBottom: 5
|
|
106
|
-
} },
|
|
107
|
-
react_1.default.createElement(exports.MemoizedEditor, null),
|
|
108
|
-
react_1.default.createElement(exports.MemoizedTallyDisplay, null)),
|
|
109
|
-
react_1.default.createElement(exports.MemoizedProductDescription, null),
|
|
110
|
-
react_1.default.createElement(exports.MemoizedPriceSticker, null))));
|
|
111
|
-
};
|
|
112
|
-
exports.Product = Product;
|
|
113
|
-
exports.Product.displayName = 'Product';
|
|
114
|
-
const App = () => {
|
|
115
|
-
const [productType, setProductType] = (0, react_1.useState)('Calculator');
|
|
116
|
-
const updateType = (0, react_1.useCallback)(e => setProductType(e.target.value), []);
|
|
117
|
-
return (react_1.default.createElement("div", { className: "App" },
|
|
118
|
-
react_1.default.createElement("h1", null, "Demo"),
|
|
119
|
-
react_1.default.createElement("h2", null, "A contrived product app."),
|
|
120
|
-
react_1.default.createElement("div", { style: { marginBottom: 10 } },
|
|
121
|
-
react_1.default.createElement("label", null,
|
|
122
|
-
"Type: ",
|
|
123
|
-
react_1.default.createElement("input", { onKeyUp: updateType, placeholder: "override product type here..." }))),
|
|
124
|
-
react_1.default.createElement(exports.Product, { type: productType })));
|
|
125
|
-
};
|
|
126
|
-
App.displayName = 'App';
|
|
127
|
-
exports.default = App;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const _1 = __importDefault(require("."));
|
|
7
|
-
const data = {
|
|
8
|
-
isTest: true,
|
|
9
|
-
name: {
|
|
10
|
-
first: 'test',
|
|
11
|
-
last: 'data'
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
describe('Storage class', () => {
|
|
15
|
-
const mockImpls = {};
|
|
16
|
-
let origWinStorage;
|
|
17
|
-
beforeAll(() => {
|
|
18
|
-
if (typeof globalThis.sessionStorage?.setItem !== 'undefined') {
|
|
19
|
-
origWinStorage = globalThis.sessionStorage;
|
|
20
|
-
}
|
|
21
|
-
['getItem', 'removeItem', 'setItem'].forEach(k => { mockImpls[k] = jest.fn(); });
|
|
22
|
-
Object.defineProperty(globalThis, 'sessionStorage', {
|
|
23
|
-
value: {
|
|
24
|
-
data: null,
|
|
25
|
-
getItem(...args) { mockImpls.getItem(...args); return this.data; },
|
|
26
|
-
removeItem(...args) { mockImpls.removeItem(...args); this.data = null; },
|
|
27
|
-
setItem(...args) { mockImpls.setItem(...args); this.data = args[1].toString(); }
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
afterAll(() => {
|
|
32
|
-
if (origWinStorage) {
|
|
33
|
-
Object.defineProperty(globalThis, 'sessionStorage', { value: origWinStorage });
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
delete globalThis.sessionStorage;
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
describe('in environment with built-in sesssion storage support', () => {
|
|
40
|
-
let storage;
|
|
41
|
-
beforeAll(() => {
|
|
42
|
-
_1.default.supportsSession = true;
|
|
43
|
-
storage = new _1.default();
|
|
44
|
-
});
|
|
45
|
-
afterAll(jest.clearAllMocks);
|
|
46
|
-
test('creates an storage', () => expect(storage).toBeInstanceOf(_1.default));
|
|
47
|
-
test('requires a key for entries into this storage', () => {
|
|
48
|
-
expect(storage.isKeyRequired).toBe(true);
|
|
49
|
-
});
|
|
50
|
-
describe('clone(...)', () => {
|
|
51
|
-
test('performs no cloning of the data - not needed as serialization operation takes care of this', () => {
|
|
52
|
-
const data = { a: 30, b: false, c: 'test', d: [8], e: { w: 55 } };
|
|
53
|
-
const cloned = storage.clone(data);
|
|
54
|
-
expect(cloned).toBe(data);
|
|
55
|
-
expect(cloned).toStrictEqual(data);
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
describe('getItem(...)', () => {
|
|
59
|
-
const key = 'a';
|
|
60
|
-
let _data;
|
|
61
|
-
beforeAll(() => {
|
|
62
|
-
storage.setItem(key, data);
|
|
63
|
-
_data = storage.getItem(key);
|
|
64
|
-
});
|
|
65
|
-
afterAll(jest.clearAllMocks);
|
|
66
|
-
test('gets data directly from the session storage', () => {
|
|
67
|
-
expect(mockImpls.getItem).toHaveBeenCalledTimes(1);
|
|
68
|
-
expect(mockImpls.getItem).toHaveBeenCalledWith(key);
|
|
69
|
-
});
|
|
70
|
-
test('gets a copy of the stored data', () => {
|
|
71
|
-
expect(_data).not.toBe(data);
|
|
72
|
-
expect(_data).toStrictEqual(data);
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
describe('removeItem(...)', () => {
|
|
76
|
-
test('removes data directly from the session storage', () => {
|
|
77
|
-
const key = 'a';
|
|
78
|
-
storage.removeItem(key);
|
|
79
|
-
expect(mockImpls.removeItem).toHaveBeenCalledTimes(1);
|
|
80
|
-
expect(mockImpls.removeItem).toHaveBeenCalledWith(key);
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
describe('setItem(...)', () => {
|
|
84
|
-
test('stores stringified version of the data directly into the session storage', () => {
|
|
85
|
-
const key = 'a';
|
|
86
|
-
storage.setItem(key, data);
|
|
87
|
-
expect(mockImpls.setItem).toHaveBeenCalledTimes(1);
|
|
88
|
-
expect(mockImpls.setItem).toHaveBeenCalledWith(key, expect.any(String));
|
|
89
|
-
expect(mockImpls.setItem.mock.calls[0][1]).toBe(JSON.stringify(data));
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
describe('in environment with NO sesssion storage support', () => {
|
|
94
|
-
let storage;
|
|
95
|
-
beforeAll(() => {
|
|
96
|
-
_1.default.supportsSession = false;
|
|
97
|
-
storage = new _1.default();
|
|
98
|
-
});
|
|
99
|
-
test('creates an storage', () => expect(storage).toBeInstanceOf(_1.default));
|
|
100
|
-
test('does not require any key for entries into this storage', () => {
|
|
101
|
-
expect(storage.isKeyRequired).toBe(false);
|
|
102
|
-
});
|
|
103
|
-
describe('clone(...)', () => {
|
|
104
|
-
test('returns a copy of the data', () => {
|
|
105
|
-
const data = { a: 30, b: false, c: 'test', d: [8], e: { w: 55 } };
|
|
106
|
-
const cloned = storage.clone(data);
|
|
107
|
-
expect(cloned).not.toBe(data);
|
|
108
|
-
expect(cloned).toStrictEqual(data);
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
describe('getItem(...)', () => {
|
|
112
|
-
let _data;
|
|
113
|
-
beforeAll(() => {
|
|
114
|
-
const key = 'a';
|
|
115
|
-
storage.setItem(key, data);
|
|
116
|
-
_data = storage.getItem(key);
|
|
117
|
-
});
|
|
118
|
-
test('does not get data from the session storage', () => {
|
|
119
|
-
expect(mockImpls.getItem).not.toHaveBeenCalled();
|
|
120
|
-
});
|
|
121
|
-
test('gets the stored data', () => {
|
|
122
|
-
expect(_data).toBe(data);
|
|
123
|
-
expect(_data).toStrictEqual(data);
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
describe('removeItem(...)', () => {
|
|
127
|
-
test('does interact with the session storage', () => {
|
|
128
|
-
storage.removeItem('a');
|
|
129
|
-
expect(mockImpls.removeItem).not.toHaveBeenCalled();
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
describe('setItem(...)', () => {
|
|
133
|
-
test('does not interact with the session storage', () => {
|
|
134
|
-
storage.setItem('a', data);
|
|
135
|
-
expect(mockImpls.setItem).not.toHaveBeenCalled();
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
});
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/** @returns {SourceData} */
|
|
2
|
-
declare const createSourceData: () => {
|
|
3
|
-
_id: string;
|
|
4
|
-
about: string;
|
|
5
|
-
address: string;
|
|
6
|
-
age: number;
|
|
7
|
-
balance: string;
|
|
8
|
-
company: string;
|
|
9
|
-
email: string;
|
|
10
|
-
eyeColor: string;
|
|
11
|
-
favoriteFruit: string;
|
|
12
|
-
friends: {
|
|
13
|
-
id: number;
|
|
14
|
-
name: {
|
|
15
|
-
first: string;
|
|
16
|
-
last: string;
|
|
17
|
-
};
|
|
18
|
-
}[];
|
|
19
|
-
gender: string;
|
|
20
|
-
greeting: string;
|
|
21
|
-
guid: string;
|
|
22
|
-
history: {
|
|
23
|
-
places: {
|
|
24
|
-
city: string;
|
|
25
|
-
country: string;
|
|
26
|
-
state: string;
|
|
27
|
-
year: string;
|
|
28
|
-
}[];
|
|
29
|
-
};
|
|
30
|
-
isActive: boolean;
|
|
31
|
-
latitude: number;
|
|
32
|
-
longitude: number;
|
|
33
|
-
name: {
|
|
34
|
-
first: string;
|
|
35
|
-
last: string;
|
|
36
|
-
};
|
|
37
|
-
phone: {
|
|
38
|
-
area: string;
|
|
39
|
-
country: string;
|
|
40
|
-
line: string;
|
|
41
|
-
local: string;
|
|
42
|
-
};
|
|
43
|
-
picture: string;
|
|
44
|
-
registered: {
|
|
45
|
-
day: number;
|
|
46
|
-
month: number;
|
|
47
|
-
time: {
|
|
48
|
-
hours: number;
|
|
49
|
-
minutes: number;
|
|
50
|
-
seconds: number;
|
|
51
|
-
};
|
|
52
|
-
timezone: string;
|
|
53
|
-
year: number;
|
|
54
|
-
};
|
|
55
|
-
tags: string[];
|
|
56
|
-
};
|
|
57
|
-
export default createSourceData;
|
|
58
|
-
/** @typedef {typeof sourceData} SourceData */
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const clone_total_1 = __importDefault(require("@webkrafters/clone-total"));
|
|
7
|
-
const sourceData = {
|
|
8
|
-
_id: '639737cc5ac1df69cda79413',
|
|
9
|
-
about: 'Eu deserunt proident id id eu veniam enim qui nostrud eu sit. Aliquip pariatur non cillum adipisicing nisi officia culpa commodo fugiat anim. Exercitation culpa id esse incididunt nostrud non adipisicing laboris labore ullamco. Consectetur Lorem culpa veniam cillum laboris irure aliquip qui sit dolore aute nostrud veniam.\r\n',
|
|
10
|
-
address: '760 Midwood Street, Harborton, Massachusetts, 7547',
|
|
11
|
-
age: 38,
|
|
12
|
-
balance: '$3,311.66',
|
|
13
|
-
company: 'VORTEXACO',
|
|
14
|
-
email: 'ambersears@vortexaco.com',
|
|
15
|
-
eyeColor: 'blue',
|
|
16
|
-
favoriteFruit: 'banana',
|
|
17
|
-
friends: [{
|
|
18
|
-
id: 0,
|
|
19
|
-
name: {
|
|
20
|
-
first: 'Pollard',
|
|
21
|
-
last: 'Hunter'
|
|
22
|
-
}
|
|
23
|
-
}, {
|
|
24
|
-
id: 1,
|
|
25
|
-
name: {
|
|
26
|
-
first: 'Holly',
|
|
27
|
-
last: 'Roberson'
|
|
28
|
-
}
|
|
29
|
-
}, {
|
|
30
|
-
id: 2,
|
|
31
|
-
name: {
|
|
32
|
-
first: 'Carey',
|
|
33
|
-
last: 'Osborne'
|
|
34
|
-
}
|
|
35
|
-
}],
|
|
36
|
-
gender: 'female',
|
|
37
|
-
greeting: 'Hello, Amber Sears! You have 1 unread messages.',
|
|
38
|
-
guid: '628babfc-63c7-446a-8782-057d22ca286a',
|
|
39
|
-
history: {
|
|
40
|
-
places: [{
|
|
41
|
-
city: 'Topeka',
|
|
42
|
-
country: 'US',
|
|
43
|
-
state: 'KS',
|
|
44
|
-
year: '1997 - 2002'
|
|
45
|
-
}, {
|
|
46
|
-
city: 'Atlanta',
|
|
47
|
-
country: 'US',
|
|
48
|
-
state: 'GA',
|
|
49
|
-
year: '2008'
|
|
50
|
-
}, {
|
|
51
|
-
city: 'Miami',
|
|
52
|
-
country: 'US',
|
|
53
|
-
state: 'FL',
|
|
54
|
-
year: '2017'
|
|
55
|
-
}]
|
|
56
|
-
},
|
|
57
|
-
isActive: false,
|
|
58
|
-
latitude: 31.963572,
|
|
59
|
-
longitude: -171.530547,
|
|
60
|
-
name: {
|
|
61
|
-
first: 'Amber',
|
|
62
|
-
last: 'Sears'
|
|
63
|
-
},
|
|
64
|
-
phone: {
|
|
65
|
-
area: '947',
|
|
66
|
-
country: '+1',
|
|
67
|
-
line: '2282',
|
|
68
|
-
local: '552'
|
|
69
|
-
},
|
|
70
|
-
picture: 'http://placehold.it/32x32',
|
|
71
|
-
registered: {
|
|
72
|
-
day: 18,
|
|
73
|
-
month: 2,
|
|
74
|
-
time: {
|
|
75
|
-
hours: 9,
|
|
76
|
-
minutes: 55,
|
|
77
|
-
seconds: 46
|
|
78
|
-
},
|
|
79
|
-
timezone: '+08:00',
|
|
80
|
-
year: 2016
|
|
81
|
-
},
|
|
82
|
-
tags: [
|
|
83
|
-
'minim',
|
|
84
|
-
'nisi',
|
|
85
|
-
'dolor',
|
|
86
|
-
'in',
|
|
87
|
-
'ullamco',
|
|
88
|
-
'laborum',
|
|
89
|
-
'proident'
|
|
90
|
-
]
|
|
91
|
-
};
|
|
92
|
-
/** @returns {SourceData} */
|
|
93
|
-
const createSourceData = () => (0, clone_total_1.default)(sourceData);
|
|
94
|
-
exports.default = createSourceData;
|
|
95
|
-
/** @typedef {typeof sourceData} SourceData */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const consoleError = console.error.bind(console);
|
|
4
|
-
beforeAll(() => {
|
|
5
|
-
console.error = (...args) => !/Warning: ReactDOM\.render is no longer supported in React 18/.test(args[0]) && consoleError(...args);
|
|
6
|
-
});
|
|
7
|
-
afterAll(() => { console.error = consoleError; });
|