@entity-access/entity-access 1.0.157 → 1.0.159
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/dist/common/CustomEvent.js +0 -1
- package/dist/common/CustomEvent.js.map +1 -1
- package/dist/common/EntityAccessError.js +0 -1
- package/dist/common/EntityAccessError.js.map +1 -1
- package/dist/common/ErrorModel.js +1 -2
- package/dist/common/ErrorModel.js.map +1 -1
- package/dist/common/EventSet.d.ts +3 -1
- package/dist/common/EventSet.d.ts.map +1 -1
- package/dist/common/EventSet.js +3 -2
- package/dist/common/EventSet.js.map +1 -1
- package/dist/common/IDisposable.d.ts +0 -6
- package/dist/common/IDisposable.d.ts.map +1 -1
- package/dist/common/IDisposable.js +1 -0
- package/dist/common/IDisposable.js.map +1 -1
- package/dist/common/Logger.d.ts +3 -3
- package/dist/common/Logger.d.ts.map +1 -1
- package/dist/common/Logger.js +7 -15
- package/dist/common/Logger.js.map +1 -1
- package/dist/common/ObjectPool.d.ts.map +1 -1
- package/dist/common/ObjectPool.js +5 -13
- package/dist/common/ObjectPool.js.map +1 -1
- package/dist/common/cache/TimedCache.js +3 -4
- package/dist/common/cache/TimedCache.js.map +1 -1
- package/dist/common/usingAsync.d.ts +3 -1
- package/dist/common/usingAsync.d.ts.map +1 -1
- package/dist/common/usingAsync.js +8 -2
- package/dist/common/usingAsync.js.map +1 -1
- package/dist/compiler/QueryCompiler.js +3 -11
- package/dist/compiler/QueryCompiler.js.map +1 -1
- package/dist/compiler/RawQuery.js +0 -1
- package/dist/compiler/RawQuery.js.map +1 -1
- package/dist/decorators/SchemaRegistry.js +3 -2
- package/dist/decorators/SchemaRegistry.js.map +1 -1
- package/dist/di/di.js +1 -2
- package/dist/di/di.js.map +1 -1
- package/dist/drivers/base/BaseDriver.d.ts +13 -8
- package/dist/drivers/base/BaseDriver.d.ts.map +1 -1
- package/dist/drivers/base/BaseDriver.js +27 -7
- package/dist/drivers/base/BaseDriver.js.map +1 -1
- package/dist/drivers/postgres/PostgreSqlDriver.d.ts.map +1 -1
- package/dist/drivers/postgres/PostgreSqlDriver.js +7 -13
- package/dist/drivers/postgres/PostgreSqlDriver.js.map +1 -1
- package/dist/drivers/sql-server/SqlServerDriver.d.ts +2 -2
- package/dist/drivers/sql-server/SqlServerDriver.d.ts.map +1 -1
- package/dist/drivers/sql-server/SqlServerDriver.js +14 -38
- package/dist/drivers/sql-server/SqlServerDriver.js.map +1 -1
- package/dist/entity-query/EntityType.js +9 -23
- package/dist/entity-query/EntityType.js.map +1 -1
- package/dist/eternity/ActivitySuspendedError.js +0 -1
- package/dist/eternity/ActivitySuspendedError.js.map +1 -1
- package/dist/eternity/EternityContext.d.ts.map +1 -1
- package/dist/eternity/EternityContext.js +17 -26
- package/dist/eternity/EternityContext.js.map +1 -1
- package/dist/eternity/EternityStorage.js +7 -35
- package/dist/eternity/EternityStorage.js.map +1 -1
- package/dist/eternity/Workflow.js +2 -12
- package/dist/eternity/Workflow.js.map +1 -1
- package/dist/eternity/WorkflowClock.js +1 -6
- package/dist/eternity/WorkflowClock.js.map +1 -1
- package/dist/migrations/Migrations.js +0 -1
- package/dist/migrations/Migrations.js.map +1 -1
- package/dist/model/EntityContext.js +4 -21
- package/dist/model/EntityContext.js.map +1 -1
- package/dist/model/EntityModel.js +2 -3
- package/dist/model/EntityModel.js.map +1 -1
- package/dist/model/EntityQuery.d.ts.map +1 -1
- package/dist/model/EntityQuery.js +120 -98
- package/dist/model/EntityQuery.js.map +1 -1
- package/dist/model/EntitySource.js +0 -3
- package/dist/model/EntitySource.js.map +1 -1
- package/dist/model/SourceExpression.js +0 -9
- package/dist/model/SourceExpression.js.map +1 -1
- package/dist/model/changes/ChangeEntry.js +0 -10
- package/dist/model/changes/ChangeEntry.js.map +1 -1
- package/dist/model/changes/ChangeSet.js +8 -9
- package/dist/model/changes/ChangeSet.js.map +1 -1
- package/dist/model/events/ContextEvents.js +3 -1
- package/dist/model/events/ContextEvents.js.map +1 -1
- package/dist/model/events/EntityEvents.js +0 -6
- package/dist/model/events/EntityEvents.js.map +1 -1
- package/dist/model/identity/RelationMapper.js +1 -3
- package/dist/model/identity/RelationMapper.js.map +1 -1
- package/dist/model/verification/VerificationSession.d.ts.map +1 -1
- package/dist/model/verification/VerificationSession.js +26 -23
- package/dist/model/verification/VerificationSession.js.map +1 -1
- package/dist/query/Query.js +3 -8
- package/dist/query/Query.js.map +1 -1
- package/dist/query/ast/ExpressionToSql.d.ts.map +1 -1
- package/dist/query/ast/ExpressionToSql.js +2 -6
- package/dist/query/ast/ExpressionToSql.js.map +1 -1
- package/dist/query/ast/Expressions.js +128 -107
- package/dist/query/ast/Expressions.js.map +1 -1
- package/dist/query/ast/IStringTransformer.js +0 -1
- package/dist/query/ast/IStringTransformer.js.map +1 -1
- package/dist/query/ast/ParameterScope.js +4 -2
- package/dist/query/ast/ParameterScope.js.map +1 -1
- package/dist/query/expander/QueryExpander.js +1 -4
- package/dist/query/expander/QueryExpander.js.map +1 -1
- package/dist/query/parser/ArrowToExpression.js +2 -4
- package/dist/query/parser/ArrowToExpression.js.map +1 -1
- package/dist/query/parser/Restructure.js +4 -1
- package/dist/query/parser/Restructure.js.map +1 -1
- package/dist/tests/TestConfig.js +0 -2
- package/dist/tests/TestConfig.js.map +1 -1
- package/dist/tests/eternity/child-tests.js +8 -14
- package/dist/tests/eternity/child-tests.js.map +1 -1
- package/dist/tests/eternity/eternity-tests.js +8 -14
- package/dist/tests/eternity/eternity-tests.js.map +1 -1
- package/dist/tests/eternity/external-event-tests.js +5 -14
- package/dist/tests/eternity/external-event-tests.js.map +1 -1
- package/dist/tests/model/ShoppingContext.js +15 -90
- package/dist/tests/model/ShoppingContext.js.map +1 -1
- package/dist/tests/model/UseFile.js +1 -13
- package/dist/tests/model/UseFile.js.map +1 -1
- package/dist/tests/security/events/OrderEvents.js +1 -11
- package/dist/tests/security/events/OrderEvents.js.map +1 -1
- package/dist/tests/security/events/ProductEvents.js +1 -12
- package/dist/tests/security/events/ProductEvents.js.map +1 -1
- package/dist/tests/security/events/UserEvents.js +1 -10
- package/dist/tests/security/events/UserEvents.js.map +1 -1
- package/dist/tests/security/events/UserInfo.js +1 -8
- package/dist/tests/security/events/UserInfo.js.map +1 -1
- package/dist/tests/security/tests/place-order.d.ts.map +1 -1
- package/dist/tests/security/tests/place-order.js +28 -12
- package/dist/tests/security/tests/place-order.js.map +1 -1
- package/dist/tests/security/tests/test-events.d.ts.map +1 -1
- package/dist/tests/security/tests/test-events.js +11 -5
- package/dist/tests/security/tests/test-events.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/DateTime.js +0 -37
- package/dist/types/DateTime.js.map +1 -1
- package/dist/types/TimeSpan.js +0 -1
- package/dist/types/TimeSpan.js.map +1 -1
- package/package.json +5 -4
- package/src/common/EventSet.ts +3 -0
- package/src/common/IDisposable.ts +0 -8
- package/src/common/Logger.ts +3 -3
- package/src/common/ObjectPool.ts +1 -0
- package/src/common/usingAsync.ts +7 -1
- package/src/drivers/base/BaseDriver.ts +38 -12
- package/src/drivers/postgres/PostgreSqlDriver.ts +8 -4
- package/src/drivers/sql-server/SqlServerDriver.ts +10 -29
- package/src/eternity/EternityContext.ts +51 -56
- package/src/model/EntityQuery.ts +4 -10
- package/src/model/verification/VerificationSession.ts +5 -9
- package/src/query/ast/ExpressionToSql.ts +0 -2
- package/src/tests/security/tests/place-order.ts +83 -92
- package/src/tests/security/tests/test-events.ts +31 -35
- package/tsconfig.json +4 -2
|
@@ -20,7 +20,6 @@ export default async function(this: TestConfig) {
|
|
|
20
20
|
await addNewOrder.call(this, customer, 1);
|
|
21
21
|
assert.fail("No error thrown");
|
|
22
22
|
} catch(error) {
|
|
23
|
-
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
await getNewOrders.call(this);
|
|
@@ -31,107 +30,99 @@ export default async function(this: TestConfig) {
|
|
|
31
30
|
async function createInterests(this: TestConfig) {
|
|
32
31
|
const global = new ServiceProvider();
|
|
33
32
|
global.add(BaseDriver, this.driver);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
} finally {
|
|
63
|
-
scope.dispose();
|
|
64
|
-
}
|
|
33
|
+
using scope = global.createScope();
|
|
34
|
+
|
|
35
|
+
const userID = 2;
|
|
36
|
+
const user = new UserInfo();
|
|
37
|
+
user.userID = userID;
|
|
38
|
+
ServiceCollection.register("Singleton", Logger, () => Logger.instance);
|
|
39
|
+
scope.add(BaseDriver, this.driver);
|
|
40
|
+
scope.add(UserInfo, user);
|
|
41
|
+
ServiceCollection.register("Singleton", ContextEvents, () => new ShoppingContextEvents());
|
|
42
|
+
const context = scope.create(ShoppingContext);
|
|
43
|
+
context.verifyFilters = false;
|
|
44
|
+
context.raiseEvents = false;
|
|
45
|
+
|
|
46
|
+
const headPhone = await context.products.all().include((x) => x.categories).firstOrFail();
|
|
47
|
+
const category = headPhone.categories[0];
|
|
48
|
+
|
|
49
|
+
context.userCategories.add({
|
|
50
|
+
userID,
|
|
51
|
+
categoryID: category.categoryID,
|
|
52
|
+
lastUpdated: DateTime.utcNow
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
await context.saveChanges();
|
|
56
|
+
|
|
57
|
+
const userCategories = await context.userCategories.where({ userID }, (p) => (x) => x.userID === p.userID).count();
|
|
58
|
+
|
|
59
|
+
assert.equal(1, userCategories);
|
|
60
|
+
|
|
65
61
|
}
|
|
66
62
|
|
|
67
63
|
async function getNewOrders(this: TestConfig) {
|
|
68
64
|
const global = new ServiceProvider();
|
|
69
65
|
global.add(BaseDriver, this.driver);
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
scope.dispose();
|
|
88
|
-
}
|
|
66
|
+
|
|
67
|
+
using scope = global.createScope();
|
|
68
|
+
|
|
69
|
+
const user = new UserInfo();
|
|
70
|
+
user.userID = 2;
|
|
71
|
+
ServiceCollection.register("Singleton", Logger, () => Logger.instance);
|
|
72
|
+
scope.add(BaseDriver, this.driver);
|
|
73
|
+
scope.add(UserInfo, user);
|
|
74
|
+
ServiceCollection.register("Singleton", ContextEvents, () => new ShoppingContextEvents());
|
|
75
|
+
const context = scope.create(ShoppingContext);
|
|
76
|
+
context.verifyFilters = true;
|
|
77
|
+
|
|
78
|
+
const order = await context.orders.all().first();
|
|
79
|
+
|
|
80
|
+
order.orderDate = new Date();
|
|
81
|
+
await context.saveChanges();
|
|
82
|
+
|
|
89
83
|
}
|
|
90
84
|
|
|
91
85
|
async function addNewOrder(this: TestConfig, customer: User, userID?) {
|
|
92
86
|
const global = new ServiceProvider();
|
|
93
87
|
global.add(BaseDriver, this.driver);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
} finally {
|
|
133
|
-
scope.dispose();
|
|
134
|
-
}
|
|
88
|
+
|
|
89
|
+
using scope = global.createScope();
|
|
90
|
+
|
|
91
|
+
const user = new UserInfo();
|
|
92
|
+
user.userID = userID ?? customer.userID;
|
|
93
|
+
ServiceCollection.register("Singleton", Logger, () => Logger.instance);
|
|
94
|
+
scope.add(BaseDriver, this.driver);
|
|
95
|
+
scope.add(UserInfo, user);
|
|
96
|
+
ServiceCollection.register("Singleton", ContextEvents, () => new ShoppingContextEvents());
|
|
97
|
+
const context = scope.create(ShoppingContext);
|
|
98
|
+
context.verifyFilters = true;
|
|
99
|
+
|
|
100
|
+
// get first headphone...
|
|
101
|
+
const headPhone = await context.products.all().firstOrFail();
|
|
102
|
+
const headPhonePrice = await context.productPrices.where({ id: headPhone.productID }, (p) => (x) => x.productID === p.id).firstOrFail();
|
|
103
|
+
|
|
104
|
+
context.orders.add({
|
|
105
|
+
customer,
|
|
106
|
+
orderDate: new Date(),
|
|
107
|
+
orderItems: [
|
|
108
|
+
context.orderItems.add({
|
|
109
|
+
product: headPhone,
|
|
110
|
+
productPrice: headPhonePrice,
|
|
111
|
+
amount: headPhonePrice.amount,
|
|
112
|
+
})
|
|
113
|
+
]
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
await context.saveChanges();
|
|
117
|
+
|
|
118
|
+
// lets filter the orders
|
|
119
|
+
|
|
120
|
+
const f = context.orders.filtered();
|
|
121
|
+
const myOrders = await f.count();
|
|
122
|
+
assert.equal(1, myOrders);
|
|
123
|
+
|
|
124
|
+
const all = await context.orders.all().count();
|
|
125
|
+
assert.notEqual(all, myOrders);
|
|
135
126
|
}
|
|
136
127
|
|
|
137
128
|
async function createUser(config: TestConfig) {
|
|
@@ -16,40 +16,36 @@ export default async function (this: TestConfig) {
|
|
|
16
16
|
|
|
17
17
|
const global = new ServiceProvider();
|
|
18
18
|
global.add(BaseDriver, this.driver);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
assert.equal(true, p.afterInsertInvoked);
|
|
51
|
-
} finally {
|
|
52
|
-
scope.dispose();
|
|
53
|
-
}
|
|
19
|
+
|
|
20
|
+
using scope = global.createScope();
|
|
21
|
+
|
|
22
|
+
const userID = 1;
|
|
23
|
+
const user = new UserInfo();
|
|
24
|
+
user.userID = userID;
|
|
25
|
+
scope.add(Logger, Logger.instance);
|
|
26
|
+
scope.add(BaseDriver, this.driver);
|
|
27
|
+
scope.add(UserInfo, user);
|
|
28
|
+
scope.add(ContextEvents, new ShoppingContextEvents());
|
|
29
|
+
const context = scope.create(ShoppingContext);
|
|
30
|
+
|
|
31
|
+
const first = await context.products.all().first();
|
|
32
|
+
first.name = "First Product";
|
|
33
|
+
const fe = context.changeSet.getEntry(first);
|
|
34
|
+
await context.saveChanges();
|
|
35
|
+
|
|
36
|
+
assert.notStrictEqual(undefined, first.nameUpdated);
|
|
37
|
+
assert.equal(true, first.nameUpdated);
|
|
38
|
+
assert.equal(false, fe.isUpdated("name"));
|
|
39
|
+
|
|
40
|
+
const status = statusPublished;
|
|
41
|
+
// create new product...
|
|
42
|
+
const p = context.products.add({
|
|
43
|
+
name: "A",
|
|
44
|
+
status,
|
|
45
|
+
ownerID: userID
|
|
46
|
+
});
|
|
47
|
+
assert.equal(void 0, p.afterInsertInvoked);
|
|
48
|
+
await context.saveChanges();
|
|
49
|
+
assert.equal(true, p.afterInsertInvoked);
|
|
54
50
|
|
|
55
51
|
}
|
package/tsconfig.json
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
|
-
"target": "
|
|
3
|
+
"target": "ES2021",
|
|
4
4
|
"module":"NodeNext",
|
|
5
5
|
"incremental": true,
|
|
6
6
|
"sourceMap": true,
|
|
7
7
|
"declaration": true,
|
|
8
8
|
"declarationMap": true,
|
|
9
|
+
"importHelpers": true,
|
|
9
10
|
"outDir": "dist",
|
|
10
11
|
"skipDefaultLibCheck": true,
|
|
11
12
|
"experimentalDecorators": true,
|
|
12
13
|
"emitDecoratorMetadata": true,
|
|
13
14
|
"lib": [
|
|
14
|
-
"ES2018"
|
|
15
|
+
"ES2018",
|
|
16
|
+
"esnext.disposable"
|
|
15
17
|
]
|
|
16
18
|
},
|
|
17
19
|
"include": [
|