@sisques-labs/nestjs-kit 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +770 -0
- package/dist/index.d.ts +93 -0
- package/dist/index.js +110 -0
- package/dist/index.js.map +1 -0
- package/dist/shared/application/commands/base/base-command.handler.d.ts +6 -0
- package/dist/shared/application/commands/base/base-command.handler.js +14 -0
- package/dist/shared/application/commands/base/base-command.handler.js.map +1 -0
- package/dist/shared/application/commands/interfaces/base-command-handler.interface.d.ts +3 -0
- package/dist/shared/application/commands/interfaces/base-command-handler.interface.js +3 -0
- package/dist/shared/application/commands/interfaces/base-command-handler.interface.js.map +1 -0
- package/dist/shared/application/commands/update/base-update/base-update.command-handler.d.ts +9 -0
- package/dist/shared/application/commands/update/base-update/base-update.command-handler.js +25 -0
- package/dist/shared/application/commands/update/base-update/base-update.command-handler.js.map +1 -0
- package/dist/shared/application/dtos/commands/field-changed/base-field-changed-command.dto.d.ts +5 -0
- package/dist/shared/application/dtos/commands/field-changed/base-field-changed-command.dto.js +3 -0
- package/dist/shared/application/dtos/commands/field-changed/base-field-changed-command.dto.js.map +1 -0
- package/dist/shared/application/services/base-service/base-service.interface.d.ts +3 -0
- package/dist/shared/application/services/base-service/base-service.interface.js +3 -0
- package/dist/shared/application/services/base-service/base-service.interface.js.map +1 -0
- package/dist/shared/domain/aggregates/base-aggregate/base.aggregate.d.ts +9 -0
- package/dist/shared/domain/aggregates/base-aggregate/base.aggregate.js +19 -0
- package/dist/shared/domain/aggregates/base-aggregate/base.aggregate.js.map +1 -0
- package/dist/shared/domain/entities/criteria.d.ts +21 -0
- package/dist/shared/domain/entities/criteria.js +12 -0
- package/dist/shared/domain/entities/criteria.js.map +1 -0
- package/dist/shared/domain/entities/paginated-result.entity.d.ts +8 -0
- package/dist/shared/domain/entities/paginated-result.entity.js +16 -0
- package/dist/shared/domain/entities/paginated-result.entity.js.map +1 -0
- package/dist/shared/domain/enums/filter-operator.enum.d.ts +10 -0
- package/dist/shared/domain/enums/filter-operator.enum.js +15 -0
- package/dist/shared/domain/enums/filter-operator.enum.js.map +1 -0
- package/dist/shared/domain/enums/length-unit/length-unit.enum.d.ts +7 -0
- package/dist/shared/domain/enums/length-unit/length-unit.enum.js +12 -0
- package/dist/shared/domain/enums/length-unit/length-unit.enum.js.map +1 -0
- package/dist/shared/domain/enums/sort-direction.enum.d.ts +4 -0
- package/dist/shared/domain/enums/sort-direction.enum.js +9 -0
- package/dist/shared/domain/enums/sort-direction.enum.js.map +1 -0
- package/dist/shared/domain/enums/user-context/user/user-role/user-role.enum.d.ts +4 -0
- package/dist/shared/domain/enums/user-context/user/user-role/user-role.enum.js +9 -0
- package/dist/shared/domain/enums/user-context/user/user-role/user-role.enum.js.map +1 -0
- package/dist/shared/domain/enums/user-context/user/user-status/user-status.enum.d.ts +5 -0
- package/dist/shared/domain/enums/user-context/user/user-status/user-status.enum.js +10 -0
- package/dist/shared/domain/enums/user-context/user/user-status/user-status.enum.js.map +1 -0
- package/dist/shared/domain/events/base-event.interface.d.ts +13 -0
- package/dist/shared/domain/events/base-event.interface.js +21 -0
- package/dist/shared/domain/events/base-event.interface.js.map +1 -0
- package/dist/shared/domain/exceptions/base.exception.d.ts +6 -0
- package/dist/shared/domain/exceptions/base.exception.js +23 -0
- package/dist/shared/domain/exceptions/base.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-boolean/invalid-boolean.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-boolean/invalid-boolean.exception.js +12 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-boolean/invalid-boolean.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-color/invalid-color.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-color/invalid-color.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-color/invalid-color.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-dimensions/invalid-dimensions.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-dimensions/invalid-dimensions.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-dimensions/invalid-dimensions.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-email/invalid-email.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-email/invalid-email.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-email/invalid-email.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-enum-value/invalid-enum-value.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-enum-value/invalid-enum-value.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-enum-value/invalid-enum-value.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-hex/invalid-hex.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-hex/invalid-hex.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-hex/invalid-hex.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-ip/invalid-ip.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-ip/invalid-ip.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-ip/invalid-ip.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-json/invalid-json.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-json/invalid-json.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-json/invalid-json.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-locale/invalid-locale.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-locale/invalid-locale.exception.js +12 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-locale/invalid-locale.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-number/invalid-number.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-number/invalid-number.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-number/invalid-number.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-numeric-range/invalid-numeric-range.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-numeric-range/invalid-numeric-range.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-numeric-range/invalid-numeric-range.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-password/invalid-password.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-password/invalid-password.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-password/invalid-password.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-phone/invalid-phone.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-phone/invalid-phone.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-phone/invalid-phone.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-string/invalid-string.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-string/invalid-string.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-string/invalid-string.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-timezone/invalid-timezone.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-timezone/invalid-timezone.exception.js +12 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-timezone/invalid-timezone.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-url/invalid-url.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-url/invalid-url.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-url/invalid-url.exception.js.map +1 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-uuid/invalid-uuid.exception.d.ts +4 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-uuid/invalid-uuid.exception.js +11 -0
- package/dist/shared/domain/exceptions/value-objects/invalid-uuid/invalid-uuid.exception.js.map +1 -0
- package/dist/shared/domain/interfaces/base-aggregate-dto.interface.d.ts +5 -0
- package/dist/shared/domain/interfaces/base-aggregate-dto.interface.js +3 -0
- package/dist/shared/domain/interfaces/base-aggregate-dto.interface.js.map +1 -0
- package/dist/shared/domain/interfaces/base-view-model-dto.interface.d.ts +5 -0
- package/dist/shared/domain/interfaces/base-view-model-dto.interface.js +3 -0
- package/dist/shared/domain/interfaces/base-view-model-dto.interface.js.map +1 -0
- package/dist/shared/domain/interfaces/event-metadata.interface.d.ts +7 -0
- package/dist/shared/domain/interfaces/event-metadata.interface.js +3 -0
- package/dist/shared/domain/interfaces/event-metadata.interface.js.map +1 -0
- package/dist/shared/domain/interfaces/events/base-event-data.interface.d.ts +4 -0
- package/dist/shared/domain/interfaces/events/base-event-data.interface.js +3 -0
- package/dist/shared/domain/interfaces/events/base-event-data.interface.js.map +1 -0
- package/dist/shared/domain/interfaces/factories/read-factory.interface.d.ts +5 -0
- package/dist/shared/domain/interfaces/factories/read-factory.interface.js +3 -0
- package/dist/shared/domain/interfaces/factories/read-factory.interface.js.map +1 -0
- package/dist/shared/domain/interfaces/factories/write-factory.interface.d.ts +4 -0
- package/dist/shared/domain/interfaces/factories/write-factory.interface.js +3 -0
- package/dist/shared/domain/interfaces/factories/write-factory.interface.js.map +1 -0
- package/dist/shared/domain/interfaces/numeric-range.interface.d.ts +4 -0
- package/dist/shared/domain/interfaces/numeric-range.interface.js +3 -0
- package/dist/shared/domain/interfaces/numeric-range.interface.js.map +1 -0
- package/dist/shared/domain/interfaces/repository/base-read-repository.interface.d.ts +8 -0
- package/dist/shared/domain/interfaces/repository/base-read-repository.interface.js +3 -0
- package/dist/shared/domain/interfaces/repository/base-read-repository.interface.js.map +1 -0
- package/dist/shared/domain/interfaces/repository/base-write-repository.interface.d.ts +5 -0
- package/dist/shared/domain/interfaces/repository/base-write-repository.interface.js +3 -0
- package/dist/shared/domain/interfaces/repository/base-write-repository.interface.js.map +1 -0
- package/dist/shared/domain/interfaces/updated-field.interface.d.ts +5 -0
- package/dist/shared/domain/interfaces/updated-field.interface.js +3 -0
- package/dist/shared/domain/interfaces/updated-field.interface.js.map +1 -0
- package/dist/shared/domain/primitives/base-primitives/base.primitives.d.ts +4 -0
- package/dist/shared/domain/primitives/base-primitives/base.primitives.js +3 -0
- package/dist/shared/domain/primitives/base-primitives/base.primitives.js.map +1 -0
- package/dist/shared/domain/value-objects/base/value-object.base.d.ts +11 -0
- package/dist/shared/domain/value-objects/base/value-object.base.js +40 -0
- package/dist/shared/domain/value-objects/base/value-object.base.js.map +1 -0
- package/dist/shared/domain/value-objects/boolean/boolean.vo.d.ts +26 -0
- package/dist/shared/domain/value-objects/boolean/boolean.vo.js +102 -0
- package/dist/shared/domain/value-objects/boolean/boolean.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/color/color.vo.d.ts +21 -0
- package/dist/shared/domain/value-objects/color/color.vo.js +127 -0
- package/dist/shared/domain/value-objects/color/color.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/date/date.vo.d.ts +9 -0
- package/dist/shared/domain/value-objects/date/date.vo.js +23 -0
- package/dist/shared/domain/value-objects/date/date.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/dimensions/dimensions.vo.d.ts +68 -0
- package/dist/shared/domain/value-objects/dimensions/dimensions.vo.js +182 -0
- package/dist/shared/domain/value-objects/dimensions/dimensions.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/email/email.vo.d.ts +12 -0
- package/dist/shared/domain/value-objects/email/email.vo.js +48 -0
- package/dist/shared/domain/value-objects/email/email.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/enum/enum.vo.d.ts +35 -0
- package/dist/shared/domain/value-objects/enum/enum.vo.js +137 -0
- package/dist/shared/domain/value-objects/enum/enum.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/hex/hex.vo.d.ts +11 -0
- package/dist/shared/domain/value-objects/hex/hex.vo.js +38 -0
- package/dist/shared/domain/value-objects/hex/hex.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/ip/ip.vo.d.ts +19 -0
- package/dist/shared/domain/value-objects/ip/ip.vo.js +90 -0
- package/dist/shared/domain/value-objects/ip/ip.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/json/json.vo.d.ts +43 -0
- package/dist/shared/domain/value-objects/json/json.vo.js +224 -0
- package/dist/shared/domain/value-objects/json/json.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/length-unit/length-unit.vo.d.ts +5 -0
- package/dist/shared/domain/value-objects/length-unit/length-unit.vo.js +12 -0
- package/dist/shared/domain/value-objects/length-unit/length-unit.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/locale/locale.vo.d.ts +27 -0
- package/dist/shared/domain/value-objects/locale/locale.vo.js +292 -0
- package/dist/shared/domain/value-objects/locale/locale.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/number/number.vo.d.ts +23 -0
- package/dist/shared/domain/value-objects/number/number.vo.js +77 -0
- package/dist/shared/domain/value-objects/number/number.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/numeric-range/numeric-range.vo.d.ts +13 -0
- package/dist/shared/domain/value-objects/numeric-range/numeric-range.vo.js +35 -0
- package/dist/shared/domain/value-objects/numeric-range/numeric-range.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/password/password.vo.d.ts +14 -0
- package/dist/shared/domain/value-objects/password/password.vo.js +90 -0
- package/dist/shared/domain/value-objects/password/password.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/phone/phone.vo.d.ts +13 -0
- package/dist/shared/domain/value-objects/phone/phone.vo.js +56 -0
- package/dist/shared/domain/value-objects/phone/phone.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/phone-code/phone-code.vo.d.ts +25 -0
- package/dist/shared/domain/value-objects/phone-code/phone-code.vo.js +344 -0
- package/dist/shared/domain/value-objects/phone-code/phone-code.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/slug/slug.vo.d.ts +25 -0
- package/dist/shared/domain/value-objects/slug/slug.vo.js +87 -0
- package/dist/shared/domain/value-objects/slug/slug.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/string/string.vo.d.ts +38 -0
- package/dist/shared/domain/value-objects/string/string.vo.js +146 -0
- package/dist/shared/domain/value-objects/string/string.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/timezone/timezone.vo.d.ts +23 -0
- package/dist/shared/domain/value-objects/timezone/timezone.vo.js +116 -0
- package/dist/shared/domain/value-objects/timezone/timezone.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/url/url.vo.d.ts +9 -0
- package/dist/shared/domain/value-objects/url/url.vo.js +31 -0
- package/dist/shared/domain/value-objects/url/url.vo.js.map +1 -0
- package/dist/shared/domain/value-objects/uuid/uuid.vo.d.ts +13 -0
- package/dist/shared/domain/value-objects/uuid/uuid.vo.js +49 -0
- package/dist/shared/domain/value-objects/uuid/uuid.vo.js.map +1 -0
- package/dist/shared/domain/view-models/base-view-model/base-view-model.d.ts +14 -0
- package/dist/shared/domain/view-models/base-view-model/base-view-model.js +24 -0
- package/dist/shared/domain/view-models/base-view-model/base-view-model.js.map +1 -0
- package/dist/shared/infrastructure/database/base-database.repository.d.ts +11 -0
- package/dist/shared/infrastructure/database/base-database.repository.js +14 -0
- package/dist/shared/infrastructure/database/base-database.repository.js.map +1 -0
- package/dist/shared/infrastructure/database/mongodb/base-mongo/base-mongo-database.repository.d.ts +9 -0
- package/dist/shared/infrastructure/database/mongodb/base-mongo/base-mongo-database.repository.js +78 -0
- package/dist/shared/infrastructure/database/mongodb/base-mongo/base-mongo-database.repository.js.map +1 -0
- package/dist/shared/infrastructure/database/mongodb/base-mongo/base-mongo-master/base-mongo-master.repository.d.ts +6 -0
- package/dist/shared/infrastructure/database/mongodb/base-mongo/base-mongo-master/base-mongo-master.repository.js +12 -0
- package/dist/shared/infrastructure/database/mongodb/base-mongo/base-mongo-master/base-mongo-master.repository.js.map +1 -0
- package/dist/shared/infrastructure/database/mongodb/dtos/base-mongo.dto.d.ts +5 -0
- package/dist/shared/infrastructure/database/mongodb/dtos/base-mongo.dto.js +3 -0
- package/dist/shared/infrastructure/database/mongodb/dtos/base-mongo.dto.js.map +1 -0
- package/dist/shared/infrastructure/database/mongodb/mongodb.module.d.ts +2 -0
- package/dist/shared/infrastructure/database/mongodb/mongodb.module.js +23 -0
- package/dist/shared/infrastructure/database/mongodb/mongodb.module.js.map +1 -0
- package/dist/shared/infrastructure/database/mongodb/services/mongo-master/mongo-master.service.d.ts +14 -0
- package/dist/shared/infrastructure/database/mongodb/services/mongo-master/mongo-master.service.js +57 -0
- package/dist/shared/infrastructure/database/mongodb/services/mongo-master/mongo-master.service.js.map +1 -0
- package/dist/shared/infrastructure/database/typeorm/base-typeorm/base-typeorm-master/base-typeorm-master.repository.d.ts +9 -0
- package/dist/shared/infrastructure/database/typeorm/base-typeorm/base-typeorm-master/base-typeorm-master.repository.js +18 -0
- package/dist/shared/infrastructure/database/typeorm/base-typeorm/base-typeorm-master/base-typeorm-master.repository.js.map +1 -0
- package/dist/shared/infrastructure/database/typeorm/data-source.d.ts +4 -0
- package/dist/shared/infrastructure/database/typeorm/data-source.js +33 -0
- package/dist/shared/infrastructure/database/typeorm/data-source.js.map +1 -0
- package/dist/shared/infrastructure/database/typeorm/dtos/base-typeorm.dto.d.ts +4 -0
- package/dist/shared/infrastructure/database/typeorm/dtos/base-typeorm.dto.js +3 -0
- package/dist/shared/infrastructure/database/typeorm/dtos/base-typeorm.dto.js.map +1 -0
- package/dist/shared/infrastructure/database/typeorm/entities/base-typeorm.entity.d.ts +6 -0
- package/dist/shared/infrastructure/database/typeorm/entities/base-typeorm.entity.js +36 -0
- package/dist/shared/infrastructure/database/typeorm/entities/base-typeorm.entity.js.map +1 -0
- package/dist/shared/infrastructure/database/typeorm/services/typeorm-master/typeorm-master.service.d.ts +9 -0
- package/dist/shared/infrastructure/database/typeorm/services/typeorm-master/typeorm-master.service.js +42 -0
- package/dist/shared/infrastructure/database/typeorm/services/typeorm-master/typeorm-master.service.js.map +1 -0
- package/dist/shared/infrastructure/database/typeorm/typeorm-module-options.factory.d.ts +3 -0
- package/dist/shared/infrastructure/database/typeorm/typeorm-module-options.factory.js +32 -0
- package/dist/shared/infrastructure/database/typeorm/typeorm-module-options.factory.js.map +1 -0
- package/dist/shared/infrastructure/database/typeorm/typeorm.module.d.ts +2 -0
- package/dist/shared/infrastructure/database/typeorm/typeorm.module.js +34 -0
- package/dist/shared/infrastructure/database/typeorm/typeorm.module.js.map +1 -0
- package/dist/shared/infrastructure/logging/factories/create-shared-winston-logger-options.d.ts +6 -0
- package/dist/shared/infrastructure/logging/factories/create-shared-winston-logger-options.js +92 -0
- package/dist/shared/infrastructure/logging/factories/create-shared-winston-logger-options.js.map +1 -0
- package/dist/shared/infrastructure/logging/formats/shared-winston.formats.d.ts +3 -0
- package/dist/shared/infrastructure/logging/formats/shared-winston.formats.js +30 -0
- package/dist/shared/infrastructure/logging/formats/shared-winston.formats.js.map +1 -0
- package/dist/shared/infrastructure/logging/interfaces/shared-winston-logger-factory-options.interface.d.ts +21 -0
- package/dist/shared/infrastructure/logging/interfaces/shared-winston-logger-factory-options.interface.js +3 -0
- package/dist/shared/infrastructure/logging/interfaces/shared-winston-logger-factory-options.interface.js.map +1 -0
- package/dist/shared/shared.module.d.ts +3 -0
- package/dist/shared/shared.module.js +51 -0
- package/dist/shared/shared.module.js.map +1 -0
- package/dist/shared/transport/graphql/dtos/requests/base-filter/base-filter.input.d.ts +6 -0
- package/dist/shared/transport/graphql/dtos/requests/base-filter/base-filter.input.js +40 -0
- package/dist/shared/transport/graphql/dtos/requests/base-filter/base-filter.input.js.map +1 -0
- package/dist/shared/transport/graphql/dtos/requests/base-find-by-criteria/base-find-by-criteria.input.d.ts +8 -0
- package/dist/shared/transport/graphql/dtos/requests/base-find-by-criteria/base-find-by-criteria.input.js +56 -0
- package/dist/shared/transport/graphql/dtos/requests/base-find-by-criteria/base-find-by-criteria.input.js.map +1 -0
- package/dist/shared/transport/graphql/dtos/requests/base-pagination/base-pagination.input.d.ts +4 -0
- package/dist/shared/transport/graphql/dtos/requests/base-pagination/base-pagination.input.js +33 -0
- package/dist/shared/transport/graphql/dtos/requests/base-pagination/base-pagination.input.js.map +1 -0
- package/dist/shared/transport/graphql/dtos/requests/base-sort/base-sort.input.d.ts +5 -0
- package/dist/shared/transport/graphql/dtos/requests/base-sort/base-sort.input.js +34 -0
- package/dist/shared/transport/graphql/dtos/requests/base-sort/base-sort.input.js.map +1 -0
- package/dist/shared/transport/graphql/dtos/requests/numeric-range/numeric-range.input.d.ts +4 -0
- package/dist/shared/transport/graphql/dtos/requests/numeric-range/numeric-range.input.js +31 -0
- package/dist/shared/transport/graphql/dtos/requests/numeric-range/numeric-range.input.js.map +1 -0
- package/dist/shared/transport/graphql/dtos/responses/base-paginated-result/base-paginated-result.dto.d.ts +6 -0
- package/dist/shared/transport/graphql/dtos/responses/base-paginated-result/base-paginated-result.dto.js +36 -0
- package/dist/shared/transport/graphql/dtos/responses/base-paginated-result/base-paginated-result.dto.js.map +1 -0
- package/dist/shared/transport/graphql/dtos/responses/numeric-range/numeric-range.dto.d.ts +4 -0
- package/dist/shared/transport/graphql/dtos/responses/numeric-range/numeric-range.dto.js +31 -0
- package/dist/shared/transport/graphql/dtos/responses/numeric-range/numeric-range.dto.js.map +1 -0
- package/dist/shared/transport/graphql/dtos/responses/success-response/success-response.dto.d.ts +5 -0
- package/dist/shared/transport/graphql/dtos/responses/success-response/success-response.dto.js +32 -0
- package/dist/shared/transport/graphql/dtos/responses/success-response/success-response.dto.js.map +1 -0
- package/dist/shared/transport/graphql/dtos/success-response-array.dto.d.ts +5 -0
- package/dist/shared/transport/graphql/dtos/success-response-array.dto.js +32 -0
- package/dist/shared/transport/graphql/dtos/success-response-array.dto.js.map +1 -0
- package/dist/shared/transport/graphql/enums/shared-registered-enums.graphql.d.ts +1 -0
- package/dist/shared/transport/graphql/enums/shared-registered-enums.graphql.js +15 -0
- package/dist/shared/transport/graphql/enums/shared-registered-enums.graphql.js.map +1 -0
- package/dist/shared/transport/graphql/mappers/mutation-response/mutation-response.mapper.d.ts +6 -0
- package/dist/shared/transport/graphql/mappers/mutation-response/mutation-response.mapper.js +31 -0
- package/dist/shared/transport/graphql/mappers/mutation-response/mutation-response.mapper.js.map +1 -0
- package/dist/shared/transport/graphql/plugins/complexity.plugin.d.ts +4 -0
- package/dist/shared/transport/graphql/plugins/complexity.plugin.js +40 -0
- package/dist/shared/transport/graphql/plugins/complexity.plugin.js.map +1 -0
- package/dist/shared/transport/graphql/registered-enums/registered-enums.graphql.d.ts +1 -0
- package/dist/shared/transport/graphql/registered-enums/registered-enums.graphql.js +33 -0
- package/dist/shared/transport/graphql/registered-enums/registered-enums.graphql.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +152 -0
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PhoneCodeValueObject = void 0;
|
|
4
|
+
const invalid_string_exception_1 = require("../../exceptions/value-objects/invalid-string/invalid-string.exception");
|
|
5
|
+
const string_vo_1 = require("../string/string.vo");
|
|
6
|
+
class PhoneCodeValueObject extends string_vo_1.StringValueObject {
|
|
7
|
+
constructor(value, options = {}) {
|
|
8
|
+
const processedValue = PhoneCodeValueObject.normalizePhoneCode(value);
|
|
9
|
+
super(processedValue, {
|
|
10
|
+
minLength: PhoneCodeValueObject.MIN_LENGTH,
|
|
11
|
+
maxLength: PhoneCodeValueObject.MAX_LENGTH,
|
|
12
|
+
allowEmpty: options.allowEmpty ?? false,
|
|
13
|
+
pattern: PhoneCodeValueObject.PHONE_CODE_PATTERN,
|
|
14
|
+
trim: true,
|
|
15
|
+
});
|
|
16
|
+
if (options.validateExistence !== false) {
|
|
17
|
+
if (this.value.length > 0 || options.allowEmpty !== true) {
|
|
18
|
+
this.validateExistence();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
static fromString(code, options = {}) {
|
|
23
|
+
return new PhoneCodeValueObject(code, options);
|
|
24
|
+
}
|
|
25
|
+
static normalizePhoneCode(code) {
|
|
26
|
+
if (!code || typeof code !== 'string') {
|
|
27
|
+
return '';
|
|
28
|
+
}
|
|
29
|
+
let normalized = code.trim();
|
|
30
|
+
if (!normalized.startsWith('+')) {
|
|
31
|
+
normalized = '+' + normalized;
|
|
32
|
+
}
|
|
33
|
+
normalized = normalized.replace(/[^\d+]/g, '');
|
|
34
|
+
return normalized;
|
|
35
|
+
}
|
|
36
|
+
exists() {
|
|
37
|
+
return PhoneCodeValueObject.COMMON_PHONE_CODES.has(this.value);
|
|
38
|
+
}
|
|
39
|
+
getNumericCode() {
|
|
40
|
+
return this.value.substring(1);
|
|
41
|
+
}
|
|
42
|
+
getFullCode() {
|
|
43
|
+
return this.value;
|
|
44
|
+
}
|
|
45
|
+
isValidFormat() {
|
|
46
|
+
return PhoneCodeValueObject.PHONE_CODE_PATTERN.test(this.value);
|
|
47
|
+
}
|
|
48
|
+
isNorthAmerican() {
|
|
49
|
+
return this.value === '+1';
|
|
50
|
+
}
|
|
51
|
+
isEuropean() {
|
|
52
|
+
const europeanCodes = [
|
|
53
|
+
'+30',
|
|
54
|
+
'+31',
|
|
55
|
+
'+32',
|
|
56
|
+
'+33',
|
|
57
|
+
'+34',
|
|
58
|
+
'+36',
|
|
59
|
+
'+39',
|
|
60
|
+
'+40',
|
|
61
|
+
'+41',
|
|
62
|
+
'+43',
|
|
63
|
+
'+44',
|
|
64
|
+
'+45',
|
|
65
|
+
'+46',
|
|
66
|
+
'+47',
|
|
67
|
+
'+48',
|
|
68
|
+
'+49',
|
|
69
|
+
];
|
|
70
|
+
return europeanCodes.includes(this.value);
|
|
71
|
+
}
|
|
72
|
+
getRegionName() {
|
|
73
|
+
const regionMap = {
|
|
74
|
+
'+1': 'North America (US/Canada)',
|
|
75
|
+
'+7': 'Russia/Kazakhstan',
|
|
76
|
+
'+20': 'Egypt',
|
|
77
|
+
'+27': 'South Africa',
|
|
78
|
+
'+30': 'Greece',
|
|
79
|
+
'+31': 'Netherlands',
|
|
80
|
+
'+32': 'Belgium',
|
|
81
|
+
'+33': 'France',
|
|
82
|
+
'+34': 'Spain',
|
|
83
|
+
'+36': 'Hungary',
|
|
84
|
+
'+39': 'Italy',
|
|
85
|
+
'+40': 'Romania',
|
|
86
|
+
'+41': 'Switzerland',
|
|
87
|
+
'+43': 'Austria',
|
|
88
|
+
'+44': 'United Kingdom',
|
|
89
|
+
'+45': 'Denmark',
|
|
90
|
+
'+46': 'Sweden',
|
|
91
|
+
'+47': 'Norway',
|
|
92
|
+
'+48': 'Poland',
|
|
93
|
+
'+49': 'Germany',
|
|
94
|
+
'+51': 'Peru',
|
|
95
|
+
'+52': 'Mexico',
|
|
96
|
+
'+53': 'Cuba',
|
|
97
|
+
'+54': 'Argentina',
|
|
98
|
+
'+55': 'Brazil',
|
|
99
|
+
'+56': 'Chile',
|
|
100
|
+
'+57': 'Colombia',
|
|
101
|
+
'+58': 'Venezuela',
|
|
102
|
+
'+60': 'Malaysia',
|
|
103
|
+
'+61': 'Australia',
|
|
104
|
+
'+62': 'Indonesia',
|
|
105
|
+
'+63': 'Philippines',
|
|
106
|
+
'+64': 'New Zealand',
|
|
107
|
+
'+65': 'Singapore',
|
|
108
|
+
'+66': 'Thailand',
|
|
109
|
+
'+81': 'Japan',
|
|
110
|
+
'+82': 'South Korea',
|
|
111
|
+
'+84': 'Vietnam',
|
|
112
|
+
'+86': 'China',
|
|
113
|
+
'+90': 'Turkey',
|
|
114
|
+
'+91': 'India',
|
|
115
|
+
'+92': 'Pakistan',
|
|
116
|
+
'+93': 'Afghanistan',
|
|
117
|
+
'+94': 'Sri Lanka',
|
|
118
|
+
'+95': 'Myanmar',
|
|
119
|
+
'+98': 'Iran',
|
|
120
|
+
};
|
|
121
|
+
return regionMap[this.value] || null;
|
|
122
|
+
}
|
|
123
|
+
validateExistence() {
|
|
124
|
+
if (!this.exists()) {
|
|
125
|
+
throw new invalid_string_exception_1.InvalidStringException(`Phone code ${this.value} is not recognized as a valid country code`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
equals(other) {
|
|
129
|
+
return this.value === other.value;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.PhoneCodeValueObject = PhoneCodeValueObject;
|
|
133
|
+
PhoneCodeValueObject.PHONE_CODE_PATTERN = /^\+[1-9]\d{0,3}$/;
|
|
134
|
+
PhoneCodeValueObject.MIN_LENGTH = 2;
|
|
135
|
+
PhoneCodeValueObject.MAX_LENGTH = 5;
|
|
136
|
+
PhoneCodeValueObject.COMMON_PHONE_CODES = new Set([
|
|
137
|
+
'+1',
|
|
138
|
+
'+7',
|
|
139
|
+
'+20',
|
|
140
|
+
'+27',
|
|
141
|
+
'+30',
|
|
142
|
+
'+31',
|
|
143
|
+
'+32',
|
|
144
|
+
'+33',
|
|
145
|
+
'+34',
|
|
146
|
+
'+36',
|
|
147
|
+
'+39',
|
|
148
|
+
'+40',
|
|
149
|
+
'+41',
|
|
150
|
+
'+43',
|
|
151
|
+
'+44',
|
|
152
|
+
'+45',
|
|
153
|
+
'+46',
|
|
154
|
+
'+47',
|
|
155
|
+
'+48',
|
|
156
|
+
'+49',
|
|
157
|
+
'+51',
|
|
158
|
+
'+52',
|
|
159
|
+
'+53',
|
|
160
|
+
'+54',
|
|
161
|
+
'+55',
|
|
162
|
+
'+56',
|
|
163
|
+
'+57',
|
|
164
|
+
'+58',
|
|
165
|
+
'+60',
|
|
166
|
+
'+61',
|
|
167
|
+
'+62',
|
|
168
|
+
'+63',
|
|
169
|
+
'+64',
|
|
170
|
+
'+65',
|
|
171
|
+
'+66',
|
|
172
|
+
'+81',
|
|
173
|
+
'+82',
|
|
174
|
+
'+84',
|
|
175
|
+
'+86',
|
|
176
|
+
'+90',
|
|
177
|
+
'+91',
|
|
178
|
+
'+92',
|
|
179
|
+
'+93',
|
|
180
|
+
'+94',
|
|
181
|
+
'+95',
|
|
182
|
+
'+98',
|
|
183
|
+
'+212',
|
|
184
|
+
'+213',
|
|
185
|
+
'+216',
|
|
186
|
+
'+218',
|
|
187
|
+
'+220',
|
|
188
|
+
'+221',
|
|
189
|
+
'+222',
|
|
190
|
+
'+223',
|
|
191
|
+
'+224',
|
|
192
|
+
'+225',
|
|
193
|
+
'+226',
|
|
194
|
+
'+227',
|
|
195
|
+
'+228',
|
|
196
|
+
'+229',
|
|
197
|
+
'+230',
|
|
198
|
+
'+231',
|
|
199
|
+
'+232',
|
|
200
|
+
'+233',
|
|
201
|
+
'+234',
|
|
202
|
+
'+235',
|
|
203
|
+
'+236',
|
|
204
|
+
'+237',
|
|
205
|
+
'+238',
|
|
206
|
+
'+239',
|
|
207
|
+
'+240',
|
|
208
|
+
'+241',
|
|
209
|
+
'+242',
|
|
210
|
+
'+243',
|
|
211
|
+
'+244',
|
|
212
|
+
'+245',
|
|
213
|
+
'+246',
|
|
214
|
+
'+247',
|
|
215
|
+
'+248',
|
|
216
|
+
'+249',
|
|
217
|
+
'+250',
|
|
218
|
+
'+251',
|
|
219
|
+
'+252',
|
|
220
|
+
'+253',
|
|
221
|
+
'+254',
|
|
222
|
+
'+255',
|
|
223
|
+
'+256',
|
|
224
|
+
'+257',
|
|
225
|
+
'+258',
|
|
226
|
+
'+260',
|
|
227
|
+
'+261',
|
|
228
|
+
'+262',
|
|
229
|
+
'+263',
|
|
230
|
+
'+264',
|
|
231
|
+
'+265',
|
|
232
|
+
'+266',
|
|
233
|
+
'+267',
|
|
234
|
+
'+268',
|
|
235
|
+
'+269',
|
|
236
|
+
'+290',
|
|
237
|
+
'+291',
|
|
238
|
+
'+297',
|
|
239
|
+
'+298',
|
|
240
|
+
'+299',
|
|
241
|
+
'+350',
|
|
242
|
+
'+351',
|
|
243
|
+
'+352',
|
|
244
|
+
'+353',
|
|
245
|
+
'+354',
|
|
246
|
+
'+355',
|
|
247
|
+
'+356',
|
|
248
|
+
'+357',
|
|
249
|
+
'+358',
|
|
250
|
+
'+359',
|
|
251
|
+
'+370',
|
|
252
|
+
'+371',
|
|
253
|
+
'+372',
|
|
254
|
+
'+373',
|
|
255
|
+
'+374',
|
|
256
|
+
'+375',
|
|
257
|
+
'+376',
|
|
258
|
+
'+377',
|
|
259
|
+
'+378',
|
|
260
|
+
'+380',
|
|
261
|
+
'+381',
|
|
262
|
+
'+382',
|
|
263
|
+
'+383',
|
|
264
|
+
'+385',
|
|
265
|
+
'+386',
|
|
266
|
+
'+387',
|
|
267
|
+
'+389',
|
|
268
|
+
'+420',
|
|
269
|
+
'+421',
|
|
270
|
+
'+423',
|
|
271
|
+
'+500',
|
|
272
|
+
'+501',
|
|
273
|
+
'+502',
|
|
274
|
+
'+503',
|
|
275
|
+
'+504',
|
|
276
|
+
'+505',
|
|
277
|
+
'+506',
|
|
278
|
+
'+507',
|
|
279
|
+
'+508',
|
|
280
|
+
'+509',
|
|
281
|
+
'+590',
|
|
282
|
+
'+591',
|
|
283
|
+
'+592',
|
|
284
|
+
'+593',
|
|
285
|
+
'+594',
|
|
286
|
+
'+595',
|
|
287
|
+
'+596',
|
|
288
|
+
'+597',
|
|
289
|
+
'+598',
|
|
290
|
+
'+599',
|
|
291
|
+
'+670',
|
|
292
|
+
'+672',
|
|
293
|
+
'+673',
|
|
294
|
+
'+674',
|
|
295
|
+
'+675',
|
|
296
|
+
'+676',
|
|
297
|
+
'+677',
|
|
298
|
+
'+678',
|
|
299
|
+
'+679',
|
|
300
|
+
'+680',
|
|
301
|
+
'+681',
|
|
302
|
+
'+682',
|
|
303
|
+
'+683',
|
|
304
|
+
'+684',
|
|
305
|
+
'+685',
|
|
306
|
+
'+686',
|
|
307
|
+
'+687',
|
|
308
|
+
'+688',
|
|
309
|
+
'+689',
|
|
310
|
+
'+690',
|
|
311
|
+
'+691',
|
|
312
|
+
'+692',
|
|
313
|
+
'+850',
|
|
314
|
+
'+852',
|
|
315
|
+
'+853',
|
|
316
|
+
'+855',
|
|
317
|
+
'+856',
|
|
318
|
+
'+880',
|
|
319
|
+
'+886',
|
|
320
|
+
'+960',
|
|
321
|
+
'+961',
|
|
322
|
+
'+962',
|
|
323
|
+
'+963',
|
|
324
|
+
'+964',
|
|
325
|
+
'+965',
|
|
326
|
+
'+966',
|
|
327
|
+
'+967',
|
|
328
|
+
'+968',
|
|
329
|
+
'+970',
|
|
330
|
+
'+971',
|
|
331
|
+
'+972',
|
|
332
|
+
'+973',
|
|
333
|
+
'+974',
|
|
334
|
+
'+975',
|
|
335
|
+
'+976',
|
|
336
|
+
'+977',
|
|
337
|
+
'+992',
|
|
338
|
+
'+993',
|
|
339
|
+
'+994',
|
|
340
|
+
'+995',
|
|
341
|
+
'+996',
|
|
342
|
+
'+998',
|
|
343
|
+
]);
|
|
344
|
+
//# sourceMappingURL=phone-code.vo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone-code.vo.js","sourceRoot":"","sources":["../../../../../src/shared/domain/value-objects/phone-code/phone-code.vo.ts"],"names":[],"mappings":"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IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { StringValueObject } from '@/shared/domain/value-objects/string/string.vo';
|
|
2
|
+
export declare class SlugValueObject extends StringValueObject {
|
|
3
|
+
private static readonly SLUG_PATTERN;
|
|
4
|
+
private static readonly MIN_LENGTH;
|
|
5
|
+
private static readonly MAX_LENGTH;
|
|
6
|
+
constructor(value: string, options?: {
|
|
7
|
+
minLength?: number;
|
|
8
|
+
maxLength?: number;
|
|
9
|
+
allowEmpty?: boolean;
|
|
10
|
+
generateFromString?: boolean;
|
|
11
|
+
});
|
|
12
|
+
static fromString(text: string, options?: {
|
|
13
|
+
minLength?: number;
|
|
14
|
+
maxLength?: number;
|
|
15
|
+
allowEmpty?: boolean;
|
|
16
|
+
}): SlugValueObject;
|
|
17
|
+
static generateSlug(text: string): string;
|
|
18
|
+
isValidSlug(): boolean;
|
|
19
|
+
isEmptyOrOnlyHyphens(): boolean;
|
|
20
|
+
getWordCount(): number;
|
|
21
|
+
toHumanReadable(): StringValueObject;
|
|
22
|
+
addSuffix(suffix: string): SlugValueObject;
|
|
23
|
+
addPrefix(prefix: string): SlugValueObject;
|
|
24
|
+
protected validateSlug(): void;
|
|
25
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlugValueObject = void 0;
|
|
4
|
+
const invalid_string_exception_1 = require("../../exceptions/value-objects/invalid-string/invalid-string.exception");
|
|
5
|
+
const string_vo_1 = require("../string/string.vo");
|
|
6
|
+
class SlugValueObject extends string_vo_1.StringValueObject {
|
|
7
|
+
constructor(value, options = {}) {
|
|
8
|
+
const processedValue = options.generateFromString
|
|
9
|
+
? SlugValueObject.generateSlug(value)
|
|
10
|
+
: value;
|
|
11
|
+
super(processedValue, {
|
|
12
|
+
minLength: options.minLength ?? SlugValueObject.MIN_LENGTH,
|
|
13
|
+
maxLength: options.maxLength ?? SlugValueObject.MAX_LENGTH,
|
|
14
|
+
allowEmpty: options.allowEmpty ?? false,
|
|
15
|
+
pattern: SlugValueObject.SLUG_PATTERN,
|
|
16
|
+
trim: true,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
static fromString(text, options = {}) {
|
|
20
|
+
return new SlugValueObject(text, {
|
|
21
|
+
...options,
|
|
22
|
+
generateFromString: true,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
static generateSlug(text) {
|
|
26
|
+
if (!text || typeof text !== 'string') {
|
|
27
|
+
return '';
|
|
28
|
+
}
|
|
29
|
+
return (text
|
|
30
|
+
.toLowerCase()
|
|
31
|
+
.trim()
|
|
32
|
+
.replace(/[\s_]+/g, '-')
|
|
33
|
+
.replace(/[^a-z0-9-]/g, '')
|
|
34
|
+
.replace(/-+/g, '-')
|
|
35
|
+
.replace(/^-+|-+$/g, ''));
|
|
36
|
+
}
|
|
37
|
+
isValidSlug() {
|
|
38
|
+
return SlugValueObject.SLUG_PATTERN.test(this.value);
|
|
39
|
+
}
|
|
40
|
+
isEmptyOrOnlyHyphens() {
|
|
41
|
+
return this.value.length === 0 || /^-+$/.test(this.value);
|
|
42
|
+
}
|
|
43
|
+
getWordCount() {
|
|
44
|
+
if (this.value.length === 0)
|
|
45
|
+
return 0;
|
|
46
|
+
return this.value.split('-').filter((part) => part.length > 0).length;
|
|
47
|
+
}
|
|
48
|
+
toHumanReadable() {
|
|
49
|
+
const humanReadable = this.value
|
|
50
|
+
.split('-')
|
|
51
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
52
|
+
.join(' ');
|
|
53
|
+
return new string_vo_1.StringValueObject(humanReadable);
|
|
54
|
+
}
|
|
55
|
+
addSuffix(suffix) {
|
|
56
|
+
const cleanSuffix = SlugValueObject.generateSlug(suffix);
|
|
57
|
+
if (!cleanSuffix) {
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
const newSlug = `${this.value}-${cleanSuffix}`;
|
|
61
|
+
return new SlugValueObject(newSlug);
|
|
62
|
+
}
|
|
63
|
+
addPrefix(prefix) {
|
|
64
|
+
const cleanPrefix = SlugValueObject.generateSlug(prefix);
|
|
65
|
+
if (!cleanPrefix) {
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
const newSlug = `${cleanPrefix}-${this.value}`;
|
|
69
|
+
return new SlugValueObject(newSlug);
|
|
70
|
+
}
|
|
71
|
+
validateSlug() {
|
|
72
|
+
if (this.isEmptyOrOnlyHyphens()) {
|
|
73
|
+
throw new invalid_string_exception_1.InvalidStringException('Slug cannot be empty or contain only hyphens');
|
|
74
|
+
}
|
|
75
|
+
if (!this.isValidSlug()) {
|
|
76
|
+
throw new invalid_string_exception_1.InvalidStringException('Slug must contain only lowercase letters, numbers, and hyphens');
|
|
77
|
+
}
|
|
78
|
+
if (this.value.startsWith('-') || this.value.endsWith('-')) {
|
|
79
|
+
throw new invalid_string_exception_1.InvalidStringException('Slug cannot start or end with hyphens');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.SlugValueObject = SlugValueObject;
|
|
84
|
+
SlugValueObject.SLUG_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
85
|
+
SlugValueObject.MIN_LENGTH = 1;
|
|
86
|
+
SlugValueObject.MAX_LENGTH = 100;
|
|
87
|
+
//# sourceMappingURL=slug.vo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug.vo.js","sourceRoot":"","sources":["../../../../../src/shared/domain/value-objects/slug/slug.vo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ValueObject } from '@/shared/domain/value-objects/base/value-object.base';
|
|
2
|
+
export declare class StringValueObject extends ValueObject<string> {
|
|
3
|
+
private readonly options;
|
|
4
|
+
private readonly _value;
|
|
5
|
+
constructor(value: string, options?: {
|
|
6
|
+
minLength?: number;
|
|
7
|
+
maxLength?: number;
|
|
8
|
+
allowEmpty?: boolean;
|
|
9
|
+
trim?: boolean;
|
|
10
|
+
pattern?: RegExp;
|
|
11
|
+
caseSensitive?: boolean;
|
|
12
|
+
});
|
|
13
|
+
get value(): string;
|
|
14
|
+
equals(other: StringValueObject): boolean;
|
|
15
|
+
isEmpty(): boolean;
|
|
16
|
+
isNotEmpty(): boolean;
|
|
17
|
+
length(): number;
|
|
18
|
+
contains(substring: string): boolean;
|
|
19
|
+
startsWith(prefix: string): boolean;
|
|
20
|
+
endsWith(suffix: string): boolean;
|
|
21
|
+
toLowerCase(): StringValueObject;
|
|
22
|
+
toUpperCase(): StringValueObject;
|
|
23
|
+
capitalize(): StringValueObject;
|
|
24
|
+
trim(): StringValueObject;
|
|
25
|
+
replace(searchValue: string, replaceValue: string): StringValueObject;
|
|
26
|
+
split(delimiter: string): StringValueObject[];
|
|
27
|
+
matches(pattern: RegExp): boolean;
|
|
28
|
+
isEmail(): boolean;
|
|
29
|
+
isUrl(): boolean;
|
|
30
|
+
isNumeric(): boolean;
|
|
31
|
+
isAlphanumeric(): boolean;
|
|
32
|
+
isAlphabetic(): boolean;
|
|
33
|
+
private processValue;
|
|
34
|
+
protected validate(): void;
|
|
35
|
+
private checkEmpty;
|
|
36
|
+
private checkLength;
|
|
37
|
+
private checkPattern;
|
|
38
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StringValueObject = void 0;
|
|
4
|
+
const invalid_string_exception_1 = require("../../exceptions/value-objects/invalid-string/invalid-string.exception");
|
|
5
|
+
const value_object_base_1 = require("../base/value-object.base");
|
|
6
|
+
class StringValueObject extends value_object_base_1.ValueObject {
|
|
7
|
+
constructor(value, options = {}) {
|
|
8
|
+
super();
|
|
9
|
+
this.options = options;
|
|
10
|
+
this._value = this.processValue(value);
|
|
11
|
+
this.validate();
|
|
12
|
+
}
|
|
13
|
+
get value() {
|
|
14
|
+
return this._value;
|
|
15
|
+
}
|
|
16
|
+
equals(other) {
|
|
17
|
+
if (this.options.caseSensitive === false) {
|
|
18
|
+
return this._value.toLowerCase() === other.value.toLowerCase();
|
|
19
|
+
}
|
|
20
|
+
return this._value === other.value;
|
|
21
|
+
}
|
|
22
|
+
isEmpty() {
|
|
23
|
+
return this._value.length === 0;
|
|
24
|
+
}
|
|
25
|
+
isNotEmpty() {
|
|
26
|
+
return this._value.length > 0;
|
|
27
|
+
}
|
|
28
|
+
length() {
|
|
29
|
+
return this._value.length;
|
|
30
|
+
}
|
|
31
|
+
contains(substring) {
|
|
32
|
+
if (this.options.caseSensitive === false) {
|
|
33
|
+
return this._value.toLowerCase().includes(substring.toLowerCase());
|
|
34
|
+
}
|
|
35
|
+
return this._value.includes(substring);
|
|
36
|
+
}
|
|
37
|
+
startsWith(prefix) {
|
|
38
|
+
if (this.options.caseSensitive === false) {
|
|
39
|
+
return this._value.toLowerCase().startsWith(prefix.toLowerCase());
|
|
40
|
+
}
|
|
41
|
+
return this._value.startsWith(prefix);
|
|
42
|
+
}
|
|
43
|
+
endsWith(suffix) {
|
|
44
|
+
if (this.options.caseSensitive === false) {
|
|
45
|
+
return this._value.toLowerCase().endsWith(suffix.toLowerCase());
|
|
46
|
+
}
|
|
47
|
+
return this._value.endsWith(suffix);
|
|
48
|
+
}
|
|
49
|
+
toLowerCase() {
|
|
50
|
+
return new StringValueObject(this._value.toLowerCase(), this.options);
|
|
51
|
+
}
|
|
52
|
+
toUpperCase() {
|
|
53
|
+
return new StringValueObject(this._value.toUpperCase(), this.options);
|
|
54
|
+
}
|
|
55
|
+
capitalize() {
|
|
56
|
+
if (this._value.length === 0) {
|
|
57
|
+
return new StringValueObject(this._value, this.options);
|
|
58
|
+
}
|
|
59
|
+
const capitalized = this._value.charAt(0).toUpperCase() + this._value.slice(1).toLowerCase();
|
|
60
|
+
return new StringValueObject(capitalized, this.options);
|
|
61
|
+
}
|
|
62
|
+
trim() {
|
|
63
|
+
return new StringValueObject(this._value.trim(), this.options);
|
|
64
|
+
}
|
|
65
|
+
replace(searchValue, replaceValue) {
|
|
66
|
+
let result = this._value;
|
|
67
|
+
if (this.options.caseSensitive === false) {
|
|
68
|
+
const regex = new RegExp(searchValue.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi');
|
|
69
|
+
result = this._value.replace(regex, replaceValue);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
result = this._value.replace(new RegExp(searchValue.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), replaceValue);
|
|
73
|
+
}
|
|
74
|
+
return new StringValueObject(result, this.options);
|
|
75
|
+
}
|
|
76
|
+
split(delimiter) {
|
|
77
|
+
return this._value
|
|
78
|
+
.split(delimiter)
|
|
79
|
+
.map((part) => new StringValueObject(part, this.options));
|
|
80
|
+
}
|
|
81
|
+
matches(pattern) {
|
|
82
|
+
return pattern.test(this._value);
|
|
83
|
+
}
|
|
84
|
+
isEmail() {
|
|
85
|
+
const emailPattern = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
|
|
86
|
+
return emailPattern.test(this._value);
|
|
87
|
+
}
|
|
88
|
+
isUrl() {
|
|
89
|
+
try {
|
|
90
|
+
new URL(this._value);
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
isNumeric() {
|
|
98
|
+
return !isNaN(Number(this._value)) && !isNaN(parseFloat(this._value));
|
|
99
|
+
}
|
|
100
|
+
isAlphanumeric() {
|
|
101
|
+
return /^[a-zA-Z0-9]+$/.test(this._value);
|
|
102
|
+
}
|
|
103
|
+
isAlphabetic() {
|
|
104
|
+
return /^[a-zA-Z]+$/.test(this._value);
|
|
105
|
+
}
|
|
106
|
+
processValue(value) {
|
|
107
|
+
if (value === null || value === undefined) {
|
|
108
|
+
return '';
|
|
109
|
+
}
|
|
110
|
+
let processedValue = String(value);
|
|
111
|
+
if (this.options.trim !== false) {
|
|
112
|
+
processedValue = processedValue.trim();
|
|
113
|
+
}
|
|
114
|
+
return processedValue;
|
|
115
|
+
}
|
|
116
|
+
validate() {
|
|
117
|
+
this.checkEmpty();
|
|
118
|
+
this.checkLength();
|
|
119
|
+
this.checkPattern();
|
|
120
|
+
}
|
|
121
|
+
checkEmpty() {
|
|
122
|
+
if (this.options.allowEmpty === false && this._value.length === 0) {
|
|
123
|
+
throw new invalid_string_exception_1.InvalidStringException('String cannot be empty');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
checkLength() {
|
|
127
|
+
if (this.options.minLength !== undefined &&
|
|
128
|
+
this._value.length < this.options.minLength &&
|
|
129
|
+
!(this.options.allowEmpty === true && this._value.length === 0)) {
|
|
130
|
+
throw new invalid_string_exception_1.InvalidStringException(`String must be at least ${this.options.minLength} characters long`);
|
|
131
|
+
}
|
|
132
|
+
if (this.options.maxLength !== undefined &&
|
|
133
|
+
this._value.length > this.options.maxLength) {
|
|
134
|
+
throw new invalid_string_exception_1.InvalidStringException(`String must be at most ${this.options.maxLength} characters long`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
checkPattern() {
|
|
138
|
+
if (this.options.pattern &&
|
|
139
|
+
!this.options.pattern.test(this._value) &&
|
|
140
|
+
!(this.options.allowEmpty === true && this._value.length === 0)) {
|
|
141
|
+
throw new invalid_string_exception_1.InvalidStringException('String does not match required pattern');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.StringValueObject = StringValueObject;
|
|
146
|
+
//# sourceMappingURL=string.vo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.vo.js","sourceRoot":"","sources":["../../../../../src/shared/domain/value-objects/string/string.vo.ts"],"names":[],"mappings":"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"}
|