@typetron/framework 0.5.25 → 0.5.27

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.
@@ -4,6 +4,7 @@ import { EntityQuery } from './EntityQuery';
4
4
  import { BooleanOperator, Operator, WhereValue } from './Types';
5
5
  import { BelongsToManyField, HasManyField } from './Fields';
6
6
  import { BaseRelationship as Relationship } from './ORM/BaseRelationship';
7
+ import { ID } from './Decorators';
7
8
  export declare abstract class List<E extends Entity, P extends Entity = Entity> extends Relationship<E, P> implements Iterable<E>, ArrayLike<E> {
8
9
  items: E[];
9
10
  relationship: HasManyField<P, E> | BelongsToManyField<P, E>;
@@ -15,10 +16,11 @@ export declare abstract class List<E extends Entity, P extends Entity = Entity>
15
16
  get(): Promise<E[]>;
16
17
  newQuery(): EntityQuery<E>;
17
18
  where<K extends EntityKeys<E>>(column: EntityKeys<E>, operator: Operator | WhereValue | E[K], value?: WhereValue | E[K], boolean?: BooleanOperator): EntityQuery<E>;
18
- findWhere(name: string, value: string): E | undefined;
19
+ find(key: ID): Promise<E | undefined>;
20
+ findOrFail(key: ID): Promise<E>;
19
21
  toJSON(): E[];
20
22
  }
21
23
  export declare class ListProxyHandler<E extends Entity, P extends Entity> {
22
- get(target: List<E, P>, property: string | symbol): number | E | P | E[] | (() => ArrayIterator<E>) | ((name: string, value: string) => E | undefined) | (<K extends Exclude<keyof E, keyof Entity>>(column: Exclude<keyof E, keyof Entity>, operator: import("./Types").SqlValue | E[K], value?: import("./Types").SqlValue | E[K], boolean?: BooleanOperator) => EntityQuery<E>) | (() => Promise<List<E, P>>) | (() => E[]) | HasManyField<P, E> | BelongsToManyField<P, E> | (() => Promise<E[]>);
24
+ get(target: List<E, P>, property: string | symbol): number | E | P | E[] | (() => ArrayIterator<E>) | ((key: ID) => Promise<E | undefined>) | (<K extends Exclude<keyof E, keyof Entity>>(column: Exclude<keyof E, keyof Entity>, operator: import("./Types").SqlValue | E[K], value?: import("./Types").SqlValue | E[K], boolean?: BooleanOperator) => EntityQuery<E>) | (() => Promise<List<E, P>>) | (() => E[]) | HasManyField<P, E> | BelongsToManyField<P, E> | (() => Promise<E[]>);
23
25
  }
24
26
  //# sourceMappingURL=List.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../Database/List.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,EAAE,gBAAgB,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAEzE,8BAAsB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnI,KAAK,EAAE,CAAC,EAAE,CAAK;IAEA,YAAY,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE1E,SAAS,aACL,YAAY,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3D,MAAM,EAAE,CAAC;IAMb,IAAI,MAAM,WAET;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;IAIjB,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAElB,IAAI;IAKJ,GAAG;IAKT,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC;IAI1B,KAAK,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EACrB,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EACtC,KAAK,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE,eAAe,GAC1B,WAAW,CAAC,CAAC,CAAC;IAIjB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIrD,MAAM;CAGT;AAED,qBAAa,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM;IAC5D,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,6DAVjC,MAAM,SAAS,MAAM,wBAT/B,CAAC,mLAIO,eAAe;CAqBhC"}
1
+ {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../Database/List.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,EAAE,gBAAgB,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAGjC,8BAAsB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnI,KAAK,EAAE,CAAC,EAAE,CAAK;IAEA,YAAY,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE1E,SAAS,aACL,YAAY,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3D,MAAM,EAAE,CAAC;IAMb,IAAI,MAAM,WAET;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;IAIjB,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAElB,IAAI;IAKJ,GAAG;IAKT,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC;IAI1B,KAAK,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EACrB,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EACtC,KAAK,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE,eAAe,GAC1B,WAAW,CAAC,CAAC,CAAC;IAIX,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAMrC,UAAU,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAWrC,MAAM;CAGT;AAED,qBAAa,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM;IAC5D,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,4DAvBjC,EAAE,iCATZ,CAAC,mLAIO,eAAe;CAkChC"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ListProxyHandler = exports.List = void 0;
4
4
  const BaseRelationship_1 = require("./ORM/BaseRelationship");
5
+ const EntityNotFoundError_1 = require("./EntityNotFoundError");
5
6
  class List extends BaseRelationship_1.BaseRelationship {
6
7
  items = [];
7
8
  constructor(relationship, parent) {
@@ -28,8 +29,17 @@ class List extends BaseRelationship_1.BaseRelationship {
28
29
  where(column, operator, value, boolean) {
29
30
  return this.relationship.getQuery(this.parent).where(column, operator, value, boolean);
30
31
  }
31
- findWhere(name, value) {
32
- return undefined;
32
+ async find(key) {
33
+ const primaryKey = this.relationship.type().getPrimaryKey();
34
+ return this.where(primaryKey, key).first();
35
+ }
36
+ async findOrFail(key) {
37
+ const entity = this.relationship.type();
38
+ const instance = await this.find(key);
39
+ if (!instance) {
40
+ throw new EntityNotFoundError_1.EntityNotFoundError(entity, `No records found for entity '${entity.name}' when querying with parameters [${key}]`);
41
+ }
42
+ return instance;
33
43
  }
34
44
  toJSON() {
35
45
  return this.items;
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","sourceRoot":"","sources":["../../Database/List.ts"],"names":[],"mappings":";;;AAKA,6DAAyE;AAEzE,MAAsB,IAAkD,SAAQ,mCAAkB;IAE9F,KAAK,GAAQ,EAAE,CAAA;IAIf,YACI,YAA2D,EAC3D,MAAS;QAET,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QAC3B,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IAC5B,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;IACxC,CAAC;IAID,KAAK,CAAC,IAAI;QACN,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QACjB,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CACD,MAAqB,EACrB,QAAsC,EACtC,KAAyB,EACzB,OAAyB;QAEzB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAC1F,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,KAAa;QACjC,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;CACJ;AAtDD,oBAsDC;AAED,MAAa,gBAAgB;IACzB,GAAG,CAAC,MAAkB,EAAE,QAAyB;QAC7C,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;YAChD,OAAO,MAAM,CAAC,KAAK,CAAC,QAA6B,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,MAAM,CAAC,QAA4B,CAAC,CAAA;IAC/C,CAAC;CACJ;AAPD,4CAOC"}
1
+ {"version":3,"file":"List.js","sourceRoot":"","sources":["../../Database/List.ts"],"names":[],"mappings":";;;AAKA,6DAAyE;AAEzE,+DAA2D;AAE3D,MAAsB,IAAkD,SAAQ,mCAAkB;IAE9F,KAAK,GAAQ,EAAE,CAAA;IAIf,YACI,YAA2D,EAC3D,MAAS;QAET,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QAC3B,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IAC5B,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;IACxC,CAAC;IAID,KAAK,CAAC,IAAI;QACN,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QACjB,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CACD,MAAqB,EACrB,QAAsC,EACtC,KAAyB,EACzB,OAAyB;QAEzB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAC1F,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAO;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,CAAA;QAE3D,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAO;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;QACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,yCAAmB,CAAC,MAAM,EAAE,gCAAgC,MAAM,CAAC,IAAI,oCAAoC,GAAG,GAAG,CAAC,CAAA;QAChI,CAAC;QAED,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;CACJ;AAnED,oBAmEC;AAED,MAAa,gBAAgB;IACzB,GAAG,CAAC,MAAkB,EAAE,QAAyB;QAC7C,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;YAChD,OAAO,MAAM,CAAC,KAAK,CAAC,QAA6B,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,MAAM,CAAC,QAA4B,CAAC,CAAA;IAC/C,CAAC;CACJ;AAPD,4CAOC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@typetron/framework",
3
3
  "description": "Modern Node.js framework for modern apps written in Typescript",
4
4
  "license": "MIT",
5
- "version": "0.5.25",
5
+ "version": "0.5.27",
6
6
  "keywords": [
7
7
  "typetron",
8
8
  "framework",
@@ -22,7 +22,6 @@
22
22
  "default": "./build/index.js"
23
23
  }
24
24
  },
25
-
26
25
  "scripts": {
27
26
  "clean": "rm -rf build",
28
27
  "build": "tsc",
@@ -32,42 +31,42 @@
32
31
  "prepack": "npm run clean && npm run build",
33
32
  "lint": "eslint ."
34
33
  },
35
-
36
34
  "engines": {
37
35
  "node": ">= 12.13.0"
38
36
  },
39
37
  "dependencies": {
40
- "@sendgrid/mail": "^8.1.5",
41
- "bcryptjs": "^3.0.2",
38
+ "@sendgrid/mail": "^8.1.6",
39
+ "bcryptjs": "^3.0.3",
42
40
  "busboy": "^1.6.0",
43
41
  "fast-url-parser": "^1.1.3",
44
- "jsonwebtoken": "^9.0.2",
42
+ "jsonwebtoken": "^9.0.3",
45
43
  "mysql": "^2.18.1",
46
44
  "reflect-metadata": "^0.2.2",
47
- "sqlite3": "^5.1.7",
48
- "uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.52.0"
45
+ "sqlite3": "^6.0.1",
46
+ "uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.68.0"
49
47
  },
50
48
  "devDependencies": {
49
+ "@eslint/js": "^10.0.1",
51
50
  "@testdeck/mocha": "^0.3.3",
52
51
  "@types/bcryptjs": "^3.0.0",
53
52
  "@types/busboy": "^1.5.4",
54
- "@types/chai": "^4.3.20",
53
+ "@types/chai": "^5.2.3",
55
54
  "@types/jsonwebtoken": "^9.0.10",
56
55
  "@types/mocha": "^10.0.10",
57
56
  "@types/mysql": "^2.15.27",
58
- "@types/node": "^24.0.10",
57
+ "@types/node": "^25.9.3",
59
58
  "@types/sqlite3": "^5.1.0",
60
- "@typescript-eslint/eslint-plugin": "^8.36.0",
61
- "@typescript-eslint/parser": "^8.36.0",
62
- "chai": "^4.5.0",
63
- "eslint": "^9.30.1",
64
- "mocha": "^11.7.1",
65
- "nyc": "^17.1.0",
59
+ "@typescript-eslint/eslint-plugin": "^8.61.0",
60
+ "@typescript-eslint/parser": "^8.61.0",
61
+ "chai": "^6.2.2",
62
+ "eslint": "^10.5.0",
63
+ "mocha": "^11.7.6",
64
+ "nyc": "^18.0.0",
66
65
  "source-map-support": "^0.5.21",
67
66
  "ts-mockito": "^2.6.1",
68
67
  "ts-node": "^10.9.2",
69
68
  "tsconfig-paths": "^4.2.0",
70
- "typescript": "5.8.3"
69
+ "typescript": "6.0.3"
71
70
  },
72
71
  "repository": {
73
72
  "type": "git",