@plyaz/core 1.2.0 → 1.3.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/README.md +248 -183
- package/dist/adapters/index.d.ts +16 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/nestjs.d.ts +79 -0
- package/dist/adapters/nestjs.d.ts.map +1 -0
- package/dist/adapters/nextjs.d.ts +28 -0
- package/dist/adapters/nextjs.d.ts.map +1 -0
- package/dist/backend/example/example.controller.d.ts +121 -0
- package/dist/backend/example/example.controller.d.ts.map +1 -0
- package/dist/backend/example/example.module.d.ts +29 -0
- package/dist/backend/example/example.module.d.ts.map +1 -0
- package/dist/backend/example/index.d.ts +8 -0
- package/dist/backend/example/index.d.ts.map +1 -0
- package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts +150 -0
- package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts.map +1 -0
- package/dist/backend/featureFlags/config/feature-flag.config.d.ts +28 -50
- package/dist/backend/featureFlags/config/feature-flag.config.d.ts.map +1 -1
- package/dist/backend/featureFlags/config/validation.d.ts +6 -6
- package/dist/backend/featureFlags/config/validation.d.ts.map +1 -1
- package/dist/backend/featureFlags/feature-flag.controller.d.ts +14 -55
- package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -1
- package/dist/backend/featureFlags/feature-flag.module.d.ts +36 -43
- package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -1
- package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts +16 -2
- package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts.map +1 -1
- package/dist/backend/featureFlags/index.d.ts +6 -7
- package/dist/backend/featureFlags/index.d.ts.map +1 -1
- package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts.map +1 -1
- package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts.map +1 -1
- package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts +6 -11
- package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts.map +1 -1
- package/dist/backend/index.d.ts +5 -0
- package/dist/backend/index.d.ts.map +1 -1
- package/dist/base/cache/CacheKeyBuilder.d.ts +115 -0
- package/dist/base/cache/CacheKeyBuilder.d.ts.map +1 -0
- package/dist/base/cache/index.d.ts +1 -0
- package/dist/base/cache/index.d.ts.map +1 -1
- package/dist/base/cache/strategies/redis.d.ts.map +1 -1
- package/dist/base/observability/BaseAdapter.d.ts +79 -0
- package/dist/base/observability/BaseAdapter.d.ts.map +1 -0
- package/dist/base/observability/CompositeAdapter.d.ts +72 -0
- package/dist/base/observability/CompositeAdapter.d.ts.map +1 -0
- package/dist/base/observability/DatadogAdapter.d.ts +117 -0
- package/dist/base/observability/DatadogAdapter.d.ts.map +1 -0
- package/dist/base/observability/LoggerAdapter.d.ts +54 -0
- package/dist/base/observability/LoggerAdapter.d.ts.map +1 -0
- package/dist/base/observability/ObservabilityService.d.ts +160 -0
- package/dist/base/observability/ObservabilityService.d.ts.map +1 -0
- package/dist/base/observability/index.d.ts +17 -0
- package/dist/base/observability/index.d.ts.map +1 -0
- package/dist/domain/base/BaseBackendDomainService.d.ts +528 -0
- package/dist/domain/base/BaseBackendDomainService.d.ts.map +1 -0
- package/dist/domain/base/BaseDomainService.d.ts +284 -0
- package/dist/domain/base/BaseDomainService.d.ts.map +1 -0
- package/dist/domain/base/BaseFrontendDomainService.d.ts +493 -0
- package/dist/domain/base/BaseFrontendDomainService.d.ts.map +1 -0
- package/dist/domain/base/BaseMapper.d.ts +100 -0
- package/dist/domain/base/BaseMapper.d.ts.map +1 -0
- package/dist/domain/base/BaseValidator.d.ts +105 -0
- package/dist/domain/base/BaseValidator.d.ts.map +1 -0
- package/dist/domain/base/index.d.ts +10 -0
- package/dist/domain/base/index.d.ts.map +1 -0
- package/dist/domain/example/BackendExampleDomainService.d.ts +257 -0
- package/dist/domain/example/BackendExampleDomainService.d.ts.map +1 -0
- package/dist/domain/example/FrontendExampleDomainService.d.ts +164 -0
- package/dist/domain/example/FrontendExampleDomainService.d.ts.map +1 -0
- package/dist/domain/example/index.d.ts +10 -0
- package/dist/domain/example/index.d.ts.map +1 -0
- package/dist/domain/example/mappers/ExampleMapper.d.ts +67 -0
- package/dist/domain/example/mappers/ExampleMapper.d.ts.map +1 -0
- package/dist/domain/example/validators/ExampleValidator.d.ts +33 -0
- package/dist/domain/example/validators/ExampleValidator.d.ts.map +1 -0
- package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts +86 -0
- package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts.map +1 -0
- package/dist/domain/featureFlags/index.d.ts +10 -5
- package/dist/domain/featureFlags/index.d.ts.map +1 -1
- package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts +72 -0
- package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts.map +1 -0
- package/dist/domain/featureFlags/mappers/index.d.ts +8 -0
- package/dist/domain/featureFlags/mappers/index.d.ts.map +1 -0
- package/dist/domain/featureFlags/module.d.ts +20 -0
- package/dist/domain/featureFlags/module.d.ts.map +1 -0
- package/dist/domain/featureFlags/provider.d.ts +40 -1
- package/dist/domain/featureFlags/provider.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/api.d.ts +59 -34
- package/dist/domain/featureFlags/providers/api.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/database.d.ts +54 -47
- package/dist/domain/featureFlags/providers/database.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/factory.d.ts +50 -33
- package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/file.d.ts +48 -1
- package/dist/domain/featureFlags/providers/file.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/memory.d.ts +32 -6
- package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -1
- package/dist/domain/featureFlags/providers/redis.d.ts +6 -1
- package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -1
- package/dist/domain/featureFlags/service.d.ts +112 -0
- package/dist/domain/featureFlags/service.d.ts.map +1 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/engine/featureFlags/engine.d.ts +8 -0
- package/dist/engine/featureFlags/engine.d.ts.map +1 -1
- package/dist/entry-backend.d.ts +26 -0
- package/dist/entry-backend.d.ts.map +1 -0
- package/dist/entry-backend.js +15455 -0
- package/dist/entry-backend.js.map +1 -0
- package/dist/entry-backend.mjs +15339 -0
- package/dist/entry-backend.mjs.map +1 -0
- package/dist/entry-frontend.d.ts +23 -0
- package/dist/entry-frontend.d.ts.map +1 -0
- package/dist/entry-frontend.js +11340 -0
- package/dist/entry-frontend.js.map +1 -0
- package/dist/entry-frontend.mjs +11278 -0
- package/dist/entry-frontend.mjs.map +1 -0
- package/dist/events/CoreEventManager.d.ts +116 -0
- package/dist/events/CoreEventManager.d.ts.map +1 -0
- package/dist/events/index.d.ts +27 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/frontend/base/index.d.ts +8 -0
- package/dist/frontend/base/index.d.ts.map +1 -0
- package/dist/frontend/components/InitializationError.d.ts +25 -0
- package/dist/frontend/components/InitializationError.d.ts.map +1 -0
- package/dist/frontend/components/InitializationLoading.d.ts +22 -0
- package/dist/frontend/components/InitializationLoading.d.ts.map +1 -0
- package/dist/frontend/components/index.d.ts +9 -0
- package/dist/frontend/components/index.d.ts.map +1 -0
- package/dist/frontend/example/index.d.ts +9 -0
- package/dist/frontend/example/index.d.ts.map +1 -0
- package/dist/frontend/featureFlags/index.d.ts +28 -7
- package/dist/frontend/featureFlags/index.d.ts.map +1 -1
- package/dist/frontend/index.d.ts +4 -0
- package/dist/frontend/index.d.ts.map +1 -1
- package/dist/frontend/providers/ApiProvider.d.ts +2 -2
- package/dist/frontend/providers/ApiProvider.d.ts.map +1 -1
- package/dist/frontend/providers/PlyazProvider.d.ts +305 -0
- package/dist/frontend/providers/PlyazProvider.d.ts.map +1 -0
- package/dist/frontend/providers/index.d.ts +1 -0
- package/dist/frontend/providers/index.d.ts.map +1 -1
- package/dist/frontend/store/feature-flags.d.ts +63 -0
- package/dist/frontend/store/feature-flags.d.ts.map +1 -0
- package/dist/frontend/store/index.d.ts +14 -0
- package/dist/frontend/store/index.d.ts.map +1 -0
- package/dist/frontend/store/integrations.d.ts +36 -0
- package/dist/frontend/store/integrations.d.ts.map +1 -0
- package/dist/frontend/store/service-accessors.d.ts +78 -0
- package/dist/frontend/store/service-accessors.d.ts.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15262 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +13667 -4861
- package/dist/index.mjs.map +1 -1
- package/dist/init/CoreInitializer.d.ts +583 -0
- package/dist/init/CoreInitializer.d.ts.map +1 -0
- package/dist/init/ServiceRegistry.d.ts +256 -0
- package/dist/init/ServiceRegistry.d.ts.map +1 -0
- package/dist/init/index.d.ts +14 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/nestjs/CoreModule.d.ts +63 -0
- package/dist/init/nestjs/CoreModule.d.ts.map +1 -0
- package/dist/init/nestjs/index.d.ts +5 -0
- package/dist/init/nestjs/index.d.ts.map +1 -0
- package/dist/init/nestjs/index.js +9234 -0
- package/dist/init/nestjs/index.js.map +1 -0
- package/dist/init/nestjs/index.mjs +9230 -0
- package/dist/init/nestjs/index.mjs.map +1 -0
- package/dist/init/react.d.ts +33 -0
- package/dist/init/react.d.ts.map +1 -0
- package/dist/models/example/ExampleRepository.d.ts +166 -0
- package/dist/models/example/ExampleRepository.d.ts.map +1 -0
- package/dist/models/example/index.d.ts +7 -0
- package/dist/models/example/index.d.ts.map +1 -0
- package/dist/models/featureFlags/FeatureFlagRepository.d.ts +161 -0
- package/dist/models/featureFlags/FeatureFlagRepository.d.ts.map +1 -0
- package/dist/models/featureFlags/index.d.ts +7 -0
- package/dist/models/featureFlags/index.d.ts.map +1 -0
- package/dist/models/index.d.ts +9 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/services/ApiClientService.d.ts +92 -4
- package/dist/services/ApiClientService.d.ts.map +1 -1
- package/dist/services/CacheService.d.ts +176 -0
- package/dist/services/CacheService.d.ts.map +1 -0
- package/dist/services/DbService.d.ts +393 -0
- package/dist/services/DbService.d.ts.map +1 -0
- package/dist/services/NotificationService.d.ts +153 -0
- package/dist/services/NotificationService.d.ts.map +1 -0
- package/dist/services/StorageService.d.ts +146 -0
- package/dist/services/StorageService.d.ts.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/utils/common/id.d.ts +83 -0
- package/dist/utils/common/id.d.ts.map +1 -0
- package/dist/utils/common/index.d.ts +2 -0
- package/dist/utils/common/index.d.ts.map +1 -1
- package/dist/utils/common/object.d.ts +70 -0
- package/dist/utils/common/object.d.ts.map +1 -0
- package/dist/utils/featureFlags/conditions.d.ts.map +1 -1
- package/dist/utils/featureFlags/context.d.ts +0 -1
- package/dist/utils/featureFlags/context.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/mapperUtils.d.ts +38 -0
- package/dist/utils/mapperUtils.d.ts.map +1 -0
- package/dist/utils/runtime.d.ts +15 -0
- package/dist/utils/runtime.d.ts.map +1 -0
- package/dist/version.d.ts +24 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/web_app/auth/add_user.d.ts +2 -2
- package/dist/web_app/auth/add_user.d.ts.map +1 -1
- package/dist/web_app/auth/update_user.d.ts +1 -1
- package/dist/web_app/auth/update_user.d.ts.map +1 -1
- package/package.json +89 -15
- package/dist/backend/featureFlags/database/connection.d.ts +0 -321
- package/dist/backend/featureFlags/database/connection.d.ts.map +0 -1
- package/dist/backend/featureFlags/database/repository.d.ts +0 -518
- package/dist/backend/featureFlags/database/repository.d.ts.map +0 -1
- package/dist/backend/featureFlags/feature-flag.repository.d.ts +0 -85
- package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +0 -1
- package/dist/backend/featureFlags/feature-flag.service.d.ts +0 -264
- package/dist/backend/featureFlags/feature-flag.service.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +0 -103
- package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +0 -35
- package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +0 -55
- package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +0 -1
- package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +0 -57
- package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +0 -1
- package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +0 -99
- package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +0 -1
- package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +0 -31
- package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +0 -1
- package/dist/frontend/featureFlags/providers/types.d.ts +0 -21
- package/dist/frontend/featureFlags/providers/types.d.ts.map +0 -1
- package/dist/index.cjs +0 -6435
- package/dist/index.cjs.map +0 -1
- package/dist/utils/db/databaseService.d.ts +0 -6
- package/dist/utils/db/databaseService.d.ts.map +0 -1
- package/dist/utils/db/index.d.ts +0 -2
- package/dist/utils/db/index.d.ts.map +0 -1
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Event Manager
|
|
3
|
+
*
|
|
4
|
+
* Type-safe event system for the Plyaz ecosystem.
|
|
5
|
+
* Services emit events → Store, API cache, and UI subscribe independently.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { CoreEventManager, CORE_EVENTS } from '@plyaz/core/events';
|
|
10
|
+
*
|
|
11
|
+
* // Type-safe emission (using CORE_EVENTS constants)
|
|
12
|
+
* CoreEventManager.emit(CORE_EVENTS.API.REQUEST_ERROR, {
|
|
13
|
+
* method: 'GET',
|
|
14
|
+
* url: '/api/users',
|
|
15
|
+
* requestId: '123',
|
|
16
|
+
* error: new Error('Failed'),
|
|
17
|
+
* duration: 500,
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Type-safe subscription
|
|
21
|
+
* CoreEventManager.on(CORE_EVENTS.AUTH.LOGIN, (event) => {
|
|
22
|
+
* console.log(event.data.userId); // Typed!
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Custom events (with generic type)
|
|
26
|
+
* CoreEventManager.emit<MyPayload>('custom:event', { custom: 'data' });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
import type { CoreEventPayloadMap, CoreEventScopeType, CoreEvent } from '@plyaz/types/core';
|
|
30
|
+
declare class CoreEventManagerClass {
|
|
31
|
+
private emitter;
|
|
32
|
+
private subscriptions;
|
|
33
|
+
constructor();
|
|
34
|
+
/**
|
|
35
|
+
* Emit an event
|
|
36
|
+
*
|
|
37
|
+
* @param eventType - Event type from CORE_EVENTS or custom string
|
|
38
|
+
* @param data - Event payload (type-safe when using CORE_EVENTS)
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* // Type-safe with CORE_EVENTS
|
|
43
|
+
* CoreEventManager.emit(CORE_EVENTS.AUTH.LOGIN, { userId: '123', method: 'email' });
|
|
44
|
+
*
|
|
45
|
+
* // Custom event
|
|
46
|
+
* CoreEventManager.emit<MyPayload>('custom:event', { custom: 'data' });
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
emit<T extends keyof CoreEventPayloadMap>(eventType: T, data: CoreEventPayloadMap[T]): boolean;
|
|
50
|
+
emit<TData = unknown>(eventType: string, data?: TData): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Subscribe to an event
|
|
53
|
+
*
|
|
54
|
+
* @param eventType - Event type from CORE_EVENTS or custom string
|
|
55
|
+
* @param handler - Event handler (type-safe when using CORE_EVENTS)
|
|
56
|
+
* @returns Unsubscribe function
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* // Type-safe with CORE_EVENTS
|
|
61
|
+
* const unsub = CoreEventManager.on(CORE_EVENTS.AUTH.LOGIN, (event) => {
|
|
62
|
+
* console.log(event.data.userId); // Typed!
|
|
63
|
+
* });
|
|
64
|
+
*
|
|
65
|
+
* // Custom event
|
|
66
|
+
* CoreEventManager.on<MyPayload>('custom:event', (event) => {
|
|
67
|
+
* console.log(event.data.custom);
|
|
68
|
+
* });
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
on<T extends keyof CoreEventPayloadMap>(eventType: T, handler: (event: CoreEvent<CoreEventPayloadMap[T], CoreEventScopeType>) => void): () => void;
|
|
72
|
+
on<TData = unknown, TScope extends string = string>(eventType: string, handler: (event: CoreEvent<TData, TScope>) => void): () => void;
|
|
73
|
+
/**
|
|
74
|
+
* Subscribe once to an event
|
|
75
|
+
*
|
|
76
|
+
* @param eventType - Event type from CORE_EVENTS or custom string
|
|
77
|
+
* @param handler - Event handler
|
|
78
|
+
* @returns Unsubscribe function
|
|
79
|
+
*/
|
|
80
|
+
once<T extends keyof CoreEventPayloadMap>(eventType: T, handler: (event: CoreEvent<CoreEventPayloadMap[T], CoreEventScopeType>) => void): () => void;
|
|
81
|
+
once<TData = unknown, TScope extends string = string>(eventType: string, handler: (event: CoreEvent<TData, TScope>) => void): () => void;
|
|
82
|
+
/**
|
|
83
|
+
* Subscribe to all events in a scope
|
|
84
|
+
*
|
|
85
|
+
* @param scope - Event scope to listen to (e.g., CoreEventScope.AUTH)
|
|
86
|
+
* @param handler - Event handler
|
|
87
|
+
* @returns Unsubscribe function
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* CoreEventManager.onScope(CoreEventScope.AUTH, (event) => {
|
|
92
|
+
* // Handles auth:login, auth:logout, auth:tokenRefresh, etc.
|
|
93
|
+
* console.log(`Auth event: ${event.type}`, event.data);
|
|
94
|
+
* });
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
onScope<TScope extends string = string, TData = unknown>(scope: TScope, handler: (event: CoreEvent<TData, TScope>) => void): () => void;
|
|
98
|
+
/**
|
|
99
|
+
* Remove a specific handler from an event
|
|
100
|
+
*
|
|
101
|
+
* @param eventType - Event type
|
|
102
|
+
* @param handler - Handler to remove
|
|
103
|
+
*/
|
|
104
|
+
off<TData = unknown, TScope extends string = string>(eventType: string, handler: (event: CoreEvent<TData, TScope>) => void): void;
|
|
105
|
+
/**
|
|
106
|
+
* Dispose all subscriptions
|
|
107
|
+
*/
|
|
108
|
+
dispose(): void;
|
|
109
|
+
/**
|
|
110
|
+
* Generate correlation ID for event tracing
|
|
111
|
+
*/
|
|
112
|
+
private getCorrelationId;
|
|
113
|
+
}
|
|
114
|
+
export declare const CoreEventManager: CoreEventManagerClass;
|
|
115
|
+
export {};
|
|
116
|
+
//# sourceMappingURL=CoreEventManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoreEventManager.d.ts","sourceRoot":"","sources":["../../src/events/CoreEventManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAoC5F,cAAM,qBAAqB;IACzB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,aAAa,CAAuE;;IAO5F;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO;IAC9F,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO;IAoB/D;;;;;;;;;;;;;;;;;;;OAmBG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,mBAAmB,EACpC,SAAS,EAAE,CAAC,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,IAAI,GAC9E,MAAM,IAAI;IACb,EAAE,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,EAChD,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GACjD,MAAM,IAAI;IAsBb;;;;;;OAMG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,mBAAmB,EACtC,SAAS,EAAE,CAAC,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,IAAI,GAC9E,MAAM,IAAI;IACb,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,EAClD,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GACjD,MAAM,IAAI;IAgCb;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,GAAG,OAAO,EACrD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GACjD,MAAM,IAAI;IASb;;;;;OAKG;IACH,GAAG,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,EACjD,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GACjD,IAAI;IAOP;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAGzB;AAGD,eAAO,MAAM,gBAAgB,uBAA8B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Events Module Exports
|
|
3
|
+
*
|
|
4
|
+
* Type-safe event system with enums, constants, and typed payloads.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { CoreEventManager, CORE_EVENTS, CoreEventScope } from '@plyaz/core/events';
|
|
9
|
+
*
|
|
10
|
+
* // Type-safe emission (automatic with CORE_EVENTS)
|
|
11
|
+
* CoreEventManager.emit(CORE_EVENTS.AUTH.LOGIN, {
|
|
12
|
+
* userId: '123',
|
|
13
|
+
* method: 'email',
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* // Type-safe subscription (automatic with CORE_EVENTS)
|
|
17
|
+
* CoreEventManager.on(CORE_EVENTS.AUTH.LOGIN, (event) => {
|
|
18
|
+
* console.log(event.data.userId); // Typed!
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Custom events with explicit type
|
|
22
|
+
* CoreEventManager.emit<MyPayload>('custom:event', { custom: 'data' });
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export { CoreEventManager } from './CoreEventManager';
|
|
26
|
+
export type { CoreEventPayloadMap, CoreEventType, CoreEventScopeType, CoreSystemInitializedPayload, CoreSystemReadyPayload, CoreSystemShutdownPayload, CoreSystemErrorPayload, CoreSystemWarningPayload, CoreApiRequestStartPayload, CoreApiRequestSuccessPayload, CoreApiRequestErrorPayload, CoreApiRetryPayload, CoreApiTimeoutPayload, CoreCacheHitPayload, CoreCacheMissPayload, CoreCacheSetPayload, CoreCacheDeletePayload, CoreCacheClearPayload, CoreCacheExpiredPayload, CoreAuthLoginPayload, CoreAuthLogoutPayload, CoreAuthTokenRefreshPayload, CoreAuthSessionExpiredPayload, CoreAuthUnauthorizedPayload, CoreFeatureFlagChangedPayload, CoreFeatureFlagEvaluatedPayload, CoreFeatureFlagRefreshedPayload, CoreStoreUpdatedPayload, CoreStoreResetPayload, CoreStoreHydratedPayload, CoreEntityCreatedPayload, CoreEntityUpdatedPayload, CoreEntityDeletedPayload, CoreValidationStartedPayload, CoreValidationSuccessPayload, CoreValidationFailedPayload, } from '@plyaz/types/core';
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAElB,4BAA4B,EAC5B,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/frontend/base/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InitializationError Component
|
|
3
|
+
*
|
|
4
|
+
* Default error display when Plyaz initialization fails.
|
|
5
|
+
* Can be overridden via the `error` prop on PlyazProvider.
|
|
6
|
+
*/
|
|
7
|
+
import type { ReactElement } from 'react';
|
|
8
|
+
import type { CoreInitializationErrorProps as InitializationErrorProps } from '@plyaz/types/core';
|
|
9
|
+
/**
|
|
10
|
+
* Renders an initialization error state.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* // Using default error display
|
|
15
|
+
* <InitializationError error={new Error('Failed to connect')} />
|
|
16
|
+
*
|
|
17
|
+
* // Using custom error component
|
|
18
|
+
* <InitializationError
|
|
19
|
+
* error={error}
|
|
20
|
+
* errorComponent={(err) => <CustomErrorBoundary error={err} />}
|
|
21
|
+
* />
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function InitializationError({ error, errorComponent, }: InitializationErrorProps): ReactElement;
|
|
25
|
+
//# sourceMappingURL=InitializationError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InitializationError.d.ts","sourceRoot":"","sources":["../../../src/frontend/components/InitializationError.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,4BAA4B,IAAI,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AA4BlG;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,cAAc,GACf,EAAE,wBAAwB,GAAG,YAAY,CAWzC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InitializationLoading Component
|
|
3
|
+
*
|
|
4
|
+
* Default loading display while Plyaz is initializing.
|
|
5
|
+
* Can be overridden via the `loading` prop on PlyazProvider.
|
|
6
|
+
*/
|
|
7
|
+
import type { ReactElement } from 'react';
|
|
8
|
+
import type { CoreInitializationLoadingProps as InitializationLoadingProps } from '@plyaz/types/core';
|
|
9
|
+
/**
|
|
10
|
+
* Renders an initialization loading state.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* // Using default loading display
|
|
15
|
+
* <InitializationLoading />
|
|
16
|
+
*
|
|
17
|
+
* // Using custom loading component
|
|
18
|
+
* <InitializationLoading loading={<Skeleton />} />
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function InitializationLoading({ loading }: InitializationLoadingProps): ReactElement;
|
|
22
|
+
//# sourceMappingURL=InitializationLoading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InitializationLoading.d.ts","sourceRoot":"","sources":["../../../src/frontend/components/InitializationLoading.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,8BAA8B,IAAI,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAmBtG;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,OAAO,EAAE,EAAE,0BAA0B,GAAG,YAAY,CAU3F"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frontend Components
|
|
3
|
+
*
|
|
4
|
+
* Reusable React components for Plyaz frontend.
|
|
5
|
+
* Component props types are available from @plyaz/types/core
|
|
6
|
+
*/
|
|
7
|
+
export { InitializationError } from './InitializationError';
|
|
8
|
+
export { InitializationLoading } from './InitializationLoading';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/frontend/components/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frontend Example Exports
|
|
3
|
+
*
|
|
4
|
+
* Re-exports from domain/example.
|
|
5
|
+
*
|
|
6
|
+
* NOTE: Example store has been moved to @plyaz/store/domains/examples
|
|
7
|
+
*/
|
|
8
|
+
export { FrontendExampleDomainService, type ExampleFrontendStoreSlice, type ExampleFrontendStoreData, type ExampleFrontendServiceConfig, type ExampleFrontendEventType, } from '../../domain/example';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/frontend/example/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,14 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Frontend Feature Flags - Main Exports
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Service-based feature flag integration for frontend.
|
|
5
|
+
* Use PlyazProvider hooks (useFlag, useFeatureFlags, useService) for React components.
|
|
6
|
+
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* import { useFlag, useService, PlyazProvider } from '@plyaz/core/frontend';
|
|
10
|
+
* import { FeatureFlagDomainService } from '@plyaz/core/frontend/featureFlags';
|
|
11
|
+
*
|
|
12
|
+
* // Using useFlag hook (simple boolean check)
|
|
13
|
+
* function MyComponent() {
|
|
14
|
+
* const isDarkMode = useFlag('DARK_MODE');
|
|
15
|
+
* return <div className={isDarkMode ? 'dark' : 'light'}>...</div>;
|
|
16
|
+
* }
|
|
17
|
+
*
|
|
18
|
+
* // Using FeatureFlagDomainService (full service access)
|
|
19
|
+
* function AdvancedComponent() {
|
|
20
|
+
* const flagService = useService<FeatureFlagDomainService>('featureFlags');
|
|
21
|
+
*
|
|
22
|
+
* const handleEvaluate = async () => {
|
|
23
|
+
* const result = await flagService.evaluate('FEATURE_X', { userId: '123' });
|
|
24
|
+
* console.log('Evaluation:', result);
|
|
25
|
+
* };
|
|
26
|
+
*
|
|
27
|
+
* return <button onClick={handleEvaluate}>Evaluate Flag</button>;
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
6
30
|
*
|
|
7
31
|
* @fileoverview Frontend feature flags exports
|
|
8
|
-
* @version
|
|
32
|
+
* @version 2.0.0
|
|
9
33
|
*/
|
|
10
|
-
export {
|
|
11
|
-
export { useFeatureFlag, useFeatureFlagEnabled, useFeatureFlagValue, useMultipleFeatureFlags, } from './hooks/useFeatureFlag';
|
|
12
|
-
export { useFeatureFlagProvider, useFeatureFlagProviderStatus, } from './hooks/useFeatureFlagProvider';
|
|
13
|
-
export { useFeatureFlagHelpers } from './hooks/useFeatureFlagActions';
|
|
34
|
+
export { FrontendFeatureFlagDomainService } from '../../domain/featureFlags';
|
|
14
35
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/frontend/featureFlags/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/frontend/featureFlags/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/frontend/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/frontend/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/frontend/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @module frontend/providers/ApiProvider
|
|
6
6
|
*/
|
|
7
7
|
import { type ReactElement } from 'react';
|
|
8
|
-
import type {
|
|
8
|
+
import type { CoreApiProviderProps } from '@plyaz/types/core';
|
|
9
9
|
/**
|
|
10
10
|
* API Provider Component
|
|
11
11
|
* IMPORTANT: For client components, pass sensitive config from server-side props/actions
|
|
@@ -37,5 +37,5 @@ import type { ApiProviderProps } from '@plyaz/types/core';
|
|
|
37
37
|
* }
|
|
38
38
|
* ```
|
|
39
39
|
*/
|
|
40
|
-
export declare function ApiProvider({ children, envConfig, apiConfig, loadingComponent, errorComponent, onInitialized, onError, }:
|
|
40
|
+
export declare function ApiProvider({ children, envConfig, apiConfig, loadingComponent, errorComponent, onInitialized, onError, }: CoreApiProviderProps): ReactElement;
|
|
41
41
|
//# sourceMappingURL=ApiProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiProvider.d.ts","sourceRoot":"","sources":["../../../src/frontend/providers/ApiProvider.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAE/D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ApiProvider.d.ts","sourceRoot":"","sources":["../../../src/frontend/providers/ApiProvider.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAE/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,OAAO,GACR,EAAE,oBAAoB,GAAG,YAAY,CAsDrC"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PlyazProvider - Unified React Provider for Plyaz Core Services
|
|
3
|
+
*
|
|
4
|
+
* A single provider that initializes and provides access to all frontend-safe
|
|
5
|
+
* Plyaz services. Designed for ease of use without unnecessary limitations.
|
|
6
|
+
*
|
|
7
|
+
* @module frontend/providers/PlyazProvider
|
|
8
|
+
*
|
|
9
|
+
* @example Basic usage
|
|
10
|
+
* ```tsx
|
|
11
|
+
* import { PlyazProvider } from '@plyaz/core/frontend';
|
|
12
|
+
*
|
|
13
|
+
* export default function App({ children }) {
|
|
14
|
+
* return (
|
|
15
|
+
* <PlyazProvider
|
|
16
|
+
* config={{
|
|
17
|
+
* api: {
|
|
18
|
+
* baseURL: process.env.NEXT_PUBLIC_API_URL!,
|
|
19
|
+
* env: 'production',
|
|
20
|
+
* },
|
|
21
|
+
* }}
|
|
22
|
+
* >
|
|
23
|
+
* {children}
|
|
24
|
+
* </PlyazProvider>
|
|
25
|
+
* );
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @example With all options
|
|
30
|
+
* ```tsx
|
|
31
|
+
* <PlyazProvider
|
|
32
|
+
* config={{
|
|
33
|
+
* api: {
|
|
34
|
+
* baseURL: 'https://api.example.com',
|
|
35
|
+
* env: 'production',
|
|
36
|
+
* apiKey: process.env.NEXT_PUBLIC_API_KEY,
|
|
37
|
+
* },
|
|
38
|
+
* featureFlags: {
|
|
39
|
+
* provider: 'api',
|
|
40
|
+
* refreshInterval: 60000,
|
|
41
|
+
* },
|
|
42
|
+
* appContext: 'webapp',
|
|
43
|
+
* verbose: process.env.NODE_ENV === 'development',
|
|
44
|
+
* }}
|
|
45
|
+
* onReady={(services) => console.log('Services ready:', services)}
|
|
46
|
+
* onError={(error) => Sentry.captureException(error)}
|
|
47
|
+
* loading={<Skeleton />}
|
|
48
|
+
* error={(err) => <ErrorBoundary error={err} />}
|
|
49
|
+
* >
|
|
50
|
+
* {children}
|
|
51
|
+
* </PlyazProvider>
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @example Accessing services in components
|
|
55
|
+
* ```tsx
|
|
56
|
+
* import { usePlyaz, useApi, useEvents, useFeatureFlag } from '@plyaz/core/frontend';
|
|
57
|
+
*
|
|
58
|
+
* function MyComponent() {
|
|
59
|
+
* // Full access to all services
|
|
60
|
+
* const { api, events, isReady } = usePlyaz();
|
|
61
|
+
*
|
|
62
|
+
* // Or use specific hooks
|
|
63
|
+
* const apiClient = useApi();
|
|
64
|
+
* const events = useEvents();
|
|
65
|
+
* const { value: darkMode } = useFeatureFlag('DARK_MODE');
|
|
66
|
+
*
|
|
67
|
+
* // Make API calls
|
|
68
|
+
* const fetchData = async () => {
|
|
69
|
+
* const response = await apiClient.get('/users');
|
|
70
|
+
* return response.data;
|
|
71
|
+
* };
|
|
72
|
+
*
|
|
73
|
+
* // Subscribe to events
|
|
74
|
+
* useEffect(() => {
|
|
75
|
+
* const unsubscribe = events.on('user:updated', (event) => {
|
|
76
|
+
* console.log('User updated:', event.data);
|
|
77
|
+
* });
|
|
78
|
+
* return unsubscribe;
|
|
79
|
+
* }, [events]);
|
|
80
|
+
*
|
|
81
|
+
* return <div>...</div>;
|
|
82
|
+
* }
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
import { type ReactElement } from 'react';
|
|
86
|
+
import { Core } from '../../init/CoreInitializer';
|
|
87
|
+
import { ApiClientService } from '../../services/ApiClientService';
|
|
88
|
+
import { CoreEventManager } from '../../events/CoreEventManager';
|
|
89
|
+
import type { CoreAppContext, CoreAppEnvironment, CorePlyazContextValue, CorePlyazProviderProps as PlyazProviderProps, CoreDomainServiceInstance } from '@plyaz/types/core';
|
|
90
|
+
/**
|
|
91
|
+
* Implementation-specific context value.
|
|
92
|
+
* Extends CorePlyazContextValue with concrete implementation references.
|
|
93
|
+
*/
|
|
94
|
+
interface PlyazContextValue extends Omit<CorePlyazContextValue, 'api' | 'events' | 'core'> {
|
|
95
|
+
/** API client for making HTTP requests */
|
|
96
|
+
api: typeof ApiClientService | null;
|
|
97
|
+
/** Event manager for pub/sub */
|
|
98
|
+
events: typeof CoreEventManager;
|
|
99
|
+
/** Core initializer reference */
|
|
100
|
+
core: typeof Core;
|
|
101
|
+
}
|
|
102
|
+
declare const PlyazContext: import("react").Context<PlyazContextValue | null>;
|
|
103
|
+
export declare function PlyazProvider({ children, config, loading, error: errorComponent, onReady, onError, skipLoadingState, }: PlyazProviderProps): ReactElement;
|
|
104
|
+
/**
|
|
105
|
+
* Access all Plyaz services
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```tsx
|
|
109
|
+
* function MyComponent() {
|
|
110
|
+
* const { api, events, isReady, featureFlags } = usePlyaz();
|
|
111
|
+
*
|
|
112
|
+
* if (!isReady) return <Loading />;
|
|
113
|
+
*
|
|
114
|
+
* const handleClick = async () => {
|
|
115
|
+
* const response = await api.getClient().get('/data');
|
|
116
|
+
* events.emit('data:fetched', { data: response.data });
|
|
117
|
+
* };
|
|
118
|
+
*
|
|
119
|
+
* return <button onClick={handleClick}>Fetch</button>;
|
|
120
|
+
* }
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export declare function usePlyaz(): PlyazContextValue;
|
|
124
|
+
/**
|
|
125
|
+
* Access API client directly
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```tsx
|
|
129
|
+
* function UserList() {
|
|
130
|
+
* const api = useApi();
|
|
131
|
+
* const [users, setUsers] = useState([]);
|
|
132
|
+
*
|
|
133
|
+
* useEffect(() => {
|
|
134
|
+
* api.getClient().get('/users').then(res => setUsers(res.data));
|
|
135
|
+
* }, [api]);
|
|
136
|
+
*
|
|
137
|
+
* return <ul>{users.map(u => <li key={u.id}>{u.name}</li>)}</ul>;
|
|
138
|
+
* }
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
export declare function useApi(): typeof ApiClientService;
|
|
142
|
+
/**
|
|
143
|
+
* Access API client safely (returns null if not ready)
|
|
144
|
+
*/
|
|
145
|
+
export declare function useApiSafe(): typeof ApiClientService | null;
|
|
146
|
+
/**
|
|
147
|
+
* Access event manager
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```tsx
|
|
151
|
+
* function NotificationListener() {
|
|
152
|
+
* const events = useEvents();
|
|
153
|
+
*
|
|
154
|
+
* useEffect(() => {
|
|
155
|
+
* const unsubscribe = events.on('notification:received', (event) => {
|
|
156
|
+
* toast.show(event.data.message);
|
|
157
|
+
* });
|
|
158
|
+
* return unsubscribe;
|
|
159
|
+
* }, [events]);
|
|
160
|
+
*
|
|
161
|
+
* return null;
|
|
162
|
+
* }
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
export declare function useEvents(): typeof CoreEventManager;
|
|
166
|
+
/**
|
|
167
|
+
* Check if a feature flag is enabled
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```tsx
|
|
171
|
+
* function FeatureComponent() {
|
|
172
|
+
* const isEnabled = useFlag('NEW_DASHBOARD');
|
|
173
|
+
*
|
|
174
|
+
* if (!isEnabled) return null;
|
|
175
|
+
* return <NewDashboard />;
|
|
176
|
+
* }
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
export declare function useFlag(key: string, defaultValue?: boolean): boolean;
|
|
180
|
+
/**
|
|
181
|
+
* Access feature flag utilities
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```tsx
|
|
185
|
+
* function FlagManager() {
|
|
186
|
+
* const flags = useFeatureFlags();
|
|
187
|
+
* const allFlags = flags.getAll();
|
|
188
|
+
*
|
|
189
|
+
* return (
|
|
190
|
+
* <div>
|
|
191
|
+
* <pre>{JSON.stringify(allFlags, null, 2)}</pre>
|
|
192
|
+
* <button onClick={flags.refresh}>Refresh Flags</button>
|
|
193
|
+
* </div>
|
|
194
|
+
* );
|
|
195
|
+
* }
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
export declare function useFeatureFlags(): PlyazContextValue['featureFlags'];
|
|
199
|
+
/**
|
|
200
|
+
* Check if Plyaz services are ready
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* ```tsx
|
|
204
|
+
* function LoadingAwareComponent() {
|
|
205
|
+
* const isReady = usePlyazReady();
|
|
206
|
+
*
|
|
207
|
+
* if (!isReady) return <Skeleton />;
|
|
208
|
+
* return <ActualContent />;
|
|
209
|
+
* }
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
export declare function usePlyazReady(): boolean;
|
|
213
|
+
/**
|
|
214
|
+
* Get current app context
|
|
215
|
+
*/
|
|
216
|
+
export declare function useAppContext(): CoreAppContext;
|
|
217
|
+
/**
|
|
218
|
+
* Get current environment
|
|
219
|
+
*/
|
|
220
|
+
export declare function useEnvironment(): CoreAppEnvironment;
|
|
221
|
+
/**
|
|
222
|
+
* Get a domain service by key.
|
|
223
|
+
* Services must be registered in the `services` config.
|
|
224
|
+
*
|
|
225
|
+
* @param key - Service key (e.g., 'featureFlags', 'example')
|
|
226
|
+
* @returns The service instance
|
|
227
|
+
* @throws If service is not initialized or not found
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```tsx
|
|
231
|
+
* function MyComponent() {
|
|
232
|
+
* const flagService = useService<FeatureFlagDomainService>('featureFlags');
|
|
233
|
+
*
|
|
234
|
+
* useEffect(() => {
|
|
235
|
+
* flagService.isEnabled('my-flag').then(console.log);
|
|
236
|
+
* }, [flagService]);
|
|
237
|
+
*
|
|
238
|
+
* return <div>...</div>;
|
|
239
|
+
* }
|
|
240
|
+
* ```
|
|
241
|
+
*/
|
|
242
|
+
export declare function useService<T extends CoreDomainServiceInstance = CoreDomainServiceInstance>(key: string): T;
|
|
243
|
+
/**
|
|
244
|
+
* Get a domain service by key with loading state.
|
|
245
|
+
* Useful for lazy-initialized services.
|
|
246
|
+
*
|
|
247
|
+
* @param key - Service key
|
|
248
|
+
* @returns Object with service, loading state, and error
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```tsx
|
|
252
|
+
* function MyComponent() {
|
|
253
|
+
* const { service, isLoading, error } = useServiceAsync<ExampleDomainService>('example');
|
|
254
|
+
*
|
|
255
|
+
* if (isLoading) return <Spinner />;
|
|
256
|
+
* if (error) return <Error message={error.message} />;
|
|
257
|
+
*
|
|
258
|
+
* return <div>{service?.serviceName}</div>;
|
|
259
|
+
* }
|
|
260
|
+
* ```
|
|
261
|
+
*/
|
|
262
|
+
export declare function useServiceAsync<T extends CoreDomainServiceInstance = CoreDomainServiceInstance>(key: string): {
|
|
263
|
+
service: T | null;
|
|
264
|
+
isLoading: boolean;
|
|
265
|
+
error: Error | null;
|
|
266
|
+
};
|
|
267
|
+
/**
|
|
268
|
+
* Check if a service is registered and available
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```tsx
|
|
272
|
+
* function MyComponent() {
|
|
273
|
+
* const hasFlags = useHasService('featureFlags');
|
|
274
|
+
*
|
|
275
|
+
* if (!hasFlags) {
|
|
276
|
+
* return <div>Feature flags not configured</div>;
|
|
277
|
+
* }
|
|
278
|
+
*
|
|
279
|
+
* return <FeatureFlagUI />;
|
|
280
|
+
* }
|
|
281
|
+
* ```
|
|
282
|
+
*/
|
|
283
|
+
export declare function useHasService(key: string): boolean;
|
|
284
|
+
/**
|
|
285
|
+
* Get all initialized service keys
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* ```tsx
|
|
289
|
+
* function DebugPanel() {
|
|
290
|
+
* const serviceKeys = useServiceKeys();
|
|
291
|
+
*
|
|
292
|
+
* return (
|
|
293
|
+
* <div>
|
|
294
|
+
* <h3>Loaded Services:</h3>
|
|
295
|
+
* <ul>
|
|
296
|
+
* {serviceKeys.map(key => <li key={key}>{key}</li>)}
|
|
297
|
+
* </ul>
|
|
298
|
+
* </div>
|
|
299
|
+
* );
|
|
300
|
+
* }
|
|
301
|
+
* ```
|
|
302
|
+
*/
|
|
303
|
+
export declare function useServiceKeys(): string[];
|
|
304
|
+
export { PlyazContext };
|
|
305
|
+
//# sourceMappingURL=PlyazProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlyazProvider.d.ts","sourceRoot":"","sources":["../../../src/frontend/providers/PlyazProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AAIH,OAAO,EAOL,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAIlB,qBAAqB,EACrB,sBAAsB,IAAI,kBAAkB,EAC5C,yBAAyB,EAC1B,MAAM,mBAAmB,CAAC;AAU3B;;;GAGG;AACH,UAAU,iBAAkB,SAAQ,IAAI,CAAC,qBAAqB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxF,0CAA0C;IAC1C,GAAG,EAAE,OAAO,gBAAgB,GAAG,IAAI,CAAC;IACpC,gCAAgC;IAChC,MAAM,EAAE,OAAO,gBAAgB,CAAC;IAChC,iCAAiC;IACjC,IAAI,EAAE,OAAO,IAAI,CAAC;CACnB;AAkBD,QAAA,MAAM,YAAY,mDAAgD,CAAC;AA+LnE,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,MAAM,EACN,OAAO,EACP,KAAK,EAAE,cAAc,EACrB,OAAO,EACP,OAAO,EACP,gBAAwB,GACzB,EAAE,kBAAkB,GAAG,YAAY,CA4FnC;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAS5C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,MAAM,IAAI,OAAO,gBAAgB,CAMhD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,gBAAgB,GAAG,IAAI,CAG3D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,IAAI,OAAO,gBAAgB,CAGnD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAGlE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CAAC,cAAc,CAAC,CAGnE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAGvC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,cAAc,CAG9C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,kBAAkB,CAGnD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,yBAAyB,GAAG,yBAAyB,EACxF,GAAG,EAAE,MAAM,GACV,CAAC,CAQH;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,yBAAyB,GAAG,yBAAyB,EAC7F,GAAG,EAAE,MAAM,GACV;IAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAmChE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGlD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAGzC;AAMD,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/frontend/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/frontend/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
|