@centrifuge/sdk 1.15.3 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Centrifuge.d.ts.map +1 -1
- package/dist/Centrifuge.js +4 -23
- package/dist/Centrifuge.js.map +1 -1
- package/dist/Centrifuge.test.js +0 -3
- package/dist/Centrifuge.test.js.map +1 -1
- package/dist/entities/Pool.d.ts +12 -1
- package/dist/entities/Pool.d.ts.map +1 -1
- package/dist/entities/Pool.js +51 -27
- package/dist/entities/Pool.js.map +1 -1
- package/dist/entities/Pool.metadataGate.test.d.ts +2 -0
- package/dist/entities/Pool.metadataGate.test.d.ts.map +1 -0
- package/dist/entities/Pool.metadataGate.test.js +23 -0
- package/dist/entities/Pool.metadataGate.test.js.map +1 -0
- package/dist/entities/Pool.test.js +26 -3
- package/dist/entities/Pool.test.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/tests/mocks/mockPoolMetadataV2.d.ts +7 -0
- package/dist/tests/mocks/mockPoolMetadataV2.d.ts.map +1 -0
- package/dist/tests/mocks/mockPoolMetadataV2.js +153 -0
- package/dist/tests/mocks/mockPoolMetadataV2.js.map +1 -0
- package/dist/types/poolInput.d.ts +17 -17
- package/dist/types/poolInput.d.ts.map +1 -1
- package/dist/types/poolMetadata.d.ts +229 -1
- package/dist/types/poolMetadata.d.ts.map +1 -1
- package/dist/types/poolMetadata.js +7 -1
- package/dist/types/poolMetadata.js.map +1 -1
- package/dist/utils/poolMetadataMigration.d.ts +23 -0
- package/dist/utils/poolMetadataMigration.d.ts.map +1 -0
- package/dist/utils/poolMetadataMigration.js +389 -0
- package/dist/utils/poolMetadataMigration.js.map +1 -0
- package/dist/utils/poolMetadataMigration.test.d.ts +2 -0
- package/dist/utils/poolMetadataMigration.test.d.ts.map +1 -0
- package/dist/utils/poolMetadataMigration.test.js +240 -0
- package/dist/utils/poolMetadataMigration.test.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
import { isPoolMetadataV2, } from '../types/poolMetadata.js';
|
|
2
|
+
/* ================================================================================================
|
|
3
|
+
* Migration: legacy (v1) -> v2
|
|
4
|
+
* ============================================================================================== */
|
|
5
|
+
/**
|
|
6
|
+
* Legacy APY display modes that the invest app no longer recognizes, mapped to their nearest v2
|
|
7
|
+
* equivalent. `target` becomes the hardcoded `fixed` display; the rolling windows pick the 365-day
|
|
8
|
+
* basis; `automatic` defaults to the 30-day window.
|
|
9
|
+
*/
|
|
10
|
+
const LEGACY_APY_MODE_MAP = {
|
|
11
|
+
target: 'fixed',
|
|
12
|
+
'7day': '7d365',
|
|
13
|
+
'30day': '30d365',
|
|
14
|
+
'90day': '90d365',
|
|
15
|
+
automatic: '30d365',
|
|
16
|
+
};
|
|
17
|
+
function migrateApyMode(apy) {
|
|
18
|
+
if (apy == null)
|
|
19
|
+
return apy;
|
|
20
|
+
return LEGACY_APY_MODE_MAP[apy] ?? apy;
|
|
21
|
+
}
|
|
22
|
+
function formatMinInvestment(value) {
|
|
23
|
+
return value.toLocaleString('en-US');
|
|
24
|
+
}
|
|
25
|
+
/** Document links only carry web/IPFS URIs; anything else (e.g. `javascript:`) is dropped. */
|
|
26
|
+
function isSafeDocumentUri(uri) {
|
|
27
|
+
const scheme = uri.trim().toLowerCase();
|
|
28
|
+
return scheme.startsWith('https://') || scheme.startsWith('ipfs://');
|
|
29
|
+
}
|
|
30
|
+
/** Escapes markdown link-breaking characters so an issuer-supplied label can't alter the link. */
|
|
31
|
+
function escapeMarkdownText(text) {
|
|
32
|
+
return text.replace(/[\\[\]()]/g, '\\$&').replace(/\s+/g, ' ');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Builds the seed `factsheet` from the legacy display fields. The migration is content-translating:
|
|
36
|
+
* a migrated pool must render the same content, so legacy fields are projected into ordered key
|
|
37
|
+
* facts + body blocks. The output is a sensible, ops-editable seed, not a frozen contract.
|
|
38
|
+
*/
|
|
39
|
+
function buildFactsheet(pool, shareClasses) {
|
|
40
|
+
const { issuer, asset, poolStructure, expenseRatio, details, poolRatings } = pool;
|
|
41
|
+
const firstShareClass = Object.values(shareClasses)[0];
|
|
42
|
+
const keyFacts = [
|
|
43
|
+
{ label: 'Issuer', value: issuer.name },
|
|
44
|
+
{ label: 'Asset type', value: `${asset.class} - ${asset.subClass}` },
|
|
45
|
+
{ label: 'APY', valueRef: 'apy' },
|
|
46
|
+
{ label: 'Pool structure', value: poolStructure },
|
|
47
|
+
];
|
|
48
|
+
const weightedAverageMaturity = firstShareClass?.weightedAverageMaturity;
|
|
49
|
+
if (weightedAverageMaturity != null) {
|
|
50
|
+
keyFacts.push({ label: 'Average asset maturity', value: `${weightedAverageMaturity} days` });
|
|
51
|
+
}
|
|
52
|
+
if (expenseRatio != null && expenseRatio !== '') {
|
|
53
|
+
keyFacts.push({ label: 'Expense ratio', value: `${expenseRatio}%` });
|
|
54
|
+
}
|
|
55
|
+
const minInitialInvestment = firstShareClass?.minInitialInvestment;
|
|
56
|
+
if (minInitialInvestment != null) {
|
|
57
|
+
keyFacts.push({ label: 'Min. investment', value: formatMinInvestment(minInitialInvestment) });
|
|
58
|
+
}
|
|
59
|
+
for (const category of issuer.categories) {
|
|
60
|
+
keyFacts.push({ label: category.type, value: category.value });
|
|
61
|
+
}
|
|
62
|
+
const body = [];
|
|
63
|
+
if (issuer.description) {
|
|
64
|
+
body.push({ type: 'text', id: 'overview', title: 'Overview', body: issuer.description });
|
|
65
|
+
}
|
|
66
|
+
;
|
|
67
|
+
(details ?? []).forEach((detail, index) => {
|
|
68
|
+
body.push({ type: 'text', id: `detail-${index}`, title: detail.title, body: detail.body });
|
|
69
|
+
});
|
|
70
|
+
const ratingsWithReports = (poolRatings ?? []).filter((rating) => rating.reportFile?.uri && isSafeDocumentUri(rating.reportFile.uri));
|
|
71
|
+
if (ratingsWithReports.length > 0) {
|
|
72
|
+
body.push({
|
|
73
|
+
type: 'text',
|
|
74
|
+
id: 'documents',
|
|
75
|
+
title: 'Documents',
|
|
76
|
+
body: ratingsWithReports
|
|
77
|
+
.map((rating) => `- [${escapeMarkdownText(rating.agency ?? 'Rating')} rating report](${rating.reportFile.uri})`)
|
|
78
|
+
.join('\n'),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
body.push({ type: 'section', id: 'performance', ref: 'onchainMetrics' });
|
|
82
|
+
// `sections` is omitted so the invest app renders its default sections.
|
|
83
|
+
return { body, keyFacts };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Pure, idempotent legacy -> v2 migration. Performs no IPFS/network access so it stays
|
|
87
|
+
* unit-testable. Returns the input unchanged when it is already v2.
|
|
88
|
+
*
|
|
89
|
+
* - Strips fields unused by every consumer (`newInvestmentsStatus`, `reports`, `loanTemplates`,
|
|
90
|
+
* `issuer.repName/shortDescription`, onboarding extras) and reshapes `issuer`/`poolRatings`.
|
|
91
|
+
* - Maps legacy APY modes across `shareClasses[*].apy`.
|
|
92
|
+
* - Projects the legacy display fields into `pool.factsheet`.
|
|
93
|
+
*/
|
|
94
|
+
export function migratePoolMetadataToV2(legacy) {
|
|
95
|
+
if (isPoolMetadataV2(legacy))
|
|
96
|
+
return legacy;
|
|
97
|
+
const { pool, shareClasses, onboarding, merkleProofManager, holdings, addressLabels, workflowPolicies } = legacy;
|
|
98
|
+
const { issuer, poolRatings, ...restPool } = pool;
|
|
99
|
+
// Explicitly drop fields that v2 does not carry.
|
|
100
|
+
delete restPool.newInvestmentsStatus;
|
|
101
|
+
delete restPool.reports;
|
|
102
|
+
delete restPool.details;
|
|
103
|
+
const migratedShareClasses = {};
|
|
104
|
+
for (const [scId, shareClass] of Object.entries(shareClasses)) {
|
|
105
|
+
migratedShareClasses[scId] = { ...shareClass, apy: migrateApyMode(shareClass.apy) };
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
version: 2,
|
|
109
|
+
pool: {
|
|
110
|
+
...restPool,
|
|
111
|
+
issuer: { name: issuer.name, email: issuer.email, logo: issuer.logo },
|
|
112
|
+
poolRatings: poolRatings?.map(({ reportFile: _reportFile, ...rating }) => rating),
|
|
113
|
+
factsheet: buildFactsheet(pool, shareClasses),
|
|
114
|
+
},
|
|
115
|
+
shareClasses: migratedShareClasses,
|
|
116
|
+
...(merkleProofManager !== undefined ? { merkleProofManager } : {}),
|
|
117
|
+
...(onboarding !== undefined
|
|
118
|
+
? {
|
|
119
|
+
onboarding: {
|
|
120
|
+
kycRestrictedCountries: onboarding.kycRestrictedCountries,
|
|
121
|
+
kybRestrictedCountries: onboarding.kybRestrictedCountries,
|
|
122
|
+
},
|
|
123
|
+
}
|
|
124
|
+
: {}),
|
|
125
|
+
...(holdings !== undefined ? { holdings } : {}),
|
|
126
|
+
...(addressLabels !== undefined ? { addressLabels } : {}),
|
|
127
|
+
...(workflowPolicies !== undefined ? { workflowPolicies } : {}),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/* ================================================================================================
|
|
131
|
+
* Validation: hand-rolled structural checks (mirrors src/utils/catalog.ts; no zod dependency)
|
|
132
|
+
* ============================================================================================== */
|
|
133
|
+
// All enums below are validated as closed sets. The app-owned live-data key registries
|
|
134
|
+
// (`dataRef` / `LiveMetric` / `LiveDataset`) and `section.ref` are PROVISIONAL and expected to grow
|
|
135
|
+
// (see centrifuge/apps-invest#200), but the SDK is the alignment point: an unknown key is rejected
|
|
136
|
+
// on WRITE so the management app, SDK, and invest app stay in sync (adding a key ships in an SDK
|
|
137
|
+
// release). The read path does not validate, so a newer document never breaks an older reader.
|
|
138
|
+
const VISIBILITIES = new Set(['public', 'whitelisted', 'hidden']);
|
|
139
|
+
const CHART_TYPES = new Set(['line', 'area', 'bar', 'donut']);
|
|
140
|
+
const AXIS_FORMATS = new Set(['number', 'percent', 'currency']);
|
|
141
|
+
const XAXIS_TYPES = new Set(['category', 'time', 'number']);
|
|
142
|
+
const DATA_REFS = new Set(['apyVsBenchmarks', 'maturityDistribution']);
|
|
143
|
+
const SECTION_REFS = new Set(['onchainMetrics', 'smartContracts']);
|
|
144
|
+
const LIVE_METRICS = new Set(['tokenPrice', 'nav', 'apy30d', 'navChange', 'monthlyReturn']);
|
|
145
|
+
const LIVE_DATASETS = new Set(['monthlySummary']);
|
|
146
|
+
const COLUMN_FORMATS = new Set(['text', 'number', 'percent', 'currency']);
|
|
147
|
+
const CONTENT_BLOCK_TYPES = new Set(['text', 'table', 'chart', 'image', 'kpiGroup', 'tabGroup', 'liveTable']);
|
|
148
|
+
const TAB_BLOCK_TYPES = new Set(['text', 'table', 'chart', 'kpiGroup']);
|
|
149
|
+
const KPI_TRENDS = new Set(['up', 'down', 'neutral']);
|
|
150
|
+
function fail(message) {
|
|
151
|
+
throw new Error(`pool metadata v2: ${message}`);
|
|
152
|
+
}
|
|
153
|
+
function isObject(value) {
|
|
154
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
155
|
+
}
|
|
156
|
+
function assertString(value, where) {
|
|
157
|
+
if (typeof value !== 'string')
|
|
158
|
+
fail(`${where} must be a string`);
|
|
159
|
+
}
|
|
160
|
+
function assertVisibility(value, where) {
|
|
161
|
+
if (value === undefined)
|
|
162
|
+
return;
|
|
163
|
+
if (typeof value !== 'string' || !VISIBILITIES.has(value)) {
|
|
164
|
+
fail(`${where} has invalid visibility "${String(value)}"`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function isPrimitiveCell(value) {
|
|
168
|
+
return typeof value === 'string' || typeof value === 'number';
|
|
169
|
+
}
|
|
170
|
+
function validateFile(value, where) {
|
|
171
|
+
if (!isObject(value))
|
|
172
|
+
fail(`${where} must be a file object`);
|
|
173
|
+
assertString(value.uri, `${where}.uri`);
|
|
174
|
+
assertString(value.mime, `${where}.mime`);
|
|
175
|
+
}
|
|
176
|
+
function validateKeyFact(value, where) {
|
|
177
|
+
if (!isObject(value))
|
|
178
|
+
fail(`${where} must be an object`);
|
|
179
|
+
assertString(value.label, `${where}.label`);
|
|
180
|
+
if (value.value !== undefined)
|
|
181
|
+
assertString(value.value, `${where}.value`);
|
|
182
|
+
if (value.valueRef !== undefined && value.valueRef !== 'apy')
|
|
183
|
+
fail(`${where}.valueRef must be 'apy'`);
|
|
184
|
+
if (value.tooltip !== undefined)
|
|
185
|
+
assertString(value.tooltip, `${where}.tooltip`);
|
|
186
|
+
if (value.href !== undefined)
|
|
187
|
+
assertString(value.href, `${where}.href`);
|
|
188
|
+
assertVisibility(value.visibility, where);
|
|
189
|
+
}
|
|
190
|
+
function validateChartSeries(value, where) {
|
|
191
|
+
if (!isObject(value))
|
|
192
|
+
fail(`${where} must be an object`);
|
|
193
|
+
assertString(value.name, `${where}.name`);
|
|
194
|
+
if (value.color !== undefined)
|
|
195
|
+
assertString(value.color, `${where}.color`);
|
|
196
|
+
if (!Array.isArray(value.data))
|
|
197
|
+
fail(`${where}.data must be an array`);
|
|
198
|
+
value.data.forEach((point, index) => {
|
|
199
|
+
if (!isObject(point))
|
|
200
|
+
fail(`${where}.data[${index}] must be an object`);
|
|
201
|
+
const isCategorical = typeof point.value === 'number' && typeof point.label === 'string';
|
|
202
|
+
const isXy = (typeof point.x === 'string' || typeof point.x === 'number') && typeof point.y === 'number';
|
|
203
|
+
if (!isCategorical && !isXy)
|
|
204
|
+
fail(`${where}.data[${index}] must be {label,value} or {x,y}`);
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
function validateLiveColumn(value, where) {
|
|
208
|
+
if (!isObject(value))
|
|
209
|
+
fail(`${where} must be an object`);
|
|
210
|
+
assertString(value.header, `${where}.header`);
|
|
211
|
+
if (value.format !== undefined &&
|
|
212
|
+
(typeof value.format !== 'string' || !COLUMN_FORMATS.has(value.format))) {
|
|
213
|
+
fail(`${where}.format is invalid`);
|
|
214
|
+
}
|
|
215
|
+
assertVisibility(value.visibility, where);
|
|
216
|
+
switch (value.source) {
|
|
217
|
+
case 'indexer':
|
|
218
|
+
if (typeof value.metric !== 'string' || !LIVE_METRICS.has(value.metric)) {
|
|
219
|
+
fail(`${where} has an invalid indexer metric "${String(value.metric)}"`);
|
|
220
|
+
}
|
|
221
|
+
break;
|
|
222
|
+
case 'hardcoded':
|
|
223
|
+
assertString(value.key, `${where}.key`);
|
|
224
|
+
break;
|
|
225
|
+
case 'static':
|
|
226
|
+
if (!Array.isArray(value.values) || !value.values.every(isPrimitiveCell)) {
|
|
227
|
+
fail(`${where}.values must be an array of strings/numbers`);
|
|
228
|
+
}
|
|
229
|
+
break;
|
|
230
|
+
default:
|
|
231
|
+
fail(`${where} has an invalid source "${String(value.source)}"`);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
function validateContentBlock(block, type, where) {
|
|
235
|
+
switch (type) {
|
|
236
|
+
case 'text':
|
|
237
|
+
assertString(block.body, `${where}.body`);
|
|
238
|
+
break;
|
|
239
|
+
case 'table': {
|
|
240
|
+
if (!Array.isArray(block.headers) || !block.headers.every((h) => typeof h === 'string')) {
|
|
241
|
+
fail(`${where}.headers must be an array of strings`);
|
|
242
|
+
}
|
|
243
|
+
if (!Array.isArray(block.rows) || !block.rows.every((row) => Array.isArray(row) && row.every(isPrimitiveCell))) {
|
|
244
|
+
fail(`${where}.rows must be an array of string/number arrays`);
|
|
245
|
+
}
|
|
246
|
+
if (block.columnVisibility !== undefined) {
|
|
247
|
+
if (!Array.isArray(block.columnVisibility))
|
|
248
|
+
fail(`${where}.columnVisibility must be an array`);
|
|
249
|
+
if (block.columnVisibility.length !== block.headers.length) {
|
|
250
|
+
fail(`${where}.columnVisibility length must match headers length`);
|
|
251
|
+
}
|
|
252
|
+
block.columnVisibility.forEach((v, index) => assertVisibility(v, `${where}.columnVisibility[${index}]`));
|
|
253
|
+
}
|
|
254
|
+
break;
|
|
255
|
+
}
|
|
256
|
+
case 'chart': {
|
|
257
|
+
if (typeof block.chartType !== 'string' || !CHART_TYPES.has(block.chartType)) {
|
|
258
|
+
fail(`${where}.chartType is invalid`);
|
|
259
|
+
}
|
|
260
|
+
const hasSeries = block.series !== undefined;
|
|
261
|
+
const hasDataRef = block.dataRef !== undefined;
|
|
262
|
+
if (hasSeries === hasDataRef)
|
|
263
|
+
fail(`${where} must set exactly one of \`series\` or \`dataRef\``);
|
|
264
|
+
if (hasSeries) {
|
|
265
|
+
if (!Array.isArray(block.series))
|
|
266
|
+
fail(`${where}.series must be an array`);
|
|
267
|
+
block.series.forEach((s, index) => validateChartSeries(s, `${where}.series[${index}]`));
|
|
268
|
+
}
|
|
269
|
+
if (hasDataRef && (typeof block.dataRef !== 'string' || !DATA_REFS.has(block.dataRef))) {
|
|
270
|
+
fail(`${where}.dataRef is invalid (unknown key "${String(block.dataRef)}")`);
|
|
271
|
+
}
|
|
272
|
+
if (isObject(block.xAxis) && block.xAxis.type !== undefined && !XAXIS_TYPES.has(block.xAxis.type)) {
|
|
273
|
+
fail(`${where}.xAxis.type is invalid`);
|
|
274
|
+
}
|
|
275
|
+
if (isObject(block.yAxis) &&
|
|
276
|
+
block.yAxis.format !== undefined &&
|
|
277
|
+
!AXIS_FORMATS.has(block.yAxis.format)) {
|
|
278
|
+
fail(`${where}.yAxis.format is invalid`);
|
|
279
|
+
}
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
case 'image':
|
|
283
|
+
validateFile(block.file, `${where}.file`);
|
|
284
|
+
break;
|
|
285
|
+
case 'kpiGroup': {
|
|
286
|
+
if (block.columns !== undefined && ![1, 2, 3, 4].includes(block.columns)) {
|
|
287
|
+
fail(`${where}.columns must be 1, 2, 3 or 4`);
|
|
288
|
+
}
|
|
289
|
+
if (!Array.isArray(block.items))
|
|
290
|
+
fail(`${where}.items must be an array`);
|
|
291
|
+
block.items.forEach((item, index) => {
|
|
292
|
+
if (!isObject(item))
|
|
293
|
+
fail(`${where}.items[${index}] must be an object`);
|
|
294
|
+
assertString(item.label, `${where}.items[${index}].label`);
|
|
295
|
+
assertString(item.value, `${where}.items[${index}].value`);
|
|
296
|
+
if (item.trend !== undefined && !KPI_TRENDS.has(item.trend)) {
|
|
297
|
+
fail(`${where}.items[${index}].trend is invalid`);
|
|
298
|
+
}
|
|
299
|
+
assertVisibility(item.visibility, `${where}.items[${index}]`);
|
|
300
|
+
});
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
case 'tabGroup': {
|
|
304
|
+
if (!Array.isArray(block.tabs))
|
|
305
|
+
fail(`${where}.tabs must be an array`);
|
|
306
|
+
block.tabs.forEach((tab, index) => {
|
|
307
|
+
if (!isObject(tab))
|
|
308
|
+
fail(`${where}.tabs[${index}] must be an object`);
|
|
309
|
+
assertString(tab.label, `${where}.tabs[${index}].label`);
|
|
310
|
+
if (!isObject(tab.block))
|
|
311
|
+
fail(`${where}.tabs[${index}].block must be an object`);
|
|
312
|
+
const tabBlock = tab.block;
|
|
313
|
+
if (typeof tabBlock.type !== 'string' || !TAB_BLOCK_TYPES.has(tabBlock.type)) {
|
|
314
|
+
fail(`${where}.tabs[${index}].block has an invalid type "${String(tabBlock.type)}"`);
|
|
315
|
+
}
|
|
316
|
+
assertString(tabBlock.id, `${where}.tabs[${index}].block.id`);
|
|
317
|
+
validateContentBlock(tabBlock, tabBlock.type, `${where}.tabs[${index}].block`);
|
|
318
|
+
});
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
case 'liveTable': {
|
|
322
|
+
if (typeof block.dataRef !== 'string' || !LIVE_DATASETS.has(block.dataRef)) {
|
|
323
|
+
fail(`${where}.dataRef is invalid (unknown dataset "${String(block.dataRef)}")`);
|
|
324
|
+
}
|
|
325
|
+
if (!Array.isArray(block.columns))
|
|
326
|
+
fail(`${where}.columns must be an array`);
|
|
327
|
+
block.columns.forEach((column, index) => validateLiveColumn(column, `${where}.columns[${index}]`));
|
|
328
|
+
break;
|
|
329
|
+
}
|
|
330
|
+
default:
|
|
331
|
+
fail(`${where} has an unknown block type "${type}"`);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
function validateLayoutItem(item, where) {
|
|
335
|
+
if (!isObject(item))
|
|
336
|
+
fail(`${where} must be an object`);
|
|
337
|
+
if (typeof item.type !== 'string')
|
|
338
|
+
fail(`${where} is missing a string \`type\``);
|
|
339
|
+
assertString(item.id, `${where}.id`);
|
|
340
|
+
assertVisibility(item.visibility, where);
|
|
341
|
+
if (item.type === 'section') {
|
|
342
|
+
if (typeof item.ref !== 'string' || !SECTION_REFS.has(item.ref)) {
|
|
343
|
+
fail(`${where} has an invalid section ref "${String(item.ref)}"`);
|
|
344
|
+
}
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
if (!CONTENT_BLOCK_TYPES.has(item.type)) {
|
|
348
|
+
fail(`${where} has an unknown block type "${item.type}"`);
|
|
349
|
+
}
|
|
350
|
+
validateContentBlock(item, item.type, where);
|
|
351
|
+
}
|
|
352
|
+
function validateFactsheet(factsheet) {
|
|
353
|
+
if (!isObject(factsheet))
|
|
354
|
+
fail('`pool.factsheet` must be an object');
|
|
355
|
+
if (!Array.isArray(factsheet.body))
|
|
356
|
+
fail('`pool.factsheet.body` must be an array');
|
|
357
|
+
factsheet.body.forEach((item, index) => validateLayoutItem(item, `pool.factsheet.body[${index}]`));
|
|
358
|
+
if (!Array.isArray(factsheet.keyFacts))
|
|
359
|
+
fail('`pool.factsheet.keyFacts` must be an array');
|
|
360
|
+
factsheet.keyFacts.forEach((item, index) => validateKeyFact(item, `pool.factsheet.keyFacts[${index}]`));
|
|
361
|
+
if (factsheet.sections !== undefined) {
|
|
362
|
+
if (!Array.isArray(factsheet.sections))
|
|
363
|
+
fail('`pool.factsheet.sections` must be an array');
|
|
364
|
+
factsheet.sections.forEach((item, index) => validateLayoutItem(item, `pool.factsheet.sections[${index}]`));
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Hand-rolled structural validator for v2 pool metadata, in the style of
|
|
369
|
+
* {@link parseMarketplaceCatalog}. Validates the discriminant (`version === 2`), `pool.name`, and
|
|
370
|
+
* the full `pool.factsheet` content model (the layout the SDK is responsible for). Engine fields
|
|
371
|
+
* (`shareClasses`, `workflowPolicies`, `holdings`, `addressLabels`, …) are passed through
|
|
372
|
+
* unchecked here — they are validated where they are consumed (e.g. workflows via
|
|
373
|
+
* {@link parseMarketplaceCatalog}). Throws `pool metadata v2: …` on the first malformed field;
|
|
374
|
+
* tolerates missing optionals (visibility defaults to `'public'` app-side). Returns the input
|
|
375
|
+
* narrowed to {@link PoolMetadataV2} on success.
|
|
376
|
+
*/
|
|
377
|
+
export function parsePoolMetadataV2(raw) {
|
|
378
|
+
if (!isObject(raw))
|
|
379
|
+
fail('expected a JSON object');
|
|
380
|
+
if (raw.version !== 2)
|
|
381
|
+
fail(`expected version 2, got ${String(raw.version)}`);
|
|
382
|
+
if (!isObject(raw.pool))
|
|
383
|
+
fail('`pool` must be an object');
|
|
384
|
+
assertString(raw.pool.name, '`pool.name`');
|
|
385
|
+
if (raw.pool.factsheet !== undefined)
|
|
386
|
+
validateFactsheet(raw.pool.factsheet);
|
|
387
|
+
return raw;
|
|
388
|
+
}
|
|
389
|
+
//# sourceMappingURL=poolMetadataMigration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poolMetadataMigration.js","sourceRoot":"","sources":["../../src/utils/poolMetadataMigration.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,gBAAgB,GAWjB,MAAM,0BAA0B,CAAA;AAEjC;;oGAEoG;AAEpG;;;;GAIG;AACH,MAAM,mBAAmB,GAAmC;IAC1D,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,QAAQ;CACpB,CAAA;AAED,SAAS,cAAc,CAAC,GAA+C;IACrE,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,GAAG,CAAA;IAC3B,OAAO,mBAAmB,CAAC,GAAoB,CAAC,IAAK,GAAe,CAAA;AACtE,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;AACtC,CAAC;AAED,8FAA8F;AAC9F,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACvC,OAAO,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;AACtE,CAAC;AAED,kGAAkG;AAClG,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAChE,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAA4B,EAAE,YAA4C;IAChG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IACjF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAEtD,MAAM,QAAQ,GAAc;QAC1B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE;QACvC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE;QACpE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;QACjC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE;KAClD,CAAA;IAED,MAAM,uBAAuB,GAAG,eAAe,EAAE,uBAAuB,CAAA;IACxE,IAAI,uBAAuB,IAAI,IAAI,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,GAAG,uBAAuB,OAAO,EAAE,CAAC,CAAA;IAC9F,CAAC;IACD,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,YAAY,GAAG,EAAE,CAAC,CAAA;IACtE,CAAC;IACD,MAAM,oBAAoB,GAAG,eAAe,EAAE,oBAAoB,CAAA;IAClE,IAAI,oBAAoB,IAAI,IAAI,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAA;IAC/F,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,MAAM,IAAI,GAAiB,EAAE,CAAA;IAC7B,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IAC1F,CAAC;IACD,CAAC;IAAA,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACzC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5F,CAAC,CAAC,CAAA;IACF,MAAM,kBAAkB,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CACnD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAC/E,CAAA;IACD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,kBAAkB;iBACrB,GAAG,CACF,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,mBAAmB,MAAM,CAAC,UAAW,CAAC,GAAG,GAAG,CAC5G;iBACA,IAAI,CAAC,IAAI,CAAC;SACd,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAA;IAExE,wEAAwE;IACxE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;AAC3B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAoB;IAC1D,IAAI,gBAAgB,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAA;IAE3C,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAA;IAChH,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAA;IACjD,iDAAiD;IACjD,OAAQ,QAAoC,CAAC,oBAAoB,CAAA;IACjE,OAAQ,QAAoC,CAAC,OAAO,CAAA;IACpD,OAAQ,QAAoC,CAAC,OAAO,CAAA;IAEpD,MAAM,oBAAoB,GAAmC,EAAE,CAAA;IAC/D,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9D,oBAAoB,CAAC,IAAiB,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAA;IAClG,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC;QACV,IAAI,EAAE;YACJ,GAAG,QAAQ;YACX,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;YACrE,WAAW,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;YACjF,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC;SAC9C;QACD,YAAY,EAAE,oBAAoB;QAClC,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,GAAG,CAAC,UAAU,KAAK,SAAS;YAC1B,CAAC,CAAC;gBACE,UAAU,EAAE;oBACV,sBAAsB,EAAE,UAAU,CAAC,sBAAsB;oBACzD,sBAAsB,EAAE,UAAU,CAAC,sBAAsB;iBAC1D;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAA;AACH,CAAC;AAED;;oGAEoG;AAEpG,uFAAuF;AACvF,oGAAoG;AACpG,mGAAmG;AACnG,iGAAiG;AACjG,+FAA+F;AAC/F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC7E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;AACxE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;AAC3E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC3D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAU,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC,CAAA;AAC/E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAa,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAC9E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAa,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAA;AACvG,MAAM,aAAa,GAAG,IAAI,GAAG,CAAc,CAAC,gBAAgB,CAAC,CAAC,CAAA;AAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;AACvF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;AAC7G,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;AACvE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;AAErD,SAAS,IAAI,CAAC,OAAe;IAC3B,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,KAAa;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,IAAI,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,KAAa;IACrD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAM;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAmB,CAAC,EAAE,CAAC;QACxE,IAAI,CAAC,GAAG,KAAK,4BAA4B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAA;AAC/D,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,KAAa;IACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,GAAG,KAAK,wBAAwB,CAAC,CAAA;IAC5D,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,CAAA;IACvC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,CAAA;AAC3C,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,KAAa;IACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IACxD,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAA;IAC3C,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAA;IAC1E,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK;QAAE,IAAI,CAAC,GAAG,KAAK,yBAAyB,CAAC,CAAA;IACrG,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,UAAU,CAAC,CAAA;IAChF,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,CAAA;IACvE,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc,EAAE,KAAa;IACxD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IACxD,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,CAAA;IACzC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAA;IAC1E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,GAAG,KAAK,wBAAwB,CAAC,CAAA;IACtE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,GAAG,KAAK,SAAS,KAAK,qBAAqB,CAAC,CAAA;QACvE,MAAM,aAAa,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAA;QACxF,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ,CAAA;QACxG,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,GAAG,KAAK,SAAS,KAAK,kCAAkC,CAAC,CAAA;IAC7F,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,KAAa;IACvD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IACxD,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC,CAAA;IAC7C,IACE,KAAK,CAAC,MAAM,KAAK,SAAS;QAC1B,CAAC,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAsB,CAAC,CAAC,EACvF,CAAC;QACD,IAAI,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IACpC,CAAC;IACD,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IACzC,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAoB,CAAC,EAAE,CAAC;gBACtF,IAAI,CAAC,GAAG,KAAK,mCAAmC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC1E,CAAC;YACD,MAAK;QACP,KAAK,WAAW;YACd,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,CAAA;YACvC,MAAK;QACP,KAAK,QAAQ;YACX,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;gBACzE,IAAI,CAAC,GAAG,KAAK,6CAA6C,CAAC,CAAA;YAC7D,CAAC;YACD,MAAK;QACP;YACE,IAAI,CAAC,GAAG,KAAK,2BAA2B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACpE,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,KAA8B,EAAE,IAAY,EAAE,KAAa;IACvF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,CAAA;YACzC,MAAK;QACP,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACxF,IAAI,CAAC,GAAG,KAAK,sCAAsC,CAAC,CAAA;YACtD,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;gBAC/G,IAAI,CAAC,GAAG,KAAK,gDAAgD,CAAC,CAAA;YAChE,CAAC;YACD,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC;oBAAE,IAAI,CAAC,GAAG,KAAK,oCAAoC,CAAC,CAAA;gBAC9F,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBAC3D,IAAI,CAAC,GAAG,KAAK,oDAAoD,CAAC,CAAA;gBACpE,CAAC;gBACD,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,KAAK,qBAAqB,KAAK,GAAG,CAAC,CAAC,CAAA;YAC1G,CAAC;YACD,MAAK;QACP,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,SAAsB,CAAC,EAAE,CAAC;gBAC1F,IAAI,CAAC,GAAG,KAAK,uBAAuB,CAAC,CAAA;YACvC,CAAC;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAA;YAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAA;YAC9C,IAAI,SAAS,KAAK,UAAU;gBAAE,IAAI,CAAC,GAAG,KAAK,oDAAoD,CAAC,CAAA;YAChG,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;oBAAE,IAAI,CAAC,GAAG,KAAK,0BAA0B,CAAC,CAAA;gBAC1E,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,GAAG,KAAK,WAAW,KAAK,GAAG,CAAC,CAAC,CAAA;YACzF,CAAC;YACD,IAAI,UAAU,IAAI,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAkB,CAAC,CAAC,EAAE,CAAC;gBAClG,IAAI,CAAC,GAAG,KAAK,qCAAqC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC9E,CAAC;YACD,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAc,CAAC,EAAE,CAAC;gBAC5G,IAAI,CAAC,GAAG,KAAK,wBAAwB,CAAC,CAAA;YACxC,CAAC;YACD,IACE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;gBACrB,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;gBAChC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAoB,CAAC,EACnD,CAAC;gBACD,IAAI,CAAC,GAAG,KAAK,0BAA0B,CAAC,CAAA;YAC1C,CAAC;YACD,MAAK;QACP,CAAC;QACD,KAAK,OAAO;YACV,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,CAAA;YACzC,MAAK;QACP,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAiB,CAAC,EAAE,CAAC;gBACnF,IAAI,CAAC,GAAG,KAAK,+BAA+B,CAAC,CAAA;YAC/C,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,GAAG,KAAK,yBAAyB,CAAC,CAAA;YACxE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,GAAG,KAAK,UAAU,KAAK,qBAAqB,CAAC,CAAA;gBACvE,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,UAAU,KAAK,SAAS,CAAC,CAAA;gBAC1D,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,UAAU,KAAK,SAAS,CAAC,CAAA;gBAC1D,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAe,CAAC,EAAE,CAAC;oBACtE,IAAI,CAAC,GAAG,KAAK,UAAU,KAAK,oBAAoB,CAAC,CAAA;gBACnD,CAAC;gBACD,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,UAAU,KAAK,GAAG,CAAC,CAAA;YAC/D,CAAC,CAAC,CAAA;YACF,MAAK;QACP,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,GAAG,KAAK,wBAAwB,CAAC,CAAA;YACtE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAAE,IAAI,CAAC,GAAG,KAAK,SAAS,KAAK,qBAAqB,CAAC,CAAA;gBACrE,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,SAAS,KAAK,SAAS,CAAC,CAAA;gBACxD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,IAAI,CAAC,GAAG,KAAK,SAAS,KAAK,2BAA2B,CAAC,CAAA;gBACjF,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAA;gBAC1B,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7E,IAAI,CAAC,GAAG,KAAK,SAAS,KAAK,gCAAgC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACtF,CAAC;gBACD,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,KAAK,SAAS,KAAK,YAAY,CAAC,CAAA;gBAC7D,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,KAAK,SAAS,KAAK,SAAS,CAAC,CAAA;YAChF,CAAC,CAAC,CAAA;YACF,MAAK;QACP,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,OAAsB,CAAC,EAAE,CAAC;gBAC1F,IAAI,CAAC,GAAG,KAAK,yCAAyC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAClF,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;gBAAE,IAAI,CAAC,GAAG,KAAK,2BAA2B,CAAC,CAAA;YAC5E,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,KAAK,YAAY,KAAK,GAAG,CAAC,CAAC,CAAA;YAClG,MAAK;QACP,CAAC;QACD;YACE,IAAI,CAAC,GAAG,KAAK,+BAA+B,IAAI,GAAG,CAAC,CAAA;IACxD,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAa,EAAE,KAAa;IACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IACvD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,IAAI,CAAC,GAAG,KAAK,+BAA+B,CAAC,CAAA;IAChF,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,KAAK,KAAK,CAAC,CAAA;IACpC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAExC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAiB,CAAC,EAAE,CAAC;YAC9E,IAAI,CAAC,GAAG,KAAK,gCAAgC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnE,CAAC;QACD,OAAM;IACR,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,GAAG,KAAK,+BAA+B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;IAC3D,CAAC;IACD,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAC9C,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAkB;IAC3C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,IAAI,CAAC,oCAAoC,CAAC,CAAA;IACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,wCAAwC,CAAC,CAAA;IAClF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,KAAK,GAAG,CAAC,CAAC,CAAA;IAClG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;QAAE,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAC1F,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,2BAA2B,KAAK,GAAG,CAAC,CAAC,CAAA;IACvG,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,4CAA4C,CAAC,CAAA;QAC1F,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,2BAA2B,KAAK,GAAG,CAAC,CAAC,CAAA;IAC5G,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,IAAI,CAAC,wBAAwB,CAAC,CAAA;IAClD,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC;QAAE,IAAI,CAAC,2BAA2B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC7E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,0BAA0B,CAAC,CAAA;IACzD,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;IAC1C,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC3E,OAAO,GAAqB,CAAA;AAC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poolMetadataMigration.test.d.ts","sourceRoot":"","sources":["../../src/utils/poolMetadataMigration.test.ts"],"names":[],"mappings":""}
|