@idb-orm/core 1.0.4 → 1.0.6

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,6 +1,6 @@
1
1
  import { CompiledDb } from "../builder.js";
2
- import { BaseRelation, Field, OptionalRelation, PrimaryKey, Relation, RelationArray, RelationOutput, ValidValue } from "../field";
3
- import { Dict, Keyof, ZodWrap } from "../types/common.js";
2
+ import { ValidValue, BaseRelation, OptionalRelation, ArrayRelation, RelationOutput, Relation, AbstractProperty, PrimaryKey, ParseFnWrap } from "../field";
3
+ import { Dict, Keyof } from "../util-types.js";
4
4
  import Model from "./model.js";
5
5
  export type FindPrimaryKey<F extends Record<string, ValidValue>> = Extract<{
6
6
  [K in keyof F]: F[K] extends PrimaryKey<any, any> ? K : never;
@@ -18,9 +18,9 @@ export type RelationValue<Name extends string, C> = Name extends keyof C ? C[Nam
18
18
  /**
19
19
  * Gets the primitive type of the relation field
20
20
  */
21
- export type GetRelationField<F, C> = F extends Relation<infer To, any> ? RelationValue<To, C> : F extends OptionalRelation<infer To, any> ? RelationValue<To, C> | undefined : F extends RelationArray<infer To, any> ? RelationValue<To, C>[] : never;
21
+ export type GetRelationField<F, C> = F extends Relation<infer To, any> ? RelationValue<To, C> : F extends OptionalRelation<infer To, any> ? RelationValue<To, C> | undefined : F extends ArrayRelation<infer To, any> ? RelationValue<To, C>[] : never;
22
22
  export type ModelStructure<F extends Dict<ValidValue>, C> = {
23
- [K in keyof F]: F[K] extends Field<infer Output, any> ? Output : F[K] extends PrimaryKey<any, infer Type> ? Type : GetRelationField<F[K], C>;
23
+ [K in keyof F]: F[K] extends AbstractProperty<infer Output, any> ? Output : F[K] extends PrimaryKey<any, infer Type> ? Type : GetRelationField<F[K], C>;
24
24
  };
25
25
  export type ModelType<M extends Model<any, any, any>, C extends CompiledDb<any, any, any>> = M extends Model<any, infer Fields, any> ? C extends CompiledDb<any, any, infer Collection> ? ModelStructure<Fields, Collection> : never : never;
26
26
  export type ExtractFields<M extends Model<any, any, any>> = M extends Model<any, infer Fields, any> ? Fields : never;
@@ -28,10 +28,10 @@ export type AllRelationKeys<M extends Model<any, any, any>> = M extends Model<an
28
28
  [K in Keyof<Fields>]: Fields[K] extends BaseRelation<any, any> ? K : never;
29
29
  }[Keyof<Fields>] : never;
30
30
  export type RelationlessModelStructure<M extends Model<any, any, any>> = M extends Model<any, infer Fields, any> ? Omit<{
31
- [K in Keyof<Fields>]: Fields[K] extends BaseRelation<any, any> ? unknown : Fields[K] extends Field<infer Type, any> ? Type : Fields[K] extends PrimaryKey<any, infer Type> ? Type : never;
31
+ [K in Keyof<Fields>]: Fields[K] extends BaseRelation<any, any> ? unknown : Fields[K] extends AbstractProperty<infer Type, any> ? Type : Fields[K] extends PrimaryKey<any, infer Type> ? Type : never;
32
32
  }, AllRelationKeys<M>> : never;
33
- export type CollectionZodSchema<C> = C extends Record<infer Keys, Model<any, any, any>> ? {
34
- [K in Keys]: C[K] extends Model<any, infer Fields, any> ? ZodWrap<ModelStructure<Fields, C>> : never;
33
+ export type CollectionSchema<C> = C extends Record<infer Keys, Model<any, any, any>> ? {
34
+ [K in Keys]: C[K] extends Model<any, infer Fields, any> ? ParseFnWrap<ModelStructure<Fields, C>> : never;
35
35
  } : never;
36
36
  export type FindRelationKey<From extends string, RelationName extends string, M extends Model<any, any, any>> = M extends Model<any, infer Fields, any> ? {
37
37
  [K in Keyof<Fields>]: Fields[K] extends BaseRelation<From, infer CurName> ? CurName extends RelationName ? K : never : never;
@@ -1,8 +1,7 @@
1
- import z from "zod";
2
1
  import { CollectionObject } from "../builder.js";
3
2
  import { DbClient } from "../client/index.js";
4
- import { BaseRelation, Field, FieldTypes, PrimaryKey, ValidValue } from "../field";
5
- import { Keyof, ValidKey } from "../types/common.js";
3
+ import { BaseRelation, AbstractProperty, FieldTypes, PrimaryKey, ValidValue, ParseResult } from "../field";
4
+ import { Keyof, ValidKey } from "../util-types.js";
6
5
  import { FindPrimaryKey } from "./model-types.js";
7
6
  export default class Model<Name extends string, F extends Record<string, ValidValue>, Primary extends FindPrimaryKey<F> = FindPrimaryKey<F>> {
8
7
  readonly name: Name;
@@ -13,12 +12,12 @@ export default class Model<Name extends string, F extends Record<string, ValidVa
13
12
  readonly primaryKey: Primary;
14
13
  constructor(name: Name, fields: F);
15
14
  get<K extends Keyof<F>>(key: K): F[K];
16
- getModelField(key: string): Field<any, any> | undefined;
15
+ getModelField(key: string): AbstractProperty<any, any> | undefined;
17
16
  getPrimaryKey(): PrimaryKey<boolean, ValidKey>;
18
17
  getRelation<Models extends string>(key: string): BaseRelation<Models, string> | undefined;
19
18
  keyType(key: Keyof<F>): FieldTypes;
20
19
  links<Names extends string = string>(): SetIterator<Names>;
21
20
  keys(): Keyof<F>[];
22
- parseField<K extends Keyof<F>>(field: K, value: unknown): z.ZodSafeParseResult<any>;
21
+ parseField<K extends Keyof<F>>(field: K, value: unknown): ParseResult<any>;
23
22
  getDeletedStores<ModelNames extends string, Models extends CollectionObject<ModelNames>>(client: DbClient<string, ModelNames, Models>): Set<ModelNames>;
24
23
  }
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { StoreError } from "./error.js";
5
5
  import { Transaction } from "./transaction.js";
6
- import { Dict, Promisable, ValidKey } from "./types/common.js";
6
+ import { Dict, Promisable, ValidKey } from "./util-types.js";
7
7
  export declare class ObjectStore {
8
8
  private readonly tx;
9
9
  readonly store: IDBObjectStore;
@@ -1,6 +1,6 @@
1
1
  import { StoreError } from "./error";
2
2
  import { ObjectStore } from "./object-store.js";
3
- import { Arrayable } from "./types/common.js";
3
+ import { Arrayable } from "./util-types.js";
4
4
  export type TransactionStatus = "running" | "aborted" | "complete" | "error";
5
5
  export type TransactionEventHandler = (tx: Transaction<IDBTransactionMode>, ev: Event) => void;
6
6
  export interface TransactionOptions extends Partial<{
@@ -0,0 +1 @@
1
+ {"root":["../src/builder.ts","../src/error.ts","../src/index.ts","../src/object-store.ts","../src/transaction.ts","../src/types.ts","../src/utils.ts","../src/client/compiled-query.ts","../src/client/delete.ts","../src/client/helpers.ts","../src/client/index.ts","../src/client/types/find.ts","../src/client/types/index.ts","../src/client/types/mutation.ts","../src/field/field-types.ts","../src/field/index.ts","../src/field/primary-key.ts","../src/field/property.ts","../src/field/relation.ts","../src/model/index.ts","../src/model/model-types.ts","../src/model/model.ts","../tests/helpers.ts","../tests/test.spec.ts"],"version":"5.9.3"}
@@ -1,4 +1,3 @@
1
- import type z from "zod";
2
1
  /**
3
2
  * Extracts the string keys of an object
4
3
  */
@@ -6,6 +5,18 @@ export type Keyof<T extends Record<any, any>> = Extract<keyof T, string>;
6
5
  export type Arrayable<T> = T | T[];
7
6
  export type IsNever<T> = [T] extends [never] ? true : false;
8
7
  export type Promisable<T> = T | Promise<T>;
8
+ export type NoUndefined<T> = Exclude<T, undefined>;
9
+ export declare enum Type {
10
+ String = 0,
11
+ Number = 1,
12
+ BigInt = 2,
13
+ Boolean = 3,
14
+ Symbol = 4,
15
+ Array = 5,
16
+ Date = 6,
17
+ Object = 7,
18
+ Unknown = 8
19
+ }
9
20
  export type MakeOptional<B extends boolean, T> = B extends true ? T | undefined : T;
10
21
  export type MakeArray<B extends boolean, T> = B extends true ? T[] : T;
11
22
  export type MakeArrayable<B extends boolean, T> = B extends true ? Arrayable<T> : T;
@@ -23,9 +34,6 @@ export type ConnectionObject<M extends boolean = false, T = object, K = ValidKey
23
34
  $createMany: T[];
24
35
  $connectMany: K[];
25
36
  }, Dict>;
26
- export type ZodWrap<T extends Dict> = {
27
- [K in keyof T]: z.ZodType<T[K]>;
28
- };
29
37
  type UndefinedKeys<T extends Dict> = {
30
38
  [K in Keyof<T>]: undefined extends T[K] ? K : never;
31
39
  }[Keyof<T>];
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Extracts the string keys of an object
3
+ */
4
+ export type Keyof<T extends Record<any, any>> = Extract<keyof T, string>;
5
+ export type Arrayable<T> = T | T[];
6
+ export type IsNever<T> = [T] extends [never] ? true : false;
7
+ export type Promisable<T> = T | Promise<T>;
8
+ export type NoUndefined<T> = Exclude<T, undefined>;
9
+ export declare enum Type {
10
+ String = 0,
11
+ Number = 1,
12
+ BigInt = 2,
13
+ Boolean = 3,
14
+ Symbol = 4,
15
+ Array = 5,
16
+ Date = 6,
17
+ Object = 7,
18
+ Unknown = 8
19
+ }
20
+ export type MakeOptional<B extends boolean, T> = B extends true ? T | undefined : T;
21
+ export type MakeArray<B extends boolean, T> = B extends true ? T[] : T;
22
+ export type MakeArrayable<B extends boolean, T> = B extends true ? Arrayable<T> : T;
23
+ export type ValidKey = string | number | Date;
24
+ export type ValidKeyType = "string" | "number" | "date";
25
+ export type If<Type extends boolean, IfBranch, ElseBranch> = IsNever<Type> extends true ? ElseBranch : Type extends true ? IfBranch : ElseBranch;
26
+ export type RemoveNeverValues<T extends object> = {
27
+ [K in keyof T as T[K] extends never ? never : K]: T[K];
28
+ };
29
+ export type Dict<T = unknown> = Record<string, T>;
30
+ export type ConnectionObject<M extends boolean = false, T = object, K = ValidKey> = {
31
+ $create: T;
32
+ $connect: K;
33
+ } & If<M, {
34
+ $createMany: T[];
35
+ $connectMany: K[];
36
+ }, Dict>;
37
+ type UndefinedKeys<T extends Dict> = {
38
+ [K in Keyof<T>]: undefined extends T[K] ? K : never;
39
+ }[Keyof<T>];
40
+ type Optional<T extends Dict> = Partial<Pick<T, UndefinedKeys<T>>>;
41
+ type Required<T extends Dict> = Omit<T, UndefinedKeys<T>>;
42
+ export type PartialOnUndefined<T extends Dict> = Required<T> & Optional<T>;
43
+ /**
44
+ * Types that can be resolved to specific boolean values
45
+ */
46
+ export type BooleanLike = boolean | undefined | null | 0;
47
+ export type Literable = string | number | bigint | boolean | null | undefined;
48
+ export {};
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Extracts the string keys of an object
3
+ */
4
+ export type Keyof<T extends Record<any, any>> = Extract<keyof T, string>;
5
+ export type Arrayable<T> = T | T[];
6
+ export type IsNever<T> = [T] extends [never] ? true : false;
7
+ export type Promisable<T> = T | Promise<T>;
8
+ export type NoUndefined<T> = Exclude<T, undefined>;
9
+ export type MakeOptional<B extends boolean, T> = B extends true ? T | undefined : T;
10
+ export type MakeArray<B extends boolean, T> = B extends true ? T[] : T;
11
+ export type MakeArrayable<B extends boolean, T> = B extends true ? Arrayable<T> : T;
12
+ export type ValidKey = string | number | Date;
13
+ export type ValidKeyType = "string" | "number" | "date";
14
+ export type If<Type extends boolean, IfBranch, ElseBranch> = IsNever<Type> extends true ? ElseBranch : Type extends true ? IfBranch : ElseBranch;
15
+ export type RemoveNeverValues<T extends object> = {
16
+ [K in keyof T as T[K] extends never ? never : K]: T[K];
17
+ };
18
+ export type Dict<T = unknown> = Record<string, T>;
19
+ export type ConnectionObject<M extends boolean = false, T = object, K = ValidKey> = {
20
+ $create: T;
21
+ $connect: K;
22
+ } & If<M, {
23
+ $createMany: T[];
24
+ $connectMany: K[];
25
+ }, Dict>;
26
+ type UndefinedKeys<T extends Dict> = {
27
+ [K in Keyof<T>]: undefined extends T[K] ? K : never;
28
+ }[Keyof<T>];
29
+ type Optional<T extends Dict> = Partial<Pick<T, UndefinedKeys<T>>>;
30
+ type Required<T extends Dict> = Omit<T, UndefinedKeys<T>>;
31
+ export type PartialOnUndefined<T extends Dict> = Required<T> & Optional<T>;
32
+ /**
33
+ * Types that can be resolved to specific boolean values
34
+ */
35
+ export type BooleanLike = boolean | undefined | null | 0;
36
+ export type Literable = string | number | bigint | boolean | null | undefined;
37
+ export {};
package/dist/utils.d.ts CHANGED
@@ -1,9 +1,11 @@
1
- import type { Arrayable, Keyof } from "./types/common";
1
+ import { Arrayable, Keyof, ValidKeyType } from "./util-types";
2
2
  import type { Transaction } from "./transaction.js";
3
3
  export declare function handleRequest<T>(req: IDBRequest<T>, tx?: Transaction<any, any>): Promise<T>;
4
4
  export declare function getKeys<T extends object>(obj: T): Keyof<T>[];
5
5
  export declare function addToSet<T>(set: Set<T>, items: T[]): Set<T>;
6
6
  export declare function toArray<T>(value: Arrayable<T>): T[];
7
+ export declare function stringTypeToEnum(type: ValidKeyType): Type;
8
+ export declare function uuid(): `${string}-${string}-${string}-${string}-${string}`;
7
9
  /**
8
10
  * Identity Function, it returns the first argument it is given, all others are ignored
9
11
  * @param value Value
@@ -14,3 +16,14 @@ export declare function identity<T>(value: T): T;
14
16
  * Performs a union over `set1` and `set2`, modifying `set1` to be union of the two sets
15
17
  */
16
18
  export declare function unionSets<T>(set: Set<T>, other: Set<T>): Set<T>;
19
+ export declare enum Type {
20
+ String = 0,
21
+ Number = 1,
22
+ BigInt = 2,
23
+ Boolean = 3,
24
+ Symbol = 4,
25
+ Array = 5,
26
+ Date = 6,
27
+ Object = 7,
28
+ Unknown = 8
29
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idb-orm/core",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -10,9 +10,9 @@
10
10
  "check": "eslint . && tsc -b --noEmit",
11
11
  "test": "playwright test"
12
12
  },
13
- "keywords": [],
14
- "workspaces": [
15
- "packages/*"
13
+ "keywords": [
14
+ "typescript",
15
+ "indexeddb"
16
16
  ],
17
17
  "author": "jtb",
18
18
  "exports": {
@@ -20,6 +20,9 @@
20
20
  "types": "./dist/index.d.ts",
21
21
  "import": "./dist/index.js",
22
22
  "require": "./dist/index.js"
23
+ },
24
+ "./types": {
25
+ "types": "./dist/dev-types.d.ts"
23
26
  }
24
27
  },
25
28
  "license": "ISC",
@@ -36,10 +39,5 @@
36
39
  "tslib": "^2.8.1",
37
40
  "typescript": "^5.9.3",
38
41
  "typescript-eslint": "^8.46.2"
39
- },
40
- "dependencies": {
41
- "@gilbarbara/deep-equal": "^0.3.1",
42
- "uuid": "^13.0.0",
43
- "zod": "^4.1.3"
44
42
  }
45
43
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "status": "passed",
3
+ "failedTests": []
4
+ }