@libs-ui/services-http-request 0.2.319-0 → 0.2.320-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.
@@ -12,6 +12,10 @@ export class LibsUiHttpRequestService {
12
12
  if (!httpRequestConfig || !httpRequestConfig.functionName) {
13
13
  throw 'http request config not exactly httpRequestConfig';
14
14
  }
15
+ const serviceOther = get(httpRequestConfig, 'serviceOther'); // TODO: sẽ xóa khi migrate hết component
16
+ if (serviceOther) {
17
+ set(httpRequestConfig, 'objectInstance', serviceOther);
18
+ }
15
19
  const { objectInstance, keyCache, functionName, argumentsValue, serviceClass } = httpRequestConfig;
16
20
  if (!objectInstance && !serviceClass) {
17
21
  throw `http request config not exactly objectInstance or serviceName`;
@@ -227,4 +231,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
227
231
  providedIn: 'root',
228
232
  }]
229
233
  }] });
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaHR0cC1yZXF1ZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTXJDLE1BQU0sT0FBTyx3QkFBd0I7SUFDM0IsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxnQ0FBZ0M7SUFDeEIsWUFBWSxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTVDLEtBQUssQ0FBQyxPQUFPLENBQVUsaUJBQXFDO1FBQ2pFLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFELE1BQU0sbURBQW1ELENBQUM7UUFDNUQsQ0FBQztRQUVELE1BQU0sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLEdBQUcsaUJBQWlCLENBQUM7UUFFbkcsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JDLE1BQU0sK0RBQStELENBQUM7UUFDeEUsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFRLGNBQWMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBSSxZQUFtQixDQUFDLENBQUM7UUFDbEYs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Ii8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUGFnaW5nIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBVdGlsc0NhY2hlLCBnZXQsIGdldEtleUNhY2hlQnlBcnJheU9iamVjdCwgaXNFbXB0eSwgc2V0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlLCBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWcsIElIdHRwUmVxdWVzdENvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9pbmRleCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlIdHRwUmVxdWVzdFNlcnZpY2Uge1xuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgLyoqIENo4bupYSBk4buvIGxp4buHdSBjYWNoZSBtZW1vcnkgKi9cbiAgcHJpdmF0ZSBzZXJ2aWNlU3RvcmU6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKCk7XG5cbiAgcHVibGljIGFzeW5jIGNhbGxBcGk8VCA9IGFueT4oaHR0cFJlcXVlc3RDb25maWc6IElIdHRwUmVxdWVzdENvbmZpZyk6IFByb21pc2U8VD4ge1xuICAgIGlmICghaHR0cFJlcXVlc3RDb25maWcgfHwgIWh0dHBSZXF1ZXN0Q29uZmlnLmZ1bmN0aW9uTmFtZSkge1xuICAgICAgdGhyb3cgJ2h0dHAgcmVxdWVzdCBjb25maWcgbm90IGV4YWN0bHkgaHR0cFJlcXVlc3RDb25maWcnO1xuICAgIH1cblxuICAgIGNvbnN0IHsgb2JqZWN0SW5zdGFuY2UsIGtleUNhY2hlLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50c1ZhbHVlLCBzZXJ2aWNlQ2xhc3MgfSA9IGh0dHBSZXF1ZXN0Q29uZmlnO1xuXG4gICAgaWYgKCFvYmplY3RJbnN0YW5jZSAmJiAhc2VydmljZUNsYXNzKSB7XG4gICAgICB0aHJvdyBgaHR0cCByZXF1ZXN0IGNvbmZpZyBub3QgZXhhY3RseSBvYmplY3RJbnN0YW5jZSBvciBzZXJ2aWNlTmFtZWA7XG4gICAgfVxuICAgIGNvbnN0IGluc3RhbmNlOiBhbnkgPSBvYmplY3RJbnN0YW5jZSB8fCB0aGlzLmluamVjdG9yLmdldDxUPihzZXJ2aWNlQ2xhc3MgYXMgYW55KTtcbiAgICBpZiAoIWluc3RhbmNlKSB7XG4gICAgICB0aHJvdyBgaHR0cCByZXF1ZXN0IG5vdGZvdW5kIHNlcnZpY2UgaW5zdGFuY2VgO1xuICAgIH1cbiAgICBjb25zdCBtZXRob2RJbnN0YW5jZSA9IGluc3RhbmNlW2Z1bmN0aW9uTmFtZV07XG5cbiAgICBpZiAoIW1ldGhvZEluc3RhbmNlKSB7XG4gICAgICB0aHJvdyBgaHR0cCByZXF1ZXN0IGNvbmZpZyBub3Rmb3VuZCBtZXRob2RJbnN0YW5jZSBuYW1lOiAke1N0cmluZyhmdW5jdGlvbk5hbWUpfWA7XG4gICAgfVxuICAgIGNvbnN0IGtleUNhY2hlTUQ1OiBzdHJpbmcgPSBnZXRLZXlDYWNoZUJ5QXJyYXlPYmplY3Qoa2V5Q2FjaGUgfHwgJycsIGFyZ3VtZW50c1ZhbHVlKTtcbiAgICBjb25zdCBjYWNoZURhdGEgPSBhd2FpdCB0aGlzLmdldENhY2hlRGF0YShodHRwUmVxdWVzdENvbmZpZywga2V5Q2FjaGVNRDUpO1xuXG4gICAgaWYgKGNhY2hlRGF0YSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjYWNoZURhdGEpO1xuICAgIH1cblxuICAgIGxldCBjYWxsUmVzcG9uc2UgPSBtZXRob2RJbnN0YW5jZS5hcHBseShpbnN0YW5jZSwgYXJndW1lbnRzVmFsdWUpO1xuICAgIGlmICghY2FsbFJlc3BvbnNlLnRoZW4pIHtcbiAgICAgIGNhbGxSZXNwb25zZSA9IGxhc3RWYWx1ZUZyb20oY2FsbFJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBjYWxsUmVzcG9uc2U7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZXRDYWNoZURhdGEocmVzLCBodHRwUmVxdWVzdENvbmZpZywga2V5Q2FjaGVNRDUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDYWNoZURhdGEoaHR0cFJlcXVlc3RDb25maWc6IElIdHRwUmVxdWVzdENvbmZpZywga2V5Q2FjaGU6IHN0cmluZykge1xuICAgIGNvbnN0IHsgY2FjaGVUeXBlLCBjb252ZXJ0UmVzcG9uc2VEYXRhIH0gPSBodHRwUmVxdWVzdENvbmZpZztcblxuICAgIGlmICghY2FjaGVUeXBlIHx8ICFrZXlDYWNoZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKGNhY2hlVHlwZSA9PT0gJ3NlcnZpY2UnKSB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5zZXJ2aWNlU3RvcmUuZ2V0KGtleUNhY2hlKTtcblxuICAgICAgcmV0dXJuIGRhdGEgPyAoY29udmVydFJlc3BvbnNlRGF0YSA/IGNvbnZlcnRSZXNwb25zZURhdGEoZGF0YSkgOiBkYXRhKSA6IGRhdGE7XG4gICAgfVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBVdGlsc0NhY2hlLkdldEFzeW5jKGtleUNhY2hlLCB1bmRlZmluZWQsIHRydWUpO1xuXG4gICAgcmV0dXJuIGRhdGEgPyAoY29udmVydFJlc3BvbnNlRGF0YSA/IGNvbnZlcnRSZXNwb25zZURhdGEoZGF0YSkgOiBkYXRhKSA6IGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldENhY2hlRGF0YShkYXRhOiBhbnksIGh0dHBSZXF1ZXN0Q29uZmlnOiBJSHR0cFJlcXVlc3RDb25maWcsIGtleUNhY2hlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGNhY2hlVHlwZSwgY2xlYXJDYWNoZSwgY29udmVydFJlc3BvbnNlRGF0YSB9ID0gaHR0cFJlcXVlc3RDb25maWc7XG5cbiAgICBpZiAoIWNhY2hlVHlwZSB8fCAha2V5Q2FjaGUpIHtcbiAgICAgIHJldHVybiBjb252ZXJ0UmVzcG9uc2VEYXRhID8gY29udmVydFJlc3BvbnNlRGF0YShkYXRhKSA6IGRhdGE7XG4gICAgfVxuICAgIGlmIChjbGVhckNhY2hlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmNsZWFyQ2FjaGUoY2FjaGVUeXBlLCBrZXlDYWNoZSk7XG4gICAgfVxuICAgIGlmIChjYWNoZVR5cGUgPT09ICdzZXJ2aWNlJykge1xuICAgICAgdGhpcy5zZXJ2aWNlU3RvcmUuc2V0KGtleUNhY2hlLCBkYXRhKTtcblxuICAgICAgcmV0dXJuIGNvbnZlcnRSZXNwb25zZURhdGEgPyBjb252ZXJ0UmVzcG9uc2VEYXRhKGRhdGEpIDogZGF0YTtcbiAgICB9XG4gICAgYXdhaXQgVXRpbHNDYWNoZS5TZXRBc3luYyhrZXlDYWNoZSwgZGF0YSwgKGh0dHBSZXF1ZXN0Q29uZmlnLnRpbWVDYWNoZSB8fCA1KSAqIDYwLCB0cnVlKTtcblxuICAgIHJldHVybiBjb252ZXJ0UmVzcG9uc2VEYXRhID8gY29udmVydFJlc3BvbnNlRGF0YShkYXRhKSA6IGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQ2FjaGUoY2FjaGVUeXBlOiAnc2VydmljZScgfCAnbG9jYWwtc3RvcmUnLCBrZXlDYWNoZTogc3RyaW5nKSB7XG4gICAgaWYgKGNhY2hlVHlwZSA9PT0gJ3NlcnZpY2UnKSB7XG4gICAgICB0aGlzLnNlcnZpY2VTdG9yZS5kZWxldGUoa2V5Q2FjaGUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFV0aWxzQ2FjaGUuQ2xlYXJBc3luYyhrZXlDYWNoZSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB0cuG6oyB24buBIHRy4bqhbmcgdGjDoWkgxJHDoyBsb2FkIGjhur90IGl0ZW0gY2jGsGEgKHbDrSBk4bulOiBk4buxYSB2w6BvIHRoYW0gc+G7kSBuw6B5IMSR4buDIHF1eeG6v3QgxJHhu4tuaCBjw7MgdGnhur9wIHThu6VjIGfhu41pIGFwaSBraGkgc2Nyb2xsIGtvKSAuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlQXJndW1lbnRzKFxuICAgIGFyZ3VtZW50c1ZhbHVlOiBBcnJheTxhbnk+LFxuICAgIG9iamVjdEdldERhdGFVcGRhdGU6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgcGFnaW5nU3RvcmU6IElQYWdpbmcsXG4gICAga2V5U2VhcmNoOiBzdHJpbmcsXG4gICAgc2VhcmNoT25saW5lOiBib29sZWFuLFxuICAgIGxvYWRlZExhc3RJdGVtOiBib29sZWFuLFxuICAgIGd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlPzogSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmICghYXJndW1lbnRzVmFsdWUgfHwgIShhcmd1bWVudHNWYWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB8fCBsb2FkZWRMYXN0SXRlbSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlQXJndW1lbnRzRGVmYXVsdChhcmd1bWVudHNWYWx1ZSwgdHJ1ZSwgcGFnaW5nU3RvcmUsIGtleVNlYXJjaCwgc2VhcmNoT25saW5lKTtcbiAgICB9XG4gICAgY29uc3QgeyBwYWdpbmcsIHNlYXJjaCwgb3RoZXIsIGRldGFpbEJ5SWQsIHNvcnRPcmRlclR5cGUsIHNvcnRPcmRlckJ5IH0gPSBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZTtcblxuICAgIGlmIChzZWFyY2gpIHtcbiAgICAgIHNlYXJjaC5maWVsZEdldFZhbHVlID0gJ2tleVNlYXJjaCc7XG4gICAgICB0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCB7IGtleVNlYXJjaCB9LCBzZWFyY2gpO1xuICAgIH1cbiAgICBpZiAob2JqZWN0R2V0RGF0YVVwZGF0ZT8uWydzdG9yZVBhcmFtc0NhbGxBcGknXSAmJiB0eXBlb2Ygb2JqZWN0R2V0RGF0YVVwZGF0ZT8uWydzdG9yZVBhcmFtc0NhbGxBcGknXSA9PT0gJ29iamVjdCcgJiYgIShvYmplY3RHZXREYXRhVXBkYXRlPy5bJ3N0b3JlUGFyYW1zQ2FsbEFwaSddIGFzIGFueSkuaW5zdGFuY2VTb3J0KSB7XG4gICAgICBvYmplY3RHZXREYXRhVXBkYXRlWydzdG9yZVBhcmFtc0NhbGxBcGknXSA9IHsgLi4ub2JqZWN0R2V0RGF0YVVwZGF0ZVsnc3RvcmVQYXJhbXNDYWxsQXBpJ10sIGluc3RhbmNlU29ydDoge30gfTtcbiAgICB9XG4gICAgaWYgKHNvcnRPcmRlckJ5KSB7XG4gICAgICB0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBzb3J0T3JkZXJCeSk7XG4gICAgfVxuICAgIGlmIChzb3J0T3JkZXJUeXBlKSB7XG4gICAgICB0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBzb3J0T3JkZXJUeXBlKTtcbiAgICB9XG4gICAgaWYgKG90aGVyICYmIG90aGVyLmxlbmd0aCkge1xuICAgICAgb3RoZXIuZm9yRWFjaCgoY29uZmlnKSA9PiB0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBjb25maWcpKTtcbiAgICB9XG4gICAgaWYgKGRldGFpbEJ5SWQpIHtcbiAgICAgIGRldGFpbEJ5SWQuZmllbGRHZXRWYWx1ZSA9IGRldGFpbEJ5SWQuZmllbGRHZXRWYWx1ZSB8fCBkZXRhaWxCeUlkLmZpZWxkR2V0VmFsdWUudHJpbSgpIHx8ICdrZXknO1xuICAgICAgdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgZGV0YWlsQnlJZCk7XG4gICAgfVxuXG4gICAgaWYgKGlzRW1wdHkocGFnaW5nKSkge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlQXJndW1lbnRzRGVmYXVsdChhcmd1bWVudHNWYWx1ZSwgZmFsc2UsIHBhZ2luZ1N0b3JlIHx8IHRoaXMuZmFrZVJlc3BvbnNlUGFnaW5nQXBpKClbJ3BhZ2luZyddLCBrZXlTZWFyY2gsIHNlYXJjaE9ubGluZSk7XG4gICAgfVxuICAgIGNvbnN0IHsgcGFnZSwgYmVmb3JlLCBhZnRlciB9ID0gcGFnaW5nO1xuXG4gICAgaWYgKHBhZ2UgJiYgb2JqZWN0R2V0RGF0YVVwZGF0ZSkge1xuICAgICAgcGFnZS5wcmVwcm9jZXNzb3IgPSAodmFsdWU6IG51bWJlcik6IG51bWJlciA9PiB7XG4gICAgICAgIHJldHVybiArK3ZhbHVlO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHZhbHVlUGFnZSA9ICt0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBwYWdlKTtcbiAgICAgIGNvbnN0IHZhbHVlTGFzdFBhZ2UgPSArZ2V0KG9iamVjdEdldERhdGFVcGRhdGUgYXMgYW55LCAncGFnaW5nLnRvdGFsX3BhZ2VzJyk7XG5cbiAgICAgIGlmICgodmFsdWVQYWdlICYmIE51bWJlcih2YWx1ZVBhZ2UpLnZhbHVlT2YoKSA+IE51bWJlcih2YWx1ZUxhc3RQYWdlKS52YWx1ZU9mKCkpIHx8IHZhbHVlTGFzdFBhZ2UgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChiZWZvcmUgJiYgb2JqZWN0R2V0RGF0YVVwZGF0ZSAmJiAhdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgYmVmb3JlKSAmJiAhZ2V0KG9iamVjdEdldERhdGFVcGRhdGUsICdwYWdpbmcuZmFrZScpKSB7XG4gICAgICBzZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgJ3BhZ2luZy5mYWtlJywgZmFsc2UpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGFmdGVyICYmIG9iamVjdEdldERhdGFVcGRhdGUgJiYgIXRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIGFmdGVyKSAmJiAhZ2V0KG9iamVjdEdldERhdGFVcGRhdGUsICdwYWdpbmcuZmFrZScpKSB7XG4gICAgICBzZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgJ3BhZ2luZy5mYWtlJywgZmFsc2UpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWFyZ3VtZW50c1ZhbHVlIHx8ICFhcmd1bWVudHNWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQXJndW1lbnRzRGVmYXVsdChhcmd1bWVudHNWYWx1ZTogQXJyYXk8YW55PiwgdXBkYXRlU2VhcmNoOiBib29sZWFuLCBwYWdpbmdTdG9yZTogSVBhZ2luZywga2V5U2VhcmNoOiBzdHJpbmcsIHNlYXJjaE9ubGluZTogYm9vbGVhbikge1xuICAgIGlmICghYXJndW1lbnRzVmFsdWUgfHwgIWFyZ3VtZW50c1ZhbHVlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBpbmRleCBpbiBhcmd1bWVudHNWYWx1ZSkge1xuICAgICAgbGV0IGFyZ3VtZW50VmFsdWUgPSBhcmd1bWVudHNWYWx1ZVtpbmRleF07XG5cbiAgICAgIGlmICghKGFyZ3VtZW50VmFsdWUgaW5zdGFuY2VvZiBIdHRwUGFyYW1zKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZ2VWYWx1ZSA9IGFyZ3VtZW50VmFsdWUuZ2V0KCdwYWdlJyk7XG5cbiAgICAgIGlmIChzZWFyY2hPbmxpbmUgJiYgdXBkYXRlU2VhcmNoKSB7XG4gICAgICAgIGFyZ3VtZW50VmFsdWUgPSBhcmd1bWVudFZhbHVlLnNldCgnc2VhcmNoJywga2V5U2VhcmNoKTtcbiAgICAgICAgYXJndW1lbnRzVmFsdWVbaW5kZXhdID0gYXJndW1lbnRWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmd1bWVudFZhbHVlLmhhcygnYmVmb3JlJykpIHtcbiAgICAgICAgYXJndW1lbnRWYWx1ZSA9IGFyZ3VtZW50VmFsdWUuc2V0KCdiZWZvcmUnLCBwYWdpbmdTdG9yZT8uYmVmb3JlKTtcbiAgICAgICAgYXJndW1lbnRzVmFsdWVbaW5kZXhdID0gYXJndW1lbnRWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmd1bWVudFZhbHVlLmhhcygnYWZ0ZXInKSkge1xuICAgICAgICBhcmd1bWVudFZhbHVlID0gYXJndW1lbnRWYWx1ZS5zZXQoJ2FmdGVyJywgcGFnaW5nU3RvcmU/LmFmdGVyKTtcbiAgICAgICAgYXJndW1lbnRzVmFsdWVbaW5kZXhdID0gYXJndW1lbnRWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChOdW1iZXIocGFnZVZhbHVlKS52YWx1ZU9mKCkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFwYWdpbmdTdG9yZSB8fCBwYWdlVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBwYWdlLCB0b3RhbF9wYWdlcyB9ID0gcGFnaW5nU3RvcmU7XG4gICAgICBjb25zdCBuZXh0UGFnZSA9IChwYWdlIHx8IDApICsgMTtcblxuICAgICAgaWYgKG5leHRQYWdlICYmIE51bWJlcihuZXh0UGFnZSkudmFsdWVPZigpID4gTnVtYmVyKHRvdGFsX3BhZ2VzKS52YWx1ZU9mKCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlLnNldCgncGFnZScsIG5leHRQYWdlKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWU6IEFycmF5PGFueT4sIG9iamVjdEdldERhdGFVcGRhdGU6IGFueSwgY29uZmlnOiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWcpIHtcbiAgICBpZiAoIWNvbmZpZyB8fCAhb2JqZWN0R2V0RGF0YVVwZGF0ZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5sb2c/LmxvZ0lucHV0cykge1xuICAgICAgY29uc29sZS5sb2coJ2NvbmZpZycsIGNvbmZpZyk7XG4gICAgICBjb25zb2xlLmxvZygnb2JqZWN0R2V0RGF0YVVwZGF0ZScsIG9iamVjdEdldERhdGFVcGRhdGUpO1xuICAgICAgY29uc29sZS5sb2coJ2FyZ3VtZW50c1ZhbHVlJywgYXJndW1lbnRzVmFsdWUpO1xuICAgICAgY29uc29sZS5sb2coJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJyk7XG4gICAgfVxuICAgIGNvbnN0IHsgZmllbGRVcGRhdGUsIGZpZWxkR2V0VmFsdWUsIHByZXByb2Nlc3NvciB9ID0gY29uZmlnO1xuXG4gICAgaWYgKCFmaWVsZFVwZGF0ZSB8fCAhZmllbGRHZXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSBnZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgZmllbGRHZXRWYWx1ZSk7XG4gICAgaWYgKGNvbmZpZy5sb2c/LmxvZ0dldFZhbHVlKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdmFsdWUgb2Ygb2JqZWN0R2V0RGF0YVVwZGF0ZVske2ZpZWxkR2V0VmFsdWV9XTogYCwgdmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChwcmVwcm9jZXNzb3IpIHtcbiAgICAgIHZhbHVlID0gcHJlcHJvY2Vzc29yKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGZpZWxkVXBkYXRlKSB7XG4gICAgICBsZXQgcmVzdWx0T2ZGaWVsZFVwZGF0ZSA9IGdldChhcmd1bWVudHNWYWx1ZSwgZmllbGRVcGRhdGUgYXMgYW55KTtcblxuICAgICAgaWYgKHJlc3VsdE9mRmllbGRVcGRhdGUgaW5zdGFuY2VvZiBIdHRwUGFyYW1zKSB7XG4gICAgICAgIHJlc3VsdE9mRmllbGRVcGRhdGUgPSByZXN1bHRPZkZpZWxkVXBkYXRlLnNldChjb25maWcuc3ViRmllbGRVcGRhdGUgfHwgJ3NlYXJjaCcsIHZhbHVlKTtcbiAgICAgICAgc2V0KGFyZ3VtZW50c1ZhbHVlLCBmaWVsZFVwZGF0ZSBhcyBhbnksIHJlc3VsdE9mRmllbGRVcGRhdGUpO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHRPZkZpZWxkVXBkYXRlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgcmVzdWx0T2ZGaWVsZFVwZGF0ZS5wdXNoKHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0T2ZGaWVsZFVwZGF0ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICBzZXQocmVzdWx0T2ZGaWVsZFVwZGF0ZSwgY29uZmlnLnN1YkZpZWxkVXBkYXRlIHx8ICdzZWFyY2gnLCB2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgc2V0KGFyZ3VtZW50c1ZhbHVlLCBmaWVsZFVwZGF0ZSBhcyBhbnksIHZhbHVlKTtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBmYWtlUmVzcG9uc2VQYWdpbmdBcGkoKTogeyBwYWdpbmc6IElQYWdpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2luZzoge1xuICAgICAgICBwYWdlOiAwLFxuICAgICAgICB0b3RhbF9wYWdlczogMSxcbiAgICAgICAgYmVmb3JlOiAnJyxcbiAgICAgICAgYWZ0ZXI6ICcnLFxuICAgICAgICBmYWtlOiB0cnVlLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaHR0cC1yZXF1ZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTXJDLE1BQU0sT0FBTyx3QkFBd0I7SUFDM0IsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxnQ0FBZ0M7SUFDeEIsWUFBWSxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTVDLEtBQUssQ0FBQyxPQUFPLENBQVUsaUJBQXFDO1FBQ2pFLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFELE1BQU0sbURBQW1ELENBQUM7UUFDNUQsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBVSxpQkFBaUIsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztRQUUvRyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsTUFBTSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQztR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Q1QsSUFBSSxFQUFFLElBQUk7YUFDWDtTQUNGLENBQUM7SUFDSixDQUFDO3dHQWhSVSx3QkFBd0I7NEdBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzs0RkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQYWdpbmcgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcbmltcG9ydCB7IFV0aWxzQ2FjaGUsIGdldCwgZ2V0S2V5Q2FjaGVCeUFycmF5T2JqZWN0LCBpc0VtcHR5LCBzZXQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUsIElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZywgSUh0dHBSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2luZGV4JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUh0dHBSZXF1ZXN0U2VydmljZSB7XG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAvKiogQ2jhu6lhIGThu68gbGnhu4d1IGNhY2hlIG1lbW9yeSAqL1xuICBwcml2YXRlIHNlcnZpY2VTdG9yZTogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoKTtcblxuICBwdWJsaWMgYXN5bmMgY2FsbEFwaTxUID0gYW55PihodHRwUmVxdWVzdENvbmZpZzogSUh0dHBSZXF1ZXN0Q29uZmlnKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCFodHRwUmVxdWVzdENvbmZpZyB8fCAhaHR0cFJlcXVlc3RDb25maWcuZnVuY3Rpb25OYW1lKSB7XG4gICAgICB0aHJvdyAnaHR0cCByZXF1ZXN0IGNvbmZpZyBub3QgZXhhY3RseSBodHRwUmVxdWVzdENvbmZpZyc7XG4gICAgfVxuICAgIGNvbnN0IHNlcnZpY2VPdGhlciA9IGdldDx1bmtub3duPihodHRwUmVxdWVzdENvbmZpZywgJ3NlcnZpY2VPdGhlcicpOyAvLyBUT0RPOiBz4bq9IHjDs2Ega2hpIG1pZ3JhdGUgaOG6v3QgY29tcG9uZW50XG5cbiAgICBpZiAoc2VydmljZU90aGVyKSB7XG4gICAgICBzZXQoaHR0cFJlcXVlc3RDb25maWcsICdvYmplY3RJbnN0YW5jZScsIHNlcnZpY2VPdGhlcik7XG4gICAgfVxuXG4gICAgY29uc3QgeyBvYmplY3RJbnN0YW5jZSwga2V5Q2FjaGUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRzVmFsdWUsIHNlcnZpY2VDbGFzcyB9ID0gaHR0cFJlcXVlc3RDb25maWc7XG5cbiAgICBpZiAoIW9iamVjdEluc3RhbmNlICYmICFzZXJ2aWNlQ2xhc3MpIHtcbiAgICAgIHRocm93IGBodHRwIHJlcXVlc3QgY29uZmlnIG5vdCBleGFjdGx5IG9iamVjdEluc3RhbmNlIG9yIHNlcnZpY2VOYW1lYDtcbiAgICB9XG4gICAgY29uc3QgaW5zdGFuY2U6IGFueSA9IG9iamVjdEluc3RhbmNlIHx8IHRoaXMuaW5qZWN0b3IuZ2V0PFQ+KHNlcnZpY2VDbGFzcyBhcyBhbnkpO1xuICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgIHRocm93IGBodHRwIHJlcXVlc3Qgbm90Zm91bmQgc2VydmljZSBpbnN0YW5jZWA7XG4gICAgfVxuICAgIGNvbnN0IG1ldGhvZEluc3RhbmNlID0gaW5zdGFuY2VbZnVuY3Rpb25OYW1lXTtcblxuICAgIGlmICghbWV0aG9kSW5zdGFuY2UpIHtcbiAgICAgIHRocm93IGBodHRwIHJlcXVlc3QgY29uZmlnIG5vdGZvdW5kIG1ldGhvZEluc3RhbmNlIG5hbWU6ICR7U3RyaW5nKGZ1bmN0aW9uTmFtZSl9YDtcbiAgICB9XG4gICAgY29uc3Qga2V5Q2FjaGVNRDU6IHN0cmluZyA9IGdldEtleUNhY2hlQnlBcnJheU9iamVjdChrZXlDYWNoZSB8fCAnJywgYXJndW1lbnRzVmFsdWUpO1xuICAgIGNvbnN0IGNhY2hlRGF0YSA9IGF3YWl0IHRoaXMuZ2V0Q2FjaGVEYXRhKGh0dHBSZXF1ZXN0Q29uZmlnLCBrZXlDYWNoZU1ENSk7XG5cbiAgICBpZiAoY2FjaGVEYXRhKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNhY2hlRGF0YSk7XG4gICAgfVxuXG4gICAgbGV0IGNhbGxSZXNwb25zZSA9IG1ldGhvZEluc3RhbmNlLmFwcGx5KGluc3RhbmNlLCBhcmd1bWVudHNWYWx1ZSk7XG4gICAgaWYgKCFjYWxsUmVzcG9uc2UudGhlbikge1xuICAgICAgY2FsbFJlc3BvbnNlID0gbGFzdFZhbHVlRnJvbShjYWxsUmVzcG9uc2UpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNhbGxSZXNwb25zZTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnNldENhY2hlRGF0YShyZXMsIGh0dHBSZXF1ZXN0Q29uZmlnLCBrZXlDYWNoZU1ENSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldENhY2hlRGF0YShodHRwUmVxdWVzdENvbmZpZzogSUh0dHBSZXF1ZXN0Q29uZmlnLCBrZXlDYWNoZTogc3RyaW5nKSB7XG4gICAgY29uc3QgeyBjYWNoZVR5cGUsIGNvbnZlcnRSZXNwb25zZURhdGEgfSA9IGh0dHBSZXF1ZXN0Q29uZmlnO1xuXG4gICAgaWYgKCFjYWNoZVR5cGUgfHwgIWtleUNhY2hlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoY2FjaGVUeXBlID09PSAnc2VydmljZScpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNlcnZpY2VTdG9yZS5nZXQoa2V5Q2FjaGUpO1xuXG4gICAgICByZXR1cm4gZGF0YSA/IChjb252ZXJ0UmVzcG9uc2VEYXRhID8gY29udmVydFJlc3BvbnNlRGF0YShkYXRhKSA6IGRhdGEpIDogZGF0YTtcbiAgICB9XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IFV0aWxzQ2FjaGUuR2V0QXN5bmMoa2V5Q2FjaGUsIHVuZGVmaW5lZCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gZGF0YSA/IChjb252ZXJ0UmVzcG9uc2VEYXRhID8gY29udmVydFJlc3BvbnNlRGF0YShkYXRhKSA6IGRhdGEpIDogZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0Q2FjaGVEYXRhKGRhdGE6IGFueSwgaHR0cFJlcXVlc3RDb25maWc6IElIdHRwUmVxdWVzdENvbmZpZywga2V5Q2FjaGU6IHN0cmluZykge1xuICAgIGNvbnN0IHsgY2FjaGVUeXBlLCBjbGVhckNhY2hlLCBjb252ZXJ0UmVzcG9uc2VEYXRhIH0gPSBodHRwUmVxdWVzdENvbmZpZztcblxuICAgIGlmICghY2FjaGVUeXBlIHx8ICFrZXlDYWNoZSkge1xuICAgICAgcmV0dXJuIGNvbnZlcnRSZXNwb25zZURhdGEgPyBjb252ZXJ0UmVzcG9uc2VEYXRhKGRhdGEpIDogZGF0YTtcbiAgICB9XG4gICAgaWYgKGNsZWFyQ2FjaGUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuY2xlYXJDYWNoZShjYWNoZVR5cGUsIGtleUNhY2hlKTtcbiAgICB9XG4gICAgaWYgKGNhY2hlVHlwZSA9PT0gJ3NlcnZpY2UnKSB7XG4gICAgICB0aGlzLnNlcnZpY2VTdG9yZS5zZXQoa2V5Q2FjaGUsIGRhdGEpO1xuXG4gICAgICByZXR1cm4gY29udmVydFJlc3BvbnNlRGF0YSA/IGNvbnZlcnRSZXNwb25zZURhdGEoZGF0YSkgOiBkYXRhO1xuICAgIH1cbiAgICBhd2FpdCBVdGlsc0NhY2hlLlNldEFzeW5jKGtleUNhY2hlLCBkYXRhLCAoaHR0cFJlcXVlc3RDb25maWcudGltZUNhY2hlIHx8IDUpICogNjAsIHRydWUpO1xuXG4gICAgcmV0dXJuIGNvbnZlcnRSZXNwb25zZURhdGEgPyBjb252ZXJ0UmVzcG9uc2VEYXRhKGRhdGEpIDogZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJDYWNoZShjYWNoZVR5cGU6ICdzZXJ2aWNlJyB8ICdsb2NhbC1zdG9yZScsIGtleUNhY2hlOiBzdHJpbmcpIHtcbiAgICBpZiAoY2FjaGVUeXBlID09PSAnc2VydmljZScpIHtcbiAgICAgIHRoaXMuc2VydmljZVN0b3JlLmRlbGV0ZShrZXlDYWNoZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgVXRpbHNDYWNoZS5DbGVhckFzeW5jKGtleUNhY2hlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHRy4bqjIHbhu4EgdHLhuqFuZyB0aMOhaSDEkcOjIGxvYWQgaOG6v3QgaXRlbSBjaMawYSAodsOtIGThu6U6IGThu7FhIHbDoG8gdGhhbSBz4buRIG7DoHkgxJHhu4MgcXV54bq/dCDEkeG7i25oIGPDsyB0aeG6v3AgdOG7pWMgZ+G7jWkgYXBpIGtoaSBzY3JvbGwga28pIC5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVBcmd1bWVudHMoXG4gICAgYXJndW1lbnRzVmFsdWU6IEFycmF5PGFueT4sXG4gICAgb2JqZWN0R2V0RGF0YVVwZGF0ZTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBwYWdpbmdTdG9yZTogSVBhZ2luZyxcbiAgICBrZXlTZWFyY2g6IHN0cmluZyxcbiAgICBzZWFyY2hPbmxpbmU6IGJvb2xlYW4sXG4gICAgbG9hZGVkTGFzdEl0ZW06IGJvb2xlYW4sXG4gICAgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWU/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKCFhcmd1bWVudHNWYWx1ZSB8fCAhKGFyZ3VtZW50c1ZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHx8IGxvYWRlZExhc3RJdGVtKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVBcmd1bWVudHNEZWZhdWx0KGFyZ3VtZW50c1ZhbHVlLCB0cnVlLCBwYWdpbmdTdG9yZSwga2V5U2VhcmNoLCBzZWFyY2hPbmxpbmUpO1xuICAgIH1cbiAgICBjb25zdCB7IHBhZ2luZywgc2VhcmNoLCBvdGhlciwgZGV0YWlsQnlJZCwgc29ydE9yZGVyVHlwZSwgc29ydE9yZGVyQnkgfSA9IGd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlO1xuXG4gICAgaWYgKHNlYXJjaCkge1xuICAgICAgc2VhcmNoLmZpZWxkR2V0VmFsdWUgPSAna2V5U2VhcmNoJztcbiAgICAgIHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIHsga2V5U2VhcmNoIH0sIHNlYXJjaCk7XG4gICAgfVxuICAgIGlmIChvYmplY3RHZXREYXRhVXBkYXRlPy5bJ3N0b3JlUGFyYW1zQ2FsbEFwaSddICYmIHR5cGVvZiBvYmplY3RHZXREYXRhVXBkYXRlPy5bJ3N0b3JlUGFyYW1zQ2FsbEFwaSddID09PSAnb2JqZWN0JyAmJiAhKG9iamVjdEdldERhdGFVcGRhdGU/Llsnc3RvcmVQYXJhbXNDYWxsQXBpJ10gYXMgYW55KS5pbnN0YW5jZVNvcnQpIHtcbiAgICAgIG9iamVjdEdldERhdGFVcGRhdGVbJ3N0b3JlUGFyYW1zQ2FsbEFwaSddID0geyAuLi5vYmplY3RHZXREYXRhVXBkYXRlWydzdG9yZVBhcmFtc0NhbGxBcGknXSwgaW5zdGFuY2VTb3J0OiB7fSB9O1xuICAgIH1cbiAgICBpZiAoc29ydE9yZGVyQnkpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIHNvcnRPcmRlckJ5KTtcbiAgICB9XG4gICAgaWYgKHNvcnRPcmRlclR5cGUpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIHNvcnRPcmRlclR5cGUpO1xuICAgIH1cbiAgICBpZiAob3RoZXIgJiYgb3RoZXIubGVuZ3RoKSB7XG4gICAgICBvdGhlci5mb3JFYWNoKChjb25maWcpID0+IHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIGNvbmZpZykpO1xuICAgIH1cbiAgICBpZiAoZGV0YWlsQnlJZCkge1xuICAgICAgZGV0YWlsQnlJZC5maWVsZEdldFZhbHVlID0gZGV0YWlsQnlJZC5maWVsZEdldFZhbHVlIHx8IGRldGFpbEJ5SWQuZmllbGRHZXRWYWx1ZS50cmltKCkgfHwgJ2tleSc7XG4gICAgICB0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBkZXRhaWxCeUlkKTtcbiAgICB9XG5cbiAgICBpZiAoaXNFbXB0eShwYWdpbmcpKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVBcmd1bWVudHNEZWZhdWx0KGFyZ3VtZW50c1ZhbHVlLCBmYWxzZSwgcGFnaW5nU3RvcmUgfHwgdGhpcy5mYWtlUmVzcG9uc2VQYWdpbmdBcGkoKVsncGFnaW5nJ10sIGtleVNlYXJjaCwgc2VhcmNoT25saW5lKTtcbiAgICB9XG4gICAgY29uc3QgeyBwYWdlLCBiZWZvcmUsIGFmdGVyIH0gPSBwYWdpbmc7XG5cbiAgICBpZiAocGFnZSAmJiBvYmplY3RHZXREYXRhVXBkYXRlKSB7XG4gICAgICBwYWdlLnByZXByb2Nlc3NvciA9ICh2YWx1ZTogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICAgICAgcmV0dXJuICsrdmFsdWU7XG4gICAgICB9O1xuICAgICAgY29uc3QgdmFsdWVQYWdlID0gK3RoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIHBhZ2UpO1xuICAgICAgY29uc3QgdmFsdWVMYXN0UGFnZSA9ICtnZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSBhcyBhbnksICdwYWdpbmcudG90YWxfcGFnZXMnKTtcblxuICAgICAgaWYgKCh2YWx1ZVBhZ2UgJiYgTnVtYmVyKHZhbHVlUGFnZSkudmFsdWVPZigpID4gTnVtYmVyKHZhbHVlTGFzdFBhZ2UpLnZhbHVlT2YoKSkgfHwgdmFsdWVMYXN0UGFnZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGJlZm9yZSAmJiBvYmplY3RHZXREYXRhVXBkYXRlICYmICF0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBiZWZvcmUpICYmICFnZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgJ3BhZ2luZy5mYWtlJykpIHtcbiAgICAgIHNldChvYmplY3RHZXREYXRhVXBkYXRlLCAncGFnaW5nLmZha2UnLCBmYWxzZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoYWZ0ZXIgJiYgb2JqZWN0R2V0RGF0YVVwZGF0ZSAmJiAhdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgYWZ0ZXIpICYmICFnZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgJ3BhZ2luZy5mYWtlJykpIHtcbiAgICAgIHNldChvYmplY3RHZXREYXRhVXBkYXRlLCAncGFnaW5nLmZha2UnLCBmYWxzZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghYXJndW1lbnRzVmFsdWUgfHwgIWFyZ3VtZW50c1ZhbHVlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBcmd1bWVudHNEZWZhdWx0KGFyZ3VtZW50c1ZhbHVlOiBBcnJheTxhbnk+LCB1cGRhdGVTZWFyY2g6IGJvb2xlYW4sIHBhZ2luZ1N0b3JlOiBJUGFnaW5nLCBrZXlTZWFyY2g6IHN0cmluZywgc2VhcmNoT25saW5lOiBib29sZWFuKSB7XG4gICAgaWYgKCFhcmd1bWVudHNWYWx1ZSB8fCAhYXJndW1lbnRzVmFsdWUubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGluZGV4IGluIGFyZ3VtZW50c1ZhbHVlKSB7XG4gICAgICBsZXQgYXJndW1lbnRWYWx1ZSA9IGFyZ3VtZW50c1ZhbHVlW2luZGV4XTtcblxuICAgICAgaWYgKCEoYXJndW1lbnRWYWx1ZSBpbnN0YW5jZW9mIEh0dHBQYXJhbXMpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFnZVZhbHVlID0gYXJndW1lbnRWYWx1ZS5nZXQoJ3BhZ2UnKTtcblxuICAgICAgaWYgKHNlYXJjaE9ubGluZSAmJiB1cGRhdGVTZWFyY2gpIHtcbiAgICAgICAgYXJndW1lbnRWYWx1ZSA9IGFyZ3VtZW50VmFsdWUuc2V0KCdzZWFyY2gnLCBrZXlTZWFyY2gpO1xuICAgICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3VtZW50VmFsdWUuaGFzKCdiZWZvcmUnKSkge1xuICAgICAgICBhcmd1bWVudFZhbHVlID0gYXJndW1lbnRWYWx1ZS5zZXQoJ2JlZm9yZScsIHBhZ2luZ1N0b3JlPy5iZWZvcmUpO1xuICAgICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3VtZW50VmFsdWUuaGFzKCdhZnRlcicpKSB7XG4gICAgICAgIGFyZ3VtZW50VmFsdWUgPSBhcmd1bWVudFZhbHVlLnNldCgnYWZ0ZXInLCBwYWdpbmdTdG9yZT8uYWZ0ZXIpO1xuICAgICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKE51bWJlcihwYWdlVmFsdWUpLnZhbHVlT2YoKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoIXBhZ2luZ1N0b3JlIHx8IHBhZ2VWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHBhZ2UsIHRvdGFsX3BhZ2VzIH0gPSBwYWdpbmdTdG9yZTtcbiAgICAgIGNvbnN0IG5leHRQYWdlID0gKHBhZ2UgfHwgMCkgKyAxO1xuXG4gICAgICBpZiAobmV4dFBhZ2UgJiYgTnVtYmVyKG5leHRQYWdlKS52YWx1ZU9mKCkgPiBOdW1iZXIodG90YWxfcGFnZXMpLnZhbHVlT2YoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGFyZ3VtZW50c1ZhbHVlW2luZGV4XSA9IGFyZ3VtZW50VmFsdWUuc2V0KCdwYWdlJywgbmV4dFBhZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZTogQXJyYXk8YW55Piwgb2JqZWN0R2V0RGF0YVVwZGF0ZTogYW55LCBjb25maWc6IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZykge1xuICAgIGlmICghY29uZmlnIHx8ICFvYmplY3RHZXREYXRhVXBkYXRlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmxvZz8ubG9nSW5wdXRzKSB7XG4gICAgICBjb25zb2xlLmxvZygnY29uZmlnJywgY29uZmlnKTtcbiAgICAgIGNvbnNvbGUubG9nKCdvYmplY3RHZXREYXRhVXBkYXRlJywgb2JqZWN0R2V0RGF0YVVwZGF0ZSk7XG4gICAgICBjb25zb2xlLmxvZygnYXJndW1lbnRzVmFsdWUnLCBhcmd1bWVudHNWYWx1ZSk7XG4gICAgICBjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKTtcbiAgICB9XG4gICAgY29uc3QgeyBmaWVsZFVwZGF0ZSwgZmllbGRHZXRWYWx1ZSwgcHJlcHJvY2Vzc29yIH0gPSBjb25maWc7XG5cbiAgICBpZiAoIWZpZWxkVXBkYXRlIHx8ICFmaWVsZEdldFZhbHVlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCB2YWx1ZSA9IGdldChvYmplY3RHZXREYXRhVXBkYXRlLCBmaWVsZEdldFZhbHVlKTtcbiAgICBpZiAoY29uZmlnLmxvZz8ubG9nR2V0VmFsdWUpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB2YWx1ZSBvZiBvYmplY3RHZXREYXRhVXBkYXRlWyR7ZmllbGRHZXRWYWx1ZX1dOiBgLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHByZXByb2Nlc3Nvcikge1xuICAgICAgdmFsdWUgPSBwcmVwcm9jZXNzb3IodmFsdWUpO1xuICAgIH1cbiAgICBpZiAoZmllbGRVcGRhdGUpIHtcbiAgICAgIGxldCByZXN1bHRPZkZpZWxkVXBkYXRlID0gZ2V0KGFyZ3VtZW50c1ZhbHVlLCBmaWVsZFVwZGF0ZSBhcyBhbnkpO1xuXG4gICAgICBpZiAocmVzdWx0T2ZGaWVsZFVwZGF0ZSBpbnN0YW5jZW9mIEh0dHBQYXJhbXMpIHtcbiAgICAgICAgcmVzdWx0T2ZGaWVsZFVwZGF0ZSA9IHJlc3VsdE9mRmllbGRVcGRhdGUuc2V0KGNvbmZpZy5zdWJGaWVsZFVwZGF0ZSB8fCAnc2VhcmNoJywgdmFsdWUpO1xuICAgICAgICBzZXQoYXJndW1lbnRzVmFsdWUsIGZpZWxkVXBkYXRlIGFzIGFueSwgcmVzdWx0T2ZGaWVsZFVwZGF0ZSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdE9mRmllbGRVcGRhdGUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXN1bHRPZkZpZWxkVXBkYXRlLnB1c2godmFsdWUpO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHRPZkZpZWxkVXBkYXRlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgIHNldChyZXN1bHRPZkZpZWxkVXBkYXRlLCBjb25maWcuc3ViRmllbGRVcGRhdGUgfHwgJ3NlYXJjaCcsIHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBzZXQoYXJndW1lbnRzVmFsdWUsIGZpZWxkVXBkYXRlIGFzIGFueSwgdmFsdWUpO1xuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGZha2VSZXNwb25zZVBhZ2luZ0FwaSgpOiB7IHBhZ2luZzogSVBhZ2luZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFnaW5nOiB7XG4gICAgICAgIHBhZ2U6IDAsXG4gICAgICAgIHRvdGFsX3BhZ2VzOiAxLFxuICAgICAgICBiZWZvcmU6ICcnLFxuICAgICAgICBhZnRlcjogJycsXG4gICAgICAgIGZha2U6IHRydWUsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { HttpParams } from '@angular/common/http';
2
2
  import * as i0 from '@angular/core';
3
3
  import { inject, Injector, Injectable } from '@angular/core';
4
- import { getKeyCacheByArrayObject, UtilsCache, isEmpty, get, set, isNil, isEqual, UtilsHttpParamsRequest } from '@libs-ui/utils';
4
+ import { get, set, getKeyCacheByArrayObject, UtilsCache, isEmpty, isNil, isEqual, UtilsHttpParamsRequest } from '@libs-ui/utils';
5
5
  import { lastValueFrom, timer, of, delay } from 'rxjs';
6
6
 
7
7
  /* eslint-disable @typescript-eslint/no-explicit-any */
@@ -13,6 +13,10 @@ class LibsUiHttpRequestService {
13
13
  if (!httpRequestConfig || !httpRequestConfig.functionName) {
14
14
  throw 'http request config not exactly httpRequestConfig';
15
15
  }
16
+ const serviceOther = get(httpRequestConfig, 'serviceOther'); // TODO: sẽ xóa khi migrate hết component
17
+ if (serviceOther) {
18
+ set(httpRequestConfig, 'objectInstance', serviceOther);
19
+ }
16
20
  const { objectInstance, keyCache, functionName, argumentsValue, serviceClass } = httpRequestConfig;
17
21
  if (!objectInstance && !serviceClass) {
18
22
  throw `http request config not exactly objectInstance or serviceName`;
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-services-http-request.mjs","sources":["../../../../../libs-ui/services/http-request/src/http-request.service.ts","../../../../../libs-ui/services/http-request/src/api-mockup.ts","../../../../../libs-ui/services/http-request/src/interfaces/http-request-config.interface.ts","../../../../../libs-ui/services/http-request/src/libs-ui-services-http-request.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParams } from '@angular/common/http';\nimport { inject, Injectable, Injector } from '@angular/core';\nimport { IPaging } from '@libs-ui/interfaces-types';\nimport { UtilsCache, get, getKeyCacheByArrayObject, isEmpty, set } from '@libs-ui/utils';\nimport { lastValueFrom } from 'rxjs';\nimport { IGuideAutoUpdateArgumentsValue, IGuideAutoUpdateArgumentsValueConfig, IHttpRequestConfig } from './interfaces/index';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LibsUiHttpRequestService {\n private injector = inject(Injector);\n /** Chứa dữ liệu cache memory */\n private serviceStore: Map<string, any> = new Map();\n\n public async callApi<T = any>(httpRequestConfig: IHttpRequestConfig): Promise<T> {\n if (!httpRequestConfig || !httpRequestConfig.functionName) {\n throw 'http request config not exactly httpRequestConfig';\n }\n\n const { objectInstance, keyCache, functionName, argumentsValue, serviceClass } = httpRequestConfig;\n\n if (!objectInstance && !serviceClass) {\n throw `http request config not exactly objectInstance or serviceName`;\n }\n const instance: any = objectInstance || this.injector.get<T>(serviceClass as any);\n if (!instance) {\n throw `http request notfound service instance`;\n }\n const methodInstance = instance[functionName];\n\n if (!methodInstance) {\n throw `http request config notfound methodInstance name: ${String(functionName)}`;\n }\n const keyCacheMD5: string = getKeyCacheByArrayObject(keyCache || '', argumentsValue);\n const cacheData = await this.getCacheData(httpRequestConfig, keyCacheMD5);\n\n if (cacheData) {\n return Promise.resolve(cacheData);\n }\n\n let callResponse = methodInstance.apply(instance, argumentsValue);\n if (!callResponse.then) {\n callResponse = lastValueFrom(callResponse);\n }\n\n const res = await callResponse;\n\n return await this.setCacheData(res, httpRequestConfig, keyCacheMD5);\n }\n\n private async getCacheData(httpRequestConfig: IHttpRequestConfig, keyCache: string) {\n const { cacheType, convertResponseData } = httpRequestConfig;\n\n if (!cacheType || !keyCache) {\n return undefined;\n }\n if (cacheType === 'service') {\n const data = this.serviceStore.get(keyCache);\n\n return data ? (convertResponseData ? convertResponseData(data) : data) : data;\n }\n const data = await UtilsCache.GetAsync(keyCache, undefined, true);\n\n return data ? (convertResponseData ? convertResponseData(data) : data) : data;\n }\n\n private async setCacheData(data: any, httpRequestConfig: IHttpRequestConfig, keyCache: string) {\n const { cacheType, clearCache, convertResponseData } = httpRequestConfig;\n\n if (!cacheType || !keyCache) {\n return convertResponseData ? convertResponseData(data) : data;\n }\n if (clearCache === true) {\n this.clearCache(cacheType, keyCache);\n }\n if (cacheType === 'service') {\n this.serviceStore.set(keyCache, data);\n\n return convertResponseData ? convertResponseData(data) : data;\n }\n await UtilsCache.SetAsync(keyCache, data, (httpRequestConfig.timeCache || 5) * 60, true);\n\n return convertResponseData ? convertResponseData(data) : data;\n }\n\n private clearCache(cacheType: 'service' | 'local-store', keyCache: string) {\n if (cacheType === 'service') {\n this.serviceStore.delete(keyCache);\n\n return;\n }\n UtilsCache.ClearAsync(keyCache, true);\n }\n\n /**\n * @return trả về trạng thái đã load hết item chưa (ví dụ: dựa vào tham số này để quyết định có tiếp tục gọi api khi scroll ko) .\n */\n public updateArguments(\n argumentsValue: Array<any>,\n objectGetDataUpdate: Record<string, any>,\n pagingStore: IPaging,\n keySearch: string,\n searchOnline: boolean,\n loadedLastItem: boolean,\n guideAutoUpdateArgumentsValue?: IGuideAutoUpdateArgumentsValue\n ): boolean {\n if (!argumentsValue || !(argumentsValue instanceof Array) || loadedLastItem) {\n return true;\n }\n\n if (!guideAutoUpdateArgumentsValue) {\n return this.updateArgumentsDefault(argumentsValue, true, pagingStore, keySearch, searchOnline);\n }\n const { paging, search, other, detailById, sortOrderType, sortOrderBy } = guideAutoUpdateArgumentsValue;\n\n if (search) {\n search.fieldGetValue = 'keySearch';\n this.processUpdateArgumentsValeConfig(argumentsValue, { keySearch }, search);\n }\n if (objectGetDataUpdate?.['storeParamsCallApi'] && typeof objectGetDataUpdate?.['storeParamsCallApi'] === 'object' && !(objectGetDataUpdate?.['storeParamsCallApi'] as any).instanceSort) {\n objectGetDataUpdate['storeParamsCallApi'] = { ...objectGetDataUpdate['storeParamsCallApi'], instanceSort: {} };\n }\n if (sortOrderBy) {\n this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, sortOrderBy);\n }\n if (sortOrderType) {\n this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, sortOrderType);\n }\n if (other && other.length) {\n other.forEach((config) => this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, config));\n }\n if (detailById) {\n detailById.fieldGetValue = detailById.fieldGetValue || detailById.fieldGetValue.trim() || 'key';\n this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, detailById);\n }\n\n if (isEmpty(paging)) {\n return this.updateArgumentsDefault(argumentsValue, false, pagingStore || this.fakeResponsePagingApi()['paging'], keySearch, searchOnline);\n }\n const { page, before, after } = paging;\n\n if (page && objectGetDataUpdate) {\n page.preprocessor = (value: number): number => {\n return ++value;\n };\n const valuePage = +this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, page);\n const valueLastPage = +get(objectGetDataUpdate as any, 'paging.total_pages');\n\n if ((valuePage && Number(valuePage).valueOf() > Number(valueLastPage).valueOf()) || valueLastPage === 0) {\n return true;\n }\n }\n if (before && objectGetDataUpdate && !this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, before) && !get(objectGetDataUpdate, 'paging.fake')) {\n set(objectGetDataUpdate, 'paging.fake', false);\n\n return true;\n }\n if (after && objectGetDataUpdate && !this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, after) && !get(objectGetDataUpdate, 'paging.fake')) {\n set(objectGetDataUpdate, 'paging.fake', false);\n\n return true;\n }\n\n if (!argumentsValue || !argumentsValue.length) {\n return true;\n }\n\n return false;\n }\n\n private updateArgumentsDefault(argumentsValue: Array<any>, updateSearch: boolean, pagingStore: IPaging, keySearch: string, searchOnline: boolean) {\n if (!argumentsValue || !argumentsValue.length) {\n return true;\n }\n\n for (const index in argumentsValue) {\n let argumentValue = argumentsValue[index];\n\n if (!(argumentValue instanceof HttpParams)) {\n continue;\n }\n const pageValue = argumentValue.get('page');\n\n if (searchOnline && updateSearch) {\n argumentValue = argumentValue.set('search', keySearch);\n argumentsValue[index] = argumentValue;\n }\n if (argumentValue.has('before')) {\n argumentValue = argumentValue.set('before', pagingStore?.before);\n argumentsValue[index] = argumentValue;\n }\n if (argumentValue.has('after')) {\n argumentValue = argumentValue.set('after', pagingStore?.after);\n argumentsValue[index] = argumentValue;\n }\n if (Number(pageValue).valueOf() === -1) {\n return true;\n }\n if (!pagingStore || pageValue === undefined) {\n break;\n }\n\n const { page, total_pages } = pagingStore;\n const nextPage = (page || 0) + 1;\n\n if (nextPage && Number(nextPage).valueOf() > Number(total_pages).valueOf()) {\n return true;\n }\n argumentsValue[index] = argumentValue.set('page', nextPage);\n break;\n }\n\n return false;\n }\n\n private processUpdateArgumentsValeConfig(argumentsValue: Array<any>, objectGetDataUpdate: any, config: IGuideAutoUpdateArgumentsValueConfig) {\n if (!config || !objectGetDataUpdate) {\n return undefined;\n }\n if (config.log?.logInputs) {\n console.log('config', config);\n console.log('objectGetDataUpdate', objectGetDataUpdate);\n console.log('argumentsValue', argumentsValue);\n console.log('--------------------------------');\n }\n const { fieldUpdate, fieldGetValue, preprocessor } = config;\n\n if (!fieldUpdate || !fieldGetValue) {\n return undefined;\n }\n\n let value = get(objectGetDataUpdate, fieldGetValue);\n if (config.log?.logGetValue) {\n console.log(`value of objectGetDataUpdate[${fieldGetValue}]: `, value);\n }\n\n if (preprocessor) {\n value = preprocessor(value);\n }\n if (fieldUpdate) {\n let resultOfFieldUpdate = get(argumentsValue, fieldUpdate as any);\n\n if (resultOfFieldUpdate instanceof HttpParams) {\n resultOfFieldUpdate = resultOfFieldUpdate.set(config.subFieldUpdate || 'search', value);\n set(argumentsValue, fieldUpdate as any, resultOfFieldUpdate);\n\n return value;\n }\n if (resultOfFieldUpdate instanceof Array) {\n resultOfFieldUpdate.push(value);\n\n return value;\n }\n if (resultOfFieldUpdate instanceof Object) {\n set(resultOfFieldUpdate, config.subFieldUpdate || 'search', value);\n\n return value;\n }\n set(argumentsValue, fieldUpdate as any, value);\n\n return value;\n }\n\n return value;\n }\n\n public fakeResponsePagingApi(): { paging: IPaging } {\n return {\n paging: {\n page: 0,\n total_pages: 1,\n before: '',\n after: '',\n fake: true,\n },\n };\n }\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParams } from '@angular/common/http';\nimport { IHttpResponse } from '@libs-ui/interfaces-types';\nimport { UtilsHttpParamsRequest, get, isNil, set, isEqual } from '@libs-ui/utils';\nimport { Observable, delay, lastValueFrom, of, timer } from 'rxjs';\n\n/**\n * Trả về các phương thức để xử lý danh sách dữ liệu mock\n * @param data - Mảng dữ liệu mặc định để mock\n * @param functionGetData - Hàm tùy chọn để lấy dữ liệu động thay vì sử dụng data mặc định\n * @returns Đối tượng chứa các phương thức:\n * - list: Trả về Promise với toàn bộ dữ liệu (có delay 250ms)\n * - listObservable: Trả về Observable với toàn bộ dữ liệu (có delay 250ms)\n * - listPaging: Trả về Promise với dữ liệu đã phân trang dựa trên params (có delay 250ms)\n *\n * @example\n * ```typescript\n * const mockData = [{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }];\n * const listService = returnListObject(mockData);\n *\n * // Lấy toàn bộ dữ liệu\n * const allData = await listService.list();\n *\n * // Lấy dữ liệu phân trang\n * const params = new UtilsHttpParamsRequest();\n * params.set('page', '1');\n * params.set('per_page', '10');\n * const pagedData = await listService.listPaging(params);\n * ```\n */\n\nexport const returnListObject = (\n data?: Array<any>,\n functionGetData?: () => Array<any>\n): {\n list: <TypeResponse = any>() => Promise<IHttpResponse<TypeResponse>>;\n listObservable: <TypeResponse = any>() => Observable<IHttpResponse<TypeResponse>>;\n listPaging: <TypeResponse = any>(params: UtilsHttpParamsRequest) => Promise<IHttpResponse<TypeResponse>>;\n} => {\n return {\n list: async <TypeResponse = any>(): Promise<IHttpResponse<TypeResponse>> => {\n if (functionGetData) {\n data = functionGetData();\n }\n await lastValueFrom(timer(250));\n return {\n code: 200,\n data: (data as any) || [],\n paging: {},\n };\n },\n listObservable: <TypeResponse = any>(): Observable<IHttpResponse<TypeResponse>> => {\n if (functionGetData) {\n data = functionGetData();\n }\n\n return of({\n code: 200,\n data: (data as any) || [],\n paging: {},\n }).pipe(delay(250));\n },\n listPaging: async <TypeResponse = any>(params: UtilsHttpParamsRequest): Promise<IHttpResponse<TypeResponse>> => {\n if (functionGetData) {\n data = functionGetData();\n }\n const page = parseInt(params.get('page') || '1');\n const per_page = parseInt(params.get('per_page') || '30');\n const result = pagingToList(data as Array<any>, page, per_page);\n\n await lastValueFrom(timer(250));\n\n return result as IHttpResponse<TypeResponse>;\n },\n };\n};\n\n/**\n * Tạo một đối tượng mock detail với các phương thức để lấy bản ghi riêng lẻ theo khóa.\n * Hỗ trợ cả mảng dữ liệu tĩnh và các hàm dữ liệu động.\n *\n * @template TypeResponse - Kiểu dữ liệu phản hồi mong đợi\n * @template TypeParams - Kiểu tham số HTTP (mặc định là any)\n *\n * @param httpParams - Tham số HTTP chứa:\n * - keys: Khóa (hoặc các khóa) cần tìm kiếm\n * - fieldKey: Tên trường để so khớp (mặc định là 'id')\n * - dataResponseOject: Cờ boolean để định dạng đối tượng phản hồi\n * @param data - Mảng dữ liệu tĩnh tùy chọn để tìm kiếm\n * @param functionGetData - Hàm tùy chọn trả về dữ liệu (có thể là Promise hoặc Observable)\n * @param ignoreSplit - Nếu true, coi keys như một giá trị đơn thay vì tách chuỗi\n * @param splitOperator - Toán tử tùy chỉnh để tách keys (mặc định là dấu phẩy)\n *\n * @returns Đối tượng với các phương thức:\n * - detailByData: Tìm kiếm thông qua mảng dữ liệu tĩnh được cung cấp\n * - detailByFunction: Gọi functionGetData để lấy dữ liệu mới, sau đó tìm kiếm\n *\n * @example\n * ```typescript\n * const params = new UtilsHttpParamsRequest({fromObject:{keys:'1',fieldKey:'id'}});\n * const mockDetail = returnDetailObject<User>(params, userData);\n * const user = await mockDetail.detailByData();\n * ```\n */\n\nexport const returnDetailObject = <TypeResponse, TypeParams = any>(\n httpParams: UtilsHttpParamsRequest<TypeParams> | HttpParams,\n data?: Array<any>,\n functionGetData?: () => Promise<IHttpResponse<TypeResponse>> | Observable<IHttpResponse<TypeResponse>>,\n ignoreSplit?: boolean,\n splitOperator?: string\n): {\n detailByData: <TypeResponse = any>(keys?: any) => Promise<IHttpResponse<TypeResponse>>;\n detailByFunction: <TypeResponse = any>(keys?: any) => Promise<IHttpResponse<TypeResponse>>;\n} => {\n const keysPrams: any = httpParams.get('keys');\n const fieldKey: string = httpParams.get('fieldKey') || 'id';\n const dataResponseOject: any = httpParams.get('dataResponseOject');\n\n return {\n detailByData: async <TypeResponse>(keys?: any): Promise<IHttpResponse<TypeResponse>> => {\n return filterData<TypeResponse>(fieldKey, data, keys ?? keysPrams, dataResponseOject, ignoreSplit, splitOperator);\n },\n\n detailByFunction: async <TypeResponse>(keys?: any): Promise<IHttpResponse<TypeResponse>> => {\n if (!functionGetData) {\n return await filterData<TypeResponse>(fieldKey, undefined, undefined, dataResponseOject, ignoreSplit, splitOperator);\n }\n\n let dataResult: any = functionGetData();\n\n try {\n if (dataResult['subscribe']) {\n dataResult = await lastValueFrom(dataResult);\n }\n if (dataResult['then']) {\n dataResult = await dataResult;\n }\n } catch (_) {\n dataResult = { data: [] };\n }\n\n data = dataResult.data;\n\n return await filterData<TypeResponse>(fieldKey, data, keys || keysPrams, dataResponseOject, ignoreSplit, splitOperator);\n },\n };\n};\n\nconst filterData = <TypeResponse>(fieldKey: string, data?: Array<any>, keys?: any, dataResponseOject?: boolean, ignoreSplit?: boolean, splitOperator?: string): IHttpResponse<TypeResponse> => {\n if (!data || typeof data !== 'object' || isNil(keys) || keys === '') {\n return {\n code: 200,\n data: undefined,\n paging: {},\n };\n }\n\n data = data || [];\n\n if (!(data instanceof Array)) {\n data = [data];\n }\n const result: any = [];\n\n if (!ignoreSplit && typeof keys === 'string') {\n keys = keys.split(splitOperator || ',');\n }\n\n if (typeof keys === 'number' || typeof keys === 'boolean' || (typeof keys === 'string' && ignoreSplit)) {\n keys = [keys];\n }\n\n keys.forEach((key: string) => {\n const resultFilter = data?.filter((elData: { [key: string]: any }) => isEqual(get(elData, fieldKey), key, { ignoreExactlyDataType: true }));\n\n if (resultFilter && resultFilter.length) {\n result.push(...resultFilter);\n }\n });\n\n return {\n code: 200,\n data: result.length ? (dataResponseOject ? result[0] : result) : undefined,\n paging: {},\n };\n};\n\nconst per_page = 20;\nconst total_items = per_page * 150 + 15;\n\nexport const getConfigListDataDemo = (httpParamsDetail: UtilsHttpParamsRequest<any> = new UtilsHttpParamsRequest(), objectData?: Record<string, string>, functionBuildObject?: (numIncrement: string) => Record<string, string>) => {\n if (!objectData) {\n objectData = {\n id: '',\n name: 'item positon index ',\n };\n }\n\n const data = [...Array(total_items).keys()].map((_, index) => {\n if (functionBuildObject) {\n return functionBuildObject(`${+index + 1}`);\n }\n const obj: Record<string, string> = {};\n Object.keys(objectData).forEach((key) => {\n set(obj, key, `${objectData[key]}${+index + 1}`);\n });\n return obj;\n });\n\n const listService = returnListObject(data);\n const detailService = returnDetailObject(httpParamsDetail, data, undefined, false, ';');\n return {\n list: listService.listPaging,\n detailByData: detailService.detailByData,\n };\n};\n\n/**\n * Hàm phân trang dữ liệu từ một mảng\n * @param data - Mảng dữ liệu cần phân trang\n * @param page - Số trang hiện tại (bắt đầu từ 1)\n * @param per_page - Số lượng item trên mỗi trang\n * @returns Đối tượng chứa dữ liệu đã phân trang và thông tin phân trang\n */\nexport const pagingToList = (data: Array<any>, page: number, per_page: number) => {\n if (!data || !Array.isArray(data)) {\n return {\n code: 200,\n data: [],\n paging: {\n page: page,\n per_page: per_page,\n total_items: 0,\n total_pages: 0,\n },\n };\n }\n const start = (page - 1) * per_page;\n const end = start + per_page;\n const total_pages = Math.ceil(data.length / per_page);\n const dataByPage = data.slice(start, end);\n return {\n code: 200,\n data: dataByPage,\n paging: {\n page: page > total_pages ? total_pages : page,\n per_page: per_page,\n total_items: data.length,\n total_pages: total_pages,\n },\n };\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Type } from '@angular/core';\nimport { IGuideAutoUpdateArgumentsValue } from './guild-auto-update-arguments-value.interface';\n\nexport interface IHttpRequestConfig<T = any> {\n serviceClass?: Type<T>; // tên class của component gọi http request\n objectInstance?: T; // là 1 object không được inject trong httpRequest; được sử dụng để lấy data từ 1 đối tượng không phải là service inject\n functionName?: keyof T; // tên hàm muốn gọi trong service\n argumentsValue: Array<any>; // chứa dữ liệu của params truyền vào, mảng có kểu dữ liệu không cần giống nhau vd: hàm function(search:string,age:number,page:Object)={...} thì serviceSpecificParams = ['param',16,{page:1,page:per_page:25}]\n cacheType?: 'service' | 'local-store';\n keyCache?: string; // sử dụng nếu sử dụng cache. khi tạo bộ config sử dụng đối tượng uuid để lấy một id set vào biến này. và biến này sẽ ko thay đổi trong quá trình sử dụng\n timeCache?: number; // đơn vị phút\n clearCache?: boolean;\n guideAutoUpdateArgumentsValue?: IGuideAutoUpdateArgumentsValue; // khai báo không sử dụng cho HttpRequestService. Dùng cho cá component muốn lấy thông tin update arguments để load more khi scroll bottom. Ví dụ như MoLibShareComponentsListViewTemplatesComponentAbstract\n convertResponseData?: (response: any) => any;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;MAWa,wBAAwB,CAAA;AAC3B,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAE3B,IAAA,YAAY,GAAqB,IAAI,GAAG,EAAE;IAE3C,MAAM,OAAO,CAAU,iBAAqC,EAAA;QACjE,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACzD,YAAA,MAAM,mDAAmD;QAC3D;AAEA,QAAA,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,iBAAiB;AAElG,QAAA,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,EAAE;AACpC,YAAA,MAAM,+DAA+D;QACvE;AACA,QAAA,MAAM,QAAQ,GAAQ,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAI,YAAmB,CAAC;QACjF,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,wCAAwC;QAChD;AACA,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,YAAY,CAAC;QAE7C,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,MAAM,qDAAqD,MAAM,CAAC,YAAY,CAAC,EAAE;QACnF;QACA,MAAM,WAAW,GAAW,wBAAwB,CAAC,QAAQ,IAAI,EAAE,EAAE,cAAc,CAAC;QACpF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,WAAW,CAAC;QAEzE,IAAI,SAAS,EAAE;AACb,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QACnC;QAEA,IAAI,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC;AACjE,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACtB,YAAA,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;QAC5C;AAEA,QAAA,MAAM,GAAG,GAAG,MAAM,YAAY;QAE9B,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,WAAW,CAAC;IACrE;AAEQ,IAAA,MAAM,YAAY,CAAC,iBAAqC,EAAE,QAAgB,EAAA;AAChF,QAAA,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,GAAG,iBAAiB;AAE5D,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;YAE5C,OAAO,IAAI,IAAI,mBAAmB,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI;QAC/E;AACA,QAAA,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC;QAEjE,OAAO,IAAI,IAAI,mBAAmB,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI;IAC/E;AAEQ,IAAA,MAAM,YAAY,CAAC,IAAS,EAAE,iBAAqC,EAAE,QAAgB,EAAA;QAC3F,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,iBAAiB;AAExE,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,OAAO,mBAAmB,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI;QAC/D;AACA,QAAA,IAAI,UAAU,KAAK,IAAI,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC;QACtC;AACA,QAAA,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AAErC,YAAA,OAAO,mBAAmB,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI;QAC/D;QACA,MAAM,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,iBAAiB,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC;AAExF,QAAA,OAAO,mBAAmB,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI;IAC/D;IAEQ,UAAU,CAAC,SAAoC,EAAE,QAAgB,EAAA;AACvE,QAAA,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;YAElC;QACF;AACA,QAAA,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;IACvC;AAEA;;AAEG;AACI,IAAA,eAAe,CACpB,cAA0B,EAC1B,mBAAwC,EACxC,WAAoB,EACpB,SAAiB,EACjB,YAAqB,EACrB,cAAuB,EACvB,6BAA8D,EAAA;AAE9D,QAAA,IAAI,CAAC,cAAc,IAAI,EAAE,cAAc,YAAY,KAAK,CAAC,IAAI,cAAc,EAAE;AAC3E,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,CAAC,6BAA6B,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC;QAChG;AACA,QAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,6BAA6B;QAEvG,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,aAAa,GAAG,WAAW;YAClC,IAAI,CAAC,gCAAgC,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC;QAC9E;QACA,IAAI,mBAAmB,GAAG,oBAAoB,CAAC,IAAI,OAAO,mBAAmB,GAAG,oBAAoB,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,mBAAmB,GAAG,oBAAoB,CAAS,EAAC,YAAY,EAAE;AACxL,YAAA,mBAAmB,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;QAChH;QACA,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,gCAAgC,CAAC,cAAc,EAAE,mBAAmB,EAAE,WAAW,CAAC;QACzF;QACA,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,gCAAgC,CAAC,cAAc,EAAE,mBAAmB,EAAE,aAAa,CAAC;QAC3F;AACA,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AACzB,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,gCAAgC,CAAC,cAAc,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;QAC/G;QACA,IAAI,UAAU,EAAE;AACd,YAAA,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,KAAK;YAC/F,IAAI,CAAC,gCAAgC,CAAC,cAAc,EAAE,mBAAmB,EAAE,UAAU,CAAC;QACxF;AAEA,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACnB,OAAO,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,KAAK,EAAE,WAAW,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC;QAC3I;QACA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;AAEtC,QAAA,IAAI,IAAI,IAAI,mBAAmB,EAAE;AAC/B,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,KAAa,KAAY;gBAC5C,OAAO,EAAE,KAAK;AAChB,YAAA,CAAC;AACD,YAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,cAAc,EAAE,mBAAmB,EAAE,IAAI,CAAC;YACnG,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,mBAA0B,EAAE,oBAAoB,CAAC;YAE5E,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,KAAK,aAAa,KAAK,CAAC,EAAE;AACvG,gBAAA,OAAO,IAAI;YACb;QACF;QACA,IAAI,MAAM,IAAI,mBAAmB,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,cAAc,EAAE,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAAE;AACpK,YAAA,GAAG,CAAC,mBAAmB,EAAE,aAAa,EAAE,KAAK,CAAC;AAE9C,YAAA,OAAO,IAAI;QACb;QACA,IAAI,KAAK,IAAI,mBAAmB,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,cAAc,EAAE,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAAE;AAClK,YAAA,GAAG,CAAC,mBAAmB,EAAE,aAAa,EAAE,KAAK,CAAC;AAE9C,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC7C,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,KAAK;IACd;IAEQ,sBAAsB,CAAC,cAA0B,EAAE,YAAqB,EAAE,WAAoB,EAAE,SAAiB,EAAE,YAAqB,EAAA;QAC9I,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC7C,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE;AAClC,YAAA,IAAI,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC;AAEzC,YAAA,IAAI,EAAE,aAAa,YAAY,UAAU,CAAC,EAAE;gBAC1C;YACF;YACA,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;AAE3C,YAAA,IAAI,YAAY,IAAI,YAAY,EAAE;gBAChC,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC;AACtD,gBAAA,cAAc,CAAC,KAAK,CAAC,GAAG,aAAa;YACvC;AACA,YAAA,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBAC/B,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC;AAChE,gBAAA,cAAc,CAAC,KAAK,CAAC,GAAG,aAAa;YACvC;AACA,YAAA,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBAC9B,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC;AAC9D,gBAAA,cAAc,CAAC,KAAK,CAAC,GAAG,aAAa;YACvC;YACA,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;AACtC,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,SAAS,EAAE;gBAC3C;YACF;AAEA,YAAA,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,WAAW;YACzC,MAAM,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;AAEhC,YAAA,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,EAAE;AAC1E,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,cAAc,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC3D;QACF;AAEA,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,gCAAgC,CAAC,cAA0B,EAAE,mBAAwB,EAAE,MAA4C,EAAA;AACzI,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE;AACnC,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE;AACzB,YAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC7B,YAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;AACvD,YAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC;AAC7C,YAAA,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;QACjD;QACA,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,MAAM;AAE3D,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,EAAE;AAClC,YAAA,OAAO,SAAS;QAClB;QAEA,IAAI,KAAK,GAAG,GAAG,CAAC,mBAAmB,EAAE,aAAa,CAAC;AACnD,QAAA,IAAI,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC,CAAA,6BAAA,EAAgC,aAAa,CAAA,GAAA,CAAK,EAAE,KAAK,CAAC;QACxE;QAEA,IAAI,YAAY,EAAE;AAChB,YAAA,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QAC7B;QACA,IAAI,WAAW,EAAE;YACf,IAAI,mBAAmB,GAAG,GAAG,CAAC,cAAc,EAAE,WAAkB,CAAC;AAEjE,YAAA,IAAI,mBAAmB,YAAY,UAAU,EAAE;AAC7C,gBAAA,mBAAmB,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,QAAQ,EAAE,KAAK,CAAC;AACvF,gBAAA,GAAG,CAAC,cAAc,EAAE,WAAkB,EAAE,mBAAmB,CAAC;AAE5D,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,IAAI,mBAAmB,YAAY,KAAK,EAAE;AACxC,gBAAA,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AAE/B,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,IAAI,mBAAmB,YAAY,MAAM,EAAE;gBACzC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,cAAc,IAAI,QAAQ,EAAE,KAAK,CAAC;AAElE,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,GAAG,CAAC,cAAc,EAAE,WAAkB,EAAE,KAAK,CAAC;AAE9C,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,KAAK;IACd;IAEO,qBAAqB,GAAA;QAC1B,OAAO;AACL,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA;SACF;IACH;wGA3QW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFvB,MAAM,EAAA,CAAA;;4FAEP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACHD;;;;;;;;;;;;;;;;;;;;;;;AAuBG;MAEU,gBAAgB,GAAG,CAC9B,IAAiB,EACjB,eAAkC,KAKhC;IACF,OAAO;QACL,IAAI,EAAE,YAAqE;YACzE,IAAI,eAAe,EAAE;gBACnB,IAAI,GAAG,eAAe,EAAE;YAC1B;AACA,YAAA,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO;AACL,gBAAA,IAAI,EAAE,GAAG;gBACT,IAAI,EAAG,IAAY,IAAI,EAAE;AACzB,gBAAA,MAAM,EAAE,EAAE;aACX;QACH,CAAC;QACD,cAAc,EAAE,MAAkE;YAChF,IAAI,eAAe,EAAE;gBACnB,IAAI,GAAG,eAAe,EAAE;YAC1B;AAEA,YAAA,OAAO,EAAE,CAAC;AACR,gBAAA,IAAI,EAAE,GAAG;gBACT,IAAI,EAAG,IAAY,IAAI,EAAE;AACzB,gBAAA,MAAM,EAAE,EAAE;aACX,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;AACD,QAAA,UAAU,EAAE,OAA2B,MAA8B,KAA0C;YAC7G,IAAI,eAAe,EAAE;gBACnB,IAAI,GAAG,eAAe,EAAE;YAC1B;AACA,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;AAChD,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;YACzD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAkB,EAAE,IAAI,EAAE,QAAQ,CAAC;AAE/D,YAAA,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE/B,YAAA,OAAO,MAAqC;QAC9C,CAAC;KACF;AACH;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;AAEI,MAAM,kBAAkB,GAAG,CAChC,UAA2D,EAC3D,IAAiB,EACjB,eAAsG,EACtG,WAAqB,EACrB,aAAsB,KAIpB;IACF,MAAM,SAAS,GAAQ,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;IAC7C,MAAM,QAAQ,GAAW,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI;IAC3D,MAAM,iBAAiB,GAAQ,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAElE,OAAO;AACL,QAAA,YAAY,EAAE,OAAqB,IAAU,KAA0C;AACrF,YAAA,OAAO,UAAU,CAAe,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,CAAC;QACnH,CAAC;AAED,QAAA,gBAAgB,EAAE,OAAqB,IAAU,KAA0C;YACzF,IAAI,CAAC,eAAe,EAAE;AACpB,gBAAA,OAAO,MAAM,UAAU,CAAe,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,CAAC;YACtH;AAEA,YAAA,IAAI,UAAU,GAAQ,eAAe,EAAE;AAEvC,YAAA,IAAI;AACF,gBAAA,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;AAC3B,oBAAA,UAAU,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC;gBAC9C;AACA,gBAAA,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;oBACtB,UAAU,GAAG,MAAM,UAAU;gBAC/B;YACF;YAAE,OAAO,CAAC,EAAE;AACV,gBAAA,UAAU,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;YAC3B;AAEA,YAAA,IAAI,GAAG,UAAU,CAAC,IAAI;AAEtB,YAAA,OAAO,MAAM,UAAU,CAAe,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,CAAC;QACzH,CAAC;KACF;AACH;AAEA,MAAM,UAAU,GAAG,CAAe,QAAgB,EAAE,IAAiB,EAAE,IAAU,EAAE,iBAA2B,EAAE,WAAqB,EAAE,aAAsB,KAAiC;AAC5L,IAAA,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,EAAE;QACnE,OAAO;AACL,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,EAAE;SACX;IACH;AAEA,IAAA,IAAI,GAAG,IAAI,IAAI,EAAE;AAEjB,IAAA,IAAI,EAAE,IAAI,YAAY,KAAK,CAAC,EAAE;AAC5B,QAAA,IAAI,GAAG,CAAC,IAAI,CAAC;IACf;IACA,MAAM,MAAM,GAAQ,EAAE;IAEtB,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5C,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,GAAG,CAAC;IACzC;AAEA,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,SAAS,KAAK,OAAO,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,EAAE;AACtG,QAAA,IAAI,GAAG,CAAC,IAAI,CAAC;IACf;AAEA,IAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAW,KAAI;AAC3B,QAAA,MAAM,YAAY,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,MAA8B,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAE3I,QAAA,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE;AACvC,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;QAC9B;AACF,IAAA,CAAC,CAAC;IAEF,OAAO;AACL,QAAA,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,SAAS;AAC1E,QAAA,MAAM,EAAE,EAAE;KACX;AACH,CAAC;AAED,MAAM,QAAQ,GAAG,EAAE;AACnB,MAAM,WAAW,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE;AAEhC,MAAM,qBAAqB,GAAG,CAAC,gBAAA,GAAgD,IAAI,sBAAsB,EAAE,EAAE,UAAmC,EAAE,mBAAsE,KAAI;IACjO,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,UAAU,GAAG;AACX,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,IAAI,EAAE,qBAAqB;SAC5B;IACH;IAEA,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;QAC3D,IAAI,mBAAmB,EAAE;YACvB,OAAO,mBAAmB,CAAC,CAAA,EAAG,CAAC,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;QAC7C;QACA,MAAM,GAAG,GAA2B,EAAE;QACtC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACtC,YAAA,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;AAClD,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,GAAG;AACZ,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC;AAC1C,IAAA,MAAM,aAAa,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC;IACvF,OAAO;QACL,IAAI,EAAE,WAAW,CAAC,UAAU;QAC5B,YAAY,EAAE,aAAa,CAAC,YAAY;KACzC;AACH;AAEA;;;;;;AAMG;AACI,MAAM,YAAY,GAAG,CAAC,IAAgB,EAAE,IAAY,EAAE,QAAgB,KAAI;IAC/E,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACjC,OAAO;AACL,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,WAAW,EAAE,CAAC;AACf,aAAA;SACF;IACH;IACA,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ;AACnC,IAAA,MAAM,GAAG,GAAG,KAAK,GAAG,QAAQ;AAC5B,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;IACzC,OAAO;AACL,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,MAAM,EAAE;YACN,IAAI,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,IAAI;AAC7C,YAAA,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,IAAI,CAAC,MAAM;AACxB,YAAA,WAAW,EAAE,WAAW;AACzB,SAAA;KACF;AACH;;AC7PA;;ACAA;;AAEG;;;;"}
1
+ {"version":3,"file":"libs-ui-services-http-request.mjs","sources":["../../../../../libs-ui/services/http-request/src/http-request.service.ts","../../../../../libs-ui/services/http-request/src/api-mockup.ts","../../../../../libs-ui/services/http-request/src/interfaces/http-request-config.interface.ts","../../../../../libs-ui/services/http-request/src/libs-ui-services-http-request.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParams } from '@angular/common/http';\nimport { inject, Injectable, Injector } from '@angular/core';\nimport { IPaging } from '@libs-ui/interfaces-types';\nimport { UtilsCache, get, getKeyCacheByArrayObject, isEmpty, set } from '@libs-ui/utils';\nimport { lastValueFrom } from 'rxjs';\nimport { IGuideAutoUpdateArgumentsValue, IGuideAutoUpdateArgumentsValueConfig, IHttpRequestConfig } from './interfaces/index';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LibsUiHttpRequestService {\n private injector = inject(Injector);\n /** Chứa dữ liệu cache memory */\n private serviceStore: Map<string, any> = new Map();\n\n public async callApi<T = any>(httpRequestConfig: IHttpRequestConfig): Promise<T> {\n if (!httpRequestConfig || !httpRequestConfig.functionName) {\n throw 'http request config not exactly httpRequestConfig';\n }\n const serviceOther = get<unknown>(httpRequestConfig, 'serviceOther'); // TODO: sẽ xóa khi migrate hết component\n\n if (serviceOther) {\n set(httpRequestConfig, 'objectInstance', serviceOther);\n }\n\n const { objectInstance, keyCache, functionName, argumentsValue, serviceClass } = httpRequestConfig;\n\n if (!objectInstance && !serviceClass) {\n throw `http request config not exactly objectInstance or serviceName`;\n }\n const instance: any = objectInstance || this.injector.get<T>(serviceClass as any);\n if (!instance) {\n throw `http request notfound service instance`;\n }\n const methodInstance = instance[functionName];\n\n if (!methodInstance) {\n throw `http request config notfound methodInstance name: ${String(functionName)}`;\n }\n const keyCacheMD5: string = getKeyCacheByArrayObject(keyCache || '', argumentsValue);\n const cacheData = await this.getCacheData(httpRequestConfig, keyCacheMD5);\n\n if (cacheData) {\n return Promise.resolve(cacheData);\n }\n\n let callResponse = methodInstance.apply(instance, argumentsValue);\n if (!callResponse.then) {\n callResponse = lastValueFrom(callResponse);\n }\n\n const res = await callResponse;\n\n return await this.setCacheData(res, httpRequestConfig, keyCacheMD5);\n }\n\n private async getCacheData(httpRequestConfig: IHttpRequestConfig, keyCache: string) {\n const { cacheType, convertResponseData } = httpRequestConfig;\n\n if (!cacheType || !keyCache) {\n return undefined;\n }\n if (cacheType === 'service') {\n const data = this.serviceStore.get(keyCache);\n\n return data ? (convertResponseData ? convertResponseData(data) : data) : data;\n }\n const data = await UtilsCache.GetAsync(keyCache, undefined, true);\n\n return data ? (convertResponseData ? convertResponseData(data) : data) : data;\n }\n\n private async setCacheData(data: any, httpRequestConfig: IHttpRequestConfig, keyCache: string) {\n const { cacheType, clearCache, convertResponseData } = httpRequestConfig;\n\n if (!cacheType || !keyCache) {\n return convertResponseData ? convertResponseData(data) : data;\n }\n if (clearCache === true) {\n this.clearCache(cacheType, keyCache);\n }\n if (cacheType === 'service') {\n this.serviceStore.set(keyCache, data);\n\n return convertResponseData ? convertResponseData(data) : data;\n }\n await UtilsCache.SetAsync(keyCache, data, (httpRequestConfig.timeCache || 5) * 60, true);\n\n return convertResponseData ? convertResponseData(data) : data;\n }\n\n private clearCache(cacheType: 'service' | 'local-store', keyCache: string) {\n if (cacheType === 'service') {\n this.serviceStore.delete(keyCache);\n\n return;\n }\n UtilsCache.ClearAsync(keyCache, true);\n }\n\n /**\n * @return trả về trạng thái đã load hết item chưa (ví dụ: dựa vào tham số này để quyết định có tiếp tục gọi api khi scroll ko) .\n */\n public updateArguments(\n argumentsValue: Array<any>,\n objectGetDataUpdate: Record<string, any>,\n pagingStore: IPaging,\n keySearch: string,\n searchOnline: boolean,\n loadedLastItem: boolean,\n guideAutoUpdateArgumentsValue?: IGuideAutoUpdateArgumentsValue\n ): boolean {\n if (!argumentsValue || !(argumentsValue instanceof Array) || loadedLastItem) {\n return true;\n }\n\n if (!guideAutoUpdateArgumentsValue) {\n return this.updateArgumentsDefault(argumentsValue, true, pagingStore, keySearch, searchOnline);\n }\n const { paging, search, other, detailById, sortOrderType, sortOrderBy } = guideAutoUpdateArgumentsValue;\n\n if (search) {\n search.fieldGetValue = 'keySearch';\n this.processUpdateArgumentsValeConfig(argumentsValue, { keySearch }, search);\n }\n if (objectGetDataUpdate?.['storeParamsCallApi'] && typeof objectGetDataUpdate?.['storeParamsCallApi'] === 'object' && !(objectGetDataUpdate?.['storeParamsCallApi'] as any).instanceSort) {\n objectGetDataUpdate['storeParamsCallApi'] = { ...objectGetDataUpdate['storeParamsCallApi'], instanceSort: {} };\n }\n if (sortOrderBy) {\n this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, sortOrderBy);\n }\n if (sortOrderType) {\n this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, sortOrderType);\n }\n if (other && other.length) {\n other.forEach((config) => this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, config));\n }\n if (detailById) {\n detailById.fieldGetValue = detailById.fieldGetValue || detailById.fieldGetValue.trim() || 'key';\n this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, detailById);\n }\n\n if (isEmpty(paging)) {\n return this.updateArgumentsDefault(argumentsValue, false, pagingStore || this.fakeResponsePagingApi()['paging'], keySearch, searchOnline);\n }\n const { page, before, after } = paging;\n\n if (page && objectGetDataUpdate) {\n page.preprocessor = (value: number): number => {\n return ++value;\n };\n const valuePage = +this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, page);\n const valueLastPage = +get(objectGetDataUpdate as any, 'paging.total_pages');\n\n if ((valuePage && Number(valuePage).valueOf() > Number(valueLastPage).valueOf()) || valueLastPage === 0) {\n return true;\n }\n }\n if (before && objectGetDataUpdate && !this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, before) && !get(objectGetDataUpdate, 'paging.fake')) {\n set(objectGetDataUpdate, 'paging.fake', false);\n\n return true;\n }\n if (after && objectGetDataUpdate && !this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, after) && !get(objectGetDataUpdate, 'paging.fake')) {\n set(objectGetDataUpdate, 'paging.fake', false);\n\n return true;\n }\n\n if (!argumentsValue || !argumentsValue.length) {\n return true;\n }\n\n return false;\n }\n\n private updateArgumentsDefault(argumentsValue: Array<any>, updateSearch: boolean, pagingStore: IPaging, keySearch: string, searchOnline: boolean) {\n if (!argumentsValue || !argumentsValue.length) {\n return true;\n }\n\n for (const index in argumentsValue) {\n let argumentValue = argumentsValue[index];\n\n if (!(argumentValue instanceof HttpParams)) {\n continue;\n }\n const pageValue = argumentValue.get('page');\n\n if (searchOnline && updateSearch) {\n argumentValue = argumentValue.set('search', keySearch);\n argumentsValue[index] = argumentValue;\n }\n if (argumentValue.has('before')) {\n argumentValue = argumentValue.set('before', pagingStore?.before);\n argumentsValue[index] = argumentValue;\n }\n if (argumentValue.has('after')) {\n argumentValue = argumentValue.set('after', pagingStore?.after);\n argumentsValue[index] = argumentValue;\n }\n if (Number(pageValue).valueOf() === -1) {\n return true;\n }\n if (!pagingStore || pageValue === undefined) {\n break;\n }\n\n const { page, total_pages } = pagingStore;\n const nextPage = (page || 0) + 1;\n\n if (nextPage && Number(nextPage).valueOf() > Number(total_pages).valueOf()) {\n return true;\n }\n argumentsValue[index] = argumentValue.set('page', nextPage);\n break;\n }\n\n return false;\n }\n\n private processUpdateArgumentsValeConfig(argumentsValue: Array<any>, objectGetDataUpdate: any, config: IGuideAutoUpdateArgumentsValueConfig) {\n if (!config || !objectGetDataUpdate) {\n return undefined;\n }\n if (config.log?.logInputs) {\n console.log('config', config);\n console.log('objectGetDataUpdate', objectGetDataUpdate);\n console.log('argumentsValue', argumentsValue);\n console.log('--------------------------------');\n }\n const { fieldUpdate, fieldGetValue, preprocessor } = config;\n\n if (!fieldUpdate || !fieldGetValue) {\n return undefined;\n }\n\n let value = get(objectGetDataUpdate, fieldGetValue);\n if (config.log?.logGetValue) {\n console.log(`value of objectGetDataUpdate[${fieldGetValue}]: `, value);\n }\n\n if (preprocessor) {\n value = preprocessor(value);\n }\n if (fieldUpdate) {\n let resultOfFieldUpdate = get(argumentsValue, fieldUpdate as any);\n\n if (resultOfFieldUpdate instanceof HttpParams) {\n resultOfFieldUpdate = resultOfFieldUpdate.set(config.subFieldUpdate || 'search', value);\n set(argumentsValue, fieldUpdate as any, resultOfFieldUpdate);\n\n return value;\n }\n if (resultOfFieldUpdate instanceof Array) {\n resultOfFieldUpdate.push(value);\n\n return value;\n }\n if (resultOfFieldUpdate instanceof Object) {\n set(resultOfFieldUpdate, config.subFieldUpdate || 'search', value);\n\n return value;\n }\n set(argumentsValue, fieldUpdate as any, value);\n\n return value;\n }\n\n return value;\n }\n\n public fakeResponsePagingApi(): { paging: IPaging } {\n return {\n paging: {\n page: 0,\n total_pages: 1,\n before: '',\n after: '',\n fake: true,\n },\n };\n }\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParams } from '@angular/common/http';\nimport { IHttpResponse } from '@libs-ui/interfaces-types';\nimport { UtilsHttpParamsRequest, get, isNil, set, isEqual } from '@libs-ui/utils';\nimport { Observable, delay, lastValueFrom, of, timer } from 'rxjs';\n\n/**\n * Trả về các phương thức để xử lý danh sách dữ liệu mock\n * @param data - Mảng dữ liệu mặc định để mock\n * @param functionGetData - Hàm tùy chọn để lấy dữ liệu động thay vì sử dụng data mặc định\n * @returns Đối tượng chứa các phương thức:\n * - list: Trả về Promise với toàn bộ dữ liệu (có delay 250ms)\n * - listObservable: Trả về Observable với toàn bộ dữ liệu (có delay 250ms)\n * - listPaging: Trả về Promise với dữ liệu đã phân trang dựa trên params (có delay 250ms)\n *\n * @example\n * ```typescript\n * const mockData = [{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }];\n * const listService = returnListObject(mockData);\n *\n * // Lấy toàn bộ dữ liệu\n * const allData = await listService.list();\n *\n * // Lấy dữ liệu phân trang\n * const params = new UtilsHttpParamsRequest();\n * params.set('page', '1');\n * params.set('per_page', '10');\n * const pagedData = await listService.listPaging(params);\n * ```\n */\n\nexport const returnListObject = (\n data?: Array<any>,\n functionGetData?: () => Array<any>\n): {\n list: <TypeResponse = any>() => Promise<IHttpResponse<TypeResponse>>;\n listObservable: <TypeResponse = any>() => Observable<IHttpResponse<TypeResponse>>;\n listPaging: <TypeResponse = any>(params: UtilsHttpParamsRequest) => Promise<IHttpResponse<TypeResponse>>;\n} => {\n return {\n list: async <TypeResponse = any>(): Promise<IHttpResponse<TypeResponse>> => {\n if (functionGetData) {\n data = functionGetData();\n }\n await lastValueFrom(timer(250));\n return {\n code: 200,\n data: (data as any) || [],\n paging: {},\n };\n },\n listObservable: <TypeResponse = any>(): Observable<IHttpResponse<TypeResponse>> => {\n if (functionGetData) {\n data = functionGetData();\n }\n\n return of({\n code: 200,\n data: (data as any) || [],\n paging: {},\n }).pipe(delay(250));\n },\n listPaging: async <TypeResponse = any>(params: UtilsHttpParamsRequest): Promise<IHttpResponse<TypeResponse>> => {\n if (functionGetData) {\n data = functionGetData();\n }\n const page = parseInt(params.get('page') || '1');\n const per_page = parseInt(params.get('per_page') || '30');\n const result = pagingToList(data as Array<any>, page, per_page);\n\n await lastValueFrom(timer(250));\n\n return result as IHttpResponse<TypeResponse>;\n },\n };\n};\n\n/**\n * Tạo một đối tượng mock detail với các phương thức để lấy bản ghi riêng lẻ theo khóa.\n * Hỗ trợ cả mảng dữ liệu tĩnh và các hàm dữ liệu động.\n *\n * @template TypeResponse - Kiểu dữ liệu phản hồi mong đợi\n * @template TypeParams - Kiểu tham số HTTP (mặc định là any)\n *\n * @param httpParams - Tham số HTTP chứa:\n * - keys: Khóa (hoặc các khóa) cần tìm kiếm\n * - fieldKey: Tên trường để so khớp (mặc định là 'id')\n * - dataResponseOject: Cờ boolean để định dạng đối tượng phản hồi\n * @param data - Mảng dữ liệu tĩnh tùy chọn để tìm kiếm\n * @param functionGetData - Hàm tùy chọn trả về dữ liệu (có thể là Promise hoặc Observable)\n * @param ignoreSplit - Nếu true, coi keys như một giá trị đơn thay vì tách chuỗi\n * @param splitOperator - Toán tử tùy chỉnh để tách keys (mặc định là dấu phẩy)\n *\n * @returns Đối tượng với các phương thức:\n * - detailByData: Tìm kiếm thông qua mảng dữ liệu tĩnh được cung cấp\n * - detailByFunction: Gọi functionGetData để lấy dữ liệu mới, sau đó tìm kiếm\n *\n * @example\n * ```typescript\n * const params = new UtilsHttpParamsRequest({fromObject:{keys:'1',fieldKey:'id'}});\n * const mockDetail = returnDetailObject<User>(params, userData);\n * const user = await mockDetail.detailByData();\n * ```\n */\n\nexport const returnDetailObject = <TypeResponse, TypeParams = any>(\n httpParams: UtilsHttpParamsRequest<TypeParams> | HttpParams,\n data?: Array<any>,\n functionGetData?: () => Promise<IHttpResponse<TypeResponse>> | Observable<IHttpResponse<TypeResponse>>,\n ignoreSplit?: boolean,\n splitOperator?: string\n): {\n detailByData: <TypeResponse = any>(keys?: any) => Promise<IHttpResponse<TypeResponse>>;\n detailByFunction: <TypeResponse = any>(keys?: any) => Promise<IHttpResponse<TypeResponse>>;\n} => {\n const keysPrams: any = httpParams.get('keys');\n const fieldKey: string = httpParams.get('fieldKey') || 'id';\n const dataResponseOject: any = httpParams.get('dataResponseOject');\n\n return {\n detailByData: async <TypeResponse>(keys?: any): Promise<IHttpResponse<TypeResponse>> => {\n return filterData<TypeResponse>(fieldKey, data, keys ?? keysPrams, dataResponseOject, ignoreSplit, splitOperator);\n },\n\n detailByFunction: async <TypeResponse>(keys?: any): Promise<IHttpResponse<TypeResponse>> => {\n if (!functionGetData) {\n return await filterData<TypeResponse>(fieldKey, undefined, undefined, dataResponseOject, ignoreSplit, splitOperator);\n }\n\n let dataResult: any = functionGetData();\n\n try {\n if (dataResult['subscribe']) {\n dataResult = await lastValueFrom(dataResult);\n }\n if (dataResult['then']) {\n dataResult = await dataResult;\n }\n } catch (_) {\n dataResult = { data: [] };\n }\n\n data = dataResult.data;\n\n return await filterData<TypeResponse>(fieldKey, data, keys || keysPrams, dataResponseOject, ignoreSplit, splitOperator);\n },\n };\n};\n\nconst filterData = <TypeResponse>(fieldKey: string, data?: Array<any>, keys?: any, dataResponseOject?: boolean, ignoreSplit?: boolean, splitOperator?: string): IHttpResponse<TypeResponse> => {\n if (!data || typeof data !== 'object' || isNil(keys) || keys === '') {\n return {\n code: 200,\n data: undefined,\n paging: {},\n };\n }\n\n data = data || [];\n\n if (!(data instanceof Array)) {\n data = [data];\n }\n const result: any = [];\n\n if (!ignoreSplit && typeof keys === 'string') {\n keys = keys.split(splitOperator || ',');\n }\n\n if (typeof keys === 'number' || typeof keys === 'boolean' || (typeof keys === 'string' && ignoreSplit)) {\n keys = [keys];\n }\n\n keys.forEach((key: string) => {\n const resultFilter = data?.filter((elData: { [key: string]: any }) => isEqual(get(elData, fieldKey), key, { ignoreExactlyDataType: true }));\n\n if (resultFilter && resultFilter.length) {\n result.push(...resultFilter);\n }\n });\n\n return {\n code: 200,\n data: result.length ? (dataResponseOject ? result[0] : result) : undefined,\n paging: {},\n };\n};\n\nconst per_page = 20;\nconst total_items = per_page * 150 + 15;\n\nexport const getConfigListDataDemo = (httpParamsDetail: UtilsHttpParamsRequest<any> = new UtilsHttpParamsRequest(), objectData?: Record<string, string>, functionBuildObject?: (numIncrement: string) => Record<string, string>) => {\n if (!objectData) {\n objectData = {\n id: '',\n name: 'item positon index ',\n };\n }\n\n const data = [...Array(total_items).keys()].map((_, index) => {\n if (functionBuildObject) {\n return functionBuildObject(`${+index + 1}`);\n }\n const obj: Record<string, string> = {};\n Object.keys(objectData).forEach((key) => {\n set(obj, key, `${objectData[key]}${+index + 1}`);\n });\n return obj;\n });\n\n const listService = returnListObject(data);\n const detailService = returnDetailObject(httpParamsDetail, data, undefined, false, ';');\n return {\n list: listService.listPaging,\n detailByData: detailService.detailByData,\n };\n};\n\n/**\n * Hàm phân trang dữ liệu từ một mảng\n * @param data - Mảng dữ liệu cần phân trang\n * @param page - Số trang hiện tại (bắt đầu từ 1)\n * @param per_page - Số lượng item trên mỗi trang\n * @returns Đối tượng chứa dữ liệu đã phân trang và thông tin phân trang\n */\nexport const pagingToList = (data: Array<any>, page: number, per_page: number) => {\n if (!data || !Array.isArray(data)) {\n return {\n code: 200,\n data: [],\n paging: {\n page: page,\n per_page: per_page,\n total_items: 0,\n total_pages: 0,\n },\n };\n }\n const start = (page - 1) * per_page;\n const end = start + per_page;\n const total_pages = Math.ceil(data.length / per_page);\n const dataByPage = data.slice(start, end);\n return {\n code: 200,\n data: dataByPage,\n paging: {\n page: page > total_pages ? total_pages : page,\n per_page: per_page,\n total_items: data.length,\n total_pages: total_pages,\n },\n };\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Type } from '@angular/core';\nimport { IGuideAutoUpdateArgumentsValue } from './guild-auto-update-arguments-value.interface';\n\nexport interface IHttpRequestConfig<T = any> {\n serviceClass?: Type<T>; // tên class của component gọi http request\n objectInstance?: T; // là 1 object không được inject trong httpRequest; được sử dụng để lấy data từ 1 đối tượng không phải là service inject\n functionName?: keyof T; // tên hàm muốn gọi trong service\n argumentsValue: Array<any>; // chứa dữ liệu của params truyền vào, mảng có kểu dữ liệu không cần giống nhau vd: hàm function(search:string,age:number,page:Object)={...} thì serviceSpecificParams = ['param',16,{page:1,page:per_page:25}]\n cacheType?: 'service' | 'local-store';\n keyCache?: string; // sử dụng nếu sử dụng cache. khi tạo bộ config sử dụng đối tượng uuid để lấy một id set vào biến này. và biến này sẽ ko thay đổi trong quá trình sử dụng\n timeCache?: number; // đơn vị phút\n clearCache?: boolean;\n guideAutoUpdateArgumentsValue?: IGuideAutoUpdateArgumentsValue; // khai báo không sử dụng cho HttpRequestService. Dùng cho cá component muốn lấy thông tin update arguments để load more khi scroll bottom. Ví dụ như MoLibShareComponentsListViewTemplatesComponentAbstract\n convertResponseData?: (response: any) => any;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@libs-ui/services-http-request",
3
- "version": "0.2.319-0",
3
+ "version": "0.2.320-0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=18.0.0",
6
6
  "@angular/core": ">=18.0.0",
7
- "@libs-ui/interfaces-types": "0.2.319-0",
8
- "@libs-ui/utils": "0.2.319-0",
7
+ "@libs-ui/interfaces-types": "0.2.320-0",
8
+ "@libs-ui/utils": "0.2.320-0",
9
9
  "rxjs": "~7.8.0"
10
10
  },
11
11
  "sideEffects": false,