@guinetik/primitives-ts 0.1.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 +87 -0
- package/dist/auth.types.d.ts +57 -0
- package/dist/auth.types.d.ts.map +1 -0
- package/dist/auth.types.js +6 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/system.types.d.ts +161 -0
- package/dist/system.types.d.ts.map +1 -0
- package/dist/system.types.js +6 -0
- package/dist/website.types.d.ts +167 -0
- package/dist/website.types.d.ts.map +1 -0
- package/dist/website.types.js +6 -0
- package/package.json +30 -0
package/README.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# @guinetik/primitives-ts
|
|
2
|
+
|
|
3
|
+
Shared TypeScript primitives for Guinetik projects.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This package contains pure TypeScript type definitions and interfaces used across the Guinetik ecosystem. It provides a single source of truth for data contracts between frontend and backend applications.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- ✅ **Pure TypeScript** - No runtime dependencies
|
|
12
|
+
- ✅ **Type-safe** - Full TypeScript support with declaration files
|
|
13
|
+
- ✅ **Lightweight** - Minimal bundle size
|
|
14
|
+
- ✅ **Universal** - Works in Node.js, browsers, and other JavaScript runtimes
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install @guinetik/primitives-ts
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import { User, SystemMetrics, Container } from '@guinetik/primitives-ts';
|
|
26
|
+
|
|
27
|
+
// Use the types in your application
|
|
28
|
+
const user: User = {
|
|
29
|
+
uid: '123',
|
|
30
|
+
email: 'user@example.com',
|
|
31
|
+
displayName: 'John Doe'
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const metrics: SystemMetrics = {
|
|
35
|
+
cpu: { usage: 45.2, cores: 4, model: 'Intel Xeon' },
|
|
36
|
+
memory: { used: 8, total: 16, percentage: 50 },
|
|
37
|
+
disk: { used: 100, total: 500, percentage: 20 },
|
|
38
|
+
uptime: 86400,
|
|
39
|
+
timestamp: new Date()
|
|
40
|
+
};
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Type Categories
|
|
44
|
+
|
|
45
|
+
### Authentication (`auth.types.ts`)
|
|
46
|
+
- `User` - User information
|
|
47
|
+
- `AuthResponse` - Authentication response
|
|
48
|
+
- `AuthProvider` - Authentication provider types
|
|
49
|
+
- `UserUpdateData` - User profile update data
|
|
50
|
+
- `LoginPayload` - Login request payload
|
|
51
|
+
|
|
52
|
+
### System Monitoring (`system.types.ts`)
|
|
53
|
+
- `SystemMetrics` - System metrics (CPU, memory, disk)
|
|
54
|
+
- `Container` - Docker container information
|
|
55
|
+
- `LogEntry` - Container log entry
|
|
56
|
+
- `NetworkStats` - Network statistics
|
|
57
|
+
- `DeploymentInfo` - Deployment information
|
|
58
|
+
- `CommandResult` - Shell command execution result
|
|
59
|
+
|
|
60
|
+
### Website Content (`website.types.ts`)
|
|
61
|
+
- `SiteContent` - Full site content structure
|
|
62
|
+
- `SiteMetadata` - Site metadata
|
|
63
|
+
- `Menu`, `MenuItem` - Navigation menu
|
|
64
|
+
- `Theme`, `ThemeConfig` - Theme configuration
|
|
65
|
+
- `Card`, `Tag` - Project/demo cards with tags
|
|
66
|
+
- `Experiment` - CodePen experiments
|
|
67
|
+
- `AboutSection`, `ProjectsSection`, `DemosSection`, `ReposSection` - Content sections
|
|
68
|
+
|
|
69
|
+
## Development
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Build the package
|
|
73
|
+
npm run build
|
|
74
|
+
|
|
75
|
+
# The build output will be in the dist/ folder
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Publishing
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Publish to npm (requires authentication)
|
|
82
|
+
npm publish --access public
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## License
|
|
86
|
+
|
|
87
|
+
MIT © Guinetik
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication Types
|
|
3
|
+
* Shared between API and Admin for authentication flows
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Authentication provider types
|
|
7
|
+
*/
|
|
8
|
+
export type AuthProvider = 'email' | 'google';
|
|
9
|
+
/**
|
|
10
|
+
* User information
|
|
11
|
+
*/
|
|
12
|
+
export interface User {
|
|
13
|
+
/** Unique user identifier */
|
|
14
|
+
uid: string;
|
|
15
|
+
/** User's email address */
|
|
16
|
+
email?: string;
|
|
17
|
+
/** User's display name */
|
|
18
|
+
displayName?: string;
|
|
19
|
+
/** Whether the email has been verified */
|
|
20
|
+
emailVerified?: boolean;
|
|
21
|
+
/** URL to user's profile photo */
|
|
22
|
+
photoURL?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Authentication response after successful login
|
|
26
|
+
*/
|
|
27
|
+
export interface AuthResponse {
|
|
28
|
+
/** Authentication token (JWT, ID token, etc.) */
|
|
29
|
+
token: string;
|
|
30
|
+
/** Authenticated user information */
|
|
31
|
+
user: User;
|
|
32
|
+
/** Token expiration time in seconds */
|
|
33
|
+
expiresIn: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* User profile update data
|
|
37
|
+
*/
|
|
38
|
+
export interface UserUpdateData {
|
|
39
|
+
/** Updated display name */
|
|
40
|
+
displayName?: string;
|
|
41
|
+
/** Updated photo URL */
|
|
42
|
+
photoURL?: string;
|
|
43
|
+
/** Updated email */
|
|
44
|
+
email?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Login request payload
|
|
48
|
+
*/
|
|
49
|
+
export interface LoginPayload {
|
|
50
|
+
/** Authentication provider */
|
|
51
|
+
provider: AuthProvider;
|
|
52
|
+
/** Email (required for email provider) */
|
|
53
|
+
email?: string;
|
|
54
|
+
/** Password (required for email provider) */
|
|
55
|
+
password?: string;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=auth.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.types.d.ts","sourceRoot":"","sources":["../src/auth.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAC;IAEZ,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IAEd,qCAAqC;IACrC,IAAI,EAAE,IAAI,CAAC;IAEX,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,QAAQ,EAAE,YAAY,CAAC;IAEvB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @guinetik/primitives-ts
|
|
3
|
+
*
|
|
4
|
+
* Shared TypeScript primitives for Guinetik projects.
|
|
5
|
+
* Pure type definitions with no runtime dependencies.
|
|
6
|
+
*
|
|
7
|
+
* @author Guinetik
|
|
8
|
+
* @license MIT
|
|
9
|
+
*/
|
|
10
|
+
export * from './auth.types';
|
|
11
|
+
export * from './system.types';
|
|
12
|
+
export * from './website.types';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,cAAc,CAAC;AAG7B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @guinetik/primitives-ts
|
|
4
|
+
*
|
|
5
|
+
* Shared TypeScript primitives for Guinetik projects.
|
|
6
|
+
* Pure type definitions with no runtime dependencies.
|
|
7
|
+
*
|
|
8
|
+
* @author Guinetik
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
23
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
// Auth types
|
|
27
|
+
__exportStar(require("./auth.types"), exports);
|
|
28
|
+
// System monitoring types
|
|
29
|
+
__exportStar(require("./system.types"), exports);
|
|
30
|
+
// Website/Site content types
|
|
31
|
+
__exportStar(require("./website.types"), exports);
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Monitoring Types
|
|
3
|
+
* Shared between API and Admin for system monitoring features
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* CPU information
|
|
7
|
+
*/
|
|
8
|
+
export interface CpuInfo {
|
|
9
|
+
/** CPU usage percentage (0-100) */
|
|
10
|
+
usage: number;
|
|
11
|
+
/** Number of CPU cores */
|
|
12
|
+
cores: number;
|
|
13
|
+
/** CPU model name */
|
|
14
|
+
model: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Memory information
|
|
18
|
+
*/
|
|
19
|
+
export interface MemoryInfo {
|
|
20
|
+
/** Used memory in GB */
|
|
21
|
+
used: number;
|
|
22
|
+
/** Total memory in GB */
|
|
23
|
+
total: number;
|
|
24
|
+
/** Memory usage percentage (0-100) */
|
|
25
|
+
percentage: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Disk information
|
|
29
|
+
*/
|
|
30
|
+
export interface DiskInfo {
|
|
31
|
+
/** Used disk space in GB */
|
|
32
|
+
used: number;
|
|
33
|
+
/** Total disk space in GB */
|
|
34
|
+
total: number;
|
|
35
|
+
/** Disk usage percentage (0-100) */
|
|
36
|
+
percentage: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* System metrics
|
|
40
|
+
*/
|
|
41
|
+
export interface SystemMetrics {
|
|
42
|
+
/** CPU information */
|
|
43
|
+
cpu: CpuInfo;
|
|
44
|
+
/** Memory information */
|
|
45
|
+
memory: MemoryInfo;
|
|
46
|
+
/** Disk information */
|
|
47
|
+
disk: DiskInfo;
|
|
48
|
+
/** System uptime in seconds */
|
|
49
|
+
uptime: number;
|
|
50
|
+
/** Timestamp when metrics were collected */
|
|
51
|
+
timestamp: Date;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Container status types
|
|
55
|
+
*/
|
|
56
|
+
export type ContainerStatus = 'running' | 'stopped' | 'restarting' | 'error';
|
|
57
|
+
/**
|
|
58
|
+
* Container health status types
|
|
59
|
+
*/
|
|
60
|
+
export type ContainerHealth = 'healthy' | 'unhealthy' | 'starting' | 'none';
|
|
61
|
+
/**
|
|
62
|
+
* Docker container information
|
|
63
|
+
*/
|
|
64
|
+
export interface Container {
|
|
65
|
+
/** Container name */
|
|
66
|
+
name: string;
|
|
67
|
+
/** Container ID */
|
|
68
|
+
id: string;
|
|
69
|
+
/** Container status */
|
|
70
|
+
status: ContainerStatus;
|
|
71
|
+
/** Container uptime in seconds */
|
|
72
|
+
uptime: number;
|
|
73
|
+
/** CPU usage percentage (0-100) */
|
|
74
|
+
cpu: number;
|
|
75
|
+
/** Memory usage in MB */
|
|
76
|
+
memory: number;
|
|
77
|
+
/** Exposed port */
|
|
78
|
+
port: number;
|
|
79
|
+
/** Number of times container has restarted */
|
|
80
|
+
restartCount: number;
|
|
81
|
+
/** Docker image name */
|
|
82
|
+
image: string;
|
|
83
|
+
/** Container health status */
|
|
84
|
+
health: ContainerHealth;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Log level types
|
|
88
|
+
*/
|
|
89
|
+
export type LogLevel = 'info' | 'warn' | 'error' | 'debug';
|
|
90
|
+
/**
|
|
91
|
+
* Container log entry
|
|
92
|
+
*/
|
|
93
|
+
export interface LogEntry {
|
|
94
|
+
/** Log timestamp */
|
|
95
|
+
timestamp: Date;
|
|
96
|
+
/** Log level */
|
|
97
|
+
level: LogLevel;
|
|
98
|
+
/** Log message */
|
|
99
|
+
message: string;
|
|
100
|
+
/** Container name */
|
|
101
|
+
container: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Network statistics
|
|
105
|
+
*/
|
|
106
|
+
export interface NetworkStats {
|
|
107
|
+
/** Total bytes received */
|
|
108
|
+
bytesReceived: number;
|
|
109
|
+
/** Total bytes sent */
|
|
110
|
+
bytesSent: number;
|
|
111
|
+
/** Requests per minute */
|
|
112
|
+
requestsPerMinute: number;
|
|
113
|
+
/** Active connections */
|
|
114
|
+
activeConnections: number;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Deployment status types
|
|
118
|
+
*/
|
|
119
|
+
export type DeploymentStatus = 'success' | 'failed' | 'in_progress';
|
|
120
|
+
/**
|
|
121
|
+
* Deployment information
|
|
122
|
+
*/
|
|
123
|
+
export interface DeploymentInfo {
|
|
124
|
+
/** Application version */
|
|
125
|
+
version: string;
|
|
126
|
+
/** Last deployment timestamp */
|
|
127
|
+
lastDeployment: Date;
|
|
128
|
+
/** User who deployed */
|
|
129
|
+
deployer: string;
|
|
130
|
+
/** Deployment status */
|
|
131
|
+
status: DeploymentStatus;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Shell command execution mode
|
|
135
|
+
*/
|
|
136
|
+
export type CommandExecutionMode = 'whitelist' | 'blocklist';
|
|
137
|
+
/**
|
|
138
|
+
* Command execution request
|
|
139
|
+
*/
|
|
140
|
+
export interface ExecuteCommandRequest {
|
|
141
|
+
/** Shell command to execute */
|
|
142
|
+
command: string;
|
|
143
|
+
/** Execution mode (whitelist or blocklist) */
|
|
144
|
+
mode?: CommandExecutionMode;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Command execution result
|
|
148
|
+
*/
|
|
149
|
+
export interface CommandResult {
|
|
150
|
+
/** Standard output */
|
|
151
|
+
stdout: string;
|
|
152
|
+
/** Standard error */
|
|
153
|
+
stderr: string;
|
|
154
|
+
/** Exit code */
|
|
155
|
+
exitCode: number;
|
|
156
|
+
/** Execution timestamp */
|
|
157
|
+
executedAt: Date;
|
|
158
|
+
/** Executed command */
|
|
159
|
+
command: string;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=system.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.types.d.ts","sourceRoot":"","sources":["../src/system.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Website/Site Content Types
|
|
3
|
+
* Shared between API and frontend for website content management
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Menu item
|
|
7
|
+
*/
|
|
8
|
+
export interface MenuItem {
|
|
9
|
+
/** Menu item title */
|
|
10
|
+
title: string;
|
|
11
|
+
/** Menu item ID */
|
|
12
|
+
id: string;
|
|
13
|
+
/** Menu item link/URL */
|
|
14
|
+
link: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Site menu structure
|
|
18
|
+
*/
|
|
19
|
+
export interface Menu {
|
|
20
|
+
/** Main navigation menu items */
|
|
21
|
+
main: MenuItem[];
|
|
22
|
+
/** Mobile navigation menu items */
|
|
23
|
+
mobile: MenuItem[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Theme configuration
|
|
27
|
+
*/
|
|
28
|
+
export interface Theme {
|
|
29
|
+
/** Theme display name */
|
|
30
|
+
name: string;
|
|
31
|
+
/** Theme ID */
|
|
32
|
+
id: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Theme mappings for different components
|
|
36
|
+
*/
|
|
37
|
+
export interface ThemeConfig {
|
|
38
|
+
/** Stats theme mapping (theme ID -> stats theme name) */
|
|
39
|
+
statsTheme: Record<string, string>;
|
|
40
|
+
/** Contributions theme mapping (theme ID -> contribs theme name) */
|
|
41
|
+
contribsTheme: Record<string, string>;
|
|
42
|
+
/** Stats background mapping (theme ID -> background color) */
|
|
43
|
+
statsBg: Record<string, string>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Technology tag
|
|
47
|
+
*/
|
|
48
|
+
export interface Tag {
|
|
49
|
+
/** Tag name */
|
|
50
|
+
name: string;
|
|
51
|
+
/** Tag link/URL */
|
|
52
|
+
link: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Project or demo card
|
|
56
|
+
*/
|
|
57
|
+
export interface Card {
|
|
58
|
+
/** Card title */
|
|
59
|
+
title: string;
|
|
60
|
+
/** Card description */
|
|
61
|
+
description: string;
|
|
62
|
+
/** Card image URL */
|
|
63
|
+
image: string;
|
|
64
|
+
/** Card link/URL */
|
|
65
|
+
link: string;
|
|
66
|
+
/** Technology tags */
|
|
67
|
+
tags: Tag[];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Experiment/CodePen item
|
|
71
|
+
*/
|
|
72
|
+
export interface Experiment {
|
|
73
|
+
/** Experiment title */
|
|
74
|
+
title: string;
|
|
75
|
+
/** Experiment URL (embed URL) */
|
|
76
|
+
url: string;
|
|
77
|
+
/** Experiment type */
|
|
78
|
+
type: 'codepen' | 'img' | string;
|
|
79
|
+
/** Experiment link (source URL) */
|
|
80
|
+
link: string;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* About section content
|
|
84
|
+
*/
|
|
85
|
+
export interface AboutSection {
|
|
86
|
+
/** Section title */
|
|
87
|
+
title: string;
|
|
88
|
+
/** Section header */
|
|
89
|
+
header: string;
|
|
90
|
+
/** Section subheader */
|
|
91
|
+
subheader: string;
|
|
92
|
+
/** Aside text */
|
|
93
|
+
aside: string;
|
|
94
|
+
/** Section content */
|
|
95
|
+
content: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Projects section content
|
|
99
|
+
*/
|
|
100
|
+
export interface ProjectsSection {
|
|
101
|
+
/** Project cards */
|
|
102
|
+
cards: Card[];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Demos section content
|
|
106
|
+
*/
|
|
107
|
+
export interface DemosSection {
|
|
108
|
+
/** Demo cards */
|
|
109
|
+
cards: Card[];
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Repositories section content
|
|
113
|
+
*/
|
|
114
|
+
export interface ReposSection {
|
|
115
|
+
/** Repository names/IDs */
|
|
116
|
+
cards: string[];
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Site sections
|
|
120
|
+
*/
|
|
121
|
+
export interface SiteSections {
|
|
122
|
+
/** About section */
|
|
123
|
+
about: AboutSection;
|
|
124
|
+
/** Projects section */
|
|
125
|
+
projects: ProjectsSection;
|
|
126
|
+
/** Demos section */
|
|
127
|
+
demos: DemosSection;
|
|
128
|
+
/** Repositories section */
|
|
129
|
+
repos: ReposSection;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Site metadata
|
|
133
|
+
*/
|
|
134
|
+
export interface SiteMetadata {
|
|
135
|
+
/** Site title */
|
|
136
|
+
title: string;
|
|
137
|
+
/** Site description */
|
|
138
|
+
description: string;
|
|
139
|
+
/** Active theme ID */
|
|
140
|
+
theme: string;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Full site content structure
|
|
144
|
+
*/
|
|
145
|
+
export interface SiteContent {
|
|
146
|
+
/** Site title */
|
|
147
|
+
title: string;
|
|
148
|
+
/** Site description */
|
|
149
|
+
description: string;
|
|
150
|
+
/** Active theme ID */
|
|
151
|
+
theme: string;
|
|
152
|
+
/** Navigation menu */
|
|
153
|
+
menu: Menu;
|
|
154
|
+
/** Available themes */
|
|
155
|
+
themes: Theme[];
|
|
156
|
+
/** Theme configuration */
|
|
157
|
+
statsTheme: Record<string, string>;
|
|
158
|
+
/** Contributions theme configuration */
|
|
159
|
+
contribsTheme: Record<string, string>;
|
|
160
|
+
/** Stats background configuration */
|
|
161
|
+
statsBg: Record<string, string>;
|
|
162
|
+
/** Experiments list */
|
|
163
|
+
experiments: Experiment[];
|
|
164
|
+
/** Site sections */
|
|
165
|
+
sections: SiteSections;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=website.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"website.types.d.ts","sourceRoot":"","sources":["../src/website.types.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@guinetik/primitives-ts",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Shared TypeScript primitives for Guinetik projects",
|
|
5
|
+
"author": "Guinetik",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"prepublishOnly": "npm run build"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"typescript",
|
|
18
|
+
"types",
|
|
19
|
+
"primitives",
|
|
20
|
+
"guinetik"
|
|
21
|
+
],
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"typescript": "^5.1.3"
|
|
24
|
+
},
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/guinetik/guinetik-backend.git",
|
|
28
|
+
"directory": "primitives"
|
|
29
|
+
}
|
|
30
|
+
}
|