rwsdk 1.0.0-beta.27-test.20251111115809 → 1.0.0-beta.27-test.20251112194755

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,14 @@
1
1
  import { CheckConstraintNode, Expression, ForeignKeyConstraintBuilder, PrimaryKeyConstraintNode, sql, UniqueConstraintNode } from "kysely";
2
2
  import { AddColumnOp, AlterColumnOp, AlterOperation, DropColumnOp, ExecutedBuilder, ModifyColumnOp, RenameColumnOp, SqlToTsType } from "../utils";
3
3
  import { AlterColumnBuilderCallback } from "./alterColumn";
4
- import { ColumnDefinitionBuilder } from "./columnDefinition";
4
+ import { ColumnDefinitionBuilder, ColumnDescriptor } from "./columnDefinition";
5
5
  type DataTypeExpression = string | typeof sql;
6
+ type InitialDescriptor<TType> = {
7
+ tsType: TType;
8
+ isNullable: true;
9
+ hasDefault: false;
10
+ isAutoIncrement: false;
11
+ };
6
12
  interface CheckConstraintBuilder {
7
13
  $call<T>(func: (qb: this) => T): T;
8
14
  toOperationNode(): CheckConstraintNode;
@@ -31,14 +37,18 @@ export interface AlterTableBuilder<TName extends string, TOps extends AlterOpera
31
37
  readonly __renamedFrom: TName;
32
38
  };
33
39
  setSchema(newSchema: string): AlterTableBuilder<TName, TOps>;
34
- addColumn<K extends string, T extends DataTypeExpression, TNullable extends boolean = true>(name: K, type: T, build?: (col: ColumnDefinitionBuilder<SqlToTsType<T>>) => ColumnDefinitionBuilder<SqlToTsType<T>, TNullable>): AlterTableBuilder<TName, [...TOps, AddColumnOp<K, T, TNullable>]>;
40
+ addColumn<K extends string, T extends DataTypeExpression>(name: K, type: T): AlterTableBuilder<TName, [
41
+ ...TOps,
42
+ AddColumnOp<K, T, InitialDescriptor<SqlToTsType<T>>>
43
+ ]>;
44
+ addColumn<K extends string, T extends DataTypeExpression, TDescriptor extends ColumnDescriptor>(name: K, type: T, build: (col: ColumnDefinitionBuilder<InitialDescriptor<SqlToTsType<T>>>) => ColumnDefinitionBuilder<TDescriptor>): AlterTableBuilder<TName, [...TOps, AddColumnOp<K, T, TDescriptor>]>;
35
45
  dropColumn<K extends string>(name: K): AlterTableBuilder<TName, [...TOps, DropColumnOp<K>]>;
36
46
  renameColumn<KFrom extends string, KTo extends string>(from: KFrom, to: KTo): AlterTableBuilder<TName, [...TOps, RenameColumnOp<KFrom, KTo>]>;
37
47
  alterColumn<K extends string, const TCallback extends AlterColumnBuilderCallback>(column: K, alteration: TCallback): AlterTableBuilder<TName, [
38
48
  ...TOps,
39
49
  AlterColumnOp<K, ReturnType<TCallback>["__alteration"]>
40
50
  ]>;
41
- modifyColumn<K extends string, T extends DataTypeExpression, TNullable extends boolean = true>(column: K, type: T, build?: (col: ColumnDefinitionBuilder<SqlToTsType<T>>) => ColumnDefinitionBuilder<SqlToTsType<T>, TNullable>): AlterTableBuilder<TName, [...TOps, ModifyColumnOp<K, T, TNullable>]>;
51
+ modifyColumn<K extends string, T extends DataTypeExpression, TDescriptor extends ColumnDescriptor>(column: K, type: T, build?: (col: ColumnDefinitionBuilder<InitialDescriptor<SqlToTsType<T>>>) => ColumnDefinitionBuilder<TDescriptor>): AlterTableBuilder<TName, [...TOps, ModifyColumnOp<K, T, TDescriptor>]>;
42
52
  addUniqueConstraint(constraintName: string, columns: string[], build?: (builder: UniqueConstraintBuilder) => UniqueConstraintBuilder): AlterTableBuilder<TName, TOps>;
43
53
  addPrimaryKeyConstraint(constraintName: string, columns: string[], build?: (builder: PrimaryKeyConstraintBuilder) => PrimaryKeyConstraintBuilder): AlterTableBuilder<TName, TOps>;
44
54
  addCheckConstraint(constraintName: string, checkExpression: Expression<any>, build?: (builder: CheckConstraintBuilder) => CheckConstraintBuilder): AlterTableBuilder<TName, TOps>;
@@ -1,25 +1,39 @@
1
1
  import { ColumnDefinitionNode, Expression, sql } from "kysely";
2
2
  type DefaultValueExpression = string | number | boolean | null | ReturnType<typeof sql>;
3
- export interface ColumnDefinitionBuilder<TType, TNullable extends boolean = true> {
4
- autoIncrement(): ColumnDefinitionBuilder<TType, TNullable>;
5
- identity(): ColumnDefinitionBuilder<TType, TNullable>;
6
- primaryKey(): ColumnDefinitionBuilder<TType, false>;
7
- references(ref: string): ColumnDefinitionBuilder<TType, TNullable>;
8
- onDelete(onDelete: "no action" | "restrict" | "cascade" | "set null" | "set default"): ColumnDefinitionBuilder<TType, TNullable>;
9
- onUpdate(onUpdate: "no action" | "restrict" | "cascade" | "set null" | "set default"): ColumnDefinitionBuilder<TType, TNullable>;
10
- unique(): ColumnDefinitionBuilder<TType, TNullable>;
11
- notNull(): ColumnDefinitionBuilder<TType, false>;
12
- unsigned(): ColumnDefinitionBuilder<TType, TNullable>;
13
- defaultTo(value: DefaultValueExpression): ColumnDefinitionBuilder<TType, false>;
14
- check(expression: Expression<any>): ColumnDefinitionBuilder<TType, TNullable>;
15
- generatedAlwaysAs(expression: Expression<any>): ColumnDefinitionBuilder<TType, TNullable>;
16
- generatedAlwaysAsIdentity(): ColumnDefinitionBuilder<TType, TNullable>;
17
- generatedByDefaultAsIdentity(): ColumnDefinitionBuilder<TType, TNullable>;
18
- stored(): ColumnDefinitionBuilder<TType, TNullable>;
19
- modifyFront(modifier: Expression<any>): ColumnDefinitionBuilder<TType, TNullable>;
20
- nullsNotDistinct(): ColumnDefinitionBuilder<TType, TNullable>;
21
- ifNotExists(): ColumnDefinitionBuilder<TType, TNullable>;
22
- modifyEnd(modifier: Expression<any>): ColumnDefinitionBuilder<TType, TNullable>;
3
+ export type ColumnDescriptor = {
4
+ tsType: any;
5
+ isNullable: boolean;
6
+ hasDefault: boolean;
7
+ isAutoIncrement: boolean;
8
+ };
9
+ export interface ColumnDefinitionBuilder<TDescriptor extends ColumnDescriptor> {
10
+ autoIncrement(): ColumnDefinitionBuilder<{
11
+ [K in keyof TDescriptor]: K extends "isAutoIncrement" ? true : TDescriptor[K];
12
+ }>;
13
+ identity(): ColumnDefinitionBuilder<TDescriptor>;
14
+ primaryKey(): ColumnDefinitionBuilder<{
15
+ [K in keyof TDescriptor]: K extends "isNullable" ? false : TDescriptor[K];
16
+ }>;
17
+ references(ref: string): ColumnDefinitionBuilder<TDescriptor>;
18
+ onDelete(onDelete: "no action" | "restrict" | "cascade" | "set null" | "set default"): ColumnDefinitionBuilder<TDescriptor>;
19
+ onUpdate(onUpdate: "no action" | "restrict" | "cascade" | "set null" | "set default"): ColumnDefinitionBuilder<TDescriptor>;
20
+ unique(): ColumnDefinitionBuilder<TDescriptor>;
21
+ notNull(): ColumnDefinitionBuilder<{
22
+ [K in keyof TDescriptor]: K extends "isNullable" ? false : TDescriptor[K];
23
+ }>;
24
+ unsigned(): ColumnDefinitionBuilder<TDescriptor>;
25
+ defaultTo(value: DefaultValueExpression): ColumnDefinitionBuilder<{
26
+ [K in keyof TDescriptor]: K extends "isNullable" ? false : K extends "hasDefault" ? true : TDescriptor[K];
27
+ }>;
28
+ check(expression: Expression<any>): ColumnDefinitionBuilder<TDescriptor>;
29
+ generatedAlwaysAs(expression: Expression<any>): ColumnDefinitionBuilder<TDescriptor>;
30
+ generatedAlwaysAsIdentity(): ColumnDefinitionBuilder<TDescriptor>;
31
+ generatedByDefaultAsIdentity(): ColumnDefinitionBuilder<TDescriptor>;
32
+ stored(): ColumnDefinitionBuilder<TDescriptor>;
33
+ modifyFront(modifier: Expression<any>): ColumnDefinitionBuilder<TDescriptor>;
34
+ nullsNotDistinct(): ColumnDefinitionBuilder<TDescriptor>;
35
+ ifNotExists(): ColumnDefinitionBuilder<TDescriptor>;
36
+ modifyEnd(modifier: Expression<any>): ColumnDefinitionBuilder<TDescriptor>;
23
37
  $call<T>(func: (qb: this) => T): T;
24
38
  toOperationNode(): ColumnDefinitionNode;
25
39
  }
@@ -1,6 +1,6 @@
1
1
  import { CheckConstraintNode, CompiledQuery, CreateTableNode, Expression, ForeignKeyConstraintBuilder, PrimaryKeyConstraintNode, UniqueConstraintNode } from "kysely";
2
2
  import { ExecutedBuilder, Prettify, SqlToTsType } from "../utils";
3
- import { ColumnDefinitionBuilder } from "./columnDefinition";
3
+ import { ColumnDefinitionBuilder, ColumnDescriptor } from "./columnDefinition";
4
4
  interface CheckConstraintBuilder {
5
5
  $call<T>(func: (qb: this) => T): T;
6
6
  toOperationNode(): CheckConstraintNode;
@@ -22,14 +22,20 @@ interface PrimaryKeyConstraintBuilder {
22
22
  $call<T>(func: (qb: this) => T): T;
23
23
  toOperationNode(): PrimaryKeyConstraintNode;
24
24
  }
25
+ type InitialDescriptor<TType> = {
26
+ tsType: TType;
27
+ isNullable: true;
28
+ hasDefault: false;
29
+ isAutoIncrement: false;
30
+ };
25
31
  export interface CreateTableBuilder<TName extends string, TSchema extends Record<string, any> = {}> {
26
32
  readonly __tableName: TName;
27
33
  readonly __addedColumns: TSchema;
28
34
  temporary(): CreateTableBuilder<TName, TSchema>;
29
35
  onCommit(onCommit: "preserve rows" | "delete rows" | "drop"): CreateTableBuilder<TName, TSchema>;
30
36
  ifNotExists(): CreateTableBuilder<TName, TSchema>;
31
- addColumn<K extends string, T extends string>(name: K, type: T): CreateTableBuilder<TName, Prettify<(TSchema extends Record<string, any> ? TSchema : {}) & Record<K, SqlToTsType<T> | null>>>;
32
- addColumn<K extends string, T extends string, TNullable extends boolean>(name: K, type: T, build: (col: ColumnDefinitionBuilder<SqlToTsType<T>>) => ColumnDefinitionBuilder<SqlToTsType<T>, TNullable>): CreateTableBuilder<TName, Prettify<(TSchema extends Record<string, any> ? TSchema : {}) & Record<K, TNullable extends true ? SqlToTsType<T> | null : SqlToTsType<T>>>>;
37
+ addColumn<K extends string, T extends string>(name: K, type: T): CreateTableBuilder<TName, Prettify<(TSchema extends Record<string, any> ? TSchema : {}) & Record<K, InitialDescriptor<SqlToTsType<T>>>>>;
38
+ addColumn<K extends string, T extends string, TDescriptor extends ColumnDescriptor>(name: K, type: T, build: (col: ColumnDefinitionBuilder<InitialDescriptor<SqlToTsType<T>>>) => ColumnDefinitionBuilder<TDescriptor>): CreateTableBuilder<TName, Prettify<(TSchema extends Record<string, any> ? TSchema : {}) & Record<K, TDescriptor>>>;
33
39
  addUniqueConstraint(constraintName: string, columns: (keyof TSchema)[], build?: (builder: UniqueConstraintBuilder) => UniqueConstraintBuilder): CreateTableBuilder<TName, TSchema>;
34
40
  addPrimaryKeyConstraint(constraintName: string, columns: (keyof TSchema)[], build?: (builder: PrimaryKeyConstraintBuilder) => PrimaryKeyConstraintBuilder): CreateTableBuilder<TName, TSchema>;
35
41
  addCheckConstraint(constraintName: string, checkExpression: Expression<any>, build?: (builder: CheckConstraintBuilder) => CheckConstraintBuilder): CreateTableBuilder<TName, TSchema>;
@@ -1,9 +1,10 @@
1
- import { Kysely } from "kysely";
1
+ import { Generated, Kysely } from "kysely";
2
2
  import { AlterTableBuilder } from "./builders/alterTable";
3
3
  import { CreateTableBuilder } from "./builders/createTable";
4
4
  import { DropTableBuilder } from "./builders/dropTable";
5
5
  import { SchemaBuilder } from "./builders/schema";
6
6
  import { ExecutedBuilder, Prettify, ProcessAlteredTable, UnionToTuple } from "./utils";
7
+ import { ColumnDescriptor } from "./builders/columnDefinition";
7
8
  export interface InferenceBuilder {
8
9
  schema: SchemaBuilder;
9
10
  }
@@ -23,5 +24,18 @@ type ApplyBuilders<TSchema, TBuildersTuple> = TBuildersTuple extends [
23
24
  ...infer TRest
24
25
  ] ? ApplyBuilders<ApplyBuilder<TSchema, THead>, TRest> : TSchema;
25
26
  type ProcessMigrations<TMigrations extends Migrations, TKeys, TSchema = {}> = TKeys extends [infer THeadKey, ...infer TRestKeys] ? THeadKey extends keyof TMigrations ? ProcessMigrations<TMigrations, TRestKeys, ApplyBuilders<TSchema, UnionToTuple<BuildersFromMigration<TMigrations[THeadKey]>>>> : TSchema : TSchema;
26
- export type Database<TMigrations extends Migrations = Migrations> = ProcessMigrations<TMigrations, UnionToTuple<keyof TMigrations>>;
27
+ type TableToSelectType<TTable> = Prettify<{
28
+ [K in keyof TTable]: TTable[K] extends ColumnDescriptor ? TTable[K]["isNullable"] extends true ? TTable[K]["tsType"] | null : TTable[K]["tsType"] : TTable[K];
29
+ }>;
30
+ type TableToKyselySchema<TTable> = Prettify<{
31
+ [K in keyof TTable]: TTable[K] extends ColumnDescriptor ? TTable[K]["hasDefault"] extends true ? Generated<TTable[K]["isNullable"] extends true ? TTable[K]["tsType"] | null : TTable[K]["tsType"]> : TTable[K]["isAutoIncrement"] extends true ? Generated<TTable[K]["tsType"]> : TTable[K]["isNullable"] extends true ? TTable[K]["tsType"] | null : TTable[K]["tsType"] : TTable[K];
32
+ }>;
33
+ type DatabaseWithDescriptors<TMigrations extends Migrations = Migrations> = ProcessMigrations<TMigrations, UnionToTuple<keyof TMigrations>>;
34
+ export type Database<TMigrations extends Migrations = Migrations> = Prettify<{
35
+ [K in keyof DatabaseWithDescriptors<TMigrations>]: TableToSelectType<DatabaseWithDescriptors<TMigrations>[K]>;
36
+ } & {
37
+ __kyselySchema: {
38
+ [K in keyof DatabaseWithDescriptors<TMigrations>]: TableToKyselySchema<DatabaseWithDescriptors<TMigrations>[K]>;
39
+ };
40
+ }>;
27
41
  export {};
@@ -97,7 +97,7 @@
97
97
  },
98
98
  },
99
99
  };
100
- //(_test: Expect<Equal<Actual, Expected>>) => {};
100
+ //(_test: ExpectDb<Actual, Expected>) => {};
101
101
  };
102
102
  (_it = "alterTable addUniqueConstraint") => {
103
103
  const migrations = {
@@ -123,7 +123,7 @@
123
123
  },
124
124
  },
125
125
  };
126
- //(_test: Expect<Equal<Actual, Expected>>) => {};
126
+ //(_test: ExpectDb<Actual, Expected>) => {};
127
127
  };
128
128
  (_it = "alterTable drop column") => {
129
129
  const migrations = {
@@ -82,3 +82,54 @@ import { sql } from "kysely";
82
82
  };
83
83
  (_test) => { };
84
84
  };
85
+ (_it = "defaultTo makes columns non-nullable in Database type") => {
86
+ const migrations = {
87
+ "001_init": {
88
+ async up(db) {
89
+ return [
90
+ await db.schema
91
+ .createTable("users")
92
+ .addColumn("status", "text", (col) => col.defaultTo("active"))
93
+ .addColumn("count", "integer", (col) => col.defaultTo(0))
94
+ .execute(),
95
+ ];
96
+ },
97
+ },
98
+ };
99
+ (_test) => { };
100
+ };
101
+ // --- Insert/Update Type Tests ---
102
+ (_it = "makes autoIncrement columns optional on insert") => {
103
+ const migrations = {
104
+ "001_init": {
105
+ async up(db) {
106
+ return [
107
+ await db.schema
108
+ .createTable("users")
109
+ .addColumn("id", "integer", (col) => col.primaryKey().autoIncrement())
110
+ .addColumn("username", "text", (col) => col.notNull())
111
+ .execute(),
112
+ ];
113
+ },
114
+ },
115
+ };
116
+ const db = {};
117
+ db.insertInto("users").values({ username: "test" });
118
+ };
119
+ (_it = "makes defaultTo columns optional on insert") => {
120
+ const migrations = {
121
+ "001_init": {
122
+ async up(db) {
123
+ return [
124
+ await db.schema
125
+ .createTable("users")
126
+ .addColumn("username", "text", (col) => col.notNull())
127
+ .addColumn("status", "text", (col) => col.notNull().defaultTo("active"))
128
+ .execute(),
129
+ ];
130
+ },
131
+ },
132
+ };
133
+ const db = {};
134
+ db.insertInto("users").values({ username: "test" });
135
+ };
@@ -1,2 +1,3 @@
1
1
  export type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
2
2
  export type Expect<T extends true> = T;
3
+ export type OmitInternals<T> = Omit<T, "__kyselySchema">;
@@ -1,10 +1,11 @@
1
1
  import { sql } from "kysely";
2
+ import { ColumnDescriptor } from "./builders/columnDefinition";
2
3
  type DataTypeExpression = string | typeof sql;
3
- export type AddColumnOp<K extends string, T extends DataTypeExpression, TNullable extends boolean = true> = {
4
+ export type AddColumnOp<K extends string, T extends DataTypeExpression, TDescriptor extends ColumnDescriptor> = {
4
5
  op: "addColumn";
5
6
  name: K;
6
7
  type: T;
7
- nullable: TNullable;
8
+ descriptor: TDescriptor;
8
9
  };
9
10
  export type DropColumnOp<K extends string> = {
10
11
  op: "dropColumn";
@@ -15,11 +16,11 @@ export type RenameColumnOp<KFrom extends string, KTo extends string> = {
15
16
  from: KFrom;
16
17
  to: KTo;
17
18
  };
18
- export type ModifyColumnOp<K extends string, T extends DataTypeExpression, TNullable extends boolean = true> = {
19
+ export type ModifyColumnOp<K extends string, T extends DataTypeExpression, TDescriptor extends ColumnDescriptor> = {
19
20
  op: "modifyColumn";
20
21
  name: K;
21
22
  type: T;
22
- nullable: TNullable;
23
+ descriptor: TDescriptor;
23
24
  };
24
25
  export type Alteration = {
25
26
  kind: "setDataType";
@@ -59,17 +60,64 @@ export type Cast<A, B> = A extends B ? A : B;
59
60
  /**
60
61
  * Applies a single alteration operation to a schema.
61
62
  */
62
- type ApplyOp<TSchema, THeadOp> = THeadOp extends AddColumnOp<infer K, infer T, infer TNullable> ? Prettify<TSchema & {
63
- [P in K]: TNullable extends true ? SqlToTsType<T> | null : SqlToTsType<T>;
63
+ type ApplyOp<TSchema, THeadOp> = THeadOp extends AddColumnOp<infer K, any, infer TDescriptor> ? Prettify<TSchema & {
64
+ [P in K]: TDescriptor;
64
65
  }> : THeadOp extends DropColumnOp<infer K> ? Omit<TSchema, K> : THeadOp extends RenameColumnOp<infer KFrom, infer KTo> ? KFrom extends keyof TSchema ? Prettify<Omit<TSchema, KFrom> & {
65
66
  [P in KTo]: TSchema[KFrom];
66
- }> : TSchema : THeadOp extends AlterColumnOp<infer K, infer TAlt> ? TAlt extends {
67
+ }> : TSchema : THeadOp extends AlterColumnOp<infer K, infer TAlt> ? K extends keyof TSchema ? TAlt extends {
67
68
  kind: "setDataType";
68
69
  dataType: infer DT extends string;
69
70
  } ? Prettify<Omit<TSchema, K> & {
70
- [P in K]: SqlToTsType<DT>;
71
- }> : TSchema : THeadOp extends ModifyColumnOp<infer K, infer T, infer TNullable> ? Prettify<Omit<TSchema, K> & {
72
- [P in K]: TNullable extends true ? SqlToTsType<T> | null : SqlToTsType<T>;
71
+ [P in K]: {
72
+ tsType: SqlToTsType<DT>;
73
+ isNullable: TSchema[K] extends {
74
+ isNullable: infer N;
75
+ } ? N : true;
76
+ hasDefault: TSchema[K] extends {
77
+ hasDefault: infer D;
78
+ } ? D : false;
79
+ isAutoIncrement: TSchema[K] extends {
80
+ isAutoIncrement: infer A;
81
+ } ? A : false;
82
+ };
83
+ }> : TAlt extends {
84
+ kind: "setDefault";
85
+ } ? Prettify<Omit<TSchema, K> & {
86
+ [P in K]: TSchema[K] extends ColumnDescriptor ? {
87
+ tsType: TSchema[K]["tsType"];
88
+ isNullable: false;
89
+ hasDefault: true;
90
+ isAutoIncrement: TSchema[K]["isAutoIncrement"];
91
+ } : TSchema[K];
92
+ }> : TAlt extends {
93
+ kind: "dropDefault";
94
+ } ? Prettify<Omit<TSchema, K> & {
95
+ [P in K]: TSchema[K] extends ColumnDescriptor ? {
96
+ tsType: TSchema[K]["tsType"];
97
+ isNullable: TSchema[K]["isNullable"];
98
+ hasDefault: false;
99
+ isAutoIncrement: TSchema[K]["isAutoIncrement"];
100
+ } : TSchema[K];
101
+ }> : TAlt extends {
102
+ kind: "setNotNull";
103
+ } ? Prettify<Omit<TSchema, K> & {
104
+ [P in K]: TSchema[K] extends ColumnDescriptor ? {
105
+ tsType: TSchema[K]["tsType"];
106
+ isNullable: false;
107
+ hasDefault: TSchema[K]["hasDefault"];
108
+ isAutoIncrement: TSchema[K]["isAutoIncrement"];
109
+ } : TSchema[K];
110
+ }> : TAlt extends {
111
+ kind: "dropNotNull";
112
+ } ? Prettify<Omit<TSchema, K> & {
113
+ [P in K]: TSchema[K] extends ColumnDescriptor ? {
114
+ tsType: TSchema[K]["tsType"];
115
+ isNullable: true;
116
+ hasDefault: TSchema[K]["hasDefault"];
117
+ isAutoIncrement: TSchema[K]["isAutoIncrement"];
118
+ } : TSchema[K];
119
+ }> : TSchema : TSchema : THeadOp extends ModifyColumnOp<infer K, any, infer TDescriptor> ? Prettify<Omit<TSchema, K> & {
120
+ [P in K]: TDescriptor;
73
121
  }> : TSchema;
74
122
  /**
75
123
  * Recursively processes a list of alteration operations (AST)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rwsdk",
3
- "version": "1.0.0-beta.27-test.20251111115809",
3
+ "version": "1.0.0-beta.27-test.20251112194755",
4
4
  "description": "Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime",
5
5
  "type": "module",
6
6
  "bin": {