@svg-gen/tech-svg-generator 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/dist/scenes.js ADDED
@@ -0,0 +1,257 @@
1
+ /**
2
+ * Scene definitions for different technical contexts
3
+ */
4
+ import { card, metric, status, arrow, codeSnippet, terminalBlock, titleBar } from './primitives.js';
5
+ /**
6
+ * Architecture: 3 cards in a row with arrows
7
+ */
8
+ const architecture = (title, c, w, h) => `
9
+ ${card(80, 100, 120, 100, 'globe', 'Client', c, c.cyan)}
10
+ ${card(290, 100, 120, 100, 'server', 'Server', c, c.blue)}
11
+ ${card(500, 100, 120, 100, 'database', 'Database', c, c.purple)}
12
+ ${arrow(200, 150, 290, 150, c.cyan, 'HTTP', false, c)}
13
+ ${arrow(410, 150, 500, 150, c.purple, 'SQL', false, c)}
14
+ ${metric(80, 250, 'Latency', '12', c, 'ms', c.green)}
15
+ ${metric(210, 250, 'Uptime', '99.9', c, '%', c.green)}
16
+ ${status(360, 280, 'ok', 'All systems operational', c)}
17
+ ${titleBar(title, w, h, c)}
18
+ `;
19
+ /**
20
+ * Scaling: Load balancer + multiple nodes
21
+ */
22
+ const scaling = (title, c, w, h) => `
23
+ ${card(290, 50, 120, 80, 'cloud', 'Load Balancer', c, c.cyan)}
24
+ ${card(80, 180, 100, 80, 'server', 'Node 1', c, c.green)}
25
+ ${card(220, 180, 100, 80, 'server', 'Node 2', c, c.green)}
26
+ ${card(360, 180, 100, 80, 'server', 'Node 3', c, c.green)}
27
+ ${card(500, 180, 100, 80, 'server', 'Node 4', c, c.orange)}
28
+ ${arrow(350, 130, 130, 180, c.cyan, '', false, c)}
29
+ ${arrow(350, 130, 270, 180, c.cyan, '', false, c)}
30
+ ${arrow(350, 130, 410, 180, c.cyan, '', false, c)}
31
+ ${arrow(350, 130, 550, 180, c.cyan, '', false, c)}
32
+ ${metric(150, 290, 'RPS', '45K', c, '', c.blue)}
33
+ ${metric(290, 290, 'Nodes', '4', c, '', c.green)}
34
+ ${metric(430, 290, 'CPU', '72', c, '%', c.orange)}
35
+ ${titleBar(title, w, h, c)}
36
+ `;
37
+ /**
38
+ * Database: Primary + Replicas
39
+ */
40
+ const database = (title, c, w, h) => `
41
+ ${card(180, 80, 140, 100, 'database', 'Primary', c, c.purple)}
42
+ ${card(380, 80, 140, 100, 'database', 'Replica', c, c.cyan)}
43
+ ${arrow(320, 130, 380, 130, c.green, 'sync', false, c)}
44
+ ${metric(80, 220, 'QPS', '2.3K', c, '', c.purple)}
45
+ ${metric(210, 220, 'Latency', '4', c, 'ms', c.green)}
46
+ ${metric(340, 220, 'Connections', '128', c, '', c.blue)}
47
+ ${metric(470, 220, 'Cache Hit', '94', c, '%', c.green)}
48
+ ${status(200, 320, 'ok', 'Replication healthy', c)}
49
+ ${status(400, 320, 'ok', 'Replica in sync', c)}
50
+ ${titleBar(title, w, h, c)}
51
+ `;
52
+ /**
53
+ * Deployment: CI/CD Pipeline
54
+ */
55
+ const deployment = (title, c, w, h) => `
56
+ ${card(60, 120, 100, 80, 'code', 'Code', c, c.muted)}
57
+ ${card(200, 120, 100, 80, 'git', 'Build', c, c.orange)}
58
+ ${card(340, 120, 100, 80, 'target', 'Test', c, c.blue)}
59
+ ${card(480, 120, 100, 80, 'rocket', 'Deploy', c, c.green)}
60
+ ${arrow(160, 160, 200, 160, c.muted, '', false, c)}
61
+ ${arrow(300, 160, 340, 160, c.orange, '', false, c)}
62
+ ${arrow(440, 160, 480, 160, c.blue, '', false, c)}
63
+ ${metric(140, 240, 'Build', '2.3', c, 'min', c.orange)}
64
+ ${metric(290, 240, 'Tests', '141', c, '', c.green)}
65
+ ${metric(440, 240, 'Coverage', '87', c, '%', c.blue)}
66
+ ${status(280, 330, 'ok', 'Pipeline passed • Ready for production', c)}
67
+ ${titleBar(title, w, h, c)}
68
+ `;
69
+ /**
70
+ * Security: Firewall flow
71
+ */
72
+ const security = (title, c, w, h) => `
73
+ ${card(80, 120, 120, 90, 'globe', 'Internet', c, c.muted)}
74
+ ${card(290, 120, 120, 90, 'shield', 'Firewall', c, c.green)}
75
+ ${card(500, 120, 120, 90, 'lock', 'Auth', c, c.purple)}
76
+ ${arrow(200, 165, 290, 165, c.muted, 'HTTPS', false, c)}
77
+ ${arrow(410, 165, 500, 165, c.green, 'mTLS', false, c)}
78
+ ${metric(100, 250, 'Blocked', '847', c, '', c.red)}
79
+ ${metric(250, 250, 'Auth Rate', '99.2', c, '%', c.green)}
80
+ ${metric(400, 250, 'Threats', '0', c, '', c.green)}
81
+ ${status(280, 340, 'ok', 'Zero Trust • All traffic encrypted', c)}
82
+ ${titleBar(title, w, h, c)}
83
+ `;
84
+ /**
85
+ * Debugging: Code + Terminal side by side
86
+ */
87
+ const debugging = (title, c, w, h) => `
88
+ ${codeSnippet(40, 50, 300, 130, [
89
+ { t: 'async function fetch() {' },
90
+ { t: ' const res = await api.get();', hl: true },
91
+ { t: ' return res.data;' },
92
+ { t: '}' }
93
+ ], c, 'debug.ts')}
94
+ ${terminalBlock(360, 50, 300, 130, [
95
+ { t: 'node debug.ts' },
96
+ { t: 'TypeError: Cannot read undefined', err: true },
97
+ { t: ' at fetch (debug.ts:2)', err: true }
98
+ ], c)}
99
+ ${card(150, 220, 120, 80, 'alert', 'Bug Found', c, c.red)}
100
+ ${card(430, 220, 120, 80, 'check', 'Fixed', c, c.green)}
101
+ ${arrow(270, 260, 430, 260, c.orange, 'debug', false, c)}
102
+ ${status(280, 340, 'ok', 'Issue resolved', c)}
103
+ ${titleBar(title, w, h, c)}
104
+ `;
105
+ /**
106
+ * Testing: Test results
107
+ */
108
+ const testing = (title, c, w, h) => `
109
+ ${codeSnippet(40, 50, 280, 120, [
110
+ { t: 'describe("API", () => {' },
111
+ { t: ' it("returns 200", async () => {', hl: true },
112
+ { t: ' expect(res.status).toBe(200);' },
113
+ { t: ' });' }
114
+ ], c, 'api.test.ts')}
115
+ ${metric(360, 50, 'Passed', '141', c, '', c.green)}
116
+ ${metric(490, 50, 'Failed', '1', c, '', c.red)}
117
+ ${metric(360, 120, 'Coverage', '87', c, '%', c.blue)}
118
+ ${metric(490, 120, 'Duration', '4.2', c, 's', c.muted)}
119
+ ${card(150, 220, 120, 80, 'target', 'Unit', c, c.green)}
120
+ ${card(310, 220, 120, 80, 'layers', 'Integration', c, c.blue)}
121
+ ${card(470, 220, 120, 80, 'globe', 'E2E', c, c.purple)}
122
+ ${status(280, 340, 'ok', 'All test suites passed', c)}
123
+ ${titleBar(title, w, h, c)}
124
+ `;
125
+ /**
126
+ * Performance: Metrics focused
127
+ */
128
+ const performance = (title, c, w, h) => `
129
+ ${metric(80, 60, 'P99 Latency', '23', c, 'ms', c.green)}
130
+ ${metric(210, 60, 'RPS', '45K', c, '', c.blue)}
131
+ ${metric(340, 60, 'Error Rate', '0.1', c, '%', c.green)}
132
+ ${metric(470, 60, 'CPU', '45', c, '%', c.orange)}
133
+ ${terminalBlock(120, 150, 460, 100, [
134
+ { t: '$ perf analyze --profile' },
135
+ { t: 'Hotspot: db.query() - 45% CPU', err: true },
136
+ { t: '✓ Optimized: -65% latency', ok: true }
137
+ ], c)}
138
+ ${card(200, 280, 120, 70, 'zap', 'Optimized', c, c.green)}
139
+ ${card(380, 280, 120, 70, 'activity', 'Monitoring', c, c.blue)}
140
+ ${titleBar(title, w, h, c)}
141
+ `;
142
+ /**
143
+ * API: Request/Response
144
+ */
145
+ const api = (title, c, w, h) => `
146
+ ${codeSnippet(40, 50, 300, 120, [
147
+ { t: 'GET /api/v2/users HTTP/1.1' },
148
+ { t: 'Authorization: Bearer ***', hl: true },
149
+ { t: 'Accept: application/json' }
150
+ ], c, 'request.http')}
151
+ ${codeSnippet(360, 50, 300, 120, [
152
+ { t: '200 OK (12ms)' },
153
+ { t: '{ "users": [...] }', hl: true },
154
+ { t: 'Content-Type: application/json' }
155
+ ], c, 'response')}
156
+ ${metric(80, 200, 'RPS', '8.4K', c, '', c.blue)}
157
+ ${metric(210, 200, 'P99', '45', c, 'ms', c.green)}
158
+ ${metric(340, 200, 'Errors', '0.01', c, '%', c.green)}
159
+ ${metric(470, 200, 'Cache', '78', c, '%', c.cyan)}
160
+ ${status(280, 300, 'ok', 'API healthy • Rate limit OK', c)}
161
+ ${titleBar(title, w, h, c)}
162
+ `;
163
+ /**
164
+ * Monitoring: Dashboard
165
+ */
166
+ const monitoring = (title, c, w, h) => `
167
+ ${metric(80, 50, 'Uptime', '99.99', c, '%', c.green)}
168
+ ${metric(210, 50, 'Alerts', '0', c, '', c.green)}
169
+ ${metric(340, 50, 'P95', '23', c, 'ms', c.blue)}
170
+ ${metric(470, 50, 'Memory', '62', c, '%', c.orange)}
171
+ ${card(120, 150, 120, 80, 'activity', 'Metrics', c, c.blue)}
172
+ ${card(290, 150, 120, 80, 'eye', 'Traces', c, c.purple)}
173
+ ${card(460, 150, 120, 80, 'terminal', 'Logs', c, c.cyan)}
174
+ ${metric(80, 270, 'Events', '1.2M', c, '/day', c.muted)}
175
+ ${metric(210, 270, 'Retention', '30', c, 'days', c.muted)}
176
+ ${status(380, 300, 'ok', 'All systems healthy', c)}
177
+ ${titleBar(title, w, h, c)}
178
+ `;
179
+ /**
180
+ * Frontend: Web vitals
181
+ */
182
+ const frontend = (title, c, w, h) => `
183
+ ${metric(80, 50, 'LCP', '1.2', c, 's', c.green)}
184
+ ${metric(210, 50, 'FID', '45', c, 'ms', c.green)}
185
+ ${metric(340, 50, 'CLS', '0.02', c, '', c.green)}
186
+ ${metric(470, 50, 'TTI', '2.1', c, 's', c.orange)}
187
+ ${codeSnippet(150, 140, 400, 100, [
188
+ { t: 'const App = () => {' },
189
+ { t: ' return <Suspense fallback={<Loader />}>', hl: true },
190
+ { t: ' <MainContent />' },
191
+ { t: ' </Suspense>;' }
192
+ ], c, 'App.tsx')}
193
+ ${card(200, 280, 120, 70, 'globe', 'Browser', c, c.cyan)}
194
+ ${card(380, 280, 120, 70, 'zap', 'Optimized', c, c.green)}
195
+ ${titleBar(title, w, h, c)}
196
+ `;
197
+ /**
198
+ * Success: Celebration
199
+ */
200
+ const success = (title, c, w, h) => `
201
+ ${card(290, 60, 120, 100, 'check', 'Success!', c, c.green)}
202
+ ${metric(80, 200, 'Uptime', '100', c, '%', c.green)}
203
+ ${metric(210, 200, 'Users', '12.4K', c, '', c.blue)}
204
+ ${metric(340, 200, 'Revenue', '+24', c, '%', c.green)}
205
+ ${metric(470, 200, 'NPS', '72', c, '', c.purple)}
206
+ ${status(200, 320, 'ok', 'Deployment successful', c)}
207
+ ${status(400, 320, 'ok', 'Zero downtime', c)}
208
+ ${titleBar(title, w, h, c)}
209
+ `;
210
+ /**
211
+ * Error: Incident
212
+ */
213
+ const error = (title, c, w, h) => `
214
+ ${card(290, 50, 120, 90, 'alert', 'Incident', c, c.red)}
215
+ ${terminalBlock(150, 160, 400, 100, [
216
+ { t: '$ kubectl logs pod/api-7d8f9' },
217
+ { t: 'ERROR: OOMKilled - Exit code 137', err: true },
218
+ { t: 'Memory limit exceeded: 512Mi', err: true }
219
+ ], c)}
220
+ ${metric(100, 290, 'Status', '503', c, '', c.red)}
221
+ ${metric(240, 290, 'Errors', '2.3K', c, '', c.red)}
222
+ ${metric(380, 290, 'MTTR', '4.2', c, 'min', c.orange)}
223
+ ${status(280, 370, 'error', 'Service degraded • Investigating', c)}
224
+ ${titleBar(title, w, h, c)}
225
+ `;
226
+ /**
227
+ * Default: Simple overview
228
+ */
229
+ const defaultScene = (title, c, w, h) => `
230
+ ${card(290, 80, 120, 100, 'layers', 'System', c, c.blue)}
231
+ ${metric(80, 220, 'Requests', '8.2K', c, '/s', c.blue)}
232
+ ${metric(220, 220, 'Latency', '12', c, 'ms', c.green)}
233
+ ${metric(360, 220, 'Errors', '0.1', c, '%', c.green)}
234
+ ${metric(500, 220, 'Uptime', '99.9', c, '%', c.green)}
235
+ ${status(280, 340, 'ok', 'All systems operational', c)}
236
+ ${titleBar(title, w, h, c)}
237
+ `;
238
+ /**
239
+ * All available scenes
240
+ */
241
+ export const SCENES = {
242
+ architecture,
243
+ scaling,
244
+ database,
245
+ deployment,
246
+ security,
247
+ debugging,
248
+ testing,
249
+ performance,
250
+ api,
251
+ monitoring,
252
+ frontend,
253
+ success,
254
+ error,
255
+ default: defaultScene,
256
+ };
257
+ //# sourceMappingURL=scenes.js.map
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Theme color definitions
3
+ */
4
+ export interface ThemeColors {
5
+ bg: string;
6
+ card: string;
7
+ elevated: string;
8
+ border: string;
9
+ text: string;
10
+ muted: string;
11
+ dim: string;
12
+ blue: string;
13
+ purple: string;
14
+ green: string;
15
+ cyan: string;
16
+ orange: string;
17
+ red: string;
18
+ pink: string;
19
+ }
20
+ export interface Theme {
21
+ name: string;
22
+ colors: ThemeColors;
23
+ }
24
+ /**
25
+ * Available themes
26
+ */
27
+ export declare const THEMES: Record<string, Theme>;
28
+ /**
29
+ * Get theme by name, defaults to github-dark
30
+ */
31
+ export declare function getTheme(name?: string): Theme;
32
+ //# sourceMappingURL=themes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;CACrB;AA8FD;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAKxC,CAAC;AAEF;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAG7C"}
package/dist/themes.js ADDED
@@ -0,0 +1,106 @@
1
+ /**
2
+ * GitHub-inspired dark theme (default)
3
+ */
4
+ const githubDark = {
5
+ name: 'github-dark',
6
+ colors: {
7
+ bg: '#0d1117',
8
+ card: '#161b22',
9
+ elevated: '#21262d',
10
+ border: '#30363d',
11
+ text: '#e6edf3',
12
+ muted: '#8b949e',
13
+ dim: '#6e7681',
14
+ blue: '#58a6ff',
15
+ purple: '#a371f7',
16
+ green: '#3fb950',
17
+ cyan: '#39c5cf',
18
+ orange: '#d29922',
19
+ red: '#f85149',
20
+ pink: '#f778ba',
21
+ }
22
+ };
23
+ /**
24
+ * Dracula theme
25
+ */
26
+ const dracula = {
27
+ name: 'dracula',
28
+ colors: {
29
+ bg: '#282a36',
30
+ card: '#44475a',
31
+ elevated: '#6272a4',
32
+ border: '#44475a',
33
+ text: '#f8f8f2',
34
+ muted: '#6272a4',
35
+ dim: '#44475a',
36
+ blue: '#8be9fd',
37
+ purple: '#bd93f9',
38
+ green: '#50fa7b',
39
+ cyan: '#8be9fd',
40
+ orange: '#ffb86c',
41
+ red: '#ff5555',
42
+ pink: '#ff79c6',
43
+ }
44
+ };
45
+ /**
46
+ * Nord theme
47
+ */
48
+ const nord = {
49
+ name: 'nord',
50
+ colors: {
51
+ bg: '#2e3440',
52
+ card: '#3b4252',
53
+ elevated: '#434c5e',
54
+ border: '#4c566a',
55
+ text: '#eceff4',
56
+ muted: '#d8dee9',
57
+ dim: '#4c566a',
58
+ blue: '#88c0d0',
59
+ purple: '#b48ead',
60
+ green: '#a3be8c',
61
+ cyan: '#8fbcbb',
62
+ orange: '#d08770',
63
+ red: '#bf616a',
64
+ pink: '#b48ead',
65
+ }
66
+ };
67
+ /**
68
+ * One Dark theme
69
+ */
70
+ const oneDark = {
71
+ name: 'one-dark',
72
+ colors: {
73
+ bg: '#282c34',
74
+ card: '#21252b',
75
+ elevated: '#2c313a',
76
+ border: '#3e4451',
77
+ text: '#abb2bf',
78
+ muted: '#5c6370',
79
+ dim: '#4b5263',
80
+ blue: '#61afef',
81
+ purple: '#c678dd',
82
+ green: '#98c379',
83
+ cyan: '#56b6c2',
84
+ orange: '#d19a66',
85
+ red: '#e06c75',
86
+ pink: '#c678dd',
87
+ }
88
+ };
89
+ /**
90
+ * Available themes
91
+ */
92
+ export const THEMES = {
93
+ 'github-dark': githubDark,
94
+ 'dracula': dracula,
95
+ 'nord': nord,
96
+ 'one-dark': oneDark,
97
+ };
98
+ /**
99
+ * Get theme by name, defaults to github-dark
100
+ */
101
+ export function getTheme(name) {
102
+ if (!name)
103
+ return githubDark;
104
+ return THEMES[name] || githubDark;
105
+ }
106
+ //# sourceMappingURL=themes.js.map
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Available scene types for SVG generation
3
+ */
4
+ export type SceneType = 'architecture' | 'scaling' | 'database' | 'deployment' | 'security' | 'debugging' | 'testing' | 'performance' | 'api' | 'monitoring' | 'frontend' | 'success' | 'error' | 'default';
5
+ /**
6
+ * Options for SVG generation
7
+ */
8
+ export interface GenerateOptions {
9
+ /** Width of the SVG (default: 700) */
10
+ width?: number;
11
+ /** Height of the SVG (default: 420) */
12
+ height?: number;
13
+ /** Theme name or custom theme colors */
14
+ theme?: string;
15
+ /** Force a specific scene type instead of auto-detection */
16
+ scene?: SceneType;
17
+ }
18
+ /**
19
+ * Result of SVG generation
20
+ */
21
+ export interface GenerateResult {
22
+ /** The generated SVG string */
23
+ svg: string;
24
+ /** The detected or specified scene type */
25
+ scene: SceneType;
26
+ /** Width of the generated SVG */
27
+ width: number;
28
+ /** Height of the generated SVG */
29
+ height: number;
30
+ }
31
+ /**
32
+ * Code line for code snippet component
33
+ */
34
+ export interface CodeLine {
35
+ /** The text content of the line */
36
+ t: string;
37
+ /** Whether to highlight this line */
38
+ hl?: boolean;
39
+ }
40
+ /**
41
+ * Terminal line for terminal block component
42
+ */
43
+ export interface TerminalLine {
44
+ /** The text content of the line */
45
+ t: string;
46
+ /** Whether this is an error line */
47
+ err?: boolean;
48
+ /** Whether this is a success line */
49
+ ok?: boolean;
50
+ }
51
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,SAAS,GACT,UAAU,GACV,YAAY,GACZ,UAAU,GACV,WAAW,GACX,SAAS,GACT,aAAa,GACb,KAAK,GACL,YAAY,GACZ,UAAU,GACV,SAAS,GACT,OAAO,GACP,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,2CAA2C;IAC3C,KAAK,EAAE,SAAS,CAAC;IACjB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,mCAAmC;IACnC,CAAC,EAAE,MAAM,CAAC;IACV,qCAAqC;IACrC,EAAE,CAAC,EAAE,OAAO,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,CAAC,EAAE,MAAM,CAAC;IACV,oCAAoC;IACpC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,qCAAqC;IACrC,EAAE,CAAC,EAAE,OAAO,CAAC;CACd"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
package/package.json ADDED
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@svg-gen/tech-svg-generator",
3
+ "version": "1.0.0",
4
+ "description": "Generate clean, professional SVG illustrations for technical content. Perfect for blogs, documentation, and presentations.",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist/**/*.js",
17
+ "dist/**/*.d.ts",
18
+ "dist/**/*.d.ts.map",
19
+ "!dist/**/*.test.*",
20
+ "README.md",
21
+ "LICENSE"
22
+ ],
23
+ "scripts": {
24
+ "build": "tsc",
25
+ "dev": "tsc --watch",
26
+ "test": "node --test dist/*.test.js",
27
+ "prepublishOnly": "pnpm run build",
28
+ "demo": "node examples/demo.js"
29
+ },
30
+ "keywords": [
31
+ "svg",
32
+ "illustration",
33
+ "technical",
34
+ "blog",
35
+ "documentation",
36
+ "diagram",
37
+ "generator",
38
+ "dark-theme",
39
+ "github-style"
40
+ ],
41
+ "author": "Satishkumar Dhule",
42
+ "license": "MIT",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "https://github.com/open-tech-svg-gen/tech-svg-generator"
46
+ },
47
+ "bugs": {
48
+ "url": "https://github.com/open-tech-svg-gen/tech-svg-generator/issues"
49
+ },
50
+ "homepage": "https://github.com/open-tech-svg-gen/tech-svg-generator#readme",
51
+ "engines": {
52
+ "node": ">=18.0.0"
53
+ },
54
+ "devDependencies": {
55
+ "@semantic-release/changelog": "^6.0.3",
56
+ "@semantic-release/git": "^10.0.1",
57
+ "@types/js-yaml": "^4.0.9",
58
+ "@types/node": "^22.0.0",
59
+ "semantic-release": "^24.0.0",
60
+ "typescript": "^5.3.0"
61
+ },
62
+ "dependencies": {
63
+ "js-yaml": "^4.1.1"
64
+ }
65
+ }