@endora-commerce/mod-settings 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 +58 -0
- package/dist/admin/api/settings-client.d.ts +47 -0
- package/dist/admin/api/settings-client.d.ts.map +1 -0
- package/dist/admin/api/settings-client.js +41 -0
- package/dist/admin/api/settings-client.js.map +1 -0
- package/dist/admin/components/ActivationPointerRow.d.ts +21 -0
- package/dist/admin/components/ActivationPointerRow.d.ts.map +1 -0
- package/dist/admin/components/ActivationPointerRow.js +28 -0
- package/dist/admin/components/ActivationPointerRow.js.map +1 -0
- package/dist/admin/components/AssetIdSettingInput.d.ts +12 -0
- package/dist/admin/components/AssetIdSettingInput.d.ts.map +1 -0
- package/dist/admin/components/AssetIdSettingInput.js +10 -0
- package/dist/admin/components/AssetIdSettingInput.js.map +1 -0
- package/dist/admin/components/ConfigurationReferenceInput.d.ts +39 -0
- package/dist/admin/components/ConfigurationReferenceInput.d.ts.map +1 -0
- package/dist/admin/components/ConfigurationReferenceInput.js +74 -0
- package/dist/admin/components/ConfigurationReferenceInput.js.map +1 -0
- package/dist/admin/components/ConflictBanner.d.ts +13 -0
- package/dist/admin/components/ConflictBanner.d.ts.map +1 -0
- package/dist/admin/components/ConflictBanner.js +12 -0
- package/dist/admin/components/ConflictBanner.js.map +1 -0
- package/dist/admin/components/ImageSettingInput.d.ts +34 -0
- package/dist/admin/components/ImageSettingInput.d.ts.map +1 -0
- package/dist/admin/components/ImageSettingInput.js +36 -0
- package/dist/admin/components/ImageSettingInput.js.map +1 -0
- package/dist/admin/components/QuoteRequestsSettingsTab.d.ts +3 -0
- package/dist/admin/components/QuoteRequestsSettingsTab.d.ts.map +1 -0
- package/dist/admin/components/QuoteRequestsSettingsTab.js +69 -0
- package/dist/admin/components/QuoteRequestsSettingsTab.js.map +1 -0
- package/dist/admin/components/SellerCompanyDataInput.d.ts +22 -0
- package/dist/admin/components/SellerCompanyDataInput.d.ts.map +1 -0
- package/dist/admin/components/SellerCompanyDataInput.js +53 -0
- package/dist/admin/components/SellerCompanyDataInput.js.map +1 -0
- package/dist/admin/components/SettingRowEditor.d.ts +55 -0
- package/dist/admin/components/SettingRowEditor.d.ts.map +1 -0
- package/dist/admin/components/SettingRowEditor.js +160 -0
- package/dist/admin/components/SettingRowEditor.js.map +1 -0
- package/dist/admin/index.d.ts +39 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +87 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/pages/CachePage.d.ts +14 -0
- package/dist/admin/pages/CachePage.d.ts.map +1 -0
- package/dist/admin/pages/CachePage.js +124 -0
- package/dist/admin/pages/CachePage.js.map +1 -0
- package/dist/admin/pages/GroupsPage.d.ts +17 -0
- package/dist/admin/pages/GroupsPage.d.ts.map +1 -0
- package/dist/admin/pages/GroupsPage.js +84 -0
- package/dist/admin/pages/GroupsPage.js.map +1 -0
- package/dist/admin/pages/SettingsPage.d.ts +20 -0
- package/dist/admin/pages/SettingsPage.d.ts.map +1 -0
- package/dist/admin/pages/SettingsPage.js +453 -0
- package/dist/admin/pages/SettingsPage.js.map +1 -0
- package/dist/backend/cli/cache-clear.d.ts +23 -0
- package/dist/backend/cli/cache-clear.d.ts.map +1 -0
- package/dist/backend/cli/cache-clear.js +37 -0
- package/dist/backend/cli/cache-clear.js.map +1 -0
- package/dist/backend/index.d.ts +100 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +125 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/routes.admin.d.ts +308 -0
- package/dist/backend/routes.admin.d.ts.map +1 -0
- package/dist/backend/routes.admin.js +188 -0
- package/dist/backend/routes.admin.js.map +1 -0
- package/dist/backend/routes.cache.d.ts +20 -0
- package/dist/backend/routes.cache.d.ts.map +1 -0
- package/dist/backend/routes.cache.js +22 -0
- package/dist/backend/routes.cache.js.map +1 -0
- package/dist/backend/routes.homepage.d.ts +15 -0
- package/dist/backend/routes.homepage.d.ts.map +1 -0
- package/dist/backend/routes.homepage.js +20 -0
- package/dist/backend/routes.homepage.js.map +1 -0
- package/dist/backend/routes.product-card-buttons.d.ts +15 -0
- package/dist/backend/routes.product-card-buttons.d.ts.map +1 -0
- package/dist/backend/routes.product-card-buttons.js +21 -0
- package/dist/backend/routes.product-card-buttons.js.map +1 -0
- package/dist/backend/routes.speculation-rules.d.ts +16 -0
- package/dist/backend/routes.speculation-rules.d.ts.map +1 -0
- package/dist/backend/routes.speculation-rules.js +21 -0
- package/dist/backend/routes.speculation-rules.js.map +1 -0
- package/dist/backend/routes.storefront.d.ts +15 -0
- package/dist/backend/routes.storefront.d.ts.map +1 -0
- package/dist/backend/routes.storefront.js +20 -0
- package/dist/backend/routes.storefront.js.map +1 -0
- package/dist/backend/services/cache-admin.service.d.ts +83 -0
- package/dist/backend/services/cache-admin.service.d.ts.map +1 -0
- package/dist/backend/services/cache-admin.service.js +148 -0
- package/dist/backend/services/cache-admin.service.js.map +1 -0
- package/dist/backend/services/homepage-resolver.d.ts +25 -0
- package/dist/backend/services/homepage-resolver.d.ts.map +1 -0
- package/dist/backend/services/homepage-resolver.js +31 -0
- package/dist/backend/services/homepage-resolver.js.map +1 -0
- package/dist/backend/services/product-card-buttons-resolver.d.ts +25 -0
- package/dist/backend/services/product-card-buttons-resolver.d.ts.map +1 -0
- package/dist/backend/services/product-card-buttons-resolver.js +37 -0
- package/dist/backend/services/product-card-buttons-resolver.js.map +1 -0
- package/dist/backend/services/registered-settings-manifests.d.ts +45 -0
- package/dist/backend/services/registered-settings-manifests.d.ts.map +1 -0
- package/dist/backend/services/registered-settings-manifests.js +55 -0
- package/dist/backend/services/registered-settings-manifests.js.map +1 -0
- package/dist/backend/services/setting-write-validators.d.ts +43 -0
- package/dist/backend/services/setting-write-validators.d.ts.map +1 -0
- package/dist/backend/services/setting-write-validators.js +43 -0
- package/dist/backend/services/setting-write-validators.js.map +1 -0
- package/dist/backend/services/settings-admin.service.d.ts +206 -0
- package/dist/backend/services/settings-admin.service.d.ts.map +1 -0
- package/dist/backend/services/settings-admin.service.js +642 -0
- package/dist/backend/services/settings-admin.service.js.map +1 -0
- package/dist/backend/services/shop-info-resolver.d.ts +15 -0
- package/dist/backend/services/shop-info-resolver.d.ts.map +1 -0
- package/dist/backend/services/shop-info-resolver.js +44 -0
- package/dist/backend/services/shop-info-resolver.js.map +1 -0
- package/dist/backend/services/speculation-rules-resolver.d.ts +28 -0
- package/dist/backend/services/speculation-rules-resolver.d.ts.map +1 -0
- package/dist/backend/services/speculation-rules-resolver.js +39 -0
- package/dist/backend/services/speculation-rules-resolver.js.map +1 -0
- package/dist/manifest.d.ts +194 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +379 -0
- package/dist/manifest.js.map +1 -0
- package/docs/settings/index.md +171 -0
- package/i18n/en.json +167 -0
- package/i18n/pl.json +167 -0
- package/package.json +96 -0
- package/tailwind.css +14 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import type { EntityManager } from '@mikro-orm/postgresql';
|
|
2
|
+
import { type SettingWriteValidatorRegistryPort } from '@endora-commerce/contracts';
|
|
3
|
+
import type { EventBus } from '@endora-commerce/platform/events';
|
|
4
|
+
import type { AuditPort } from '@endora-commerce/platform/kernel';
|
|
5
|
+
import { SettingGroup } from '@endora-commerce/platform/kernel';
|
|
6
|
+
import { Setting } from '@endora-commerce/platform/kernel';
|
|
7
|
+
import { SettingValue } from '@endora-commerce/platform/kernel';
|
|
8
|
+
import type { SettingsCacheInvalidation } from '@endora-commerce/platform/kernel';
|
|
9
|
+
/**
|
|
10
|
+
* SettingsAdminService — feature 004 / US2 (T034).
|
|
11
|
+
*
|
|
12
|
+
* Centralises every mutation an Admin UI client can make to settings:
|
|
13
|
+
* - per-channel value writes (apply-to-all / apply-to-subset / reset)
|
|
14
|
+
* - group CRUD (create / rename / rescope / delete-with-reassign-to-general)
|
|
15
|
+
*
|
|
16
|
+
* Optimistic concurrency uses an ISO-timestamp `expectedVersion` field
|
|
17
|
+
* matching the pattern adopted in feature 003 governance: when present and
|
|
18
|
+
* stale, the service rejects with `409 VERSION_CONFLICT`.
|
|
19
|
+
*
|
|
20
|
+
* Every successful mutation, in this order:
|
|
21
|
+
* - flushes;
|
|
22
|
+
* - records an `audit_log_entries` row via {@link AuditPort};
|
|
23
|
+
* - **drops the settings cache** through {@link SettingsCacheInvalidation};
|
|
24
|
+
* - emits an EventBus event (see contract section E).
|
|
25
|
+
*
|
|
26
|
+
* The third step is the write seam this service exists to be (issue #45). The
|
|
27
|
+
* drop used to be a *consequence* of the fourth: the kernel subscribed
|
|
28
|
+
* `SettingsCacheInvalidator` to `settings.value_changed`, and `EventBus`
|
|
29
|
+
* dispatches handlers in registration order and fire-and-forget outside a
|
|
30
|
+
* scope. So the cache was dropped in time only because that subscriber
|
|
31
|
+
* happened to be registered first and reached `SharedDropMarks.begin`
|
|
32
|
+
* synchronously — a module subscribing ahead of it deferred the drop past a
|
|
33
|
+
* caller's read, and a write inside an `EventBus.run` scope (every Command —
|
|
34
|
+
* `CommandBus.run` opens one) deferred it past the whole command. Three
|
|
35
|
+
* separate defects came out of that arrangement (MR !540 / issue #30, issue
|
|
36
|
+
* #33, issue #45), so the fourth fix is not another correction of the ordering:
|
|
37
|
+
* the drop is now part of the write and is awaited, and nothing on the bus can
|
|
38
|
+
* be early or late for it.
|
|
39
|
+
*
|
|
40
|
+
* It stays **before** the emit, which also gives every subscriber what the
|
|
41
|
+
* ordering used to promise them: `inventory`'s threshold mirror, `search`'s LLM
|
|
42
|
+
* reactor and `product_feeds`' schedule reconcile all re-read the setting they
|
|
43
|
+
* were told about, and all three now read post-invalidation state by
|
|
44
|
+
* construction rather than by registration luck.
|
|
45
|
+
*/
|
|
46
|
+
export interface AdminAuditContext {
|
|
47
|
+
actorAdminUserId: string | null;
|
|
48
|
+
requestId?: string | null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The effective-state surface this module needs — feature 073, Constitution
|
|
52
|
+
* XVII. Injected rather than imported so `settings` keeps no edge into the
|
|
53
|
+
* lifecycle service graph; `_lifecycle` already depends on this module's
|
|
54
|
+
* `Setting` entity, and reversing that edge in code would make the direction of
|
|
55
|
+
* the dependency a matter of which file you happened to open.
|
|
56
|
+
*/
|
|
57
|
+
export interface ModulePresencePort {
|
|
58
|
+
/**
|
|
59
|
+
* Platform availability AND operator activation, resolved in memory.
|
|
60
|
+
* `undefined` when the platform has never heard of this owner — a
|
|
61
|
+
* hand-created group, a legacy row, a fixture. Those are not modules whose
|
|
62
|
+
* presence anybody can toggle, and treating them as absent would take an
|
|
63
|
+
* operator's configuration away for a module that does not exist.
|
|
64
|
+
*/
|
|
65
|
+
presenceOf(moduleId: string): boolean | undefined;
|
|
66
|
+
/** The module whose activation control this code holds, if any. */
|
|
67
|
+
activationControlOwner(settingCode: string): string | undefined;
|
|
68
|
+
}
|
|
69
|
+
/** One setting, plus what feature 073 says an operator may do with it. */
|
|
70
|
+
export interface ClassifiedSetting {
|
|
71
|
+
setting: Setting;
|
|
72
|
+
values: SettingValue[];
|
|
73
|
+
/**
|
|
74
|
+
* `false` when the owning module is not effectively present. The value is
|
|
75
|
+
* still readable — off is not uninstall — but every write is refused
|
|
76
|
+
* (FR-033).
|
|
77
|
+
*/
|
|
78
|
+
editable: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* This setting IS its module's activation control: the single exception that
|
|
81
|
+
* stays writable while the module is off, and the one setting this service
|
|
82
|
+
* refuses outright (the audited Command owns it).
|
|
83
|
+
*/
|
|
84
|
+
activationControl: boolean;
|
|
85
|
+
}
|
|
86
|
+
export interface SetValueResult {
|
|
87
|
+
setting: Setting;
|
|
88
|
+
affectedChannelIds: string[];
|
|
89
|
+
newVersion: string;
|
|
90
|
+
}
|
|
91
|
+
export declare class SettingsAdminService {
|
|
92
|
+
private readonly emFactory;
|
|
93
|
+
private readonly eventBus;
|
|
94
|
+
/**
|
|
95
|
+
* The kernel's settings cache, contributed by a root as `settingsCache`.
|
|
96
|
+
* Required, and deliberately not optional: an optional cache is a cache
|
|
97
|
+
* that is silently absent in one composition and present in the other,
|
|
98
|
+
* which is the shape every previous defect in this area had.
|
|
99
|
+
*/
|
|
100
|
+
private readonly cache;
|
|
101
|
+
private readonly auditLogService?;
|
|
102
|
+
/** Base64 32-byte key for `secret` settings (feature 043, FR-021). */
|
|
103
|
+
private readonly secretEncryptionKey?;
|
|
104
|
+
/**
|
|
105
|
+
* Feature 073. Absent in a composition with no lifecycle (unit tests):
|
|
106
|
+
* every setting then classifies as editable, which is the pre-073
|
|
107
|
+
* behaviour rather than a fall-open — there is no activation axis to
|
|
108
|
+
* resolve at all.
|
|
109
|
+
*/
|
|
110
|
+
private readonly presence?;
|
|
111
|
+
/**
|
|
112
|
+
* Feature 078, D-95.2. Absent in a composition that registers no registry:
|
|
113
|
+
* every write is then accepted on shape alone, which is the pre-078
|
|
114
|
+
* behaviour. Present, it is where the module that declared the setting gets
|
|
115
|
+
* to refuse a value `settings` cannot judge.
|
|
116
|
+
*/
|
|
117
|
+
private readonly writeValidators?;
|
|
118
|
+
constructor(emFactory: () => EntityManager, eventBus: EventBus,
|
|
119
|
+
/**
|
|
120
|
+
* The kernel's settings cache, contributed by a root as `settingsCache`.
|
|
121
|
+
* Required, and deliberately not optional: an optional cache is a cache
|
|
122
|
+
* that is silently absent in one composition and present in the other,
|
|
123
|
+
* which is the shape every previous defect in this area had.
|
|
124
|
+
*/
|
|
125
|
+
cache: SettingsCacheInvalidation, auditLogService?: AuditPort | undefined,
|
|
126
|
+
/** Base64 32-byte key for `secret` settings (feature 043, FR-021). */
|
|
127
|
+
secretEncryptionKey?: string | undefined,
|
|
128
|
+
/**
|
|
129
|
+
* Feature 073. Absent in a composition with no lifecycle (unit tests):
|
|
130
|
+
* every setting then classifies as editable, which is the pre-073
|
|
131
|
+
* behaviour rather than a fall-open — there is no activation axis to
|
|
132
|
+
* resolve at all.
|
|
133
|
+
*/
|
|
134
|
+
presence?: ModulePresencePort | undefined,
|
|
135
|
+
/**
|
|
136
|
+
* Feature 078, D-95.2. Absent in a composition that registers no registry:
|
|
137
|
+
* every write is then accepted on shape alone, which is the pre-078
|
|
138
|
+
* behaviour. Present, it is where the module that declared the setting gets
|
|
139
|
+
* to refuse a value `settings` cannot judge.
|
|
140
|
+
*/
|
|
141
|
+
writeValidators?: SettingWriteValidatorRegistryPort | undefined);
|
|
142
|
+
/**
|
|
143
|
+
* Classify one setting against the effective state of the module that owns
|
|
144
|
+
* it. Per setting, not per group: a disabled module's activation control must
|
|
145
|
+
* stay visible and writable (Constitution XVII's single exception), so its
|
|
146
|
+
* group stays non-empty and a group-level filter would render the whole
|
|
147
|
+
* group — every knob of a module that is supposed to be gone.
|
|
148
|
+
*/
|
|
149
|
+
private classify;
|
|
150
|
+
/**
|
|
151
|
+
* Refuse a write the classification says is not available.
|
|
152
|
+
*
|
|
153
|
+
* Two distinct refusals, because they mean different things to an operator:
|
|
154
|
+
* an activation code has a *different* door (the audited Command), while an
|
|
155
|
+
* absent module's ordinary setting has *no* door until the module is back.
|
|
156
|
+
*/
|
|
157
|
+
private assertWritable;
|
|
158
|
+
listGroups(filter?: {
|
|
159
|
+
groupCode?: string;
|
|
160
|
+
}): Promise<{
|
|
161
|
+
groups: Array<{
|
|
162
|
+
group: SettingGroup;
|
|
163
|
+
settings: ClassifiedSetting[];
|
|
164
|
+
}>;
|
|
165
|
+
}>;
|
|
166
|
+
getSettingByCode(code: string): Promise<{
|
|
167
|
+
setting: Setting;
|
|
168
|
+
values: SettingValue[];
|
|
169
|
+
version: string;
|
|
170
|
+
editable: boolean;
|
|
171
|
+
activationControl: boolean;
|
|
172
|
+
}>;
|
|
173
|
+
setValueForAllChannels(code: string, rawValue: unknown, expectedVersion: string | null, actor: AdminAuditContext): Promise<SetValueResult>;
|
|
174
|
+
setValueForSubset(code: string, channelCodes: string[], rawValue: unknown, expectedVersion: string | null, actor: AdminAuditContext): Promise<SetValueResult>;
|
|
175
|
+
private setValue;
|
|
176
|
+
/**
|
|
177
|
+
* Hand every channel's **post-write** value to the validators the owning
|
|
178
|
+
* module contributed, and let their throw reach the caller unchanged.
|
|
179
|
+
*
|
|
180
|
+
* `settings` computes the projection because it owns three-tier resolution
|
|
181
|
+
* (per-channel row → globalValue → manifest defaultValue); a validator that
|
|
182
|
+
* re-derived it would drift from it. The extra `SalesChannel` read only
|
|
183
|
+
* happens when a validator is actually registered for the code.
|
|
184
|
+
*/
|
|
185
|
+
private runWriteValidators;
|
|
186
|
+
resetValues(code: string, channelCodes: string[] | undefined, actor: AdminAuditContext): Promise<{
|
|
187
|
+
setting: Setting;
|
|
188
|
+
resetChannelIds: string[];
|
|
189
|
+
globalValueCleared: boolean;
|
|
190
|
+
newVersion: string;
|
|
191
|
+
}>;
|
|
192
|
+
createGroup(input: {
|
|
193
|
+
code: string;
|
|
194
|
+
name: string;
|
|
195
|
+
salesChannelCodes?: string[];
|
|
196
|
+
}, actor: AdminAuditContext): Promise<SettingGroup>;
|
|
197
|
+
updateGroup(code: string, patch: {
|
|
198
|
+
name?: string;
|
|
199
|
+
salesChannelCodes?: string[];
|
|
200
|
+
}, expectedVersion: string | null, actor: AdminAuditContext): Promise<SettingGroup>;
|
|
201
|
+
deleteGroup(code: string, actor: AdminAuditContext): Promise<void>;
|
|
202
|
+
/** Compute the setting's effective version = max(setting.updated_at, max(values.updated_at)). */
|
|
203
|
+
computeSettingVersion(setting: Setting, values: SettingValue[]): string;
|
|
204
|
+
private assertVersion;
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=settings-admin.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-admin.service.d.ts","sourceRoot":"","sources":["../../../src/backend/services/settings-admin.service.ts"],"names":[],"mappings":"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"}
|