@shadowob/flash-types 1.1.3

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.
@@ -0,0 +1,165 @@
1
+ import type { CardKind, CardMeta, CardPriority } from './card.js';
2
+ /** Knowledge card */
3
+ export interface Card {
4
+ id: string;
5
+ kind: CardKind;
6
+ title: string;
7
+ summary?: string;
8
+ content?: string;
9
+ thumbnail?: string;
10
+ sourceId: string | null;
11
+ linkedCardIds: string[];
12
+ meta: CardMeta;
13
+ tags: string[];
14
+ priority: CardPriority;
15
+ autoGenerated: boolean;
16
+ isStreaming?: boolean;
17
+ rating: number;
18
+ filePath?: string;
19
+ fileMime?: string;
20
+ deckIds: string[];
21
+ createdAt: number;
22
+ updatedAt: number;
23
+ }
24
+ /** Uploaded material file */
25
+ export interface Material {
26
+ id: string;
27
+ name: string;
28
+ type: string;
29
+ mimeType?: string;
30
+ size: number;
31
+ status: 'uploading' | 'uploaded' | 'curating' | 'curated' | 'analyzing' | 'error';
32
+ summary?: string;
33
+ content?: string;
34
+ error?: string;
35
+ path?: string;
36
+ cardIds: string[];
37
+ uploadedAt: number;
38
+ }
39
+ /** Outline item */
40
+ export interface OutlineItem {
41
+ id: string;
42
+ slideIndex: number;
43
+ title: string;
44
+ type: 'cover' | 'toc' | 'section' | 'content' | 'chart' | 'ending' | 'image' | 'quote';
45
+ keyPoints: string[];
46
+ materialRefs: string[];
47
+ cardRefs: string[];
48
+ notes?: string;
49
+ }
50
+ /** Theme preset */
51
+ export interface ThemePreset {
52
+ id: string;
53
+ name: string;
54
+ appearance: 'dark' | 'light';
55
+ colorScheme: {
56
+ dk1: string;
57
+ lt1: string;
58
+ dk2: string;
59
+ lt2: string;
60
+ accent1: string;
61
+ accent2: string;
62
+ accent3: string;
63
+ accent4: string;
64
+ accent5: string;
65
+ accent6: string;
66
+ };
67
+ fontScheme: {
68
+ majorFont: string;
69
+ minorFont: string;
70
+ };
71
+ preview?: string;
72
+ }
73
+ /** Deck — card collection */
74
+ export interface Deck {
75
+ id: string;
76
+ title: string;
77
+ description: string;
78
+ outline: OutlineItem[];
79
+ theme: ThemePreset;
80
+ autoCreatedReason?: string;
81
+ createdAt: number;
82
+ updatedAt: number;
83
+ }
84
+ export interface TodoItem {
85
+ id: string;
86
+ text: string;
87
+ done: boolean;
88
+ completionNote?: string;
89
+ createdAt: number;
90
+ }
91
+ export type TaskStatus = 'pending' | 'running' | 'completed' | 'error' | 'cancelled';
92
+ export interface TaskArtifact {
93
+ type: 'cards' | 'outline' | 'material_analysis' | 'research';
94
+ label: string;
95
+ url?: string;
96
+ count?: number;
97
+ }
98
+ export interface TaskRecord {
99
+ id: string;
100
+ name: string;
101
+ status: TaskStatus;
102
+ dependsOn: string[];
103
+ taskType: string;
104
+ startedAt: number;
105
+ completedAt?: number;
106
+ artifacts: TaskArtifact[];
107
+ logs: string[];
108
+ error?: string;
109
+ deckId?: string;
110
+ progress?: number;
111
+ pipelineId?: string;
112
+ requestId?: string;
113
+ }
114
+ export type ResearchStatus = 'idle' | 'running' | 'completed' | 'error';
115
+ export interface ResearchAngle {
116
+ id: string;
117
+ name: string;
118
+ description: string;
119
+ skillId?: string;
120
+ status: ResearchStatus;
121
+ cardIds: string[];
122
+ logs: string[];
123
+ startedAt?: number;
124
+ completedAt?: number;
125
+ }
126
+ export interface ResearchSession {
127
+ id: string;
128
+ topic: string;
129
+ angles: ResearchAngle[];
130
+ status: ResearchStatus;
131
+ totalCards: number;
132
+ createdAt: number;
133
+ completedAt?: number;
134
+ }
135
+ export type SkillStatus = 'available' | 'installed' | 'installing' | 'error';
136
+ export interface SkillDef {
137
+ id: string;
138
+ name: string;
139
+ emoji: string;
140
+ category: 'research' | 'drawing' | 'art' | 'analysis' | 'data' | 'utility';
141
+ description: string;
142
+ builtin: boolean;
143
+ status: SkillStatus;
144
+ skillPath: string;
145
+ version?: string;
146
+ }
147
+ export type ResearchGoal = 'academic' | 'business' | 'competitive' | 'trending' | 'technical' | 'creative';
148
+ export type ProjectStatus = 'idle' | 'analyzing' | 'curating' | 'outlining' | 'researching' | 'done' | 'error';
149
+ export interface Project {
150
+ id: string;
151
+ title: string;
152
+ materials: Material[];
153
+ cards: Card[];
154
+ decks: Deck[];
155
+ activeDeckId: string | null;
156
+ todos: TodoItem[];
157
+ tasks: TaskRecord[];
158
+ skills: SkillDef[];
159
+ researchSessions: ResearchSession[];
160
+ status: ProjectStatus;
161
+ sessionKey?: string;
162
+ createdAt: number;
163
+ updatedAt: number;
164
+ }
165
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
package/dist/models.js ADDED
@@ -0,0 +1,5 @@
1
+ // ═══════════════════════════════════════════════════════════════
2
+ // @shadowob/flash-types — Domain Models
3
+ // ═══════════════════════════════════════════════════════════════
4
+ export {};
5
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,wCAAwC;AACxC,kEAAkE"}
package/dist/models.ts ADDED
@@ -0,0 +1,172 @@
1
+ // ═══════════════════════════════════════════════════════════════
2
+ // @shadowob/flash-types — Domain Models
3
+ // ═══════════════════════════════════════════════════════════════
4
+ import type { CardKind, CardMeta, CardPriority } from './card.js';
5
+ /** Knowledge card */
6
+ export interface Card {
7
+ id: string;
8
+ kind: CardKind;
9
+ title: string;
10
+ summary?: string;
11
+ content?: string;
12
+ thumbnail?: string;
13
+ sourceId: string | null;
14
+ linkedCardIds: string[];
15
+ meta: CardMeta;
16
+ tags: string[];
17
+ priority: CardPriority;
18
+ autoGenerated: boolean;
19
+ isStreaming?: boolean;
20
+ rating: number;
21
+ filePath?: string;
22
+ fileMime?: string;
23
+ deckIds: string[];
24
+ createdAt: number;
25
+ updatedAt: number;
26
+ }
27
+ /** Uploaded material file */
28
+ export interface Material {
29
+ id: string;
30
+ name: string;
31
+ type: string;
32
+ mimeType?: string;
33
+ size: number;
34
+ status: 'uploading' | 'uploaded' | 'curating' | 'curated' | 'analyzing' | 'error';
35
+ summary?: string;
36
+ content?: string;
37
+ error?: string;
38
+ path?: string;
39
+ cardIds: string[];
40
+ uploadedAt: number;
41
+ }
42
+ /** Outline item */
43
+ export interface OutlineItem {
44
+ id: string;
45
+ slideIndex: number;
46
+ title: string;
47
+ type: 'cover' | 'toc' | 'section' | 'content' | 'chart' | 'ending' | 'image' | 'quote';
48
+ keyPoints: string[];
49
+ materialRefs: string[];
50
+ cardRefs: string[];
51
+ notes?: string;
52
+ }
53
+ /** Theme preset */
54
+ export interface ThemePreset {
55
+ id: string;
56
+ name: string;
57
+ appearance: 'dark' | 'light';
58
+ colorScheme: {
59
+ dk1: string;
60
+ lt1: string;
61
+ dk2: string;
62
+ lt2: string;
63
+ accent1: string;
64
+ accent2: string;
65
+ accent3: string;
66
+ accent4: string;
67
+ accent5: string;
68
+ accent6: string;
69
+ };
70
+ fontScheme: {
71
+ majorFont: string;
72
+ minorFont: string;
73
+ };
74
+ preview?: string;
75
+ }
76
+ /** Deck — card collection */
77
+ export interface Deck {
78
+ id: string;
79
+ title: string;
80
+ description: string;
81
+ outline: OutlineItem[];
82
+ theme: ThemePreset;
83
+ autoCreatedReason?: string;
84
+ createdAt: number;
85
+ updatedAt: number;
86
+ }
87
+ // ── TODO ──
88
+ export interface TodoItem {
89
+ id: string;
90
+ text: string;
91
+ done: boolean;
92
+ completionNote?: string;
93
+ createdAt: number;
94
+ }
95
+ // ── Task Center ──
96
+ export type TaskStatus = 'pending' | 'running' | 'completed' | 'error' | 'cancelled';
97
+ export interface TaskArtifact {
98
+ type: 'cards' | 'outline' | 'material_analysis' | 'research';
99
+ label: string;
100
+ url?: string;
101
+ count?: number;
102
+ }
103
+ export interface TaskRecord {
104
+ id: string;
105
+ name: string;
106
+ status: TaskStatus;
107
+ dependsOn: string[];
108
+ taskType: string;
109
+ startedAt: number;
110
+ completedAt?: number;
111
+ artifacts: TaskArtifact[];
112
+ logs: string[];
113
+ error?: string;
114
+ deckId?: string;
115
+ progress?: number;
116
+ pipelineId?: string;
117
+ requestId?: string;
118
+ }
119
+ // ── Research ──
120
+ export type ResearchStatus = 'idle' | 'running' | 'completed' | 'error';
121
+ export interface ResearchAngle {
122
+ id: string;
123
+ name: string;
124
+ description: string;
125
+ skillId?: string;
126
+ status: ResearchStatus;
127
+ cardIds: string[];
128
+ logs: string[];
129
+ startedAt?: number;
130
+ completedAt?: number;
131
+ }
132
+ export interface ResearchSession {
133
+ id: string;
134
+ topic: string;
135
+ angles: ResearchAngle[];
136
+ status: ResearchStatus;
137
+ totalCards: number;
138
+ createdAt: number;
139
+ completedAt?: number;
140
+ }
141
+ // ── Skills ──
142
+ export type SkillStatus = 'available' | 'installed' | 'installing' | 'error';
143
+ export interface SkillDef {
144
+ id: string;
145
+ name: string;
146
+ emoji: string;
147
+ category: 'research' | 'drawing' | 'art' | 'analysis' | 'data' | 'utility';
148
+ description: string;
149
+ builtin: boolean;
150
+ status: SkillStatus;
151
+ skillPath: string;
152
+ version?: string;
153
+ }
154
+ export type ResearchGoal = 'academic' | 'business' | 'competitive' | 'trending' | 'technical' | 'creative';
155
+ // ── Project ──
156
+ export type ProjectStatus = 'idle' | 'analyzing' | 'curating' | 'outlining' | 'researching' | 'done' | 'error';
157
+ export interface Project {
158
+ id: string;
159
+ title: string;
160
+ materials: Material[];
161
+ cards: Card[];
162
+ decks: Deck[];
163
+ activeDeckId: string | null;
164
+ todos: TodoItem[];
165
+ tasks: TaskRecord[];
166
+ skills: SkillDef[];
167
+ researchSessions: ResearchSession[];
168
+ status: ProjectStatus;
169
+ sessionKey?: string;
170
+ createdAt: number;
171
+ updatedAt: number;
172
+ }
@@ -0,0 +1,92 @@
1
+ export interface MaterialRecord {
2
+ id: string;
3
+ name: string;
4
+ type: string;
5
+ mimeType: string;
6
+ size: number;
7
+ path: string;
8
+ content?: string;
9
+ status: string;
10
+ cardIds: string[];
11
+ uploadedAt: number;
12
+ projectId?: string;
13
+ }
14
+ export interface CardRecord {
15
+ id: string;
16
+ kind: string;
17
+ title: string;
18
+ summary?: string;
19
+ content?: string;
20
+ sourceId: string | null;
21
+ linkedCardIds: string[];
22
+ meta: Record<string, unknown>;
23
+ tags: string[];
24
+ priority: string;
25
+ autoGenerated: boolean;
26
+ rating: number;
27
+ deckIds: string[];
28
+ filePath?: string;
29
+ fileMime?: string;
30
+ createdAt: number;
31
+ updatedAt: number;
32
+ projectId?: string;
33
+ }
34
+ export interface DeckRecord {
35
+ id: string;
36
+ title: string;
37
+ description: string;
38
+ outline: OutlineItemRecord[];
39
+ theme: ThemeRefRecord | null;
40
+ autoCreatedReason?: string;
41
+ createdAt: number;
42
+ updatedAt: number;
43
+ projectId?: string;
44
+ }
45
+ export interface OutlineItemRecord {
46
+ id: string;
47
+ slideIndex: number;
48
+ title: string;
49
+ type: string;
50
+ keyPoints: string[];
51
+ materialRefs: string[];
52
+ cardRefs: string[];
53
+ notes: string;
54
+ }
55
+ export interface ThemeRefRecord {
56
+ name?: string;
57
+ appearance?: string;
58
+ colorScheme?: Record<string, string>;
59
+ fontScheme?: Record<string, string>;
60
+ }
61
+ export interface SkillRecord {
62
+ id: string;
63
+ name: string;
64
+ emoji: string;
65
+ category: string;
66
+ description: string;
67
+ builtin: boolean;
68
+ status: string;
69
+ version: string;
70
+ skillPath?: string;
71
+ source?: string;
72
+ }
73
+ export interface ThemeFolder {
74
+ id: string;
75
+ name: string;
76
+ path?: string;
77
+ componentCount?: number;
78
+ promptCount?: number;
79
+ _resolvedPath?: string;
80
+ _themeDescription?: string;
81
+ _keywords?: string;
82
+ _score?: number;
83
+ components?: ThemeComponent[];
84
+ promptContent?: string;
85
+ }
86
+ export interface ThemeComponent {
87
+ id: string;
88
+ name: string;
89
+ notes: string;
90
+ jsxCode: string;
91
+ }
92
+ //# sourceMappingURL=records.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../src/records.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,cAAc,EAAE,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB"}
@@ -0,0 +1,5 @@
1
+ // ═══════════════════════════════════════════════════════════════
2
+ // @shadowob/flash-types — Server-side Record Types (DAO layer)
3
+ // ═══════════════════════════════════════════════════════════════
4
+ export {};
5
+ //# sourceMappingURL=records.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.js","sourceRoot":"","sources":["../src/records.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,+DAA+D;AAC/D,kEAAkE"}
@@ -0,0 +1,94 @@
1
+ // ═══════════════════════════════════════════════════════════════
2
+ // @shadowob/flash-types — Server-side Record Types (DAO layer)
3
+ // ═══════════════════════════════════════════════════════════════
4
+ export interface MaterialRecord {
5
+ id: string;
6
+ name: string;
7
+ type: string;
8
+ mimeType: string;
9
+ size: number;
10
+ path: string;
11
+ content?: string;
12
+ status: string;
13
+ cardIds: string[];
14
+ uploadedAt: number;
15
+ projectId?: string;
16
+ }
17
+ export interface CardRecord {
18
+ id: string;
19
+ kind: string;
20
+ title: string;
21
+ summary?: string;
22
+ content?: string;
23
+ sourceId: string | null;
24
+ linkedCardIds: string[];
25
+ meta: Record<string, unknown>;
26
+ tags: string[];
27
+ priority: string;
28
+ autoGenerated: boolean;
29
+ rating: number;
30
+ deckIds: string[];
31
+ filePath?: string;
32
+ fileMime?: string;
33
+ createdAt: number;
34
+ updatedAt: number;
35
+ projectId?: string;
36
+ }
37
+ export interface DeckRecord {
38
+ id: string;
39
+ title: string;
40
+ description: string;
41
+ outline: OutlineItemRecord[];
42
+ theme: ThemeRefRecord | null;
43
+ autoCreatedReason?: string;
44
+ createdAt: number;
45
+ updatedAt: number;
46
+ projectId?: string;
47
+ }
48
+ export interface OutlineItemRecord {
49
+ id: string;
50
+ slideIndex: number;
51
+ title: string;
52
+ type: string;
53
+ keyPoints: string[];
54
+ materialRefs: string[];
55
+ cardRefs: string[];
56
+ notes: string;
57
+ }
58
+ export interface ThemeRefRecord {
59
+ name?: string;
60
+ appearance?: string;
61
+ colorScheme?: Record<string, string>;
62
+ fontScheme?: Record<string, string>;
63
+ }
64
+ export interface SkillRecord {
65
+ id: string;
66
+ name: string;
67
+ emoji: string;
68
+ category: string;
69
+ description: string;
70
+ builtin: boolean;
71
+ status: string;
72
+ version: string;
73
+ skillPath?: string;
74
+ source?: string;
75
+ }
76
+ export interface ThemeFolder {
77
+ id: string;
78
+ name: string;
79
+ path?: string;
80
+ componentCount?: number;
81
+ promptCount?: number;
82
+ _resolvedPath?: string;
83
+ _themeDescription?: string;
84
+ _keywords?: string;
85
+ _score?: number;
86
+ components?: ThemeComponent[];
87
+ promptContent?: string;
88
+ }
89
+ export interface ThemeComponent {
90
+ id: string;
91
+ name: string;
92
+ notes: string;
93
+ jsxCode: string;
94
+ }
@@ -0,0 +1,17 @@
1
+ export interface UserSettings {
2
+ displayName: string;
3
+ language: string;
4
+ aiLanguage: string;
5
+ defaultResearchGoals: string[];
6
+ autoCurate: boolean;
7
+ autoPipeline: boolean;
8
+ notifications: boolean;
9
+ autoInspire: boolean;
10
+ autoResearch: boolean;
11
+ heartbeatInterval: number;
12
+ autoConsumeTodos: boolean;
13
+ }
14
+ export interface AppSettings {
15
+ userSettings: UserSettings;
16
+ }
17
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,OAAO,CAAA;IACtB,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,YAAY,CAAA;CAC3B"}
@@ -0,0 +1,5 @@
1
+ // ═══════════════════════════════════════════════════════════════
2
+ // @shadowob/flash-types — Settings
3
+ // ═══════════════════════════════════════════════════════════════
4
+ export {};
5
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,mCAAmC;AACnC,kEAAkE"}
@@ -0,0 +1,19 @@
1
+ // ═══════════════════════════════════════════════════════════════
2
+ // @shadowob/flash-types — Settings
3
+ // ═══════════════════════════════════════════════════════════════
4
+ export interface UserSettings {
5
+ displayName: string;
6
+ language: string;
7
+ aiLanguage: string;
8
+ defaultResearchGoals: string[];
9
+ autoCurate: boolean;
10
+ autoPipeline: boolean;
11
+ notifications: boolean;
12
+ autoInspire: boolean;
13
+ autoResearch: boolean;
14
+ heartbeatInterval: number;
15
+ autoConsumeTodos: boolean;
16
+ }
17
+ export interface AppSettings {
18
+ userSettings: UserSettings;
19
+ }
@@ -0,0 +1,19 @@
1
+ import typia from 'typia';
2
+ import type { CardRecord, DeckRecord, MaterialRecord, SkillRecord } from './records.js';
3
+ import type { AppSettings, UserSettings } from './settings.js';
4
+ export declare const validateCard: (input: unknown) => typia.IValidation<CardRecord>;
5
+ export declare const isCard: (input: unknown) => input is CardRecord;
6
+ export declare const assertCard: (input: unknown) => CardRecord;
7
+ export declare const validateMaterial: (input: unknown) => typia.IValidation<MaterialRecord>;
8
+ export declare const isMaterial: (input: unknown) => input is MaterialRecord;
9
+ export declare const assertMaterial: (input: unknown) => MaterialRecord;
10
+ export declare const validateDeck: (input: unknown) => typia.IValidation<DeckRecord>;
11
+ export declare const isDeck: (input: unknown) => input is DeckRecord;
12
+ export declare const assertDeck: (input: unknown) => DeckRecord;
13
+ export declare const validateSkill: (input: unknown) => typia.IValidation<SkillRecord>;
14
+ export declare const isSkill: (input: unknown) => input is SkillRecord;
15
+ export declare const validateUserSettings: (input: unknown) => typia.IValidation<UserSettings>;
16
+ export declare const validateAppSettings: (input: unknown) => typia.IValidation<AppSettings>;
17
+ export declare const validatePartialCard: (input: unknown) => typia.IValidation<Partial<CardRecord>>;
18
+ export declare const validatePartialDeck: (input: unknown) => typia.IValidation<Partial<DeckRecord>>;
19
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAI9D,eAAO,MAAM,YAAY,mDAAqC,CAAA;AAC9D,eAAO,MAAM,MAAM,yCAA+B,CAAA;AAClD,eAAO,MAAM,UAAU,gCAAmC,CAAA;AAI1D,eAAO,MAAM,gBAAgB,uDAAyC,CAAA;AACtE,eAAO,MAAM,UAAU,6CAAmC,CAAA;AAC1D,eAAO,MAAM,cAAc,oCAAuC,CAAA;AAIlE,eAAO,MAAM,YAAY,mDAAqC,CAAA;AAC9D,eAAO,MAAM,MAAM,yCAA+B,CAAA;AAClD,eAAO,MAAM,UAAU,gCAAmC,CAAA;AAI1D,eAAO,MAAM,aAAa,oDAAsC,CAAA;AAChE,eAAO,MAAM,OAAO,0CAAgC,CAAA;AAIpD,eAAO,MAAM,oBAAoB,qDAAuC,CAAA;AACxE,eAAO,MAAM,mBAAmB,oDAAsC,CAAA;AAItE,eAAO,MAAM,mBAAmB,4DAA8C,CAAA;AAC9E,eAAO,MAAM,mBAAmB,4DAA8C,CAAA"}
@@ -0,0 +1,29 @@
1
+ // ═══════════════════════════════════════════════════════════════
2
+ // @shadowob/flash-types — Typia Validators
3
+ //
4
+ // Runtime validation powered by typia.
5
+ // Import and call these to validate data at system boundaries.
6
+ // ═══════════════════════════════════════════════════════════════
7
+ import typia from 'typia';
8
+ // ── Card ──
9
+ export const validateCard = typia.createValidate();
10
+ export const isCard = typia.createIs();
11
+ export const assertCard = typia.createAssert();
12
+ // ── Material ──
13
+ export const validateMaterial = typia.createValidate();
14
+ export const isMaterial = typia.createIs();
15
+ export const assertMaterial = typia.createAssert();
16
+ // ── Deck ──
17
+ export const validateDeck = typia.createValidate();
18
+ export const isDeck = typia.createIs();
19
+ export const assertDeck = typia.createAssert();
20
+ // ── Skill ──
21
+ export const validateSkill = typia.createValidate();
22
+ export const isSkill = typia.createIs();
23
+ // ── Settings ──
24
+ export const validateUserSettings = typia.createValidate();
25
+ export const validateAppSettings = typia.createValidate();
26
+ // ── Partial updates ──
27
+ export const validatePartialCard = typia.createValidate();
28
+ export const validatePartialDeck = typia.createValidate();
29
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,2CAA2C;AAC3C,EAAE;AACF,uCAAuC;AACvC,+DAA+D;AAC/D,kEAAkE;AAElE,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,aAAa;AAEb,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,EAAc,CAAA;AAC9D,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAc,CAAA;AAClD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,EAAc,CAAA;AAE1D,iBAAiB;AAEjB,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,EAAkB,CAAA;AACtE,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAkB,CAAA;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,EAAkB,CAAA;AAElE,aAAa;AAEb,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,EAAc,CAAA;AAC9D,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAc,CAAA;AAClD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,EAAc,CAAA;AAE1D,cAAc;AAEd,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,EAAe,CAAA;AAChE,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAe,CAAA;AAEpD,iBAAiB;AAEjB,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,cAAc,EAAgB,CAAA;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,cAAc,EAAe,CAAA;AAEtE,wBAAwB;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,cAAc,EAAuB,CAAA;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,cAAc,EAAuB,CAAA"}