@lenne.tech/ng-base 13.0.0 → 13.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base-components/base-components.module.d.ts +12 -0
- package/base-components/components/checkbox/checkbox.component.d.ts +11 -0
- package/base-components/components/input/input.component.d.ts +14 -0
- package/base-components/components/select/select.component.d.ts +19 -0
- package/base-components/components/textarea/textarea.component.d.ts +13 -0
- package/base-components/lenne.tech-ng-base-base-components.d.ts +5 -0
- package/base-components/package.json +10 -0
- package/base-components/public-api.d.ts +8 -0
- package/base-prototype/base-prototype.module.d.ts +12 -0
- package/{src/lib/base/lenne.tech-ng-base-src-lib-base.d.ts → base-prototype/lenne.tech-ng-base-base-prototype.d.ts} +1 -1
- package/base-prototype/package.json +10 -0
- package/base-prototype/pages/login/login.component.d.ts +20 -0
- package/base-prototype/pages/register/register.component.d.ts +20 -0
- package/base-prototype/public-api.d.ts +6 -0
- package/esm2020/base-components/base-components.module.mjs +42 -0
- package/esm2020/base-components/components/checkbox/checkbox.component.mjs +28 -0
- package/esm2020/base-components/components/input/input.component.mjs +36 -0
- package/esm2020/base-components/components/select/select.component.mjs +37 -0
- package/esm2020/base-components/components/textarea/textarea.component.mjs +35 -0
- package/esm2020/base-components/lenne.tech-ng-base-base-components.mjs +5 -0
- package/esm2020/base-components/public-api.mjs +11 -0
- package/esm2020/base-prototype/base-prototype.module.mjs +36 -0
- package/esm2020/base-prototype/lenne.tech-ng-base-base-prototype.mjs +5 -0
- package/esm2020/base-prototype/pages/login/login.component.mjs +39 -0
- package/esm2020/base-prototype/pages/register/register.component.mjs +45 -0
- package/esm2020/base-prototype/public-api.mjs +9 -0
- package/esm2020/lenne.tech-ng-base.mjs +1 -1
- package/esm2020/public-api.mjs +68 -3
- package/esm2020/src/base.module.mjs +101 -0
- package/esm2020/src/classes/basic-user.class.mjs +51 -0
- package/esm2020/src/classes/graphql-enum.class.mjs +9 -0
- package/esm2020/src/classes/graphql-meta.class.mjs +171 -0
- package/esm2020/src/classes/graphql-type.class.mjs +13 -0
- package/esm2020/src/classes/helper.class.mjs +304 -0
- package/esm2020/src/classes/standard.class.mjs +40 -0
- package/esm2020/src/decorators/debounce.decorator.mjs +12 -0
- package/esm2020/src/directives/context-menu.directive.mjs +109 -0
- package/esm2020/src/directives/lazy-load.directive.mjs +45 -0
- package/esm2020/src/directives/match-height.directive.mjs +79 -0
- package/esm2020/src/directives/resizable.directive.mjs +90 -0
- package/esm2020/src/enums/comparison-operator.enum.mjs +16 -0
- package/esm2020/src/enums/graphql-request-type.enum.mjs +10 -0
- package/esm2020/src/enums/logical-operator.enum.mjs +10 -0
- package/esm2020/src/enums/sort-order.enum.mjs +6 -0
- package/esm2020/src/factories/apollo-options.factory.mjs +61 -0
- package/esm2020/src/guards/auth.guard.mjs +61 -0
- package/esm2020/src/guards/can-deactivate.guard.mjs +16 -0
- package/esm2020/src/guards/logout.guard.mjs +32 -0
- package/esm2020/src/interfaces/base-module-config.interface.mjs +3 -0
- package/esm2020/src/interfaces/can-component-deactivate.interface.mjs +2 -0
- package/esm2020/src/interfaces/combined-filter-input.interface.mjs +2 -0
- package/esm2020/src/interfaces/field-object.interface.mjs +2 -0
- package/esm2020/src/interfaces/field.interface.mjs +2 -0
- package/esm2020/src/interfaces/filter-input.interface.mjs +2 -0
- package/esm2020/src/interfaces/find-args.interface.mjs +2 -0
- package/esm2020/src/interfaces/graphql-fields-object.interface.mjs +2 -0
- package/esm2020/src/interfaces/graphql-options.interface.mjs +2 -0
- package/esm2020/src/interfaces/graphql-plus-options.interfacen.mjs +2 -0
- package/esm2020/src/interfaces/graphql-type-collection.interface.mjs +2 -0
- package/esm2020/src/interfaces/single-filter-input.interface.mjs +2 -0
- package/esm2020/src/interfaces/sort-input.interface.mjs +2 -0
- package/esm2020/src/pipes/date-ago.pipe.mjs +65 -0
- package/esm2020/src/pipes/ellipses.pipe.mjs +22 -0
- package/esm2020/src/pipes/safe-html.pipe.mjs +21 -0
- package/esm2020/src/services/auth.service.mjs +71 -0
- package/esm2020/src/services/forms.service.mjs +26 -0
- package/esm2020/src/services/fullscreen.service.mjs +51 -0
- package/esm2020/src/services/graphql-meta.service.mjs +123 -0
- package/esm2020/src/services/graphql-plus.service.mjs +84 -0
- package/esm2020/src/services/graphql.service.mjs +441 -0
- package/esm2020/src/services/image.service.mjs +102 -0
- package/esm2020/src/services/loader.service.mjs +29 -0
- package/esm2020/src/services/scroll.service.mjs +179 -0
- package/esm2020/src/services/seo.service.mjs +97 -0
- package/esm2020/src/services/storage.service.mjs +132 -0
- package/esm2020/src/services/theme.service.mjs +43 -0
- package/esm2020/src/services/ws.service.mjs +17 -0
- package/esm2020/src/types/graphql-fields.type.mjs +2 -0
- package/esm2020/src/types/storage.type.mjs +2 -0
- package/esm2020/src/validators/must-match.validator.mjs +22 -0
- package/fesm2015/lenne.tech-ng-base-base-components.mjs +173 -0
- package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +1 -0
- package/fesm2015/lenne.tech-ng-base-base-prototype.mjs +122 -0
- package/fesm2015/lenne.tech-ng-base-base-prototype.mjs.map +1 -0
- package/fesm2015/lenne.tech-ng-base.mjs +225 -77
- package/fesm2015/lenne.tech-ng-base.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-base-components.mjs +171 -0
- package/fesm2020/lenne.tech-ng-base-base-components.mjs.map +1 -0
- package/fesm2020/lenne.tech-ng-base-base-prototype.mjs +120 -0
- package/fesm2020/lenne.tech-ng-base-base-prototype.mjs.map +1 -0
- package/fesm2020/lenne.tech-ng-base.mjs +225 -77
- package/fesm2020/lenne.tech-ng-base.mjs.map +1 -1
- package/package.json +29 -20
- package/public-api.d.ts +55 -1
- package/{lib/base → src}/base.module.d.ts +2 -1
- package/{lib/base → src}/classes/basic-user.class.d.ts +0 -0
- package/{lib/base → src}/classes/graphql-enum.class.d.ts +0 -0
- package/{lib/base → src}/classes/graphql-meta.class.d.ts +0 -0
- package/{lib/base → src}/classes/graphql-type.class.d.ts +0 -0
- package/{lib/base → src}/classes/helper.class.d.ts +1 -0
- package/{lib/base → src}/classes/standard.class.d.ts +0 -0
- package/src/decorators/debounce.decorator.d.ts +1 -0
- package/{lib/base → src}/directives/context-menu.directive.d.ts +0 -0
- package/{lib/base → src}/directives/lazy-load.directive.d.ts +0 -0
- package/{lib/base → src}/directives/match-height.directive.d.ts +0 -0
- package/{lib/base → src}/directives/resizable.directive.d.ts +0 -0
- package/{lib/base → src}/enums/comparison-operator.enum.d.ts +0 -0
- package/{lib/base → src}/enums/graphql-request-type.enum.d.ts +0 -0
- package/{lib/base → src}/enums/logical-operator.enum.d.ts +0 -0
- package/{lib/base → src}/enums/sort-order.enum.d.ts +0 -0
- package/{lib/base → src}/factories/apollo-options.factory.d.ts +0 -0
- package/{lib/base → src}/guards/auth.guard.d.ts +0 -0
- package/{lib/base → src}/guards/can-deactivate.guard.d.ts +0 -0
- package/{lib/base → src}/guards/logout.guard.d.ts +0 -0
- package/{lib/base → src}/interfaces/base-module-config.interface.d.ts +0 -0
- package/{lib/base → src}/interfaces/can-component-deactivate.interface.d.ts +0 -0
- package/{lib/base → src}/interfaces/combined-filter-input.interface.d.ts +0 -0
- package/{lib/base → src}/interfaces/field-object.interface.d.ts +0 -0
- package/{lib/base → src}/interfaces/field.interface.d.ts +0 -0
- package/{lib/base → src}/interfaces/filter-input.interface.d.ts +0 -0
- package/{lib/base → src}/interfaces/find-args.interface.d.ts +0 -0
- package/src/interfaces/graphql-fields-object.interface.d.ts +6 -0
- package/{lib/base → src}/interfaces/graphql-options.interface.d.ts +0 -0
- package/{lib/base → src}/interfaces/graphql-plus-options.interfacen.d.ts +0 -0
- package/{lib/base → src}/interfaces/graphql-type-collection.interface.d.ts +0 -0
- package/{lib/base → src}/interfaces/single-filter-input.interface.d.ts +0 -0
- package/{lib/base → src}/interfaces/sort-input.interface.d.ts +0 -0
- package/src/pipes/date-ago.pipe.d.ts +34 -0
- package/{lib/base → src}/pipes/ellipses.pipe.d.ts +0 -0
- package/{lib/base → src}/pipes/safe-html.pipe.d.ts +0 -0
- package/{lib/base → src}/services/auth.service.d.ts +0 -0
- package/src/services/forms.service.d.ts +8 -0
- package/{lib/base → src}/services/fullscreen.service.d.ts +0 -0
- package/{lib/base → src}/services/graphql-meta.service.d.ts +0 -0
- package/{lib/base → src}/services/graphql-plus.service.d.ts +0 -0
- package/{lib/base → src}/services/graphql.service.d.ts +0 -0
- package/{lib/base → src}/services/image.service.d.ts +0 -0
- package/{lib/base → src}/services/loader.service.d.ts +0 -0
- package/{lib/base → src}/services/scroll.service.d.ts +0 -0
- package/{lib/base → src}/services/seo.service.d.ts +0 -0
- package/{lib/base → src}/services/storage.service.d.ts +0 -0
- package/src/services/theme.service.d.ts +17 -0
- package/{lib/base → src}/services/ws.service.d.ts +0 -0
- package/src/types/graphql-fields.type.d.ts +5 -0
- package/{lib/base → src}/types/storage.type.d.ts +0 -0
- package/{lib/base → src}/validators/must-match.validator.d.ts +2 -2
- package/esm2020/lib/base/base.module.mjs +0 -97
- package/esm2020/lib/base/classes/basic-user.class.mjs +0 -51
- package/esm2020/lib/base/classes/graphql-enum.class.mjs +0 -9
- package/esm2020/lib/base/classes/graphql-meta.class.mjs +0 -171
- package/esm2020/lib/base/classes/graphql-type.class.mjs +0 -13
- package/esm2020/lib/base/classes/helper.class.mjs +0 -295
- package/esm2020/lib/base/classes/standard.class.mjs +0 -40
- package/esm2020/lib/base/directives/context-menu.directive.mjs +0 -109
- package/esm2020/lib/base/directives/lazy-load.directive.mjs +0 -45
- package/esm2020/lib/base/directives/match-height.directive.mjs +0 -79
- package/esm2020/lib/base/directives/resizable.directive.mjs +0 -90
- package/esm2020/lib/base/enums/comparison-operator.enum.mjs +0 -16
- package/esm2020/lib/base/enums/graphql-request-type.enum.mjs +0 -10
- package/esm2020/lib/base/enums/logical-operator.enum.mjs +0 -10
- package/esm2020/lib/base/enums/sort-order.enum.mjs +0 -6
- package/esm2020/lib/base/factories/apollo-options.factory.mjs +0 -61
- package/esm2020/lib/base/guards/auth.guard.mjs +0 -61
- package/esm2020/lib/base/guards/can-deactivate.guard.mjs +0 -16
- package/esm2020/lib/base/guards/logout.guard.mjs +0 -32
- package/esm2020/lib/base/index.mjs +0 -2
- package/esm2020/lib/base/interfaces/base-module-config.interface.mjs +0 -3
- package/esm2020/lib/base/interfaces/can-component-deactivate.interface.mjs +0 -2
- package/esm2020/lib/base/interfaces/combined-filter-input.interface.mjs +0 -2
- package/esm2020/lib/base/interfaces/field-object.interface.mjs +0 -2
- package/esm2020/lib/base/interfaces/field.interface.mjs +0 -2
- package/esm2020/lib/base/interfaces/filter-input.interface.mjs +0 -2
- package/esm2020/lib/base/interfaces/find-args.interface.mjs +0 -2
- package/esm2020/lib/base/interfaces/graphql-options.interface.mjs +0 -2
- package/esm2020/lib/base/interfaces/graphql-plus-options.interfacen.mjs +0 -2
- package/esm2020/lib/base/interfaces/graphql-type-collection.interface.mjs +0 -2
- package/esm2020/lib/base/interfaces/single-filter-input.interface.mjs +0 -2
- package/esm2020/lib/base/interfaces/sort-input.interface.mjs +0 -2
- package/esm2020/lib/base/pipes/ellipses.pipe.mjs +0 -22
- package/esm2020/lib/base/pipes/safe-html.pipe.mjs +0 -21
- package/esm2020/lib/base/public-api.mjs +0 -61
- package/esm2020/lib/base/services/auth.service.mjs +0 -71
- package/esm2020/lib/base/services/fullscreen.service.mjs +0 -51
- package/esm2020/lib/base/services/graphql-meta.service.mjs +0 -123
- package/esm2020/lib/base/services/graphql-plus.service.mjs +0 -84
- package/esm2020/lib/base/services/graphql.service.mjs +0 -441
- package/esm2020/lib/base/services/image.service.mjs +0 -102
- package/esm2020/lib/base/services/loader.service.mjs +0 -29
- package/esm2020/lib/base/services/scroll.service.mjs +0 -179
- package/esm2020/lib/base/services/seo.service.mjs +0 -97
- package/esm2020/lib/base/services/storage.service.mjs +0 -132
- package/esm2020/lib/base/services/ws.service.mjs +0 -17
- package/esm2020/lib/base/types/storage.type.mjs +0 -2
- package/esm2020/lib/base/validators/must-match.validator.mjs +0 -22
- package/esm2020/src/lib/base/base.module.mjs +0 -97
- package/esm2020/src/lib/base/classes/basic-user.class.mjs +0 -51
- package/esm2020/src/lib/base/classes/graphql-enum.class.mjs +0 -9
- package/esm2020/src/lib/base/classes/graphql-meta.class.mjs +0 -171
- package/esm2020/src/lib/base/classes/graphql-type.class.mjs +0 -13
- package/esm2020/src/lib/base/classes/helper.class.mjs +0 -295
- package/esm2020/src/lib/base/classes/standard.class.mjs +0 -40
- package/esm2020/src/lib/base/directives/context-menu.directive.mjs +0 -109
- package/esm2020/src/lib/base/directives/lazy-load.directive.mjs +0 -45
- package/esm2020/src/lib/base/directives/match-height.directive.mjs +0 -79
- package/esm2020/src/lib/base/directives/resizable.directive.mjs +0 -90
- package/esm2020/src/lib/base/enums/comparison-operator.enum.mjs +0 -16
- package/esm2020/src/lib/base/enums/graphql-request-type.enum.mjs +0 -10
- package/esm2020/src/lib/base/enums/logical-operator.enum.mjs +0 -10
- package/esm2020/src/lib/base/enums/sort-order.enum.mjs +0 -6
- package/esm2020/src/lib/base/factories/apollo-options.factory.mjs +0 -61
- package/esm2020/src/lib/base/guards/auth.guard.mjs +0 -61
- package/esm2020/src/lib/base/guards/can-deactivate.guard.mjs +0 -16
- package/esm2020/src/lib/base/guards/logout.guard.mjs +0 -32
- package/esm2020/src/lib/base/interfaces/base-module-config.interface.mjs +0 -3
- package/esm2020/src/lib/base/interfaces/can-component-deactivate.interface.mjs +0 -2
- package/esm2020/src/lib/base/interfaces/combined-filter-input.interface.mjs +0 -2
- package/esm2020/src/lib/base/interfaces/field-object.interface.mjs +0 -2
- package/esm2020/src/lib/base/interfaces/field.interface.mjs +0 -2
- package/esm2020/src/lib/base/interfaces/filter-input.interface.mjs +0 -2
- package/esm2020/src/lib/base/interfaces/find-args.interface.mjs +0 -2
- package/esm2020/src/lib/base/interfaces/graphql-options.interface.mjs +0 -2
- package/esm2020/src/lib/base/interfaces/graphql-plus-options.interfacen.mjs +0 -2
- package/esm2020/src/lib/base/interfaces/graphql-type-collection.interface.mjs +0 -2
- package/esm2020/src/lib/base/interfaces/single-filter-input.interface.mjs +0 -2
- package/esm2020/src/lib/base/interfaces/sort-input.interface.mjs +0 -2
- package/esm2020/src/lib/base/lenne.tech-ng-base-src-lib-base.mjs +0 -5
- package/esm2020/src/lib/base/pipes/ellipses.pipe.mjs +0 -22
- package/esm2020/src/lib/base/pipes/safe-html.pipe.mjs +0 -21
- package/esm2020/src/lib/base/public-api.mjs +0 -61
- package/esm2020/src/lib/base/services/auth.service.mjs +0 -71
- package/esm2020/src/lib/base/services/fullscreen.service.mjs +0 -51
- package/esm2020/src/lib/base/services/graphql-meta.service.mjs +0 -123
- package/esm2020/src/lib/base/services/graphql-plus.service.mjs +0 -84
- package/esm2020/src/lib/base/services/graphql.service.mjs +0 -441
- package/esm2020/src/lib/base/services/image.service.mjs +0 -102
- package/esm2020/src/lib/base/services/loader.service.mjs +0 -29
- package/esm2020/src/lib/base/services/scroll.service.mjs +0 -179
- package/esm2020/src/lib/base/services/seo.service.mjs +0 -97
- package/esm2020/src/lib/base/services/storage.service.mjs +0 -132
- package/esm2020/src/lib/base/services/ws.service.mjs +0 -17
- package/esm2020/src/lib/base/types/storage.type.mjs +0 -2
- package/esm2020/src/lib/base/validators/must-match.validator.mjs +0 -22
- package/fesm2015/lenne.tech-ng-base-src-lib-base.mjs +0 -2470
- package/fesm2015/lenne.tech-ng-base-src-lib-base.mjs.map +0 -1
- package/fesm2020/lenne.tech-ng-base-src-lib-base.mjs +0 -2524
- package/fesm2020/lenne.tech-ng-base-src-lib-base.mjs.map +0 -1
- package/lib/base/index.d.ts +0 -1
- package/lib/base/public-api.d.ts +0 -49
- package/src/lib/base/base.module.d.ts +0 -21
- package/src/lib/base/classes/basic-user.class.d.ts +0 -26
- package/src/lib/base/classes/graphql-enum.class.d.ts +0 -7
- package/src/lib/base/classes/graphql-meta.class.d.ts +0 -46
- package/src/lib/base/classes/graphql-type.class.d.ts +0 -9
- package/src/lib/base/classes/helper.class.d.ts +0 -98
- package/src/lib/base/classes/standard.class.d.ts +0 -32
- package/src/lib/base/directives/context-menu.directive.d.ts +0 -22
- package/src/lib/base/directives/lazy-load.directive.d.ts +0 -17
- package/src/lib/base/directives/match-height.directive.d.ts +0 -19
- package/src/lib/base/directives/resizable.directive.d.ts +0 -26
- package/src/lib/base/enums/comparison-operator.enum.d.ts +0 -14
- package/src/lib/base/enums/graphql-request-type.enum.d.ts +0 -8
- package/src/lib/base/enums/logical-operator.enum.d.ts +0 -8
- package/src/lib/base/enums/sort-order.enum.d.ts +0 -4
- package/src/lib/base/factories/apollo-options.factory.d.ts +0 -18
- package/src/lib/base/guards/auth.guard.d.ts +0 -27
- package/src/lib/base/guards/can-deactivate.guard.d.ts +0 -11
- package/src/lib/base/guards/logout.guard.d.ts +0 -16
- package/src/lib/base/interfaces/base-module-config.interface.d.ts +0 -57
- package/src/lib/base/interfaces/can-component-deactivate.interface.d.ts +0 -7
- package/src/lib/base/interfaces/combined-filter-input.interface.d.ts +0 -9
- package/src/lib/base/interfaces/field-object.interface.d.ts +0 -6
- package/src/lib/base/interfaces/field.interface.d.ts +0 -5
- package/src/lib/base/interfaces/filter-input.interface.d.ts +0 -9
- package/src/lib/base/interfaces/find-args.interface.d.ts +0 -10
- package/src/lib/base/interfaces/graphql-options.interface.d.ts +0 -11
- package/src/lib/base/interfaces/graphql-plus-options.interfacen.d.ts +0 -9
- package/src/lib/base/interfaces/graphql-type-collection.interface.d.ts +0 -7
- package/src/lib/base/interfaces/single-filter-input.interface.d.ts +0 -11
- package/src/lib/base/interfaces/sort-input.interface.d.ts +0 -5
- package/src/lib/base/package.json +0 -10
- package/src/lib/base/pipes/ellipses.pipe.d.ts +0 -10
- package/src/lib/base/pipes/safe-html.pipe.d.ts +0 -13
- package/src/lib/base/public-api.d.ts +0 -49
- package/src/lib/base/services/auth.service.d.ts +0 -32
- package/src/lib/base/services/fullscreen.service.d.ts +0 -18
- package/src/lib/base/services/graphql-meta.service.d.ts +0 -45
- package/src/lib/base/services/graphql-plus.service.d.ts +0 -25
- package/src/lib/base/services/graphql.service.d.ts +0 -56
- package/src/lib/base/services/image.service.d.ts +0 -27
- package/src/lib/base/services/loader.service.d.ts +0 -13
- package/src/lib/base/services/scroll.service.d.ts +0 -85
- package/src/lib/base/services/seo.service.d.ts +0 -49
- package/src/lib/base/services/storage.service.d.ts +0 -48
- package/src/lib/base/services/ws.service.d.ts +0 -8
- package/src/lib/base/types/storage.type.d.ts +0 -4
- package/src/lib/base/validators/must-match.validator.d.ts +0 -6
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { Standard } from './standard.class';
|
|
2
|
-
import { Helper } from './helper.class';
|
|
3
|
-
/**
|
|
4
|
-
* User class
|
|
5
|
-
*/
|
|
6
|
-
export class BasicUser extends Standard {
|
|
7
|
-
constructor() {
|
|
8
|
-
super(...arguments);
|
|
9
|
-
this.id = undefined;
|
|
10
|
-
this.email = undefined;
|
|
11
|
-
this.firstName = undefined;
|
|
12
|
-
this.lastName = undefined;
|
|
13
|
-
this.roles = [];
|
|
14
|
-
this.username = undefined;
|
|
15
|
-
}
|
|
16
|
-
// ===================================================================================================================
|
|
17
|
-
// Methods
|
|
18
|
-
// ===================================================================================================================
|
|
19
|
-
/**
|
|
20
|
-
* Mapping
|
|
21
|
-
*/
|
|
22
|
-
map(data) {
|
|
23
|
-
Helper.map(data, this);
|
|
24
|
-
return this;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Checks whether the user has at least one of the required roles
|
|
28
|
-
*/
|
|
29
|
-
hasRole(roles) {
|
|
30
|
-
if (typeof roles === 'string') {
|
|
31
|
-
roles = [roles];
|
|
32
|
-
}
|
|
33
|
-
if (!this.roles || this.roles.length < 1) {
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
return !roles || roles.length < 1 ? true : this.roles.some((role) => roles.includes(role));
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Checks whether the user has all required roles
|
|
40
|
-
*/
|
|
41
|
-
hasAllRoles(roles) {
|
|
42
|
-
if (typeof roles === 'string') {
|
|
43
|
-
roles = [roles];
|
|
44
|
-
}
|
|
45
|
-
if (!this.roles || this.roles.length < 1) {
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
return !roles ? true : roles.every((role) => this.roles.includes(role));
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtdXNlci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2NsYXNzZXMvYmFzaWMtdXNlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVUsU0FBUSxRQUFRO0lBQXZDOztRQUNFLE9BQUUsR0FBVyxTQUFTLENBQUM7UUFDdkIsVUFBSyxHQUFXLFNBQVMsQ0FBQztRQUMxQixjQUFTLEdBQVcsU0FBUyxDQUFDO1FBQzlCLGFBQVEsR0FBVyxTQUFTLENBQUM7UUFDN0IsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVcsU0FBUyxDQUFDO0lBdUMvQixDQUFDO0lBckNDLHNIQUFzSDtJQUN0SCxVQUFVO0lBQ1Ysc0hBQXNIO0lBRXRIOztPQUVHO0lBQ0ksR0FBRyxDQUFDLElBQTRDO1FBQ3JELE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTyxDQUFDLEtBQXdCO1FBQ3JDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVyxDQUFDLEtBQXdCO1FBQ3pDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhbmRhcmQgfSBmcm9tICcuL3N0YW5kYXJkLmNsYXNzJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4vaGVscGVyLmNsYXNzJztcblxuLyoqXG4gKiBVc2VyIGNsYXNzXG4gKi9cbmV4cG9ydCBjbGFzcyBCYXNpY1VzZXIgZXh0ZW5kcyBTdGFuZGFyZCB7XG4gIGlkOiBzdHJpbmcgPSB1bmRlZmluZWQ7XG4gIGVtYWlsOiBzdHJpbmcgPSB1bmRlZmluZWQ7XG4gIGZpcnN0TmFtZTogc3RyaW5nID0gdW5kZWZpbmVkO1xuICBsYXN0TmFtZTogc3RyaW5nID0gdW5kZWZpbmVkO1xuICByb2xlczogc3RyaW5nW10gPSBbXTtcbiAgdXNlcm5hbWU6IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBNYXBwaW5nXG4gICAqL1xuICBwdWJsaWMgbWFwKGRhdGE6IFBhcnRpYWw8dGhpcz4gfCB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogdGhpcyB7XG4gICAgSGVscGVyLm1hcChkYXRhLCB0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgdXNlciBoYXMgYXQgbGVhc3Qgb25lIG9mIHRoZSByZXF1aXJlZCByb2xlc1xuICAgKi9cbiAgcHVibGljIGhhc1JvbGUocm9sZXM6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgaWYgKHR5cGVvZiByb2xlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJvbGVzID0gW3JvbGVzXTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnJvbGVzIHx8IHRoaXMucm9sZXMubGVuZ3RoIDwgMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIXJvbGVzIHx8IHJvbGVzLmxlbmd0aCA8IDEgPyB0cnVlIDogdGhpcy5yb2xlcy5zb21lKChyb2xlKSA9PiByb2xlcy5pbmNsdWRlcyhyb2xlKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIHVzZXIgaGFzIGFsbCByZXF1aXJlZCByb2xlc1xuICAgKi9cbiAgcHVibGljIGhhc0FsbFJvbGVzKHJvbGVzOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIGlmICh0eXBlb2Ygcm9sZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICByb2xlcyA9IFtyb2xlc107XG4gICAgfVxuICAgIGlmICghdGhpcy5yb2xlcyB8fCB0aGlzLnJvbGVzLmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICFyb2xlcyA/IHRydWUgOiByb2xlcy5ldmVyeSgocm9sZSkgPT4gdGhpcy5yb2xlcy5pbmNsdWRlcyhyb2xlKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GraphQL enum
|
|
3
|
-
*/
|
|
4
|
-
export class GraphQLEnum {
|
|
5
|
-
constructor(value) {
|
|
6
|
-
this.value = value;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1lbnVtLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvbGliL2Jhc2UvY2xhc3Nlcy9ncmFwaHFsLWVudW0uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUd0QixZQUFZLEtBQUs7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdyYXBoUUwgZW51bVxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTEVudW0ge1xuICB2YWx1ZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import { Helper } from './helper.class';
|
|
2
|
-
import { GraphQLType } from './graphql-type.class';
|
|
3
|
-
/**
|
|
4
|
-
* GraphQL meta
|
|
5
|
-
*/
|
|
6
|
-
export class GraphQLMeta {
|
|
7
|
-
/**
|
|
8
|
-
* Integrate schema
|
|
9
|
-
*/
|
|
10
|
-
constructor(schema) {
|
|
11
|
-
this.schema = schema;
|
|
12
|
-
// Frozen caches
|
|
13
|
-
this.args = {};
|
|
14
|
-
this.fields = {};
|
|
15
|
-
if (!schema) {
|
|
16
|
-
throw Error('Missing schema');
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Get arguments of GraphQL function
|
|
21
|
-
*/
|
|
22
|
-
getArgs(functionName, options = {}) {
|
|
23
|
-
const { cache, freeze, type } = {
|
|
24
|
-
cache: true,
|
|
25
|
-
freeze: true,
|
|
26
|
-
type: undefined,
|
|
27
|
-
...options,
|
|
28
|
-
};
|
|
29
|
-
// Get cache
|
|
30
|
-
if (cache && freeze) {
|
|
31
|
-
const args = this.args[functionName + type];
|
|
32
|
-
if (args) {
|
|
33
|
-
return args;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
const func = this.getFunction(functionName, { type });
|
|
37
|
-
const result = {};
|
|
38
|
-
if (func?.args) {
|
|
39
|
-
func.args.forEach((item) => {
|
|
40
|
-
result[item.name] = this.getDeepType(item.type);
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
// Set cache
|
|
44
|
-
if (freeze) {
|
|
45
|
-
this.args[functionName + type] = Helper.deepFreeze(result);
|
|
46
|
-
}
|
|
47
|
-
return result;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Get fields of GraphQL function
|
|
51
|
-
*/
|
|
52
|
-
getFields(functionName, options = {}) {
|
|
53
|
-
const { cache, freeze, type } = {
|
|
54
|
-
cache: true,
|
|
55
|
-
freeze: true,
|
|
56
|
-
type: undefined,
|
|
57
|
-
...options,
|
|
58
|
-
};
|
|
59
|
-
// Get cache
|
|
60
|
-
if (cache && freeze) {
|
|
61
|
-
const args = this.fields[functionName + type];
|
|
62
|
-
if (args) {
|
|
63
|
-
return args;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
const func = this.getFunction(functionName, options);
|
|
67
|
-
const result = this.getDeepType(func.type);
|
|
68
|
-
// Set cache
|
|
69
|
-
if (freeze) {
|
|
70
|
-
this.fields[functionName + type] = Helper.deepFreeze(result);
|
|
71
|
-
}
|
|
72
|
-
return result;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Get GraphQL function
|
|
76
|
-
*/
|
|
77
|
-
getFunction(name, options = {}) {
|
|
78
|
-
// Set config
|
|
79
|
-
const config = {
|
|
80
|
-
...options,
|
|
81
|
-
};
|
|
82
|
-
// Init possible functions
|
|
83
|
-
let functions = {};
|
|
84
|
-
// If function type is set
|
|
85
|
-
if (config.type) {
|
|
86
|
-
const graphQLType = config.type.charAt(0).toUpperCase() + config.type.slice(1);
|
|
87
|
-
const type = this.schema.getType(graphQLType);
|
|
88
|
-
if (type) {
|
|
89
|
-
functions = type.getFields();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
// If function type is not set
|
|
93
|
-
else {
|
|
94
|
-
['Subscription', 'Mutation', 'Query'].forEach((item) => {
|
|
95
|
-
const type = this.schema.getType(item);
|
|
96
|
-
if (type) {
|
|
97
|
-
functions = {
|
|
98
|
-
...functions,
|
|
99
|
-
...(type.getFields() || {}),
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
// Get function via name
|
|
105
|
-
return functions[name];
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Get type
|
|
109
|
-
*/
|
|
110
|
-
getType(name) {
|
|
111
|
-
return this.schema.getType(name);
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Get deep type data
|
|
115
|
-
*/
|
|
116
|
-
getDeepType(type, prepared = new WeakMap()) {
|
|
117
|
-
// Check type
|
|
118
|
-
if (!type) {
|
|
119
|
-
return type;
|
|
120
|
-
}
|
|
121
|
-
// Infinite regress protection
|
|
122
|
-
const preparedObject = {};
|
|
123
|
-
// Check prepared
|
|
124
|
-
if (typeof type === 'object') {
|
|
125
|
-
const preparedType = prepared.get(type);
|
|
126
|
-
if (preparedType) {
|
|
127
|
-
return preparedType;
|
|
128
|
-
}
|
|
129
|
-
// Set prepared
|
|
130
|
-
prepared.set(type, preparedObject);
|
|
131
|
-
}
|
|
132
|
-
// Search deeper
|
|
133
|
-
if (type.ofType) {
|
|
134
|
-
const ofTypeResult = this.getDeepType(type.ofType, prepared);
|
|
135
|
-
Object.assign(preparedObject, ofTypeResult);
|
|
136
|
-
return ofTypeResult;
|
|
137
|
-
}
|
|
138
|
-
// Process fields
|
|
139
|
-
if (type._fields) {
|
|
140
|
-
const result = {};
|
|
141
|
-
for (const [key, value] of Object.entries(type._fields)) {
|
|
142
|
-
result[key] = this.getDeepType(value, prepared);
|
|
143
|
-
}
|
|
144
|
-
Object.assign(preparedObject, result);
|
|
145
|
-
return result;
|
|
146
|
-
}
|
|
147
|
-
// Get type name
|
|
148
|
-
if (type.type) {
|
|
149
|
-
const typeResult = this.getDeepType(type.type, prepared);
|
|
150
|
-
Object.assign(preparedObject, typeResult);
|
|
151
|
-
return typeResult;
|
|
152
|
-
}
|
|
153
|
-
// Initialize GraphQLType
|
|
154
|
-
const graphqlType = GraphQLType.map({
|
|
155
|
-
type: type.name,
|
|
156
|
-
});
|
|
157
|
-
// Set enum values
|
|
158
|
-
if (!!type._values) {
|
|
159
|
-
graphqlType.isEnum = true;
|
|
160
|
-
for (const [key, value] of Object.entries(type._nameLookup)) {
|
|
161
|
-
if (!value.isDeprecated) {
|
|
162
|
-
graphqlType.validEnums.push(key);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
// Finish
|
|
167
|
-
prepared.set(type, graphqlType);
|
|
168
|
-
return graphqlType;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1tZXRhLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvbGliL2Jhc2UvY2xhc3Nlcy9ncmFwaHFsLW1ldGEuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUduRDs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBS3RCOztPQUVHO0lBQ0gsWUFBc0IsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQVAzQyxnQkFBZ0I7UUFDTixTQUFJLEdBQXdCLEVBQUUsQ0FBQztRQUMvQixXQUFNLEdBQXdCLEVBQUUsQ0FBQztRQU16QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FDTCxZQUFvQixFQUNwQixVQUE0RSxFQUFFO1FBRTlFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHO1lBQzlCLEtBQUssRUFBRSxJQUFJO1lBQ1gsTUFBTSxFQUFFLElBQUk7WUFDWixJQUFJLEVBQUUsU0FBUztZQUNmLEdBQUcsT0FBTztTQUNYLENBQUM7UUFFRixZQUFZO1FBQ1osSUFBSSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzVDLElBQUksSUFBSSxFQUFFO2dCQUNSLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxF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QUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ2pEO1lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdEMsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUVELGdCQUFnQjtRQUNoQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDekQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDMUMsT0FBTyxVQUFVLENBQUM7U0FDbkI7UUFFRCx5QkFBeUI7UUFDekIsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUNsQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbEIsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDMUIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUMzRCxJQUFJLENBQUUsS0FBYSxDQUFDLFlBQVksRUFBRTtvQkFDaEMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ2xDO2FBQ0Y7U0FDRjtRQUVELFNBQVM7UUFDVCxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNoQyxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMU2NoZW1hLCBHcmFwaFFMTmFtZWRUeXBlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBHcmFwaFFMUmVxdWVzdFR5cGUgfSBmcm9tICcuLi9lbnVtcy9ncmFwaHFsLXJlcXVlc3QtdHlwZS5lbnVtJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4vaGVscGVyLmNsYXNzJztcbmltcG9ydCB7IEdyYXBoUUxUeXBlIH0gZnJvbSAnLi9ncmFwaHFsLXR5cGUuY2xhc3MnO1xuaW1wb3J0IHsgSUdyYXBoUUxUeXBlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvZ3JhcGhxbC10eXBlLWNvbGxlY3Rpb24uaW50ZXJmYWNlJztcblxuLyoqXG4gKiBHcmFwaFFMIG1ldGFcbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoUUxNZXRhIHtcbiAgLy8gRnJvemVuIGNhY2hlc1xuICBwcm90ZWN0ZWQgYXJnczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBwcm90ZWN0ZWQgZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbiAgLyoqXG4gICAqIEludGVncmF0ZSBzY2hlbWFcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzY2hlbWE6IEdyYXBoUUxTY2hlbWEpIHtcbiAgICBpZiAoIXNjaGVtYSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ01pc3Npbmcgc2NoZW1hJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhcmd1bWVudHMgb2YgR3JhcGhRTCBmdW5jdGlvblxuICAgKi9cbiAgZ2V0QXJncyhcbiAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7IGNhY2hlPzogYm9vbGVhbjsgZnJlZXplPzogYm9vbGVhbjsgdHlwZT86IEdyYXBoUUxSZXF1ZXN0VHlwZSB9ID0ge31cbiAgKTogSUdyYXBoUUxUeXBlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBjYWNoZSwgZnJlZXplLCB0eXBlIH0gPSB7XG4gICAgICBjYWNoZTogdHJ1ZSxcbiAgICAgIGZyZWV6ZTogdHJ1ZSxcbiAgICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIC8vIEdldCBjYWNoZVxuICAgIGlmIChjYWNoZSAmJiBmcmVlemUpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmFyZ3NbZnVuY3Rpb25OYW1lICsgdHlwZV07XG4gICAgICBpZiAoYXJncykge1xuICAgICAgICByZXR1cm4gYXJncztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmdW5jID0gdGhpcy5nZXRGdW5jdGlvbihmdW5jdGlvbk5hbWUsIHsgdHlwZSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBpZiAoZnVuYz8uYXJncykge1xuICAgICAgZnVuYy5hcmdzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgcmVzdWx0W2l0ZW0ubmFtZV0gPSB0aGlzLmdldERlZXBUeXBlKGl0ZW0udHlwZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBTZXQgY2FjaGVcbiAgICBpZiAoZnJlZXplKSB7XG4gICAgICB0aGlzLmFyZ3NbZnVuY3Rpb25OYW1lICsgdHlwZV0gPSBIZWxwZXIuZGVlcEZyZWV6ZShyZXN1bHQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGZpZWxkcyBvZiBHcmFwaFFMIGZ1bmN0aW9uXG4gICAqL1xuICBnZXRGaWVsZHMoXG4gICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9uczogeyBjYWNoZT86IGJvb2xlYW47IGZyZWV6ZT86IGJvb2xlYW47IHR5cGU/OiBHcmFwaFFMUmVxdWVzdFR5cGUgfSA9IHt9XG4gICk6IElHcmFwaFFMVHlwZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHsgY2FjaGUsIGZyZWV6ZSwgdHlwZSB9ID0ge1xuICAgICAgY2FjaGU6IHRydWUsXG4gICAgICBmcmVlemU6IHRydWUsXG4gICAgICB0eXBlOiB1bmRlZmluZWQsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBHZXQgY2FjaGVcbiAgICBpZiAoY2FjaGUgJiYgZnJlZXplKSB7XG4gICAgICBjb25zdCBhcmdzID0gdGhpcy5maWVsZHNbZnVuY3Rpb25OYW1lICsgdHlwZV07XG4gICAgICBpZiAoYXJncykge1xuICAgICAgICByZXR1cm4gYXJncztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmdW5jID0gdGhpcy5nZXRGdW5jdGlvbihmdW5jdGlvbk5hbWUsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHJlc3VsdDogSUdyYXBoUUxUeXBlQ29sbGVjdGlvbiA9IHRoaXMuZ2V0RGVlcFR5cGUoZnVuYy50eXBlKSBhcyBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uO1xuXG4gICAgLy8gU2V0IGNhY2hlXG4gICAgaWYgKGZyZWV6ZSkge1xuICAgICAgdGhpcy5maWVsZHNbZnVuY3Rpb25OYW1lICsgdHlwZV0gPSBIZWxwZXIuZGVlcEZyZWV6ZShyZXN1bHQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IEdyYXBoUUwgZnVuY3Rpb25cbiAgICovXG4gIHByb3RlY3RlZCBnZXRGdW5jdGlvbihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IHsgdHlwZT86IEdyYXBoUUxSZXF1ZXN0VHlwZSB9ID0ge30pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAvLyBTZXQgY29uZmlnXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgLy8gSW5pdCBwb3NzaWJsZSBmdW5jdGlvbnNcbiAgICBsZXQgZnVuY3Rpb25zID0ge307XG5cbiAgICAvLyBJZiBmdW5jdGlvbiB0eXBlIGlzIHNldFxuICAgIGlmIChjb25maWcudHlwZSkge1xuICAgICAgY29uc3QgZ3JhcGhRTFR5cGUgPSBjb25maWcudHlwZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGNvbmZpZy50eXBlLnNsaWNlKDEpO1xuICAgICAgY29uc3QgdHlwZSA9IHRoaXMuc2NoZW1hLmdldFR5cGUoZ3JhcGhRTFR5cGUpO1xuICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgZnVuY3Rpb25zID0gKHR5cGUgYXMgYW55KS5nZXRGaWVsZHMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBmdW5jdGlvbiB0eXBlIGlzIG5vdCBzZXRcbiAgICBlbHNlIHtcbiAgICAgIFsnU3Vic2NyaXB0aW9uJywgJ011dGF0aW9uJywgJ1F1ZXJ5J10uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCB0eXBlOiBhbnkgPSB0aGlzLnNjaGVtYS5nZXRUeXBlKGl0ZW0pO1xuICAgICAgICBpZiAodHlwZSkge1xuICAgICAgICAgIGZ1bmN0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLmZ1bmN0aW9ucyxcbiAgICAgICAgICAgIC4uLih0eXBlLmdldEZpZWxkcygpIHx8IHt9KSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBHZXQgZnVuY3Rpb24gdmlhIG5hbWVcbiAgICByZXR1cm4gZnVuY3Rpb25zW25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0eXBlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VHlwZShuYW1lOiBzdHJpbmcpOiBHcmFwaFFMTmFtZWRUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2NoZW1hLmdldFR5cGUobmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRlZXAgdHlwZSBkYXRhXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0RGVlcFR5cGUodHlwZTogYW55LCBwcmVwYXJlZDogV2Vha01hcDxhbnksIGFueT4gPSBuZXcgV2Vha01hcCgpKTogSUdyYXBoUUxUeXBlQ29sbGVjdGlvbiB8IEdyYXBoUUxUeXBlIHtcbiAgICAvLyBDaGVjayB0eXBlXG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG5cbiAgICAvLyBJbmZpbml0ZSByZWdyZXNzIHByb3RlY3Rpb25cbiAgICBjb25zdCBwcmVwYXJlZE9iamVjdCA9IHt9O1xuXG4gICAgLy8gQ2hlY2sgcHJlcGFyZWRcbiAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBwcmVwYXJlZFR5cGUgPSBwcmVwYXJlZC5nZXQodHlwZSk7XG4gICAgICBpZiAocHJlcGFyZWRUeXBlKSB7XG4gICAgICAgIHJldHVybiBwcmVwYXJlZFR5cGU7XG4gICAgICB9XG5cbiAgICAgIC8vIFNldCBwcmVwYXJlZFxuICAgICAgcHJlcGFyZWQuc2V0KHR5cGUsIHByZXBhcmVkT2JqZWN0KTtcbiAgICB9XG5cbiAgICAvLyBTZWFyY2ggZGVlcGVyXG4gICAgaWYgKHR5cGUub2ZUeXBlKSB7XG4gICAgICBjb25zdCBvZlR5cGVSZXN1bHQgPSB0aGlzLmdldERlZXBUeXBlKHR5cGUub2ZUeXBlLCBwcmVwYXJlZCk7XG4gICAgICBPYmplY3QuYXNzaWduKHByZXBhcmVkT2JqZWN0LCBvZlR5cGVSZXN1bHQpO1xuICAgICAgcmV0dXJuIG9mVHlwZVJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGZpZWxkc1xuICAgIGlmICh0eXBlLl9maWVsZHMpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModHlwZS5fZmllbGRzKSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IHRoaXMuZ2V0RGVlcFR5cGUodmFsdWUsIHByZXBhcmVkKTtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5hc3NpZ24ocHJlcGFyZWRPYmplY3QsIHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEdldCB0eXBlIG5hbWVcbiAgICBpZiAodHlwZS50eXBlKSB7XG4gICAgICBjb25zdCB0eXBlUmVzdWx0ID0gdGhpcy5nZXREZWVwVHlwZSh0eXBlLnR5cGUsIHByZXBhcmVkKTtcbiAgICAgIE9iamVjdC5hc3NpZ24ocHJlcGFyZWRPYmplY3QsIHR5cGVSZXN1bHQpO1xuICAgICAgcmV0dXJuIHR5cGVSZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBHcmFwaFFMVHlwZVxuICAgIGNvbnN0IGdyYXBocWxUeXBlID0gR3JhcGhRTFR5cGUubWFwKHtcbiAgICAgIHR5cGU6IHR5cGUubmFtZSxcbiAgICB9KTtcblxuICAgIC8vIFNldCBlbnVtIHZhbHVlc1xuICAgIGlmICghIXR5cGUuX3ZhbHVlcykge1xuICAgICAgZ3JhcGhxbFR5cGUuaXNFbnVtID0gdHJ1ZTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHR5cGUuX25hbWVMb29rdXApKSB7XG4gICAgICAgIGlmICghKHZhbHVlIGFzIGFueSkuaXNEZXByZWNhdGVkKSB7XG4gICAgICAgICAgZ3JhcGhxbFR5cGUudmFsaWRFbnVtcy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaW5pc2hcbiAgICBwcmVwYXJlZC5zZXQodHlwZSwgZ3JhcGhxbFR5cGUpO1xuICAgIHJldHVybiBncmFwaHFsVHlwZTtcbiAgfVxufVxuIl19
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Standard } from './standard.class';
|
|
2
|
-
/**
|
|
3
|
-
* GraphQL type
|
|
4
|
-
*/
|
|
5
|
-
export class GraphQLType extends Standard {
|
|
6
|
-
constructor() {
|
|
7
|
-
super(...arguments);
|
|
8
|
-
this.type = '';
|
|
9
|
-
this.isEnum = false;
|
|
10
|
-
this.validEnums = [];
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC10eXBlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvbGliL2Jhc2UvY2xhc3Nlcy9ncmFwaHFsLXR5cGUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVksU0FBUSxRQUFRO0lBQXpDOztRQUNFLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZUFBVSxHQUFhLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFuZGFyZCB9IGZyb20gJy4vc3RhbmRhcmQuY2xhc3MnO1xuXG4vKipcbiAqIEdyYXBoUUwgdHlwZVxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTFR5cGUgZXh0ZW5kcyBTdGFuZGFyZCB7XG4gIHR5cGUgPSAnJztcbiAgaXNFbnVtID0gZmFsc2U7XG4gIHZhbGlkRW51bXM6IHN0cmluZ1tdID0gW107XG59XG4iXX0=
|
|
@@ -1,295 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Helper class
|
|
3
|
-
*/
|
|
4
|
-
export class Helper {
|
|
5
|
-
/**
|
|
6
|
-
* Simple filter function for plain objects
|
|
7
|
-
*/
|
|
8
|
-
static filter(objects, filter) {
|
|
9
|
-
return (objects?.filter((element) => {
|
|
10
|
-
for (const [key, value] of Object.entries(filter)) {
|
|
11
|
-
if (Array.isArray(element[key])) {
|
|
12
|
-
for (const item of element[key]) {
|
|
13
|
-
if (!element[key].includs(value)) {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
else if (element[key] !== value) {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return true;
|
|
23
|
-
}) || []);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Convert to a url/uri conform string
|
|
27
|
-
* Only:
|
|
28
|
-
* - lower case
|
|
29
|
-
* - chars, numbers and hyphens
|
|
30
|
-
*/
|
|
31
|
-
static urlString(str, options = {}) {
|
|
32
|
-
// Config
|
|
33
|
-
const config = {
|
|
34
|
-
allowAll: false,
|
|
35
|
-
...options,
|
|
36
|
-
};
|
|
37
|
-
// To string
|
|
38
|
-
str = str + '';
|
|
39
|
-
// Trim
|
|
40
|
-
str = str.trim();
|
|
41
|
-
// Lower case
|
|
42
|
-
str = str.toLowerCase();
|
|
43
|
-
if (!config.allowAll) {
|
|
44
|
-
// Replace spaces
|
|
45
|
-
str = str.trim().replace(/\s+/g, '-');
|
|
46
|
-
// Replace some special chars
|
|
47
|
-
str = str.replace('ä', 'ae');
|
|
48
|
-
str = str.replace('ö', 'oe');
|
|
49
|
-
str = str.replace('ü', 'ue');
|
|
50
|
-
str = str.replace('ß', 'ss');
|
|
51
|
-
// Remove other special chars
|
|
52
|
-
str = str.replace(/[^a-zA-Z0-9-]/g, '');
|
|
53
|
-
}
|
|
54
|
-
// Return url conform string
|
|
55
|
-
return encodeURI(str);
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Simple map function
|
|
59
|
-
*/
|
|
60
|
-
static map(source, target, options = {}) {
|
|
61
|
-
// Set config
|
|
62
|
-
const config = {
|
|
63
|
-
funcAllowed: false,
|
|
64
|
-
dateStringToDate: true,
|
|
65
|
-
...options,
|
|
66
|
-
};
|
|
67
|
-
// Check source
|
|
68
|
-
if (!source || typeof source !== 'object' || Array.isArray(source)) {
|
|
69
|
-
return target;
|
|
70
|
-
}
|
|
71
|
-
// Update properties
|
|
72
|
-
for (const key of Object.keys(target)) {
|
|
73
|
-
if (source[key] !== undefined && (config.funcAllowed || typeof (source[key] !== 'function'))) {
|
|
74
|
-
if (typeof source[key] === 'string' && config.dateStringToDate) {
|
|
75
|
-
if (Array.isArray(config.dateStringToDate)) {
|
|
76
|
-
if (config.dateStringToDate.includes(key)) {
|
|
77
|
-
target[key] = Helper.parseDate(source[key]);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
target[key] = Helper.parseDate(source[key]);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
target[key] = source[key];
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
// Return target
|
|
90
|
-
return target;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Create Object or Objects of specified type with specified data
|
|
94
|
-
*/
|
|
95
|
-
static maps(data, targetClass) {
|
|
96
|
-
// Check data
|
|
97
|
-
if (!data || typeof data !== 'object') {
|
|
98
|
-
return undefined;
|
|
99
|
-
}
|
|
100
|
-
// Check array
|
|
101
|
-
if (!Array.isArray(data)) {
|
|
102
|
-
data = [data];
|
|
103
|
-
}
|
|
104
|
-
// Map
|
|
105
|
-
return data.map((item) => {
|
|
106
|
-
return targetClass.map(item);
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Get plain parameter
|
|
111
|
-
*/
|
|
112
|
-
static getPlainParameter(parameter) {
|
|
113
|
-
if (!parameter) {
|
|
114
|
-
return parameter;
|
|
115
|
-
}
|
|
116
|
-
return parameter?.split('?')?.shift()?.split('#')?.shift();
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Get ID of an url parameter
|
|
120
|
-
*/
|
|
121
|
-
static getParameterId(parameter) {
|
|
122
|
-
if (!parameter) {
|
|
123
|
-
return parameter;
|
|
124
|
-
}
|
|
125
|
-
return Helper.getPlainParameter(parameter)?.split('-').pop();
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Delay
|
|
129
|
-
*/
|
|
130
|
-
static delay(ms) {
|
|
131
|
-
const promise = new Promise((resolve) => setTimeout(resolve, ms));
|
|
132
|
-
return promise;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Deep freeze
|
|
136
|
-
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze#What_is_shallow_freeze
|
|
137
|
-
*/
|
|
138
|
-
static deepFreeze(object, preparedObjects = []) {
|
|
139
|
-
// Prevent infinit regress
|
|
140
|
-
if (preparedObjects.includes(object)) {
|
|
141
|
-
return object;
|
|
142
|
-
}
|
|
143
|
-
preparedObjects.push(object);
|
|
144
|
-
// Retrieve the property names defined on object
|
|
145
|
-
const propNames = Object.getOwnPropertyNames(object);
|
|
146
|
-
// Freeze properties before freezing self
|
|
147
|
-
for (const name of propNames) {
|
|
148
|
-
const value = object[name];
|
|
149
|
-
if (value && typeof value === 'object') {
|
|
150
|
-
Helper.deepFreeze(value, preparedObjects);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return Object.freeze(object);
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Generates an unique identifier with 24 characters
|
|
157
|
-
*/
|
|
158
|
-
static getUID() {
|
|
159
|
-
let dt = new Date().getTime();
|
|
160
|
-
const uuid = 'xxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
|
|
161
|
-
// eslint-disable-next-line no-bitwise
|
|
162
|
-
const r = (dt + Math.random() * 16) % 16 | 0;
|
|
163
|
-
dt = Math.floor(dt / 16);
|
|
164
|
-
// eslint-disable-next-line no-bitwise
|
|
165
|
-
return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);
|
|
166
|
-
});
|
|
167
|
-
return uuid;
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Parse date string to date object
|
|
171
|
-
*/
|
|
172
|
-
static parseDate(dateString) {
|
|
173
|
-
const reISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/;
|
|
174
|
-
const reMsAjax = /^\/Date\((d|-|.*)\)[\/|\\]$/;
|
|
175
|
-
if (typeof dateString === 'string') {
|
|
176
|
-
const isoExec = reISO.exec(dateString);
|
|
177
|
-
if (isoExec) {
|
|
178
|
-
return new Date(dateString);
|
|
179
|
-
}
|
|
180
|
-
const msAjaxExec = reMsAjax.exec(dateString);
|
|
181
|
-
if (msAjaxExec) {
|
|
182
|
-
const cleaned = msAjaxExec[1].split(/[-+,.]/);
|
|
183
|
-
return new Date(cleaned[0] ? +cleaned[0] : 0 - +cleaned[1]);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
return dateString;
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Get browser name and version
|
|
190
|
-
*/
|
|
191
|
-
static getBrowser() {
|
|
192
|
-
const userAgent = navigator.userAgent;
|
|
193
|
-
let data = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
|
|
194
|
-
let version;
|
|
195
|
-
if (/trident/i.test(data[1])) {
|
|
196
|
-
version = /\brv[ :]+(\d+)/g.exec(userAgent) || [];
|
|
197
|
-
return { name: 'IE', version: version[1] || '' };
|
|
198
|
-
}
|
|
199
|
-
if (data[1] === 'Chrome') {
|
|
200
|
-
version = userAgent.match(/\bOPR|Edge\/(\d+)/);
|
|
201
|
-
if (version != null) {
|
|
202
|
-
return { name: 'Opera', version: version[1] };
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
data = data[2] ? [data[1], data[2]] : [navigator.appName, navigator.appVersion, '-?'];
|
|
206
|
-
version = userAgent.match(/version\/(\d+)/i);
|
|
207
|
-
if (version !== null) {
|
|
208
|
-
data.splice(1, 1, version[1]);
|
|
209
|
-
}
|
|
210
|
-
return {
|
|
211
|
-
name: data[0],
|
|
212
|
-
version: data[1],
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Whether first parameter is a deep subset of second parameter
|
|
217
|
-
* Hint: functions will be ignored
|
|
218
|
-
*/
|
|
219
|
-
static isSubset(a, b) {
|
|
220
|
-
// Equal
|
|
221
|
-
if (a === b) {
|
|
222
|
-
return true;
|
|
223
|
-
}
|
|
224
|
-
// Different type
|
|
225
|
-
if (typeof a !== typeof b) {
|
|
226
|
-
return false;
|
|
227
|
-
}
|
|
228
|
-
// Process array
|
|
229
|
-
if (Array.isArray(a)) {
|
|
230
|
-
for (const [key, value] of Object.entries(a)) {
|
|
231
|
-
if (Helper.isSubset(value, b[key])) {
|
|
232
|
-
return false;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
return true;
|
|
236
|
-
}
|
|
237
|
-
// Process object
|
|
238
|
-
if (typeof a === 'object') {
|
|
239
|
-
const plain = JSON.parse(JSON.stringify(a));
|
|
240
|
-
for (const [key, value] of Object.entries(plain)) {
|
|
241
|
-
if (Helper.isSubset(value, b[key])) {
|
|
242
|
-
return false;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
return true;
|
|
246
|
-
}
|
|
247
|
-
// Else
|
|
248
|
-
return true;
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Whether parameters are equal (have equal properties)
|
|
252
|
-
* Hint: functions will be ignored
|
|
253
|
-
*/
|
|
254
|
-
static isEqual(a, b) {
|
|
255
|
-
return Helper.isSubset(a, b) && Helper.isSubset(b, a);
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* First level difference of two objects
|
|
259
|
-
* Hint: functions will be ignored and when an array or an object is different the hole array or object will used as property value
|
|
260
|
-
*
|
|
261
|
-
* @returns Record<string, any> Object with properties from first object
|
|
262
|
-
*/
|
|
263
|
-
static getDiff(a, b, clone = true) {
|
|
264
|
-
const result = {};
|
|
265
|
-
let firstObject = a;
|
|
266
|
-
if (clone) {
|
|
267
|
-
firstObject = JSON.parse(JSON.stringify(a));
|
|
268
|
-
}
|
|
269
|
-
for (const [key, value] of Object.entries(firstObject)) {
|
|
270
|
-
if (!Helper.isSubset(value, b[key])) {
|
|
271
|
-
result[key] = value;
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
return result;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Check if propertie is type of HTMLCollection or NodeList
|
|
278
|
-
* See https://stackoverflow.com/a/7238344
|
|
279
|
-
*
|
|
280
|
-
* @param nodes
|
|
281
|
-
*/
|
|
282
|
-
static isNodeList(nodes) {
|
|
283
|
-
try {
|
|
284
|
-
const stringRepr = Object.prototype.toString.call(nodes);
|
|
285
|
-
return (typeof nodes === 'object' &&
|
|
286
|
-
/^\[object (HTMLCollection|NodeList|Object)\]$/.test(stringRepr) &&
|
|
287
|
-
typeof nodes.length === 'number' &&
|
|
288
|
-
(nodes.length === 0 || (typeof nodes[0] === 'object' && nodes[0].nodeType > 0)));
|
|
289
|
-
}
|
|
290
|
-
catch (e) {
|
|
291
|
-
return false;
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvbGliL2Jhc2UvY2xhc3Nlcy9oZWxwZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sTUFBTTtJQUNqQjs7T0FFRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQTZCLE9BQVksRUFBRSxNQUE4QjtRQUNwRixPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNqRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQy9CLEtBQUssTUFBTSxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO3dCQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDaEMsT0FBTyxLQUFLLENBQUM7eUJBQ2Q7cUJBQ0Y7aUJBQ0Y7cUJBQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxFQUFFO29CQUNqQyxPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsSUFBSSxFQUFFLENBQVUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQVEsRUFBRSxVQUFrQyxFQUFFO1FBQzdELFNBQVM7UUFDVCxNQUFNLE1BQU0sR0FBRztZQUNiLFFBQVEsRUFBRSxLQUFLO1lBQ2YsR0FBRyxPQUFPO1NBQ1gsQ0FBQztRQUVGLFlBQVk7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LEVBQUU7WUFDVixPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhbmRhcmQgfSBmcm9tICcuL3N0YW5kYXJkLmNsYXNzJztcblxuLyoqXG4gKiBIZWxwZXIgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIEhlbHBlciB7XG4gIC8qKlxuICAgKiBTaW1wbGUgZmlsdGVyIGZ1bmN0aW9uIGZvciBwbGFpbiBvYmplY3RzXG4gICAqL1xuICBzdGF0aWMgZmlsdGVyPFQgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihvYmplY3RzOiBUW10sIGZpbHRlcjogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IFRbXSB7XG4gICAgcmV0dXJuIChvYmplY3RzPy5maWx0ZXIoKGVsZW1lbnQpID0+IHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZpbHRlcikpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZWxlbWVudFtrZXldKSkge1xuICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBlbGVtZW50W2tleV0pIHtcbiAgICAgICAgICAgIGlmICghZWxlbWVudFtrZXldLmluY2x1ZHModmFsdWUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudFtrZXldICE9PSB2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSkgfHwgW10pIGFzIGFueVtdO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdG8gYSB1cmwvdXJpIGNvbmZvcm0gc3RyaW5nXG4gICAqIE9ubHk6XG4gICAqIC0gbG93ZXIgY2FzZVxuICAgKiAtIGNoYXJzLCBudW1iZXJzIGFuZCBoeXBoZW5zXG4gICAqL1xuICBzdGF0aWMgdXJsU3RyaW5nKHN0cjogYW55LCBvcHRpb25zOiB7IGFsbG93QWxsPzogYm9vbGVhbiB9ID0ge30pOiBzdHJpbmcge1xuICAgIC8vIENvbmZpZ1xuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIGFsbG93QWxsOiBmYWxzZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIC8vIFRvIHN0cmluZ1xuICAgIHN0ciA9IHN0ciArICcnO1xuXG4gICAgLy8gVHJpbVxuICAgIHN0ciA9IHN0ci50cmltKCk7XG5cbiAgICAvLyBMb3dlciBjYXNlXG4gICAgc3RyID0gc3RyLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAoIWNvbmZpZy5hbGxvd0FsbCkge1xuICAgICAgLy8gUmVwbGFjZSBzcGFjZXNcbiAgICAgIHN0ciA9IHN0ci50cmltKCkucmVwbGFjZSgvXFxzKy9nLCAnLScpO1xuXG4gICAgICAvLyBSZXBsYWNlIHNvbWUgc3BlY2lhbCBjaGFyc1xuICAgICAgc3RyID0gc3RyLnJlcGxhY2UoJ8OkJywgJ2FlJyk7XG4gICAgICBzdHIgPSBzdHIucmVwbGFjZSgnw7YnLCAnb2UnKTtcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKCfDvCcsICd1ZScpO1xuICAgICAgc3RyID0gc3RyLnJlcGxhY2UoJ8OfJywgJ3NzJyk7XG5cbiAgICAgIC8vIFJlbW92ZSBvdGhlciBzcGVjaWFsIGNoYXJzXG4gICAgICBzdHIgPSBzdHIucmVwbGFjZSgvW15hLXpBLVowLTktXS9nLCAnJyk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHVybCBjb25mb3JtIHN0cmluZ1xuICAgIHJldHVybiBlbmNvZGVVUkkoc3RyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaW1wbGUgbWFwIGZ1bmN0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hcDxUID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgc291cmNlOiBQYXJ0aWFsPFQ+IHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgICB0YXJnZXQ6IFQsXG4gICAgb3B0aW9uczogeyBmdW5jQWxsb3dlZD86IGJvb2xlYW47IGRhdGVTdHJpbmdUb0RhdGU/OiBib29sZWFuIHwgc3RyaW5nW10gfSA9IHt9XG4gICk6IFQge1xuICAgIC8vIFNldCBjb25maWdcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBmdW5jQWxsb3dlZDogZmFsc2UsXG4gICAgICBkYXRlU3RyaW5nVG9EYXRlOiB0cnVlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgLy8gQ2hlY2sgc291cmNlXG4gICAgaWYgKCFzb3VyY2UgfHwgdHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBwcm9wZXJ0aWVzXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGFyZ2V0KSkge1xuICAgICAgaWYgKHNvdXJjZVtrZXldICE9PSB1bmRlZmluZWQgJiYgKGNvbmZpZy5mdW5jQWxsb3dlZCB8fCB0eXBlb2YgKHNvdXJjZVtrZXldICE9PSAnZnVuY3Rpb24nKSkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzb3VyY2Vba2V5XSA9PT0gJ3N0cmluZycgJiYgY29uZmlnLmRhdGVTdHJpbmdUb0RhdGUpIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25maWcuZGF0ZVN0cmluZ1RvRGF0ZSkpIHtcbiAgICAgICAgICAgIGlmIChjb25maWcuZGF0ZVN0cmluZ1RvRGF0ZS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgIHRhcmdldFtrZXldID0gSGVscGVyLnBhcnNlRGF0ZShzb3VyY2Vba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldFtrZXldID0gSGVscGVyLnBhcnNlRGF0ZShzb3VyY2Vba2V5XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdGFyZ2V0XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgT2JqZWN0IG9yIE9iamVjdHMgb2Ygc3BlY2lmaWVkIHR5cGUgd2l0aCBzcGVjaWZpZWQgZGF0YVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYXBzPFQgZXh0ZW5kcyBTdGFuZGFyZD4oXG4gICAgZGF0YTogUGFydGlhbDxUPiB8IFBhcnRpYWw8VD5bXSB8IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCB7IFtrZXk6IHN0cmluZ106IGFueSB9W10sXG4gICAgdGFyZ2V0Q2xhc3M6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFRcbiAgKTogVFtdIHtcbiAgICAvLyBDaGVjayBkYXRhXG4gICAgaWYgKCFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBhcnJheVxuICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgZGF0YSA9IFtkYXRhXTtcbiAgICB9XG5cbiAgICAvLyBNYXBcbiAgICByZXR1cm4gKGRhdGEgYXMgYW55KS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgcmV0dXJuICh0YXJnZXRDbGFzcyBhcyBhbnkpLm1hcChpdGVtKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcGxhaW4gcGFyYW1ldGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldFBsYWluUGFyYW1ldGVyKHBhcmFtZXRlcjogc3RyaW5nKSB7XG4gICAgaWYgKCFwYXJhbWV0ZXIpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gICAgfVxuICAgIHJldHVybiBwYXJhbWV0ZXI/LnNwbGl0KCc/Jyk/LnNoaWZ0KCk/LnNwbGl0KCcjJyk/LnNoaWZ0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IElEIG9mIGFuIHVybCBwYXJhbWV0ZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0UGFyYW1ldGVySWQocGFyYW1ldGVyOiBzdHJpbmcpIHtcbiAgICBpZiAoIXBhcmFtZXRlcikge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgICB9XG4gICAgcmV0dXJuIEhlbHBlci5nZXRQbGFpblBhcmFtZXRlcihwYXJhbWV0ZXIpPy5zcGxpdCgnLScpLnBvcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGF5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlbGF5KG1zOiBudW1iZXIpIHtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWVwIGZyZWV6ZVxuICAgKiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2ZyZWV6ZSNXaGF0X2lzX3NoYWxsb3dfZnJlZXplXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZXBGcmVlemUob2JqZWN0OiBhbnksIHByZXBhcmVkT2JqZWN0cyA9IFtdKSB7XG4gICAgLy8gUHJldmVudCBpbmZpbml0IHJlZ3Jlc3NcbiAgICBpZiAocHJlcGFyZWRPYmplY3RzLmluY2x1ZGVzKG9iamVjdCBhcyBuZXZlcikpIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuICAgIHByZXBhcmVkT2JqZWN0cy5wdXNoKG9iamVjdCBhcyBuZXZlcik7XG5cbiAgICAvLyBSZXRyaWV2ZSB0aGUgcHJvcGVydHkgbmFtZXMgZGVmaW5lZCBvbiBvYmplY3RcbiAgICBjb25zdCBwcm9wTmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpO1xuXG4gICAgLy8gRnJlZXplIHByb3BlcnRpZXMgYmVmb3JlIGZyZWV6aW5nIHNlbGZcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgcHJvcE5hbWVzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9iamVjdFtuYW1lXTtcblxuICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgSGVscGVyLmRlZXBGcmVlemUodmFsdWUsIHByZXBhcmVkT2JqZWN0cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUob2JqZWN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYW4gdW5pcXVlIGlkZW50aWZpZXIgd2l0aCAyNCBjaGFyYWN0ZXJzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldFVJRCgpOiBzdHJpbmcge1xuICAgIGxldCBkdCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IHV1aWQgPSAneHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIChjKSA9PiB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZVxuICAgICAgY29uc3QgciA9IChkdCArIE1hdGgucmFuZG9tKCkgKiAxNikgJSAxNiB8IDA7XG4gICAgICBkdCA9IE1hdGguZmxvb3IoZHQgLyAxNik7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZVxuICAgICAgcmV0dXJuIChjID09PSAneCcgPyByIDogKHIgJiAweDMpIHwgMHg4KS50b1N0cmluZygxNik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHV1aWQ7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgZGF0ZSBzdHJpbmcgdG8gZGF0ZSBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VEYXRlKGRhdGVTdHJpbmc6IHN0cmluZykge1xuICAgIGNvbnN0IHJlSVNPID0gL14oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KVQoXFxkezJ9KTooXFxkezJ9KTooXFxkezJ9KD86XFwuXFxkKikpKD86WnwoXFwrfC0pKFtcXGR8Ol0qKSk/JC87XG4gICAgY29uc3QgcmVNc0FqYXggPSAvXlxcL0RhdGVcXCgoZHwtfC4qKVxcKVtcXC98XFxcXF0kLztcbiAgICBpZiAodHlwZW9mIGRhdGVTdHJpbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBpc29FeGVjID0gcmVJU08uZXhlYyhkYXRlU3RyaW5nKTtcbiAgICAgIGlmIChpc29FeGVjKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1zQWpheEV4ZWMgPSByZU1zQWpheC5leGVjKGRhdGVTdHJpbmcpO1xuICAgICAgaWYgKG1zQWpheEV4ZWMpIHtcbiAgICAgICAgY29uc3QgY2xlYW5lZCA9IG1zQWpheEV4ZWNbMV0uc3BsaXQoL1stKywuXS8pO1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoY2xlYW5lZFswXSA/ICtjbGVhbmVkWzBdIDogMCAtICtjbGVhbmVkWzFdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGVTdHJpbmc7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGJyb3dzZXIgbmFtZSBhbmQgdmVyc2lvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRCcm93c2VyKCkge1xuICAgIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgbGV0IGRhdGEgPSB1c2VyQWdlbnQubWF0Y2goLyhvcGVyYXxjaHJvbWV8c2FmYXJpfGZpcmVmb3h8bXNpZXx0cmlkZW50KD89XFwvKSlcXC8/XFxzKihcXGQrKS9pKSB8fCBbXTtcbiAgICBsZXQgdmVyc2lvbjtcbiAgICBpZiAoL3RyaWRlbnQvaS50ZXN0KGRhdGFbMV0pKSB7XG4gICAgICB2ZXJzaW9uID0gL1xcYnJ2WyA6XSsoXFxkKykvZy5leGVjKHVzZXJBZ2VudCkgfHwgW107XG4gICAgICByZXR1cm4geyBuYW1lOiAnSUUnLCB2ZXJzaW9uOiB2ZXJzaW9uWzFdIHx8ICcnIH07XG4gICAgfVxuICAgIGlmIChkYXRhWzFdID09PSAnQ2hyb21lJykge1xuICAgICAgdmVyc2lvbiA9IHVzZXJBZ2VudC5tYXRjaCgvXFxiT1BSfEVkZ2VcXC8oXFxkKykvKTtcbiAgICAgIGlmICh2ZXJzaW9uICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHsgbmFtZTogJ09wZXJhJywgdmVyc2lvbjogdmVyc2lvblsxXSB9O1xuICAgICAgfVxuICAgIH1cbiAgICBkYXRhID0gZGF0YVsyXSA/IFtkYXRhWzFdLCBkYXRhWzJdXSA6IFtuYXZpZ2F0b3IuYXBwTmFtZSwgbmF2aWdhdG9yLmFwcFZlcnNpb24sICctPyddO1xuICAgIHZlcnNpb24gPSB1c2VyQWdlbnQubWF0Y2goL3ZlcnNpb25cXC8oXFxkKykvaSk7XG4gICAgaWYgKHZlcnNpb24gIT09IG51bGwpIHtcbiAgICAgIGRhdGEuc3BsaWNlKDEsIDEsIHZlcnNpb25bMV0pO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogZGF0YVswXSxcbiAgICAgIHZlcnNpb246IGRhdGFbMV0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGZpcnN0IHBhcmFtZXRlciBpcyBhIGRlZXAgc3Vic2V0IG9mIHNlY29uZCBwYXJhbWV0ZXJcbiAgICogSGludDogZnVuY3Rpb25zIHdpbGwgYmUgaWdub3JlZFxuICAgKi9cbiAgc3RhdGljIGlzU3Vic2V0KGE6IGFueSwgYjogYW55KSB7XG4gICAgLy8gRXF1YWxcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gRGlmZmVyZW50IHR5cGVcbiAgICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyBhcnJheVxuICAgIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhKSkge1xuICAgICAgICBpZiAoSGVscGVyLmlzU3Vic2V0KHZhbHVlLCBiW2tleV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIG9iamVjdFxuICAgIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IHBsYWluID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhKSk7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwbGFpbikpIHtcbiAgICAgICAgaWYgKEhlbHBlci5pc1N1YnNldCh2YWx1ZSwgYltrZXldKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gRWxzZVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgcGFyYW1ldGVycyBhcmUgZXF1YWwgKGhhdmUgZXF1YWwgcHJvcGVydGllcylcbiAgICogSGludDogZnVuY3Rpb25zIHdpbGwgYmUgaWdub3JlZFxuICAgKi9cbiAgc3RhdGljIGlzRXF1YWwoYTogYW55LCBiOiBhbnkpIHtcbiAgICByZXR1cm4gSGVscGVyLmlzU3Vic2V0KGEsIGIpICYmIEhlbHBlci5pc1N1YnNldChiLCBhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJzdCBsZXZlbCBkaWZmZXJlbmNlIG9mIHR3byBvYmplY3RzXG4gICAqIEhpbnQ6IGZ1bmN0aW9ucyB3aWxsIGJlIGlnbm9yZWQgYW5kIHdoZW4gYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGlzIGRpZmZlcmVudCB0aGUgaG9sZSBhcnJheSBvciBvYmplY3Qgd2lsbCB1c2VkIGFzIHByb3BlcnR5IHZhbHVlXG4gICAqXG4gICAqIEByZXR1cm5zIFJlY29yZDxzdHJpbmcsIGFueT4gT2JqZWN0IHdpdGggcHJvcGVydGllcyBmcm9tIGZpcnN0IG9iamVjdFxuICAgKi9cbiAgc3RhdGljIGdldERpZmYoYTogUmVjb3JkPHN0cmluZywgYW55PiwgYjogUmVjb3JkPHN0cmluZywgYW55PiwgY2xvbmU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgbGV0IGZpcnN0T2JqZWN0ID0gYTtcbiAgICBpZiAoY2xvbmUpIHtcbiAgICAgIGZpcnN0T2JqZWN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZpcnN0T2JqZWN0KSkge1xuICAgICAgaWYgKCFIZWxwZXIuaXNTdWJzZXQodmFsdWUsIGJba2V5XSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBwcm9wZXJ0aWUgaXMgdHlwZSBvZiBIVE1MQ29sbGVjdGlvbiBvciBOb2RlTGlzdFxuICAgKiBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzcyMzgzNDRcbiAgICpcbiAgICogQHBhcmFtIG5vZGVzXG4gICAqL1xuICBzdGF0aWMgaXNOb2RlTGlzdChub2Rlcykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdHJpbmdSZXByID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5vZGVzKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHR5cGVvZiBub2RlcyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgL15cXFtvYmplY3QgKEhUTUxDb2xsZWN0aW9ufE5vZGVMaXN0fE9iamVjdClcXF0kLy50ZXN0KHN0cmluZ1JlcHIpICYmXG4gICAgICAgIHR5cGVvZiBub2Rlcy5sZW5ndGggPT09ICdudW1iZXInICYmXG4gICAgICAgIChub2Rlcy5sZW5ndGggPT09IDAgfHwgKHR5cGVvZiBub2Rlc1swXSA9PT0gJ29iamVjdCcgJiYgbm9kZXNbMF0ubm9kZVR5cGUgPiAwKSlcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Helper } from './helper.class';
|
|
2
|
-
/**
|
|
3
|
-
* Standard class
|
|
4
|
-
* Other classes should extend the Standard class, if they offer own functions
|
|
5
|
-
* If the extended class uses object properties with own map functions, it should implement its own map function
|
|
6
|
-
*/
|
|
7
|
-
export class Standard {
|
|
8
|
-
/**
|
|
9
|
-
* Static map method
|
|
10
|
-
*/
|
|
11
|
-
static map(data, item = new this()) {
|
|
12
|
-
return item.map(data);
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Map data into an object
|
|
16
|
-
*/
|
|
17
|
-
map(data) {
|
|
18
|
-
return Helper.map(data, this);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Clone object (and map additional data)
|
|
22
|
-
*/
|
|
23
|
-
clone(mapData) {
|
|
24
|
-
const current = JSON.parse(JSON.stringify(this));
|
|
25
|
-
if (mapData) {
|
|
26
|
-
Object.assign(current, mapData);
|
|
27
|
-
}
|
|
28
|
-
return new this.constructor().map(current);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Compare this with another object
|
|
32
|
-
* Hint: functions will be ignored and when an array or an object is different the hole array or object will used as property value
|
|
33
|
-
*
|
|
34
|
-
* @return Record<string, any> with properties of this object which are different
|
|
35
|
-
*/
|
|
36
|
-
getDiff(compare, clone = true) {
|
|
37
|
-
return Helper.getDiff(this, compare, clone);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9saWIvYmFzZS9jbGFzc2VzL3N0YW5kYXJkLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4Qzs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFDbkI7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUVmLElBQXlDLEVBQ3pDLE9BQVUsSUFBSSxJQUFJLEVBQUU7UUFFcEIsT0FBUSxJQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEdBQUcsQ0FBQyxJQUE0QztRQUNyRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxPQUFnRDtRQUMzRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsT0FBTyxJQUFLLElBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTyxDQUFDLE9BQTRCLEVBQUUsUUFBaUIsSUFBSTtRQUNoRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuL2hlbHBlci5jbGFzcyc7XG5cbi8qKlxuICogU3RhbmRhcmQgY2xhc3NcbiAqIE90aGVyIGNsYXNzZXMgc2hvdWxkIGV4dGVuZCB0aGUgU3RhbmRhcmQgY2xhc3MsIGlmIHRoZXkgb2ZmZXIgb3duIGZ1bmN0aW9uc1xuICogSWYgdGhlIGV4dGVuZGVkIGNsYXNzIHVzZXMgb2JqZWN0IHByb3BlcnRpZXMgd2l0aCBvd24gbWFwIGZ1bmN0aW9ucywgaXQgc2hvdWxkIGltcGxlbWVudCBpdHMgb3duIG1hcCBmdW5jdGlvblxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmQge1xuICAvKipcbiAgICogU3RhdGljIG1hcCBtZXRob2RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFwPFQgZXh0ZW5kcyBTdGFuZGFyZD4oXG4gICAgdGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCxcbiAgICBkYXRhOiBQYXJ0aWFsPFQ+IHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgICBpdGVtOiBUID0gbmV3IHRoaXMoKVxuICApOiBUIHtcbiAgICByZXR1cm4gKGl0ZW0gYXMgYW55KS5tYXAoZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogTWFwIGRhdGEgaW50byBhbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBtYXAoZGF0YTogUGFydGlhbDx0aGlzPiB8IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiB0aGlzIHtcbiAgICByZXR1cm4gSGVscGVyLm1hcChkYXRhLCB0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9uZSBvYmplY3QgKGFuZCBtYXAgYWRkaXRpb25hbCBkYXRhKVxuICAgKi9cbiAgcHVibGljIGNsb25lKG1hcERhdGE/OiBQYXJ0aWFsPHRoaXM+IHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHRoaXMge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMpKTtcbiAgICBpZiAobWFwRGF0YSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihjdXJyZW50LCBtYXBEYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yKCkubWFwKGN1cnJlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdGhpcyB3aXRoIGFub3RoZXIgb2JqZWN0XG4gICAqIEhpbnQ6IGZ1bmN0aW9ucyB3aWxsIGJlIGlnbm9yZWQgYW5kIHdoZW4gYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGlzIGRpZmZlcmVudCB0aGUgaG9sZSBhcnJheSBvciBvYmplY3Qgd2lsbCB1c2VkIGFzIHByb3BlcnR5IHZhbHVlXG4gICAqXG4gICAqIEByZXR1cm4gUmVjb3JkPHN0cmluZywgYW55PiB3aXRoIHByb3BlcnRpZXMgb2YgdGhpcyBvYmplY3Qgd2hpY2ggYXJlIGRpZmZlcmVudFxuICAgKi9cbiAgcHVibGljIGdldERpZmYoY29tcGFyZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2xvbmU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgcmV0dXJuIEhlbHBlci5nZXREaWZmKHRoaXMsIGNvbXBhcmUsIGNsb25lKTtcbiAgfVxufVxuIl19
|