diff --git a/package-lock.json b/package-lock.json index 8c4a2fe7..1a700623 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "open-meteo-website", "version": "1.0.0", "dependencies": { + "@openmeteo/file-reader": "^0.0.13", "@poppanator/sveltekit-svg": "^6.0.0", "@shikijs/transformers": "^3.15.0", "@sveltejs/enhanced-img": "^0.8.0", @@ -385,6 +386,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -428,6 +430,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" } @@ -1667,6 +1670,7 @@ "integrity": "sha512-oxDR/NTEJ1k+UFVQElaNIk65E/Z83HK1z1WI3lQyhTtnNg4R5oVXaPzK3jcpKG8UHKDVuDQHzn+wsxSz8RP3aw==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@swc/helpers": "^0.5.0" } @@ -1773,6 +1777,21 @@ "node": ">= 8" } }, + "node_modules/@openmeteo/file-format-wasm": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@openmeteo/file-format-wasm/-/file-format-wasm-0.0.13.tgz", + "integrity": "sha512-OKl9OzMKjDBxOdnRW4TQnh3/jmb7y0niRkmpEABk607/KLdcmv3AQE/0PRNhpJ5BKhPRjECC5jgUX4PDjsGtqA==", + "license": "GPL-2.0-only" + }, + "node_modules/@openmeteo/file-reader": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@openmeteo/file-reader/-/file-reader-0.0.13.tgz", + "integrity": "sha512-hBQyc4C2GFRjFbMDwPg8fqcIynyWdzDeWHH64CxF75FDjN6SQM+Myw+kEllOPq3J2f2O1T1uPh/JhSjNcFmbEQ==", + "license": "GPL-2.0-only", + "dependencies": { + "@openmeteo/file-format-wasm": "^0.0.13" + } + }, "node_modules/@openmeteo/sdk": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/@openmeteo/sdk/-/sdk-1.19.0.tgz", @@ -2250,6 +2269,7 @@ "integrity": "sha512-GAAbkWrbRJvysL7+HOWs5v/+TmnRcEQPeED2sUcDFTHpPvRYADEtScL6x8hWuKp0DKauJVaVJLTjQVy9e7cMiw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@standard-schema/spec": "^1.0.0", "@sveltejs/acorn-typescript": "^1.0.5", @@ -2298,6 +2318,7 @@ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.0.tgz", "integrity": "sha512-nJsV36+o7rZUDlrnSduMNl11+RoDE1cKqOI0yUEBCcqFoAZOk47TwD3dPKS2WmRutke9StXnzsPBslY7prDM9w==", "license": "MIT", + "peer": true, "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^5.0.0", "debug": "^4.4.1", @@ -2948,6 +2969,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.0.tgz", "integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==", "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.46.0", "@typescript-eslint/types": "8.46.0", @@ -3374,6 +3396,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3888,6 +3911,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", @@ -4870,6 +4894,7 @@ "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -4952,6 +4977,7 @@ "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", "hasInstallScript": true, "license": "MIT", + "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -5038,6 +5064,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.0.tgz", "integrity": "sha512-iy2GE3MHrYTL5lrCtMZ0X1KLEKKUjmK0kzwcnefhR66txcEmXZD2YWgR5GNdcEwkNx3a0siYkSvl0vIC+Svjmg==", "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -6666,6 +6693,14 @@ "node": ">= 0.8.0" } }, + "node_modules/libphonenumber-js": { + "version": "1.12.26", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.26.tgz", + "integrity": "sha512-MagMOuqEXB2Pa90cWE+BoCmcKJx+de5uBIicaUkQ+uiEslZ0OBMNOkSZT/36syXNHu68UeayTxPm3DYM2IHoLQ==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/lightningcss": { "version": "1.30.1", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", @@ -7875,6 +7910,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -8012,6 +8048,7 @@ "integrity": "sha512-ujSB9uXHJKzM/2GBuE0hBOUgC77CN3Bnpqa+g80bkv3T3A93wL/xlzDATHhnhkzifz/UE2SNOvmbTz5hSkDlHw==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -8028,6 +8065,7 @@ "integrity": "sha512-pn1ra/0mPObzqoIQn/vUTR3ZZI6UuZ0sHqMK5x2jMLGrs53h0sXhkVuDcrlssHwIMk7FYrMjHBPoUSyyEEDlBQ==", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "prettier": "^3.0.0", "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" @@ -8393,6 +8431,7 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -9110,6 +9149,7 @@ "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.43.2.tgz", "integrity": "sha512-ro1umEzX8rT5JpCmlf0PPv7ncD8MdVob9e18bhwqTKNoLjS8kDvhVpaoYVPc+qMwDAOfcwJtyY7ZFSDbOaNPgA==", "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/remapping": "^2.3.4", "@jridgewell/sourcemap-codec": "^1.5.0", @@ -9263,6 +9303,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "devalue": "^5.3.2", "memoize-weak": "^1.0.2", @@ -9412,6 +9453,7 @@ "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==", "dev": true, "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/dcastil" @@ -9441,7 +9483,8 @@ "version": "4.1.11", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.11.tgz", "integrity": "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/tapable": { "version": "2.2.2", @@ -9746,6 +9789,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10061,6 +10105,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -10169,6 +10214,7 @@ "integrity": "sha512-gR7INfiVRwnEOkCk47faros/9McCZMp5LM+OMNWGLaDBSvJxIzwjgNFufkuePBNaesGRnLmNfW+ddbUJRZn0nQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/expect": "4.0.6", "@vitest/mocker": "4.0.6", @@ -10537,6 +10583,7 @@ "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 50b6f03c..d61c309f 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "zod": "^4.1.1" }, "dependencies": { + "@openmeteo/file-reader": "^0.0.13", "@poppanator/sveltekit-svg": "^6.0.0", "@shikijs/transformers": "^3.15.0", "@sveltejs/enhanced-img": "^0.8.0", diff --git a/src/lib/components/code/om-files/typescript-request.svx b/src/lib/components/code/om-files/typescript-request.svx new file mode 100644 index 00000000..4b1017ad --- /dev/null +++ b/src/lib/components/code/om-files/typescript-request.svx @@ -0,0 +1,41 @@ +```js +import { + OmDataType, + OmHttpBackend, + Range, + setupGlobalCache, +} from "@openmeteo/file-reader"; + +setupGlobalCache(); + +const backend = new OmHttpBackend({ + url: "https://map-tiles.open-meteo.com/data_spatial/dwd_icon/2025/11/11/0000Z/2025-11-11T0000.om", +}); + +const reader = await backend.asCachedReader(); + +const variableReader = await reader.getChildByName("temperature_2m"); + +if (!variableReader) { + throw new Error("Variable 'temperature_2m' not found"); +} + +const dimensions = variableReader.getDimensions(); +const readRanges = [ + { start: 0, end: dimensions[0] }, + { start: 0, end: dimensions[1] }, +]; + +const data = await variableReader.read({ + type: OmDataType.FloatArray, + ranges: readRanges, +}); + +console.log(data); + +variableReader.dispose(); +reader.dispose(); + +// for node +process.exit(); +``` diff --git a/src/lib/components/code/om-files/typescript-result.svx b/src/lib/components/code/om-files/typescript-result.svx new file mode 100644 index 00000000..848a8ed9 --- /dev/null +++ b/src/lib/components/code/om-files/typescript-result.svx @@ -0,0 +1,30 @@ +```typescript +Float32Array(4148639) [ + NaN, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + -44.45000076293945, -44.45000076293945, -44.45000076293945, -44.45000076293945, + ... 4148539 more items +] +``` diff --git a/src/lib/components/response/installs/om-files/python-install-code.ts b/src/lib/components/response/installs/om-files/python-install-code.ts new file mode 100644 index 00000000..540461c3 --- /dev/null +++ b/src/lib/components/response/installs/om-files/python-install-code.ts @@ -0,0 +1,2 @@ +export const pythonInstallCode = `
pip install openmeteo-requests
+pip install requests-cache retry-requests numpy pandas`;
diff --git a/src/lib/components/response/installs/om-files/typescript-install-code.ts b/src/lib/components/response/installs/om-files/typescript-install-code.ts
new file mode 100644
index 00000000..5a92b88a
--- /dev/null
+++ b/src/lib/components/response/installs/om-files/typescript-install-code.ts
@@ -0,0 +1 @@
+export const typescriptInstallCode = `npm install @openmeteo/file-reader`;
diff --git a/src/routes/en/docs/+layout.svelte b/src/routes/en/docs/+layout.svelte
index e8d4dc17..37c9167e 100644
--- a/src/routes/en/docs/+layout.svelte
+++ b/src/routes/en/docs/+layout.svelte
@@ -1,6 +1,4 @@
+
+