From 78483331587eeb3ab39e2d98280f0db462c24a7e Mon Sep 17 00:00:00 2001 From: roll Date: Fri, 31 Oct 2025 15:59:02 +0000 Subject: [PATCH 1/9] Rebased on native node/bun sqlite drivers --- database/adapters/create.ts | 6 ++-- database/adapters/sqlite.bun.ts | 7 +++++ database/adapters/sqlite.node.ts | 51 ++++++++++++++++++++++++++++++++ database/adapters/sqlite.spec.ts | 2 +- database/adapters/sqlite.ts | 14 +++++---- database/package.json | 2 ++ database/table/load.ts | 1 - pnpm-lock.yaml | 38 ++++++++++++++++++++++++ 8 files changed, 110 insertions(+), 11 deletions(-) create mode 100644 database/adapters/sqlite.bun.ts create mode 100644 database/adapters/sqlite.node.ts diff --git a/database/adapters/create.ts b/database/adapters/create.ts index 9c3c5f8b..68a2f9a2 100644 --- a/database/adapters/create.ts +++ b/database/adapters/create.ts @@ -1,7 +1,7 @@ import type { DatabaseFormat } from "../resource/index.ts" import { MysqlAdapter } from "./mysql.ts" import { PostgresqlAdapter } from "./postgresql.ts" -//import { SqliteAdapter } from "./sqlite.ts" +import { SqliteAdapter } from "./sqlite.ts" // TODO: Enable SQLite support @@ -11,8 +11,8 @@ export function createAdapter(format: DatabaseFormat) { return new PostgresqlAdapter() case "mysql": return new MysqlAdapter() - //case "sqlite": - // return new SqliteAdapter() + case "sqlite": + return new SqliteAdapter() default: throw new Error(`Unsupported database format: "${format}"`) } diff --git a/database/adapters/sqlite.bun.ts b/database/adapters/sqlite.bun.ts new file mode 100644 index 00000000..540d6ffa --- /dev/null +++ b/database/adapters/sqlite.bun.ts @@ -0,0 +1,7 @@ +// @ts-ignore +import { Database } from "bun:sqlite" +import { BunSqliteDialect } from "kysely-bun-sqlite" + +export function createBunSqliteDialect(path: string) { + return new BunSqliteDialect({ database: new Database(path) }) +} diff --git a/database/adapters/sqlite.node.ts b/database/adapters/sqlite.node.ts new file mode 100644 index 00000000..90b24e7f --- /dev/null +++ b/database/adapters/sqlite.node.ts @@ -0,0 +1,51 @@ +import { DatabaseSync } from "node:sqlite" +import { buildQueryFn, parseBigInt } from "kysely-generic-sqlite" +import { GenericSqliteDialect } from "kysely-generic-sqlite" +import type { IGenericSqlite } from "kysely-generic-sqlite" + +export function createNodeSqliteDialect(path: string) { + return new GenericSqliteDialect(() => + createSqliteExecutor(new DatabaseSync(path)), + ) +} + +function createSqliteExecutor(db: DatabaseSync): IGenericSqlite { + const getStmt = (sql: string) => { + const stmt = db.prepare(sql) + // We change it from original to use plain numbers + //stmt.setReadBigInts(true) + return stmt + } + + return { + db, + query: buildQueryFn({ + all: (sql, parameters = []) => + getStmt(sql) + .all(...parameters) + // We change it from original to make it work + // (by default it returns object with null prototype which breaks polars) + .map(row => ({ ...row })), + + run: (sql, parameters = []) => { + const { changes, lastInsertRowid } = getStmt(sql).run(...parameters) + return { + insertId: parseBigInt(lastInsertRowid), + numAffectedRows: parseBigInt(changes), + } + }, + }), + close: () => db.close(), + iterator: (isSelect, sql, parameters = []) => { + if (!isSelect) { + throw new Error("Only support select in stream()") + } + return ( + getStmt(sql) + .iterate(...parameters) // We change it from original to make it work + // (by default it returns object with null prototype which breaks polars) + .map(row => ({ ...row })) as any + ) + }, + } +} diff --git a/database/adapters/sqlite.spec.ts b/database/adapters/sqlite.spec.ts index bc903e25..5f16f8d3 100644 --- a/database/adapters/sqlite.spec.ts +++ b/database/adapters/sqlite.spec.ts @@ -16,7 +16,7 @@ const record1 = { id: 1, name: "english" } const record2 = { id: 2, name: "中文" } // TODO: Enable when libsql@0.6 is fixed -describe.skip("SqliteAdapter", () => { +describe("SqliteAdapter", () => { it("should infer schema", async () => { const path = getTempFilePath() diff --git a/database/adapters/sqlite.ts b/database/adapters/sqlite.ts index 3401b308..90b214bf 100644 --- a/database/adapters/sqlite.ts +++ b/database/adapters/sqlite.ts @@ -1,7 +1,5 @@ import type { FieldType } from "@dpkit/core" import { isLocalPathExist } from "@dpkit/file" -import { SqliteDialect } from "kysely" -import { Database } from "libsql/promise" import type { DatabaseType } from "../field/index.ts" import { BaseAdapter } from "./base.ts" @@ -18,10 +16,14 @@ export class SqliteAdapter extends BaseAdapter { } } - return new SqliteDialect({ - // @ts-ignore - database: new Database(path), - }) + // @ts-ignore + if (typeof Bun !== "undefined") { + const { createBunSqliteDialect } = await import("./sqlite.bun.ts") + return createBunSqliteDialect(path) + } else { + const { createNodeSqliteDialect } = await import("./sqlite.node.ts") + return createNodeSqliteDialect(path) + } } normalizeType(databaseType: DatabaseType): FieldType { diff --git a/database/package.json b/database/package.json index 15b5eac5..18e489aa 100644 --- a/database/package.json +++ b/database/package.json @@ -27,6 +27,8 @@ "@dpkit/core": "workspace:*", "@dpkit/table": "workspace:*", "kysely": "^0.28.5", + "kysely-bun-sqlite": "^0.4.0", + "kysely-generic-sqlite": "^1.2.1", "libsql": "^0.6.0-pre.20", "lru-cache": "^11.2.1", "mysql2": "^3.14.4", diff --git a/database/table/load.ts b/database/table/load.ts index 57317889..1e8a29f0 100644 --- a/database/table/load.ts +++ b/database/table/load.ts @@ -26,7 +26,6 @@ export async function loadDatabaseTable( const adapter = createAdapter(resource.format) const database = await adapter.connectDatabase(path) const records = await database.selectFrom(dialect.table).selectAll().execute() - console.log(records) let table = DataFrame(records).lazy() diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a26e3475..8e5dafca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -454,6 +454,12 @@ importers: kysely: specifier: ^0.28.5 version: 0.28.7 + kysely-bun-sqlite: + specifier: ^0.4.0 + version: 0.4.0(@types/react@19.2.2)(kysely@0.28.7) + kysely-generic-sqlite: + specifier: ^1.2.1 + version: 1.2.1(kysely@0.28.7) libsql: specifier: ^0.6.0-pre.20 version: 0.6.0-pre.20 @@ -3106,6 +3112,11 @@ packages: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} + bun-types@1.3.1: + resolution: {integrity: sha512-NMrcy7smratanWJ2mMXdpatalovtxVggkj11bScuWuiOoXTiKIu2eVS1/7qbyI/4yHedtsn175n4Sm4JcdHLXw==} + peerDependencies: + '@types/react': ^19 + bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -4330,6 +4341,17 @@ packages: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} + kysely-bun-sqlite@0.4.0: + resolution: {integrity: sha512-2EkQE5sT4ewiw7IWfJsAkpxJ/QPVKXKO5sRYI/xjjJIJlECuOdtG+ssYM0twZJySrdrmuildNPFYVreyu1EdZg==} + engines: {bun: '>=1.1.31'} + peerDependencies: + kysely: ^0.28.2 + + kysely-generic-sqlite@1.2.1: + resolution: {integrity: sha512-/Bs3/Uktn04nQ9g/4oSphLMEtSHkS5+j5hbKjK5gMqXQfqr/v3V3FKtoN4pLTmo2W35hNdrIpQnBukGL1zZc6g==} + peerDependencies: + kysely: '>=0.26' + kysely@0.28.7: resolution: {integrity: sha512-u/cAuTL4DRIiO2/g4vNGRgklEKNIj5Q3CG7RoUB5DV5SfEC2hMvPxKi0GWPmnzwL2ryIeud2VTcEEmqzTzEPNw==} engines: {node: '>=20.0.0'} @@ -9173,6 +9195,11 @@ snapshots: buffer-crc32@1.0.0: {} + bun-types@1.3.1(@types/react@19.2.2): + dependencies: + '@types/node': 24.2.0 + '@types/react': 19.2.2 + bytes@3.1.2: {} cac@6.7.14: {} @@ -10532,6 +10559,17 @@ snapshots: klona@2.0.6: {} + kysely-bun-sqlite@0.4.0(@types/react@19.2.2)(kysely@0.28.7): + dependencies: + bun-types: 1.3.1(@types/react@19.2.2) + kysely: 0.28.7 + transitivePeerDependencies: + - '@types/react' + + kysely-generic-sqlite@1.2.1(kysely@0.28.7): + dependencies: + kysely: 0.28.7 + kysely@0.28.7: {} libsql-darwin-arm64@0.6.0-pre.20: From 6b71453621dfdc1cf228374727e173070bfc832c Mon Sep 17 00:00:00 2001 From: roll Date: Fri, 31 Oct 2025 16:10:43 +0000 Subject: [PATCH 2/9] Removed libsql dependency --- cli/@compile.ts | 14 ++------------ database/package.json | 1 - 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/cli/@compile.ts b/cli/@compile.ts index fe938d28..099c8639 100644 --- a/cli/@compile.ts +++ b/cli/@compile.ts @@ -2,8 +2,6 @@ import { join } from "node:path" import { execa } from "execa" import metadata from "./package.json" with { type: "json" } -// TODO: Enable SQLite support - function makeShell(...paths: string[]) { return execa({ cwd: join(import.meta.dirname, ...paths), @@ -35,13 +33,12 @@ pnpm deploy compile // Remove binaries const binaries = [ - { polars: "nodejs-polars-linux-x64-gnu", libsql: "libsql-linux-x64-gnu" }, - { polars: "nodejs-polars-linux-x64-musl", libsql: "libsql-linux-x64-musl" }, + { polars: "nodejs-polars-linux-x64-gnu" }, + { polars: "nodejs-polars-linux-x64-musl" }, ] for (const binary of binaries) { await $compile`rm -rf node_modules/${binary.polars}` - //await $compile`rm -rf node_modules/${binary.libsql}` } // Compile executable @@ -51,31 +48,26 @@ const targets = [ name: "bun-linux-x64", dpkit: "linux-x64", polars: "nodejs-polars-linux-x64-gnu", - libsql: "libsql-linux-x64-gnu", }, { name: "bun-linux-arm64", dpkit: "linux-arm64", polars: "nodejs-polars-linux-arm64-gnu", - libsql: "libsql-linux-arm64-gnu", }, { name: "bun-darwin-x64", dpkit: "macos-x64", polars: "nodejs-polars-darwin-x64", - libsql: "libsql-darwin-x64", }, { name: "bun-darwin-arm64", dpkit: "macos-arm64", polars: "nodejs-polars-darwin-arm64", - libsql: "libsql-darwin-arm64", }, { name: "bun-windows-x64", dpkit: "windows-x64", polars: "nodejs-polars-win32-x64-msvc", - libsql: "libsql-win32-x64-msvc", }, ] @@ -83,7 +75,6 @@ for (const target of targets) { const folder = `dp-${metadata.version}-${target.dpkit}` for (const packageName of [target.polars]) { - //for (const packageName of [target.polars, target.libsql]) { const pack = await $compile`npm pack ${packageName}` await $compile`mkdir -p node_modules/${packageName}` await $compile`tar -xzf ${pack.stdout} -C node_modules/${packageName} --strip-components=1` @@ -106,7 +97,6 @@ for (const target of targets) { await $binaries`rm -rf ${folder}` await $compile`rm -rf node_modules/${target.polars}` - //await $compile`rm -rf node_modules/${target.libsql}` } // Clean artifacts (pnpm creates an unwanted dpkit folder) diff --git a/database/package.json b/database/package.json index 18e489aa..816ea334 100644 --- a/database/package.json +++ b/database/package.json @@ -29,7 +29,6 @@ "kysely": "^0.28.5", "kysely-bun-sqlite": "^0.4.0", "kysely-generic-sqlite": "^1.2.1", - "libsql": "^0.6.0-pre.20", "lru-cache": "^11.2.1", "mysql2": "^3.14.4", "nodejs-polars": "^0.22.1", From 0141c6599bb6a29b31b2baa672e1ac320d2f08c3 Mon Sep 17 00:00:00 2001 From: roll Date: Fri, 31 Oct 2025 16:29:56 +0000 Subject: [PATCH 3/9] Fixed sqlite adapter --- database/adapters/sqlite.bun.ts | 6 +++--- database/adapters/sqlite.node.ts | 6 ++++-- database/adapters/sqlite.ts | 13 +++++++++---- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/database/adapters/sqlite.bun.ts b/database/adapters/sqlite.bun.ts index 540d6ffa..dbb28c47 100644 --- a/database/adapters/sqlite.bun.ts +++ b/database/adapters/sqlite.bun.ts @@ -1,7 +1,7 @@ -// @ts-ignore -import { Database } from "bun:sqlite" import { BunSqliteDialect } from "kysely-bun-sqlite" -export function createBunSqliteDialect(path: string) { +export async function createBunSqliteDialect(path: string) { + // @ts-ignore + const { Database } = await import("bun:sqlite") return new BunSqliteDialect({ database: new Database(path) }) } diff --git a/database/adapters/sqlite.node.ts b/database/adapters/sqlite.node.ts index 90b24e7f..45e29713 100644 --- a/database/adapters/sqlite.node.ts +++ b/database/adapters/sqlite.node.ts @@ -1,9 +1,11 @@ -import { DatabaseSync } from "node:sqlite" +// @ts-nocheck import { buildQueryFn, parseBigInt } from "kysely-generic-sqlite" import { GenericSqliteDialect } from "kysely-generic-sqlite" import type { IGenericSqlite } from "kysely-generic-sqlite" -export function createNodeSqliteDialect(path: string) { +export async function createNodeSqliteDialect(path: string) { + const { DatabaseSync } = await import("node:sqlite") + return new GenericSqliteDialect(() => createSqliteExecutor(new DatabaseSync(path)), ) diff --git a/database/adapters/sqlite.ts b/database/adapters/sqlite.ts index 90b214bf..edade86e 100644 --- a/database/adapters/sqlite.ts +++ b/database/adapters/sqlite.ts @@ -3,6 +3,11 @@ import { isLocalPathExist } from "@dpkit/file" import type { DatabaseType } from "../field/index.ts" import { BaseAdapter } from "./base.ts" +// TODO: Currently, the solution is not optimal / hacky +// We need to rebase on proper sqlite dialect when it will be available +// - https://github.com/kysely-org/kysely/issues/1292 +// - https://github.com/oven-sh/bun/issues/20412 + export class SqliteAdapter extends BaseAdapter { nativeTypes = ["integer", "number", "string", "year"] satisfies FieldType[] @@ -19,11 +24,11 @@ export class SqliteAdapter extends BaseAdapter { // @ts-ignore if (typeof Bun !== "undefined") { const { createBunSqliteDialect } = await import("./sqlite.bun.ts") - return createBunSqliteDialect(path) - } else { - const { createNodeSqliteDialect } = await import("./sqlite.node.ts") - return createNodeSqliteDialect(path) + return await createBunSqliteDialect(path) } + + const { createNodeSqliteDialect } = await import("./sqlite.node.ts") + return await createNodeSqliteDialect(path) } normalizeType(databaseType: DatabaseType): FieldType { From e94de1dcf5021b20db9cb8af70276e9db777df4d Mon Sep 17 00:00:00 2001 From: roll Date: Fri, 31 Oct 2025 16:37:39 +0000 Subject: [PATCH 4/9] Fixed dependency issue --- pnpm-lock.yaml | 62 -------------------------------------------------- 1 file changed, 62 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8e5dafca..99584b51 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -460,9 +460,6 @@ importers: kysely-generic-sqlite: specifier: ^1.2.1 version: 1.2.1(kysely@0.28.7) - libsql: - specifier: ^0.6.0-pre.20 - version: 0.6.0-pre.20 lru-cache: specifier: ^11.2.1 version: 11.2.2 @@ -4356,42 +4353,6 @@ packages: resolution: {integrity: sha512-u/cAuTL4DRIiO2/g4vNGRgklEKNIj5Q3CG7RoUB5DV5SfEC2hMvPxKi0GWPmnzwL2ryIeud2VTcEEmqzTzEPNw==} engines: {node: '>=20.0.0'} - libsql-darwin-arm64@0.6.0-pre.20: - resolution: {integrity: sha512-ZRq6AL39vcvuSlriRVvte+ureH+AljDLN/KZb05YNfK3S/75rSawUFZ4Ek7c6jI1O+qsRyxIQ23TQnAOkkHEHQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - libsql-darwin-x64@0.6.0-pre.20: - resolution: {integrity: sha512-z8hvmnmII/yvMz1rDsidfaz4q7e22idGqsrIBQHyCQFWNJxZax0w0ONnqKDLPSSgXzY2LXTxHITXV61p/ptWrA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - libsql-linux-arm64-gnu@0.6.0-pre.20: - resolution: {integrity: sha512-w6CfqGuPTSVEfWbpKfoOvJ0v2HaRYpywGvBZOVh+fiGcZZ123YAMalSm2ZLVv0NnmqTe6ga1BsA86gehCeZ7BQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - libsql-linux-x64-gnu@0.6.0-pre.20: - resolution: {integrity: sha512-wm7Gba8sJpdLb4mQkHuHLSHaMWsWiVU8OwEVW8DDrXdY+/dbvYjmqJvhZOtbc7IA9m8a7OJO0acW2Y3N4raQCw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - libsql-linux-x64-musl@0.6.0-pre.20: - resolution: {integrity: sha512-Gk5u0a8qayKZU12TbxzBrnuit94dK3JeA5mACoIt8tmCnkacT5CQmQr8cZaGVAw1LTWLsWDNYiSJjO+hmTda2A==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - libsql@0.6.0-pre.20: - resolution: {integrity: sha512-5bWY19aojvO8O9MBOP6xs9Sy8Kjatpf3tJ+akWwKBfop5JVMTByDl5PNURTb27s8BRVi/CGM4D+EGanytF5ikA==} - engines: {node: '>= 10'} - cpu: [x64, arm64, wasm32, arm] - os: [darwin, linux, win32] - lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -10572,29 +10533,6 @@ snapshots: kysely@0.28.7: {} - libsql-darwin-arm64@0.6.0-pre.20: - optional: true - - libsql-darwin-x64@0.6.0-pre.20: - optional: true - - libsql-linux-arm64-gnu@0.6.0-pre.20: - optional: true - - libsql-linux-x64-gnu@0.6.0-pre.20: - optional: true - - libsql-linux-x64-musl@0.6.0-pre.20: - optional: true - - libsql@0.6.0-pre.20: - optionalDependencies: - libsql-darwin-arm64: 0.6.0-pre.20 - libsql-darwin-x64: 0.6.0-pre.20 - libsql-linux-arm64-gnu: 0.6.0-pre.20 - libsql-linux-x64-gnu: 0.6.0-pre.20 - libsql-linux-x64-musl: 0.6.0-pre.20 - lines-and-columns@1.2.4: {} linkify-it@5.0.0: From b87662a604ce14cfc2125bc522a7d6aa41669371 Mon Sep 17 00:00:00 2001 From: roll Date: Sat, 1 Nov 2025 10:22:54 +0000 Subject: [PATCH 5/9] Fixed svg/removed cloud --- browser/assets/datist-logo-text-dark.svg | 2 - browser/assets/datist-logo-text-light.svg | 2 - browser/assets/dpkit-logo.svg | 2 - cloud/.react-router/types/+future.ts | 9 - cloud/.react-router/types/+routes.ts | 449 - cloud/.react-router/types/+server-build.d.ts | 17 - .../.react-router/types/routes/+types/root.ts | 59 - .../types/routes/about/+types/route.ts | 104 - .../types/routes/home/+types/route.ts | 104 - .../routes/package/validate/+types/route.ts | 104 - .../types/routes/schema/infer/+types/route.ts | 104 - .../types/routes/sitemap/+types/page.ts | 62 - .../types/routes/sitemap/+types/root.ts | 62 - .../routes/system/redirects/+types/home.ts | 62 - .../routes/table/convert/+types/route.ts | 104 - .../routes/table/validate/+types/route.ts | 104 - cloud/Dockerfile | 14 - cloud/README.md | 3 - cloud/assets/about.png | Bin 2381 -> 0 bytes cloud/assets/logo.svg | 56 - cloud/components/Alert/Alert.tsx | 18 - cloud/components/Dialog/Dialog.module.css | 42 - cloud/components/Dialog/Dialog.tsx | 62 - cloud/components/Dialog/index.ts | 1 - cloud/components/Form/Form.tsx | 218 - cloud/components/Form/index.ts | 1 - cloud/components/Layout/About.module.css | 6 - cloud/components/Layout/About.tsx | 47 - cloud/components/Layout/Banner.module.css | 8 - cloud/components/Layout/Banner.tsx | 41 - cloud/components/Layout/Breadcrumbs.tsx | 42 - cloud/components/Layout/Content.tsx | 9 - cloud/components/Layout/Footer.module.css | 11 - cloud/components/Layout/Footer.tsx | 12 - cloud/components/Layout/Header.module.css | 10 - cloud/components/Layout/Header.tsx | 40 - cloud/components/Layout/Language.module.css | 35 - cloud/components/Layout/Language.tsx | 84 - cloud/components/Layout/Layout.tsx | 22 - cloud/components/Layout/Logo.module.css | 19 - cloud/components/Layout/Logo.tsx | 53 - cloud/components/Layout/Meta.tsx | 18 - cloud/components/Layout/Navigation.tsx | 12 - cloud/components/Layout/Repository.module.css | 4 - cloud/components/Layout/Repository.tsx | 49 - cloud/components/Layout/Share.module.css | 34 - cloud/components/Layout/Share.tsx | 187 - cloud/components/Layout/Sitemap.tsx | 27 - cloud/components/Layout/Theme.module.css | 4 - cloud/components/Layout/Theme.tsx | 55 - cloud/components/Layout/index.ts | 1 - cloud/components/Link/Link.module.css | 3 - cloud/components/Link/Link.tsx | 34 - cloud/components/Link/index.ts | 1 - cloud/components/Report/Error/Cell.tsx | 246 - cloud/components/Report/Error/Error.tsx | 69 - cloud/components/Report/Error/Field.tsx | 39 - cloud/components/Report/Error/Fields.tsx | 33 - cloud/components/Report/Error/File.tsx | 54 - cloud/components/Report/Error/Metadata.tsx | 25 - cloud/components/Report/Error/Row.tsx | 16 - cloud/components/Report/Report.tsx | 78 - cloud/components/Report/index.ts | 1 - cloud/components/Status/Status.module.css | 73 - cloud/components/Status/Status.tsx | 46 - cloud/components/Status/index.ts | 1 - cloud/components/System/Error.module.css | 35 - cloud/components/System/Error.tsx | 49 - cloud/components/System/System.tsx | 48 - cloud/components/System/context.ts | 9 - cloud/components/System/index.ts | 4 - cloud/components/System/selectors.ts | 26 - cloud/constants/language.ts | 17 - cloud/constants/page.ts | 226 - .../package-invalid-data-external.json | 15 - .../package-invalid-data-internal.json | 74 - cloud/examples/package-invalid-metadata.json | 20 - cloud/examples/package.json | 70 - cloud/examples/schema.json | 54 - cloud/examples/table-invalid.csv | 5 - cloud/examples/table.csv | 2 - cloud/helpers/context.ts | 18 - cloud/helpers/link.ts | 63 - cloud/helpers/media.ts | 6 - cloud/helpers/platform.ts | 12 - cloud/helpers/revision.ts | 17 - cloud/helpers/store.ts | 17 - cloud/i18n.ts | 36 - cloud/icons.ts | 18 - cloud/locales/de.json | 108 - cloud/locales/en.json | 108 - cloud/locales/es.json | 108 - cloud/locales/fr.json | 108 - cloud/locales/it.json | 108 - cloud/locales/pt.json | 108 - cloud/locales/ru.json | 108 - cloud/locales/uk.json | 108 - cloud/logger.ts | 9 - cloud/package.json | 62 - cloud/payload.ts | 37 - cloud/postcss.config.ts | 14 - cloud/public/favicon.png | Bin 3072 -> 0 bytes cloud/public/robots.txt | 5 - cloud/react-router.config.ts | 9 - cloud/routes/about/route.tsx | 49 - cloud/routes/entry.client.tsx | 12 - cloud/routes/entry.server.tsx | 43 - cloud/routes/home/route.module.css | 23 - cloud/routes/home/route.tsx | 84 - cloud/routes/package/validate/Dialog.tsx | 43 - cloud/routes/package/validate/Form.tsx | 16 - cloud/routes/package/validate/queries.ts | 26 - cloud/routes/package/validate/route.tsx | 30 - cloud/routes/package/validate/store.ts | 11 - cloud/routes/root.tsx | 103 - cloud/routes/routes.ts | 26 - cloud/routes/schema/infer/route.tsx | 22 - cloud/routes/sitemap/page.ts | 19 - cloud/routes/sitemap/root.ts | 16 - cloud/routes/sitemap/services.ts | 77 - cloud/routes/system/redirects/home.ts | 16 - cloud/routes/table/convert/route.tsx | 22 - cloud/routes/table/validate/route.tsx | 22 - cloud/runtimes/browser/api.ts | 7 - cloud/runtimes/cloudflare/main.ts | 57 - cloud/runtimes/node/api.ts | 8 - cloud/runtimes/node/main.ts | 1 - cloud/settings.ts | 11 - cloud/styles/index.ts | 5 - cloud/styles/main.css | 3 - cloud/theme.ts | 21 - cloud/tsconfig.json | 18 - cloud/types/index.ts | 3 - cloud/types/language.ts | 4 - cloud/types/page.ts | 4 - cloud/types/payload.ts | 1 - cloud/vite.config.ts | 18 - cloud/worker-configuration.d.ts | 8372 ----------------- cloud/wrangler.jsonc | 39 - docs/assets/dpkit-logo.svg | 2 - docs/styles/custom.css | 4 +- package.json | 2 +- pnpm-lock.yaml | 126 - pnpm-workspace.yaml | 1 - site/assets/dpkit-logo.svg | 2 - site/styles/custom.css | 4 +- tsconfig.json | 1 - vitest.config.ts | 1 - 148 files changed, 5 insertions(+), 14525 deletions(-) delete mode 100644 cloud/.react-router/types/+future.ts delete mode 100644 cloud/.react-router/types/+routes.ts delete mode 100644 cloud/.react-router/types/+server-build.d.ts delete mode 100644 cloud/.react-router/types/routes/+types/root.ts delete mode 100644 cloud/.react-router/types/routes/about/+types/route.ts delete mode 100644 cloud/.react-router/types/routes/home/+types/route.ts delete mode 100644 cloud/.react-router/types/routes/package/validate/+types/route.ts delete mode 100644 cloud/.react-router/types/routes/schema/infer/+types/route.ts delete mode 100644 cloud/.react-router/types/routes/sitemap/+types/page.ts delete mode 100644 cloud/.react-router/types/routes/sitemap/+types/root.ts delete mode 100644 cloud/.react-router/types/routes/system/redirects/+types/home.ts delete mode 100644 cloud/.react-router/types/routes/table/convert/+types/route.ts delete mode 100644 cloud/.react-router/types/routes/table/validate/+types/route.ts delete mode 100644 cloud/Dockerfile delete mode 100644 cloud/README.md delete mode 100644 cloud/assets/about.png delete mode 100644 cloud/assets/logo.svg delete mode 100644 cloud/components/Alert/Alert.tsx delete mode 100644 cloud/components/Dialog/Dialog.module.css delete mode 100644 cloud/components/Dialog/Dialog.tsx delete mode 100644 cloud/components/Dialog/index.ts delete mode 100644 cloud/components/Form/Form.tsx delete mode 100644 cloud/components/Form/index.ts delete mode 100644 cloud/components/Layout/About.module.css delete mode 100644 cloud/components/Layout/About.tsx delete mode 100644 cloud/components/Layout/Banner.module.css delete mode 100644 cloud/components/Layout/Banner.tsx delete mode 100644 cloud/components/Layout/Breadcrumbs.tsx delete mode 100644 cloud/components/Layout/Content.tsx delete mode 100644 cloud/components/Layout/Footer.module.css delete mode 100644 cloud/components/Layout/Footer.tsx delete mode 100644 cloud/components/Layout/Header.module.css delete mode 100644 cloud/components/Layout/Header.tsx delete mode 100644 cloud/components/Layout/Language.module.css delete mode 100644 cloud/components/Layout/Language.tsx delete mode 100644 cloud/components/Layout/Layout.tsx delete mode 100644 cloud/components/Layout/Logo.module.css delete mode 100644 cloud/components/Layout/Logo.tsx delete mode 100644 cloud/components/Layout/Meta.tsx delete mode 100644 cloud/components/Layout/Navigation.tsx delete mode 100644 cloud/components/Layout/Repository.module.css delete mode 100644 cloud/components/Layout/Repository.tsx delete mode 100644 cloud/components/Layout/Share.module.css delete mode 100644 cloud/components/Layout/Share.tsx delete mode 100644 cloud/components/Layout/Sitemap.tsx delete mode 100644 cloud/components/Layout/Theme.module.css delete mode 100644 cloud/components/Layout/Theme.tsx delete mode 100644 cloud/components/Layout/index.ts delete mode 100644 cloud/components/Link/Link.module.css delete mode 100644 cloud/components/Link/Link.tsx delete mode 100644 cloud/components/Link/index.ts delete mode 100644 cloud/components/Report/Error/Cell.tsx delete mode 100644 cloud/components/Report/Error/Error.tsx delete mode 100644 cloud/components/Report/Error/Field.tsx delete mode 100644 cloud/components/Report/Error/Fields.tsx delete mode 100644 cloud/components/Report/Error/File.tsx delete mode 100644 cloud/components/Report/Error/Metadata.tsx delete mode 100644 cloud/components/Report/Error/Row.tsx delete mode 100644 cloud/components/Report/Report.tsx delete mode 100644 cloud/components/Report/index.ts delete mode 100644 cloud/components/Status/Status.module.css delete mode 100644 cloud/components/Status/Status.tsx delete mode 100644 cloud/components/Status/index.ts delete mode 100644 cloud/components/System/Error.module.css delete mode 100644 cloud/components/System/Error.tsx delete mode 100644 cloud/components/System/System.tsx delete mode 100644 cloud/components/System/context.ts delete mode 100644 cloud/components/System/index.ts delete mode 100644 cloud/components/System/selectors.ts delete mode 100644 cloud/constants/language.ts delete mode 100644 cloud/constants/page.ts delete mode 100644 cloud/examples/package-invalid-data-external.json delete mode 100644 cloud/examples/package-invalid-data-internal.json delete mode 100644 cloud/examples/package-invalid-metadata.json delete mode 100644 cloud/examples/package.json delete mode 100644 cloud/examples/schema.json delete mode 100644 cloud/examples/table-invalid.csv delete mode 100644 cloud/examples/table.csv delete mode 100644 cloud/helpers/context.ts delete mode 100644 cloud/helpers/link.ts delete mode 100644 cloud/helpers/media.ts delete mode 100644 cloud/helpers/platform.ts delete mode 100644 cloud/helpers/revision.ts delete mode 100644 cloud/helpers/store.ts delete mode 100644 cloud/i18n.ts delete mode 100644 cloud/icons.ts delete mode 100644 cloud/locales/de.json delete mode 100644 cloud/locales/en.json delete mode 100644 cloud/locales/es.json delete mode 100644 cloud/locales/fr.json delete mode 100644 cloud/locales/it.json delete mode 100644 cloud/locales/pt.json delete mode 100644 cloud/locales/ru.json delete mode 100644 cloud/locales/uk.json delete mode 100644 cloud/logger.ts delete mode 100644 cloud/package.json delete mode 100644 cloud/payload.ts delete mode 100644 cloud/postcss.config.ts delete mode 100644 cloud/public/favicon.png delete mode 100644 cloud/public/robots.txt delete mode 100644 cloud/react-router.config.ts delete mode 100644 cloud/routes/about/route.tsx delete mode 100644 cloud/routes/entry.client.tsx delete mode 100644 cloud/routes/entry.server.tsx delete mode 100644 cloud/routes/home/route.module.css delete mode 100644 cloud/routes/home/route.tsx delete mode 100644 cloud/routes/package/validate/Dialog.tsx delete mode 100644 cloud/routes/package/validate/Form.tsx delete mode 100644 cloud/routes/package/validate/queries.ts delete mode 100644 cloud/routes/package/validate/route.tsx delete mode 100644 cloud/routes/package/validate/store.ts delete mode 100644 cloud/routes/root.tsx delete mode 100644 cloud/routes/routes.ts delete mode 100644 cloud/routes/schema/infer/route.tsx delete mode 100644 cloud/routes/sitemap/page.ts delete mode 100644 cloud/routes/sitemap/root.ts delete mode 100644 cloud/routes/sitemap/services.ts delete mode 100644 cloud/routes/system/redirects/home.ts delete mode 100644 cloud/routes/table/convert/route.tsx delete mode 100644 cloud/routes/table/validate/route.tsx delete mode 100644 cloud/runtimes/browser/api.ts delete mode 100644 cloud/runtimes/cloudflare/main.ts delete mode 100644 cloud/runtimes/node/api.ts delete mode 100644 cloud/runtimes/node/main.ts delete mode 100644 cloud/settings.ts delete mode 100644 cloud/styles/index.ts delete mode 100644 cloud/styles/main.css delete mode 100644 cloud/theme.ts delete mode 100644 cloud/tsconfig.json delete mode 100644 cloud/types/index.ts delete mode 100644 cloud/types/language.ts delete mode 100644 cloud/types/page.ts delete mode 100644 cloud/types/payload.ts delete mode 100644 cloud/vite.config.ts delete mode 100644 cloud/worker-configuration.d.ts delete mode 100644 cloud/wrangler.jsonc diff --git a/browser/assets/datist-logo-text-dark.svg b/browser/assets/datist-logo-text-dark.svg index 55df4d0b..e97c0944 100644 --- a/browser/assets/datist-logo-text-dark.svg +++ b/browser/assets/datist-logo-text-dark.svg @@ -1,8 +1,6 @@ - -type Matches = [{ - id: "root"; - module: typeof import("../root.js"); -}]; - -type Annotations = GetAnnotations; - -export namespace Route { - // links - export type LinkDescriptors = Annotations["LinkDescriptors"]; - export type LinksFunction = Annotations["LinksFunction"]; - - // meta - export type MetaArgs = Annotations["MetaArgs"]; - export type MetaDescriptors = Annotations["MetaDescriptors"]; - export type MetaFunction = Annotations["MetaFunction"]; - - // headers - export type HeadersArgs = Annotations["HeadersArgs"]; - export type HeadersFunction = Annotations["HeadersFunction"]; - - // middleware - export type MiddlewareFunction = Annotations["MiddlewareFunction"]; - - // clientMiddleware - export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"]; - - // loader - export type LoaderArgs = Annotations["LoaderArgs"]; - - // clientLoader - export type ClientLoaderArgs = Annotations["ClientLoaderArgs"]; - - // action - export type ActionArgs = Annotations["ActionArgs"]; - - // clientAction - export type ClientActionArgs = Annotations["ClientActionArgs"]; - - // HydrateFallback - export type HydrateFallbackProps = Annotations["HydrateFallbackProps"]; - - // Component - export type ComponentProps = Annotations["ComponentProps"]; - - // ErrorBoundary - export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"]; -} \ No newline at end of file diff --git a/cloud/.react-router/types/routes/about/+types/route.ts b/cloud/.react-router/types/routes/about/+types/route.ts deleted file mode 100644 index 764a540e..00000000 --- a/cloud/.react-router/types/routes/about/+types/route.ts +++ /dev/null @@ -1,104 +0,0 @@ -// Generated by React Router - -import type { GetInfo, GetAnnotations } from "react-router/internal"; - -type Module = typeof import("../route.js") - -type Info = GetInfo<{ - file: "about/route.tsx", - module: Module -}> - -type Matches = [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "en/about"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "de/about"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "es/about"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "fr/about"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "it/about"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "pt/about"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "ru/about"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "uk/about"; - module: typeof import("../route.js"); -}]; - -type Annotations = GetAnnotations; - -export namespace Route { - // links - export type LinkDescriptors = Annotations["LinkDescriptors"]; - export type LinksFunction = Annotations["LinksFunction"]; - - // meta - export type MetaArgs = Annotations["MetaArgs"]; - export type MetaDescriptors = Annotations["MetaDescriptors"]; - export type MetaFunction = Annotations["MetaFunction"]; - - // headers - export type HeadersArgs = Annotations["HeadersArgs"]; - export type HeadersFunction = Annotations["HeadersFunction"]; - - // middleware - export type MiddlewareFunction = Annotations["MiddlewareFunction"]; - - // clientMiddleware - export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"]; - - // loader - export type LoaderArgs = Annotations["LoaderArgs"]; - - // clientLoader - export type ClientLoaderArgs = Annotations["ClientLoaderArgs"]; - - // action - export type ActionArgs = Annotations["ActionArgs"]; - - // clientAction - export type ClientActionArgs = Annotations["ClientActionArgs"]; - - // HydrateFallback - export type HydrateFallbackProps = Annotations["HydrateFallbackProps"]; - - // Component - export type ComponentProps = Annotations["ComponentProps"]; - - // ErrorBoundary - export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"]; -} \ No newline at end of file diff --git a/cloud/.react-router/types/routes/home/+types/route.ts b/cloud/.react-router/types/routes/home/+types/route.ts deleted file mode 100644 index d1942624..00000000 --- a/cloud/.react-router/types/routes/home/+types/route.ts +++ /dev/null @@ -1,104 +0,0 @@ -// Generated by React Router - -import type { GetInfo, GetAnnotations } from "react-router/internal"; - -type Module = typeof import("../route.js") - -type Info = GetInfo<{ - file: "home/route.tsx", - module: Module -}> - -type Matches = [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "en/home"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "de/home"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "es/home"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "fr/home"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "it/home"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "pt/home"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "ru/home"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "uk/home"; - module: typeof import("../route.js"); -}]; - -type Annotations = GetAnnotations; - -export namespace Route { - // links - export type LinkDescriptors = Annotations["LinkDescriptors"]; - export type LinksFunction = Annotations["LinksFunction"]; - - // meta - export type MetaArgs = Annotations["MetaArgs"]; - export type MetaDescriptors = Annotations["MetaDescriptors"]; - export type MetaFunction = Annotations["MetaFunction"]; - - // headers - export type HeadersArgs = Annotations["HeadersArgs"]; - export type HeadersFunction = Annotations["HeadersFunction"]; - - // middleware - export type MiddlewareFunction = Annotations["MiddlewareFunction"]; - - // clientMiddleware - export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"]; - - // loader - export type LoaderArgs = Annotations["LoaderArgs"]; - - // clientLoader - export type ClientLoaderArgs = Annotations["ClientLoaderArgs"]; - - // action - export type ActionArgs = Annotations["ActionArgs"]; - - // clientAction - export type ClientActionArgs = Annotations["ClientActionArgs"]; - - // HydrateFallback - export type HydrateFallbackProps = Annotations["HydrateFallbackProps"]; - - // Component - export type ComponentProps = Annotations["ComponentProps"]; - - // ErrorBoundary - export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"]; -} \ No newline at end of file diff --git a/cloud/.react-router/types/routes/package/validate/+types/route.ts b/cloud/.react-router/types/routes/package/validate/+types/route.ts deleted file mode 100644 index 919816e3..00000000 --- a/cloud/.react-router/types/routes/package/validate/+types/route.ts +++ /dev/null @@ -1,104 +0,0 @@ -// Generated by React Router - -import type { GetInfo, GetAnnotations } from "react-router/internal"; - -type Module = typeof import("../route.js") - -type Info = GetInfo<{ - file: "package/validate/route.tsx", - module: Module -}> - -type Matches = [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "en/packageValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "de/packageValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "es/packageValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "fr/packageValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "it/packageValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "pt/packageValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "ru/packageValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "uk/packageValidate"; - module: typeof import("../route.js"); -}]; - -type Annotations = GetAnnotations; - -export namespace Route { - // links - export type LinkDescriptors = Annotations["LinkDescriptors"]; - export type LinksFunction = Annotations["LinksFunction"]; - - // meta - export type MetaArgs = Annotations["MetaArgs"]; - export type MetaDescriptors = Annotations["MetaDescriptors"]; - export type MetaFunction = Annotations["MetaFunction"]; - - // headers - export type HeadersArgs = Annotations["HeadersArgs"]; - export type HeadersFunction = Annotations["HeadersFunction"]; - - // middleware - export type MiddlewareFunction = Annotations["MiddlewareFunction"]; - - // clientMiddleware - export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"]; - - // loader - export type LoaderArgs = Annotations["LoaderArgs"]; - - // clientLoader - export type ClientLoaderArgs = Annotations["ClientLoaderArgs"]; - - // action - export type ActionArgs = Annotations["ActionArgs"]; - - // clientAction - export type ClientActionArgs = Annotations["ClientActionArgs"]; - - // HydrateFallback - export type HydrateFallbackProps = Annotations["HydrateFallbackProps"]; - - // Component - export type ComponentProps = Annotations["ComponentProps"]; - - // ErrorBoundary - export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"]; -} \ No newline at end of file diff --git a/cloud/.react-router/types/routes/schema/infer/+types/route.ts b/cloud/.react-router/types/routes/schema/infer/+types/route.ts deleted file mode 100644 index 1744d4f9..00000000 --- a/cloud/.react-router/types/routes/schema/infer/+types/route.ts +++ /dev/null @@ -1,104 +0,0 @@ -// Generated by React Router - -import type { GetInfo, GetAnnotations } from "react-router/internal"; - -type Module = typeof import("../route.js") - -type Info = GetInfo<{ - file: "schema/infer/route.tsx", - module: Module -}> - -type Matches = [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "en/schemaInfer"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "de/schemaInfer"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "es/schemaInfer"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "fr/schemaInfer"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "it/schemaInfer"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "pt/schemaInfer"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "ru/schemaInfer"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "uk/schemaInfer"; - module: typeof import("../route.js"); -}]; - -type Annotations = GetAnnotations; - -export namespace Route { - // links - export type LinkDescriptors = Annotations["LinkDescriptors"]; - export type LinksFunction = Annotations["LinksFunction"]; - - // meta - export type MetaArgs = Annotations["MetaArgs"]; - export type MetaDescriptors = Annotations["MetaDescriptors"]; - export type MetaFunction = Annotations["MetaFunction"]; - - // headers - export type HeadersArgs = Annotations["HeadersArgs"]; - export type HeadersFunction = Annotations["HeadersFunction"]; - - // middleware - export type MiddlewareFunction = Annotations["MiddlewareFunction"]; - - // clientMiddleware - export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"]; - - // loader - export type LoaderArgs = Annotations["LoaderArgs"]; - - // clientLoader - export type ClientLoaderArgs = Annotations["ClientLoaderArgs"]; - - // action - export type ActionArgs = Annotations["ActionArgs"]; - - // clientAction - export type ClientActionArgs = Annotations["ClientActionArgs"]; - - // HydrateFallback - export type HydrateFallbackProps = Annotations["HydrateFallbackProps"]; - - // Component - export type ComponentProps = Annotations["ComponentProps"]; - - // ErrorBoundary - export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"]; -} \ No newline at end of file diff --git a/cloud/.react-router/types/routes/sitemap/+types/page.ts b/cloud/.react-router/types/routes/sitemap/+types/page.ts deleted file mode 100644 index 2b931068..00000000 --- a/cloud/.react-router/types/routes/sitemap/+types/page.ts +++ /dev/null @@ -1,62 +0,0 @@ -// Generated by React Router - -import type { GetInfo, GetAnnotations } from "react-router/internal"; - -type Module = typeof import("../page.js") - -type Info = GetInfo<{ - file: "sitemap/page.ts", - module: Module -}> - -type Matches = [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "sitemap/page"; - module: typeof import("../page.js"); -}]; - -type Annotations = GetAnnotations; - -export namespace Route { - // links - export type LinkDescriptors = Annotations["LinkDescriptors"]; - export type LinksFunction = Annotations["LinksFunction"]; - - // meta - export type MetaArgs = Annotations["MetaArgs"]; - export type MetaDescriptors = Annotations["MetaDescriptors"]; - export type MetaFunction = Annotations["MetaFunction"]; - - // headers - export type HeadersArgs = Annotations["HeadersArgs"]; - export type HeadersFunction = Annotations["HeadersFunction"]; - - // middleware - export type MiddlewareFunction = Annotations["MiddlewareFunction"]; - - // clientMiddleware - export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"]; - - // loader - export type LoaderArgs = Annotations["LoaderArgs"]; - - // clientLoader - export type ClientLoaderArgs = Annotations["ClientLoaderArgs"]; - - // action - export type ActionArgs = Annotations["ActionArgs"]; - - // clientAction - export type ClientActionArgs = Annotations["ClientActionArgs"]; - - // HydrateFallback - export type HydrateFallbackProps = Annotations["HydrateFallbackProps"]; - - // Component - export type ComponentProps = Annotations["ComponentProps"]; - - // ErrorBoundary - export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"]; -} \ No newline at end of file diff --git a/cloud/.react-router/types/routes/sitemap/+types/root.ts b/cloud/.react-router/types/routes/sitemap/+types/root.ts deleted file mode 100644 index f76ad7e5..00000000 --- a/cloud/.react-router/types/routes/sitemap/+types/root.ts +++ /dev/null @@ -1,62 +0,0 @@ -// Generated by React Router - -import type { GetInfo, GetAnnotations } from "react-router/internal"; - -type Module = typeof import("../root.js") - -type Info = GetInfo<{ - file: "sitemap/root.ts", - module: Module -}> - -type Matches = [{ - id: "root"; - module: typeof import("../../root.js"); -}, { - id: "sitemap/root"; - module: typeof import("../root.js"); -}]; - -type Annotations = GetAnnotations; - -export namespace Route { - // links - export type LinkDescriptors = Annotations["LinkDescriptors"]; - export type LinksFunction = Annotations["LinksFunction"]; - - // meta - export type MetaArgs = Annotations["MetaArgs"]; - export type MetaDescriptors = Annotations["MetaDescriptors"]; - export type MetaFunction = Annotations["MetaFunction"]; - - // headers - export type HeadersArgs = Annotations["HeadersArgs"]; - export type HeadersFunction = Annotations["HeadersFunction"]; - - // middleware - export type MiddlewareFunction = Annotations["MiddlewareFunction"]; - - // clientMiddleware - export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"]; - - // loader - export type LoaderArgs = Annotations["LoaderArgs"]; - - // clientLoader - export type ClientLoaderArgs = Annotations["ClientLoaderArgs"]; - - // action - export type ActionArgs = Annotations["ActionArgs"]; - - // clientAction - export type ClientActionArgs = Annotations["ClientActionArgs"]; - - // HydrateFallback - export type HydrateFallbackProps = Annotations["HydrateFallbackProps"]; - - // Component - export type ComponentProps = Annotations["ComponentProps"]; - - // ErrorBoundary - export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"]; -} \ No newline at end of file diff --git a/cloud/.react-router/types/routes/system/redirects/+types/home.ts b/cloud/.react-router/types/routes/system/redirects/+types/home.ts deleted file mode 100644 index 4233ce60..00000000 --- a/cloud/.react-router/types/routes/system/redirects/+types/home.ts +++ /dev/null @@ -1,62 +0,0 @@ -// Generated by React Router - -import type { GetInfo, GetAnnotations } from "react-router/internal"; - -type Module = typeof import("../home.js") - -type Info = GetInfo<{ - file: "system/redirects/home.ts", - module: Module -}> - -type Matches = [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "system/redirects/home"; - module: typeof import("../home.js"); -}]; - -type Annotations = GetAnnotations; - -export namespace Route { - // links - export type LinkDescriptors = Annotations["LinkDescriptors"]; - export type LinksFunction = Annotations["LinksFunction"]; - - // meta - export type MetaArgs = Annotations["MetaArgs"]; - export type MetaDescriptors = Annotations["MetaDescriptors"]; - export type MetaFunction = Annotations["MetaFunction"]; - - // headers - export type HeadersArgs = Annotations["HeadersArgs"]; - export type HeadersFunction = Annotations["HeadersFunction"]; - - // middleware - export type MiddlewareFunction = Annotations["MiddlewareFunction"]; - - // clientMiddleware - export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"]; - - // loader - export type LoaderArgs = Annotations["LoaderArgs"]; - - // clientLoader - export type ClientLoaderArgs = Annotations["ClientLoaderArgs"]; - - // action - export type ActionArgs = Annotations["ActionArgs"]; - - // clientAction - export type ClientActionArgs = Annotations["ClientActionArgs"]; - - // HydrateFallback - export type HydrateFallbackProps = Annotations["HydrateFallbackProps"]; - - // Component - export type ComponentProps = Annotations["ComponentProps"]; - - // ErrorBoundary - export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"]; -} \ No newline at end of file diff --git a/cloud/.react-router/types/routes/table/convert/+types/route.ts b/cloud/.react-router/types/routes/table/convert/+types/route.ts deleted file mode 100644 index 928d1756..00000000 --- a/cloud/.react-router/types/routes/table/convert/+types/route.ts +++ /dev/null @@ -1,104 +0,0 @@ -// Generated by React Router - -import type { GetInfo, GetAnnotations } from "react-router/internal"; - -type Module = typeof import("../route.js") - -type Info = GetInfo<{ - file: "table/convert/route.tsx", - module: Module -}> - -type Matches = [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "en/tableConvert"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "de/tableConvert"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "es/tableConvert"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "fr/tableConvert"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "it/tableConvert"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "pt/tableConvert"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "ru/tableConvert"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "uk/tableConvert"; - module: typeof import("../route.js"); -}]; - -type Annotations = GetAnnotations; - -export namespace Route { - // links - export type LinkDescriptors = Annotations["LinkDescriptors"]; - export type LinksFunction = Annotations["LinksFunction"]; - - // meta - export type MetaArgs = Annotations["MetaArgs"]; - export type MetaDescriptors = Annotations["MetaDescriptors"]; - export type MetaFunction = Annotations["MetaFunction"]; - - // headers - export type HeadersArgs = Annotations["HeadersArgs"]; - export type HeadersFunction = Annotations["HeadersFunction"]; - - // middleware - export type MiddlewareFunction = Annotations["MiddlewareFunction"]; - - // clientMiddleware - export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"]; - - // loader - export type LoaderArgs = Annotations["LoaderArgs"]; - - // clientLoader - export type ClientLoaderArgs = Annotations["ClientLoaderArgs"]; - - // action - export type ActionArgs = Annotations["ActionArgs"]; - - // clientAction - export type ClientActionArgs = Annotations["ClientActionArgs"]; - - // HydrateFallback - export type HydrateFallbackProps = Annotations["HydrateFallbackProps"]; - - // Component - export type ComponentProps = Annotations["ComponentProps"]; - - // ErrorBoundary - export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"]; -} \ No newline at end of file diff --git a/cloud/.react-router/types/routes/table/validate/+types/route.ts b/cloud/.react-router/types/routes/table/validate/+types/route.ts deleted file mode 100644 index bb351334..00000000 --- a/cloud/.react-router/types/routes/table/validate/+types/route.ts +++ /dev/null @@ -1,104 +0,0 @@ -// Generated by React Router - -import type { GetInfo, GetAnnotations } from "react-router/internal"; - -type Module = typeof import("../route.js") - -type Info = GetInfo<{ - file: "table/validate/route.tsx", - module: Module -}> - -type Matches = [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "en/tableValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "de/tableValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "es/tableValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "fr/tableValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "it/tableValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "pt/tableValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "ru/tableValidate"; - module: typeof import("../route.js"); -}] | [{ - id: "root"; - module: typeof import("../../../root.js"); -}, { - id: "uk/tableValidate"; - module: typeof import("../route.js"); -}]; - -type Annotations = GetAnnotations; - -export namespace Route { - // links - export type LinkDescriptors = Annotations["LinkDescriptors"]; - export type LinksFunction = Annotations["LinksFunction"]; - - // meta - export type MetaArgs = Annotations["MetaArgs"]; - export type MetaDescriptors = Annotations["MetaDescriptors"]; - export type MetaFunction = Annotations["MetaFunction"]; - - // headers - export type HeadersArgs = Annotations["HeadersArgs"]; - export type HeadersFunction = Annotations["HeadersFunction"]; - - // middleware - export type MiddlewareFunction = Annotations["MiddlewareFunction"]; - - // clientMiddleware - export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"]; - - // loader - export type LoaderArgs = Annotations["LoaderArgs"]; - - // clientLoader - export type ClientLoaderArgs = Annotations["ClientLoaderArgs"]; - - // action - export type ActionArgs = Annotations["ActionArgs"]; - - // clientAction - export type ClientActionArgs = Annotations["ClientActionArgs"]; - - // HydrateFallback - export type HydrateFallbackProps = Annotations["HydrateFallbackProps"]; - - // Component - export type ComponentProps = Annotations["ComponentProps"]; - - // ErrorBoundary - export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"]; -} \ No newline at end of file diff --git a/cloud/Dockerfile b/cloud/Dockerfile deleted file mode 100644 index cf7ce5bd..00000000 --- a/cloud/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -# The build context is the root of the project -FROM node:24-alpine -WORKDIR /dpkit - -COPY pnpm-lock.yaml . -RUN corepack enable pnpm -RUN pnpm fetch - -COPY . . -RUN pnpm install:ci -RUN pnpm build - -EXPOSE 8080 -CMD ["node", "cloud/api/server.ts"] diff --git a/cloud/README.md b/cloud/README.md deleted file mode 100644 index fba11c2a..00000000 --- a/cloud/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @dpkit/cloud - -dpkit is a fast data management framework built on top of the Data Package standard and Polars DataFrames. It supports various formats like CSV, JSON, and Parquet and integrates with data platforms such as CKAN, Zenodo, and GitHub. For more information, please visit the [documentation portal](https://dpkit.dev). diff --git a/cloud/assets/about.png b/cloud/assets/about.png deleted file mode 100644 index 7be21fc39eab1369b4482b04774f50cc2533ff15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2381 zcmZ`*dpy(YAOCK{GIN{c8>!R~h7BztMMH>Uj_b@^vnaRC<%swlLdd1eC30NigczMd zrWO+w`E?O94o9}*TB037_FJ#>&+qrg?|D6+=l#6jpZDjF=dbsZb>7)d7NLp&06^CM z48auupnl?evjj|hZnEiJVvx9Cczt=yCNFrv8qqa1C!DEcmG!AqV(f+aCHc>LyqPzqczT_J?e$3ckiJ-Ha>l+=j3;- znRr`r#Wf)F6xm@=CwnvtRb#>gy}l+RecSODnE^xxpo-F%_md#g=UUd!lRY7dX?+fdQ-H=Q+wJgv|Q>9!9=qN`Sb1qij^3=#K z?i!PuaLPWn)NEm*ka@1KDi3v2PPwRr7OHNJ%T`(Z_EC@R z>#K?VI8@{Nh&=2BF)9dDZ+&@qejsy1A;B~=Ys`yIc1cgX7+oKlx%{4gmf>+Nxk2h^ z^ZhTltcq*NO#+&$iedKHI(O>k-a5bL!I(HvWKow$7($+%&w1ZF)2z}*pXzGa+NvHn zo;0aeQ%8R?;Sg{jlp+We#Y^`(;_f$f8#G~;H6`GxUalv2lSM$%ZHeiaHk`$iAacxrG)2qOud zpj`%}HW$kNMTvnm@5}yM#l^)Qiy{GZ4gJ9mW4w<^_?U2}=@D%GV`9xK!8|dt`*Y)(sU*d+x6Xq!eMQv=C#JTt`<7jL$Dc3@GnaX}W+6#{K!PP{;0 z6WVsN7@FhLg_*jTxa$6Q1k0rO+CMHAH~kK#J0b6UiX;s8bOyaO!P@5NWkCCnlHS-# zGeb80haiE33i(=Ak9=;K#PgC-)9o9A;G$h{3>UyoUE&Q;{Zm@Ilz&S7rr1mB64m?`xC8Ku4GlTV{y2dk#Qj&b2IeZKuPG=$Da#Nytt#FHwbxxJ{0+4KUi0l z&<)MzKyo^@(;m#2k<=Kom9c+T$k1V@*LBatOSUsZ+Fy5svj5ytl4_aG-Fco;kZ3K1 zAulaob@KKk@Nw@GK^mA?KP~Z882&BDiB8(5o5Ts}OL@bu0MLOdld9*OX;_vR^QJ zyW07xnWHU+Ox_HPjmFih$@UF7?rfLaNKP_#W*gl$YkC4oIb?rHeR4}@@#kNkvyv0_ z?fG3AQ9Ta_5?V8L3?0!p{=-8tP?b!$?H+^K%!)|;vPe12w31aQA6>`V7rkBh@ZfrM zI5flZFrUxx=y~{Cx)zB@P6-cqnawC|%X03hE7T+rgJ-l!#34xqBDupoOFg6c{9@mk zj=DC2*n5BOY=Shsj+JJOYQA?${fJ@J=5V9m>3oLi6CaKGL{|q6BosCuSv7< zqy_oYg3SV>gT(+CVU0}mvB&grMs7H~nTe^H$uT{wsTmdvbfi!H&%mXKAZkd${~w6r SpZM_`0qkv@3C-4&fBgp)>^d6& diff --git a/cloud/assets/logo.svg b/cloud/assets/logo.svg deleted file mode 100644 index 93b348ed..00000000 --- a/cloud/assets/logo.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - diff --git a/cloud/components/Alert/Alert.tsx b/cloud/components/Alert/Alert.tsx deleted file mode 100644 index 066cc96b..00000000 --- a/cloud/components/Alert/Alert.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Alert as MantineAlert, Text, Title } from "@mantine/core" - -export function Alert(props: { title: string; description: string }) { - return ( - - {props.title} - - } - > - {props.description} - - ) -} diff --git a/cloud/components/Dialog/Dialog.module.css b/cloud/components/Dialog/Dialog.module.css deleted file mode 100644 index 26d8af2f..00000000 --- a/cloud/components/Dialog/Dialog.module.css +++ /dev/null @@ -1,42 +0,0 @@ -.overlay { - position: fixed; - background-color: rgba(0, 0, 0, 0.4); - inset: 0; -} - -.title { - display: none; -} - -.content { - z-index: 100; - position: fixed; - bottom: 0; - left: 0; - right: 0; - height: 100%; - max-height: calc(100% - 80px); - background-color: light-dark(white, var(--mantine-color-dark-6)); - border-top-left-radius: 10px; - border-top-right-radius: 10px; - padding: var(--mantine-spacing-lg); -} - -.handle { - width: 60px; - height: 6px; - background-color: var(--mantine-color-gray-4); - border-radius: 100px; - margin: 0 auto; -} - -.title { - font-size: 20px; - font-weight: bold; - margin-bottom: 16px; -} - -.description { - margin-bottom: 16px; - height: 100%; -} diff --git a/cloud/components/Dialog/Dialog.tsx b/cloud/components/Dialog/Dialog.tsx deleted file mode 100644 index f46ceb31..00000000 --- a/cloud/components/Dialog/Dialog.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { Box, Button, Container, Flex, ScrollArea } from "@mantine/core" -import { useEffect, useState } from "react" -import type { ReactNode } from "react" -import { useTranslation } from "react-i18next" -import { Drawer as VaulDrawer } from "vaul" -import classes from "./Dialog.module.css" - -export function Dialog(props: { - open?: boolean - children: ReactNode - fullScreen?: boolean - onOpenChange: (open: boolean) => void -}) { - const { t } = useTranslation() - - const snapPoints = [0.5, 1] as const - const [snap, setSnap] = useState(snapPoints[0]) - - useEffect(() => { - setSnap(props.fullScreen ? snapPoints[1] : snapPoints[0]) - }, [props.fullScreen]) - - return ( - - - - - - - - - {t("Dialog")} - - - {props.children} - - - - - - - - ) -} diff --git a/cloud/components/Dialog/index.ts b/cloud/components/Dialog/index.ts deleted file mode 100644 index 07af50b9..00000000 --- a/cloud/components/Dialog/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Dialog } from "./Dialog.tsx" diff --git a/cloud/components/Form/Form.tsx b/cloud/components/Form/Form.tsx deleted file mode 100644 index a7cb4d9a..00000000 --- a/cloud/components/Form/Form.tsx +++ /dev/null @@ -1,218 +0,0 @@ -import { Box, Button, CloseButton, Stack, Tabs } from "@mantine/core" -import { FileInput, TextInput, Textarea } from "@mantine/core" -import { isJSONString, isNotEmpty, useForm } from "@mantine/form" -import { useState } from "react" -import { useTranslation } from "react-i18next" -import * as icons from "#icons.ts" -import * as settings from "#settings.ts" - -export interface FormProps { - onSubmit: (value: string | File | Record) => void -} - -export function Form(props: FormProps) { - const { t } = useTranslation() - const [activeTab, setActiveTab] = useState("url") - - return ( - - - - } - > - {t("URL")} - - - } - > - {t("File")} - - - } - > - {t("Text")} - - - - - - - - - - - - - - - - ) -} - -function UrlForm(props: { onSubmit: (value: string) => void }) { - const { t } = useTranslation() - const form = useForm({ - initialValues: { - url: "", - }, - validate: { - url: value => { - const notEmpty = isNotEmpty(t("URL is required"))(value) - if (notEmpty) return notEmpty - try { - new URL(value) - return null - } catch { - return t("Invalid URL format") - } - }, - }, - }) - - const handleSubmit = form.onSubmit(() => { - props.onSubmit(form.values.url) - }) - - return ( -
- - form.setFieldValue("url", "")} - disabled={!form.values.url} - /> - } - {...form.getInputProps("url")} - /> - - -
- ) -} - -function FileForm(props: { onSubmit: (value: File) => void }) { - const { t } = useTranslation() - const form = useForm({ - initialValues: { - file: null as File | null, - }, - validate: { - file: isNotEmpty(t("File is required")), - }, - }) - - const handleSubmit = form.onSubmit(async () => { - const file = form.values.file - if (!file) return - - try { - const text = await file.text() - const json = JSON.parse(text) - props.onSubmit(json) - } catch (err) { - form.setErrors({ file: t("Invalid JSON file") }) - } - }) - - return ( -
- - form.setFieldValue("file", null)} - disabled={!form.values.file} - /> - } - {...form.getInputProps("file")} - /> - - -
- ) -} - -function JsonForm(props: { onSubmit: (value: Record) => void }) { - const { t } = useTranslation() - const form = useForm({ - initialValues: { - text: "", - }, - validate: { - text: value => { - const notEmpty = isNotEmpty(t("Text is required"))(value) - if (notEmpty) return notEmpty - return isJSONString(t("Invalid JSON format"))(value) - }, - }, - }) - - const handleSubmit = form.onSubmit(() => { - const parsed = JSON.parse(form.values.text) - props.onSubmit(parsed) - }) - - return ( -
- - -
- ) -} - -function SubmitButton(props: { disabled: boolean }) { - const { t } = useTranslation() - - return ( - - ) -} diff --git a/cloud/components/Form/index.ts b/cloud/components/Form/index.ts deleted file mode 100644 index 86d916de..00000000 --- a/cloud/components/Form/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Form, type FormProps } from "./Form.tsx" diff --git a/cloud/components/Layout/About.module.css b/cloud/components/Layout/About.module.css deleted file mode 100644 index e60faa46..00000000 --- a/cloud/components/Layout/About.module.css +++ /dev/null @@ -1,6 +0,0 @@ -.imageWrapper { - padding: 5px; - border-radius: 15px; - border: dashed 1px - light-dark(var(--mantine-color-gray-4), var(--mantine-color-dark-1)); -} diff --git a/cloud/components/Layout/About.tsx b/cloud/components/Layout/About.tsx deleted file mode 100644 index bbb5960f..00000000 --- a/cloud/components/Layout/About.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { Anchor, Box, Container, Image, Stack, Text } from "@mantine/core" -import { useTranslation } from "react-i18next" -import aboutImage from "#assets/about.png" -import { Link } from "#components/Link/index.ts" -import classes from "./About.module.css" - -export function About() { - const { t } = useTranslation() - - return ( - - - - {t("Brought to you by")} - - - - - - - - {t( - "We are bringing technological innovation and consultancy services to the open data field", - )} - - - - ) -} diff --git a/cloud/components/Layout/Banner.module.css b/cloud/components/Layout/Banner.module.css deleted file mode 100644 index 99e5abf8..00000000 --- a/cloud/components/Layout/Banner.module.css +++ /dev/null @@ -1,8 +0,0 @@ -.banner { - background-color: light-dark( - var(--mantine-color-blue-6), - var(--mantine-color-blue-7) - ); - color: var(--mantine-color-white); - text-align: center; -} diff --git a/cloud/components/Layout/Banner.tsx b/cloud/components/Layout/Banner.tsx deleted file mode 100644 index 812dcf3a..00000000 --- a/cloud/components/Layout/Banner.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { Anchor, Box, Text } from "@mantine/core" -import { Container } from "@mantine/core" -import { useTranslation } from "react-i18next" -import { Link } from "#components/Link/index.ts" -import classes from "./Banner.module.css" - -export function Banner() { - const { t } = useTranslation() - - return ( - - - - {t("Support the project by")}{" "} - - {t("becoming a sponsor")} - {" "} - {t("or")}{" "} - - {t("adding a star")} - {" "} - {t("on GitHub!")} - - - - ) -} diff --git a/cloud/components/Layout/Breadcrumbs.tsx b/cloud/components/Layout/Breadcrumbs.tsx deleted file mode 100644 index b6455eae..00000000 --- a/cloud/components/Layout/Breadcrumbs.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { Anchor, Breadcrumbs as MantineBreadcrumbs } from "@mantine/core" -import { Text } from "@mantine/core" -import { useTranslation } from "react-i18next" -import { TypeAnimation } from "react-type-animation" -import { Link } from "#components/Link/index.ts" -import { usePayload } from "#components/System/index.ts" -import { useMakeLink } from "#components/System/index.ts" - -export function Breadcrumbs() { - const { t } = useTranslation() - const payload = usePayload() - const makeLink = useMakeLink() - - return ( - - - {t("Tools")} - - {payload.page.pageId === "home" ? ( - - - - ) : ( - - {payload.page.title[payload.language.languageId]} - - )} - - ) -} diff --git a/cloud/components/Layout/Content.tsx b/cloud/components/Layout/Content.tsx deleted file mode 100644 index 8143e5c7..00000000 --- a/cloud/components/Layout/Content.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { Container } from "@mantine/core" - -export function Content(props: { children: React.ReactNode }) { - return ( - - {props.children} - - ) -} diff --git a/cloud/components/Layout/Footer.module.css b/cloud/components/Layout/Footer.module.css deleted file mode 100644 index 6ce38a7e..00000000 --- a/cloud/components/Layout/Footer.module.css +++ /dev/null @@ -1,11 +0,0 @@ -.links { - font-size: var(--mantine-font-size-sm); - border-top: 1px solid - light-dark(var(--mantine-color-gray-3), var(--mantine-color-dark-9)); - border-bottom: 1px solid - light-dark(var(--mantine-color-gray-3), var(--mantine-color-dark-9)); - background-color: light-dark( - var(--mantine-color-gray-0), - var(--mantine-color-dark-6) - ); -} diff --git a/cloud/components/Layout/Footer.tsx b/cloud/components/Layout/Footer.tsx deleted file mode 100644 index 07301468..00000000 --- a/cloud/components/Layout/Footer.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { Stack } from "@mantine/core" -import { About } from "./About.tsx" -import { Sitemap } from "./Sitemap.tsx" - -export function Footer() { - return ( - - - - - ) -} diff --git a/cloud/components/Layout/Header.module.css b/cloud/components/Layout/Header.module.css deleted file mode 100644 index 11cf5381..00000000 --- a/cloud/components/Layout/Header.module.css +++ /dev/null @@ -1,10 +0,0 @@ -.root { - height: 64px; - position: sticky; - border-bottom: 1px solid - light-dark(var(--mantine-color-gray-3), var(--mantine-color-dark-9)); - background-color: light-dark( - var(--mantine-color-gray-0), - var(--mantine-color-dark-6) - ); -} diff --git a/cloud/components/Layout/Header.tsx b/cloud/components/Layout/Header.tsx deleted file mode 100644 index f1130679..00000000 --- a/cloud/components/Layout/Header.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { Box, Flex } from "@mantine/core" -import { Breadcrumbs } from "./Breadcrumbs.tsx" -import classes from "./Header.module.css" -import { Language } from "./Language.tsx" -import { Logo } from "./Logo.tsx" -import { Navigation } from "./Navigation.tsx" -import { Repository } from "./Repository.tsx" -import { Share } from "./Share.tsx" -import { Theme } from "./Theme.tsx" - -export function Header() { - return ( - - - - - - - - - - - - - - - - - - - - ) -} diff --git a/cloud/components/Layout/Language.module.css b/cloud/components/Layout/Language.module.css deleted file mode 100644 index 0d9f9ca0..00000000 --- a/cloud/components/Layout/Language.module.css +++ /dev/null @@ -1,35 +0,0 @@ -.control { - display: flex; - justify-content: space-between; - align-items: center; - padding: rem(7px); - border-radius: var(--mantine-radius-lg); - border: rem(1px) solid - light-dark(var(--mantine-color-gray-3), var(--mantine-color-dark-5)); - transition: background-color 150ms ease; - background-color: light-dark( - var(--mantine-color-white), - var(--mantine-color-dark-6) - ); - - &[data-expanded] { - background-color: light-dark( - var(--mantine-color-gray-0), - var(--mantine-color-dark-5) - ); - } - - @mixin hover { - background-color: light-dark( - var(--mantine-color-gray-0), - var(--mantine-color-dark-5) - ); - } -} - -.label { - font-weight: 600; - font-size: var(--mantine-font-size-sm); - margin-right: 0.5em; - /*color: light-dark(var(--mantine-color-black), var(--mantine-color-white));*/ -} diff --git a/cloud/components/Layout/Language.tsx b/cloud/components/Layout/Language.tsx deleted file mode 100644 index b9533102..00000000 --- a/cloud/components/Layout/Language.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import { Box, Group, Menu, Tooltip, UnstyledButton } from "@mantine/core" -import { useState } from "react" -import { De, Es, Fr, Gb, It, Pt, Ru, Ua } from "react-flags-select" -import { useTranslation } from "react-i18next" -import { usePayload } from "#components/System/index.ts" -import { useMakeLink } from "#components/System/index.ts" -import { Languages } from "#constants/language.ts" -import * as icons from "#icons.ts" -import * as settings from "#settings.ts" -import type { LanguageId } from "#types/index.ts" -import classes from "./Language.module.css" - -const LANGUAGE_FLAGS = { - de: De, - en: Gb, - es: Es, - fr: Fr, - it: It, - pt: Pt, - ru: Ru, - uk: Ua, -} as const - -export function Language(props: { fullWidth?: boolean }) { - const { t } = useTranslation() - const payload = usePayload() - const makeLink = useMakeLink() - - const [opened, setOpened] = useState(false) - - const items = Object.values(Languages).map(item => { - const Flag = LANGUAGE_FLAGS[item.languageId as LanguageId] - return ( - { - onLanguageChange(item.languageId) - }} - > - - - {item.title} - - - ) - }) - - const onLanguageChange = (languageId: LanguageId) => { - const location = globalThis.location - if (location) { - // We intentionally do not use client-side routing here - location.href = makeLink({ languageId, pageId: payload.page.pageId }) - } - } - - return ( -
setOpened(true)} - onClose={() => setOpened(false)} - radius="md" - withinPortal - shadow="sm" - > - - - - - - - {payload.language.title} - - - - - - {items} - - ) -} diff --git a/cloud/components/Layout/Layout.tsx b/cloud/components/Layout/Layout.tsx deleted file mode 100644 index ff33a543..00000000 --- a/cloud/components/Layout/Layout.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { Box, Stack } from "@mantine/core" -import { Banner } from "./Banner.tsx" -import { Content } from "./Content.tsx" -import { Footer } from "./Footer.tsx" -import { Header } from "./Header.tsx" -import { Meta } from "./Meta.tsx" - -export function Layout(props: { - children?: React.ReactNode -}) { - return ( - - - -
- - - {props.children} -