rado 0.3.6 → 0.3.8

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.
@@ -38,7 +38,7 @@ export declare namespace Column {
38
38
  function isColumn<T>(input: any): input is Column<T>;
39
39
  }
40
40
  export interface ValueColumn<T> extends Expr<T> {
41
- <X extends T = T>(): ValueColumn<T extends null ? X | null : X>;
41
+ <X = T>(): ValueColumn<X>;
42
42
  }
43
43
  export declare class ValueColumn<T> extends Callable implements Column<T> {
44
44
  [Column.Type]: T;
@@ -51,6 +51,11 @@ export declare class ValueColumn<T> extends Callable implements Column<T> {
51
51
  references<X extends T>(column: Expr<X> | (() => Expr<X>)): ForeignKey<X>;
52
52
  default(value: DefaultValue<T>): OptionalColumn<T>;
53
53
  }
54
+ export interface NullableValueColumn<T> extends Expr<T | null> {
55
+ <X extends T = T>(): ValueColumn<X | null>;
56
+ }
57
+ export declare class NullableValueColumn<T> extends ValueColumn<T | null> {
58
+ }
54
59
  export declare enum Action {
55
60
  NoAction = "no action",
56
61
  Restrict = "restrict",
@@ -98,20 +103,20 @@ export declare class UnTyped extends Callable {
98
103
  get integer(): ValueColumn<number>;
99
104
  get number(): ValueColumn<number>;
100
105
  get boolean(): ValueColumn<boolean>;
101
- get json(): ValueColumn<any>;
106
+ get json(): ValueColumn<unknown>;
102
107
  get object(): ObjectColumn<{}>;
103
108
  get array(): ValueColumn<any[]>;
104
109
  }
105
110
  export declare class NullableUnTyped {
106
111
  [Column.Data]: PartialColumnData;
107
112
  get unique(): UnTyped;
108
- get string(): ValueColumn<string | null>;
109
- get integer(): ValueColumn<number | null>;
110
- get number(): ValueColumn<number | null>;
111
- get boolean(): ValueColumn<boolean | null>;
112
- get json(): ValueColumn<any | null>;
113
+ get string(): NullableValueColumn<string>;
114
+ get integer(): NullableValueColumn<number>;
115
+ get number(): NullableValueColumn<number>;
116
+ get boolean(): NullableValueColumn<boolean>;
117
+ get json(): NullableValueColumn<unknown>;
113
118
  get object(): ObjectColumn<{} | null>;
114
- get array(): ValueColumn<Array<any> | null>;
119
+ get array(): NullableValueColumn<Array<any>>;
115
120
  }
116
121
  export declare const column: UnTyped;
117
122
  export {};
@@ -384,7 +384,13 @@ class Expr {
384
384
  return this;
385
385
  }
386
386
  get(name) {
387
- return new Expr(new ExprData.Field(this[Expr.Data], name));
387
+ switch (this[Expr.Data].type) {
388
+ case "ExprData.Record" /* Record */:
389
+ if (name in this[Expr.Data].fields)
390
+ return new Expr(this[Expr.Data].fields[name]);
391
+ default:
392
+ return new Expr(new ExprData.Field(this[Expr.Data], name));
393
+ }
388
394
  }
389
395
  static [Symbol.hasInstance](instance) {
390
396
  return instance?.[Expr.IsExpr];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rado",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",