ugly-app 0.1.49 → 0.1.51
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 +33 -11
- package/dist/cli/upgrade.d.ts.map +1 -1
- package/dist/cli/upgrade.js +6 -11
- package/dist/cli/upgrade.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -88,6 +88,8 @@ The returned `App` object has:
|
|
|
88
88
|
|
|
89
89
|
### `AppConfigurator`
|
|
90
90
|
|
|
91
|
+
The optional fourth argument to `createApp` receives a configurator object:
|
|
92
|
+
|
|
91
93
|
| Method | Description |
|
|
92
94
|
|--------|-------------|
|
|
93
95
|
| `setPages(options)` | Serves pages with Vite (dev) or static files (prod). `options: { pages, renderPage?, clientDistPath? }` |
|
|
@@ -414,7 +416,7 @@ Renders an `<a>` tag with the correct `href`. Intercepts clicks for client-side
|
|
|
414
416
|
|
|
415
417
|
#### Animation system
|
|
416
418
|
|
|
417
|
-
Built-in
|
|
419
|
+
Built-in animation primitives for transitions and popups. `Animated.div` and `Animated.span` accept `AnimatedStyle` — a style object where any CSS property can be an `AnimatedValueRef` or a `TransformedValue` instead of a static value.
|
|
418
420
|
|
|
419
421
|
```typescript
|
|
420
422
|
import {
|
|
@@ -431,7 +433,7 @@ import {
|
|
|
431
433
|
const spring = createAnimatedValue(0);
|
|
432
434
|
spring.start(1, { duration: 300, easing: easingFunctions.easeOut });
|
|
433
435
|
|
|
434
|
-
// Use in components
|
|
436
|
+
// Use in components — animated properties bypass React re-renders via direct DOM mutation
|
|
435
437
|
<Animated.div style={{ opacity: spring.to((v) => String(v)) }}>
|
|
436
438
|
Content
|
|
437
439
|
</Animated.div>
|
|
@@ -518,6 +520,16 @@ configurator.setAuth({
|
|
|
518
520
|
});
|
|
519
521
|
```
|
|
520
522
|
|
|
523
|
+
The `AuthProvider` interface:
|
|
524
|
+
|
|
525
|
+
```typescript
|
|
526
|
+
interface AuthProvider {
|
|
527
|
+
verify(code: string): Promise<{ userId: string; email?: string; phone?: string }>;
|
|
528
|
+
authUrl(origin: string): string;
|
|
529
|
+
registerRoutes?(router: express.Router): void;
|
|
530
|
+
}
|
|
531
|
+
```
|
|
532
|
+
|
|
521
533
|
---
|
|
522
534
|
|
|
523
535
|
## Database (`TypedDB`)
|
|
@@ -633,14 +645,14 @@ const json = await textGen.generateJson(schema, messages); // Zod schema, re
|
|
|
633
645
|
const result = await textGen.generateWithTools(messages, tools); // automatic tool-call loop
|
|
634
646
|
```
|
|
635
647
|
|
|
636
|
-
| Provider | `provider` value | JSON | Tools | Vision |
|
|
637
|
-
|
|
638
|
-
| Together AI
|
|
639
|
-
| Anthropic
|
|
640
|
-
| OpenAI
|
|
641
|
-
| Google
|
|
642
|
-
| Groq
|
|
643
|
-
| Fireworks | `'fireworks'` | yes | yes | yes |
|
|
648
|
+
| Provider | `provider` value | Default model | JSON | Tools | Vision |
|
|
649
|
+
|----------|-----------------|---------------|------|-------|--------|
|
|
650
|
+
| Together AI | `'together'` | Llama-4-Maverick-17B-128E | yes | yes | yes |
|
|
651
|
+
| Anthropic | `'claude'` | claude-sonnet-4-6 | yes | yes | yes |
|
|
652
|
+
| OpenAI | `'openai'` | gpt-4o | yes | yes | yes |
|
|
653
|
+
| Google | `'google'` | gemini-2.5-flash | yes | yes | yes |
|
|
654
|
+
| Groq | `'groq'` | llama-3.3-70b-versatile | yes | yes | no |
|
|
655
|
+
| Fireworks | `'fireworks'` | llama-v3p1-70b-instruct | yes | yes | yes |
|
|
644
656
|
|
|
645
657
|
Use `provider: 'auto'` (default) to let the system pick based on requirements.
|
|
646
658
|
|
|
@@ -723,6 +735,17 @@ const { uploadUrl, resultUrl } = await storage.presignedPut('temp', key);
|
|
|
723
735
|
|
|
724
736
|
Buckets: `'public'` and `'temp'`. Supports Cloudflare R2 (production) or MinIO (dev).
|
|
725
737
|
|
|
738
|
+
The `StorageClient` interface:
|
|
739
|
+
|
|
740
|
+
```typescript
|
|
741
|
+
interface StorageClient {
|
|
742
|
+
put(bucket: 'public' | 'temp', key: string, body: Buffer, contentType: string): Promise<string>;
|
|
743
|
+
moveToPublic(tempKey: string, destKey: string): Promise<string>;
|
|
744
|
+
url(bucket: 'public' | 'temp', key: string): string;
|
|
745
|
+
presignedPut(bucket: 'temp', key: string): Promise<{ uploadUrl: string; resultUrl: string }>;
|
|
746
|
+
}
|
|
747
|
+
```
|
|
748
|
+
|
|
726
749
|
Static build-time assets go in `client/public/`. Never hardcode `/asset/...` paths — use the `buildId` from `shared/Build.ts`.
|
|
727
750
|
|
|
728
751
|
---
|
|
@@ -835,7 +858,6 @@ The framework enforces rate limits automatically before calling the handler.
|
|
|
835
858
|
| `POST /api/:name` | RPC endpoint — dispatches any registered request handler |
|
|
836
859
|
| `POST /ai/request` | AI proxy — forwards to ugly.bot (requires auth) |
|
|
837
860
|
| `POST /api/client-error` | Client-side error capture |
|
|
838
|
-
| `POST /logs/client` | Client-side log ingestion |
|
|
839
861
|
| `GET /my_feedback` | User feedback history (markdown, requires auth) |
|
|
840
862
|
|
|
841
863
|
---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/cli/upgrade.ts"],"names":[],"mappings":"AA0BA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/cli/upgrade.ts"],"names":[],"mappings":"AA0BA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAoKhD"}
|
package/dist/cli/upgrade.js
CHANGED
|
@@ -26,17 +26,11 @@ export async function runUpgrade() {
|
|
|
26
26
|
throw new Error('Not an ugly-app project (no .uglyapp file found)');
|
|
27
27
|
}
|
|
28
28
|
// Print version info
|
|
29
|
+
const cliPkg = JSON.parse(await fs.readFile(path.join(__dirname, '../../package.json'), 'utf-8'));
|
|
29
30
|
const installedPkg = (await fs
|
|
30
31
|
.readJson(path.join(cwd, 'node_modules/ugly-app/package.json'))
|
|
31
32
|
.catch(() => ({ version: 'unknown' })));
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
latestVersion = execSync('npm show ugly-app version', { encoding: 'utf-8' }).trim();
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
// ignore
|
|
38
|
-
}
|
|
39
|
-
console.log(`[ugly-app] Upgrading from ${installedPkg.version} → ${latestVersion}`);
|
|
33
|
+
console.log(`[ugly-app] Upgrading from ${installedPkg.version} → ${cliPkg.version}`);
|
|
40
34
|
console.log('[ugly-app] Updating package...');
|
|
41
35
|
execSync('npm install ugly-app@latest', { cwd, stdio: 'inherit' });
|
|
42
36
|
const updated = [];
|
|
@@ -69,7 +63,7 @@ export async function runUpgrade() {
|
|
|
69
63
|
...userPkg,
|
|
70
64
|
scripts: { ...userPkg.scripts, ...tmplPkg.scripts },
|
|
71
65
|
devDependencies: { ...userPkg.devDependencies, ...tmplPkg.devDependencies },
|
|
72
|
-
dependencies: { ...userPkg.dependencies, ...tmplPkg.dependencies },
|
|
66
|
+
dependencies: { ...userPkg.dependencies, ...tmplPkg.dependencies, 'ugly-app': userPkg.dependencies?.['ugly-app'] ?? tmplPkg.dependencies?.['ugly-app'] },
|
|
73
67
|
};
|
|
74
68
|
await fs.writeJson(path.join(cwd, 'package.json'), merged, { spaces: 2 });
|
|
75
69
|
updated.push('package.json');
|
|
@@ -81,12 +75,13 @@ export async function runUpgrade() {
|
|
|
81
75
|
const userGitignore = (await fs.pathExists(userGitignorePath))
|
|
82
76
|
? await fs.readFile(userGitignorePath, 'utf-8')
|
|
83
77
|
: '';
|
|
84
|
-
const
|
|
78
|
+
const normalize = (s) => s.trim().replace(/\/+$/, '');
|
|
79
|
+
const existingEntries = new Set(userGitignore.split('\n').map(normalize));
|
|
85
80
|
const newEntries = tmplGitignore
|
|
86
81
|
.split('\n')
|
|
87
82
|
.filter((l) => {
|
|
88
83
|
const trimmed = l.trim();
|
|
89
|
-
return (trimmed && !trimmed.startsWith('#') && !existingEntries.has(trimmed));
|
|
84
|
+
return (trimmed && !trimmed.startsWith('#') && !existingEntries.has(normalize(trimmed)));
|
|
90
85
|
})
|
|
91
86
|
.join('\n')
|
|
92
87
|
.trim();
|
package/dist/cli/upgrade.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/cli/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAE9D,MAAM,YAAY,GAAG;IACnB,eAAe;IACf,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;IACpB,eAAe;IACf,mBAAmB;IACnB,WAAW;IACX,sBAAsB;IACtB,mBAAmB;IACnB,uBAAuB;CACxB,CAAC;AAEF,uFAAuF;AACvF,MAAM,aAAa,GAAyC,EAAE,CAAC;AAC/D,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,qBAAqB;IACrB,MAAM,
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/cli/upgrade.ts"],"names":[],"mappings":"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"}
|