@spwig/theme-cli 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.
Files changed (51) hide show
  1. package/README.md +278 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +99 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/component.d.ts +13 -0
  7. package/dist/commands/component.d.ts.map +1 -0
  8. package/dist/commands/component.js +229 -0
  9. package/dist/commands/component.js.map +1 -0
  10. package/dist/commands/init.d.ts +13 -0
  11. package/dist/commands/init.d.ts.map +1 -0
  12. package/dist/commands/init.js +249 -0
  13. package/dist/commands/init.js.map +1 -0
  14. package/dist/commands/package.d.ts +12 -0
  15. package/dist/commands/package.d.ts.map +1 -0
  16. package/dist/commands/package.js +320 -0
  17. package/dist/commands/package.js.map +1 -0
  18. package/dist/commands/validate.d.ts +10 -0
  19. package/dist/commands/validate.d.ts.map +1 -0
  20. package/dist/commands/validate.js +204 -0
  21. package/dist/commands/validate.js.map +1 -0
  22. package/dist/index.d.ts +13 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +9 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/schemas/component_manifest_schema.json +221 -0
  27. package/dist/schemas/theme_manifest_schema.json +267 -0
  28. package/dist/templates/components/blank.template.html.template +4 -0
  29. package/dist/templates/components/footer.manifest.json.template +11 -0
  30. package/dist/templates/components/footer.template.html.template +36 -0
  31. package/dist/templates/components/header.manifest.json.template +11 -0
  32. package/dist/templates/components/header.schema.json.template +23 -0
  33. package/dist/templates/components/header.template.html.template +39 -0
  34. package/dist/templates/components/schema.json.template +15 -0
  35. package/dist/templates/components/section.manifest.json.template +11 -0
  36. package/dist/templates/components/section.template.html.template +13 -0
  37. package/dist/templates/components/utility.manifest.json.template +11 -0
  38. package/dist/templates/theme/README.md.template +64 -0
  39. package/dist/templates/theme/design_tokens.json.template +66 -0
  40. package/dist/templates/theme/manifest.json.template +40 -0
  41. package/dist/utils/file-system.d.ts +49 -0
  42. package/dist/utils/file-system.d.ts.map +1 -0
  43. package/dist/utils/file-system.js +115 -0
  44. package/dist/utils/file-system.js.map +1 -0
  45. package/dist/utils/validation.d.ts +40 -0
  46. package/dist/utils/validation.d.ts.map +1 -0
  47. package/dist/utils/validation.js +98 -0
  48. package/dist/utils/validation.js.map +1 -0
  49. package/package.json +62 -0
  50. package/schemas/component_manifest_schema.json +221 -0
  51. package/schemas/theme_manifest_schema.json +267 -0
@@ -0,0 +1,267 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Theme Package Manifest Schema",
4
+ "description": "Schema for Spwig theme package manifests with bundled components",
5
+ "type": "object",
6
+ "required": [
7
+ "name",
8
+ "version",
9
+ "display_name",
10
+ "description",
11
+ "author"
12
+ ],
13
+ "properties": {
14
+ "name": {
15
+ "type": "string",
16
+ "pattern": "^[a-z][a-z0-9-]*$",
17
+ "minLength": 2,
18
+ "maxLength": 50,
19
+ "description": "Theme identifier (lowercase, alphanumeric with hyphens)"
20
+ },
21
+ "version": {
22
+ "type": "string",
23
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$",
24
+ "description": "Semantic version (e.g., 1.0.0)"
25
+ },
26
+ "display_name": {
27
+ "type": "string",
28
+ "minLength": 1,
29
+ "maxLength": 100,
30
+ "description": "Human-readable theme name"
31
+ },
32
+ "description": {
33
+ "type": "string",
34
+ "minLength": 10,
35
+ "maxLength": 1000,
36
+ "description": "Theme description for marketplace listing"
37
+ },
38
+ "author": {
39
+ "type": "string",
40
+ "minLength": 1,
41
+ "maxLength": 100,
42
+ "description": "Theme author/vendor name"
43
+ },
44
+ "license": {
45
+ "type": "string",
46
+ "enum": ["MIT", "Apache-2.0", "GPL-3.0", "Proprietary"],
47
+ "default": "Proprietary",
48
+ "description": "Theme license type"
49
+ },
50
+ "bundled_components": {
51
+ "type": "array",
52
+ "items": {
53
+ "type": "object",
54
+ "required": ["type", "name", "path"],
55
+ "properties": {
56
+ "type": {
57
+ "type": "string",
58
+ "enum": ["header", "footer", "section", "utility"],
59
+ "description": "Component type"
60
+ },
61
+ "name": {
62
+ "type": "string",
63
+ "pattern": "^[a-z][a-z0-9_-]*$",
64
+ "description": "Component name"
65
+ },
66
+ "path": {
67
+ "type": "string",
68
+ "pattern": "^components/",
69
+ "description": "Relative path to component directory"
70
+ }
71
+ }
72
+ },
73
+ "description": "List of components bundled with this theme"
74
+ },
75
+ "page_schemas": {
76
+ "type": "object",
77
+ "properties": {
78
+ "home": {
79
+ "type": "string",
80
+ "description": "Path to home page schema"
81
+ },
82
+ "product": {
83
+ "type": "string",
84
+ "description": "Path to product page schema"
85
+ },
86
+ "collection": {
87
+ "type": "string",
88
+ "description": "Path to collection page schema"
89
+ },
90
+ "cart": {
91
+ "type": "string",
92
+ "description": "Path to cart page schema"
93
+ },
94
+ "checkout": {
95
+ "type": "string",
96
+ "description": "Path to checkout page schema"
97
+ },
98
+ "landing": {
99
+ "type": "string",
100
+ "description": "Path to landing page schema"
101
+ }
102
+ },
103
+ "additionalProperties": {
104
+ "type": "string"
105
+ },
106
+ "description": "Page schema file paths"
107
+ },
108
+ "design_tokens": {
109
+ "type": "string",
110
+ "description": "Path to design tokens file (colors, fonts, spacing)"
111
+ },
112
+ "preview_image": {
113
+ "type": "string",
114
+ "pattern": "^.+\\.(png|jpg|jpeg|webp)$",
115
+ "description": "Theme preview image filename (recommended: 600x800px, max 5MB)"
116
+ },
117
+ "screenshots": {
118
+ "type": "array",
119
+ "items": {
120
+ "type": "string",
121
+ "pattern": "^.+\\.(png|jpg|jpeg|webp)$"
122
+ },
123
+ "maxItems": 10,
124
+ "description": "Screenshot filenames for theme showcase (recommended: 1200x800px, max 5MB each)"
125
+ },
126
+ "demo_url": {
127
+ "type": "string",
128
+ "format": "uri",
129
+ "description": "URL to live demo of theme"
130
+ },
131
+ "documentation_url": {
132
+ "type": "string",
133
+ "format": "uri",
134
+ "description": "URL to theme documentation"
135
+ },
136
+ "support_url": {
137
+ "type": "string",
138
+ "format": "uri",
139
+ "description": "URL for theme support"
140
+ },
141
+ "tags": {
142
+ "type": "array",
143
+ "maxItems": 10,
144
+ "items": {
145
+ "type": "string",
146
+ "pattern": "^[a-z][a-z0-9-]*$",
147
+ "maxLength": 30
148
+ },
149
+ "description": "Searchable tags for theme marketplace"
150
+ },
151
+ "categories": {
152
+ "type": "array",
153
+ "items": {
154
+ "type": "string",
155
+ "enum": [
156
+ "fashion",
157
+ "electronics",
158
+ "home-garden",
159
+ "sports",
160
+ "beauty",
161
+ "food-beverage",
162
+ "books",
163
+ "toys",
164
+ "jewelry",
165
+ "automotive",
166
+ "general"
167
+ ]
168
+ },
169
+ "description": "Theme categories for marketplace organization"
170
+ },
171
+ "color_schemes": {
172
+ "type": "array",
173
+ "items": {
174
+ "type": "object",
175
+ "required": ["name", "colors"],
176
+ "properties": {
177
+ "name": {
178
+ "type": "string",
179
+ "description": "Color scheme name (e.g., 'Light', 'Dark')"
180
+ },
181
+ "colors": {
182
+ "type": "object",
183
+ "properties": {
184
+ "primary": {
185
+ "type": "string",
186
+ "pattern": "^#[0-9A-Fa-f]{6}$"
187
+ },
188
+ "secondary": {
189
+ "type": "string",
190
+ "pattern": "^#[0-9A-Fa-f]{6}$"
191
+ },
192
+ "accent": {
193
+ "type": "string",
194
+ "pattern": "^#[0-9A-Fa-f]{6}$"
195
+ },
196
+ "background": {
197
+ "type": "string",
198
+ "pattern": "^#[0-9A-Fa-f]{6}$"
199
+ },
200
+ "text": {
201
+ "type": "string",
202
+ "pattern": "^#[0-9A-Fa-f]{6}$"
203
+ }
204
+ }
205
+ }
206
+ }
207
+ },
208
+ "description": "Pre-defined color schemes for theme"
209
+ },
210
+ "features": {
211
+ "type": "array",
212
+ "items": {
213
+ "type": "string"
214
+ },
215
+ "description": "List of theme features for marketing"
216
+ },
217
+ "min_platform_version": {
218
+ "type": "string",
219
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$",
220
+ "description": "Minimum platform version required"
221
+ },
222
+ "max_platform_version": {
223
+ "type": "string",
224
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$",
225
+ "description": "Maximum platform version supported"
226
+ },
227
+ "changelog": {
228
+ "type": "array",
229
+ "items": {
230
+ "type": "object",
231
+ "required": ["version", "date", "changes"],
232
+ "properties": {
233
+ "version": {
234
+ "type": "string",
235
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"
236
+ },
237
+ "date": {
238
+ "type": "string",
239
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
240
+ },
241
+ "changes": {
242
+ "type": "array",
243
+ "minItems": 1,
244
+ "items": {
245
+ "type": "string"
246
+ }
247
+ }
248
+ }
249
+ },
250
+ "description": "Version history and changes"
251
+ },
252
+ "total_size_bytes": {
253
+ "type": "integer",
254
+ "description": "Total package size in bytes (added during packaging)"
255
+ },
256
+ "file_count": {
257
+ "type": "integer",
258
+ "description": "Total number of files (added during packaging)"
259
+ },
260
+ "checksum": {
261
+ "type": "string",
262
+ "pattern": "^sha256:[a-f0-9]{64}$",
263
+ "description": "SHA256 checksum of package contents (added during packaging)"
264
+ }
265
+ },
266
+ "additionalProperties": false
267
+ }
@@ -0,0 +1,4 @@
1
+ <!-- {{displayName}} -->
2
+ <div class="{{componentName}}">
3
+ <!-- Add your HTML here -->
4
+ </div>
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "{{componentName}}",
3
+ "version": "1.0.0",
4
+ "display_name": "{{displayName}}",
5
+ "description": "{{description}}",
6
+ "author": "{{author}}",
7
+ "tier_compatibility": ["A", "B", "C"],
8
+ "regions": ["footer"],
9
+ "category": "footer",
10
+ "tags": ["footer", "navigation"]
11
+ }
@@ -0,0 +1,36 @@
1
+ <footer class="site-footer">
2
+ <div class="container">
3
+ <div class="footer-content">
4
+ <!-- Footer Links -->
5
+ <div class="footer-section">
6
+ <h3>Quick Links</h3>
7
+ <nav class="footer-nav">
8
+ {% for item in navigation.footer_menu %}
9
+ <a href="{{ item.url }}">{{ item.title }}</a>
10
+ {% endfor %}
11
+ </nav>
12
+ </div>
13
+
14
+ <!-- Contact Info -->
15
+ <div class="footer-section">
16
+ <h3>Contact</h3>
17
+ <div class="contact-info">
18
+ {% if store.email %}
19
+ <p>Email: {{ store.email }}</p>
20
+ {% endif %}
21
+ {% if store.phone %}
22
+ <p>Phone: {{ store.phone }}</p>
23
+ {% endif %}
24
+ </div>
25
+ </div>
26
+
27
+ <!-- Copyright -->
28
+ <div class="footer-bottom">
29
+ <p>&copy; {{ "now" | date: "%Y" }} {{ store.name }}. All rights reserved.</p>
30
+ {% if settings.show_powered_by %}
31
+ <p>Powered by Spwig</p>
32
+ {% endif %}
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </footer>
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "{{componentName}}",
3
+ "version": "1.0.0",
4
+ "display_name": "{{displayName}}",
5
+ "description": "{{description}}",
6
+ "author": "{{author}}",
7
+ "tier_compatibility": ["A", "B", "C"],
8
+ "regions": ["header"],
9
+ "category": "header",
10
+ "tags": ["navigation", "header"]
11
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "settings": [
3
+ {
4
+ "id": "background_color",
5
+ "type": "color",
6
+ "label": "Background Color",
7
+ "default": "#ffffff"
8
+ },
9
+ {
10
+ "id": "show_logo",
11
+ "type": "checkbox",
12
+ "label": "Show Logo",
13
+ "default": true
14
+ },
15
+ {
16
+ "id": "sticky",
17
+ "type": "checkbox",
18
+ "label": "Sticky Header",
19
+ "info": "Header stays at top when scrolling",
20
+ "default": false
21
+ }
22
+ ]
23
+ }
@@ -0,0 +1,39 @@
1
+ <header class="site-header" style="background-color: {{ settings.background_color }};">
2
+ <div class="container">
3
+ <div class="header-content">
4
+ <!-- Logo -->
5
+ <div class="header-logo">
6
+ {% if settings.show_logo and store.logo %}
7
+ <a href="/">
8
+ <img src="{{ store.logo }}" alt="{{ store.name }}" class="logo-image">
9
+ </a>
10
+ {% else %}
11
+ <a href="/" class="logo-text">
12
+ {{ store.name }}
13
+ </a>
14
+ {% endif %}
15
+ </div>
16
+
17
+ <!-- Navigation -->
18
+ <nav class="main-navigation">
19
+ {% for item in navigation.main_menu %}
20
+ <a href="{{ item.url }}" class="nav-link">
21
+ {{ item.title }}
22
+ </a>
23
+ {% endfor %}
24
+ </nav>
25
+
26
+ <!-- Cart Icon -->
27
+ <div class="header-actions">
28
+ <a href="/cart" class="cart-link">
29
+ <svg class="cart-icon" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor">
30
+ <path d="M9 2L9 4M15 2L15 4M3 8h18M5 8h14a2 2 0 012 2v10a2 2 0 01-2 2H5a2 2 0 01-2-2V10a2 2 0 012-2z" stroke-width="2" stroke-linecap="round"/>
31
+ </svg>
32
+ {% if cart.item_count > 0 %}
33
+ <span class="cart-count">{{ cart.item_count }}</span>
34
+ {% endif %}
35
+ </a>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ </header>
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "title": "Component Settings",
5
+ "description": "Configuration options for this component",
6
+ "properties": {
7
+ "example_setting": {
8
+ "type": "string",
9
+ "title": "Example Setting",
10
+ "description": "This is an example setting - replace with your own",
11
+ "default": "default value"
12
+ }
13
+ },
14
+ "required": []
15
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "{{componentName}}",
3
+ "version": "1.0.0",
4
+ "display_name": "{{displayName}}",
5
+ "description": "{{description}}",
6
+ "author": "{{author}}",
7
+ "tier_compatibility": ["A", "B", "C"],
8
+ "regions": ["main", "sidebar"],
9
+ "category": "section",
10
+ "tags": ["section", "content"]
11
+ }
@@ -0,0 +1,13 @@
1
+ <section class="hero-section" style="background-color: {{ settings.background_color }};">
2
+ <div class="container">
3
+ <div class="hero-content">
4
+ <h1 class="hero-title">{{ settings.title }}</h1>
5
+ <p class="hero-description">{{ settings.description }}</p>
6
+ {% if settings.show_button %}
7
+ <a href="{{ settings.button_url }}" class="hero-button">
8
+ {{ settings.button_text }}
9
+ </a>
10
+ {% endif %}
11
+ </div>
12
+ </div>
13
+ </section>
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "{{componentName}}",
3
+ "version": "1.0.0",
4
+ "display_name": "{{displayName}}",
5
+ "description": "{{description}}",
6
+ "author": "{{author}}",
7
+ "tier_compatibility": ["A", "B", "C"],
8
+ "regions": ["header", "footer", "sidebar"],
9
+ "category": "utility",
10
+ "tags": ["utility"]
11
+ }
@@ -0,0 +1,64 @@
1
+ # {{displayName}}
2
+
3
+ {{description}}
4
+
5
+ ## Theme Information
6
+
7
+ - **Author**: {{author}}
8
+ - **Version**: 1.0.0
9
+ - **License**: {{license}}
10
+
11
+ ## Features
12
+
13
+ - Responsive design optimized for all devices
14
+ - Modern and clean aesthetics
15
+ - Customizable color schemes via design tokens
16
+ - Performance optimized
17
+ - Accessible and SEO-friendly
18
+
19
+ ## Development
20
+
21
+ ```bash
22
+ # Start development server
23
+ spwig dev
24
+
25
+ # Validate theme
26
+ spwig validate
27
+
28
+ # Package for distribution
29
+ spwig package
30
+ ```
31
+
32
+ ## Bundled Components
33
+
34
+ This theme includes the following components:
35
+
36
+ - **Default Header** - Site header with navigation
37
+ - **Default Footer** - Site footer with links
38
+ - **Hero Section** - Eye-catching hero banner
39
+
40
+ ## Customization
41
+
42
+ ### Design Tokens
43
+
44
+ Edit `design_tokens.json` to customize colors, typography, spacing, and more.
45
+
46
+ ### Components
47
+
48
+ Components are located in the `components/` directory. Each component has:
49
+ - `manifest.json` - Component configuration
50
+ - `template.html` - Component template
51
+ - `schema.json` - Component settings schema
52
+ - `styles.css` - Component styles (optional)
53
+
54
+ ### Pages
55
+
56
+ Page schemas are in the `pages/` directory. Configure which components appear on each page type.
57
+
58
+ ## Support
59
+
60
+ For questions or support, please contact {{author}}.
61
+
62
+ ## License
63
+
64
+ This theme is licensed under the {{license}} license.
@@ -0,0 +1,66 @@
1
+ {
2
+ "colors": {
3
+ "primary": "#2563eb",
4
+ "secondary": "#64748b",
5
+ "accent": "#f59e0b",
6
+ "background": "#ffffff",
7
+ "text": "#1e293b",
8
+ "success": "#10b981",
9
+ "warning": "#f59e0b",
10
+ "error": "#ef4444",
11
+ "border": "#e2e8f0"
12
+ },
13
+ "typography": {
14
+ "heading_font": "Inter, system-ui, sans-serif",
15
+ "body_font": "Inter, system-ui, sans-serif",
16
+ "mono_font": "Consolas, Monaco, monospace",
17
+ "base_size": "16px",
18
+ "scale": 1.25,
19
+ "weights": {
20
+ "light": 300,
21
+ "normal": 400,
22
+ "medium": 500,
23
+ "semibold": 600,
24
+ "bold": 700
25
+ }
26
+ },
27
+ "spacing": {
28
+ "unit": "0.25rem",
29
+ "scale": [0, 1, 2, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128]
30
+ },
31
+ "breakpoints": {
32
+ "mobile": "640px",
33
+ "tablet": "768px",
34
+ "desktop": "1024px",
35
+ "wide": "1280px"
36
+ },
37
+ "borders": {
38
+ "radius": {
39
+ "none": "0",
40
+ "sm": "0.125rem",
41
+ "default": "0.25rem",
42
+ "md": "0.375rem",
43
+ "lg": "0.5rem",
44
+ "xl": "0.75rem",
45
+ "full": "9999px"
46
+ },
47
+ "width": {
48
+ "default": "1px",
49
+ "thick": "2px",
50
+ "thicker": "4px"
51
+ }
52
+ },
53
+ "shadows": {
54
+ "sm": "0 1px 2px 0 rgba(0, 0, 0, 0.05)",
55
+ "default": "0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)",
56
+ "md": "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",
57
+ "lg": "0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",
58
+ "xl": "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)"
59
+ },
60
+ "transitions": {
61
+ "fast": "150ms",
62
+ "default": "300ms",
63
+ "slow": "500ms",
64
+ "easing": "cubic-bezier(0.4, 0, 0.2, 1)"
65
+ }
66
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "{{themeName}}",
3
+ "version": "1.0.0",
4
+ "display_name": "{{displayName}}",
5
+ "description": "{{description}}",
6
+ "author": "{{author}}",
7
+ "license": "{{license}}",
8
+ "bundled_components": [
9
+ {
10
+ "type": "header",
11
+ "name": "default_header",
12
+ "path": "components/headers/default_header"
13
+ },
14
+ {
15
+ "type": "footer",
16
+ "name": "default_footer",
17
+ "path": "components/footers/default_footer"
18
+ },
19
+ {
20
+ "type": "section",
21
+ "name": "hero_section",
22
+ "path": "components/sections/hero_section"
23
+ }
24
+ ],
25
+ "page_schemas": {
26
+ "home": "pages/home.json",
27
+ "product": "pages/product.json",
28
+ "collection": "pages/collection.json",
29
+ "cart": "pages/cart.json"
30
+ },
31
+ "design_tokens": "design_tokens.json",
32
+ "tags": ["ecommerce", "modern"],
33
+ "categories": ["general"],
34
+ "features": [
35
+ "Responsive design",
36
+ "Modern aesthetics",
37
+ "Customizable color schemes",
38
+ "Performance optimized"
39
+ ]
40
+ }
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Check if a directory exists
3
+ */
4
+ export declare function directoryExists(dirPath: string): Promise<boolean>;
5
+ /**
6
+ * Check if a file exists
7
+ */
8
+ export declare function fileExists(filePath: string): Promise<boolean>;
9
+ /**
10
+ * Ensure directory exists, create if it doesn't
11
+ */
12
+ export declare function ensureDirectory(dirPath: string): Promise<void>;
13
+ /**
14
+ * Read JSON file
15
+ */
16
+ export declare function readJSON<T = any>(filePath: string): Promise<T>;
17
+ /**
18
+ * Write JSON file with formatting
19
+ */
20
+ export declare function writeJSON(filePath: string, data: any): Promise<void>;
21
+ /**
22
+ * Copy file
23
+ */
24
+ export declare function copyFile(source: string, destination: string): Promise<void>;
25
+ /**
26
+ * Copy directory recursively
27
+ */
28
+ export declare function copyDirectory(source: string, destination: string): Promise<void>;
29
+ /**
30
+ * Read template file and replace placeholders
31
+ */
32
+ export declare function readTemplate(templatePath: string, variables: Record<string, string>): Promise<string>;
33
+ /**
34
+ * Write file from template
35
+ */
36
+ export declare function writeFromTemplate(templatePath: string, outputPath: string, variables: Record<string, string>): Promise<void>;
37
+ /**
38
+ * Get all files in directory recursively
39
+ */
40
+ export declare function getFilesRecursively(dirPath: string): Promise<string[]>;
41
+ /**
42
+ * Calculate file size
43
+ */
44
+ export declare function getFileSize(filePath: string): Promise<number>;
45
+ /**
46
+ * Calculate directory size
47
+ */
48
+ export declare function getDirectorySize(dirPath: string): Promise<number>;
49
+ //# sourceMappingURL=file-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOvE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAGpE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1E;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmB5E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASvE"}