@winata/flipper-entities 0.0.0-stage → 2.7.11
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/assets/logos.d.ts +14 -0
- package/dist/assets/logos.d.ts.map +1 -0
- package/dist/assets/logos.js +32 -0
- package/dist/assets/logos.js.map +1 -0
- package/dist/enums/marketplace.d.ts +16 -0
- package/dist/enums/marketplace.d.ts.map +1 -0
- package/dist/enums/marketplace.js +23 -0
- package/dist/enums/marketplace.js.map +1 -0
- package/dist/enums/notification-channel.enum.d.ts +8 -0
- package/dist/enums/notification-channel.enum.d.ts.map +1 -0
- package/dist/enums/notification-channel.enum.js +12 -0
- package/dist/enums/notification-channel.enum.js.map +1 -0
- package/dist/enums/search-type.enum.d.ts +27 -0
- package/dist/enums/search-type.enum.d.ts.map +1 -0
- package/dist/enums/search-type.enum.js +54 -0
- package/dist/enums/search-type.enum.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/search-filter.policy.d.ts +19 -0
- package/dist/search-filter.policy.d.ts.map +1 -0
- package/dist/search-filter.policy.js +84 -0
- package/dist/search-filter.policy.js.map +1 -0
- package/dist/types/banned-seller.types.d.ts +26 -0
- package/dist/types/banned-seller.types.d.ts.map +1 -0
- package/dist/types/banned-seller.types.js +3 -0
- package/dist/types/banned-seller.types.js.map +1 -0
- package/dist/types/billing-options.types.d.ts +6 -0
- package/dist/types/billing-options.types.d.ts.map +1 -0
- package/dist/types/billing-options.types.js +3 -0
- package/dist/types/billing-options.types.js.map +1 -0
- package/dist/types/core-options.types.d.ts +110 -0
- package/dist/types/core-options.types.d.ts.map +1 -0
- package/dist/types/core-options.types.js +3 -0
- package/dist/types/core-options.types.js.map +1 -0
- package/dist/types/engine.types.d.ts +68 -0
- package/dist/types/engine.types.d.ts.map +1 -0
- package/dist/types/engine.types.js +3 -0
- package/dist/types/engine.types.js.map +1 -0
- package/dist/types/item-check.types.d.ts +15 -0
- package/dist/types/item-check.types.d.ts.map +1 -0
- package/dist/types/item-check.types.js +3 -0
- package/dist/types/item-check.types.js.map +1 -0
- package/dist/types/item-filter.types.d.ts +30 -0
- package/dist/types/item-filter.types.d.ts.map +1 -0
- package/dist/types/item-filter.types.js +3 -0
- package/dist/types/item-filter.types.js.map +1 -0
- package/dist/types/item.types.d.ts +41 -0
- package/dist/types/item.types.d.ts.map +1 -0
- package/dist/types/item.types.js +3 -0
- package/dist/types/item.types.js.map +1 -0
- package/dist/types/notification.types.d.ts +35 -0
- package/dist/types/notification.types.d.ts.map +1 -0
- package/dist/types/notification.types.js +3 -0
- package/dist/types/notification.types.js.map +1 -0
- package/dist/types/option.types.d.ts +13 -0
- package/dist/types/option.types.d.ts.map +1 -0
- package/dist/types/option.types.js +3 -0
- package/dist/types/option.types.js.map +1 -0
- package/dist/types/product.types.d.ts +99 -0
- package/dist/types/product.types.d.ts.map +1 -0
- package/dist/types/product.types.js +3 -0
- package/dist/types/product.types.js.map +1 -0
- package/dist/types/scrape.types.d.ts +43 -0
- package/dist/types/scrape.types.d.ts.map +1 -0
- package/dist/types/scrape.types.js +3 -0
- package/dist/types/scrape.types.js.map +1 -0
- package/dist/types/search-jsonb.types.d.ts +95 -0
- package/dist/types/search-jsonb.types.d.ts.map +1 -0
- package/dist/types/search-jsonb.types.js +3 -0
- package/dist/types/search-jsonb.types.js.map +1 -0
- package/dist/types/search.types.d.ts +47 -0
- package/dist/types/search.types.d.ts.map +1 -0
- package/dist/types/search.types.js +3 -0
- package/dist/types/search.types.js.map +1 -0
- package/dist/types/seller-snapshot.types.d.ts +53 -0
- package/dist/types/seller-snapshot.types.d.ts.map +1 -0
- package/dist/types/seller-snapshot.types.js +3 -0
- package/dist/types/seller-snapshot.types.js.map +1 -0
- package/dist/types/seller-summary.types.d.ts +35 -0
- package/dist/types/seller-summary.types.d.ts.map +1 -0
- package/dist/types/seller-summary.types.js +3 -0
- package/dist/types/seller-summary.types.js.map +1 -0
- package/dist/types/subscription.types.d.ts +120 -0
- package/dist/types/subscription.types.d.ts.map +1 -0
- package/dist/types/subscription.types.js +3 -0
- package/dist/types/subscription.types.js.map +1 -0
- package/dist/types/usage.types.d.ts +50 -0
- package/dist/types/usage.types.d.ts.map +1 -0
- package/dist/types/usage.types.js +3 -0
- package/dist/types/usage.types.js.map +1 -0
- package/dist/types/user-channel.types.d.ts +28 -0
- package/dist/types/user-channel.types.d.ts.map +1 -0
- package/dist/types/user-channel.types.js +3 -0
- package/dist/types/user-channel.types.js.map +1 -0
- package/dist/types/user-item.types.d.ts +15 -0
- package/dist/types/user-item.types.d.ts.map +1 -0
- package/dist/types/user-item.types.js +3 -0
- package/dist/types/user-item.types.js.map +1 -0
- package/dist/types/user.types.d.ts +30 -0
- package/dist/types/user.types.d.ts.map +1 -0
- package/dist/types/user.types.js +3 -0
- package/dist/types/user.types.js.map +1 -0
- package/dist/utilities/index.d.ts +9 -0
- package/dist/utilities/index.d.ts.map +1 -0
- package/dist/utilities/index.js +21 -0
- package/dist/utilities/index.js.map +1 -0
- package/dist/utilities/scalar.d.ts +12 -0
- package/dist/utilities/scalar.d.ts.map +1 -0
- package/dist/utilities/scalar.js +45 -0
- package/dist/utilities/scalar.js.map +1 -0
- package/dist/utilities/seller-snapshot.d.ts +41 -0
- package/dist/utilities/seller-snapshot.d.ts.map +1 -0
- package/dist/utilities/seller-snapshot.js +126 -0
- package/dist/utilities/seller-snapshot.js.map +1 -0
- package/dist/utilities/seller-summary.d.ts +22 -0
- package/dist/utilities/seller-summary.d.ts.map +1 -0
- package/dist/utilities/seller-summary.js +85 -0
- package/dist/utilities/seller-summary.js.map +1 -0
- package/package.json +37 -4
- package/utilities/package.json +5 -0
- package/README.md +0 -3
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SELLER_SNAPSHOT_VERSION = void 0;
|
|
4
|
+
exports.createSellerSnapshot = createSellerSnapshot;
|
|
5
|
+
exports.parseSellerSnapshot = parseSellerSnapshot;
|
|
6
|
+
exports.toSellerIdentities = toSellerIdentities;
|
|
7
|
+
exports.toSellerMatchKey = toSellerMatchKey;
|
|
8
|
+
const scalar_1 = require("./scalar");
|
|
9
|
+
const seller_summary_1 = require("./seller-summary");
|
|
10
|
+
exports.SELLER_SNAPSHOT_VERSION = 1;
|
|
11
|
+
/** Key gambar seller, prioritas pertama yang berisi URI. */
|
|
12
|
+
const PICTURE_KEYS = [
|
|
13
|
+
'profile_picture',
|
|
14
|
+
'profile_picture_160',
|
|
15
|
+
'commerce_profile_picture_with_fallback_160',
|
|
16
|
+
];
|
|
17
|
+
function pickPicture(seller) {
|
|
18
|
+
for (const key of PICTURE_KEYS) {
|
|
19
|
+
const picture = seller[key];
|
|
20
|
+
const uri = (0, scalar_1.isRecord)(picture) ? (0, scalar_1.toStringValue)(picture.uri) : null;
|
|
21
|
+
if (uri)
|
|
22
|
+
return { uri };
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Bungkus objek seller mentah jadi snapshot berversi dengan HANYA property
|
|
28
|
+
* penting (bentuk ternormalisasi, sama untuk semua marketplace): identitas
|
|
29
|
+
* matching ban (`id`, `user_id`, `marketplace_user_profile.id`), nama, avatar,
|
|
30
|
+
* join, rating, verified, orders. Varian gambar, `__typename`, dan nesting
|
|
31
|
+
* mentah rating dibuang.
|
|
32
|
+
* Null kalau marketplace tidak mengirim objek (kadang null/string).
|
|
33
|
+
* ponytail: versi ini menulis v1; tambahkan cabang kalau v2 muncul.
|
|
34
|
+
*/
|
|
35
|
+
function createSellerSnapshot(source, seller) {
|
|
36
|
+
if (!(0, scalar_1.isRecord)(seller))
|
|
37
|
+
return null;
|
|
38
|
+
const profile = (0, scalar_1.isRecord)(seller.marketplace_user_profile)
|
|
39
|
+
? seller.marketplace_user_profile
|
|
40
|
+
: null;
|
|
41
|
+
return {
|
|
42
|
+
source,
|
|
43
|
+
version: exports.SELLER_SNAPSHOT_VERSION,
|
|
44
|
+
data: {
|
|
45
|
+
id: (0, scalar_1.toStringValue)(seller.id),
|
|
46
|
+
user_id: (0, scalar_1.toStringValue)(seller.user_id),
|
|
47
|
+
name: (0, scalar_1.toStringValue)(seller.name),
|
|
48
|
+
join_time: (0, scalar_1.toNumberValue)(seller.join_time),
|
|
49
|
+
marketplace_user_profile: profile
|
|
50
|
+
? {
|
|
51
|
+
id: (0, scalar_1.toStringValue)(profile.id),
|
|
52
|
+
c2c_orders_shipped: (0, scalar_1.toNumberValue)(profile.c2c_orders_shipped),
|
|
53
|
+
}
|
|
54
|
+
: null,
|
|
55
|
+
profile_picture: pickPicture(seller),
|
|
56
|
+
rating: (0, seller_summary_1.readSellerRating)(seller),
|
|
57
|
+
verified: (0, seller_summary_1.readSellerVerified)(seller),
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Baca snapshot dari DB/IPC. Null kalau bentuknya tidak dikenal (mis. versi
|
|
63
|
+
* lebih baru) — pemanggil fail-open, bukan throw. Ini SATU-SATUNYA cabang
|
|
64
|
+
* versi snapshot; semua service lain lewat sini.
|
|
65
|
+
*/
|
|
66
|
+
function parseSellerSnapshot(value) {
|
|
67
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
68
|
+
return null;
|
|
69
|
+
const snapshot = value;
|
|
70
|
+
if (snapshot.version !== exports.SELLER_SNAPSHOT_VERSION)
|
|
71
|
+
return null;
|
|
72
|
+
if (typeof snapshot.source !== 'string' || snapshot.source.length === 0) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
const data = snapshot.data;
|
|
76
|
+
if (!data || typeof data !== 'object' || Array.isArray(data))
|
|
77
|
+
return null;
|
|
78
|
+
return {
|
|
79
|
+
source: snapshot.source,
|
|
80
|
+
version: exports.SELLER_SNAPSHOT_VERSION,
|
|
81
|
+
data: data,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Nilai identitas seller untuk matching ban. Nilai duplikat (FB sering mengisi
|
|
86
|
+
* `id` = `user_id`) dibuang, property pertama yang menang.
|
|
87
|
+
*/
|
|
88
|
+
function toSellerIdentities(snapshot) {
|
|
89
|
+
const data = snapshot?.data;
|
|
90
|
+
if (!data)
|
|
91
|
+
return [];
|
|
92
|
+
const profile = data.marketplace_user_profile;
|
|
93
|
+
const candidates = [
|
|
94
|
+
['id', data.id],
|
|
95
|
+
['user_id', data.user_id],
|
|
96
|
+
[
|
|
97
|
+
'marketplace_user_profile.id',
|
|
98
|
+
profile && typeof profile === 'object' && !Array.isArray(profile)
|
|
99
|
+
? profile.id
|
|
100
|
+
: null,
|
|
101
|
+
],
|
|
102
|
+
];
|
|
103
|
+
const identities = [];
|
|
104
|
+
const seen = new Set();
|
|
105
|
+
for (const [property, raw] of candidates) {
|
|
106
|
+
const value = (0, scalar_1.toStringValue)(raw);
|
|
107
|
+
if (!value || seen.has(value))
|
|
108
|
+
continue;
|
|
109
|
+
seen.add(value);
|
|
110
|
+
identities.push({ property, value });
|
|
111
|
+
}
|
|
112
|
+
return identities;
|
|
113
|
+
}
|
|
114
|
+
const MECHANISM_PREFIX = {
|
|
115
|
+
snapshot: 'S',
|
|
116
|
+
legacy: 'L',
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Key pencocokan ban: `${prefix mekanisme}:${marketplace huruf kecil}:${value}`.
|
|
120
|
+
* Sengaja tidak dipisah per property di dalam mekanisme `snapshot`, karena
|
|
121
|
+
* matching lintas property diinginkan (mis. `id` listing vs `user_id` ban).
|
|
122
|
+
*/
|
|
123
|
+
function toSellerMatchKey(marketplace, value, mechanism) {
|
|
124
|
+
return `${MECHANISM_PREFIX[mechanism]}:${marketplace.toLowerCase()}:${value}`;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=seller-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seller-snapshot.js","sourceRoot":"","sources":["../../src/utilities/seller-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { SellerSnapshotJSONB } from '../types/seller-snapshot.types';
|
|
2
|
+
import type { SellerRating, SellerSummaryJSONB } from '../types/seller-summary.types';
|
|
3
|
+
/**
|
|
4
|
+
* Rating seller dari dua bentuk: ternormalisasi (`rating`, tulisan
|
|
5
|
+
* `createSellerSnapshot`) atau nesting mentah marketplace (baris lama).
|
|
6
|
+
* Null kalau marketplace tidak punya angka apa pun.
|
|
7
|
+
*/
|
|
8
|
+
export declare function readSellerRating(source: Record<string, unknown>): SellerRating | null;
|
|
9
|
+
/**
|
|
10
|
+
* Badge verified dari bentuk ternormalisasi (`verified`) atau badge mentah
|
|
11
|
+
* (baris lama).
|
|
12
|
+
*/
|
|
13
|
+
export declare function readSellerVerified(source: Record<string, unknown>): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Ringkasan seller (avatar, nama, profileId, rating, verified, orders) dari
|
|
16
|
+
* snapshot. TIDAK disimpan sebagai kolom: dipakai be saat menyusun response
|
|
17
|
+
* dan fe saat render. Null kalau tidak ada snapshot — baris legacy tidak punya
|
|
18
|
+
* ringkasan. Field yang hilang → null, bukan dihilangkan, supaya bentuk
|
|
19
|
+
* barisnya stabil antar marketplace.
|
|
20
|
+
*/
|
|
21
|
+
export declare function toSellerSummary(snapshot: SellerSnapshotJSONB | null | undefined): SellerSummaryJSONB | null;
|
|
22
|
+
//# sourceMappingURL=seller-summary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seller-summary.d.ts","sourceRoot":"","sources":["../../src/utilities/seller-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EACnB,MAAM,+BAA+B,CAAC;AAuBvC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,YAAY,GAAG,IAAI,CA2BrB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAM3E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,GAC/C,kBAAkB,GAAG,IAAI,CAgB3B"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readSellerRating = readSellerRating;
|
|
4
|
+
exports.readSellerVerified = readSellerVerified;
|
|
5
|
+
exports.toSellerSummary = toSellerSummary;
|
|
6
|
+
const scalar_1 = require("./scalar");
|
|
7
|
+
function pickAvatarUri(source) {
|
|
8
|
+
const candidates = [
|
|
9
|
+
(0, scalar_1.isRecord)(source.profile_picture) ? source.profile_picture.uri : null,
|
|
10
|
+
(0, scalar_1.isRecord)(source.profile_picture_160) ? source.profile_picture_160.uri : null,
|
|
11
|
+
(0, scalar_1.isRecord)(source.commerce_profile_picture_with_fallback_160)
|
|
12
|
+
? source.commerce_profile_picture_with_fallback_160.uri
|
|
13
|
+
: null,
|
|
14
|
+
];
|
|
15
|
+
for (const candidate of candidates) {
|
|
16
|
+
const value = (0, scalar_1.toStringValue)(candidate);
|
|
17
|
+
if (value)
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Rating seller dari dua bentuk: ternormalisasi (`rating`, tulisan
|
|
24
|
+
* `createSellerSnapshot`) atau nesting mentah marketplace (baris lama).
|
|
25
|
+
* Null kalau marketplace tidak punya angka apa pun.
|
|
26
|
+
*/
|
|
27
|
+
function readSellerRating(source) {
|
|
28
|
+
if ((0, scalar_1.isRecord)(source.rating)) {
|
|
29
|
+
const average = (0, scalar_1.toNumberValue)(source.rating.average);
|
|
30
|
+
const count = (0, scalar_1.toNumberValue)(source.rating.count);
|
|
31
|
+
const isPrivate = source.rating.private === true;
|
|
32
|
+
if (average === null && count === null && !isPrivate)
|
|
33
|
+
return null;
|
|
34
|
+
return { average, count, private: isPrivate };
|
|
35
|
+
}
|
|
36
|
+
const stats = (0, scalar_1.isRecord)(source.marketplace_ratings_stats_by_role_v2)
|
|
37
|
+
? source.marketplace_ratings_stats_by_role_v2
|
|
38
|
+
: null;
|
|
39
|
+
const combined = stats && (0, scalar_1.isRecord)(stats.seller_buyer_combined)
|
|
40
|
+
? stats.seller_buyer_combined
|
|
41
|
+
: null;
|
|
42
|
+
const sellerStats = stats && (0, scalar_1.isRecord)(stats.seller_stats) ? stats.seller_stats : null;
|
|
43
|
+
const primary = combined ?? sellerStats;
|
|
44
|
+
const average = (0, scalar_1.toNumberValue)(primary?.five_star_ratings_average);
|
|
45
|
+
const count = (0, scalar_1.toNumberValue)(primary?.five_star_total_rating_count_by_role);
|
|
46
|
+
const isPrivate = (stats ? stats.seller_ratings_are_private === true : false) ||
|
|
47
|
+
(combined ? combined.ratings_are_private === true : false);
|
|
48
|
+
if (average === null && count === null && !isPrivate)
|
|
49
|
+
return null;
|
|
50
|
+
return { average, count, private: isPrivate };
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Badge verified dari bentuk ternormalisasi (`verified`) atau badge mentah
|
|
54
|
+
* (baris lama).
|
|
55
|
+
*/
|
|
56
|
+
function readSellerVerified(source) {
|
|
57
|
+
return (source.verified === true ||
|
|
58
|
+
source.marketplace_should_display_verified_badge === true ||
|
|
59
|
+
source.should_display_true_blue_badge_mp === true);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Ringkasan seller (avatar, nama, profileId, rating, verified, orders) dari
|
|
63
|
+
* snapshot. TIDAK disimpan sebagai kolom: dipakai be saat menyusun response
|
|
64
|
+
* dan fe saat render. Null kalau tidak ada snapshot — baris legacy tidak punya
|
|
65
|
+
* ringkasan. Field yang hilang → null, bukan dihilangkan, supaya bentuk
|
|
66
|
+
* barisnya stabil antar marketplace.
|
|
67
|
+
*/
|
|
68
|
+
function toSellerSummary(snapshot) {
|
|
69
|
+
if (!snapshot || !(0, scalar_1.isRecord)(snapshot.data))
|
|
70
|
+
return null;
|
|
71
|
+
const data = snapshot.data;
|
|
72
|
+
const profile = (0, scalar_1.isRecord)(data.marketplace_user_profile)
|
|
73
|
+
? data.marketplace_user_profile
|
|
74
|
+
: null;
|
|
75
|
+
return {
|
|
76
|
+
avatar: pickAvatarUri(data),
|
|
77
|
+
name: (0, scalar_1.toStringValue)(data.name),
|
|
78
|
+
profileId: profile ? (0, scalar_1.toStringValue)(profile.id) : null,
|
|
79
|
+
joinedAt: (0, scalar_1.toIsoString)(data.join_time),
|
|
80
|
+
rating: readSellerRating(data),
|
|
81
|
+
verified: readSellerVerified(data),
|
|
82
|
+
ordersShipped: profile ? (0, scalar_1.toNumberValue)(profile.c2c_orders_shipped) : null,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=seller-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seller-summary.js","sourceRoot":"","sources":["../../src/utilities/seller-summary.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,39 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@winata/flipper-entities",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "2.7.11",
|
|
4
|
+
"private": false,
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"./utilities": {
|
|
13
|
+
"types": "./dist/utilities/index.d.ts",
|
|
14
|
+
"default": "./dist/utilities/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./utilities/*": {
|
|
17
|
+
"types": "./dist/utilities/*.d.ts",
|
|
18
|
+
"default": "./dist/utilities/*.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist",
|
|
23
|
+
"utilities",
|
|
24
|
+
"README.md"
|
|
25
|
+
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"prebuild": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
28
|
+
"build": "tsc",
|
|
29
|
+
"test": "bun test src",
|
|
30
|
+
"prepublishOnly": "bun run build"
|
|
31
|
+
},
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"typescript": "^5.0.0"
|
|
37
|
+
},
|
|
38
|
+
"license": "UNLICENSED"
|
|
39
|
+
}
|
package/README.md
DELETED