@loopback/repository 4.0.0-alpha.6 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +25 -0
- package/README.md +94 -372
- package/dist/common-types.d.ts +96 -0
- package/dist/common-types.js +24 -0
- package/dist/common-types.js.map +1 -0
- package/dist/connectors/connector.d.ts +48 -0
- package/{lib → dist/connectors}/connector.js +1 -1
- package/dist/connectors/connector.js.map +1 -0
- package/{lib/crud-connector.d.ts → dist/connectors/crud.connector.d.ts} +51 -51
- package/{lib/common-types.js → dist/connectors/crud.connector.js} +2 -2
- package/dist/connectors/crud.connector.js.map +1 -0
- package/dist/connectors/index.d.ts +3 -0
- package/dist/connectors/index.js +11 -0
- package/dist/connectors/index.js.map +1 -0
- package/{lib6/kv-connector.d.ts → dist/connectors/kv.connector.d.ts} +28 -28
- package/{lib/datasource.js → dist/connectors/kv.connector.js} +2 -2
- package/dist/connectors/kv.connector.js.map +1 -0
- package/dist/datasource.d.ts +27 -0
- package/{lib6 → dist}/datasource.js +1 -1
- package/dist/datasource.js.map +1 -0
- package/dist/decorators/index.d.ts +3 -0
- package/dist/decorators/index.js +11 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/metadata.d.ts +12 -0
- package/dist/decorators/metadata.js +51 -0
- package/dist/decorators/metadata.js.map +1 -0
- package/dist/decorators/model.decorator.d.ts +40 -0
- package/dist/decorators/model.decorator.js +112 -0
- package/dist/decorators/model.decorator.js.map +1 -0
- package/dist/decorators/repository.decorator.d.ts +106 -0
- package/dist/decorators/repository.decorator.js +114 -0
- package/dist/decorators/repository.decorator.js.map +1 -0
- package/dist/define-model-class.d.ts +55 -0
- package/dist/define-model-class.js +57 -0
- package/dist/define-model-class.js.map +1 -0
- package/dist/define-repository-class.d.ts +119 -0
- package/dist/define-repository-class.js +98 -0
- package/dist/define-repository-class.js.map +1 -0
- package/dist/errors/entity-not-found.error.d.ts +8 -0
- package/dist/errors/entity-not-found.error.js +28 -0
- package/dist/errors/entity-not-found.error.js.map +1 -0
- package/dist/errors/index.d.ts +2 -0
- package/dist/errors/index.js +10 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/invalid-relation.error.d.ts +10 -0
- package/dist/errors/invalid-relation.error.js +28 -0
- package/dist/errors/invalid-relation.error.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/keys.d.ts +34 -0
- package/dist/keys.js +44 -0
- package/dist/keys.js.map +1 -0
- package/dist/mixins/index.d.ts +1 -0
- package/dist/mixins/index.js +9 -0
- package/dist/mixins/index.js.map +1 -0
- package/dist/mixins/repository.mixin.d.ts +377 -0
- package/dist/mixins/repository.mixin.js +405 -0
- package/dist/mixins/repository.mixin.js.map +1 -0
- package/dist/model.d.ts +232 -0
- package/dist/model.js +367 -0
- package/dist/model.js.map +1 -0
- package/dist/relations/belongs-to/belongs-to.accessor.d.ts +17 -0
- package/dist/relations/belongs-to/belongs-to.accessor.js +40 -0
- package/dist/relations/belongs-to/belongs-to.accessor.js.map +1 -0
- package/dist/relations/belongs-to/belongs-to.decorator.d.ts +11 -0
- package/dist/relations/belongs-to/belongs-to.decorator.js +64 -0
- package/dist/relations/belongs-to/belongs-to.decorator.js.map +1 -0
- package/dist/relations/belongs-to/belongs-to.helpers.d.ts +17 -0
- package/dist/relations/belongs-to/belongs-to.helpers.js +63 -0
- package/dist/relations/belongs-to/belongs-to.helpers.js.map +1 -0
- package/dist/relations/belongs-to/belongs-to.inclusion-resolver.d.ts +14 -0
- package/dist/relations/belongs-to/belongs-to.inclusion-resolver.js +36 -0
- package/dist/relations/belongs-to/belongs-to.inclusion-resolver.js.map +1 -0
- package/dist/relations/belongs-to/belongs-to.repository.d.ts +28 -0
- package/dist/relations/belongs-to/belongs-to.repository.js +33 -0
- package/dist/relations/belongs-to/belongs-to.repository.js.map +1 -0
- package/dist/relations/belongs-to/index.d.ts +4 -0
- package/dist/relations/belongs-to/index.js +12 -0
- package/dist/relations/belongs-to/index.js.map +1 -0
- package/dist/relations/has-many/has-many-through.helpers.d.ts +182 -0
- package/dist/relations/has-many/has-many-through.helpers.js +282 -0
- package/dist/relations/has-many/has-many-through.helpers.js.map +1 -0
- package/dist/relations/has-many/has-many-through.inclusion-resolver.d.ts +16 -0
- package/dist/relations/has-many/has-many-through.inclusion-resolver.js +78 -0
- package/dist/relations/has-many/has-many-through.inclusion-resolver.js.map +1 -0
- package/dist/relations/has-many/has-many-through.repository-factory.d.ts +17 -0
- package/dist/relations/has-many/has-many-through.repository-factory.js +37 -0
- package/dist/relations/has-many/has-many-through.repository-factory.js.map +1 -0
- package/dist/relations/has-many/has-many-through.repository.d.ts +114 -0
- package/dist/relations/has-many/has-many-through.repository.js +103 -0
- package/dist/relations/has-many/has-many-through.repository.js.map +1 -0
- package/dist/relations/has-many/has-many.decorator.d.ts +11 -0
- package/dist/relations/has-many/has-many.decorator.js +36 -0
- package/dist/relations/has-many/has-many.decorator.js.map +1 -0
- package/dist/relations/has-many/has-many.helpers.d.ts +26 -0
- package/dist/relations/has-many/has-many.helpers.js +78 -0
- package/dist/relations/has-many/has-many.helpers.js.map +1 -0
- package/dist/relations/has-many/has-many.inclusion-resolver.d.ts +14 -0
- package/dist/relations/has-many/has-many.inclusion-resolver.js +45 -0
- package/dist/relations/has-many/has-many.inclusion-resolver.js.map +1 -0
- package/dist/relations/has-many/has-many.repository-factory.d.ts +28 -0
- package/dist/relations/has-many/has-many.repository-factory.js +39 -0
- package/dist/relations/has-many/has-many.repository-factory.js.map +1 -0
- package/dist/relations/has-many/has-many.repository.d.ts +54 -0
- package/dist/relations/has-many/has-many.repository.js +38 -0
- package/dist/relations/has-many/has-many.repository.js.map +1 -0
- package/dist/relations/has-many/index.d.ts +6 -0
- package/dist/relations/has-many/index.js +14 -0
- package/dist/relations/has-many/index.js.map +1 -0
- package/dist/relations/has-one/has-one.decorator.d.ts +3 -0
- package/dist/relations/has-one/has-one.decorator.js +37 -0
- package/dist/relations/has-one/has-one.decorator.js.map +1 -0
- package/dist/relations/has-one/has-one.helpers.d.ts +17 -0
- package/dist/relations/has-one/has-one.helpers.js +64 -0
- package/dist/relations/has-one/has-one.helpers.js.map +1 -0
- package/dist/relations/has-one/has-one.inclusion-resolver.d.ts +14 -0
- package/dist/relations/has-one/has-one.inclusion-resolver.js +35 -0
- package/dist/relations/has-one/has-one.inclusion-resolver.js.map +1 -0
- package/dist/relations/has-one/has-one.repository-factory.d.ts +28 -0
- package/dist/relations/has-one/has-one.repository-factory.js +39 -0
- package/dist/relations/has-one/has-one.repository-factory.js.map +1 -0
- package/dist/relations/has-one/has-one.repository.d.ts +53 -0
- package/dist/relations/has-one/has-one.repository.js +45 -0
- package/dist/relations/has-one/has-one.repository.js.map +1 -0
- package/dist/relations/has-one/index.d.ts +3 -0
- package/dist/relations/has-one/index.js +11 -0
- package/dist/relations/has-one/index.js.map +1 -0
- package/dist/relations/index.d.ts +6 -0
- package/dist/relations/index.js +14 -0
- package/dist/relations/index.js.map +1 -0
- package/dist/relations/relation.decorator.d.ts +39 -0
- package/dist/relations/relation.decorator.js +88 -0
- package/dist/relations/relation.decorator.js.map +1 -0
- package/dist/relations/relation.helpers.d.ts +105 -0
- package/dist/relations/relation.helpers.js +298 -0
- package/dist/relations/relation.helpers.js.map +1 -0
- package/dist/relations/relation.types.d.ts +142 -0
- package/dist/relations/relation.types.js +21 -0
- package/dist/relations/relation.types.js.map +1 -0
- package/dist/repositories/constraint-utils.d.ts +49 -0
- package/dist/repositories/constraint-utils.js +87 -0
- package/dist/repositories/constraint-utils.js.map +1 -0
- package/dist/repositories/index.d.ts +5 -0
- package/dist/repositories/index.js +13 -0
- package/dist/repositories/index.js.map +1 -0
- package/dist/repositories/kv.repository.bridge.d.ts +30 -0
- package/dist/repositories/kv.repository.bridge.js +76 -0
- package/dist/repositories/kv.repository.bridge.js.map +1 -0
- package/dist/repositories/kv.repository.d.ts +74 -0
- package/{lib/crud-connector.js → dist/repositories/kv.repository.js} +2 -2
- package/dist/repositories/kv.repository.js.map +1 -0
- package/dist/repositories/legacy-juggler-bridge.d.ts +305 -0
- package/dist/repositories/legacy-juggler-bridge.js +452 -0
- package/dist/repositories/legacy-juggler-bridge.js.map +1 -0
- package/dist/repositories/repository.d.ts +223 -0
- package/dist/repositories/repository.js +157 -0
- package/dist/repositories/repository.js.map +1 -0
- package/dist/transaction.d.ts +30 -0
- package/dist/transaction.js +18 -0
- package/dist/transaction.js.map +1 -0
- package/dist/type-resolver.d.ts +42 -0
- package/dist/type-resolver.js +61 -0
- package/dist/type-resolver.js.map +1 -0
- package/{lib6 → dist}/types/any.d.ts +1 -1
- package/{lib6 → dist}/types/any.js +3 -2
- package/dist/types/any.js.map +1 -0
- package/{lib6 → dist}/types/array.d.ts +4 -4
- package/{lib → dist}/types/array.js +6 -4
- package/dist/types/array.js.map +1 -0
- package/{lib → dist}/types/boolean.d.ts +1 -1
- package/{lib → dist}/types/boolean.js +3 -2
- package/dist/types/boolean.js.map +1 -0
- package/{lib6 → dist}/types/buffer.d.ts +2 -2
- package/{lib6 → dist}/types/buffer.js +8 -6
- package/dist/types/buffer.js.map +1 -0
- package/{lib → dist}/types/date.d.ts +1 -1
- package/{lib6 → dist}/types/date.js +6 -4
- package/dist/types/date.js.map +1 -0
- package/{lib → dist}/types/index.d.ts +11 -9
- package/dist/types/index.js +49 -0
- package/dist/types/index.js.map +1 -0
- package/{lib6 → dist}/types/model.d.ts +2 -1
- package/{lib → dist}/types/model.js +2 -2
- package/dist/types/model.js.map +1 -0
- package/dist/types/null.d.ts +12 -0
- package/{lib6/types/boolean.js → dist/types/null.js} +12 -11
- package/dist/types/null.js.map +1 -0
- package/{lib6 → dist}/types/number.d.ts +1 -1
- package/{lib6 → dist}/types/number.js +6 -4
- package/dist/types/number.js.map +1 -0
- package/{lib → dist}/types/object.d.ts +1 -1
- package/{lib6 → dist}/types/object.js +7 -6
- package/dist/types/object.js.map +1 -0
- package/{lib → dist}/types/string.d.ts +1 -1
- package/{lib → dist}/types/string.js +3 -2
- package/dist/types/string.js.map +1 -0
- package/{lib → dist}/types/type.d.ts +7 -7
- package/{lib6 → dist}/types/type.js +1 -1
- package/dist/types/type.js.map +1 -0
- package/{lib → dist}/types/union.d.ts +1 -1
- package/{lib6 → dist}/types/union.js +6 -4
- package/dist/types/union.js.map +1 -0
- package/package.json +49 -32
- package/src/common-types.ts +123 -0
- package/src/connectors/connector.ts +70 -0
- package/src/connectors/crud.connector.ts +208 -0
- package/src/connectors/index.ts +8 -0
- package/src/connectors/kv.connector.ts +113 -0
- package/src/datasource.ts +37 -0
- package/src/decorators/index.ts +8 -0
- package/src/decorators/metadata.ts +84 -0
- package/src/decorators/model.decorator.ts +166 -0
- package/src/decorators/repository.decorator.ts +223 -0
- package/src/define-model-class.ts +90 -0
- package/src/define-repository-class.ts +170 -0
- package/src/errors/entity-not-found.error.ts +40 -0
- package/src/errors/index.ts +7 -0
- package/src/errors/invalid-relation.error.ts +39 -0
- package/src/index.ts +36 -0
- package/src/keys.ts +40 -0
- package/{index.d.ts → src/mixins/index.ts} +2 -2
- package/src/mixins/repository.mixin.ts +499 -0
- package/src/model.ts +539 -0
- package/src/relations/belongs-to/belongs-to.accessor.ts +74 -0
- package/src/relations/belongs-to/belongs-to.decorator.ts +81 -0
- package/src/relations/belongs-to/belongs-to.helpers.ts +78 -0
- package/src/relations/belongs-to/belongs-to.inclusion-resolver.ts +71 -0
- package/src/relations/belongs-to/belongs-to.repository.ts +55 -0
- package/src/relations/belongs-to/index.ts +9 -0
- package/src/relations/has-many/has-many-through.helpers.ts +361 -0
- package/src/relations/has-many/has-many-through.inclusion-resolver.ts +135 -0
- package/src/relations/has-many/has-many-through.repository-factory.ts +121 -0
- package/src/relations/has-many/has-many-through.repository.ts +318 -0
- package/src/relations/has-many/has-many.decorator.ts +38 -0
- package/src/relations/has-many/has-many.helpers.ts +100 -0
- package/src/relations/has-many/has-many.inclusion-resolver.ts +88 -0
- package/src/relations/has-many/has-many.repository-factory.ts +76 -0
- package/src/relations/has-many/has-many.repository.ts +118 -0
- package/src/relations/has-many/index.ts +11 -0
- package/src/relations/has-one/has-one.decorator.ts +40 -0
- package/src/relations/has-one/has-one.helpers.ts +84 -0
- package/src/relations/has-one/has-one.inclusion-resolver.ts +65 -0
- package/src/relations/has-one/has-one.repository-factory.ts +72 -0
- package/src/relations/has-one/has-one.repository.ts +127 -0
- package/src/relations/has-one/index.ts +8 -0
- package/src/relations/index.ts +11 -0
- package/src/relations/relation.decorator.ts +90 -0
- package/src/relations/relation.helpers.ts +364 -0
- package/src/relations/relation.types.ts +180 -0
- package/src/repositories/constraint-utils.ts +98 -0
- package/src/repositories/index.ts +10 -0
- package/src/repositories/kv.repository.bridge.ts +97 -0
- package/src/repositories/kv.repository.ts +87 -0
- package/src/repositories/legacy-juggler-bridge.ts +788 -0
- package/src/repositories/repository.ts +441 -0
- package/src/transaction.ts +39 -0
- package/src/type-resolver.ts +98 -0
- package/src/types/any.ts +38 -0
- package/src/types/array.ts +53 -0
- package/src/types/boolean.ts +35 -0
- package/src/types/buffer.ts +53 -0
- package/src/types/date.ts +61 -0
- package/src/types/index.ts +52 -0
- package/src/types/model.ts +24 -0
- package/src/types/null.ts +35 -0
- package/src/types/number.ts +42 -0
- package/src/types/object.ts +53 -0
- package/src/types/string.ts +42 -0
- package/src/types/type.ts +51 -0
- package/src/types/union.ts +55 -0
- package/api-docs/apple-touch-icon-114x114-precomposed.png +0 -0
- package/api-docs/apple-touch-icon-144x144-precomposed.png +0 -0
- package/api-docs/apple-touch-icon-57x57-precomposed.png +0 -0
- package/api-docs/apple-touch-icon-72x72-precomposed.png +0 -0
- package/api-docs/apple-touch-icon-precomposed.png +0 -0
- package/api-docs/apple-touch-icon.png +0 -0
- package/api-docs/css/bootstrap.min.css +0 -9
- package/api-docs/css/code-themes/arta.css +0 -158
- package/api-docs/css/code-themes/ascetic.css +0 -50
- package/api-docs/css/code-themes/brown_paper.css +0 -104
- package/api-docs/css/code-themes/brown_papersq.png +0 -0
- package/api-docs/css/code-themes/dark.css +0 -103
- package/api-docs/css/code-themes/default.css +0 -135
- package/api-docs/css/code-themes/far.css +0 -111
- package/api-docs/css/code-themes/github.css +0 -127
- package/api-docs/css/code-themes/googlecode.css +0 -144
- package/api-docs/css/code-themes/idea.css +0 -121
- package/api-docs/css/code-themes/ir_black.css +0 -104
- package/api-docs/css/code-themes/magula.css +0 -121
- package/api-docs/css/code-themes/monokai.css +0 -114
- package/api-docs/css/code-themes/pojoaque.css +0 -104
- package/api-docs/css/code-themes/pojoaque.jpg +0 -0
- package/api-docs/css/code-themes/rainbow.css +0 -114
- package/api-docs/css/code-themes/school_book.css +0 -111
- package/api-docs/css/code-themes/school_book.png +0 -0
- package/api-docs/css/code-themes/sl-theme.css +0 -45
- package/api-docs/css/code-themes/solarized_dark.css +0 -88
- package/api-docs/css/code-themes/solarized_light.css +0 -88
- package/api-docs/css/code-themes/sunburst.css +0 -158
- package/api-docs/css/code-themes/tomorrow-night-blue.css +0 -52
- package/api-docs/css/code-themes/tomorrow-night-bright.css +0 -51
- package/api-docs/css/code-themes/tomorrow-night-eighties.css +0 -51
- package/api-docs/css/code-themes/tomorrow-night.css +0 -52
- package/api-docs/css/code-themes/tomorrow.css +0 -49
- package/api-docs/css/code-themes/vs.css +0 -86
- package/api-docs/css/code-themes/xcode.css +0 -154
- package/api-docs/css/code-themes/zenburn.css +0 -115
- package/api-docs/css/main.css +0 -139
- package/api-docs/favicon.ico +0 -0
- package/api-docs/fonts/0ihfXUL2emPh0ROJezvraLO3LdcAZYWl9Si6vvxL-qU.woff +0 -0
- package/api-docs/fonts/OsJ2DjdpjqFRVUSto6IffLO3LdcAZYWl9Si6vvxL-qU.woff +0 -0
- package/api-docs/fonts/_aijTyevf54tkVDLy-dlnLO3LdcAZYWl9Si6vvxL-qU.woff +0 -0
- package/api-docs/index.html +0 -17872
- package/api-docs/js/main.js +0 -19
- package/api-docs/js/vendor/bootstrap.min.js +0 -6
- package/api-docs/js/vendor/jquery-1.10.1.min.js +0 -6
- package/api-docs/js/vendor/jquery.scrollTo-1.4.3.1.js +0 -218
- package/api-docs/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js +0 -11
- package/index.js +0 -9
- package/lib/common-types.d.ts +0 -44
- package/lib/common-types.js.map +0 -1
- package/lib/connector.d.ts +0 -12
- package/lib/connector.js.map +0 -1
- package/lib/crud-connector.js.map +0 -1
- package/lib/datasource.d.ts +0 -11
- package/lib/datasource.js.map +0 -1
- package/lib/decorators/model.d.ts +0 -14
- package/lib/decorators/model.js +0 -35
- package/lib/decorators/model.js.map +0 -1
- package/lib/decorators/relation.d.ts +0 -65
- package/lib/decorators/relation.js +0 -126
- package/lib/decorators/relation.js.map +0 -1
- package/lib/decorators/repository.d.ts +0 -61
- package/lib/decorators/repository.js +0 -103
- package/lib/decorators/repository.js.map +0 -1
- package/lib/index.d.ts +0 -15
- package/lib/index.js +0 -19
- package/lib/index.js.map +0 -1
- package/lib/kv-connector.d.ts +0 -77
- package/lib/kv-connector.js +0 -7
- package/lib/kv-connector.js.map +0 -1
- package/lib/kv-repository.d.ts +0 -78
- package/lib/kv-repository.js +0 -7
- package/lib/kv-repository.js.map +0 -1
- package/lib/legacy-juggler-bridge.d.ts +0 -44
- package/lib/legacy-juggler-bridge.js +0 -119
- package/lib/legacy-juggler-bridge.js.map +0 -1
- package/lib/loopback-datasource-juggler.d.ts +0 -666
- package/lib/loopback-datasource-juggler.js +0 -8
- package/lib/loopback-datasource-juggler.js.map +0 -1
- package/lib/mixin.d.ts +0 -43
- package/lib/mixin.js +0 -34
- package/lib/mixin.js.map +0 -1
- package/lib/model.d.ts +0 -127
- package/lib/model.js +0 -187
- package/lib/model.js.map +0 -1
- package/lib/query.d.ts +0 -112
- package/lib/query.js +0 -25
- package/lib/query.js.map +0 -1
- package/lib/repository.d.ts +0 -172
- package/lib/repository.js +0 -127
- package/lib/repository.js.map +0 -1
- package/lib/types/any.d.ts +0 -12
- package/lib/types/any.js +0 -35
- package/lib/types/any.js.map +0 -1
- package/lib/types/array.d.ts +0 -14
- package/lib/types/array.js.map +0 -1
- package/lib/types/boolean.js.map +0 -1
- package/lib/types/buffer.d.ts +0 -14
- package/lib/types/buffer.js +0 -57
- package/lib/types/buffer.js.map +0 -1
- package/lib/types/date.js +0 -60
- package/lib/types/date.js.map +0 -1
- package/lib/types/index.js +0 -33
- package/lib/types/index.js.map +0 -1
- package/lib/types/model.d.ts +0 -11
- package/lib/types/model.js.map +0 -1
- package/lib/types/number.d.ts +0 -12
- package/lib/types/number.js +0 -40
- package/lib/types/number.js.map +0 -1
- package/lib/types/object.js +0 -49
- package/lib/types/object.js.map +0 -1
- package/lib/types/string.js.map +0 -1
- package/lib/types/type.js +0 -7
- package/lib/types/type.js.map +0 -1
- package/lib/types/union.js +0 -51
- package/lib/types/union.js.map +0 -1
- package/lib6/common-types.d.ts +0 -44
- package/lib6/common-types.js +0 -7
- package/lib6/common-types.js.map +0 -1
- package/lib6/connector.d.ts +0 -12
- package/lib6/connector.js +0 -7
- package/lib6/connector.js.map +0 -1
- package/lib6/crud-connector.d.ts +0 -130
- package/lib6/crud-connector.js +0 -7
- package/lib6/crud-connector.js.map +0 -1
- package/lib6/datasource.d.ts +0 -11
- package/lib6/datasource.js.map +0 -1
- package/lib6/decorators/model.d.ts +0 -14
- package/lib6/decorators/model.js +0 -35
- package/lib6/decorators/model.js.map +0 -1
- package/lib6/decorators/relation.d.ts +0 -65
- package/lib6/decorators/relation.js +0 -126
- package/lib6/decorators/relation.js.map +0 -1
- package/lib6/decorators/repository.d.ts +0 -61
- package/lib6/decorators/repository.js +0 -113
- package/lib6/decorators/repository.js.map +0 -1
- package/lib6/index.d.ts +0 -15
- package/lib6/index.js +0 -19
- package/lib6/index.js.map +0 -1
- package/lib6/kv-connector.js +0 -7
- package/lib6/kv-connector.js.map +0 -1
- package/lib6/kv-repository.d.ts +0 -78
- package/lib6/kv-repository.js +0 -7
- package/lib6/kv-repository.js.map +0 -1
- package/lib6/legacy-juggler-bridge.d.ts +0 -44
- package/lib6/legacy-juggler-bridge.js +0 -119
- package/lib6/legacy-juggler-bridge.js.map +0 -1
- package/lib6/loopback-datasource-juggler.d.ts +0 -666
- package/lib6/loopback-datasource-juggler.js +0 -8
- package/lib6/loopback-datasource-juggler.js.map +0 -1
- package/lib6/mixin.d.ts +0 -43
- package/lib6/mixin.js +0 -34
- package/lib6/mixin.js.map +0 -1
- package/lib6/model.d.ts +0 -127
- package/lib6/model.js +0 -187
- package/lib6/model.js.map +0 -1
- package/lib6/query.d.ts +0 -112
- package/lib6/query.js +0 -25
- package/lib6/query.js.map +0 -1
- package/lib6/repository.d.ts +0 -172
- package/lib6/repository.js +0 -127
- package/lib6/repository.js.map +0 -1
- package/lib6/types/any.js.map +0 -1
- package/lib6/types/array.js +0 -53
- package/lib6/types/array.js.map +0 -1
- package/lib6/types/boolean.d.ts +0 -12
- package/lib6/types/boolean.js.map +0 -1
- package/lib6/types/buffer.js.map +0 -1
- package/lib6/types/date.d.ts +0 -12
- package/lib6/types/date.js.map +0 -1
- package/lib6/types/index.d.ts +0 -30
- package/lib6/types/index.js +0 -33
- package/lib6/types/index.js.map +0 -1
- package/lib6/types/model.js +0 -25
- package/lib6/types/model.js.map +0 -1
- package/lib6/types/number.js.map +0 -1
- package/lib6/types/object.d.ts +0 -15
- package/lib6/types/object.js.map +0 -1
- package/lib6/types/string.d.ts +0 -12
- package/lib6/types/string.js +0 -40
- package/lib6/types/string.js.map +0 -1
- package/lib6/types/type.d.ts +0 -38
- package/lib6/types/type.js.map +0 -1
- package/lib6/types/union.d.ts +0 -14
- package/lib6/types/union.js.map +0 -1
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright IBM Corp. 2018,2020. All Rights Reserved.
|
|
3
|
+
// Node module: @loopback/repository
|
|
4
|
+
// This file is licensed under the MIT License.
|
|
5
|
+
// License text available at https://opensource.org/licenses/MIT
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.property = exports.buildModelDefinition = exports.model = exports.MODEL_WITH_PROPERTIES_KEY = exports.MODEL_PROPERTIES_KEY = exports.MODEL_KEY = void 0;
|
|
8
|
+
const core_1 = require("@loopback/core");
|
|
9
|
+
const model_1 = require("../model");
|
|
10
|
+
const relation_decorator_1 = require("../relations/relation.decorator");
|
|
11
|
+
exports.MODEL_KEY = core_1.MetadataAccessor.create('loopback:model');
|
|
12
|
+
exports.MODEL_PROPERTIES_KEY = core_1.MetadataAccessor.create('loopback:model-properties');
|
|
13
|
+
exports.MODEL_WITH_PROPERTIES_KEY = core_1.MetadataAccessor.create('loopback:model-and-properties');
|
|
14
|
+
/**
|
|
15
|
+
* Decorator for model definitions
|
|
16
|
+
* @param definition
|
|
17
|
+
* @returns A class decorator for `model`
|
|
18
|
+
*/
|
|
19
|
+
function model(definition) {
|
|
20
|
+
return function (target) {
|
|
21
|
+
var _a;
|
|
22
|
+
definition = definition !== null && definition !== void 0 ? definition : {};
|
|
23
|
+
const def = Object.assign(definition, {
|
|
24
|
+
name: (_a = definition.name) !== null && _a !== void 0 ? _a : target.name,
|
|
25
|
+
});
|
|
26
|
+
const decorator = core_1.ClassDecoratorFactory.createDecorator(exports.MODEL_KEY, definition, { decoratorName: '@model' });
|
|
27
|
+
decorator(target);
|
|
28
|
+
// Build "ModelDefinition" and store it on model constructor
|
|
29
|
+
buildModelDefinition(target, def);
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
exports.model = model;
|
|
33
|
+
/**
|
|
34
|
+
* Build model definition from decorations
|
|
35
|
+
* @param target - Target model class
|
|
36
|
+
* @param def - Model definition spec
|
|
37
|
+
*/
|
|
38
|
+
function buildModelDefinition(target, def) {
|
|
39
|
+
var _a, _b, _c, _d;
|
|
40
|
+
// Check if the definition for this class has been built (not from the super
|
|
41
|
+
// class)
|
|
42
|
+
const baseClass = Object.getPrototypeOf(target);
|
|
43
|
+
if (!def &&
|
|
44
|
+
target.definition &&
|
|
45
|
+
baseClass &&
|
|
46
|
+
target.definition !== baseClass.definition) {
|
|
47
|
+
return target.definition;
|
|
48
|
+
}
|
|
49
|
+
const modelDef = new model_1.ModelDefinition(def !== null && def !== void 0 ? def : { name: target.name });
|
|
50
|
+
const prototype = target.prototype;
|
|
51
|
+
const propertyMap = (_a = core_1.MetadataInspector.getAllPropertyMetadata(exports.MODEL_PROPERTIES_KEY, prototype)) !== null && _a !== void 0 ? _a : {};
|
|
52
|
+
for (const [propName, propDef] of Object.entries(propertyMap)) {
|
|
53
|
+
const designType = (_b = propDef.type) !== null && _b !== void 0 ? _b : core_1.MetadataInspector.getDesignTypeForProperty(prototype, propName);
|
|
54
|
+
if (!designType) {
|
|
55
|
+
const err = new Error(`The definition of model property ${modelDef.name}.${propName} is missing ` +
|
|
56
|
+
'`type` field and TypeScript did not provide any design-time type. ' +
|
|
57
|
+
'Learn more at https://loopback.io/doc/en/lb4/Error-codes.html#cannot_infer_property_type');
|
|
58
|
+
err.code = 'CANNOT_INFER_PROPERTY_TYPE';
|
|
59
|
+
throw err;
|
|
60
|
+
}
|
|
61
|
+
if (propDef.hidden) {
|
|
62
|
+
modelDef.settings.hiddenProperties =
|
|
63
|
+
(_c = modelDef.settings.hiddenProperties) !== null && _c !== void 0 ? _c : [];
|
|
64
|
+
modelDef.settings.hiddenProperties.push(propName);
|
|
65
|
+
}
|
|
66
|
+
propDef.type = designType;
|
|
67
|
+
modelDef.addProperty(propName, propDef);
|
|
68
|
+
}
|
|
69
|
+
target.definition = modelDef;
|
|
70
|
+
const relationMeta = (_d = core_1.MetadataInspector.getAllPropertyMetadata(relation_decorator_1.RELATIONS_KEY, prototype)) !== null && _d !== void 0 ? _d : {};
|
|
71
|
+
const relations = {};
|
|
72
|
+
// Build an object keyed by relation names
|
|
73
|
+
Object.values(relationMeta).forEach(r => {
|
|
74
|
+
relations[r.name] = r;
|
|
75
|
+
});
|
|
76
|
+
target.definition.relations = relations;
|
|
77
|
+
return modelDef;
|
|
78
|
+
}
|
|
79
|
+
exports.buildModelDefinition = buildModelDefinition;
|
|
80
|
+
/**
|
|
81
|
+
* Decorator for model properties
|
|
82
|
+
* @param definition
|
|
83
|
+
* @returns A property decorator
|
|
84
|
+
*/
|
|
85
|
+
function property(definition) {
|
|
86
|
+
return core_1.PropertyDecoratorFactory.createDecorator(exports.MODEL_PROPERTIES_KEY, Object.assign({}, definition), { decoratorName: '@property' });
|
|
87
|
+
}
|
|
88
|
+
exports.property = property;
|
|
89
|
+
(function (property) {
|
|
90
|
+
property.ERR_PROP_NOT_ARRAY = '@property.array can only decorate array properties!';
|
|
91
|
+
property.ERR_NO_ARGS = 'decorator received less than two parameters';
|
|
92
|
+
/**
|
|
93
|
+
*
|
|
94
|
+
* @param itemType - The type of array items.
|
|
95
|
+
* Examples: `number`, `Product`, `() => Order`.
|
|
96
|
+
* @param definition - Optional PropertyDefinition object for additional
|
|
97
|
+
* metadata
|
|
98
|
+
*/
|
|
99
|
+
function array(itemType, definition) {
|
|
100
|
+
return function (target, propertyName) {
|
|
101
|
+
const propType = core_1.MetadataInspector.getDesignTypeForProperty(target, propertyName);
|
|
102
|
+
if (propType !== Array) {
|
|
103
|
+
throw new Error(property.ERR_PROP_NOT_ARRAY);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
property(Object.assign({ type: Array, itemType }, definition))(target, propertyName);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
property.array = array;
|
|
111
|
+
})(property = exports.property || (exports.property = {}));
|
|
112
|
+
//# sourceMappingURL=model.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.decorator.js","sourceRoot":"","sources":["../../src/decorators/model.decorator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Class } from '../common-types';
|
|
2
|
+
import { DataSource } from '../datasource';
|
|
3
|
+
import { Entity, Model } from '../model';
|
|
4
|
+
import { Repository } from '../repositories';
|
|
5
|
+
import { juggler } from '../repositories/legacy-juggler-bridge';
|
|
6
|
+
/**
|
|
7
|
+
* Type definition for decorators returned by `@repository` decorator factory
|
|
8
|
+
*/
|
|
9
|
+
export declare type RepositoryDecorator = (target: Object, key?: string, descriptorOrIndex?: TypedPropertyDescriptor<any> | number) => void;
|
|
10
|
+
/**
|
|
11
|
+
* Metadata for a repository
|
|
12
|
+
*/
|
|
13
|
+
export declare class RepositoryMetadata {
|
|
14
|
+
/**
|
|
15
|
+
* Name of the predefined repository
|
|
16
|
+
*/
|
|
17
|
+
name?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Name of the model
|
|
20
|
+
*/
|
|
21
|
+
modelName?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Class of the model
|
|
24
|
+
*/
|
|
25
|
+
modelClass?: typeof Entity;
|
|
26
|
+
/**
|
|
27
|
+
* Name of the data source
|
|
28
|
+
*/
|
|
29
|
+
dataSourceName?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Instance of the data source
|
|
32
|
+
*/
|
|
33
|
+
dataSource?: juggler.DataSource | DataSource;
|
|
34
|
+
/**
|
|
35
|
+
* Constructor for RepositoryMetadata
|
|
36
|
+
*
|
|
37
|
+
* @param modelOrRepo - Name or class of the model. If the value is a string and
|
|
38
|
+
* `dataSource` is not present, it will treated as the name of a predefined
|
|
39
|
+
* repository
|
|
40
|
+
* @param dataSource - Name or instance of the data source
|
|
41
|
+
*
|
|
42
|
+
* For example:
|
|
43
|
+
*
|
|
44
|
+
* - new RepositoryMetadata(repoName);
|
|
45
|
+
* - new RepositoryMetadata(modelName, dataSourceName);
|
|
46
|
+
* - new RepositoryMetadata(modelClass, dataSourceInstance);
|
|
47
|
+
* - new RepositoryMetadata(modelName, dataSourceInstance);
|
|
48
|
+
* - new RepositoryMetadata(modelClass, dataSourceName);
|
|
49
|
+
*/
|
|
50
|
+
constructor(modelOrRepo: string | typeof Entity, dataSource?: string | juggler.DataSource | DataSource);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Decorator for repository injections on properties or method arguments
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```ts
|
|
57
|
+
* class CustomerController {
|
|
58
|
+
* @repository(CustomerRepository) public custRepo: CustomerRepository;
|
|
59
|
+
*
|
|
60
|
+
* constructor(
|
|
61
|
+
* @repository(ProductRepository) public prodRepo: ProductRepository,
|
|
62
|
+
* ) {}
|
|
63
|
+
* // ...
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @param repositoryName - Name of the repo
|
|
68
|
+
*/
|
|
69
|
+
export declare function repository(repositoryName: string | Class<Repository<Model>>): RepositoryDecorator;
|
|
70
|
+
/**
|
|
71
|
+
* Decorator for DefaultCrudRepository generation and injection on properties
|
|
72
|
+
* or method arguments based on the given model and dataSource (or their names)
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```ts
|
|
76
|
+
* class CustomerController {
|
|
77
|
+
* @repository('Customer', 'mySqlDataSource')
|
|
78
|
+
* public custRepo: DefaultCrudRepository<
|
|
79
|
+
* Customer,
|
|
80
|
+
* typeof Customer.prototype.id
|
|
81
|
+
* >;
|
|
82
|
+
*
|
|
83
|
+
* constructor(
|
|
84
|
+
* @repository(Product, mySqlDataSource)
|
|
85
|
+
* public prodRepo: DefaultCrudRepository<
|
|
86
|
+
* Product,
|
|
87
|
+
* typeof Product.prototype.id
|
|
88
|
+
* >,
|
|
89
|
+
* ) {}
|
|
90
|
+
* // ...
|
|
91
|
+
* }
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* @param model - Name/class of the model
|
|
95
|
+
* @param dataSource - Name/instance of the dataSource
|
|
96
|
+
*/
|
|
97
|
+
export declare function repository(model: string | typeof Entity, dataSource: string | juggler.DataSource): RepositoryDecorator;
|
|
98
|
+
export declare namespace repository {
|
|
99
|
+
/**
|
|
100
|
+
* Decorator used to inject a Getter for a repository
|
|
101
|
+
* Mainly intended for usage with repository injections on relation repository
|
|
102
|
+
* factory
|
|
103
|
+
* @param nameOrClass - The repository class (ProductRepository) or a string name ('ProductRepository').
|
|
104
|
+
*/
|
|
105
|
+
function getter(nameOrClass: string | Class<Repository<Model>>): (target: Object, member: string | undefined, methodDescriptorOrParameterIndex?: number | TypedPropertyDescriptor<any> | undefined) => void;
|
|
106
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright IBM Corp. 2018,2020. All Rights Reserved.
|
|
3
|
+
// Node module: @loopback/repository
|
|
4
|
+
// This file is licensed under the MIT License.
|
|
5
|
+
// License text available at https://opensource.org/licenses/MIT
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.repository = exports.RepositoryMetadata = void 0;
|
|
8
|
+
const tslib_1 = require("tslib");
|
|
9
|
+
const core_1 = require("@loopback/core");
|
|
10
|
+
const assert_1 = (0, tslib_1.__importDefault)(require("assert"));
|
|
11
|
+
const repositories_1 = require("../repositories");
|
|
12
|
+
const legacy_juggler_bridge_1 = require("../repositories/legacy-juggler-bridge");
|
|
13
|
+
/**
|
|
14
|
+
* Metadata for a repository
|
|
15
|
+
*/
|
|
16
|
+
class RepositoryMetadata {
|
|
17
|
+
/**
|
|
18
|
+
* Constructor for RepositoryMetadata
|
|
19
|
+
*
|
|
20
|
+
* @param modelOrRepo - Name or class of the model. If the value is a string and
|
|
21
|
+
* `dataSource` is not present, it will treated as the name of a predefined
|
|
22
|
+
* repository
|
|
23
|
+
* @param dataSource - Name or instance of the data source
|
|
24
|
+
*
|
|
25
|
+
* For example:
|
|
26
|
+
*
|
|
27
|
+
* - new RepositoryMetadata(repoName);
|
|
28
|
+
* - new RepositoryMetadata(modelName, dataSourceName);
|
|
29
|
+
* - new RepositoryMetadata(modelClass, dataSourceInstance);
|
|
30
|
+
* - new RepositoryMetadata(modelName, dataSourceInstance);
|
|
31
|
+
* - new RepositoryMetadata(modelClass, dataSourceName);
|
|
32
|
+
*/
|
|
33
|
+
constructor(modelOrRepo, dataSource) {
|
|
34
|
+
this.name =
|
|
35
|
+
typeof modelOrRepo === 'string' && dataSource === undefined
|
|
36
|
+
? modelOrRepo
|
|
37
|
+
: undefined;
|
|
38
|
+
this.modelName =
|
|
39
|
+
typeof modelOrRepo === 'string' && dataSource != null
|
|
40
|
+
? modelOrRepo
|
|
41
|
+
: undefined;
|
|
42
|
+
this.modelClass =
|
|
43
|
+
typeof modelOrRepo === 'function' ? modelOrRepo : undefined;
|
|
44
|
+
this.dataSourceName =
|
|
45
|
+
typeof dataSource === 'string' ? dataSource : undefined;
|
|
46
|
+
this.dataSource = typeof dataSource === 'object' ? dataSource : undefined;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.RepositoryMetadata = RepositoryMetadata;
|
|
50
|
+
function repository(modelOrRepo, dataSource) {
|
|
51
|
+
// if string, repository or not a model ctor,
|
|
52
|
+
// keep it a string / assign to ctor's name (string) for DI
|
|
53
|
+
const stringOrModel = typeof modelOrRepo !== 'string' && !modelOrRepo.prototype.getId
|
|
54
|
+
? modelOrRepo.name
|
|
55
|
+
: modelOrRepo;
|
|
56
|
+
const meta = new RepositoryMetadata(stringOrModel, dataSource);
|
|
57
|
+
return function (target, key,
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
59
|
+
descriptorOrIndex) {
|
|
60
|
+
if (key || typeof descriptorOrIndex === 'number') {
|
|
61
|
+
if (meta.name) {
|
|
62
|
+
// Make it shortcut to `@inject('repositories.MyRepo')`
|
|
63
|
+
// Please note key is undefined for constructor. If strictNullChecks
|
|
64
|
+
// is true, the compiler will complain as reflect-metadata won't
|
|
65
|
+
// accept undefined or null for key. Use ! to fool the compiler.
|
|
66
|
+
(0, core_1.inject)('repositories.' + meta.name, meta)(target, key, descriptorOrIndex);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// Use repository-factory to create a repository from model + dataSource
|
|
70
|
+
(0, core_1.inject)('', meta, resolve)(target, key, descriptorOrIndex);
|
|
71
|
+
}
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Mixin repository into the class
|
|
75
|
+
throw new Error('Class level @repository is not implemented');
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
exports.repository = repository;
|
|
79
|
+
(function (repository) {
|
|
80
|
+
/**
|
|
81
|
+
* Decorator used to inject a Getter for a repository
|
|
82
|
+
* Mainly intended for usage with repository injections on relation repository
|
|
83
|
+
* factory
|
|
84
|
+
* @param nameOrClass - The repository class (ProductRepository) or a string name ('ProductRepository').
|
|
85
|
+
*/
|
|
86
|
+
function getter(nameOrClass) {
|
|
87
|
+
const name = typeof nameOrClass === 'string' ? nameOrClass : nameOrClass.name;
|
|
88
|
+
return core_1.inject.getter(`repositories.${name}`);
|
|
89
|
+
}
|
|
90
|
+
repository.getter = getter;
|
|
91
|
+
})(repository = exports.repository || (exports.repository = {}));
|
|
92
|
+
/**
|
|
93
|
+
* Resolve the @repository injection
|
|
94
|
+
* @param ctx - Context
|
|
95
|
+
* @param injection - Injection metadata
|
|
96
|
+
*/
|
|
97
|
+
async function resolve(ctx, injection) {
|
|
98
|
+
const meta = injection.metadata;
|
|
99
|
+
let modelClass = meta.modelClass;
|
|
100
|
+
if (meta.modelName) {
|
|
101
|
+
modelClass = (await ctx.get('models.' + meta.modelName));
|
|
102
|
+
}
|
|
103
|
+
if (!modelClass) {
|
|
104
|
+
throw new Error('Invalid repository config: ' +
|
|
105
|
+
' neither modelClass nor modelName was specified.');
|
|
106
|
+
}
|
|
107
|
+
let dataSource = meta.dataSource;
|
|
108
|
+
if (meta.dataSourceName) {
|
|
109
|
+
dataSource = await ctx.get('datasources.' + meta.dataSourceName);
|
|
110
|
+
}
|
|
111
|
+
(0, assert_1.default)(dataSource instanceof legacy_juggler_bridge_1.juggler.DataSource, 'DataSource must be provided');
|
|
112
|
+
return new repositories_1.DefaultCrudRepository(modelClass, dataSource);
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=repository.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.decorator.js","sourceRoot":"","sources":["../../src/decorators/repository.decorator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { DataObject, PrototypeOf } from './common-types';
|
|
2
|
+
import { Model, ModelDefinition } from './model';
|
|
3
|
+
/**
|
|
4
|
+
* Create (define) a new model class with the given name and definition.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* const Product = defineModelClass(Entity, new ModelDefinition('Product'));
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* To enable type safety, you should describe properties of your model:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* const Product = defineModelClass<
|
|
16
|
+
* typeof Entity,
|
|
17
|
+
* {id: number, name: string}
|
|
18
|
+
* >(Entity, new ModelDefinition('Product'));
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* If your model allows arbitrary (free-form) properties, then add `AnyObject`
|
|
22
|
+
* to the type describing model properties.
|
|
23
|
+
*
|
|
24
|
+
* ```ts
|
|
25
|
+
* const Product = defineModelClass<
|
|
26
|
+
* typeof Entity,
|
|
27
|
+
* AnyObject & {id: number},
|
|
28
|
+
* >(Entity, new ModelDefinition('Product'));
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @param base The base model to extend, typically Model or Entity.
|
|
32
|
+
* You can also use your own base class, e.g. `User`.
|
|
33
|
+
* @param definition Definition of the model to create.
|
|
34
|
+
* @typeParam BaseCtor Constructor type of the base class,
|
|
35
|
+
* e.g `typeof Model` or `typeof Entity`
|
|
36
|
+
* @typeParam Props Interface describing model properties,
|
|
37
|
+
* e.g. `{title: string}` or `AnyObject & {id: number}`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function defineModelClass<BaseCtor extends typeof Model, Props extends object = {}>(base: BaseCtor, definition: ModelDefinition): DynamicModelCtor<BaseCtor, Props>;
|
|
40
|
+
/**
|
|
41
|
+
* A type describing a model class created via `defineModelClass`.
|
|
42
|
+
*
|
|
43
|
+
* Assuming template arguments `BaseCtor` and `Props`, this type describes
|
|
44
|
+
* a class constructor with the following properties:
|
|
45
|
+
* - a constructor function accepting `DataObject<Props>` as the only argument,
|
|
46
|
+
* this argument is optional
|
|
47
|
+
* - all static fields (properties, methods) from `BaseCtor` are inherited and
|
|
48
|
+
* available as static fields on the dynamic class
|
|
49
|
+
* - all prototype fields from `BaseCtor` prototype are inherited and available
|
|
50
|
+
* as prototype fields on the dynamic class
|
|
51
|
+
*/
|
|
52
|
+
export declare type DynamicModelCtor<BaseCtor extends typeof Model, Props extends object> = {
|
|
53
|
+
/** Model constructor accepting partial model data. */
|
|
54
|
+
new (data?: DataObject<PrototypeOf<BaseCtor> & Props>): PrototypeOf<BaseCtor> & Props;
|
|
55
|
+
} & BaseCtor;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright IBM Corp. 2019,2020. All Rights Reserved.
|
|
3
|
+
// Node module: @loopback/repository
|
|
4
|
+
// This file is licensed under the MIT License.
|
|
5
|
+
// License text available at https://opensource.org/licenses/MIT
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.defineModelClass = void 0;
|
|
8
|
+
const tslib_1 = require("tslib");
|
|
9
|
+
const assert = (0, tslib_1.__importStar)(require("assert"));
|
|
10
|
+
const decorators_1 = require("./decorators");
|
|
11
|
+
/**
|
|
12
|
+
* Create (define) a new model class with the given name and definition.
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* const Product = defineModelClass(Entity, new ModelDefinition('Product'));
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* To enable type safety, you should describe properties of your model:
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* const Product = defineModelClass<
|
|
24
|
+
* typeof Entity,
|
|
25
|
+
* {id: number, name: string}
|
|
26
|
+
* >(Entity, new ModelDefinition('Product'));
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* If your model allows arbitrary (free-form) properties, then add `AnyObject`
|
|
30
|
+
* to the type describing model properties.
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* const Product = defineModelClass<
|
|
34
|
+
* typeof Entity,
|
|
35
|
+
* AnyObject & {id: number},
|
|
36
|
+
* >(Entity, new ModelDefinition('Product'));
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @param base The base model to extend, typically Model or Entity.
|
|
40
|
+
* You can also use your own base class, e.g. `User`.
|
|
41
|
+
* @param definition Definition of the model to create.
|
|
42
|
+
* @typeParam BaseCtor Constructor type of the base class,
|
|
43
|
+
* e.g `typeof Model` or `typeof Entity`
|
|
44
|
+
* @typeParam Props Interface describing model properties,
|
|
45
|
+
* e.g. `{title: string}` or `AnyObject & {id: number}`.
|
|
46
|
+
*/
|
|
47
|
+
function defineModelClass(base /* Model or Entity */, definition) {
|
|
48
|
+
const modelName = definition.name;
|
|
49
|
+
const defineNamedModelClass = new Function(base.name, `return class ${modelName} extends ${base.name} {}`);
|
|
50
|
+
const modelClass = defineNamedModelClass(base);
|
|
51
|
+
assert.equal(modelClass.name, modelName);
|
|
52
|
+
// Apply `@model(definition)` to the generated class
|
|
53
|
+
(0, decorators_1.model)(definition)(modelClass);
|
|
54
|
+
return modelClass;
|
|
55
|
+
}
|
|
56
|
+
exports.defineModelClass = defineModelClass;
|
|
57
|
+
//# sourceMappingURL=define-model-class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-model-class.js","sourceRoot":"","sources":["../src/define-model-class.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,4DAAiC;AAEjC,6CAAmC;AAGnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,SAAgB,gBAAgB,CAI9B,IAAc,CAAC,qBAAqB,EACpC,UAA2B;IAE3B,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;IAClC,MAAM,qBAAqB,GAAG,IAAI,QAAQ,CACxC,IAAI,CAAC,IAAI,EACT,gBAAgB,SAAS,YAAY,IAAI,CAAC,IAAI,KAAK,CACpD,CAAC;IACF,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAG5C,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAEzC,oDAAoD;IACpD,IAAA,kBAAK,EAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC;IAC9B,OAAO,UAAU,CAAC;AACpB,CAAC;AArBD,4CAqBC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { PrototypeOf } from './common-types';
|
|
2
|
+
import { Entity, Model } from './model';
|
|
3
|
+
import { DefaultCrudRepository, DefaultKeyValueRepository, juggler, Repository } from './repositories';
|
|
4
|
+
/**
|
|
5
|
+
* Signature for a Repository class bound to a given model. The constructor
|
|
6
|
+
* accepts only the dataSource to use for persistence.
|
|
7
|
+
*
|
|
8
|
+
* `define*` functions return a class implementing this interface.
|
|
9
|
+
*
|
|
10
|
+
* @typeParam M - Model class
|
|
11
|
+
* @typeParam R - Repository class/interface
|
|
12
|
+
*/
|
|
13
|
+
export interface ModelRepositoryClass<M extends Model, R extends Repository<M>> {
|
|
14
|
+
/**
|
|
15
|
+
* The constructor for the generated repository class
|
|
16
|
+
* @param dataSource - DataSource object
|
|
17
|
+
*/
|
|
18
|
+
new (dataSource: juggler.DataSource): R;
|
|
19
|
+
prototype: R;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Signature for repository classes that can be used as the base class for
|
|
23
|
+
* `define*` functions. The constructor of a base repository class accepts
|
|
24
|
+
* the target model constructor and the datasource to use.
|
|
25
|
+
*
|
|
26
|
+
* `define*` functions require a class implementing this interface on input.
|
|
27
|
+
*
|
|
28
|
+
* @typeParam M - Model class constructor, e.g `typeof Model`.
|
|
29
|
+
* **❗️IMPORTANT: The type argument `M` is describing the model constructor type
|
|
30
|
+
* (e.g. `typeof Model`), not the model instance type (`Model`) as is the case
|
|
31
|
+
* in other repository-related types. The constructor type is required
|
|
32
|
+
* to support custom repository classes requiring a Model subclass in the
|
|
33
|
+
* constructor arguments, e.g. `Entity` or a user-provided model.**
|
|
34
|
+
*
|
|
35
|
+
* @typeParam R - Repository class/interface
|
|
36
|
+
*/
|
|
37
|
+
export interface BaseRepositoryClass<M extends typeof Model, R extends Repository<PrototypeOf<M>>> {
|
|
38
|
+
/**
|
|
39
|
+
* The constructor for the generated repository class
|
|
40
|
+
* @param modelClass - Model class
|
|
41
|
+
* @param dataSource - DataSource object
|
|
42
|
+
*/
|
|
43
|
+
new (modelClass: M, dataSource: juggler.DataSource): R;
|
|
44
|
+
prototype: R;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create (define) a repository class for the given model.
|
|
48
|
+
*
|
|
49
|
+
* See also `defineCrudRepositoryClass` and `defineKeyValueRepositoryClass`
|
|
50
|
+
* for convenience wrappers providing repository class factory for the default
|
|
51
|
+
* CRUD and KeyValue implementations.
|
|
52
|
+
*
|
|
53
|
+
* **❗️IMPORTANT: The compiler (TypeScript 3.8) is not able to correctly infer
|
|
54
|
+
* generic arguments `M` and `R` from the class constructors provided in
|
|
55
|
+
* function arguments. You must always provide both M and R types explicitly.**
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
*
|
|
59
|
+
* ```ts
|
|
60
|
+
* const AddressRepository = defineRepositoryClass<
|
|
61
|
+
* typeof Address,
|
|
62
|
+
* DefaultEntityCrudRepository<
|
|
63
|
+
* Address,
|
|
64
|
+
* typeof Address.prototype.id,
|
|
65
|
+
* AddressRelations
|
|
66
|
+
* >,
|
|
67
|
+
* >(Address, DefaultCrudRepository);
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* @param modelClass - A model class such as `Address`.
|
|
71
|
+
* @param baseRepositoryClass - Repository implementation to use as the base,
|
|
72
|
+
* e.g. `DefaultCrudRepository`.
|
|
73
|
+
*
|
|
74
|
+
* @typeParam M - Model class constructor (e.g. `typeof Address`)
|
|
75
|
+
* @typeParam R - Repository class (e.g. `DefaultCrudRepository<Address, number>`)
|
|
76
|
+
*/
|
|
77
|
+
export declare function defineRepositoryClass<M extends typeof Model, R extends Repository<PrototypeOf<M>>>(modelClass: M, baseRepositoryClass: BaseRepositoryClass<M, R>): ModelRepositoryClass<PrototypeOf<M>, R>;
|
|
78
|
+
/**
|
|
79
|
+
* Create (define) an entity CRUD repository class for the given model.
|
|
80
|
+
* This function always uses `DefaultCrudRepository` as the base class,
|
|
81
|
+
* use `defineRepositoryClass` if you want to use your own base repository.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
*
|
|
85
|
+
* ```ts
|
|
86
|
+
* const ProductRepository = defineCrudRepositoryClass<
|
|
87
|
+
* Product,
|
|
88
|
+
* typeof Product.prototype.id,
|
|
89
|
+
* ProductRelations
|
|
90
|
+
* >(Product);
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* @param entityClass - An entity class such as `Product`.
|
|
94
|
+
*
|
|
95
|
+
* @typeParam E - An entity class
|
|
96
|
+
* @typeParam IdType - ID type for the entity
|
|
97
|
+
* @typeParam Relations - Relations for the entity
|
|
98
|
+
*/
|
|
99
|
+
export declare function defineCrudRepositoryClass<E extends Entity, IdType, Relations extends object>(entityClass: typeof Entity & {
|
|
100
|
+
prototype: E;
|
|
101
|
+
}): ModelRepositoryClass<E, DefaultCrudRepository<E, IdType, Relations>>;
|
|
102
|
+
/**
|
|
103
|
+
* Create (define) a KeyValue repository class for the given entity.
|
|
104
|
+
* This function always uses `DefaultKeyValueRepository` as the base class,
|
|
105
|
+
* use `defineRepositoryClass` if you want to use your own base repository.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
*
|
|
109
|
+
* ```ts
|
|
110
|
+
* const ProductKeyValueRepository = defineKeyValueRepositoryClass(Product);
|
|
111
|
+
* ```
|
|
112
|
+
*
|
|
113
|
+
* @param modelClass - An entity class such as `Product`.
|
|
114
|
+
*
|
|
115
|
+
* @typeParam M - Model class
|
|
116
|
+
*/
|
|
117
|
+
export declare function defineKeyValueRepositoryClass<M extends Model>(modelClass: typeof Model & {
|
|
118
|
+
prototype: M;
|
|
119
|
+
}): ModelRepositoryClass<M, DefaultKeyValueRepository<M>>;
|