@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 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,5 @@
1
+ /**
2
+ * Authentication-related type definitions
3
+ * Used by authentication hooks and components
4
+ */
5
+ export {};
@@ -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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared component interfaces for trading and general UI patterns
3
+ * Addresses component prop duplications across pages
4
+ */
5
+ export {};
@@ -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,5 @@
1
+ /**
2
+ * Shared instrument filtering interfaces
3
+ * Addresses critical duplication between target-trades and asset_allocation pages
4
+ */
5
+ export {};
@@ -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,5 @@
1
+ /**
2
+ * Navigation-related type definitions
3
+ * Used by navigation components and hooks
4
+ */
5
+ export {};
@@ -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,5 @@
1
+ /**
2
+ * Shared filter interfaces for trading-related pages
3
+ * Addresses critical duplications across trades, target-trades, and cash-transactions
4
+ */
5
+ export {};
@@ -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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared validation interfaces for form pages
3
+ * Addresses validation type duplications across signup pages
4
+ */
5
+ export {};
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
+ }