@entity-access/entity-access 1.0.7 → 1.0.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.
- package/.github/workflows/npm-publish.yml +2 -10
- package/dist/TestRunner.d.ts +2 -0
- package/dist/TestRunner.d.ts.map +1 -0
- package/dist/TestRunner.js +2 -0
- package/dist/TestRunner.js.map +1 -0
- package/dist/common/EntityAccessError.d.ts +5 -0
- package/dist/common/EntityAccessError.d.ts.map +1 -0
- package/dist/common/EntityAccessError.js +9 -0
- package/dist/common/EntityAccessError.js.map +1 -0
- package/dist/common/IDisposable.d.ts +13 -0
- package/dist/common/IDisposable.d.ts.map +1 -0
- package/dist/common/IDisposable.js +9 -0
- package/dist/common/IDisposable.js.map +1 -0
- package/dist/common/ImmutableObject.d.ts +5 -0
- package/dist/common/ImmutableObject.d.ts.map +1 -0
- package/dist/common/ImmutableObject.js +49 -0
- package/dist/common/ImmutableObject.js.map +1 -0
- package/dist/common/Logger.d.ts +18 -0
- package/dist/common/Logger.d.ts.map +1 -0
- package/dist/common/Logger.js +60 -0
- package/dist/common/Logger.js.map +1 -0
- package/dist/common/TypeInfo.d.ts +4 -0
- package/dist/common/TypeInfo.d.ts.map +1 -0
- package/dist/common/TypeInfo.js +4 -0
- package/dist/common/TypeInfo.js.map +1 -0
- package/dist/common/cache/InstanceCache.d.ts +2 -0
- package/dist/common/cache/InstanceCache.d.ts.map +1 -0
- package/dist/common/cache/InstanceCache.js +13 -0
- package/dist/common/cache/InstanceCache.js.map +1 -0
- package/dist/common/cache/TimedCache.d.ts +10 -0
- package/dist/common/cache/TimedCache.d.ts.map +1 -0
- package/dist/common/cache/TimedCache.js +67 -0
- package/dist/common/cache/TimedCache.js.map +1 -0
- package/dist/common/symbols/symbols.d.ts +3 -0
- package/dist/common/symbols/symbols.d.ts.map +1 -0
- package/dist/common/symbols/symbols.js +3 -0
- package/dist/common/symbols/symbols.js.map +1 -0
- package/dist/common/usingAsync.d.ts +13 -0
- package/dist/common/usingAsync.d.ts.map +1 -0
- package/dist/common/usingAsync.js +44 -0
- package/dist/common/usingAsync.js.map +1 -0
- package/dist/compiler/ISqlHelpers.d.ts +10 -0
- package/dist/compiler/ISqlHelpers.d.ts.map +1 -0
- package/dist/compiler/ISqlHelpers.js +17 -0
- package/dist/compiler/ISqlHelpers.js.map +1 -0
- package/dist/compiler/QueryCompiler.d.ts +36 -0
- package/dist/compiler/QueryCompiler.d.ts.map +1 -0
- package/dist/compiler/QueryCompiler.js +65 -0
- package/dist/compiler/QueryCompiler.js.map +1 -0
- package/dist/compiler/postgres/PostgreSqlMethodTransformer.d.ts +4 -0
- package/dist/compiler/postgres/PostgreSqlMethodTransformer.d.ts.map +1 -0
- package/dist/compiler/postgres/PostgreSqlMethodTransformer.js +103 -0
- package/dist/compiler/postgres/PostgreSqlMethodTransformer.js.map +1 -0
- package/dist/compiler/sql-server/SqlServerSqlMethodTransformer.d.ts +4 -0
- package/dist/compiler/sql-server/SqlServerSqlMethodTransformer.d.ts.map +1 -0
- package/dist/compiler/sql-server/SqlServerSqlMethodTransformer.js +103 -0
- package/dist/compiler/sql-server/SqlServerSqlMethodTransformer.js.map +1 -0
- package/dist/decorators/Column.d.ts +4 -0
- package/dist/decorators/Column.d.ts.map +1 -0
- package/dist/decorators/Column.js +39 -0
- package/dist/decorators/Column.js.map +1 -0
- package/dist/decorators/ForeignKey.d.ts +9 -0
- package/dist/decorators/ForeignKey.d.ts.map +1 -0
- package/dist/decorators/ForeignKey.js +18 -0
- package/dist/decorators/ForeignKey.js.map +1 -0
- package/dist/decorators/IClassOf.d.ts +3 -0
- package/dist/decorators/IClassOf.d.ts.map +1 -0
- package/dist/decorators/IClassOf.js +2 -0
- package/dist/decorators/IClassOf.js.map +1 -0
- package/dist/decorators/IColumn.d.ts +49 -0
- package/dist/decorators/IColumn.d.ts.map +1 -0
- package/dist/decorators/IColumn.js +2 -0
- package/dist/decorators/IColumn.js.map +1 -0
- package/dist/decorators/ISqlType.d.ts +58 -0
- package/dist/decorators/ISqlType.d.ts.map +1 -0
- package/dist/decorators/ISqlType.js +2 -0
- package/dist/decorators/ISqlType.js.map +1 -0
- package/dist/decorators/SchemaRegistry.d.ts +6 -0
- package/dist/decorators/SchemaRegistry.d.ts.map +1 -0
- package/dist/decorators/SchemaRegistry.js +15 -0
- package/dist/decorators/SchemaRegistry.js.map +1 -0
- package/dist/decorators/Table.d.ts +6 -0
- package/dist/decorators/Table.d.ts.map +1 -0
- package/dist/decorators/Table.js +11 -0
- package/dist/decorators/Table.js.map +1 -0
- package/dist/decorators/parser/NameParser.d.ts +4 -0
- package/dist/decorators/parser/NameParser.d.ts.map +1 -0
- package/dist/decorators/parser/NameParser.js +14 -0
- package/dist/decorators/parser/NameParser.js.map +1 -0
- package/dist/di/di.d.ts +41 -0
- package/dist/di/di.d.ts.map +1 -0
- package/dist/di/di.js +174 -0
- package/dist/di/di.js.map +1 -0
- package/dist/drivers/base/BaseDriver.d.ts +60 -0
- package/dist/drivers/base/BaseDriver.d.ts.map +1 -0
- package/dist/drivers/base/BaseDriver.js +97 -0
- package/dist/drivers/base/BaseDriver.js.map +1 -0
- package/dist/drivers/postgres/PostgreSqlDriver.d.ts +35 -0
- package/dist/drivers/postgres/PostgreSqlDriver.d.ts.map +1 -0
- package/dist/drivers/postgres/PostgreSqlDriver.js +152 -0
- package/dist/drivers/postgres/PostgreSqlDriver.js.map +1 -0
- package/dist/drivers/sql-server/ExpressionToSqlServer.d.ts +10 -0
- package/dist/drivers/sql-server/ExpressionToSqlServer.d.ts.map +1 -0
- package/dist/drivers/sql-server/ExpressionToSqlServer.js +87 -0
- package/dist/drivers/sql-server/ExpressionToSqlServer.js.map +1 -0
- package/dist/drivers/sql-server/SqlServerDriver.d.ts +21 -0
- package/dist/drivers/sql-server/SqlServerDriver.d.ts.map +1 -0
- package/dist/drivers/sql-server/SqlServerDriver.js +179 -0
- package/dist/drivers/sql-server/SqlServerDriver.js.map +1 -0
- package/dist/drivers/sql-server/SqlServerLiteral.d.ts +5 -0
- package/dist/drivers/sql-server/SqlServerLiteral.d.ts.map +1 -0
- package/dist/drivers/sql-server/SqlServerLiteral.js +10 -0
- package/dist/drivers/sql-server/SqlServerLiteral.js.map +1 -0
- package/dist/drivers/sql-server/SqlServerQueryCompiler.d.ts +5 -0
- package/dist/drivers/sql-server/SqlServerQueryCompiler.d.ts.map +1 -0
- package/dist/drivers/sql-server/SqlServerQueryCompiler.js +17 -0
- package/dist/drivers/sql-server/SqlServerQueryCompiler.js.map +1 -0
- package/dist/entity-query/EntityType.d.ts +56 -0
- package/dist/entity-query/EntityType.d.ts.map +1 -0
- package/dist/entity-query/EntityType.js +145 -0
- package/dist/entity-query/EntityType.js.map +1 -0
- package/dist/migrations/Migrations.d.ts +7 -0
- package/dist/migrations/Migrations.d.ts.map +1 -0
- package/dist/migrations/Migrations.js +10 -0
- package/dist/migrations/Migrations.js.map +1 -0
- package/dist/migrations/postgres/PostgresAutomaticMigrations.d.ts +12 -0
- package/dist/migrations/postgres/PostgresAutomaticMigrations.d.ts.map +1 -0
- package/dist/migrations/postgres/PostgresAutomaticMigrations.js +68 -0
- package/dist/migrations/postgres/PostgresAutomaticMigrations.js.map +1 -0
- package/dist/migrations/postgres/PostgresMigrations.d.ts +7 -0
- package/dist/migrations/postgres/PostgresMigrations.d.ts.map +1 -0
- package/dist/migrations/postgres/PostgresMigrations.js +53 -0
- package/dist/migrations/postgres/PostgresMigrations.js.map +1 -0
- package/dist/migrations/sql-server/SqlServerAutomaticMigrations.d.ts +12 -0
- package/dist/migrations/sql-server/SqlServerAutomaticMigrations.d.ts.map +1 -0
- package/dist/migrations/sql-server/SqlServerAutomaticMigrations.js +74 -0
- package/dist/migrations/sql-server/SqlServerAutomaticMigrations.js.map +1 -0
- package/dist/migrations/sql-server/SqlServerMigrations.d.ts +7 -0
- package/dist/migrations/sql-server/SqlServerMigrations.d.ts.map +1 -0
- package/dist/migrations/sql-server/SqlServerMigrations.js +57 -0
- package/dist/migrations/sql-server/SqlServerMigrations.js.map +1 -0
- package/dist/model/EntityContext.d.ts +28 -0
- package/dist/model/EntityContext.d.ts.map +1 -0
- package/dist/model/EntityContext.js +181 -0
- package/dist/model/EntityContext.js.map +1 -0
- package/dist/model/EntityModel.d.ts +10 -0
- package/dist/model/EntityModel.d.ts.map +1 -0
- package/dist/model/EntityModel.js +19 -0
- package/dist/model/EntityModel.js.map +1 -0
- package/dist/model/EntityQuery.d.ts +37 -0
- package/dist/model/EntityQuery.d.ts.map +1 -0
- package/dist/model/EntityQuery.js +183 -0
- package/dist/model/EntityQuery.js.map +1 -0
- package/dist/model/EntitySource.d.ts +27 -0
- package/dist/model/EntitySource.d.ts.map +1 -0
- package/dist/model/EntitySource.js +74 -0
- package/dist/model/EntitySource.js.map +1 -0
- package/dist/model/IFilterWithParameter.d.ts +32 -0
- package/dist/model/IFilterWithParameter.d.ts.map +1 -0
- package/dist/model/IFilterWithParameter.js +2 -0
- package/dist/model/IFilterWithParameter.js.map +1 -0
- package/dist/model/SourceExpression.d.ts +23 -0
- package/dist/model/SourceExpression.d.ts.map +1 -0
- package/dist/model/SourceExpression.js +109 -0
- package/dist/model/SourceExpression.js.map +1 -0
- package/dist/model/changes/ChangeEntry.d.ts +32 -0
- package/dist/model/changes/ChangeEntry.d.ts.map +1 -0
- package/dist/model/changes/ChangeEntry.js +136 -0
- package/dist/model/changes/ChangeEntry.js.map +1 -0
- package/dist/model/changes/ChangeSet.d.ts +23 -0
- package/dist/model/changes/ChangeSet.d.ts.map +1 -0
- package/dist/model/changes/ChangeSet.js +79 -0
- package/dist/model/changes/ChangeSet.js.map +1 -0
- package/dist/model/events/ContextEvents.d.ts +8 -0
- package/dist/model/events/ContextEvents.d.ts.map +1 -0
- package/dist/model/events/ContextEvents.js +18 -0
- package/dist/model/events/ContextEvents.js.map +1 -0
- package/dist/model/events/EntityEvents.d.ts +34 -0
- package/dist/model/events/EntityEvents.d.ts.map +1 -0
- package/dist/model/events/EntityEvents.js +67 -0
- package/dist/model/events/EntityEvents.js.map +1 -0
- package/dist/model/identity/IdentityService.d.ts +7 -0
- package/dist/model/identity/IdentityService.d.ts.map +1 -0
- package/dist/model/identity/IdentityService.js +25 -0
- package/dist/model/identity/IdentityService.js.map +1 -0
- package/dist/model/identity/RelationMapper.d.ts +11 -0
- package/dist/model/identity/RelationMapper.d.ts.map +1 -0
- package/dist/model/identity/RelationMapper.js +61 -0
- package/dist/model/identity/RelationMapper.js.map +1 -0
- package/dist/model/symbols.d.ts +2 -0
- package/dist/model/symbols.d.ts.map +1 -0
- package/dist/model/symbols.js +2 -0
- package/dist/model/symbols.js.map +1 -0
- package/dist/model/verification/VerificationSession.d.ts +20 -0
- package/dist/model/verification/VerificationSession.d.ts.map +1 -0
- package/dist/model/verification/VerificationSession.js +145 -0
- package/dist/model/verification/VerificationSession.js.map +1 -0
- package/dist/query/Query.d.ts +29 -0
- package/dist/query/Query.d.ts.map +1 -0
- package/dist/query/Query.js +132 -0
- package/dist/query/Query.js.map +1 -0
- package/dist/query/ast/DebugStringVisitor.d.ts +36 -0
- package/dist/query/ast/DebugStringVisitor.d.ts.map +1 -0
- package/dist/query/ast/DebugStringVisitor.js +143 -0
- package/dist/query/ast/DebugStringVisitor.js.map +1 -0
- package/dist/query/ast/ExpressionToSql.d.ts +58 -0
- package/dist/query/ast/ExpressionToSql.d.ts.map +1 -0
- package/dist/query/ast/ExpressionToSql.js +410 -0
- package/dist/query/ast/ExpressionToSql.js.map +1 -0
- package/dist/query/ast/Expressions.d.ts +212 -0
- package/dist/query/ast/Expressions.d.ts.map +1 -0
- package/dist/query/ast/Expressions.js +289 -0
- package/dist/query/ast/Expressions.js.map +1 -0
- package/dist/query/ast/IStringTransformer.d.ts +17 -0
- package/dist/query/ast/IStringTransformer.d.ts.map +1 -0
- package/dist/query/ast/IStringTransformer.js +79 -0
- package/dist/query/ast/IStringTransformer.js.map +1 -0
- package/dist/query/ast/ParameterScope.d.ts +25 -0
- package/dist/query/ast/ParameterScope.d.ts.map +1 -0
- package/dist/query/ast/ParameterScope.js +71 -0
- package/dist/query/ast/ParameterScope.js.map +1 -0
- package/dist/query/ast/ReplaceParameter.d.ts +5 -0
- package/dist/query/ast/ReplaceParameter.d.ts.map +1 -0
- package/dist/query/ast/ReplaceParameter.js +37 -0
- package/dist/query/ast/ReplaceParameter.js.map +1 -0
- package/dist/query/ast/SqlLiteral.d.ts +4 -0
- package/dist/query/ast/SqlLiteral.d.ts.map +1 -0
- package/dist/query/ast/SqlLiteral.js +24 -0
- package/dist/query/ast/SqlLiteral.js.map +1 -0
- package/dist/query/ast/Types.d.ts +2 -0
- package/dist/query/ast/Types.d.ts.map +1 -0
- package/dist/query/ast/Types.js +2 -0
- package/dist/query/ast/Types.js.map +1 -0
- package/dist/query/ast/Visitor.d.ts +35 -0
- package/dist/query/ast/Visitor.d.ts.map +1 -0
- package/dist/query/ast/Visitor.js +161 -0
- package/dist/query/ast/Visitor.js.map +1 -0
- package/dist/query/expander/QueryExpander.d.ts +11 -0
- package/dist/query/expander/QueryExpander.d.ts.map +1 -0
- package/dist/query/expander/QueryExpander.js +103 -0
- package/dist/query/expander/QueryExpander.js.map +1 -0
- package/dist/query/parser/ArrowToExpression.d.ts +35 -0
- package/dist/query/parser/ArrowToExpression.d.ts.map +1 -0
- package/dist/query/parser/ArrowToExpression.js +237 -0
- package/dist/query/parser/ArrowToExpression.js.map +1 -0
- package/dist/query/parser/BabelVisitor.d.ts +23 -0
- package/dist/query/parser/BabelVisitor.d.ts.map +1 -0
- package/dist/query/parser/BabelVisitor.js +53 -0
- package/dist/query/parser/BabelVisitor.js.map +1 -0
- package/dist/query/parser/NotSupportedError.d.ts +4 -0
- package/dist/query/parser/NotSupportedError.d.ts.map +1 -0
- package/dist/query/parser/NotSupportedError.js +6 -0
- package/dist/query/parser/NotSupportedError.js.map +1 -0
- package/dist/query/parser/Restructure.d.ts +11 -0
- package/dist/query/parser/Restructure.d.ts.map +1 -0
- package/dist/query/parser/Restructure.js +54 -0
- package/dist/query/parser/Restructure.js.map +1 -0
- package/dist/query/parser/TransformVisitor.d.ts +23 -0
- package/dist/query/parser/TransformVisitor.d.ts.map +1 -0
- package/dist/query/parser/TransformVisitor.js +70 -0
- package/dist/query/parser/TransformVisitor.js.map +1 -0
- package/dist/sql/ISql.d.ts +37 -0
- package/dist/sql/ISql.d.ts.map +1 -0
- package/dist/sql/ISql.js +2 -0
- package/dist/sql/ISql.js.map +1 -0
- package/dist/sql/Sql.d.ts +4 -0
- package/dist/sql/Sql.d.ts.map +1 -0
- package/dist/sql/Sql.js +3 -0
- package/dist/sql/Sql.js.map +1 -0
- package/dist/tests/TestConfig.d.ts +6 -0
- package/dist/tests/TestConfig.d.ts.map +1 -0
- package/dist/tests/TestConfig.js +5 -0
- package/dist/tests/TestConfig.js.map +1 -0
- package/dist/tests/db-tests/tests/select-items.d.ts +3 -0
- package/dist/tests/db-tests/tests/select-items.d.ts.map +1 -0
- package/dist/tests/db-tests/tests/select-items.js +30 -0
- package/dist/tests/db-tests/tests/select-items.js.map +1 -0
- package/dist/tests/db-tests/tests/update-items.d.ts +3 -0
- package/dist/tests/db-tests/tests/update-items.d.ts.map +1 -0
- package/dist/tests/db-tests/tests/update-items.js +11 -0
- package/dist/tests/db-tests/tests/update-items.js.map +1 -0
- package/dist/tests/drivers/postgres/connection-test.d.ts +3 -0
- package/dist/tests/drivers/postgres/connection-test.d.ts.map +1 -0
- package/dist/tests/drivers/postgres/connection-test.js +20 -0
- package/dist/tests/drivers/postgres/connection-test.js.map +1 -0
- package/dist/tests/drivers/sql-server/sql-server-test.d.ts +2 -0
- package/dist/tests/drivers/sql-server/sql-server-test.d.ts.map +1 -0
- package/dist/tests/drivers/sql-server/sql-server-test.js +6 -0
- package/dist/tests/drivers/sql-server/sql-server-test.js.map +1 -0
- package/dist/tests/expressions/left-joins/child-joins.d.ts +2 -0
- package/dist/tests/expressions/left-joins/child-joins.d.ts.map +1 -0
- package/dist/tests/expressions/left-joins/child-joins.js +77 -0
- package/dist/tests/expressions/left-joins/child-joins.js.map +1 -0
- package/dist/tests/expressions/sanitize/sanitize-test.d.ts +2 -0
- package/dist/tests/expressions/sanitize/sanitize-test.d.ts.map +1 -0
- package/dist/tests/expressions/sanitize/sanitize-test.js +8 -0
- package/dist/tests/expressions/sanitize/sanitize-test.js.map +1 -0
- package/dist/tests/expressions/select/select.d.ts +2 -0
- package/dist/tests/expressions/select/select.d.ts.map +1 -0
- package/dist/tests/expressions/select/select.js +11 -0
- package/dist/tests/expressions/select/select.js.map +1 -0
- package/dist/tests/expressions/simple/parse-arrow.d.ts +2 -0
- package/dist/tests/expressions/simple/parse-arrow.d.ts.map +1 -0
- package/dist/tests/expressions/simple/parse-arrow.js +30 -0
- package/dist/tests/expressions/simple/parse-arrow.js.map +1 -0
- package/dist/tests/expressions/trimInternal.d.ts +3 -0
- package/dist/tests/expressions/trimInternal.d.ts.map +1 -0
- package/dist/tests/expressions/trimInternal.js +22 -0
- package/dist/tests/expressions/trimInternal.js.map +1 -0
- package/dist/tests/model/ShoppingContext.d.ts +67 -0
- package/dist/tests/model/ShoppingContext.d.ts.map +1 -0
- package/dist/tests/model/ShoppingContext.js +264 -0
- package/dist/tests/model/ShoppingContext.js.map +1 -0
- package/dist/tests/model/createContext.d.ts +5 -0
- package/dist/tests/model/createContext.d.ts.map +1 -0
- package/dist/tests/model/createContext.js +307 -0
- package/dist/tests/model/createContext.js.map +1 -0
- package/dist/tests/query/combine.d.ts +2 -0
- package/dist/tests/query/combine.d.ts.map +1 -0
- package/dist/tests/query/combine.js +20 -0
- package/dist/tests/query/combine.js.map +1 -0
- package/dist/tests/security/ShoppingContextEvents.d.ts +5 -0
- package/dist/tests/security/ShoppingContextEvents.d.ts.map +1 -0
- package/dist/tests/security/ShoppingContextEvents.js +17 -0
- package/dist/tests/security/ShoppingContextEvents.js.map +1 -0
- package/dist/tests/security/events/OrderEvents.d.ts +17 -0
- package/dist/tests/security/events/OrderEvents.d.ts.map +1 -0
- package/dist/tests/security/events/OrderEvents.js +72 -0
- package/dist/tests/security/events/OrderEvents.js.map +1 -0
- package/dist/tests/security/events/ProductEvents.d.ts +20 -0
- package/dist/tests/security/events/ProductEvents.d.ts.map +1 -0
- package/dist/tests/security/events/ProductEvents.js +83 -0
- package/dist/tests/security/events/ProductEvents.js.map +1 -0
- package/dist/tests/security/events/UserEvents.d.ts +10 -0
- package/dist/tests/security/events/UserEvents.d.ts.map +1 -0
- package/dist/tests/security/events/UserEvents.js +35 -0
- package/dist/tests/security/events/UserEvents.js.map +1 -0
- package/dist/tests/security/events/UserInfo.d.ts +5 -0
- package/dist/tests/security/events/UserInfo.d.ts.map +1 -0
- package/dist/tests/security/events/UserInfo.js +15 -0
- package/dist/tests/security/events/UserInfo.js.map +1 -0
- package/dist/tests/security/tests/include-items.d.ts +3 -0
- package/dist/tests/security/tests/include-items.d.ts.map +1 -0
- package/dist/tests/security/tests/include-items.js +14 -0
- package/dist/tests/security/tests/include-items.js.map +1 -0
- package/dist/tests/security/tests/place-order.d.ts +3 -0
- package/dist/tests/security/tests/place-order.d.ts.map +1 -0
- package/dist/tests/security/tests/place-order.js +86 -0
- package/dist/tests/security/tests/place-order.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { privateUpdateEntry } from "./ChangeSet.js";
|
|
2
|
+
export default class ChangeEntry {
|
|
3
|
+
type;
|
|
4
|
+
entity;
|
|
5
|
+
order;
|
|
6
|
+
original;
|
|
7
|
+
status;
|
|
8
|
+
modified;
|
|
9
|
+
changeSet;
|
|
10
|
+
pending;
|
|
11
|
+
dependents;
|
|
12
|
+
constructor(p, changeSet) {
|
|
13
|
+
Object.setPrototypeOf(p, ChangeEntry.prototype);
|
|
14
|
+
const ce = p;
|
|
15
|
+
ce.changeSet = changeSet;
|
|
16
|
+
ce.pending = [];
|
|
17
|
+
ce.dependents = [];
|
|
18
|
+
ce.modified = new Map();
|
|
19
|
+
return ce;
|
|
20
|
+
}
|
|
21
|
+
detect() {
|
|
22
|
+
if (this.status === "deleted") {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const { type: { columns }, entity, original } = this;
|
|
26
|
+
if (original === void 0) {
|
|
27
|
+
this.status = "inserted";
|
|
28
|
+
this.detectDependencies();
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
this.detectDependencies();
|
|
32
|
+
for (const iterator of columns) {
|
|
33
|
+
const oldValue = original[iterator.columnName];
|
|
34
|
+
const newValue = entity[iterator.name];
|
|
35
|
+
if (entity[iterator.name] !== original[iterator.columnName]) {
|
|
36
|
+
let modifiedEntry = this.modified.get(iterator);
|
|
37
|
+
if (!modifiedEntry) {
|
|
38
|
+
modifiedEntry = { column: iterator, oldValue, newValue };
|
|
39
|
+
this.modified.set(iterator, modifiedEntry);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (this.modified.size > 0) {
|
|
44
|
+
this.status = "modified";
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.status = "unchanged";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
apply(dbValues) {
|
|
51
|
+
// apply values to main entity
|
|
52
|
+
// set status to unchanged
|
|
53
|
+
if (this.status === "deleted") {
|
|
54
|
+
// remove...
|
|
55
|
+
for (const iterator of this.pending) {
|
|
56
|
+
iterator();
|
|
57
|
+
}
|
|
58
|
+
this.changeSet[privateUpdateEntry](this);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
// we will only apply the columns defined
|
|
62
|
+
if (dbValues !== void 0) {
|
|
63
|
+
for (const iterator of this.type.columns) {
|
|
64
|
+
const dbValue = dbValues[iterator.columnName];
|
|
65
|
+
if (dbValue !== void 0) {
|
|
66
|
+
this.entity[iterator.name] = dbValues[iterator.columnName];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
for (const iterator of this.pending) {
|
|
71
|
+
iterator();
|
|
72
|
+
}
|
|
73
|
+
// we will set the identity key
|
|
74
|
+
this.changeSet[privateUpdateEntry](this);
|
|
75
|
+
this.pending.length = 0;
|
|
76
|
+
this.original = { ...this.entity };
|
|
77
|
+
this.status = "unchanged";
|
|
78
|
+
this.modified.clear();
|
|
79
|
+
}
|
|
80
|
+
detectDependencies() {
|
|
81
|
+
const { type: { relations }, entity } = this;
|
|
82
|
+
// for parent relations.. check if related key is set or not...
|
|
83
|
+
for (const iterator of relations) {
|
|
84
|
+
if (iterator.isInverseRelation) {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// get related entry..
|
|
88
|
+
const related = entity[iterator.name];
|
|
89
|
+
if (!related) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
// if related has key defined.. set it...
|
|
93
|
+
const rKey = iterator.relatedEntity.keys[0];
|
|
94
|
+
const relatedChanges = this.changeSet.getEntry(related);
|
|
95
|
+
const keyValue = related[rKey.name];
|
|
96
|
+
if (keyValue === void 0) {
|
|
97
|
+
relatedChanges.dependents.push(this);
|
|
98
|
+
this.order++;
|
|
99
|
+
for (const d of this.dependents) {
|
|
100
|
+
d.order++;
|
|
101
|
+
}
|
|
102
|
+
const fk = iterator;
|
|
103
|
+
relatedChanges.pending.push(() => {
|
|
104
|
+
this.entity[fk.fkColumn.name] = related[rKey.name];
|
|
105
|
+
});
|
|
106
|
+
this.modified.set(iterator, { column: iterator.fkColumn, oldValue: void 0, newValue: void 0 });
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
this.entity[iterator.fkColumn.name] = related[rKey.name];
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
setupInverseProperties() {
|
|
113
|
+
const deleted = this.status === "deleted";
|
|
114
|
+
for (const iterator of this.type.relations) {
|
|
115
|
+
if (!iterator.isInverseRelation) {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
const { relatedName } = iterator;
|
|
119
|
+
const related = this.entity[iterator.name];
|
|
120
|
+
if (related === void 0) {
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (Array.isArray(related)) {
|
|
124
|
+
for (const r of related) {
|
|
125
|
+
r[iterator.relatedName] = this.entity;
|
|
126
|
+
}
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
related[relatedName] = this.entity;
|
|
130
|
+
if (deleted) {
|
|
131
|
+
this.pending.push(() => delete related[relatedName]);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=ChangeEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChangeEntry.js","sourceRoot":"","sources":["../../../src/model/changes/ChangeEntry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import EntityContext from "../EntityContext.js";
|
|
2
|
+
import { identityMapSymbol } from "../identity/IdentityService.js";
|
|
3
|
+
import ChangeEntry from "./ChangeEntry.js";
|
|
4
|
+
export declare const privateUpdateEntry: unique symbol;
|
|
5
|
+
export default class ChangeSet {
|
|
6
|
+
private context;
|
|
7
|
+
readonly entries: ChangeEntry[];
|
|
8
|
+
get [identityMapSymbol](): Map<string, ChangeEntry>;
|
|
9
|
+
private entryMap;
|
|
10
|
+
/**
|
|
11
|
+
* This will provide new entity for same key
|
|
12
|
+
*/
|
|
13
|
+
private identityMap;
|
|
14
|
+
private nextId;
|
|
15
|
+
constructor(context: EntityContext);
|
|
16
|
+
[privateUpdateEntry](entry: ChangeEntry): void;
|
|
17
|
+
getEntry(entity: any, original?: any): ChangeEntry;
|
|
18
|
+
/**
|
|
19
|
+
* Detect changes will detect and sort the entries as they should be inserted.
|
|
20
|
+
*/
|
|
21
|
+
detectChanges(): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=ChangeSet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChangeSet.d.ts","sourceRoot":"","sources":["../../../src/model/changes/ChangeSet.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAwB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAE3C,eAAO,MAAM,kBAAkB,eAAwB,CAAC;AAExD,MAAM,CAAC,OAAO,OAAO,SAAS;IAiBd,OAAO,CAAC,OAAO;IAf3B,SAAgB,OAAO,EAAE,WAAW,EAAE,CAAM;IAE5C,IAAI,CAAC,iBAAiB,CAAC,6BAEtB;IAED,OAAO,CAAC,QAAQ,CAAoC;IAEpD;;OAEG;IACH,OAAO,CAAC,WAAW,CAAsC;IAEzD,OAAO,CAAC,MAAM,CAAK;gBAEC,OAAO,EAAE,aAAa;IAI1C,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,WAAW;IAgBhC,QAAQ,CAAC,MAAM,KAAA,EAAE,QAAQ,MAAS,GAAG,WAAW;IA+BvD;;OAEG;IACI,aAAa;CAcvB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import SchemaRegistry from "../../decorators/SchemaRegistry.js";
|
|
2
|
+
import IdentityService, { identityMapSymbol } from "../identity/IdentityService.js";
|
|
3
|
+
import ChangeEntry from "./ChangeEntry.js";
|
|
4
|
+
export const privateUpdateEntry = Symbol("updateEntry");
|
|
5
|
+
export default class ChangeSet {
|
|
6
|
+
context;
|
|
7
|
+
entries = [];
|
|
8
|
+
get [identityMapSymbol]() {
|
|
9
|
+
return this.identityMap;
|
|
10
|
+
}
|
|
11
|
+
entryMap = new Map();
|
|
12
|
+
/**
|
|
13
|
+
* This will provide new entity for same key
|
|
14
|
+
*/
|
|
15
|
+
identityMap = new Map();
|
|
16
|
+
nextId = 1;
|
|
17
|
+
constructor(context) {
|
|
18
|
+
this.context = context;
|
|
19
|
+
}
|
|
20
|
+
[privateUpdateEntry](entry) {
|
|
21
|
+
const jsonKey = IdentityService.getIdentity(entry.entity);
|
|
22
|
+
if (jsonKey) {
|
|
23
|
+
if (entry.status === "deleted") {
|
|
24
|
+
this.identityMap.delete(jsonKey);
|
|
25
|
+
const index = this.entries.indexOf(entry);
|
|
26
|
+
if (index !== -1) {
|
|
27
|
+
this.entries.splice(index, 1);
|
|
28
|
+
}
|
|
29
|
+
this.entryMap.delete(entry.entity);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
this.identityMap.set(jsonKey, entry.entity);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
getEntry(entity, original = void 0) {
|
|
36
|
+
let entry = this.entryMap.get(entity);
|
|
37
|
+
if (entry) {
|
|
38
|
+
return entry;
|
|
39
|
+
}
|
|
40
|
+
const type = SchemaRegistry.model(Object.getPrototypeOf(entity).constructor);
|
|
41
|
+
const jsonKey = IdentityService.getIdentity(entity);
|
|
42
|
+
if (jsonKey) {
|
|
43
|
+
const existing = this.identityMap.get(jsonKey);
|
|
44
|
+
if (existing) {
|
|
45
|
+
entity = existing;
|
|
46
|
+
entry = this.entryMap.get(entity);
|
|
47
|
+
if (entry) {
|
|
48
|
+
return entry;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.identityMap.set(jsonKey, entity);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
entry = new ChangeEntry({
|
|
56
|
+
type,
|
|
57
|
+
entity,
|
|
58
|
+
order: 0,
|
|
59
|
+
original: original ? { ...original } : void 0,
|
|
60
|
+
status: "unchanged"
|
|
61
|
+
}, this);
|
|
62
|
+
this.entries.push(entry);
|
|
63
|
+
this.entryMap.set(entity, entry);
|
|
64
|
+
return entry;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Detect changes will detect and sort the entries as they should be inserted.
|
|
68
|
+
*/
|
|
69
|
+
detectChanges() {
|
|
70
|
+
for (const iterator of this.entries) {
|
|
71
|
+
iterator.setupInverseProperties();
|
|
72
|
+
}
|
|
73
|
+
for (const iterator of this.entries) {
|
|
74
|
+
iterator.detect();
|
|
75
|
+
}
|
|
76
|
+
this.entries.sort((a, b) => a.order - b.order);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=ChangeSet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChangeSet.js","sourceRoot":"","sources":["../../../src/model/changes/ChangeSet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IClassOf } from "../../decorators/IClassOf.js";
|
|
2
|
+
import type EntityEvents from "./EntityEvents.js";
|
|
3
|
+
export default class ContextEvents {
|
|
4
|
+
private map;
|
|
5
|
+
for<T>(type: IClassOf<T>, fail?: boolean): IClassOf<EntityEvents<T>>;
|
|
6
|
+
register<T>(type: IClassOf<T>, events: IClassOf<EntityEvents<T>>): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=ContextEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextEvents.d.ts","sourceRoot":"","sources":["../../../src/model/events/ContextEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAIxD,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,aAAa;IAE9B,OAAO,CAAC,GAAG,CAAoD;IAExD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,UAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAWjE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAI1E"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NotSupportedError } from "../../query/parser/NotSupportedError.js";
|
|
2
|
+
export default class ContextEvents {
|
|
3
|
+
map = new Map();
|
|
4
|
+
for(type, fail = true) {
|
|
5
|
+
const typeClass = this.map.get(type);
|
|
6
|
+
if (!typeClass) {
|
|
7
|
+
if (fail) {
|
|
8
|
+
throw new NotSupportedError();
|
|
9
|
+
}
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return typeClass;
|
|
13
|
+
}
|
|
14
|
+
register(type, events) {
|
|
15
|
+
this.map.set(type, events);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=ContextEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextEvents.js","sourceRoot":"","sources":["../../../src/model/events/ContextEvents.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAI5E,MAAM,CAAC,OAAO,OAAO,aAAa;IAEtB,GAAG,GAA0C,IAAI,GAAG,EAAE,CAAC;IAExD,GAAG,CAAI,IAAiB,EAAE,IAAI,GAAG,IAAI;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,EAAE;YACZ,IAAI,IAAI,EAAE;gBACN,MAAM,IAAI,iBAAiB,EAAE,CAAC;aACjC;YACD,OAAO,IAAI,CAAC;SACf;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEM,QAAQ,CAAI,IAAiB,EAAE,MAAiC;QACnE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;CAEJ"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type EntityType from "../../entity-query/EntityType.js";
|
|
2
|
+
import type EntityContext from "../EntityContext.js";
|
|
3
|
+
import { IEntityQuery } from "../IFilterWithParameter.js";
|
|
4
|
+
import ChangeEntry from "../changes/ChangeEntry.js";
|
|
5
|
+
export declare class ForeignKeyFilter<T = any, TE = any> {
|
|
6
|
+
type: EntityType;
|
|
7
|
+
name: string;
|
|
8
|
+
fkName: string;
|
|
9
|
+
private events;
|
|
10
|
+
private context;
|
|
11
|
+
constructor(p: Partial<ForeignKeyFilter> & {
|
|
12
|
+
context: EntityContext;
|
|
13
|
+
events: EntityEvents<any>;
|
|
14
|
+
});
|
|
15
|
+
is<TR>(fx: (x: T) => TR): this is ForeignKeyFilter<T, TR> & boolean;
|
|
16
|
+
read(): IEntityQuery<TE>;
|
|
17
|
+
unfiltered(): IEntityQuery<TE>;
|
|
18
|
+
modify(): IEntityQuery<TE>;
|
|
19
|
+
}
|
|
20
|
+
export default abstract class EntityEvents<T> {
|
|
21
|
+
filter(query: IEntityQuery<T>): IEntityQuery<T>;
|
|
22
|
+
includeFilter(query: IEntityQuery<T>, type?: any, key?: string): IEntityQuery<T>;
|
|
23
|
+
modify(query: IEntityQuery<T>): IEntityQuery<T>;
|
|
24
|
+
delete(query: IEntityQuery<T>): IEntityQuery<T>;
|
|
25
|
+
beforeInsert(entity: T, entry: ChangeEntry): Promise<void>;
|
|
26
|
+
onForeignKeyFilter(filter: ForeignKeyFilter<T>): IEntityQuery<any>;
|
|
27
|
+
afterInsert(entity: T, entry: ChangeEntry): Promise<void>;
|
|
28
|
+
beforeUpdate(entity: T, entry: ChangeEntry): Promise<void>;
|
|
29
|
+
afterUpdate(entity: T, entry: ChangeEntry): Promise<void>;
|
|
30
|
+
beforeDelete(entity: T, entry: ChangeEntry): Promise<void>;
|
|
31
|
+
afterDelete(entity: T, entry: ChangeEntry): Promise<void>;
|
|
32
|
+
beforeJson(entity: T): T;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=EntityEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityEvents.d.ts","sourceRoot":"","sources":["../../../src/model/events/EntityEvents.ts"],"names":[],"mappings":"AAGA,OAAO,KAAM,UAAU,MAAM,kCAAkC,CAAC;AAChE,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,WAAW,MAAM,2BAA2B,CAAC;AAIpD,qBAAa,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG;IAEpC,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,OAAO,CAAgB;gBAEnB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,CAAA;KAAE;IAKzF,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO;IAKnE,IAAI,IAAI,YAAY,CAAC,EAAE,CAAC;IAKxB,UAAU,IAAI,YAAY,CAAC,EAAE,CAAC;IAI9B,MAAM,IAAI,YAAY,CAAC,EAAE,CAAC;CAIpC;AAGD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,YAAY,CAAC,CAAC;IAExC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAI7B,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAI9D,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAI7B,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAI7B,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW;IAI1C,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAI9C,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW;IAIzC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW;IAI1C,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW;IAIzC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW;IAI1C,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW;IAIzC,UAAU,CAAC,MAAM,EAAE,CAAC;CAIvB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import NameParser from "../../decorators/parser/NameParser.js";
|
|
2
|
+
const done = Promise.resolve();
|
|
3
|
+
export class ForeignKeyFilter {
|
|
4
|
+
type;
|
|
5
|
+
name;
|
|
6
|
+
fkName;
|
|
7
|
+
events;
|
|
8
|
+
context;
|
|
9
|
+
constructor(p) {
|
|
10
|
+
Object.setPrototypeOf(p, ForeignKeyFilter.prototype);
|
|
11
|
+
return p;
|
|
12
|
+
}
|
|
13
|
+
is(fx) {
|
|
14
|
+
const name = NameParser.parseMember(fx);
|
|
15
|
+
return name === this.fkName || name === this.name;
|
|
16
|
+
}
|
|
17
|
+
read() {
|
|
18
|
+
const read = this.context.query(this.type.typeClass);
|
|
19
|
+
return this.events.filter(read);
|
|
20
|
+
}
|
|
21
|
+
unfiltered() {
|
|
22
|
+
return this.context.query(this.type.typeClass);
|
|
23
|
+
}
|
|
24
|
+
modify() {
|
|
25
|
+
const read = this.context.query(this.type.typeClass);
|
|
26
|
+
return this.events.modify(read);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export default class EntityEvents {
|
|
30
|
+
filter(query) {
|
|
31
|
+
return query;
|
|
32
|
+
}
|
|
33
|
+
includeFilter(query, type, key) {
|
|
34
|
+
return this.filter(query);
|
|
35
|
+
}
|
|
36
|
+
modify(query) {
|
|
37
|
+
return this.filter(query);
|
|
38
|
+
}
|
|
39
|
+
delete(query) {
|
|
40
|
+
return this.modify(query);
|
|
41
|
+
}
|
|
42
|
+
beforeInsert(entity, entry) {
|
|
43
|
+
return done;
|
|
44
|
+
}
|
|
45
|
+
onForeignKeyFilter(filter) {
|
|
46
|
+
return filter.modify();
|
|
47
|
+
}
|
|
48
|
+
afterInsert(entity, entry) {
|
|
49
|
+
return done;
|
|
50
|
+
}
|
|
51
|
+
beforeUpdate(entity, entry) {
|
|
52
|
+
return done;
|
|
53
|
+
}
|
|
54
|
+
afterUpdate(entity, entry) {
|
|
55
|
+
return done;
|
|
56
|
+
}
|
|
57
|
+
beforeDelete(entity, entry) {
|
|
58
|
+
return done;
|
|
59
|
+
}
|
|
60
|
+
afterDelete(entity, entry) {
|
|
61
|
+
return done;
|
|
62
|
+
}
|
|
63
|
+
beforeJson(entity) {
|
|
64
|
+
return entity;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=EntityEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityEvents.js","sourceRoot":"","sources":["../../../src/model/events/EntityEvents.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAO/D,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAmB,CAAC;AAEhD,MAAM,OAAO,gBAAgB;IAElB,IAAI,CAAa;IACjB,IAAI,CAAS;IACb,MAAM,CAAS;IAEd,MAAM,CAAmB;IACzB,OAAO,CAAgB;IAE/B,YAAY,CAAoF;QAC5F,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACrD,OAAO,CAA4B,CAAC;IACxC,CAAC;IAEM,EAAE,CAAK,EAAgB;QAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACxC,OAAO,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;IACtD,CAAC;IAEM,IAAI;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAEM,UAAU;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;CACJ;AAGD,MAAM,CAAC,OAAO,OAAgB,YAAY;IAEtC,MAAM,CAAC,KAAsB;QACzB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,aAAa,CAAC,KAAsB,EAAE,IAAU,EAAE,GAAY;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,KAAsB;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,KAAsB;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,YAAY,CAAC,MAAS,EAAE,KAAkB;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB,CAAC,MAA2B;QAC1C,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,WAAW,CAAC,MAAS,EAAE,KAAkB;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,MAAS,EAAE,KAAkB;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,MAAS,EAAE,KAAkB;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,MAAS,EAAE,KAAkB;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,MAAS,EAAE,KAAkB;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,MAAS;QAChB,OAAO,MAAM,CAAC;IAClB,CAAC;CAEJ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type EntityType from "../../entity-query/EntityType.js";
|
|
2
|
+
export declare const identityMapSymbol: unique symbol;
|
|
3
|
+
export default class IdentityService {
|
|
4
|
+
static buildIdentity(model: EntityType, ...keys: any[]): string;
|
|
5
|
+
static getIdentity(entity: any): string;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=IdentityService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdentityService.d.ts","sourceRoot":"","sources":["../../../src/model/identity/IdentityService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,UAAU,MAAM,kCAAkC,CAAC;AAE/D,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,eAAe;WAElB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,GAAI,IAAI,EAAE,GAAG,EAAE;WAKhD,WAAW,CAAC,MAAM,KAAA;CAkBnC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import SchemaRegistry from "../../decorators/SchemaRegistry.js";
|
|
2
|
+
export const identityMapSymbol = Symbol("identityMapSymbol");
|
|
3
|
+
export default class IdentityService {
|
|
4
|
+
static buildIdentity(model, ...keys) {
|
|
5
|
+
const type = model.name;
|
|
6
|
+
return JSON.stringify({ type, keys });
|
|
7
|
+
}
|
|
8
|
+
static getIdentity(entity) {
|
|
9
|
+
const entityType = SchemaRegistry.model(Object.getPrototypeOf(entity).constructor);
|
|
10
|
+
const keys = [];
|
|
11
|
+
for (const iterator of entityType.keys) {
|
|
12
|
+
const key = entity[iterator.name];
|
|
13
|
+
if (key === void 0) {
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
keys.push(key);
|
|
17
|
+
}
|
|
18
|
+
if (keys.length !== entityType.keys.length) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const type = entityType.name;
|
|
22
|
+
return JSON.stringify({ type, keys });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=IdentityService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdentityService.js","sourceRoot":"","sources":["../../../src/model/identity/IdentityService.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,oCAAoC,CAAC;AAGhE,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,eAAe;IAEzB,MAAM,CAAC,aAAa,CAAC,KAAiB,EAAE,GAAI,IAAW;QAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,MAAM;QAC5B,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE;YACpC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClC,IAAG,GAAG,KAAK,KAAK,CAAC,EAAE;gBACf,MAAM;aACT;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClB;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE;YACxC,OAAO;SACV;QACD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAG,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;CAEJ"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type ChangeEntry from "../changes/ChangeEntry.js";
|
|
2
|
+
import type ChangeSet from "../changes/ChangeSet.js";
|
|
3
|
+
export default class RelationMapper {
|
|
4
|
+
private changeSet;
|
|
5
|
+
private identityMap;
|
|
6
|
+
private map;
|
|
7
|
+
constructor(changeSet: ChangeSet, identityMap?: Map<string, ChangeEntry>);
|
|
8
|
+
push(id: string, waiter: ChangeEntry): void;
|
|
9
|
+
fix(entry: ChangeEntry, nest?: boolean): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=RelationMapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelationMapper.d.ts","sourceRoot":"","sources":["../../../src/model/identity/RelationMapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAC;AAGrD,MAAM,CAAC,OAAO,OAAO,cAAc;IAK3B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IAJvB,OAAO,CAAC,GAAG,CAAyC;gBAGxC,SAAS,EAAE,SAAS,EACpB,WAAW,GAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAgC;IAKhF,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW;IASpC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,UAAO;CA8CtC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import IdentityService, { identityMapSymbol } from "./IdentityService.js";
|
|
2
|
+
export default class RelationMapper {
|
|
3
|
+
changeSet;
|
|
4
|
+
identityMap;
|
|
5
|
+
map = new Map();
|
|
6
|
+
constructor(changeSet, identityMap = changeSet[identityMapSymbol]) {
|
|
7
|
+
this.changeSet = changeSet;
|
|
8
|
+
this.identityMap = identityMap;
|
|
9
|
+
}
|
|
10
|
+
push(id, waiter) {
|
|
11
|
+
let queue = this.map.get(id);
|
|
12
|
+
if (!queue) {
|
|
13
|
+
queue = [];
|
|
14
|
+
this.map.set(id, queue);
|
|
15
|
+
}
|
|
16
|
+
queue.push(waiter);
|
|
17
|
+
}
|
|
18
|
+
fix(entry, nest = true) {
|
|
19
|
+
// find all parents...
|
|
20
|
+
const { type, entity } = entry;
|
|
21
|
+
for (const iterator of type.relations) {
|
|
22
|
+
if (iterator.isInverseRelation) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const fkColumn = iterator.fkColumn.name;
|
|
26
|
+
const fkValue = entity[fkColumn];
|
|
27
|
+
if (fkValue === void 0) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
// get from identity...
|
|
31
|
+
const id = IdentityService.buildIdentity(iterator.relatedEntity, fkValue);
|
|
32
|
+
const parent = this.identityMap.get(id);
|
|
33
|
+
if (!parent) {
|
|
34
|
+
let waiters = this.map.get(id);
|
|
35
|
+
if (!waiters) {
|
|
36
|
+
waiters = [];
|
|
37
|
+
this.map.set(id, waiters);
|
|
38
|
+
}
|
|
39
|
+
waiters.push(entry);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
entity[iterator.name] = parent;
|
|
43
|
+
const coll = (parent[iterator.relatedRelation.name] ??= []);
|
|
44
|
+
if (!coll.includes(entity)) {
|
|
45
|
+
coll.push(entity);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (!nest) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// see if anyone is waiting for us or not...
|
|
52
|
+
const identity = IdentityService.getIdentity(entry.entity);
|
|
53
|
+
const pending = this.map.get(identity);
|
|
54
|
+
if (pending && pending.length) {
|
|
55
|
+
for (const iterator of pending) {
|
|
56
|
+
this.fix(iterator, false);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=RelationMapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelationMapper.js","sourceRoot":"","sources":["../../../src/model/identity/RelationMapper.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,EAAE,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE1E,MAAM,CAAC,OAAO,OAAO,cAAc;IAKnB;IACA;IAJJ,GAAG,GAA+B,IAAI,GAAG,EAAE,CAAC;IAEpD,YACY,SAAoB,EACpB,cAAwC,SAAS,CAAC,iBAAiB,CAAC;QADpE,cAAS,GAAT,SAAS,CAAW;QACpB,gBAAW,GAAX,WAAW,CAAyD;IAGhF,CAAC;IAED,IAAI,CAAC,EAAU,EAAE,MAAmB;QAChC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,EAAE;YACR,KAAK,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;SAC3B;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,GAAG,CAAC,KAAkB,EAAE,IAAI,GAAG,IAAI;QAE/B,sBAAsB;QACtB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QAC/B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACnC,IAAI,QAAQ,CAAC,iBAAiB,EAAE;gBAC5B,SAAS;aACZ;YACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE;gBACpB,SAAS;aACZ;YACD,uBAAuB;YACvB,MAAM,EAAE,GAAG,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/B,IAAI,CAAC,OAAO,EAAE;oBACV,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;iBAC7B;gBACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpB,SAAS;aACZ;YACD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;YAE/B,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAU,CAAC;YACrE,IAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAC;gBACtB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACrB;SACJ;QAED,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;SACV;QAED,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;YAC3B,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE;gBAC5B,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;aAC7B;SACJ;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../src/model/symbols.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,eAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../src/model/symbols.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IEntityRelation } from "../../decorators/IColumn.js";
|
|
2
|
+
import { Expression } from "../../query/ast/Expressions.js";
|
|
3
|
+
import EntityContext from "../EntityContext.js";
|
|
4
|
+
import EntityQuery from "../EntityQuery.js";
|
|
5
|
+
import ChangeEntry from "../changes/ChangeEntry.js";
|
|
6
|
+
import EntityEvents from "../events/EntityEvents.js";
|
|
7
|
+
type KeyValueArray = [string, any][];
|
|
8
|
+
export default class VerificationSession {
|
|
9
|
+
private context;
|
|
10
|
+
private select;
|
|
11
|
+
private field;
|
|
12
|
+
constructor(context: EntityContext);
|
|
13
|
+
queueVerification(change: ChangeEntry, events: EntityEvents<any>): void;
|
|
14
|
+
queueEntityForeignKey(change: ChangeEntry, relation: IEntityRelation, value: any): void;
|
|
15
|
+
queueEntityKey(change: ChangeEntry, keys: KeyValueArray, events: EntityEvents<any>): void;
|
|
16
|
+
verifyAsync(): Promise<any>;
|
|
17
|
+
addError(query: EntityQuery, compare: Expression, error: string): void;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=VerificationSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VerificationSession.d.ts","sourceRoot":"","sources":["../../../src/model/verification/VerificationSession.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,OAAO,EAAqD,UAAU,EAAqG,MAAM,gCAAgC,CAAC;AAClN,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,WAAW,MAAM,2BAA2B,CAAC;AACpD,OAAO,YAAkC,MAAM,2BAA2B,CAAC;AAE3E,KAAK,aAAa,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAMxB,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO,CAAC,KAAK,CAA0B;gBAEnB,OAAO,EAAE,aAAa;IAK1C,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC;IA0ChE,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,KAAA;IA8B3E,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC;IAsB5E,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IA+BjC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM;CAsBlE"}
|