@explorins/pers-shared 2.1.9 → 2.1.11
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 +62 -13
- package/dist/cjs/dto/auth.dto.d.ts +2 -6
- package/dist/cjs/dto/auth.dto.d.ts.map +1 -1
- package/dist/cjs/dto/auth.dto.js +17 -23
- package/dist/cjs/dto/auth.dto.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +0 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces/token-transaction-input-data.interface.d.ts +12 -3
- package/dist/cjs/interfaces/token-transaction-input-data.interface.d.ts.map +1 -1
- package/dist/cjs/internal/database/index.d.ts +6 -0
- package/dist/cjs/internal/database/index.d.ts.map +1 -0
- package/dist/cjs/internal/database/index.js +24 -0
- package/dist/cjs/internal/database/index.js.map +1 -0
- package/dist/cjs/internal/database/models/base.model.d.ts +7 -0
- package/dist/cjs/internal/database/models/base.model.d.ts.map +1 -0
- package/dist/cjs/internal/database/models/base.model.js +11 -0
- package/dist/cjs/internal/database/models/base.model.js.map +1 -0
- package/dist/cjs/internal/database/models/fixture.model.d.ts +4 -0
- package/dist/cjs/internal/database/models/fixture.model.d.ts.map +1 -0
- package/dist/cjs/internal/database/models/fixture.model.js +8 -0
- package/dist/cjs/internal/database/models/fixture.model.js.map +1 -0
- package/dist/cjs/internal/database/schemas/fixture-fields.schema.d.ts +5 -0
- package/dist/cjs/internal/database/schemas/fixture-fields.schema.d.ts.map +1 -0
- package/dist/cjs/internal/database/schemas/fixture-fields.schema.js +11 -0
- package/dist/cjs/internal/database/schemas/fixture-fields.schema.js.map +1 -0
- package/dist/cjs/internal/database/schemas/shared-fields.schema.d.ts +44 -0
- package/dist/cjs/internal/database/schemas/shared-fields.schema.d.ts.map +1 -0
- package/dist/cjs/internal/database/schemas/shared-fields.schema.js +64 -0
- package/dist/cjs/internal/database/schemas/shared-fields.schema.js.map +1 -0
- package/dist/cjs/internal/database/schemas/tenant-fields.schema.d.ts +51 -0
- package/dist/cjs/internal/database/schemas/tenant-fields.schema.d.ts.map +1 -0
- package/dist/cjs/internal/database/schemas/tenant-fields.schema.js +57 -0
- package/dist/cjs/internal/database/schemas/tenant-fields.schema.js.map +1 -0
- package/dist/cjs/internal/enums/lambda.enum.d.ts +28 -0
- package/dist/cjs/internal/enums/lambda.enum.d.ts.map +1 -0
- package/dist/cjs/internal/enums/lambda.enum.js +34 -0
- package/dist/cjs/internal/enums/lambda.enum.js.map +1 -0
- package/dist/cjs/internal/exceptions/base/error-classification-enums.d.ts +118 -0
- package/dist/cjs/internal/exceptions/base/error-classification-enums.d.ts.map +1 -0
- package/dist/cjs/internal/exceptions/base/error-classification-enums.js +111 -0
- package/dist/cjs/internal/exceptions/base/error-classification-enums.js.map +1 -0
- package/dist/cjs/internal/exceptions/base/error-classification.interface.d.ts +48 -0
- package/dist/cjs/internal/exceptions/base/error-classification.interface.d.ts.map +1 -0
- package/dist/cjs/internal/exceptions/base/error-classification.interface.js +6 -0
- package/dist/cjs/internal/exceptions/base/error-classification.interface.js.map +1 -0
- package/dist/cjs/internal/exceptions/base/error-classifier.d.ts +23 -0
- package/dist/cjs/internal/exceptions/base/error-classifier.d.ts.map +1 -0
- package/dist/cjs/internal/exceptions/base/error-classifier.js +149 -0
- package/dist/cjs/internal/exceptions/base/error-classifier.js.map +1 -0
- package/dist/cjs/internal/exceptions/index.d.ts +3 -0
- package/dist/cjs/internal/exceptions/index.d.ts.map +1 -0
- package/dist/cjs/internal/exceptions/index.js +24 -0
- package/dist/cjs/internal/exceptions/index.js.map +1 -0
- package/dist/cjs/internal/functions/crypto.functions.d.ts +16 -0
- package/dist/cjs/internal/functions/crypto.functions.d.ts.map +1 -0
- package/dist/cjs/internal/functions/crypto.functions.js +110 -0
- package/dist/cjs/internal/functions/crypto.functions.js.map +1 -0
- package/dist/cjs/internal/functions/helper.functions.d.ts +10 -0
- package/dist/cjs/internal/functions/helper.functions.d.ts.map +1 -0
- package/dist/cjs/internal/functions/helper.functions.js +38 -0
- package/dist/cjs/internal/functions/helper.functions.js.map +1 -0
- package/dist/cjs/internal/functions/index.d.ts +4 -0
- package/dist/cjs/internal/functions/index.d.ts.map +1 -0
- package/dist/cjs/internal/functions/index.js +21 -0
- package/dist/cjs/internal/functions/index.js.map +1 -0
- package/dist/cjs/internal/functions/request.functions.d.ts +14 -0
- package/dist/cjs/internal/functions/request.functions.d.ts.map +1 -0
- package/dist/cjs/internal/functions/request.functions.js +69 -0
- package/dist/cjs/internal/functions/request.functions.js.map +1 -0
- package/dist/cjs/internal/index.d.ts +14 -0
- package/dist/cjs/internal/index.d.ts.map +1 -0
- package/dist/cjs/internal/index.js +42 -0
- package/dist/cjs/internal/index.js.map +1 -0
- package/dist/cjs/internal/interfaces/index.d.ts +3 -0
- package/dist/cjs/internal/interfaces/index.d.ts.map +1 -0
- package/dist/cjs/internal/interfaces/index.js +19 -0
- package/dist/cjs/internal/interfaces/index.js.map +1 -0
- package/dist/cjs/internal/interfaces/request.interface.d.ts +21 -0
- package/dist/cjs/internal/interfaces/request.interface.d.ts.map +1 -0
- package/dist/cjs/internal/interfaces/request.interface.js +15 -0
- package/dist/cjs/internal/interfaces/request.interface.js.map +1 -0
- package/dist/cjs/internal/interfaces/stripe-payment-intent-metadata.interface.d.ts +9 -0
- package/dist/cjs/internal/interfaces/stripe-payment-intent-metadata.interface.d.ts.map +1 -0
- package/dist/cjs/internal/interfaces/stripe-payment-intent-metadata.interface.js +3 -0
- package/dist/cjs/internal/interfaces/stripe-payment-intent-metadata.interface.js.map +1 -0
- package/dist/cjs/internal/internal-index.d.ts +8 -0
- package/dist/cjs/internal/internal-index.d.ts.map +1 -0
- package/dist/cjs/internal/internal-index.js +33 -0
- package/dist/cjs/internal/internal-index.js.map +1 -0
- package/dist/cjs/internal/orchestrators/base-orchestrator.d.ts +90 -0
- package/dist/cjs/internal/orchestrators/base-orchestrator.d.ts.map +1 -0
- package/dist/cjs/internal/orchestrators/base-orchestrator.js +124 -0
- package/dist/cjs/internal/orchestrators/base-orchestrator.js.map +1 -0
- package/dist/cjs/internal/orchestrators/base-workflow.d.ts +50 -0
- package/dist/cjs/internal/orchestrators/base-workflow.d.ts.map +1 -0
- package/dist/cjs/internal/orchestrators/base-workflow.js +68 -0
- package/dist/cjs/internal/orchestrators/base-workflow.js.map +1 -0
- package/dist/cjs/internal/orchestrators/index.d.ts +26 -0
- package/dist/cjs/internal/orchestrators/index.d.ts.map +1 -0
- package/dist/cjs/internal/orchestrators/index.js +46 -0
- package/dist/cjs/internal/orchestrators/index.js.map +1 -0
- package/dist/cjs/internal/utils/index.d.ts +2 -0
- package/dist/cjs/internal/utils/index.d.ts.map +1 -0
- package/dist/cjs/internal/utils/index.js +19 -0
- package/dist/cjs/internal/utils/index.js.map +1 -0
- package/dist/cjs/internal/utils/validation.utils.d.ts +49 -0
- package/dist/cjs/internal/utils/validation.utils.d.ts.map +1 -0
- package/dist/cjs/internal/utils/validation.utils.js +76 -0
- package/dist/cjs/internal/utils/validation.utils.js.map +1 -0
- package/dist/cjs/value-objects/token-transaction-input.vo.d.ts +2 -3
- package/dist/cjs/value-objects/token-transaction-input.vo.d.ts.map +1 -1
- package/dist/cjs/value-objects/token-transaction-input.vo.js +12 -20
- package/dist/cjs/value-objects/token-transaction-input.vo.js.map +1 -1
- package/dist/esm/dto/auth.dto.d.ts +2 -6
- package/dist/esm/dto/auth.dto.d.ts.map +1 -1
- package/dist/esm/dto/auth.dto.js +14 -18
- package/dist/esm/dto/auth.dto.js.map +1 -1
- package/dist/esm/index.d.ts +1 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +0 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces/token-transaction-input-data.interface.d.ts +12 -3
- package/dist/esm/interfaces/token-transaction-input-data.interface.d.ts.map +1 -1
- package/dist/esm/internal/database/index.d.ts +6 -0
- package/dist/esm/internal/database/index.d.ts.map +1 -0
- package/dist/esm/internal/database/index.js +8 -0
- package/dist/esm/internal/database/index.js.map +1 -0
- package/dist/esm/internal/database/models/base.model.d.ts +7 -0
- package/dist/esm/internal/database/models/base.model.d.ts.map +1 -0
- package/dist/esm/internal/database/models/base.model.js +7 -0
- package/dist/esm/internal/database/models/base.model.js.map +1 -0
- package/dist/esm/internal/database/models/fixture.model.d.ts +4 -0
- package/dist/esm/internal/database/models/fixture.model.d.ts.map +1 -0
- package/dist/esm/internal/database/models/fixture.model.js +4 -0
- package/dist/esm/internal/database/models/fixture.model.js.map +1 -0
- package/dist/esm/internal/database/schemas/fixture-fields.schema.d.ts +5 -0
- package/dist/esm/internal/database/schemas/fixture-fields.schema.d.ts.map +1 -0
- package/dist/esm/internal/database/schemas/fixture-fields.schema.js +8 -0
- package/dist/esm/internal/database/schemas/fixture-fields.schema.js.map +1 -0
- package/dist/esm/internal/database/schemas/shared-fields.schema.d.ts +44 -0
- package/dist/esm/internal/database/schemas/shared-fields.schema.d.ts.map +1 -0
- package/dist/esm/internal/database/schemas/shared-fields.schema.js +61 -0
- package/dist/esm/internal/database/schemas/shared-fields.schema.js.map +1 -0
- package/dist/esm/internal/database/schemas/tenant-fields.schema.d.ts +51 -0
- package/dist/esm/internal/database/schemas/tenant-fields.schema.d.ts.map +1 -0
- package/dist/esm/internal/database/schemas/tenant-fields.schema.js +54 -0
- package/dist/esm/internal/database/schemas/tenant-fields.schema.js.map +1 -0
- package/dist/esm/internal/enums/lambda.enum.d.ts +28 -0
- package/dist/esm/internal/enums/lambda.enum.d.ts.map +1 -0
- package/dist/esm/internal/enums/lambda.enum.js +31 -0
- package/dist/esm/internal/enums/lambda.enum.js.map +1 -0
- package/dist/esm/internal/exceptions/base/error-classification-enums.d.ts +118 -0
- package/dist/esm/internal/exceptions/base/error-classification-enums.d.ts.map +1 -0
- package/dist/esm/internal/exceptions/base/error-classification-enums.js +108 -0
- package/dist/esm/internal/exceptions/base/error-classification-enums.js.map +1 -0
- package/dist/esm/internal/exceptions/base/error-classification.interface.d.ts +48 -0
- package/dist/esm/internal/exceptions/base/error-classification.interface.d.ts.map +1 -0
- package/dist/esm/internal/exceptions/base/error-classification.interface.js +5 -0
- package/dist/esm/internal/exceptions/base/error-classification.interface.js.map +1 -0
- package/dist/esm/internal/exceptions/base/error-classifier.d.ts +23 -0
- package/dist/esm/internal/exceptions/base/error-classifier.d.ts.map +1 -0
- package/dist/esm/internal/exceptions/base/error-classifier.js +145 -0
- package/dist/esm/internal/exceptions/base/error-classifier.js.map +1 -0
- package/dist/esm/internal/exceptions/index.d.ts +3 -0
- package/dist/esm/internal/exceptions/index.d.ts.map +1 -0
- package/dist/esm/internal/exceptions/index.js +6 -0
- package/dist/esm/internal/exceptions/index.js.map +1 -0
- package/dist/esm/internal/functions/crypto.functions.d.ts +16 -0
- package/dist/esm/internal/functions/crypto.functions.d.ts.map +1 -0
- package/dist/esm/internal/functions/crypto.functions.js +67 -0
- package/dist/esm/internal/functions/crypto.functions.js.map +1 -0
- package/dist/esm/internal/functions/helper.functions.d.ts +10 -0
- package/dist/esm/internal/functions/helper.functions.d.ts.map +1 -0
- package/dist/esm/internal/functions/helper.functions.js +32 -0
- package/dist/esm/internal/functions/helper.functions.js.map +1 -0
- package/dist/esm/internal/functions/index.d.ts +4 -0
- package/dist/esm/internal/functions/index.d.ts.map +1 -0
- package/dist/esm/internal/functions/index.js +5 -0
- package/dist/esm/internal/functions/index.js.map +1 -0
- package/dist/esm/internal/functions/request.functions.d.ts +14 -0
- package/dist/esm/internal/functions/request.functions.d.ts.map +1 -0
- package/dist/esm/internal/functions/request.functions.js +61 -0
- package/dist/esm/internal/functions/request.functions.js.map +1 -0
- package/dist/esm/internal/index.d.ts +14 -0
- package/dist/esm/internal/index.d.ts.map +1 -0
- package/dist/esm/internal/index.js +26 -0
- package/dist/esm/internal/index.js.map +1 -0
- package/dist/esm/internal/interfaces/index.d.ts +3 -0
- package/dist/esm/internal/interfaces/index.d.ts.map +1 -0
- package/dist/esm/internal/interfaces/index.js +3 -0
- package/dist/esm/internal/interfaces/index.js.map +1 -0
- package/dist/esm/internal/interfaces/request.interface.d.ts +21 -0
- package/dist/esm/internal/interfaces/request.interface.d.ts.map +1 -0
- package/dist/esm/internal/interfaces/request.interface.js +11 -0
- package/dist/esm/internal/interfaces/request.interface.js.map +1 -0
- package/dist/esm/internal/interfaces/stripe-payment-intent-metadata.interface.d.ts +9 -0
- package/dist/esm/internal/interfaces/stripe-payment-intent-metadata.interface.d.ts.map +1 -0
- package/dist/esm/internal/interfaces/stripe-payment-intent-metadata.interface.js +2 -0
- package/dist/esm/internal/interfaces/stripe-payment-intent-metadata.interface.js.map +1 -0
- package/dist/esm/internal/internal-index.d.ts +8 -0
- package/dist/esm/internal/internal-index.d.ts.map +1 -0
- package/dist/esm/internal/internal-index.js +17 -0
- package/dist/esm/internal/internal-index.js.map +1 -0
- package/dist/esm/internal/orchestrators/base-orchestrator.d.ts +90 -0
- package/dist/esm/internal/orchestrators/base-orchestrator.d.ts.map +1 -0
- package/dist/esm/internal/orchestrators/base-orchestrator.js +116 -0
- package/dist/esm/internal/orchestrators/base-orchestrator.js.map +1 -0
- package/dist/esm/internal/orchestrators/base-workflow.d.ts +50 -0
- package/dist/esm/internal/orchestrators/base-workflow.d.ts.map +1 -0
- package/dist/esm/internal/orchestrators/base-workflow.js +64 -0
- package/dist/esm/internal/orchestrators/base-workflow.js.map +1 -0
- package/dist/esm/internal/orchestrators/index.d.ts +26 -0
- package/dist/esm/internal/orchestrators/index.d.ts.map +1 -0
- package/dist/esm/internal/orchestrators/index.js +30 -0
- package/dist/esm/internal/orchestrators/index.js.map +1 -0
- package/dist/esm/internal/utils/index.d.ts +2 -0
- package/dist/esm/internal/utils/index.d.ts.map +1 -0
- package/dist/esm/internal/utils/index.js +3 -0
- package/dist/esm/internal/utils/index.js.map +1 -0
- package/dist/esm/internal/utils/validation.utils.d.ts +49 -0
- package/dist/esm/internal/utils/validation.utils.d.ts.map +1 -0
- package/dist/esm/internal/utils/validation.utils.js +70 -0
- package/dist/esm/internal/utils/validation.utils.js.map +1 -0
- package/dist/esm/value-objects/token-transaction-input.vo.d.ts +2 -3
- package/dist/esm/value-objects/token-transaction-input.vo.d.ts.map +1 -1
- package/dist/esm/value-objects/token-transaction-input.vo.js +10 -18
- package/dist/esm/value-objects/token-transaction-input.vo.js.map +1 -1
- package/package.json +7 -1
package/README.md
CHANGED
|
@@ -4,11 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
Pure data contracts for frontends, third-party integrations, and API consumers.
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
- **
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
7
|
+
## 📊 **Bundle Size** ⚡
|
|
8
|
+
- **Browser Bundle**: **0.44 KB** (0.30 KB gzipped)
|
|
9
|
+
- **Full Bundle**: **0.67 KB** (0.38 KB gzipped)
|
|
10
|
+
- **CommonJS**: **1.53 KB** (0.72 KB gzipped)
|
|
11
|
+
- **Package Size**: 1.2 MB (includes all TypeScript definitions)
|
|
12
|
+
- **Runtime Impact**: < 1 KB with tree shaking
|
|
13
|
+
|
|
14
|
+
## 📋 **Contents**
|
|
15
|
+
- **DTOs** - Complete API data transfer objects with validation
|
|
16
|
+
- **Interfaces** - TypeScript contracts for authentication, users, campaigns, transactions
|
|
17
|
+
- **Types & Enums** - Authentication types, error codes, transaction statuses
|
|
18
|
+
- **Value Objects** - Immutable data structures (`Address`, `StructuredError`)
|
|
19
|
+
- **Error Classes** - Structured domain errors (`AuthenticationRequiredError`, etc.)
|
|
12
20
|
|
|
13
21
|
## 🚨 **Critical Build Configuration**
|
|
14
22
|
|
|
@@ -36,16 +44,57 @@ Pure data contracts for frontends, third-party integrations, and API consumers.
|
|
|
36
44
|
npm install @explorins/pers-shared
|
|
37
45
|
```
|
|
38
46
|
|
|
47
|
+
### **Backend/Node.js**
|
|
39
48
|
```typescript
|
|
40
|
-
|
|
41
|
-
|
|
49
|
+
import {
|
|
50
|
+
UserDTO,
|
|
51
|
+
TransactionStatus,
|
|
52
|
+
AuthenticationRequiredError,
|
|
53
|
+
PasskeysAuthRequestDTO
|
|
54
|
+
} from '@explorins/pers-shared';
|
|
55
|
+
|
|
56
|
+
// Type-safe API requests
|
|
57
|
+
const authRequest: PasskeysAuthRequestDTO = {
|
|
58
|
+
authToken: "external_provider_jwt_token"
|
|
59
|
+
};
|
|
42
60
|
|
|
43
|
-
//
|
|
44
|
-
|
|
61
|
+
// Structured error handling
|
|
62
|
+
try {
|
|
63
|
+
const user = await authenticate(authRequest);
|
|
64
|
+
} catch (error) {
|
|
65
|
+
if (error instanceof AuthenticationRequiredError) {
|
|
66
|
+
console.error('Authentication failed:', error.code);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
45
69
|
```
|
|
46
70
|
|
|
47
|
-
|
|
71
|
+
### **Frontend/Browser (Ultra-Light)**
|
|
72
|
+
```typescript
|
|
73
|
+
// Browser-optimized import - Tree-shaken to 0.44 KB!
|
|
74
|
+
import { UserDTO, CampaignDTO, Address } from '@explorins/pers-shared/browser';
|
|
75
|
+
|
|
76
|
+
// React example with full type safety
|
|
77
|
+
interface UserBalanceProps {
|
|
78
|
+
user: UserTokenBalancesDTO;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const UserBalance: React.FC<UserBalanceProps> = ({ user }) => (
|
|
82
|
+
<div>
|
|
83
|
+
<h2>{user.email}</h2>
|
|
84
|
+
<p>Wallet: {user.walletAddress?.getValue()}</p>
|
|
85
|
+
</div>
|
|
86
|
+
);
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 🔧 **Build System & Performance**
|
|
90
|
+
|
|
91
|
+
- **Dual Builds**: CommonJS (Node.js) + ESM (browsers) with automatic selection
|
|
92
|
+
- **Exceptional Tree Shaking**: 99.9%+ elimination (1.2 MB package → 0.44 KB runtime)
|
|
93
|
+
- **Zero Runtime**: Pure type definitions with no execution overhead
|
|
94
|
+
- **Framework Agnostic**: React, Vue, Angular, vanilla JS, Node.js
|
|
48
95
|
|
|
49
|
-
|
|
50
|
-
- **
|
|
51
|
-
- **
|
|
96
|
+
## 🎯 **Key Benefits**
|
|
97
|
+
- **Type Safety**: Catch API integration errors at compile time
|
|
98
|
+
- **Developer Experience**: Full IntelliSense and auto-completion
|
|
99
|
+
- **Performance**: Exceptional tree-shaking (1.2 MB → 0.44 KB runtime)
|
|
100
|
+
- **Reliability**: Contracts match exact PERS API specifications
|
|
@@ -6,14 +6,10 @@ export declare class PasskeysAuthRequestDTO {
|
|
|
6
6
|
export declare class RefreshTokenRequestDTO {
|
|
7
7
|
refreshToken: string;
|
|
8
8
|
}
|
|
9
|
-
export declare class
|
|
9
|
+
export declare class SessionAuthResponseDTO {
|
|
10
10
|
accessToken: string;
|
|
11
11
|
refreshToken: string;
|
|
12
|
-
}
|
|
13
|
-
export declare class UserAuthResponseDTO extends AuthResponseDTO {
|
|
14
|
-
user: UserDTO;
|
|
15
|
-
}
|
|
16
|
-
export declare class AdminLoginResponseDTO extends AuthResponseDTO {
|
|
17
12
|
admin?: AdminDTO;
|
|
13
|
+
user?: UserDTO;
|
|
18
14
|
}
|
|
19
15
|
//# sourceMappingURL=auth.dto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.dto.d.ts","sourceRoot":"","sources":["../../../src/dto/auth.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,sBAAsB;IAQ/B,SAAS,EAAE,MAAM,CAAM;CAC1B;AAkBD,qBAAa,sBAAsB;IAK/B,YAAY,EAAE,MAAM,CAAM;CAC7B;AAED,qBAAa,
|
|
1
|
+
{"version":3,"file":"auth.dto.d.ts","sourceRoot":"","sources":["../../../src/dto/auth.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,sBAAsB;IAQ/B,SAAS,EAAE,MAAM,CAAM;CAC1B;AAkBD,qBAAa,sBAAsB;IAK/B,YAAY,EAAE,MAAM,CAAM;CAC7B;AAED,qBAAa,sBAAsB;IAM/B,WAAW,EAAE,MAAM,CAAM;IAMzB,YAAY,EAAE,MAAM,CAAM;IAM1B,KAAK,CAAC,EAAE,QAAQ,CAAC;IAMjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB"}
|
package/dist/cjs/dto/auth.dto.js
CHANGED
|
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.SessionAuthResponseDTO = exports.RefreshTokenRequestDTO = exports.PasskeysAuthRequestDTO = void 0;
|
|
13
13
|
const swagger_1 = require("@nestjs/swagger");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const user_dto_1 = require("./user.dto");
|
|
@@ -54,43 +54,37 @@ __decorate([
|
|
|
54
54
|
}),
|
|
55
55
|
__metadata("design:type", String)
|
|
56
56
|
], RefreshTokenRequestDTO.prototype, "refreshToken", void 0);
|
|
57
|
-
class
|
|
57
|
+
class SessionAuthResponseDTO {
|
|
58
58
|
accessToken = '';
|
|
59
59
|
refreshToken = '';
|
|
60
|
+
admin;
|
|
61
|
+
user;
|
|
60
62
|
}
|
|
61
|
-
exports.
|
|
63
|
+
exports.SessionAuthResponseDTO = SessionAuthResponseDTO;
|
|
62
64
|
__decorate([
|
|
63
65
|
(0, swagger_1.ApiProperty)({
|
|
64
66
|
description: 'JWT access token this token is used to authenticate the user, by default it expires in 15 minutes, and it should be sent in the Authorization header as Bearer token.',
|
|
65
67
|
}),
|
|
66
68
|
__metadata("design:type", String)
|
|
67
|
-
],
|
|
69
|
+
], SessionAuthResponseDTO.prototype, "accessToken", void 0);
|
|
68
70
|
__decorate([
|
|
69
71
|
(0, swagger_1.ApiProperty)({
|
|
70
72
|
description: 'JWT refresh token this token is used to get a new access token when the current one expires. It is valid for 1 day.',
|
|
71
73
|
}),
|
|
72
74
|
__metadata("design:type", String)
|
|
73
|
-
],
|
|
74
|
-
class UserAuthResponseDTO extends AuthResponseDTO {
|
|
75
|
-
user;
|
|
76
|
-
}
|
|
77
|
-
exports.UserAuthResponseDTO = UserAuthResponseDTO;
|
|
78
|
-
__decorate([
|
|
79
|
-
(0, swagger_1.ApiProperty)({
|
|
80
|
-
description: 'User',
|
|
81
|
-
type: () => user_dto_1.UserDTO
|
|
82
|
-
}),
|
|
83
|
-
__metadata("design:type", user_dto_1.UserDTO)
|
|
84
|
-
], UserAuthResponseDTO.prototype, "user", void 0);
|
|
85
|
-
class AdminLoginResponseDTO extends AuthResponseDTO {
|
|
86
|
-
admin;
|
|
87
|
-
}
|
|
88
|
-
exports.AdminLoginResponseDTO = AdminLoginResponseDTO;
|
|
75
|
+
], SessionAuthResponseDTO.prototype, "refreshToken", void 0);
|
|
89
76
|
__decorate([
|
|
90
|
-
(0, swagger_1.
|
|
91
|
-
description: 'Admin',
|
|
77
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
78
|
+
description: 'Admin (present if admin authentication)',
|
|
92
79
|
type: () => admin_dto_1.AdminDTO
|
|
93
80
|
}),
|
|
94
81
|
__metadata("design:type", admin_dto_1.AdminDTO)
|
|
95
|
-
],
|
|
82
|
+
], SessionAuthResponseDTO.prototype, "admin", void 0);
|
|
83
|
+
__decorate([
|
|
84
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
85
|
+
description: 'User (present if user authentication)',
|
|
86
|
+
type: () => user_dto_1.UserDTO
|
|
87
|
+
}),
|
|
88
|
+
__metadata("design:type", user_dto_1.UserDTO)
|
|
89
|
+
], SessionAuthResponseDTO.prototype, "user", void 0);
|
|
96
90
|
//# sourceMappingURL=auth.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.dto.js","sourceRoot":"","sources":["../../../src/dto/auth.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"auth.dto.js","sourceRoot":"","sources":["../../../src/dto/auth.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAmE;AACnE,qDAAuD;AACvD,yCAAqC;AACrC,2CAAuC;AAEvC,MAAa,sBAAsB;IAQ/B,SAAS,GAAW,EAAE,CAAC;CAC1B;AATD,wDASC;AADG;IAPC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,qEAAqE;QAClF,OAAO,EAAE,yCAAyC;QAClD,IAAI,EAAE,MAAM;KACf,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;yDACY;AAG3B;;;;;;;;;;;;;;IAcI;AAEJ,MAAa,sBAAsB;IAK/B,YAAY,GAAW,EAAE,CAAC;CAC7B;AAND,wDAMC;AADG;IAJC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,eAAe;QAC5B,OAAO,EAAE,sJAAsJ;KAClK,CAAC;;4DACwB;AAG9B,MAAa,sBAAsB;IAM/B,WAAW,GAAW,EAAE,CAAC;IAMzB,YAAY,GAAW,EAAE,CAAC;IAM1B,KAAK,CAAY;IAMjB,IAAI,CAAW;CAClB;AAzBD,wDAyBC;AAnBG;IALC,IAAA,qBAAW,EACR;QACI,WAAW,EAAE,uKAAuK;KACvL,CACJ;;2DACwB;AAMzB;IAJC,IAAA,qBAAW,EACR;QACI,WAAW,EAAE,qHAAqH;KACrI,CAAC;;4DACoB;AAM1B;IAJC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,yCAAyC;QACtD,IAAI,EAAE,GAAG,EAAE,CAAC,oBAAQ;KACvB,CAAC;8BACM,oBAAQ;qDAAC;AAMjB;IAJC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,uCAAuC;QACpD,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAO;KACtB,CAAC;8BACK,kBAAO;oDAAC"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
export * from './enum';
|
|
2
|
-
export * from './value-objects';
|
|
3
2
|
export * from './interfaces';
|
|
4
3
|
export * from './types';
|
|
5
|
-
export * from './dto';
|
|
4
|
+
export type * from './dto';
|
|
6
5
|
export * from './errors';
|
|
7
|
-
export * from './types/backend';
|
|
8
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,mBAAmB,OAAO,CAAC;AAG3B,cAAc,UAAU,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -18,14 +18,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
19
|
// Core domain contracts
|
|
20
20
|
__exportStar(require("./enum"), exports);
|
|
21
|
-
__exportStar(require("./value-objects"), exports);
|
|
22
21
|
__exportStar(require("./interfaces"), exports);
|
|
23
22
|
__exportStar(require("./types"), exports);
|
|
24
|
-
__exportStar(require("./dto"), exports);
|
|
25
23
|
// Error handling system
|
|
26
24
|
__exportStar(require("./errors"), exports);
|
|
27
|
-
// Backend-only exports (Node.js environment)
|
|
28
|
-
__exportStar(require("./types/backend"), exports);
|
|
29
25
|
// Note: Architecture patterns (orchestrators, database schemas) moved to @explorins/pers-shared-patterns
|
|
30
26
|
// This library now contains only pure data contracts safe for external consumption
|
|
31
27
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,4EAA4E;AAC5E,8FAA8F;;;;;;;;;;;;;;;;AAE9F,wBAAwB;AACxB,yCAAuB;AACvB
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,4EAA4E;AAC5E,8FAA8F;;;;;;;;;;;;;;;;AAE9F,wBAAwB;AACxB,yCAAuB;AACvB,+CAA6B;AAC7B,0CAAwB;AAGxB,wBAAwB;AACxB,2CAAyB;AAEzB,yGAAyG;AACzG,mFAAmF"}
|
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
import type { ContractAbi } from "web3";
|
|
2
2
|
import { Web3TransactionType } from "../enum/transaction-type.enum";
|
|
3
|
-
import { Address
|
|
3
|
+
import { Address } from "../value-objects";
|
|
4
|
+
import { NativeTokenType } from "..";
|
|
5
|
+
import { AccountOwnerType } from "../enum/owner-type.enum";
|
|
6
|
+
export interface TxParticipants {
|
|
7
|
+
senderAddress: Address;
|
|
8
|
+
senderOwnerType: AccountOwnerType | null;
|
|
9
|
+
senderId: string | null;
|
|
10
|
+
recipientAddress: Address | null;
|
|
11
|
+
recipientOwnerType: AccountOwnerType | null;
|
|
12
|
+
recipientId: string | null;
|
|
13
|
+
}
|
|
4
14
|
export interface ITokenTransactionInputData {
|
|
5
15
|
transactionId: string | null;
|
|
6
16
|
chainId: number;
|
|
7
17
|
smartContractAddress: Address;
|
|
8
18
|
contractAbi: ContractAbi;
|
|
9
19
|
contractTokenId: string | null;
|
|
10
|
-
|
|
11
|
-
recipientAddress: Address | null;
|
|
20
|
+
txParticipants: TxParticipants;
|
|
12
21
|
amount: number;
|
|
13
22
|
type: Web3TransactionType;
|
|
14
23
|
tokenType: NativeTokenType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-transaction-input-data.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/token-transaction-input-data.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"token-transaction-input-data.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/token-transaction-input-data.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,MAAM,WAAW,cAAc;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,kBAAkB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC5C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,0BAA0B;IACvC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,mBAAmB,CAAC;IAC1B,SAAS,EAAE,eAAe,CAAC;IAG3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/internal/database/index.ts"],"names":[],"mappings":"AAEA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AAIvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Exporting models
|
|
18
|
+
__exportStar(require("./models/base.model"), exports);
|
|
19
|
+
__exportStar(require("./models/fixture.model"), exports);
|
|
20
|
+
// Exporting schemas for shared fields
|
|
21
|
+
__exportStar(require("./schemas/fixture-fields.schema"), exports);
|
|
22
|
+
__exportStar(require("./schemas/tenant-fields.schema"), exports);
|
|
23
|
+
__exportStar(require("./schemas/shared-fields.schema"), exports);
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/internal/database/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,mBAAmB;AACnB,sDAAoC;AACpC,yDAAuC;AAGvC,sCAAsC;AACtC,kEAAgD;AAChD,iEAA+C;AAC/C,iEAA+C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.model.d.ts","sourceRoot":"","sources":["../../../../../src/internal/database/models/base.model.ts"],"names":[],"mappings":"AAAA,8BAAsB,SAAS;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.model.js","sourceRoot":"","sources":["../../../../../src/internal/database/models/base.model.ts"],"names":[],"mappings":";;;AAAA,MAAsB,SAAS;IAC7B,EAAE,CAAU;IACZ,SAAS,CAAQ;IACjB,SAAS,CAAQ;IACjB,SAAS,CAAQ;CAClB;AALD,8BAKC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture.model.d.ts","sourceRoot":"","sources":["../../../../../src/internal/database/models/fixture.model.ts"],"names":[],"mappings":"AAAA,8BAAsB,YAAY;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;CACb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture.model.js","sourceRoot":"","sources":["../../../../../src/internal/database/models/fixture.model.ts"],"names":[],"mappings":";;;AAAA,MAAsB,YAAY;IAChC,EAAE,CAAU;CACb;AAFD,oCAEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture-fields.schema.d.ts","sourceRoot":"","sources":["../../../../../src/internal/database/schemas/fixture-fields.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAEnD,eAAO,MAAM,aAAa,EAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAI,yBAAyB,CAAA;CAMvE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fixtureFields = void 0;
|
|
4
|
+
exports.fixtureFields = {
|
|
5
|
+
id: {
|
|
6
|
+
type: Number,
|
|
7
|
+
primary: true,
|
|
8
|
+
generated: 'increment',
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=fixture-fields.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture-fields.schema.js","sourceRoot":"","sources":["../../../../../src/internal/database/schemas/fixture-fields.schema.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAmD;IAC3E,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,WAAW;KACvB;CACF,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { EntitySchemaColumnOptions } from "typeorm";
|
|
2
|
+
/**
|
|
3
|
+
* Shared TypeORM Entity Fields
|
|
4
|
+
*
|
|
5
|
+
* MANDATORY for ALL TypeORM schemas in PERS Loyalty Backend
|
|
6
|
+
*
|
|
7
|
+
* Usage Pattern:
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { sharedFields } from '../../../base/infrastructure/typeorm/shared-fields.schema';
|
|
10
|
+
*
|
|
11
|
+
* // For non-tenant entities (system-wide data)
|
|
12
|
+
* export const SystemSchema = new EntitySchema<SystemModel>({
|
|
13
|
+
* columns: {
|
|
14
|
+
* ...sharedFields, // ALWAYS include first
|
|
15
|
+
* // entity-specific fields below
|
|
16
|
+
* }
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // For tenant-specific entities (most common case)
|
|
20
|
+
* import { tenantFields } from '../../../base/infrastructure/typeorm/multi-tenant-fields.schema';
|
|
21
|
+
*
|
|
22
|
+
* export const TenantSchema = new EntitySchema<TenantModel>({
|
|
23
|
+
* columns: {
|
|
24
|
+
* ...sharedFields, // ALWAYS include first
|
|
25
|
+
* ...tenantFields, // Include for tenant isolation
|
|
26
|
+
* // entity-specific fields below
|
|
27
|
+
* },
|
|
28
|
+
* indices: [
|
|
29
|
+
* {
|
|
30
|
+
* name: 'IDX_tenant_entities_tenant_id',
|
|
31
|
+
* columns: ['tenantId'], // REQUIRED for tenant schemas
|
|
32
|
+
* },
|
|
33
|
+
* ],
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* Provides: id (UUID), createdAt, updatedAt, deletedAt (soft delete)
|
|
38
|
+
* Combines with: tenantFields for multi-tenant support
|
|
39
|
+
* See: /documentation/domain-model-best-practices.md
|
|
40
|
+
*/
|
|
41
|
+
export declare const sharedFields: {
|
|
42
|
+
[key: string]: EntitySchemaColumnOptions;
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=shared-fields.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-fields.schema.d.ts","sourceRoot":"","sources":["../../../../../src/internal/database/schemas/shared-fields.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,YAAY,EAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAI,yBAAyB,CAAA;CAoBtE,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sharedFields = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Shared TypeORM Entity Fields
|
|
6
|
+
*
|
|
7
|
+
* MANDATORY for ALL TypeORM schemas in PERS Loyalty Backend
|
|
8
|
+
*
|
|
9
|
+
* Usage Pattern:
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { sharedFields } from '../../../base/infrastructure/typeorm/shared-fields.schema';
|
|
12
|
+
*
|
|
13
|
+
* // For non-tenant entities (system-wide data)
|
|
14
|
+
* export const SystemSchema = new EntitySchema<SystemModel>({
|
|
15
|
+
* columns: {
|
|
16
|
+
* ...sharedFields, // ALWAYS include first
|
|
17
|
+
* // entity-specific fields below
|
|
18
|
+
* }
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // For tenant-specific entities (most common case)
|
|
22
|
+
* import { tenantFields } from '../../../base/infrastructure/typeorm/multi-tenant-fields.schema';
|
|
23
|
+
*
|
|
24
|
+
* export const TenantSchema = new EntitySchema<TenantModel>({
|
|
25
|
+
* columns: {
|
|
26
|
+
* ...sharedFields, // ALWAYS include first
|
|
27
|
+
* ...tenantFields, // Include for tenant isolation
|
|
28
|
+
* // entity-specific fields below
|
|
29
|
+
* },
|
|
30
|
+
* indices: [
|
|
31
|
+
* {
|
|
32
|
+
* name: 'IDX_tenant_entities_tenant_id',
|
|
33
|
+
* columns: ['tenantId'], // REQUIRED for tenant schemas
|
|
34
|
+
* },
|
|
35
|
+
* ],
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* Provides: id (UUID), createdAt, updatedAt, deletedAt (soft delete)
|
|
40
|
+
* Combines with: tenantFields for multi-tenant support
|
|
41
|
+
* See: /documentation/domain-model-best-practices.md
|
|
42
|
+
*/
|
|
43
|
+
exports.sharedFields = {
|
|
44
|
+
id: {
|
|
45
|
+
type: 'uuid',
|
|
46
|
+
primary: true,
|
|
47
|
+
generated: 'uuid',
|
|
48
|
+
},
|
|
49
|
+
createdAt: {
|
|
50
|
+
type: Date,
|
|
51
|
+
createDate: true,
|
|
52
|
+
},
|
|
53
|
+
updatedAt: {
|
|
54
|
+
type: Date,
|
|
55
|
+
nullable: true,
|
|
56
|
+
updateDate: true,
|
|
57
|
+
},
|
|
58
|
+
deletedAt: {
|
|
59
|
+
type: Date,
|
|
60
|
+
nullable: true,
|
|
61
|
+
deleteDate: true,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=shared-fields.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-fields.schema.js","sourceRoot":"","sources":["../../../../../src/internal/database/schemas/shared-fields.schema.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACU,QAAA,YAAY,GAAmD;IAC1E,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,MAAM;KAClB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,IAAI;KACjB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,IAAI;KACjB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,IAAI;KACjB;CACF,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { EntitySchemaColumnOptions } from "typeorm";
|
|
2
|
+
/**
|
|
3
|
+
* Multi-Tenant TypeORM Entity Fields
|
|
4
|
+
*
|
|
5
|
+
* MANDATORY for tenant-specific data in PERS Loyalty Backend
|
|
6
|
+
*
|
|
7
|
+
* ✅ ALWAYS INCLUDE tenantFields for:
|
|
8
|
+
* - User-specific data: SigningAccount, UserWallet, UserProfile, UserPreferences
|
|
9
|
+
* - Business domain data: Campaign, Redemption, Transaction, TokenBalance
|
|
10
|
+
* - API keys and authentication: ApiKey, RefreshToken, UserSession
|
|
11
|
+
* - Tenant-specific configuration: BusinessSettings, CampaignTemplates
|
|
12
|
+
* - Any data that varies by tenant/client
|
|
13
|
+
*
|
|
14
|
+
* ❌ EXCLUDE tenantFields for:
|
|
15
|
+
* - System-wide shared data: TokenContract, GeolocationData, SystemSettings
|
|
16
|
+
* - Static reference data: Country codes, currency rates, blockchain configs
|
|
17
|
+
* - Cross-tenant shared resources (explicitly designed to be shared)
|
|
18
|
+
*
|
|
19
|
+
* Usage Pattern:
|
|
20
|
+
* ```typescript
|
|
21
|
+
* export const MySchema = new EntitySchema<MyModel>({
|
|
22
|
+
* columns: {
|
|
23
|
+
* ...sharedFields, // Base fields (id, timestamps, soft delete)
|
|
24
|
+
* ...tenantFields, // Multi-tenant support (tenantId with RLS)
|
|
25
|
+
* // entity-specific fields below
|
|
26
|
+
* }
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* CRITICAL: When using tenantFields, MUST include RLS module:
|
|
31
|
+
* ```typescript
|
|
32
|
+
* @Module({
|
|
33
|
+
* imports: [
|
|
34
|
+
* TypeOrmModule.forFeature([MySchema]),
|
|
35
|
+
* RLSModule.forFeature([MySchema]), // REQUIRED for Row Level Security
|
|
36
|
+
* ],
|
|
37
|
+
* })
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* Technical Details:
|
|
41
|
+
* - Provides: tenantId with RLS (Row Level Security) automatic population
|
|
42
|
+
* - RLS Function: Uses current_setting('rls.tenant_id') for automatic tenant isolation
|
|
43
|
+
* - Database-level security: Prevents cross-tenant data leaks automatically
|
|
44
|
+
* - Transparent filtering: All queries automatically filter by current tenant
|
|
45
|
+
*
|
|
46
|
+
* See: /documentation/domain-model-best-practices.md for complete patterns
|
|
47
|
+
*/
|
|
48
|
+
export declare const tenantFields: {
|
|
49
|
+
[key: string]: EntitySchemaColumnOptions;
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=tenant-fields.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-fields.schema.d.ts","sourceRoot":"","sources":["../../../../../src/internal/database/schemas/tenant-fields.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,YAAY,EAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAI,yBAAyB,CAAA;CAMtE,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tenantFields = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Multi-Tenant TypeORM Entity Fields
|
|
6
|
+
*
|
|
7
|
+
* MANDATORY for tenant-specific data in PERS Loyalty Backend
|
|
8
|
+
*
|
|
9
|
+
* ✅ ALWAYS INCLUDE tenantFields for:
|
|
10
|
+
* - User-specific data: SigningAccount, UserWallet, UserProfile, UserPreferences
|
|
11
|
+
* - Business domain data: Campaign, Redemption, Transaction, TokenBalance
|
|
12
|
+
* - API keys and authentication: ApiKey, RefreshToken, UserSession
|
|
13
|
+
* - Tenant-specific configuration: BusinessSettings, CampaignTemplates
|
|
14
|
+
* - Any data that varies by tenant/client
|
|
15
|
+
*
|
|
16
|
+
* ❌ EXCLUDE tenantFields for:
|
|
17
|
+
* - System-wide shared data: TokenContract, GeolocationData, SystemSettings
|
|
18
|
+
* - Static reference data: Country codes, currency rates, blockchain configs
|
|
19
|
+
* - Cross-tenant shared resources (explicitly designed to be shared)
|
|
20
|
+
*
|
|
21
|
+
* Usage Pattern:
|
|
22
|
+
* ```typescript
|
|
23
|
+
* export const MySchema = new EntitySchema<MyModel>({
|
|
24
|
+
* columns: {
|
|
25
|
+
* ...sharedFields, // Base fields (id, timestamps, soft delete)
|
|
26
|
+
* ...tenantFields, // Multi-tenant support (tenantId with RLS)
|
|
27
|
+
* // entity-specific fields below
|
|
28
|
+
* }
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* CRITICAL: When using tenantFields, MUST include RLS module:
|
|
33
|
+
* ```typescript
|
|
34
|
+
* @Module({
|
|
35
|
+
* imports: [
|
|
36
|
+
* TypeOrmModule.forFeature([MySchema]),
|
|
37
|
+
* RLSModule.forFeature([MySchema]), // REQUIRED for Row Level Security
|
|
38
|
+
* ],
|
|
39
|
+
* })
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* Technical Details:
|
|
43
|
+
* - Provides: tenantId with RLS (Row Level Security) automatic population
|
|
44
|
+
* - RLS Function: Uses current_setting('rls.tenant_id') for automatic tenant isolation
|
|
45
|
+
* - Database-level security: Prevents cross-tenant data leaks automatically
|
|
46
|
+
* - Transparent filtering: All queries automatically filter by current tenant
|
|
47
|
+
*
|
|
48
|
+
* See: /documentation/domain-model-best-practices.md for complete patterns
|
|
49
|
+
*/
|
|
50
|
+
exports.tenantFields = {
|
|
51
|
+
tenantId: {
|
|
52
|
+
type: String,
|
|
53
|
+
nullable: true,
|
|
54
|
+
default: () => "current_setting('rls.tenant_id')",
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=tenant-fields.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-fields.schema.js","sourceRoot":"","sources":["../../../../../src/internal/database/schemas/tenant-fields.schema.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACU,QAAA,YAAY,GAAmD;IAC1E,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,GAAG,EAAE,CAAC,kCAAkC;KAClD;CACF,CAAC"}
|