├── .codeclimate.yml
├── .gitignore
├── .npmignore
├── .travis.yml
├── .vscode
├── extensions.json
├── settings.json
└── tasks.json
├── LICENSE
├── README-v3.md
├── README.md
├── dist
├── lib
│ ├── builtin.d.ts
│ ├── builtin.js
│ ├── constants.d.ts
│ ├── constants.js
│ ├── contracts
│ │ ├── Driver.d.ts
│ │ ├── Driver.js
│ │ ├── DriverProvider.d.ts
│ │ ├── DriverProvider.js
│ │ ├── FactoryBuilder.d.ts
│ │ ├── FactoryBuilder.js
│ │ ├── FactoryManager.d.ts
│ │ ├── FactoryManager.js
│ │ ├── MemoryDataSource.d.ts
│ │ ├── MemoryDataSource.js
│ │ ├── MemoryDataSourceProvider.d.ts
│ │ ├── MemoryDataSourceProvider.js
│ │ ├── MomentProvider.d.ts
│ │ ├── MomentProvider.js
│ │ ├── QueryLog.d.ts
│ │ └── QueryLog.js
│ ├── data
│ │ ├── DataBuffer.d.ts
│ │ ├── DataBuffer.js
│ │ ├── DataCollector.d.ts
│ │ ├── DataCollector.js
│ │ ├── DataConditionMatcher.d.ts
│ │ └── DataConditionMatcher.js
│ ├── definitions
│ │ ├── data
│ │ │ ├── IDataBuffer.d.ts
│ │ │ ├── IDataBuffer.js
│ │ │ ├── IDataCollector.d.ts
│ │ │ ├── IDataCollector.js
│ │ │ ├── IDataReader.d.ts
│ │ │ └── IDataReader.js
│ │ ├── driver
│ │ │ ├── IExecutor.d.ts
│ │ │ ├── IExecutor.js
│ │ │ ├── IExecutorFactory.d.ts
│ │ │ └── IExecutorFactory.js
│ │ ├── factory
│ │ │ ├── IFactoryDefinition.d.ts
│ │ │ └── IFactoryDefinition.js
│ │ ├── features
│ │ │ ├── IEventFeature.d.ts
│ │ │ ├── IEventFeature.js
│ │ │ ├── IFeature.d.ts
│ │ │ ├── IFeature.js
│ │ │ ├── IFillableFeature.d.ts
│ │ │ ├── IFillableFeature.js
│ │ │ ├── IQueryFeature.d.ts
│ │ │ ├── IQueryFeature.js
│ │ │ ├── IRecordExecutor.d.ts
│ │ │ ├── IRecordExecutor.js
│ │ │ ├── IRecordManager.d.ts
│ │ │ ├── IRecordManager.js
│ │ │ ├── IRelationFeature.d.ts
│ │ │ ├── IRelationFeature.js
│ │ │ ├── ISerializationFeature.d.ts
│ │ │ ├── ISerializationFeature.js
│ │ │ ├── ISettingFeature.d.ts
│ │ │ ├── ISettingFeature.js
│ │ │ ├── ISoftDeletesFeature.d.ts
│ │ │ ├── ISoftDeletesFeature.js
│ │ │ ├── ITimestampsFeature.d.ts
│ │ │ └── ITimestampsFeature.js
│ │ ├── model
│ │ │ ├── IModel.d.ts
│ │ │ ├── IModel.js
│ │ │ ├── IModelEvent.d.ts
│ │ │ ├── IModelEvent.js
│ │ │ ├── IModelFillable.d.ts
│ │ │ ├── IModelFillable.js
│ │ │ ├── IModelRecord.d.ts
│ │ │ ├── IModelRecord.js
│ │ │ ├── IModelRelation.d.ts
│ │ │ ├── IModelRelation.js
│ │ │ ├── IModelSerialization.d.ts
│ │ │ ├── IModelSerialization.js
│ │ │ ├── IModelSoftDeletes.d.ts
│ │ │ ├── IModelSoftDeletes.js
│ │ │ ├── IModelTimestamps.d.ts
│ │ │ └── IModelTimestamps.js
│ │ ├── query-builders
│ │ │ ├── IConditionMatcher.d.ts
│ │ │ ├── IConditionMatcher.js
│ │ │ ├── IConvention.d.ts
│ │ │ ├── IConvention.js
│ │ │ ├── IQueryBuilder.d.ts
│ │ │ ├── IQueryBuilder.js
│ │ │ ├── IQueryBuilderFactory.d.ts
│ │ │ ├── IQueryBuilderFactory.js
│ │ │ ├── IQueryBuilderHandler.d.ts
│ │ │ ├── IQueryBuilderHandler.js
│ │ │ ├── IQueryExecutor.d.ts
│ │ │ └── IQueryExecutor.js
│ │ ├── query-grammars
│ │ │ ├── IAdvancedQuery.d.ts
│ │ │ ├── IAdvancedQuery.js
│ │ │ ├── IBasicConditionQuery.d.ts
│ │ │ ├── IBasicConditionQuery.js
│ │ │ ├── IBasicQuery.d.ts
│ │ │ ├── IBasicQuery.js
│ │ │ ├── IConditionQuery.d.ts
│ │ │ ├── IConditionQuery.js
│ │ │ ├── IExecuteQuery.d.ts
│ │ │ ├── IExecuteQuery.js
│ │ │ ├── IQuery.d.ts
│ │ │ ├── IQuery.js
│ │ │ ├── IRelationQuery.d.ts
│ │ │ └── IRelationQuery.js
│ │ ├── relations
│ │ │ ├── IBelongsToManyRelationship.d.ts
│ │ │ ├── IBelongsToManyRelationship.js
│ │ │ ├── IBelongsToRelationship.d.ts
│ │ │ ├── IBelongsToRelationship.js
│ │ │ ├── IHasManyRelationship.d.ts
│ │ │ ├── IHasManyRelationship.js
│ │ │ ├── IHasOneRelationship.d.ts
│ │ │ ├── IHasOneRelationship.js
│ │ │ ├── IManyToMany.d.ts
│ │ │ ├── IManyToMany.js
│ │ │ ├── IMorphManyRelationship.d.ts
│ │ │ ├── IMorphManyRelationship.js
│ │ │ ├── IMorphOneRelationship.d.ts
│ │ │ ├── IMorphOneRelationship.js
│ │ │ ├── IMorphToRelationship.d.ts
│ │ │ ├── IMorphToRelationship.js
│ │ │ ├── IPivotOptions.d.ts
│ │ │ ├── IPivotOptions.js
│ │ │ ├── IRelationData.d.ts
│ │ │ ├── IRelationData.js
│ │ │ ├── IRelationDataBucket.d.ts
│ │ │ ├── IRelationDataBucket.js
│ │ │ ├── IRelationship.d.ts
│ │ │ ├── IRelationship.js
│ │ │ ├── IRelationshipFactory.d.ts
│ │ │ └── IRelationshipFactory.js
│ │ └── utils
│ │ │ ├── IClassSetting.d.ts
│ │ │ └── IClassSetting.js
│ ├── drivers
│ │ ├── DriverBase.d.ts
│ │ ├── DriverBase.js
│ │ ├── ExecutorBase.d.ts
│ │ ├── ExecutorBase.js
│ │ ├── QueryLogBase.d.ts
│ │ ├── QueryLogBase.js
│ │ ├── Record.d.ts
│ │ ├── Record.js
│ │ ├── RecordConditionMatcher.d.ts
│ │ ├── RecordConditionMatcher.js
│ │ ├── RecordConditionMatcherFactory.d.ts
│ │ ├── RecordConditionMatcherFactory.js
│ │ ├── RecordDataReader.d.ts
│ │ ├── RecordDataReader.js
│ │ ├── RecordDataSourceBase.d.ts
│ │ ├── RecordDataSourceBase.js
│ │ ├── RecordExecutorBase.d.ts
│ │ ├── RecordExecutorBase.js
│ │ ├── RecordManager.d.ts
│ │ ├── RecordManager.js
│ │ ├── RecordManagerBase.d.ts
│ │ ├── RecordManagerBase.js
│ │ └── memory
│ │ │ ├── MemoryDataSource.d.ts
│ │ │ ├── MemoryDataSource.js
│ │ │ ├── MemoryDriver.d.ts
│ │ │ ├── MemoryDriver.js
│ │ │ ├── MemoryExecutorFactory.d.ts
│ │ │ ├── MemoryExecutorFactory.js
│ │ │ ├── MemoryQueryBuilder.d.ts
│ │ │ ├── MemoryQueryBuilder.js
│ │ │ ├── MemoryQueryBuilderFactory.d.ts
│ │ │ ├── MemoryQueryBuilderFactory.js
│ │ │ ├── MemoryQueryBuilderHandler.d.ts
│ │ │ ├── MemoryQueryBuilderHandler.js
│ │ │ ├── MemoryQueryExecutor.d.ts
│ │ │ ├── MemoryQueryExecutor.js
│ │ │ ├── MemoryQueryLog.d.ts
│ │ │ ├── MemoryQueryLog.js
│ │ │ ├── MemoryRecordExecutor.d.ts
│ │ │ └── MemoryRecordExecutor.js
│ ├── errors
│ │ ├── NotFoundError.d.ts
│ │ ├── NotFoundError.js
│ │ ├── RelationNotDefinedError.d.ts
│ │ ├── RelationNotDefinedError.js
│ │ ├── RelationNotFoundInNewInstanceError.d.ts
│ │ └── RelationNotFoundInNewInstanceError.js
│ ├── facades
│ │ ├── container.d.ts
│ │ ├── container.js
│ │ └── global
│ │ │ ├── DriverProviderFacade.d.ts
│ │ │ ├── DriverProviderFacade.js
│ │ │ ├── FactoryFacade.d.ts
│ │ │ ├── FactoryFacade.js
│ │ │ ├── MemoryDataSourceProviderFacade.d.ts
│ │ │ ├── MemoryDataSourceProviderFacade.js
│ │ │ ├── MomentProviderFacade.d.ts
│ │ │ ├── MomentProviderFacade.js
│ │ │ ├── QueryLogFacade.d.ts
│ │ │ └── QueryLogFacade.js
│ ├── factory
│ │ ├── FactoryBuilder.d.ts
│ │ ├── FactoryBuilder.js
│ │ ├── FactoryManager.d.ts
│ │ └── FactoryManager.js
│ ├── features
│ │ ├── EventFeature.d.ts
│ │ ├── EventFeature.js
│ │ ├── FeatureBase.d.ts
│ │ ├── FeatureBase.js
│ │ ├── FillableFeature.d.ts
│ │ ├── FillableFeature.js
│ │ ├── QueryFeature.d.ts
│ │ ├── QueryFeature.js
│ │ ├── RelationFeature.d.ts
│ │ ├── RelationFeature.js
│ │ ├── SerializationFeature.d.ts
│ │ ├── SerializationFeature.js
│ │ ├── SettingFeature.d.ts
│ │ ├── SettingFeature.js
│ │ ├── SoftDeletesFeature.d.ts
│ │ ├── SoftDeletesFeature.js
│ │ ├── TimestampsFeature.d.ts
│ │ ├── TimestampsFeature.js
│ │ └── mixin
│ │ │ ├── EventPublicApi.d.ts
│ │ │ ├── EventPublicApi.js
│ │ │ ├── FillablePublicApi.d.ts
│ │ │ ├── FillablePublicApi.js
│ │ │ ├── RecordManagerPublicApi.d.ts
│ │ │ ├── RecordManagerPublicApi.js
│ │ │ ├── RelationPublicApi.d.ts
│ │ │ ├── RelationPublicApi.js
│ │ │ ├── SerializationPublicApi.d.ts
│ │ │ ├── SerializationPublicApi.js
│ │ │ ├── SoftDeletesPublicApi.d.ts
│ │ │ ├── SoftDeletesPublicApi.js
│ │ │ ├── TimestampsPublicApi.d.ts
│ │ │ └── TimestampsPublicApi.js
│ ├── index.d.ts
│ ├── index.js
│ ├── model
│ │ ├── Model.d.ts
│ │ ├── Model.js
│ │ ├── ModelEvent.d.ts
│ │ ├── ModelEvent.js
│ │ ├── ModelProxyHandler.d.ts
│ │ └── ModelProxyHandler.js
│ ├── providers
│ │ ├── DriverProvider.d.ts
│ │ ├── DriverProvider.js
│ │ ├── MemoryDataSourceProvider.d.ts
│ │ ├── MemoryDataSourceProvider.js
│ │ ├── MomentProvider.d.ts
│ │ └── MomentProvider.js
│ ├── query-builders
│ │ ├── QueryBuilder.d.ts
│ │ ├── QueryBuilder.js
│ │ ├── QueryBuilderHandlerBase.d.ts
│ │ ├── QueryBuilderHandlerBase.js
│ │ ├── mixin
│ │ │ ├── AdvancedQuery.d.ts
│ │ │ ├── AdvancedQuery.js
│ │ │ ├── ConditionQuery.d.ts
│ │ │ ├── ConditionQuery.js
│ │ │ ├── ExecuteQuery.d.ts
│ │ │ ├── ExecuteQuery.js
│ │ │ ├── Query.d.ts
│ │ │ ├── Query.js
│ │ │ ├── RelationQuery.d.ts
│ │ │ └── RelationQuery.js
│ │ └── shared
│ │ │ ├── BasicQuery.d.ts
│ │ │ ├── BasicQuery.js
│ │ │ ├── BasicQueryConverter.d.ts
│ │ │ ├── BasicQueryConverter.js
│ │ │ ├── ConditionQueryHandler.d.ts
│ │ │ ├── ConditionQueryHandler.js
│ │ │ ├── DefaultConvention.d.ts
│ │ │ ├── DefaultConvention.js
│ │ │ ├── ExecutorUtils.d.ts
│ │ │ ├── ExecutorUtils.js
│ │ │ ├── Operator.d.ts
│ │ │ ├── Operator.js
│ │ │ ├── QueryCondition.d.ts
│ │ │ └── QueryCondition.js
│ ├── query-log
│ │ ├── FlipFlopQueryLog.d.ts
│ │ └── FlipFlopQueryLog.js
│ ├── relations
│ │ ├── RelationData.d.ts
│ │ ├── RelationData.js
│ │ ├── RelationDataBucket.d.ts
│ │ ├── RelationDataBucket.js
│ │ ├── RelationDefinitionFinder.d.ts
│ │ ├── RelationDefinitionFinder.js
│ │ ├── RelationUtilities.d.ts
│ │ ├── RelationUtilities.js
│ │ ├── Relationship.d.ts
│ │ ├── Relationship.js
│ │ ├── RelationshipFactory.d.ts
│ │ ├── RelationshipFactory.js
│ │ ├── RelationshipType.d.ts
│ │ ├── RelationshipType.js
│ │ └── relationships
│ │ │ ├── BelongsTo.d.ts
│ │ │ ├── BelongsTo.js
│ │ │ ├── BelongsToMany.d.ts
│ │ │ ├── BelongsToMany.js
│ │ │ ├── HasMany.d.ts
│ │ │ ├── HasMany.js
│ │ │ ├── HasOne.d.ts
│ │ │ ├── HasOne.js
│ │ │ ├── HasOneOrMany.d.ts
│ │ │ ├── HasOneOrMany.js
│ │ │ ├── ManyToMany.d.ts
│ │ │ ├── ManyToMany.js
│ │ │ ├── MorphMany.d.ts
│ │ │ ├── MorphMany.js
│ │ │ ├── MorphOne.d.ts
│ │ │ ├── MorphOne.js
│ │ │ ├── MorphTo.d.ts
│ │ │ ├── MorphTo.js
│ │ │ ├── executors
│ │ │ ├── HasManyExecutor.d.ts
│ │ │ ├── HasManyExecutor.js
│ │ │ ├── HasOneExecutor.d.ts
│ │ │ ├── HasOneExecutor.js
│ │ │ ├── HasOneOrManyExecutor.d.ts
│ │ │ ├── HasOneOrManyExecutor.js
│ │ │ ├── MorphOneOrManyExecutor.d.ts
│ │ │ └── MorphOneOrManyExecutor.js
│ │ │ └── pivot
│ │ │ ├── PivotModel.d.ts
│ │ │ └── PivotModel.js
│ └── util
│ │ ├── ClassSetting.d.ts
│ │ ├── ClassSetting.js
│ │ ├── PrototypeManager.d.ts
│ │ ├── PrototypeManager.js
│ │ ├── SettingType.d.ts
│ │ ├── SettingType.js
│ │ ├── accessors.d.ts
│ │ ├── accessors.js
│ │ ├── factory.d.ts
│ │ ├── factory.js
│ │ ├── functions.d.ts
│ │ ├── functions.js
│ │ ├── helpers.d.ts
│ │ ├── helpers.js
│ │ ├── isPromise.d.ts
│ │ └── isPromise.js
└── test
│ ├── _integration
│ ├── model
│ │ ├── ModelEvent.integration.test.d.ts
│ │ ├── ModelEvent.integration.test.js
│ │ ├── ModelFillable.integration.test.d.ts
│ │ ├── ModelFillable.integration.test.js
│ │ ├── ModelSerialization.integration.test.d.ts
│ │ └── ModelSerialization.integration.test.js
│ └── relation
│ │ ├── BelongsToMany.softDeletes.test.d.ts
│ │ ├── BelongsToMany.softDeletes.test.js
│ │ ├── BelongsToMany.test.d.ts
│ │ ├── BelongsToMany.test.js
│ │ ├── BelongsToMany.timestamps.test.d.ts
│ │ ├── BelongsToMany.timestamps.test.js
│ │ ├── HasMany.test.d.ts
│ │ ├── HasMany.test.js
│ │ ├── HasOne.test.d.ts
│ │ ├── HasOne.test.js
│ │ ├── ManyToMany.PivotDefinition.test.d.ts
│ │ ├── ManyToMany.PivotDefinition.test.js
│ │ ├── MorphMany.test.d.ts
│ │ ├── MorphMany.test.js
│ │ ├── MorphOne.test.d.ts
│ │ └── MorphOne.test.js
│ ├── _syntax
│ ├── Factory.test.d.ts
│ └── Factory.test.js
│ ├── data
│ ├── DataBuffer.test.d.ts
│ ├── DataBuffer.test.js
│ ├── DataCollector.test.d.ts
│ ├── DataCollector.test.js
│ ├── DataConditionMatcher.test.d.ts
│ └── DataConditionMatcher.test.js
│ ├── drivers
│ ├── DriverBase.test.d.ts
│ ├── DriverBase.test.js
│ ├── ExecutorBase.test.d.ts
│ ├── ExecutorBase.test.js
│ ├── QueryLogBase.test.d.ts
│ ├── QueryLogBase.test.js
│ ├── Record.test.d.ts
│ ├── Record.test.js
│ ├── RecordConditionMatcher.test.d.ts
│ ├── RecordConditionMatcher.test.js
│ ├── RecordConditionMatcherFactory.test.d.ts
│ ├── RecordConditionMatcherFactory.test.js
│ ├── RecordDataReader.test.d.ts
│ ├── RecordDataReader.test.js
│ ├── RecordDataSourceBase.test.d.ts
│ ├── RecordDataSourceBase.test.js
│ ├── RecordExecutorBase.test.d.ts
│ ├── RecordExecutorBase.test.js
│ ├── RecordManager.test.d.ts
│ ├── RecordManager.test.js
│ ├── RecordManagerBase.test.d.ts
│ ├── RecordManagerBase.test.js
│ └── memory
│ │ ├── MemoryDataSource.test.d.ts
│ │ ├── MemoryDataSource.test.js
│ │ ├── MemoryExecutorFactory.test.d.ts
│ │ ├── MemoryExecutorFactory.test.js
│ │ ├── MemoryQueryBuilder.test.d.ts
│ │ ├── MemoryQueryBuilder.test.js
│ │ ├── MemoryQueryBuilderFactory.test.d.ts
│ │ ├── MemoryQueryBuilderFactory.test.js
│ │ ├── MemoryQueryBuilderHandler.test.d.ts
│ │ ├── MemoryQueryBuilderHandler.test.js
│ │ ├── MemoryQueryExecutor.test.d.ts
│ │ ├── MemoryQueryExecutor.test.js
│ │ ├── MemoryQueryLog.test.d.ts
│ │ ├── MemoryQueryLog.test.js
│ │ ├── MemoryRecordExecutor.test.d.ts
│ │ └── MemoryRecordExecutor.test.js
│ ├── facades
│ ├── container.test.d.ts
│ ├── container.test.js
│ └── global
│ │ ├── EloquentDriverProviderFacade.test.d.ts
│ │ ├── EloquentDriverProviderFacade.test.js
│ │ ├── FactoryFacade.test.d.ts
│ │ ├── FactoryFacade.test.js
│ │ ├── MemoryDataSourceProviderFacade.test.d.ts
│ │ ├── MemoryDataSourceProviderFacade.test.js
│ │ ├── MomentProviderFacade.test.d.ts
│ │ ├── MomentProviderFacade.test.js
│ │ ├── QueryLogFacade.test.d.ts
│ │ └── QueryLogFacade.test.js
│ ├── factory
│ ├── FactoryBuilder.test.d.ts
│ ├── FactoryBuilder.test.js
│ ├── FactoryManager.test.d.ts
│ └── FactoryManager.test.js
│ ├── features
│ ├── EventFeature.test.d.ts
│ ├── EventFeature.test.js
│ ├── FeatureBase.test.d.ts
│ ├── FeatureBase.test.js
│ ├── FillableFeature.test.d.ts
│ ├── FillableFeature.test.js
│ ├── QueryFeature.test.d.ts
│ ├── QueryFeature.test.js
│ ├── RelationFeature.test.d.ts
│ ├── RelationFeature.test.js
│ ├── SerializationFeature.test.d.ts
│ ├── SerializationFeature.test.js
│ ├── SettingFeature.test.d.ts
│ ├── SettingFeature.test.js
│ ├── SoftDeletesFeature.test.d.ts
│ ├── SoftDeletesFeature.test.js
│ ├── TimestampsFeature.test.d.ts
│ ├── TimestampsFeature.test.js
│ └── mixin
│ │ ├── EventPublicApi.test.d.ts
│ │ ├── EventPublicApi.test.js
│ │ ├── FillablePublicApi.test.d.ts
│ │ ├── FillablePublicApi.test.js
│ │ ├── RecordManagerPublicApi.test.d.ts
│ │ ├── RecordManagerPublicApi.test.js
│ │ ├── RelationPublicApi.test.d.ts
│ │ ├── RelationPublicApi.test.js
│ │ ├── SerializationPublicApi.test.d.ts
│ │ ├── SerializationPublicApi.test.js
│ │ ├── SoftDeletesPublicApi.test.d.ts
│ │ ├── SoftDeletesPublicApi.test.js
│ │ ├── TimestampsPublicApi.test.d.ts
│ │ └── TimestampsPublicApi.test.js
│ ├── model
│ ├── Model.test.d.ts
│ ├── Model.test.js
│ ├── ModelProxyHandler.test.d.ts
│ └── ModelProxyHandler.test.js
│ ├── providers
│ ├── DriverProvider.test.d.ts
│ ├── DriverProvider.test.js
│ ├── MemoryDataSourceProvider.test.d.ts
│ ├── MemoryDataSourceProvider.test.js
│ ├── MomentProvider.test.d.ts
│ └── MomentProvider.test.js
│ ├── query-builders
│ ├── QueryBuilder.test.d.ts
│ ├── QueryBuilder.test.js
│ ├── QueryBuilderHandlerBase.test.d.ts
│ ├── QueryBuilderHandlerBase.test.js
│ ├── mixin
│ │ ├── AdvancedQuery.test.d.ts
│ │ ├── AdvancedQuery.test.js
│ │ ├── ConditionQuery.test.d.ts
│ │ ├── ConditionQuery.test.js
│ │ ├── ExecuteQuery.test.d.ts
│ │ ├── ExecuteQuery.test.js
│ │ ├── Query.test.d.ts
│ │ ├── Query.test.js
│ │ ├── RelationQuery.test.d.ts
│ │ └── RelationQuery.test.js
│ └── shared
│ │ ├── BasicQuery.test.d.ts
│ │ ├── BasicQuery.test.js
│ │ ├── BasicQueryConverter.test.d.ts
│ │ ├── BasicQueryConverter.test.js
│ │ ├── ConditionQueryHandler.test.d.ts
│ │ ├── ConditionQueryHandler.test.js
│ │ ├── DefaultConvention.test.d.ts
│ │ ├── DefaultConvention.test.js
│ │ ├── ExecutorUtils.test.d.ts
│ │ ├── ExecutorUtils.test.js
│ │ ├── QueryCondition.test.d.ts
│ │ └── QueryCondition.test.js
│ ├── query-log
│ ├── FlipFlopQueryLog.test.d.ts
│ └── FlipFlopQueryLog.test.js
│ ├── relations
│ ├── RelationData.test.d.ts
│ ├── RelationData.test.js
│ ├── RelationDataBucket.test.d.ts
│ ├── RelationDataBucket.test.js
│ ├── RelationDenifitionFinder.test.d.ts
│ ├── RelationDenifitionFinder.test.js
│ ├── RelationUtilities.test.d.ts
│ ├── RelationUtilities.test.js
│ ├── Relationship.test.d.ts
│ ├── Relationship.test.js
│ ├── RelationshipFactory.test.d.ts
│ ├── RelationshipFactory.test.js
│ └── relationships
│ │ ├── BelongsTo.test.d.ts
│ │ ├── BelongsTo.test.js
│ │ ├── BelongsToMany.test.d.ts
│ │ ├── BelongsToMany.test.js
│ │ ├── HasMany.test.d.ts
│ │ ├── HasMany.test.js
│ │ ├── HasOne.test.d.ts
│ │ ├── HasOne.test.js
│ │ ├── HasOneOrMany.test.d.ts
│ │ ├── HasOneOrMany.test.js
│ │ ├── ManyToMany.test.d.ts
│ │ ├── ManyToMany.test.js
│ │ ├── MorphMany.test.d.ts
│ │ ├── MorphMany.test.js
│ │ ├── MorphOne.test.d.ts
│ │ ├── MorphOne.test.js
│ │ ├── MorphTo.test.d.ts
│ │ ├── MorphTo.test.js
│ │ ├── executors
│ │ ├── HasManyExecutor.test.d.ts
│ │ ├── HasManyExecutor.test.js
│ │ ├── HasOneExecutor.test.d.ts
│ │ ├── HasOneExecutor.test.js
│ │ ├── HasOneOrManyExecutor.test.d.ts
│ │ ├── HasOneOrManyExecutor.test.js
│ │ ├── MorphOneOrManyExecutor.test.d.ts
│ │ └── MorphOneOrManyExecutor.test.js
│ │ └── pivot
│ │ ├── PivotModel.test.d.ts
│ │ └── PivotModel.test.js
│ └── util
│ ├── ClassSetting.test.d.ts
│ ├── ClassSetting.test.js
│ ├── PrototypeManager.test.d.ts
│ ├── PrototypeManager.test.js
│ ├── SettingType.test.d.ts
│ ├── SettingType.test.js
│ ├── factory.test.d.ts
│ ├── factory.test.js
│ ├── functions.test.d.ts
│ ├── functions.test.js
│ ├── helpers.test.d.ts
│ ├── helpers.test.js
│ ├── isPromise.test.d.ts
│ └── isPromise.test.js
├── lib
├── builtin.ts
├── constants.ts
├── contracts
│ ├── Driver.ts
│ ├── DriverProvider.ts
│ ├── FactoryBuilder.ts
│ ├── FactoryManager.ts
│ ├── MemoryDataSource.ts
│ ├── MemoryDataSourceProvider.ts
│ ├── MomentProvider.ts
│ └── QueryLog.ts
├── data
│ ├── DataBuffer.ts
│ ├── DataCollector.ts
│ └── DataConditionMatcher.ts
├── definitions
│ ├── collect.js
│ │ └── index.d.ts
│ ├── data
│ │ ├── IDataBuffer.ts
│ │ ├── IDataCollector.ts
│ │ └── IDataReader.ts
│ ├── driver
│ │ ├── IExecutor.ts
│ │ └── IExecutorFactory.ts
│ ├── factory
│ │ └── IFactoryDefinition.ts
│ ├── features
│ │ ├── IEventFeature.ts
│ │ ├── IFeature.ts
│ │ ├── IFillableFeature.ts
│ │ ├── IQueryFeature.ts
│ │ ├── IRecordExecutor.ts
│ │ ├── IRecordManager.ts
│ │ ├── IRelationFeature.ts
│ │ ├── ISerializationFeature.ts
│ │ ├── ISettingFeature.ts
│ │ ├── ISoftDeletesFeature.ts
│ │ └── ITimestampsFeature.ts
│ ├── model
│ │ ├── IModel.ts
│ │ ├── IModelEvent.ts
│ │ ├── IModelFillable.ts
│ │ ├── IModelRecord.ts
│ │ ├── IModelRelation.ts
│ │ ├── IModelSerialization.ts
│ │ ├── IModelSoftDeletes.ts
│ │ └── IModelTimestamps.ts
│ ├── query-builders
│ │ ├── IConditionMatcher.ts
│ │ ├── IConvention.ts
│ │ ├── IQueryBuilder.ts
│ │ ├── IQueryBuilderFactory.ts
│ │ ├── IQueryBuilderHandler.ts
│ │ └── IQueryExecutor.ts
│ ├── query-grammars
│ │ ├── IAdvancedQuery.ts
│ │ ├── IBasicConditionQuery.ts
│ │ ├── IBasicQuery.ts
│ │ ├── IConditionQuery.ts
│ │ ├── IExecuteQuery.ts
│ │ ├── IQuery.ts
│ │ └── IRelationQuery.ts
│ ├── relations
│ │ ├── IBelongsToManyRelationship.ts
│ │ ├── IBelongsToRelationship.ts
│ │ ├── IHasManyRelationship.ts
│ │ ├── IHasOneRelationship.ts
│ │ ├── IManyToMany.ts
│ │ ├── IMorphManyRelationship.ts
│ │ ├── IMorphOneRelationship.ts
│ │ ├── IMorphToRelationship.ts
│ │ ├── IPivotOptions.ts
│ │ ├── IRelationData.ts
│ │ ├── IRelationDataBucket.ts
│ │ ├── IRelationship.ts
│ │ └── IRelationshipFactory.ts
│ └── utils
│ │ └── IClassSetting.ts
├── drivers
│ ├── DriverBase.ts
│ ├── ExecutorBase.ts
│ ├── QueryLogBase.ts
│ ├── Record.ts
│ ├── RecordConditionMatcher.ts
│ ├── RecordConditionMatcherFactory.ts
│ ├── RecordDataReader.ts
│ ├── RecordDataSourceBase.ts
│ ├── RecordExecutorBase.ts
│ ├── RecordManager.ts
│ ├── RecordManagerBase.ts
│ └── memory
│ │ ├── MemoryDataSource.ts
│ │ ├── MemoryDriver.ts
│ │ ├── MemoryExecutorFactory.ts
│ │ ├── MemoryQueryBuilder.ts
│ │ ├── MemoryQueryBuilderFactory.ts
│ │ ├── MemoryQueryBuilderHandler.ts
│ │ ├── MemoryQueryExecutor.ts
│ │ ├── MemoryQueryLog.ts
│ │ └── MemoryRecordExecutor.ts
├── errors
│ ├── NotFoundError.ts
│ ├── RelationNotDefinedError.ts
│ └── RelationNotFoundInNewInstanceError.ts
├── facades
│ ├── container.ts
│ └── global
│ │ ├── DriverProviderFacade.ts
│ │ ├── FactoryFacade.ts
│ │ ├── MemoryDataSourceProviderFacade.ts
│ │ ├── MomentProviderFacade.ts
│ │ └── QueryLogFacade.ts
├── factory
│ ├── FactoryBuilder.ts
│ └── FactoryManager.ts
├── features
│ ├── EventFeature.ts
│ ├── FeatureBase.ts
│ ├── FillableFeature.ts
│ ├── QueryFeature.ts
│ ├── RelationFeature.ts
│ ├── SerializationFeature.ts
│ ├── SettingFeature.ts
│ ├── SoftDeletesFeature.ts
│ ├── TimestampsFeature.ts
│ └── mixin
│ │ ├── EventPublicApi.ts
│ │ ├── FillablePublicApi.ts
│ │ ├── RecordManagerPublicApi.ts
│ │ ├── RelationPublicApi.ts
│ │ ├── SerializationPublicApi.ts
│ │ ├── SoftDeletesPublicApi.ts
│ │ └── TimestampsPublicApi.ts
├── index.ts
├── model
│ ├── Model.ts
│ ├── ModelEvent.ts
│ └── ModelProxyHandler.ts
├── providers
│ ├── DriverProvider.ts
│ ├── MemoryDataSourceProvider.ts
│ └── MomentProvider.ts
├── query-builders
│ ├── QueryBuilder.ts
│ ├── QueryBuilderHandlerBase.ts
│ ├── mixin
│ │ ├── AdvancedQuery.ts
│ │ ├── ConditionQuery.ts
│ │ ├── ExecuteQuery.ts
│ │ ├── Query.ts
│ │ └── RelationQuery.ts
│ └── shared
│ │ ├── BasicQuery.ts
│ │ ├── BasicQueryConverter.ts
│ │ ├── ConditionQueryHandler.ts
│ │ ├── DefaultConvention.ts
│ │ ├── ExecutorUtils.ts
│ │ ├── Operator.ts
│ │ └── QueryCondition.ts
├── query-log
│ └── FlipFlopQueryLog.ts
├── relations
│ ├── RelationData.ts
│ ├── RelationDataBucket.ts
│ ├── RelationDefinitionFinder.ts
│ ├── RelationUtilities.ts
│ ├── Relationship.ts
│ ├── RelationshipFactory.ts
│ ├── RelationshipType.ts
│ └── relationships
│ │ ├── BelongsTo.ts
│ │ ├── BelongsToMany.ts
│ │ ├── HasMany.ts
│ │ ├── HasOne.ts
│ │ ├── HasOneOrMany.ts
│ │ ├── ManyToMany.ts
│ │ ├── MorphMany.ts
│ │ ├── MorphOne.ts
│ │ ├── MorphTo.ts
│ │ ├── executors
│ │ ├── HasManyExecutor.ts
│ │ ├── HasOneExecutor.ts
│ │ ├── HasOneOrManyExecutor.ts
│ │ └── MorphOneOrManyExecutor.ts
│ │ └── pivot
│ │ └── PivotModel.ts
└── util
│ ├── ClassSetting.ts
│ ├── PrototypeManager.ts
│ ├── SettingType.ts
│ ├── accessors.ts
│ ├── factory.ts
│ ├── functions.ts
│ ├── helpers.ts
│ └── isPromise.ts
├── najs-eloquent.code-workspace
├── najs-eloquent.png
├── package-lock.json
├── package.json
├── test
├── _integration
│ ├── model
│ │ ├── ModelEvent.integration.test.ts
│ │ ├── ModelFillable.integration.test.ts
│ │ └── ModelSerialization.integration.test.ts
│ └── relation
│ │ ├── BelongsToMany.softDeletes.test.ts
│ │ ├── BelongsToMany.test.ts
│ │ ├── BelongsToMany.timestamps.test.ts
│ │ ├── HasMany.test.ts
│ │ ├── HasOne.test.ts
│ │ ├── ManyToMany.PivotDefinition.test.ts
│ │ ├── MorphMany.test.ts
│ │ └── MorphOne.test.ts
├── _syntax
│ └── Factory.test.ts
├── data
│ ├── DataBuffer.test.ts
│ ├── DataCollector.test.ts
│ └── DataConditionMatcher.test.ts
├── drivers
│ ├── DriverBase.test.ts
│ ├── ExecutorBase.test.ts
│ ├── QueryLogBase.test.ts
│ ├── Record.test.ts
│ ├── RecordConditionMatcher.test.ts
│ ├── RecordConditionMatcherFactory.test.ts
│ ├── RecordDataReader.test.ts
│ ├── RecordDataSourceBase.test.ts
│ ├── RecordExecutorBase.test.ts
│ ├── RecordManager.test.ts
│ ├── RecordManagerBase.test.ts
│ └── memory
│ │ ├── MemoryDataSource.test.ts
│ │ ├── MemoryExecutorFactory.test.ts
│ │ ├── MemoryQueryBuilder.test.ts
│ │ ├── MemoryQueryBuilderFactory.test.ts
│ │ ├── MemoryQueryBuilderHandler.test.ts
│ │ ├── MemoryQueryExecutor.test.ts
│ │ ├── MemoryQueryLog.test.ts
│ │ └── MemoryRecordExecutor.test.ts
├── facades
│ ├── container.test.ts
│ └── global
│ │ ├── EloquentDriverProviderFacade.test.ts
│ │ ├── FactoryFacade.test.ts
│ │ ├── MemoryDataSourceProviderFacade.test.ts
│ │ ├── MomentProviderFacade.test.ts
│ │ └── QueryLogFacade.test.ts
├── factory
│ ├── FactoryBuilder.test.ts
│ └── FactoryManager.test.ts
├── features
│ ├── EventFeature.test.ts
│ ├── FeatureBase.test.ts
│ ├── FillableFeature.test.ts
│ ├── QueryFeature.test.ts
│ ├── RelationFeature.test.ts
│ ├── SerializationFeature.test.ts
│ ├── SettingFeature.test.ts
│ ├── SoftDeletesFeature.test.ts
│ ├── TimestampsFeature.test.ts
│ └── mixin
│ │ ├── EventPublicApi.test.ts
│ │ ├── FillablePublicApi.test.ts
│ │ ├── RecordManagerPublicApi.test.ts
│ │ ├── RelationPublicApi.test.ts
│ │ ├── SerializationPublicApi.test.ts
│ │ ├── SoftDeletesPublicApi.test.ts
│ │ └── TimestampsPublicApi.test.ts
├── model
│ ├── Model.test.ts
│ └── ModelProxyHandler.test.ts
├── providers
│ ├── DriverProvider.test.ts
│ ├── MemoryDataSourceProvider.test.ts
│ └── MomentProvider.test.ts
├── query-builders
│ ├── QueryBuilder.test.ts
│ ├── QueryBuilderHandlerBase.test.ts
│ ├── mixin
│ │ ├── AdvancedQuery.test.ts
│ │ ├── ConditionQuery.test.ts
│ │ ├── ExecuteQuery.test.ts
│ │ ├── Query.test.ts
│ │ └── RelationQuery.test.ts
│ └── shared
│ │ ├── BasicQuery.test.ts
│ │ ├── BasicQueryConverter.test.ts
│ │ ├── ConditionQueryHandler.test.ts
│ │ ├── DefaultConvention.test.ts
│ │ ├── ExecutorUtils.test.ts
│ │ └── QueryCondition.test.ts
├── query-log
│ └── FlipFlopQueryLog.test.ts
├── relations
│ ├── RelationData.test.ts
│ ├── RelationDataBucket.test.ts
│ ├── RelationDenifitionFinder.test.ts
│ ├── RelationUtilities.test.ts
│ ├── Relationship.test.ts
│ ├── RelationshipFactory.test.ts
│ └── relationships
│ │ ├── BelongsTo.test.ts
│ │ ├── BelongsToMany.test.ts
│ │ ├── HasMany.test.ts
│ │ ├── HasOne.test.ts
│ │ ├── HasOneOrMany.test.ts
│ │ ├── ManyToMany.test.ts
│ │ ├── MorphMany.test.ts
│ │ ├── MorphOne.test.ts
│ │ ├── MorphTo.test.ts
│ │ ├── executors
│ │ ├── HasManyExecutor.test.ts
│ │ ├── HasOneExecutor.test.ts
│ │ ├── HasOneOrManyExecutor.test.ts
│ │ └── MorphOneOrManyExecutor.test.ts
│ │ └── pivot
│ │ └── PivotModel.test.ts
└── util
│ ├── ClassSetting.test.ts
│ ├── PrototypeManager.test.ts
│ ├── SettingType.test.ts
│ ├── factory.test.ts
│ ├── functions.test.ts
│ ├── helpers.test.ts
│ └── isPromise.test.ts
├── tsconfig.json
├── tslint.json
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 | integration/dist
61 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 | .vscode
61 | lib
62 | test
63 | .travis.yml
64 | tsconfig.json
65 | tslint.json
66 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | env:
2 | global:
3 | - CC_TEST_REPORTER_ID=f4c6979c40052fdc70c9ec712fe23f6c0a1fd0c52f2373a5b84334e92e25ddbd
4 | language: node_js
5 |
6 | jobs:
7 | include:
8 | - stage: test
9 | node_js: node
10 | os: linux
11 | before_script:
12 | - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
13 | - chmod +x ./cc-test-reporter
14 | - npm run build || exit 1
15 | - sleep 5
16 | - ./cc-test-reporter before-build
17 | after_success:
18 | - 'cat ./coverage/lcov.info | coveralls'
19 | - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
20 |
21 | - stage: platform-test
22 | node_js: 'lts/carbon'
23 | os: linux
24 | before_script: sleep 10
25 |
26 | install:
27 | - yarn install
28 |
29 | script:
30 | - npm run test
31 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "eg2.tslint",
4 | "k--kato.intellij-idea-keybindings",
5 | "steoates.autoimport",
6 | "esbenp.prettier-vscode",
7 | "streetsidesoftware.code-spell-checker",
8 | "msjsdiag.debugger-for-chrome",
9 | "PeterJausovec.vscode-docker",
10 | "alefragnani.bookmarks",
11 | "donjayamanne.githistory",
12 | "xabikos.javascriptsnippets",
13 | "Shan.code-settings-sync",
14 | "robertohuertasm.vscode-icons",
15 | "wayou.vscode-todo-highlight"
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.tabSize": 2,
3 | "editor.codeLens": false,
4 | "editor.formatOnSave": true,
5 | "editor.rulers": [
6 | 120
7 | ],
8 | "editor.tabCompletion": true,
9 | "typescript.referencesCodeLens.enabled": true,
10 | "tslint.ignoreDefinitionFiles": false,
11 | "tslint.autoFixOnSave": true,
12 | "tslint.exclude": "**/node_modules/**/*",
13 | "emmet.showExpandedAbbreviation": "never",
14 | "prettier.semi": false,
15 | "prettier.singleQuote": true,
16 | "prettier.tabWidth": 2,
17 | "prettier.printWidth": 120,
18 | "prettier.ignorePath": ".prettierignore",
19 | "terminal.integrated.fontFamily": "Meslo LG M for Powerline",
20 | "terminal.integrated.fontSize": 12,
21 | "cSpell.words": [
22 | "najs",
23 | "autoload",
24 | "overridable",
25 | "Mailjet",
26 | "Queueable",
27 | "deserialize",
28 | "timestamps",
29 | "mutators"
30 | ]
31 | }
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "label": "Build",
9 | "type": "npm",
10 | "group": "build",
11 | "command": "build"
12 | },
13 | {
14 | "label": "Test",
15 | "type": "shell",
16 | "group": "test",
17 | "command": "npm run build && npm test"
18 | },
19 | {
20 | "label": "Coverage",
21 | "type": "shell",
22 | "command": "npm run coverage"
23 | }
24 | ]
25 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Najs
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/dist/lib/contracts/Driver.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | ///
7 | ///
8 | ///
9 | ///
10 | ///
11 |
--------------------------------------------------------------------------------
/dist/lib/contracts/DriverProvider.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/dist/lib/contracts/FactoryBuilder.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/contracts/FactoryManager.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | var Model = NajsEloquent.Model.IModel;
6 |
--------------------------------------------------------------------------------
/dist/lib/contracts/MemoryDataSource.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | declare namespace Najs.Contracts.Eloquent {
3 | interface MemoryDataSource extends Najs.Contracts.Autoload, NajsEloquent.Data.IDataBuffer {
4 | /**
5 | * Read data from data source to buffer.
6 | */
7 | read(): Promise;
8 | /**
9 | * Write buffer to data source.
10 | */
11 | write(): Promise;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/dist/lib/contracts/MemoryDataSource.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
--------------------------------------------------------------------------------
/dist/lib/contracts/MemoryDataSourceProvider.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
--------------------------------------------------------------------------------
/dist/lib/contracts/MomentProvider.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace Najs.Contracts.Eloquent {
2 | interface MomentProvider extends Najs.Contracts.Autoload {
3 | /**
4 | * Make moment instance
5 | */
6 | make(...args: any[]): T;
7 | /**
8 | * Determine that the given value is Moment or not
9 | */
10 | isMoment(value: any): boolean;
11 | /**
12 | * Set now value to the Moment instance
13 | */
14 | setNow(cb: () => any): this;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/dist/lib/contracts/MomentProvider.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/contracts/MomentProvider.js
--------------------------------------------------------------------------------
/dist/lib/contracts/QueryLog.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/contracts/QueryLog.js
--------------------------------------------------------------------------------
/dist/lib/data/DataBuffer.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | export declare class DataBuffer implements NajsEloquent.Data.IDataBuffer {
4 | protected primaryKeyName: string;
5 | protected reader: NajsEloquent.Data.IDataReader;
6 | protected buffer: Map;
7 | constructor(primaryKeyName: string, reader: NajsEloquent.Data.IDataReader);
8 | getPrimaryKeyName(): string;
9 | getDataReader(): NajsEloquent.Data.IDataReader;
10 | getBuffer(): Map;
11 | add(data: T): this;
12 | remove(data: T): this;
13 | find(cb: (item: T) => boolean): T | undefined;
14 | filter(cb: (item: T) => boolean): T[];
15 | map(cb: (item: T) => V): V[];
16 | reduce(cb: ((memo: V, item: T) => V), initialValue: V): V;
17 | keys(): V[];
18 | [Symbol.iterator](): IterableIterator;
19 | getCollector(): NajsEloquent.Data.IDataCollector;
20 | }
21 |
--------------------------------------------------------------------------------
/dist/lib/data/DataConditionMatcher.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | export declare class DataConditionMatcher implements NajsEloquent.QueryBuilder.IConditionMatcher {
4 | protected field: string;
5 | protected operator: string;
6 | protected originalValue: any;
7 | protected value: any;
8 | protected reader: NajsEloquent.Data.IDataReader;
9 | constructor(field: string, operator: string, value: any, reader: NajsEloquent.Data.IDataReader);
10 | isEqual(record: T): boolean;
11 | isLessThan(record: T): boolean;
12 | isLessThanOrEqual(record: T): boolean;
13 | isGreaterThan(record: T): boolean;
14 | isGreaterThanOrEqual(record: T): boolean;
15 | isInArray(record: T): boolean;
16 | isMatch(record: T): boolean;
17 | }
18 |
--------------------------------------------------------------------------------
/dist/lib/definitions/data/IDataBuffer.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/data/IDataCollector.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/data/IDataReader.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace NajsEloquent.Data {
2 | interface IDataReader {
3 | /**
4 | * Get an attribute of data.
5 | *
6 | * @param {T} data
7 | * @param {string} field
8 | */
9 | getAttribute(data: T, field: string): R;
10 | /**
11 | * Pick some fields in data.
12 | *
13 | * @param {object} data
14 | * @param {string[]} fields
15 | */
16 | pick(data: T, fields: string[]): T;
17 | /**
18 | * Convert give value to comparable value if needed, typically convert value like ObjectID to string.
19 | *
20 | * @param {mixed} value
21 | */
22 | toComparable(value: any): R;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/dist/lib/definitions/data/IDataReader.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/data/IDataReader.js
--------------------------------------------------------------------------------
/dist/lib/definitions/driver/IExecutor.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace NajsEloquent.Driver {
2 | interface IExecutor {
3 | /**
4 | * Set execute mode, can set to "disabled" then nothing will executed in db.
5 | *
6 | * @param {string} mode
7 | */
8 | setExecuteMode(mode: 'default' | 'disabled'): this;
9 | /**
10 | * Determine that should execute a query/command or not.
11 | */
12 | shouldExecute(): boolean;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/dist/lib/definitions/driver/IExecutor.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/driver/IExecutor.js
--------------------------------------------------------------------------------
/dist/lib/definitions/driver/IExecutorFactory.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | declare namespace NajsEloquent.Driver {
4 | interface IExecutorFactory {
5 | makeRecordExecutor(model: Model.ModelInternal, record: any): Feature.IRecordExecutor;
6 | makeQueryExecutor(handler: QueryBuilder.IQueryBuilderHandler): QueryBuilder.IQueryExecutor;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/dist/lib/definitions/driver/IExecutorFactory.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/dist/lib/definitions/factory/IFactoryDefinition.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | declare namespace NajsEloquent.Factory {
3 | interface IFactoryDefinition {
4 | (faker: Chance.Chance, attributes?: object): object;
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/dist/lib/definitions/factory/IFactoryDefinition.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/IEventFeature.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/IFeature.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | declare namespace NajsEloquent.Feature {
3 | interface IFeature extends Najs.Contracts.Autoload {
4 | /**
5 | * Attach the public api to prototype of model, it also applies the shared properties to all model instances.
6 | *
7 | * @param {object} prototype
8 | * @param {object[]} bases
9 | * @param {Driver} driver
10 | */
11 | attachPublicApi(prototype: object, bases: object[], driver: Najs.Contracts.Eloquent.Driver): void;
12 | /**
13 | * Get the feature name.
14 | */
15 | getFeatureName(): string;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/IFeature.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/IFillableFeature.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/IQueryFeature.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | declare namespace NajsEloquent.Feature {
4 | interface IQueryFeature extends IFeature {
5 | /**
6 | * Create new query builder for model.
7 | */
8 | newQuery(model: M): NajsEloquent.QueryBuilder.IQueryBuilder;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/IQueryFeature.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/IRecordExecutor.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | declare namespace NajsEloquent.Feature {
4 | interface IRecordExecutor extends Driver.IExecutor {
5 | /**
6 | * Execute create for record and model.
7 | */
8 | create(): Promise;
9 | /**
10 | * Execute update for record and model.
11 | */
12 | update(): Promise;
13 | /**
14 | * Execute hard delete for record and model.
15 | */
16 | hardDelete(): Promise;
17 | /**
18 | * Execute soft delete for record and model.
19 | */
20 | softDelete(): Promise;
21 | /**
22 | * Execute restore from soft delete for record and model.
23 | */
24 | restore(): Promise;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/IRecordExecutor.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/IRecordManager.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/IRelationFeature.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/ISerializationFeature.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/ISettingFeature.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/ISoftDeletesFeature.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/ITimestampsFeature.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | declare namespace NajsEloquent.Feature {
4 | interface ITimestampsSetting {
5 | createdAt: string;
6 | updatedAt: string;
7 | }
8 | interface ITimestampsFeature extends IFeature {
9 | /**
10 | * Determine the model is using timestamps or not.
11 | */
12 | hasTimestamps(model: Model.IModel): boolean;
13 | /**
14 | * Get timestamps setting.
15 | *
16 | * Note: It's returns default timestamps even the model is not using timestamps.
17 | */
18 | getTimestampsSetting(model: Model.IModel): ITimestampsSetting;
19 | /**
20 | * Update the model's update timestamp.
21 | */
22 | touch(model: Model.IModel): void;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/dist/lib/definitions/features/ITimestampsFeature.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/dist/lib/definitions/model/IModel.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | ///
7 | ///
8 | ///
9 | ///
10 | ///
11 | ///
12 | var NajsEloquent;
13 | (function (NajsEloquent) {
14 | var Model;
15 | (function (Model) {
16 | })(Model = NajsEloquent.Model || (NajsEloquent.Model = {}));
17 | })(NajsEloquent || (NajsEloquent = {}));
18 |
--------------------------------------------------------------------------------
/dist/lib/definitions/model/IModelEvent.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace NajsEloquent.Model {
2 | interface IModelEvent extends Najs.Contracts.Event.AsyncEventEmitter {
3 | /**
4 | * Trigger the event with both global and local EventEmitter.
5 | *
6 | * Listener in local EventEmitter triggered with the same args, in Global EventEmitter automatically add the model
7 | * instance as the first argument. For example:
8 | *
9 | * model.fire('test', [1, 2])
10 | *
11 | * then:
12 | *
13 | * local_listener(data) // data = [1, 2]
14 | * global_listener(model, data) // model triggered, data = [1, 2]
15 | *
16 | * @param {string} eventName event's name
17 | * @param {mixed} args arguments
18 | */
19 | fire(eventName: string, args?: any): Promise;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/dist/lib/definitions/model/IModelEvent.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/model/IModelFillable.js:
--------------------------------------------------------------------------------
1 | var NajsEloquent;
2 | (function (NajsEloquent) {
3 | var Model;
4 | (function (Model) {
5 | })(Model = NajsEloquent.Model || (NajsEloquent.Model = {}));
6 | })(NajsEloquent || (NajsEloquent = {}));
7 |
--------------------------------------------------------------------------------
/dist/lib/definitions/model/IModelRecord.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/model/IModelRecord.js
--------------------------------------------------------------------------------
/dist/lib/definitions/model/IModelRelation.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/dist/lib/definitions/model/IModelSerialization.js:
--------------------------------------------------------------------------------
1 | var NajsEloquent;
2 | (function (NajsEloquent) {
3 | var Model;
4 | (function (Model) {
5 | })(Model = NajsEloquent.Model || (NajsEloquent.Model = {}));
6 | })(NajsEloquent || (NajsEloquent = {}));
7 |
--------------------------------------------------------------------------------
/dist/lib/definitions/model/IModelSoftDeletes.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | declare namespace NajsEloquent.Model {
3 | class IModelSoftDeletes {
4 | /**
5 | * Soft deletes setting
6 | */
7 | protected softDeletes?: Feature.ISoftDeletesSetting | boolean;
8 | }
9 | interface IModelSoftDeletes {
10 | /**
11 | * Determine model is soft-deleted or not.
12 | */
13 | trashed(): boolean;
14 | /**
15 | * Delete the model even soft delete is enabled.
16 | */
17 | forceDelete(): Promise;
18 | /**
19 | * Restore the model, only applied for model which has soft delete setting is enabled.
20 | */
21 | restore(): Promise;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/dist/lib/definitions/model/IModelSoftDeletes.js:
--------------------------------------------------------------------------------
1 | ///
2 | var NajsEloquent;
3 | (function (NajsEloquent) {
4 | var Model;
5 | (function (Model) {
6 | })(Model = NajsEloquent.Model || (NajsEloquent.Model = {}));
7 | })(NajsEloquent || (NajsEloquent = {}));
8 |
--------------------------------------------------------------------------------
/dist/lib/definitions/model/IModelTimestamps.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | declare namespace NajsEloquent.Model {
3 | class IModelTimestamps {
4 | /**
5 | * Timestamps setting.
6 | */
7 | protected timestamps?: Feature.ITimestampsSetting | boolean;
8 | }
9 | interface IModelTimestamps {
10 | /**
11 | * Update the model's update timestamp.
12 | */
13 | touch(): this;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/dist/lib/definitions/model/IModelTimestamps.js:
--------------------------------------------------------------------------------
1 | ///
2 | var NajsEloquent;
3 | (function (NajsEloquent) {
4 | var Model;
5 | (function (Model) {
6 | })(Model = NajsEloquent.Model || (NajsEloquent.Model = {}));
7 | })(NajsEloquent || (NajsEloquent = {}));
8 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-builders/IConditionMatcher.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace NajsEloquent.QueryBuilder {
2 | type GroupQueryConditionData = {
3 | bool: 'and' | 'or';
4 | queries: Array;
5 | };
6 | type SingleQueryConditionData = {
7 | bool: 'and' | 'or';
8 | field: string;
9 | operator: QueryGrammar.Operator;
10 | value: any;
11 | };
12 | interface IConditionMatcher {
13 | isMatch(record: T): boolean;
14 | }
15 | interface IConditionMatcherFactory {
16 | make(data: SingleQueryConditionData): IConditionMatcher;
17 | transform(matcher: IConditionMatcher): any;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-builders/IConditionMatcher.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/query-builders/IConditionMatcher.js
--------------------------------------------------------------------------------
/dist/lib/definitions/query-builders/IConvention.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace NajsEloquent.QueryBuilder {
2 | interface IConvention {
3 | /**
4 | * Format the given name
5 | *
6 | * @param {string} name
7 | */
8 | formatFieldName(name: string): string;
9 | /**
10 | * Get null value for given name
11 | *
12 | * @param {string} name
13 | */
14 | getNullValueFor(name: string): any;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-builders/IConvention.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/query-builders/IConvention.js
--------------------------------------------------------------------------------
/dist/lib/definitions/query-builders/IQueryBuilder.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | declare namespace NajsEloquent.QueryBuilder {
7 | class IQueryBuilder {
8 | protected handler: Handler;
9 | }
10 | interface IQueryBuilder extends QueryGrammar.IQuery, QueryGrammar.IConditionQuery, QueryGrammar.IExecuteQuery, QueryGrammar.IAdvancedQuery, QueryGrammar.IRelationQuery {
11 | }
12 | type QueryBuilderInternal = IQueryBuilder & {
13 | handler: NajsEloquent.QueryBuilder.IQueryBuilderHandler;
14 | };
15 | }
16 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-builders/IQueryBuilder.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | var NajsEloquent;
7 | (function (NajsEloquent) {
8 | var QueryBuilder;
9 | (function (QueryBuilder) {
10 | // export type OmittedResult = Pick) | (keyof K)>>
11 | // export type OmittedQueryBuilderResult = Pick>>
12 | })(QueryBuilder = NajsEloquent.QueryBuilder || (NajsEloquent.QueryBuilder = {}));
13 | })(NajsEloquent || (NajsEloquent = {}));
14 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-builders/IQueryBuilderFactory.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | declare namespace NajsEloquent.QueryBuilder {
5 | interface IQueryBuilderFactory extends Najs.Contracts.Autoload {
6 | /**
7 | * Make new query builder instance from a model.
8 | *
9 | * @param {Model} model
10 | */
11 | make(model: Model.IModel): IQueryBuilder;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-builders/IQueryBuilderFactory.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-builders/IQueryBuilderHandler.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-builders/IQueryExecutor.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-grammars/IAdvancedQuery.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-grammars/IBasicConditionQuery.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/query-grammars/IBasicConditionQuery.js
--------------------------------------------------------------------------------
/dist/lib/definitions/query-grammars/IBasicQuery.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace NajsEloquent.QueryGrammar {
2 | interface IBasicQuery {
3 | /**
4 | * Set the columns or fields to be selected.
5 | *
6 | * @param {string|string[]} fields
7 | */
8 | select(...fields: Array): this;
9 | /**
10 | * Set the "limit" value of the query.
11 | * @param {number} records
12 | */
13 | limit(record: number): this;
14 | /**
15 | * Add an "order by" clause to the query.
16 | *
17 | * @param {string} field
18 | */
19 | orderBy(field: string): this;
20 | /**
21 | * Add an "order by" clause to the query.
22 | *
23 | * @param {string} field
24 | * @param {string} direction
25 | */
26 | orderBy(field: string, direction: 'asc' | 'desc'): this;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-grammars/IBasicQuery.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/query-grammars/IBasicQuery.js
--------------------------------------------------------------------------------
/dist/lib/definitions/query-grammars/IConditionQuery.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-grammars/IExecuteQuery.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | declare namespace NajsEloquent.QueryGrammar {
3 | interface IExecuteQuery {
4 | /**
5 | * Execute query and returns count of records.
6 | */
7 | count(): Promise;
8 | /**
9 | * Update records which match the query with data.
10 | *
11 | * @param {Object} data
12 | */
13 | update(data: Object): Promise;
14 | /**
15 | * Delete all records which match the query.
16 | */
17 | delete(): Promise;
18 | /**
19 | * Restore all records which match the query.
20 | */
21 | restore(): Promise;
22 | /**
23 | * Execute query and returns raw result.
24 | */
25 | execute(): Promise;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-grammars/IExecuteQuery.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-grammars/IQuery.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-grammars/IRelationQuery.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace NajsEloquent.QueryGrammar {
2 | interface IRelationQuery {
3 | /**
4 | * Load given relations name when the query get executed.
5 | *
6 | * @param {string|string[]} relations
7 | */
8 | with(...relations: Array): this;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/dist/lib/definitions/query-grammars/IRelationQuery.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/query-grammars/IRelationQuery.js
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IBelongsToManyRelationship.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IBelongsToRelationship.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace NajsEloquent.Relation {
2 | interface IBelongsToRelationship extends IRelationship {
3 | dissociate(): void;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IBelongsToRelationship.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/relations/IBelongsToRelationship.js
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IHasManyRelationship.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | declare namespace NajsEloquent.Relation {
3 | interface IHasManyRelationship extends IRelationship> {
4 | associate(...models: Array>): this;
5 | dissociate(...models: Array>): this;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IHasManyRelationship.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IHasOneRelationship.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace NajsEloquent.Relation {
2 | interface IHasOneRelationship extends IRelationship {
3 | associate(model: T): void;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IHasOneRelationship.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/relations/IHasOneRelationship.js
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IManyToMany.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IMorphManyRelationship.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | declare namespace NajsEloquent.Relation {
3 | interface IMorphManyRelationship extends IRelationship> {
4 | associate(...models: Array>): this;
5 | dissociate(...models: Array>): this;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IMorphManyRelationship.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IMorphOneRelationship.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace NajsEloquent.Relation {
2 | interface IMorphOneRelationship extends IRelationship {
3 | associate(model: T): void;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IMorphOneRelationship.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/relations/IMorphOneRelationship.js
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IMorphToRelationship.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace NajsEloquent.Relation {
2 | interface IMorphToRelationship extends IRelationship {
3 | }
4 | }
5 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IMorphToRelationship.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/relations/IMorphToRelationship.js
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IPivotOptions.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace NajsEloquent.Relation {
2 | type PivotForeignKey = string;
3 | interface IPivotOptions {
4 | foreignKeys: [PivotForeignKey, PivotForeignKey];
5 | name?: string;
6 | fields?: Array;
7 | timestamps?: Feature.ITimestampsSetting;
8 | softDeletes?: Feature.ISoftDeletesSetting;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IPivotOptions.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/relations/IPivotOptions.js
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IRelationData.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | declare namespace NajsEloquent.Relation {
3 | interface IRelationData {
4 | getFactory(): IRelationshipFactory;
5 | isLoaded(): boolean;
6 | hasData(): boolean;
7 | getData(): T | undefined | null;
8 | setData(data: T | undefined | null): T | undefined | null;
9 | getLoadType(): 'unknown' | 'lazy' | 'eager';
10 | setLoadType(type: 'lazy' | 'eager'): this;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IRelationData.js:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IRelationDataBucket.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IRelationship.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/dist/lib/definitions/relations/IRelationshipFactory.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | ///
7 | ///
8 | ///
9 | var IModel = NajsEloquent.Model.IModel;
10 |
--------------------------------------------------------------------------------
/dist/lib/definitions/utils/IClassSetting.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace NajsEloquent.Util {
2 | interface ISettingReader {
3 | (staticValue?: T, sampleValue?: T, instanceValue?: T): T;
4 | }
5 | interface IClassSetting {
6 | /**
7 | * Read property setting via a setting reader.
8 | *
9 | * @param {string} property
10 | * @param {Function} reader
11 | */
12 | read(property: string, reader: ISettingReader): T;
13 | /**
14 | * Get the "sample" instance.
15 | */
16 | getSample(): T;
17 | /**
18 | * Get definition of the class.
19 | */
20 | getDefinition(): Function;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/dist/lib/definitions/utils/IClassSetting.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/najs-framework/najs-eloquent/99a322f2cb3c068ef0b64fe1109f2e16d421a944/dist/lib/definitions/utils/IClassSetting.js
--------------------------------------------------------------------------------
/dist/lib/drivers/ExecutorBase.d.ts:
--------------------------------------------------------------------------------
1 | export declare class ExecutorBase {
2 | private executeMode;
3 | setExecuteMode(mode: 'default' | 'disabled'): this;
4 | shouldExecute(): boolean;
5 | }
6 |
--------------------------------------------------------------------------------
/dist/lib/drivers/ExecutorBase.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | class ExecutorBase {
4 | constructor() {
5 | this.executeMode = 'default';
6 | }
7 | setExecuteMode(mode) {
8 | this.executeMode = mode;
9 | return this;
10 | }
11 | shouldExecute() {
12 | return this.executeMode !== 'disabled';
13 | }
14 | }
15 | exports.ExecutorBase = ExecutorBase;
16 |
--------------------------------------------------------------------------------
/dist/lib/drivers/QueryLogBase.d.ts:
--------------------------------------------------------------------------------
1 | export interface IQueryLogData {
2 | raw: string;
3 | result?: any;
4 | name?: string;
5 | action?: string;
6 | queryBuilderData: object;
7 | }
8 | export declare abstract class QueryLogBase {
9 | protected data: T;
10 | constructor();
11 | abstract getDefaultData(): T;
12 | getEmptyData(): IQueryLogData;
13 | queryBuilderData(key: string, value: any): this;
14 | name(name: string): this;
15 | action(action: string): this;
16 | raw(raw: any): this;
17 | raw(...raw: any[]): this;
18 | end(result: any): any;
19 | }
20 |
--------------------------------------------------------------------------------
/dist/lib/drivers/Record.d.ts:
--------------------------------------------------------------------------------
1 | export declare class Record {
2 | protected data: object;
3 | protected modified: string[];
4 | constructor(data?: object | Record);
5 | getAttribute(path: string): T;
6 | setAttribute(path: string, value: T): boolean;
7 | clearModified(): this;
8 | getModified(): string[];
9 | markModified(name: string): void;
10 | toObject(): object;
11 | }
12 |
--------------------------------------------------------------------------------
/dist/lib/drivers/Record.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | const lodash_1 = require("lodash");
4 | class Record {
5 | constructor(data) {
6 | if (data instanceof Record) {
7 | this.data = data.data;
8 | }
9 | else {
10 | this.data = data || {};
11 | }
12 | this.modified = [];
13 | }
14 | getAttribute(path) {
15 | return lodash_1.get(this.data, path);
16 | }
17 | setAttribute(path, value) {
18 | const originalValue = lodash_1.get(this.data, path);
19 | if (!lodash_1.isEqual(originalValue, value)) {
20 | lodash_1.set(this.data, path, value);
21 | this.markModified(path);
22 | }
23 | return true;
24 | }
25 | clearModified() {
26 | this.modified = [];
27 | return this;
28 | }
29 | getModified() {
30 | return this.modified;
31 | }
32 | markModified(name) {
33 | if (this.modified.indexOf(name) === -1) {
34 | this.modified.push(name);
35 | }
36 | }
37 | toObject() {
38 | return this.data;
39 | }
40 | }
41 | exports.Record = Record;
42 |
--------------------------------------------------------------------------------
/dist/lib/drivers/RecordConditionMatcher.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import IConditionMatcher = NajsEloquent.QueryBuilder.IConditionMatcher;
3 | import { Record } from './Record';
4 | import { DataConditionMatcher } from '../data/DataConditionMatcher';
5 | export declare class RecordConditionMatcher extends DataConditionMatcher implements IConditionMatcher {
6 | constructor(field: string, operator: string, value: any);
7 | toJSON(): object;
8 | }
9 |
--------------------------------------------------------------------------------
/dist/lib/drivers/RecordConditionMatcher.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | const DataConditionMatcher_1 = require("../data/DataConditionMatcher");
5 | const RecordDataReader_1 = require("./RecordDataReader");
6 | class RecordConditionMatcher extends DataConditionMatcher_1.DataConditionMatcher {
7 | constructor(field, operator, value) {
8 | super(field, operator, value, RecordDataReader_1.RecordDataReader);
9 | }
10 | toJSON() {
11 | return {
12 | field: this.field,
13 | operator: this.operator,
14 | value: this.value
15 | };
16 | }
17 | }
18 | exports.RecordConditionMatcher = RecordConditionMatcher;
19 |
--------------------------------------------------------------------------------
/dist/lib/drivers/RecordConditionMatcherFactory.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import IConditionMatcherFactory = NajsEloquent.QueryBuilder.IConditionMatcherFactory;
3 | import SingleQueryConditionData = NajsEloquent.QueryBuilder.SingleQueryConditionData;
4 | import { RecordConditionMatcher } from './RecordConditionMatcher';
5 | export declare class RecordConditionMatcherFactory implements IConditionMatcherFactory {
6 | static className: string;
7 | getClassName(): string;
8 | make(data: SingleQueryConditionData): RecordConditionMatcher;
9 | transform(matcher: RecordConditionMatcher): RecordConditionMatcher;
10 | }
11 |
--------------------------------------------------------------------------------
/dist/lib/drivers/RecordConditionMatcherFactory.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | const najs_binding_1 = require("najs-binding");
5 | const RecordConditionMatcher_1 = require("./RecordConditionMatcher");
6 | const constants_1 = require("../constants");
7 | class RecordConditionMatcherFactory {
8 | getClassName() {
9 | return constants_1.NajsEloquent.Driver.Memory.RecordConditionMatcherFactory;
10 | }
11 | make(data) {
12 | return new RecordConditionMatcher_1.RecordConditionMatcher(data.field, data.operator, data.value);
13 | }
14 | transform(matcher) {
15 | return matcher;
16 | }
17 | }
18 | RecordConditionMatcherFactory.className = constants_1.NajsEloquent.Driver.Memory.RecordConditionMatcherFactory;
19 | exports.RecordConditionMatcherFactory = RecordConditionMatcherFactory;
20 | najs_binding_1.register(RecordConditionMatcherFactory, constants_1.NajsEloquent.Driver.Memory.RecordConditionMatcherFactory, true, true);
21 |
--------------------------------------------------------------------------------
/dist/lib/drivers/RecordDataReader.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import { Record } from './Record';
3 | export declare const RecordDataReader: NajsEloquent.Data.IDataReader;
4 |
--------------------------------------------------------------------------------
/dist/lib/drivers/RecordDataReader.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | const lodash_1 = require("lodash");
5 | const Record_1 = require("./Record");
6 | const helpers_1 = require("../util/helpers");
7 | exports.RecordDataReader = {
8 | getAttribute(data, field) {
9 | return this.toComparable(data.getAttribute(field));
10 | },
11 | pick(record, selectedFields) {
12 | const data = record.toObject();
13 | return new Record_1.Record(lodash_1.pick(data, selectedFields));
14 | },
15 | toComparable(value) {
16 | return helpers_1.isObjectId(value) ? value.toHexString() : value;
17 | }
18 | };
19 |
--------------------------------------------------------------------------------
/dist/lib/drivers/RecordDataSourceBase.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | import { Record } from './Record';
4 | import { DataBuffer } from '../data/DataBuffer';
5 | export declare abstract class RecordDataSourceBase extends DataBuffer implements Najs.Contracts.Eloquent.MemoryDataSource {
6 | protected modelName: string;
7 | constructor(model: NajsEloquent.Model.IModel);
8 | getModelName(): string;
9 | abstract getClassName(): string;
10 | abstract createPrimaryKeyIfNeeded(data: Record): string;
11 | abstract read(): Promise;
12 | abstract write(): Promise;
13 | add(data: Record): this;
14 | remove(data: Record): this;
15 | }
16 |
--------------------------------------------------------------------------------
/dist/lib/drivers/RecordDataSourceBase.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | ///
4 | Object.defineProperty(exports, "__esModule", { value: true });
5 | const RecordDataReader_1 = require("./RecordDataReader");
6 | const DataBuffer_1 = require("../data/DataBuffer");
7 | class RecordDataSourceBase extends DataBuffer_1.DataBuffer {
8 | constructor(model) {
9 | super(model.getPrimaryKeyName(), RecordDataReader_1.RecordDataReader);
10 | this.modelName = model.getModelName();
11 | }
12 | getModelName() {
13 | return this.modelName;
14 | }
15 | add(data) {
16 | this.createPrimaryKeyIfNeeded(data);
17 | return super.add(data);
18 | }
19 | remove(data) {
20 | this.createPrimaryKeyIfNeeded(data);
21 | return super.remove(data);
22 | }
23 | }
24 | exports.RecordDataSourceBase = RecordDataSourceBase;
25 |
--------------------------------------------------------------------------------
/dist/lib/drivers/memory/MemoryDataSource.d.ts:
--------------------------------------------------------------------------------
1 | import { Record } from '../Record';
2 | import { RecordDataSourceBase } from '../RecordDataSourceBase';
3 | export declare class MemoryDataSource extends RecordDataSourceBase {
4 | static className: string;
5 | getClassName(): string;
6 | createPrimaryKeyIfNeeded(data: Record): string;
7 | read(): Promise;
8 | write(): Promise;
9 | }
10 |
--------------------------------------------------------------------------------
/dist/lib/drivers/memory/MemoryDataSource.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | const najs_binding_1 = require("najs-binding");
4 | const bson_1 = require("bson");
5 | const constants_1 = require("../../constants");
6 | const RecordDataSourceBase_1 = require("../RecordDataSourceBase");
7 | class MemoryDataSource extends RecordDataSourceBase_1.RecordDataSourceBase {
8 | getClassName() {
9 | return constants_1.NajsEloquent.Driver.Memory.MemoryDataSource;
10 | }
11 | createPrimaryKeyIfNeeded(data) {
12 | const primaryKey = data.getAttribute(this.primaryKeyName);
13 | if (primaryKey) {
14 | return primaryKey;
15 | }
16 | const newId = new bson_1.ObjectId().toHexString();
17 | data.setAttribute(this.primaryKeyName, newId);
18 | return newId;
19 | }
20 | async read() {
21 | return true;
22 | }
23 | async write() {
24 | return true;
25 | }
26 | }
27 | MemoryDataSource.className = constants_1.NajsEloquent.Driver.Memory.MemoryDataSource;
28 | exports.MemoryDataSource = MemoryDataSource;
29 | najs_binding_1.register(MemoryDataSource, constants_1.NajsEloquent.Driver.Memory.MemoryDataSource);
30 |
--------------------------------------------------------------------------------
/dist/lib/drivers/memory/MemoryDriver.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | import '../RecordManager';
5 | import { DriverBase } from '../DriverBase';
6 | import { Record } from '../Record';
7 | import { MemoryQueryBuilderFactory } from './MemoryQueryBuilderFactory';
8 | export declare class MemoryDriver extends DriverBase {
9 | protected recordManager: NajsEloquent.Feature.IRecordManager;
10 | static Name: string;
11 | constructor();
12 | getClassName(): string;
13 | getRecordManager(): NajsEloquent.Feature.IRecordManager;
14 | makeQueryBuilderFactory(): MemoryQueryBuilderFactory;
15 | }
16 |
--------------------------------------------------------------------------------
/dist/lib/drivers/memory/MemoryExecutorFactory.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | import IModel = NajsEloquent.Model.IModel;
5 | import { Record } from '../Record';
6 | import { MemoryRecordExecutor } from './MemoryRecordExecutor';
7 | import { MemoryQueryBuilderHandler } from './MemoryQueryBuilderHandler';
8 | import { MemoryQueryLog } from './MemoryQueryLog';
9 | export declare class MemoryExecutorFactory implements NajsEloquent.Driver.IExecutorFactory {
10 | static className: string;
11 | makeRecordExecutor(model: IModel, record: T): MemoryRecordExecutor;
12 | makeQueryExecutor(handler: MemoryQueryBuilderHandler): any;
13 | getClassName(): string;
14 | getDataSource(model: IModel): Najs.Contracts.Eloquent.MemoryDataSource;
15 | makeLogger(): MemoryQueryLog;
16 | }
17 |
--------------------------------------------------------------------------------
/dist/lib/drivers/memory/MemoryQueryBuilder.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import IModel = NajsEloquent.Model.IModel;
3 | import { QueryBuilder } from '../../query-builders/QueryBuilder';
4 | import { MemoryQueryBuilderHandler } from './MemoryQueryBuilderHandler';
5 | export declare class MemoryQueryBuilder extends QueryBuilder {
6 | }
7 |
--------------------------------------------------------------------------------
/dist/lib/drivers/memory/MemoryQueryBuilder.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | const QueryBuilder_1 = require("../../query-builders/QueryBuilder");
5 | class MemoryQueryBuilder extends QueryBuilder_1.QueryBuilder {
6 | }
7 | exports.MemoryQueryBuilder = MemoryQueryBuilder;
8 |
--------------------------------------------------------------------------------
/dist/lib/drivers/memory/MemoryQueryBuilderFactory.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | import { MemoryQueryBuilder } from './MemoryQueryBuilder';
5 | export declare class MemoryQueryBuilderFactory implements NajsEloquent.QueryBuilder.IQueryBuilderFactory {
6 | static className: string;
7 | getClassName(): string;
8 | make(model: NajsEloquent.Model.IModel): MemoryQueryBuilder;
9 | }
10 |
--------------------------------------------------------------------------------
/dist/lib/drivers/memory/MemoryQueryBuilderFactory.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | ///
4 | ///
5 | Object.defineProperty(exports, "__esModule", { value: true });
6 | const najs_binding_1 = require("najs-binding");
7 | const constants_1 = require("../../constants");
8 | const MemoryQueryBuilder_1 = require("./MemoryQueryBuilder");
9 | const MemoryQueryBuilderHandler_1 = require("./MemoryQueryBuilderHandler");
10 | class MemoryQueryBuilderFactory {
11 | getClassName() {
12 | return constants_1.NajsEloquent.Driver.Memory.MemoryQueryBuilderFactory;
13 | }
14 | make(model) {
15 | return new MemoryQueryBuilder_1.MemoryQueryBuilder(new MemoryQueryBuilderHandler_1.MemoryQueryBuilderHandler(model));
16 | }
17 | }
18 | MemoryQueryBuilderFactory.className = constants_1.NajsEloquent.Driver.Memory.MemoryQueryBuilderFactory;
19 | exports.MemoryQueryBuilderFactory = MemoryQueryBuilderFactory;
20 | najs_binding_1.register(MemoryQueryBuilderFactory, constants_1.NajsEloquent.Driver.Memory.MemoryQueryBuilderFactory, true, true);
21 |
--------------------------------------------------------------------------------
/dist/lib/drivers/memory/MemoryQueryBuilderHandler.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | import IModel = NajsEloquent.Model.IModel;
7 | import IConvention = NajsEloquent.QueryBuilder.IConvention;
8 | import IConditionQuery = NajsEloquent.QueryGrammar.IConditionQuery;
9 | import { QueryBuilderHandlerBase } from '../../query-builders/QueryBuilderHandlerBase';
10 | import { BasicQuery } from '../../query-builders/shared/BasicQuery';
11 | import { ConditionQueryHandler } from '../../query-builders/shared/ConditionQueryHandler';
12 | export declare class MemoryQueryBuilderHandler extends QueryBuilderHandlerBase {
13 | protected basicQuery: BasicQuery;
14 | protected conditionQuery: ConditionQueryHandler;
15 | protected convention: IConvention;
16 | constructor(model: IModel);
17 | getBasicQuery(): BasicQuery;
18 | getConditionQuery(): IConditionQuery;
19 | getQueryConvention(): IConvention;
20 | }
21 |
--------------------------------------------------------------------------------
/dist/lib/drivers/memory/MemoryQueryLog.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import MemoryDataSource = Najs.Contracts.Eloquent.MemoryDataSource;
3 | import { Record } from '../Record';
4 | import { QueryLogBase, IQueryLogData } from '../QueryLogBase';
5 | export interface IMemoryLogData extends IQueryLogData {
6 | dataSource?: string;
7 | records?: IUpdateRecordInfo[];
8 | }
9 | export interface IUpdateRecordInfo {
10 | origin: object;
11 | modified: boolean;
12 | updated: object;
13 | }
14 | export declare class MemoryQueryLog extends QueryLogBase {
15 | getDefaultData(): IMemoryLogData;
16 | dataSource(ds: MemoryDataSource): this;
17 | updateRecordInfo(info: IUpdateRecordInfo): this;
18 | }
19 |
--------------------------------------------------------------------------------
/dist/lib/drivers/memory/MemoryQueryLog.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | const QueryLogBase_1 = require("../QueryLogBase");
4 | class MemoryQueryLog extends QueryLogBase_1.QueryLogBase {
5 | getDefaultData() {
6 | return this.getEmptyData();
7 | }
8 | dataSource(ds) {
9 | this.data.dataSource = ds.getClassName();
10 | return this;
11 | }
12 | updateRecordInfo(info) {
13 | if (typeof this.data.records === 'undefined') {
14 | this.data.records = [];
15 | }
16 | this.data.records.push(info);
17 | return this;
18 | }
19 | }
20 | exports.MemoryQueryLog = MemoryQueryLog;
21 |
--------------------------------------------------------------------------------
/dist/lib/drivers/memory/MemoryRecordExecutor.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | import Model = NajsEloquent.Model.IModel;
4 | import MemoryDataSource = Najs.Contracts.Eloquent.MemoryDataSource;
5 | import { RecordExecutorBase } from '../RecordExecutorBase';
6 | import { MemoryQueryLog } from './MemoryQueryLog';
7 | import { Record } from '../Record';
8 | export declare class MemoryRecordExecutor extends RecordExecutorBase {
9 | protected dataSource: MemoryDataSource;
10 | protected logger: MemoryQueryLog;
11 | constructor(model: Model, record: Record, dataSource: MemoryDataSource, logger: MemoryQueryLog);
12 | saveRecord(action: string): Promise;
13 | createRecord(action: string): Promise;
14 | updateRecord(action: string): Promise;
15 | hardDeleteRecord(): Promise;
16 | logRaw(func: string, data: any): MemoryQueryLog;
17 | }
18 |
--------------------------------------------------------------------------------
/dist/lib/errors/NotFoundError.d.ts:
--------------------------------------------------------------------------------
1 | export declare class NotFoundError extends Error {
2 | static className: string;
3 | model: string;
4 | constructor(model: string);
5 | }
6 |
--------------------------------------------------------------------------------
/dist/lib/errors/NotFoundError.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | const MESSAGE = ':model is not found.';
4 | class NotFoundError extends Error {
5 | constructor(model) {
6 | super(MESSAGE.replace(':model', model));
7 | Error.captureStackTrace(this, NotFoundError);
8 | this.name = NotFoundError.className;
9 | this.model = model;
10 | }
11 | }
12 | NotFoundError.className = 'NotFoundError';
13 | exports.NotFoundError = NotFoundError;
14 |
--------------------------------------------------------------------------------
/dist/lib/errors/RelationNotDefinedError.d.ts:
--------------------------------------------------------------------------------
1 | export declare class RelationNotDefinedError extends Error {
2 | static className: string;
3 | relationName: string;
4 | model: string;
5 | constructor(name: string, model: string);
6 | }
7 |
--------------------------------------------------------------------------------
/dist/lib/errors/RelationNotDefinedError.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | const MESSAGE = 'Relation :name is not defined in model :model.';
4 | class RelationNotDefinedError extends Error {
5 | constructor(name, model) {
6 | super(MESSAGE.replace(':name', name).replace(':model', model));
7 | Error.captureStackTrace(this, RelationNotDefinedError);
8 | this.name = RelationNotDefinedError.className;
9 | this.relationName = name;
10 | this.model = model;
11 | }
12 | }
13 | RelationNotDefinedError.className = 'NotFoundError';
14 | exports.RelationNotDefinedError = RelationNotDefinedError;
15 |
--------------------------------------------------------------------------------
/dist/lib/errors/RelationNotFoundInNewInstanceError.d.ts:
--------------------------------------------------------------------------------
1 | export declare class RelationNotFoundInNewInstanceError extends Error {
2 | static className: string;
3 | relationName: string;
4 | model: string;
5 | constructor(name: string, model: string);
6 | }
7 |
--------------------------------------------------------------------------------
/dist/lib/errors/RelationNotFoundInNewInstanceError.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | const MESSAGE = 'Cannot load relation :name in a new instance of :model.';
4 | class RelationNotFoundInNewInstanceError extends Error {
5 | constructor(name, model) {
6 | super(MESSAGE.replace(':name', name).replace(':model', model));
7 | Error.captureStackTrace(this, RelationNotFoundInNewInstanceError);
8 | this.name = RelationNotFoundInNewInstanceError.className;
9 | this.relationName = name;
10 | this.model = model;
11 | }
12 | }
13 | RelationNotFoundInNewInstanceError.className = 'RelationNotFoundInNewInstanceError';
14 | exports.RelationNotFoundInNewInstanceError = RelationNotFoundInNewInstanceError;
15 |
--------------------------------------------------------------------------------
/dist/lib/facades/container.d.ts:
--------------------------------------------------------------------------------
1 | import { IFacadeContainer } from 'najs-facade';
2 | export declare const container: IFacadeContainer;
3 |
--------------------------------------------------------------------------------
/dist/lib/facades/container.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | const najs_facade_1 = require("najs-facade");
4 | class NajsEloquentBag extends najs_facade_1.FacadeContainer {
5 | }
6 | exports.container = new NajsEloquentBag();
7 | global['NajsEloquent'] = exports.container;
8 |
--------------------------------------------------------------------------------
/dist/lib/facades/global/DriverProviderFacade.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import '../../providers/DriverProvider';
3 | import { IFacade, IFacadeBase } from 'najs-facade';
4 | export declare const DriverProviderFacade: Najs.Contracts.Eloquent.DriverProvider & IFacade;
5 | export declare const DriverProvider: Najs.Contracts.Eloquent.DriverProvider & IFacadeBase;
6 |
--------------------------------------------------------------------------------
/dist/lib/facades/global/DriverProviderFacade.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | require("../../providers/DriverProvider");
5 | const najs_binding_1 = require("najs-binding");
6 | const najs_facade_1 = require("najs-facade");
7 | const container_1 = require("../container");
8 | const constants_1 = require("../../constants");
9 | const facade = najs_facade_1.Facade.create(container_1.container, 'DriverProvider', function () {
10 | return najs_binding_1.make(constants_1.NajsEloquent.Provider.DriverProvider);
11 | });
12 | exports.DriverProviderFacade = facade;
13 | exports.DriverProvider = facade;
14 |
--------------------------------------------------------------------------------
/dist/lib/facades/global/FactoryFacade.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import '../../factory/FactoryManager';
3 | import { IFacade, IFacadeBase } from 'najs-facade';
4 | export declare const FactoryFacade: Najs.Contracts.Eloquent.FactoryManager & IFacade;
5 | export declare const Factory: Najs.Contracts.Eloquent.FactoryManager & IFacadeBase;
6 | export declare const factory: Najs.Contracts.Eloquent.FactoryFunction;
7 |
--------------------------------------------------------------------------------
/dist/lib/facades/global/FactoryFacade.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | require("../../factory/FactoryManager");
5 | const najs_binding_1 = require("najs-binding");
6 | const najs_facade_1 = require("najs-facade");
7 | const container_1 = require("../container");
8 | const constants_1 = require("../../constants");
9 | const facade = najs_facade_1.Facade.create(container_1.container, 'FactoryManager', function () {
10 | return najs_binding_1.make(constants_1.NajsEloquent.Factory.FactoryManager);
11 | });
12 | exports.FactoryFacade = facade;
13 | exports.Factory = facade;
14 | exports.factory = (function (className, arg1, arg2) {
15 | let name = 'default';
16 | if (typeof arg1 === 'string') {
17 | name = arg1;
18 | }
19 | let amount = undefined;
20 | if (typeof arg1 === 'number') {
21 | amount = arg1;
22 | }
23 | if (typeof arg2 === 'number') {
24 | amount = arg2;
25 | }
26 | return typeof amount === 'undefined'
27 | ? exports.Factory.of(className, name)
28 | : exports.Factory.of(className, name).times(amount);
29 | });
30 |
--------------------------------------------------------------------------------
/dist/lib/facades/global/MemoryDataSourceProviderFacade.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import '../../providers/MemoryDataSourceProvider';
3 | import { Record } from '../../drivers/Record';
4 | import { IFacade, IFacadeBase } from 'najs-facade';
5 | export declare const MemoryDataSourceProviderFacade: Najs.Contracts.Eloquent.MemoryDataSourceProvider & IFacade;
6 | export declare const MemoryDataSourceProvider: Najs.Contracts.Eloquent.MemoryDataSourceProvider & IFacadeBase;
7 |
--------------------------------------------------------------------------------
/dist/lib/facades/global/MemoryDataSourceProviderFacade.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | require("../../providers/MemoryDataSourceProvider");
5 | const najs_binding_1 = require("najs-binding");
6 | const najs_facade_1 = require("najs-facade");
7 | const container_1 = require("../container");
8 | const constants_1 = require("../../constants");
9 | const facade = najs_facade_1.Facade.create(container_1.container, 'MemoryDataSourceProvider', function () {
10 | return najs_binding_1.make(constants_1.NajsEloquent.Provider.MemoryDataSourceProvider);
11 | });
12 | exports.MemoryDataSourceProviderFacade = facade;
13 | exports.MemoryDataSourceProvider = facade;
14 |
--------------------------------------------------------------------------------
/dist/lib/facades/global/MomentProviderFacade.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import '../../providers/MomentProvider';
3 | import { IFacade, IFacadeBase } from 'najs-facade';
4 | import { Moment } from 'moment';
5 | export declare const MomentProviderFacade: Najs.Contracts.Eloquent.MomentProvider & IFacade;
6 | export declare const MomentProvider: Najs.Contracts.Eloquent.MomentProvider & IFacadeBase;
7 |
--------------------------------------------------------------------------------
/dist/lib/facades/global/MomentProviderFacade.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | require("../../providers/MomentProvider");
5 | const najs_binding_1 = require("najs-binding");
6 | const najs_facade_1 = require("najs-facade");
7 | const container_1 = require("../container");
8 | const constants_1 = require("../../constants");
9 | const facade = najs_facade_1.Facade.create(container_1.container, 'MomentProvider', function () {
10 | return najs_binding_1.make(constants_1.NajsEloquent.Provider.MomentProvider);
11 | });
12 | exports.MomentProviderFacade = facade;
13 | exports.MomentProvider = facade;
14 |
--------------------------------------------------------------------------------
/dist/lib/facades/global/QueryLogFacade.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import '../../query-log/FlipFlopQueryLog';
3 | import { IFacade, IFacadeBase } from 'najs-facade';
4 | export declare const QueryLogFacade: Najs.Contracts.Eloquent.QueryLog & IFacade;
5 | export declare const QueryLog: Najs.Contracts.Eloquent.QueryLog & IFacadeBase;
6 |
--------------------------------------------------------------------------------
/dist/lib/facades/global/QueryLogFacade.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | require("../../query-log/FlipFlopQueryLog");
5 | const najs_binding_1 = require("najs-binding");
6 | const najs_facade_1 = require("najs-facade");
7 | const container_1 = require("../container");
8 | const constants_1 = require("../../constants");
9 | const facade = najs_facade_1.Facade.create(container_1.container, 'QueryLog', function () {
10 | return najs_binding_1.make(constants_1.NajsEloquent.QueryLog.FlipFlopQueryLog);
11 | });
12 | exports.QueryLogFacade = facade;
13 | exports.QueryLog = facade;
14 |
--------------------------------------------------------------------------------
/dist/lib/features/EventFeature.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | import { FeatureBase } from './FeatureBase';
4 | export declare class EventFeature extends FeatureBase implements NajsEloquent.Feature.IEventFeature {
5 | getPublicApi(): object;
6 | getFeatureName(): string;
7 | getClassName(): string;
8 | fire(model: NajsEloquent.Model.IModel, eventName: string, args: any): Promise;
9 | getEventEmitter(model: NajsEloquent.Model.IModel): Najs.Contracts.Event.AsyncEventEmitter;
10 | getGlobalEventEmitter(model: NajsEloquent.Model.IModel): Najs.Contracts.Event.AsyncEventEmitter;
11 | }
12 |
--------------------------------------------------------------------------------
/dist/lib/features/FillableFeature.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | import { FeatureBase } from './FeatureBase';
4 | export declare class FillableFeature extends FeatureBase implements NajsEloquent.Feature.IFillableFeature {
5 | getPublicApi(): object;
6 | getFeatureName(): string;
7 | getClassName(): string;
8 | getFillable(model: NajsEloquent.Model.IModel): string[];
9 | setFillable(model: NajsEloquent.Model.IModel, fillable: string[]): void;
10 | addFillable(model: NajsEloquent.Model.IModel, keys: ArrayLike): void;
11 | isFillable(model: NajsEloquent.Model.IModel, keys: ArrayLike): boolean;
12 | getGuarded(model: NajsEloquent.Model.IModel): string[];
13 | setGuarded(model: NajsEloquent.Model.IModel, guarded: string[]): void;
14 | addGuarded(model: NajsEloquent.Model.IModel, keys: ArrayLike): void;
15 | isGuarded(model: NajsEloquent.Model.IModel, keys: ArrayLike): boolean;
16 | fill(model: NajsEloquent.Model.IModel, data: object): void;
17 | forceFill(model: NajsEloquent.Model.IModel, data: object): void;
18 | }
19 |
--------------------------------------------------------------------------------
/dist/lib/features/QueryFeature.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | import { FeatureBase } from './FeatureBase';
6 | export declare class QueryFeature extends FeatureBase implements NajsEloquent.Feature.IQueryFeature {
7 | protected factory: NajsEloquent.QueryBuilder.IQueryBuilderFactory;
8 | constructor(factory: NajsEloquent.QueryBuilder.IQueryBuilderFactory);
9 | getPublicApi(): object | undefined;
10 | getFeatureName(): string;
11 | getClassName(): string;
12 | newQuery(model: NajsEloquent.Model.IModel): NajsEloquent.QueryBuilder.IQueryBuilder;
13 | }
14 |
--------------------------------------------------------------------------------
/dist/lib/features/SoftDeletesFeature.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | import { FeatureBase } from './FeatureBase';
4 | export declare class SoftDeletesFeature extends FeatureBase implements NajsEloquent.Feature.ISoftDeletesFeature {
5 | static DefaultSetting: NajsEloquent.Feature.ISoftDeletesSetting;
6 | getPublicApi(): object;
7 | getFeatureName(): string;
8 | getClassName(): string;
9 | hasSoftDeletes(model: NajsEloquent.Model.IModel): boolean;
10 | getSoftDeletesSetting(model: NajsEloquent.Model.IModel): NajsEloquent.Feature.ISoftDeletesSetting;
11 | trashed(model: NajsEloquent.Model.IModel): boolean;
12 | forceDelete(model: NajsEloquent.Model.IModel): Promise;
13 | restore(model: NajsEloquent.Model.IModel): Promise;
14 | }
15 |
--------------------------------------------------------------------------------
/dist/lib/features/TimestampsFeature.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | import { FeatureBase } from './FeatureBase';
4 | export declare class TimestampsFeature extends FeatureBase implements NajsEloquent.Feature.ITimestampsFeature {
5 | static DefaultSetting: NajsEloquent.Feature.ITimestampsSetting;
6 | getPublicApi(): object;
7 | getFeatureName(): string;
8 | getClassName(): string;
9 | hasTimestamps(model: NajsEloquent.Model.IModel): boolean;
10 | getTimestampsSetting(model: NajsEloquent.Model.IModel): NajsEloquent.Feature.ITimestampsSetting;
11 | touch(model: NajsEloquent.Model.IModel): void;
12 | }
13 |
--------------------------------------------------------------------------------
/dist/lib/features/mixin/EventPublicApi.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | export declare const EventPublicApi: NajsEloquent.Model.IModelEvent;
4 |
--------------------------------------------------------------------------------
/dist/lib/features/mixin/EventPublicApi.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.EventPublicApi = {
4 | fire(eventName, args) {
5 | return this.driver.getEventFeature().fire(this, eventName, args);
6 | },
7 | emit(eventName, eventData, serial) {
8 | return this.driver
9 | .getEventFeature()
10 | .getEventEmitter(this)
11 | .emit(eventName, eventData, serial);
12 | },
13 | on(eventName, listener) {
14 | this.driver
15 | .getEventFeature()
16 | .getEventEmitter(this)
17 | .on(eventName, listener);
18 | return this;
19 | },
20 | off(eventName, listener) {
21 | this.driver
22 | .getEventFeature()
23 | .getEventEmitter(this)
24 | .off(eventName, listener);
25 | return this;
26 | },
27 | once(eventName, listener) {
28 | this.driver
29 | .getEventFeature()
30 | .getEventEmitter(this)
31 | .once(eventName, listener);
32 | return this;
33 | }
34 | };
35 |
--------------------------------------------------------------------------------
/dist/lib/features/mixin/FillablePublicApi.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | export declare const FillablePublicApi: NajsEloquent.Model.IModelFillable;
4 |
--------------------------------------------------------------------------------
/dist/lib/features/mixin/RecordManagerPublicApi.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | export declare const RecordManagerPublicApi: NajsEloquent.Model.IModelRecord;
4 |
--------------------------------------------------------------------------------
/dist/lib/features/mixin/RelationPublicApi.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | export declare const RelationPublicApi: NajsEloquent.Model.IModelRelation;
4 |
--------------------------------------------------------------------------------
/dist/lib/features/mixin/SerializationPublicApi.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | export declare const SerializationPublicApi: NajsEloquent.Model.IModelSerialization;
4 |
--------------------------------------------------------------------------------
/dist/lib/features/mixin/SoftDeletesPublicApi.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | export declare const SoftDeletesPublicApi: NajsEloquent.Model.IModelSoftDeletes;
4 |
--------------------------------------------------------------------------------
/dist/lib/features/mixin/SoftDeletesPublicApi.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.SoftDeletesPublicApi = {
4 | trashed() {
5 | return this.driver.getSoftDeletesFeature().trashed(this);
6 | },
7 | forceDelete() {
8 | return this.driver.getSoftDeletesFeature().forceDelete(this);
9 | },
10 | restore() {
11 | return this.driver.getSoftDeletesFeature().restore(this);
12 | }
13 | };
14 |
--------------------------------------------------------------------------------
/dist/lib/features/mixin/TimestampsPublicApi.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | export declare const TimestampsPublicApi: NajsEloquent.Model.IModelTimestamps;
4 |
--------------------------------------------------------------------------------
/dist/lib/features/mixin/TimestampsPublicApi.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.TimestampsPublicApi = {
4 | touch() {
5 | this.driver.getTimestampsFeature().touch(this);
6 | return this;
7 | }
8 | };
9 |
--------------------------------------------------------------------------------
/dist/lib/model/ModelEvent.d.ts:
--------------------------------------------------------------------------------
1 | export declare enum ModelEvent {
2 | Creating = "creating",
3 | Created = "created",
4 | Saving = "saving",
5 | Saved = "saved",
6 | Updating = "updating",
7 | Updated = "updated",
8 | Deleting = "deleting",
9 | Deleted = "deleted",
10 | Restoring = "restoring",
11 | Restored = "restored"
12 | }
13 |
--------------------------------------------------------------------------------
/dist/lib/model/ModelEvent.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | var ModelEvent;
4 | (function (ModelEvent) {
5 | ModelEvent["Creating"] = "creating";
6 | ModelEvent["Created"] = "created";
7 | ModelEvent["Saving"] = "saving";
8 | ModelEvent["Saved"] = "saved";
9 | ModelEvent["Updating"] = "updating";
10 | ModelEvent["Updated"] = "updated";
11 | ModelEvent["Deleting"] = "deleting";
12 | ModelEvent["Deleted"] = "deleted";
13 | ModelEvent["Restoring"] = "restoring";
14 | ModelEvent["Restored"] = "restored";
15 | })(ModelEvent = exports.ModelEvent || (exports.ModelEvent = {}));
16 |
--------------------------------------------------------------------------------
/dist/lib/model/ModelProxyHandler.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import Model = NajsEloquent.Model.ModelInternal;
3 | export declare const ModelProxyHandler: ProxyHandler;
4 |
--------------------------------------------------------------------------------
/dist/lib/model/ModelProxyHandler.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | exports.ModelProxyHandler = {
5 | get(target, key) {
6 | if (target.driver.shouldBeProxied(target, key)) {
7 | return target.driver.proxify('get', target, key);
8 | }
9 | return target[key];
10 | },
11 | set(target, key, value) {
12 | if (target.driver.shouldBeProxied(target, key)) {
13 | return target.driver.proxify('set', target, key, value);
14 | }
15 | target[key] = value;
16 | return true;
17 | }
18 | };
19 |
--------------------------------------------------------------------------------
/dist/lib/providers/DriverProvider.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import Driver = Najs.Contracts.Eloquent.Driver;
3 | import { Facade } from 'najs-facade';
4 | export declare class DriverProvider extends Facade implements Najs.Contracts.Eloquent.DriverProvider {
5 | static className: string;
6 | protected drivers: {
7 | [key: string]: {
8 | driverClassName: string;
9 | isDefault: boolean;
10 | };
11 | };
12 | protected driverInstances: {
13 | [key: string]: any;
14 | };
15 | protected binding: {
16 | [key: string]: string;
17 | };
18 | getClassName(): string;
19 | protected findDefaultDriver(): string;
20 | protected createDriver(model: Object, driverClass: string, isGuarded: boolean): Driver;
21 | has(driver: Function): boolean;
22 | create(model: Object, isGuarded?: boolean): Driver;
23 | findDriverClassName(model: Object | string): string;
24 | register(driver: string | Function, name: string, isDefault?: boolean): this;
25 | bind(model: string, driver: string): this;
26 | }
27 |
--------------------------------------------------------------------------------
/dist/lib/providers/MomentProvider.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import { Moment } from 'moment';
3 | import { Facade } from 'najs-facade';
4 | export declare class MomentProvider extends Facade implements Najs.Contracts.Eloquent.MomentProvider {
5 | getClassName(): string;
6 | make(): Moment;
7 | isMoment(value: any): boolean;
8 | setNow(cb: () => any): this;
9 | }
10 |
--------------------------------------------------------------------------------
/dist/lib/providers/MomentProvider.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | const najs_binding_1 = require("najs-binding");
5 | const najs_facade_1 = require("najs-facade");
6 | const constants_1 = require("../constants");
7 | const moment = require('moment');
8 | class MomentProvider extends najs_facade_1.Facade {
9 | getClassName() {
10 | return constants_1.NajsEloquent.Provider.MomentProvider;
11 | }
12 | make() {
13 | return moment(...arguments);
14 | }
15 | isMoment(value) {
16 | return moment.isMoment(value);
17 | }
18 | setNow(cb) {
19 | moment.now = cb;
20 | return this;
21 | }
22 | }
23 | exports.MomentProvider = MomentProvider;
24 | najs_binding_1.register(MomentProvider, constants_1.NajsEloquent.Provider.MomentProvider);
25 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/QueryBuilder.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | import IQueryBuilder = NajsEloquent.QueryBuilder.IQueryBuilder;
4 | import { QueryBuilderHandlerBase } from './QueryBuilderHandlerBase';
5 | export interface QueryBuilder extends IQueryBuilder {
6 | }
7 | export declare class QueryBuilder {
8 | protected handler: H;
9 | constructor(handler: H);
10 | }
11 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/QueryBuilder.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | const Query_1 = require("./mixin/Query");
4 | const ConditionQuery_1 = require("./mixin/ConditionQuery");
5 | const ExecuteQuery_1 = require("./mixin/ExecuteQuery");
6 | const AdvancedQuery_1 = require("./mixin/AdvancedQuery");
7 | const RelationQuery_1 = require("./mixin/RelationQuery");
8 | class QueryBuilder {
9 | constructor(handler) {
10 | this.handler = handler;
11 | }
12 | }
13 | exports.QueryBuilder = QueryBuilder;
14 | Object.assign(QueryBuilder.prototype, Query_1.Query, ConditionQuery_1.ConditionQuery, ExecuteQuery_1.ExecuteQuery, AdvancedQuery_1.AdvancedQuery, RelationQuery_1.RelationQuery);
15 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/mixin/AdvancedQuery.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | export declare const AdvancedQuery: NajsEloquent.QueryGrammar.IAdvancedQuery;
4 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/mixin/ConditionQuery.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | export declare const ConditionQuery: NajsEloquent.QueryGrammar.IConditionQuery;
4 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/mixin/ExecuteQuery.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | export declare const ExecuteQuery: NajsEloquent.QueryGrammar.IExecuteQuery;
4 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/mixin/ExecuteQuery.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | ///
4 | Object.defineProperty(exports, "__esModule", { value: true });
5 | exports.ExecuteQuery = {
6 | async count() {
7 | return this.handler.getQueryExecutor().count();
8 | },
9 | async update(data) {
10 | return this.handler.getQueryExecutor().update(this);
11 | },
12 | async delete() {
13 | return this.handler.getQueryExecutor().delete();
14 | },
15 | async restore() {
16 | return this.handler.getQueryExecutor().restore();
17 | },
18 | async execute() {
19 | return this.handler.getQueryExecutor().execute();
20 | }
21 | };
22 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/mixin/Query.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | export declare const Query: NajsEloquent.QueryGrammar.IQuery;
3 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/mixin/RelationQuery.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | export declare const RelationQuery: NajsEloquent.QueryGrammar.IRelationQuery;
3 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/mixin/RelationQuery.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | const lodash_1 = require("lodash");
4 | exports.RelationQuery = {
5 | with(...relations) {
6 | this.handler.setEagerRelations(lodash_1.flatten(relations));
7 | return this;
8 | }
9 | };
10 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/shared/DefaultConvention.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | export declare class DefaultConvention implements NajsEloquent.QueryBuilder.IConvention {
3 | formatFieldName(name: any): any;
4 | getNullValueFor(name: any): null;
5 | }
6 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/shared/DefaultConvention.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | class DefaultConvention {
5 | formatFieldName(name) {
6 | return name;
7 | }
8 | getNullValueFor(name) {
9 | // tslint:disable-next-line
10 | return null;
11 | }
12 | }
13 | exports.DefaultConvention = DefaultConvention;
14 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/shared/ExecutorUtils.d.ts:
--------------------------------------------------------------------------------
1 | import { QueryBuilderHandlerBase } from '../QueryBuilderHandlerBase';
2 | export declare class ExecutorUtils {
3 | static addSoftDeleteConditionIfNeeded(handler: QueryBuilderHandlerBase): void;
4 | }
5 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/shared/ExecutorUtils.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | class ExecutorUtils {
4 | static addSoftDeleteConditionIfNeeded(handler) {
5 | if (handler.shouldAddSoftDeleteCondition()) {
6 | const settings = handler.getSoftDeletesSetting();
7 | handler.getConditionQuery().whereNull(settings.deletedAt);
8 | handler.markSoftDeleteState('added');
9 | }
10 | }
11 | }
12 | exports.ExecutorUtils = ExecutorUtils;
13 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/shared/Operator.d.ts:
--------------------------------------------------------------------------------
1 | export declare enum Operator {
2 | And = "and",
3 | Or = "or",
4 | GreaterThan = ">",
5 | LessThan = "<",
6 | Equals = "=",
7 | NotEquals = "<>",
8 | GreaterThanOrEquals = ">=",
9 | LessThanOrEquals = "<=",
10 | In = "in",
11 | NotIn = "not-in"
12 | }
13 |
--------------------------------------------------------------------------------
/dist/lib/query-builders/shared/Operator.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | var Operator;
4 | (function (Operator) {
5 | Operator["And"] = "and";
6 | Operator["Or"] = "or";
7 | Operator["GreaterThan"] = ">";
8 | Operator["LessThan"] = "<";
9 | Operator["Equals"] = "=";
10 | Operator["NotEquals"] = "<>";
11 | Operator["GreaterThanOrEquals"] = ">=";
12 | Operator["LessThanOrEquals"] = "<=";
13 | Operator["In"] = "in";
14 | Operator["NotIn"] = "not-in";
15 | })(Operator = exports.Operator || (exports.Operator = {}));
16 |
--------------------------------------------------------------------------------
/dist/lib/relations/RelationData.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | export declare class RelationData implements NajsEloquent.Relation.IRelationData {
3 | protected data: T | undefined | null;
4 | protected state: string;
5 | protected factory: NajsEloquent.Relation.IRelationshipFactory;
6 | protected loadType?: 'lazy' | 'eager';
7 | constructor(factory: NajsEloquent.Relation.IRelationshipFactory);
8 | getFactory(): NajsEloquent.Relation.IRelationshipFactory;
9 | isLoaded(): boolean;
10 | hasData(): boolean;
11 | getData(): T | undefined | null;
12 | setData(data: T | undefined | null): T | undefined | null;
13 | getLoadType(): 'unknown' | 'lazy' | 'eager';
14 | setLoadType(type: 'lazy' | 'eager'): this;
15 | }
16 |
--------------------------------------------------------------------------------
/dist/lib/relations/RelationData.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | class RelationData {
5 | constructor(factory) {
6 | this.factory = factory;
7 | this.state = 'unload';
8 | }
9 | getFactory() {
10 | return this.factory;
11 | }
12 | isLoaded() {
13 | return this.state === 'loaded' || this.state === 'collected';
14 | }
15 | hasData() {
16 | return this.state === 'collected';
17 | }
18 | getData() {
19 | return this.data;
20 | }
21 | setData(data) {
22 | this.data = data;
23 | this.state = 'collected';
24 | return data;
25 | }
26 | getLoadType() {
27 | return this.loadType || 'unknown';
28 | }
29 | setLoadType(type) {
30 | this.loadType = type;
31 | this.state = 'loaded';
32 | return this;
33 | }
34 | }
35 | exports.RelationData = RelationData;
36 |
--------------------------------------------------------------------------------
/dist/lib/relations/RelationDataBucket.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | import Model = NajsEloquent.Model.IModel;
4 | import IRelationDataBucket = NajsEloquent.Relation.IRelationDataBucket;
5 | import IRelationDataBucketMetadata = NajsEloquent.Relation.IRelationDataBucketMetadata;
6 | import Autoload = Najs.Contracts.Autoload;
7 | import { DataBuffer } from '../data/DataBuffer';
8 | export declare class RelationDataBucket implements Autoload, IRelationDataBucket {
9 | protected bucket: {
10 | [key in string]: {
11 | data: DataBuffer