@plyaz/core 1.8.1 → 1.8.3
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/domain/base/BaseFrontendDomainService.d.ts +55 -1
- package/dist/domain/base/BaseFrontendDomainService.d.ts.map +1 -1
- package/dist/domain/example/FrontendExampleDomainService.d.ts +6 -4
- package/dist/domain/example/FrontendExampleDomainService.d.ts.map +1 -1
- package/dist/entry-backend.js +110 -21
- package/dist/entry-backend.js.map +1 -1
- package/dist/entry-backend.mjs +110 -21
- package/dist/entry-backend.mjs.map +1 -1
- package/dist/entry-frontend-browser.js +110 -21
- package/dist/entry-frontend-browser.js.map +1 -1
- package/dist/entry-frontend-browser.mjs +110 -21
- package/dist/entry-frontend-browser.mjs.map +1 -1
- package/dist/entry-frontend.js +110 -21
- package/dist/entry-frontend.js.map +1 -1
- package/dist/entry-frontend.mjs +110 -21
- package/dist/entry-frontend.mjs.map +1 -1
- package/dist/index.js +110 -21
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +110 -21
- package/dist/index.mjs.map +1 -1
- package/dist/init/CoreInitializer.d.ts.map +1 -1
- package/dist/init/ServiceRegistry.d.ts.map +1 -1
- package/dist/init/nestjs/index.js +23 -4
- package/dist/init/nestjs/index.js.map +1 -1
- package/dist/init/nestjs/index.mjs +23 -4
- package/dist/init/nestjs/index.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -121,7 +121,12 @@ export declare abstract class BaseFrontendDomainService<TConfig extends CoreBase
|
|
|
121
121
|
/** Primary store - the main store this service can mutate */
|
|
122
122
|
private _primaryStore;
|
|
123
123
|
/**
|
|
124
|
-
* Primary store key -
|
|
124
|
+
* Primary store key - resolved from (in order of precedence):
|
|
125
|
+
* 1. serviceConfig.store (explicit config)
|
|
126
|
+
* 2. Static defaultStoreKey on class
|
|
127
|
+
* 3. undefined (no store integration)
|
|
128
|
+
*
|
|
129
|
+
* Override in subclass or set via config.
|
|
125
130
|
* @example protected primaryStoreKey = STORE_KEYS.EXAMPLE;
|
|
126
131
|
*/
|
|
127
132
|
protected primaryStoreKey?: string;
|
|
@@ -142,6 +147,55 @@ export declare abstract class BaseFrontendDomainService<TConfig extends CoreBase
|
|
|
142
147
|
/** Maximum rollback stack size */
|
|
143
148
|
private readonly _maxRollbackStackSize;
|
|
144
149
|
constructor(config: CoreBaseFrontendServiceConstructorConfig<TConfig, TStore, TData, TMapper, TValidator>);
|
|
150
|
+
/**
|
|
151
|
+
* Auto-resolve apiClientConfig from serviceConfig.apiBasePath if not explicitly provided.
|
|
152
|
+
* This reduces boilerplate in child services - they only need to set apiBasePath in config.
|
|
153
|
+
*
|
|
154
|
+
* Priority:
|
|
155
|
+
* 1. Explicit apiClientConfig.baseURL (full control)
|
|
156
|
+
* 2. serviceConfig.apiBasePath (auto-constructed, merged with injected options)
|
|
157
|
+
* 3. undefined (no API client)
|
|
158
|
+
*
|
|
159
|
+
* When auto-constructing, merges injected API options (headers, timeout, etc.)
|
|
160
|
+
* with the service's apiBasePath as baseURL.
|
|
161
|
+
*/
|
|
162
|
+
protected static resolveApiClientConfig<T extends {
|
|
163
|
+
serviceConfig: {
|
|
164
|
+
apiBasePath?: string;
|
|
165
|
+
};
|
|
166
|
+
apiClientConfig?: {
|
|
167
|
+
baseURL?: string;
|
|
168
|
+
};
|
|
169
|
+
injected?: {
|
|
170
|
+
api?: unknown;
|
|
171
|
+
};
|
|
172
|
+
}>(config: T): T;
|
|
173
|
+
/**
|
|
174
|
+
* Initialize service and wait for API client to be ready.
|
|
175
|
+
* Call this in child service's static create() method after constructing the instance.
|
|
176
|
+
*
|
|
177
|
+
* @param service - The service instance to initialize
|
|
178
|
+
* @returns The initialized service (same instance, for chaining)
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```typescript
|
|
182
|
+
* static async create(config, options): Promise<MyService> {
|
|
183
|
+
* const service = new MyService(config, options);
|
|
184
|
+
* return this.initializeService(service);
|
|
185
|
+
* }
|
|
186
|
+
* ```
|
|
187
|
+
*/
|
|
188
|
+
protected static initializeService<T extends {
|
|
189
|
+
ensureApiClientInitialized(): Promise<void>;
|
|
190
|
+
}>(service: T): Promise<T>;
|
|
191
|
+
/**
|
|
192
|
+
* Ensure service is ready for operations.
|
|
193
|
+
* Checks enabled/available status AND waits for API client initialization.
|
|
194
|
+
* Call this at the start of all CRUD methods.
|
|
195
|
+
*
|
|
196
|
+
* @throws CorePackageError if service is not enabled or available
|
|
197
|
+
*/
|
|
198
|
+
protected ensureReady(): Promise<void>;
|
|
145
199
|
/**
|
|
146
200
|
* Get the number of connected stores (primary + read stores).
|
|
147
201
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseFrontendDomainService.d.ts","sourceRoot":"","sources":["../../../src/domain/base/BaseFrontendDomainService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4EG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAa,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAI5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,qBAAqB,EACrB,6BAA6B,EAC7B,wCAAwC,EACxC,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EACV,qBAAqB,EACrB,6BAA6B,EAC7B,wCAAwC,EACxC,sBAAsB,EACtB,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,mBAAmB,CAAC;AAO3B;;;GAGG;AACH,KAAK,wBAAwB,GACzB,yBAAyB,CAAC,OAAO,CAAC,GAClC,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,GAC1C,yBAAyB,CAAC,OAAO,CAAC,GAClC,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,GAC1C,yBAAyB,GACzB,wBAAwB,GACxB,sBAAsB,GACtB,yBAAyB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAM5B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8BAAsB,yBAAyB,CAC7C,OAAO,SAAS,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,EAC5D,MAAM,SAAS,qBAAqB,CAAC,KAAK,CAAC,EAC3C,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAG,OAAO,EACjB,YAAY,GAAG,OAAO,EACtB,UAAU,GAAG,OAAO,EACpB,SAAS,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,EACxD,SAAS,GAAG,OAAO,EACnB,WAAW,GAAG,OAAO,EACrB,OAAO,SAAS,sBAAsB,CACpC,OAAO,EACP,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,WAAW,CACZ,GAAG,sBAAsB,CACxB,OAAO,EACP,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,WAAW,CACZ,EACD,UAAU,SAAS,yBAAyB,GAAG,yBAAyB,EACxE,aAAa,GAAG,IAAI,CACpB,SAAQ,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC;IAKvD;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAMvC,6DAA6D;IAC7D,OAAO,CAAC,aAAa,CAAuB;IAE5C
|
|
1
|
+
{"version":3,"file":"BaseFrontendDomainService.d.ts","sourceRoot":"","sources":["../../../src/domain/base/BaseFrontendDomainService.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,16 +72,18 @@ export declare class FrontendExampleDomainService extends BaseFrontendDomainServ
|
|
|
72
72
|
* Required by BaseFrontendDomainService
|
|
73
73
|
*/
|
|
74
74
|
protected eventPrefix: string;
|
|
75
|
-
/**
|
|
76
|
-
* Primary store key - the store this service can mutate
|
|
77
|
-
*/
|
|
78
|
-
protected primaryStoreKey: "example";
|
|
79
75
|
/**
|
|
80
76
|
* Read-only store keys - inherits error and featureFlags from base
|
|
81
77
|
* No need to redeclare them - they're always included by default
|
|
82
78
|
*/
|
|
83
79
|
private pollingTimer;
|
|
84
80
|
static readonly serviceKey: "example-frontend";
|
|
81
|
+
/**
|
|
82
|
+
* Primary store key for this service.
|
|
83
|
+
* Used by ServiceRegistry to auto-inject the store if not specified in config.
|
|
84
|
+
* Also used by base class constructor to set instance primaryStoreKey.
|
|
85
|
+
*/
|
|
86
|
+
static readonly primaryStoreKey: "example";
|
|
85
87
|
/**
|
|
86
88
|
* Factory method for ServiceRegistry auto-initialization.
|
|
87
89
|
* Creates and initializes the service instance.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrontendExampleDomainService.d.ts","sourceRoot":"","sources":["../../../src/domain/example/FrontendExampleDomainService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAc7D,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,IAAI,6BAA6B,EAC7D,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAMnE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,4BAA6B,SAAQ,yBAAyB,CACzE,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,YAAY,CAAC,OAAO,kBAAkB,CAAC,EACvC,yBAAyB,EACzB,IAAI,CACL;IAKC;;;OAGG;IACH,SAAS,CAAC,WAAW,SAAa;IAElC
|
|
1
|
+
{"version":3,"file":"FrontendExampleDomainService.d.ts","sourceRoot":"","sources":["../../../src/domain/example/FrontendExampleDomainService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAc7D,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,IAAI,6BAA6B,EAC7D,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAMnE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,4BAA6B,SAAQ,yBAAyB,CACzE,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,YAAY,CAAC,OAAO,kBAAkB,CAAC,EACvC,yBAAyB,EACzB,IAAI,CACL;IAKC;;;OAGG;IACH,SAAS,CAAC,WAAW,SAAa;IAElC;;;OAGG;IAOH,OAAO,CAAC,YAAY,CAA+C;IAMnE,MAAM,CAAC,QAAQ,CAAC,UAAU,qBAAiC;IAE3D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,eAAe,YAAsB;IAErD;;;OAGG;WACU,MAAM,CACjB,MAAM,EAAE,6BAA6B,EACrC,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,4BAA4B,CAAC;gBAmB5B,MAAM,GAAE,6BAAkC,EAAE,OAAO,CAAC,EAAE,wBAAwB;IA2E1F,WAAW,IAAI,OAAO;IAItB,OAAO,IAAI,IAAI;IASf;;;OAGG;cACsB,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BhF;;;;;;;;;;;;OAYG;IACH,EAAE,CAAC,KAAK,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAQjF;;;OAGG;IACH,YAAY,IAAI,IAAI;IAapB;;OAEG;IACH,WAAW,IAAI,IAAI;IAYnB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAItE;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAInD;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAIlD;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;CAkBtD"}
|
package/dist/entry-backend.js
CHANGED
|
@@ -2441,10 +2441,16 @@ var init_ServiceRegistry = __esm({
|
|
|
2441
2441
|
return initPromise;
|
|
2442
2442
|
}
|
|
2443
2443
|
/** Build stores for service injection */
|
|
2444
|
-
|
|
2444
|
+
// eslint-disable-next-line complexity
|
|
2445
|
+
static buildStoresForService(config, entry) {
|
|
2445
2446
|
const allKeys = /* @__PURE__ */ new Set();
|
|
2446
2447
|
if (config.store) {
|
|
2447
2448
|
allKeys.add(config.store);
|
|
2449
|
+
} else if ("primaryStoreKey" in entry.service && typeof entry.service.primaryStoreKey === "string") {
|
|
2450
|
+
allKeys.add(entry.service.primaryStoreKey);
|
|
2451
|
+
_ServiceRegistry.logger.debug(
|
|
2452
|
+
`Auto-resolved store key '${entry.service.primaryStoreKey}' from service class`
|
|
2453
|
+
);
|
|
2448
2454
|
}
|
|
2449
2455
|
if (config.readStores) {
|
|
2450
2456
|
config.readStores.forEach((key) => allKeys.add(key));
|
|
@@ -2482,7 +2488,7 @@ var init_ServiceRegistry = __esm({
|
|
|
2482
2488
|
const observability = _ServiceRegistry.buildObservabilityConfig(config, entry);
|
|
2483
2489
|
const storage = await _ServiceRegistry.buildStorageConfig(config, entry);
|
|
2484
2490
|
const notifications = await _ServiceRegistry.buildNotificationsConfig(config, entry);
|
|
2485
|
-
const stores = _ServiceRegistry.buildStoresForService(config);
|
|
2491
|
+
const stores = _ServiceRegistry.buildStoresForService(config, entry);
|
|
2486
2492
|
let observabilityInstance = observability?.instance;
|
|
2487
2493
|
if (observability?.dedicated && observability.config) {
|
|
2488
2494
|
observabilityInstance = await _ServiceRegistry.createDedicatedObservability(
|
|
@@ -4033,6 +4039,13 @@ var init_CoreInitializer = __esm({
|
|
|
4033
4039
|
/** Create fetch flags function */
|
|
4034
4040
|
static createFetchFlagsFn(config, verbose) {
|
|
4035
4041
|
return async () => {
|
|
4042
|
+
if (config?.provider !== "api") {
|
|
4043
|
+
_Core.log(
|
|
4044
|
+
`Feature flags using ${config?.provider ?? "default"} provider (no API fetch)`,
|
|
4045
|
+
verbose
|
|
4046
|
+
);
|
|
4047
|
+
return config?.defaults ?? {};
|
|
4048
|
+
}
|
|
4036
4049
|
try {
|
|
4037
4050
|
const client = exports.ApiClientService.getClient();
|
|
4038
4051
|
const endpoint = config?.apiEndpoint ?? "/feature-flags";
|
|
@@ -4052,6 +4065,7 @@ var init_CoreInitializer = __esm({
|
|
|
4052
4065
|
/**
|
|
4053
4066
|
* Initialize feature flags slice within root store
|
|
4054
4067
|
*/
|
|
4068
|
+
// eslint-disable-next-line complexity
|
|
4055
4069
|
static async initializeFeatureFlags(config, verbose) {
|
|
4056
4070
|
if (config?.enabled === false) {
|
|
4057
4071
|
_Core.log("Feature flags disabled by configuration", verbose);
|
|
@@ -4064,11 +4078,16 @@ var init_CoreInitializer = __esm({
|
|
|
4064
4078
|
);
|
|
4065
4079
|
}
|
|
4066
4080
|
_Core._flagConfig = config ?? {};
|
|
4067
|
-
|
|
4081
|
+
const isApiProvider = config?.provider === "api";
|
|
4082
|
+
_Core.log(
|
|
4083
|
+
`Initializing feature flags from root store (provider: ${config?.provider ?? "default"})...`,
|
|
4084
|
+
verbose
|
|
4085
|
+
);
|
|
4068
4086
|
const state = _Core._rootStore.getState();
|
|
4069
4087
|
await state.featureFlags.initialize({
|
|
4070
4088
|
defaults: _Core._flagConfig.defaults,
|
|
4071
|
-
polling
|
|
4089
|
+
// Only enable polling for API provider
|
|
4090
|
+
polling: isApiProvider ? _Core._flagConfig.polling : void 0,
|
|
4072
4091
|
fetchFn: _Core.createFetchFlagsFn(_Core._flagConfig, verbose),
|
|
4073
4092
|
onFlagChange: _Core._flagConfig.onFlagChange,
|
|
4074
4093
|
onError: _Core._flagConfig.onError
|
|
@@ -4489,13 +4508,14 @@ var init_BaseFrontendDomainService = __esm({
|
|
|
4489
4508
|
init_BaseDomainService();
|
|
4490
4509
|
init_CoreEventManager();
|
|
4491
4510
|
init_CoreInitializer();
|
|
4492
|
-
BaseFrontendDomainService = class extends exports.BaseDomainService {
|
|
4511
|
+
BaseFrontendDomainService = class _BaseFrontendDomainService extends exports.BaseDomainService {
|
|
4493
4512
|
// ─────────────────────────────────────────────────────────────────────────
|
|
4494
4513
|
// Constructor
|
|
4495
4514
|
// ─────────────────────────────────────────────────────────────────────────
|
|
4496
4515
|
// eslint-disable-next-line complexity
|
|
4497
4516
|
constructor(config) {
|
|
4498
|
-
|
|
4517
|
+
const resolvedConfig = _BaseFrontendDomainService.resolveApiClientConfig(config);
|
|
4518
|
+
super(resolvedConfig);
|
|
4499
4519
|
// ─────────────────────────────────────────────────────────────────────────
|
|
4500
4520
|
// Store Properties
|
|
4501
4521
|
// ─────────────────────────────────────────────────────────────────────────
|
|
@@ -4521,6 +4541,11 @@ var init_BaseFrontendDomainService = __esm({
|
|
|
4521
4541
|
const serviceConfig = config.serviceConfig;
|
|
4522
4542
|
if (serviceConfig.store !== void 0) {
|
|
4523
4543
|
this.primaryStoreKey = serviceConfig.store;
|
|
4544
|
+
} else {
|
|
4545
|
+
const staticKey = this.constructor.primaryStoreKey;
|
|
4546
|
+
if (staticKey) {
|
|
4547
|
+
this.primaryStoreKey = staticKey;
|
|
4548
|
+
}
|
|
4524
4549
|
}
|
|
4525
4550
|
if (serviceConfig.readStores !== void 0) {
|
|
4526
4551
|
this.readStoreKeys = Array.from(
|
|
@@ -4539,9 +4564,12 @@ var init_BaseFrontendDomainService = __esm({
|
|
|
4539
4564
|
this._primaryStore = primaryStore;
|
|
4540
4565
|
this.logDebug(`Connected primary store: '${this.primaryStoreKey}'`);
|
|
4541
4566
|
} else {
|
|
4542
|
-
|
|
4543
|
-
|
|
4544
|
-
|
|
4567
|
+
const isServer = typeof globalThis.window === "undefined";
|
|
4568
|
+
if (!isServer) {
|
|
4569
|
+
this.logWarn(
|
|
4570
|
+
`Primary store '${this.primaryStoreKey}' not found. Store mutations (setData/updateData/setLoading) will be disabled. Configure stores in PlyazProvider to enable store integration.`
|
|
4571
|
+
);
|
|
4572
|
+
}
|
|
4545
4573
|
}
|
|
4546
4574
|
}
|
|
4547
4575
|
for (const key of this.readStoreKeys) {
|
|
@@ -4566,6 +4594,66 @@ var init_BaseFrontendDomainService = __esm({
|
|
|
4566
4594
|
static {
|
|
4567
4595
|
__name(this, "BaseFrontendDomainService");
|
|
4568
4596
|
}
|
|
4597
|
+
/**
|
|
4598
|
+
* Auto-resolve apiClientConfig from serviceConfig.apiBasePath if not explicitly provided.
|
|
4599
|
+
* This reduces boilerplate in child services - they only need to set apiBasePath in config.
|
|
4600
|
+
*
|
|
4601
|
+
* Priority:
|
|
4602
|
+
* 1. Explicit apiClientConfig.baseURL (full control)
|
|
4603
|
+
* 2. serviceConfig.apiBasePath (auto-constructed, merged with injected options)
|
|
4604
|
+
* 3. undefined (no API client)
|
|
4605
|
+
*
|
|
4606
|
+
* When auto-constructing, merges injected API options (headers, timeout, etc.)
|
|
4607
|
+
* with the service's apiBasePath as baseURL.
|
|
4608
|
+
*/
|
|
4609
|
+
static resolveApiClientConfig(config) {
|
|
4610
|
+
if (config.apiClientConfig?.baseURL) {
|
|
4611
|
+
return config;
|
|
4612
|
+
}
|
|
4613
|
+
const apiBasePath = config.serviceConfig.apiBasePath;
|
|
4614
|
+
if (apiBasePath) {
|
|
4615
|
+
const injectedOptions = config.injected?.api ? {} : config.apiClientConfig ?? {};
|
|
4616
|
+
return {
|
|
4617
|
+
...config,
|
|
4618
|
+
apiClientConfig: {
|
|
4619
|
+
...injectedOptions,
|
|
4620
|
+
baseURL: apiBasePath
|
|
4621
|
+
// Service's apiBasePath always takes precedence
|
|
4622
|
+
}
|
|
4623
|
+
};
|
|
4624
|
+
}
|
|
4625
|
+
return config;
|
|
4626
|
+
}
|
|
4627
|
+
/**
|
|
4628
|
+
* Initialize service and wait for API client to be ready.
|
|
4629
|
+
* Call this in child service's static create() method after constructing the instance.
|
|
4630
|
+
*
|
|
4631
|
+
* @param service - The service instance to initialize
|
|
4632
|
+
* @returns The initialized service (same instance, for chaining)
|
|
4633
|
+
*
|
|
4634
|
+
* @example
|
|
4635
|
+
* ```typescript
|
|
4636
|
+
* static async create(config, options): Promise<MyService> {
|
|
4637
|
+
* const service = new MyService(config, options);
|
|
4638
|
+
* return this.initializeService(service);
|
|
4639
|
+
* }
|
|
4640
|
+
* ```
|
|
4641
|
+
*/
|
|
4642
|
+
static async initializeService(service) {
|
|
4643
|
+
await service.ensureApiClientInitialized();
|
|
4644
|
+
return service;
|
|
4645
|
+
}
|
|
4646
|
+
/**
|
|
4647
|
+
* Ensure service is ready for operations.
|
|
4648
|
+
* Checks enabled/available status AND waits for API client initialization.
|
|
4649
|
+
* Call this at the start of all CRUD methods.
|
|
4650
|
+
*
|
|
4651
|
+
* @throws CorePackageError if service is not enabled or available
|
|
4652
|
+
*/
|
|
4653
|
+
async ensureReady() {
|
|
4654
|
+
this.assertReady();
|
|
4655
|
+
await this.ensureApiClientInitialized();
|
|
4656
|
+
}
|
|
4569
4657
|
// ─────────────────────────────────────────────────────────────────────────
|
|
4570
4658
|
// Store Management (Public API)
|
|
4571
4659
|
// ─────────────────────────────────────────────────────────────────────────
|
|
@@ -5038,7 +5126,7 @@ var init_BaseFrontendDomainService = __esm({
|
|
|
5038
5126
|
*/
|
|
5039
5127
|
// eslint-disable-next-line complexity
|
|
5040
5128
|
async fetchAll(query, options) {
|
|
5041
|
-
this.
|
|
5129
|
+
await this.ensureReady();
|
|
5042
5130
|
const startTime = Date.now();
|
|
5043
5131
|
if (!this.config.fetchers?.fetchAll) {
|
|
5044
5132
|
throw new errors.CorePackageError(
|
|
@@ -5123,7 +5211,7 @@ var init_BaseFrontendDomainService = __esm({
|
|
|
5123
5211
|
*/
|
|
5124
5212
|
// eslint-disable-next-line complexity
|
|
5125
5213
|
async fetchById(id, options) {
|
|
5126
|
-
this.
|
|
5214
|
+
await this.ensureReady();
|
|
5127
5215
|
const startTime = Date.now();
|
|
5128
5216
|
if (!this.config.fetchers?.fetchById) {
|
|
5129
5217
|
throw new errors.CorePackageError(
|
|
@@ -5184,7 +5272,7 @@ var init_BaseFrontendDomainService = __esm({
|
|
|
5184
5272
|
*/
|
|
5185
5273
|
// eslint-disable-next-line complexity, max-lines-per-function
|
|
5186
5274
|
async create(data, options) {
|
|
5187
|
-
this.
|
|
5275
|
+
await this.ensureReady();
|
|
5188
5276
|
const startTime = Date.now();
|
|
5189
5277
|
if (!this.config.fetchers?.create) {
|
|
5190
5278
|
throw new errors.CorePackageError(
|
|
@@ -5277,7 +5365,7 @@ var init_BaseFrontendDomainService = __esm({
|
|
|
5277
5365
|
*/
|
|
5278
5366
|
// eslint-disable-next-line complexity, max-lines-per-function
|
|
5279
5367
|
async update(id, data, options) {
|
|
5280
|
-
this.
|
|
5368
|
+
await this.ensureReady();
|
|
5281
5369
|
const startTime = Date.now();
|
|
5282
5370
|
if (!this.config.fetchers?.update) {
|
|
5283
5371
|
throw new errors.CorePackageError(
|
|
@@ -5366,7 +5454,7 @@ var init_BaseFrontendDomainService = __esm({
|
|
|
5366
5454
|
*/
|
|
5367
5455
|
// eslint-disable-next-line complexity
|
|
5368
5456
|
async delete(id, options) {
|
|
5369
|
-
this.
|
|
5457
|
+
await this.ensureReady();
|
|
5370
5458
|
const startTime = Date.now();
|
|
5371
5459
|
if (!this.config.fetchers?.delete) {
|
|
5372
5460
|
throw new errors.CorePackageError(
|
|
@@ -7791,14 +7879,11 @@ var init_FrontendExampleDomainService = __esm({
|
|
|
7791
7879
|
// ─────────────────────────────────────────────────────────────────────────
|
|
7792
7880
|
// Constructor
|
|
7793
7881
|
// ─────────────────────────────────────────────────────────────────────────
|
|
7794
|
-
// eslint-disable-next-line complexity
|
|
7795
7882
|
constructor(config = {}, options) {
|
|
7796
7883
|
const apiBasePath = config.apiBasePath ?? "/api/examples";
|
|
7797
7884
|
super({
|
|
7798
7885
|
serviceName: "ExampleFrontendService",
|
|
7799
7886
|
supportedRuntimes: ["frontend"],
|
|
7800
|
-
// API client config - uses injected options or creates from apiBasePath
|
|
7801
|
-
apiClientConfig: options?.apiClient?.options ?? { baseURL: apiBasePath },
|
|
7802
7887
|
serviceConfig: {
|
|
7803
7888
|
enabled: true,
|
|
7804
7889
|
apiBasePath,
|
|
@@ -7862,10 +7947,6 @@ var init_FrontendExampleDomainService = __esm({
|
|
|
7862
7947
|
* Required by BaseFrontendDomainService
|
|
7863
7948
|
*/
|
|
7864
7949
|
this.eventPrefix = "example";
|
|
7865
|
-
/**
|
|
7866
|
-
* Primary store key - the store this service can mutate
|
|
7867
|
-
*/
|
|
7868
|
-
this.primaryStoreKey = store.STORE_KEYS.EXAMPLE;
|
|
7869
7950
|
/**
|
|
7870
7951
|
* Read-only store keys - inherits error and featureFlags from base
|
|
7871
7952
|
* No need to redeclare them - they're always included by default
|
|
@@ -7888,6 +7969,14 @@ var init_FrontendExampleDomainService = __esm({
|
|
|
7888
7969
|
// ─────────────────────────────────────────────────────────────────────────
|
|
7889
7970
|
this.serviceKey = core.SERVICE_KEYS.EXAMPLE_FRONTEND;
|
|
7890
7971
|
}
|
|
7972
|
+
static {
|
|
7973
|
+
/**
|
|
7974
|
+
* Primary store key for this service.
|
|
7975
|
+
* Used by ServiceRegistry to auto-inject the store if not specified in config.
|
|
7976
|
+
* Also used by base class constructor to set instance primaryStoreKey.
|
|
7977
|
+
*/
|
|
7978
|
+
this.primaryStoreKey = store.STORE_KEYS.EXAMPLE;
|
|
7979
|
+
}
|
|
7891
7980
|
/**
|
|
7892
7981
|
* Factory method for ServiceRegistry auto-initialization.
|
|
7893
7982
|
* Creates and initializes the service instance.
|