@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
package/README.md
CHANGED
|
@@ -1,230 +1,295 @@
|
|
|
1
1
|
# @plyaz/core
|
|
2
2
|
|
|
3
|
-
> Foundational full-stack
|
|
3
|
+
> Foundational full-stack framework for the Plyaz ecosystem
|
|
4
4
|
|
|
5
|
-
The `@plyaz/core` package serves as the orchestration layer that
|
|
5
|
+
The `@plyaz/core` package serves as the orchestration layer that provides domain service infrastructure, automatic dependency injection, and unified service management across frontend and backend environments.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- [Core Package Overview](https://plyaz.atlassian.net/wiki/spaces/SD/pages/37257227/Core+Package)
|
|
9
|
-
- [Feature Flag System](https://plyaz.atlassian.net/wiki/spaces/SD/pages/44859395)
|
|
10
|
-
- [Cache System](https://plyaz.atlassian.net/wiki/spaces/SD/pages/44892180)
|
|
7
|
+
## Key Features
|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
- **Domain Service Framework** - Base classes for backend and frontend services with automatic CRUD, validation, and lifecycle hooks
|
|
10
|
+
- **Service Registry** - Centralized service management with automatic dependency injection
|
|
11
|
+
- **Unified Infrastructure** - Single initialization for DB, API, Cache, Storage, Notifications, and Observability
|
|
12
|
+
- **Multi-Runtime Support** - Node.js, Next.js, NestJS, Browser, Edge, Bun, Deno
|
|
13
|
+
- **Event-Driven Architecture** - Typed events with CoreEventManager
|
|
14
|
+
- **Feature Flags** - Rule-based evaluation with targeting and rollouts
|
|
15
|
+
- **CLI Tooling** - Interactive feature generation with `plyaz-core`
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
- **Full-Stack Support**: Environment-aware conditional loading for frontend, backend, and B2B integrations
|
|
16
|
-
- **SDK Foundations**: Standardized interfaces for B2B partnerships and external integrations
|
|
17
|
-
- **Type Safety**: Maintain strict architectural boundaries across all environments
|
|
17
|
+
## Quick Start
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
### Backend Service
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
```typescript
|
|
22
|
+
import { Core, ServiceRegistry } from '@plyaz/core';
|
|
23
|
+
|
|
24
|
+
// Initialize all services at once
|
|
25
|
+
await Core.initialize({
|
|
26
|
+
db: {
|
|
27
|
+
adapter: 'sql',
|
|
28
|
+
sql: { connectionString: process.env.DATABASE_URL },
|
|
29
|
+
},
|
|
30
|
+
api: {
|
|
31
|
+
baseUrl: process.env.API_BASE_URL,
|
|
32
|
+
},
|
|
33
|
+
cache: {
|
|
34
|
+
provider: 'memory',
|
|
35
|
+
ttl: 300,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
// Register domain services
|
|
40
|
+
ServiceRegistry.register({
|
|
41
|
+
key: 'users',
|
|
42
|
+
serviceClass: UserDomainService,
|
|
43
|
+
config: { enabled: true },
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// Get service instance with injected dependencies
|
|
47
|
+
const userService = await ServiceRegistry.getAsync<UserDomainService>('users');
|
|
48
|
+
const user = await userService.getById('user-123');
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Creating Domain Services
|
|
22
52
|
|
|
23
53
|
```typescript
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
54
|
+
import { BaseBackendDomainService } from '@plyaz/core/backend';
|
|
55
|
+
|
|
56
|
+
class UserDomainService extends BaseBackendDomainService<
|
|
57
|
+
UserConfig,
|
|
58
|
+
UserRepository,
|
|
59
|
+
User,
|
|
60
|
+
CreateUserDTO,
|
|
61
|
+
UpdateUserDTO
|
|
62
|
+
> {
|
|
63
|
+
protected eventPrefix = 'user';
|
|
64
|
+
|
|
65
|
+
// Fluent queries via repository.query()
|
|
66
|
+
async findActiveAdmins() {
|
|
67
|
+
return this.repository.query()
|
|
68
|
+
.where('status', 'eq', 'active')
|
|
69
|
+
.andWhere('role', 'eq', 'admin')
|
|
70
|
+
.orderByDesc('createdAt')
|
|
71
|
+
.getMany();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Lifecycle hooks
|
|
75
|
+
protected async afterCreate(entity: User) {
|
|
76
|
+
await this.sendWelcomeEmail(entity);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
31
79
|
```
|
|
32
80
|
|
|
33
|
-
##
|
|
81
|
+
## Architecture
|
|
34
82
|
|
|
35
83
|
```
|
|
36
|
-
@plyaz/core
|
|
37
|
-
├──
|
|
38
|
-
|
|
39
|
-
│
|
|
40
|
-
│ ├──
|
|
41
|
-
│
|
|
42
|
-
│
|
|
43
|
-
│
|
|
44
|
-
│
|
|
45
|
-
|
|
46
|
-
│ ├──
|
|
47
|
-
│
|
|
48
|
-
│
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
│ ├── frontend/ # Frontend-specific implementations
|
|
53
|
-
│ │ └── featureFlags/ # Frontend hooks, providers of feature flag system
|
|
54
|
-
│ ├── backend/ # Backend-specific implementations
|
|
55
|
-
│ │ └── featureFlags/ # Backend service, module, controller, repository of feature flag system. Generally in NestJs, but should be compatible without NestJs.
|
|
56
|
-
│ ├── sdk/ # B2B SDK foundation
|
|
57
|
-
│ └── contracts/ # External service contracts
|
|
84
|
+
@plyaz/core
|
|
85
|
+
├── init/ # Core initialization & ServiceRegistry
|
|
86
|
+
├── services/ # Infrastructure services
|
|
87
|
+
│ ├── DbService # Database (wraps @plyaz/db)
|
|
88
|
+
│ ├── ApiClientService # HTTP client (wraps @plyaz/api)
|
|
89
|
+
│ ├── CacheService # Caching (memory/redis)
|
|
90
|
+
│ ├── StorageService # File storage (Supabase/R2)
|
|
91
|
+
│ ├── NotificationService # Email/SMS/Push (Infobip/SendGrid)
|
|
92
|
+
│ └── ObservabilityService # Metrics, tracing, logging
|
|
93
|
+
├── domain/ # Base domain service classes
|
|
94
|
+
│ ├── BaseDomainService
|
|
95
|
+
│ ├── BaseBackendDomainService
|
|
96
|
+
│ └── BaseFrontendDomainService
|
|
97
|
+
├── events/ # CoreEventManager
|
|
98
|
+
├── models/ # Repositories & data access
|
|
99
|
+
└── adapters/ # NestJS, Next.js integrations
|
|
58
100
|
```
|
|
59
101
|
|
|
60
|
-
##
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
- **Testing**: Full override capabilities for test scenarios
|
|
75
|
-
|
|
76
|
-
### ✅ Cache System (Partially Complete)
|
|
77
|
-
- **Implemented Strategies**:
|
|
78
|
-
- ✅ Memory Strategy - LRU eviction with TTL management
|
|
79
|
-
- ⏳ Redis Strategy - Stub only (pending implementation)
|
|
80
|
-
- **Features**: Statistics tracking, automatic cleanup, TTL management
|
|
81
|
-
- **Integration**: Currently used by feature flag system
|
|
82
|
-
|
|
83
|
-
### 🚧 Pending Implementation
|
|
84
|
-
- **Backend Integration**: Full NestJS module integration
|
|
85
|
-
- **Additional Engines**: Calculation, Incentive, Validation, Insights
|
|
86
|
-
- **SDK Layer**: B2B partner SDK foundation
|
|
87
|
-
- **External Providers**: Redis, API, and Database connections
|
|
88
|
-
|
|
89
|
-
### File Provider Configuration
|
|
90
|
-
|
|
91
|
-
The file provider supports JSON and YAML formats with hot reload:
|
|
92
|
-
|
|
93
|
-
```json
|
|
94
|
-
// src/config/feature-provider.json
|
|
95
|
-
{
|
|
96
|
-
"flags": [
|
|
97
|
-
{
|
|
98
|
-
"key": "FEATURE_NAME",
|
|
99
|
-
"value": true,
|
|
100
|
-
"isEnabled": true,
|
|
101
|
-
"environments": ["production", "staging"]
|
|
102
|
-
}
|
|
103
|
-
],
|
|
104
|
-
"rules": [
|
|
105
|
-
{
|
|
106
|
-
"id": "rule-id",
|
|
107
|
-
"flagKey": "FEATURE_NAME",
|
|
108
|
-
"name": "Rule Description",
|
|
109
|
-
"conditions": [
|
|
110
|
-
{
|
|
111
|
-
"field": "userRole",
|
|
112
|
-
"operator": "equals",
|
|
113
|
-
"value": "premium"
|
|
114
|
-
}
|
|
115
|
-
],
|
|
116
|
-
"value": true,
|
|
117
|
-
"priority": 100,
|
|
118
|
-
"isEnabled": true
|
|
119
|
-
}
|
|
120
|
-
]
|
|
121
|
-
}
|
|
102
|
+
## Service Injection Flow
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
Core.initialize(config)
|
|
106
|
+
↓
|
|
107
|
+
ServiceRegistry.initialize()
|
|
108
|
+
↓
|
|
109
|
+
Build service configs (db, api, cache, storage, notifications)
|
|
110
|
+
↓
|
|
111
|
+
ServiceRegistry.register({ key, serviceClass, config })
|
|
112
|
+
↓
|
|
113
|
+
DomainService.create(config, { injected: { db, api, cache, storage, notifications } })
|
|
114
|
+
↓
|
|
115
|
+
Access via this.config.injected?.db / storage / notifications
|
|
122
116
|
```
|
|
123
117
|
|
|
124
|
-
|
|
118
|
+
## Infrastructure Services
|
|
125
119
|
|
|
126
|
-
|
|
120
|
+
### DbService
|
|
127
121
|
|
|
128
|
-
|
|
129
|
-
- **Type Safety**: Full TypeScript support with strict boundaries
|
|
130
|
-
- **Domain-Driven Design**: Clear bounded contexts for business domains
|
|
131
|
-
- **Extensible Architecture**: Provider pattern for easy extension
|
|
132
|
-
- **Performance Optimized**: Built-in caching and efficient evaluation
|
|
133
|
-
- **Testing Support**: Override capabilities and test utilities
|
|
122
|
+
Database connection manager with adapter chain (soft delete, caching, audit, encryption):
|
|
134
123
|
|
|
135
|
-
|
|
124
|
+
```typescript
|
|
125
|
+
import { DbService } from '@plyaz/core';
|
|
136
126
|
|
|
137
|
-
|
|
127
|
+
await DbService.initialize({
|
|
128
|
+
adapter: 'sql',
|
|
129
|
+
sql: { connectionString: process.env.DATABASE_URL },
|
|
130
|
+
softDelete: { enabled: true },
|
|
131
|
+
cache: { enabled: true, ttl: 300 },
|
|
132
|
+
});
|
|
138
133
|
|
|
139
|
-
|
|
134
|
+
const db = DbService.getInstance().getDatabase();
|
|
135
|
+
```
|
|
140
136
|
|
|
141
|
-
###
|
|
137
|
+
### CacheService (Backend-only)
|
|
142
138
|
|
|
143
|
-
-
|
|
144
|
-
- **[Engine Layer](https://plyaz.atlassian.net/wiki/spaces/SD/pages/44892169/Engine+Layer+plyaz+core?atlOrigin=eyJpIjoiYTI5M2JhOTA5M2Q4NDY1ZjkzZjM2Yzk5M2U5MTZlMzUiLCJwIjoiYyJ9)** - Core computational engines documentation
|
|
145
|
-
- **[Cache System](https://plyaz.atlassian.net/wiki/spaces/SD/pages/44892180/Cache+System+plyaz+core?atlOrigin=eyJpIjoiNDU2MTU5MWU0NTQ1NDIyMzk0MzJkNjE3MDkyOWVkZDQiLCJwIjoiYyJ9)** - Caching strategies and implementation
|
|
139
|
+
Server-side caching with Redis or in-memory providers:
|
|
146
140
|
|
|
147
|
-
|
|
141
|
+
```typescript
|
|
142
|
+
import { CacheService } from '@plyaz/core';
|
|
143
|
+
|
|
144
|
+
await CacheService.initialize({
|
|
145
|
+
strategy: 'redis',
|
|
146
|
+
ttl: 300,
|
|
147
|
+
redisConfig: {
|
|
148
|
+
url: process.env.REDIS_URL,
|
|
149
|
+
keyPrefix: 'app:',
|
|
150
|
+
},
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
const cache = CacheService.getInstance();
|
|
154
|
+
await cache.set('user:123', userData, 600); // 10 minute TTL
|
|
155
|
+
const cached = await cache.get('user:123');
|
|
156
|
+
```
|
|
148
157
|
|
|
149
|
-
|
|
150
|
-
|---------|---------|------------|
|
|
151
|
-
| `@plyaz/api` | HTTP/REST API calls | Business data operations |
|
|
152
|
-
| `@plyaz/web3` | Blockchain interactions | Asset operations, smart contracts |
|
|
153
|
-
| `@plyaz/auth` | Authentication & authorization | User validation, permissions |
|
|
154
|
-
| `@plyaz/config` | Configuration & feature flags | Business rules, environment settings |
|
|
155
|
-
| `@plyaz/monitoring` | Metrics & performance tracking | Business KPI tracking |
|
|
156
|
-
| `@plyaz/logger` | Logging infrastructure | Business operation logging |
|
|
157
|
-
| `@plyaz/events` | Event-driven communication | Business event coordination |
|
|
158
|
+
### StorageService (Backend-only)
|
|
158
159
|
|
|
159
|
-
|
|
160
|
+
Multi-provider file storage with automatic routing:
|
|
160
161
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
162
|
+
```typescript
|
|
163
|
+
import { StorageService } from '@plyaz/core';
|
|
164
|
+
|
|
165
|
+
const storage = StorageService.getInstance().getStorage();
|
|
166
|
+
await storage.uploadFile({
|
|
167
|
+
file: buffer,
|
|
168
|
+
filename: 'document.pdf',
|
|
169
|
+
bucket: 'documents',
|
|
170
|
+
});
|
|
171
|
+
```
|
|
166
172
|
|
|
167
|
-
|
|
173
|
+
### NotificationService (Backend-only)
|
|
168
174
|
|
|
169
|
-
|
|
170
|
-
# Install dependencies
|
|
171
|
-
pnpm install
|
|
175
|
+
Multi-channel notifications with provider failover:
|
|
172
176
|
|
|
173
|
-
|
|
174
|
-
|
|
177
|
+
```typescript
|
|
178
|
+
import { NotificationService } from '@plyaz/core';
|
|
179
|
+
|
|
180
|
+
const notifications = NotificationService.getInstance().getNotifications();
|
|
181
|
+
await notifications.sendEmail({
|
|
182
|
+
to: 'user@example.com',
|
|
183
|
+
templateId: 'welcome',
|
|
184
|
+
templateData: { name: 'John' },
|
|
185
|
+
});
|
|
186
|
+
```
|
|
175
187
|
|
|
176
|
-
|
|
177
|
-
pnpm build
|
|
188
|
+
## QueryBuilder Integration
|
|
178
189
|
|
|
179
|
-
|
|
180
|
-
pnpm test # Run tests once
|
|
181
|
-
pnpm test:watch # Run tests in watch mode
|
|
182
|
-
pnpm test:coverage # Run tests with coverage
|
|
183
|
-
pnpm test:ui # Run tests with UI
|
|
190
|
+
Fluent query API via `@plyaz/db` integrated with BaseRepository:
|
|
184
191
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
192
|
+
```typescript
|
|
193
|
+
// In domain service
|
|
194
|
+
const users = await this.repository.query()
|
|
195
|
+
.where('status', 'eq', 'active')
|
|
196
|
+
.andWhere('tier', 'eq', 'premium')
|
|
197
|
+
.whereNotNull('verifiedAt')
|
|
198
|
+
.orderByDesc('createdAt')
|
|
199
|
+
.paginate(1, 25)
|
|
200
|
+
.getMany();
|
|
201
|
+
|
|
202
|
+
// Raw SQL for complex queries
|
|
203
|
+
const results = await this.repository.query()
|
|
204
|
+
.where('status', 'eq', 'active')
|
|
205
|
+
.whereRaw('"metadata"->\'score\' > $1', [80])
|
|
206
|
+
.getMany();
|
|
198
207
|
```
|
|
199
208
|
|
|
200
|
-
|
|
209
|
+
## CLI
|
|
201
210
|
|
|
202
|
-
|
|
211
|
+
Generate features interactively:
|
|
203
212
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
213
|
+
```bash
|
|
214
|
+
# Interactive mode
|
|
215
|
+
pnpm plyaz-core generate
|
|
216
|
+
|
|
217
|
+
# Direct generation
|
|
218
|
+
pnpm plyaz-core generate user --type backend
|
|
219
|
+
|
|
220
|
+
# Options
|
|
221
|
+
--type backend|frontend|universal
|
|
222
|
+
--skip-validator
|
|
223
|
+
--skip-mapper
|
|
224
|
+
--dry-run
|
|
208
225
|
```
|
|
209
226
|
|
|
210
|
-
|
|
227
|
+
## Feature Flags
|
|
228
|
+
|
|
211
229
|
```typescript
|
|
212
|
-
import {
|
|
213
|
-
|
|
230
|
+
import { useFeatureFlag } from '@plyaz/core/frontend';
|
|
231
|
+
|
|
232
|
+
// React hook
|
|
233
|
+
const isEnabled = useFeatureFlag('DARK_MODE');
|
|
234
|
+
|
|
235
|
+
// Backend check
|
|
236
|
+
const flags = await FeatureFlagService.getFlags();
|
|
237
|
+
if (flags.PREMIUM_FEATURES) {
|
|
238
|
+
// Premium logic
|
|
239
|
+
}
|
|
214
240
|
```
|
|
215
241
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
-
|
|
221
|
-
-
|
|
222
|
-
|
|
223
|
-
-
|
|
224
|
-
-
|
|
242
|
+
## Documentation
|
|
243
|
+
|
|
244
|
+
| Guide | Description |
|
|
245
|
+
|-------|-------------|
|
|
246
|
+
| [Quick Start](./docs/guides/01-QUICK-START.md) | Get started in 5 minutes |
|
|
247
|
+
| [Architecture](./docs/guides/02-ARCHITECTURE.md) | System design overview |
|
|
248
|
+
| [Initialization](./docs/guides/03-INITIALIZATION.md) | Configuration options |
|
|
249
|
+
| [Services](./docs/guides/05-SERVICES.md) | Domain service patterns |
|
|
250
|
+
| [Base Classes API](./docs/guides/09-BASE-CLASSES-API.md) | Full API reference |
|
|
251
|
+
| [DbService Guide](./docs/DbService-Usage-Guide.md) | Database integration |
|
|
252
|
+
| [CacheService Guide](./docs/CacheService-Usage-Guide.md) | Caching (Redis/in-memory) |
|
|
253
|
+
| [StorageService Guide](./docs/StorageService-Usage-Guide.md) | File storage |
|
|
254
|
+
| [NotificationService Guide](./docs/NotificationService-Usage-Guide.md) | Notifications |
|
|
255
|
+
|
|
256
|
+
## Related Packages
|
|
257
|
+
|
|
258
|
+
| Package | Purpose |
|
|
259
|
+
|---------|---------|
|
|
260
|
+
| `@plyaz/db` | Database adapters, repositories, QueryBuilder |
|
|
261
|
+
| `@plyaz/api` | HTTP client, fetchers, request handling |
|
|
262
|
+
| `@plyaz/storage` | File storage providers (Supabase, R2) |
|
|
263
|
+
| `@plyaz/notifications` | Email/SMS/Push providers |
|
|
264
|
+
| `@plyaz/types` | Shared TypeScript types |
|
|
265
|
+
| `@plyaz/errors` | Error handling utilities |
|
|
266
|
+
|
|
267
|
+
## Development
|
|
225
268
|
|
|
226
|
-
|
|
269
|
+
```bash
|
|
270
|
+
# Install dependencies
|
|
271
|
+
pnpm install
|
|
272
|
+
|
|
273
|
+
# Development
|
|
274
|
+
pnpm dev # Watch mode
|
|
275
|
+
pnpm build # Build package
|
|
276
|
+
pnpm type:check # Type checking
|
|
277
|
+
|
|
278
|
+
# Testing
|
|
279
|
+
pnpm test # Run tests
|
|
280
|
+
pnpm test:watch # Watch mode
|
|
281
|
+
pnpm test:coverage # With coverage
|
|
282
|
+
|
|
283
|
+
# Code quality
|
|
284
|
+
pnpm lint # Lint code
|
|
285
|
+
pnpm lint:fix # Fix issues
|
|
286
|
+
pnpm format # Format code
|
|
287
|
+
|
|
288
|
+
# NestJS server (if configured)
|
|
289
|
+
pnpm nest:dev # Development server
|
|
290
|
+
pnpm nest:start # Production server
|
|
291
|
+
```
|
|
227
292
|
|
|
228
|
-
|
|
293
|
+
## License
|
|
229
294
|
|
|
230
|
-
|
|
295
|
+
MIT
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework Adapters
|
|
3
|
+
*
|
|
4
|
+
* Adapters for different HTTP frameworks and runtimes.
|
|
5
|
+
*
|
|
6
|
+
* Available:
|
|
7
|
+
* - createHandler: Next.js API route handler with service injection
|
|
8
|
+
* - CoreModule: NestJS DI integration
|
|
9
|
+
*
|
|
10
|
+
* Types are available from '@plyaz/types/core':
|
|
11
|
+
* - CoreNextJsHandlerContext, CoreNextJsHandler, etc.
|
|
12
|
+
* - CoreNestJsModuleOptions, CoreNestJsModuleAsyncOptions
|
|
13
|
+
*/
|
|
14
|
+
export { createHandler, nextHandler } from './nextjs';
|
|
15
|
+
export { CoreModule, CORE_DB_SERVICE, CORE_ENV, CORE_OPTIONS } from './nestjs';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NestJS Framework Adapter
|
|
3
|
+
*
|
|
4
|
+
* Provides CoreModule for NestJS dependency injection.
|
|
5
|
+
* Initializes core services (db, env) for use across NestJS modules.
|
|
6
|
+
*/
|
|
7
|
+
import type { DynamicModule } from '@nestjs/common';
|
|
8
|
+
import type { CoreDbServiceConfig } from '../services/DbService';
|
|
9
|
+
import type { CoreNestJsModuleOptions, CoreNestJsModuleAsyncOptions } from '@plyaz/types/core';
|
|
10
|
+
/**
|
|
11
|
+
* Core module options for NestJS
|
|
12
|
+
* Extended with specific DbServiceConfig type
|
|
13
|
+
*/
|
|
14
|
+
interface CoreModuleOptions extends Omit<CoreNestJsModuleOptions, 'db'> {
|
|
15
|
+
/** Database configuration */
|
|
16
|
+
db?: CoreDbServiceConfig;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Async options for CoreModule
|
|
20
|
+
* Extended with specific CoreModuleOptions type
|
|
21
|
+
*/
|
|
22
|
+
interface CoreModuleAsyncOptions extends Omit<CoreNestJsModuleAsyncOptions, 'useFactory'> {
|
|
23
|
+
useFactory: (...args: unknown[]) => CoreModuleOptions | Promise<CoreModuleOptions>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Injection tokens for Core services
|
|
27
|
+
*/
|
|
28
|
+
export declare const CORE_DB_SERVICE = "CORE_DB_SERVICE";
|
|
29
|
+
export declare const CORE_ENV = "CORE_ENV";
|
|
30
|
+
export declare const CORE_OPTIONS = "CORE_OPTIONS";
|
|
31
|
+
/**
|
|
32
|
+
* CoreModule for NestJS
|
|
33
|
+
*
|
|
34
|
+
* Provides Core services (DbService, etc.) via NestJS dependency injection.
|
|
35
|
+
* Import additional modules (FeatureFlagModule, etc.) separately.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* import { Module } from '@nestjs/common';
|
|
40
|
+
* import { CoreModule } from '@plyaz/core/adapters';
|
|
41
|
+
* import { FeatureFlagModule } from '@plyaz/core/backend/featureFlags';
|
|
42
|
+
*
|
|
43
|
+
* @Module({
|
|
44
|
+
* imports: [
|
|
45
|
+
* CoreModule.forRoot({ envPath: '.env' }),
|
|
46
|
+
* FeatureFlagModule.forRoot({ provider: 'database' }), // Auto-receives DbService
|
|
47
|
+
* ],
|
|
48
|
+
* })
|
|
49
|
+
* export class AppModule {}
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @example Async configuration
|
|
53
|
+
* ```typescript
|
|
54
|
+
* CoreModule.forRootAsync({
|
|
55
|
+
* imports: [ConfigModule],
|
|
56
|
+
* inject: [ConfigService],
|
|
57
|
+
* useFactory: (config: ConfigService) => ({
|
|
58
|
+
* db: {
|
|
59
|
+
* adapter: 'drizzle',
|
|
60
|
+
* drizzle: {
|
|
61
|
+
* connectionString: config.get('DATABASE_URL'),
|
|
62
|
+
* },
|
|
63
|
+
* },
|
|
64
|
+
* }),
|
|
65
|
+
* })
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare const CoreModule: {
|
|
69
|
+
/**
|
|
70
|
+
* Register CoreModule with static configuration
|
|
71
|
+
*/
|
|
72
|
+
forRoot(options?: CoreModuleOptions): DynamicModule;
|
|
73
|
+
/**
|
|
74
|
+
* Register CoreModule with async configuration
|
|
75
|
+
*/
|
|
76
|
+
forRootAsync(options: CoreModuleAsyncOptions): DynamicModule;
|
|
77
|
+
};
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=nestjs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nestjs.d.ts","sourceRoot":"","sources":["../../src/adapters/nestjs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAG/F;;;GAGG;AACH,UAAU,iBAAkB,SAAQ,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC;IACrE,6BAA6B;IAC7B,EAAE,CAAC,EAAE,mBAAmB,CAAC;CAC1B;AAED;;;GAGG;AACH,UAAU,sBAAuB,SAAQ,IAAI,CAAC,4BAA4B,EAAE,YAAY,CAAC;IACvF,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACpF;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,UAAU;IACrB;;OAEG;sBACc,iBAAiB,GAAQ,aAAa;IAsCvD;;OAEG;0BACmB,sBAAsB,GAAG,aAAa;CAyC7D,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Next.js Adapter
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for Next.js API routes with auto-initialization
|
|
5
|
+
* and service injection.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // app/api/users/route.ts
|
|
10
|
+
* import { createHandler } from '@plyaz/core/adapters';
|
|
11
|
+
*
|
|
12
|
+
* export const GET = createHandler(async ({ db, query }) => {
|
|
13
|
+
* const users = await db.list('users');
|
|
14
|
+
* return { users };
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* export const POST = createHandler(async ({ db, body }) => {
|
|
18
|
+
* const user = await db.create('users', body);
|
|
19
|
+
* return { user, status: 201 };
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
import type { CoreNextJsHandler, CoreNextJsHandlerOptions } from '@plyaz/types/core';
|
|
24
|
+
export declare function createHandler(handler: CoreNextJsHandler, options?: CoreNextJsHandlerOptions): (request: Request, context?: {
|
|
25
|
+
params?: Record<string, string>;
|
|
26
|
+
}) => Promise<Response>;
|
|
27
|
+
export { createHandler as nextHandler };
|
|
28
|
+
//# sourceMappingURL=nextjs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../src/adapters/nextjs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAEV,iBAAiB,EACjB,wBAAwB,EAEzB,MAAM,mBAAmB,CAAC;AAgI3B,wBAAgB,aAAa,CAC3B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,wBAAwB,GACjC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,CAcxF;AAGD,OAAO,EAAE,aAAa,IAAI,WAAW,EAAE,CAAC"}
|