@typetron/framework 0.5.2 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/package.json +3 -6
  2. package/.eslintrc-old.js +0 -208
  3. package/Cache/Cache.ts +0 -13
  4. package/Cache/Stores/DatabaseStore.ts +0 -120
  5. package/Cache/Stores/FileStore.ts +0 -69
  6. package/Cache/Stores/MemoryStore.ts +0 -71
  7. package/Cache/index.ts +0 -5
  8. package/Cache/types.ts +0 -4
  9. package/Container/ClassResolver.ts +0 -106
  10. package/Container/Container.ts +0 -144
  11. package/Container/Contracts.ts +0 -3
  12. package/Container/Decorators.ts +0 -20
  13. package/Container/Metadata.ts +0 -16
  14. package/Container/Resolver.ts +0 -27
  15. package/Container/index.ts +0 -5
  16. package/Database/Clauses/Where.ts +0 -0
  17. package/Database/Connection.ts +0 -52
  18. package/Database/Decorators.ts +0 -142
  19. package/Database/Drivers/DatabaseDriver.ts +0 -37
  20. package/Database/Drivers/MySQL/Alter/index.ts +0 -55
  21. package/Database/Drivers/MySQL/ColumnDefinition.ts +0 -16
  22. package/Database/Drivers/MySQL/Create.ts +0 -47
  23. package/Database/Drivers/MySQL/MysqlDriver.ts +0 -123
  24. package/Database/Drivers/MySQL/Schema.ts +0 -82
  25. package/Database/Drivers/MySQL/index.ts +0 -13
  26. package/Database/Drivers/SQL/Schema.ts +0 -73
  27. package/Database/Drivers/SQL/Statements/Alter.ts +0 -22
  28. package/Database/Drivers/SQL/Statements/BaseStatement.ts +0 -55
  29. package/Database/Drivers/SQL/Statements/Delete.ts +0 -20
  30. package/Database/Drivers/SQL/Statements/Insert.ts +0 -24
  31. package/Database/Drivers/SQL/Statements/Select.ts +0 -55
  32. package/Database/Drivers/SQL/Statements/Update.ts +0 -33
  33. package/Database/Drivers/SQL/index.ts +0 -8
  34. package/Database/Drivers/SQLite/Create.ts +0 -45
  35. package/Database/Drivers/SQLite/Schema.ts +0 -54
  36. package/Database/Drivers/SQLite/SqliteDriver.ts +0 -144
  37. package/Database/Drivers/SQLite/index.ts +0 -15
  38. package/Database/Drivers/SchemaContract.ts +0 -11
  39. package/Database/Drivers/Statement.ts +0 -16
  40. package/Database/Drivers/index.ts +0 -4
  41. package/Database/Entity.ts +0 -377
  42. package/Database/EntityNotFoundError.ts +0 -5
  43. package/Database/EntityProxyHandler.ts +0 -43
  44. package/Database/EntityQuery.ts +0 -197
  45. package/Database/Expression.ts +0 -3
  46. package/Database/Fields.ts +0 -816
  47. package/Database/Helpers.ts +0 -12
  48. package/Database/List.ts +0 -71
  49. package/Database/Migrations/Migration.ts +0 -10
  50. package/Database/Migrations/MigrationHistory.ts +0 -20
  51. package/Database/Migrations/Migrator.ts +0 -122
  52. package/Database/Migrations/index.ts +0 -3
  53. package/Database/ORM/BaseRelationship.ts +0 -10
  54. package/Database/Query.ts +0 -374
  55. package/Database/Seeders/Seeder.ts +0 -3
  56. package/Database/Seeders/SeederManager.ts +0 -27
  57. package/Database/Seeders/index.ts +0 -2
  58. package/Database/StringExpression.ts +0 -9
  59. package/Database/Types.ts +0 -165
  60. package/Database/index.ts +0 -23
  61. package/Encryption/index.ts +0 -51
  62. package/Forms/Decorators.ts +0 -29
  63. package/Forms/Form.ts +0 -70
  64. package/Forms/FormFields.ts +0 -36
  65. package/Forms/index.ts +0 -3
  66. package/Framework/App.ts +0 -10
  67. package/Framework/Application.ts +0 -118
  68. package/Framework/Auth/Auth.ts +0 -122
  69. package/Framework/Auth/Authenticatable.ts +0 -9
  70. package/Framework/Auth/User.ts +0 -27
  71. package/Framework/Auth/index.ts +0 -29
  72. package/Framework/Config/AppConfig.ts +0 -25
  73. package/Framework/Config/AuthConfig.ts +0 -9
  74. package/Framework/Config/BaseConfig.ts +0 -9
  75. package/Framework/Config/CacheConfig.ts +0 -38
  76. package/Framework/Config/DatabaseConfig.ts +0 -21
  77. package/Framework/Config/MailConfig.ts +0 -30
  78. package/Framework/Config/index.ts +0 -6
  79. package/Framework/Middleware/AuthMiddleware.ts +0 -31
  80. package/Framework/Middleware/CorsMiddleware.ts +0 -32
  81. package/Framework/Middleware/StaticAssetsMiddleware.ts +0 -76
  82. package/Framework/Middleware/index.ts +0 -2
  83. package/Framework/Provider.ts +0 -9
  84. package/Framework/Providers/CacheProvider.ts +0 -28
  85. package/Framework/Providers/DatabaseProvider.ts +0 -36
  86. package/Framework/Providers/MailProvider.ts +0 -31
  87. package/Framework/Providers/WebsocketsProvider.ts +0 -120
  88. package/Framework/Resolvers/AuthResolver.ts +0 -23
  89. package/Framework/Resolvers/EntityResolver.ts +0 -41
  90. package/Framework/Resolvers/FormResolver.ts +0 -37
  91. package/Framework/RootDir.ts +0 -1
  92. package/Framework/index.ts +0 -8
  93. package/Frontend/Angular/index.ts +0 -24
  94. package/Frontend/Websockets/index.ts +0 -86
  95. package/Mail/MailAddress.ts +0 -4
  96. package/Mail/MailTransport.ts +0 -6
  97. package/Mail/Mailable.ts +0 -16
  98. package/Mail/Mailer.ts +0 -27
  99. package/Mail/PendingMail.ts +0 -68
  100. package/Mail/SentMessage.ts +0 -20
  101. package/Mail/Transports/MemoryTransport.ts +0 -13
  102. package/Mail/Transports/SendGridTransport.ts +0 -95
  103. package/Mail/index.ts +0 -3
  104. package/Models/Model.ts +0 -41
  105. package/Models/index.ts +0 -54
  106. package/Router/BaseController.ts +0 -7
  107. package/Router/Decorators.ts +0 -224
  108. package/Router/Guard.ts +0 -10
  109. package/Router/Http/Contracts.ts +0 -4
  110. package/Router/Http/ErrorHandler.ts +0 -45
  111. package/Router/Http/ErrorHandlerInterface.ts +0 -6
  112. package/Router/Http/Errors/HttpError.ts +0 -15
  113. package/Router/Http/Handler.ts +0 -183
  114. package/Router/Http/HttpRoute.ts +0 -110
  115. package/Router/Http/Middleware.ts +0 -7
  116. package/Router/Http/Request.ts +0 -225
  117. package/Router/Http/Response.ts +0 -35
  118. package/Router/Http/index.ts +0 -85
  119. package/Router/Metadata.ts +0 -34
  120. package/Router/Middleware.ts +0 -16
  121. package/Router/Request.ts +0 -65
  122. package/Router/Route.ts +0 -16
  123. package/Router/RouteNotFoundError.ts +0 -5
  124. package/Router/Router.ts +0 -35
  125. package/Router/Servers/index.ts +0 -6
  126. package/Router/Servers/node.ts +0 -49
  127. package/Router/Servers/uNetworking.ts +0 -151
  128. package/Router/Websockets/Handler.ts +0 -82
  129. package/Router/Websockets/Middleware.ts +0 -7
  130. package/Router/Websockets/Request.ts +0 -3
  131. package/Router/Websockets/WebsocketRoute.ts +0 -61
  132. package/Router/Websockets/index.ts +0 -57
  133. package/Router/Websockets/types.ts +0 -23
  134. package/Router/index.ts +0 -6
  135. package/Storage/File.ts +0 -30
  136. package/Storage/Image.ts +0 -19
  137. package/Storage/InvalidImage.ts +0 -3
  138. package/Storage/Storage.ts +0 -98
  139. package/Storage/index.ts +0 -4
  140. package/Storage/utils.ts +0 -18
  141. package/Support/Array.ts +0 -184
  142. package/Support/Math.ts +0 -12
  143. package/Support/Metadata.ts +0 -31
  144. package/Support/String.ts +0 -38
  145. package/Support/index.ts +0 -19
  146. package/Support/utils.ts +0 -7
  147. package/Testing/TestCase.ts +0 -193
  148. package/Validation/Rule.ts +0 -9
  149. package/Validation/RuleInterface.ts +0 -10
  150. package/Validation/Rules/Email.ts +0 -20
  151. package/Validation/Rules/FileExtension.ts +0 -21
  152. package/Validation/Rules/MaxLength.ts +0 -17
  153. package/Validation/Rules/MinLength.ts +0 -18
  154. package/Validation/Rules/Optional.ts +0 -18
  155. package/Validation/Rules/Required.ts +0 -29
  156. package/Validation/Validator.ts +0 -7
  157. package/Validation/index.ts +0 -12
  158. package/benchmark-index.js +0 -20
  159. package/benchmark.ts +0 -47
  160. package/tests/Cache/DatabaseStoreTest.ts +0 -110
  161. package/tests/Cache/FileStoreTest.ts +0 -93
  162. package/tests/Cache/MemoryStoreTest.ts +0 -92
  163. package/tests/Container/ContainerTest.ts +0 -336
  164. package/tests/Database/Drivers/MySQL/AlterTest.ts +0 -100
  165. package/tests/Database/Drivers/MySQL/CreateTest.ts +0 -39
  166. package/tests/Database/Drivers/MysqlDriverTest.ts +0 -140
  167. package/tests/Database/Drivers/SqliteDriverTest.ts +0 -126
  168. package/tests/Database/Entities/Article.ts +0 -21
  169. package/tests/Database/Entities/Profile.ts +0 -21
  170. package/tests/Database/Entities/Role.ts +0 -15
  171. package/tests/Database/Entities/User.ts +0 -35
  172. package/tests/Database/EntityRelationshipsTest.ts +0 -475
  173. package/tests/Database/EntityTest.ts +0 -202
  174. package/tests/Database/Migrations/RunnerTest.ts +0 -96
  175. package/tests/Database/Migrations/migrations/1.createUserTable.ts +0 -12
  176. package/tests/Database/Migrations/migrations/2.createArticlesTable.ts +0 -12
  177. package/tests/Database/QueryTest.ts +0 -573
  178. package/tests/Database/SchemaTest.ts +0 -32
  179. package/tests/Database/Seeders/RunnerTest.ts +0 -30
  180. package/tests/Database/Seeders/seeders/RandomSeeder.ts +0 -10
  181. package/tests/Database/utils.ts +0 -16
  182. package/tests/Forms/FormsTest.ts +0 -59
  183. package/tests/Framework/Middleware/StaticAssetsMiddlewareTest.ts +0 -129
  184. package/tests/Framework/Resolvers/EntityResolverTest.ts +0 -48
  185. package/tests/Framework/Router/RouterTest.ts +0 -33
  186. package/tests/Mail/MailerTest.ts +0 -76
  187. package/tests/Model/ModelTest.ts +0 -183
  188. package/tests/Router/HttpHandlerTest.ts +0 -72
  189. package/tests/Router/RequestTest.ts +0 -77
  190. package/tests/Router/WebSocketsHandlerTest.ts +0 -51
  191. package/tests/Storage/StorageTest.ts +0 -97
  192. package/tests/Support/ArrayTest.ts +0 -167
  193. package/tests/Support/StringTest.ts +0 -18
  194. package/tests/Validation/RulesTest.ts +0 -54
  195. package/types.d.ts +0 -8
@@ -1,197 +0,0 @@
1
- import { Query } from './Query'
2
- import { Entity } from './Entity'
3
- import { DotNotationProperties, EntityConstructor, EntityObject, StringExpression } from './index'
4
- import { KeysOfType } from '@Typetron/Support'
5
- import { BelongsTo, BelongsToMany, HasMany, HasOne } from './Fields'
6
- import { List } from './List'
7
- import { RelationsTree, RelationsTreeQuery } from './Types'
8
-
9
- export class EntityQuery<T extends Entity> extends Query<T> {
10
-
11
- // tslint:disable-next-line:no-any
12
- eagerLoad: (string | [string, RelationsTreeQuery])[] = []
13
- // tslint:disable-next-line:no-any
14
- eagerLoadCount: (string | [string, RelationsTreeQuery])[] = []
15
-
16
- constructor(public entity: EntityConstructor<T>) {
17
- super()
18
- }
19
-
20
- async get<K extends keyof T>(...columns: (K | string | StringExpression)[]): Promise<T[]> {
21
- let entities = await super.get(...columns)
22
-
23
- entities = this.entity.hydrate(this.entity, entities, true)
24
-
25
- entities = await this.eagerLoadRelationships(entities)
26
-
27
- return await this.eagerLoadRelationshipsCounts(entities)
28
- }
29
-
30
- public async eagerLoadRelationships(entities: T[]) {
31
-
32
- const relationsTree = this.tree(this.eagerLoad)
33
-
34
- await Object.keys(relationsTree).forEachAsync(async (relationName) => {
35
- const relationValue = relationsTree[relationName]
36
- const relation = this.entity.metadata.allRelationships[relationName]
37
-
38
- if (!relation) {
39
- throw new Error(`Relation '${relationName}' doesn't not exist on entity '${this.entity.name}'`)
40
- }
41
-
42
- // tslint:disable-next-line:no-any
43
- let fieldQueryFunction: undefined | RelationsTreeQuery
44
- let otherRelations: this['eagerLoad'] = []
45
- if (relationValue instanceof Function) {
46
- fieldQueryFunction = relationValue
47
- } else {
48
- otherRelations = this.treeBack(relationValue)
49
- }
50
-
51
- const results = await relation.getRelatedValue(entities, otherRelations, fieldQueryFunction as (query: Query) => void)
52
-
53
- if (results.length) {
54
- entities = relation.match(entities, results) as T[]
55
- }
56
- })
57
- // await this.eagerLoad.forEachAsync(async (field) => {
58
- // // tslint:disable-next-line:no-any
59
- // let fieldName: string, fieldQueryFunction: undefined | RelationsTreeQuery
60
- // if (field instanceof Array) {
61
- // fieldName = field[0]
62
- // fieldQueryFunction = field[1]
63
- // } else {
64
- // fieldName = field
65
- // }
66
- // const [first, ...rest] = fieldName.split('.')
67
- // const relation = this.entity.metadata.allRelationships[first]
68
- // const results = await relation.getRelatedValue(entities, [rest.join('.')], fieldQueryFunction as (query: Query) => void)
69
- // if (results.length) {
70
- // entities = relation.match(entities, results) as T[]
71
- // }
72
- // })
73
- return entities
74
- }
75
-
76
- public async eagerLoadRelationshipsCounts(entities: T[]) {
77
- await this.eagerLoadCount.forEachAsync(async (field) => {
78
- // tslint:disable-next-line:no-any
79
- let fieldName: string, fieldQueryFunction: undefined | RelationsTreeQuery
80
- if (field instanceof Array) {
81
- fieldName = field[0]
82
- fieldQueryFunction = field[1]
83
- } else {
84
- fieldName = field
85
- }
86
-
87
- const relation = this.entity.metadata.allRelationships[fieldName]
88
- const results = await relation.getRelatedCount(entities, fieldQueryFunction as ((query: Query) => void))
89
- if (results.length) {
90
- entities = relation.matchCounts(entities, results) as T[]
91
- }
92
- })
93
- return entities
94
- }
95
-
96
- async first<K extends keyof T>(...columns: (K | string | StringExpression)[]): Promise<T | undefined> {
97
- const entityData = await super.first(...columns)
98
- if (!entityData) {
99
- return undefined
100
- }
101
- let entity = this.entity.new(entityData, true)
102
-
103
- entity = (await this.eagerLoadRelationships([entity])).first() as T
104
-
105
- return (await this.eagerLoadRelationshipsCounts([entity])).first()
106
- }
107
-
108
- async firstOrNew<K extends keyof T>(
109
- // tslint:disable-next-line:no-any
110
- properties: Partial<EntityObject<T> | Record<string, any>>,
111
- values?: Partial<EntityObject<T>>
112
- ): Promise<T> {
113
- Object.entries(properties).forEach(([property, value]) => {
114
- const field = this.entity.metadata.columns[property] || this.entity.metadata.relationships[property]
115
- const finalValue = value instanceof Entity ? value[value.getPrimaryKey()] : value
116
- if (finalValue === undefined) {
117
- this.andWhereNull(field.column)
118
- } else {
119
- this.andWhere(field.column, finalValue)
120
- }
121
- })
122
- const instance = await this.first()
123
- if (!instance) {
124
- return this.entity.new({...properties, ...values})
125
- }
126
- instance.exists = true
127
- return instance
128
- }
129
-
130
- with(
131
- ...relations: (
132
- // tslint:disable-next-line:no-any
133
- KeysOfType<T, BelongsTo<any> | HasOne<any> | HasMany<any> | BelongsToMany<any>> | DotNotationProperties<this> |
134
- // tslint:disable-next-line:no-any max-line-length
135
- [KeysOfType<T, BelongsTo<any> | HasOne<any> | HasMany<any> | BelongsToMany<any>> | DotNotationProperties<this>, RelationsTreeQuery]
136
- )[]
137
- ) {
138
- relations = relations.filter(Boolean)
139
- if (relations.length) {
140
- // tslint:disable-next-line:no-any
141
- this.eagerLoad = this.eagerLoad.concat(relations as string | [string, RelationsTreeQuery]).unique()
142
- }
143
-
144
- return this
145
- }
146
-
147
- withCount<K extends KeysOfType<T, List<Entity>>>(
148
- ...relations: (
149
- // tslint:disable-next-line:no-any
150
- KeysOfType<T, BelongsTo<any> | HasOne<any> | HasMany<any> | BelongsToMany<any>> | DotNotationProperties<this> |
151
- // tslint:disable-next-line:no-any max-line-length
152
- [KeysOfType<T, BelongsTo<any> | HasOne<any> | HasMany<any> | BelongsToMany<any>> | DotNotationProperties<this>, RelationsTreeQuery]
153
- )[]
154
- ) {
155
- // @ts-ignore
156
- this.eagerLoadCount = this.eagerLoadCount.concat(relations)
157
-
158
- return this
159
- }
160
-
161
- private tree(relations: this['eagerLoad']) {
162
- const tree: RelationsTree = {}
163
-
164
- relations.forEach(relation => {
165
- let relationName: string
166
- let relationValue: RelationsTreeQuery | {} = {}
167
- if (relation instanceof Array) {
168
- relationName = relation[0]
169
- relationValue = relation[1]
170
- } else {
171
- relationName = relation
172
- }
173
-
174
- let container = tree
175
- const relationStringParts = relationName.split('.')
176
- relationStringParts.forEach((part, index) => {
177
- const value = index === relationStringParts.length - 1 ? relationValue : {}
178
- // @ts-ignore
179
- container = (container[part] ? container[part] : container[part] = value)
180
- })
181
- })
182
-
183
- return tree
184
- }
185
-
186
- private treeBack(relationsTree: RelationsTree): this['eagerLoad'] {
187
- return Object.keys(relationsTree).map(relationName => {
188
- const item = relationsTree[relationName]
189
-
190
- if (item instanceof Function) {
191
- return [relationName, item]
192
- } else {
193
- return [relationName, this.treeBack(item)].filter(Boolean).join('.')
194
- }
195
- })
196
- }
197
- }
@@ -1,3 +0,0 @@
1
- export abstract class Expression {
2
- abstract toSQL(): string
3
- }