Compare commits

..

4 Commits

Author SHA1 Message Date
dswbx 143d6a55ff updated lock to 0.16.1 2025-08-06 08:31:19 +02:00
dswbx 8fa905a8f1 docs: adding poster to assets (#228)
* docs: adding poster to assets

* readme: fix poster image
2025-08-06 08:29:46 +02:00
dswbx ad0d2e6ff8 add jsonv-ts as dependency for type inference, fix media api types (#227)
* add jsonv-ts as dependency for type inference, fix media api types

* add jsonv-ts as dependency for type inference, fix media api types

* add jsonv-ts as dependency for type inference, fix media api types
2025-08-06 08:21:17 +02:00
dswbx aa0e6f90d9 examples: fixing imports due to 0.16 (#226) 2025-08-06 08:19:29 +02:00
13 changed files with 35 additions and 37 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
[![npm version](https://img.shields.io/npm/v/bknd.svg)](https://npmjs.org/package/bknd)
![bknd](https://raw.githubusercontent.com/bknd-io/bknd/refs/heads/main/docs/_assets/poster.png)
![bknd](https://raw.githubusercontent.com/bknd-io/bknd/refs/heads/main/docs/public/assets/poster.png)
<p align="center" width="100%">
<a href="https://stackblitz.com/github/bknd-io/bknd-examples?hideExplorer=1&embed=1&view=preview&startScript=example-admin-rich&initialPath=%2Fdata%2Fschema" target="_blank">
+3 -3
View File
@@ -3,7 +3,7 @@
"type": "module",
"sideEffects": false,
"bin": "./dist/cli/index.js",
"version": "0.16.0",
"version": "0.16.1",
"description": "Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.",
"homepage": "https://bknd.io",
"repository": {
@@ -64,7 +64,8 @@
"hono": "4.8.3",
"json-schema-library": "10.0.0-rc7",
"json-schema-to-ts": "^3.1.1",
"kysely": "^0.27.6",
"jsonv-ts": "0.3.2",
"kysely": "0.27.6",
"lodash-es": "^4.17.21",
"oauth4webapi": "^2.11.1",
"object-path-immutable": "^4.1.2",
@@ -100,7 +101,6 @@
"dotenv": "^16.4.7",
"jotai": "^2.12.2",
"jsdom": "^26.0.0",
"jsonv-ts": "^0.3.2",
"kysely-d1": "^0.3.0",
"kysely-generic-sqlite": "^1.2.1",
"libsql-stateless-easy": "^1.8.0",
+3 -3
View File
@@ -68,7 +68,7 @@ export class MediaApi extends ModuleApi<MediaApiOptions> {
}
protected uploadFile(
body: File | Blob | ReadableStream,
body: File | Blob | ReadableStream | Buffer<ArrayBufferLike>,
opts?: {
filename?: string;
path?: TInput;
@@ -110,7 +110,7 @@ export class MediaApi extends ModuleApi<MediaApiOptions> {
}
async upload(
item: Request | Response | string | File | Blob | ReadableStream,
item: Request | Response | string | File | Blob | ReadableStream | Buffer<ArrayBufferLike>,
opts: {
filename?: string;
_init?: Omit<RequestInit, "body">;
@@ -148,7 +148,7 @@ export class MediaApi extends ModuleApi<MediaApiOptions> {
entity: string,
id: PrimaryFieldType,
field: string,
item: Request | Response | string | File | ReadableStream,
item: Request | Response | string | File | ReadableStream | Buffer<ArrayBufferLike>,
opts?: {
_init?: Omit<RequestInit, "body">;
fetcher?: typeof fetch;
@@ -183,13 +183,13 @@ export class StorageS3Adapter extends StorageAdapter {
method: "GET",
headers: pickHeaders2(headers, [
"if-none-match",
"accept-encoding",
//"accept-encoding", (causes 403 on r2)
"accept",
"if-modified-since",
]),
});
// Response has to be copied, because of middlewares that might set headers
// response has to be copied, because of middlewares that might set headers
return new Response(res.body, {
status: res.status,
statusText: res.statusText,
@@ -94,8 +94,8 @@ export const TriggerNode = (props: NodeProps<Node<TAppFlowTriggerSchema & { labe
control={control}
/>
</div>
{data.type === "manual" && <Manual />}
{data.type === "http" && (
{data?.type === "manual" && <Manual />}
{data?.type === "http" && (
<Http form={{ watch, register, setValue, getValues, control }} />
)}
</form>
+3 -3
View File
@@ -15,7 +15,7 @@
},
"app": {
"name": "bknd",
"version": "0.16.0-rc.0",
"version": "0.16.1",
"bin": "./dist/cli/index.js",
"dependencies": {
"@cfworker/json-schema": "^4.1.1",
@@ -35,7 +35,8 @@
"hono": "4.8.3",
"json-schema-library": "10.0.0-rc7",
"json-schema-to-ts": "^3.1.1",
"kysely": "^0.27.6",
"jsonv-ts": "0.3.2",
"kysely": "0.27.6",
"lodash-es": "^4.17.21",
"oauth4webapi": "^2.11.1",
"object-path-immutable": "^4.1.2",
@@ -71,7 +72,6 @@
"dotenv": "^16.4.7",
"jotai": "^2.12.2",
"jsdom": "^26.0.0",
"jsonv-ts": "^0.3.2",
"kysely-d1": "^0.3.0",
"kysely-generic-sqlite": "^1.2.1",
"libsql-stateless-easy": "^1.8.0",
Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

+2 -2
View File
@@ -1,6 +1,6 @@
import type { AstroBkndConfig } from "bknd/adapter/astro";
import { registerLocalMediaAdapter } from "bknd/adapter/node";
import { boolean, em, entity, text } from "bknd/data";
import { boolean, em, entity, text } from "bknd";
import { secureRandomString } from "bknd/utils";
// since we're running in node, we can register the local media adapter
@@ -16,7 +16,7 @@ const schema = em({
// register your schema to get automatic type completion
type Database = (typeof schema)["DB"];
declare module "bknd/core" {
declare module "bknd" {
interface DB extends Database {}
}
+2 -2
View File
@@ -1,5 +1,5 @@
import type { NextjsBkndConfig } from "bknd/adapter/nextjs";
import { boolean, em, entity, text } from "bknd/data";
import { boolean, em, entity, text } from "bknd";
import { registerLocalMediaAdapter } from "bknd/adapter/node";
import { secureRandomString } from "bknd/utils";
@@ -22,7 +22,7 @@ const schema = em({
// register your schema to get automatic type completion
type Database = (typeof schema)["DB"];
declare module "bknd/core" {
declare module "bknd" {
interface DB extends Database {}
}
+11 -12
View File
@@ -1,6 +1,5 @@
import { App } from "bknd";
import { serve } from "bknd/adapter/vite";
import { boolean, em, entity, text } from "bknd/data";
import { App, boolean, em, entity, text } from "bknd";
import { secureRandomString } from "bknd/utils";
export default serve({
@@ -8,23 +7,23 @@ export default serve({
data: em({
todos: entity("todos", {
title: text(),
done: boolean()
})
done: boolean(),
}),
}).toJSON(),
auth: {
enabled: true,
jwt: {
secret: secureRandomString(64)
}
}
secret: secureRandomString(64),
},
},
},
options: {
seed: async (ctx) => {
await ctx.em.mutator("todos" as any).insertMany([
{ title: "Learn bknd", done: true },
{ title: "Build something cool", done: false }
{ title: "Build something cool", done: false },
]);
}
},
},
// here we can hook into the app lifecycle events ...
beforeBuild: async (app) => {
@@ -34,10 +33,10 @@ export default serve({
// ... to create an initial user
await app.module.auth.createUser({
email: "ds@bknd.io",
password: "12345678"
password: "12345678",
});
},
"sync"
"sync",
);
}
},
});
+2 -2
View File
@@ -1,6 +1,6 @@
import { registerLocalMediaAdapter } from "bknd/adapter/node";
import type { ReactRouterBkndConfig } from "bknd/adapter/react-router";
import { boolean, em, entity, text } from "bknd/data";
import { boolean, em, entity, text } from "bknd";
import { secureRandomString } from "bknd/utils";
// since we're running in node, we can register the local media adapter
@@ -15,7 +15,7 @@ const schema = em({
// register your schema to get automatic type completion
type Database = (typeof schema)["DB"];
declare module "bknd/core" {
declare module "bknd" {
interface DB extends Database {}
}
+2 -3
View File
@@ -1,7 +1,6 @@
import { lazy, Suspense, useEffect, useState } from "react";
import { App } from "bknd";
import { checksum } from "bknd/utils";
import { boolean, em, entity, text } from "bknd/data";
import { App, boolean, em, entity, text } from "bknd";
import { SQLocalConnection } from "@bknd/sqlocal";
import { Route, Router, Switch } from "wouter";
import IndexPage from "~/routes/_index";
@@ -68,7 +67,7 @@ const schema = em({
// register your schema to get automatic type completion
type Database = (typeof schema)["DB"];
declare module "bknd/core" {
declare module "bknd" {
interface DB extends Database {}
}
+2 -2
View File
@@ -1,6 +1,6 @@
import { registerLocalMediaAdapter } from "bknd/adapter/node";
import type { BkndConfig } from "bknd/adapter";
import { boolean, em, entity, text } from "bknd/data";
import { boolean, em, entity, text } from "bknd";
import { secureRandomString } from "bknd/utils";
// since we're running in node, we can register the local media adapter
@@ -15,7 +15,7 @@ const schema = em({
// register your schema to get automatic type completion
type Database = (typeof schema)["DB"];
declare module "bknd/core" {
declare module "bknd" {
interface DB extends Database {}
}