@winata/flipper-entities 0.0.0-stage → 2.7.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/logos.d.ts +14 -0
- package/dist/assets/logos.d.ts.map +1 -0
- package/dist/assets/logos.js +32 -0
- package/dist/assets/logos.js.map +1 -0
- package/dist/enums/marketplace.d.ts +16 -0
- package/dist/enums/marketplace.d.ts.map +1 -0
- package/dist/enums/marketplace.js +23 -0
- package/dist/enums/marketplace.js.map +1 -0
- package/dist/enums/notification-channel.enum.d.ts +8 -0
- package/dist/enums/notification-channel.enum.d.ts.map +1 -0
- package/dist/enums/notification-channel.enum.js +12 -0
- package/dist/enums/notification-channel.enum.js.map +1 -0
- package/dist/enums/search-type.enum.d.ts +27 -0
- package/dist/enums/search-type.enum.d.ts.map +1 -0
- package/dist/enums/search-type.enum.js +54 -0
- package/dist/enums/search-type.enum.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/search-filter.policy.d.ts +19 -0
- package/dist/search-filter.policy.d.ts.map +1 -0
- package/dist/search-filter.policy.js +84 -0
- package/dist/search-filter.policy.js.map +1 -0
- package/dist/types/banned-seller.types.d.ts +26 -0
- package/dist/types/banned-seller.types.d.ts.map +1 -0
- package/dist/types/banned-seller.types.js +3 -0
- package/dist/types/banned-seller.types.js.map +1 -0
- package/dist/types/billing-options.types.d.ts +6 -0
- package/dist/types/billing-options.types.d.ts.map +1 -0
- package/dist/types/billing-options.types.js +3 -0
- package/dist/types/billing-options.types.js.map +1 -0
- package/dist/types/core-options.types.d.ts +110 -0
- package/dist/types/core-options.types.d.ts.map +1 -0
- package/dist/types/core-options.types.js +3 -0
- package/dist/types/core-options.types.js.map +1 -0
- package/dist/types/engine.types.d.ts +68 -0
- package/dist/types/engine.types.d.ts.map +1 -0
- package/dist/types/engine.types.js +3 -0
- package/dist/types/engine.types.js.map +1 -0
- package/dist/types/item-check.types.d.ts +15 -0
- package/dist/types/item-check.types.d.ts.map +1 -0
- package/dist/types/item-check.types.js +3 -0
- package/dist/types/item-check.types.js.map +1 -0
- package/dist/types/item-filter.types.d.ts +30 -0
- package/dist/types/item-filter.types.d.ts.map +1 -0
- package/dist/types/item-filter.types.js +3 -0
- package/dist/types/item-filter.types.js.map +1 -0
- package/dist/types/item.types.d.ts +41 -0
- package/dist/types/item.types.d.ts.map +1 -0
- package/dist/types/item.types.js +3 -0
- package/dist/types/item.types.js.map +1 -0
- package/dist/types/notification.types.d.ts +35 -0
- package/dist/types/notification.types.d.ts.map +1 -0
- package/dist/types/notification.types.js +3 -0
- package/dist/types/notification.types.js.map +1 -0
- package/dist/types/option.types.d.ts +13 -0
- package/dist/types/option.types.d.ts.map +1 -0
- package/dist/types/option.types.js +3 -0
- package/dist/types/option.types.js.map +1 -0
- package/dist/types/product.types.d.ts +99 -0
- package/dist/types/product.types.d.ts.map +1 -0
- package/dist/types/product.types.js +3 -0
- package/dist/types/product.types.js.map +1 -0
- package/dist/types/scrape.types.d.ts +43 -0
- package/dist/types/scrape.types.d.ts.map +1 -0
- package/dist/types/scrape.types.js +3 -0
- package/dist/types/scrape.types.js.map +1 -0
- package/dist/types/search-jsonb.types.d.ts +95 -0
- package/dist/types/search-jsonb.types.d.ts.map +1 -0
- package/dist/types/search-jsonb.types.js +3 -0
- package/dist/types/search-jsonb.types.js.map +1 -0
- package/dist/types/search.types.d.ts +47 -0
- package/dist/types/search.types.d.ts.map +1 -0
- package/dist/types/search.types.js +3 -0
- package/dist/types/search.types.js.map +1 -0
- package/dist/types/seller-snapshot.types.d.ts +53 -0
- package/dist/types/seller-snapshot.types.d.ts.map +1 -0
- package/dist/types/seller-snapshot.types.js +3 -0
- package/dist/types/seller-snapshot.types.js.map +1 -0
- package/dist/types/seller-summary.types.d.ts +35 -0
- package/dist/types/seller-summary.types.d.ts.map +1 -0
- package/dist/types/seller-summary.types.js +3 -0
- package/dist/types/seller-summary.types.js.map +1 -0
- package/dist/types/subscription.types.d.ts +120 -0
- package/dist/types/subscription.types.d.ts.map +1 -0
- package/dist/types/subscription.types.js +3 -0
- package/dist/types/subscription.types.js.map +1 -0
- package/dist/types/usage.types.d.ts +50 -0
- package/dist/types/usage.types.d.ts.map +1 -0
- package/dist/types/usage.types.js +3 -0
- package/dist/types/usage.types.js.map +1 -0
- package/dist/types/user-channel.types.d.ts +28 -0
- package/dist/types/user-channel.types.d.ts.map +1 -0
- package/dist/types/user-channel.types.js +3 -0
- package/dist/types/user-channel.types.js.map +1 -0
- package/dist/types/user-item.types.d.ts +15 -0
- package/dist/types/user-item.types.d.ts.map +1 -0
- package/dist/types/user-item.types.js +3 -0
- package/dist/types/user-item.types.js.map +1 -0
- package/dist/types/user.types.d.ts +30 -0
- package/dist/types/user.types.d.ts.map +1 -0
- package/dist/types/user.types.js +3 -0
- package/dist/types/user.types.js.map +1 -0
- package/dist/utilities/index.d.ts +9 -0
- package/dist/utilities/index.d.ts.map +1 -0
- package/dist/utilities/index.js +21 -0
- package/dist/utilities/index.js.map +1 -0
- package/dist/utilities/scalar.d.ts +12 -0
- package/dist/utilities/scalar.d.ts.map +1 -0
- package/dist/utilities/scalar.js +45 -0
- package/dist/utilities/scalar.js.map +1 -0
- package/dist/utilities/seller-snapshot.d.ts +41 -0
- package/dist/utilities/seller-snapshot.d.ts.map +1 -0
- package/dist/utilities/seller-snapshot.js +126 -0
- package/dist/utilities/seller-snapshot.js.map +1 -0
- package/dist/utilities/seller-summary.d.ts +22 -0
- package/dist/utilities/seller-summary.d.ts.map +1 -0
- package/dist/utilities/seller-summary.js +85 -0
- package/dist/utilities/seller-summary.js.map +1 -0
- package/package.json +37 -4
- package/utilities/package.json +5 -0
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-options.types.d.ts","sourceRoot":"","sources":["../../src/types/core-options.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-options.types.js","sourceRoot":"","sources":["../../src/types/core-options.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { CoreEntity, ProxyOptions } from './core-options.types';
|
|
2
|
+
import type { SearchWithItems } from './scrape.types';
|
|
3
|
+
import type { SearchWithUser } from './search.types';
|
|
4
|
+
import type { SellerSnapshotJSONB } from './seller-snapshot.types';
|
|
5
|
+
/** Payload RMQ `engine.search`: orchestrator core -> engine. Search saja, tanpa item. */
|
|
6
|
+
export type EngineSearchRequest = {
|
|
7
|
+
option: CoreEntity;
|
|
8
|
+
searches: SearchWithUser[];
|
|
9
|
+
};
|
|
10
|
+
/** Env yang di-inject ke child process engine (via JSON argv). */
|
|
11
|
+
export type EngineEnv = {
|
|
12
|
+
NODE_ENV: string;
|
|
13
|
+
HOSTNAME: string;
|
|
14
|
+
IS_USE_PROXY: boolean;
|
|
15
|
+
PAGE_TAB_PARTITION_SIZE: number;
|
|
16
|
+
SEARCH_ITEM_PER_BROWSER_CHUNK_SIZE: number;
|
|
17
|
+
SCREENSHOT_ERROR_DIR: string;
|
|
18
|
+
SCREENSHOT_PAGE_DIR: string;
|
|
19
|
+
REDIS_HOST: string;
|
|
20
|
+
REDIS_PORT: number;
|
|
21
|
+
REDIS_PASSWORD: string;
|
|
22
|
+
};
|
|
23
|
+
/** Input child process engine (`main.ts` -> scraper). */
|
|
24
|
+
export type EngineChildInput = {
|
|
25
|
+
option: CoreEntity;
|
|
26
|
+
searches: SearchWithUser[];
|
|
27
|
+
env: EngineEnv;
|
|
28
|
+
};
|
|
29
|
+
/** Input use case scraping di child process. */
|
|
30
|
+
export type EngineScrapeInput = {
|
|
31
|
+
searches: SearchWithUser[];
|
|
32
|
+
env: EngineEnv;
|
|
33
|
+
proxy: ProxyOptions;
|
|
34
|
+
};
|
|
35
|
+
export type ScrapeTotals = {
|
|
36
|
+
new: number;
|
|
37
|
+
exist: number;
|
|
38
|
+
duplicate: number;
|
|
39
|
+
invalid: number;
|
|
40
|
+
};
|
|
41
|
+
/** Ringkasan run dari child process (pesan `scrape-status`). */
|
|
42
|
+
export type ScrapeStatus = {
|
|
43
|
+
ok?: boolean;
|
|
44
|
+
listCount?: number;
|
|
45
|
+
totals?: ScrapeTotals;
|
|
46
|
+
durationMs?: number;
|
|
47
|
+
};
|
|
48
|
+
/** Envelope IPC parent <-> child process engine. */
|
|
49
|
+
export type ScrapeIpcData = boolean | ScrapeStatus | SearchWithItems | SearchWithItems[];
|
|
50
|
+
export type ScrapeIpcMessage = {
|
|
51
|
+
type: string;
|
|
52
|
+
id: number;
|
|
53
|
+
data: ScrapeIpcData;
|
|
54
|
+
};
|
|
55
|
+
/** Hasil detail scraping (obscura) untuk satu listing. */
|
|
56
|
+
export type ScrapeDetailData = {
|
|
57
|
+
description: string | null;
|
|
58
|
+
image: string | null;
|
|
59
|
+
creationTime: number | null;
|
|
60
|
+
reverseGeocode: Record<string, unknown> | null;
|
|
61
|
+
buyLocation: Record<string, unknown> | null;
|
|
62
|
+
productDetailsType: string | null;
|
|
63
|
+
sellerSnapshot: SellerSnapshotJSONB | null;
|
|
64
|
+
scrapeMs?: number;
|
|
65
|
+
extractorSource?: string | null;
|
|
66
|
+
attempt?: number;
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=engine.types.d.ts.map
|
|
@@ -0,0 +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;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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.types.js","sourceRoot":"","sources":["../../src/types/engine.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { SearchWithItems } from './scrape.types';
|
|
2
|
+
export type ItemFilterKey = 'name' | 'price' | 'year' | 'description' | 'rating' | 'seller' | 'geofencing';
|
|
3
|
+
export type InvalidFilterReason = {
|
|
4
|
+
key: ItemFilterKey;
|
|
5
|
+
condition?: string;
|
|
6
|
+
value?: unknown;
|
|
7
|
+
reason: string;
|
|
8
|
+
};
|
|
9
|
+
export type ItemCheckStatus = 'new' | 'new-but-duplicate-with-other-search' | 'already-exist';
|
|
10
|
+
/** Payload RMQ `core.item.checkItems`: filter mana yang dijalankan untuk satu search. */
|
|
11
|
+
export type CheckItemsRequest = {
|
|
12
|
+
filterKeys: ItemFilterKey[];
|
|
13
|
+
search: SearchWithItems;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=item-check.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-check.types.d.ts","sourceRoot":"","sources":["../../src/types/item-check.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,OAAO,GACP,MAAM,GACN,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,YAAY,CAAC;AAEjB,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,aAAa,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB,KAAK,GACL,qCAAqC,GACrC,eAAe,CAAC;AAEpB,yFAAyF;AACzF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-check.types.js","sourceRoot":"","sources":["../../src/types/item-check.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ItemFilterKey } from './item-check.types';
|
|
2
|
+
import type { SellerIdentityProperty } from './seller-snapshot.types';
|
|
3
|
+
import type { UserWithRelations } from './user.types';
|
|
4
|
+
export type ItemFilterResult = {
|
|
5
|
+
valid: boolean;
|
|
6
|
+
key?: ItemFilterKey;
|
|
7
|
+
condition?: string;
|
|
8
|
+
value?: unknown;
|
|
9
|
+
reason?: string;
|
|
10
|
+
info?: string;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Satu ban yang siap dicocokkan. Map-nya ber-key
|
|
14
|
+
* `${prefix mekanisme}:${marketplace huruf kecil}:${nilai}` (lihat
|
|
15
|
+
* `toSellerMatchKey`) — `S` untuk ban bersnapshot, `L` untuk ban lama tanpa
|
|
16
|
+
* snapshot, supaya kedua mekanisme tidak pernah saling cocok. Di dalam
|
|
17
|
+
* mekanisme `snapshot` sengaja tidak dipisah per property, karena matching
|
|
18
|
+
* lintas property diinginkan (id listing vs `marketplace_user_profile.id` ban
|
|
19
|
+
* tetap kena).
|
|
20
|
+
*/
|
|
21
|
+
export type BannedSellerMatch = {
|
|
22
|
+
banId: number;
|
|
23
|
+
property: SellerIdentityProperty;
|
|
24
|
+
sellerName: string | null;
|
|
25
|
+
};
|
|
26
|
+
export type ItemFilterContext = {
|
|
27
|
+
user?: UserWithRelations;
|
|
28
|
+
bannedSellers: ReadonlyMap<string, BannedSellerMatch>;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=item-filter.types.d.ts.map
|
|
@@ -0,0 +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,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;;;;;;;;GAQG;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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-filter.types.js","sourceRoot":"","sources":["../../src/types/item-filter.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { SearchWithUser } from './search.types';
|
|
2
|
+
import type { SellerSnapshotJSONB } from './seller-snapshot.types';
|
|
3
|
+
import type { SellerSummaryJSONB } from './seller-summary.types';
|
|
4
|
+
import type { SearchType } from '../enums/search-type.enum';
|
|
5
|
+
/** Representasi tabel `Item`. */
|
|
6
|
+
export type ItemEntity = {
|
|
7
|
+
id: number;
|
|
8
|
+
searchId: number;
|
|
9
|
+
userId: number;
|
|
10
|
+
marketPlaceId: string | null;
|
|
11
|
+
marketPlaceName: string | null;
|
|
12
|
+
sellerId: string | null;
|
|
13
|
+
sellerName: string | null;
|
|
14
|
+
sellerSnapshot?: SellerSnapshotJSONB | null;
|
|
15
|
+
/**
|
|
16
|
+
* Ringkasan seller (avatar, rating, verified) — TURUNAN `sellerSnapshot`
|
|
17
|
+
* saat baca, bukan kolom DB.
|
|
18
|
+
*/
|
|
19
|
+
sellerOther?: SellerSummaryJSONB | null;
|
|
20
|
+
type: SearchType | null;
|
|
21
|
+
name: string | null;
|
|
22
|
+
image: string | null;
|
|
23
|
+
link: string | null;
|
|
24
|
+
price: number | null;
|
|
25
|
+
formattedAmount: string | null;
|
|
26
|
+
location: string | null;
|
|
27
|
+
year: number | null;
|
|
28
|
+
other: Record<string, unknown> | null;
|
|
29
|
+
description: string | null;
|
|
30
|
+
isValid: boolean;
|
|
31
|
+
deleted: boolean;
|
|
32
|
+
createdAt: string;
|
|
33
|
+
createdBy: string | null;
|
|
34
|
+
updatedAt: string;
|
|
35
|
+
updatedBy: string | null;
|
|
36
|
+
};
|
|
37
|
+
/** Item + search pemiliknya (dipakai filter core). */
|
|
38
|
+
export type ItemWithSearch = ItemEntity & {
|
|
39
|
+
search: SearchWithUser | null;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=item.types.d.ts.map
|
|
@@ -0,0 +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;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,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,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC5C;;;OAGG;IACH,WAAW,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item.types.js","sourceRoot":"","sources":["../../src/types/item.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { NotificationChannelEnum } from '../enums/notification-channel.enum';
|
|
2
|
+
import type { UserWithRelations } from './user.types';
|
|
3
|
+
export interface NotificationAction {
|
|
4
|
+
label: string;
|
|
5
|
+
url: string;
|
|
6
|
+
}
|
|
7
|
+
export interface NotificationOverrides {
|
|
8
|
+
email?: {
|
|
9
|
+
html?: string;
|
|
10
|
+
subject?: string;
|
|
11
|
+
};
|
|
12
|
+
telegram?: {
|
|
13
|
+
parseMode?: 'HTML' | 'MarkdownV2';
|
|
14
|
+
replyMarkup?: unknown;
|
|
15
|
+
};
|
|
16
|
+
webApp?: {
|
|
17
|
+
icon?: string;
|
|
18
|
+
priority?: 'info' | 'warning' | 'urgent';
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export interface MultiChannelNotificationPayload {
|
|
22
|
+
user: UserWithRelations;
|
|
23
|
+
channels: NotificationChannelEnum[];
|
|
24
|
+
title?: string;
|
|
25
|
+
message: string;
|
|
26
|
+
action?: NotificationAction;
|
|
27
|
+
overrides?: NotificationOverrides;
|
|
28
|
+
}
|
|
29
|
+
export interface MultiChannelDeliveryResult {
|
|
30
|
+
channel: NotificationChannelEnum;
|
|
31
|
+
success: boolean;
|
|
32
|
+
messageId?: string;
|
|
33
|
+
error?: string;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=notification.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification.types.d.ts","sourceRoot":"","sources":["../../src/types/notification.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACxE,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAA;KAAE,CAAC;CACtE;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,SAAS,CAAC,EAAE,qBAAqB,CAAC;CACnC;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,uBAAuB,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification.types.js","sourceRoot":"","sources":["../../src/types/notification.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CoreValueJSONB } from './search-jsonb.types';
|
|
2
|
+
/** Representasi tabel `Option`. */
|
|
3
|
+
export type OptionEntity = {
|
|
4
|
+
id: number;
|
|
5
|
+
name: string;
|
|
6
|
+
value: CoreValueJSONB | null;
|
|
7
|
+
deleted: boolean;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
createdBy: string | null;
|
|
10
|
+
updatedAt: string;
|
|
11
|
+
updatedBy: string | null;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=option.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option.types.d.ts","sourceRoot":"","sources":["../../src/types/option.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAC7B,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option.types.js","sourceRoot":"","sources":["../../src/types/option.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
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`.
|
|
6
|
+
*/
|
|
7
|
+
export type ProductKind = 'plan' | 'retail';
|
|
8
|
+
/** Benefit marketing untuk kartu pricing. */
|
|
9
|
+
export interface ProductFeature {
|
|
10
|
+
key: string;
|
|
11
|
+
label: string;
|
|
12
|
+
included: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** Profil slot per marketplace yang dijual sebuah scanner (tabel `ProductSearchMarketPlaceProfile`). */
|
|
15
|
+
export interface ProductSearchMarketPlaceProfileEntity {
|
|
16
|
+
id: number;
|
|
17
|
+
productSearchProfileId: number;
|
|
18
|
+
marketplace: string;
|
|
19
|
+
slot: number;
|
|
20
|
+
deleted?: boolean;
|
|
21
|
+
createdAt?: string;
|
|
22
|
+
updatedAt?: string;
|
|
23
|
+
}
|
|
24
|
+
/** Profil search yang dijual sebuah produk (tabel `ProductSearchProfile`). */
|
|
25
|
+
export interface ProductSearchProfileEntity {
|
|
26
|
+
id: number;
|
|
27
|
+
productId: number;
|
|
28
|
+
/** Slug stabil, dipakai baris langganan untuk menunjuk profil ini. */
|
|
29
|
+
key: string;
|
|
30
|
+
name: string;
|
|
31
|
+
/** Deskripsi/keterangan durasi pencarian (mis. '10 Menit durasi pencarian', 'Blazing fast'). */
|
|
32
|
+
description?: string | null;
|
|
33
|
+
/** Slot total dasar / fallback. */
|
|
34
|
+
slot?: number;
|
|
35
|
+
/** Delay antar-scrape (ms) yang dipakai search di profil ini. */
|
|
36
|
+
delayMilis: number;
|
|
37
|
+
/** Efek visual kartu di UI: basic, special-gradient, mythical. */
|
|
38
|
+
specialEffect?: 'basic' | 'special-gradient' | 'mythical';
|
|
39
|
+
/** Marketplace yang boleh dipakai search di profil ini (legacy). */
|
|
40
|
+
allowedMarketPlaces?: string[];
|
|
41
|
+
/** Rincian slot per marketplace. */
|
|
42
|
+
marketplaceProfiles?: ProductSearchMarketPlaceProfileEntity[];
|
|
43
|
+
deleted: boolean;
|
|
44
|
+
createdAt: string;
|
|
45
|
+
updatedAt: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Profil channel yang dijual sebuah produk (tabel `ProductChannelProfile`).
|
|
49
|
+
* Agnostik terhadap jenis channel: jenis (mis. `telegram`) dipilih user saat
|
|
50
|
+
* membuat channel dan divalidasi terhadap `SUPPORTED_CHANNEL_TYPES`.
|
|
51
|
+
*/
|
|
52
|
+
export interface ProductChannelProfileEntity {
|
|
53
|
+
id: number;
|
|
54
|
+
productId: number;
|
|
55
|
+
key: string;
|
|
56
|
+
name: string;
|
|
57
|
+
slot: number;
|
|
58
|
+
deleted: boolean;
|
|
59
|
+
createdAt: string;
|
|
60
|
+
updatedAt: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Profil banned seller yang dijual sebuah produk (tabel `ProductBannedSellerProfile`).
|
|
64
|
+
*/
|
|
65
|
+
export interface ProductBannedSellerProfileEntity {
|
|
66
|
+
id: number;
|
|
67
|
+
productId: number;
|
|
68
|
+
key: string;
|
|
69
|
+
name: string;
|
|
70
|
+
slot: number;
|
|
71
|
+
deleted: boolean;
|
|
72
|
+
createdAt: string;
|
|
73
|
+
updatedAt: string;
|
|
74
|
+
}
|
|
75
|
+
/** Representasi tabel `Product` — satu katalog untuk semua yang dijual. */
|
|
76
|
+
export type ProductEntity = {
|
|
77
|
+
id: number;
|
|
78
|
+
key: string;
|
|
79
|
+
name: string;
|
|
80
|
+
description: string | null;
|
|
81
|
+
kind: string;
|
|
82
|
+
priceCents: number;
|
|
83
|
+
/** Harga coret dekoratif jika ada diskon/promo. */
|
|
84
|
+
stripePriceCents?: number | null;
|
|
85
|
+
currency: string;
|
|
86
|
+
sortOrder: number;
|
|
87
|
+
isActive: boolean;
|
|
88
|
+
isPublic?: boolean;
|
|
89
|
+
features: ProductFeature[] | null;
|
|
90
|
+
searchProfiles: ProductSearchProfileEntity[];
|
|
91
|
+
channelProfiles: ProductChannelProfileEntity[];
|
|
92
|
+
bannedSellerProfiles?: ProductBannedSellerProfileEntity[];
|
|
93
|
+
deleted: boolean;
|
|
94
|
+
createdAt: string;
|
|
95
|
+
createdBy: string | null;
|
|
96
|
+
updatedAt: string;
|
|
97
|
+
updatedBy: string | null;
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=product.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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,wGAAwG;AACxG,MAAM,WAAW,qCAAqC;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;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,gGAAgG;IAChG,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,aAAa,CAAC,EAAE,OAAO,GAAG,kBAAkB,GAAG,UAAU,CAAC;IAC1D,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,oCAAoC;IACpC,mBAAmB,CAAC,EAAE,qCAAqC,EAAE,CAAC;IAC9D,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,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product.types.js","sourceRoot":"","sources":["../../src/types/product.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { InvalidFilterReason, ItemCheckStatus } from './item-check.types';
|
|
2
|
+
import type { SearchWithUser } from './search.types';
|
|
3
|
+
import type { SellerSnapshotJSONB } from './seller-snapshot.types';
|
|
4
|
+
import type { SearchType } from '../enums/search-type.enum';
|
|
5
|
+
/**
|
|
6
|
+
* Item hasil scrape yang belum tentu ada di DB (`id` null sampai core simpan).
|
|
7
|
+
* Satu-satunya bentuk item yang lalu-lalang di RMQ/IPC.
|
|
8
|
+
*
|
|
9
|
+
* `status`/`isValid`/`filters` diisi core: `status` oleh checkExist,
|
|
10
|
+
* `isValid` + `filters` oleh checkItems.
|
|
11
|
+
*/
|
|
12
|
+
export type ScrapedItem = {
|
|
13
|
+
id?: number | null;
|
|
14
|
+
searchId: number;
|
|
15
|
+
userId: number;
|
|
16
|
+
marketPlaceId: string;
|
|
17
|
+
marketPlaceName?: string | null;
|
|
18
|
+
sellerId?: string | null;
|
|
19
|
+
sellerName?: string | null;
|
|
20
|
+
sellerSnapshot?: SellerSnapshotJSONB | null;
|
|
21
|
+
type?: SearchType | null;
|
|
22
|
+
name?: string | null;
|
|
23
|
+
image?: string | null;
|
|
24
|
+
link?: string | null;
|
|
25
|
+
price?: number | null;
|
|
26
|
+
formattedAmount?: string | null;
|
|
27
|
+
location?: string | null;
|
|
28
|
+
year?: number | null;
|
|
29
|
+
description?: string | null;
|
|
30
|
+
other?: Record<string, unknown> | null;
|
|
31
|
+
status?: ItemCheckStatus;
|
|
32
|
+
isValid?: boolean;
|
|
33
|
+
filters?: InvalidFilterReason[];
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Envelope tunggal semua koneksi RMQ: search pemilik + item-itemnya.
|
|
37
|
+
* `engine.search` mengisi `searches` tanpa `items`; balikannya membawa `items`.
|
|
38
|
+
* Untuk AI, `items` selalu berisi tepat 1 item.
|
|
39
|
+
*/
|
|
40
|
+
export type SearchWithItems = SearchWithUser & {
|
|
41
|
+
items: ScrapedItem[];
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=scrape.types.d.ts.map
|
|
@@ -0,0 +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;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D;;;;;;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,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrape.types.js","sourceRoot":"","sources":["../../src/types/scrape.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { SearchType } from '../enums/search-type.enum';
|
|
2
|
+
import type { MatcherExpression } from './core-options.types';
|
|
3
|
+
export type LocationJSONB = {
|
|
4
|
+
name: string;
|
|
5
|
+
latitude: number;
|
|
6
|
+
longitude: number;
|
|
7
|
+
radiusKm: number;
|
|
8
|
+
};
|
|
9
|
+
export type MarketPlacePropJSONB = Record<string, {
|
|
10
|
+
type: string;
|
|
11
|
+
category: string;
|
|
12
|
+
subCategory?: string;
|
|
13
|
+
}>;
|
|
14
|
+
export type ItemFilterImage = {
|
|
15
|
+
noEmptyValue?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export type ItemFilterLink = {
|
|
18
|
+
noEmptyValue?: boolean;
|
|
19
|
+
};
|
|
20
|
+
export type ItemFilterLocation = {
|
|
21
|
+
name?: {
|
|
22
|
+
noEmptyValue?: boolean;
|
|
23
|
+
contain?: MatcherExpression;
|
|
24
|
+
notContain?: MatcherExpression;
|
|
25
|
+
};
|
|
26
|
+
geoFencing?: {
|
|
27
|
+
active?: boolean;
|
|
28
|
+
noEmptyValue?: boolean;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export type ItemFilterName = {
|
|
32
|
+
noEmptyValue?: boolean;
|
|
33
|
+
contain?: MatcherExpression;
|
|
34
|
+
notContain?: MatcherExpression;
|
|
35
|
+
};
|
|
36
|
+
export type ItemFilterPrice = {
|
|
37
|
+
noEmptyValue?: boolean;
|
|
38
|
+
minPrice?: number;
|
|
39
|
+
maxPrice?: number;
|
|
40
|
+
};
|
|
41
|
+
export type ItemFilterYear = {
|
|
42
|
+
minYear?: number;
|
|
43
|
+
maxYear?: number;
|
|
44
|
+
};
|
|
45
|
+
export type ItemFilterDescription = {
|
|
46
|
+
noEmptyValue?: boolean;
|
|
47
|
+
contain?: MatcherExpression;
|
|
48
|
+
notContain?: MatcherExpression;
|
|
49
|
+
};
|
|
50
|
+
export type ItemFilterRating = {
|
|
51
|
+
noEmptyValue?: boolean;
|
|
52
|
+
minRating?: number;
|
|
53
|
+
};
|
|
54
|
+
export type ItemFilterScam = {
|
|
55
|
+
noEmptyValue?: boolean;
|
|
56
|
+
rejectScam?: boolean;
|
|
57
|
+
maxScam?: number;
|
|
58
|
+
};
|
|
59
|
+
export type ItemFilterJSONB = {
|
|
60
|
+
type?: SearchType;
|
|
61
|
+
image?: ItemFilterImage;
|
|
62
|
+
link?: ItemFilterLink;
|
|
63
|
+
location?: ItemFilterLocation;
|
|
64
|
+
name?: ItemFilterName;
|
|
65
|
+
price?: ItemFilterPrice;
|
|
66
|
+
year?: ItemFilterYear;
|
|
67
|
+
description?: ItemFilterDescription;
|
|
68
|
+
rating?: ItemFilterRating;
|
|
69
|
+
scam?: ItemFilterScam;
|
|
70
|
+
radiusKm?: number;
|
|
71
|
+
};
|
|
72
|
+
export type CoreValueJSONB = {
|
|
73
|
+
proxy?: {
|
|
74
|
+
host: string;
|
|
75
|
+
port: number;
|
|
76
|
+
username: string;
|
|
77
|
+
password: string;
|
|
78
|
+
};
|
|
79
|
+
orchestrator?: {
|
|
80
|
+
active: boolean;
|
|
81
|
+
orchestratorInterval: number;
|
|
82
|
+
orchestratorChunkSize: number;
|
|
83
|
+
};
|
|
84
|
+
engine?: {
|
|
85
|
+
pageTabPartitionSize: number;
|
|
86
|
+
redisTtlSeconds: number;
|
|
87
|
+
searchItemChunk: number;
|
|
88
|
+
pageTimeoutMiliseconds: number;
|
|
89
|
+
};
|
|
90
|
+
defaultValue?: {
|
|
91
|
+
itemFilter: ItemFilterJSONB;
|
|
92
|
+
marketPlaceProp: MarketPlacePropJSONB;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=search-jsonb.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-jsonb.types.d.ts","sourceRoot":"","sources":["../../src/types/search-jsonb.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-jsonb.types.js","sourceRoot":"","sources":["../../src/types/search-jsonb.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { LocationJSONB, MarketPlacePropJSONB, ItemFilterJSONB } from './search-jsonb.types';
|
|
2
|
+
import type { UserWithRelations } from './user.types';
|
|
3
|
+
import type { FrozenSearchProfileEntity } from './subscription.types';
|
|
4
|
+
import type { SearchType } from '../enums/search-type.enum';
|
|
5
|
+
/** Representasi tabel `Search`. */
|
|
6
|
+
export type SearchEntity = {
|
|
7
|
+
id: number;
|
|
8
|
+
userId: number;
|
|
9
|
+
title: string;
|
|
10
|
+
type: SearchType;
|
|
11
|
+
typeLabelTranslation?: string;
|
|
12
|
+
marketPlaceProp: MarketPlacePropJSONB | null;
|
|
13
|
+
location: LocationJSONB | null;
|
|
14
|
+
targetName: string;
|
|
15
|
+
marketPlaces: string[];
|
|
16
|
+
lastScrappedEpoch: string | null;
|
|
17
|
+
filter: ItemFilterJSONB | null;
|
|
18
|
+
/**
|
|
19
|
+
* Profil scanner langganan yang membayar search ini
|
|
20
|
+
* (tabel `SubscriptionSearchProfile`); null = search lama, tidak dieksekusi.
|
|
21
|
+
*/
|
|
22
|
+
subscriptionProfileId?: number | null;
|
|
23
|
+
subscriptionId?: number | null;
|
|
24
|
+
subscriptionName?: string | null;
|
|
25
|
+
isSubscriptionActive?: boolean;
|
|
26
|
+
/** Menandakan search berjalan (1 = berjalan, 0 = berhenti). */
|
|
27
|
+
isStart?: number;
|
|
28
|
+
deleted: boolean;
|
|
29
|
+
createdAt: string;
|
|
30
|
+
createdBy: string | null;
|
|
31
|
+
updatedAt: string;
|
|
32
|
+
updatedBy: string | null;
|
|
33
|
+
};
|
|
34
|
+
/** Search + user pemiliknya. */
|
|
35
|
+
export type SearchWithUser = SearchEntity & {
|
|
36
|
+
user?: UserWithRelations;
|
|
37
|
+
};
|
|
38
|
+
/** Data scanner yang ditempel ke search — subset profil scanner beku. */
|
|
39
|
+
export type SearchScannerInfo = Pick<FrozenSearchProfileEntity, 'key' | 'name' | 'specialEffect' | 'delayMilis'>;
|
|
40
|
+
/**
|
|
41
|
+
* Search + scanner pemilik slot-nya. Dipakai `GET /searches` supaya FE tidak
|
|
42
|
+
* perlu call `GET /plans/usage` hanya untuk menampilkan tipe scanner.
|
|
43
|
+
*/
|
|
44
|
+
export type SearchWithScanner = SearchEntity & {
|
|
45
|
+
scanner?: SearchScannerInfo | null;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=search.types.d.ts.map
|
|
@@ -0,0 +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;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,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,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,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,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,gCAAgC;AAChC,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG;IAC1C,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,yBAAyB,EACzB,KAAK,GAAG,MAAM,GAAG,eAAe,GAAG,YAAY,CAChD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC7C,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACpC,CAAC"}
|