@rosoftlab/core 1.0.0-alpha-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.
Files changed (98) hide show
  1. package/README.md +27 -0
  2. package/esm2022/lib/base-components/base-form-edit.component.mjs +239 -0
  3. package/esm2022/lib/base-components/field-error-display/field-error-display.component.mjs +15 -0
  4. package/esm2022/lib/base-components/index.mjs +4 -0
  5. package/esm2022/lib/base-components/page-not-found/page-not-found.component.mjs +15 -0
  6. package/esm2022/lib/base-components/under-construction/under-construction.component.mjs +12 -0
  7. package/esm2022/lib/configurations.mjs +8 -0
  8. package/esm2022/lib/constants/symbols.mjs +3 -0
  9. package/esm2022/lib/converters/date/date.converter.mjs +20 -0
  10. package/esm2022/lib/core.mjs +8 -0
  11. package/esm2022/lib/decorators/attribute.decorator.mjs +87 -0
  12. package/esm2022/lib/decorators/base-datastore-config.decorator.mjs +7 -0
  13. package/esm2022/lib/decorators/base-model-config.decorator.mjs +10 -0
  14. package/esm2022/lib/decorators/custom.type.decorator.mjs +11 -0
  15. package/esm2022/lib/directives/translated-content.directive.mjs +97 -0
  16. package/esm2022/lib/directives/translated-element.directive.mjs +20 -0
  17. package/esm2022/lib/grid-layout-format.enum.mjs +15 -0
  18. package/esm2022/lib/index.mjs +26 -0
  19. package/esm2022/lib/interceptors/cache.interceptor.mjs +52 -0
  20. package/esm2022/lib/interceptors/index.mjs +2 -0
  21. package/esm2022/lib/interfaces/attribute-decorator-options.interface.mjs +2 -0
  22. package/esm2022/lib/interfaces/datastore-config.interface.mjs +2 -0
  23. package/esm2022/lib/interfaces/model-config.interface.mjs +2 -0
  24. package/esm2022/lib/interfaces/overrides.interface.mjs +2 -0
  25. package/esm2022/lib/interfaces/property-converter.interface.mjs +2 -0
  26. package/esm2022/lib/models/base-meta.model.mjs +7 -0
  27. package/esm2022/lib/models/base-query-data.mjs +13 -0
  28. package/esm2022/lib/models/base.model.mjs +158 -0
  29. package/esm2022/lib/models/error-response.model.mjs +9 -0
  30. package/esm2022/lib/models/rule.mjs +6 -0
  31. package/esm2022/lib/pipes/Nl2brPipe.pipe.mjs +21 -0
  32. package/esm2022/lib/pipes/input-error.pipe.mjs +38 -0
  33. package/esm2022/lib/providers.mjs +12 -0
  34. package/esm2022/lib/resolvers/dynamically-class-resolver.mjs +22 -0
  35. package/esm2022/lib/resolvers/dynamically-service-resolver.mjs +22 -0
  36. package/esm2022/lib/resolvers/index.mjs +3 -0
  37. package/esm2022/lib/rsl-base-module.mjs +64 -0
  38. package/esm2022/lib/services/base-datastore.service.mjs +342 -0
  39. package/esm2022/lib/services/base.service.mjs +99 -0
  40. package/esm2022/lib/services/cache.service.mjs +35 -0
  41. package/esm2022/lib/services/datastore.service.mjs +26 -0
  42. package/esm2022/lib/services/dialog.service.mjs +150 -0
  43. package/esm2022/lib/services/index.mjs +6 -0
  44. package/esm2022/lib/services/translate-loader.service.mjs +34 -0
  45. package/esm2022/lib/utils.mjs +27 -0
  46. package/esm2022/lib/validators/pattern-validator.mjs +15 -0
  47. package/esm2022/public-api.mjs +5 -0
  48. package/esm2022/rosoftlab-core.mjs +5 -0
  49. package/fesm2022/rosoftlab-core.mjs +1637 -0
  50. package/fesm2022/rosoftlab-core.mjs.map +1 -0
  51. package/index.d.ts +5 -0
  52. package/lib/base-components/base-form-edit.component.d.ts +56 -0
  53. package/lib/base-components/field-error-display/field-error-display.component.d.ts +7 -0
  54. package/lib/base-components/index.d.ts +3 -0
  55. package/lib/base-components/page-not-found/page-not-found.component.d.ts +8 -0
  56. package/lib/base-components/under-construction/under-construction.component.d.ts +6 -0
  57. package/lib/configurations.d.ts +6 -0
  58. package/lib/constants/symbols.d.ts +1 -0
  59. package/lib/converters/date/date.converter.d.ts +5 -0
  60. package/lib/core.d.ts +7 -0
  61. package/lib/decorators/attribute.decorator.d.ts +3 -0
  62. package/lib/decorators/base-datastore-config.decorator.d.ts +1 -0
  63. package/lib/decorators/base-model-config.decorator.d.ts +1 -0
  64. package/lib/decorators/custom.type.decorator.d.ts +1 -0
  65. package/lib/directives/translated-content.directive.d.ts +21 -0
  66. package/lib/directives/translated-element.directive.d.ts +10 -0
  67. package/lib/grid-layout-format.enum.d.ts +12 -0
  68. package/lib/index.d.ts +25 -0
  69. package/lib/interceptors/cache.interceptor.d.ts +13 -0
  70. package/lib/interceptors/index.d.ts +1 -0
  71. package/lib/interfaces/attribute-decorator-options.interface.d.ts +8 -0
  72. package/lib/interfaces/datastore-config.interface.d.ts +8 -0
  73. package/lib/interfaces/model-config.interface.d.ts +10 -0
  74. package/lib/interfaces/overrides.interface.d.ts +5 -0
  75. package/lib/interfaces/property-converter.interface.d.ts +4 -0
  76. package/lib/models/base-meta.model.d.ts +5 -0
  77. package/lib/models/base-query-data.d.ts +7 -0
  78. package/lib/models/base.model.d.ts +31 -0
  79. package/lib/models/error-response.model.d.ts +17 -0
  80. package/lib/models/rule.d.ts +5 -0
  81. package/lib/pipes/Nl2brPipe.pipe.d.ts +7 -0
  82. package/lib/pipes/input-error.pipe.d.ts +10 -0
  83. package/lib/providers.d.ts +2 -0
  84. package/lib/resolvers/dynamically-class-resolver.d.ts +3 -0
  85. package/lib/resolvers/dynamically-service-resolver.d.ts +3 -0
  86. package/lib/resolvers/index.d.ts +2 -0
  87. package/lib/rsl-base-module.d.ts +13 -0
  88. package/lib/services/base-datastore.service.d.ts +47 -0
  89. package/lib/services/base.service.d.ts +27 -0
  90. package/lib/services/cache.service.d.ts +11 -0
  91. package/lib/services/datastore.service.d.ts +12 -0
  92. package/lib/services/dialog.service.d.ts +21 -0
  93. package/lib/services/index.d.ts +5 -0
  94. package/lib/services/translate-loader.service.d.ts +14 -0
  95. package/lib/utils.d.ts +2 -0
  96. package/lib/validators/pattern-validator.d.ts +4 -0
  97. package/package.json +36 -0
  98. package/public-api.d.ts +1 -0
@@ -0,0 +1,31 @@
1
+ import { HttpHeaders } from '@angular/common/http';
2
+ import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
3
+ import { Observable } from 'rxjs';
4
+ import { ModelConfig } from '../interfaces/model-config.interface';
5
+ import { BaseDatastore, ModelType } from '../services/base-datastore.service';
6
+ export declare class BaseModel {
7
+ protected _datastore: BaseDatastore;
8
+ highlighted: boolean;
9
+ id: any;
10
+ [key: string]: any;
11
+ constructor(_datastore: BaseDatastore, data?: any);
12
+ save(params?: any, headers?: HttpHeaders, customUrl?: string, customBody?: any): Observable<this>;
13
+ patch(origModel: this, params?: any, headers?: HttpHeaders, customUrl?: string): Observable<this>;
14
+ replace(params?: any, headers?: HttpHeaders, customUrl?: string, customBody?: any): Observable<this>;
15
+ get attributeMetadata(): any;
16
+ set attributeMetadata(val: any);
17
+ get hasDirtyAttributes(): boolean;
18
+ rollbackAttributes(): void;
19
+ get modelConfig(): ModelConfig;
20
+ protected deserializeModel<T extends BaseModel>(modelType: ModelType<T>, data: any): T;
21
+ protected transformSerializedNamesToPropertyNames<T extends BaseModel>(modelType: ModelType<T>, attributes: any): any;
22
+ getModelPropertyNames(model: BaseModel): any;
23
+ getModelRequiredPropertyNames(model: BaseModel): any;
24
+ getModelDefaultPropertyValues(model: BaseModel): any;
25
+ getModelSubGroupPropertyNames(model: BaseModel): any;
26
+ getFromGroup(fb: UntypedFormBuilder): UntypedFormGroup;
27
+ private getSubFromGroup;
28
+ getModelFromFormGroup(formGroup: UntypedFormGroup, id?: any): void;
29
+ getSerializedModel(): any;
30
+ getCellClass(property: string): string;
31
+ }
@@ -0,0 +1,17 @@
1
+ export interface JsonBaseError {
2
+ id?: string;
3
+ links?: Array<any>;
4
+ status?: string;
5
+ code?: string;
6
+ title?: string;
7
+ detail?: string;
8
+ source?: {
9
+ pointer?: string;
10
+ parameter?: string;
11
+ };
12
+ meta?: any;
13
+ }
14
+ export declare class ErrorResponse {
15
+ errors?: JsonBaseError[];
16
+ constructor(errors?: JsonBaseError[]);
17
+ }
@@ -0,0 +1,5 @@
1
+ export declare class Rule {
2
+ rule: any;
3
+ order: number;
4
+ parameters: string[];
5
+ }
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class Nl2brPipe implements PipeTransform {
4
+ transform(value: any, args?: any): any;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<Nl2brPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<Nl2brPipe, "nl2br", false>;
7
+ }
@@ -0,0 +1,10 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import { TranslateService } from '@ngx-translate/core';
3
+ import * as i0 from "@angular/core";
4
+ export declare class InputErrorPipe implements PipeTransform {
5
+ protected translate: TranslateService;
6
+ constructor(translate: TranslateService);
7
+ transform(value: any, filedTranslationKey: any): string;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputErrorPipe, never>;
9
+ static ɵpipe: i0.ɵɵPipeDeclaration<InputErrorPipe, "inputError", false>;
10
+ }
@@ -0,0 +1,2 @@
1
+ export * from './services';
2
+ export declare const PROVIDERS: any[];
@@ -0,0 +1,3 @@
1
+ import { ResolveFn } from '@angular/router';
2
+ import { BaseModel } from '../core';
3
+ export declare function DynamicallyModelResolver<T extends BaseModel>(modelsImport: any, className?: string | undefined): ResolveFn<T>;
@@ -0,0 +1,3 @@
1
+ import { ResolveFn } from '@angular/router';
2
+ import { BaseModel, BaseService } from '../core';
3
+ export declare function DynamicallyServiceResolver<T extends BaseModel, U extends BaseService<T>>(serviceImport: any, serviceName: string): ResolveFn<U>;
@@ -0,0 +1,2 @@
1
+ export { DynamicallyModelResolver } from './dynamically-class-resolver';
2
+ export { DynamicallyServiceResolver } from './dynamically-service-resolver';
@@ -0,0 +1,13 @@
1
+ import { ModuleWithProviders } from '@angular/core';
2
+ import { Configurations } from './configurations';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@ngx-translate/core";
6
+ import * as i3 from "@angular/forms";
7
+ import * as i4 from "@angular/common/http";
8
+ export declare class RslBaseModule {
9
+ static forRoot(config: Configurations): ModuleWithProviders<RslBaseModule>;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<RslBaseModule, never>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<RslBaseModule, never, [typeof i1.CommonModule, typeof i2.TranslateModule, typeof i3.ReactiveFormsModule], [typeof i4.HttpClientModule, typeof i2.TranslateModule]>;
12
+ static ɵinj: i0.ɵɵInjectorDeclaration<RslBaseModule>;
13
+ }
@@ -0,0 +1,47 @@
1
+ import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import { DatastoreConfig } from '../interfaces/datastore-config.interface';
4
+ import { BaseQueryData } from '../models/base-query-data';
5
+ import { BaseModel } from '../models/base.model';
6
+ import { CacheService } from './cache.service';
7
+ import * as i0 from "@angular/core";
8
+ export type ModelType<T extends BaseModel> = new (datastore: BaseDatastore, data: any) => T;
9
+ export declare class BaseDatastore {
10
+ protected httpClient: HttpClient;
11
+ protected cacheService: CacheService;
12
+ protected config: DatastoreConfig;
13
+ private _store;
14
+ private toQueryString;
15
+ private get getDirtyAttributes();
16
+ get getAllAttributes(): (attributedMetadata: any, model?: any) => object;
17
+ private static getDirtyAttributes;
18
+ private static getAllAttributes;
19
+ constructor(httpClient: HttpClient, cacheService: CacheService);
20
+ findAll<T extends BaseModel>(modelType: ModelType<T>, params?: any, headers?: HttpHeaders, customUrl?: string): Observable<BaseQueryData<T>>;
21
+ findRecord<T extends BaseModel>(modelType: ModelType<T>, id?: string, params?: any, headers?: HttpHeaders, customUrl?: string): Observable<T>;
22
+ getCustom<U, T extends BaseModel>(modelType: ModelType<T>, params?: any, headers?: HttpHeaders, customUrl?: string, customResponseType?: any): Observable<U>;
23
+ postCustom<U, T extends BaseModel>(modelType: ModelType<T>, body: any, params?: any, headers?: HttpHeaders, customUrl?: string): Observable<U>;
24
+ patchCustom<U, T extends BaseModel>(modelType: ModelType<T>, body: any, params?: any, headers?: HttpHeaders, customUrl?: string): Observable<U>;
25
+ createRecord<T extends BaseModel>(modelType: ModelType<T>, data?: any): T;
26
+ saveRecord<T extends BaseModel>(attributesMetadata: any, model: T, params?: any, headers?: HttpHeaders, customUrl?: string, customBody?: any): Observable<T>;
27
+ patchRecord<T extends BaseModel>(attributesMetadata: any, model: T, origModel: T, params?: any, headers?: HttpHeaders, customUrl?: string): Observable<T>;
28
+ replaceRecord<T extends BaseModel>(attributesMetadata: any, model: T, params?: any, headers?: HttpHeaders, customUrl?: string, customBody?: any): Observable<T>;
29
+ deleteRecord<T extends BaseModel>(modelType: ModelType<T>, id: string, headers?: HttpHeaders, customUrl?: string): Observable<{}>;
30
+ buildUrl<T extends BaseModel>(modelType: ModelType<T>, customUrl?: string): string;
31
+ protected extractQueryData<T extends BaseModel>(res: any, modelType: ModelType<T>): BaseQueryData<T>;
32
+ protected deserializeModel<T extends BaseModel>(modelType: ModelType<T>, data: any): T;
33
+ protected handleError(error: HttpErrorResponse): Observable<never>;
34
+ protected parseMeta(body: any, modelType: ModelType<BaseModel>): any;
35
+ protected resetMetadataAttributes<T extends BaseModel>(res: T, attributesMetadata: any, modelType: ModelType<T>): T;
36
+ get datastoreConfig(): DatastoreConfig;
37
+ protected transformSerializedNamesToPropertyNames<T extends BaseModel>(modelType: ModelType<T>, attributes: any): any;
38
+ protected getModelPropertyNames(model: BaseModel): any;
39
+ buildHeaders(customHeaders?: HttpHeaders): HttpHeaders;
40
+ buildParams<T extends BaseModel>(modelType: ModelType<T>, params: any): HttpParams;
41
+ protected entityToModel<T extends BaseModel>(res: any, modelType: ModelType<T>, model?: T): T;
42
+ private extractRecordDataJson;
43
+ modelToEntity<T extends BaseModel>(model: T, attributesMetadata: any, allAttributes?: boolean): any;
44
+ private _toQueryString;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseDatastore, never>;
46
+ static ɵprov: i0.ɵɵInjectableDeclaration<BaseDatastore>;
47
+ }
@@ -0,0 +1,27 @@
1
+ import { HttpHeaders } from '@angular/common/http';
2
+ import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
3
+ import { Observable } from 'rxjs';
4
+ import { BaseQueryData } from '../models/base-query-data';
5
+ import { BaseModel } from '../models/base.model';
6
+ import { BaseDatastore, ModelType } from './base-datastore.service';
7
+ import * as i0 from "@angular/core";
8
+ export declare class BaseService<T extends BaseModel> {
9
+ datastore: BaseDatastore;
10
+ modelType: ModelType<T>;
11
+ constructor(datastore: BaseDatastore);
12
+ setModelType(modelType: ModelType<T>): void;
13
+ get(id?: any, customInclude?: string): Observable<T>;
14
+ getAll(page: number, pageSize: number, sort?: string, filters?: string, customInclude?: string): Observable<BaseQueryData<T>>;
15
+ delete(id: any): Observable<{}>;
16
+ getCustom<U>(params?: any, headers?: HttpHeaders, customUrl?: string, customResponseType?: any): Observable<U>;
17
+ postCustom<U>(body: any, params?: any, headers?: HttpHeaders, customUrl?: string): Observable<U>;
18
+ patchCustom<U>(body: any, params?: any, headers?: HttpHeaders, customUrl?: string): Observable<U>;
19
+ save(docTypeOrFormGroup: T | UntypedFormGroup, id?: any, origModel?: T): Observable<T>;
20
+ patch(docTypeOrFormGroup: T | UntypedFormGroup, origModel: T, id?: any): Observable<T>;
21
+ newModel(data?: any): T;
22
+ toFormGroup(fb: UntypedFormBuilder, fromModel?: T): UntypedFormGroup;
23
+ fromFormGroup(formGroup: UntypedFormGroup, id?: any): T;
24
+ getSelectValues(property: string): Observable<any[]>;
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseService<any>, never>;
26
+ static ɵprov: i0.ɵɵInjectableDeclaration<BaseService<any>>;
27
+ }
@@ -0,0 +1,11 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class CacheService {
3
+ private cache;
4
+ constructor();
5
+ get(key: string): any;
6
+ set(key: string, data: any, expiresInMs: number): void;
7
+ delete(key: string): void;
8
+ clearCacheContainingKeyword(keyword: string): void;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<CacheService, never>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<CacheService>;
11
+ }
@@ -0,0 +1,12 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Configurations } from '../configurations';
3
+ import { BaseDatastore } from './base-datastore.service';
4
+ import { CacheService } from './cache.service';
5
+ import * as i0 from "@angular/core";
6
+ export declare class DatastoreCore extends BaseDatastore {
7
+ private configExt;
8
+ private customConfig;
9
+ constructor(http: HttpClient, cacheService: CacheService, configExt: Configurations);
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<DatastoreCore, never>;
11
+ static ɵprov: i0.ɵɵInjectableDeclaration<DatastoreCore>;
12
+ }
@@ -0,0 +1,21 @@
1
+ import { Observable } from 'rxjs';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Async modal dialog service
5
+ * DialogService makes this app easier to test by faking this service.
6
+ * TODO: better modal implementation that doesn't use window.confirm
7
+ */
8
+ export declare class DialogService {
9
+ /**
10
+ * Ask user to confirm an action. `message` explains the action and choices.
11
+ * Returns observable resolving to `true`=confirm or `false`=cancel
12
+ */
13
+ constructor();
14
+ confirm(message?: string, text?: string, confirmButtonText?: string, cancelButtonText?: string): Observable<boolean>;
15
+ showSaveMessage(message?: string, title?: string): Observable<boolean>;
16
+ showRegisteredMessage(message?: string, title?: string): Observable<boolean>;
17
+ showErrorMessage(e: any, message?: string): Observable<boolean>;
18
+ getTextTranslation(translationKey: string): string;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<DialogService, never>;
20
+ static ɵprov: i0.ɵɵInjectableDeclaration<DialogService>;
21
+ }
@@ -0,0 +1,5 @@
1
+ export * from './base-datastore.service';
2
+ export * from './base.service';
3
+ export * from './cache.service';
4
+ export * from './datastore.service';
5
+ export * from './dialog.service';
@@ -0,0 +1,14 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { TranslateLoader } from '@ngx-translate/core';
3
+ import { Observable } from 'rxjs';
4
+ import { Configurations } from '../configurations';
5
+ import * as i0 from "@angular/core";
6
+ export declare class TranslateloaderService implements TranslateLoader {
7
+ private httpClient;
8
+ private _apiUrl;
9
+ private headers;
10
+ constructor(httpClient: HttpClient, config?: Configurations);
11
+ getTranslation(lang: string): Observable<any>;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<TranslateloaderService, [null, { optional: true; }]>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<TranslateloaderService>;
14
+ }
package/lib/utils.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function readFileAsync(file: File): Promise<any>;
2
+ export declare function getValueFromJsonData(jsonData: any, key: string): any;
@@ -0,0 +1,4 @@
1
+ import { ValidationErrors, ValidatorFn } from '@angular/forms';
2
+ export declare class CustomValidators {
3
+ static patternValidator(regex: RegExp, error: ValidationErrors): ValidatorFn;
4
+ }
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@rosoftlab/core",
3
+ "version": "1.0.0-alpha-0",
4
+ "peerDependencies": {
5
+ "@angular/common": "^16.2.1",
6
+ "@angular/core": "^16.2.1",
7
+ "fast-json-patch": "^3.1.1",
8
+ "date-fns": "^2.30.0",
9
+ "@types/qs": "^6.9.7",
10
+ "@ngx-translate/core": "^15.0.0",
11
+ "@tinymce/tinymce-angular": "^7.0.0",
12
+ "tinymce": "^6.4.2",
13
+ "json-logic-js": "^2.0.2",
14
+ "sweetalert2": "^11.7.5",
15
+ "@angular/cdk": "^16.2.1"
16
+ },
17
+ "dependencies": {
18
+ "tslib": "^2.3.1"
19
+ },
20
+ "author": "rosoftlab",
21
+ "license": "ISC",
22
+ "module": "fesm2022/rosoftlab-core.mjs",
23
+ "typings": "index.d.ts",
24
+ "exports": {
25
+ "./package.json": {
26
+ "default": "./package.json"
27
+ },
28
+ ".": {
29
+ "types": "./index.d.ts",
30
+ "esm2022": "./esm2022/rosoftlab-core.mjs",
31
+ "esm": "./esm2022/rosoftlab-core.mjs",
32
+ "default": "./fesm2022/rosoftlab-core.mjs"
33
+ }
34
+ },
35
+ "sideEffects": false
36
+ }
@@ -0,0 +1 @@
1
+ export * from './lib/core';