@endora-commerce/mod-price-lists 0.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +59 -0
- package/dist/admin/components/ApplicationRuleBuilder.d.ts +24 -0
- package/dist/admin/components/ApplicationRuleBuilder.d.ts.map +1 -0
- package/dist/admin/components/ApplicationRuleBuilder.js +249 -0
- package/dist/admin/components/ApplicationRuleBuilder.js.map +1 -0
- package/dist/admin/components/BracketGrid.d.ts +29 -0
- package/dist/admin/components/BracketGrid.d.ts.map +1 -0
- package/dist/admin/components/BracketGrid.js +252 -0
- package/dist/admin/components/BracketGrid.js.map +1 -0
- package/dist/admin/components/DisplayModeOverrideRow.d.ts +46 -0
- package/dist/admin/components/DisplayModeOverrideRow.d.ts.map +1 -0
- package/dist/admin/components/DisplayModeOverrideRow.js +109 -0
- package/dist/admin/components/DisplayModeOverrideRow.js.map +1 -0
- package/dist/admin/components/LinkedPriceListsPanel.d.ts +55 -0
- package/dist/admin/components/LinkedPriceListsPanel.d.ts.map +1 -0
- package/dist/admin/components/LinkedPriceListsPanel.js +131 -0
- package/dist/admin/components/LinkedPriceListsPanel.js.map +1 -0
- package/dist/admin/index.d.ts +34 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +119 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/pages/DisplayModeOverridesPage.d.ts +25 -0
- package/dist/admin/pages/DisplayModeOverridesPage.d.ts.map +1 -0
- package/dist/admin/pages/DisplayModeOverridesPage.js +266 -0
- package/dist/admin/pages/DisplayModeOverridesPage.js.map +1 -0
- package/dist/admin/pages/PriceListDetailPage.d.ts +23 -0
- package/dist/admin/pages/PriceListDetailPage.d.ts.map +1 -0
- package/dist/admin/pages/PriceListDetailPage.js +421 -0
- package/dist/admin/pages/PriceListDetailPage.js.map +1 -0
- package/dist/admin/pages/PriceListsPage.d.ts +17 -0
- package/dist/admin/pages/PriceListsPage.d.ts.map +1 -0
- package/dist/admin/pages/PriceListsPage.js +198 -0
- package/dist/admin/pages/PriceListsPage.js.map +1 -0
- package/dist/admin/zones/CategoryDisplayMode.d.ts +27 -0
- package/dist/admin/zones/CategoryDisplayMode.d.ts.map +1 -0
- package/dist/admin/zones/CategoryDisplayMode.js +11 -0
- package/dist/admin/zones/CategoryDisplayMode.js.map +1 -0
- package/dist/admin/zones/OrganizationDisplayMode.d.ts +36 -0
- package/dist/admin/zones/OrganizationDisplayMode.d.ts.map +1 -0
- package/dist/admin/zones/OrganizationDisplayMode.js +12 -0
- package/dist/admin/zones/OrganizationDisplayMode.js.map +1 -0
- package/dist/admin/zones/ProductLinkedPriceLists.d.ts +16 -0
- package/dist/admin/zones/ProductLinkedPriceLists.d.ts.map +1 -0
- package/dist/admin/zones/ProductLinkedPriceLists.js +7 -0
- package/dist/admin/zones/ProductLinkedPriceLists.js.map +1 -0
- package/dist/backend/entities/price-display-mode-override.entity.d.ts +23 -0
- package/dist/backend/entities/price-display-mode-override.entity.d.ts.map +1 -0
- package/dist/backend/entities/price-display-mode-override.entity.js +58 -0
- package/dist/backend/entities/price-display-mode-override.entity.js.map +1 -0
- package/dist/backend/entities/price-list-price-bracket.entity.d.ts +26 -0
- package/dist/backend/entities/price-list-price-bracket.entity.d.ts.map +1 -0
- package/dist/backend/entities/price-list-price-bracket.entity.js +73 -0
- package/dist/backend/entities/price-list-price-bracket.entity.js.map +1 -0
- package/dist/backend/entities/price-list-product.entity.d.ts +15 -0
- package/dist/backend/entities/price-list-product.entity.d.ts.map +1 -0
- package/dist/backend/entities/price-list-product.entity.js +43 -0
- package/dist/backend/entities/price-list-product.entity.js.map +1 -0
- package/dist/backend/entities/price-list.entity.d.ts +34 -0
- package/dist/backend/entities/price-list.entity.d.ts.map +1 -0
- package/dist/backend/entities/price-list.entity.js +115 -0
- package/dist/backend/entities/price-list.entity.js.map +1 -0
- package/dist/backend/index.d.ts +125 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +179 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/plugin.d.ts +68 -0
- package/dist/backend/plugin.d.ts.map +1 -0
- package/dist/backend/plugin.js +88 -0
- package/dist/backend/plugin.js.map +1 -0
- package/dist/backend/routes.d.ts +40 -0
- package/dist/backend/routes.d.ts.map +1 -0
- package/dist/backend/routes.js +447 -0
- package/dist/backend/routes.js.map +1 -0
- package/dist/backend/routes.storefront.d.ts +47 -0
- package/dist/backend/routes.storefront.d.ts.map +1 -0
- package/dist/backend/routes.storefront.js +131 -0
- package/dist/backend/routes.storefront.js.map +1 -0
- package/dist/backend/services/application-rule-evaluator.d.ts +25 -0
- package/dist/backend/services/application-rule-evaluator.d.ts.map +1 -0
- package/dist/backend/services/application-rule-evaluator.js +2 -0
- package/dist/backend/services/application-rule-evaluator.js.map +1 -0
- package/dist/backend/services/audit-references.d.ts +11 -0
- package/dist/backend/services/audit-references.d.ts.map +1 -0
- package/dist/backend/services/audit-references.js +23 -0
- package/dist/backend/services/audit-references.js.map +1 -0
- package/dist/backend/services/default-price-list-migration.d.ts +70 -0
- package/dist/backend/services/default-price-list-migration.d.ts.map +1 -0
- package/dist/backend/services/default-price-list-migration.js +177 -0
- package/dist/backend/services/default-price-list-migration.js.map +1 -0
- package/dist/backend/services/display-mode-resolver.d.ts +78 -0
- package/dist/backend/services/display-mode-resolver.d.ts.map +1 -0
- package/dist/backend/services/display-mode-resolver.js +71 -0
- package/dist/backend/services/display-mode-resolver.js.map +1 -0
- package/dist/backend/services/listing-price-chain.d.ts +26 -0
- package/dist/backend/services/listing-price-chain.d.ts.map +1 -0
- package/dist/backend/services/listing-price-chain.js +55 -0
- package/dist/backend/services/listing-price-chain.js.map +1 -0
- package/dist/backend/services/price-bracket-resolver.d.ts +24 -0
- package/dist/backend/services/price-bracket-resolver.d.ts.map +1 -0
- package/dist/backend/services/price-bracket-resolver.js +16 -0
- package/dist/backend/services/price-bracket-resolver.js.map +1 -0
- package/dist/backend/services/price-list-candidate-vector.d.ts +116 -0
- package/dist/backend/services/price-list-candidate-vector.d.ts.map +1 -0
- package/dist/backend/services/price-list-candidate-vector.js +133 -0
- package/dist/backend/services/price-list-candidate-vector.js.map +1 -0
- package/dist/backend/services/price-list-currency-reference.d.ts +12 -0
- package/dist/backend/services/price-list-currency-reference.d.ts.map +1 -0
- package/dist/backend/services/price-list-currency-reference.js +24 -0
- package/dist/backend/services/price-list-currency-reference.js.map +1 -0
- package/dist/backend/services/price-list-read-port.d.ts +29 -0
- package/dist/backend/services/price-list-read-port.d.ts.map +1 -0
- package/dist/backend/services/price-list-read-port.js +64 -0
- package/dist/backend/services/price-list-read-port.js.map +1 -0
- package/dist/backend/services/price-list-resolver.d.ts +26 -0
- package/dist/backend/services/price-list-resolver.d.ts.map +1 -0
- package/dist/backend/services/price-list-resolver.js +37 -0
- package/dist/backend/services/price-list-resolver.js.map +1 -0
- package/dist/backend/services/price-list-service.d.ts +431 -0
- package/dist/backend/services/price-list-service.d.ts.map +1 -0
- package/dist/backend/services/price-list-service.js +1238 -0
- package/dist/backend/services/price-list-service.js.map +1 -0
- package/dist/backend/services/price-list-status-worker.d.ts +28 -0
- package/dist/backend/services/price-list-status-worker.d.ts.map +1 -0
- package/dist/backend/services/price-list-status-worker.js +38 -0
- package/dist/backend/services/price-list-status-worker.js.map +1 -0
- package/dist/backend/services/pricing-cache.d.ts +53 -0
- package/dist/backend/services/pricing-cache.d.ts.map +1 -0
- package/dist/backend/services/pricing-cache.js +88 -0
- package/dist/backend/services/pricing-cache.js.map +1 -0
- package/dist/backend/services/pricing-service.d.ts +304 -0
- package/dist/backend/services/pricing-service.d.ts.map +1 -0
- package/dist/backend/services/pricing-service.interface.d.ts +151 -0
- package/dist/backend/services/pricing-service.interface.d.ts.map +1 -0
- package/dist/backend/services/pricing-service.interface.js +10 -0
- package/dist/backend/services/pricing-service.interface.js.map +1 -0
- package/dist/backend/services/pricing-service.js +803 -0
- package/dist/backend/services/pricing-service.js.map +1 -0
- package/dist/backend/services/unit-price-ordering.d.ts +121 -0
- package/dist/backend/services/unit-price-ordering.d.ts.map +1 -0
- package/dist/backend/services/unit-price-ordering.js +164 -0
- package/dist/backend/services/unit-price-ordering.js.map +1 -0
- package/dist/manifest.d.ts +218 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +228 -0
- package/dist/manifest.js.map +1 -0
- package/dist/migrations/20260426T075235_price_lists_pricing_init.d.ts +24 -0
- package/dist/migrations/20260426T075235_price_lists_pricing_init.d.ts.map +1 -0
- package/dist/migrations/20260426T075235_price_lists_pricing_init.js +89 -0
- package/dist/migrations/20260426T075235_price_lists_pricing_init.js.map +1 -0
- package/dist/migrations/20260504T125655_price_lists_engine.d.ts +6 -0
- package/dist/migrations/20260504T125655_price_lists_engine.d.ts.map +1 -0
- package/dist/migrations/20260504T125655_price_lists_engine.js +319 -0
- package/dist/migrations/20260504T125655_price_lists_engine.js.map +1 -0
- package/dist/migrations/20260817T055457_price_lists_single_system_price_list.d.ts +15 -0
- package/dist/migrations/20260817T055457_price_lists_single_system_price_list.d.ts.map +1 -0
- package/dist/migrations/20260817T055457_price_lists_single_system_price_list.js +58 -0
- package/dist/migrations/20260817T055457_price_lists_single_system_price_list.js.map +1 -0
- package/dist/migrations/20260821T135907_price_lists_unit_price_amount_index.d.ts +40 -0
- package/dist/migrations/20260821T135907_price_lists_unit_price_amount_index.d.ts.map +1 -0
- package/dist/migrations/20260821T135907_price_lists_unit_price_amount_index.js +46 -0
- package/dist/migrations/20260821T135907_price_lists_unit_price_amount_index.js.map +1 -0
- package/dist/migrations/index.d.ts +30 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +35 -0
- package/dist/migrations/index.js.map +1 -0
- package/docs/price_lists.md +278 -0
- package/i18n/en.json +14 -0
- package/i18n/pl.json +14 -0
- package/package.json +99 -0
- package/tailwind.css +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price-list-service.js","sourceRoot":"","sources":["../../../src/backend/services/price-list-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { EntityManager } from '@mikro-orm/postgresql';
|
|
2
|
+
/**
|
|
3
|
+
* Status worker (feature 011 / FR-009, SC-006, research §R4 + §R13).
|
|
4
|
+
*
|
|
5
|
+
* Sweeps every 5 min on the existing BullMQ-class queue and:
|
|
6
|
+
* - Promotes `scheduled → active` when `starts_at <= now()`.
|
|
7
|
+
* - Expires `active → expired` when `ends_at < now()`.
|
|
8
|
+
*
|
|
9
|
+
* Idempotent under jitter: each transition bumps `modifiedAt` exactly once
|
|
10
|
+
* because the candidate set is filtered to "still in old state" before each
|
|
11
|
+
* pass. Public `sweep()` is a plain async method so tests can drive it
|
|
12
|
+
* directly without Redis/BullMQ.
|
|
13
|
+
*
|
|
14
|
+
* Implementation note: uses MikroORM's EM API (find + mutate + flush) so
|
|
15
|
+
* the worker participates in the caller's transaction during integration
|
|
16
|
+
* tests; production path runs outside any test transaction so the same
|
|
17
|
+
* code commits normally on the next worker tick.
|
|
18
|
+
*/
|
|
19
|
+
export interface SweepResult {
|
|
20
|
+
scheduledToActive: number;
|
|
21
|
+
activeToExpired: number;
|
|
22
|
+
}
|
|
23
|
+
export declare class PriceListStatusWorker {
|
|
24
|
+
private readonly emFactory;
|
|
25
|
+
constructor(emFactory: () => EntityManager);
|
|
26
|
+
sweep(now?: Date): Promise<SweepResult>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=price-list-status-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price-list-status-worker.d.ts","sourceRoot":"","sources":["../../../src/backend/services/price-list-status-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,MAAM,aAAa;IAErD,KAAK,CAAC,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;CAkC1D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { PriceList } from '../entities/price-list.entity.js';
|
|
2
|
+
export class PriceListStatusWorker {
|
|
3
|
+
emFactory;
|
|
4
|
+
constructor(emFactory) {
|
|
5
|
+
this.emFactory = emFactory;
|
|
6
|
+
}
|
|
7
|
+
async sweep(now = new Date()) {
|
|
8
|
+
// command-coverage-ignore: automatic date-driven status transitions
|
|
9
|
+
// (scheduled→active / active→expired) by the background sweeper — a system
|
|
10
|
+
// operation on a schedule, not an admin action; the manual admin transitions
|
|
11
|
+
// (activate/draftify) are audited via their Commands.
|
|
12
|
+
const em = this.emFactory();
|
|
13
|
+
const toActivate = await em.find(PriceList, {
|
|
14
|
+
status: 'scheduled',
|
|
15
|
+
startsAt: { $lte: now, $ne: null },
|
|
16
|
+
});
|
|
17
|
+
const toExpire = await em.find(PriceList, {
|
|
18
|
+
status: 'active',
|
|
19
|
+
endsAt: { $lt: now, $ne: null },
|
|
20
|
+
});
|
|
21
|
+
for (const row of toActivate) {
|
|
22
|
+
row.status = 'active';
|
|
23
|
+
row.modifiedAt = now;
|
|
24
|
+
}
|
|
25
|
+
for (const row of toExpire) {
|
|
26
|
+
row.status = 'expired';
|
|
27
|
+
row.modifiedAt = now;
|
|
28
|
+
}
|
|
29
|
+
if (toActivate.length > 0 || toExpire.length > 0) {
|
|
30
|
+
await em.flush();
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
scheduledToActive: toActivate.length,
|
|
34
|
+
activeToExpired: toExpire.length,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=price-list-status-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price-list-status-worker.js","sourceRoot":"","sources":["../../../src/backend/services/price-list-status-worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAwB7D,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,SAA8B;QAA9B,cAAS,GAAT,SAAS,CAAqB;IAAG,CAAC;IAE/D,KAAK,CAAC,KAAK,CAAC,MAAY,IAAI,IAAI,EAAE;QAChC,oEAAoE;QACpE,2EAA2E;QAC3E,6EAA6E;QAC7E,sDAAsD;QACtD,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAE5B,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;YAC1C,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;SACnC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;YACxC,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;SAChC,CAAC,CAAC;QAEH,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;YACtB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;QACvB,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC;YACvB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;QACvB,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;QAED,OAAO;YACL,iBAAiB,EAAE,UAAU,CAAC,MAAM;YACpC,eAAe,EAAE,QAAQ,CAAC,MAAM;SACjC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory LRU cache around the pricing resolver (T064).
|
|
3
|
+
*
|
|
4
|
+
* Keyed on the tuple documented in
|
|
5
|
+
* `contracts/pricing-resolution.contract.md` § Caching:
|
|
6
|
+
* (productId, variantId?, quantity, currency, salesChannelId, organizationId?, customerGroupId?)
|
|
7
|
+
*
|
|
8
|
+
* TTL is the resolver's contractual upper bound (60 s) — the
|
|
9
|
+
* storefront's existing 60-s revalidate window is the system of
|
|
10
|
+
* record, so anything older is dropped on read regardless of LRU
|
|
11
|
+
* position. Capacity bounds memory growth on busy storefronts; the
|
|
12
|
+
* Map's insertion-order iteration gives O(1) LRU eviction without
|
|
13
|
+
* pulling a new runtime dependency.
|
|
14
|
+
*
|
|
15
|
+
* Invalidation: every write path on `PriceListService` calls
|
|
16
|
+
* `invalidateAll()`. Coarse but correct — the resolver fans across
|
|
17
|
+
* every active list, so any list mutation in principle affects every
|
|
18
|
+
* tuple, and the cache is rebuilt within seconds of a quiet period.
|
|
19
|
+
* Finer-grained invalidation can land later if profiling shows it
|
|
20
|
+
* matters.
|
|
21
|
+
*
|
|
22
|
+
* Tests opt out by passing `{ ttlMs: 0 }` so each call goes through.
|
|
23
|
+
*/
|
|
24
|
+
export interface PricingCacheKey {
|
|
25
|
+
productId: string;
|
|
26
|
+
variantId: string | null;
|
|
27
|
+
quantity: number;
|
|
28
|
+
currencyCode: string;
|
|
29
|
+
salesChannelId: string;
|
|
30
|
+
organizationId: string | null;
|
|
31
|
+
customerGroupId: string | null;
|
|
32
|
+
}
|
|
33
|
+
export declare const DEFAULT_PRICING_CACHE_TTL_MS = 60000;
|
|
34
|
+
export declare class PricingCache<T> {
|
|
35
|
+
private readonly ttlMs;
|
|
36
|
+
private readonly capacity;
|
|
37
|
+
private readonly entries;
|
|
38
|
+
private hitCount;
|
|
39
|
+
private missCount;
|
|
40
|
+
constructor(options?: {
|
|
41
|
+
ttlMs?: number;
|
|
42
|
+
capacity?: number;
|
|
43
|
+
});
|
|
44
|
+
get(key: PricingCacheKey): T | undefined;
|
|
45
|
+
set(key: PricingCacheKey, value: T): void;
|
|
46
|
+
invalidateAll(): void;
|
|
47
|
+
stats(): {
|
|
48
|
+
size: number;
|
|
49
|
+
hits: number;
|
|
50
|
+
misses: number;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=pricing-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing-cache.d.ts","sourceRoot":"","sources":["../../../src/backend/services/pricing-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAOD,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAGnD,qBAAa,YAAY,CAAC,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAK;gBAEV,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO;IAK/D,GAAG,CAAC,GAAG,EAAE,eAAe,GAAG,CAAC,GAAG,SAAS;IAoBxC,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAYzC,aAAa,IAAI,IAAI;IAIrB,KAAK,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAGxD"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory LRU cache around the pricing resolver (T064).
|
|
3
|
+
*
|
|
4
|
+
* Keyed on the tuple documented in
|
|
5
|
+
* `contracts/pricing-resolution.contract.md` § Caching:
|
|
6
|
+
* (productId, variantId?, quantity, currency, salesChannelId, organizationId?, customerGroupId?)
|
|
7
|
+
*
|
|
8
|
+
* TTL is the resolver's contractual upper bound (60 s) — the
|
|
9
|
+
* storefront's existing 60-s revalidate window is the system of
|
|
10
|
+
* record, so anything older is dropped on read regardless of LRU
|
|
11
|
+
* position. Capacity bounds memory growth on busy storefronts; the
|
|
12
|
+
* Map's insertion-order iteration gives O(1) LRU eviction without
|
|
13
|
+
* pulling a new runtime dependency.
|
|
14
|
+
*
|
|
15
|
+
* Invalidation: every write path on `PriceListService` calls
|
|
16
|
+
* `invalidateAll()`. Coarse but correct — the resolver fans across
|
|
17
|
+
* every active list, so any list mutation in principle affects every
|
|
18
|
+
* tuple, and the cache is rebuilt within seconds of a quiet period.
|
|
19
|
+
* Finer-grained invalidation can land later if profiling shows it
|
|
20
|
+
* matters.
|
|
21
|
+
*
|
|
22
|
+
* Tests opt out by passing `{ ttlMs: 0 }` so each call goes through.
|
|
23
|
+
*/
|
|
24
|
+
export const DEFAULT_PRICING_CACHE_TTL_MS = 60_000;
|
|
25
|
+
const DEFAULT_CAPACITY = 5_000;
|
|
26
|
+
export class PricingCache {
|
|
27
|
+
ttlMs;
|
|
28
|
+
capacity;
|
|
29
|
+
entries = new Map();
|
|
30
|
+
hitCount = 0;
|
|
31
|
+
missCount = 0;
|
|
32
|
+
constructor(options = {}) {
|
|
33
|
+
this.ttlMs = options.ttlMs ?? DEFAULT_PRICING_CACHE_TTL_MS;
|
|
34
|
+
this.capacity = options.capacity ?? DEFAULT_CAPACITY;
|
|
35
|
+
}
|
|
36
|
+
get(key) {
|
|
37
|
+
if (this.ttlMs <= 0)
|
|
38
|
+
return undefined;
|
|
39
|
+
const k = serializeKey(key);
|
|
40
|
+
const entry = this.entries.get(k);
|
|
41
|
+
if (!entry) {
|
|
42
|
+
this.missCount += 1;
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
if (entry.expiresAt < Date.now()) {
|
|
46
|
+
this.entries.delete(k);
|
|
47
|
+
this.missCount += 1;
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
// Refresh LRU position by reinserting.
|
|
51
|
+
this.entries.delete(k);
|
|
52
|
+
this.entries.set(k, entry);
|
|
53
|
+
this.hitCount += 1;
|
|
54
|
+
return entry.value;
|
|
55
|
+
}
|
|
56
|
+
set(key, value) {
|
|
57
|
+
if (this.ttlMs <= 0)
|
|
58
|
+
return;
|
|
59
|
+
const k = serializeKey(key);
|
|
60
|
+
if (this.entries.has(k))
|
|
61
|
+
this.entries.delete(k);
|
|
62
|
+
else if (this.entries.size >= this.capacity) {
|
|
63
|
+
// Evict oldest insertion (Map iterates in insertion order).
|
|
64
|
+
const oldest = this.entries.keys().next().value;
|
|
65
|
+
if (oldest !== undefined)
|
|
66
|
+
this.entries.delete(oldest);
|
|
67
|
+
}
|
|
68
|
+
this.entries.set(k, { value, expiresAt: Date.now() + this.ttlMs });
|
|
69
|
+
}
|
|
70
|
+
invalidateAll() {
|
|
71
|
+
this.entries.clear();
|
|
72
|
+
}
|
|
73
|
+
stats() {
|
|
74
|
+
return { size: this.entries.size, hits: this.hitCount, misses: this.missCount };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function serializeKey(key) {
|
|
78
|
+
return [
|
|
79
|
+
key.productId,
|
|
80
|
+
key.variantId ?? '',
|
|
81
|
+
key.quantity,
|
|
82
|
+
key.currencyCode,
|
|
83
|
+
key.salesChannelId,
|
|
84
|
+
key.organizationId ?? '',
|
|
85
|
+
key.customerGroupId ?? '',
|
|
86
|
+
].join('|');
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=pricing-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing-cache.js","sourceRoot":"","sources":["../../../src/backend/services/pricing-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
import type { EntityManager } from '@mikro-orm/postgresql';
|
|
2
|
+
import type { DisplayMode, ListingPrice, ListingPriceOrderChunk, ListingPriceOrderQuery, ListingPriceViewerContext } from '@endora-commerce/contracts';
|
|
3
|
+
import { type PriceBracketRow } from './price-bracket-resolver.js';
|
|
4
|
+
import type { PriceListTargetReads } from './price-list-service.js';
|
|
5
|
+
import type { ListingPricesInput, PricedProductRef, PricingEngineResult, PricingLineResult, PricingOrganizationRef, PricingServiceContract } from './pricing-service.interface.js';
|
|
6
|
+
/**
|
|
7
|
+
* The engine's answer, as a charged line (FR-034): Sale when present, Base
|
|
8
|
+
* otherwise, `null` when nothing on any matching list prices the product.
|
|
9
|
+
*
|
|
10
|
+
* Extracted from `resolveLinePrice` so the batched listing path applies exactly
|
|
11
|
+
* the same rule to the engine results it assembles — the sale-wins step is one
|
|
12
|
+
* of the places a second implementation could have quietly disagreed.
|
|
13
|
+
*/
|
|
14
|
+
export declare function lineFromEngine(out: PricingEngineResult): PricingLineResult | null;
|
|
15
|
+
export declare class PricingService implements PricingServiceContract {
|
|
16
|
+
#private;
|
|
17
|
+
private readonly emFactory;
|
|
18
|
+
private readonly cache?;
|
|
19
|
+
/**
|
|
20
|
+
* Feature 056 — resolves the acting org's inheritance chain (nearest-first,
|
|
21
|
+
* `[orgId, ...ancestorIds]`) so a descendant inherits an ancestor's org-named
|
|
22
|
+
* price list. When absent, the chain is `[orgId]` (flat behavior, byte-for-byte).
|
|
23
|
+
*/
|
|
24
|
+
private readonly resolveOrgChain?;
|
|
25
|
+
/**
|
|
26
|
+
* Feature 075 Phase C — forwarded verbatim to the `PriceListService` this
|
|
27
|
+
* engine builds for the display-mode chain, whose category step reaches
|
|
28
|
+
* `catalog` over its read port. Absent, that step refuses rather than
|
|
29
|
+
* treating every category as unknown.
|
|
30
|
+
*/
|
|
31
|
+
private readonly targetReads?;
|
|
32
|
+
constructor(emFactory: () => EntityManager, cache?: import("./pricing-cache.js").PricingCache<{
|
|
33
|
+
base: {
|
|
34
|
+
listId: string;
|
|
35
|
+
listName: string;
|
|
36
|
+
bracket: PriceBracketRow | null;
|
|
37
|
+
};
|
|
38
|
+
sale: {
|
|
39
|
+
listId: string;
|
|
40
|
+
listName: string;
|
|
41
|
+
bracket: PriceBracketRow;
|
|
42
|
+
} | null;
|
|
43
|
+
displayMode: DisplayMode;
|
|
44
|
+
currencyCode: string;
|
|
45
|
+
}> | undefined,
|
|
46
|
+
/**
|
|
47
|
+
* Feature 056 — resolves the acting org's inheritance chain (nearest-first,
|
|
48
|
+
* `[orgId, ...ancestorIds]`) so a descendant inherits an ancestor's org-named
|
|
49
|
+
* price list. When absent, the chain is `[orgId]` (flat behavior, byte-for-byte).
|
|
50
|
+
*/
|
|
51
|
+
resolveOrgChain?: ((orgId: string) => Promise<readonly string[]>) | undefined,
|
|
52
|
+
/**
|
|
53
|
+
* Feature 075 Phase C — forwarded verbatim to the `PriceListService` this
|
|
54
|
+
* engine builds for the display-mode chain, whose category step reaches
|
|
55
|
+
* `catalog` over its read port. Absent, that step refuses rather than
|
|
56
|
+
* treating every category as unknown.
|
|
57
|
+
*/
|
|
58
|
+
targetReads?: PriceListTargetReads | undefined);
|
|
59
|
+
/**
|
|
60
|
+
* New resolver pipeline composing the three pure helpers:
|
|
61
|
+
* - evaluateApplicationRule (US4)
|
|
62
|
+
* - pickPriorityChain (US5)
|
|
63
|
+
* - resolvePriceBracket (US3)
|
|
64
|
+
*
|
|
65
|
+
* Returns Base + (optional) Sale resolutions on the given context.
|
|
66
|
+
*
|
|
67
|
+
* Bracket-gap fall-through (FR-031): when the picked list has no
|
|
68
|
+
* bracket for the requested (product, currency, qty), the resolver
|
|
69
|
+
* advances to the next-priority list in the same partition and
|
|
70
|
+
* repeats. Default is the terminal fallback for the Base partition;
|
|
71
|
+
* the Sale partition simply yields null when nothing matches with a
|
|
72
|
+
* usable bracket.
|
|
73
|
+
*
|
|
74
|
+
* Display mode resolution is stubbed at this layer until US7 wires
|
|
75
|
+
* the override chain. The default mode `gross_only` is returned so
|
|
76
|
+
* the response shape is complete.
|
|
77
|
+
*/
|
|
78
|
+
resolveEngine(input: {
|
|
79
|
+
product: PricedProductRef;
|
|
80
|
+
variantId?: string | null;
|
|
81
|
+
context: {
|
|
82
|
+
quantity: number;
|
|
83
|
+
organization?: PricingOrganizationRef | null;
|
|
84
|
+
/**
|
|
85
|
+
* Feature 040 — a customer's DIRECT customer-group membership, which
|
|
86
|
+
* overrides the Organization's group when set (R6). Callers that know the
|
|
87
|
+
* acting customer resolve it as `customer.customerGroupId`; when omitted,
|
|
88
|
+
* the Organization's group is used (unchanged behavior).
|
|
89
|
+
*/
|
|
90
|
+
customerGroupId?: string | null;
|
|
91
|
+
/**
|
|
92
|
+
* The request's resolved sales channel. Only `id` (rule dimension +
|
|
93
|
+
* cache key) and `defaultCurrency` (currency fallback) are read, so any
|
|
94
|
+
* resolved-channel shape satisfies this — a full `SalesChannel` entity,
|
|
95
|
+
* or the request-scoped `CachedChannel` (feature 053 / FR-002).
|
|
96
|
+
*/
|
|
97
|
+
salesChannel: {
|
|
98
|
+
id: string;
|
|
99
|
+
defaultCurrency: string;
|
|
100
|
+
};
|
|
101
|
+
currencyCode?: string;
|
|
102
|
+
};
|
|
103
|
+
}): Promise<{
|
|
104
|
+
base: {
|
|
105
|
+
listId: string;
|
|
106
|
+
listName: string;
|
|
107
|
+
bracket: PriceBracketRow | null;
|
|
108
|
+
};
|
|
109
|
+
sale: {
|
|
110
|
+
listId: string;
|
|
111
|
+
listName: string;
|
|
112
|
+
bracket: PriceBracketRow;
|
|
113
|
+
} | null;
|
|
114
|
+
displayMode: DisplayMode;
|
|
115
|
+
currencyCode: string;
|
|
116
|
+
}>;
|
|
117
|
+
/**
|
|
118
|
+
* Convenience wrapper for cart/checkout/order callers (US6 / FR-034).
|
|
119
|
+
*
|
|
120
|
+
* Returns the line's effective unit price as a `{ amount, currency }`
|
|
121
|
+
* pair plus the source price-list ID and a flag indicating whether the
|
|
122
|
+
* Sale partition won. Callers persist the amount on the cart line and
|
|
123
|
+
* the source list ID for audit; if the response is `null`, the product
|
|
124
|
+
* has no bracket on any matching list and the caller should refuse the
|
|
125
|
+
* line (or, in the storefront's case, route to the Quote Request flow).
|
|
126
|
+
*
|
|
127
|
+
* Always charges the Sale price when present (FR-034). Falls back to
|
|
128
|
+
* the Base price; both come from `resolveEngine`.
|
|
129
|
+
*/
|
|
130
|
+
resolveLinePrice(input: {
|
|
131
|
+
product: PricedProductRef;
|
|
132
|
+
variantId?: string | null;
|
|
133
|
+
context: {
|
|
134
|
+
quantity: number;
|
|
135
|
+
organization?: PricingOrganizationRef | null;
|
|
136
|
+
/** Feature 040 — customer's direct group overrides the org's (R6). */
|
|
137
|
+
customerGroupId?: string | null;
|
|
138
|
+
/**
|
|
139
|
+
* The request's resolved sales channel. Only `id` (rule dimension +
|
|
140
|
+
* cache key) and `defaultCurrency` (currency fallback) are read, so any
|
|
141
|
+
* resolved-channel shape satisfies this — a full `SalesChannel` entity,
|
|
142
|
+
* or the request-scoped `CachedChannel` (feature 053 / FR-002).
|
|
143
|
+
*/
|
|
144
|
+
salesChannel: {
|
|
145
|
+
id: string;
|
|
146
|
+
defaultCurrency: string;
|
|
147
|
+
};
|
|
148
|
+
currencyCode?: string;
|
|
149
|
+
};
|
|
150
|
+
}): Promise<{
|
|
151
|
+
amount: string;
|
|
152
|
+
currency: string;
|
|
153
|
+
priceListId: string;
|
|
154
|
+
isSale: boolean;
|
|
155
|
+
bracketStartQuantity: number;
|
|
156
|
+
displayMode: DisplayMode;
|
|
157
|
+
} | null>;
|
|
158
|
+
/**
|
|
159
|
+
* Issue #132 — the price a catalogue listing may render, per product.
|
|
160
|
+
*
|
|
161
|
+
* The chain is `listingPriceFrom`; this method feeds it, so the listing paths
|
|
162
|
+
* make one call and get an answer whose type states which step of the chain
|
|
163
|
+
* produced it. Every requested product gets an entry.
|
|
164
|
+
*
|
|
165
|
+
* ## Why this is a batch and not a loop
|
|
166
|
+
*
|
|
167
|
+
* It used to be a loop over `resolveLinePrice`, which is **7 queries per
|
|
168
|
+
* product, sequentially**: a 50-item catalogue page — the platform's default
|
|
169
|
+
* page size and its busiest storefront read — cost 350 round trips and 315 ms
|
|
170
|
+
* of resolution on a warm local Postgres. Six of those seven asked a question
|
|
171
|
+
* whose answer does not vary across the page (the active price lists, the
|
|
172
|
+
* settings pair, the organization's override) or asked it one id at a time
|
|
173
|
+
* (the category memberships, the brackets, the product-scope overrides).
|
|
174
|
+
*
|
|
175
|
+
* So the set is resolved once and applied per product: the memberships in one
|
|
176
|
+
* `in (…)`, the active lists once, the organization's inheritance chain once,
|
|
177
|
+
* the brackets in **priority waves** (one query per fall-through level the
|
|
178
|
+
* page actually needs, not per product), and the display-mode chain through
|
|
179
|
+
* `resolveDisplayModes`, reusing the memberships already read.
|
|
180
|
+
*
|
|
181
|
+
* ## What is *not* batched, and why
|
|
182
|
+
*
|
|
183
|
+
* The application-rule evaluation and the priority walk stay per product, and
|
|
184
|
+
* they have to: `evaluateApplicationRule` reads the product's own category
|
|
185
|
+
* memberships, so a category rule matches some cards on a page and not
|
|
186
|
+
* others, and the winning list therefore differs per product. Both are pure
|
|
187
|
+
* in-memory functions over rows already loaded — the same
|
|
188
|
+
* `evaluateApplicationRule` / `pickPriorityChain` / `resolvePriceBracket`
|
|
189
|
+
* helpers `resolveEngine` composes — so the per-product part costs no I/O.
|
|
190
|
+
*
|
|
191
|
+
* The bracket wave is what keeps that honest. A single `in (…)` over every
|
|
192
|
+
* matched list would fetch brackets for lists most cards never reach; asking
|
|
193
|
+
* one wave at a time fetches exactly the (list, product) pairs the per-product
|
|
194
|
+
* walk would have asked for, in one query per level instead of one per card.
|
|
195
|
+
*
|
|
196
|
+
* ## Identity with the per-product path
|
|
197
|
+
*
|
|
198
|
+
* `resolveEngine` and `resolveLinePrice` are untouched: cart, checkout and the
|
|
199
|
+
* admin resolved-price probe take the same path they always did, and
|
|
200
|
+
* `test/integration/price_lists/listing-prices-batch.test.ts` asserts, product
|
|
201
|
+
* by product over a fixture with a bracket gap, a sale partition, a category
|
|
202
|
+
* rule and both unpriced arms, that this method answers exactly what looping
|
|
203
|
+
* that path answers. The LRU is keyed and populated identically, so a page
|
|
204
|
+
* whose products are already cached still issues no query at all.
|
|
205
|
+
*/
|
|
206
|
+
resolveListingPrices(input: ListingPricesInput): Promise<Map<string, ListingPrice>>;
|
|
207
|
+
/**
|
|
208
|
+
* The catalogue in resolved-unit-price order, for one viewer, one chunk at a
|
|
209
|
+
* time — {@link ListingPriceOrderPort}.
|
|
210
|
+
*
|
|
211
|
+
* ## Identity with the card, which is the whole point
|
|
212
|
+
*
|
|
213
|
+
* The rows this answers are the rows `resolveListingPrices` would answer for
|
|
214
|
+
* the same viewer, sorted. Not "approximately": the candidates come from
|
|
215
|
+
* {@link buildCandidateVector}, which produces its order by running
|
|
216
|
+
* `pickPriorityChain` to exhaustion, and the sale partition leads the base one
|
|
217
|
+
* because `lineFromEngine` charges the sale price whenever the sale partition
|
|
218
|
+
* resolves anything. `test/integration/price_lists/unit-price-ordering.test.ts`
|
|
219
|
+
* asserts it product by product against the batch, the way
|
|
220
|
+
* `listing-prices-batch.test.ts` asserts the batch against the per-product
|
|
221
|
+
* path.
|
|
222
|
+
*
|
|
223
|
+
* ## What it does not know
|
|
224
|
+
*
|
|
225
|
+
* Visibility, channel membership, product status, archival, categories the
|
|
226
|
+
* *buyer* filtered by. Those are `catalog`'s facts about `catalog`'s rows, and
|
|
227
|
+
* a chunk from here may name products the viewer must never see — the caller
|
|
228
|
+
* intersects before anything reaches a page, a cursor or a count.
|
|
229
|
+
*
|
|
230
|
+
* ## Two statements, whatever the page size
|
|
231
|
+
*
|
|
232
|
+
* One probe of the leading stream, which fixes the watermark, and one merge of
|
|
233
|
+
* the rest. A single-candidate viewer costs one. The leading stream's rows are
|
|
234
|
+
* reused rather than re-read.
|
|
235
|
+
*/
|
|
236
|
+
orderByUnitPrice(input: ListingPriceOrderQuery): Promise<ListingPriceOrderChunk>;
|
|
237
|
+
/**
|
|
238
|
+
* Which of `productIds` the viewer's candidate lists price at quantity 1.
|
|
239
|
+
*
|
|
240
|
+
* `catalog` composes the unpriced tail out of the complement, so this is a set
|
|
241
|
+
* membership answer and deliberately not a price: it says nothing about which
|
|
242
|
+
* list won or what it charges.
|
|
243
|
+
*/
|
|
244
|
+
pricedProductIds(input: {
|
|
245
|
+
context: ListingPriceViewerContext;
|
|
246
|
+
productIds: readonly string[];
|
|
247
|
+
}): Promise<ReadonlySet<string>>;
|
|
248
|
+
/**
|
|
249
|
+
* The display mode a *page* resolves to for this viewer — feature 086 /
|
|
250
|
+
* FR-016. See `PriceListService.resolvePageDisplayMode` for why the
|
|
251
|
+
* per-product and per-category steps are absent.
|
|
252
|
+
*/
|
|
253
|
+
pageDisplayMode(input: {
|
|
254
|
+
context: ListingPriceViewerContext;
|
|
255
|
+
}): Promise<DisplayMode>;
|
|
256
|
+
/**
|
|
257
|
+
* Issue #132 — the lowest-quantity bracket amount on one named price list.
|
|
258
|
+
*
|
|
259
|
+
* `product_feeds` used to run this `select` itself, which put another
|
|
260
|
+
* module's table in its SQL and let a feed publish prices while this module
|
|
261
|
+
* was refusing to serve them. The read is the same; owning it here is what
|
|
262
|
+
* makes the port gate apply.
|
|
263
|
+
*/
|
|
264
|
+
namedListPrices(input: {
|
|
265
|
+
priceListId: string;
|
|
266
|
+
currencyCode: string;
|
|
267
|
+
productIds: readonly string[];
|
|
268
|
+
}): Promise<Map<string, string>>;
|
|
269
|
+
/**
|
|
270
|
+
* Feature 062 — distinct bracket start quantities (ascending) across every
|
|
271
|
+
* ACTIVE list for a (product, currency). Consumers probe `resolveLinePrice`
|
|
272
|
+
* at each quantity to derive the acting org's effective tier ladder; a
|
|
273
|
+
* quantity contributed by a non-matching list simply resolves to the same
|
|
274
|
+
* amount as its predecessor and is de-duplicated by the caller — no
|
|
275
|
+
* cross-org data leaks through this read.
|
|
276
|
+
*/
|
|
277
|
+
listBracketMinQuantities(productId: string, currencyCode: string): Promise<number[]>;
|
|
278
|
+
/**
|
|
279
|
+
* Walks the priority chain until a list yields a bracket for the
|
|
280
|
+
* requested (product, currency, quantity). Excluded candidates are
|
|
281
|
+
* ones that already failed the bracket lookup. Returns the first
|
|
282
|
+
* list+bracket pair, or {list: null, bracket: null} if every match
|
|
283
|
+
* has no usable bracket.
|
|
284
|
+
*/
|
|
285
|
+
/**
|
|
286
|
+
* `pickAndResolveBracket` for a whole page, in **priority waves**.
|
|
287
|
+
*
|
|
288
|
+
* Each wave picks the top-priority remaining list per product — the same
|
|
289
|
+
* `pickPriorityChain` call the single-product walk makes — and reads the
|
|
290
|
+
* brackets for that wave's (list, product) pairs in one query. A product
|
|
291
|
+
* whose picked list has no usable bracket drops that list and enters the next
|
|
292
|
+
* wave, exactly as FR-031's fall-through does; a product with no candidate
|
|
293
|
+
* left answers `{ list: null, bracket: null }`, exactly as the single walk's
|
|
294
|
+
* exhausted `remaining` does.
|
|
295
|
+
*
|
|
296
|
+
* The number of queries is therefore the number of fall-through levels the
|
|
297
|
+
* page actually needs — one, normally — instead of one per product, and the
|
|
298
|
+
* rows fetched are the ones the per-product walk would have fetched rather
|
|
299
|
+
* than every matched list's brackets.
|
|
300
|
+
*/
|
|
301
|
+
private pickAndResolveBracketsForSet;
|
|
302
|
+
private pickAndResolveBracket;
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=pricing-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing-service.d.ts","sourceRoot":"","sources":["../../../src/backend/services/pricing-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAEV,WAAW,EACX,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EAEtB,yBAAyB,EAC1B,MAAM,4BAA4B,CAAC;AAWpC,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AAarC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,gCAAgC,CAAC;AAwBxC;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,mBAAmB,GAAG,iBAAiB,GAAG,IAAI,CAoBjF;AAED,qBAAa,cAAe,YAAW,sBAAsB;;IAEzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAMvB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAnBZ,SAAS,EAAE,MAAM,aAAa,EAC9B,KAAK,CAAC,EAAE,OAAO,oBAAoB,EAAE,YAAY,CAAC;QACjE,IAAI,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAA;SAAE,CAAC;QAC5E,IAAI,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,eAAe,CAAA;SAAE,GAAG,IAAI,CAAC;QAC5E,WAAW,EAAE,WAAW,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,YAAA;IACF;;;;OAIG;IACc,eAAe,CAAC,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,aAAA;IAChF;;;;;OAKG;IACc,WAAW,CAAC,EAAE,oBAAoB,YAAA;IAoDrD;;;;;;;;;;;;;;;;;;OAkBG;IACG,aAAa,CAAC,KAAK,EAAE;QACzB,OAAO,EAAE,gBAAgB,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,OAAO,EAAE;YACP,QAAQ,EAAE,MAAM,CAAC;YACjB,YAAY,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;YAC7C;;;;;eAKG;YACH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAChC;;;;;eAKG;YACH,YAAY,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,eAAe,EAAE,MAAM,CAAA;aAAE,CAAC;YACtD,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;KACH,GAAG,OAAO,CAAC;QACV,IAAI,EAAE;YACJ,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,EAAE,MAAM,CAAC;YACjB,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;SACjC,CAAC;QACF,IAAI,EAAE;YACJ,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,EAAE,MAAM,CAAC;YACjB,OAAO,EAAE,eAAe,CAAC;SAC1B,GAAG,IAAI,CAAC;QACT,WAAW,EAAE,WAAW,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IA4GF;;;;;;;;;;;;OAYG;IACG,gBAAgB,CAAC,KAAK,EAAE;QAC5B,OAAO,EAAE,gBAAgB,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,OAAO,EAAE;YACP,QAAQ,EAAE,MAAM,CAAC;YACjB,YAAY,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;YAC7C,sEAAsE;YACtE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAChC;;;;;eAKG;YACH,YAAY,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,eAAe,EAAE,MAAM,CAAA;aAAE,CAAC;YACtD,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;KACH,GAAG,OAAO,CAAC;QACV,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,OAAO,CAAC;QAChB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,WAAW,CAAC;KAC1B,GAAG,IAAI,CAAC;IAIT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACG,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IA8HzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,gBAAgB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA8FtF;;;;;;OAMG;IACG,gBAAgB,CAAC,KAAK,EAAE;QAC5B,OAAO,EAAE,yBAAyB,CAAC;QACnC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;KAC/B,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IA8BhC;;;;OAIG;IACG,eAAe,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,yBAAyB,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAyH1F;;;;;;;OAOG;IACG,eAAe,CAAC,KAAK,EAAE;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;KAC/B,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAmBhC;;;;;;;OAOG;IACG,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAa1F;;;;;;OAMG;IACH;;;;;;;;;;;;;;;OAeG;YACW,4BAA4B;YAuE5B,qBAAqB;CAiCpC"}
|