@thinkerchain/flipper-entities 2.2.1 → 2.4.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/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/seller-snapshot.d.ts +25 -0
- package/dist/seller-snapshot.d.ts.map +1 -0
- package/dist/seller-snapshot.js +93 -0
- package/dist/seller-snapshot.js.map +1 -0
- package/dist/types/banned-seller.types.d.ts +6 -0
- package/dist/types/banned-seller.types.d.ts.map +1 -1
- package/dist/types/engine.types.d.ts +2 -0
- package/dist/types/engine.types.d.ts.map +1 -1
- package/dist/types/item-filter.types.d.ts +13 -1
- package/dist/types/item-filter.types.d.ts.map +1 -1
- package/dist/types/item.types.d.ts +2 -0
- package/dist/types/item.types.d.ts.map +1 -1
- package/dist/types/product.types.d.ts +25 -13
- package/dist/types/product.types.d.ts.map +1 -1
- package/dist/types/scrape.types.d.ts +2 -0
- package/dist/types/scrape.types.d.ts.map +1 -1
- package/dist/types/search.types.d.ts +5 -3
- package/dist/types/search.types.d.ts.map +1 -1
- package/dist/types/seller-snapshot.types.d.ts +37 -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/subscription.types.d.ts +37 -30
- package/dist/types/subscription.types.d.ts.map +1 -1
- package/dist/types/usage.types.d.ts +4 -8
- package/dist/types/usage.types.d.ts.map +1 -1
- package/dist/types/user-channel.types.d.ts +7 -3
- package/dist/types/user-channel.types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ export type { UserEntity, UserWithRelations } from './types/user.types';
|
|
|
2
2
|
export type { ItemEntity, ItemWithSearch } from './types/item.types';
|
|
3
3
|
export type { ScrapedItem, SearchWithItems } from './types/scrape.types';
|
|
4
4
|
export type { ItemFilterKey, InvalidFilterReason, ItemCheckStatus, CheckItemsRequest, } from './types/item-check.types';
|
|
5
|
-
export type { ItemFilterResult, ItemFilterContext, } from './types/item-filter.types';
|
|
5
|
+
export type { ItemFilterResult, ItemFilterContext, BannedSellerMatch, } from './types/item-filter.types';
|
|
6
|
+
export type { SellerIdentityProperty, SellerIdentity, FacebookSellerV1, SellerSnapshotV1, SellerSnapshotJSONB, } from './types/seller-snapshot.types';
|
|
7
|
+
export { SELLER_SNAPSHOT_SOURCE_FACEBOOK, SELLER_SNAPSHOT_VERSION, createSellerSnapshot, parseSellerSnapshot, toSellerIdentities, toSellerMatchKey, } from './seller-snapshot';
|
|
6
8
|
export type { UserItemEntity, RichNoteJSONB } from './types/user-item.types';
|
|
7
9
|
export type { BannedSellerEntity } from './types/banned-seller.types';
|
|
8
10
|
export type { SearchEntity, SearchWithUser } from './types/search.types';
|
|
@@ -10,8 +12,8 @@ export type { EngineSearchRequest, EngineEnv, EngineChildInput, EngineScrapeInpu
|
|
|
10
12
|
export type { ChannelEntity, TelegramChannelEntity, UserChannelEntity, } from './types/user-channel.types';
|
|
11
13
|
export type { CoreEntity, DefaultValueEntity, StringMatchAlgorithm, StringMatcherType, DefaultItemFilterEntity, MarketPlacePropEntity, FacebookMarketPlacePropEntity, EngineEntity, EngineOptions, OrchestratorOptions, ProxyOptions, } from './types/core-options.types';
|
|
12
14
|
export type { OptionEntity } from './types/option.types';
|
|
13
|
-
export type { ProductKind,
|
|
14
|
-
export type { SubscriptionStatus, SubscriptionSource, SubscriptionProfileKind,
|
|
15
|
+
export type { ProductKind, ProductFeature, ProductSearchProfileEntity, ProductChannelProfileEntity, ProductBannedSellerProfileEntity, ProductEntity, } from './types/product.types';
|
|
16
|
+
export type { SubscriptionStatus, SubscriptionSource, SubscriptionProfileKind, SubscriptionSearchProfileEntity, SubscriptionChannelProfileEntity, SubscriptionBannedSellerProfileEntity, SubscriptionProfileSnapshot, SubscriptionSnapshot, SubscriptionEntity, SubscriptionWithProduct, } from './types/subscription.types';
|
|
15
17
|
export type { BillingValueJSONB } from './types/billing-options.types';
|
|
16
18
|
export type { UsageProfileMetric, UsageMetric, SubscriptionUsageSummary, } from './types/usage.types';
|
|
17
19
|
export type { LocationJSONB, MarketPlacePropJSONB, ItemFilterImage, ItemFilterLink, ItemFilterLocation, ItemFilterName, ItemFilterPrice, ItemFilterYear, ItemFilterDescription, ItemFilterRating, ItemFilterScam, ItemFilterJSONB, CoreValueJSONB, } from './types/search-jsonb.types';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAExE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAErE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEzE,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7E,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEzE,YAAY,EACV,mBAAmB,EACnB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,YAAY,GACb,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,YAAY,EACV,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAExE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAErE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEzE,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,+BAA+B,EAC/B,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7E,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEzE,YAAY,EACV,mBAAmB,EACnB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,YAAY,GACb,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,YAAY,EACV,WAAW,EACX,cAAc,EACd,0BAA0B,EAC1B,2BAA2B,EAC3B,gCAAgC,EAChC,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,+BAA+B,EAC/B,gCAAgC,EAChC,qCAAqC,EACrC,2BAA2B,EAC3B,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toSellerMatchKey = exports.toSellerIdentities = exports.parseSellerSnapshot = exports.createSellerSnapshot = exports.SELLER_SNAPSHOT_VERSION = exports.SELLER_SNAPSHOT_SOURCE_FACEBOOK = void 0;
|
|
4
|
+
var seller_snapshot_1 = require("./seller-snapshot");
|
|
5
|
+
Object.defineProperty(exports, "SELLER_SNAPSHOT_SOURCE_FACEBOOK", { enumerable: true, get: function () { return seller_snapshot_1.SELLER_SNAPSHOT_SOURCE_FACEBOOK; } });
|
|
6
|
+
Object.defineProperty(exports, "SELLER_SNAPSHOT_VERSION", { enumerable: true, get: function () { return seller_snapshot_1.SELLER_SNAPSHOT_VERSION; } });
|
|
7
|
+
Object.defineProperty(exports, "createSellerSnapshot", { enumerable: true, get: function () { return seller_snapshot_1.createSellerSnapshot; } });
|
|
8
|
+
Object.defineProperty(exports, "parseSellerSnapshot", { enumerable: true, get: function () { return seller_snapshot_1.parseSellerSnapshot; } });
|
|
9
|
+
Object.defineProperty(exports, "toSellerIdentities", { enumerable: true, get: function () { return seller_snapshot_1.toSellerIdentities; } });
|
|
10
|
+
Object.defineProperty(exports, "toSellerMatchKey", { enumerable: true, get: function () { return seller_snapshot_1.toSellerMatchKey; } });
|
|
3
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AA2BA,qDAO2B;AANzB,kIAAA,+BAA+B,OAAA;AAC/B,0HAAA,uBAAuB,OAAA;AACvB,uHAAA,oBAAoB,OAAA;AACpB,sHAAA,mBAAmB,OAAA;AACnB,qHAAA,kBAAkB,OAAA;AAClB,mHAAA,gBAAgB,OAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { SellerIdentity, SellerSnapshotJSONB } from './types/seller-snapshot.types';
|
|
2
|
+
export declare const SELLER_SNAPSHOT_SOURCE_FACEBOOK = "facebook";
|
|
3
|
+
export declare const SELLER_SNAPSHOT_VERSION = 1;
|
|
4
|
+
/**
|
|
5
|
+
* Bungkus objek seller mentah jadi snapshot berversi.
|
|
6
|
+
* Null kalau FB tidak mengirim objek (kadang null/string).
|
|
7
|
+
* ponytail: vetur ini menulis v1; tambahkan cabang kalau v2 muncul.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createSellerSnapshot(source: string, seller: unknown): SellerSnapshotJSONB | null;
|
|
10
|
+
/**
|
|
11
|
+
* Baca snapshot dari DB/IPC. Null kalau bentuknya tidak dikenal (mis. versi
|
|
12
|
+
* lebih baru) — pemanggil fail-open, bukan throw.
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseSellerSnapshot(value: unknown): SellerSnapshotJSONB | null;
|
|
15
|
+
/**
|
|
16
|
+
* Nilai identitas seller untuk matching ban. Nilai duplikat (FB sering mengisi
|
|
17
|
+
* `id` = `user_id`) dibuang, property pertama yang menang.
|
|
18
|
+
*/
|
|
19
|
+
export declare function toSellerIdentities(snapshot: SellerSnapshotJSONB | null | undefined): SellerIdentity[];
|
|
20
|
+
/**
|
|
21
|
+
* Key pencocokan ban, format sama dengan `bannedSellerKeys` lama:
|
|
22
|
+
* `${marketplace huruf kecil}:${value}`.
|
|
23
|
+
*/
|
|
24
|
+
export declare function toSellerMatchKey(marketplace: string, value: string): string;
|
|
25
|
+
//# sourceMappingURL=seller-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seller-snapshot.d.ts","sourceRoot":"","sources":["../src/seller-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACpB,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,+BAA+B,aAAa,CAAC;AAC1D,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,GACd,mBAAmB,GAAG,IAAI,CAS5B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,mBAAmB,GAAG,IAAI,CAc5B;AAWD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,GAC/C,cAAc,EAAE,CAuBlB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3E"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SELLER_SNAPSHOT_VERSION = exports.SELLER_SNAPSHOT_SOURCE_FACEBOOK = void 0;
|
|
4
|
+
exports.createSellerSnapshot = createSellerSnapshot;
|
|
5
|
+
exports.parseSellerSnapshot = parseSellerSnapshot;
|
|
6
|
+
exports.toSellerIdentities = toSellerIdentities;
|
|
7
|
+
exports.toSellerMatchKey = toSellerMatchKey;
|
|
8
|
+
exports.SELLER_SNAPSHOT_SOURCE_FACEBOOK = 'facebook';
|
|
9
|
+
exports.SELLER_SNAPSHOT_VERSION = 1;
|
|
10
|
+
/**
|
|
11
|
+
* Bungkus objek seller mentah jadi snapshot berversi.
|
|
12
|
+
* Null kalau FB tidak mengirim objek (kadang null/string).
|
|
13
|
+
* ponytail: vetur ini menulis v1; tambahkan cabang kalau v2 muncul.
|
|
14
|
+
*/
|
|
15
|
+
function createSellerSnapshot(source, seller) {
|
|
16
|
+
if (!seller || typeof seller !== 'object' || Array.isArray(seller)) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
source,
|
|
21
|
+
version: exports.SELLER_SNAPSHOT_VERSION,
|
|
22
|
+
data: seller,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Baca snapshot dari DB/IPC. Null kalau bentuknya tidak dikenal (mis. versi
|
|
27
|
+
* lebih baru) — pemanggil fail-open, bukan throw.
|
|
28
|
+
*/
|
|
29
|
+
function parseSellerSnapshot(value) {
|
|
30
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
31
|
+
return null;
|
|
32
|
+
const snapshot = value;
|
|
33
|
+
if (snapshot.version !== exports.SELLER_SNAPSHOT_VERSION)
|
|
34
|
+
return null;
|
|
35
|
+
if (typeof snapshot.source !== 'string' || snapshot.source.length === 0) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const data = snapshot.data;
|
|
39
|
+
if (!data || typeof data !== 'object' || Array.isArray(data))
|
|
40
|
+
return null;
|
|
41
|
+
return {
|
|
42
|
+
source: snapshot.source,
|
|
43
|
+
version: exports.SELLER_SNAPSHOT_VERSION,
|
|
44
|
+
data: data,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function toIdentityValue(raw) {
|
|
48
|
+
if (typeof raw === 'string') {
|
|
49
|
+
const trimmed = raw.trim();
|
|
50
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
51
|
+
}
|
|
52
|
+
if (typeof raw === 'number' && Number.isFinite(raw))
|
|
53
|
+
return String(raw);
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Nilai identitas seller untuk matching ban. Nilai duplikat (FB sering mengisi
|
|
58
|
+
* `id` = `user_id`) dibuang, property pertama yang menang.
|
|
59
|
+
*/
|
|
60
|
+
function toSellerIdentities(snapshot) {
|
|
61
|
+
const data = snapshot?.data;
|
|
62
|
+
if (!data)
|
|
63
|
+
return [];
|
|
64
|
+
const profile = data.marketplace_user_profile;
|
|
65
|
+
const candidates = [
|
|
66
|
+
['id', data.id],
|
|
67
|
+
['user_id', data.user_id],
|
|
68
|
+
[
|
|
69
|
+
'marketplace_user_profile.id',
|
|
70
|
+
profile && typeof profile === 'object' && !Array.isArray(profile)
|
|
71
|
+
? profile.id
|
|
72
|
+
: null,
|
|
73
|
+
],
|
|
74
|
+
];
|
|
75
|
+
const identities = [];
|
|
76
|
+
const seen = new Set();
|
|
77
|
+
for (const [property, raw] of candidates) {
|
|
78
|
+
const value = toIdentityValue(raw);
|
|
79
|
+
if (!value || seen.has(value))
|
|
80
|
+
continue;
|
|
81
|
+
seen.add(value);
|
|
82
|
+
identities.push({ property, value });
|
|
83
|
+
}
|
|
84
|
+
return identities;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Key pencocokan ban, format sama dengan `bannedSellerKeys` lama:
|
|
88
|
+
* `${marketplace huruf kecil}:${value}`.
|
|
89
|
+
*/
|
|
90
|
+
function toSellerMatchKey(marketplace, value) {
|
|
91
|
+
return `${marketplace.toLowerCase()}:${value}`;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=seller-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seller-snapshot.js","sourceRoot":"","sources":["../src/seller-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SellerSnapshotJSONB } from './seller-snapshot.types';
|
|
1
2
|
/** Representasi tabel `BannedSeller`. */
|
|
2
3
|
export type BannedSellerEntity = {
|
|
3
4
|
id: number;
|
|
@@ -5,6 +6,11 @@ export type BannedSellerEntity = {
|
|
|
5
6
|
marketplace: string;
|
|
6
7
|
sellerKey: string;
|
|
7
8
|
sellerName: string | null;
|
|
9
|
+
sellerSnapshot?: SellerSnapshotJSONB | null;
|
|
10
|
+
subscriptionId?: number | null;
|
|
11
|
+
subscriptionProfileId?: number | null;
|
|
12
|
+
isSubscriptionActive?: boolean;
|
|
13
|
+
subscriptionName?: string | null;
|
|
8
14
|
deleted: boolean;
|
|
9
15
|
createdAt: string;
|
|
10
16
|
createdBy: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banned-seller.types.d.ts","sourceRoot":"","sources":["../../src/types/banned-seller.types.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"banned-seller.types.d.ts","sourceRoot":"","sources":["../../src/types/banned-seller.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,yCAAyC;AACzC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CoreEntity, ProxyOptions } from './core-options.types';
|
|
2
2
|
import type { SearchWithItems } from './scrape.types';
|
|
3
3
|
import type { SearchWithUser } from './search.types';
|
|
4
|
+
import type { SellerSnapshotJSONB } from './seller-snapshot.types';
|
|
4
5
|
/** Payload RMQ `engine.search`: orchestrator core -> engine. Search saja, tanpa item. */
|
|
5
6
|
export type EngineSearchRequest = {
|
|
6
7
|
option: CoreEntity;
|
|
@@ -59,6 +60,7 @@ export type ScrapeDetailData = {
|
|
|
59
60
|
reverseGeocode: Record<string, unknown> | null;
|
|
60
61
|
buyLocation: Record<string, unknown> | null;
|
|
61
62
|
productDetailsType: string | null;
|
|
63
|
+
sellerSnapshot: SellerSnapshotJSONB | null;
|
|
62
64
|
scrapeMs?: number;
|
|
63
65
|
extractorSource?: string | null;
|
|
64
66
|
attempt?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.types.d.ts","sourceRoot":"","sources":["../../src/types/engine.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.types.d.ts","sourceRoot":"","sources":["../../src/types/engine.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,yFAAyF;AACzF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;IAChC,kCAAkC,EAAE,MAAM,CAAC;IAC3C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,GAAG,EAAE,SAAS,CAAC;CAChB,CAAC;AAEF,gDAAgD;AAChD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,oDAAoD;AACpD,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,YAAY,GACZ,eAAe,GACf,eAAe,EAAE,CAAC;AAEtB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;CACrB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5C,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ItemFilterKey } from './item-check.types';
|
|
2
|
+
import type { SellerIdentityProperty } from './seller-snapshot.types';
|
|
2
3
|
import type { UserWithRelations } from './user.types';
|
|
3
4
|
export type ItemFilterResult = {
|
|
4
5
|
valid: boolean;
|
|
@@ -8,8 +9,19 @@ export type ItemFilterResult = {
|
|
|
8
9
|
reason?: string;
|
|
9
10
|
info?: string;
|
|
10
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* Satu ban yang siap dicocokkan. Map-nya ber-key
|
|
14
|
+
* `${marketplace huruf kecil}:${nilai identitas}` — sengaja tidak dipisah per
|
|
15
|
+
* property, karena matching lintas property diinginkan (id listing vs
|
|
16
|
+
* `marketplace_user_profile.id` ban tetap kena).
|
|
17
|
+
*/
|
|
18
|
+
export type BannedSellerMatch = {
|
|
19
|
+
banId: number;
|
|
20
|
+
property: SellerIdentityProperty;
|
|
21
|
+
sellerName: string | null;
|
|
22
|
+
};
|
|
11
23
|
export type ItemFilterContext = {
|
|
12
24
|
user?: UserWithRelations;
|
|
13
|
-
|
|
25
|
+
bannedSellers: ReadonlyMap<string, BannedSellerMatch>;
|
|
14
26
|
};
|
|
15
27
|
//# sourceMappingURL=item-filter.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item-filter.types.d.ts","sourceRoot":"","sources":["../../src/types/item-filter.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,
|
|
1
|
+
{"version":3,"file":"item-filter.types.d.ts","sourceRoot":"","sources":["../../src/types/item-filter.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,sBAAsB,CAAC;IACjC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CACvD,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { SearchWithUser } from './search.types';
|
|
2
|
+
import type { SellerSnapshotJSONB } from './seller-snapshot.types';
|
|
2
3
|
/** Representasi tabel `Item`. */
|
|
3
4
|
export type ItemEntity = {
|
|
4
5
|
id: number;
|
|
@@ -8,6 +9,7 @@ export type ItemEntity = {
|
|
|
8
9
|
marketPlaceName: string | null;
|
|
9
10
|
sellerKey: string | null;
|
|
10
11
|
sellerName: string | null;
|
|
12
|
+
sellerSnapshot?: SellerSnapshotJSONB | null;
|
|
11
13
|
type: string | null;
|
|
12
14
|
name: string | null;
|
|
13
15
|
image: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.types.d.ts","sourceRoot":"","sources":["../../src/types/item.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"item.types.d.ts","sourceRoot":"","sources":["../../src/types/item.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,iCAAiC;AACjC,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC5C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,sDAAsD;AACtD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG;IACxC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;CAC/B,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Katalog produk.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Katalog produk. `kind` sengaja string bebas (tanpa CHECK) supaya jenis produk
|
|
3
|
+
* baru tidak butuh migrasi. Nilai yang dipakai saat ini: `plan` (langganan) dan
|
|
4
|
+
* `retail` (sekali beli). Produk yang tidak berlangganan cukup tidak punya
|
|
5
|
+
* `ProductSearchProfile`/`ProductChannelProfile`.
|
|
5
6
|
*/
|
|
6
|
-
export type ProductKind = 'plan' | '
|
|
7
|
-
/** Peran profil di dalam sebuah produk. */
|
|
8
|
-
export type ProductProfileKind = 'base' | 'delta';
|
|
7
|
+
export type ProductKind = 'plan' | 'retail';
|
|
9
8
|
/** Benefit marketing untuk kartu pricing. */
|
|
10
9
|
export interface ProductFeature {
|
|
11
10
|
key: string;
|
|
@@ -19,8 +18,6 @@ export interface ProductSearchProfileEntity {
|
|
|
19
18
|
/** Slug stabil, dipakai baris langganan untuk menunjuk profil ini. */
|
|
20
19
|
key: string;
|
|
21
20
|
name: string;
|
|
22
|
-
/** `delta` = profil ini menambah slot ke profil `base` dengan key yang sama. */
|
|
23
|
-
kind: ProductProfileKind;
|
|
24
21
|
/** Jumlah search aktif yang boleh menempel ke profil ini. */
|
|
25
22
|
slot: number;
|
|
26
23
|
/** Delay antar-scrape (ms) yang dipakai search di profil ini. */
|
|
@@ -31,15 +28,30 @@ export interface ProductSearchProfileEntity {
|
|
|
31
28
|
createdAt: string;
|
|
32
29
|
updatedAt: string;
|
|
33
30
|
}
|
|
34
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Profil channel yang dijual sebuah produk (tabel `ProductChannelProfile`).
|
|
33
|
+
* Agnostik terhadap jenis channel: jenis (mis. `telegram`) dipilih user saat
|
|
34
|
+
* membuat channel dan divalidasi terhadap `SUPPORTED_CHANNEL_TYPES`.
|
|
35
|
+
*/
|
|
35
36
|
export interface ProductChannelProfileEntity {
|
|
36
37
|
id: number;
|
|
37
38
|
productId: number;
|
|
38
39
|
key: string;
|
|
39
40
|
name: string;
|
|
40
41
|
slot: number;
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
deleted: boolean;
|
|
43
|
+
createdAt: string;
|
|
44
|
+
updatedAt: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Profil banned seller yang dijual sebuah produk (tabel `ProductBannedSellerProfile`).
|
|
48
|
+
*/
|
|
49
|
+
export interface ProductBannedSellerProfileEntity {
|
|
50
|
+
id: number;
|
|
51
|
+
productId: number;
|
|
52
|
+
key: string;
|
|
53
|
+
name: string;
|
|
54
|
+
slot: number;
|
|
43
55
|
deleted: boolean;
|
|
44
56
|
createdAt: string;
|
|
45
57
|
updatedAt: string;
|
|
@@ -53,13 +65,13 @@ export type ProductEntity = {
|
|
|
53
65
|
kind: string;
|
|
54
66
|
priceCents: number;
|
|
55
67
|
currency: string;
|
|
56
|
-
/** 'month' | 'year' | null (null = sekali beli seperti addon). */
|
|
57
|
-
interval: string | null;
|
|
58
68
|
sortOrder: number;
|
|
59
69
|
isActive: boolean;
|
|
70
|
+
isPublic?: boolean;
|
|
60
71
|
features: ProductFeature[] | null;
|
|
61
72
|
searchProfiles: ProductSearchProfileEntity[];
|
|
62
73
|
channelProfiles: ProductChannelProfileEntity[];
|
|
74
|
+
bannedSellerProfiles?: ProductBannedSellerProfileEntity[];
|
|
63
75
|
deleted: boolean;
|
|
64
76
|
createdAt: string;
|
|
65
77
|
createdBy: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product.types.d.ts","sourceRoot":"","sources":["../../src/types/product.types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"product.types.d.ts","sourceRoot":"","sources":["../../src/types/product.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE5C,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,8EAA8E;AAC9E,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,2EAA2E;AAC3E,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,0BAA0B,EAAE,CAAC;IAC7C,eAAe,EAAE,2BAA2B,EAAE,CAAC;IAC/C,oBAAoB,CAAC,EAAE,gCAAgC,EAAE,CAAC;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { InvalidFilterReason, ItemCheckStatus } from './item-check.types';
|
|
2
2
|
import type { SearchWithUser } from './search.types';
|
|
3
|
+
import type { SellerSnapshotJSONB } from './seller-snapshot.types';
|
|
3
4
|
/**
|
|
4
5
|
* Item hasil scrape yang belum tentu ada di DB (`id` null sampai core simpan).
|
|
5
6
|
* Satu-satunya bentuk item yang lalu-lalang di RMQ/IPC.
|
|
@@ -15,6 +16,7 @@ export type ScrapedItem = {
|
|
|
15
16
|
marketPlaceName?: string | null;
|
|
16
17
|
sellerKey?: string | null;
|
|
17
18
|
sellerName?: string | null;
|
|
19
|
+
sellerSnapshot?: SellerSnapshotJSONB | null;
|
|
18
20
|
type?: string | null;
|
|
19
21
|
name?: string | null;
|
|
20
22
|
image?: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrape.types.d.ts","sourceRoot":"","sources":["../../src/types/scrape.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"scrape.types.d.ts","sourceRoot":"","sources":["../../src/types/scrape.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACvC,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG;IAC7C,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB,CAAC"}
|
|
@@ -13,10 +13,12 @@ export type SearchEntity = {
|
|
|
13
13
|
delayMilis: number;
|
|
14
14
|
lastScrappedEpoch: string | null;
|
|
15
15
|
filter: ItemFilterJSONB | null;
|
|
16
|
-
/**
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Profil scanner langganan yang membayar search ini
|
|
18
|
+
* (tabel `SubscriptionSearchProfile`); null = search lama, tidak dieksekusi.
|
|
19
|
+
*/
|
|
19
20
|
subscriptionProfileId?: number | null;
|
|
21
|
+
isSubscriptionActive?: boolean;
|
|
20
22
|
deleted: boolean;
|
|
21
23
|
createdAt: string;
|
|
22
24
|
createdBy: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.types.d.ts","sourceRoot":"","sources":["../../src/types/search.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC7C,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B
|
|
1
|
+
{"version":3,"file":"search.types.d.ts","sourceRoot":"","sources":["../../src/types/search.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC7C,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,gCAAgC;AAChC,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG;IAC1C,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property identitas seller yang dipakai untuk matching ban.
|
|
3
|
+
* Urutan prioritas: `id`, lalu `user_id`, lalu `marketplace_user_profile.id`.
|
|
4
|
+
*/
|
|
5
|
+
export type SellerIdentityProperty = 'id' | 'user_id' | 'marketplace_user_profile.id';
|
|
6
|
+
/** Satu nilai identitas seller yang siap dicocokkan dengan ban. */
|
|
7
|
+
export type SellerIdentity = {
|
|
8
|
+
property: SellerIdentityProperty;
|
|
9
|
+
value: string;
|
|
10
|
+
};
|
|
11
|
+
/** Objek `marketplace_listing_seller` dari PDP Facebook, disimpan apa adanya. */
|
|
12
|
+
export type FacebookSellerV1 = {
|
|
13
|
+
id?: string | number | null;
|
|
14
|
+
user_id?: string | number | null;
|
|
15
|
+
name?: string | null;
|
|
16
|
+
marketplace_user_profile?: {
|
|
17
|
+
id?: string | number | null;
|
|
18
|
+
c2c_orders_shipped?: number | null;
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
} | null;
|
|
21
|
+
profile_picture?: {
|
|
22
|
+
uri?: string | null;
|
|
23
|
+
[key: string]: unknown;
|
|
24
|
+
} | null;
|
|
25
|
+
[key: string]: unknown;
|
|
26
|
+
};
|
|
27
|
+
export type SellerSnapshotV1 = {
|
|
28
|
+
source: string;
|
|
29
|
+
version: 1;
|
|
30
|
+
data: FacebookSellerV1;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Snapshot seller (kolom jsonb `sellerSnapshot` di `Item`/`UserItem`/`BannedSeller`).
|
|
34
|
+
* `version` adalah discriminator: pembaca wajib lewat `parseSellerSnapshot`.
|
|
35
|
+
*/
|
|
36
|
+
export type SellerSnapshotJSONB = SellerSnapshotV1;
|
|
37
|
+
//# sourceMappingURL=seller-snapshot.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seller-snapshot.types.d.ts","sourceRoot":"","sources":["../../src/types/seller-snapshot.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAC9B,IAAI,GACJ,SAAS,GACT,6BAA6B,CAAC;AAElC,mEAAmE;AACnE,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,iFAAiF;AACjF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,wBAAwB,CAAC,EAAE;QACzB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QAC5B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,GAAG,IAAI,CAAC;IACT,eAAe,CAAC,EAAE;QAChB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,GAAG,IAAI,CAAC;IACT,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seller-snapshot.types.js","sourceRoot":"","sources":["../../src/types/seller-snapshot.types.ts"],"names":[],"mappings":""}
|
|
@@ -1,46 +1,54 @@
|
|
|
1
1
|
import type { ProductEntity } from './product.types';
|
|
2
2
|
export type SubscriptionStatus = 'trialing' | 'active' | 'past_due' | 'canceled' | 'expired';
|
|
3
3
|
export type SubscriptionSource = 'manual' | 'trial' | 'payment';
|
|
4
|
-
|
|
5
|
-
export type
|
|
4
|
+
/** Kelompok entitlement di dalam satu langganan. */
|
|
5
|
+
export type SubscriptionProfileKind = 'search' | 'channel' | 'banned_seller';
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
* Dibuat sekali saat langganan dibuat;
|
|
9
|
-
*
|
|
7
|
+
* Profil scanner beku milik satu langganan (tabel `SubscriptionSearchProfile`).
|
|
8
|
+
* Dibuat sekali saat langganan dibuat; `Search` menempel ke baris ini, bukan ke
|
|
9
|
+
* katalog — jadi edit atau hapus produk tidak pernah mengubah relasi.
|
|
10
10
|
*/
|
|
11
|
-
export interface
|
|
11
|
+
export interface SubscriptionSearchProfileEntity {
|
|
12
12
|
id: number;
|
|
13
13
|
subscriptionId: number;
|
|
14
|
-
kind: SubscriptionProfileKind;
|
|
15
|
-
/** Jejak asal profil di katalog; null kalau produknya sudah dihapus. */
|
|
16
|
-
productProfileId: number | null;
|
|
17
14
|
key: string;
|
|
18
15
|
name: string;
|
|
19
16
|
/** Slot dasar dari plan saat langganan dibuat. */
|
|
20
17
|
slot: number;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
/** Delay antar-scrape (ms) beku untuk scanner ini. */
|
|
19
|
+
delayMilis: number;
|
|
20
|
+
/** Marketplace beku yang boleh dipakai scanner ini. */
|
|
21
|
+
allowedMarketPlaces: string[];
|
|
24
22
|
deleted: boolean;
|
|
25
23
|
createdAt: string;
|
|
26
24
|
}
|
|
27
|
-
/**
|
|
28
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Profil channel beku milik satu langganan (tabel `SubscriptionChannelProfile`).
|
|
27
|
+
* Agnostik: tidak menyimpan jenis channel — `UserChannel.other.type` yang
|
|
28
|
+
* menentukan, divalidasi terhadap `SUPPORTED_CHANNEL_TYPES`.
|
|
29
|
+
*/
|
|
30
|
+
export interface SubscriptionChannelProfileEntity {
|
|
29
31
|
id: number;
|
|
30
32
|
subscriptionId: number;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
key: string;
|
|
34
|
+
name: string;
|
|
35
|
+
slot: number;
|
|
36
|
+
deleted: boolean;
|
|
37
|
+
createdAt: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Profil banned seller beku milik satu langganan (tabel `SubscriptionBannedSellerProfile`).
|
|
41
|
+
*/
|
|
42
|
+
export interface SubscriptionBannedSellerProfileEntity {
|
|
43
|
+
id: number;
|
|
44
|
+
subscriptionId: number;
|
|
45
|
+
key: string;
|
|
46
|
+
name: string;
|
|
47
|
+
slot: number;
|
|
48
|
+
deleted: boolean;
|
|
41
49
|
createdAt: string;
|
|
42
50
|
}
|
|
43
|
-
/** Copy profil untuk audit; angka yang dipakai logika ada di
|
|
51
|
+
/** Copy profil untuk audit; angka yang dipakai logika ada di baris relasional. */
|
|
44
52
|
export interface SubscriptionProfileSnapshot {
|
|
45
53
|
profileId: number;
|
|
46
54
|
kind: SubscriptionProfileKind;
|
|
@@ -49,14 +57,12 @@ export interface SubscriptionProfileSnapshot {
|
|
|
49
57
|
slot: number;
|
|
50
58
|
delayMilis?: number | null;
|
|
51
59
|
allowedMarketPlaces?: string[] | null;
|
|
52
|
-
type?: string | null;
|
|
53
60
|
}
|
|
54
61
|
/** Snapshot saat langganan dibuat; audit/display saja, bukan sumber logika. */
|
|
55
62
|
export interface SubscriptionSnapshot {
|
|
56
63
|
productKey: string;
|
|
57
64
|
productName: string;
|
|
58
65
|
priceCents: number;
|
|
59
|
-
interval: string | null;
|
|
60
66
|
profiles: SubscriptionProfileSnapshot[];
|
|
61
67
|
}
|
|
62
68
|
/** Representasi tabel `Subscription`. */
|
|
@@ -80,10 +86,11 @@ export type SubscriptionEntity = {
|
|
|
80
86
|
updatedAt: string;
|
|
81
87
|
updatedBy: string | null;
|
|
82
88
|
};
|
|
83
|
-
/** Langganan + produk
|
|
89
|
+
/** Langganan + produk dan profil bekunya. */
|
|
84
90
|
export type SubscriptionWithProduct = SubscriptionEntity & {
|
|
85
91
|
product?: ProductEntity;
|
|
86
|
-
|
|
87
|
-
|
|
92
|
+
searchProfiles?: SubscriptionSearchProfileEntity[];
|
|
93
|
+
channelProfiles?: SubscriptionChannelProfileEntity[];
|
|
94
|
+
bannedSellerProfiles?: SubscriptionBannedSellerProfileEntity[];
|
|
88
95
|
};
|
|
89
96
|
//# sourceMappingURL=subscription.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.types.d.ts","sourceRoot":"","sources":["../../src/types/subscription.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAC1B,UAAU,GACV,QAAQ,GACR,UAAU,GACV,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAEhE,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"subscription.types.d.ts","sourceRoot":"","sources":["../../src/types/subscription.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
import type { SubscriptionProfileKind, SubscriptionStatus } from './subscription.types';
|
|
2
|
-
/** Pemakaian satu profil langganan (
|
|
2
|
+
/** Pemakaian satu profil langganan (scanner atau channel). */
|
|
3
3
|
export interface UsageProfileMetric {
|
|
4
4
|
subscriptionProfileId: number;
|
|
5
5
|
kind: SubscriptionProfileKind;
|
|
6
6
|
key: string;
|
|
7
7
|
name: string;
|
|
8
8
|
used: number;
|
|
9
|
-
/** Slot efektif = slot
|
|
9
|
+
/** Slot efektif profil ini (= slot beku dari plan). */
|
|
10
10
|
slot: number;
|
|
11
|
-
|
|
12
|
-
addOnSlots: number;
|
|
13
|
-
/** Nilai beku profil, dipakai FE untuk menampilkan & mengisi form. */
|
|
11
|
+
/** Nilai beku profil scanner, dipakai FE untuk menampilkan & mengisi form. */
|
|
14
12
|
delayMilis?: number | null;
|
|
15
13
|
allowedMarketPlaces?: string[] | null;
|
|
16
|
-
type?: string | null;
|
|
17
14
|
}
|
|
18
15
|
/** Satu kelompok metrik: total pemakaian + rincian per profil. */
|
|
19
16
|
export interface UsageMetric {
|
|
@@ -29,9 +26,8 @@ export interface SubscriptionUsageSummary {
|
|
|
29
26
|
currentPeriodStart: string;
|
|
30
27
|
currentPeriodEnd: string;
|
|
31
28
|
remainingDays: number;
|
|
32
|
-
/** Total slot search tambahan dari pembelian addon aktif. */
|
|
33
|
-
addOnSlots: number;
|
|
34
29
|
searches: UsageMetric;
|
|
35
30
|
channels: UsageMetric;
|
|
31
|
+
bannedSellers?: UsageMetric;
|
|
36
32
|
}
|
|
37
33
|
//# sourceMappingURL=usage.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.types.d.ts","sourceRoot":"","sources":["../../src/types/usage.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAE9B,
|
|
1
|
+
{"version":3,"file":"usage.types.d.ts","sourceRoot":"","sources":["../../src/types/usage.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAE9B,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACvC;AAED,kEAAkE;AAClE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED,wEAAwE;AACxE,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,aAAa,CAAC,EAAE,WAAW,CAAC;CAC7B"}
|
|
@@ -11,10 +11,14 @@ export type UserChannelEntity = {
|
|
|
11
11
|
userId: number;
|
|
12
12
|
name: string;
|
|
13
13
|
other: Record<string, unknown> | null;
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Profil channel langganan yang membayar channel ini
|
|
16
|
+
* (tabel `SubscriptionChannelProfile`); null = channel lama, tidak dipakai.
|
|
17
|
+
*/
|
|
17
18
|
subscriptionProfileId?: number | null;
|
|
19
|
+
subscriptionId?: number | null;
|
|
20
|
+
subscriptionName?: string | null;
|
|
21
|
+
isSubscriptionActive?: boolean;
|
|
18
22
|
deleted: boolean;
|
|
19
23
|
createdAt: string;
|
|
20
24
|
createdBy: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-channel.types.d.ts","sourceRoot":"","sources":["../../src/types/user-channel.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,wCAAwC;AACxC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,
|
|
1
|
+
{"version":3,"file":"user-channel.types.d.ts","sourceRoot":"","sources":["../../src/types/user-channel.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,wCAAwC;AACxC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC"}
|