@darkstar-cli/cli 0.0.27 → 0.0.28
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/README.md +29 -0
- package/dist/commands/forge/make-api.d.ts.map +1 -1
- package/dist/commands/forge/make-api.js +14 -5
- package/dist/commands/forge/make-api.js.map +1 -1
- package/dist/commands/forge/make-controller.d.ts.map +1 -1
- package/dist/commands/forge/make-controller.js +14 -10
- package/dist/commands/forge/make-controller.js.map +1 -1
- package/dist/commands/forge/make-model.d.ts.map +1 -1
- package/dist/commands/forge/make-model.js +18 -5
- package/dist/commands/forge/make-model.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -397,4 +397,33 @@ DarkStar is in **early alpha**. The limitations below are known and will be addr
|
|
|
397
397
|
|
|
398
398
|
---
|
|
399
399
|
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
## 🔒 Security checklist
|
|
403
|
+
|
|
404
|
+
The stubs generated by `make:api` are **skeletons only**. Before going to production, you **must**:
|
|
405
|
+
|
|
406
|
+
- [ ] Hash passwords before saving (`bcrypt.hash(password, 10)`)
|
|
407
|
+
- [ ] Omit sensitive fields from responses (`password`, `token`, `secret`)
|
|
408
|
+
- [ ] Validate user input (Zod/Joi in `make:schema`)
|
|
409
|
+
- [ ] Apply rate limiting (`make:security` already generates the limiters)
|
|
410
|
+
- [ ] Configure CORS
|
|
411
|
+
- [ ] Use HTTPS
|
|
412
|
+
- [ ] Never commit `.env`
|
|
413
|
+
|
|
414
|
+
DarkStar **does not do this automatically** because every project has different requirements. The framework gives you the structure; you decide the security policy.
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## ⚠️ Known pitfalls in generated stubs
|
|
419
|
+
|
|
420
|
+
The `make:api` command generates a working MVC skeleton, but it is **intentionally minimal**. Watch out for these common issues:
|
|
421
|
+
|
|
422
|
+
- **`password` is returned in API responses** — the generated controller does not strip sensitive fields. Use the `omit*Password` util (from `make:util`) or write your own transformer.
|
|
423
|
+
- **`POST` stores the password as plain text** — the generated `store()` method does no hashing. Add `bcrypt.hash()` in the controller or service layer.
|
|
424
|
+
- **`update()` returns the number of affected rows, not the updated record** — re-fetch the record if you need the new values.
|
|
425
|
+
- **`UserSchema` is an empty object** — no validation is applied. Integrate Zod or Joi manually.
|
|
426
|
+
|
|
427
|
+
These are **not framework bugs** — they are conscious design decisions. DarkStar ships with the structure, not the policy.
|
|
428
|
+
|
|
400
429
|
> 🪐 DarkStar — Open Source
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-api.d.ts","sourceRoot":"","sources":["../../../src/commands/forge/make-api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"make-api.d.ts","sourceRoot":"","sources":["../../../src/commands/forge/make-api.ts"],"names":[],"mappings":"AAkMA,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,QAsBnC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,QAcpC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,QAYtC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,QAY1C"}
|
|
@@ -72,29 +72,32 @@ function controllerStub(name) {
|
|
|
72
72
|
const lower = name.toLowerCase();
|
|
73
73
|
return `import { DarkstarRequest, DarkstarResponse } from '@darkstar-cli/core'
|
|
74
74
|
import { ${name}Service } from '../services/${name}Service'
|
|
75
|
+
import { ${name} } from '../models/${name}'
|
|
75
76
|
|
|
76
77
|
export class ${name}Controller {
|
|
77
78
|
constructor(private ${lower}Service: ${name}Service) {}
|
|
78
79
|
|
|
79
80
|
async index(req: DarkstarRequest, res: DarkstarResponse) {
|
|
80
81
|
const data = await this.${lower}Service.findAll()
|
|
81
|
-
return res.ok(data)
|
|
82
|
+
return res.ok(data.map((row: any) => ${name}.omitHidden(row)))
|
|
82
83
|
}
|
|
83
84
|
|
|
84
85
|
async show(req: DarkstarRequest, res: DarkstarResponse) {
|
|
85
86
|
const data = await this.${lower}Service.findById(req.param('id')!)
|
|
86
87
|
if (!data) return res.notFound('${name} não encontrado')
|
|
87
|
-
return res.ok(data)
|
|
88
|
+
return res.ok(${name}.omitHidden(data))
|
|
88
89
|
}
|
|
89
90
|
|
|
90
91
|
async store(req: DarkstarRequest, res: DarkstarResponse) {
|
|
91
92
|
const data = await this.${lower}Service.create(req.all())
|
|
92
|
-
return res.created(data)
|
|
93
|
+
return res.created(${name}.omitHidden(data))
|
|
93
94
|
}
|
|
94
95
|
|
|
95
96
|
async update(req: DarkstarRequest, res: DarkstarResponse) {
|
|
96
|
-
|
|
97
|
-
|
|
97
|
+
await this.${lower}Service.update(req.param('id')!, req.all())
|
|
98
|
+
const data = await this.${lower}Service.findById(req.param('id')!)
|
|
99
|
+
if (!data) return res.notFound('${name} não encontrado')
|
|
100
|
+
return res.ok(${name}.omitHidden(data))
|
|
98
101
|
}
|
|
99
102
|
|
|
100
103
|
async destroy(req: DarkstarRequest, res: DarkstarResponse) {
|
|
@@ -137,6 +140,12 @@ function modelStub(name) {
|
|
|
137
140
|
|
|
138
141
|
export class ${name} extends Model {
|
|
139
142
|
static table = '${table}'
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Campos que NÃO são retornados nas respostas da API.
|
|
146
|
+
* Equivalente ao $hidden do Laravel.
|
|
147
|
+
*/
|
|
148
|
+
static hidden = ['password']
|
|
140
149
|
}
|
|
141
150
|
`;
|
|
142
151
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-api.js","sourceRoot":"","sources":["../../../src/commands/forge/make-api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAyB;AACzB,MAAY,EAAE,+BAAU;AACxB,MAAY,IAAI,iCAAY;AAE5B,SAAS,OAAO,CAAC,GAAW,IAAI,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AACxE,SAAS,IAAI,CAAC,GAAW,IAAO,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AACvE,SAAS,KAAK,CAAC,GAAW,IAAM,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AAEtE,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,OAAe;IAClD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAChF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5C,OAAO,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjH,OAAO,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;IAClC,CAAC;IACD,OAAO,IAAI,GAAG,GAAG,CAAA;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IAChC,OAAO;WACE,IAAI,+BAA+B,IAAI;;
|
|
1
|
+
{"version":3,"file":"make-api.js","sourceRoot":"","sources":["../../../src/commands/forge/make-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-controller.d.ts","sourceRoot":"","sources":["../../../src/commands/forge/make-controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"make-controller.d.ts","sourceRoot":"","sources":["../../../src/commands/forge/make-controller.ts"],"names":[],"mappings":"AA0DA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,QAG1C"}
|
|
@@ -56,35 +56,39 @@ function writeFile(filePath, content) {
|
|
|
56
56
|
success(`Criado: ${filePath}`);
|
|
57
57
|
}
|
|
58
58
|
function stub(name) {
|
|
59
|
+
const lower = name.toLowerCase();
|
|
59
60
|
return `import { DarkstarRequest, DarkstarResponse } from '@darkstar-cli/core'
|
|
60
61
|
import { ${name}Service } from '../services/${name}Service'
|
|
62
|
+
import { ${name} } from '../models/${name}'
|
|
61
63
|
|
|
62
64
|
export class ${name}Controller {
|
|
63
|
-
constructor(private ${
|
|
65
|
+
constructor(private ${lower}Service: ${name}Service) {}
|
|
64
66
|
|
|
65
67
|
async index(req: DarkstarRequest, res: DarkstarResponse) {
|
|
66
|
-
const data = await this.${
|
|
67
|
-
return res.ok(data)
|
|
68
|
+
const data = await this.${lower}Service.findAll()
|
|
69
|
+
return res.ok(data.map((row: any) => ${name}.omitHidden(row)))
|
|
68
70
|
}
|
|
69
71
|
|
|
70
72
|
async show(req: DarkstarRequest, res: DarkstarResponse) {
|
|
71
|
-
const data = await this.${
|
|
73
|
+
const data = await this.${lower}Service.findById(req.param('id')!)
|
|
72
74
|
if (!data) return res.notFound('${name} não encontrado')
|
|
73
|
-
return res.ok(data)
|
|
75
|
+
return res.ok(${name}.omitHidden(data))
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
async store(req: DarkstarRequest, res: DarkstarResponse) {
|
|
77
|
-
const data = await this.${
|
|
78
|
-
return res.created(data)
|
|
79
|
+
const data = await this.${lower}Service.create(req.all())
|
|
80
|
+
return res.created(${name}.omitHidden(data))
|
|
79
81
|
}
|
|
80
82
|
|
|
81
83
|
async update(req: DarkstarRequest, res: DarkstarResponse) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
+
await this.${lower}Service.update(req.param('id')!, req.all())
|
|
85
|
+
const data = await this.${lower}Service.findById(req.param('id')!)
|
|
86
|
+
if (!data) return res.notFound('${name} não encontrado')
|
|
87
|
+
return res.ok(${name}.omitHidden(data))
|
|
84
88
|
}
|
|
85
89
|
|
|
86
90
|
async destroy(req: DarkstarRequest, res: DarkstarResponse) {
|
|
87
|
-
await this.${
|
|
91
|
+
await this.${lower}Service.delete(req.param('id')!)
|
|
88
92
|
return res.noContent()
|
|
89
93
|
}
|
|
90
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-controller.js","sourceRoot":"","sources":["../../../src/commands/forge/make-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAyB;AACzB,MAAY,EAAE,+BAAU;AACxB,MAAY,IAAI,iCAAY;AAE5B,SAAS,OAAO,CAAC,GAAW,IAAI,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AACxE,SAAS,KAAK,CAAC,GAAW,IAAM,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AAEtE,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,OAAe;IAClD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAChF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5C,OAAO,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO;WACE,IAAI,+BAA+B,IAAI;;
|
|
1
|
+
{"version":3,"file":"make-controller.js","sourceRoot":"","sources":["../../../src/commands/forge/make-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAyB;AACzB,MAAY,EAAE,+BAAU;AACxB,MAAY,IAAI,iCAAY;AAE5B,SAAS,OAAO,CAAC,GAAW,IAAI,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AACxE,SAAS,KAAK,CAAC,GAAW,IAAM,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AAEtE,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,OAAe;IAClD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAChF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5C,OAAO,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACxB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IAChC,OAAO;WACE,IAAI,+BAA+B,IAAI;WACvC,IAAI,sBAAsB,IAAI;;eAE1B,IAAI;wBACK,KAAK,YAAY,IAAI;;;8BAGf,KAAK;2CACQ,IAAI;;;;8BAIjB,KAAK;sCACG,IAAI;oBACtB,IAAI;;;;8BAIM,KAAK;yBACV,IAAI;;;;iBAIZ,KAAK;8BACQ,KAAK;sCACG,IAAI;oBACtB,IAAI;;;;iBAIP,KAAK;;;;CAIrB,CAAA;AACD,CAAC;AAED,wBAA+B,IAAY;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;IAC9C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAC9E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-model.d.ts","sourceRoot":"","sources":["../../../src/commands/forge/make-model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"make-model.d.ts","sourceRoot":"","sources":["../../../src/commands/forge/make-model.ts"],"names":[],"mappings":"AA4CA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,QAGrC"}
|
|
@@ -55,15 +55,28 @@ function writeFile(filePath, content) {
|
|
|
55
55
|
fs.writeFileSync(filePath, content, 'utf-8');
|
|
56
56
|
success(`Criado: ${filePath}`);
|
|
57
57
|
}
|
|
58
|
+
function pluralize(word) {
|
|
59
|
+
if (word.endsWith('ch') || word.endsWith('sh') || word.endsWith('x') || word.endsWith('z') || word.endsWith('s')) {
|
|
60
|
+
return word + 'es';
|
|
61
|
+
}
|
|
62
|
+
if (word.endsWith('y') && !['ay', 'ey', 'iy', 'oy', 'uy'].some(v => word.endsWith(v))) {
|
|
63
|
+
return word.slice(0, -1) + 'ies';
|
|
64
|
+
}
|
|
65
|
+
return word + 's';
|
|
66
|
+
}
|
|
58
67
|
function stub(name) {
|
|
59
|
-
const table = name.toLowerCase()
|
|
60
|
-
return `import {
|
|
68
|
+
const table = pluralize(name.toLowerCase());
|
|
69
|
+
return `import { Model } from '@darkstar-cli/orm'
|
|
61
70
|
|
|
62
|
-
class ${name}
|
|
71
|
+
export class ${name} extends Model {
|
|
63
72
|
static table = '${table}'
|
|
64
|
-
}
|
|
65
73
|
|
|
66
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Campos que NÃO são retornados nas respostas da API.
|
|
76
|
+
* Equivalente ao $hidden do Laravel.
|
|
77
|
+
*/
|
|
78
|
+
static hidden = ['password']
|
|
79
|
+
}
|
|
67
80
|
`;
|
|
68
81
|
}
|
|
69
82
|
function makeModel(name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-model.js","sourceRoot":"","sources":["../../../src/commands/forge/make-model.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAyB;AACzB,MAAY,EAAE,+BAAU;AACxB,MAAY,IAAI,iCAAY;AAE5B,SAAS,OAAO,CAAC,GAAW,IAAI,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AACxE,SAAS,KAAK,CAAC,GAAW,IAAM,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AAEtE,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,OAAe;IAClD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAChF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5C,OAAO,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"make-model.js","sourceRoot":"","sources":["../../../src/commands/forge/make-model.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAyB;AACzB,MAAY,EAAE,+BAAU;AACxB,MAAY,IAAI,iCAAY;AAE5B,SAAS,OAAO,CAAC,GAAW,IAAI,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AACxE,SAAS,KAAK,CAAC,GAAW,IAAM,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AAEtE,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,OAAe;IAClD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAChF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5C,OAAO,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjH,OAAO,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;IAClC,CAAC;IACD,OAAO,IAAI,GAAG,GAAG,CAAA;AACnB,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACxB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IAC3C,OAAO;;eAEM,IAAI;oBACC,KAAK;;;;;;;;CAQxB,CAAA;AACD,CAAC;AAED,mBAA0B,IAAY;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;IAC9C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAC/D,CAAC"}
|