pelagora 0.1.5
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 +40 -0
- package/LICENSE +663 -0
- package/README.md +139 -0
- package/dist/ai/product-lookup.d.ts +26 -0
- package/dist/ai/product-lookup.d.ts.map +1 -0
- package/dist/ai/product-lookup.js +153 -0
- package/dist/ai/product-lookup.js.map +1 -0
- package/dist/api/collections.d.ts +3 -0
- package/dist/api/collections.d.ts.map +1 -0
- package/dist/api/collections.js +69 -0
- package/dist/api/collections.js.map +1 -0
- package/dist/api/favorites.d.ts +3 -0
- package/dist/api/favorites.d.ts.map +1 -0
- package/dist/api/favorites.js +43 -0
- package/dist/api/favorites.js.map +1 -0
- package/dist/api/health.d.ts +12 -0
- package/dist/api/health.d.ts.map +1 -0
- package/dist/api/health.js +54 -0
- package/dist/api/health.js.map +1 -0
- package/dist/api/index.d.ts +3 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +56 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/items.d.ts +3 -0
- package/dist/api/items.d.ts.map +1 -0
- package/dist/api/items.js +170 -0
- package/dist/api/items.js.map +1 -0
- package/dist/api/media.d.ts +3 -0
- package/dist/api/media.d.ts.map +1 -0
- package/dist/api/media.js +241 -0
- package/dist/api/media.js.map +1 -0
- package/dist/api/negotiations.d.ts +3 -0
- package/dist/api/negotiations.d.ts.map +1 -0
- package/dist/api/negotiations.js +244 -0
- package/dist/api/negotiations.js.map +1 -0
- package/dist/api/offers.d.ts +3 -0
- package/dist/api/offers.d.ts.map +1 -0
- package/dist/api/offers.js +57 -0
- package/dist/api/offers.js.map +1 -0
- package/dist/api/refs.d.ts +3 -0
- package/dist/api/refs.d.ts.map +1 -0
- package/dist/api/refs.js +390 -0
- package/dist/api/refs.js.map +1 -0
- package/dist/api/scans.d.ts +3 -0
- package/dist/api/scans.d.ts.map +1 -0
- package/dist/api/scans.js +384 -0
- package/dist/api/scans.js.map +1 -0
- package/dist/api/settings.d.ts +3 -0
- package/dist/api/settings.d.ts.map +1 -0
- package/dist/api/settings.js +442 -0
- package/dist/api/settings.js.map +1 -0
- package/dist/db/index.d.ts +4 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +18 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/queries.d.ts +237 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +891 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/db/schema.d.ts +6 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +531 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/dht/discovery.d.ts +33 -0
- package/dist/dht/discovery.d.ts.map +1 -0
- package/dist/dht/discovery.js +281 -0
- package/dist/dht/discovery.js.map +1 -0
- package/dist/dht/index.d.ts +2 -0
- package/dist/dht/index.d.ts.map +1 -0
- package/dist/dht/index.js +6 -0
- package/dist/dht/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +215 -0
- package/dist/index.js.map +1 -0
- package/dist/ref-schemas.d.ts +59 -0
- package/dist/ref-schemas.d.ts.map +1 -0
- package/dist/ref-schemas.js +1038 -0
- package/dist/ref-schemas.js.map +1 -0
- package/dist/skills/export.d.ts +12 -0
- package/dist/skills/export.d.ts.map +1 -0
- package/dist/skills/export.js +54 -0
- package/dist/skills/export.js.map +1 -0
- package/dist/skills/index.d.ts +4 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +11 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/loader.d.ts +37 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +183 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/registry.d.ts +37 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +136 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/sync/index.d.ts +58 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +331 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/reffo-client.d.ts +144 -0
- package/dist/sync/reffo-client.d.ts.map +1 -0
- package/dist/sync/reffo-client.js +279 -0
- package/dist/sync/reffo-client.js.map +1 -0
- package/dist/taxonomy.d.ts +4 -0
- package/dist/taxonomy.d.ts.map +1 -0
- package/dist/taxonomy.js +141 -0
- package/dist/taxonomy.js.map +1 -0
- package/dist/types/index.d.ts +198 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +25 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui.d.ts +2 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +6786 -0
- package/dist/ui.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +14 -0
- package/dist/version.js.map +1 -0
- package/footer-brand.png +0 -0
- package/header-brand.png +0 -0
- package/package.json +61 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* HTTP client for communicating with the Reffo.ai sync API.
|
|
4
|
+
* Uses Node 20 built-in fetch.
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.ReffoClient = void 0;
|
|
11
|
+
exports.searchReffo = searchReffo;
|
|
12
|
+
const fs_1 = __importDefault(require("fs"));
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
const pim_protocol_1 = require("@pelagora/pim-protocol");
|
|
15
|
+
const DEFAULT_BASE_URL = 'https://reffo.ai';
|
|
16
|
+
async function searchReffo(params, baseUrl) {
|
|
17
|
+
const base = (baseUrl || DEFAULT_BASE_URL).replace(/\/$/, '');
|
|
18
|
+
const qs = new URLSearchParams();
|
|
19
|
+
if (params.search)
|
|
20
|
+
qs.set('q', params.search);
|
|
21
|
+
if (params.category)
|
|
22
|
+
qs.set('category', params.category);
|
|
23
|
+
if (params.lat != null)
|
|
24
|
+
qs.set('lat', String(params.lat));
|
|
25
|
+
if (params.lng != null)
|
|
26
|
+
qs.set('lng', String(params.lng));
|
|
27
|
+
if (params.radiusMiles != null)
|
|
28
|
+
qs.set('radius', String(params.radiusMiles));
|
|
29
|
+
if (params.sort)
|
|
30
|
+
qs.set('sort', params.sort);
|
|
31
|
+
if (params.limit != null)
|
|
32
|
+
qs.set('limit', String(params.limit));
|
|
33
|
+
if (params.offset != null)
|
|
34
|
+
qs.set('offset', String(params.offset));
|
|
35
|
+
const res = await fetch(`${base}/api/search?${qs.toString()}`);
|
|
36
|
+
if (!res.ok) {
|
|
37
|
+
return { results: [], total: 0 };
|
|
38
|
+
}
|
|
39
|
+
const data = await res.json();
|
|
40
|
+
return data;
|
|
41
|
+
}
|
|
42
|
+
class ReffoClient {
|
|
43
|
+
apiKey;
|
|
44
|
+
baseUrl;
|
|
45
|
+
constructor(apiKey, baseUrl) {
|
|
46
|
+
this.apiKey = apiKey;
|
|
47
|
+
this.baseUrl = (baseUrl || DEFAULT_BASE_URL).replace(/\/$/, '');
|
|
48
|
+
}
|
|
49
|
+
async request(endpoint, options = {}) {
|
|
50
|
+
const url = `${this.baseUrl}/api/sync${endpoint}`;
|
|
51
|
+
const res = await fetch(url, {
|
|
52
|
+
...options,
|
|
53
|
+
headers: {
|
|
54
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
55
|
+
'Content-Type': 'application/json',
|
|
56
|
+
...(options.headers || {}),
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
return res;
|
|
60
|
+
}
|
|
61
|
+
async testConnection() {
|
|
62
|
+
try {
|
|
63
|
+
const res = await this.request('/beacon', { method: 'GET' });
|
|
64
|
+
if (res.ok)
|
|
65
|
+
return { ok: true };
|
|
66
|
+
const data = await res.json();
|
|
67
|
+
return { ok: false, error: data.error || `HTTP ${res.status}` };
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
return { ok: false, error: err.message };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async registerBeacon(beaconId, name, version, url) {
|
|
74
|
+
try {
|
|
75
|
+
const res = await this.request('/beacon', {
|
|
76
|
+
method: 'POST',
|
|
77
|
+
body: JSON.stringify({ beacon_id: beaconId, name, version, url }),
|
|
78
|
+
});
|
|
79
|
+
const data = await res.json();
|
|
80
|
+
if (!res.ok)
|
|
81
|
+
return { ok: false, error: data.error || `HTTP ${res.status}` };
|
|
82
|
+
return { ok: true, data };
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
return { ok: false, error: err.message };
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async pushItem(beaconId, ref, offers) {
|
|
89
|
+
try {
|
|
90
|
+
const activeOffer = offers.find(o => o.status === 'active');
|
|
91
|
+
const blurred = (ref.locationLat != null && ref.locationLng != null)
|
|
92
|
+
? (0, pim_protocol_1.blurLocation)(ref.locationLat, ref.locationLng) : null;
|
|
93
|
+
const res = await this.request('/refs', {
|
|
94
|
+
method: 'POST',
|
|
95
|
+
body: JSON.stringify({
|
|
96
|
+
localId: ref.id,
|
|
97
|
+
beaconId,
|
|
98
|
+
name: ref.name,
|
|
99
|
+
description: ref.description,
|
|
100
|
+
category: ref.category,
|
|
101
|
+
subcategory: ref.subcategory,
|
|
102
|
+
listingStatus: ref.listingStatus,
|
|
103
|
+
quantity: ref.quantity,
|
|
104
|
+
price: activeOffer?.price,
|
|
105
|
+
priceCurrency: activeOffer?.priceCurrency || 'USD',
|
|
106
|
+
locationLat: blurred?.lat,
|
|
107
|
+
locationLng: blurred?.lng,
|
|
108
|
+
locationCity: ref.locationCity,
|
|
109
|
+
locationState: ref.locationState,
|
|
110
|
+
locationZip: ref.locationZip,
|
|
111
|
+
locationCountry: ref.locationCountry,
|
|
112
|
+
sellingScope: ref.sellingScope,
|
|
113
|
+
sellingRadiusMiles: ref.sellingRadiusMiles,
|
|
114
|
+
rentalTerms: ref.rentalTerms,
|
|
115
|
+
rentalDeposit: ref.rentalDeposit,
|
|
116
|
+
rentalDuration: ref.rentalDuration,
|
|
117
|
+
rentalDurationUnit: ref.rentalDurationUnit,
|
|
118
|
+
}),
|
|
119
|
+
});
|
|
120
|
+
const data = await res.json();
|
|
121
|
+
if (!res.ok)
|
|
122
|
+
return { ok: false, error: data.error || `HTTP ${res.status}` };
|
|
123
|
+
return { ok: true, refId: data.id || ref.id };
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
return { ok: false, error: err.message };
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async pushMedia(refId, media) {
|
|
130
|
+
try {
|
|
131
|
+
const fullPath = path_1.default.join(process.cwd(), media.filePath);
|
|
132
|
+
if (!fs_1.default.existsSync(fullPath)) {
|
|
133
|
+
return { ok: false, error: `File not found: ${media.filePath}` };
|
|
134
|
+
}
|
|
135
|
+
const fileBuffer = fs_1.default.readFileSync(fullPath);
|
|
136
|
+
const blob = new Blob([fileBuffer], { type: media.mimeType });
|
|
137
|
+
const formData = new FormData();
|
|
138
|
+
formData.append('file', blob, path_1.default.basename(media.filePath));
|
|
139
|
+
formData.append('mediaType', media.mediaType);
|
|
140
|
+
formData.append('sort_order', String(media.sortOrder));
|
|
141
|
+
const url = `${this.baseUrl}/api/sync/refs/${refId}/media`;
|
|
142
|
+
const res = await fetch(url, {
|
|
143
|
+
method: 'POST',
|
|
144
|
+
headers: {
|
|
145
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
146
|
+
},
|
|
147
|
+
body: formData,
|
|
148
|
+
});
|
|
149
|
+
if (!res.ok) {
|
|
150
|
+
const data = await res.json();
|
|
151
|
+
return { ok: false, error: data.error || `HTTP ${res.status}` };
|
|
152
|
+
}
|
|
153
|
+
return { ok: true };
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
return { ok: false, error: err.message };
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
async removeItem(localId, beaconId) {
|
|
160
|
+
try {
|
|
161
|
+
const res = await this.request('/refs', {
|
|
162
|
+
method: 'DELETE',
|
|
163
|
+
body: JSON.stringify({ localId, beaconId }),
|
|
164
|
+
});
|
|
165
|
+
if (!res.ok) {
|
|
166
|
+
const data = await res.json();
|
|
167
|
+
return { ok: false, error: data.error || `HTTP ${res.status}` };
|
|
168
|
+
}
|
|
169
|
+
return { ok: true };
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
return { ok: false, error: err.message };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async fetchRefs(since) {
|
|
176
|
+
try {
|
|
177
|
+
const params = since ? `?since=${encodeURIComponent(since)}` : '';
|
|
178
|
+
const res = await this.request(`/refs/pull${params}`, { method: 'GET' });
|
|
179
|
+
const data = await res.json();
|
|
180
|
+
if (!res.ok)
|
|
181
|
+
return { ok: false, error: data.error || `HTTP ${res.status}` };
|
|
182
|
+
return { ok: true, refs: data.refs || [] };
|
|
183
|
+
}
|
|
184
|
+
catch (err) {
|
|
185
|
+
return { ok: false, error: err.message };
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async fetchOffers(since) {
|
|
189
|
+
try {
|
|
190
|
+
const params = since ? `?since=${encodeURIComponent(since)}` : '';
|
|
191
|
+
const res = await this.request(`/offers${params}`, { method: 'GET' });
|
|
192
|
+
const data = await res.json();
|
|
193
|
+
if (!res.ok)
|
|
194
|
+
return { ok: false, error: data.error || `HTTP ${res.status}` };
|
|
195
|
+
return { ok: true, offers: data.offers || [] };
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
return { ok: false, error: err.message };
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
async pushOfferResponse(offerId, status, counterAmount, responseMessage) {
|
|
202
|
+
try {
|
|
203
|
+
const body = { offerId, status };
|
|
204
|
+
if (counterAmount != null)
|
|
205
|
+
body.counterAmount = counterAmount;
|
|
206
|
+
if (responseMessage)
|
|
207
|
+
body.responseMessage = responseMessage;
|
|
208
|
+
const res = await this.request('/offer-responses', {
|
|
209
|
+
method: 'POST',
|
|
210
|
+
body: JSON.stringify(body),
|
|
211
|
+
});
|
|
212
|
+
if (!res.ok) {
|
|
213
|
+
const data = await res.json();
|
|
214
|
+
return { ok: false, error: data.error || `HTTP ${res.status}` };
|
|
215
|
+
}
|
|
216
|
+
return { ok: true };
|
|
217
|
+
}
|
|
218
|
+
catch (err) {
|
|
219
|
+
return { ok: false, error: err.message };
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
async scanImage(imageBase64, mediaType, collectionId) {
|
|
223
|
+
try {
|
|
224
|
+
const url = `${this.baseUrl}/api/scan`;
|
|
225
|
+
// Build form data with base64 image converted to a blob
|
|
226
|
+
const buffer = Buffer.from(imageBase64, 'base64');
|
|
227
|
+
const blob = new Blob([buffer], { type: mediaType });
|
|
228
|
+
const formData = new FormData();
|
|
229
|
+
formData.append('file', blob, `scan.${mediaType.split('/')[1] || 'jpg'}`);
|
|
230
|
+
if (collectionId)
|
|
231
|
+
formData.append('collection_id', collectionId);
|
|
232
|
+
const res = await fetch(url, {
|
|
233
|
+
method: 'POST',
|
|
234
|
+
headers: {
|
|
235
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
236
|
+
},
|
|
237
|
+
body: formData,
|
|
238
|
+
});
|
|
239
|
+
const data = await res.json();
|
|
240
|
+
if (!res.ok) {
|
|
241
|
+
return {
|
|
242
|
+
ok: false,
|
|
243
|
+
error: data.error || `HTTP ${res.status}`,
|
|
244
|
+
status: res.status,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
return {
|
|
248
|
+
ok: true,
|
|
249
|
+
scanId: data.scan_id,
|
|
250
|
+
items: data.items,
|
|
251
|
+
usage: data.usage,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
catch (err) {
|
|
255
|
+
return { ok: false, error: err.message };
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
async heartbeat(beaconId) {
|
|
259
|
+
try {
|
|
260
|
+
const res = await this.request('/heartbeat', {
|
|
261
|
+
method: 'POST',
|
|
262
|
+
body: JSON.stringify({ beaconId }),
|
|
263
|
+
});
|
|
264
|
+
const data = await res.json();
|
|
265
|
+
if (!res.ok) {
|
|
266
|
+
return { ok: false, error: data.error || `HTTP ${res.status}` };
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
ok: true,
|
|
270
|
+
latestVersion: data.latest_version || undefined,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
catch (err) {
|
|
274
|
+
return { ok: false, error: err.message };
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
exports.ReffoClient = ReffoClient;
|
|
279
|
+
//# sourceMappingURL=reffo-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reffo-client.js","sourceRoot":"","sources":["../../src/sync/reffo-client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAsCH,kCAqBC;AAzDD,4CAAoB;AACpB,gDAAwB;AAExB,yDAAsD;AAEtD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AA+BrC,KAAK,UAAU,WAAW,CAC/B,MAAyB,EACzB,OAAgB;IAEhB,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,IAAI,MAAM,CAAC,MAAM;QAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,QAAQ;QAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7E,IAAI,MAAM,CAAC,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACnC,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAqD,CAAC;IACjF,OAAO,IAAI,CAAC;AACd,CAAC;AAyCD,MAAa,WAAW;IACd,MAAM,CAAS;IACf,OAAO,CAAS;IAExB,YAAY,MAAc,EAAE,OAAgB;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,UAAuB,EAAE;QAC/D,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,YAAY,QAAQ,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;gBACxC,cAAc,EAAE,kBAAkB;gBAClC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;aAC3B;SACF,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,IAAI,GAAG,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;YACzD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,IAAY,EAAE,OAAe,EAAE,GAAY;QAChF,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;gBACxC,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;aAClE,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YACzF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,GAAQ,EACR,MAAe;QAEf,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,IAAI,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC;gBAClE,CAAC,CAAC,IAAA,2BAAY,EAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBACtC,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,OAAO,EAAE,GAAG,CAAC,EAAE;oBACf,QAAQ;oBACR,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;oBAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,KAAK,EAAE,WAAW,EAAE,KAAK;oBACzB,aAAa,EAAE,WAAW,EAAE,aAAa,IAAI,KAAK;oBAClD,WAAW,EAAE,OAAO,EAAE,GAAG;oBACzB,WAAW,EAAE,OAAO,EAAE,GAAG;oBACzB,YAAY,EAAE,GAAG,CAAC,YAAY;oBAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;oBAChC,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,eAAe,EAAE,GAAG,CAAC,eAAe;oBACpC,YAAY,EAAE,GAAG,CAAC,YAAY;oBAC9B,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;oBAC1C,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;oBAChC,cAAc,EAAE,GAAG,CAAC,cAAc;oBAClC,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;iBAC3C,CAAC;aACH,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YACzF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAG,IAAI,CAAC,EAAa,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CACb,KAAa,EACb,KAAe;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC1D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YACnE,CAAC;YAED,MAAM,UAAU,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE9D,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,cAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7D,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC9C,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAEvD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,kBAAkB,KAAK,QAAQ,CAAC;YAC3D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC3B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;iBACzC;gBACD,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;gBACzD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9E,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,QAAgB;QAChD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBACtC,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;aAC5C,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;gBACzD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9E,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAc;QAC5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACzE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YACzF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAG,IAAI,CAAC,IAAoB,IAAI,EAAE,EAAE,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAc;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YACzF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAG,IAAI,CAAC,MAAwB,IAAI,EAAE,EAAE,CAAC;QACpE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,OAAe,EACf,MAAc,EACd,aAAsB,EACtB,eAAwB;QAExB,IAAI,CAAC;YACH,MAAM,IAAI,GAA4B,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC1D,IAAI,aAAa,IAAI,IAAI;gBAAE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YAC9D,IAAI,eAAe;gBAAE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;YAE5D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;gBACjD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;gBACzD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9E,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CACb,WAAmB,EACnB,SAAiB,EACjB,YAAqB;QAErB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,WAAW,CAAC;YAEvC,wDAAwD;YACxD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAErD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;YAC1E,IAAI,YAAY;gBAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;YAEjE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC3B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;iBACzC;gBACD,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;YAEzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE;oBACrD,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,IAAI,CAAC,OAAiB;gBAC9B,KAAK,EAAE,IAAI,CAAC,KAAuC;gBACnD,KAAK,EAAE,IAAI,CAAC,KAAgC;aAC7C,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;gBAC3C,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;aACnC,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9E,CAAC;YACD,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,aAAa,EAAG,IAAI,CAAC,cAAyB,IAAI,SAAS;aAC5D,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;CACF;AAjQD,kCAiQC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taxonomy.d.ts","sourceRoot":"","sources":["../src/taxonomy.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CA8H7C,CAAC;AAEF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAGjF"}
|
package/dist/taxonomy.js
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TAXONOMY = void 0;
|
|
4
|
+
exports.isValidCategory = isValidCategory;
|
|
5
|
+
exports.isValidSubcategory = isValidSubcategory;
|
|
6
|
+
exports.TAXONOMY = {
|
|
7
|
+
'Electronics': [
|
|
8
|
+
'Phones & Tablets',
|
|
9
|
+
'Computers & Laptops',
|
|
10
|
+
'Audio & Headphones',
|
|
11
|
+
'Cameras & Photography',
|
|
12
|
+
'TV & Video',
|
|
13
|
+
'Gaming',
|
|
14
|
+
'Components & Parts',
|
|
15
|
+
'Accessories',
|
|
16
|
+
],
|
|
17
|
+
'Music': [
|
|
18
|
+
'Guitars',
|
|
19
|
+
'Bass',
|
|
20
|
+
'Drums & Percussion',
|
|
21
|
+
'Keyboards & Pianos',
|
|
22
|
+
'Amplifiers',
|
|
23
|
+
'Effects & Pedals',
|
|
24
|
+
'Pro Audio',
|
|
25
|
+
'Accessories',
|
|
26
|
+
],
|
|
27
|
+
'Home & Garden': [
|
|
28
|
+
'Furniture',
|
|
29
|
+
'Kitchen & Dining',
|
|
30
|
+
'Tools & Hardware',
|
|
31
|
+
'Appliances',
|
|
32
|
+
'Outdoor & Garden',
|
|
33
|
+
'Lighting',
|
|
34
|
+
'Decor',
|
|
35
|
+
'Storage & Organization',
|
|
36
|
+
],
|
|
37
|
+
'Clothing & Accessories': [
|
|
38
|
+
'Mens',
|
|
39
|
+
'Womens',
|
|
40
|
+
'Kids',
|
|
41
|
+
'Shoes',
|
|
42
|
+
'Bags & Wallets',
|
|
43
|
+
'Activewear',
|
|
44
|
+
'Vintage',
|
|
45
|
+
],
|
|
46
|
+
'Jewelry & Watches': [
|
|
47
|
+
'Fine Jewelry',
|
|
48
|
+
'Fashion Jewelry',
|
|
49
|
+
'Watches',
|
|
50
|
+
'Loose Stones & Beads',
|
|
51
|
+
],
|
|
52
|
+
'Sports': [
|
|
53
|
+
'Cycling',
|
|
54
|
+
'Fitness & Gym',
|
|
55
|
+
'Water Sports',
|
|
56
|
+
'Winter Sports',
|
|
57
|
+
'Team Sports',
|
|
58
|
+
'Outdoor & Camping',
|
|
59
|
+
'Running',
|
|
60
|
+
'Racquet Sports',
|
|
61
|
+
],
|
|
62
|
+
'Books & Media': [
|
|
63
|
+
'Books',
|
|
64
|
+
'Vinyl & Records',
|
|
65
|
+
'CDs & DVDs',
|
|
66
|
+
'Video Games',
|
|
67
|
+
'Magazines',
|
|
68
|
+
'Textbooks',
|
|
69
|
+
'Comics & Graphic Novels',
|
|
70
|
+
'Audiobooks',
|
|
71
|
+
],
|
|
72
|
+
'Vehicles': [
|
|
73
|
+
'Cars',
|
|
74
|
+
'Motorcycles',
|
|
75
|
+
'Bicycles',
|
|
76
|
+
'Trucks & Vans',
|
|
77
|
+
'Boats',
|
|
78
|
+
'Parts & Accessories',
|
|
79
|
+
'Trailers',
|
|
80
|
+
'Electric Vehicles',
|
|
81
|
+
],
|
|
82
|
+
'Real Estate': [
|
|
83
|
+
'Apartment',
|
|
84
|
+
'Condo',
|
|
85
|
+
'Townhome',
|
|
86
|
+
'Manufactured',
|
|
87
|
+
'Single Family',
|
|
88
|
+
'Multi-Family',
|
|
89
|
+
],
|
|
90
|
+
'Collectibles': [
|
|
91
|
+
'Antiques',
|
|
92
|
+
'Art',
|
|
93
|
+
'Coins & Currency',
|
|
94
|
+
'Trading Cards',
|
|
95
|
+
'Memorabilia',
|
|
96
|
+
'Stamps',
|
|
97
|
+
'Vintage Electronics',
|
|
98
|
+
],
|
|
99
|
+
'Health & Beauty': [
|
|
100
|
+
'Skincare',
|
|
101
|
+
'Makeup',
|
|
102
|
+
'Hair Care',
|
|
103
|
+
'Fragrances',
|
|
104
|
+
'Wellness & Supplements',
|
|
105
|
+
],
|
|
106
|
+
'Toys & Hobbies': [
|
|
107
|
+
'Action Figures & Dolls',
|
|
108
|
+
'Building Sets',
|
|
109
|
+
'Board Games & Puzzles',
|
|
110
|
+
'RC & Models',
|
|
111
|
+
'Craft Supplies',
|
|
112
|
+
],
|
|
113
|
+
'Baby & Kids': [
|
|
114
|
+
'Strollers & Car Seats',
|
|
115
|
+
'Clothing',
|
|
116
|
+
'Toys',
|
|
117
|
+
'Furniture & Gear',
|
|
118
|
+
'Feeding & Nursing',
|
|
119
|
+
],
|
|
120
|
+
'Pet Supplies': [
|
|
121
|
+
'Dogs',
|
|
122
|
+
'Cats',
|
|
123
|
+
'Fish & Aquariums',
|
|
124
|
+
'Small Animals & Birds',
|
|
125
|
+
],
|
|
126
|
+
'Other': [
|
|
127
|
+
'General',
|
|
128
|
+
'Services',
|
|
129
|
+
'Free Stuff',
|
|
130
|
+
'Wanted',
|
|
131
|
+
],
|
|
132
|
+
};
|
|
133
|
+
function isValidCategory(category) {
|
|
134
|
+
return category in exports.TAXONOMY;
|
|
135
|
+
}
|
|
136
|
+
function isValidSubcategory(category, subcategory) {
|
|
137
|
+
if (!isValidCategory(category))
|
|
138
|
+
return false;
|
|
139
|
+
return exports.TAXONOMY[category].includes(subcategory);
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=taxonomy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../src/taxonomy.ts"],"names":[],"mappings":";;;AAgIA,0CAEC;AAED,gDAGC;AAvIY,QAAA,QAAQ,GAA6B;IAChD,aAAa,EAAE;QACb,kBAAkB;QAClB,qBAAqB;QACrB,oBAAoB;QACpB,uBAAuB;QACvB,YAAY;QACZ,QAAQ;QACR,oBAAoB;QACpB,aAAa;KACd;IACD,OAAO,EAAE;QACP,SAAS;QACT,MAAM;QACN,oBAAoB;QACpB,oBAAoB;QACpB,YAAY;QACZ,kBAAkB;QAClB,WAAW;QACX,aAAa;KACd;IACD,eAAe,EAAE;QACf,WAAW;QACX,kBAAkB;QAClB,kBAAkB;QAClB,YAAY;QACZ,kBAAkB;QAClB,UAAU;QACV,OAAO;QACP,wBAAwB;KACzB;IACD,wBAAwB,EAAE;QACxB,MAAM;QACN,QAAQ;QACR,MAAM;QACN,OAAO;QACP,gBAAgB;QAChB,YAAY;QACZ,SAAS;KACV;IACD,mBAAmB,EAAE;QACnB,cAAc;QACd,iBAAiB;QACjB,SAAS;QACT,sBAAsB;KACvB;IACD,QAAQ,EAAE;QACR,SAAS;QACT,eAAe;QACf,cAAc;QACd,eAAe;QACf,aAAa;QACb,mBAAmB;QACnB,SAAS;QACT,gBAAgB;KACjB;IACD,eAAe,EAAE;QACf,OAAO;QACP,iBAAiB;QACjB,YAAY;QACZ,aAAa;QACb,WAAW;QACX,WAAW;QACX,yBAAyB;QACzB,YAAY;KACb;IACD,UAAU,EAAE;QACV,MAAM;QACN,aAAa;QACb,UAAU;QACV,eAAe;QACf,OAAO;QACP,qBAAqB;QACrB,UAAU;QACV,mBAAmB;KACpB;IACD,aAAa,EAAE;QACb,WAAW;QACX,OAAO;QACP,UAAU;QACV,cAAc;QACd,eAAe;QACf,cAAc;KACf;IACD,cAAc,EAAE;QACd,UAAU;QACV,KAAK;QACL,kBAAkB;QAClB,eAAe;QACf,aAAa;QACb,QAAQ;QACR,qBAAqB;KACtB;IACD,iBAAiB,EAAE;QACjB,UAAU;QACV,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,wBAAwB;KACzB;IACD,gBAAgB,EAAE;QAChB,wBAAwB;QACxB,eAAe;QACf,uBAAuB;QACvB,aAAa;QACb,gBAAgB;KACjB;IACD,aAAa,EAAE;QACb,uBAAuB;QACvB,UAAU;QACV,MAAM;QACN,kBAAkB;QAClB,mBAAmB;KACpB;IACD,cAAc,EAAE;QACd,MAAM;QACN,MAAM;QACN,kBAAkB;QAClB,uBAAuB;KACxB;IACD,OAAO,EAAE;QACP,SAAS;QACT,UAAU;QACV,YAAY;QACZ,QAAQ;KACT;CACF,CAAC;AAEF,SAAgB,eAAe,CAAC,QAAgB;IAC9C,OAAO,QAAQ,IAAI,gBAAQ,CAAC;AAC9B,CAAC;AAED,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,WAAmB;IACtE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,OAAO,gBAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
export type ListingStatus = 'private' | 'for_sale' | 'willing_to_sell' | 'for_rent' | 'archived_sold' | 'archived_deleted';
|
|
2
|
+
export type RentalDurationUnit = 'hours' | 'days' | 'weeks' | 'months';
|
|
3
|
+
export type SellingScope = 'global' | 'national' | 'range';
|
|
4
|
+
export interface Ref {
|
|
5
|
+
id: string;
|
|
6
|
+
/** Schema.org: name */
|
|
7
|
+
name: string;
|
|
8
|
+
/** Schema.org: description */
|
|
9
|
+
description: string;
|
|
10
|
+
/** Schema.org: category */
|
|
11
|
+
category: string;
|
|
12
|
+
/** Reffo: subcategory within category */
|
|
13
|
+
subcategory: string;
|
|
14
|
+
/** Schema.org: image (URL) */
|
|
15
|
+
image?: string;
|
|
16
|
+
/** Schema.org: sku */
|
|
17
|
+
sku?: string;
|
|
18
|
+
/** Reffo: listing visibility status */
|
|
19
|
+
listingStatus: ListingStatus;
|
|
20
|
+
/** Reffo: quantity available */
|
|
21
|
+
quantity: number;
|
|
22
|
+
/** Reffo: whether this ref is synced to reffo.ai */
|
|
23
|
+
reffoSynced: boolean;
|
|
24
|
+
/** Reffo: the ref ID on reffo.ai (if synced) */
|
|
25
|
+
reffoRefId?: string;
|
|
26
|
+
/** Location: latitude */
|
|
27
|
+
locationLat?: number;
|
|
28
|
+
/** Location: longitude */
|
|
29
|
+
locationLng?: number;
|
|
30
|
+
/** Location: street address (stored locally only, never shared) */
|
|
31
|
+
locationAddress?: string;
|
|
32
|
+
/** Location: city */
|
|
33
|
+
locationCity?: string;
|
|
34
|
+
/** Location: state/province */
|
|
35
|
+
locationState?: string;
|
|
36
|
+
/** Location: zip/postal code */
|
|
37
|
+
locationZip?: string;
|
|
38
|
+
/** Location: country code */
|
|
39
|
+
locationCountry?: string;
|
|
40
|
+
/** Selling scope */
|
|
41
|
+
sellingScope?: SellingScope;
|
|
42
|
+
/** Selling radius in miles (when scope = 'range') */
|
|
43
|
+
sellingRadiusMiles?: number;
|
|
44
|
+
/** Category-specific attributes (JSON) */
|
|
45
|
+
attributes?: Record<string, unknown>;
|
|
46
|
+
/** Category-appropriate condition */
|
|
47
|
+
condition?: string;
|
|
48
|
+
/** Rental: terms and conditions */
|
|
49
|
+
rentalTerms?: string;
|
|
50
|
+
/** Rental: deposit amount */
|
|
51
|
+
rentalDeposit?: number;
|
|
52
|
+
/** Rental: duration value */
|
|
53
|
+
rentalDuration?: number;
|
|
54
|
+
/** Rental: duration unit */
|
|
55
|
+
rentalDurationUnit?: RentalDurationUnit;
|
|
56
|
+
/** Purchase: date of purchase (ISO date) */
|
|
57
|
+
purchaseDate?: string;
|
|
58
|
+
/** Purchase: price paid */
|
|
59
|
+
purchasePrice?: number;
|
|
60
|
+
/** Reffo: beacon public key that owns this ref */
|
|
61
|
+
beaconId: string;
|
|
62
|
+
/** Schema.org: dateCreated */
|
|
63
|
+
createdAt: string;
|
|
64
|
+
/** Schema.org: dateModified */
|
|
65
|
+
updatedAt: string;
|
|
66
|
+
}
|
|
67
|
+
export type RefCreate = Omit<Ref, 'id' | 'beaconId' | 'createdAt' | 'updatedAt' | 'listingStatus' | 'quantity' | 'reffoSynced' | 'reffoRefId'> & {
|
|
68
|
+
listingStatus?: ListingStatus;
|
|
69
|
+
quantity?: number;
|
|
70
|
+
};
|
|
71
|
+
export type RefUpdate = Partial<RefCreate>;
|
|
72
|
+
export type OfferStatus = 'active' | 'sold' | 'withdrawn';
|
|
73
|
+
export interface Offer {
|
|
74
|
+
id: string;
|
|
75
|
+
/** The ref being offered */
|
|
76
|
+
refId: string;
|
|
77
|
+
/** Schema.org: price */
|
|
78
|
+
price: number;
|
|
79
|
+
/** Schema.org: priceCurrency (ISO 4217) */
|
|
80
|
+
priceCurrency: string;
|
|
81
|
+
/** Schema.org: availability */
|
|
82
|
+
status: OfferStatus;
|
|
83
|
+
/** Schema.org: seller (beacon public key) */
|
|
84
|
+
sellerId: string;
|
|
85
|
+
/** Schema.org: availableAtOrFrom */
|
|
86
|
+
location?: string;
|
|
87
|
+
createdAt: string;
|
|
88
|
+
updatedAt: string;
|
|
89
|
+
}
|
|
90
|
+
export type OfferCreate = Omit<Offer, 'id' | 'sellerId' | 'createdAt' | 'updatedAt' | 'status'> & {
|
|
91
|
+
status?: OfferStatus;
|
|
92
|
+
};
|
|
93
|
+
export type OfferUpdate = Partial<Omit<OfferCreate, 'refId'>>;
|
|
94
|
+
export interface BeaconSettings {
|
|
95
|
+
id: string;
|
|
96
|
+
locationLat?: number;
|
|
97
|
+
locationLng?: number;
|
|
98
|
+
locationAddress?: string;
|
|
99
|
+
locationCity?: string;
|
|
100
|
+
locationState?: string;
|
|
101
|
+
locationZip?: string;
|
|
102
|
+
locationCountry?: string;
|
|
103
|
+
defaultSellingScope: SellingScope;
|
|
104
|
+
defaultSellingRadiusMiles: number;
|
|
105
|
+
}
|
|
106
|
+
export interface BeaconInfo {
|
|
107
|
+
id: string;
|
|
108
|
+
version: string;
|
|
109
|
+
refCount: number;
|
|
110
|
+
offerCount: number;
|
|
111
|
+
uptime: number;
|
|
112
|
+
dht: {
|
|
113
|
+
connected: boolean;
|
|
114
|
+
peers: number;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
export type MediaType = 'photo' | 'video';
|
|
118
|
+
export interface RefMedia {
|
|
119
|
+
id: string;
|
|
120
|
+
refId: string;
|
|
121
|
+
mediaType: MediaType;
|
|
122
|
+
filePath: string;
|
|
123
|
+
mimeType: string;
|
|
124
|
+
fileSize: number;
|
|
125
|
+
sortOrder: number;
|
|
126
|
+
createdAt: string;
|
|
127
|
+
}
|
|
128
|
+
export type NegotiationStatus = 'pending' | 'accepted' | 'rejected' | 'countered' | 'withdrawn' | 'sold';
|
|
129
|
+
export type NegotiationRole = 'buyer' | 'seller';
|
|
130
|
+
export interface Negotiation {
|
|
131
|
+
id: string;
|
|
132
|
+
refId: string;
|
|
133
|
+
refName: string;
|
|
134
|
+
buyerBeaconId: string;
|
|
135
|
+
sellerBeaconId: string;
|
|
136
|
+
price: number;
|
|
137
|
+
priceCurrency: string;
|
|
138
|
+
message: string;
|
|
139
|
+
status: NegotiationStatus;
|
|
140
|
+
role: NegotiationRole;
|
|
141
|
+
counterPrice?: number;
|
|
142
|
+
responseMessage?: string;
|
|
143
|
+
createdAt: string;
|
|
144
|
+
updatedAt: string;
|
|
145
|
+
}
|
|
146
|
+
export type NegotiationCreate = Omit<Negotiation, 'createdAt' | 'updatedAt' | 'status' | 'counterPrice' | 'responseMessage'> & {
|
|
147
|
+
status?: NegotiationStatus;
|
|
148
|
+
};
|
|
149
|
+
export interface ProposalPayload {
|
|
150
|
+
negotiationId: string;
|
|
151
|
+
refId: string;
|
|
152
|
+
refName: string;
|
|
153
|
+
price: number;
|
|
154
|
+
priceCurrency: string;
|
|
155
|
+
message: string;
|
|
156
|
+
}
|
|
157
|
+
export interface ProposalResponsePayload {
|
|
158
|
+
negotiationId: string;
|
|
159
|
+
status: NegotiationStatus;
|
|
160
|
+
counterPrice?: number;
|
|
161
|
+
responseMessage?: string;
|
|
162
|
+
}
|
|
163
|
+
export interface PeerMessage {
|
|
164
|
+
type: 'query' | 'response' | 'announce' | 'proposal' | 'proposal_response';
|
|
165
|
+
beaconId: string;
|
|
166
|
+
payload: unknown;
|
|
167
|
+
}
|
|
168
|
+
export interface QueryPayload {
|
|
169
|
+
category?: string;
|
|
170
|
+
subcategory?: string;
|
|
171
|
+
search?: string;
|
|
172
|
+
maxPrice?: number;
|
|
173
|
+
currency?: string;
|
|
174
|
+
lat?: number;
|
|
175
|
+
lng?: number;
|
|
176
|
+
radiusMiles?: number;
|
|
177
|
+
}
|
|
178
|
+
export interface AnnouncePayload {
|
|
179
|
+
refs: (Pick<Ref, 'id' | 'name' | 'category' | 'subcategory' | 'listingStatus'> & {
|
|
180
|
+
locationLat?: number;
|
|
181
|
+
locationLng?: number;
|
|
182
|
+
locationCity?: string;
|
|
183
|
+
locationState?: string;
|
|
184
|
+
locationZip?: string;
|
|
185
|
+
locationCountry?: string;
|
|
186
|
+
sellingScope?: SellingScope;
|
|
187
|
+
sellingRadiusMiles?: number;
|
|
188
|
+
})[];
|
|
189
|
+
offers: Pick<Offer, 'id' | 'refId' | 'price' | 'priceCurrency' | 'status'>[];
|
|
190
|
+
}
|
|
191
|
+
/** Blur lat/lng to ~0.7 mile / zip-code precision */
|
|
192
|
+
export declare function blurLocation(lat: number, lng: number): {
|
|
193
|
+
lat: number;
|
|
194
|
+
lng: number;
|
|
195
|
+
};
|
|
196
|
+
/** Haversine distance in miles between two lat/lng points */
|
|
197
|
+
export declare function haversineDistanceMiles(lat1: number, lng1: number, lat2: number, lng2: number): number;
|
|
198
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,iBAAiB,GAAG,UAAU,GAAG,eAAe,GAAG,kBAAkB,CAAC;AAE3H,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,WAAW,EAAE,OAAO,CAAC;IACrB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,eAAe,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,CAAC,GAAG;IAC/I,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE1D,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC,GAAG;IAChG,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,YAAY,CAAC;IAClC,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE;QACH,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAGD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1C,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,MAAM,CAAC;AACzG,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,iBAAiB,CAAC,GAAG;IAC7H,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAGF,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,mBAAmB,CAAC;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,aAAa,GAAG,eAAe,CAAC,GAAG;QAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC,EAAE,CAAC;IACL,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,eAAe,GAAG,QAAQ,CAAC,EAAE,CAAC;CAC9E;AAED,qDAAqD;AACrD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAKnF;AAED,6DAA6D;AAC7D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAUrG"}
|