@cranberry-money/shared-types 1.0.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 +76 -0
- package/dist/auth.d.ts +13 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +5 -0
- package/dist/components.d.ts +37 -0
- package/dist/components.d.ts.map +1 -0
- package/dist/components.js +5 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/instruments.d.ts +54 -0
- package/dist/instruments.d.ts.map +1 -0
- package/dist/instruments.js +5 -0
- package/dist/navigation.d.ts +23 -0
- package/dist/navigation.d.ts.map +1 -0
- package/dist/navigation.js +5 -0
- package/dist/trading-filters.d.ts +41 -0
- package/dist/trading-filters.d.ts.map +1 -0
- package/dist/trading-filters.js +5 -0
- package/dist/validation.d.ts +28 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +5 -0
- package/package.json +46 -0
package/README.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# @myportfolio/shared-types
|
|
2
|
+
|
|
3
|
+
Shared TypeScript type definitions for the MyPortfolio platform, supporting both web (Blueberry) and mobile (Blackberry) applications.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @myportfolio/shared-types
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { AuthState, BaseFilters, NavigationItem } from '@myportfolio/shared-types';
|
|
15
|
+
|
|
16
|
+
// Use shared types in your application
|
|
17
|
+
const authState: AuthState = {
|
|
18
|
+
isAuthenticated: true,
|
|
19
|
+
isLoading: false,
|
|
20
|
+
user: {
|
|
21
|
+
hasProfile: true,
|
|
22
|
+
profileCompleted: true
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Available Types
|
|
28
|
+
|
|
29
|
+
### Authentication (`auth.ts`)
|
|
30
|
+
- `AuthState` - Authentication state management
|
|
31
|
+
|
|
32
|
+
### Components (`components.ts`)
|
|
33
|
+
- `BaseDialogProps` - Standard dialog interfaces
|
|
34
|
+
- `BaseSearchFieldProps` - Search field variations
|
|
35
|
+
- `BaseSummaryPanelProps` - Summary panel patterns
|
|
36
|
+
|
|
37
|
+
### Instruments (`instruments.ts`)
|
|
38
|
+
- `InstrumentFilters` - Filtering for financial instruments
|
|
39
|
+
- `InstrumentMetadata` - Reference data for instruments
|
|
40
|
+
|
|
41
|
+
### Navigation (`navigation.ts`)
|
|
42
|
+
- `NavigationItem` - Navigation menu items
|
|
43
|
+
- `AppNavigationStructure` - Cross-platform navigation structure
|
|
44
|
+
|
|
45
|
+
### Trading Filters (`trading-filters.ts`)
|
|
46
|
+
- `BaseFilters` - Base filtering interfaces
|
|
47
|
+
- `DateRangeFilters` - Date range filtering
|
|
48
|
+
- `NumericRangeFilters` - Numeric range filtering
|
|
49
|
+
|
|
50
|
+
### Validation (`validation.ts`)
|
|
51
|
+
- `BaseFieldValidation` - Form field validation
|
|
52
|
+
- `BaseFormValidation` - Form-level validation
|
|
53
|
+
|
|
54
|
+
## Development
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Build the package
|
|
58
|
+
npm run build
|
|
59
|
+
|
|
60
|
+
# Watch for changes
|
|
61
|
+
npm run dev
|
|
62
|
+
|
|
63
|
+
# Type check
|
|
64
|
+
npm run typecheck
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Platform Compatibility
|
|
68
|
+
|
|
69
|
+
This package is designed to work across:
|
|
70
|
+
- Web applications (React)
|
|
71
|
+
- Mobile applications (React Native)
|
|
72
|
+
- Node.js environments
|
|
73
|
+
|
|
74
|
+
## License
|
|
75
|
+
|
|
76
|
+
MIT
|
package/dist/auth.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication-related type definitions
|
|
3
|
+
* Used by authentication hooks and components
|
|
4
|
+
*/
|
|
5
|
+
export interface AuthState {
|
|
6
|
+
isAuthenticated: boolean;
|
|
7
|
+
isLoading: boolean;
|
|
8
|
+
user: {
|
|
9
|
+
hasProfile: boolean;
|
|
10
|
+
profileCompleted: boolean;
|
|
11
|
+
} | null;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE;QACJ,UAAU,EAAE,OAAO,CAAC;QACpB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,GAAG,IAAI,CAAC;CACV"}
|
package/dist/auth.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared component interfaces for trading and general UI patterns
|
|
3
|
+
* Addresses component prop duplications across pages
|
|
4
|
+
*/
|
|
5
|
+
export interface BaseDialogProps {
|
|
6
|
+
isOpen: boolean;
|
|
7
|
+
onClose: () => void;
|
|
8
|
+
}
|
|
9
|
+
export interface BaseModalProps extends BaseDialogProps {
|
|
10
|
+
title?: string;
|
|
11
|
+
closeOnBackdrop?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface BaseSearchFieldProps {
|
|
14
|
+
onSearch: (query: string) => void;
|
|
15
|
+
placeholder?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ControlledSearchFieldProps extends BaseSearchFieldProps {
|
|
18
|
+
value: string;
|
|
19
|
+
onClear?: () => void;
|
|
20
|
+
}
|
|
21
|
+
export interface UncontrolledSearchFieldProps extends BaseSearchFieldProps {
|
|
22
|
+
initialValue?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface BaseSummaryPanelProps<T> {
|
|
25
|
+
summary: T;
|
|
26
|
+
isLoading?: boolean;
|
|
27
|
+
error?: Error | null;
|
|
28
|
+
onRefresh?: () => void;
|
|
29
|
+
}
|
|
30
|
+
export interface BaseLoadingProps {
|
|
31
|
+
isLoading?: boolean;
|
|
32
|
+
error?: Error | null;
|
|
33
|
+
}
|
|
34
|
+
export interface BaseRefreshProps {
|
|
35
|
+
onRefresh?: () => void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=components.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAGD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,4BAA6B,SAAQ,oBAAoB;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACtB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized export of all shared types
|
|
3
|
+
* Clean re-export pattern for organized type management
|
|
4
|
+
*/
|
|
5
|
+
export * from './trading-filters';
|
|
6
|
+
export * from './validation';
|
|
7
|
+
export * from './components';
|
|
8
|
+
export * from './instruments';
|
|
9
|
+
export * from './navigation';
|
|
10
|
+
export * from './auth';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized export of all shared types
|
|
3
|
+
* Clean re-export pattern for organized type management
|
|
4
|
+
*/
|
|
5
|
+
// Re-export all shared types
|
|
6
|
+
export * from './trading-filters';
|
|
7
|
+
export * from './validation';
|
|
8
|
+
export * from './components';
|
|
9
|
+
export * from './instruments';
|
|
10
|
+
export * from './navigation';
|
|
11
|
+
export * from './auth';
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared instrument filtering interfaces
|
|
3
|
+
* Addresses critical duplication between target-trades and asset_allocation pages
|
|
4
|
+
*/
|
|
5
|
+
import type { BaseFilters, NumericRangeFilters, BaseFiltersDialogProps } from './trading-filters';
|
|
6
|
+
export interface Sector {
|
|
7
|
+
uuid: string;
|
|
8
|
+
name: string;
|
|
9
|
+
}
|
|
10
|
+
export interface Country {
|
|
11
|
+
uuid: string;
|
|
12
|
+
name: string;
|
|
13
|
+
code: string;
|
|
14
|
+
dialCode: string | null;
|
|
15
|
+
isAvailable: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface StockExchange {
|
|
18
|
+
uuid: string;
|
|
19
|
+
name: string;
|
|
20
|
+
shortName: string;
|
|
21
|
+
country: Country | null;
|
|
22
|
+
}
|
|
23
|
+
export interface Industry {
|
|
24
|
+
uuid: string;
|
|
25
|
+
name: string;
|
|
26
|
+
sector: string | null;
|
|
27
|
+
}
|
|
28
|
+
export interface BaseInstrumentFilters extends BaseFilters {
|
|
29
|
+
exchange?: string;
|
|
30
|
+
sector?: string;
|
|
31
|
+
industry?: string;
|
|
32
|
+
isEtf?: boolean;
|
|
33
|
+
isFund?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export type InstrumentPriceFilters = NumericRangeFilters;
|
|
36
|
+
export interface InstrumentFilters extends BaseInstrumentFilters, InstrumentPriceFilters {
|
|
37
|
+
}
|
|
38
|
+
export interface InstrumentMetadata {
|
|
39
|
+
sectors: Sector[];
|
|
40
|
+
exchanges: StockExchange[];
|
|
41
|
+
industries: Industry[];
|
|
42
|
+
loadingSectors: boolean;
|
|
43
|
+
loadingExchanges?: boolean;
|
|
44
|
+
loadingIndustries?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface BaseInstrumentFiltersDialogProps<T extends BaseInstrumentFilters> extends BaseFiltersDialogProps<T> {
|
|
47
|
+
sectors: Sector[];
|
|
48
|
+
exchanges: StockExchange[];
|
|
49
|
+
industries: Industry[];
|
|
50
|
+
loadingSectors: boolean;
|
|
51
|
+
loadingExchanges?: boolean;
|
|
52
|
+
loadingIndustries?: boolean;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=instruments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruments.d.ts","sourceRoot":"","sources":["../src/instruments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGlG,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAGD,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAGD,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAGzD,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB,EAAE,sBAAsB;CAAG;AAG3F,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAGD,MAAM,WAAW,gCAAgC,CAAC,CAAC,SAAS,qBAAqB,CAAE,SAAQ,sBAAsB,CAAC,CAAC,CAAC;IAClH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Navigation-related type definitions
|
|
3
|
+
* Used by navigation components and hooks
|
|
4
|
+
*/
|
|
5
|
+
export interface NavigationItem {
|
|
6
|
+
label: string;
|
|
7
|
+
onClick: () => void;
|
|
8
|
+
icon?: string;
|
|
9
|
+
isButton?: boolean;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
variant?: 'default' | 'primary';
|
|
12
|
+
}
|
|
13
|
+
export interface AppNavigationStructure {
|
|
14
|
+
Dashboard: undefined;
|
|
15
|
+
Portfolio: {
|
|
16
|
+
portfolioId: string;
|
|
17
|
+
};
|
|
18
|
+
Trading: {
|
|
19
|
+
symbol?: string;
|
|
20
|
+
};
|
|
21
|
+
Profile: undefined;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACjC;AAGD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,OAAO,EAAE,SAAS,CAAC;CACpB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared filter interfaces for trading-related pages
|
|
3
|
+
* Addresses critical duplications across trades, target-trades, and cash-transactions
|
|
4
|
+
*/
|
|
5
|
+
export interface BaseFilters {
|
|
6
|
+
searchQuery?: string;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
}
|
|
9
|
+
export interface DateRangeFilters {
|
|
10
|
+
startDate?: string;
|
|
11
|
+
endDate?: string;
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
export interface NumericRangeFilters {
|
|
15
|
+
minValue?: number;
|
|
16
|
+
maxValue?: number;
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
}
|
|
19
|
+
export interface TradeActionFilters {
|
|
20
|
+
action?: 'BUY' | 'SELL';
|
|
21
|
+
[key: string]: unknown;
|
|
22
|
+
}
|
|
23
|
+
export interface BaseFiltersDialogProps<T> {
|
|
24
|
+
filters: T;
|
|
25
|
+
isOpen: boolean;
|
|
26
|
+
onClose: () => void;
|
|
27
|
+
onUpdateFilters: (filters: Partial<T>) => void;
|
|
28
|
+
onApplyFilters: () => void;
|
|
29
|
+
onClearFilters: () => void;
|
|
30
|
+
}
|
|
31
|
+
export interface BaseTradingPanelProps<TItem, TFilters> {
|
|
32
|
+
items: TItem[];
|
|
33
|
+
dialogFilters: TFilters;
|
|
34
|
+
clientSearchQuery: string;
|
|
35
|
+
isLoading?: boolean;
|
|
36
|
+
onSearch: (query: string) => void;
|
|
37
|
+
onUpdateDialogFilters: (filters: Partial<TFilters>) => void;
|
|
38
|
+
onApplyFiltersToServer: () => void;
|
|
39
|
+
onClearAllFilters: () => void;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=trading-filters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trading-filters.d.ts","sourceRoot":"","sources":["../src/trading-filters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAGD,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAGD,MAAM,WAAW,qBAAqB,CAAC,KAAK,EAAE,QAAQ;IACpD,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,aAAa,EAAE,QAAQ,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,qBAAqB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IAC5D,sBAAsB,EAAE,MAAM,IAAI,CAAC;IACnC,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared validation interfaces for form pages
|
|
3
|
+
* Addresses validation type duplications across signup pages
|
|
4
|
+
*/
|
|
5
|
+
export interface BaseFieldValidation {
|
|
6
|
+
isValid: boolean;
|
|
7
|
+
isEmpty: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface MessageFieldValidation {
|
|
10
|
+
isValid: boolean;
|
|
11
|
+
message: string;
|
|
12
|
+
}
|
|
13
|
+
export interface BaseFormValidation {
|
|
14
|
+
isFormValid: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface ExtendedFieldValidation extends BaseFieldValidation {
|
|
17
|
+
hasValidFormat: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface DateFieldValidation extends BaseFieldValidation {
|
|
20
|
+
isValidDate: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface AddressFieldValidation extends BaseFieldValidation {
|
|
23
|
+
isTooShort: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface PhoneFieldValidation extends BaseFieldValidation {
|
|
26
|
+
hasValidFormat: boolean;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,OAAO,CAAC;CACtB;AAGD,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D,cAAc,EAAE,OAAO,CAAC;CACzB"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cranberry-money/shared-types",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Shared TypeScript type definitions for MyPortfolio platform",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.cjs"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"clean": "rm -rf dist",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"dev": "tsc --watch"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"typescript": "^5.0.0"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"typescript": ">=5.0.0"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"typescript",
|
|
31
|
+
"types",
|
|
32
|
+
"shared",
|
|
33
|
+
"portfolio"
|
|
34
|
+
],
|
|
35
|
+
"author": "MyPortfolio Team",
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "restricted",
|
|
39
|
+
"registry": "https://registry.npmjs.org/"
|
|
40
|
+
},
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "git+https://github.com/your-org/cranberry.git",
|
|
44
|
+
"directory": "packages/shared-types"
|
|
45
|
+
}
|
|
46
|
+
}
|