@gaias/client_node 1.0.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.
Files changed (65) hide show
  1. package/.npmrc.example +14 -0
  2. package/LICENSE +21 -0
  3. package/PUBLISHING.md +170 -0
  4. package/README.md +2 -0
  5. package/config/CommonParam.yaml +2 -0
  6. package/config/RestClientA.yaml +5 -0
  7. package/config/RestClientB.yaml +8 -0
  8. package/dist/configclient/ConfigClient.d.ts +12 -0
  9. package/dist/configclient/ConfigClient.d.ts.map +1 -0
  10. package/dist/configclient/ConfigClient.js +112 -0
  11. package/dist/configclient/ConfigClient.js.map +1 -0
  12. package/dist/configclient/index.d.ts +2 -0
  13. package/dist/configclient/index.d.ts.map +1 -0
  14. package/dist/configclient/index.js +18 -0
  15. package/dist/configclient/index.js.map +1 -0
  16. package/dist/globalstorage/globalstorage.d.ts +9 -0
  17. package/dist/globalstorage/globalstorage.d.ts.map +1 -0
  18. package/dist/globalstorage/globalstorage.js +39 -0
  19. package/dist/globalstorage/globalstorage.js.map +1 -0
  20. package/dist/globalstorage/index.d.ts +2 -0
  21. package/dist/globalstorage/index.d.ts.map +1 -0
  22. package/dist/globalstorage/index.js +18 -0
  23. package/dist/globalstorage/index.js.map +1 -0
  24. package/dist/index.d.ts +5 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +21 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/messageclient/Email.d.ts +32 -0
  29. package/dist/messageclient/Email.d.ts.map +1 -0
  30. package/dist/messageclient/Email.js +29 -0
  31. package/dist/messageclient/Email.js.map +1 -0
  32. package/dist/messageclient/Events.d.ts +4 -0
  33. package/dist/messageclient/Events.d.ts.map +1 -0
  34. package/dist/messageclient/Events.js +7 -0
  35. package/dist/messageclient/Events.js.map +1 -0
  36. package/dist/messageclient/index.d.ts +3 -0
  37. package/dist/messageclient/index.d.ts.map +1 -0
  38. package/dist/messageclient/index.js +19 -0
  39. package/dist/messageclient/index.js.map +1 -0
  40. package/dist/restclient/FSBackend.d.ts +14 -0
  41. package/dist/restclient/FSBackend.d.ts.map +1 -0
  42. package/dist/restclient/FSBackend.js +44 -0
  43. package/dist/restclient/FSBackend.js.map +1 -0
  44. package/dist/restclient/HttpBackend.d.ts +28 -0
  45. package/dist/restclient/HttpBackend.d.ts.map +1 -0
  46. package/dist/restclient/HttpBackend.js +126 -0
  47. package/dist/restclient/HttpBackend.js.map +1 -0
  48. package/dist/restclient/NextSSRBackend.d.ts +15 -0
  49. package/dist/restclient/NextSSRBackend.d.ts.map +1 -0
  50. package/dist/restclient/NextSSRBackend.js +58 -0
  51. package/dist/restclient/NextSSRBackend.js.map +1 -0
  52. package/dist/restclient/RestClient.d.ts +58 -0
  53. package/dist/restclient/RestClient.d.ts.map +1 -0
  54. package/dist/restclient/RestClient.js +167 -0
  55. package/dist/restclient/RestClient.js.map +1 -0
  56. package/dist/restclient/Yamls.d.ts +2 -0
  57. package/dist/restclient/Yamls.d.ts.map +1 -0
  58. package/dist/restclient/Yamls.js +26 -0
  59. package/dist/restclient/Yamls.js.map +1 -0
  60. package/dist/restclient/index.d.ts +6 -0
  61. package/dist/restclient/index.d.ts.map +1 -0
  62. package/dist/restclient/index.js +22 -0
  63. package/dist/restclient/index.js.map +1 -0
  64. package/eslint.config.js +141 -0
  65. package/package.json +102 -0
@@ -0,0 +1,14 @@
1
+ import { Namespace } from 'cls-hooked';
2
+ import { RestClientBackend, APIConfig, RestClient } from './RestClient';
3
+ export declare class FSBackend implements RestClientBackend {
4
+ private cfgNames;
5
+ constructor(cfgNames?: string[], proxy?: string);
6
+ load(rc: RestClient): Promise<APIConfig>;
7
+ headers(): Promise<{
8
+ headers: {};
9
+ }>;
10
+ static setForwardHeader(ns: Namespace, key: string, val: string): typeof FSBackend;
11
+ static createNamespace(): Namespace<Record<string, any>>;
12
+ static destoryNamespace(): void;
13
+ }
14
+ //# sourceMappingURL=FSBackend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FSBackend.d.ts","sourceRoot":"","sources":["../../src/restclient/FSBackend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqC,MAAM,YAAY,CAAC;AAG1E,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AASxE,qBAAa,SAAU,YAAW,iBAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,QAAQ,GAAE,MAAM,EAAO,EAAE,KAAK,CAAC,EAAE,MAAM;IAO7C,IAAI,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAIxC,OAAO;;;IAIb,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAU/D,MAAM,CAAC,eAAe;IAItB,MAAM,CAAC,gBAAgB;CAG1B"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FSBackend = void 0;
7
+ const cls_hooked_1 = require("cls-hooked");
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const Yamls_1 = require("./Yamls");
10
+ const mergeJSON = require('merge-json');
11
+ const API_SESSION = 'API_SESSION';
12
+ const REQUEST_HEADER = 'REQUEST_HEADER';
13
+ class FSBackend {
14
+ constructor(cfgNames = [], proxy) {
15
+ this.cfgNames = [];
16
+ this.cfgNames.push(...cfgNames);
17
+ if (!lodash_1.default.isNil(proxy) && !lodash_1.default.isEmpty(lodash_1.default.trim(proxy))) {
18
+ process.env['http_proxy'] = proxy;
19
+ }
20
+ }
21
+ async load(rc) {
22
+ return this.cfgNames.map((name) => (0, Yamls_1.loadConfig)(name)).reduce((p, c) => mergeJSON.merge(p, c));
23
+ }
24
+ async headers() {
25
+ return { headers: {}, };
26
+ }
27
+ static setForwardHeader(ns, key, val) {
28
+ let header = ns.get(REQUEST_HEADER);
29
+ if (!header) {
30
+ header = {};
31
+ ns.set(REQUEST_HEADER, header);
32
+ }
33
+ header[key] = val;
34
+ return FSBackend;
35
+ }
36
+ static createNamespace() {
37
+ return (0, cls_hooked_1.createNamespace)(API_SESSION);
38
+ }
39
+ static destoryNamespace() {
40
+ return (0, cls_hooked_1.destroyNamespace)(API_SESSION);
41
+ }
42
+ }
43
+ exports.FSBackend = FSBackend;
44
+ //# sourceMappingURL=FSBackend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FSBackend.js","sourceRoot":"","sources":["../../src/restclient/FSBackend.ts"],"names":[],"mappings":";;;;;;AAAA,2CAA0E;AAC1E,oDAAuB;AACvB,mCAAqC;AAGrC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACxC,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAKxC,MAAa,SAAS;IAGlB,YAAY,WAAqB,EAAE,EAAE,KAAc;QAF3C,aAAQ,GAAa,EAAE,CAAC;QAG5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,gBAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,gBAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;QACtC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjG,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,EAAa,EAAE,GAAW,EAAE,GAAW;QAC3D,IAAI,MAAM,GAAkB,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,GAAG,EAAE,CAAC;YACZ,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAClB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,eAAe;QAClB,OAAO,IAAA,4BAAe,EAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,gBAAgB;QACnB,OAAO,IAAA,6BAAgB,EAAC,WAAW,CAAC,CAAC;IACzC,CAAC;CACJ;AAnCD,8BAmCC"}
@@ -0,0 +1,28 @@
1
+ import { RestClientBackend, APIConfig, RestClient } from './RestClient';
2
+ export type RequestHeader = {
3
+ headers: Record<string, string>;
4
+ };
5
+ export declare class StateProvider<T> {
6
+ private state;
7
+ private innerProvider?;
8
+ private updateCallback?;
9
+ constructor(state: T, innerProvider?: (() => T) | undefined, updateCallback?: ((state: T) => void) | undefined);
10
+ update(state: T): void;
11
+ get value(): T;
12
+ }
13
+ export type HeaderProvider = StateProvider<RequestHeader>;
14
+ export type HttpBackendOptions = {
15
+ baseUrl: string;
16
+ commonParamUrl?: string;
17
+ cfgNames: string[];
18
+ };
19
+ export declare class HttpBackend implements RestClientBackend {
20
+ private options;
21
+ private headerProvider;
22
+ constructor(options: HttpBackendOptions, headerProvider: StateProvider<RequestHeader>);
23
+ load(rc: RestClient): Promise<APIConfig>;
24
+ headers(): Promise<RequestHeader>;
25
+ private loadUrl;
26
+ private fetchOrCache;
27
+ }
28
+ //# sourceMappingURL=HttpBackend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpBackend.d.ts","sourceRoot":"","sources":["../../src/restclient/HttpBackend.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAkBxE,MAAM,MAAM,aAAa,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAC;AAEF,qBAAa,aAAa,CAAC,CAAC;IACZ,OAAO,CAAC,KAAK;IAAK,OAAO,CAAC,aAAa,CAAC;IAAW,OAAO,CAAC,cAAc,CAAC;gBAAlE,KAAK,EAAE,CAAC,EAAU,aAAa,CAAC,GAAE,MAAM,CAAC,aAAA,EAAU,cAAc,CAAC,GAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,aAAA;IAE1G,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAOtB,IAAI,KAAK,IAAI,CAAC,CAKb;CACJ;AAED,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;AAE1D,MAAM,MAAM,kBAAkB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AASF,qBAAa,WAAY,YAAW,iBAAiB;IACrC,OAAO,CAAC,OAAO;IAAsB,OAAO,CAAC,cAAc;gBAAnD,OAAO,EAAE,kBAAkB,EAAU,cAAc,EAAE,aAAa,CAAC,aAAa,CAAC;IAG/F,IAAI,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IA0BxC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;YAIzB,OAAO;IAOrB,OAAO,CAAC,YAAY;CA8CvB"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HttpBackend = exports.StateProvider = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const js_yaml_1 = __importDefault(require("js-yaml"));
9
+ const eventemitter3_1 = __importDefault(require("eventemitter3"));
10
+ const storage_manager_js_1 = require("storage-manager-js");
11
+ const events = new eventemitter3_1.default();
12
+ const mergeJSON = require('merge-json');
13
+ const hash = (str) => {
14
+ let hash = 0;
15
+ if (str.length == 0)
16
+ return hash;
17
+ for (let i = 0; i < str.length; i++) {
18
+ const char = str.charCodeAt(i);
19
+ hash = (hash << 5) - hash + char;
20
+ hash = hash & hash;
21
+ }
22
+ return hash;
23
+ };
24
+ class StateProvider {
25
+ constructor(state, innerProvider, updateCallback) {
26
+ this.state = state;
27
+ this.innerProvider = innerProvider;
28
+ this.updateCallback = updateCallback;
29
+ }
30
+ update(state) {
31
+ this.state = state;
32
+ if (this.updateCallback) {
33
+ this.updateCallback(state);
34
+ }
35
+ }
36
+ get value() {
37
+ if (this.innerProvider) {
38
+ this.state = this.innerProvider();
39
+ }
40
+ return this.state;
41
+ }
42
+ }
43
+ exports.StateProvider = StateProvider;
44
+ class HttpBackend {
45
+ constructor(options, headerProvider) {
46
+ this.options = options;
47
+ this.headerProvider = headerProvider;
48
+ }
49
+ async load(rc) {
50
+ let apis = {};
51
+ try {
52
+ const ld = Promise.all(this.options.cfgNames.map(async (name) => {
53
+ if (!this.options.baseUrl.endsWith('/')) {
54
+ this.options.baseUrl = `${this.options.baseUrl}/`;
55
+ }
56
+ const data = js_yaml_1.default.load(await this.loadUrl(`${this.options.baseUrl}${name}.yml`));
57
+ apis = mergeJSON.merge(apis, data);
58
+ }));
59
+ const ld1 = async () => {
60
+ if (this.options.commonParamUrl) {
61
+ const commonParam = js_yaml_1.default.load(await this.loadUrl(this.options.commonParamUrl));
62
+ rc.commonParam = Object.assign({}, rc.commonParam ?? {}, commonParam);
63
+ }
64
+ };
65
+ await Promise.all([ld, ld1()]);
66
+ }
67
+ catch (error) {
68
+ }
69
+ return apis;
70
+ }
71
+ async headers() {
72
+ return this.headerProvider.value;
73
+ }
74
+ async loadUrl(url) {
75
+ console.log(`HttpBackend url ${url}`);
76
+ return this.fetchOrCache(url, async () => (await axios_1.default.get(url)).data);
77
+ }
78
+ fetchOrCache(url, fetchFn) {
79
+ const key = hash(url);
80
+ const cacheStr = storage_manager_js_1.SessionStorage.get(`RC#${key}`);
81
+ let cache = cacheStr ? JSON.parse(cacheStr) : null;
82
+ if (!cache) {
83
+ cache = {
84
+ available: false,
85
+ requesting: false,
86
+ data: '',
87
+ expiration: 0,
88
+ };
89
+ }
90
+ const getData = () => fetchFn().then((data) => {
91
+ if (cache) {
92
+ cache.requesting = false;
93
+ cache.available = true;
94
+ cache.expiration = Date.now() + 10000;
95
+ cache.data = data;
96
+ storage_manager_js_1.SessionStorage.set(`RC#${key}`, JSON.stringify(cache));
97
+ events.emit(`CacheUpdated#${key}`, data);
98
+ }
99
+ return data;
100
+ });
101
+ if (cache.available && Date.now() < cache.expiration) {
102
+ return Promise.resolve(cache.data);
103
+ }
104
+ else if (!cache.requesting) {
105
+ cache.requesting = true;
106
+ cache.available = false;
107
+ cache.expiration = 0;
108
+ cache.data = '';
109
+ storage_manager_js_1.SessionStorage.set(`RC#${key}`, JSON.stringify(cache));
110
+ return getData();
111
+ }
112
+ else {
113
+ return new Promise((resolve, reject) => {
114
+ const timer = setTimeout(() => {
115
+ resolve(getData());
116
+ }, 2000);
117
+ events.once(`CacheUpdated#${key}`, (data) => {
118
+ clearTimeout(timer);
119
+ resolve(data);
120
+ });
121
+ });
122
+ }
123
+ }
124
+ }
125
+ exports.HttpBackend = HttpBackend;
126
+ //# sourceMappingURL=HttpBackend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpBackend.js","sourceRoot":"","sources":["../../src/restclient/HttpBackend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { RestClientBackend, APIConfig, RestClient } from './RestClient';
2
+ import { HttpBackendOptions, RequestHeader, StateProvider } from './HttpBackend';
3
+ export type NextSSRBackendOptions = HttpBackendOptions & {
4
+ ssrBaseDir: string;
5
+ };
6
+ export declare class NextSSRBackend implements RestClientBackend {
7
+ private options;
8
+ private headerProvider;
9
+ constructor(options: NextSSRBackendOptions, headerProvider: StateProvider<RequestHeader>);
10
+ load(rc: RestClient): Promise<APIConfig>;
11
+ headers(): Promise<RequestHeader>;
12
+ private loadFile;
13
+ private fetchOrCache;
14
+ }
15
+ //# sourceMappingURL=NextSSRBackend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NextSSRBackend.d.ts","sourceRoot":"","sources":["../../src/restclient/NextSSRBackend.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAKjF,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAIhF,qBAAa,cAAe,YAAW,iBAAiB;IAExC,OAAO,CAAC,OAAO;IAAyB,OAAO,CAAC,cAAc;gBAAtD,OAAO,EAAE,qBAAqB,EAAU,cAAc,EAAE,aAAa,CAAC,aAAa,CAAC;IAIlG,IAAI,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IA6BxC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;YAIzB,QAAQ;YAIR,YAAY;CAS7B"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NextSSRBackend = void 0;
7
+ const js_yaml_1 = __importDefault(require("js-yaml"));
8
+ const fs_1 = require("fs");
9
+ const mergeJSON = require('merge-json');
10
+ const Cache = {};
11
+ class NextSSRBackend {
12
+ constructor(options, headerProvider) {
13
+ this.options = options;
14
+ this.headerProvider = headerProvider;
15
+ }
16
+ async load(rc) {
17
+ let apis = {};
18
+ try {
19
+ const ld = Promise.all(this.options.cfgNames.map(async (name) => {
20
+ if (!this.options.baseUrl.endsWith('/')) {
21
+ this.options.baseUrl = `${this.options.baseUrl}/`;
22
+ }
23
+ if (this.options.ssrBaseDir.endsWith('/')) {
24
+ this.options.ssrBaseDir = this.options.ssrBaseDir.substring(0, this.options.ssrBaseDir.length - 1);
25
+ }
26
+ const data = js_yaml_1.default.load(await this.loadFile(`${this.options.ssrBaseDir}${this.options.baseUrl}${name}.yml`));
27
+ apis = mergeJSON.merge(apis, data);
28
+ }));
29
+ const ld1 = async () => {
30
+ if (this.options.commonParamUrl) {
31
+ const commonParam = js_yaml_1.default.load(await this.loadFile(`${this.options.ssrBaseDir}${this.options.commonParamUrl}`));
32
+ rc.commonParam = Object.assign({}, rc.commonParam ?? {}, commonParam);
33
+ }
34
+ };
35
+ await Promise.all([ld, ld1()]);
36
+ }
37
+ catch (error) {
38
+ }
39
+ return apis;
40
+ }
41
+ async headers() {
42
+ return this.headerProvider.value;
43
+ }
44
+ async loadFile(path) {
45
+ return this.fetchOrCache(path, async () => fs_1.promises.readFile(path).then((buffer) => buffer.toString()));
46
+ }
47
+ async fetchOrCache(path, fetchFn) {
48
+ const key = path;
49
+ let cacheStr = Cache[`RC#${key}`];
50
+ if (cacheStr === undefined) {
51
+ cacheStr = await fetchFn();
52
+ Cache[`RC#${key}`] = cacheStr;
53
+ }
54
+ return cacheStr;
55
+ }
56
+ }
57
+ exports.NextSSRBackend = NextSSRBackend;
58
+ //# sourceMappingURL=NextSSRBackend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NextSSRBackend.js","sourceRoot":"","sources":["../../src/restclient/NextSSRBackend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { AxiosInstance, AxiosResponse, Method, InternalAxiosRequestConfig } from 'axios';
2
+ import { URLSearchParams } from 'whatwg-url';
3
+ export declare class RestClientError extends Error {
4
+ readonly response?: AxiosResponse<any>;
5
+ constructor(message: string, response?: AxiosResponse<any>);
6
+ }
7
+ export type EndPoint = {
8
+ method?: Method;
9
+ endPoint: string;
10
+ };
11
+ export type EndPointConfig = {
12
+ [name: string]: EndPoint | string;
13
+ };
14
+ export type APIConfig = {
15
+ [name: string]: APIConfig | EndPointConfig;
16
+ };
17
+ export type URIParam = Record<string, string | number | boolean>;
18
+ export type HeaderParam = Record<string, string>;
19
+ export interface RestClientBackend {
20
+ load(rc: RestClient): Promise<APIConfig>;
21
+ headers(): Promise<any>;
22
+ }
23
+ export declare class CallChain {
24
+ private api;
25
+ private client;
26
+ private _pathParam?;
27
+ private _urlParam?;
28
+ private _data?;
29
+ private _headers?;
30
+ constructor(api: string, client: RestClient);
31
+ pathParam(pathParam?: URIParam): CallChain;
32
+ urlParam(urlParam?: URIParam): CallChain;
33
+ data(data: unknown): CallChain;
34
+ headers(headers: HeaderParam | {
35
+ headers: HeaderParam;
36
+ }): CallChain;
37
+ call<T = any>(data?: unknown): Promise<T | null>;
38
+ }
39
+ export declare class RestClient {
40
+ backend: RestClientBackend;
41
+ commonParam: any;
42
+ private config?;
43
+ static onStart?: (req: InternalAxiosRequestConfig) => InternalAxiosRequestConfig | void;
44
+ static onStop?: (response: AxiosResponse) => AxiosResponse | void;
45
+ static onResponseError?: (error: RestClientError) => boolean;
46
+ hook: (reqCfg: InternalAxiosRequestConfig) => InternalAxiosRequestConfig;
47
+ client: AxiosInstance;
48
+ get apiConfig(): APIConfig | undefined;
49
+ constructor(backend: RestClientBackend, commonParam?: any);
50
+ preload(): Promise<void>;
51
+ api(api: string): CallChain;
52
+ call<T = any>(api: string, pathParam?: URIParam, urlParam?: URIParam, data?: unknown, headers?: HeaderParam): Promise<T | null>;
53
+ getApiEndpoint(api: string, pathParam?: URIParam, urlParam?: URLSearchParams): Promise<{
54
+ endPoint: string;
55
+ method: string | undefined;
56
+ } | null>;
57
+ }
58
+ //# sourceMappingURL=RestClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RestClient.d.ts","sourceRoot":"","sources":["../../src/restclient/RestClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RestClient = exports.CallChain = exports.RestClientError = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const dot_object_1 = __importDefault(require("dot-object"));
9
+ const mustache_1 = __importDefault(require("mustache"));
10
+ const whatwg_url_1 = require("whatwg-url");
11
+ mustache_1.default.escape = (v) => v;
12
+ const renderTemplate = (templateString, templateVariables) => mustache_1.default.render(templateString, templateVariables);
13
+ class RestClientError extends Error {
14
+ constructor(message, response) {
15
+ super(message);
16
+ this.response = response;
17
+ }
18
+ }
19
+ exports.RestClientError = RestClientError;
20
+ class CallChain {
21
+ constructor(api, client) {
22
+ this.api = api;
23
+ this.client = client;
24
+ }
25
+ pathParam(pathParam) {
26
+ this._pathParam = pathParam;
27
+ return this;
28
+ }
29
+ urlParam(urlParam) {
30
+ this._urlParam = urlParam;
31
+ return this;
32
+ }
33
+ data(data) {
34
+ this._data = data;
35
+ return this;
36
+ }
37
+ headers(headers) {
38
+ this._headers = headers;
39
+ return this;
40
+ }
41
+ async call(data) {
42
+ this.data(data);
43
+ return this.client.call(this.api, this._pathParam, this._urlParam, this._data, this._headers);
44
+ }
45
+ }
46
+ exports.CallChain = CallChain;
47
+ class RestClient {
48
+ get apiConfig() {
49
+ return this.config;
50
+ }
51
+ constructor(backend, commonParam = {}) {
52
+ this.backend = backend;
53
+ this.commonParam = commonParam;
54
+ this.client = axios_1.default.create();
55
+ this.client.interceptors.request.use((req) => {
56
+ if (RestClient.onStart) {
57
+ const newReq = RestClient.onStart(req);
58
+ if (newReq) {
59
+ return newReq;
60
+ }
61
+ }
62
+ return req;
63
+ });
64
+ this.client.interceptors.response.use((response) => {
65
+ if (RestClient.onStop) {
66
+ const newRes = RestClient.onStop(response);
67
+ if (newRes) {
68
+ return newRes;
69
+ }
70
+ }
71
+ return response;
72
+ });
73
+ }
74
+ async preload() {
75
+ this.config = await this.backend.load(this);
76
+ }
77
+ api(api) {
78
+ return new CallChain(api, this);
79
+ }
80
+ async call(api, pathParam, urlParam, data, headers) {
81
+ if (!this.config) {
82
+ this.config = await this.backend.load(this);
83
+ }
84
+ const def = dot_object_1.default.pick(api, this.config);
85
+ if (!def) {
86
+ throw `API Define No Found! ${api} \n ${JSON.stringify(this.config, null, 2)}`;
87
+ }
88
+ let method = undefined;
89
+ let endPoint = undefined;
90
+ if (typeof def === 'string') {
91
+ method = 'GET';
92
+ endPoint = renderTemplate(def, Object.assign({}, this.commonParam, pathParam ?? {}));
93
+ console.log(`RestClient def: ${def}`);
94
+ console.log(`RestClient endPoint: ${endPoint}`);
95
+ }
96
+ else if (typeof def === 'object') {
97
+ const tDef = def;
98
+ method = tDef.method ?? 'GET';
99
+ endPoint = renderTemplate(tDef.endPoint, Object.assign({}, this.commonParam, pathParam ?? {}));
100
+ console.log(`RestClient def: ${JSON.stringify(tDef)}`);
101
+ console.log(`RestClient endPoint: ${endPoint}`);
102
+ }
103
+ const newHeaders = Object.assign({}, (await this.backend.headers()) ?? {}, headers ?? {});
104
+ if (process.env.NODE_ENV === 'development') {
105
+ console.log('RestClient', `Headers: ${JSON.stringify(newHeaders)}`);
106
+ }
107
+ try {
108
+ const requestCfg = {
109
+ responseType: 'json',
110
+ url: endPoint, method: method, params: urlParam, data,
111
+ headers: newHeaders.headers ? newHeaders.headers : newHeaders
112
+ };
113
+ if (this.hook) {
114
+ Object.assign(requestCfg, this.hook(requestCfg));
115
+ }
116
+ const resp = await this.client.request(requestCfg);
117
+ return resp.data;
118
+ }
119
+ catch (error) {
120
+ if (RestClient.onStop) {
121
+ RestClient.onStop(error.response);
122
+ }
123
+ if (error.response) {
124
+ const restClientError = new RestClientError(error.response.statusText, error.response);
125
+ let throwable = true;
126
+ if (RestClient.onResponseError) {
127
+ throwable = RestClient.onResponseError(restClientError);
128
+ }
129
+ if (!throwable) {
130
+ return null;
131
+ }
132
+ throw restClientError;
133
+ }
134
+ else {
135
+ throw error;
136
+ }
137
+ }
138
+ }
139
+ async getApiEndpoint(api, pathParam, urlParam) {
140
+ if (!this.config) {
141
+ this.config = await this.backend.load(this);
142
+ }
143
+ const def = dot_object_1.default.pick(api, this.config);
144
+ if (!def) {
145
+ throw `No API define found! ${api} \n ${JSON.stringify(this.config, null, 2)}`;
146
+ }
147
+ let method = undefined;
148
+ let endPoint = undefined;
149
+ if (typeof def === 'string') {
150
+ method = 'GET';
151
+ endPoint = renderTemplate(def, Object.assign({}, this.commonParam, pathParam ?? {}));
152
+ }
153
+ else if (typeof def === 'object') {
154
+ const tDef = def;
155
+ method = tDef.method ?? 'GET';
156
+ endPoint = renderTemplate(tDef.endPoint, Object.assign({}, this.commonParam, pathParam ?? {}));
157
+ }
158
+ if (endPoint) {
159
+ return { endPoint: `${endPoint}?${new whatwg_url_1.URLSearchParams(urlParam ?? {}).toString()}`, method };
160
+ }
161
+ else {
162
+ return null;
163
+ }
164
+ }
165
+ }
166
+ exports.RestClient = RestClient;
167
+ //# sourceMappingURL=RestClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RestClient.js","sourceRoot":"","sources":["../../src/restclient/RestClient.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAgG;AAChG,4DAA6B;AAC7B,wDAAgC;AAChC,2CAA6C;AAG7C,kBAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3B,MAAM,cAAc,GAAG,CAAC,cAAsB,EAAE,iBAAsB,EAAE,EAAE,CAAC,kBAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAE9H,MAAa,eAAgB,SAAQ,KAAK;IAGtC,YAAY,OAAe,EAAE,QAA6B;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CACJ;AAPD,0CAOC;AAkBD,MAAa,SAAS;IASlB,YAAoB,GAAW,EAAU,MAAkB;QAAvC,QAAG,GAAH,GAAG,CAAQ;QAAU,WAAM,GAAN,MAAM,CAAY;IAAI,CAAC;IAEhE,SAAS,CAAC,SAAoB;QAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,QAAmB;QACxB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,IAAa;QACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,OAA+C;QACnD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAU,IAAc;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrG,CAAC;CAEJ;AApCD,8BAoCC;AAED,MAAa,UAAU;IAanB,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,YAAmB,OAA0B,EAAS,cAAmB,EAAE;QAAxD,YAAO,GAAP,OAAO,CAAmB;QAAS,gBAAW,GAAX,WAAW,CAAU;QACvE,IAAI,CAAC,MAAM,GAAG,eAAK,CAAC,MAAM,EAAE,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACzC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,MAAM,EAAE,CAAC;oBACT,OAAO,MAAM,CAAC;gBAClB,CAAC;YACL,CAAC;YACD,OAAO,GAAG,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC/C,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,MAAM,EAAE,CAAC;oBACT,OAAO,MAAM,CAAC;gBAClB,CAAC;YACL,CAAC;YACD,OAAO,QAAQ,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC;IAEA,KAAK,CAAC,OAAO;QACV,IAAI,CAAC,MAAM,GAAE,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,SAAS,CAAC,GAAG,EAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,IAAI,CAAU,GAAW,EAAE,SAAoB,EAAE,QAAmB,EAAE,IAAe,EAAG,OAAqB;QAEhH,IAAG,CAAC,IAAI,CAAC,MAAM,EAAC,CAAC;YACb,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,GAAG,GAAG,oBAAG,CAAC,IAAI,CAAC,GAAG,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,IAAG,CAAC,GAAG,EAAC,CAAC;YACN,MAAM,wBAAwB,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAC,IAAI,EAAC,CAAC,CAAC,EAAE,CAAA;QAC/E,CAAC;QAED,IAAI,MAAM,GAAI,SAAS,CAAC;QACxB,IAAI,QAAQ,GAAE,SAAS,CAAC;QACxB,IAAG,OAAO,GAAG,KAAK,QAAQ,EAAC,CAAC;YACxB,MAAM,GAAE,KAAK,CAAC;YACd,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAC,IAAI,CAAC,WAAW,EAAC,SAAS,IAAE,EAAE,CAAC,CAAC,CAAA;YAC/E,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;aAAM,IAAG,OAAO,GAAG,KAAI,QAAQ,EAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,GAAe,CAAC;YAC7B,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;YAC9B,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/F,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,UAAU,GAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAE,EAAE,EAAC,OAAO,IAAE,EAAE,CAAC,CAAC;QAClF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC;YACF,MAAM,UAAU,GAA+B;gBAC7C,YAAY,EAAE,MAAM;gBACpB,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI;gBAC/D,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAA,CAAC,CAAA,UAAU;aAC5D,CAAC;YAEA,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,IAAS,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACnB,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACpB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAGjB,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACvF,IAAI,SAAS,GAAG,IAAI,CAAC;gBACrB,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;oBAC/B,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;gBAC1D,CAAC;gBACD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,MAAM,eAAe,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;QACN,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,SAAoB,EAAE,QAA0B;QAC/E,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,GAAG,GAAG,oBAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,wBAAwB,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACjF,CAAC;QACD,IAAI,MAAM,GAAG,SAAS,CAAC;QACvB,IAAI,QAAQ,GAAG,SAAS,CAAC;QACzB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,GAAG,KAAK,CAAC;YACf,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC;aAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,GAAe,CAAC;YAC7B,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;YAC9B,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,IAAI,IAAI,4BAAe,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;QAC/F,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CAEN;AA3ID,gCA2IC"}
@@ -0,0 +1,2 @@
1
+ export declare const loadConfig: (name: string) => any;
2
+ //# sourceMappingURL=Yamls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Yamls.d.ts","sourceRoot":"","sources":["../../src/restclient/Yamls.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,GAiBzC,CAAA"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.loadConfig = void 0;
7
+ const js_yaml_1 = __importDefault(require("js-yaml"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const mergeJSON = require("merge-json");
10
+ const loadConfig = (name) => {
11
+ const env = process.env.NODE_ENV;
12
+ const envConfigFile = `./config/${name}.${env}.yml`;
13
+ const configFile = `./config/${name}.yml`;
14
+ let config = {};
15
+ if (fs_1.default.existsSync(envConfigFile)) {
16
+ const envConfig = js_yaml_1.default.load(fs_1.default.readFileSync(envConfigFile, 'utf8'));
17
+ Object.assign(config, envConfig);
18
+ }
19
+ if (fs_1.default.existsSync(configFile)) {
20
+ const conf = js_yaml_1.default.load(fs_1.default.readFileSync(configFile, 'utf8'));
21
+ config = mergeJSON.merge(config, conf);
22
+ }
23
+ return config;
24
+ };
25
+ exports.loadConfig = loadConfig;
26
+ //# sourceMappingURL=Yamls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Yamls.js","sourceRoot":"","sources":["../../src/restclient/Yamls.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA2B;AAC3B,4CAAoB;AACpB,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAE;AAElC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAO,EAAE;IAEhD,MAAO,GAAG,GAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACnC,MAAM,aAAa,GAAG,YAAY,IAAI,IAAI,GAAG,MAAM,CAAC;IACpD,MAAM,UAAU,GAAI,YAAY,IAAI,MAAM,CAAE;IAC5C,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAG,YAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAC,CAAC;QAC9B,MAAM,SAAS,GAAE,iBAAI,CAAC,IAAI,CAAC,YAAE,CAAC,YAAY,CAAC,aAAa,EAAC,MAAM,CAAC,CAAC,CAAA;QACjE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IACD,IAAG,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,iBAAI,CAAC,IAAI,CAAC,YAAE,CAAC,YAAY,CAAC,UAAU,EAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEA,OAAO,MAAM,CAAC;AACf,CAAC,CAAA;AAjBY,QAAA,UAAU,cAiBtB"}
@@ -0,0 +1,6 @@
1
+ export * from './FSBackend';
2
+ export * from './HttpBackend';
3
+ export * from './NextSSRBackend';
4
+ export * from './RestClient';
5
+ export * from './Yamls';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/restclient/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./FSBackend"), exports);
18
+ __exportStar(require("./HttpBackend"), exports);
19
+ __exportStar(require("./NextSSRBackend"), exports);
20
+ __exportStar(require("./RestClient"), exports);
21
+ __exportStar(require("./Yamls"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/restclient/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAEA,8CAA4B;AAC5B,gDAA8B;AAC9B,mDAAiC;AACjC,+CAA6B;AAC7B,0CAAwB"}