@taylordb/shared 0.3.0 → 0.4.0

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,18 +4,111 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- export type ColumnType<S, U, I, T> = {
7
+ type IsWithinOperatorValue = 'pastWeek' | 'pastMonth' | 'pastYear' | 'nextWeek' | 'nextMonth' | 'nextYear' | 'daysFromNow' | 'daysAgo' | 'currentWeek' | 'currentMonth' | 'currentYear';
8
+ type DefaultDateFilterValue = ('today' | 'tomorrow' | 'yesterday' | 'oneWeekAgo' | 'oneWeekFromNow' | 'oneMonthAgo' | 'oneMonthFromNow') | ['exactDay' | 'exactTimestamp', string] | ['daysAgo' | 'daysFromNow', number];
9
+ type DateFilters = {
10
+ '=': DefaultDateFilterValue;
11
+ '!=': DefaultDateFilterValue;
12
+ '<': DefaultDateFilterValue;
13
+ '>': DefaultDateFilterValue;
14
+ '<=': DefaultDateFilterValue;
15
+ '>=': DefaultDateFilterValue;
16
+ isWithIn: IsWithinOperatorValue | {
17
+ value: 'daysAgo' | 'daysFromNow';
18
+ date: number;
19
+ };
20
+ isEmpty: boolean;
21
+ isNotEmpty: boolean;
22
+ };
23
+ type DateAggregations = {
24
+ empty: number;
25
+ filled: number;
26
+ unique: number;
27
+ percentEmpty: number;
28
+ percentFilled: number;
29
+ percentUnique: number;
30
+ min: number | null;
31
+ max: number | null;
32
+ daysRange: number | null;
33
+ monthRange: number | null;
34
+ };
35
+ type TextFilters = {
36
+ '=': string;
37
+ '!=': string;
38
+ caseEqual: string;
39
+ hasAnyOf: string[];
40
+ contains: string;
41
+ startsWith: string;
42
+ endsWith: string;
43
+ doesNotContain: string;
44
+ };
45
+ type LinkFilters = {
46
+ hasAnyOf: number[];
47
+ hasAllOf: number[];
48
+ isExactly: number[];
49
+ '=': number;
50
+ hasNoneOf: number[];
51
+ };
52
+ type LinkAggregations = {
53
+ empty: number;
54
+ filled: number;
55
+ percentEmpty: number;
56
+ percentFilled: number;
57
+ };
58
+ type NumberFilters = {
59
+ '>': number;
60
+ '>=': number;
61
+ '<': number;
62
+ '<=': number;
63
+ hasAnyOf: number[];
64
+ hasNoneOf: number[];
65
+ };
66
+ type NumberAggregations = {
67
+ sum: number;
68
+ average: number;
69
+ median: number;
70
+ min: number | null;
71
+ max: number | null;
72
+ range: number;
73
+ standardDeviation: number;
74
+ histogram: Record<string, number>;
75
+ empty: number;
76
+ filled: number;
77
+ unique: number;
78
+ percentEmpty: number;
79
+ percentFilled: number;
80
+ percentUnique: number;
81
+ };
82
+ type CheckboxFilters = {
83
+ '=': number;
84
+ };
85
+ /**
86
+ *
87
+ * Column types
88
+ *
89
+ */
90
+ export type ColumnType<S, U, I, R extends boolean, F extends {
91
+ [key: string]: any;
92
+ } = object, A extends {
93
+ [key: string]: any;
94
+ } = object> = {
8
95
  raw: S;
9
96
  insert: I;
10
97
  update: U;
11
- type: T;
98
+ filters: F;
99
+ aggregations: A;
100
+ isRequired: R;
12
101
  };
13
- export type TextColumnType = ColumnType<string | undefined, string | undefined, string | null, 'text'>;
14
- export type LinkColumnType<T extends string> = ColumnType<object, number[] | {
102
+ export type DateColumnType<R extends boolean> = ColumnType<string, string, string, R, DateFilters, DateAggregations>;
103
+ export type TextColumnType<R extends boolean> = ColumnType<string, string, string, R, TextFilters>;
104
+ export type LinkColumnType<T extends string, R extends boolean> = ColumnType<object, number | number[] | {
15
105
  newIds: number[];
16
106
  deletedIds: number[];
17
- } | undefined, number[] | undefined, 'link'> & {
107
+ }, number | number[], R, LinkFilters, LinkAggregations> & {
18
108
  linkedTo: T;
19
109
  };
20
- export type NumberColumnType = ColumnType<number | undefined, number | undefined, number | undefined, 'number'>;
21
- export type CheckboxColumnType = ColumnType<boolean | undefined, boolean | undefined, boolean | undefined, 'checkbox'>;
110
+ export type NumberColumnType<R extends boolean> = ColumnType<number, number, number, R, NumberFilters, NumberAggregations>;
111
+ export type CheckboxColumnType<R extends boolean> = ColumnType<boolean, boolean, boolean, R, CheckboxFilters>;
112
+ export type AutoGeneratedNumberColumnType = ColumnType<number, never, never, false, NumberFilters, NumberAggregations>;
113
+ export type AutoGeneratedDateColumnType = ColumnType<string, never, never, false, DateFilters, DateAggregations>;
114
+ export {};
@@ -1,5 +1,4 @@
1
1
  export * from './@types/index.js';
2
2
  export * from './column-types.js';
3
3
  export * from './constants/index.js';
4
- export * from './table-types.js';
5
4
  export * from './utilities/index.js';
package/dist/cjs/index.js CHANGED
@@ -17,6 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./@types/index.js"), exports);
18
18
  __exportStar(require("./column-types.js"), exports);
19
19
  __exportStar(require("./constants/index.js"), exports);
20
- __exportStar(require("./table-types.js"), exports);
21
20
  __exportStar(require("./utilities/index.js"), exports);
22
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,oDAAkC;AAClC,uDAAqC;AACrC,mDAAiC;AACjC,uDAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,oDAAkC;AAClC,uDAAqC;AACrC,uDAAqC"}
@@ -4,18 +4,111 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- export type ColumnType<S, U, I, T> = {
7
+ type IsWithinOperatorValue = 'pastWeek' | 'pastMonth' | 'pastYear' | 'nextWeek' | 'nextMonth' | 'nextYear' | 'daysFromNow' | 'daysAgo' | 'currentWeek' | 'currentMonth' | 'currentYear';
8
+ type DefaultDateFilterValue = ('today' | 'tomorrow' | 'yesterday' | 'oneWeekAgo' | 'oneWeekFromNow' | 'oneMonthAgo' | 'oneMonthFromNow') | ['exactDay' | 'exactTimestamp', string] | ['daysAgo' | 'daysFromNow', number];
9
+ type DateFilters = {
10
+ '=': DefaultDateFilterValue;
11
+ '!=': DefaultDateFilterValue;
12
+ '<': DefaultDateFilterValue;
13
+ '>': DefaultDateFilterValue;
14
+ '<=': DefaultDateFilterValue;
15
+ '>=': DefaultDateFilterValue;
16
+ isWithIn: IsWithinOperatorValue | {
17
+ value: 'daysAgo' | 'daysFromNow';
18
+ date: number;
19
+ };
20
+ isEmpty: boolean;
21
+ isNotEmpty: boolean;
22
+ };
23
+ type DateAggregations = {
24
+ empty: number;
25
+ filled: number;
26
+ unique: number;
27
+ percentEmpty: number;
28
+ percentFilled: number;
29
+ percentUnique: number;
30
+ min: number | null;
31
+ max: number | null;
32
+ daysRange: number | null;
33
+ monthRange: number | null;
34
+ };
35
+ type TextFilters = {
36
+ '=': string;
37
+ '!=': string;
38
+ caseEqual: string;
39
+ hasAnyOf: string[];
40
+ contains: string;
41
+ startsWith: string;
42
+ endsWith: string;
43
+ doesNotContain: string;
44
+ };
45
+ type LinkFilters = {
46
+ hasAnyOf: number[];
47
+ hasAllOf: number[];
48
+ isExactly: number[];
49
+ '=': number;
50
+ hasNoneOf: number[];
51
+ };
52
+ type LinkAggregations = {
53
+ empty: number;
54
+ filled: number;
55
+ percentEmpty: number;
56
+ percentFilled: number;
57
+ };
58
+ type NumberFilters = {
59
+ '>': number;
60
+ '>=': number;
61
+ '<': number;
62
+ '<=': number;
63
+ hasAnyOf: number[];
64
+ hasNoneOf: number[];
65
+ };
66
+ type NumberAggregations = {
67
+ sum: number;
68
+ average: number;
69
+ median: number;
70
+ min: number | null;
71
+ max: number | null;
72
+ range: number;
73
+ standardDeviation: number;
74
+ histogram: Record<string, number>;
75
+ empty: number;
76
+ filled: number;
77
+ unique: number;
78
+ percentEmpty: number;
79
+ percentFilled: number;
80
+ percentUnique: number;
81
+ };
82
+ type CheckboxFilters = {
83
+ '=': number;
84
+ };
85
+ /**
86
+ *
87
+ * Column types
88
+ *
89
+ */
90
+ export type ColumnType<S, U, I, R extends boolean, F extends {
91
+ [key: string]: any;
92
+ } = object, A extends {
93
+ [key: string]: any;
94
+ } = object> = {
8
95
  raw: S;
9
96
  insert: I;
10
97
  update: U;
11
- type: T;
98
+ filters: F;
99
+ aggregations: A;
100
+ isRequired: R;
12
101
  };
13
- export type TextColumnType = ColumnType<string | undefined, string | undefined, string | null, 'text'>;
14
- export type LinkColumnType<T extends string> = ColumnType<object, number[] | {
102
+ export type DateColumnType<R extends boolean> = ColumnType<string, string, string, R, DateFilters, DateAggregations>;
103
+ export type TextColumnType<R extends boolean> = ColumnType<string, string, string, R, TextFilters>;
104
+ export type LinkColumnType<T extends string, R extends boolean> = ColumnType<object, number | number[] | {
15
105
  newIds: number[];
16
106
  deletedIds: number[];
17
- } | undefined, number[] | undefined, 'link'> & {
107
+ }, number | number[], R, LinkFilters, LinkAggregations> & {
18
108
  linkedTo: T;
19
109
  };
20
- export type NumberColumnType = ColumnType<number | undefined, number | undefined, number | undefined, 'number'>;
21
- export type CheckboxColumnType = ColumnType<boolean | undefined, boolean | undefined, boolean | undefined, 'checkbox'>;
110
+ export type NumberColumnType<R extends boolean> = ColumnType<number, number, number, R, NumberFilters, NumberAggregations>;
111
+ export type CheckboxColumnType<R extends boolean> = ColumnType<boolean, boolean, boolean, R, CheckboxFilters>;
112
+ export type AutoGeneratedNumberColumnType = ColumnType<number, never, never, false, NumberFilters, NumberAggregations>;
113
+ export type AutoGeneratedDateColumnType = ColumnType<string, never, never, false, DateFilters, DateAggregations>;
114
+ export {};
@@ -1,5 +1,4 @@
1
1
  export * from './@types/index.js';
2
2
  export * from './column-types.js';
3
3
  export * from './constants/index.js';
4
- export * from './table-types.js';
5
4
  export * from './utilities/index.js';
package/dist/esm/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  export * from './@types/index.js';
2
2
  export * from './column-types.js';
3
3
  export * from './constants/index.js';
4
- export * from './table-types.js';
5
4
  export * from './utilities/index.js';
6
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}