@nymphjs/nymph 1.0.0-beta.7 → 1.0.0-beta.71
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.
- package/CHANGELOG.md +324 -0
- package/README.md +13 -21
- package/dist/Entity.d.ts +269 -7
- package/dist/Entity.js +491 -105
- package/dist/Entity.js.map +1 -1
- package/dist/Entity.test.js +39 -17
- package/dist/Entity.test.js.map +1 -1
- package/dist/Entity.types.d.ts +225 -19
- package/dist/Nymph.d.ts +423 -11
- package/dist/Nymph.js +685 -176
- package/dist/Nymph.js.map +1 -1
- package/dist/Nymph.types.d.ts +31 -7
- package/dist/Nymph.types.js +2 -1
- package/dist/Nymph.types.js.map +1 -1
- package/dist/conf/d.d.ts +26 -0
- package/dist/conf/defaults.js +22 -0
- package/dist/conf/defaults.js.map +1 -1
- package/dist/driver/NymphDriver.d.ts +129 -38
- package/dist/driver/NymphDriver.js +264 -131
- package/dist/driver/NymphDriver.js.map +1 -1
- package/dist/driver/testArtifacts.d.ts +1 -1
- package/dist/driver/testArtifacts.js +336 -42
- package/dist/driver/testArtifacts.js.map +1 -1
- package/dist/errors/EntityInvalidDataError.d.ts +6 -0
- package/dist/errors/EntityInvalidDataError.js +7 -1
- package/dist/errors/EntityInvalidDataError.js.map +1 -1
- package/dist/errors/EntityUniqueConstraintError.d.ts +3 -0
- package/dist/errors/EntityUniqueConstraintError.js +11 -0
- package/dist/errors/EntityUniqueConstraintError.js.map +1 -0
- package/dist/errors/InvalidStateError.d.ts +3 -0
- package/dist/errors/InvalidStateError.js +11 -0
- package/dist/errors/InvalidStateError.js.map +1 -0
- package/dist/errors/QueryFailedError.js +1 -0
- package/dist/errors/QueryFailedError.js.map +1 -1
- package/dist/errors/index.d.ts +2 -0
- package/dist/errors/index.js +2 -0
- package/dist/errors/index.js.map +1 -1
- package/dist/testArtifacts.d.ts +17 -5
- package/dist/testArtifacts.js +31 -27
- package/dist/testArtifacts.js.map +1 -1
- package/dist/testMocks.d.ts +15 -10
- package/dist/testMocks.js +37 -13
- package/dist/testMocks.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +21 -5
- package/dist/utils.js.map +1 -1
- package/package.json +16 -14
- package/src/Entity.test.ts +32 -11
- package/src/Entity.ts +423 -134
- package/src/Entity.types.ts +32 -66
- package/src/Nymph.ts +618 -195
- package/src/Nymph.types.ts +97 -26
- package/src/conf/d.ts +8 -0
- package/src/conf/defaults.ts +24 -0
- package/src/driver/NymphDriver.ts +281 -311
- package/src/driver/testArtifacts.ts +384 -173
- package/src/errors/EntityUniqueConstraintError.ts +6 -0
- package/src/errors/InvalidStateError.ts +6 -0
- package/src/errors/index.ts +4 -0
- package/src/nymphJoiProps.ts +2 -2
- package/src/testArtifacts.ts +18 -19
- package/src/testMocks.ts +64 -32
- package/src/utils.ts +22 -8
- package/tsconfig.json +3 -3
- package/typedoc.json +4 -0
package/src/Nymph.types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EntityConstructor, EntityInterface } from './Entity.types';
|
|
2
|
-
import Nymph from './Nymph';
|
|
1
|
+
import type { EntityConstructor, EntityInterface } from './Entity.types';
|
|
2
|
+
import type Nymph from './Nymph';
|
|
3
3
|
|
|
4
4
|
export type NymphEventType =
|
|
5
5
|
| 'connect'
|
|
@@ -9,25 +9,38 @@ export type NymphEventType =
|
|
|
9
9
|
| 'beforeGetEntities'
|
|
10
10
|
| 'beforeSaveEntity'
|
|
11
11
|
| 'afterSaveEntity'
|
|
12
|
+
| 'failedSaveEntity'
|
|
12
13
|
| 'beforeDeleteEntity'
|
|
13
14
|
| 'afterDeleteEntity'
|
|
15
|
+
| 'failedDeleteEntity'
|
|
14
16
|
| 'beforeDeleteEntityByID'
|
|
15
17
|
| 'afterDeleteEntityByID'
|
|
18
|
+
| 'failedDeleteEntityByID'
|
|
16
19
|
| 'beforeNewUID'
|
|
17
20
|
| 'afterNewUID'
|
|
21
|
+
| 'failedNewUID'
|
|
18
22
|
| 'beforeSetUID'
|
|
19
23
|
| 'afterSetUID'
|
|
24
|
+
| 'failedSetUID'
|
|
20
25
|
| 'beforeRenameUID'
|
|
21
26
|
| 'afterRenameUID'
|
|
27
|
+
| 'failedRenameUID'
|
|
22
28
|
| 'beforeDeleteUID'
|
|
23
|
-
| 'afterDeleteUID'
|
|
29
|
+
| 'afterDeleteUID'
|
|
30
|
+
| 'failedDeleteUID'
|
|
31
|
+
| 'beforeStartTransaction'
|
|
32
|
+
| 'afterStartTransaction'
|
|
33
|
+
| 'beforeCommitTransaction'
|
|
34
|
+
| 'afterCommitTransaction'
|
|
35
|
+
| 'beforeRollbackTransaction'
|
|
36
|
+
| 'afterRollbackTransaction';
|
|
24
37
|
export type NymphConnectCallback = (
|
|
25
38
|
nymph: Nymph,
|
|
26
|
-
result: Promise<boolean
|
|
39
|
+
result: Promise<boolean>,
|
|
27
40
|
) => Promise<void>;
|
|
28
41
|
export type NymphDisconnectCallback = (
|
|
29
42
|
nymph: Nymph,
|
|
30
|
-
result: Promise<boolean
|
|
43
|
+
result: Promise<boolean>,
|
|
31
44
|
) => Promise<void>;
|
|
32
45
|
/**
|
|
33
46
|
* The NymphQueryCallback will be called on both top level and qref queries.
|
|
@@ -43,76 +56,131 @@ export type NymphDisconnectCallback = (
|
|
|
43
56
|
export type NymphQueryCallback = (
|
|
44
57
|
nymph: Nymph,
|
|
45
58
|
options: Options,
|
|
46
|
-
selectors: FormattedSelector[]
|
|
59
|
+
selectors: FormattedSelector[],
|
|
47
60
|
) => void;
|
|
48
61
|
export type NymphBeforeGetEntityCallback = (
|
|
49
62
|
nymph: Nymph,
|
|
50
63
|
options: Options,
|
|
51
|
-
selectors: Selector[]
|
|
64
|
+
selectors: Selector[],
|
|
52
65
|
) => Promise<void>;
|
|
53
66
|
export type NymphBeforeGetEntitiesCallback = (
|
|
54
67
|
nymph: Nymph,
|
|
55
68
|
options: Options,
|
|
56
|
-
selectors: Selector[]
|
|
69
|
+
selectors: Selector[],
|
|
57
70
|
) => Promise<void>;
|
|
58
71
|
export type NymphBeforeSaveEntityCallback = (
|
|
59
72
|
nymph: Nymph,
|
|
60
|
-
entity: EntityInterface
|
|
73
|
+
entity: EntityInterface,
|
|
61
74
|
) => Promise<void>;
|
|
62
75
|
export type NymphAfterSaveEntityCallback = (
|
|
63
76
|
nymph: Nymph,
|
|
64
|
-
result: Promise<boolean
|
|
77
|
+
result: Promise<boolean>,
|
|
78
|
+
) => Promise<void>;
|
|
79
|
+
export type NymphFailedSaveEntityCallback = (
|
|
80
|
+
nymph: Nymph,
|
|
81
|
+
error: any,
|
|
65
82
|
) => Promise<void>;
|
|
66
83
|
export type NymphBeforeDeleteEntityCallback = (
|
|
67
84
|
nymph: Nymph,
|
|
68
|
-
entity: EntityInterface
|
|
85
|
+
entity: EntityInterface,
|
|
69
86
|
) => Promise<void>;
|
|
70
87
|
export type NymphAfterDeleteEntityCallback = (
|
|
71
88
|
nymph: Nymph,
|
|
72
|
-
result: Promise<boolean
|
|
89
|
+
result: Promise<boolean>,
|
|
90
|
+
) => Promise<void>;
|
|
91
|
+
export type NymphFailedDeleteEntityCallback = (
|
|
92
|
+
nymph: Nymph,
|
|
93
|
+
error: any,
|
|
73
94
|
) => Promise<void>;
|
|
74
95
|
export type NymphBeforeDeleteEntityByIDCallback = (
|
|
75
96
|
nymph: Nymph,
|
|
76
97
|
guid: string,
|
|
77
|
-
className?: string
|
|
98
|
+
className?: string,
|
|
78
99
|
) => Promise<void>;
|
|
79
100
|
export type NymphAfterDeleteEntityByIDCallback = (
|
|
80
101
|
nymph: Nymph,
|
|
81
|
-
result: Promise<boolean
|
|
102
|
+
result: Promise<boolean>,
|
|
103
|
+
) => Promise<void>;
|
|
104
|
+
export type NymphFailedDeleteEntityByIDCallback = (
|
|
105
|
+
nymph: Nymph,
|
|
106
|
+
error: any,
|
|
82
107
|
) => Promise<void>;
|
|
83
108
|
export type NymphBeforeNewUIDCallback = (
|
|
84
109
|
nymph: Nymph,
|
|
85
|
-
name: string
|
|
110
|
+
name: string,
|
|
86
111
|
) => Promise<void>;
|
|
87
112
|
export type NymphAfterNewUIDCallback = (
|
|
88
113
|
nymph: Nymph,
|
|
89
|
-
result: Promise<number | null
|
|
114
|
+
result: Promise<number | null>,
|
|
115
|
+
) => Promise<void>;
|
|
116
|
+
export type NymphFailedNewUIDCallback = (
|
|
117
|
+
nymph: Nymph,
|
|
118
|
+
error: any,
|
|
90
119
|
) => Promise<void>;
|
|
91
120
|
export type NymphBeforeSetUIDCallback = (
|
|
92
121
|
nymph: Nymph,
|
|
93
122
|
name: string,
|
|
94
|
-
value: number
|
|
123
|
+
value: number,
|
|
95
124
|
) => Promise<void>;
|
|
96
125
|
export type NymphAfterSetUIDCallback = (
|
|
97
126
|
nymph: Nymph,
|
|
98
|
-
result: Promise<boolean
|
|
127
|
+
result: Promise<boolean>,
|
|
128
|
+
) => Promise<void>;
|
|
129
|
+
export type NymphFailedSetUIDCallback = (
|
|
130
|
+
nymph: Nymph,
|
|
131
|
+
error: any,
|
|
99
132
|
) => Promise<void>;
|
|
100
133
|
export type NymphBeforeRenameUIDCallback = (
|
|
101
134
|
nymph: Nymph,
|
|
102
135
|
oldName: string,
|
|
103
|
-
newName: string
|
|
136
|
+
newName: string,
|
|
104
137
|
) => Promise<void>;
|
|
105
138
|
export type NymphAfterRenameUIDCallback = (
|
|
106
139
|
nymph: Nymph,
|
|
107
|
-
result: Promise<boolean
|
|
140
|
+
result: Promise<boolean>,
|
|
141
|
+
) => Promise<void>;
|
|
142
|
+
export type NymphFailedRenameUIDCallback = (
|
|
143
|
+
nymph: Nymph,
|
|
144
|
+
error: any,
|
|
108
145
|
) => Promise<void>;
|
|
109
146
|
export type NymphBeforeDeleteUIDCallback = (
|
|
110
147
|
nymph: Nymph,
|
|
111
|
-
name: string
|
|
148
|
+
name: string,
|
|
112
149
|
) => Promise<void>;
|
|
113
150
|
export type NymphAfterDeleteUIDCallback = (
|
|
114
151
|
nymph: Nymph,
|
|
115
|
-
result: Promise<boolean
|
|
152
|
+
result: Promise<boolean>,
|
|
153
|
+
) => Promise<void>;
|
|
154
|
+
export type NymphFailedDeleteUIDCallback = (
|
|
155
|
+
nymph: Nymph,
|
|
156
|
+
error: any,
|
|
157
|
+
) => Promise<void>;
|
|
158
|
+
export type NymphBeforeStartTransactionCallback = (
|
|
159
|
+
nymph: Nymph,
|
|
160
|
+
name: string,
|
|
161
|
+
) => Promise<void>;
|
|
162
|
+
export type NymphAfterStartTransactionCallback = (
|
|
163
|
+
nymph: Nymph,
|
|
164
|
+
name: string,
|
|
165
|
+
result: Nymph,
|
|
166
|
+
) => Promise<void>;
|
|
167
|
+
export type NymphBeforeCommitTransactionCallback = (
|
|
168
|
+
nymph: Nymph,
|
|
169
|
+
name: string,
|
|
170
|
+
) => Promise<void>;
|
|
171
|
+
export type NymphAfterCommitTransactionCallback = (
|
|
172
|
+
nymph: Nymph,
|
|
173
|
+
name: string,
|
|
174
|
+
result: boolean,
|
|
175
|
+
) => Promise<void>;
|
|
176
|
+
export type NymphBeforeRollbackTransactionCallback = (
|
|
177
|
+
nymph: Nymph,
|
|
178
|
+
name: string,
|
|
179
|
+
) => Promise<void>;
|
|
180
|
+
export type NymphAfterRollbackTransactionCallback = (
|
|
181
|
+
nymph: Nymph,
|
|
182
|
+
name: string,
|
|
183
|
+
result: boolean,
|
|
116
184
|
) => Promise<void>;
|
|
117
185
|
|
|
118
186
|
export type Options<T extends EntityConstructor = EntityConstructor> = {
|
|
@@ -120,7 +188,7 @@ export type Options<T extends EntityConstructor = EntityConstructor> = {
|
|
|
120
188
|
limit?: number;
|
|
121
189
|
offset?: number;
|
|
122
190
|
reverse?: boolean;
|
|
123
|
-
sort?: 'cdate' | 'mdate';
|
|
191
|
+
sort?: 'cdate' | 'mdate' | string;
|
|
124
192
|
return?: 'entity' | 'guid' | 'count';
|
|
125
193
|
source?: string;
|
|
126
194
|
skipCache?: boolean;
|
|
@@ -309,9 +377,12 @@ export interface TilmeldInterface {
|
|
|
309
377
|
init(nymph: Nymph): void;
|
|
310
378
|
clone(): TilmeldInterface;
|
|
311
379
|
gatekeeper(ability?: string): boolean;
|
|
312
|
-
authenticate():
|
|
380
|
+
authenticate(skipXsrfToken?: boolean, skipRenew?: boolean): Promise<boolean>;
|
|
313
381
|
clearSession(): void;
|
|
314
382
|
extractToken(token: string): Promise<any>;
|
|
315
|
-
fillSession(user: any): void
|
|
316
|
-
checkClientUIDPermissions(
|
|
383
|
+
fillSession(user: any): Promise<void>;
|
|
384
|
+
checkClientUIDPermissions(
|
|
385
|
+
name: string,
|
|
386
|
+
type?: TilmeldAccessLevels,
|
|
387
|
+
): Promise<boolean>;
|
|
317
388
|
}
|
package/src/conf/d.ts
CHANGED
|
@@ -21,4 +21,12 @@ export interface Config {
|
|
|
21
21
|
* return a 404 error.
|
|
22
22
|
*/
|
|
23
23
|
emptyListError: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* A function to log debug messages. By default, uses the `debug` package.
|
|
26
|
+
*/
|
|
27
|
+
debugLog: (source: string, message: string) => void;
|
|
28
|
+
/**
|
|
29
|
+
* A function to log error messages. By default, uses the `debug` package.
|
|
30
|
+
*/
|
|
31
|
+
debugError: (source: string, message: string) => void;
|
|
24
32
|
}
|
package/src/conf/defaults.ts
CHANGED
|
@@ -1,8 +1,32 @@
|
|
|
1
|
+
import createDebug, { type Debugger } from 'debug';
|
|
1
2
|
import { Config } from './d';
|
|
2
3
|
|
|
4
|
+
const debuggers: { [k: string]: { log: Debugger; error: Debugger } } = {};
|
|
5
|
+
|
|
6
|
+
function getDebuggers(source: string) {
|
|
7
|
+
if (source in debuggers) {
|
|
8
|
+
return debuggers[source];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
debuggers[source] = {
|
|
12
|
+
log: createDebug(`nymphjs:log:${source}`),
|
|
13
|
+
error: createDebug(`nymphjs:error:${source}`),
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
debuggers[source].log.log = console.log.bind(console);
|
|
17
|
+
|
|
18
|
+
return debuggers[source];
|
|
19
|
+
}
|
|
20
|
+
|
|
3
21
|
export default {
|
|
4
22
|
cache: false,
|
|
5
23
|
cacheThreshold: 4,
|
|
6
24
|
cacheLimit: 50,
|
|
7
25
|
emptyListError: false,
|
|
26
|
+
debugLog: (source, message) => {
|
|
27
|
+
getDebuggers(source).log(message);
|
|
28
|
+
},
|
|
29
|
+
debugError: (source, message) => {
|
|
30
|
+
getDebuggers(source).error(message);
|
|
31
|
+
},
|
|
8
32
|
} as Config;
|