@rws-framework/client 2.13.1 → 2.13.3
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/.bin/add-v.sh +9 -9
- package/.bin/emerge.sh +15 -15
- package/.emerge-fast.yaml +46 -46
- package/.emerge-typescript-template.yaml +23 -23
- package/.emerge-vis-output/fast-element/emerge-file_result_dependency_graph.graphml +693 -693
- package/.emerge-vis-output/fast-element/emerge-filesystem_graph.graphml +705 -705
- package/.emerge-vis-output/fast-element/emerge-statistics-metrics.txt +440 -440
- package/.emerge-vis-output/fast-element/html/emerge.html +500 -500
- package/.emerge-vis-output/fast-element/html/jsconfig.json +8 -8
- package/.emerge-vis-output/fast-element/html/resources/css/custom.css +211 -211
- package/.emerge-vis-output/fast-element/html/resources/js/emerge_common.js +44 -44
- package/.emerge-vis-output/fast-element/html/resources/js/emerge_data.js +13 -13
- package/.emerge-vis-output/fast-element/html/resources/js/emerge_git.js +1413 -1413
- package/.emerge-vis-output/fast-element/html/resources/js/emerge_graph.js +539 -539
- package/.emerge-vis-output/fast-element/html/resources/js/emerge_heatmap.js +219 -219
- package/.emerge-vis-output/fast-element/html/resources/js/emerge_hull.js +179 -179
- package/.emerge-vis-output/fast-element/html/resources/js/emerge_main.js +1002 -1002
- package/.emerge-vis-output/fast-element/html/resources/js/emerge_search.js +71 -71
- package/.emerge-vis-output/fast-element/html/resources/js/emerge_ui.js +199 -199
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-grid.css +4123 -4123
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-grid.min.css +6 -6
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-grid.rtl.css +4122 -4122
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-grid.rtl.min.css +6 -6
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-reboot.css +487 -487
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-reboot.min.css +6 -6
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-reboot.rtl.css +484 -484
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-reboot.rtl.min.css +6 -6
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-utilities.css +4265 -4265
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-utilities.min.css +6 -6
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-utilities.rtl.css +4256 -4256
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-utilities.rtl.min.css +6 -6
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap.css +10877 -10877
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap.min.css +6 -6
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap.rtl.css +10841 -10841
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap.rtl.min.css +6 -6
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/js/bootstrap.bundle.js +7075 -7075
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/js/bootstrap.bundle.min.js +6 -6
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/js/bootstrap.esm.js +5202 -5202
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/js/bootstrap.esm.min.js +6 -6
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/js/bootstrap.js +5249 -5249
- package/.emerge-vis-output/fast-element/html/vendors/bootstrap/js/bootstrap.min.js +6 -6
- package/.emerge-vis-output/fast-element/html/vendors/d3/d3.v7.8.4.min.js +2 -2
- package/.emerge-vis-output/fast-element/html/vendors/d3/d3.v7.min.js +2 -2
- package/.emerge-vis-output/fast-element/html/vendors/dark-mode-switch/css/dark-mode.css +148 -148
- package/.emerge-vis-output/fast-element/html/vendors/daterangepicker/daterangepicker.min.js +7 -7
- package/.emerge-vis-output/fast-element/html/vendors/daterangepicker/moment.min.js +6 -6
- package/.emerge-vis-output/fast-element/html/vendors/hull/hull.js +373 -373
- package/.emerge-vis-output/fast-element/html/vendors/jquery/jquery-3.6.0.min.js +2 -2
- package/.emerge-vis-output/fast-element/html/vendors/popper/popper.min.js +6 -6
- package/.emerge-vis-output/fast-element/html/vendors/simpleheat/simpleheat.js +141 -141
- package/.emerge-vis-output/fast-foundation/emerge-file_result_dependency_graph.graphml +4043 -4043
- package/.emerge-vis-output/fast-foundation/emerge-filesystem_graph.graphml +4538 -4538
- package/.emerge-vis-output/fast-foundation/emerge-statistics-metrics.txt +2510 -2510
- package/.emerge-vis-output/fast-foundation/html/emerge.html +500 -500
- package/.emerge-vis-output/fast-foundation/html/jsconfig.json +8 -8
- package/.emerge-vis-output/fast-foundation/html/resources/css/custom.css +211 -211
- package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_common.js +44 -44
- package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_data.js +13 -13
- package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_git.js +1413 -1413
- package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_graph.js +539 -539
- package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_heatmap.js +219 -219
- package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_hull.js +179 -179
- package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_main.js +1002 -1002
- package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_search.js +71 -71
- package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_ui.js +199 -199
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-grid.css +4123 -4123
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-grid.min.css +6 -6
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-grid.rtl.css +4122 -4122
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-grid.rtl.min.css +6 -6
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-reboot.css +487 -487
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-reboot.min.css +6 -6
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-reboot.rtl.css +484 -484
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-reboot.rtl.min.css +6 -6
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-utilities.css +4265 -4265
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-utilities.min.css +6 -6
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-utilities.rtl.css +4256 -4256
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-utilities.rtl.min.css +6 -6
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap.css +10877 -10877
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap.min.css +6 -6
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap.rtl.css +10841 -10841
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap.rtl.min.css +6 -6
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/js/bootstrap.bundle.js +7075 -7075
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/js/bootstrap.bundle.min.js +6 -6
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/js/bootstrap.esm.js +5202 -5202
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/js/bootstrap.esm.min.js +6 -6
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/js/bootstrap.js +5249 -5249
- package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/js/bootstrap.min.js +6 -6
- package/.emerge-vis-output/fast-foundation/html/vendors/d3/d3.v7.8.4.min.js +2 -2
- package/.emerge-vis-output/fast-foundation/html/vendors/d3/d3.v7.min.js +2 -2
- package/.emerge-vis-output/fast-foundation/html/vendors/dark-mode-switch/css/dark-mode.css +148 -148
- package/.emerge-vis-output/fast-foundation/html/vendors/daterangepicker/daterangepicker.min.js +7 -7
- package/.emerge-vis-output/fast-foundation/html/vendors/daterangepicker/moment.min.js +6 -6
- package/.emerge-vis-output/fast-foundation/html/vendors/hull/hull.js +373 -373
- package/.emerge-vis-output/fast-foundation/html/vendors/jquery/jquery-3.6.0.min.js +2 -2
- package/.emerge-vis-output/fast-foundation/html/vendors/popper/popper.min.js +6 -6
- package/.emerge-vis-output/fast-foundation/html/vendors/simpleheat/simpleheat.js +141 -141
- package/.emerge-vis-output/rws-client/emerge-file_result_dependency_graph.graphml +1143 -1143
- package/.emerge-vis-output/rws-client/emerge-filesystem_graph.graphml +1003 -1003
- package/.emerge-vis-output/rws-client/emerge-statistics-metrics.txt +655 -655
- package/.emerge-vis-output/rws-client/html/emerge.html +500 -500
- package/.emerge-vis-output/rws-client/html/jsconfig.json +8 -8
- package/.emerge-vis-output/rws-client/html/resources/css/custom.css +211 -211
- package/.emerge-vis-output/rws-client/html/resources/js/emerge_common.js +44 -44
- package/.emerge-vis-output/rws-client/html/resources/js/emerge_data.js +13 -13
- package/.emerge-vis-output/rws-client/html/resources/js/emerge_git.js +1413 -1413
- package/.emerge-vis-output/rws-client/html/resources/js/emerge_graph.js +539 -539
- package/.emerge-vis-output/rws-client/html/resources/js/emerge_heatmap.js +219 -219
- package/.emerge-vis-output/rws-client/html/resources/js/emerge_hull.js +179 -179
- package/.emerge-vis-output/rws-client/html/resources/js/emerge_main.js +1002 -1002
- package/.emerge-vis-output/rws-client/html/resources/js/emerge_search.js +71 -71
- package/.emerge-vis-output/rws-client/html/resources/js/emerge_ui.js +199 -199
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-grid.css +4123 -4123
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-grid.min.css +6 -6
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-grid.rtl.css +4122 -4122
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-grid.rtl.min.css +6 -6
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-reboot.css +487 -487
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-reboot.min.css +6 -6
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-reboot.rtl.css +484 -484
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-reboot.rtl.min.css +6 -6
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-utilities.css +4265 -4265
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-utilities.min.css +6 -6
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-utilities.rtl.css +4256 -4256
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-utilities.rtl.min.css +6 -6
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap.css +10877 -10877
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap.min.css +6 -6
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap.rtl.css +10841 -10841
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap.rtl.min.css +6 -6
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/js/bootstrap.bundle.js +7075 -7075
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/js/bootstrap.bundle.min.js +6 -6
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/js/bootstrap.esm.js +5202 -5202
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/js/bootstrap.esm.min.js +6 -6
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/js/bootstrap.js +5249 -5249
- package/.emerge-vis-output/rws-client/html/vendors/bootstrap/js/bootstrap.min.js +6 -6
- package/.emerge-vis-output/rws-client/html/vendors/d3/d3.v7.8.4.min.js +2 -2
- package/.emerge-vis-output/rws-client/html/vendors/d3/d3.v7.min.js +2 -2
- package/.emerge-vis-output/rws-client/html/vendors/dark-mode-switch/css/dark-mode.css +148 -148
- package/.emerge-vis-output/rws-client/html/vendors/daterangepicker/daterangepicker.min.js +7 -7
- package/.emerge-vis-output/rws-client/html/vendors/daterangepicker/moment.min.js +6 -6
- package/.emerge-vis-output/rws-client/html/vendors/hull/hull.js +373 -373
- package/.emerge-vis-output/rws-client/html/vendors/jquery/jquery-3.6.0.min.js +2 -2
- package/.emerge-vis-output/rws-client/html/vendors/popper/popper.min.js +6 -6
- package/.emerge-vis-output/rws-client/html/vendors/simpleheat/simpleheat.js +141 -141
- package/.eslintrc.json +51 -51
- package/.gitmodules +2 -2
- package/.setup/.eslintrc.json +11 -11
- package/.setup/_base.eslintrc.json +48 -48
- package/.setup/tsconfig.json +28 -28
- package/PLUGINS.MD +188 -188
- package/README.md +1023 -1023
- package/_tools.js +396 -396
- package/builder/vite/index.ts +4 -4
- package/{cfg/build_steps → builder}/vite/loaders/html.ts +11 -11
- package/{cfg/build_steps → builder}/vite/loaders/index.ts +8 -8
- package/{cfg/build_steps → builder}/vite/loaders/loader.type.ts +27 -27
- package/{cfg/build_steps → builder}/vite/loaders/scss.ts +32 -32
- package/{cfg/build_steps → builder}/vite/loaders/ts.ts +309 -312
- package/builder/vite/rws.vite.config.ts +56 -49
- package/{cfg/build_steps → builder}/vite/rws_scss_plugin.ts +61 -60
- package/{cfg/build_steps → builder}/vite/scss/_compiler.ts +95 -94
- package/{cfg/build_steps → builder}/vite/scss/_fonts.ts +80 -80
- package/{cfg/build_steps → builder}/vite/scss/_fs.ts +83 -81
- package/{cfg/build_steps → builder}/vite/scss/_import.ts +191 -184
- package/builder/webpack/after/copy.js +78 -78
- package/builder/webpack/after/sw.js +13 -13
- package/builder/webpack/index.js +10 -10
- package/builder/webpack/loaders/rws_fast_html_loader.js +17 -17
- package/builder/webpack/loaders/rws_fast_scss_loader.js +43 -43
- package/builder/webpack/loaders/rws_fast_ts_loader.js +96 -96
- package/builder/webpack/loaders/ts/html_error.js +19 -19
- package/builder/webpack/rws.webpack.config.js +169 -169
- package/builder/webpack/rws_scss_plugin.js +62 -62
- package/builder/webpack/rws_webpack_plugin.js +137 -137
- package/builder/webpack/scss/_compiler.js +97 -97
- package/builder/webpack/scss/_fonts.js +80 -80
- package/builder/webpack/scss/_fs.js +84 -84
- package/builder/webpack/scss/_import.js +186 -186
- package/cfg/_default.cfg.js +26 -26
- package/cfg/_storage.d.ts +22 -22
- package/cfg/_storage.js +42 -42
- package/cfg/build_steps/vite/_build_config.ts +105 -105
- package/cfg/build_steps/vite/_env_defines.ts +17 -17
- package/cfg/build_steps/vite/_loaders.ts +187 -184
- package/cfg/build_steps/vite/index.ts +2 -2
- package/cfg/build_steps/vite/types.ts +7 -7
- package/cfg/build_steps/webpack/_actions.js +85 -85
- package/cfg/build_steps/webpack/_aliases.js +9 -9
- package/cfg/build_steps/webpack/_build_config.js +76 -76
- package/cfg/build_steps/webpack/_cache.js +98 -98
- package/cfg/build_steps/webpack/_component_handling.js +60 -60
- package/cfg/build_steps/webpack/_dev_servers.js +14 -14
- package/cfg/build_steps/webpack/_env_defines.js +18 -18
- package/cfg/build_steps/webpack/_info.js +18 -18
- package/cfg/build_steps/webpack/_loaders.js +223 -223
- package/cfg/build_steps/webpack/_plugins.js +102 -102
- package/cfg/build_steps/webpack/_production.js +37 -37
- package/cfg/build_steps/webpack/_rws_externals.js +68 -68
- package/cfg/build_steps/webpack/_timing.js +52 -52
- package/cfg/build_steps/webpack/_webpack_config.js +58 -58
- package/cfg/tsconfigSetup.js +150 -150
- package/console.js +86 -86
- package/docs/assets/26e93147f10415a0ed4a.svg +6 -6
- package/docs/assets/75c9471662e97ee24f29.svg +7 -7
- package/docs/assets/db90e4df2373980c497d.svg +9 -9
- package/docs/assets/highlight.css +127 -127
- package/docs/assets/main.js +59 -59
- package/docs/assets/style.css +1414 -1414
- package/docs/classes/ApiServiceInstance.html +25 -25
- package/docs/classes/ConfigServiceInstance.html +21 -21
- package/docs/classes/DOMServiceInstance.html +17 -17
- package/docs/classes/NotifyServiceInstance.html +15 -15
- package/docs/classes/RWSClientInstance.html +45 -45
- package/docs/classes/RWSPlugin.html +13 -13
- package/docs/classes/RWSService.html +10 -10
- package/docs/classes/RWSViewComponent.html +1022 -1022
- package/docs/classes/ServiceWorkerServiceInstance.html +13 -13
- package/docs/classes/UtilsServiceInstance.html +13 -13
- package/docs/functions/attr.html +5 -5
- package/docs/functions/observable.html +3 -3
- package/docs/index.html +179 -179
- package/docs/interfaces/HTMLTag.html +3 -3
- package/docs/interfaces/IRWSConfig.html +20 -20
- package/docs/interfaces/IRWSDecoratorOptions.html +5 -5
- package/docs/interfaces/IRWSHttpRoute.html +2 -2
- package/docs/interfaces/IRWSPrefixedHTTProutes.html +2 -2
- package/docs/interfaces/IRWSUser.html +5 -5
- package/docs/modules.html +45 -45
- package/foundation/index.js +1 -1
- package/foundation/rws-foundation.d.ts +7 -7
- package/foundation/rws-foundation.js +7 -7
- package/package.json +108 -108
- package/service_worker/src/_service_worker.ts +83 -83
- package/service_worker/tsconfig.json +20 -20
- package/service_worker/webpack.config.js +66 -66
- package/src/client/components.ts +67 -67
- package/src/client/config.ts +165 -165
- package/src/client/services.ts +27 -27
- package/src/client.ts +212 -212
- package/src/components/_attrs/_default_observable_accessor.ts +8 -8
- package/src/components/_attrs/_extended_accessor.ts +40 -40
- package/src/components/_attrs/_external_handler.ts +7 -7
- package/src/components/_attrs/_external_observable_accessor.ts +8 -8
- package/src/components/_attrs/angular-attr.ts +34 -34
- package/src/components/_attrs/external-attr.ts +59 -59
- package/src/components/_attrs/external-observable.ts +52 -52
- package/src/components/_attrs/sanitize-html.ts +80 -80
- package/src/components/_component.ts +245 -245
- package/src/components/_container.ts +15 -15
- package/src/components/_decorator.ts +122 -122
- package/src/components/_decorators/RWSFillBuild.ts +54 -54
- package/src/components/_decorators/RWSInject.ts +49 -49
- package/src/components/_decorators/RWSService.ts +11 -11
- package/src/components/_decorators/_di.ts +15 -15
- package/src/components/_definitions.ts +64 -64
- package/src/components/_event_handling.ts +40 -40
- package/src/components/index.ts +14 -14
- package/src/components/loader/component.ts +12 -12
- package/src/components/loader/styles/layout.scss +13 -13
- package/src/components/progress/component.ts +54 -54
- package/src/components/progress/styles/layout.scss +90 -90
- package/src/components/progress/template.html +24 -24
- package/src/components/uploader/component.ts +83 -83
- package/src/components/uploader/styles/layout.scss +130 -130
- package/src/components/uploader/template.html +16 -16
- package/src/index.ts +93 -93
- package/src/plugins/_builder.js +31 -31
- package/src/plugins/_plugin.ts +63 -63
- package/src/services/ApiService.ts +242 -242
- package/src/services/ConfigService.ts +134 -134
- package/src/services/DOMService.ts +100 -100
- package/src/services/NotifyService.ts +47 -47
- package/src/services/ServiceWorkerService.ts +60 -60
- package/src/services/UtilsService.ts +60 -60
- package/src/services/_service.ts +64 -64
- package/src/styles/_darkreader.scss +30 -30
- package/src/styles/_grid.scss +75 -75
- package/src/styles/_misc.scss +8 -8
- package/src/styles/_scrollbars.scss +40 -40
- package/src/styles/includes.scss +4 -4
- package/src/types/IRWSConfig.ts +30 -30
- package/src/types/IRWSPlugin.ts +18 -18
- package/src/types/IRWSUser.ts +6 -6
- package/src/types/IRWSViewComponent.ts +36 -36
- package/src/types/RWSNotify.ts +6 -6
- package/src/types/RWSWindow.ts +41 -41
- package/tsconfig.json +30 -30
- package/typedoc.json +13 -13
- package/types/declarations.d.ts +8 -8
- package/types/docs-typings.d.ts +15 -15
package/src/plugins/_plugin.ts
CHANGED
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
import RWSContainer from "../components/_container";
|
|
2
|
-
import { Container } from "../components/_container";
|
|
3
|
-
import RWSWindow, {loadRWSRichWindow } from '../types/RWSWindow';
|
|
4
|
-
import IRWSUser from "../types/IRWSUser";
|
|
5
|
-
import { RWSInfoType } from "../client/components";
|
|
6
|
-
import { IRWSPlugin } from "../types/IRWSPlugin";
|
|
7
|
-
|
|
8
|
-
type DefaultRWSPluginOptionsType = { enabled: boolean };
|
|
9
|
-
type PluginInfoType = { name: string }
|
|
10
|
-
type PluginConstructor<T extends DefaultRWSPluginOptionsType> = new (options: T) => RWSPlugin<T>;
|
|
11
|
-
abstract class RWSPlugin<PluginOptions extends DefaultRWSPluginOptionsType> implements IRWSPlugin{
|
|
12
|
-
protected isLoaded: boolean = false;
|
|
13
|
-
protected options: PluginOptions;
|
|
14
|
-
protected container: Container;
|
|
15
|
-
protected window: RWSWindow;
|
|
16
|
-
|
|
17
|
-
static container: Container;
|
|
18
|
-
static window: RWSWindow;
|
|
19
|
-
|
|
20
|
-
constructor(options: PluginOptions = { enabled: false } as PluginOptions){
|
|
21
|
-
this.isLoaded = true;
|
|
22
|
-
this.container = RWSPlugin.container;
|
|
23
|
-
this.window = RWSPlugin.window;
|
|
24
|
-
this.options = options;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
async onClientStart(): Promise<void>
|
|
28
|
-
{
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
async onPartedComponentsLoad(componentParts: RWSInfoType): Promise<void>
|
|
33
|
-
{
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async onComponentsDeclare(): Promise<void>
|
|
38
|
-
{
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async onSetUser(user: IRWSUser): Promise<void>{
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
static getPlugin<Plugin extends RWSPlugin<T>, T extends DefaultRWSPluginOptionsType = DefaultRWSPluginOptionsType>(pluginClass: PluginConstructor<T>): Plugin | null
|
|
49
|
-
{
|
|
50
|
-
const plugin = this.window.RWS.plugins[pluginClass.name];
|
|
51
|
-
return plugin ? plugin as Plugin : null;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
static getAllPlugins(): RWSPlugin<DefaultRWSPluginOptionsType>[]
|
|
56
|
-
{
|
|
57
|
-
return Object.keys(this.window.RWS.plugins).map((key) => this.window.RWS.plugins[key]);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
RWSPlugin.window = loadRWSRichWindow();
|
|
62
|
-
RWSPlugin.container = RWSContainer();
|
|
63
|
-
|
|
1
|
+
import RWSContainer from "../components/_container";
|
|
2
|
+
import { Container } from "../components/_container";
|
|
3
|
+
import RWSWindow, {loadRWSRichWindow } from '../types/RWSWindow';
|
|
4
|
+
import IRWSUser from "../types/IRWSUser";
|
|
5
|
+
import { RWSInfoType } from "../client/components";
|
|
6
|
+
import { IRWSPlugin } from "../types/IRWSPlugin";
|
|
7
|
+
|
|
8
|
+
type DefaultRWSPluginOptionsType = { enabled: boolean };
|
|
9
|
+
type PluginInfoType = { name: string }
|
|
10
|
+
type PluginConstructor<T extends DefaultRWSPluginOptionsType> = new (options: T) => RWSPlugin<T>;
|
|
11
|
+
abstract class RWSPlugin<PluginOptions extends DefaultRWSPluginOptionsType> implements IRWSPlugin{
|
|
12
|
+
protected isLoaded: boolean = false;
|
|
13
|
+
protected options: PluginOptions;
|
|
14
|
+
protected container: Container;
|
|
15
|
+
protected window: RWSWindow;
|
|
16
|
+
|
|
17
|
+
static container: Container;
|
|
18
|
+
static window: RWSWindow;
|
|
19
|
+
|
|
20
|
+
constructor(options: PluginOptions = { enabled: false } as PluginOptions){
|
|
21
|
+
this.isLoaded = true;
|
|
22
|
+
this.container = RWSPlugin.container;
|
|
23
|
+
this.window = RWSPlugin.window;
|
|
24
|
+
this.options = options;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async onClientStart(): Promise<void>
|
|
28
|
+
{
|
|
29
|
+
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
async onPartedComponentsLoad(componentParts: RWSInfoType): Promise<void>
|
|
33
|
+
{
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
async onComponentsDeclare(): Promise<void>
|
|
38
|
+
{
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async onSetUser(user: IRWSUser): Promise<void>{
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
static getPlugin<Plugin extends RWSPlugin<T>, T extends DefaultRWSPluginOptionsType = DefaultRWSPluginOptionsType>(pluginClass: PluginConstructor<T>): Plugin | null
|
|
49
|
+
{
|
|
50
|
+
const plugin = this.window.RWS.plugins[pluginClass.name];
|
|
51
|
+
return plugin ? plugin as Plugin : null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
static getAllPlugins(): RWSPlugin<DefaultRWSPluginOptionsType>[]
|
|
56
|
+
{
|
|
57
|
+
return Object.keys(this.window.RWS.plugins).map((key) => this.window.RWS.plugins[key]);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
RWSPlugin.window = loadRWSRichWindow();
|
|
62
|
+
RWSPlugin.container = RWSContainer();
|
|
63
|
+
|
|
64
64
|
export { RWSPlugin, DefaultRWSPluginOptionsType }
|
|
@@ -1,243 +1,243 @@
|
|
|
1
|
-
import TheService from './_service';
|
|
2
|
-
|
|
3
|
-
//@4DI
|
|
4
|
-
import ConfigService, { ConfigServiceInstance } from './ConfigService';
|
|
5
|
-
|
|
6
|
-
import { upload, UploadResponse } from 'upload';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
interface RequestOptions {
|
|
10
|
-
method?: string;
|
|
11
|
-
headers: HeadersInit;
|
|
12
|
-
body?: string;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
interface IAPIOptions {
|
|
16
|
-
headers?: Headers,
|
|
17
|
-
routeParams?: {
|
|
18
|
-
[key: string]: string
|
|
19
|
-
},
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
interface IHTTProute {
|
|
23
|
-
name: string;
|
|
24
|
-
path: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
interface IPrefixedHTTProutes {
|
|
29
|
-
prefix: string;
|
|
30
|
-
routes: IHTTProute[];
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
type IBackendRoute = IHTTProute | IPrefixedHTTProutes;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const _DEFAULT_CONTENT_TYPE = 'application/json';
|
|
37
|
-
|
|
38
|
-
class ApiService extends TheService {
|
|
39
|
-
static _DEFAULT: boolean = true;
|
|
40
|
-
private token?: string;
|
|
41
|
-
|
|
42
|
-
constructor(@ConfigService private config: ConfigServiceInstance) {
|
|
43
|
-
super();
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
private addHeader(headers: Headers | [string, string][] | {[key: string]: string}, key: string, val: string)
|
|
47
|
-
{
|
|
48
|
-
if (headers instanceof Headers) {
|
|
49
|
-
headers.append(key, val);
|
|
50
|
-
} else if (Array.isArray(headers)) {
|
|
51
|
-
headers.push([key, val]);
|
|
52
|
-
} else {
|
|
53
|
-
headers[key] = val;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Function to get headers
|
|
58
|
-
private getHeaders(optHeaders: HeadersInit = {}): HeadersInit {
|
|
59
|
-
const headers: HeadersInit = { ...optHeaders };
|
|
60
|
-
|
|
61
|
-
if (!('Content-Type' in headers)) {
|
|
62
|
-
this.addHeader(headers, 'Content-Type', _DEFAULT_CONTENT_TYPE);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (this.token) {
|
|
66
|
-
this.addHeader(headers, 'Authorization', `Bearer ${this.token}`);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
if((headers as any)['Content-Type']){
|
|
70
|
-
this.addHeader(headers, 'Accept', '*/*');
|
|
71
|
-
}else{
|
|
72
|
-
this.addHeader(headers, 'Accept', (headers as any)['Content-Type']);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return headers;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
public setToken(token: string)
|
|
79
|
-
{
|
|
80
|
-
this.token = token;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
public async pureGet(url: string, options: IAPIOptions = {}): Promise<string> {
|
|
84
|
-
try {
|
|
85
|
-
const response = await fetch(url, {
|
|
86
|
-
headers: this.getHeaders(options.headers),
|
|
87
|
-
});
|
|
88
|
-
return await response.text();
|
|
89
|
-
} catch (error) {
|
|
90
|
-
console.error('GET request failed:', error);
|
|
91
|
-
throw error;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
public async isGetTargetReachable(url: string, options: IAPIOptions = {}): Promise<boolean> {
|
|
96
|
-
try {
|
|
97
|
-
return !!(await this.pureGet(url, options));
|
|
98
|
-
} catch (error) {
|
|
99
|
-
return false;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
public async get<T>(url: string, options: IAPIOptions = {}): Promise<T> {
|
|
104
|
-
try {
|
|
105
|
-
const response = await fetch(url, {
|
|
106
|
-
headers: this.getHeaders(options.headers),
|
|
107
|
-
});
|
|
108
|
-
return await response.json();
|
|
109
|
-
} catch (error) {
|
|
110
|
-
console.error('GET request failed:', error);
|
|
111
|
-
throw error;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
public async post<T, P extends object = object>(url: string, payload?: P, options: IAPIOptions = {}): Promise<T> {
|
|
116
|
-
try {
|
|
117
|
-
const response = await fetch(url, {
|
|
118
|
-
method: 'POST',
|
|
119
|
-
headers: this.getHeaders(options.headers),
|
|
120
|
-
body: payload ? JSON.stringify(payload) : null,
|
|
121
|
-
});
|
|
122
|
-
return await response.json();
|
|
123
|
-
} catch (error) {
|
|
124
|
-
console.error('POST request failed:', error);
|
|
125
|
-
throw error;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
public async put<T, P extends object = object>(url: string, payload?: P, options: IAPIOptions = {}): Promise<T> {
|
|
130
|
-
try {
|
|
131
|
-
const response = await fetch(url, {
|
|
132
|
-
method: 'PUT',
|
|
133
|
-
headers: this.getHeaders(options.headers),
|
|
134
|
-
body: payload ? JSON.stringify(payload) : null,
|
|
135
|
-
});
|
|
136
|
-
return await response.json();
|
|
137
|
-
} catch (error) {
|
|
138
|
-
console.error('PUT request failed:', error);
|
|
139
|
-
throw error;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
public async delete<T>(url: string, options: IAPIOptions = {}): Promise<T> {
|
|
144
|
-
try {
|
|
145
|
-
const response = await fetch(url, {
|
|
146
|
-
method: 'DELETE',
|
|
147
|
-
headers: this.getHeaders(options.headers),
|
|
148
|
-
});
|
|
149
|
-
return await response.json();
|
|
150
|
-
} catch (error) {
|
|
151
|
-
console.error('DELETE request failed:', error);
|
|
152
|
-
throw error;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
private getBackendUrl(routeName: string, params: {[key: string]: string} = {})
|
|
157
|
-
{
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const routesPackage = this.config.get('backendRoutes');
|
|
161
|
-
|
|
162
|
-
let routes: IHTTProute[] = [];
|
|
163
|
-
|
|
164
|
-
routesPackage.forEach((item: IBackendRoute) => {
|
|
165
|
-
// Check if item is an instance of IPrefixedHTTProutes
|
|
166
|
-
if ('prefix' in item && 'routes' in item && Array.isArray(item.routes)) {
|
|
167
|
-
// Handle the case where item is of type IPrefixedHTTProutes
|
|
168
|
-
routes = [...routes, ...item.routes.map((subRouteItem: IHTTProute): IHTTProute => {
|
|
169
|
-
const subRoute: IHTTProute = {
|
|
170
|
-
path: item.prefix + subRouteItem.path,
|
|
171
|
-
name: subRouteItem.name
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
return subRoute;
|
|
175
|
-
})];
|
|
176
|
-
} else {
|
|
177
|
-
// Handle the case where item is of type IHTTProute
|
|
178
|
-
routes.push(item as IHTTProute);
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
const route = routes.find((item: IHTTProute) => item.name === routeName);
|
|
183
|
-
|
|
184
|
-
if(!route){
|
|
185
|
-
throw new Error(`Backend route '${routeName}' does not exist.`);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
let apiPath = route.path;
|
|
189
|
-
|
|
190
|
-
Object.keys(params).forEach((paramKey: string) => {
|
|
191
|
-
const paramValue = params[paramKey];
|
|
192
|
-
|
|
193
|
-
apiPath = apiPath.replace(`:${paramKey}`, paramValue);
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
return `${this.config.get('backendUrl')}${this.config.get('apiPrefix') || ''}${apiPath}`;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
async uploadFile(url: string, file: File, onProgress: (progress: number) => void, payload: any = {}): Promise<UploadResponse>
|
|
200
|
-
{
|
|
201
|
-
return upload(
|
|
202
|
-
|
|
203
|
-
url,
|
|
204
|
-
{
|
|
205
|
-
file,
|
|
206
|
-
...payload
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
onProgress,
|
|
210
|
-
headers: this.token ? { Authorization: `Bearer ${this.token}` } : null,
|
|
211
|
-
}
|
|
212
|
-
);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
public back = {
|
|
216
|
-
get: <T>(routeName: string, options?: IAPIOptions): Promise<T> => this.get(this.getBackendUrl(routeName, options?.routeParams), options),
|
|
217
|
-
post: <T, P extends object = object>(routeName: string, payload?: P, options?: IAPIOptions): Promise<T> => this.post(this.getBackendUrl(routeName, options?.routeParams), payload, options),
|
|
218
|
-
put: <T, P extends object = object>(routeName: string, payload: P, options?: IAPIOptions): Promise<T> => this.put(this.getBackendUrl(routeName, options?.routeParams), payload, options),
|
|
219
|
-
delete: <T>(routeName: string, options?: IAPIOptions): Promise<T> => this.delete(this.getBackendUrl(routeName, options?.routeParams), options),
|
|
220
|
-
uploadFile: (routeName: string, file: File, onProgress: (progress: number) => void, options: IAPIOptions = {}, payload: any = {}): Promise<UploadResponse> => this.uploadFile(this.getBackendUrl(routeName, options?.routeParams), file, onProgress, payload),
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
connectToAmplify()
|
|
224
|
-
{
|
|
225
|
-
// "use client"
|
|
226
|
-
// const client = generateClient<Schema>() // use this Data client for CRUDL requests
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
// /*== STEP 3 ===============================================================
|
|
230
|
-
// Fetch records from the database and use them in your frontend component.
|
|
231
|
-
// (THIS SNIPPET WILL ONLY WORK IN THE FRONTEND CODE FILE.)
|
|
232
|
-
// =========================================================================*/
|
|
233
|
-
|
|
234
|
-
// /* For example, in a React component, you can use this snippet in your
|
|
235
|
-
// function's RETURN statement */
|
|
236
|
-
// // const { data: todos } = client.models.Todo.list()
|
|
237
|
-
|
|
238
|
-
// // return <ul>{todos.map(todo => <li key={todo.id}>{todo.content}</li>)}</ul>
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
export default ApiService.getSingleton();
|
|
1
|
+
import TheService from './_service';
|
|
2
|
+
|
|
3
|
+
//@4DI
|
|
4
|
+
import ConfigService, { ConfigServiceInstance } from './ConfigService';
|
|
5
|
+
|
|
6
|
+
import { upload, UploadResponse } from 'upload';
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
interface RequestOptions {
|
|
10
|
+
method?: string;
|
|
11
|
+
headers: HeadersInit;
|
|
12
|
+
body?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface IAPIOptions {
|
|
16
|
+
headers?: Headers,
|
|
17
|
+
routeParams?: {
|
|
18
|
+
[key: string]: string
|
|
19
|
+
},
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
interface IHTTProute {
|
|
23
|
+
name: string;
|
|
24
|
+
path: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
interface IPrefixedHTTProutes {
|
|
29
|
+
prefix: string;
|
|
30
|
+
routes: IHTTProute[];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
type IBackendRoute = IHTTProute | IPrefixedHTTProutes;
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
const _DEFAULT_CONTENT_TYPE = 'application/json';
|
|
37
|
+
|
|
38
|
+
class ApiService extends TheService {
|
|
39
|
+
static _DEFAULT: boolean = true;
|
|
40
|
+
private token?: string;
|
|
41
|
+
|
|
42
|
+
constructor(@ConfigService private config: ConfigServiceInstance) {
|
|
43
|
+
super();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
private addHeader(headers: Headers | [string, string][] | {[key: string]: string}, key: string, val: string)
|
|
47
|
+
{
|
|
48
|
+
if (headers instanceof Headers) {
|
|
49
|
+
headers.append(key, val);
|
|
50
|
+
} else if (Array.isArray(headers)) {
|
|
51
|
+
headers.push([key, val]);
|
|
52
|
+
} else {
|
|
53
|
+
headers[key] = val;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Function to get headers
|
|
58
|
+
private getHeaders(optHeaders: HeadersInit = {}): HeadersInit {
|
|
59
|
+
const headers: HeadersInit = { ...optHeaders };
|
|
60
|
+
|
|
61
|
+
if (!('Content-Type' in headers)) {
|
|
62
|
+
this.addHeader(headers, 'Content-Type', _DEFAULT_CONTENT_TYPE);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (this.token) {
|
|
66
|
+
this.addHeader(headers, 'Authorization', `Bearer ${this.token}`);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if((headers as any)['Content-Type']){
|
|
70
|
+
this.addHeader(headers, 'Accept', '*/*');
|
|
71
|
+
}else{
|
|
72
|
+
this.addHeader(headers, 'Accept', (headers as any)['Content-Type']);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return headers;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
public setToken(token: string)
|
|
79
|
+
{
|
|
80
|
+
this.token = token;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public async pureGet(url: string, options: IAPIOptions = {}): Promise<string> {
|
|
84
|
+
try {
|
|
85
|
+
const response = await fetch(url, {
|
|
86
|
+
headers: this.getHeaders(options.headers),
|
|
87
|
+
});
|
|
88
|
+
return await response.text();
|
|
89
|
+
} catch (error) {
|
|
90
|
+
console.error('GET request failed:', error);
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
public async isGetTargetReachable(url: string, options: IAPIOptions = {}): Promise<boolean> {
|
|
96
|
+
try {
|
|
97
|
+
return !!(await this.pureGet(url, options));
|
|
98
|
+
} catch (error) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
public async get<T>(url: string, options: IAPIOptions = {}): Promise<T> {
|
|
104
|
+
try {
|
|
105
|
+
const response = await fetch(url, {
|
|
106
|
+
headers: this.getHeaders(options.headers),
|
|
107
|
+
});
|
|
108
|
+
return await response.json();
|
|
109
|
+
} catch (error) {
|
|
110
|
+
console.error('GET request failed:', error);
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
public async post<T, P extends object = object>(url: string, payload?: P, options: IAPIOptions = {}): Promise<T> {
|
|
116
|
+
try {
|
|
117
|
+
const response = await fetch(url, {
|
|
118
|
+
method: 'POST',
|
|
119
|
+
headers: this.getHeaders(options.headers),
|
|
120
|
+
body: payload ? JSON.stringify(payload) : null,
|
|
121
|
+
});
|
|
122
|
+
return await response.json();
|
|
123
|
+
} catch (error) {
|
|
124
|
+
console.error('POST request failed:', error);
|
|
125
|
+
throw error;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
public async put<T, P extends object = object>(url: string, payload?: P, options: IAPIOptions = {}): Promise<T> {
|
|
130
|
+
try {
|
|
131
|
+
const response = await fetch(url, {
|
|
132
|
+
method: 'PUT',
|
|
133
|
+
headers: this.getHeaders(options.headers),
|
|
134
|
+
body: payload ? JSON.stringify(payload) : null,
|
|
135
|
+
});
|
|
136
|
+
return await response.json();
|
|
137
|
+
} catch (error) {
|
|
138
|
+
console.error('PUT request failed:', error);
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
public async delete<T>(url: string, options: IAPIOptions = {}): Promise<T> {
|
|
144
|
+
try {
|
|
145
|
+
const response = await fetch(url, {
|
|
146
|
+
method: 'DELETE',
|
|
147
|
+
headers: this.getHeaders(options.headers),
|
|
148
|
+
});
|
|
149
|
+
return await response.json();
|
|
150
|
+
} catch (error) {
|
|
151
|
+
console.error('DELETE request failed:', error);
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
private getBackendUrl(routeName: string, params: {[key: string]: string} = {})
|
|
157
|
+
{
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
const routesPackage = this.config.get('backendRoutes');
|
|
161
|
+
|
|
162
|
+
let routes: IHTTProute[] = [];
|
|
163
|
+
|
|
164
|
+
routesPackage.forEach((item: IBackendRoute) => {
|
|
165
|
+
// Check if item is an instance of IPrefixedHTTProutes
|
|
166
|
+
if ('prefix' in item && 'routes' in item && Array.isArray(item.routes)) {
|
|
167
|
+
// Handle the case where item is of type IPrefixedHTTProutes
|
|
168
|
+
routes = [...routes, ...item.routes.map((subRouteItem: IHTTProute): IHTTProute => {
|
|
169
|
+
const subRoute: IHTTProute = {
|
|
170
|
+
path: item.prefix + subRouteItem.path,
|
|
171
|
+
name: subRouteItem.name
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
return subRoute;
|
|
175
|
+
})];
|
|
176
|
+
} else {
|
|
177
|
+
// Handle the case where item is of type IHTTProute
|
|
178
|
+
routes.push(item as IHTTProute);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
const route = routes.find((item: IHTTProute) => item.name === routeName);
|
|
183
|
+
|
|
184
|
+
if(!route){
|
|
185
|
+
throw new Error(`Backend route '${routeName}' does not exist.`);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
let apiPath = route.path;
|
|
189
|
+
|
|
190
|
+
Object.keys(params).forEach((paramKey: string) => {
|
|
191
|
+
const paramValue = params[paramKey];
|
|
192
|
+
|
|
193
|
+
apiPath = apiPath.replace(`:${paramKey}`, paramValue);
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
return `${this.config.get('backendUrl')}${this.config.get('apiPrefix') || ''}${apiPath}`;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
async uploadFile(url: string, file: File, onProgress: (progress: number) => void, payload: any = {}): Promise<UploadResponse>
|
|
200
|
+
{
|
|
201
|
+
return upload(
|
|
202
|
+
|
|
203
|
+
url,
|
|
204
|
+
{
|
|
205
|
+
file,
|
|
206
|
+
...payload
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
onProgress,
|
|
210
|
+
headers: this.token ? { Authorization: `Bearer ${this.token}` } : null,
|
|
211
|
+
}
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
public back = {
|
|
216
|
+
get: <T>(routeName: string, options?: IAPIOptions): Promise<T> => this.get(this.getBackendUrl(routeName, options?.routeParams), options),
|
|
217
|
+
post: <T, P extends object = object>(routeName: string, payload?: P, options?: IAPIOptions): Promise<T> => this.post(this.getBackendUrl(routeName, options?.routeParams), payload, options),
|
|
218
|
+
put: <T, P extends object = object>(routeName: string, payload: P, options?: IAPIOptions): Promise<T> => this.put(this.getBackendUrl(routeName, options?.routeParams), payload, options),
|
|
219
|
+
delete: <T>(routeName: string, options?: IAPIOptions): Promise<T> => this.delete(this.getBackendUrl(routeName, options?.routeParams), options),
|
|
220
|
+
uploadFile: (routeName: string, file: File, onProgress: (progress: number) => void, options: IAPIOptions = {}, payload: any = {}): Promise<UploadResponse> => this.uploadFile(this.getBackendUrl(routeName, options?.routeParams), file, onProgress, payload),
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
connectToAmplify()
|
|
224
|
+
{
|
|
225
|
+
// "use client"
|
|
226
|
+
// const client = generateClient<Schema>() // use this Data client for CRUDL requests
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
// /*== STEP 3 ===============================================================
|
|
230
|
+
// Fetch records from the database and use them in your frontend component.
|
|
231
|
+
// (THIS SNIPPET WILL ONLY WORK IN THE FRONTEND CODE FILE.)
|
|
232
|
+
// =========================================================================*/
|
|
233
|
+
|
|
234
|
+
// /* For example, in a React component, you can use this snippet in your
|
|
235
|
+
// function's RETURN statement */
|
|
236
|
+
// // const { data: todos } = client.models.Todo.list()
|
|
237
|
+
|
|
238
|
+
// // return <ul>{todos.map(todo => <li key={todo.id}>{todo.content}</li>)}</ul>
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export default ApiService.getSingleton();
|
|
243
243
|
export { IBackendRoute, RequestOptions, ApiService as ApiServiceInstance, IHTTProute, IPrefixedHTTProutes };
|