@infrab4a/connect 0.0.1

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 (182) hide show
  1. package/README.md +24 -0
  2. package/bundles/infrab4a-connect.umd.js +1074 -0
  3. package/bundles/infrab4a-connect.umd.js.map +1 -0
  4. package/esm2015/infrab4a-connect.js +5 -0
  5. package/esm2015/lib/domain/general/index.js +3 -0
  6. package/esm2015/lib/domain/general/model/base-model-with-identifier-fields.js +2 -0
  7. package/esm2015/lib/domain/general/model/base.model.js +13 -0
  8. package/esm2015/lib/domain/general/model/identifier-fields.js +2 -0
  9. package/esm2015/lib/domain/general/model/index.js +5 -0
  10. package/esm2015/lib/domain/general/model/types/base-model-builder.type.js +2 -0
  11. package/esm2015/lib/domain/general/model/types/index.js +4 -0
  12. package/esm2015/lib/domain/general/model/types/non-function-properties.type.js +2 -0
  13. package/esm2015/lib/domain/general/model/types/non-function-property-name.type.js +2 -0
  14. package/esm2015/lib/domain/general/repository/create.repository.js +2 -0
  15. package/esm2015/lib/domain/general/repository/crud.repository.js +2 -0
  16. package/esm2015/lib/domain/general/repository/delete.repository.js +2 -0
  17. package/esm2015/lib/domain/general/repository/enums/index.js +2 -0
  18. package/esm2015/lib/domain/general/repository/enums/where.enum.js +11 -0
  19. package/esm2015/lib/domain/general/repository/find.repository.js +2 -0
  20. package/esm2015/lib/domain/general/repository/get.repository.js +2 -0
  21. package/esm2015/lib/domain/general/repository/index.js +10 -0
  22. package/esm2015/lib/domain/general/repository/read.repository.js +2 -0
  23. package/esm2015/lib/domain/general/repository/types/index.js +5 -0
  24. package/esm2015/lib/domain/general/repository/types/repository-find-filters.type.js +2 -0
  25. package/esm2015/lib/domain/general/repository/types/repository-find-result.type.js +2 -0
  26. package/esm2015/lib/domain/general/repository/types/repository-limit-options.type.js +2 -0
  27. package/esm2015/lib/domain/general/repository/types/repository-order-by-list.type.js +2 -0
  28. package/esm2015/lib/domain/general/repository/update.repository.js +2 -0
  29. package/esm2015/lib/domain/index.js +3 -0
  30. package/esm2015/lib/domain/users/errors/index.js +2 -0
  31. package/esm2015/lib/domain/users/errors/unauthorized.error.js +7 -0
  32. package/esm2015/lib/domain/users/index.js +6 -0
  33. package/esm2015/lib/domain/users/models/beauty-profile.js +12 -0
  34. package/esm2015/lib/domain/users/models/edition.js +7 -0
  35. package/esm2015/lib/domain/users/models/enums/area.enum.js +13 -0
  36. package/esm2015/lib/domain/users/models/enums/beard-sizes.enum.js +9 -0
  37. package/esm2015/lib/domain/users/models/enums/billing-status.enum.js +5 -0
  38. package/esm2015/lib/domain/users/models/enums/edition-status.enum.js +5 -0
  39. package/esm2015/lib/domain/users/models/enums/hair-types.enum.js +9 -0
  40. package/esm2015/lib/domain/users/models/enums/index.js +10 -0
  41. package/esm2015/lib/domain/users/models/enums/office-position.enum.js +8 -0
  42. package/esm2015/lib/domain/users/models/enums/status.enum.js +5 -0
  43. package/esm2015/lib/domain/users/models/enums/user-type.enum.js +10 -0
  44. package/esm2015/lib/domain/users/models/index.js +6 -0
  45. package/esm2015/lib/domain/users/models/subscription.js +7 -0
  46. package/esm2015/lib/domain/users/models/user.js +17 -0
  47. package/esm2015/lib/domain/users/repositories/beauty-profile.repository.js +2 -0
  48. package/esm2015/lib/domain/users/repositories/edition.repository.js +2 -0
  49. package/esm2015/lib/domain/users/repositories/index.js +5 -0
  50. package/esm2015/lib/domain/users/repositories/subscription.repository.js +2 -0
  51. package/esm2015/lib/domain/users/repositories/user.repository.js +2 -0
  52. package/esm2015/lib/domain/users/services/authentication.service.js +2 -0
  53. package/esm2015/lib/domain/users/services/index.js +2 -0
  54. package/esm2015/lib/domain/users/use-cases/authentication.js +40 -0
  55. package/esm2015/lib/domain/users/use-cases/index.js +3 -0
  56. package/esm2015/lib/domain/users/use-cases/signout.js +12 -0
  57. package/esm2015/lib/errors/index.js +4 -0
  58. package/esm2015/lib/errors/invalid-argument.error.js +7 -0
  59. package/esm2015/lib/errors/not-found.error.js +7 -0
  60. package/esm2015/lib/errors/required-argument.error.js +8 -0
  61. package/esm2015/lib/index.js +5 -0
  62. package/esm2015/lib/infra/firebase/auth/authentication-firebase-auth.service.js +27 -0
  63. package/esm2015/lib/infra/firebase/auth/index.js +2 -0
  64. package/esm2015/lib/infra/firebase/firestore/index.js +4 -0
  65. package/esm2015/lib/infra/firebase/firestore/mixins/index.js +10 -0
  66. package/esm2015/lib/infra/firebase/firestore/mixins/with-create-firestore.mixin.js +30 -0
  67. package/esm2015/lib/infra/firebase/firestore/mixins/with-crud-firestore.mixin.js +10 -0
  68. package/esm2015/lib/infra/firebase/firestore/mixins/with-delete-firestore.mixin.js +18 -0
  69. package/esm2015/lib/infra/firebase/firestore/mixins/with-find-firestore.mixin.js +59 -0
  70. package/esm2015/lib/infra/firebase/firestore/mixins/with-firestore.mixin.js +17 -0
  71. package/esm2015/lib/infra/firebase/firestore/mixins/with-get-firestore.mixin.js +24 -0
  72. package/esm2015/lib/infra/firebase/firestore/mixins/with-helpers.mixin.js +17 -0
  73. package/esm2015/lib/infra/firebase/firestore/mixins/with-sub-collection.mixin.js +11 -0
  74. package/esm2015/lib/infra/firebase/firestore/mixins/with-update-firestore.mixin.js +19 -0
  75. package/esm2015/lib/infra/firebase/firestore/repositories/index.js +2 -0
  76. package/esm2015/lib/infra/firebase/firestore/repositories/users/index.js +5 -0
  77. package/esm2015/lib/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.js +14 -0
  78. package/esm2015/lib/infra/firebase/firestore/repositories/users/subscription-firestore.repository.js +12 -0
  79. package/esm2015/lib/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.js +14 -0
  80. package/esm2015/lib/infra/firebase/firestore/repositories/users/user-firestore.repository.js +40 -0
  81. package/esm2015/lib/infra/firebase/firestore/types/firestore-sub.repository.type.js +2 -0
  82. package/esm2015/lib/infra/firebase/firestore/types/firestore.helpers.type.js +2 -0
  83. package/esm2015/lib/infra/firebase/firestore/types/firestore.repository.type.js +2 -0
  84. package/esm2015/lib/infra/firebase/firestore/types/index.js +4 -0
  85. package/esm2015/lib/infra/firebase/index.js +3 -0
  86. package/esm2015/lib/infra/index.js +2 -0
  87. package/esm2015/lib/utils/index.js +4 -0
  88. package/esm2015/lib/utils/mixins/base.mixin.js +6 -0
  89. package/esm2015/lib/utils/mixins/index.js +3 -0
  90. package/esm2015/lib/utils/mixins/mixin-ctor.type.js +2 -0
  91. package/esm2015/public-api.js +2 -0
  92. package/fesm2015/infrab4a-connect.js +501 -0
  93. package/fesm2015/infrab4a-connect.js.map +1 -0
  94. package/infrab4a-connect.d.ts +5 -0
  95. package/lib/domain/general/index.d.ts +2 -0
  96. package/lib/domain/general/model/base-model-with-identifier-fields.d.ts +3 -0
  97. package/lib/domain/general/model/base.model.d.ts +6 -0
  98. package/lib/domain/general/model/identifier-fields.d.ts +4 -0
  99. package/lib/domain/general/model/index.d.ts +4 -0
  100. package/lib/domain/general/model/types/base-model-builder.type.d.ts +5 -0
  101. package/lib/domain/general/model/types/index.d.ts +3 -0
  102. package/lib/domain/general/model/types/non-function-properties.type.d.ts +2 -0
  103. package/lib/domain/general/model/types/non-function-property-name.type.d.ts +3 -0
  104. package/lib/domain/general/repository/create.repository.d.ts +5 -0
  105. package/lib/domain/general/repository/crud.repository.d.ts +7 -0
  106. package/lib/domain/general/repository/delete.repository.d.ts +5 -0
  107. package/lib/domain/general/repository/enums/index.d.ts +1 -0
  108. package/lib/domain/general/repository/enums/where.enum.d.ts +9 -0
  109. package/lib/domain/general/repository/find.repository.d.ts +5 -0
  110. package/lib/domain/general/repository/get.repository.d.ts +5 -0
  111. package/lib/domain/general/repository/index.d.ts +9 -0
  112. package/lib/domain/general/repository/read.repository.d.ts +5 -0
  113. package/lib/domain/general/repository/types/index.d.ts +4 -0
  114. package/lib/domain/general/repository/types/repository-find-filters.type.d.ts +11 -0
  115. package/lib/domain/general/repository/types/repository-find-result.type.d.ts +4 -0
  116. package/lib/domain/general/repository/types/repository-limit-options.type.d.ts +4 -0
  117. package/lib/domain/general/repository/types/repository-order-by-list.type.d.ts +5 -0
  118. package/lib/domain/general/repository/update.repository.d.ts +4 -0
  119. package/lib/domain/index.d.ts +2 -0
  120. package/lib/domain/users/errors/index.d.ts +1 -0
  121. package/lib/domain/users/errors/unauthorized.error.d.ts +4 -0
  122. package/lib/domain/users/index.d.ts +5 -0
  123. package/lib/domain/users/models/beauty-profile.d.ts +12 -0
  124. package/lib/domain/users/models/edition.d.ts +15 -0
  125. package/lib/domain/users/models/enums/area.enum.d.ts +11 -0
  126. package/lib/domain/users/models/enums/beard-sizes.enum.d.ts +7 -0
  127. package/lib/domain/users/models/enums/billing-status.enum.d.ts +3 -0
  128. package/lib/domain/users/models/enums/edition-status.enum.d.ts +3 -0
  129. package/lib/domain/users/models/enums/hair-types.enum.d.ts +7 -0
  130. package/lib/domain/users/models/enums/index.d.ts +9 -0
  131. package/lib/domain/users/models/enums/office-position.enum.d.ts +6 -0
  132. package/lib/domain/users/models/enums/status.enum.d.ts +3 -0
  133. package/lib/domain/users/models/enums/user-type.enum.d.ts +8 -0
  134. package/lib/domain/users/models/index.d.ts +5 -0
  135. package/lib/domain/users/models/subscription.d.ts +15 -0
  136. package/lib/domain/users/models/user.d.ts +23 -0
  137. package/lib/domain/users/repositories/beauty-profile.repository.d.ts +4 -0
  138. package/lib/domain/users/repositories/edition.repository.d.ts +4 -0
  139. package/lib/domain/users/repositories/index.d.ts +4 -0
  140. package/lib/domain/users/repositories/subscription.repository.d.ts +4 -0
  141. package/lib/domain/users/repositories/user.repository.d.ts +4 -0
  142. package/lib/domain/users/services/authentication.service.d.ts +10 -0
  143. package/lib/domain/users/services/index.d.ts +1 -0
  144. package/lib/domain/users/use-cases/authentication.d.ts +21 -0
  145. package/lib/domain/users/use-cases/index.d.ts +2 -0
  146. package/lib/domain/users/use-cases/signout.d.ts +6 -0
  147. package/lib/errors/index.d.ts +3 -0
  148. package/lib/errors/invalid-argument.error.d.ts +4 -0
  149. package/lib/errors/not-found.error.d.ts +4 -0
  150. package/lib/errors/required-argument.error.d.ts +5 -0
  151. package/lib/index.d.ts +4 -0
  152. package/lib/infra/firebase/auth/authentication-firebase-auth.service.d.ts +9 -0
  153. package/lib/infra/firebase/auth/index.d.ts +1 -0
  154. package/lib/infra/firebase/firestore/index.d.ts +3 -0
  155. package/lib/infra/firebase/firestore/mixins/index.d.ts +9 -0
  156. package/lib/infra/firebase/firestore/mixins/with-create-firestore.mixin.d.ts +17 -0
  157. package/lib/infra/firebase/firestore/mixins/with-crud-firestore.mixin.d.ts +28 -0
  158. package/lib/infra/firebase/firestore/mixins/with-delete-firestore.mixin.d.ts +15 -0
  159. package/lib/infra/firebase/firestore/mixins/with-find-firestore.mixin.d.ts +20 -0
  160. package/lib/infra/firebase/firestore/mixins/with-firestore.mixin.d.ts +15 -0
  161. package/lib/infra/firebase/firestore/mixins/with-get-firestore.mixin.d.ts +15 -0
  162. package/lib/infra/firebase/firestore/mixins/with-helpers.mixin.d.ts +10 -0
  163. package/lib/infra/firebase/firestore/mixins/with-sub-collection.mixin.d.ts +14 -0
  164. package/lib/infra/firebase/firestore/mixins/with-update-firestore.mixin.d.ts +15 -0
  165. package/lib/infra/firebase/firestore/repositories/index.d.ts +1 -0
  166. package/lib/infra/firebase/firestore/repositories/users/index.d.ts +4 -0
  167. package/lib/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.d.ts +59 -0
  168. package/lib/infra/firebase/firestore/repositories/users/subscription-firestore.repository.d.ts +48 -0
  169. package/lib/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.d.ts +59 -0
  170. package/lib/infra/firebase/firestore/repositories/users/user-firestore.repository.d.ts +51 -0
  171. package/lib/infra/firebase/firestore/types/firestore-sub.repository.type.d.ts +6 -0
  172. package/lib/infra/firebase/firestore/types/firestore.helpers.type.d.ts +8 -0
  173. package/lib/infra/firebase/firestore/types/firestore.repository.type.d.ts +8 -0
  174. package/lib/infra/firebase/firestore/types/index.d.ts +3 -0
  175. package/lib/infra/firebase/index.d.ts +2 -0
  176. package/lib/infra/index.d.ts +1 -0
  177. package/lib/utils/index.d.ts +3 -0
  178. package/lib/utils/mixins/base.mixin.d.ts +3 -0
  179. package/lib/utils/mixins/index.d.ts +2 -0
  180. package/lib/utils/mixins/mixin-ctor.type.d.ts +1 -0
  181. package/package.json +25 -0
  182. package/public-api.d.ts +1 -0
@@ -0,0 +1,6 @@
1
+ import { NonFunctionProperties } from './types/non-function-properties.type';
2
+ export declare class BaseModel<Model> {
3
+ constructor(args?: Partial<Model>);
4
+ static toInstance<T>(this: new () => Partial<T>, data: NonFunctionProperties<T>): T;
5
+ toPlain(): any;
6
+ }
@@ -0,0 +1,4 @@
1
+ import { NonFunctionPropertyNames } from './types/non-function-property-name.type';
2
+ export interface IdentifierFields<Model> {
3
+ identifierFields: () => NonFunctionPropertyNames<Model>[];
4
+ }
@@ -0,0 +1,4 @@
1
+ export * from './base.model';
2
+ export * from './identifier-fields';
3
+ export * from './base-model-with-identifier-fields';
4
+ export * from './types';
@@ -0,0 +1,5 @@
1
+ import { NonFunctionProperties } from './non-function-properties.type';
2
+ export interface BaseModelBuilder<T> {
3
+ new (): T;
4
+ toInstance(this: new () => T, data: NonFunctionProperties<T>): T;
5
+ }
@@ -0,0 +1,3 @@
1
+ export * from './non-function-property-name.type';
2
+ export * from './non-function-properties.type';
3
+ export * from './base-model-builder.type';
@@ -0,0 +1,2 @@
1
+ import { NonFunctionPropertyNames } from './non-function-property-name.type';
2
+ export declare type NonFunctionProperties<T> = Pick<Partial<T>, NonFunctionPropertyNames<T>>;
@@ -0,0 +1,3 @@
1
+ export declare type NonFunctionPropertyNames<T> = {
2
+ [K in keyof T]: T[K] extends () => void ? never : K;
3
+ }[keyof T];
@@ -0,0 +1,5 @@
1
+ import { BaseModelWithIdentifier } from '../model/base-model-with-identifier-fields';
2
+ import { NonFunctionProperties } from '../model/types/non-function-properties.type';
3
+ export interface CreateRepository<Model extends BaseModelWithIdentifier<Model>> {
4
+ create(data: NonFunctionProperties<BaseModelWithIdentifier<Model>>): Promise<Model>;
5
+ }
@@ -0,0 +1,7 @@
1
+ import { BaseModelWithIdentifier } from '../model/base-model-with-identifier-fields';
2
+ import { CreateRepository } from './create.repository';
3
+ import { DeleteRepository } from './delete.repository';
4
+ import { ReadRepository } from './read.repository';
5
+ import { UpdateRepository } from './update.repository';
6
+ export interface CrudRepository<Model extends BaseModelWithIdentifier<Model>> extends CreateRepository<Model>, DeleteRepository<Model>, ReadRepository<Model>, UpdateRepository<Model> {
7
+ }
@@ -0,0 +1,5 @@
1
+ import { BaseModelWithIdentifier } from '../model/base-model-with-identifier-fields';
2
+ import { NonFunctionProperties } from '../model/types/non-function-properties.type';
3
+ export interface DeleteRepository<Model extends BaseModelWithIdentifier<Model>> {
4
+ delete(identifiers: NonFunctionProperties<BaseModelWithIdentifier<Model>>): Promise<void>;
5
+ }
@@ -0,0 +1 @@
1
+ export * from './where.enum';
@@ -0,0 +1,9 @@
1
+ export declare enum Where {
2
+ EQUALS = "==",
3
+ GT = ">",
4
+ GTE = ">=",
5
+ IN = "in",
6
+ LT = "<",
7
+ LTE = "<=",
8
+ LIKE = "like"
9
+ }
@@ -0,0 +1,5 @@
1
+ import { BaseModelWithIdentifier } from '../model/base-model-with-identifier-fields';
2
+ import { RepositoryFindFielters, RepositoryFindResult, RepositoryLimitOptions, RepositoryOrderByList } from './types';
3
+ export interface FindRepository<Model extends BaseModelWithIdentifier<Model>> {
4
+ find(filters?: RepositoryFindFielters<Model>[], limits?: RepositoryLimitOptions<Model>, orderBy?: RepositoryOrderByList<Model>): Promise<RepositoryFindResult<Model>>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { BaseModelWithIdentifier } from '../model/base-model-with-identifier-fields';
2
+ import { NonFunctionProperties } from '../model/types/non-function-properties.type';
3
+ export interface GetRepository<Model extends BaseModelWithIdentifier<Model>> {
4
+ get(identifiers: NonFunctionProperties<BaseModelWithIdentifier<Model>>): Promise<Model>;
5
+ }
@@ -0,0 +1,9 @@
1
+ export * from './enums';
2
+ export * from './types';
3
+ export * from './create.repository';
4
+ export * from './get.repository';
5
+ export * from './delete.repository';
6
+ export * from './update.repository';
7
+ export * from './find.repository';
8
+ export * from './read.repository';
9
+ export * from './crud.repository';
@@ -0,0 +1,5 @@
1
+ import { BaseModelWithIdentifier } from '../model/base-model-with-identifier-fields';
2
+ import { FindRepository } from './find.repository';
3
+ import { GetRepository } from './get.repository';
4
+ export interface ReadRepository<Model extends BaseModelWithIdentifier<Model>> extends FindRepository<Model>, GetRepository<Model> {
5
+ }
@@ -0,0 +1,4 @@
1
+ export * from './repository-find-filters.type';
2
+ export * from './repository-order-by-list.type';
3
+ export * from './repository-limit-options.type';
4
+ export * from './repository-find-result.type';
@@ -0,0 +1,11 @@
1
+ import { NonFunctionPropertyNames } from '../../model/types/non-function-property-name.type';
2
+ import { Where } from '../enums/where.enum';
3
+ declare type PropType<TObj, TProp extends keyof TObj> = TObj[TProp];
4
+ export declare type RepositoryFindFieltersOptions<Model, FieldName extends keyof Model> = {
5
+ operator: Where;
6
+ value: PropType<Model, FieldName>;
7
+ };
8
+ export declare type RepositoryFindFielters<Model> = {
9
+ [key in NonFunctionPropertyNames<Model>]?: RepositoryFindFieltersOptions<Model, key>;
10
+ };
11
+ export {};
@@ -0,0 +1,4 @@
1
+ export declare type RepositoryFindResult<Model> = {
2
+ data: Model[];
3
+ count: number;
4
+ };
@@ -0,0 +1,4 @@
1
+ export declare type RepositoryLimitOptions<Model> = {
2
+ offset?: number | string | Model;
3
+ limit?: number;
4
+ };
@@ -0,0 +1,5 @@
1
+ import { NonFunctionPropertyNames } from '../../model/types/non-function-property-name.type';
2
+ export declare type RepositoryOrderBy<Model> = {
3
+ [key in NonFunctionPropertyNames<Model>]?: 'asc' | 'desc';
4
+ };
5
+ export declare type RepositoryOrderByList<Model> = RepositoryOrderBy<Model>[];
@@ -0,0 +1,4 @@
1
+ import { BaseModelWithIdentifier } from '../model/base-model-with-identifier-fields';
2
+ export interface UpdateRepository<Model extends BaseModelWithIdentifier<Model>> {
3
+ update(data: BaseModelWithIdentifier<Model>): Promise<Model>;
4
+ }
@@ -0,0 +1,2 @@
1
+ export * from './general';
2
+ export * from './users';
@@ -0,0 +1 @@
1
+ export * from './unauthorized.error';
@@ -0,0 +1,4 @@
1
+ export declare class UnauthorizedError extends Error {
2
+ readonly message: any;
3
+ constructor(message: any);
4
+ }
@@ -0,0 +1,5 @@
1
+ export * from './models';
2
+ export * from './repositories';
3
+ export * from './services';
4
+ export * from './use-cases';
5
+ export * from './errors';
@@ -0,0 +1,12 @@
1
+ import { BaseModel } from '../../general/model/base.model';
2
+ import { IdentifierFields } from '../../general/model/identifier-fields';
3
+ import { NonFunctionPropertyNames } from '../../general/model/types/non-function-property-name.type';
4
+ import { BeardSizes, HairTypes } from './enums';
5
+ export declare class BeautyProfile extends BaseModel<BeautyProfile> implements IdentifierFields<BeautyProfile> {
6
+ id: string;
7
+ userId: string;
8
+ beardSize?: BeardSizes;
9
+ hairType?: HairTypes;
10
+ toPlain(): any;
11
+ identifierFields(): NonFunctionPropertyNames<BeautyProfile>[];
12
+ }
@@ -0,0 +1,15 @@
1
+ import { BaseModel } from '../../general/model/base.model';
2
+ import { IdentifierFields } from '../../general/model/identifier-fields';
3
+ import { NonFunctionPropertyNames } from '../../general/model/types/non-function-property-name.type';
4
+ import { EditionStatus, BillingStatus } from './enums';
5
+ export declare class Edition extends BaseModel<Edition> implements IdentifierFields<Edition> {
6
+ id: string;
7
+ subscriptionId: string;
8
+ billingStatus: BillingStatus;
9
+ editionId: number;
10
+ editionStatus: EditionStatus;
11
+ installment: number;
12
+ paymentId: string;
13
+ draftId?: string;
14
+ identifierFields(): NonFunctionPropertyNames<Edition>[];
15
+ }
@@ -0,0 +1,11 @@
1
+ export declare enum Area {
2
+ GP = "Geral",
3
+ CRM = "CRM",
4
+ MediaProd = "Media Production",
5
+ Tech = "Tecnologia",
6
+ Transactional = "Transacional",
7
+ Operations = "Opera\u00E7\u00F5es",
8
+ Sales = "Comercial",
9
+ Finantial = "Financeiro",
10
+ HR = "RH"
11
+ }
@@ -0,0 +1,7 @@
1
+ export declare enum BeardSizes {
2
+ BIG = "Grande",
3
+ MEDIUM = "M\u00E9dia",
4
+ SHORT = "Curta",
5
+ MUSTACHE = "Bigode",
6
+ NOTHING = "Sem Barba"
7
+ }
@@ -0,0 +1,3 @@
1
+ export declare enum BillingStatus {
2
+ PAYED = "PAGO"
3
+ }
@@ -0,0 +1,3 @@
1
+ export declare enum EditionStatus {
2
+ ALLOCATION_WAITING = "Aguardando aloca\u00E7\u00E3o"
3
+ }
@@ -0,0 +1,7 @@
1
+ export declare enum HairTypes {
2
+ Smooth = "Liso",
3
+ WAVY = "Ondulado",
4
+ CURLY = "Cacheado",
5
+ FRIZZY = "Crespo",
6
+ BALD = "Sou careca"
7
+ }
@@ -0,0 +1,9 @@
1
+ export * from './status.enum';
2
+ export * from './user-type.enum';
3
+ export * from './billing-status.enum';
4
+ export * from './edition-status.enum';
5
+ export * from './user-type.enum';
6
+ export * from './beard-sizes.enum';
7
+ export * from './hair-types.enum';
8
+ export * from './area.enum';
9
+ export * from './office-position.enum';
@@ -0,0 +1,6 @@
1
+ export declare enum OfficePosition {
2
+ Intern = "Estagi\u00E1rio",
3
+ Analyst = "Analista",
4
+ Manager = "Gerente",
5
+ Director = "Diretor"
6
+ }
@@ -0,0 +1,3 @@
1
+ export declare enum Status {
2
+ ACTIVE = "active"
3
+ }
@@ -0,0 +1,8 @@
1
+ export declare enum UserType {
2
+ B2C = "Cliente Transacional",
3
+ GlamGirl = "Glamgirl",
4
+ MensBoy = "Mensboy",
5
+ B2B = "Company",
6
+ Collaborator = "Funcion\u00E1rio",
7
+ Influencer = "Influencer"
8
+ }
@@ -0,0 +1,5 @@
1
+ export * from './enums';
2
+ export * from './user';
3
+ export * from './subscription';
4
+ export * from './edition';
5
+ export * from './beauty-profile';
@@ -0,0 +1,15 @@
1
+ import { BaseModel } from '../../general/model/base.model';
2
+ import { IdentifierFields } from '../../general/model/identifier-fields';
3
+ import { NonFunctionPropertyNames } from '../../general/model/types/non-function-property-name.type';
4
+ import { Edition } from './edition';
5
+ import { Status } from './enums/status.enum';
6
+ import { User } from './user';
7
+ export declare class Subscription extends BaseModel<Subscription> implements IdentifierFields<Subscription> {
8
+ id: string;
9
+ nextPayment: Date;
10
+ recurrence: boolean;
11
+ status: Status;
12
+ editions: Edition[];
13
+ user: User;
14
+ identifierFields(): NonFunctionPropertyNames<Subscription>[];
15
+ }
@@ -0,0 +1,23 @@
1
+ import { BaseModel } from '../../general/model/base.model';
2
+ import { IdentifierFields } from '../../general/model/identifier-fields';
3
+ import { NonFunctionProperties, NonFunctionPropertyNames } from '../../general/model/types';
4
+ import { Area, OfficePosition, UserType } from './enums';
5
+ import { BeautyProfile } from './beauty-profile';
6
+ export declare class User extends BaseModel<User> implements IdentifierFields<User> {
7
+ id: string;
8
+ cpf?: string;
9
+ email: string;
10
+ firstName: string;
11
+ lastName: string;
12
+ displayName?: string;
13
+ phone: string;
14
+ birthday?: Date;
15
+ acceptsNewsletter: boolean;
16
+ type?: UserType;
17
+ beautyProfile?: BeautyProfile;
18
+ area?: Area;
19
+ officePosition?: OfficePosition;
20
+ static toInstance<T>(this: new () => Partial<T>, data: NonFunctionProperties<T> & NonFunctionProperties<User>): T;
21
+ identifierFields(): NonFunctionPropertyNames<User>[];
22
+ toPlain(): any;
23
+ }
@@ -0,0 +1,4 @@
1
+ import { CrudRepository } from '../../general/repository/crud.repository';
2
+ import { BeautyProfile } from '../models/beauty-profile';
3
+ export interface BeautyProfileRepository extends CrudRepository<BeautyProfile> {
4
+ }
@@ -0,0 +1,4 @@
1
+ import { CrudRepository } from '../../general/repository/crud.repository';
2
+ import { Edition } from '../models/edition';
3
+ export interface EditionRepository extends CrudRepository<Edition> {
4
+ }
@@ -0,0 +1,4 @@
1
+ export * from './user.repository';
2
+ export * from './subscription.repository';
3
+ export * from './edition.repository';
4
+ export * from './beauty-profile.repository';
@@ -0,0 +1,4 @@
1
+ import { CrudRepository } from '../../general/repository/crud.repository';
2
+ import { Subscription } from '../models';
3
+ export interface SubscriptionRepository extends CrudRepository<Subscription> {
4
+ }
@@ -0,0 +1,4 @@
1
+ import { CrudRepository } from '../../general/repository/crud.repository';
2
+ import { User } from '../models/user';
3
+ export interface UserRepository extends CrudRepository<User> {
4
+ }
@@ -0,0 +1,10 @@
1
+ import { User } from '../models/user';
2
+ export declare type LoginAndPasswordParams = {
3
+ email: string;
4
+ password: string;
5
+ };
6
+ export interface AuthenticationService {
7
+ signInWithEmailAndPassword(data: LoginAndPasswordParams): Promise<Partial<User>>;
8
+ signInWithGoogle(): Promise<Partial<User>>;
9
+ signOut(): Promise<void>;
10
+ }
@@ -0,0 +1 @@
1
+ export * from './authentication.service';
@@ -0,0 +1,21 @@
1
+ import { User } from '../models';
2
+ import { AuthenticationService } from '../services/authentication.service';
3
+ import { UserRepository } from '../repositories/user.repository';
4
+ export declare enum SignInMethods {
5
+ EMAIL_PASSWORD = "email_password",
6
+ GOOGLE = "google"
7
+ }
8
+ declare type SignInMethod = Lowercase<keyof typeof SignInMethods>;
9
+ declare type SignInParams = {
10
+ email?: string;
11
+ password?: string;
12
+ };
13
+ export declare class Authentication {
14
+ private readonly authService;
15
+ private readonly userRepository;
16
+ constructor(authService: AuthenticationService, userRepository: UserRepository);
17
+ signIn({ email, password }: SignInParams, signInMethod: SignInMethod): Promise<User>;
18
+ private getServiceByMethod;
19
+ private createsUserByCredential;
20
+ }
21
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from './authentication';
2
+ export * from './signout';
@@ -0,0 +1,6 @@
1
+ import { AuthenticationService } from '../services/authentication.service';
2
+ export declare class SignOut {
3
+ private readonly authService;
4
+ constructor(authService: AuthenticationService);
5
+ signOut(): Promise<void>;
6
+ }
@@ -0,0 +1,3 @@
1
+ export * from './invalid-argument.error';
2
+ export * from './required-argument.error';
3
+ export * from './not-found.error';
@@ -0,0 +1,4 @@
1
+ export declare class InvalidArgumentError extends Error {
2
+ readonly message: any;
3
+ constructor(message: any);
4
+ }
@@ -0,0 +1,4 @@
1
+ export declare class NotFoundError extends Error {
2
+ readonly message: any;
3
+ constructor(message: any);
4
+ }
@@ -0,0 +1,5 @@
1
+ export declare class RequiredArgumentError extends Error {
2
+ readonly args: string[];
3
+ arguments: string[];
4
+ constructor(args: string[]);
5
+ }
package/lib/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './domain';
2
+ export * from './errors';
3
+ export * from './infra';
4
+ export * from './utils';
@@ -0,0 +1,9 @@
1
+ import firebase from 'firebase/app';
2
+ import { AuthenticationService, LoginAndPasswordParams, User } from '../../../domain';
3
+ export declare class AuthenticationFirebaseAuthService implements AuthenticationService {
4
+ private readonly firebaseAuth;
5
+ constructor(firebaseAuth: firebase.auth.Auth);
6
+ signInWithEmailAndPassword(data: LoginAndPasswordParams): Promise<Partial<User>>;
7
+ signInWithGoogle(): Promise<Partial<User>>;
8
+ signOut(): Promise<void>;
9
+ }
@@ -0,0 +1 @@
1
+ export * from './authentication-firebase-auth.service';
@@ -0,0 +1,3 @@
1
+ export * from './mixins';
2
+ export * from './types';
3
+ export * from './repositories';
@@ -0,0 +1,9 @@
1
+ export * from './with-firestore.mixin';
2
+ export * from './with-helpers.mixin';
3
+ export * from './with-get-firestore.mixin';
4
+ export * from './with-find-firestore.mixin';
5
+ export * from './with-create-firestore.mixin';
6
+ export * from './with-update-firestore.mixin';
7
+ export * from './with-delete-firestore.mixin';
8
+ export * from './with-sub-collection.mixin';
9
+ export * from './with-crud-firestore.mixin';
@@ -0,0 +1,17 @@
1
+ import { DocumentReference } from '@firebase/firestore-types';
2
+ import { BaseModelWithIdentifier } from '../../../../domain';
3
+ import { FirestoreHelpers, FirestoreRepository } from '../types';
4
+ import { MixinCtor } from '../../../../utils';
5
+ export declare const withCreateFirestore: <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor<{}>>(MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase) => {
6
+ new (...args: any[]): {
7
+ create(data: Partial<TBase>): Promise<TBase>;
8
+ save(data: TBase): Promise<DocumentReference<TBase>>;
9
+ buildCollectionPathForAdd(identifiers: Partial<TBase>): string;
10
+ readonly firestore?: import("@firebase/firestore-types").FirebaseFirestore;
11
+ collectionName: string;
12
+ model: import("../../../../domain").BaseModelBuilder<TBase>;
13
+ collection(path?: string): import("@firebase/firestore-types").CollectionReference<TBase>;
14
+ toArray<T extends BaseModelWithIdentifier<T>>(snapShot: import("@firebase/firestore-types").QuerySnapshot<T> | import("@firebase/firestore-types").QueryDocumentSnapshot<T>[]): T[];
15
+ isSubCollection<T_1 extends BaseModelWithIdentifier<T_1>>(repository: FirestoreRepository<T_1>): repository is import("../types").FirestoreSubRepository<T_1, BaseModelWithIdentifier<{}>>;
16
+ };
17
+ } & TMixinBase;
@@ -0,0 +1,28 @@
1
+ import { BaseModelWithIdentifier } from '../../../../domain';
2
+ import { FirestoreHelpers, FirestoreRepository } from '../types';
3
+ import { MixinCtor } from '../../../../utils';
4
+ export declare const withCrudFirestore: <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor<{}>>(MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase) => {
5
+ new (...args: any[]): {
6
+ update(data: TBase): Promise<TBase>;
7
+ buildCollectionPathForUpdate(identifiers: TBase): string;
8
+ readonly firestore?: import("@firebase/firestore-types").FirebaseFirestore;
9
+ collectionName: string;
10
+ model: import("../../../../domain").BaseModelBuilder<TBase>;
11
+ collection(path?: string): import("@firebase/firestore-types").CollectionReference<TBase>;
12
+ toArray<T extends BaseModelWithIdentifier<T>>(snapShot: import("@firebase/firestore-types").QuerySnapshot<T> | import("@firebase/firestore-types").QueryDocumentSnapshot<T>[]): T[];
13
+ isSubCollection<T_1 extends BaseModelWithIdentifier<T_1>>(repository: FirestoreRepository<T_1>): repository is import("../types").FirestoreSubRepository<T_1, BaseModelWithIdentifier<{}>>;
14
+ get(identifiers: import("../../../../domain").NonFunctionProperties<TBase>): Promise<TBase>;
15
+ buildCollectionPathForGet(identifiers: import("../../../../domain").NonFunctionProperties<TBase>): string;
16
+ find(filters?: import("../../../../domain").RepositoryFindFielters<TBase>[], limits?: import("../../../../domain").RepositoryLimitOptions<TBase>, orderBy?: import("../../../../domain").RepositoryOrderByList<TBase>): Promise<import("../../../../domain").RepositoryFindResult<TBase>>;
17
+ buildCollectionPathForFind(filters: import("../../../../domain").RepositoryFindFielters<TBase>[]): string;
18
+ makeFirestoreWhere: (queryReference: import("@firebase/firestore-types").CollectionReference<TBase> | import("@firebase/firestore-types").Query<TBase>, filter: import("../../../../domain").RepositoryFindFielters<TBase>) => import("@firebase/firestore-types").Query<TBase>;
19
+ buildWhereSentence: (queryReference: import("@firebase/firestore-types").CollectionReference<TBase> | import("@firebase/firestore-types").Query<TBase>, fieldName: import("../../../../domain").NonFunctionPropertyNames<TBase>, options: import("../../../../domain").RepositoryFindFieltersOptions<TBase, import("../../../../domain").NonFunctionPropertyNames<TBase>>) => import("@firebase/firestore-types").Query<TBase>;
20
+ defineLimits(query: import("@firebase/firestore-types").CollectionReference<TBase> | import("@firebase/firestore-types").Query<TBase>, filters: import("../../../../domain").RepositoryFindFielters<TBase>[], limits: import("../../../../domain").RepositoryLimitOptions<TBase>): import("@firebase/firestore-types").Query<TBase>;
21
+ calculateCount(data: TBase[], limits: import("../../../../domain").RepositoryLimitOptions<TBase>): number;
22
+ delete(identifiers: import("../../../../domain").NonFunctionProperties<TBase>): Promise<void>;
23
+ buildCollectionPathForRemove(identifiers: import("../../../../domain").NonFunctionProperties<TBase>): string;
24
+ create(data: Partial<TBase>): Promise<TBase>;
25
+ save(data: TBase): Promise<import("@firebase/firestore-types").DocumentReference<TBase>>;
26
+ buildCollectionPathForAdd(identifiers: Partial<TBase>): string;
27
+ };
28
+ } & TMixinBase;
@@ -0,0 +1,15 @@
1
+ import { BaseModelWithIdentifier, NonFunctionProperties } from '../../../../domain';
2
+ import { FirestoreHelpers, FirestoreRepository } from '../types';
3
+ import { MixinCtor } from '../../../../utils';
4
+ export declare const withDeleteFirestore: <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor<{}>>(MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase) => {
5
+ new (...args: any[]): {
6
+ delete(identifiers: NonFunctionProperties<TBase>): Promise<void>;
7
+ buildCollectionPathForRemove(identifiers: NonFunctionProperties<TBase>): string;
8
+ readonly firestore?: import("@firebase/firestore-types").FirebaseFirestore;
9
+ collectionName: string;
10
+ model: import("../../../../domain").BaseModelBuilder<TBase>;
11
+ collection(path?: string): import("@firebase/firestore-types").CollectionReference<TBase>;
12
+ toArray<T extends BaseModelWithIdentifier<T>>(snapShot: import("@firebase/firestore-types").QuerySnapshot<T> | import("@firebase/firestore-types").QueryDocumentSnapshot<T>[]): T[];
13
+ isSubCollection<T_1 extends BaseModelWithIdentifier<T_1>>(repository: FirestoreRepository<T_1>): repository is import("../types").FirestoreSubRepository<T_1, BaseModelWithIdentifier<{}>>;
14
+ };
15
+ } & TMixinBase;
@@ -0,0 +1,20 @@
1
+ import { CollectionReference, Query } from '@firebase/firestore-types';
2
+ import { BaseModelWithIdentifier, NonFunctionPropertyNames, RepositoryFindFielters, RepositoryFindFieltersOptions, RepositoryFindResult, RepositoryLimitOptions, RepositoryOrderByList } from '../../../../domain';
3
+ import { FirestoreHelpers, FirestoreRepository } from '../types';
4
+ import { MixinCtor } from '../../../../utils';
5
+ export declare const withFindFirestore: <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor<{}>>(MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase) => {
6
+ new (...args: any[]): {
7
+ find(filters?: RepositoryFindFielters<TBase>[], limits?: RepositoryLimitOptions<TBase>, orderBy?: RepositoryOrderByList<TBase>): Promise<RepositoryFindResult<TBase>>;
8
+ buildCollectionPathForFind(filters: RepositoryFindFielters<TBase>[]): string;
9
+ makeFirestoreWhere: (queryReference: CollectionReference<TBase> | Query<TBase>, filter: RepositoryFindFielters<TBase>) => Query<TBase>;
10
+ buildWhereSentence: (queryReference: CollectionReference<TBase> | Query<TBase>, fieldName: NonFunctionPropertyNames<TBase>, options: RepositoryFindFieltersOptions<TBase, NonFunctionPropertyNames<TBase>>) => Query<TBase>;
11
+ defineLimits(query: CollectionReference<TBase> | Query<TBase>, filters: RepositoryFindFielters<TBase>[], limits: RepositoryLimitOptions<TBase>): Query<TBase>;
12
+ calculateCount(data: TBase[], limits: RepositoryLimitOptions<TBase>): number;
13
+ readonly firestore?: import("@firebase/firestore-types").FirebaseFirestore;
14
+ collectionName: string;
15
+ model: import("../../../../domain").BaseModelBuilder<TBase>;
16
+ collection(path?: string): CollectionReference<TBase>;
17
+ toArray<T extends BaseModelWithIdentifier<T>>(snapShot: import("@firebase/firestore-types").QuerySnapshot<T> | import("@firebase/firestore-types").QueryDocumentSnapshot<T>[]): T[];
18
+ isSubCollection<T_1 extends BaseModelWithIdentifier<T_1>>(repository: FirestoreRepository<T_1>): repository is import("../types").FirestoreSubRepository<T_1, BaseModelWithIdentifier<{}>>;
19
+ };
20
+ } & TMixinBase;
@@ -0,0 +1,15 @@
1
+ import { CollectionReference, DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types';
2
+ import { BaseModelBuilder, BaseModelWithIdentifier } from '../../../../domain';
3
+ import { MixinCtor } from '../../../../utils';
4
+ export declare const withFirestore: <TBase extends BaseModelWithIdentifier<TBase>>(MixinBase: MixinCtor) => {
5
+ new (...args: Array<any>): {
6
+ readonly firestore?: FirebaseFirestore;
7
+ collectionName: string;
8
+ model: BaseModelBuilder<TBase>;
9
+ collection(path?: string): CollectionReference<TBase>;
10
+ buildModelInstance(): {
11
+ toFirestore: (data: TBase) => DocumentData;
12
+ fromFirestore: (snap: QueryDocumentSnapshot<TBase>) => TBase;
13
+ };
14
+ };
15
+ };
@@ -0,0 +1,15 @@
1
+ import { BaseModelWithIdentifier, NonFunctionProperties } from '../../../../domain';
2
+ import { FirestoreHelpers, FirestoreRepository } from '../types';
3
+ import { MixinCtor } from '../../../../utils';
4
+ export declare const withGetFirestore: <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor<{}>>(MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase) => {
5
+ new (...args: any[]): {
6
+ get(identifiers: NonFunctionProperties<TBase>): Promise<TBase>;
7
+ buildCollectionPathForGet(identifiers: NonFunctionProperties<TBase>): string;
8
+ readonly firestore?: import("@firebase/firestore-types").FirebaseFirestore;
9
+ collectionName: string;
10
+ model: import("../../../../domain").BaseModelBuilder<TBase>;
11
+ collection(path?: string): import("@firebase/firestore-types").CollectionReference<TBase>;
12
+ toArray<T extends BaseModelWithIdentifier<T>>(snapShot: import("@firebase/firestore-types").QuerySnapshot<T> | import("@firebase/firestore-types").QueryDocumentSnapshot<T>[]): T[];
13
+ isSubCollection<T_1 extends BaseModelWithIdentifier<T_1>>(repository: FirestoreRepository<T_1>): repository is import("../types").FirestoreSubRepository<T_1, BaseModelWithIdentifier<{}>>;
14
+ };
15
+ } & TMixinBase;
@@ -0,0 +1,10 @@
1
+ import { QuerySnapshot, QueryDocumentSnapshot } from '@firebase/firestore-types';
2
+ import { BaseModelWithIdentifier } from '../../../../domain';
3
+ import { FirestoreRepository, FirestoreSubRepository } from '../types';
4
+ import { MixinCtor } from '../../../../utils';
5
+ export declare const withHelpers: <Model extends BaseModelWithIdentifier<Model>, TMixinBase extends MixinCtor<{}>>(MixinBase: MixinCtor<{}> & TMixinBase) => {
6
+ new (...args: any[]): {
7
+ toArray<T extends BaseModelWithIdentifier<T>>(snapShot: QuerySnapshot<T> | QueryDocumentSnapshot<T>[]): T[];
8
+ isSubCollection<T_2 extends BaseModelWithIdentifier<T_2>>(repository: FirestoreRepository<T_2>): repository is FirestoreSubRepository<T_2, BaseModelWithIdentifier<{}>>;
9
+ };
10
+ } & TMixinBase;