@oaysus/cli 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.
Files changed (243) hide show
  1. package/README.md +166 -0
  2. package/bin/oaysus.js +6 -0
  3. package/dist/cli.d.ts +11 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +174 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/login.d.ts +2 -0
  8. package/dist/commands/login.d.ts.map +1 -0
  9. package/dist/commands/login.js +75 -0
  10. package/dist/commands/login.js.map +1 -0
  11. package/dist/commands/logout.d.ts +2 -0
  12. package/dist/commands/logout.d.ts.map +1 -0
  13. package/dist/commands/logout.js +23 -0
  14. package/dist/commands/logout.js.map +1 -0
  15. package/dist/commands/whoami.d.ts +2 -0
  16. package/dist/commands/whoami.d.ts.map +1 -0
  17. package/dist/commands/whoami.js +44 -0
  18. package/dist/commands/whoami.js.map +1 -0
  19. package/dist/components/App.d.ts +43 -0
  20. package/dist/components/App.d.ts.map +1 -0
  21. package/dist/components/App.js +63 -0
  22. package/dist/components/App.js.map +1 -0
  23. package/dist/components/BuildProgress.d.ts +16 -0
  24. package/dist/components/BuildProgress.d.ts.map +1 -0
  25. package/dist/components/BuildProgress.js +42 -0
  26. package/dist/components/BuildProgress.js.map +1 -0
  27. package/dist/components/ErrorMessage.d.ts +13 -0
  28. package/dist/components/ErrorMessage.d.ts.map +1 -0
  29. package/dist/components/ErrorMessage.js +29 -0
  30. package/dist/components/ErrorMessage.js.map +1 -0
  31. package/dist/components/FileList.d.ts +13 -0
  32. package/dist/components/FileList.d.ts.map +1 -0
  33. package/dist/components/FileList.js +25 -0
  34. package/dist/components/FileList.js.map +1 -0
  35. package/dist/components/Header.d.ts +12 -0
  36. package/dist/components/Header.d.ts.map +1 -0
  37. package/dist/components/Header.js +18 -0
  38. package/dist/components/Header.js.map +1 -0
  39. package/dist/components/LastCommand.d.ts +9 -0
  40. package/dist/components/LastCommand.d.ts.map +1 -0
  41. package/dist/components/LastCommand.js +39 -0
  42. package/dist/components/LastCommand.js.map +1 -0
  43. package/dist/components/Logo.d.ts +14 -0
  44. package/dist/components/Logo.d.ts.map +1 -0
  45. package/dist/components/Logo.js +44 -0
  46. package/dist/components/Logo.js.map +1 -0
  47. package/dist/components/ProgressBar.d.ts +13 -0
  48. package/dist/components/ProgressBar.d.ts.map +1 -0
  49. package/dist/components/ProgressBar.js +20 -0
  50. package/dist/components/ProgressBar.js.map +1 -0
  51. package/dist/components/SlashCommands.d.ts +17 -0
  52. package/dist/components/SlashCommands.d.ts.map +1 -0
  53. package/dist/components/SlashCommands.js +59 -0
  54. package/dist/components/SlashCommands.js.map +1 -0
  55. package/dist/components/Spinner.d.ts +13 -0
  56. package/dist/components/Spinner.d.ts.map +1 -0
  57. package/dist/components/Spinner.js +16 -0
  58. package/dist/components/Spinner.js.map +1 -0
  59. package/dist/components/StatusCard.d.ts +14 -0
  60. package/dist/components/StatusCard.d.ts.map +1 -0
  61. package/dist/components/StatusCard.js +40 -0
  62. package/dist/components/StatusCard.js.map +1 -0
  63. package/dist/components/SuccessMessage.d.ts +12 -0
  64. package/dist/components/SuccessMessage.d.ts.map +1 -0
  65. package/dist/components/SuccessMessage.js +18 -0
  66. package/dist/components/SuccessMessage.js.map +1 -0
  67. package/dist/components/UploadProgress.d.ts +13 -0
  68. package/dist/components/UploadProgress.d.ts.map +1 -0
  69. package/dist/components/UploadProgress.js +40 -0
  70. package/dist/components/UploadProgress.js.map +1 -0
  71. package/dist/components/ValidationProgress.d.ts +12 -0
  72. package/dist/components/ValidationProgress.d.ts.map +1 -0
  73. package/dist/components/ValidationProgress.js +44 -0
  74. package/dist/components/ValidationProgress.js.map +1 -0
  75. package/dist/index.d.ts +7 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +21 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/lib/core/framework-registry.d.ts +27 -0
  80. package/dist/lib/core/framework-registry.d.ts.map +1 -0
  81. package/dist/lib/core/framework-registry.js +67 -0
  82. package/dist/lib/core/framework-registry.js.map +1 -0
  83. package/dist/lib/core/types.d.ts +124 -0
  84. package/dist/lib/core/types.d.ts.map +1 -0
  85. package/dist/lib/core/types.js +6 -0
  86. package/dist/lib/core/types.js.map +1 -0
  87. package/dist/lib/project-generator.d.ts +15 -0
  88. package/dist/lib/project-generator.d.ts.map +1 -0
  89. package/dist/lib/project-generator.js +286 -0
  90. package/dist/lib/project-generator.js.map +1 -0
  91. package/dist/lib/push.d.ts +20 -0
  92. package/dist/lib/push.d.ts.map +1 -0
  93. package/dist/lib/push.js +222 -0
  94. package/dist/lib/push.js.map +1 -0
  95. package/dist/lib/react/builder.d.ts +45 -0
  96. package/dist/lib/react/builder.d.ts.map +1 -0
  97. package/dist/lib/react/builder.js +381 -0
  98. package/dist/lib/react/builder.js.map +1 -0
  99. package/dist/lib/react/bundler.d.ts +104 -0
  100. package/dist/lib/react/bundler.d.ts.map +1 -0
  101. package/dist/lib/react/bundler.js +654 -0
  102. package/dist/lib/react/bundler.js.map +1 -0
  103. package/dist/lib/react/config.d.ts +34 -0
  104. package/dist/lib/react/config.d.ts.map +1 -0
  105. package/dist/lib/react/config.js +64 -0
  106. package/dist/lib/react/config.js.map +1 -0
  107. package/dist/lib/react/import-map.d.ts +54 -0
  108. package/dist/lib/react/import-map.d.ts.map +1 -0
  109. package/dist/lib/react/import-map.js +187 -0
  110. package/dist/lib/react/import-map.js.map +1 -0
  111. package/dist/lib/shared/auth-middleware.d.ts +29 -0
  112. package/dist/lib/shared/auth-middleware.d.ts.map +1 -0
  113. package/dist/lib/shared/auth-middleware.js +48 -0
  114. package/dist/lib/shared/auth-middleware.js.map +1 -0
  115. package/dist/lib/shared/auth.d.ts +50 -0
  116. package/dist/lib/shared/auth.d.ts.map +1 -0
  117. package/dist/lib/shared/auth.js +243 -0
  118. package/dist/lib/shared/auth.js.map +1 -0
  119. package/dist/lib/shared/cdn-downloader.d.ts +30 -0
  120. package/dist/lib/shared/cdn-downloader.d.ts.map +1 -0
  121. package/dist/lib/shared/cdn-downloader.js +126 -0
  122. package/dist/lib/shared/cdn-downloader.js.map +1 -0
  123. package/dist/lib/shared/command-history.d.ts +29 -0
  124. package/dist/lib/shared/command-history.d.ts.map +1 -0
  125. package/dist/lib/shared/command-history.js +73 -0
  126. package/dist/lib/shared/command-history.js.map +1 -0
  127. package/dist/lib/shared/commands.d.ts +24 -0
  128. package/dist/lib/shared/commands.d.ts.map +1 -0
  129. package/dist/lib/shared/commands.js +63 -0
  130. package/dist/lib/shared/commands.js.map +1 -0
  131. package/dist/lib/shared/config.d.ts +40 -0
  132. package/dist/lib/shared/config.d.ts.map +1 -0
  133. package/dist/lib/shared/config.js +69 -0
  134. package/dist/lib/shared/config.js.map +1 -0
  135. package/dist/lib/shared/file-utils.d.ts +45 -0
  136. package/dist/lib/shared/file-utils.d.ts.map +1 -0
  137. package/dist/lib/shared/file-utils.js +88 -0
  138. package/dist/lib/shared/file-utils.js.map +1 -0
  139. package/dist/lib/shared/import-analyzer.d.ts +49 -0
  140. package/dist/lib/shared/import-analyzer.d.ts.map +1 -0
  141. package/dist/lib/shared/import-analyzer.js +268 -0
  142. package/dist/lib/shared/import-analyzer.js.map +1 -0
  143. package/dist/lib/shared/path-builder.d.ts +55 -0
  144. package/dist/lib/shared/path-builder.d.ts.map +1 -0
  145. package/dist/lib/shared/path-builder.js +66 -0
  146. package/dist/lib/shared/path-builder.js.map +1 -0
  147. package/dist/lib/shared/uploader.d.ts +79 -0
  148. package/dist/lib/shared/uploader.d.ts.map +1 -0
  149. package/dist/lib/shared/uploader.js +340 -0
  150. package/dist/lib/shared/uploader.js.map +1 -0
  151. package/dist/lib/shared/zip-creator.d.ts +18 -0
  152. package/dist/lib/shared/zip-creator.d.ts.map +1 -0
  153. package/dist/lib/shared/zip-creator.js +131 -0
  154. package/dist/lib/shared/zip-creator.js.map +1 -0
  155. package/dist/lib/svelte/builder.d.ts +37 -0
  156. package/dist/lib/svelte/builder.d.ts.map +1 -0
  157. package/dist/lib/svelte/builder.js +364 -0
  158. package/dist/lib/svelte/builder.js.map +1 -0
  159. package/dist/lib/svelte/bundler.d.ts +92 -0
  160. package/dist/lib/svelte/bundler.d.ts.map +1 -0
  161. package/dist/lib/svelte/bundler.js +499 -0
  162. package/dist/lib/svelte/bundler.js.map +1 -0
  163. package/dist/lib/svelte/config.d.ts +22 -0
  164. package/dist/lib/svelte/config.d.ts.map +1 -0
  165. package/dist/lib/svelte/config.js +65 -0
  166. package/dist/lib/svelte/config.js.map +1 -0
  167. package/dist/lib/svelte/import-map.d.ts +42 -0
  168. package/dist/lib/svelte/import-map.d.ts.map +1 -0
  169. package/dist/lib/svelte/import-map.js +197 -0
  170. package/dist/lib/svelte/import-map.js.map +1 -0
  171. package/dist/lib/template-manager.d.ts +33 -0
  172. package/dist/lib/template-manager.d.ts.map +1 -0
  173. package/dist/lib/template-manager.js +69 -0
  174. package/dist/lib/template-manager.js.map +1 -0
  175. package/dist/lib/validator.d.ts +10 -0
  176. package/dist/lib/validator.d.ts.map +1 -0
  177. package/dist/lib/validator.js +343 -0
  178. package/dist/lib/validator.js.map +1 -0
  179. package/dist/lib/vue/builder.d.ts +37 -0
  180. package/dist/lib/vue/builder.d.ts.map +1 -0
  181. package/dist/lib/vue/builder.js +366 -0
  182. package/dist/lib/vue/builder.js.map +1 -0
  183. package/dist/lib/vue/bundler.d.ts +78 -0
  184. package/dist/lib/vue/bundler.d.ts.map +1 -0
  185. package/dist/lib/vue/bundler.js +208 -0
  186. package/dist/lib/vue/bundler.js.map +1 -0
  187. package/dist/lib/vue/config.d.ts +18 -0
  188. package/dist/lib/vue/config.d.ts.map +1 -0
  189. package/dist/lib/vue/config.js +42 -0
  190. package/dist/lib/vue/config.js.map +1 -0
  191. package/dist/lib/vue/import-map.d.ts +42 -0
  192. package/dist/lib/vue/import-map.d.ts.map +1 -0
  193. package/dist/lib/vue/import-map.js +156 -0
  194. package/dist/lib/vue/import-map.js.map +1 -0
  195. package/dist/screens/BuildScreen.d.ts +8 -0
  196. package/dist/screens/BuildScreen.d.ts.map +1 -0
  197. package/dist/screens/BuildScreen.js +158 -0
  198. package/dist/screens/BuildScreen.js.map +1 -0
  199. package/dist/screens/CreateScreen.d.ts +12 -0
  200. package/dist/screens/CreateScreen.d.ts.map +1 -0
  201. package/dist/screens/CreateScreen.js +305 -0
  202. package/dist/screens/CreateScreen.js.map +1 -0
  203. package/dist/screens/InitScreen.d.ts +11 -0
  204. package/dist/screens/InitScreen.d.ts.map +1 -0
  205. package/dist/screens/InitScreen.js +339 -0
  206. package/dist/screens/InitScreen.js.map +1 -0
  207. package/dist/screens/LoginScreen.d.ts +15 -0
  208. package/dist/screens/LoginScreen.d.ts.map +1 -0
  209. package/dist/screens/LoginScreen.js +427 -0
  210. package/dist/screens/LoginScreen.js.map +1 -0
  211. package/dist/screens/LogoutScreen.d.ts +15 -0
  212. package/dist/screens/LogoutScreen.d.ts.map +1 -0
  213. package/dist/screens/LogoutScreen.js +187 -0
  214. package/dist/screens/LogoutScreen.js.map +1 -0
  215. package/dist/screens/PushScreen.d.ts +12 -0
  216. package/dist/screens/PushScreen.d.ts.map +1 -0
  217. package/dist/screens/PushScreen.js +546 -0
  218. package/dist/screens/PushScreen.js.map +1 -0
  219. package/dist/screens/ValidateScreen.d.ts +12 -0
  220. package/dist/screens/ValidateScreen.d.ts.map +1 -0
  221. package/dist/screens/ValidateScreen.js +193 -0
  222. package/dist/screens/ValidateScreen.js.map +1 -0
  223. package/dist/screens/WelcomeScreen.d.ts +39 -0
  224. package/dist/screens/WelcomeScreen.d.ts.map +1 -0
  225. package/dist/screens/WelcomeScreen.js +297 -0
  226. package/dist/screens/WelcomeScreen.js.map +1 -0
  227. package/dist/screens/WhoamiScreen.d.ts +14 -0
  228. package/dist/screens/WhoamiScreen.d.ts.map +1 -0
  229. package/dist/screens/WhoamiScreen.js +180 -0
  230. package/dist/screens/WhoamiScreen.js.map +1 -0
  231. package/dist/types/index.d.ts +40 -0
  232. package/dist/types/index.d.ts.map +1 -0
  233. package/dist/types/index.js +2 -0
  234. package/dist/types/index.js.map +1 -0
  235. package/dist/types/templates.d.ts +55 -0
  236. package/dist/types/templates.d.ts.map +1 -0
  237. package/dist/types/templates.js +6 -0
  238. package/dist/types/templates.js.map +1 -0
  239. package/dist/types/validation.d.ts +108 -0
  240. package/dist/types/validation.d.ts.map +1 -0
  241. package/dist/types/validation.js +6 -0
  242. package/dist/types/validation.js.map +1 -0
  243. package/package.json +94 -0
@@ -0,0 +1,243 @@
1
+ import axios from 'axios';
2
+ import fs from 'fs/promises';
3
+ import path from 'path';
4
+ import os from 'os';
5
+ import crypto from 'crypto';
6
+ import { SSO_BASE_URL, ADMIN_URL, CREDENTIALS_PATH, debug as log, debugError as logError } from './config.js';
7
+ /**
8
+ * Request magic link for email authentication with device code
9
+ */
10
+ export async function requestMagicLink(email, deviceCode) {
11
+ const url = `${SSO_BASE_URL}/sso/customer/auth/magic-link`;
12
+ const redirectUrl = `${ADMIN_URL}/device?code=${deviceCode}`;
13
+ log('[DEBUG] Requesting magic link');
14
+ log('[DEBUG] API URL:', url);
15
+ log('[DEBUG] Email:', email);
16
+ log('[DEBUG] Redirect URL:', redirectUrl);
17
+ try {
18
+ const response = await axios.post(url, {
19
+ email,
20
+ redirectUrl
21
+ });
22
+ log('[DEBUG] Magic link response:', response.data);
23
+ // Magic link is sent via email (not returned in response for security)
24
+ if (response.data.success) {
25
+ return;
26
+ }
27
+ throw new Error(response.data.message || 'Failed to send magic link');
28
+ }
29
+ catch (error) {
30
+ if (axios.isAxiosError(error)) {
31
+ logError('[ERROR] Magic link request failed');
32
+ logError('[ERROR] Status:', error.response?.status);
33
+ logError('[ERROR] Response:', error.response?.data);
34
+ throw new Error(error.response?.data?.message || 'Failed to send magic link');
35
+ }
36
+ throw error;
37
+ }
38
+ }
39
+ /**
40
+ * Generate random device code for polling
41
+ */
42
+ export function generateDeviceCode() {
43
+ return crypto.randomBytes(16).toString('hex');
44
+ }
45
+ /**
46
+ * Generate human-readable user code (ABCD-1234 format)
47
+ */
48
+ export function generateUserCode() {
49
+ const chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; // Exclude confusing chars
50
+ const part1 = Array.from({ length: 4 }, () => chars[Math.floor(Math.random() * chars.length)]).join('');
51
+ const part2 = Array.from({ length: 4 }, () => chars[Math.floor(Math.random() * chars.length)]).join('');
52
+ return `${part1}-${part2}`;
53
+ }
54
+ /**
55
+ * Initialize device authorization request
56
+ */
57
+ export async function initializeDevice() {
58
+ const deviceCode = generateDeviceCode();
59
+ const userCode = generateUserCode();
60
+ const url = `${SSO_BASE_URL}/sso/cli/device/init`;
61
+ log('[DEBUG] Initializing device authorization');
62
+ log('[DEBUG] API URL:', url);
63
+ log('[DEBUG] Device Code:', deviceCode);
64
+ log('[DEBUG] User Code:', userCode);
65
+ try {
66
+ const response = await axios.post(url, {
67
+ deviceCode,
68
+ userCode,
69
+ clientInfo: {
70
+ version: '0.1.0',
71
+ os: os.platform(),
72
+ hostname: os.hostname()
73
+ }
74
+ });
75
+ log('[DEBUG] Response status:', response.status);
76
+ log('[DEBUG] Response data:', response.data);
77
+ return response.data;
78
+ }
79
+ catch (error) {
80
+ if (axios.isAxiosError(error)) {
81
+ logError('[ERROR] Request failed');
82
+ logError('[ERROR] URL:', url);
83
+ logError('[ERROR] Status:', error.response?.status);
84
+ logError('[ERROR] Response:', error.response?.data);
85
+ logError('[ERROR] Message:', error.message);
86
+ }
87
+ throw error;
88
+ }
89
+ }
90
+ /**
91
+ * Select website for device authorization
92
+ */
93
+ export async function selectWebsite(deviceCode, websiteId) {
94
+ const url = `${SSO_BASE_URL}/sso/cli/device/select-website`;
95
+ log('[DEBUG] Selecting website');
96
+ log('[DEBUG] API URL:', url);
97
+ log('[DEBUG] Device Code:', deviceCode);
98
+ log('[DEBUG] Website ID:', websiteId);
99
+ try {
100
+ const response = await axios.post(url, {
101
+ deviceCode,
102
+ websiteId
103
+ });
104
+ log('[DEBUG] Select website response:', response.data);
105
+ if (response.data.success) {
106
+ return;
107
+ }
108
+ throw new Error(response.data.message || 'Failed to select website');
109
+ }
110
+ catch (error) {
111
+ if (axios.isAxiosError(error)) {
112
+ logError('[ERROR] Select website failed');
113
+ logError('[ERROR] Status:', error.response?.status);
114
+ logError('[ERROR] Response:', error.response?.data);
115
+ throw new Error(error.response?.data?.error || 'Failed to select website');
116
+ }
117
+ throw error;
118
+ }
119
+ }
120
+ /**
121
+ * Poll for device authorization status
122
+ * Returns DeviceStatusResponse which may include needsWebsiteSelection flag
123
+ */
124
+ export async function pollForAuth(deviceCode, options) {
125
+ const startTime = Date.now();
126
+ while (true) {
127
+ // Check timeout
128
+ if (Date.now() - startTime > options.timeout) {
129
+ throw new Error('Authentication timeout - please try again');
130
+ }
131
+ try {
132
+ const response = await axios.get(`${SSO_BASE_URL}/sso/cli/device/status`, { params: { deviceCode } });
133
+ const data = response.data;
134
+ // Device approved but needs website selection
135
+ if (data.status === 'approved' && data.needsWebsiteSelection && data.websites) {
136
+ log('[DEBUG] Device approved - needs website selection');
137
+ log('[DEBUG] Available websites:', data.websites);
138
+ return data; // Return response with websites list
139
+ }
140
+ // Device approved with JWT - authentication complete
141
+ if (data.status === 'approved' && data.jwt) {
142
+ log('[DEBUG] Device approved - JWT received');
143
+ // Calculate expiry
144
+ const expiresAt = new Date(Date.now() + (data.expiresIn || 604800) * 1000).toISOString();
145
+ return {
146
+ jwt: data.jwt,
147
+ userId: data.userId,
148
+ email: data.email,
149
+ websiteId: data.websiteId,
150
+ websiteName: data.websiteName,
151
+ subdomain: data.subdomain,
152
+ platforms: data.platforms || ['oaysus', 'hosting'],
153
+ expiresAt
154
+ };
155
+ }
156
+ if (data.status === 'denied') {
157
+ throw new Error('Authorization denied by user');
158
+ }
159
+ if (data.status === 'expired') {
160
+ throw new Error('Authorization code expired');
161
+ }
162
+ // Wait before next poll
163
+ await new Promise(resolve => setTimeout(resolve, options.interval));
164
+ }
165
+ catch (error) {
166
+ if (axios.isAxiosError(error) && error.response?.status === 404) {
167
+ throw new Error('Authorization request not found or expired');
168
+ }
169
+ if (error instanceof Error && error.message.includes('denied')) {
170
+ throw error;
171
+ }
172
+ if (error instanceof Error && error.message.includes('expired')) {
173
+ throw error;
174
+ }
175
+ // Continue polling on other errors
176
+ await new Promise(resolve => setTimeout(resolve, options.interval));
177
+ }
178
+ }
179
+ }
180
+ /**
181
+ * Save credentials to local file
182
+ */
183
+ export async function saveCredentials(credentials) {
184
+ const credentialsDir = path.dirname(CREDENTIALS_PATH);
185
+ // Create .oaysus directory if it doesn't exist
186
+ await fs.mkdir(credentialsDir, { recursive: true });
187
+ // Write credentials
188
+ await fs.writeFile(CREDENTIALS_PATH, JSON.stringify(credentials, null, 2), { mode: 0o600 } // Owner read/write only
189
+ );
190
+ }
191
+ /**
192
+ * Load credentials from local file
193
+ */
194
+ export async function loadCredentials() {
195
+ try {
196
+ const data = await fs.readFile(CREDENTIALS_PATH, 'utf-8');
197
+ return JSON.parse(data);
198
+ }
199
+ catch (error) {
200
+ return null;
201
+ }
202
+ }
203
+ /**
204
+ * Clear credentials file
205
+ */
206
+ export async function clearCredentials() {
207
+ try {
208
+ await fs.unlink(CREDENTIALS_PATH);
209
+ }
210
+ catch (error) {
211
+ // Ignore if file doesn't exist
212
+ }
213
+ }
214
+ /**
215
+ * Check if user is authenticated with valid token
216
+ */
217
+ export async function isAuthenticated() {
218
+ const credentials = await loadCredentials();
219
+ if (!credentials) {
220
+ return false;
221
+ }
222
+ // Check if token expired
223
+ const expiresAt = new Date(credentials.expiresAt);
224
+ const now = new Date();
225
+ return expiresAt > now;
226
+ }
227
+ /**
228
+ * Get credentials or throw error if not authenticated
229
+ */
230
+ export async function requireAuth() {
231
+ const credentials = await loadCredentials();
232
+ if (!credentials) {
233
+ throw new Error('Not authenticated. Run: oaysus login');
234
+ }
235
+ // Check expiry
236
+ const expiresAt = new Date(credentials.expiresAt);
237
+ const now = new Date();
238
+ if (expiresAt <= now) {
239
+ throw new Error('Token expired. Run: oaysus login');
240
+ }
241
+ return credentials;
242
+ }
243
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/lib/shared/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * CDN Downloader
3
+ * Downloads framework dependencies from esm.sh CDN for production upload to R2
4
+ */
5
+ export interface DownloadedDependency {
6
+ name: string;
7
+ version: string;
8
+ files: {
9
+ path: string;
10
+ content: string;
11
+ }[];
12
+ }
13
+ /**
14
+ * Download framework dependency from esm.sh CDN
15
+ * Downloads main export and all sub-exports
16
+ */
17
+ export declare function downloadFrameworkDependency(packageName: string, version: string, subExports?: string[]): Promise<DownloadedDependency>;
18
+ /**
19
+ * Save downloaded dependency to disk
20
+ */
21
+ export declare function saveDownloadedDependency(dependency: DownloadedDependency, outputDir: string): void;
22
+ /**
23
+ * Get list of framework dependencies to download based on framework type
24
+ */
25
+ export declare function getFrameworkDependencies(framework: string, version: string): Array<{
26
+ packageName: string;
27
+ version: string;
28
+ subExports: string[];
29
+ }>;
30
+ //# sourceMappingURL=cdn-downloader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdn-downloader.d.ts","sourceRoot":"","sources":["../../../src/lib/shared/cdn-downloader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL;AAmBD;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAM,EAAO,GACxB,OAAO,CAAC,oBAAoB,CAAC,CAyC/B;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,oBAAoB,EAChC,SAAS,EAAE,MAAM,GAChB,IAAI,CAsBN;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,KAAK,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAqCvE"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * CDN Downloader
3
+ * Downloads framework dependencies from esm.sh CDN for production upload to R2
4
+ */
5
+ import axios from 'axios';
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ /**
9
+ * Download a single file from esm.sh
10
+ */
11
+ async function downloadFile(url) {
12
+ try {
13
+ const response = await axios.get(url, {
14
+ responseType: 'text',
15
+ headers: {
16
+ 'User-Agent': 'oaysus-cli'
17
+ }
18
+ });
19
+ return response.data;
20
+ }
21
+ catch (error) {
22
+ throw new Error(`Failed to download ${url}: ${error}`);
23
+ }
24
+ }
25
+ /**
26
+ * Download framework dependency from esm.sh CDN
27
+ * Downloads main export and all sub-exports
28
+ */
29
+ export async function downloadFrameworkDependency(packageName, version, subExports = []) {
30
+ const baseUrl = `https://esm.sh/${packageName}@${version}`;
31
+ const files = [];
32
+ console.log(`Downloading ${packageName}@${version} from esm.sh...`);
33
+ // Download main export
34
+ try {
35
+ const mainContent = await downloadFile(baseUrl);
36
+ files.push({
37
+ path: 'index.js',
38
+ content: mainContent
39
+ });
40
+ }
41
+ catch (error) {
42
+ console.error(`Failed to download main export for ${packageName}:`, error);
43
+ throw error;
44
+ }
45
+ // Download sub-exports
46
+ for (const exportName of subExports) {
47
+ try {
48
+ const exportUrl = `${baseUrl}/${exportName}`;
49
+ const exportContent = await downloadFile(exportUrl);
50
+ // Convert slash paths to files with dashes for consistency
51
+ const fileName = exportName.replace(/\//g, '-') + '.js';
52
+ files.push({
53
+ path: fileName,
54
+ content: exportContent
55
+ });
56
+ }
57
+ catch (error) {
58
+ console.warn(`Could not download ${packageName}/${exportName}, skipping...`);
59
+ }
60
+ }
61
+ return {
62
+ name: packageName,
63
+ version,
64
+ files
65
+ };
66
+ }
67
+ /**
68
+ * Save downloaded dependency to disk
69
+ */
70
+ export function saveDownloadedDependency(dependency, outputDir) {
71
+ const depDir = path.join(outputDir, `${dependency.name}@${dependency.version}`);
72
+ // Create directory
73
+ if (!fs.existsSync(depDir)) {
74
+ fs.mkdirSync(depDir, { recursive: true });
75
+ }
76
+ // Save all files
77
+ for (const file of dependency.files) {
78
+ const filePath = path.join(depDir, file.path);
79
+ // Create parent directory if needed (for nested paths)
80
+ const fileDir = path.dirname(filePath);
81
+ if (!fs.existsSync(fileDir)) {
82
+ fs.mkdirSync(fileDir, { recursive: true });
83
+ }
84
+ fs.writeFileSync(filePath, file.content);
85
+ }
86
+ console.log(`Saved ${dependency.name}@${dependency.version} (${dependency.files.length} files)`);
87
+ }
88
+ /**
89
+ * Get list of framework dependencies to download based on framework type
90
+ */
91
+ export function getFrameworkDependencies(framework, version) {
92
+ switch (framework) {
93
+ case 'react':
94
+ return [
95
+ {
96
+ packageName: 'react',
97
+ version,
98
+ subExports: ['jsx-runtime', 'jsx-dev-runtime']
99
+ },
100
+ {
101
+ packageName: 'react-dom',
102
+ version,
103
+ subExports: ['client']
104
+ }
105
+ ];
106
+ case 'svelte':
107
+ return [
108
+ {
109
+ packageName: 'svelte',
110
+ version,
111
+ subExports: ['internal', 'store', 'motion', 'transition', 'animate', 'easing', 'legacy']
112
+ }
113
+ ];
114
+ case 'vue':
115
+ return [
116
+ {
117
+ packageName: 'vue',
118
+ version,
119
+ subExports: []
120
+ }
121
+ ];
122
+ default:
123
+ return [];
124
+ }
125
+ }
126
+ //# sourceMappingURL=cdn-downloader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdn-downloader.js","sourceRoot":"","sources":["../../../src/lib/shared/cdn-downloader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export interface CommandHistoryEntry {
2
+ command: string;
3
+ timestamp: number;
4
+ success: boolean;
5
+ }
6
+ export interface CommandHistory {
7
+ commands: CommandHistoryEntry[];
8
+ }
9
+ /**
10
+ * Load command history from local file
11
+ */
12
+ export declare function loadCommandHistory(): Promise<CommandHistory>;
13
+ /**
14
+ * Save command to history
15
+ */
16
+ export declare function saveCommandToHistory(command: string, success?: boolean): Promise<void>;
17
+ /**
18
+ * Get the last executed command
19
+ */
20
+ export declare function getLastCommand(): Promise<CommandHistoryEntry | null>;
21
+ /**
22
+ * Clear command history
23
+ */
24
+ export declare function clearCommandHistory(): Promise<void>;
25
+ /**
26
+ * Format relative time (e.g., "3 mins ago", "2 hours ago")
27
+ */
28
+ export declare function formatRelativeTime(timestamp: number): string;
29
+ //# sourceMappingURL=command-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-history.d.ts","sourceRoot":"","sources":["../../../src/lib/shared/command-history.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CAOlE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,OAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAG1E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMzD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAa5D"}
@@ -0,0 +1,73 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ const HISTORY_PATH = path.join(os.homedir(), '.oaysus', 'history.json');
5
+ const MAX_HISTORY_SIZE = 10;
6
+ /**
7
+ * Load command history from local file
8
+ */
9
+ export async function loadCommandHistory() {
10
+ try {
11
+ const data = await fs.readFile(HISTORY_PATH, 'utf-8');
12
+ return JSON.parse(data);
13
+ }
14
+ catch {
15
+ return { commands: [] };
16
+ }
17
+ }
18
+ /**
19
+ * Save command to history
20
+ */
21
+ export async function saveCommandToHistory(command, success = true) {
22
+ const history = await loadCommandHistory();
23
+ // Add new command to beginning
24
+ history.commands.unshift({
25
+ command,
26
+ timestamp: Date.now(),
27
+ success,
28
+ });
29
+ // Keep only last MAX_HISTORY_SIZE commands
30
+ history.commands = history.commands.slice(0, MAX_HISTORY_SIZE);
31
+ // Ensure directory exists
32
+ const historyDir = path.dirname(HISTORY_PATH);
33
+ await fs.mkdir(historyDir, { recursive: true });
34
+ // Write history
35
+ await fs.writeFile(HISTORY_PATH, JSON.stringify(history, null, 2));
36
+ }
37
+ /**
38
+ * Get the last executed command
39
+ */
40
+ export async function getLastCommand() {
41
+ const history = await loadCommandHistory();
42
+ return history.commands[0] || null;
43
+ }
44
+ /**
45
+ * Clear command history
46
+ */
47
+ export async function clearCommandHistory() {
48
+ try {
49
+ await fs.unlink(HISTORY_PATH);
50
+ }
51
+ catch {
52
+ // Ignore if file doesn't exist
53
+ }
54
+ }
55
+ /**
56
+ * Format relative time (e.g., "3 mins ago", "2 hours ago")
57
+ */
58
+ export function formatRelativeTime(timestamp) {
59
+ const now = Date.now();
60
+ const diff = now - timestamp;
61
+ const seconds = Math.floor(diff / 1000);
62
+ const minutes = Math.floor(seconds / 60);
63
+ const hours = Math.floor(minutes / 60);
64
+ const days = Math.floor(hours / 24);
65
+ if (days > 0)
66
+ return `${days} day${days > 1 ? 's' : ''} ago`;
67
+ if (hours > 0)
68
+ return `${hours} hour${hours > 1 ? 's' : ''} ago`;
69
+ if (minutes > 0)
70
+ return `${minutes} min${minutes > 1 ? 's' : ''} ago`;
71
+ return 'just now';
72
+ }
73
+ //# sourceMappingURL=command-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-history.js","sourceRoot":"","sources":["../../../src/lib/shared/command-history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Command Registry
3
+ * Central definition of all available Oaysus CLI commands
4
+ * Used for slash command autocomplete and help text generation
5
+ */
6
+ export interface Command {
7
+ name: string;
8
+ description: string;
9
+ args?: string;
10
+ }
11
+ /**
12
+ * All available CLI commands
13
+ * Ordered by importance/usage frequency
14
+ */
15
+ export declare const COMMANDS: Command[];
16
+ /**
17
+ * Get command by name
18
+ */
19
+ export declare function getCommand(name: string): Command | undefined;
20
+ /**
21
+ * Filter commands by search query (command name only)
22
+ */
23
+ export declare function filterCommands(query: string): Command[];
24
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/lib/shared/commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,OAAO,EAoC7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAUvD"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Command Registry
3
+ * Central definition of all available Oaysus CLI commands
4
+ * Used for slash command autocomplete and help text generation
5
+ */
6
+ /**
7
+ * All available CLI commands
8
+ * Ordered by importance/usage frequency
9
+ */
10
+ export const COMMANDS = [
11
+ // Project workflow
12
+ {
13
+ name: 'init',
14
+ description: 'Create a new component project',
15
+ },
16
+ {
17
+ name: 'create',
18
+ description: 'Add a component to your project',
19
+ },
20
+ {
21
+ name: 'validate',
22
+ description: 'Validate component package structure',
23
+ },
24
+ {
25
+ name: 'push',
26
+ description: 'Upload component package to Oaysus',
27
+ },
28
+ // Authentication
29
+ {
30
+ name: 'login',
31
+ description: 'Authenticate with your Oaysus account',
32
+ },
33
+ {
34
+ name: 'status',
35
+ description: 'Display current user information',
36
+ },
37
+ {
38
+ name: 'logout',
39
+ description: 'Clear authentication tokens',
40
+ },
41
+ // System
42
+ {
43
+ name: 'exit',
44
+ description: 'Exit the CLI',
45
+ },
46
+ ];
47
+ /**
48
+ * Get command by name
49
+ */
50
+ export function getCommand(name) {
51
+ return COMMANDS.find(cmd => cmd.name === name);
52
+ }
53
+ /**
54
+ * Filter commands by search query (command name only)
55
+ */
56
+ export function filterCommands(query) {
57
+ const normalized = query.toLowerCase().trim();
58
+ if (!normalized) {
59
+ return COMMANDS;
60
+ }
61
+ return COMMANDS.filter(cmd => cmd.name.toLowerCase().includes(normalized));
62
+ }
63
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/lib/shared/commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAc;IACjC,mBAAmB;IACnB;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,gCAAgC;KAC9C;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iCAAiC;KAC/C;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,sCAAsC;KACpD;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,oCAAoC;KAClD;IACD,iBAAiB;IACjB;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,uCAAuC;KACrD;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kCAAkC;KAChD;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6BAA6B;KAC3C;IACD,SAAS;IACT;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,cAAc;KAC5B;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAE9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC3B,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC5C,CAAC;AACJ,CAAC"}