@warlock.js/cascade 1.0.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.
- package/README.md +97 -0
- package/cjs/aggregate/DeselectPipeline.d.ts +10 -0
- package/cjs/aggregate/DeselectPipeline.d.ts.map +1 -0
- package/cjs/aggregate/DeselectPipeline.js +17 -0
- package/cjs/aggregate/DeselectPipeline.js.map +1 -0
- package/cjs/aggregate/GeoNearPipeline.d.ts +34 -0
- package/cjs/aggregate/GeoNearPipeline.d.ts.map +1 -0
- package/cjs/aggregate/GeoNearPipeline.js +44 -0
- package/cjs/aggregate/GeoNearPipeline.js.map +1 -0
- package/cjs/aggregate/GroupByPipeline.d.ts +12 -0
- package/cjs/aggregate/GroupByPipeline.d.ts.map +1 -0
- package/cjs/aggregate/GroupByPipeline.js +28 -0
- package/cjs/aggregate/GroupByPipeline.js.map +1 -0
- package/cjs/aggregate/LimitPipeline.d.ts +10 -0
- package/cjs/aggregate/LimitPipeline.d.ts.map +1 -0
- package/cjs/aggregate/LimitPipeline.js +14 -0
- package/cjs/aggregate/LimitPipeline.js.map +1 -0
- package/cjs/aggregate/LookupPipeline.d.ts +19 -0
- package/cjs/aggregate/LookupPipeline.d.ts.map +1 -0
- package/cjs/aggregate/LookupPipeline.js +19 -0
- package/cjs/aggregate/LookupPipeline.js.map +1 -0
- package/cjs/aggregate/OrWherePipeline.d.ts +23 -0
- package/cjs/aggregate/OrWherePipeline.d.ts.map +1 -0
- package/cjs/aggregate/OrWherePipeline.js +42 -0
- package/cjs/aggregate/OrWherePipeline.js.map +1 -0
- package/cjs/aggregate/SelectPipeline.d.ts +10 -0
- package/cjs/aggregate/SelectPipeline.d.ts.map +1 -0
- package/cjs/aggregate/SelectPipeline.js +26 -0
- package/cjs/aggregate/SelectPipeline.js.map +1 -0
- package/cjs/aggregate/SkipPipeline.d.ts +10 -0
- package/cjs/aggregate/SkipPipeline.d.ts.map +1 -0
- package/cjs/aggregate/SkipPipeline.js +14 -0
- package/cjs/aggregate/SkipPipeline.js.map +1 -0
- package/cjs/aggregate/SortByPipeline.d.ts +10 -0
- package/cjs/aggregate/SortByPipeline.d.ts.map +1 -0
- package/cjs/aggregate/SortByPipeline.js +18 -0
- package/cjs/aggregate/SortByPipeline.js.map +1 -0
- package/cjs/aggregate/SortPipeline.d.ts +11 -0
- package/cjs/aggregate/SortPipeline.d.ts.map +1 -0
- package/cjs/aggregate/SortPipeline.js +18 -0
- package/cjs/aggregate/SortPipeline.js.map +1 -0
- package/cjs/aggregate/SortRandomPipeline.d.ts +10 -0
- package/cjs/aggregate/SortRandomPipeline.d.ts.map +1 -0
- package/cjs/aggregate/SortRandomPipeline.js +16 -0
- package/cjs/aggregate/SortRandomPipeline.js.map +1 -0
- package/cjs/aggregate/UnwindPipeline.d.ts +14 -0
- package/cjs/aggregate/UnwindPipeline.d.ts.map +1 -0
- package/cjs/aggregate/UnwindPipeline.js +19 -0
- package/cjs/aggregate/UnwindPipeline.js.map +1 -0
- package/cjs/aggregate/WhereExpression.d.ts +17 -0
- package/cjs/aggregate/WhereExpression.d.ts.map +1 -0
- package/cjs/aggregate/WhereExpression.js +149 -0
- package/cjs/aggregate/WhereExpression.js.map +1 -0
- package/cjs/aggregate/WhereExpressionPipeline.d.ts +10 -0
- package/cjs/aggregate/WhereExpressionPipeline.d.ts.map +1 -0
- package/cjs/aggregate/WhereExpressionPipeline.js +15 -0
- package/cjs/aggregate/WhereExpressionPipeline.js.map +1 -0
- package/cjs/aggregate/WherePipeline.d.ts +13 -0
- package/cjs/aggregate/WherePipeline.d.ts.map +1 -0
- package/cjs/aggregate/WherePipeline.js +12 -0
- package/cjs/aggregate/WherePipeline.js.map +1 -0
- package/cjs/aggregate/aggregate.d.ts +346 -0
- package/cjs/aggregate/aggregate.d.ts.map +1 -0
- package/cjs/aggregate/aggregate.js +656 -0
- package/cjs/aggregate/aggregate.js.map +1 -0
- package/cjs/aggregate/expressions.d.ts +361 -0
- package/cjs/aggregate/expressions.d.ts.map +1 -0
- package/cjs/aggregate/expressions.js +536 -0
- package/cjs/aggregate/expressions.js.map +1 -0
- package/cjs/aggregate/index.d.ts +21 -0
- package/cjs/aggregate/index.d.ts.map +1 -0
- package/cjs/aggregate/parsePipelines.d.ts +5 -0
- package/cjs/aggregate/parsePipelines.d.ts.map +1 -0
- package/cjs/aggregate/parsePipelines.js +6 -0
- package/cjs/aggregate/parsePipelines.js.map +1 -0
- package/cjs/aggregate/pipeline.d.ts +31 -0
- package/cjs/aggregate/pipeline.d.ts.map +1 -0
- package/cjs/aggregate/pipeline.js +42 -0
- package/cjs/aggregate/pipeline.js.map +1 -0
- package/cjs/aggregate/types.d.ts +8 -0
- package/cjs/aggregate/types.d.ts.map +1 -0
- package/cjs/aggregate/types.js +31 -0
- package/cjs/aggregate/types.js.map +1 -0
- package/cjs/blueprint/blueprint.d.ts +154 -0
- package/cjs/blueprint/blueprint.d.ts.map +1 -0
- package/cjs/blueprint/blueprint.js +328 -0
- package/cjs/blueprint/blueprint.js.map +1 -0
- package/cjs/blueprint/index.d.ts +3 -0
- package/cjs/blueprint/index.d.ts.map +1 -0
- package/cjs/blueprint/model-blueprint.d.ts +15 -0
- package/cjs/blueprint/model-blueprint.d.ts.map +1 -0
- package/cjs/blueprint/model-blueprint.js +16 -0
- package/cjs/blueprint/model-blueprint.js.map +1 -0
- package/cjs/casts/arrayOf.d.ts +5 -0
- package/cjs/casts/arrayOf.d.ts.map +1 -0
- package/cjs/casts/arrayOf.js +18 -0
- package/cjs/casts/arrayOf.js.map +1 -0
- package/cjs/casts/cast-email.d.ts +2 -0
- package/cjs/casts/cast-email.d.ts.map +1 -0
- package/cjs/casts/cast-email.js +5 -0
- package/cjs/casts/cast-email.js.map +1 -0
- package/cjs/casts/castModel.d.ts +3 -0
- package/cjs/casts/castModel.d.ts.map +1 -0
- package/cjs/casts/castModel.js +49 -0
- package/cjs/casts/castModel.js.map +1 -0
- package/cjs/casts/expiresAfter.d.ts +3 -0
- package/cjs/casts/expiresAfter.d.ts.map +1 -0
- package/cjs/casts/expiresAfter.js +5 -0
- package/cjs/casts/expiresAfter.js.map +1 -0
- package/cjs/casts/index.d.ts +9 -0
- package/cjs/casts/index.d.ts.map +1 -0
- package/cjs/casts/oneOf.d.ts +3 -0
- package/cjs/casts/oneOf.d.ts.map +1 -0
- package/cjs/casts/oneOf.js +22 -0
- package/cjs/casts/oneOf.js.map +1 -0
- package/cjs/casts/random-string.d.ts +2 -0
- package/cjs/casts/random-string.d.ts.map +1 -0
- package/cjs/casts/random-string.js +5 -0
- package/cjs/casts/random-string.js.map +1 -0
- package/cjs/casts/randomInteger.d.ts +2 -0
- package/cjs/casts/randomInteger.d.ts.map +1 -0
- package/cjs/casts/randomInteger.js +7 -0
- package/cjs/casts/randomInteger.js.map +1 -0
- package/cjs/casts/shapedArray.d.ts +26 -0
- package/cjs/casts/shapedArray.d.ts.map +1 -0
- package/cjs/casts/shapedArray.js +100 -0
- package/cjs/casts/shapedArray.js.map +1 -0
- package/cjs/config.d.ts +4 -0
- package/cjs/config.d.ts.map +1 -0
- package/cjs/config.js +10 -0
- package/cjs/config.js.map +1 -0
- package/cjs/connection.d.ts +44 -0
- package/cjs/connection.d.ts.map +1 -0
- package/cjs/connection.js +98 -0
- package/cjs/connection.js.map +1 -0
- package/cjs/console/db-indexes-command.d.ts +3 -0
- package/cjs/console/db-indexes-command.d.ts.map +1 -0
- package/cjs/console/db-indexes-command.js +18 -0
- package/cjs/console/db-indexes-command.js.map +1 -0
- package/cjs/console/index.d.ts +4 -0
- package/cjs/console/index.d.ts.map +1 -0
- package/cjs/console/migrate-command.d.ts +3 -0
- package/cjs/console/migrate-command.d.ts.map +1 -0
- package/cjs/console/migrate-command.js +14 -0
- package/cjs/console/migrate-command.js.map +1 -0
- package/cjs/console/register-blueprint-command.d.ts +4 -0
- package/cjs/console/register-blueprint-command.d.ts.map +1 -0
- package/cjs/console/register-blueprint-command.js +27 -0
- package/cjs/console/register-blueprint-command.js.map +1 -0
- package/cjs/database.d.ts +49 -0
- package/cjs/database.d.ts.map +1 -0
- package/cjs/database.js +85 -0
- package/cjs/database.js.map +1 -0
- package/cjs/index.d.ts +14 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -0
- package/cjs/migrate.d.ts +8 -0
- package/cjs/migrate.d.ts.map +1 -0
- package/cjs/migrate.js +89 -0
- package/cjs/migrate.js.map +1 -0
- package/cjs/model/ModelAggregate.d.ts +71 -0
- package/cjs/model/ModelAggregate.d.ts.map +1 -0
- package/cjs/model/ModelAggregate.js +147 -0
- package/cjs/model/ModelAggregate.js.map +1 -0
- package/cjs/model/ModelSync.d.ts +74 -0
- package/cjs/model/ModelSync.d.ts.map +1 -0
- package/cjs/model/ModelSync.js +215 -0
- package/cjs/model/ModelSync.js.map +1 -0
- package/cjs/model/RelationshipWithMany.d.ts +29 -0
- package/cjs/model/RelationshipWithMany.d.ts.map +1 -0
- package/cjs/model/RelationshipWithMany.js +52 -0
- package/cjs/model/RelationshipWithMany.js.map +1 -0
- package/cjs/model/base-model.d.ts +148 -0
- package/cjs/model/base-model.d.ts.map +1 -0
- package/cjs/model/base-model.js +212 -0
- package/cjs/model/base-model.js.map +1 -0
- package/cjs/model/crud-model.d.ts +117 -0
- package/cjs/model/crud-model.d.ts.map +1 -0
- package/cjs/model/crud-model.js +346 -0
- package/cjs/model/crud-model.js.map +1 -0
- package/cjs/model/index.d.ts +11 -0
- package/cjs/model/index.d.ts.map +1 -0
- package/cjs/model/joinable.d.ts +86 -0
- package/cjs/model/joinable.d.ts.map +1 -0
- package/cjs/model/joinable.js +155 -0
- package/cjs/model/joinable.js.map +1 -0
- package/cjs/model/master-mind.d.ts +44 -0
- package/cjs/model/master-mind.d.ts.map +1 -0
- package/cjs/model/master-mind.js +129 -0
- package/cjs/model/master-mind.js.map +1 -0
- package/cjs/model/migration-office.d.ts +33 -0
- package/cjs/model/migration-office.d.ts.map +1 -0
- package/cjs/model/migration-office.js +55 -0
- package/cjs/model/migration-office.js.map +1 -0
- package/cjs/model/model-events.d.ts +57 -0
- package/cjs/model/model-events.d.ts.map +1 -0
- package/cjs/model/model-events.js +102 -0
- package/cjs/model/model-events.js.map +1 -0
- package/cjs/model/model.d.ts +323 -0
- package/cjs/model/model.d.ts.map +1 -0
- package/cjs/model/model.js +843 -0
- package/cjs/model/model.js.map +1 -0
- package/cjs/model/relationships.d.ts +69 -0
- package/cjs/model/relationships.d.ts.map +1 -0
- package/cjs/model/relationships.js +144 -0
- package/cjs/model/relationships.js.map +1 -0
- package/cjs/model/types.d.ts +113 -0
- package/cjs/model/types.d.ts.map +1 -0
- package/cjs/model/types.js +11 -0
- package/cjs/model/types.js.map +1 -0
- package/cjs/models/Log.d.ts +12 -0
- package/cjs/models/Log.d.ts.map +1 -0
- package/cjs/models/Log.js +16 -0
- package/cjs/models/Log.js.map +1 -0
- package/cjs/models/index.d.ts +2 -0
- package/cjs/models/index.d.ts.map +1 -0
- package/cjs/query/index.d.ts +2 -0
- package/cjs/query/index.d.ts.map +1 -0
- package/cjs/query/query.d.ts +228 -0
- package/cjs/query/query.d.ts.map +1 -0
- package/cjs/query/query.js +675 -0
- package/cjs/query/query.js.map +1 -0
- package/cjs/query/types.d.ts +56 -0
- package/cjs/query/types.d.ts.map +1 -0
- package/cjs/types.d.ts +46 -0
- package/cjs/types.d.ts.map +1 -0
- package/cjs/utils/DatabaseLog.d.ts +25 -0
- package/cjs/utils/DatabaseLog.d.ts.map +1 -0
- package/cjs/utils/DatabaseLog.js +41 -0
- package/cjs/utils/DatabaseLog.js.map +1 -0
- package/cjs/utils/connectToDatabase.d.ts +3 -0
- package/cjs/utils/connectToDatabase.d.ts.map +1 -0
- package/cjs/utils/connectToDatabase.js +3 -0
- package/cjs/utils/connectToDatabase.js.map +1 -0
- package/cjs/utils/dropAllDatabaseIndexes.d.ts +2 -0
- package/cjs/utils/dropAllDatabaseIndexes.d.ts.map +1 -0
- package/cjs/utils/dropAllDatabaseIndexes.js +10 -0
- package/cjs/utils/dropAllDatabaseIndexes.js.map +1 -0
- package/cjs/utils/index.d.ts +6 -0
- package/cjs/utils/index.d.ts.map +1 -0
- package/cjs/utils/joinable-proxy.d.ts +3 -0
- package/cjs/utils/joinable-proxy.d.ts.map +1 -0
- package/cjs/utils/joinable-proxy.js +14 -0
- package/cjs/utils/joinable-proxy.js.map +1 -0
- package/cjs/utils/listDatabaseIndexes.d.ts +4 -0
- package/cjs/utils/listDatabaseIndexes.d.ts.map +1 -0
- package/cjs/utils/listDatabaseIndexes.js +101 -0
- package/cjs/utils/listDatabaseIndexes.js.map +1 -0
- package/cjs/utils/onceConnected.d.ts +2 -0
- package/cjs/utils/onceConnected.d.ts.map +1 -0
- package/cjs/utils/onceConnected.js +8 -0
- package/cjs/utils/onceConnected.js.map +1 -0
- package/esm/aggregate/DeselectPipeline.d.ts +10 -0
- package/esm/aggregate/DeselectPipeline.d.ts.map +1 -0
- package/esm/aggregate/DeselectPipeline.js +17 -0
- package/esm/aggregate/DeselectPipeline.js.map +1 -0
- package/esm/aggregate/GeoNearPipeline.d.ts +34 -0
- package/esm/aggregate/GeoNearPipeline.d.ts.map +1 -0
- package/esm/aggregate/GeoNearPipeline.js +44 -0
- package/esm/aggregate/GeoNearPipeline.js.map +1 -0
- package/esm/aggregate/GroupByPipeline.d.ts +12 -0
- package/esm/aggregate/GroupByPipeline.d.ts.map +1 -0
- package/esm/aggregate/GroupByPipeline.js +28 -0
- package/esm/aggregate/GroupByPipeline.js.map +1 -0
- package/esm/aggregate/LimitPipeline.d.ts +10 -0
- package/esm/aggregate/LimitPipeline.d.ts.map +1 -0
- package/esm/aggregate/LimitPipeline.js +14 -0
- package/esm/aggregate/LimitPipeline.js.map +1 -0
- package/esm/aggregate/LookupPipeline.d.ts +19 -0
- package/esm/aggregate/LookupPipeline.d.ts.map +1 -0
- package/esm/aggregate/LookupPipeline.js +19 -0
- package/esm/aggregate/LookupPipeline.js.map +1 -0
- package/esm/aggregate/OrWherePipeline.d.ts +23 -0
- package/esm/aggregate/OrWherePipeline.d.ts.map +1 -0
- package/esm/aggregate/OrWherePipeline.js +42 -0
- package/esm/aggregate/OrWherePipeline.js.map +1 -0
- package/esm/aggregate/SelectPipeline.d.ts +10 -0
- package/esm/aggregate/SelectPipeline.d.ts.map +1 -0
- package/esm/aggregate/SelectPipeline.js +26 -0
- package/esm/aggregate/SelectPipeline.js.map +1 -0
- package/esm/aggregate/SkipPipeline.d.ts +10 -0
- package/esm/aggregate/SkipPipeline.d.ts.map +1 -0
- package/esm/aggregate/SkipPipeline.js +14 -0
- package/esm/aggregate/SkipPipeline.js.map +1 -0
- package/esm/aggregate/SortByPipeline.d.ts +10 -0
- package/esm/aggregate/SortByPipeline.d.ts.map +1 -0
- package/esm/aggregate/SortByPipeline.js +18 -0
- package/esm/aggregate/SortByPipeline.js.map +1 -0
- package/esm/aggregate/SortPipeline.d.ts +11 -0
- package/esm/aggregate/SortPipeline.d.ts.map +1 -0
- package/esm/aggregate/SortPipeline.js +18 -0
- package/esm/aggregate/SortPipeline.js.map +1 -0
- package/esm/aggregate/SortRandomPipeline.d.ts +10 -0
- package/esm/aggregate/SortRandomPipeline.d.ts.map +1 -0
- package/esm/aggregate/SortRandomPipeline.js +16 -0
- package/esm/aggregate/SortRandomPipeline.js.map +1 -0
- package/esm/aggregate/UnwindPipeline.d.ts +14 -0
- package/esm/aggregate/UnwindPipeline.d.ts.map +1 -0
- package/esm/aggregate/UnwindPipeline.js +19 -0
- package/esm/aggregate/UnwindPipeline.js.map +1 -0
- package/esm/aggregate/WhereExpression.d.ts +17 -0
- package/esm/aggregate/WhereExpression.d.ts.map +1 -0
- package/esm/aggregate/WhereExpression.js +149 -0
- package/esm/aggregate/WhereExpression.js.map +1 -0
- package/esm/aggregate/WhereExpressionPipeline.d.ts +10 -0
- package/esm/aggregate/WhereExpressionPipeline.d.ts.map +1 -0
- package/esm/aggregate/WhereExpressionPipeline.js +15 -0
- package/esm/aggregate/WhereExpressionPipeline.js.map +1 -0
- package/esm/aggregate/WherePipeline.d.ts +13 -0
- package/esm/aggregate/WherePipeline.d.ts.map +1 -0
- package/esm/aggregate/WherePipeline.js +12 -0
- package/esm/aggregate/WherePipeline.js.map +1 -0
- package/esm/aggregate/aggregate.d.ts +346 -0
- package/esm/aggregate/aggregate.d.ts.map +1 -0
- package/esm/aggregate/aggregate.js +656 -0
- package/esm/aggregate/aggregate.js.map +1 -0
- package/esm/aggregate/expressions.d.ts +361 -0
- package/esm/aggregate/expressions.d.ts.map +1 -0
- package/esm/aggregate/expressions.js +536 -0
- package/esm/aggregate/expressions.js.map +1 -0
- package/esm/aggregate/index.d.ts +21 -0
- package/esm/aggregate/index.d.ts.map +1 -0
- package/esm/aggregate/parsePipelines.d.ts +5 -0
- package/esm/aggregate/parsePipelines.d.ts.map +1 -0
- package/esm/aggregate/parsePipelines.js +6 -0
- package/esm/aggregate/parsePipelines.js.map +1 -0
- package/esm/aggregate/pipeline.d.ts +31 -0
- package/esm/aggregate/pipeline.d.ts.map +1 -0
- package/esm/aggregate/pipeline.js +42 -0
- package/esm/aggregate/pipeline.js.map +1 -0
- package/esm/aggregate/types.d.ts +8 -0
- package/esm/aggregate/types.d.ts.map +1 -0
- package/esm/aggregate/types.js +31 -0
- package/esm/aggregate/types.js.map +1 -0
- package/esm/blueprint/blueprint.d.ts +154 -0
- package/esm/blueprint/blueprint.d.ts.map +1 -0
- package/esm/blueprint/blueprint.js +328 -0
- package/esm/blueprint/blueprint.js.map +1 -0
- package/esm/blueprint/index.d.ts +3 -0
- package/esm/blueprint/index.d.ts.map +1 -0
- package/esm/blueprint/model-blueprint.d.ts +15 -0
- package/esm/blueprint/model-blueprint.d.ts.map +1 -0
- package/esm/blueprint/model-blueprint.js +16 -0
- package/esm/blueprint/model-blueprint.js.map +1 -0
- package/esm/casts/arrayOf.d.ts +5 -0
- package/esm/casts/arrayOf.d.ts.map +1 -0
- package/esm/casts/arrayOf.js +18 -0
- package/esm/casts/arrayOf.js.map +1 -0
- package/esm/casts/cast-email.d.ts +2 -0
- package/esm/casts/cast-email.d.ts.map +1 -0
- package/esm/casts/cast-email.js +5 -0
- package/esm/casts/cast-email.js.map +1 -0
- package/esm/casts/castModel.d.ts +3 -0
- package/esm/casts/castModel.d.ts.map +1 -0
- package/esm/casts/castModel.js +49 -0
- package/esm/casts/castModel.js.map +1 -0
- package/esm/casts/expiresAfter.d.ts +3 -0
- package/esm/casts/expiresAfter.d.ts.map +1 -0
- package/esm/casts/expiresAfter.js +5 -0
- package/esm/casts/expiresAfter.js.map +1 -0
- package/esm/casts/index.d.ts +9 -0
- package/esm/casts/index.d.ts.map +1 -0
- package/esm/casts/oneOf.d.ts +3 -0
- package/esm/casts/oneOf.d.ts.map +1 -0
- package/esm/casts/oneOf.js +22 -0
- package/esm/casts/oneOf.js.map +1 -0
- package/esm/casts/random-string.d.ts +2 -0
- package/esm/casts/random-string.d.ts.map +1 -0
- package/esm/casts/random-string.js +5 -0
- package/esm/casts/random-string.js.map +1 -0
- package/esm/casts/randomInteger.d.ts +2 -0
- package/esm/casts/randomInteger.d.ts.map +1 -0
- package/esm/casts/randomInteger.js +7 -0
- package/esm/casts/randomInteger.js.map +1 -0
- package/esm/casts/shapedArray.d.ts +26 -0
- package/esm/casts/shapedArray.d.ts.map +1 -0
- package/esm/casts/shapedArray.js +100 -0
- package/esm/casts/shapedArray.js.map +1 -0
- package/esm/config.d.ts +4 -0
- package/esm/config.d.ts.map +1 -0
- package/esm/config.js +10 -0
- package/esm/config.js.map +1 -0
- package/esm/connection.d.ts +44 -0
- package/esm/connection.d.ts.map +1 -0
- package/esm/connection.js +98 -0
- package/esm/connection.js.map +1 -0
- package/esm/console/db-indexes-command.d.ts +3 -0
- package/esm/console/db-indexes-command.d.ts.map +1 -0
- package/esm/console/db-indexes-command.js +18 -0
- package/esm/console/db-indexes-command.js.map +1 -0
- package/esm/console/index.d.ts +4 -0
- package/esm/console/index.d.ts.map +1 -0
- package/esm/console/migrate-command.d.ts +3 -0
- package/esm/console/migrate-command.d.ts.map +1 -0
- package/esm/console/migrate-command.js +14 -0
- package/esm/console/migrate-command.js.map +1 -0
- package/esm/console/register-blueprint-command.d.ts +4 -0
- package/esm/console/register-blueprint-command.d.ts.map +1 -0
- package/esm/console/register-blueprint-command.js +27 -0
- package/esm/console/register-blueprint-command.js.map +1 -0
- package/esm/database.d.ts +49 -0
- package/esm/database.d.ts.map +1 -0
- package/esm/database.js +85 -0
- package/esm/database.js.map +1 -0
- package/esm/index.d.ts +14 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -0
- package/esm/migrate.d.ts +8 -0
- package/esm/migrate.d.ts.map +1 -0
- package/esm/migrate.js +89 -0
- package/esm/migrate.js.map +1 -0
- package/esm/model/ModelAggregate.d.ts +71 -0
- package/esm/model/ModelAggregate.d.ts.map +1 -0
- package/esm/model/ModelAggregate.js +147 -0
- package/esm/model/ModelAggregate.js.map +1 -0
- package/esm/model/ModelSync.d.ts +74 -0
- package/esm/model/ModelSync.d.ts.map +1 -0
- package/esm/model/ModelSync.js +215 -0
- package/esm/model/ModelSync.js.map +1 -0
- package/esm/model/RelationshipWithMany.d.ts +29 -0
- package/esm/model/RelationshipWithMany.d.ts.map +1 -0
- package/esm/model/RelationshipWithMany.js +52 -0
- package/esm/model/RelationshipWithMany.js.map +1 -0
- package/esm/model/base-model.d.ts +148 -0
- package/esm/model/base-model.d.ts.map +1 -0
- package/esm/model/base-model.js +212 -0
- package/esm/model/base-model.js.map +1 -0
- package/esm/model/crud-model.d.ts +117 -0
- package/esm/model/crud-model.d.ts.map +1 -0
- package/esm/model/crud-model.js +346 -0
- package/esm/model/crud-model.js.map +1 -0
- package/esm/model/index.d.ts +11 -0
- package/esm/model/index.d.ts.map +1 -0
- package/esm/model/joinable.d.ts +86 -0
- package/esm/model/joinable.d.ts.map +1 -0
- package/esm/model/joinable.js +155 -0
- package/esm/model/joinable.js.map +1 -0
- package/esm/model/master-mind.d.ts +44 -0
- package/esm/model/master-mind.d.ts.map +1 -0
- package/esm/model/master-mind.js +129 -0
- package/esm/model/master-mind.js.map +1 -0
- package/esm/model/migration-office.d.ts +33 -0
- package/esm/model/migration-office.d.ts.map +1 -0
- package/esm/model/migration-office.js +55 -0
- package/esm/model/migration-office.js.map +1 -0
- package/esm/model/model-events.d.ts +57 -0
- package/esm/model/model-events.d.ts.map +1 -0
- package/esm/model/model-events.js +102 -0
- package/esm/model/model-events.js.map +1 -0
- package/esm/model/model.d.ts +323 -0
- package/esm/model/model.d.ts.map +1 -0
- package/esm/model/model.js +843 -0
- package/esm/model/model.js.map +1 -0
- package/esm/model/relationships.d.ts +69 -0
- package/esm/model/relationships.d.ts.map +1 -0
- package/esm/model/relationships.js +144 -0
- package/esm/model/relationships.js.map +1 -0
- package/esm/model/types.d.ts +113 -0
- package/esm/model/types.d.ts.map +1 -0
- package/esm/model/types.js +11 -0
- package/esm/model/types.js.map +1 -0
- package/esm/models/Log.d.ts +12 -0
- package/esm/models/Log.d.ts.map +1 -0
- package/esm/models/Log.js +16 -0
- package/esm/models/Log.js.map +1 -0
- package/esm/models/index.d.ts +2 -0
- package/esm/models/index.d.ts.map +1 -0
- package/esm/query/index.d.ts +2 -0
- package/esm/query/index.d.ts.map +1 -0
- package/esm/query/query.d.ts +228 -0
- package/esm/query/query.d.ts.map +1 -0
- package/esm/query/query.js +675 -0
- package/esm/query/query.js.map +1 -0
- package/esm/query/types.d.ts +56 -0
- package/esm/query/types.d.ts.map +1 -0
- package/esm/types.d.ts +46 -0
- package/esm/types.d.ts.map +1 -0
- package/esm/utils/DatabaseLog.d.ts +25 -0
- package/esm/utils/DatabaseLog.d.ts.map +1 -0
- package/esm/utils/DatabaseLog.js +41 -0
- package/esm/utils/DatabaseLog.js.map +1 -0
- package/esm/utils/connectToDatabase.d.ts +3 -0
- package/esm/utils/connectToDatabase.d.ts.map +1 -0
- package/esm/utils/connectToDatabase.js +3 -0
- package/esm/utils/connectToDatabase.js.map +1 -0
- package/esm/utils/dropAllDatabaseIndexes.d.ts +2 -0
- package/esm/utils/dropAllDatabaseIndexes.d.ts.map +1 -0
- package/esm/utils/dropAllDatabaseIndexes.js +10 -0
- package/esm/utils/dropAllDatabaseIndexes.js.map +1 -0
- package/esm/utils/index.d.ts +6 -0
- package/esm/utils/index.d.ts.map +1 -0
- package/esm/utils/joinable-proxy.d.ts +3 -0
- package/esm/utils/joinable-proxy.d.ts.map +1 -0
- package/esm/utils/joinable-proxy.js +14 -0
- package/esm/utils/joinable-proxy.js.map +1 -0
- package/esm/utils/listDatabaseIndexes.d.ts +4 -0
- package/esm/utils/listDatabaseIndexes.d.ts.map +1 -0
- package/esm/utils/listDatabaseIndexes.js +101 -0
- package/esm/utils/listDatabaseIndexes.js.map +1 -0
- package/esm/utils/onceConnected.d.ts +2 -0
- package/esm/utils/onceConnected.d.ts.map +1 -0
- package/esm/utils/onceConnected.js +8 -0
- package/esm/utils/onceConnected.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import {areEqual}from'@mongez/reinforcements';class ModelSync {
|
|
2
|
+
model;
|
|
3
|
+
columns;
|
|
4
|
+
embedMethod;
|
|
5
|
+
/**
|
|
6
|
+
* What do do when model is deleted
|
|
7
|
+
*/
|
|
8
|
+
whenDelete = "unset";
|
|
9
|
+
/**
|
|
10
|
+
* Embed on create
|
|
11
|
+
*/
|
|
12
|
+
embedOnCreate = "";
|
|
13
|
+
/**
|
|
14
|
+
* Sync mode
|
|
15
|
+
*/
|
|
16
|
+
syncMode = "single";
|
|
17
|
+
/**
|
|
18
|
+
* Query runner using `when` method
|
|
19
|
+
*/
|
|
20
|
+
queryRunner;
|
|
21
|
+
/**
|
|
22
|
+
* Define when should the synced model starts to update when any of the given columns is updated in the original model
|
|
23
|
+
*/
|
|
24
|
+
_updateWhenChange;
|
|
25
|
+
/**
|
|
26
|
+
* Constructor
|
|
27
|
+
*/
|
|
28
|
+
constructor(model, columns, embedMethod = "embedData") {
|
|
29
|
+
this.model = model;
|
|
30
|
+
this.columns = columns;
|
|
31
|
+
this.embedMethod = embedMethod;
|
|
32
|
+
//
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Define when should the synced model starts to update when any of the given columns is updated in the original model
|
|
36
|
+
*/
|
|
37
|
+
updateWhenChange(columns) {
|
|
38
|
+
this._updateWhenChange = Array.isArray(columns) ? columns : [columns];
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Set query runner
|
|
43
|
+
*/
|
|
44
|
+
where(queryRunner) {
|
|
45
|
+
this.queryRunner = queryRunner;
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Unset on delete
|
|
50
|
+
*/
|
|
51
|
+
unsetOnDelete() {
|
|
52
|
+
this.whenDelete = "unset";
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Ignore on delete
|
|
57
|
+
*/
|
|
58
|
+
ignoreOnDelete() {
|
|
59
|
+
this.whenDelete = "ignore";
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Remove all matched documents on delete to be fully deleted
|
|
64
|
+
*/
|
|
65
|
+
removeOnDelete() {
|
|
66
|
+
this.whenDelete = "remove";
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Embed on create to injected model one the original model is created
|
|
71
|
+
*/
|
|
72
|
+
embedOnCreateFrom(column) {
|
|
73
|
+
this.embedOnCreate = column;
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Mark as many sync
|
|
78
|
+
*/
|
|
79
|
+
syncMany() {
|
|
80
|
+
this.syncMode = "many";
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Start syncing the model
|
|
85
|
+
*/
|
|
86
|
+
async sync(model, saveMode, oldModel) {
|
|
87
|
+
if (saveMode === "update") {
|
|
88
|
+
return this.syncUpdate(model, oldModel);
|
|
89
|
+
}
|
|
90
|
+
if (!this.embedOnCreate)
|
|
91
|
+
return;
|
|
92
|
+
const columns = Array.isArray(this.columns) ? this.columns : [this.columns];
|
|
93
|
+
const syncedModel = await this.model.first({
|
|
94
|
+
id: model.get(this.embedOnCreate + ".id"),
|
|
95
|
+
});
|
|
96
|
+
if (!syncedModel)
|
|
97
|
+
return;
|
|
98
|
+
try {
|
|
99
|
+
const modelData = typeof model[this.embedMethod] !== "undefined"
|
|
100
|
+
? model[this.embedMethod]
|
|
101
|
+
: model.data;
|
|
102
|
+
for (const column of columns) {
|
|
103
|
+
if (this.syncMode === "single") {
|
|
104
|
+
syncedModel.set(column, modelData);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
syncedModel.associate(column, modelData);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
await syncedModel.save();
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
console.log("Error in Sync", error.message);
|
|
114
|
+
console.log(model);
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Sync update
|
|
120
|
+
*/
|
|
121
|
+
async syncUpdate(model, oldModel) {
|
|
122
|
+
if (this._updateWhenChange && oldModel) {
|
|
123
|
+
// now check if any of the columns has changed
|
|
124
|
+
// if all of them are the same, then we don't need to update
|
|
125
|
+
if (this._updateWhenChange.every(column => areEqual(model.get(column), oldModel.get(column)))) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const columns = Array.isArray(this.columns) ? this.columns : [this.columns];
|
|
130
|
+
const whereOptions = {};
|
|
131
|
+
for (const column of columns) {
|
|
132
|
+
whereOptions[column + ".id"] = model.id;
|
|
133
|
+
}
|
|
134
|
+
const query = this.model.aggregate().orWhere(whereOptions);
|
|
135
|
+
if (this.queryRunner) {
|
|
136
|
+
this.queryRunner(query);
|
|
137
|
+
}
|
|
138
|
+
const models = await query.get();
|
|
139
|
+
try {
|
|
140
|
+
const modelData = typeof model[this.embedMethod] !== "undefined"
|
|
141
|
+
? model[this.embedMethod]
|
|
142
|
+
: model.embeddedData;
|
|
143
|
+
for (const updatingModel of models) {
|
|
144
|
+
for (const column of columns) {
|
|
145
|
+
if (this.syncMode === "single") {
|
|
146
|
+
updatingModel.set(column, modelData);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
if (column.includes(".")) {
|
|
150
|
+
// if column includes dot, then it's a nested column
|
|
151
|
+
// so we need to get the top document key as it should be an array.
|
|
152
|
+
const [topKey, nestedKey] = column.split(".");
|
|
153
|
+
const documentsList = updatingModel.get(topKey) || [];
|
|
154
|
+
// as we're updating, so there should be at least one document
|
|
155
|
+
if (documentsList?.length === 0)
|
|
156
|
+
continue;
|
|
157
|
+
// now we need to find the document that has the same id as the model we're updating
|
|
158
|
+
const documentIndex = documentsList.findIndex((document) => document[nestedKey]?.id === model.get("id"));
|
|
159
|
+
// if document is not found, then we don't need to update
|
|
160
|
+
if (documentIndex === -1)
|
|
161
|
+
continue;
|
|
162
|
+
// now we need to update the document
|
|
163
|
+
documentsList[documentIndex][nestedKey] = modelData;
|
|
164
|
+
// and finally set the updated documents list
|
|
165
|
+
updatingModel.set(topKey, documentsList);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
// otherwise, it is a direct column update so we can just set it
|
|
169
|
+
updatingModel.reassociate(column, modelData);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// disable casting so we can save the data as it is
|
|
174
|
+
await updatingModel.save(undefined, {
|
|
175
|
+
cast: false,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
console.log("Error in Sync", error.message);
|
|
181
|
+
console.log(model);
|
|
182
|
+
throw error;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Sync model destruction
|
|
187
|
+
*/
|
|
188
|
+
async syncDestruction(model) {
|
|
189
|
+
const columns = Array.isArray(this.columns) ? this.columns : [this.columns];
|
|
190
|
+
const query = {};
|
|
191
|
+
for (const column of columns) {
|
|
192
|
+
query[column + ".id"] = model.get("id");
|
|
193
|
+
}
|
|
194
|
+
const models = await this.model
|
|
195
|
+
.aggregate()
|
|
196
|
+
.orWhere(query)
|
|
197
|
+
.get();
|
|
198
|
+
for (const currentModel of models) {
|
|
199
|
+
if (this.whenDelete === "unset") {
|
|
200
|
+
for (const column of columns) {
|
|
201
|
+
if (this.syncMode === "single") {
|
|
202
|
+
currentModel.unset(column);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
currentModel.disassociate(column, model);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
await currentModel.save();
|
|
209
|
+
}
|
|
210
|
+
else if (this.whenDelete === "remove") {
|
|
211
|
+
await currentModel.destroy();
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}export{ModelSync};//# sourceMappingURL=ModelSync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelSync.js","sources":["../../src/model/ModelSync.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { GenericObject } from "@mongez/reinforcements";
|
|
2
|
+
import { Model } from "./model";
|
|
3
|
+
import { Filter } from "./types";
|
|
4
|
+
export declare class RelationshipWithMany<T> {
|
|
5
|
+
protected model: Model;
|
|
6
|
+
protected relatedModel: typeof Model;
|
|
7
|
+
protected column: string;
|
|
8
|
+
/**
|
|
9
|
+
* Constructor
|
|
10
|
+
*/
|
|
11
|
+
constructor(model: Model, relatedModel: typeof Model, column: string);
|
|
12
|
+
/**
|
|
13
|
+
* Add the given model to the relationship
|
|
14
|
+
*/
|
|
15
|
+
add(model: Model | GenericObject): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Create and add the given model to the relationship
|
|
18
|
+
*/
|
|
19
|
+
create(data: any): Promise<Model>;
|
|
20
|
+
/**
|
|
21
|
+
* Remove the given model from the relationship
|
|
22
|
+
*/
|
|
23
|
+
remove(model: Model): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Get all related models
|
|
26
|
+
*/
|
|
27
|
+
list(filter?: Filter): Promise<T[]>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=RelationshipWithMany.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelationshipWithMany.d.ts","sourceRoot":"","sources":["../../src/model/RelationshipWithMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAiB,MAAM,SAAS,CAAC;AAEhD,qBAAa,oBAAoB,CAAC,CAAC;IAK/B,SAAS,CAAC,KAAK,EAAE,KAAK;IACtB,SAAS,CAAC,YAAY,EAAE,OAAO,KAAK;IACpC,SAAS,CAAC,MAAM,EAAE,MAAM;IAN1B;;OAEG;gBAES,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,OAAO,KAAK,EAC1B,MAAM,EAAE,MAAM;IAK1B;;OAEG;IACU,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa;IAU7C;;OAEG;IACU,MAAM,CAAC,IAAI,EAAE,GAAG;IAM7B;;OAEG;IACU,MAAM,CAAC,KAAK,EAAE,KAAK;IAIhC;;OAEG;IACU,IAAI,CAAC,MAAM,GAAE,MAAW;CAiBtC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import {Model}from'./model.js';class RelationshipWithMany {
|
|
2
|
+
model;
|
|
3
|
+
relatedModel;
|
|
4
|
+
column;
|
|
5
|
+
/**
|
|
6
|
+
* Constructor
|
|
7
|
+
*/
|
|
8
|
+
constructor(model, relatedModel, column) {
|
|
9
|
+
this.model = model;
|
|
10
|
+
this.relatedModel = relatedModel;
|
|
11
|
+
this.column = column;
|
|
12
|
+
//
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Add the given model to the relationship
|
|
16
|
+
*/
|
|
17
|
+
async add(model) {
|
|
18
|
+
if (model instanceof Model === false) {
|
|
19
|
+
model = new this.relatedModel(model);
|
|
20
|
+
}
|
|
21
|
+
await model.save();
|
|
22
|
+
await this.model.associate(this.column, model).save();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Create and add the given model to the relationship
|
|
26
|
+
*/
|
|
27
|
+
async create(data) {
|
|
28
|
+
data[this.column] = this.model.id;
|
|
29
|
+
return await this.relatedModel.create(data);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Remove the given model from the relationship
|
|
33
|
+
*/
|
|
34
|
+
async remove(model) {
|
|
35
|
+
await this.model.disassociate(this.column, model).save();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get all related models
|
|
39
|
+
*/
|
|
40
|
+
async list(filter = {}) {
|
|
41
|
+
const embeddedDocuments = this.model.get(this.column) || [];
|
|
42
|
+
const embeddedDocumentsIds = embeddedDocuments.map(
|
|
43
|
+
// because it may be an array of ids or an array of documents
|
|
44
|
+
(document) => document.id || document);
|
|
45
|
+
const documents = (await this.relatedModel.list({
|
|
46
|
+
id: embeddedDocumentsIds,
|
|
47
|
+
...filter,
|
|
48
|
+
}));
|
|
49
|
+
this.model.set(this.column, documents);
|
|
50
|
+
return documents;
|
|
51
|
+
}
|
|
52
|
+
}export{RelationshipWithMany};//# sourceMappingURL=RelationshipWithMany.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelationshipWithMany.js","sources":["../../src/model/RelationshipWithMany.ts"],"sourcesContent":[null],"names":[],"mappings":"qCAIa,oBAAoB,CAAA;AAKnB,IAAA,KAAA,CAAA;AACA,IAAA,YAAA,CAAA;AACA,IAAA,MAAA,CAAA;AANZ;;AAEG;AACH,IAAA,WAAA,CACY,KAAY,EACZ,YAA0B,EAC1B,MAAc,EAAA;QAFd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QACZ,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;;KAGzB;AAED;;AAEG;IACI,MAAM,GAAG,CAAC,KAA4B,EAAA;AAC3C,QAAA,IAAI,KAAK,YAAY,KAAK,KAAK,KAAK,EAAE;YACpC,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACtC,SAAA;AAED,QAAA,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;AAEnB,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;KACvD;AAED;;AAEG;IACI,MAAM,MAAM,CAAC,IAAS,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAElC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC7C;AAED;;AAEG;IACI,MAAM,MAAM,CAAC,KAAY,EAAA;AAC9B,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;KAC1D;AAED;;AAEG;AACI,IAAA,MAAM,IAAI,CAAC,MAAA,GAAiB,EAAE,EAAA;AACnC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAE5D,QAAA,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,GAAG;;QAEhD,CAAC,QAAuB,KAAK,QAAQ,CAAC,EAAE,IAAI,QAAQ,CACrD,CAAC;QAEF,MAAM,SAAS,IAAI,MAAO,IAAI,CAAC,YAAoB,CAAC,IAAI,CAAC;AACvD,YAAA,EAAE,EAAE,oBAAoB;AACxB,YAAA,GAAG,MAAM;AACV,SAAA,CAAC,CAAQ,CAAC;QAEX,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEvC,QAAA,OAAO,SAAS,CAAC;KAClB;AACF"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { type Database } from "../database";
|
|
2
|
+
import type { Model } from "./model";
|
|
3
|
+
import { ModelEvents } from "./model-events";
|
|
4
|
+
import { FactoryCreatorCallback, ModelDeleteStrategy, type ChildModel, type Document } from "./types";
|
|
5
|
+
export declare abstract class BaseModel {
|
|
6
|
+
/**
|
|
7
|
+
* Collection Name
|
|
8
|
+
*/
|
|
9
|
+
static collection: string;
|
|
10
|
+
/**
|
|
11
|
+
* Connection instance
|
|
12
|
+
*/
|
|
13
|
+
static database: Database;
|
|
14
|
+
/**
|
|
15
|
+
* Model associated output
|
|
16
|
+
*/
|
|
17
|
+
static output?: any;
|
|
18
|
+
/**
|
|
19
|
+
* Missing key symbol
|
|
20
|
+
*/
|
|
21
|
+
static MISSING_KEY: symbol;
|
|
22
|
+
/**
|
|
23
|
+
* Define the initial value of the id
|
|
24
|
+
*/
|
|
25
|
+
static initialId?: number;
|
|
26
|
+
/**
|
|
27
|
+
* Define the amount to eb incremented by for the next generated id
|
|
28
|
+
*/
|
|
29
|
+
static incrementIdBy?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Primary id column
|
|
32
|
+
*/
|
|
33
|
+
static primaryIdColumn: string;
|
|
34
|
+
/**
|
|
35
|
+
* Query instance
|
|
36
|
+
*/
|
|
37
|
+
static query: import("../query/query").Query;
|
|
38
|
+
/**
|
|
39
|
+
* Define the delete method
|
|
40
|
+
*
|
|
41
|
+
* @default true
|
|
42
|
+
*/
|
|
43
|
+
static deleteStrategy: ModelDeleteStrategy;
|
|
44
|
+
/**
|
|
45
|
+
* Items per page
|
|
46
|
+
*/
|
|
47
|
+
static perPage: number;
|
|
48
|
+
/**
|
|
49
|
+
* If set to true, then only the original data and the data in the casts property will be saved
|
|
50
|
+
* If set to false, all data will be saved
|
|
51
|
+
*/
|
|
52
|
+
static isStrict: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Get increment id by
|
|
55
|
+
*/
|
|
56
|
+
static getIncrementIdBy(): number;
|
|
57
|
+
/**
|
|
58
|
+
* Get initial id
|
|
59
|
+
*/
|
|
60
|
+
static getInitialId(): number;
|
|
61
|
+
/**
|
|
62
|
+
* Generate next id
|
|
63
|
+
*/
|
|
64
|
+
static genNextId(): Promise<number>;
|
|
65
|
+
/**
|
|
66
|
+
* Get last id of current model
|
|
67
|
+
*/
|
|
68
|
+
static getLastId(): Promise<number>;
|
|
69
|
+
/**
|
|
70
|
+
* Get an instance of child class
|
|
71
|
+
*/
|
|
72
|
+
protected static self(data: Document): any;
|
|
73
|
+
/**
|
|
74
|
+
* Get collection name
|
|
75
|
+
*/
|
|
76
|
+
getCollection(): string;
|
|
77
|
+
/**
|
|
78
|
+
* Get collection query
|
|
79
|
+
*/
|
|
80
|
+
getQuery(): any;
|
|
81
|
+
/**
|
|
82
|
+
* Get database instance
|
|
83
|
+
*/
|
|
84
|
+
getDatabase(): Database;
|
|
85
|
+
/**
|
|
86
|
+
* Get static property
|
|
87
|
+
*/
|
|
88
|
+
getStaticProperty(property: keyof typeof BaseModel): any;
|
|
89
|
+
/**
|
|
90
|
+
* Prepare model for response
|
|
91
|
+
*/
|
|
92
|
+
toJSON(): Promise<any>;
|
|
93
|
+
/**
|
|
94
|
+
* Get current output instance
|
|
95
|
+
*/
|
|
96
|
+
getOutput(data?: Document): any;
|
|
97
|
+
/**
|
|
98
|
+
* Get model events instance
|
|
99
|
+
*/
|
|
100
|
+
static events<T extends Model>(this: ChildModel<T>): ModelEvents;
|
|
101
|
+
/**
|
|
102
|
+
* Get model events for current model
|
|
103
|
+
*/
|
|
104
|
+
getModelEvents(): ModelEvents;
|
|
105
|
+
/**
|
|
106
|
+
* Get base model events
|
|
107
|
+
*/
|
|
108
|
+
getBaseModelEvents(): ModelEvents;
|
|
109
|
+
/**
|
|
110
|
+
* Get model blueprint
|
|
111
|
+
*/
|
|
112
|
+
static blueprint(): import("../blueprint/model-blueprint").ModelBlueprint;
|
|
113
|
+
/**
|
|
114
|
+
* Define what columns should be embedded when model document is embedded in another document.
|
|
115
|
+
*/
|
|
116
|
+
static embedOnly(...columns: string[]): {
|
|
117
|
+
model: typeof BaseModel;
|
|
118
|
+
embeddedKey: string[];
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Define the embedded getter key to be used when embedding the model
|
|
122
|
+
*/
|
|
123
|
+
static embed(key: string | string[]): {
|
|
124
|
+
model: typeof BaseModel;
|
|
125
|
+
embeddedKey: string | string[];
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Embed only id
|
|
129
|
+
*/
|
|
130
|
+
static get embedOnlyId(): {
|
|
131
|
+
model: typeof BaseModel;
|
|
132
|
+
embeddedKey: string;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Document Factory
|
|
136
|
+
*/
|
|
137
|
+
protected static documentFactory: FactoryCreatorCallback;
|
|
138
|
+
/**
|
|
139
|
+
* Get user factory
|
|
140
|
+
*/
|
|
141
|
+
static get factory(): {
|
|
142
|
+
/**
|
|
143
|
+
* Create documents based on the given number of records
|
|
144
|
+
*/
|
|
145
|
+
create: (size: number, recordCallback?: FactoryCreatorCallback) => Promise<void>;
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=base-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-model.d.ts","sourceRoot":"","sources":["../../src/model/base-model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,UAAU,EACf,KAAK,QAAQ,EACd,MAAM,SAAS,CAAC;AAejB,8BAAsB,SAAS;IAC7B;;OAEG;IACH,OAAc,UAAU,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,OAAc,QAAQ,EAAE,QAAQ,CAAY;IAE5C;;OAEG;IACH,OAAc,MAAM,CAAC,EAAE,GAAG,CAAC;IAE3B;;OAEG;IACH,OAAc,WAAW,SAAyB;IAElD;;OAEG;IACH,OAAc,SAAS,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,OAAc,aAAa,CAAC,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,OAAc,eAAe,SAAQ;IAErC;;OAEG;IACH,OAAc,KAAK,iCAAS;IAE5B;;;;OAIG;IACH,OAAc,cAAc,EAAE,mBAAmB,CACf;IAElC;;OAEG;IACH,OAAc,OAAO,SAAM;IAE3B;;;OAGG;IACH,OAAc,QAAQ,UAAQ;IAE9B;;OAEG;WACW,gBAAgB;IAO9B;;OAEG;WACW,YAAY;IAO1B;;OAEG;WACiB,SAAS;IAQ7B;;OAEG;WACiB,SAAS;IAI7B;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ;IAIpC;;OAEG;IACI,aAAa,IAAI,MAAM;IAI9B;;OAEG;IACI,QAAQ;IAIf;;OAEG;IACI,WAAW,IAAI,QAAQ;IAI9B;;OAEG;IACI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,OAAO,SAAS;IAIzD;;OAEG;IACU,MAAM;IAcnB;;OAEG;IACI,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ;IAOhC;;OAEG;WACW,MAAM,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAIzD;;OAEG;IACI,cAAc;IAIrB;;OAEG;IACI,kBAAkB;IAIzB;;OAEG;WACW,SAAS;IAIvB;;OAEG;WACW,SAAS,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE;;;;IAO5C;;OAEG;WACW,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;;;;IAO1C;;OAEG;IACH,WAAkB,WAAW;;;MAK5B;IAED;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAOtD;IAEF;;OAEG;IACH,WAAkB,OAAO;QAErB;;WAEG;uBAEK,MAAM,mBACI,sBAAsB;MAO3C;CACF"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import {faker}from'@faker-js/faker';import {Random,clone}from'@mongez/reinforcements';import {modelBlueprint}from'../blueprint/model-blueprint.js';import {database}from'../database.js';import {query}from'../query/query.js';import {masterMind}from'./master-mind.js';import {ModelEvents}from'./model-events.js';import {ModelDeleteStrategy}from'./types.js';const modelEvents = new Map();
|
|
2
|
+
const getModelEvent = (collection) => {
|
|
3
|
+
let eventsInstance = modelEvents.get(collection);
|
|
4
|
+
if (!eventsInstance) {
|
|
5
|
+
eventsInstance = new ModelEvents(collection);
|
|
6
|
+
modelEvents.set(collection, eventsInstance);
|
|
7
|
+
}
|
|
8
|
+
return eventsInstance;
|
|
9
|
+
};
|
|
10
|
+
class BaseModel {
|
|
11
|
+
/**
|
|
12
|
+
* Collection Name
|
|
13
|
+
*/
|
|
14
|
+
static collection;
|
|
15
|
+
/**
|
|
16
|
+
* Connection instance
|
|
17
|
+
*/
|
|
18
|
+
static database = database;
|
|
19
|
+
/**
|
|
20
|
+
* Model associated output
|
|
21
|
+
*/
|
|
22
|
+
static output;
|
|
23
|
+
/**
|
|
24
|
+
* Missing key symbol
|
|
25
|
+
*/
|
|
26
|
+
static MISSING_KEY = Symbol("MISSING_KEY");
|
|
27
|
+
/**
|
|
28
|
+
* Define the initial value of the id
|
|
29
|
+
*/
|
|
30
|
+
static initialId;
|
|
31
|
+
/**
|
|
32
|
+
* Define the amount to eb incremented by for the next generated id
|
|
33
|
+
*/
|
|
34
|
+
static incrementIdBy;
|
|
35
|
+
/**
|
|
36
|
+
* Primary id column
|
|
37
|
+
*/
|
|
38
|
+
static primaryIdColumn = "id";
|
|
39
|
+
/**
|
|
40
|
+
* Query instance
|
|
41
|
+
*/
|
|
42
|
+
static query = query;
|
|
43
|
+
/**
|
|
44
|
+
* Define the delete method
|
|
45
|
+
*
|
|
46
|
+
* @default true
|
|
47
|
+
*/
|
|
48
|
+
static deleteStrategy = ModelDeleteStrategy.moveToTrash;
|
|
49
|
+
/**
|
|
50
|
+
* Items per page
|
|
51
|
+
*/
|
|
52
|
+
static perPage = 15;
|
|
53
|
+
/**
|
|
54
|
+
* If set to true, then only the original data and the data in the casts property will be saved
|
|
55
|
+
* If set to false, all data will be saved
|
|
56
|
+
*/
|
|
57
|
+
static isStrict = true;
|
|
58
|
+
/**
|
|
59
|
+
* Get increment id by
|
|
60
|
+
*/
|
|
61
|
+
static getIncrementIdBy() {
|
|
62
|
+
if (this.incrementIdBy)
|
|
63
|
+
return this.incrementIdBy;
|
|
64
|
+
// return Random number
|
|
65
|
+
return Random.int(1, 999);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get initial id
|
|
69
|
+
*/
|
|
70
|
+
static getInitialId() {
|
|
71
|
+
if (this.initialId)
|
|
72
|
+
return this.initialId;
|
|
73
|
+
// return Random number
|
|
74
|
+
return Random.int(10000, 499999);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Generate next id
|
|
78
|
+
*/
|
|
79
|
+
static async genNextId() {
|
|
80
|
+
return await masterMind.generateNextId(this.collection, this.getIncrementIdBy(), this.getInitialId());
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get last id of current model
|
|
84
|
+
*/
|
|
85
|
+
static async getLastId() {
|
|
86
|
+
return await masterMind.getLastId(this.collection);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get an instance of child class
|
|
90
|
+
*/
|
|
91
|
+
static self(data) {
|
|
92
|
+
return new this(data);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get collection name
|
|
96
|
+
*/
|
|
97
|
+
getCollection() {
|
|
98
|
+
return this.getStaticProperty("collection");
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get collection query
|
|
102
|
+
*/
|
|
103
|
+
getQuery() {
|
|
104
|
+
return this.getStaticProperty("query");
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get database instance
|
|
108
|
+
*/
|
|
109
|
+
getDatabase() {
|
|
110
|
+
return this.getStaticProperty("database");
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get static property
|
|
114
|
+
*/
|
|
115
|
+
getStaticProperty(property) {
|
|
116
|
+
return this.constructor[property];
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Prepare model for response
|
|
120
|
+
*/
|
|
121
|
+
async toJSON() {
|
|
122
|
+
// get static output class
|
|
123
|
+
const Output = this.getStaticProperty("output");
|
|
124
|
+
// if the model has a Output class
|
|
125
|
+
if (Output) {
|
|
126
|
+
// then return the Output instance and call `toJSON` method
|
|
127
|
+
return await new Output(clone(this.data)).toJSON();
|
|
128
|
+
}
|
|
129
|
+
// otherwise return the data object
|
|
130
|
+
return this.publicData;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get current output instance
|
|
134
|
+
*/
|
|
135
|
+
getOutput(data) {
|
|
136
|
+
// get static output class
|
|
137
|
+
const Output = this.getStaticProperty("output");
|
|
138
|
+
return Output ? new Output(data) : data;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get model events instance
|
|
142
|
+
*/
|
|
143
|
+
static events() {
|
|
144
|
+
return getModelEvent(this.collection ?? "__baseModel__");
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get model events for current model
|
|
148
|
+
*/
|
|
149
|
+
getModelEvents() {
|
|
150
|
+
return getModelEvent(this.getCollection());
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get base model events
|
|
154
|
+
*/
|
|
155
|
+
getBaseModelEvents() {
|
|
156
|
+
return getModelEvent("__baseModel__");
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get model blueprint
|
|
160
|
+
*/
|
|
161
|
+
static blueprint() {
|
|
162
|
+
return modelBlueprint(this);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Define what columns should be embedded when model document is embedded in another document.
|
|
166
|
+
*/
|
|
167
|
+
static embedOnly(...columns) {
|
|
168
|
+
return {
|
|
169
|
+
model: this,
|
|
170
|
+
embeddedKey: columns,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Define the embedded getter key to be used when embedding the model
|
|
175
|
+
*/
|
|
176
|
+
static embed(key) {
|
|
177
|
+
return {
|
|
178
|
+
model: this,
|
|
179
|
+
embeddedKey: key,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Embed only id
|
|
184
|
+
*/
|
|
185
|
+
static get embedOnlyId() {
|
|
186
|
+
return {
|
|
187
|
+
model: this,
|
|
188
|
+
embeddedKey: "onlyId",
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Document Factory
|
|
193
|
+
*/
|
|
194
|
+
static documentFactory = (_faker, _index) => {
|
|
195
|
+
throw new Error("Document factory is not defined, pass a callback to `factory.create` method or define `documentFactory` method in the model class");
|
|
196
|
+
};
|
|
197
|
+
/**
|
|
198
|
+
* Get user factory
|
|
199
|
+
*/
|
|
200
|
+
static get factory() {
|
|
201
|
+
return {
|
|
202
|
+
/**
|
|
203
|
+
* Create documents based on the given number of records
|
|
204
|
+
*/
|
|
205
|
+
create: async (size, recordCallback = this.documentFactory) => {
|
|
206
|
+
for (let i = 0; i < size; i++) {
|
|
207
|
+
await this.create(recordCallback(faker, i));
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
}export{BaseModel};//# sourceMappingURL=base-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-model.js","sources":["../../src/model/base-model.ts"],"sourcesContent":[null],"names":[],"mappings":"kWAeA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;AAEnD,MAAM,aAAa,GAAG,CAAC,UAAkB,KAAI;IAC3C,IAAI,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEjD,IAAI,CAAC,cAAc,EAAE;AACnB,QAAA,cAAc,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;AAC7C,QAAA,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAC7C,KAAA;AAED,IAAA,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;MAEoB,SAAS,CAAA;AAC7B;;AAEG;IACI,OAAO,UAAU,CAAS;AAEjC;;AAEG;AACI,IAAA,OAAO,QAAQ,GAAa,QAAQ,CAAC;AAE5C;;AAEG;IACI,OAAO,MAAM,CAAO;AAE3B;;AAEG;AACI,IAAA,OAAO,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAElD;;AAEG;IACI,OAAO,SAAS,CAAU;AAEjC;;AAEG;IACI,OAAO,aAAa,CAAU;AAErC;;AAEG;AACI,IAAA,OAAO,eAAe,GAAG,IAAI,CAAC;AAErC;;AAEG;AACI,IAAA,OAAO,KAAK,GAAG,KAAK,CAAC;AAE5B;;;;AAIG;AACI,IAAA,OAAO,cAAc,GAC1B,mBAAmB,CAAC,WAAW,CAAC;AAElC;;AAEG;AACI,IAAA,OAAO,OAAO,GAAG,EAAE,CAAC;AAE3B;;;AAGG;AACI,IAAA,OAAO,QAAQ,GAAG,IAAI,CAAC;AAE9B;;AAEG;AACI,IAAA,OAAO,gBAAgB,GAAA;QAC5B,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC;;QAGlD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KAC3B;AAED;;AAEG;AACI,IAAA,OAAO,YAAY,GAAA;QACxB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC;;QAG1C,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KAClC;AAED;;AAEG;IACI,aAAa,SAAS,GAAA;AAC3B,QAAA,OAAO,MAAM,UAAU,CAAC,cAAc,CACpC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,EAAE,EACvB,IAAI,CAAC,YAAY,EAAE,CACpB,CAAC;KACH;AAED;;AAEG;IACI,aAAa,SAAS,GAAA;QAC3B,OAAO,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACpD;AAED;;AAEG;IACO,OAAO,IAAI,CAAC,IAAc,EAAA;AAClC,QAAA,OAAO,IAAK,IAAY,CAAC,IAAI,CAAC,CAAC;KAChC;AAED;;AAEG;IACI,aAAa,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;KAC7C;AAED;;AAEG;IACI,QAAQ,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;KACxC;AAED;;AAEG;IACI,WAAW,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;KAC3C;AAED;;AAEG;AACI,IAAA,iBAAiB,CAAC,QAAgC,EAAA;AACvD,QAAA,OAAQ,IAAI,CAAC,WAAmB,CAAC,QAAQ,CAAC,CAAC;KAC5C;AAED;;AAEG;AACI,IAAA,MAAM,MAAM,GAAA;;QAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;;AAGhD,QAAA,IAAI,MAAM,EAAE;;AAEV,YAAA,OAAO,MAAM,IAAI,MAAM,CAAC,KAAK,CAAE,IAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACtE,SAAA;;QAGD,OAAQ,IAAY,CAAC,UAAU,CAAC;KACjC;AAED;;AAEG;AACI,IAAA,SAAS,CAAC,IAAe,EAAA;;QAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAEhD,QAAA,OAAO,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KACzC;AAED;;AAEG;AACI,IAAA,OAAO,MAAM,GAAA;QAClB,OAAO,aAAa,CAAC,IAAI,CAAC,UAAU,IAAI,eAAe,CAAC,CAAC;KAC1D;AAED;;AAEG;IACI,cAAc,GAAA;AACnB,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAgB,CAAC;KAC3D;AAED;;AAEG;IACI,kBAAkB,GAAA;AACvB,QAAA,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC;KACvC;AAED;;AAEG;AACI,IAAA,OAAO,SAAS,GAAA;AACrB,QAAA,OAAO,cAAc,CAAC,IAAW,CAAC,CAAC;KACpC;AAED;;AAEG;AACI,IAAA,OAAO,SAAS,CAAC,GAAG,OAAiB,EAAA;QAC1C,OAAO;AACL,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,OAAO;SACrB,CAAC;KACH;AAED;;AAEG;IACI,OAAO,KAAK,CAAC,GAAsB,EAAA;QACxC,OAAO;AACL,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,GAAG;SACjB,CAAC;KACH;AAED;;AAEG;AACI,IAAA,WAAW,WAAW,GAAA;QAC3B,OAAO;AACL,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,QAAQ;SACtB,CAAC;KACH;AAED;;AAEG;IACO,OAAO,eAAe,GAA2B,CACzD,MAAa,EACb,MAAc,KACZ;AACF,QAAA,MAAM,IAAI,KAAK,CACb,mIAAmI,CACpI,CAAC;AACJ,KAAC,CAAC;AAEF;;AAEG;AACI,IAAA,WAAW,OAAO,GAAA;QACvB,OAAO;AACL;;AAEG;YACH,MAAM,EAAE,OACN,IAAY,EACZ,iBAAyC,IAAI,CAAC,eAAe,KAC3D;gBACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;oBAC7B,MAAO,IAAY,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,iBAAA;aACF;SACF,CAAC;KACH;"}
|