From 9d12f8d72123f71feec834a48c6284f2109c9e87 Mon Sep 17 00:00:00 2001 From: xmlking Date: Thu, 18 Apr 2019 11:33:08 -0700 Subject: [PATCH] feat(utils): adding new operator 'toClass' --- libs/utils/src/index.ts | 1 + libs/utils/src/lib/to-class.ts | 9 +++++++++ package.json | 2 +- yarn.lock | 8 ++++---- 4 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 libs/utils/src/lib/to-class.ts diff --git a/libs/utils/src/index.ts b/libs/utils/src/index.ts index e5435d47f..3b69e22f7 100644 --- a/libs/utils/src/index.ts +++ b/libs/utils/src/index.ts @@ -3,5 +3,6 @@ export { waitUntil } from './lib/wait-until'; export { DeepPartial } from './lib/deep-partial'; export { ObjectLiteral } from './lib/object-literal'; export { delayAtLeast } from './lib/delay-at-least'; +export { toClass } from './lib/to-class'; export { fromAsyncIterator } from './lib/from-async-iterator'; export * from './lib/require-multi'; diff --git a/libs/utils/src/lib/to-class.ts b/libs/utils/src/lib/to-class.ts new file mode 100644 index 000000000..ee6512f02 --- /dev/null +++ b/libs/utils/src/lib/to-class.ts @@ -0,0 +1,9 @@ +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +/** + * Usage: http.get('/users/1').pipe(toClass(User)) + */ +export const toClass = (ClassType: new() => T) => (source: Observable) => source.pipe( +map(val => Object.assign(new ClassType(), val)) +); diff --git a/package.json b/package.json index aa6b3aa28..49e924bd4 100644 --- a/package.json +++ b/package.json @@ -151,7 +151,7 @@ "filepond-plugin-image-transform": "^3.2.0", "formidable": "^1.2.1", "hammerjs": "^2.0.8", - "immer": "^3.0.0", + "immer": "^3.1.1", "intersection-observer": "^0.5.1", "keycloak-js": "^6.0.0", "ngx-filepond": "^5.0.0", diff --git a/yarn.lock b/yarn.lock index 2cd4dc818..0a1f3aef7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8176,10 +8176,10 @@ image-size@~0.5.0: resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= -immer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/immer/-/immer-3.0.0.tgz#3991440679116ec2d6b39b0ed5341e681b26ebcf" - integrity sha512-dqLrAUJz/G7vfcuQG6GdjOGm+5Mw9YJEvDRbEwHwzBPBRziZYevOq2P1pF//B07CG1l28ZsjSqLz+RziObkaDQ== +immer@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/immer/-/immer-3.1.1.tgz#eddd2c28403f494df604992c554eade8d9e5c2bb" + integrity sha512-8mH3vMqkvCy0jADoJGJR/+RNsIJOsrVhN1/8NBSLGV+Y4S8bSQ5i2VsDHu+1fm+IFhd8cZFX0shms2nsTBJUbA== immutable@^3: version "3.8.2"