@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.
Files changed (33) hide show
  1. package/dist/index.d.ts +5 -3
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +8 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/seller-snapshot.d.ts +25 -0
  6. package/dist/seller-snapshot.d.ts.map +1 -0
  7. package/dist/seller-snapshot.js +93 -0
  8. package/dist/seller-snapshot.js.map +1 -0
  9. package/dist/types/banned-seller.types.d.ts +6 -0
  10. package/dist/types/banned-seller.types.d.ts.map +1 -1
  11. package/dist/types/engine.types.d.ts +2 -0
  12. package/dist/types/engine.types.d.ts.map +1 -1
  13. package/dist/types/item-filter.types.d.ts +13 -1
  14. package/dist/types/item-filter.types.d.ts.map +1 -1
  15. package/dist/types/item.types.d.ts +2 -0
  16. package/dist/types/item.types.d.ts.map +1 -1
  17. package/dist/types/product.types.d.ts +25 -13
  18. package/dist/types/product.types.d.ts.map +1 -1
  19. package/dist/types/scrape.types.d.ts +2 -0
  20. package/dist/types/scrape.types.d.ts.map +1 -1
  21. package/dist/types/search.types.d.ts +5 -3
  22. package/dist/types/search.types.d.ts.map +1 -1
  23. package/dist/types/seller-snapshot.types.d.ts +37 -0
  24. package/dist/types/seller-snapshot.types.d.ts.map +1 -0
  25. package/dist/types/seller-snapshot.types.js +3 -0
  26. package/dist/types/seller-snapshot.types.js.map +1 -0
  27. package/dist/types/subscription.types.d.ts +37 -30
  28. package/dist/types/subscription.types.d.ts.map +1 -1
  29. package/dist/types/usage.types.d.ts +4 -8
  30. package/dist/types/usage.types.d.ts.map +1 -1
  31. package/dist/types/user-channel.types.d.ts +7 -3
  32. package/dist/types/user-channel.types.d.ts.map +1 -1
  33. 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, ProductProfileKind, ProductFeature, ProductSearchProfileEntity, ProductChannelProfileEntity, ProductEntity, } from './types/product.types';
14
- export type { SubscriptionStatus, SubscriptionSource, SubscriptionProfileKind, SubscriptionItemStatus, SubscriptionProfileEntity, SubscriptionItemEntity, SubscriptionProfileSnapshot, SubscriptionSnapshot, SubscriptionEntity, SubscriptionWithProduct, } from './types/subscription.types';
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';
@@ -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,kBAAkB,EAClB,cAAc,EACd,0BAA0B,EAC1B,2BAA2B,EAC3B,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,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"}
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;AAErD,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,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,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
- bannedSellerKeys: ReadonlySet<string>;
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,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACvC,CAAC"}
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;AAErD,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,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
+ {"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. Nilai yang dipakai saat ini: `plan` (langganan utama) dan
3
- * `addon` (paket tambahan, mis. Extra Search). Sengaja bertipe string supaya
4
- * jenis produk baru tidak butuh perubahan tipe.
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' | 'addon';
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
- /** Profil channel yang dijual sebuah produk (tabel `ProductChannelProfile`). */
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
- /** Jenis channel; harus punya adapter di flipper-notification. */
42
- type: string;
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;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3C,2CAA2C;AAC3C,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD,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,gFAAgF;IAChF,IAAI,EAAE,kBAAkB,CAAC;IACzB,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,gFAAgF;AAChF,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,kEAAkE;IAClE,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,kEAAkE;IAClE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,0BAA0B,EAAE,CAAC;IAC7C,eAAe,EAAE,2BAA2B,EAAE,CAAC;IAC/C,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":"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;AAErD;;;;;;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,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"}
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
- /** Langganan yang membayar search ini; null = search lama, tidak dieksekusi. */
17
- subscriptionId?: number | null;
18
- /** Profil langganan (scanner) yang dipakai search ini; null = tidak dieksekusi. */
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,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mFAAmF;IACnF,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,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"}
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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=seller-snapshot.types.js.map
@@ -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
- export type SubscriptionProfileKind = 'search' | 'channel';
5
- export type SubscriptionItemStatus = 'active' | 'cancelled';
4
+ /** Kelompok entitlement di dalam satu langganan. */
5
+ export type SubscriptionProfileKind = 'search' | 'channel' | 'banned_seller';
6
6
  /**
7
- * Baris beku entitlement milik satu langganan (tabel `SubscriptionProfile`).
8
- * Dibuat sekali saat langganan dibuat; search/channel menempel ke baris ini,
9
- * bukan ke katalog — jadi edit katalog tidak pernah mengubah relasi.
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 SubscriptionProfileEntity {
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
- delayMilis: number | null;
22
- allowedMarketPlaces: string[] | null;
23
- type: string | null;
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
- /** Pembelian produk addon (tabel `SubscriptionItem`). */
28
- export interface SubscriptionItemEntity {
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
- productId: number;
32
- quantity: number;
33
- /** Harga satuan saat pembelian. */
34
- unitPriceCents: number;
35
- /** Profil langganan yang mendapat slot tambahan. */
36
- targetSubscriptionProfileId: number | null;
37
- extraSlots: number;
38
- status: SubscriptionItemStatus;
39
- startedAt: string;
40
- endedAt: string | null;
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 `SubscriptionProfile`. */
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, profil beku, dan pembelian addon-nya. */
89
+ /** Langganan + produk dan profil bekunya. */
84
90
  export type SubscriptionWithProduct = SubscriptionEntity & {
85
91
  product?: ProductEntity;
86
- profiles?: SubscriptionProfileEntity[];
87
- items?: SubscriptionItemEntity[];
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":"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"}
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 (search atau channel). */
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 dasar + total addon yang menempel ke profil ini. */
9
+ /** Slot efektif profil ini (= slot beku dari plan). */
10
10
  slot: number;
11
- baseSlot: number;
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,6DAA6D;AAC7D,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,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;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,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;CACvB"}
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
- /** Langganan yang membayar channel ini; null = channel lama, tidak dipakai kirim notifikasi. */
15
- subscriptionId?: number | null;
16
- /** Profil langganan (jenis channel) yang dipakai channel ini; null = tidak dipakai. */
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,gGAAgG;IAChG,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,uFAAuF;IACvF,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkerchain/flipper-entities",
3
- "version": "2.2.1",
3
+ "version": "2.4.0",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",