balda-js 0.0.1 → 0.0.2

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 (74) hide show
  1. package/lib/cli.d.ts +6 -0
  2. package/lib/cli.js +929 -0
  3. package/lib/cli.js.map +1 -0
  4. package/lib/index.cjs +3384 -0
  5. package/lib/index.cjs.map +1 -0
  6. package/lib/index.d.cts +1492 -0
  7. package/lib/index.d.ts +1492 -0
  8. package/lib/index.js +3327 -0
  9. package/lib/index.js.map +1 -0
  10. package/package.json +1 -1
  11. package/.husky/pre-commit +0 -19
  12. package/.nvmrc +0 -1
  13. package/docs/README.md +0 -135
  14. package/docs/blog/authors.yml +0 -6
  15. package/docs/blog/tags.yml +0 -4
  16. package/docs/cli.md +0 -109
  17. package/docs/docs/core-concepts/controllers.md +0 -393
  18. package/docs/docs/core-concepts/middleware.md +0 -302
  19. package/docs/docs/core-concepts/request-response.md +0 -486
  20. package/docs/docs/core-concepts/routing.md +0 -388
  21. package/docs/docs/core-concepts/server.md +0 -332
  22. package/docs/docs/cron/overview.md +0 -70
  23. package/docs/docs/examples/rest-api.md +0 -595
  24. package/docs/docs/getting-started/configuration.md +0 -168
  25. package/docs/docs/getting-started/installation.md +0 -125
  26. package/docs/docs/getting-started/quick-start.md +0 -273
  27. package/docs/docs/intro.md +0 -46
  28. package/docs/docs/plugins/cookie.md +0 -424
  29. package/docs/docs/plugins/cors.md +0 -295
  30. package/docs/docs/plugins/file.md +0 -382
  31. package/docs/docs/plugins/helmet.md +0 -388
  32. package/docs/docs/plugins/json.md +0 -338
  33. package/docs/docs/plugins/log.md +0 -592
  34. package/docs/docs/plugins/overview.md +0 -390
  35. package/docs/docs/plugins/rate-limiter.md +0 -347
  36. package/docs/docs/plugins/static.md +0 -352
  37. package/docs/docs/plugins/swagger.md +0 -411
  38. package/docs/docs/plugins/urlencoded.md +0 -76
  39. package/docs/docs/testing/examples.md +0 -384
  40. package/docs/docs/testing/mock-server.md +0 -311
  41. package/docs/docs/testing/overview.md +0 -76
  42. package/docs/docusaurus.config.ts +0 -144
  43. package/docs/intro.md +0 -78
  44. package/docs/package.json +0 -46
  45. package/docs/sidebars.ts +0 -72
  46. package/docs/static/.nojekyll +0 -0
  47. package/docs/static/img/docusaurus-social-card.jpg +0 -0
  48. package/docs/static/img/docusaurus.png +0 -0
  49. package/docs/static/img/favicon.ico +0 -0
  50. package/docs/static/img/logo.svg +0 -1
  51. package/docs/static/img/undraw_docusaurus_mountain.svg +0 -37
  52. package/docs/static/img/undraw_docusaurus_react.svg +0 -170
  53. package/docs/static/img/undraw_docusaurus_tree.svg +0 -40
  54. package/docs/tsconfig.json +0 -8
  55. package/speed_test.sh +0 -3
  56. package/test/benchmark/index.ts +0 -17
  57. package/test/cli/cli.ts +0 -7
  58. package/test/commands/test.ts +0 -42
  59. package/test/controllers/file_upload.ts +0 -29
  60. package/test/controllers/urlencoded.ts +0 -13
  61. package/test/controllers/users.ts +0 -111
  62. package/test/cron/index.ts +0 -6
  63. package/test/cron/test_cron.ts +0 -8
  64. package/test/cron/test_cron_imported.ts +0 -8
  65. package/test/native_env.ts +0 -16
  66. package/test/resources/test.txt +0 -1
  67. package/test/server/index.ts +0 -3
  68. package/test/server/instance.ts +0 -63
  69. package/test/suite/upload.test.ts +0 -23
  70. package/test/suite/urlencoded.test.ts +0 -23
  71. package/test/suite/users.test.ts +0 -76
  72. package/todo.md +0 -9
  73. package/tsconfig.json +0 -24
  74. package/vitest.config.ts +0 -17
@@ -1,76 +0,0 @@
1
- # Testing Overview
2
-
3
- Balda.js provides comprehensive testing capabilities with support for multiple JavaScript runtimes and a powerful MockServer for testing HTTP endpoints without starting a real server.
4
-
5
- ## Multi-Runtime Support
6
-
7
- Balda.js supports testing across multiple JavaScript runtimes:
8
-
9
- - **Node.js** - Primary runtime with full feature support
10
- - **Bun** - Fast alternative runtime with native TypeScript support
11
- - **Deno** - Modern runtime with built-in security features
12
-
13
- ## Test Structure
14
-
15
- ```
16
- test/
17
- ├── suite/ # Test suites for different features
18
- │ ├── users.test.ts
19
- │ ├── upload.test.ts
20
- │ └── urlencoded.test.ts
21
- ├── controllers/ # Controller implementations for testing
22
- │ ├── users.ts
23
- │ ├── file_upload.ts
24
- │ └── urlencoded.ts
25
- ├── server/ # Test server configuration
26
- │ ├── instance.ts
27
- │ └── index.ts
28
- └── benchmark/ # Performance testing
29
- └── index.ts
30
- ```
31
-
32
- ## Running Tests
33
-
34
- ### Node.js
35
- ```bash
36
- # Run all tests
37
- yarn test
38
-
39
- # Run tests in watch mode
40
- yarn test:watch
41
-
42
- # Run tests with coverage
43
- yarn test:coverage
44
- ```
45
-
46
- ### Bun
47
- ```bash
48
- # Run tests with Bun
49
- yarn test:bun
50
- ```
51
-
52
- ### Deno
53
- ```bash
54
- # Run tests with Deno
55
- yarn test:deno
56
- ```
57
-
58
- ## Test Scripts
59
-
60
- The project includes several test-related scripts:
61
-
62
- - `test` - Run tests with Vitest
63
- - `test:watch` - Run tests in watch mode
64
- - `test:coverage` - Run tests with coverage reporting
65
- - `test:bun` - Run tests with Bun
66
- - `test:deno` - Run tests with Deno
67
- - `benchmark` - Run performance benchmarks
68
-
69
- ## Pre-commit Testing
70
-
71
- Tests are automatically run on pre-commit hooks across all supported runtimes to ensure compatibility and prevent regressions.
72
-
73
- ## Next Steps
74
-
75
- - [MockServer Guide](./mock-server.md) - Learn how to use MockServer for testing
76
- - [Testing Examples](./examples.md) - Practical testing examples and patterns
@@ -1,144 +0,0 @@
1
- import type * as Preset from "@docusaurus/preset-classic";
2
- import type { Config } from "@docusaurus/types";
3
- import { themes as prismThemes } from "prism-react-renderer";
4
-
5
- // This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)
6
-
7
- const config: Config = {
8
- title: "Balda.js",
9
- tagline:
10
- "Simple cross-runtime, fastapi-inspired Node.js backend framework for Node.js, Bun, and Deno",
11
- favicon: "img/favicon.ico",
12
-
13
- // Future flags, see https://docusaurus.io/docs/api/docusaurus-config#future
14
- future: {
15
- v4: true, // Improve compatibility with the upcoming Docusaurus v4
16
- },
17
-
18
- // Set the production url of your site here
19
- url: "https://frasan00.github.io",
20
- // Set the /<baseUrl>/ pathname under which your site is served
21
- // For GitHub pages deployment, it is often '/<projectName>/'
22
- baseUrl: "/balda-js/",
23
-
24
- // GitHub pages deployment config.
25
- // If you aren't using GitHub pages, you don't need these.
26
- organizationName: "Frasan00", // Usually your GitHub org/user name.
27
- projectName: "balda-js", // Usually your repo name.
28
-
29
- onBrokenLinks: "throw",
30
- onBrokenMarkdownLinks: "warn",
31
-
32
- // Even if you don't use internationalization, you can use this field to set
33
- // useful metadata like html lang. For example, if your site is Chinese, you
34
- // may want to replace "en" with "zh-Hans".
35
- i18n: {
36
- defaultLocale: "en",
37
- locales: ["en"],
38
- },
39
-
40
- presets: [
41
- [
42
- "classic",
43
- {
44
- docs: {
45
- sidebarPath: "./sidebars.ts",
46
- // Please change this to your repo.
47
- // Remove this to remove the "edit this page" links.
48
- editUrl: "https://github.com/Frasan00/balda-js/tree/main/docs/",
49
- },
50
- blog: {
51
- showReadingTime: true,
52
- feedOptions: {
53
- type: ["rss", "atom"],
54
- xslt: true,
55
- },
56
- // Please change this to your repo.
57
- // Remove this to remove the "edit this page" links.
58
- editUrl: "https://github.com/Frasan00/balda-js/tree/main/docs/blog",
59
- // Useful options to enforce blogging best practices
60
- onInlineTags: "warn",
61
- onInlineAuthors: "warn",
62
- onUntruncatedBlogPosts: "warn",
63
- },
64
- theme: {
65
- customCss: "./src/css/custom.css",
66
- },
67
- } satisfies Preset.Options,
68
- ],
69
- ],
70
-
71
- themeConfig: {
72
- // Replace with your project's social card
73
- image: "img/balda-social-card.jpg",
74
- navbar: {
75
- title: "Balda.js",
76
- items: [
77
- {
78
- type: "docSidebar",
79
- sidebarId: "docs",
80
- position: "left",
81
- label: "Documentation",
82
- },
83
- // { to: "/blog", label: "Blog", position: "left" },
84
- {
85
- type: "html",
86
- position: "right",
87
- value: '<span class="badge badge--secondary">Beta</span>',
88
- },
89
- {
90
- href: "https://github.com/Frasan00/balda-js",
91
- label: "GitHub",
92
- position: "right",
93
- },
94
- ],
95
- },
96
- footer: {
97
- style: "dark",
98
- links: [
99
- {
100
- title: "Documentation",
101
- items: [
102
- {
103
- label: "Getting Started",
104
- to: "/docs/getting-started/installation",
105
- },
106
- {
107
- label: "Core Concepts",
108
- to: "/docs/core-concepts/server",
109
- },
110
- {
111
- label: "Plugins",
112
- to: "/docs/plugins/overview",
113
- },
114
- ],
115
- },
116
- {
117
- title: "Community",
118
- items: [
119
- {
120
- label: "GitHub",
121
- href: "https://github.com/Frasan00/balda-js",
122
- },
123
- {
124
- label: "Issues",
125
- href: "https://github.com/Frasan00/balda-js/issues",
126
- },
127
- {
128
- label: "Discussions",
129
- href: "https://github.com/Frasan00/balda-js/discussions",
130
- },
131
- ],
132
- },
133
- ],
134
- copyright: `Copyright © ${new Date().getFullYear()} Balda.js. Built with Docusaurus.`,
135
- },
136
- prism: {
137
- theme: prismThemes.github,
138
- darkTheme: prismThemes.dracula,
139
- additionalLanguages: ["typescript", "bash", "json"],
140
- },
141
- } satisfies Preset.ThemeConfig,
142
- };
143
-
144
- export default config;
package/docs/intro.md DELETED
@@ -1,78 +0,0 @@
1
- ---
2
- sidebar_position: 1
3
- ---
4
-
5
- # Welcome to Balda.js
6
-
7
- Balda.js is a modern, lightweight backend framework designed for Node.js, Bun, and Deno. It provides a simple and intuitive API for building fast, scalable web applications with TypeScript support.
8
-
9
- ## Key Features
10
-
11
- - **Multi-Runtime Support**: Run on Node.js, Bun, or Deno with the same codebase
12
- - **Decorator-Based API**: Clean and intuitive decorators for defining routes and controllers
13
- - **Built-in Plugins**: Comprehensive set of plugins for common web development needs
14
- - **TypeScript First**: Full TypeScript support with excellent type inference
15
- - **CLI Tools**: Built-in command-line interface for scaffolding and development
16
- - **Cron Jobs**: Easy scheduling of background tasks
17
- - **Validation & Serialization**: Built-in request validation and response serialization
18
- - **Testing Support**: Mock server for easy testing
19
-
20
- ## Quick Example
21
-
22
- ```typescript
23
- import { Server, controller, get, post } from 'balda-js';
24
-
25
- const server = new Server({
26
- port: 3000,
27
- plugins: {
28
- cors: { origin: '*' },
29
- json: { sizeLimit: '1mb' }
30
- }
31
- });
32
-
33
- @controller('/users')
34
- export class UsersController {
35
- @get('/')
36
- async getUsers(req, res) {
37
- res.json([{ id: 1, name: 'John' }]);
38
- }
39
-
40
- @post('/')
41
- async createUser(req, res) {
42
- const user = req.body;
43
- res.created(user);
44
- }
45
- }
46
-
47
- server.listen();
48
- ```
49
-
50
- ## Why Balda.js?
51
-
52
- - **Simple**: Minimal boilerplate, maximum productivity
53
- - **Fast**: Built for performance with modern JavaScript engines
54
- - **Flexible**: Plugin architecture allows you to use only what you need
55
- - **Modern**: Leverages the latest JavaScript features and best practices
56
- - **Cross-Platform**: Write once, run anywhere with Node.js, Bun, or Deno
57
-
58
- ## Getting Started
59
-
60
- Ready to build your first Balda.js application? Check out our [Quick Start Guide](./getting-started/quick-start) to get up and running in minutes.
61
-
62
- ## Runtime Support
63
-
64
- Balda.js supports multiple JavaScript runtimes:
65
-
66
- - **Node.js**: Full support with all features
67
- - **Bun**: Optimized for Bun's performance benefits
68
- - **Deno**: Native Deno support with security features
69
-
70
- ## Community
71
-
72
- - [GitHub Repository](https://github.com/Frasan00/balda-js)
73
- - [Issues & Bug Reports](https://github.com/Frasan00/balda-js/issues)
74
- - [Discussions](https://github.com/Frasan00/balda-js/discussions)
75
-
76
- ## License
77
-
78
- Balda.js is licensed under the MIT License.
package/docs/package.json DELETED
@@ -1,46 +0,0 @@
1
- {
2
- "name": "docs",
3
- "version": "0.0.0",
4
- "scripts": {
5
- "docusaurus": "docusaurus",
6
- "start": "docusaurus start",
7
- "build": "docusaurus build",
8
- "swizzle": "docusaurus swizzle",
9
- "deploy": "docusaurus deploy",
10
- "clear": "docusaurus clear",
11
- "serve": "docusaurus serve",
12
- "write-translations": "docusaurus write-translations",
13
- "write-heading-ids": "docusaurus write-heading-ids",
14
- "typecheck": "tsc"
15
- },
16
- "dependencies": {
17
- "@docusaurus/core": "3.8.1",
18
- "@docusaurus/preset-classic": "3.8.1",
19
- "@mdx-js/react": "^3.0.0",
20
- "clsx": "^2.0.0",
21
- "prism-react-renderer": "^2.3.0",
22
- "react": "^19.0.0",
23
- "react-dom": "^19.0.0"
24
- },
25
- "devDependencies": {
26
- "@docusaurus/module-type-aliases": "3.8.1",
27
- "@docusaurus/tsconfig": "3.8.1",
28
- "@docusaurus/types": "3.8.1",
29
- "typescript": "~5.6.2"
30
- },
31
- "browserslist": {
32
- "production": [
33
- ">0.5%",
34
- "not dead",
35
- "not op_mini all"
36
- ],
37
- "development": [
38
- "last 3 chrome version",
39
- "last 3 firefox version",
40
- "last 5 safari version"
41
- ]
42
- },
43
- "engines": {
44
- "node": ">=18.0"
45
- }
46
- }
package/docs/sidebars.ts DELETED
@@ -1,72 +0,0 @@
1
- import type { SidebarsConfig } from '@docusaurus/plugin-content-docs';
2
-
3
- // This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)
4
-
5
- /**
6
- * Creating a sidebar enables you to:
7
- - create an ordered group of docs
8
- - render a sidebar for each doc of that group
9
- - provide next/previous navigation
10
-
11
- The sidebars can be generated from the filesystem, or explicitly defined here.
12
-
13
- Create as many sidebars as you want.
14
- */
15
- const sidebars: SidebarsConfig = {
16
- docs: [
17
- 'intro',
18
- {
19
- type: 'category',
20
- label: 'Getting Started',
21
- items: [
22
- 'getting-started/installation',
23
- 'getting-started/quick-start',
24
- 'getting-started/configuration',
25
- ],
26
- },
27
- {
28
- type: 'category',
29
- label: 'Core Concepts',
30
- items: [
31
- 'core-concepts/server',
32
- 'core-concepts/controllers',
33
- 'core-concepts/routing',
34
- 'core-concepts/middleware',
35
- 'core-concepts/request-response',
36
- ],
37
- },
38
- {
39
- type: 'category',
40
- label: 'Plugins',
41
- items: [
42
- 'plugins/overview',
43
- 'plugins/swagger',
44
- ],
45
- },
46
- {
47
- type: 'category',
48
- label: 'Examples',
49
- items: [
50
- 'examples/rest-api',
51
- ],
52
- },
53
- {
54
- type: 'category',
55
- label: 'Testing',
56
- items: [
57
- 'testing/overview',
58
- 'testing/mock-server',
59
- 'testing/examples',
60
- ],
61
- },
62
- {
63
- type: 'category',
64
- label: 'Cron',
65
- items: [
66
- 'cron/overview',
67
- ],
68
- },
69
- ],
70
- };
71
-
72
- export default sidebars;
File without changes
Binary file
Binary file
@@ -1 +0,0 @@
1
- <svg width="200" height="200" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path fill="#FFF" d="M99 52h84v34H99z"/><path d="M23 163c-7.398 0-13.843-4.027-17.303-10A19.886 19.886 0 0 0 3 163c0 11.046 8.954 20 20 20h20v-20H23z" fill="#3ECC5F"/><path d="M112.98 57.376L183 53V43c0-11.046-8.954-20-20-20H73l-2.5-4.33c-1.112-1.925-3.889-1.925-5 0L63 23l-2.5-4.33c-1.111-1.925-3.889-1.925-5 0L53 23l-2.5-4.33c-1.111-1.925-3.889-1.925-5 0L43 23c-.022 0-.042.003-.065.003l-4.142-4.141c-1.57-1.571-4.252-.853-4.828 1.294l-1.369 5.104-5.192-1.392c-2.148-.575-4.111 1.389-3.535 3.536l1.39 5.193-5.102 1.367c-2.148.576-2.867 3.259-1.296 4.83l4.142 4.142c0 .021-.003.042-.003.064l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 53l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 63l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 73l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 83l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 93l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 103l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 113l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 123l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 133l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 143l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 153l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 163c0 11.046 8.954 20 20 20h120c11.046 0 20-8.954 20-20V83l-70.02-4.376A10.645 10.645 0 0 1 103 68c0-5.621 4.37-10.273 9.98-10.624" fill="#3ECC5F"/><path fill="#3ECC5F" d="M143 183h30v-40h-30z"/><path d="M193 158c-.219 0-.428.037-.639.064-.038-.15-.074-.301-.116-.451A5 5 0 0 0 190.32 148a4.96 4.96 0 0 0-3.016 1.036 26.531 26.531 0 0 0-.335-.336 4.955 4.955 0 0 0 1.011-2.987 5 5 0 0 0-9.599-1.959c-.148-.042-.297-.077-.445-.115.027-.211.064-.42.064-.639a5 5 0 0 0-5-5 5 5 0 0 0-5 5c0 .219.037.428.064.639-.148.038-.297.073-.445.115a4.998 4.998 0 0 0-9.599 1.959c0 1.125.384 2.151 1.011 2.987-3.717 3.632-6.031 8.693-6.031 14.3 0 11.046 8.954 20 20 20 9.339 0 17.16-6.41 19.361-15.064.211.027.42.064.639.064a5 5 0 0 0 5-5 5 5 0 0 0-5-5" fill="#44D860"/><path fill="#3ECC5F" d="M153 123h30v-20h-30z"/><path d="M193 115.5a2.5 2.5 0 1 0 0-5c-.109 0-.214.019-.319.032-.02-.075-.037-.15-.058-.225a2.501 2.501 0 0 0-.963-4.807c-.569 0-1.088.197-1.508.518a6.653 6.653 0 0 0-.168-.168c.314-.417.506-.931.506-1.494a2.5 2.5 0 0 0-4.8-.979A9.987 9.987 0 0 0 183 103c-5.522 0-10 4.478-10 10s4.478 10 10 10c.934 0 1.833-.138 2.69-.377a2.5 2.5 0 0 0 4.8-.979c0-.563-.192-1.077-.506-1.494.057-.055.113-.111.168-.168.42.321.939.518 1.508.518a2.5 2.5 0 0 0 .963-4.807c.021-.074.038-.15.058-.225.105.013.21.032.319.032" fill="#44D860"/><path d="M63 55.5a2.5 2.5 0 0 1-2.5-2.5c0-4.136-3.364-7.5-7.5-7.5s-7.5 3.364-7.5 7.5a2.5 2.5 0 1 1-5 0c0-6.893 5.607-12.5 12.5-12.5S65.5 46.107 65.5 53a2.5 2.5 0 0 1-2.5 2.5" fill="#000"/><path d="M103 183h60c11.046 0 20-8.954 20-20V93h-60c-11.046 0-20 8.954-20 20v70z" fill="#FFFF50"/><path d="M168.02 124h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0-49.814h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 19.814h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2M183 61.611c-.012 0-.022-.006-.034-.005-3.09.105-4.552 3.196-5.842 5.923-1.346 2.85-2.387 4.703-4.093 4.647-1.889-.068-2.969-2.202-4.113-4.46-1.314-2.594-2.814-5.536-5.963-5.426-3.046.104-4.513 2.794-5.807 5.167-1.377 2.528-2.314 4.065-4.121 3.994-1.927-.07-2.951-1.805-4.136-3.813-1.321-2.236-2.848-4.75-5.936-4.664-2.994.103-4.465 2.385-5.763 4.4-1.373 2.13-2.335 3.428-4.165 3.351-1.973-.07-2.992-1.51-4.171-3.177-1.324-1.873-2.816-3.993-5.895-3.89-2.928.1-4.399 1.97-5.696 3.618-1.232 1.564-2.194 2.802-4.229 2.724a1 1 0 0 0-.072 2c3.017.101 4.545-1.8 5.872-3.487 1.177-1.496 2.193-2.787 4.193-2.855 1.926-.082 2.829 1.115 4.195 3.045 1.297 1.834 2.769 3.914 5.731 4.021 3.103.104 4.596-2.215 5.918-4.267 1.182-1.834 2.202-3.417 4.15-3.484 1.793-.067 2.769 1.35 4.145 3.681 1.297 2.197 2.766 4.686 5.787 4.796 3.125.108 4.634-2.62 5.949-5.035 1.139-2.088 2.214-4.06 4.119-4.126 1.793-.042 2.728 1.595 4.111 4.33 1.292 2.553 2.757 5.445 5.825 5.556l.169.003c3.064 0 4.518-3.075 5.805-5.794 1.139-2.41 2.217-4.68 4.067-4.773v-2z" fill="#000"/><path fill="#3ECC5F" d="M83 183h40v-40H83z"/><path d="M143 158c-.219 0-.428.037-.639.064-.038-.15-.074-.301-.116-.451A5 5 0 0 0 140.32 148a4.96 4.96 0 0 0-3.016 1.036 26.531 26.531 0 0 0-.335-.336 4.955 4.955 0 0 0 1.011-2.987 5 5 0 0 0-9.599-1.959c-.148-.042-.297-.077-.445-.115.027-.211.064-.42.064-.639a5 5 0 0 0-5-5 5 5 0 0 0-5 5c0 .219.037.428.064.639-.148.038-.297.073-.445.115a4.998 4.998 0 0 0-9.599 1.959c0 1.125.384 2.151 1.011 2.987-3.717 3.632-6.031 8.693-6.031 14.3 0 11.046 8.954 20 20 20 9.339 0 17.16-6.41 19.361-15.064.211.027.42.064.639.064a5 5 0 0 0 5-5 5 5 0 0 0-5-5" fill="#44D860"/><path fill="#3ECC5F" d="M83 123h40v-20H83z"/><path d="M133 115.5a2.5 2.5 0 1 0 0-5c-.109 0-.214.019-.319.032-.02-.075-.037-.15-.058-.225a2.501 2.501 0 0 0-.963-4.807c-.569 0-1.088.197-1.508.518a6.653 6.653 0 0 0-.168-.168c.314-.417.506-.931.506-1.494a2.5 2.5 0 0 0-4.8-.979A9.987 9.987 0 0 0 123 103c-5.522 0-10 4.478-10 10s4.478 10 10 10c.934 0 1.833-.138 2.69-.377a2.5 2.5 0 0 0 4.8-.979c0-.563-.192-1.077-.506-1.494.057-.055.113-.111.168-.168.42.321.939.518 1.508.518a2.5 2.5 0 0 0 .963-4.807c.021-.074.038-.15.058-.225.105.013.21.032.319.032" fill="#44D860"/><path d="M143 41.75c-.16 0-.33-.02-.49-.05a2.52 2.52 0 0 1-.47-.14c-.15-.06-.29-.14-.431-.23-.13-.09-.259-.2-.38-.31-.109-.12-.219-.24-.309-.38s-.17-.28-.231-.43a2.619 2.619 0 0 1-.189-.96c0-.16.02-.33.05-.49.03-.16.08-.31.139-.47.061-.15.141-.29.231-.43.09-.13.2-.26.309-.38.121-.11.25-.22.38-.31.141-.09.281-.17.431-.23.149-.06.31-.11.47-.14.32-.07.65-.07.98 0 .159.03.32.08.47.14.149.06.29.14.43.23.13.09.259.2.38.31.11.12.22.25.31.38.09.14.17.28.23.43.06.16.11.31.14.47.029.16.05.33.05.49 0 .66-.271 1.31-.73 1.77-.121.11-.25.22-.38.31-.14.09-.281.17-.43.23a2.565 2.565 0 0 1-.96.19m20-1.25c-.66 0-1.3-.27-1.771-.73a3.802 3.802 0 0 1-.309-.38c-.09-.14-.17-.28-.231-.43a2.619 2.619 0 0 1-.189-.96c0-.66.27-1.3.729-1.77.121-.11.25-.22.38-.31.141-.09.281-.17.431-.23.149-.06.31-.11.47-.14.32-.07.66-.07.98 0 .159.03.32.08.47.14.149.06.29.14.43.23.13.09.259.2.38.31.459.47.73 1.11.73 1.77 0 .16-.021.33-.05.49-.03.16-.08.32-.14.47-.07.15-.14.29-.23.43-.09.13-.2.26-.31.38-.121.11-.25.22-.38.31-.14.09-.281.17-.43.23a2.565 2.565 0 0 1-.96.19" fill="#000"/></g></svg>
@@ -1,37 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="400" height="300" viewBox="0 0 400 300">
2
- <defs>
3
- <linearGradient id="mountain-gradient" x1="0%" y1="0%" x2="0%" y2="100%">
4
- <stop offset="0%" style="stop-color:#667eea;stop-opacity:1" />
5
- <stop offset="100%" style="stop-color:#764ba2;stop-opacity:1" />
6
- </linearGradient>
7
- <linearGradient id="sky-gradient" x1="0%" y1="0%" x2="0%" y2="100%">
8
- <stop offset="0%" style="stop-color:#a8edea;stop-opacity:1" />
9
- <stop offset="100%" style="stop-color:#fed6e3;stop-opacity:1" />
10
- </linearGradient>
11
- </defs>
12
-
13
- <!-- Sky background -->
14
- <rect width="400" height="300" fill="url(#sky-gradient)"/>
15
-
16
- <!-- Mountains -->
17
- <path d="M0,300 L0,200 L50,150 L100,180 L150,120 L200,160 L250,100 L300,140 L350,80 L400,120 L400,300 Z"
18
- fill="url(#mountain-gradient)" opacity="0.8"/>
19
-
20
- <!-- Second mountain range -->
21
- <path d="M0,300 L0,220 L30,190 L60,210 L90,170 L120,200 L150,160 L180,190 L210,150 L240,180 L270,140 L300,170 L330,130 L360,160 L390,120 L400,140 L400,300 Z"
22
- fill="url(#mountain-gradient)" opacity="0.6"/>
23
-
24
- <!-- Sun -->
25
- <circle cx="320" cy="80" r="25" fill="#ffd700" opacity="0.8"/>
26
-
27
- <!-- Clouds -->
28
- <ellipse cx="100" cy="60" rx="30" ry="15" fill="white" opacity="0.7"/>
29
- <ellipse cx="130" cy="60" rx="25" ry="12" fill="white" opacity="0.7"/>
30
- <ellipse cx="160" cy="60" rx="20" ry="10" fill="white" opacity="0.7"/>
31
-
32
- <ellipse cx="250" cy="40" rx="20" ry="10" fill="white" opacity="0.6"/>
33
- <ellipse cx="270" cy="40" rx="15" ry="8" fill="white" opacity="0.6"/>
34
-
35
- <!-- Ground -->
36
- <rect x="0" y="280" width="400" height="20" fill="#8B4513" opacity="0.3"/>
37
- </svg>