dolphin-server-modules 2.2.4 → 2.5.1
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/DOLPHIN_MASTER_GUIDE_NEPALI.md +53 -19
- package/LICENSE +15 -0
- package/README.md +55 -218
- package/TUTORIAL_NEPALI.md +73 -201
- package/dist/bin/cli.js +183 -4
- package/dist/bin/cli.js.map +1 -1
- package/dist/curd/crud.js +5 -4
- package/dist/curd/crud.js.map +1 -1
- package/dist/realtime/codec.js +5 -5
- package/dist/realtime/codec.js.map +1 -1
- package/dist/router/router.js +1 -0
- package/dist/router/router.js.map +1 -1
- package/package.json +77 -21
- package/scripts/client.js +85 -8
- package/scripts/dolphin-persist.js +211 -0
package/TUTORIAL_NEPALI.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Dolphin Framework: 0 to 100% Full Tutorial (Nepali) 🐬 [
|
|
1
|
+
# Dolphin Framework: 0 to 100% Full Tutorial (Nepali) 🐬 [v2.2.5]
|
|
2
2
|
|
|
3
3
|
Dolphin Framework मा तपाईँलाई स्वागत छ! यो गाइडमा हामी Dolphin प्रयोग गरेर एउटा शक्तिशाली, छिटो र आधुनिक API कसरी बनाउने भनेर सुरुदेखि अन्त्यसम्म सिक्नेछौँ।
|
|
4
4
|
|
|
@@ -6,44 +6,47 @@ Dolphin Framework मा तपाईँलाई स्वागत छ! यो
|
|
|
6
6
|
|
|
7
7
|
## १. Dolphin के हो? (Introduction)
|
|
8
8
|
|
|
9
|
-
**Dolphin** एउटा "Zero-Dependency" ब्याकइन्ड फ्रेमवर्क हो। यो Node.js को नेटिभ `http` मोड्युलमा बनेको छ, जसले गर्दा यसको स्पिड एकदमै धेरै छ।
|
|
9
|
+
**Dolphin** एउटा "Zero-Dependency" ब्याकइन्ड फ्रेमवर्क हो। यो Node.js को नेटिभ `http` मोड्युलमा बनेको छ, जसले गर्दा यसको स्पिड एकदमै धेरै छ र यो २०२६ को आधुनिक आवश्यकताहरूका लागि तयार छ।
|
|
10
10
|
|
|
11
11
|
**मुख्य विशेषताहरू:**
|
|
12
|
-
- **
|
|
13
|
-
- **
|
|
14
|
-
- **
|
|
12
|
+
- **Ultra-Fast**: एक्सप्रेस (Express) भन्दा ५ गुणा सम्म छिटो।
|
|
13
|
+
- **Reactive Sync**: फ्रन्टइन्ड र ब्याकइन्डको डेटा अटोमेटिक सिङ्क हुने।
|
|
14
|
+
- **Offline Ready**: इन्टरनेट नहुँदा पनि डेटा सेभ गर्न मिल्ने (DolphinPersist)।
|
|
15
|
+
- **Modern CLI**: एकै मिनेटमा प्रोजेक्ट तयार गर्न मिल्ने।
|
|
15
16
|
|
|
16
17
|
---
|
|
17
18
|
|
|
18
19
|
## २. सुरुवाती सेटअप (Project Setup)
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
Dolphin v2.2.5 मा नयाँ CLI कमाण्डहरू थपिएका छन् जसले प्रोजेक्ट सुरु गर्न एकदमै सजिलो बनाउँछ:
|
|
21
22
|
|
|
22
23
|
```bash
|
|
23
|
-
# १. फोल्डर बनाउनुहोस्
|
|
24
|
+
# १. नयाँ फोल्डर बनाउनुहोस्
|
|
24
25
|
mkdir my-dolphin-app && cd my-dolphin-app
|
|
25
26
|
|
|
26
|
-
# २.
|
|
27
|
-
|
|
27
|
+
# २. डल्फिन प्रोजेक्ट सुरु गर्नुहोस् (ESM support सहित)
|
|
28
|
+
npx dolphin init
|
|
28
29
|
|
|
29
|
-
# ३.
|
|
30
|
-
|
|
30
|
+
# ३. यदि तपाईंलाई 'Production' लेबलको फोल्डर स्ट्रक्चर चाहिन्छ भने:
|
|
31
|
+
npx dolphin init-prod
|
|
31
32
|
```
|
|
32
33
|
|
|
34
|
+
यसले अटोमेटिकल्ली `package.json`, `app.js` र आवश्यक कन्फिगरेसन फाइलहरू बनाइदिन्छ।
|
|
35
|
+
|
|
33
36
|
---
|
|
34
37
|
|
|
35
38
|
## ३. पहिलो सर्भर (Hello World)
|
|
36
39
|
|
|
37
|
-
अब `
|
|
40
|
+
अब `app.js` फाइलमा यो कोड राख्नुहोस् (हामी आधुनिक `import` सिन्ट्याक्स प्रयोग गर्छौं):
|
|
38
41
|
|
|
39
|
-
```
|
|
42
|
+
```javascript
|
|
40
43
|
import { createDolphinServer } from 'dolphin-server-modules/server';
|
|
41
44
|
|
|
42
45
|
const app = createDolphinServer();
|
|
43
46
|
|
|
44
|
-
// एउटा सामान्य गेट (GET) रूट
|
|
47
|
+
// एउटा सामान्य गेट (GET) रूट
|
|
45
48
|
app.get('/', (ctx) => {
|
|
46
|
-
return { message: "Dolphin को संसारमा स्वागत छ! 🐬" };
|
|
49
|
+
return { message: "Dolphin को संसारमा स्वागत छ! 🐬", version: "2.2.5" };
|
|
47
50
|
});
|
|
48
51
|
|
|
49
52
|
// सर्भर सुन्न (Listen) सुरु गर्नुहोस्
|
|
@@ -52,224 +55,93 @@ app.listen(3000, () => {
|
|
|
52
55
|
});
|
|
53
56
|
```
|
|
54
57
|
|
|
55
|
-
तपाईँको सर्भर अब तयार भयो! `npx ts-node index.ts` चलाएर चेक गर्न सक्नुहुन्छ।
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## ४. Context (ctx) बुझ्ने
|
|
60
|
-
|
|
61
|
-
Dolphin मा हामी `req` र `res` को सट्टा `ctx` (Context) प्रयोग गर्छौँ। यसले कोडलाई सफा बनाउँछ।
|
|
62
|
-
|
|
63
|
-
- `ctx.req`: नेटिभ रिक्वेस्ट अब्जेक्ट।
|
|
64
|
-
- `ctx.json(data)`: JSON रेस्पोन्स पठाउन।
|
|
65
|
-
- `ctx.body`: पोस्ट (POST) फाइल वा डाटाहरु।
|
|
66
|
-
- `ctx.params`: URL बाट आउने प्यारामिटरहरू (जस्तै: `/users/:id`)।
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## ५. राउटिङ र डाइनामिक प्यारामिटर (Routing)
|
|
71
|
-
|
|
72
|
-
Dolphin को राउटिङ एकदमै शक्तिशाली छ।
|
|
73
|
-
|
|
74
|
-
```typescript
|
|
75
|
-
// १. डाइनामिक आईडी लिने
|
|
76
|
-
app.get('/users/:id', (ctx) => {
|
|
77
|
-
const userId = ctx.params.id;
|
|
78
|
-
ctx.json({ id: userId, name: "Nepal User" });
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
// २. पोस्ट रिक्वेस्ट (Data पठाउन)
|
|
82
|
-
app.post('/create', (ctx) => {
|
|
83
|
-
const data = ctx.body;
|
|
84
|
-
ctx.json({ status: "Received", payload: data });
|
|
85
|
-
});
|
|
86
|
-
```
|
|
87
|
-
|
|
88
58
|
---
|
|
89
59
|
|
|
90
|
-
##
|
|
60
|
+
## ४. DolphinStore: शक्तिशाली र रिएक्टिभ स्टोर [NEW v2.2.5]
|
|
91
61
|
|
|
92
|
-
|
|
62
|
+
Dolphin को नयाँ स्टोरले फ्रन्टइन्डमा डेटा म्यानेजमेन्टलाई एकदमै सजिलो बनाउँछ। यसले डेटा लोड हुँदैछ कि छैन (loading), सफल भयो कि भएन (success) र एरर आयो कि (error) भनेर अटोमेटिक जानकारी दिन्छ।
|
|
93
63
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
//
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
Dolphin ले Mongoose सँग सजिलै काम गर्छ।
|
|
111
|
-
|
|
112
|
-
```typescript
|
|
113
|
-
import mongoose from 'mongoose';
|
|
114
|
-
import { createMongooseAdapter } from 'dolphin-server-modules/adapters/mongoose';
|
|
115
|
-
|
|
116
|
-
// १. स्किमा (Schema) बनाउनुहोस्
|
|
117
|
-
const UserSchema = new mongoose.Schema({
|
|
118
|
-
email: { type: String, required: true, unique: true },
|
|
119
|
-
password: { type: String, required: true }
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
const User = mongoose.model('User', UserSchema);
|
|
123
|
-
|
|
124
|
-
// २. अड्याप्टर (Adapter) सेटअप गर्नुहोस्
|
|
125
|
-
const db = createMongooseAdapter({ User });
|
|
64
|
+
### क. स्टोर प्रयोग गर्ने तरिका
|
|
65
|
+
```html
|
|
66
|
+
<script src="/dolphin-client.js"></script>
|
|
67
|
+
<script>
|
|
68
|
+
// १. स्टोरबाट कलेक्सन लिने
|
|
69
|
+
const products = dolphin.store.products;
|
|
70
|
+
|
|
71
|
+
// २. लोड स्टेट चेक गर्ने
|
|
72
|
+
if (products.loading) console.log("डेटा लोड हुँदैछ...");
|
|
73
|
+
|
|
74
|
+
// ३. डेटा आएपछि देखाउने
|
|
75
|
+
if (products.success) {
|
|
76
|
+
console.log("डेटा आयो:", products.items);
|
|
77
|
+
}
|
|
78
|
+
</script>
|
|
126
79
|
```
|
|
127
80
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
## ८. अथेन्टिकेसन (Auth Module)
|
|
131
|
-
|
|
132
|
-
सुरक्षित API को लागि Dolphin भित्रै `auth` मोड्युल छ।
|
|
133
|
-
यसको लागि सबैभन्दा पहिले प्रोजेक्टको रूटमा `.env` फाइल बनाउनुहोस्:
|
|
81
|
+
### ख. फिल्टर र सर्टिङ (Filtering & Sorting)
|
|
82
|
+
तपाईंले स्टोरमै डेटा फिल्टर र सर्ट गर्न सक्नुहुन्छ, जुन एकदमै 'Reactive' हुन्छ:
|
|
134
83
|
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
```typescript
|
|
141
|
-
import { createAuth } from 'dolphin-server-modules/auth';
|
|
84
|
+
```javascript
|
|
85
|
+
// १. मूल्य १००० भन्दा बढी भएका सामान मात्र फिल्टर गर्ने
|
|
86
|
+
dolphin.store.products.where(p => p.price > 1000);
|
|
142
87
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
});
|
|
88
|
+
// २. नामको आधारमा मिलाउने (A to Z)
|
|
89
|
+
dolphin.store.products.orderBy('name', 'asc');
|
|
146
90
|
|
|
147
|
-
//
|
|
148
|
-
|
|
149
|
-
// यहाँ पुगेको युजर भेरिफाई भइसकेको हुन्छ
|
|
150
|
-
return { user: ctx.req.user };
|
|
151
|
-
});
|
|
91
|
+
// ३. सबै फिल्टर हटाउने
|
|
92
|
+
dolphin.store.products.clear();
|
|
152
93
|
```
|
|
153
94
|
|
|
154
95
|
---
|
|
155
96
|
|
|
156
|
-
##
|
|
97
|
+
## ५. DolphinPersist: अफलाइन क्यासिङ [NEW v2.2.5]
|
|
157
98
|
|
|
158
|
-
|
|
99
|
+
यदि तपाईं इन्टरनेट नहुँदा पनि आफ्नो डेटा स्टोरमा राखिरहन चाहनुहुन्छ भने `DolphinPersist` प्रयोग गर्नुहोस्।
|
|
159
100
|
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
101
|
+
```html
|
|
102
|
+
<script src="/dolphin-client.js"></script>
|
|
103
|
+
<script src="path/to/dolphin-persist.js"></script>
|
|
104
|
+
|
|
105
|
+
<script>
|
|
106
|
+
// IndexedDB प्रयोग गरेर अफलाइन क्यासिङ सेट गर्ने
|
|
107
|
+
const persist = new DolphinPersist({ driver: 'indexeddb' });
|
|
108
|
+
enablePersist(dolphin.store, persist);
|
|
109
|
+
|
|
110
|
+
// अब पेज रिफ्रेस गर्दा वा इन्टरनेट नहुँदा पनि पुरानो डेटा तुरुन्तै देखिन्छ।
|
|
111
|
+
</script>
|
|
167
112
|
```
|
|
168
113
|
|
|
169
114
|
---
|
|
170
115
|
|
|
171
|
-
##
|
|
172
|
-
|
|
173
|
-
युजरले पठाएको डाटाहरू चेक गर्न Zod प्रयोग गर्नुहोस्।
|
|
174
|
-
|
|
175
|
-
```typescript
|
|
176
|
-
import { z } from 'zod';
|
|
177
|
-
import { validate } from 'dolphin-server-modules/middleware/zod';
|
|
178
|
-
|
|
179
|
-
const registerSchema = z.object({
|
|
180
|
-
email: z.string().email(),
|
|
181
|
-
password: z.string().min(6)
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
app.post('/register', validate(registerSchema), (ctx) => {
|
|
185
|
-
ctx.json({ message: "Valid Data!" });
|
|
186
|
-
});
|
|
187
|
-
```
|
|
116
|
+
## ६. अटोमेटेड CRUD (Mongoose सँग)
|
|
188
117
|
|
|
189
|
-
|
|
118
|
+
Dolphin ले डेटाबेससँग काम गर्न अटोमेटेड CRUD सुविधा दिन्छ।
|
|
190
119
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
```typescript
|
|
195
|
-
import { RealtimeCore, JSONPlugin } from 'dolphin-server-modules/realtime';
|
|
120
|
+
```javascript
|
|
121
|
+
import { createMongooseAdapter } from 'dolphin-server-modules/adapters/mongoose';
|
|
122
|
+
import { createCRUD } from 'dolphin-server-modules/curd';
|
|
196
123
|
|
|
197
|
-
|
|
198
|
-
|
|
124
|
+
// १. एड्याप्टर बनाउने
|
|
125
|
+
const db = createMongooseAdapter({ User, Product });
|
|
199
126
|
|
|
200
|
-
//
|
|
201
|
-
|
|
202
|
-
|
|
127
|
+
// २. CRUD सर्भिस सुरु गर्ने
|
|
128
|
+
const crud = createCRUD(db, {
|
|
129
|
+
enforceOwnership: false, // सबैका लागि खुला गर्न
|
|
130
|
+
realtime: true // रियल-टाइम सिङ्क इनेबल गर्न
|
|
203
131
|
});
|
|
204
132
|
|
|
205
|
-
//
|
|
206
|
-
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
|
-
## १२. इन्डिपेन्डेन्ट राउटिङ (Independent Routing) [NEW]
|
|
212
|
-
ठूला एप्लिकेसनहरूलाई व्यवस्थित गर्न अलग-अलग फाइलमा राउट्हरू राख्न सकिन्छ:
|
|
213
|
-
|
|
214
|
-
```typescript
|
|
215
|
-
// routes.ts
|
|
216
|
-
import { createDolphinRouter } from 'dolphin-server-modules/router';
|
|
217
|
-
export const apiRouter = createDolphinRouter();
|
|
218
|
-
apiRouter.get('/ping', (ctx) => ctx.json({ msg: 'pong' }));
|
|
219
|
-
|
|
220
|
-
// index.ts
|
|
221
|
-
import { apiRouter } from './routes';
|
|
222
|
-
app.use('/api', apiRouter); // Route अब /api/ping मा उपलब्ध छ
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
---
|
|
226
|
-
|
|
227
|
-
## १३. Universal Signaling (WebRTC & IoT) [NEW]
|
|
228
|
-
Dolphin v1.6.0 बाट नयाँ "Universal Signaling Module" थपिएको छ जसमा फोन, IoT र मेडिकल डिभाइस कन्ट्रोल गर्न सकिन्छ।
|
|
229
|
-
|
|
230
|
-
```typescript
|
|
231
|
-
import { createSignaling } from 'dolphin-server-modules/signaling';
|
|
232
|
-
const signaling = createSignaling(rt);
|
|
233
|
-
|
|
234
|
-
// IoT कमाण्ड पठाउन
|
|
235
|
-
await signaling.sendCommand('DoctorApp', 'Machine_01', { action: 'START' });
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
---
|
|
239
|
-
|
|
240
|
-
## १५. डल्फिन क्लाइन्ट लाइब्रेरी (Full-stack Client Library) [NEW]
|
|
241
|
-
|
|
242
|
-
डल्फिन सर्भरले अब आफैँ एउटा हलुका क्लाइन्ट लाइब्रेरी उपलब्ध गराउँछ। यसका लागि तपाईँले NPM इन्स्टल गर्नु पर्दैन।
|
|
243
|
-
|
|
244
|
-
### क. लाइब्रेरी लोड गर्ने
|
|
245
|
-
```html
|
|
246
|
-
<script src="/dolphin-client.js"></script>
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
### ख. प्रयोग गर्ने तरिका (API, Auth & Realtime)
|
|
250
|
-
```javascript
|
|
251
|
-
// १. अटो-इनिशियलाइज्ड 'dolphin' अब्जेक्ट प्रयोग गर्नुहोस्
|
|
252
|
-
async function setup() {
|
|
253
|
-
// २. लगइन गर्ने
|
|
254
|
-
await dolphin.auth.login("admin@test.com", "password");
|
|
255
|
-
|
|
256
|
-
// ३. डेटा फेच गर्ने (अटोमेटिक टोकन म्यानेजमेन्ट)
|
|
257
|
-
const products = await dolphin.api.get('/products');
|
|
258
|
-
|
|
259
|
-
// ४. रियल-टाइम पब-सब (Pub/Sub)
|
|
260
|
-
await dolphin.connect();
|
|
261
|
-
dolphin.subscribe("alerts", (data) => console.log("Alert:", data));
|
|
262
|
-
}
|
|
133
|
+
// ३. रुटहरूमा जोड्ने
|
|
134
|
+
app.get('/products', async (ctx) => ctx.json(await crud.read('Product')));
|
|
263
135
|
```
|
|
264
136
|
|
|
265
137
|
---
|
|
266
138
|
|
|
267
|
-
##
|
|
139
|
+
## ७. अन्तिममा (Conclusion)
|
|
268
140
|
|
|
269
|
-
Dolphin Framework
|
|
141
|
+
Dolphin Framework अब एउटा पूर्ण 'Full-stack' ब्याकइन्ड इकोसिस्टम बनेको छ। यसले ब्याकइन्डमा मात्र होइन, फ्रन्टइन्डको डेटा सिङ्क र अफलाइन म्यानेजमेन्टमा पनि मद्दत गर्छ।
|
|
270
142
|
|
|
271
143
|
**थप जानकारीको लागि:**
|
|
272
144
|
- [Official Documentation](https://github.com/Phuyalshankar/dolphin-server-modules)
|
|
273
|
-
-
|
|
145
|
+
- [README.md](README.md) हेर्नुहोस्।
|
|
274
146
|
|
|
275
147
|
**Happy Coding in Nepali! 🇳🇵🐬**
|
package/dist/bin/cli.js
CHANGED
|
@@ -74,14 +74,53 @@ export function setup${name}CRUD(dbAdapter) {
|
|
|
74
74
|
update: async (ctx) => ctx.json(await service.updateOne(COLLECTION, ctx.params.id, ctx.body)),
|
|
75
75
|
delete: async (ctx) => ctx.json(await service.deleteOne(COLLECTION, ctx.params.id))
|
|
76
76
|
};
|
|
77
|
-
}
|
|
77
|
+
}`,
|
|
78
|
+
authModel: `import mongoose from 'mongoose';
|
|
79
|
+
|
|
80
|
+
const UserSchema = new mongoose.Schema({
|
|
81
|
+
email: { type: String, required: true, unique: true },
|
|
82
|
+
password: { type: String, required: true },
|
|
83
|
+
name: { type: String },
|
|
84
|
+
role: { type: String, default: 'user' },
|
|
85
|
+
is2FAEnabled: { type: Boolean, default: false },
|
|
86
|
+
twoFASecret: { type: String },
|
|
87
|
+
recoveryCodes: [{ type: String }],
|
|
88
|
+
createdAt: { type: Date, default: Date.now }
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
const RefreshTokenSchema = new mongoose.Schema({
|
|
92
|
+
userId: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
|
|
93
|
+
token: { type: String, required: true },
|
|
94
|
+
expiresAt: { type: Date, required: true },
|
|
95
|
+
createdAt: { type: Date, default: Date.now }
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
export const User = mongoose.model('User', UserSchema);
|
|
99
|
+
export const RefreshToken = mongoose.model('RefreshToken', RefreshTokenSchema);`
|
|
78
100
|
};
|
|
101
|
+
function loadEnv() {
|
|
102
|
+
const envPath = path_1.default.join(process.cwd(), '.env');
|
|
103
|
+
if (fs_1.default.existsSync(envPath)) {
|
|
104
|
+
const content = fs_1.default.readFileSync(envPath, 'utf8');
|
|
105
|
+
content.split(/\r?\n/).forEach(line => {
|
|
106
|
+
const trimmedLine = line.trim();
|
|
107
|
+
if (!trimmedLine || trimmedLine.startsWith('#'))
|
|
108
|
+
return;
|
|
109
|
+
const [key, ...valueParts] = trimmedLine.split('=');
|
|
110
|
+
if (key && valueParts.length > 0) {
|
|
111
|
+
const value = valueParts.join('=').trim().replace(/^["']|["']$/g, '');
|
|
112
|
+
process.env[key.trim()] = value;
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
79
117
|
async function run() {
|
|
118
|
+
loadEnv();
|
|
80
119
|
switch (command) {
|
|
81
120
|
case 'generate':
|
|
82
121
|
const requestedModel = args.find(arg => arg.startsWith('--model='))?.split('=')[1] || 'gemini-flash-latest';
|
|
83
122
|
const prompt = args.filter(arg => !arg.startsWith('--')).slice(1).join(' ');
|
|
84
|
-
const apiKey = process.env.GEMINI_API_KEY;
|
|
123
|
+
const apiKey = (process.env.GEMINI_API_KEY || '').trim();
|
|
85
124
|
if (!apiKey) {
|
|
86
125
|
console.log('❌ Error: GEMINI_API_KEY environment variable is not set.');
|
|
87
126
|
console.log('💡 Get a free key at: https://aistudio.google.com/app/apikey');
|
|
@@ -154,6 +193,99 @@ async function run() {
|
|
|
154
193
|
};
|
|
155
194
|
tryGenerate(0, 0);
|
|
156
195
|
break;
|
|
196
|
+
case 'generate-full':
|
|
197
|
+
const fullRequestedModel = args.find(arg => arg.startsWith('--model='))?.split('=')[1] || 'gemini-1.5-flash';
|
|
198
|
+
const fullPrompt = args.filter(arg => !arg.startsWith('--')).slice(1).join(' ');
|
|
199
|
+
const fullApiKey = (process.env.GEMINI_API_KEY || '').trim();
|
|
200
|
+
if (!fullApiKey) {
|
|
201
|
+
console.log('❌ Error: GEMINI_API_KEY environment variable is not set.');
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
if (!fullPrompt) {
|
|
205
|
+
console.log('❌ Please provide a prompt. Example: dolphin generate-full "a laundry management system"');
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
console.log(`🤖 AI is architecting a full production-grade system...`);
|
|
209
|
+
const tryGenerateFull = (modelIndex, versionIndex) => {
|
|
210
|
+
const modelsToTry = ['gemini-1.5-flash-latest', 'gemini-flash-latest', 'gemini-1.5-pro-latest', 'gemini-pro-latest'];
|
|
211
|
+
const versions = ['v1beta', 'v1'];
|
|
212
|
+
if (modelIndex >= modelsToTry.length) {
|
|
213
|
+
console.log('❌ All AI models failed for full architecture. Please check your prompt or API limits.');
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (versionIndex >= versions.length) {
|
|
217
|
+
return tryGenerateFull(modelIndex + 1, 0);
|
|
218
|
+
}
|
|
219
|
+
const currentModel = modelsToTry[modelIndex];
|
|
220
|
+
const currentVersion = versions[versionIndex];
|
|
221
|
+
console.log(`🤖 AI (${currentModel} via ${currentVersion}) is architecting...`);
|
|
222
|
+
const aiData = JSON.stringify({
|
|
223
|
+
contents: [{ parts: [{ text: `Generate a full production-ready modular Node.js project structure using dolphin-server-modules.
|
|
224
|
+
Rules:
|
|
225
|
+
1. Return ONLY a valid JSON object.
|
|
226
|
+
2. Keys are file paths (e.g., "routes/user.js", "models/User.js", "app.js").
|
|
227
|
+
3. Values are the file contents as strings.
|
|
228
|
+
4. Use ESM 'import'.
|
|
229
|
+
5. Use Dolphin unified context '(ctx) => { ... }'.
|
|
230
|
+
6. Include folders: models, controllers, routes, middleware, config.
|
|
231
|
+
Context: ${fullPrompt}.
|
|
232
|
+
Return ONLY the JSON. No markdown backticks, no text before or after.` }] }]
|
|
233
|
+
});
|
|
234
|
+
const options = {
|
|
235
|
+
hostname: 'generativelanguage.googleapis.com',
|
|
236
|
+
path: `/${currentVersion}/models/${currentModel}:generateContent?key=${fullApiKey}`,
|
|
237
|
+
method: 'POST',
|
|
238
|
+
headers: { 'Content-Type': 'application/json' }
|
|
239
|
+
};
|
|
240
|
+
const req = https_1.default.request(options, (res) => {
|
|
241
|
+
let body = '';
|
|
242
|
+
res.on('data', (d) => body += d);
|
|
243
|
+
res.on('end', () => {
|
|
244
|
+
try {
|
|
245
|
+
const json = JSON.parse(body);
|
|
246
|
+
if (json.error) {
|
|
247
|
+
console.log(`⚠️ ${currentModel} (${currentVersion}) error: ${json.error.message}. Trying next...`);
|
|
248
|
+
return tryGenerateFull(modelIndex, versionIndex + 1);
|
|
249
|
+
}
|
|
250
|
+
const rawJson = json.candidates?.[0]?.content?.parts?.[0]?.text || '';
|
|
251
|
+
const cleanJson = rawJson.replace(/```json|```/g, '').trim();
|
|
252
|
+
const jsonMatch = cleanJson.match(/\{[\s\S]*\}/);
|
|
253
|
+
if (jsonMatch) {
|
|
254
|
+
try {
|
|
255
|
+
const files = JSON.parse(jsonMatch[0]);
|
|
256
|
+
Object.keys(files).forEach(filePath => {
|
|
257
|
+
const fullPath = path_1.default.join(process.cwd(), filePath);
|
|
258
|
+
const dirPath = path_1.default.dirname(fullPath);
|
|
259
|
+
if (!fs_1.default.existsSync(dirPath)) {
|
|
260
|
+
fs_1.default.mkdirSync(dirPath, { recursive: true });
|
|
261
|
+
}
|
|
262
|
+
fs_1.default.writeFileSync(fullPath, files[filePath]);
|
|
263
|
+
console.log(`📄 Generated: ${filePath}`);
|
|
264
|
+
});
|
|
265
|
+
console.log('✅ Full project architected successfully! 🐬');
|
|
266
|
+
}
|
|
267
|
+
catch (e) {
|
|
268
|
+
console.log('❌ Error parsing project JSON. Trying next model...');
|
|
269
|
+
tryGenerateFull(modelIndex, versionIndex + 1);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
console.log('❌ AI failed to return valid JSON. Trying next model...');
|
|
274
|
+
tryGenerateFull(modelIndex, versionIndex + 1);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
catch (e) {
|
|
278
|
+
console.log('❌ Unexpected error. Trying next model...');
|
|
279
|
+
tryGenerateFull(modelIndex, versionIndex + 1);
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
});
|
|
283
|
+
req.on('error', () => tryGenerateFull(modelIndex, versionIndex + 1));
|
|
284
|
+
req.write(aiData);
|
|
285
|
+
req.end();
|
|
286
|
+
};
|
|
287
|
+
tryGenerateFull(0, 0);
|
|
288
|
+
break;
|
|
157
289
|
case 'clean':
|
|
158
290
|
const filesToClean = ['ai-generated-app.js', 'ai-test-output.js'];
|
|
159
291
|
filesToClean.forEach(file => {
|
|
@@ -198,6 +330,10 @@ async function run() {
|
|
|
198
330
|
else {
|
|
199
331
|
console.log('⚠️ package.json already exists. Skipping...');
|
|
200
332
|
}
|
|
333
|
+
if (!fs_1.default.existsSync(path_1.default.join(process.cwd(), '.gitignore'))) {
|
|
334
|
+
fs_1.default.writeFileSync(path_1.default.join(process.cwd(), '.gitignore'), '.env\nnode_modules\ndist\n.DS_Store');
|
|
335
|
+
console.log('✅ Created .gitignore');
|
|
336
|
+
}
|
|
201
337
|
break;
|
|
202
338
|
case 'add':
|
|
203
339
|
const type = args[1]; // adapter, auth, crud
|
|
@@ -228,18 +364,61 @@ async function run() {
|
|
|
228
364
|
console.log('❌ Unknown type. Use "adapter", "auth", or "crud".');
|
|
229
365
|
}
|
|
230
366
|
break;
|
|
367
|
+
case 'mongo-auth-model':
|
|
368
|
+
const modelsDir = path_1.default.join(process.cwd(), 'models');
|
|
369
|
+
if (!fs_1.default.existsSync(modelsDir)) {
|
|
370
|
+
fs_1.default.mkdirSync(modelsDir);
|
|
371
|
+
}
|
|
372
|
+
fs_1.default.writeFileSync(path_1.default.join(modelsDir, 'auth-models.js'), TEMPLATES.authModel);
|
|
373
|
+
console.log('✅ Generated fixed Auth models (User, RefreshToken) in models/auth-models.js');
|
|
374
|
+
break;
|
|
375
|
+
case 'init-prod':
|
|
376
|
+
console.log('🚀 Scaffolding Production-Ready Dolphin Project...');
|
|
377
|
+
const dirs = ['models', 'controllers', 'routes', 'middleware', 'services', 'config'];
|
|
378
|
+
dirs.forEach(dir => {
|
|
379
|
+
const dirPath = path_1.default.join(process.cwd(), dir);
|
|
380
|
+
if (!fs_1.default.existsSync(dirPath)) {
|
|
381
|
+
fs_1.default.mkdirSync(dirPath);
|
|
382
|
+
console.log(`📁 Created: /${dir}`);
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
// Create basic files in the structure
|
|
386
|
+
fs_1.default.writeFileSync(path_1.default.join(process.cwd(), 'app.js'), TEMPLATES.app);
|
|
387
|
+
fs_1.default.writeFileSync(path_1.default.join(process.cwd(), 'config', 'db.js'), TEMPLATES.mongoose);
|
|
388
|
+
if (!fs_1.default.existsSync(path_1.default.join(process.cwd(), 'package.json'))) {
|
|
389
|
+
fs_1.default.writeFileSync(path_1.default.join(process.cwd(), 'package.json'), JSON.stringify({
|
|
390
|
+
name: path_1.default.basename(process.cwd()),
|
|
391
|
+
version: '1.0.0',
|
|
392
|
+
main: 'app.js',
|
|
393
|
+
type: 'module',
|
|
394
|
+
dependencies: {
|
|
395
|
+
"dolphin-server-modules": "^2.2.4",
|
|
396
|
+
"mongoose": "^8.0.0",
|
|
397
|
+
"zod": "^3.22.0"
|
|
398
|
+
}
|
|
399
|
+
}, null, 2));
|
|
400
|
+
}
|
|
401
|
+
if (!fs_1.default.existsSync(path_1.default.join(process.cwd(), '.gitignore'))) {
|
|
402
|
+
fs_1.default.writeFileSync(path_1.default.join(process.cwd(), '.gitignore'), '.env\nnode_modules\ndist\n.DS_Store');
|
|
403
|
+
console.log('✅ Created .gitignore');
|
|
404
|
+
}
|
|
405
|
+
console.log('✅ Production scaffolding complete. Start swimming! 🐬');
|
|
406
|
+
break;
|
|
231
407
|
case 'help':
|
|
232
408
|
default:
|
|
233
409
|
console.log(`
|
|
234
410
|
🐬 Dolphin Framework CLI
|
|
235
411
|
Commands:
|
|
236
412
|
serve Start a basic development server
|
|
237
|
-
init Bootstrap a
|
|
238
|
-
|
|
413
|
+
init Bootstrap a basic Dolphin project
|
|
414
|
+
init-prod Scaffold a production-grade folder structure
|
|
415
|
+
generate <prompt> AI-powered single-file API generation
|
|
416
|
+
generate-full <prompt> AI-powered full project architecture (folders + files)
|
|
239
417
|
clean Remove AI generated files
|
|
240
418
|
add adapter <type> Add a database adapter (mongoose, sequelize)
|
|
241
419
|
add auth Add a pre-configured Auth controller
|
|
242
420
|
add crud <Name> Add a pre-configured CRUD controller
|
|
421
|
+
mongo-auth-model Generate fixed Mongoose models for Auth (User, RefreshToken)
|
|
243
422
|
generate "prompt" --model=gemini-1.5-pro (Custom AI model support)
|
|
244
423
|
|
|
245
424
|
Options:
|
package/dist/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":";;;;;;AACA,4CAAoB;AACpB,gDAAwB;AACxB,kDAA0B;AAC1B,6CAAuD;AACvD,2CAAgD;AAEhD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,MAAM,SAAS,GAAG;IACd,GAAG,EAAE;;;;;yEAKgE;IAErE,QAAQ,EAAE;;;;;;;;;;;EAWZ;IAEE,SAAS,EAAE;;;;;;;;;;;;;;;;EAgBb;IAEE,IAAI,EAAE;;;;;;;;;;;;;EAaR;IAEE,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC;;uBAEL,IAAI;;0BAED,IAAI;;;;;;;;;EAS5B;CACD,CAAC;AAEF,KAAK,UAAU,GAAG;IACd,QAAQ,OAAO,EAAE,CAAC;QACd,KAAK,UAAU;YACX,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC;YAC5G,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;gBACxE,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;gBAC5E,MAAM;YACV,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;gBAClG,MAAM;YACV,CAAC;YAED,MAAM,cAAc,GAAG,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;YAC5G,MAAM,WAAW,GAAG,CAAC,cAAc,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC;YAC1F,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAElC,MAAM,WAAW,GAAG,CAAC,UAAkB,EAAE,YAAoB,EAAE,EAAE;gBAC7D,IAAI,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;oBACnC,OAAO,CAAC,GAAG,CAAC,4GAA4G,CAAC,CAAC;oBAC1H,OAAO;gBACX,CAAC;gBAED,IAAI,YAAY,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAClC,OAAO,WAAW,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBAED,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC7C,MAAM,cAAc,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,YAAY,QAAQ,cAAc,+BAA+B,CAAC,CAAC;gBAEzF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC1B,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE;;;;;;;+BAOlB,MAAM,4BAA4B,EAAE,CAAC,EAAE,CAAC;iBACtD,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAG;oBACZ,QAAQ,EAAE,mCAAmC;oBAC7C,IAAI,EAAE,IAAI,cAAc,WAAW,YAAY,wBAAwB,MAAM,EAAE;oBAC/E,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAC;gBAEF,MAAM,GAAG,GAAG,eAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBACvC,IAAI,IAAI,GAAG,EAAE,CAAC;oBACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;oBACjC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;wBACf,IAAI,CAAC;4BACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC9B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gCACb,OAAO,CAAC,GAAG,CAAC,MAAM,YAAY,KAAK,cAAc,yBAAyB,IAAI,CAAC,KAAK,CAAC,MAAM,kBAAkB,CAAC,CAAC;gCAC/G,WAAW,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;gCAC1C,OAAO;4BACX,CAAC;4BACL,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;4BAClE,IAAI,OAAO,EAAE,CAAC;gCACd,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;gCAChH,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gCAC7F,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,EAAE,IAAI,CAAC,CAAC;gCACxE,OAAO,CAAC,GAAG,CAAC,mCAAmC,YAAY,yBAAyB,CAAC,CAAC;4BAC1F,CAAC;iCAAM,CAAC;gCACJ,WAAW,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;4BAC9C,CAAC;wBACL,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BAAC,WAAW,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;wBAAC,CAAC;oBAC9D,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClB,GAAG,CAAC,GAAG,EAAE,CAAC;YACd,CAAC,CAAC;YAEF,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClB,MAAM;QAEV,KAAK,OAAO;YACR,MAAM,YAAY,GAAG,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;YAClE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACxB,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;gBAChD,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;gBACxC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,MAAM;QAEV,KAAK,OAAO;YACR,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACvC,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;oBAAE,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;YACzC,MAAM,EAAE,GAAG,IAAI,mBAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAA,4BAAmB,EAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gDAAgD,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/F,MAAM;QAEV,KAAK,MAAM;YACP,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;YACpE,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;gBAC3D,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;oBACtE,IAAI,EAAE,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;oBAClC,OAAO,EAAE,OAAO;oBAChB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE;wBACV,wBAAwB,EAAE,QAAQ;wBAClC,UAAU,EAAE,QAAQ;wBACpB,KAAK,EAAE,SAAS;qBACnB;iBACJ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM;QAEV,KAAK,KAAK;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;YAElC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACrB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;oBACtB,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACxE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;gBAC9D,CAAC;qBAAM,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;oBAC9B,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;oBAC7E,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;gBACzE,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;gBACrE,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzB,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC7E,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YACtE,CAAC;iBAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM,YAAY,GAAG,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtF,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC1F,OAAO,CAAC,GAAG,CAAC,yCAAyC,IAAI,QAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACnG,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACrE,CAAC;YACD,MAAM;QAEV,KAAK,MAAM,CAAC;QACZ;YACI,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;aAcX,CAAC,CAAC;YACH,MAAM;IACd,CAAC;AACL,CAAC;AAED,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACd,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":";;;;;;AACA,4CAAoB;AACpB,gDAAwB;AACxB,kDAA0B;AAC1B,6CAAuD;AACvD,2CAAgD;AAEhD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,MAAM,SAAS,GAAG;IACd,GAAG,EAAE;;;;;yEAKgE;IAErE,QAAQ,EAAE;;;;;;;;;;;EAWZ;IAEE,SAAS,EAAE;;;;;;;;;;;;;;;;EAgBb;IAEE,IAAI,EAAE;;;;;;;;;;;;;EAaR;IAEE,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC;;uBAEL,IAAI;;0BAED,IAAI;;;;;;;;;EAS5B;IAEE,SAAS,EAAE;;;;;;;;;;;;;;;;;;;;;gFAqBiE;CAC/E,CAAC;AAEF,SAAS,OAAO;IACZ,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO;YACxD,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpD,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBACtE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;YACpC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,KAAK,UAAU,GAAG;IACd,OAAO,EAAE,CAAC;IACV,QAAQ,OAAO,EAAE,CAAC;QACd,KAAK,UAAU;YACX,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC;YAC5G,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAEzD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;gBACxE,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;gBAC5E,MAAM;YACV,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;gBAClG,MAAM;YACV,CAAC;YAED,MAAM,cAAc,GAAG,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;YAC5G,MAAM,WAAW,GAAG,CAAC,cAAc,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC;YAC1F,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAElC,MAAM,WAAW,GAAG,CAAC,UAAkB,EAAE,YAAoB,EAAE,EAAE;gBAC7D,IAAI,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;oBACnC,OAAO,CAAC,GAAG,CAAC,4GAA4G,CAAC,CAAC;oBAC1H,OAAO;gBACX,CAAC;gBAED,IAAI,YAAY,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAClC,OAAO,WAAW,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBAED,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC7C,MAAM,cAAc,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,YAAY,QAAQ,cAAc,+BAA+B,CAAC,CAAC;gBAEzF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC1B,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE;;;;;;;+BAOlB,MAAM,4BAA4B,EAAE,CAAC,EAAE,CAAC;iBACtD,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAG;oBACZ,QAAQ,EAAE,mCAAmC;oBAC7C,IAAI,EAAE,IAAI,cAAc,WAAW,YAAY,wBAAwB,MAAM,EAAE;oBAC/E,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAC;gBAEF,MAAM,GAAG,GAAG,eAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBACvC,IAAI,IAAI,GAAG,EAAE,CAAC;oBACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;oBACjC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;wBACf,IAAI,CAAC;4BACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC9B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gCACb,OAAO,CAAC,GAAG,CAAC,MAAM,YAAY,KAAK,cAAc,yBAAyB,IAAI,CAAC,KAAK,CAAC,MAAM,kBAAkB,CAAC,CAAC;gCAC/G,WAAW,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;gCAC1C,OAAO;4BACX,CAAC;4BACL,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;4BAClE,IAAI,OAAO,EAAE,CAAC;gCACd,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;gCAChH,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gCAC7F,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,EAAE,IAAI,CAAC,CAAC;gCACxE,OAAO,CAAC,GAAG,CAAC,mCAAmC,YAAY,yBAAyB,CAAC,CAAC;4BAC1F,CAAC;iCAAM,CAAC;gCACJ,WAAW,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;4BAC9C,CAAC;wBACL,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BAAC,WAAW,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;wBAAC,CAAC;oBAC9D,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClB,GAAG,CAAC,GAAG,EAAE,CAAC;YACd,CAAC,CAAC;YAEF,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClB,MAAM;QAEV,KAAK,eAAe;YAChB,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC;YAC7G,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChF,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAE7D,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;gBACxE,MAAM;YACV,CAAC;YAED,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC;gBACvG,MAAM;YACV,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YAEvE,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,YAAoB,EAAE,EAAE;gBACjE,MAAM,WAAW,GAAG,CAAC,yBAAyB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,mBAAmB,CAAC,CAAC;gBACrH,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAElC,IAAI,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;oBACnC,OAAO,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC;oBACrG,OAAO;gBACX,CAAC;gBAED,IAAI,YAAY,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAClC,OAAO,eAAe,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9C,CAAC;gBAED,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC7C,MAAM,cAAc,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAE9C,OAAO,CAAC,GAAG,CAAC,UAAU,YAAY,QAAQ,cAAc,sBAAsB,CAAC,CAAC;gBAEhF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC1B,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE;;;;;;;;+BAQlB,UAAU;0FACiD,EAAE,CAAC,EAAE,CAAC;iBAC/E,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAG;oBACZ,QAAQ,EAAE,mCAAmC;oBAC7C,IAAI,EAAE,IAAI,cAAc,WAAW,YAAY,wBAAwB,UAAU,EAAE;oBACnF,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAC;gBAEF,MAAM,GAAG,GAAG,eAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBACvC,IAAI,IAAI,GAAG,EAAE,CAAC;oBACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;oBACjC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;wBACf,IAAI,CAAC;4BACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC9B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gCACb,OAAO,CAAC,GAAG,CAAC,MAAM,YAAY,KAAK,cAAc,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;gCACnG,OAAO,eAAe,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;4BACzD,CAAC;4BAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;4BACtE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;4BAC7D,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;4BAEjD,IAAI,SAAS,EAAE,CAAC;gCACZ,IAAI,CAAC;oCACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oCACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;wCAClC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;wCACpD,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;wCACvC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;4CAC1B,YAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wCAC/C,CAAC;wCACD,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;wCAC5C,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;oCAC7C,CAAC,CAAC,CAAC;oCACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;gCAC/D,CAAC;gCAAC,OAAO,CAAC,EAAE,CAAC;oCACT,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;oCAClE,eAAe,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;gCAClD,CAAC;4BACL,CAAC;iCAAM,CAAC;gCACJ,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;gCACtE,eAAe,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;4BAClD,CAAC;wBACL,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACT,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;4BACxD,eAAe,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;wBAClD,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClB,GAAG,CAAC,GAAG,EAAE,CAAC;YACd,CAAC,CAAC;YAEF,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,MAAM;QAEV,KAAK,OAAO;YACR,MAAM,YAAY,GAAG,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;YAClE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACxB,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;gBAChD,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;gBACxC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,MAAM;QAEV,KAAK,OAAO;YACR,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACvC,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;oBAAE,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;YACzC,MAAM,EAAE,GAAG,IAAI,mBAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAA,4BAAmB,EAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gDAAgD,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/F,MAAM;QAEV,KAAK,MAAM;YACP,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;YACpE,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;gBAC3D,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;oBACtE,IAAI,EAAE,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;oBAClC,OAAO,EAAE,OAAO;oBAChB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE;wBACV,wBAAwB,EAAE,QAAQ;wBAClC,UAAU,EAAE,QAAQ;wBACpB,KAAK,EAAE,SAAS;qBACnB;iBACJ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC/D,CAAC;YAED,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;gBACzD,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,qCAAqC,CAAC,CAAC;gBAChG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACxC,CAAC;YACD,MAAM;QAEV,KAAK,KAAK;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;YAElC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACrB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;oBACtB,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACxE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;gBAC9D,CAAC;qBAAM,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;oBAC9B,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;oBAC7E,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;gBACzE,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;gBACrE,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzB,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC7E,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YACtE,CAAC;iBAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM,YAAY,GAAG,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtF,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC1F,OAAO,CAAC,GAAG,CAAC,yCAAyC,IAAI,QAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACnG,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACrE,CAAC;YACD,MAAM;QAEV,KAAK,kBAAkB;YACnB,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;YACrD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5B,YAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC;YACD,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;YAC3F,MAAM;QAEV,KAAK,WAAW;YACZ,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACf,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC9C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,YAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;gBACvC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,sCAAsC;YACtC,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;YACpE,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;YAElF,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;gBAC3D,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;oBACtE,IAAI,EAAE,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;oBAClC,OAAO,EAAE,OAAO;oBAChB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE;wBACV,wBAAwB,EAAE,QAAQ;wBAClC,UAAU,EAAE,QAAQ;wBACpB,KAAK,EAAE,SAAS;qBACnB;iBACJ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YAED,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;gBACzD,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,qCAAqC,CAAC,CAAC;gBAChG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,MAAM;QAEV,KAAK,MAAM,CAAC;QACZ;YACI,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;aAiBX,CAAC,CAAC;YACH,MAAM;IACd,CAAC;AACL,CAAC;AAED,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACd,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC"}
|