@libs-ui/services-http-request 0.2.318-0 → 0.2.319-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.
@@ -14,7 +14,7 @@ export class LibsUiHttpRequestService {
14
14
  }
15
15
  const { objectInstance, keyCache, functionName, argumentsValue, serviceClass } = httpRequestConfig;
16
16
  if (!objectInstance && !serviceClass) {
17
- throw `http request config not exactly serviceOther or serviceName`;
17
+ throw `http request config not exactly objectInstance or serviceName`;
18
18
  }
19
19
  const instance = objectInstance || this.injector.get(serviceClass);
20
20
  if (!instance) {
@@ -227,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
227
227
  providedIn: 'root',
228
228
  }]
229
229
  }] });
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaHR0cC1yZXF1ZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTXJDLE1BQU0sT0FBTyx3QkFBd0I7SUFDM0IsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxnQ0FBZ0M7SUFDeEIsWUFBWSxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTVDLEtBQUssQ0FBQyxPQUFPLENBQVUsaUJBQXFDO1FBQ2pFLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFELE1BQU0sbURBQW1ELENBQUM7UUFDNUQsQ0FBQztRQUVELE1BQU0sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLEdBQUcsaUJBQWlCLENBQUM7UUFFbkcsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JDLE1BQU0sNkRBQTZELENBQUM7UUFDdEUsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFRLGNBQWMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBSSxZQUFtQixDQUFDLENBQUM7UUFDbEYs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Ii8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUGFnaW5nIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBVdGlsc0NhY2hlLCBnZXQsIGdldEtleUNhY2hlQnlBcnJheU9iamVjdCwgaXNFbXB0eSwgc2V0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlLCBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWcsIElIdHRwUmVxdWVzdENvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9pbmRleCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlIdHRwUmVxdWVzdFNlcnZpY2Uge1xuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgLyoqIENo4bupYSBk4buvIGxp4buHdSBjYWNoZSBtZW1vcnkgKi9cbiAgcHJpdmF0ZSBzZXJ2aWNlU3RvcmU6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKCk7XG5cbiAgcHVibGljIGFzeW5jIGNhbGxBcGk8VCA9IGFueT4oaHR0cFJlcXVlc3RDb25maWc6IElIdHRwUmVxdWVzdENvbmZpZyk6IFByb21pc2U8VD4ge1xuICAgIGlmICghaHR0cFJlcXVlc3RDb25maWcgfHwgIWh0dHBSZXF1ZXN0Q29uZmlnLmZ1bmN0aW9uTmFtZSkge1xuICAgICAgdGhyb3cgJ2h0dHAgcmVxdWVzdCBjb25maWcgbm90IGV4YWN0bHkgaHR0cFJlcXVlc3RDb25maWcnO1xuICAgIH1cblxuICAgIGNvbnN0IHsgb2JqZWN0SW5zdGFuY2UsIGtleUNhY2hlLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50c1ZhbHVlLCBzZXJ2aWNlQ2xhc3MgfSA9IGh0dHBSZXF1ZXN0Q29uZmlnO1xuXG4gICAgaWYgKCFvYmplY3RJbnN0YW5jZSAmJiAhc2VydmljZUNsYXNzKSB7XG4gICAgICB0aHJvdyBgaHR0cCByZXF1ZXN0IGNvbmZpZyBub3QgZXhhY3RseSBzZXJ2aWNlT3RoZXIgb3Igc2VydmljZU5hbWVgO1xuICAgIH1cbiAgICBjb25zdCBpbnN0YW5jZTogYW55ID0gb2JqZWN0SW5zdGFuY2UgfHwgdGhpcy5pbmplY3Rvci5nZXQ8VD4oc2VydmljZUNsYXNzIGFzIGFueSk7XG4gICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgdGhyb3cgYGh0dHAgcmVxdWVzdCBub3Rmb3VuZCBzZXJ2aWNlIGluc3RhbmNlYDtcbiAgICB9XG4gICAgY29uc3QgbWV0aG9kSW5zdGFuY2UgPSBpbnN0YW5jZVtmdW5jdGlvbk5hbWVdO1xuXG4gICAgaWYgKCFtZXRob2RJbnN0YW5jZSkge1xuICAgICAgdGhyb3cgYGh0dHAgcmVxdWVzdCBjb25maWcgbm90Zm91bmQgbWV0aG9kSW5zdGFuY2UgbmFtZTogJHtTdHJpbmcoZnVuY3Rpb25OYW1lKX1gO1xuICAgIH1cbiAgICBjb25zdCBrZXlDYWNoZU1ENTogc3RyaW5nID0gZ2V0S2V5Q2FjaGVCeUFycmF5T2JqZWN0KGtleUNhY2hlIHx8ICcnLCBhcmd1bWVudHNWYWx1ZSk7XG4gICAgY29uc3QgY2FjaGVEYXRhID0gYXdhaXQgdGhpcy5nZXRDYWNoZURhdGEoaHR0cFJlcXVlc3RDb25maWcsIGtleUNhY2hlTUQ1KTtcblxuICAgIGlmIChjYWNoZURhdGEpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY2FjaGVEYXRhKTtcbiAgICB9XG5cbiAgICBsZXQgY2FsbFJlc3BvbnNlID0gbWV0aG9kSW5zdGFuY2UuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50c1ZhbHVlKTtcbiAgICBpZiAoIWNhbGxSZXNwb25zZS50aGVuKSB7XG4gICAgICBjYWxsUmVzcG9uc2UgPSBsYXN0VmFsdWVGcm9tKGNhbGxSZXNwb25zZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgY2FsbFJlc3BvbnNlO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2V0Q2FjaGVEYXRhKHJlcywgaHR0cFJlcXVlc3RDb25maWcsIGtleUNhY2hlTUQ1KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q2FjaGVEYXRhKGh0dHBSZXF1ZXN0Q29uZmlnOiBJSHR0cFJlcXVlc3RDb25maWcsIGtleUNhY2hlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGNhY2hlVHlwZSwgY29udmVydFJlc3BvbnNlRGF0YSB9ID0gaHR0cFJlcXVlc3RDb25maWc7XG5cbiAgICBpZiAoIWNhY2hlVHlwZSB8fCAha2V5Q2FjaGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChjYWNoZVR5cGUgPT09ICdzZXJ2aWNlJykge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuc2VydmljZVN0b3JlLmdldChrZXlDYWNoZSk7XG5cbiAgICAgIHJldHVybiBkYXRhID8gKGNvbnZlcnRSZXNwb25zZURhdGEgPyBjb252ZXJ0UmVzcG9uc2VEYXRhKGRhdGEpIDogZGF0YSkgOiBkYXRhO1xuICAgIH1cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgVXRpbHNDYWNoZS5HZXRBc3luYyhrZXlDYWNoZSwgdW5kZWZpbmVkLCB0cnVlKTtcblxuICAgIHJldHVybiBkYXRhID8gKGNvbnZlcnRSZXNwb25zZURhdGEgPyBjb252ZXJ0UmVzcG9uc2VEYXRhKGRhdGEpIDogZGF0YSkgOiBkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRDYWNoZURhdGEoZGF0YTogYW55LCBodHRwUmVxdWVzdENvbmZpZzogSUh0dHBSZXF1ZXN0Q29uZmlnLCBrZXlDYWNoZTogc3RyaW5nKSB7XG4gICAgY29uc3QgeyBjYWNoZVR5cGUsIGNsZWFyQ2FjaGUsIGNvbnZlcnRSZXNwb25zZURhdGEgfSA9IGh0dHBSZXF1ZXN0Q29uZmlnO1xuXG4gICAgaWYgKCFjYWNoZVR5cGUgfHwgIWtleUNhY2hlKSB7XG4gICAgICByZXR1cm4gY29udmVydFJlc3BvbnNlRGF0YSA/IGNvbnZlcnRSZXNwb25zZURhdGEoZGF0YSkgOiBkYXRhO1xuICAgIH1cbiAgICBpZiAoY2xlYXJDYWNoZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5jbGVhckNhY2hlKGNhY2hlVHlwZSwga2V5Q2FjaGUpO1xuICAgIH1cbiAgICBpZiAoY2FjaGVUeXBlID09PSAnc2VydmljZScpIHtcbiAgICAgIHRoaXMuc2VydmljZVN0b3JlLnNldChrZXlDYWNoZSwgZGF0YSk7XG5cbiAgICAgIHJldHVybiBjb252ZXJ0UmVzcG9uc2VEYXRhID8gY29udmVydFJlc3BvbnNlRGF0YShkYXRhKSA6IGRhdGE7XG4gICAgfVxuICAgIGF3YWl0IFV0aWxzQ2FjaGUuU2V0QXN5bmMoa2V5Q2FjaGUsIGRhdGEsIChodHRwUmVxdWVzdENvbmZpZy50aW1lQ2FjaGUgfHwgNSkgKiA2MCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gY29udmVydFJlc3BvbnNlRGF0YSA/IGNvbnZlcnRSZXNwb25zZURhdGEoZGF0YSkgOiBkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckNhY2hlKGNhY2hlVHlwZTogJ3NlcnZpY2UnIHwgJ2xvY2FsLXN0b3JlJywga2V5Q2FjaGU6IHN0cmluZykge1xuICAgIGlmIChjYWNoZVR5cGUgPT09ICdzZXJ2aWNlJykge1xuICAgICAgdGhpcy5zZXJ2aWNlU3RvcmUuZGVsZXRlKGtleUNhY2hlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBVdGlsc0NhY2hlLkNsZWFyQXN5bmMoa2V5Q2FjaGUsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4gdHLhuqMgduG7gSB0cuG6oW5nIHRow6FpIMSRw6MgbG9hZCBo4bq/dCBpdGVtIGNoxrBhICh2w60gZOG7pTogZOG7sWEgdsOgbyB0aGFtIHPhu5EgbsOgeSDEkeG7gyBxdXnhur90IMSR4buLbmggY8OzIHRp4bq/cCB04bulYyBn4buNaSBhcGkga2hpIHNjcm9sbCBrbykgLlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZUFyZ3VtZW50cyhcbiAgICBhcmd1bWVudHNWYWx1ZTogQXJyYXk8YW55PixcbiAgICBvYmplY3RHZXREYXRhVXBkYXRlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHBhZ2luZ1N0b3JlOiBJUGFnaW5nLFxuICAgIGtleVNlYXJjaDogc3RyaW5nLFxuICAgIHNlYXJjaE9ubGluZTogYm9vbGVhbixcbiAgICBsb2FkZWRMYXN0SXRlbTogYm9vbGVhbixcbiAgICBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZT86IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZVxuICApOiBib29sZWFuIHtcbiAgICBpZiAoIWFyZ3VtZW50c1ZhbHVlIHx8ICEoYXJndW1lbnRzVmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgfHwgbG9hZGVkTGFzdEl0ZW0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUFyZ3VtZW50c0RlZmF1bHQoYXJndW1lbnRzVmFsdWUsIHRydWUsIHBhZ2luZ1N0b3JlLCBrZXlTZWFyY2gsIHNlYXJjaE9ubGluZSk7XG4gICAgfVxuICAgIGNvbnN0IHsgcGFnaW5nLCBzZWFyY2gsIG90aGVyLCBkZXRhaWxCeUlkLCBzb3J0T3JkZXJUeXBlLCBzb3J0T3JkZXJCeSB9ID0gZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWU7XG5cbiAgICBpZiAoc2VhcmNoKSB7XG4gICAgICBzZWFyY2guZmllbGRHZXRWYWx1ZSA9ICdrZXlTZWFyY2gnO1xuICAgICAgdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgeyBrZXlTZWFyY2ggfSwgc2VhcmNoKTtcbiAgICB9XG4gICAgaWYgKG9iamVjdEdldERhdGFVcGRhdGU/Llsnc3RvcmVQYXJhbXNDYWxsQXBpJ10gJiYgdHlwZW9mIG9iamVjdEdldERhdGFVcGRhdGU/Llsnc3RvcmVQYXJhbXNDYWxsQXBpJ10gPT09ICdvYmplY3QnICYmICEob2JqZWN0R2V0RGF0YVVwZGF0ZT8uWydzdG9yZVBhcmFtc0NhbGxBcGknXSBhcyBhbnkpLmluc3RhbmNlU29ydCkge1xuICAgICAgb2JqZWN0R2V0RGF0YVVwZGF0ZVsnc3RvcmVQYXJhbXNDYWxsQXBpJ10gPSB7IC4uLm9iamVjdEdldERhdGFVcGRhdGVbJ3N0b3JlUGFyYW1zQ2FsbEFwaSddLCBpbnN0YW5jZVNvcnQ6IHt9IH07XG4gICAgfVxuICAgIGlmIChzb3J0T3JkZXJCeSkge1xuICAgICAgdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgc29ydE9yZGVyQnkpO1xuICAgIH1cbiAgICBpZiAoc29ydE9yZGVyVHlwZSkge1xuICAgICAgdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgc29ydE9yZGVyVHlwZSk7XG4gICAgfVxuICAgIGlmIChvdGhlciAmJiBvdGhlci5sZW5ndGgpIHtcbiAgICAgIG90aGVyLmZvckVhY2goKGNvbmZpZykgPT4gdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgY29uZmlnKSk7XG4gICAgfVxuICAgIGlmIChkZXRhaWxCeUlkKSB7XG4gICAgICBkZXRhaWxCeUlkLmZpZWxkR2V0VmFsdWUgPSBkZXRhaWxCeUlkLmZpZWxkR2V0VmFsdWUgfHwgZGV0YWlsQnlJZC5maWVsZEdldFZhbHVlLnRyaW0oKSB8fCAna2V5JztcbiAgICAgIHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIGRldGFpbEJ5SWQpO1xuICAgIH1cblxuICAgIGlmIChpc0VtcHR5KHBhZ2luZykpIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUFyZ3VtZW50c0RlZmF1bHQoYXJndW1lbnRzVmFsdWUsIGZhbHNlLCBwYWdpbmdTdG9yZSB8fCB0aGlzLmZha2VSZXNwb25zZVBhZ2luZ0FwaSgpWydwYWdpbmcnXSwga2V5U2VhcmNoLCBzZWFyY2hPbmxpbmUpO1xuICAgIH1cbiAgICBjb25zdCB7IHBhZ2UsIGJlZm9yZSwgYWZ0ZXIgfSA9IHBhZ2luZztcblxuICAgIGlmIChwYWdlICYmIG9iamVjdEdldERhdGFVcGRhdGUpIHtcbiAgICAgIHBhZ2UucHJlcHJvY2Vzc29yID0gKHZhbHVlOiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICAgICAgICByZXR1cm4gKyt2YWx1ZTtcbiAgICAgIH07XG4gICAgICBjb25zdCB2YWx1ZVBhZ2UgPSArdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgcGFnZSk7XG4gICAgICBjb25zdCB2YWx1ZUxhc3RQYWdlID0gK2dldChvYmplY3RHZXREYXRhVXBkYXRlIGFzIGFueSwgJ3BhZ2luZy50b3RhbF9wYWdlcycpO1xuXG4gICAgICBpZiAoKHZhbHVlUGFnZSAmJiBOdW1iZXIodmFsdWVQYWdlKS52YWx1ZU9mKCkgPiBOdW1iZXIodmFsdWVMYXN0UGFnZSkudmFsdWVPZigpKSB8fCB2YWx1ZUxhc3RQYWdlID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYmVmb3JlICYmIG9iamVjdEdldERhdGFVcGRhdGUgJiYgIXRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIGJlZm9yZSkgJiYgIWdldChvYmplY3RHZXREYXRhVXBkYXRlLCAncGFnaW5nLmZha2UnKSkge1xuICAgICAgc2V0KG9iamVjdEdldERhdGFVcGRhdGUsICdwYWdpbmcuZmFrZScsIGZhbHNlKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChhZnRlciAmJiBvYmplY3RHZXREYXRhVXBkYXRlICYmICF0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBhZnRlcikgJiYgIWdldChvYmplY3RHZXREYXRhVXBkYXRlLCAncGFnaW5nLmZha2UnKSkge1xuICAgICAgc2V0KG9iamVjdEdldERhdGFVcGRhdGUsICdwYWdpbmcuZmFrZScsIGZhbHNlKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFhcmd1bWVudHNWYWx1ZSB8fCAhYXJndW1lbnRzVmFsdWUubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUFyZ3VtZW50c0RlZmF1bHQoYXJndW1lbnRzVmFsdWU6IEFycmF5PGFueT4sIHVwZGF0ZVNlYXJjaDogYm9vbGVhbiwgcGFnaW5nU3RvcmU6IElQYWdpbmcsIGtleVNlYXJjaDogc3RyaW5nLCBzZWFyY2hPbmxpbmU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIWFyZ3VtZW50c1ZhbHVlIHx8ICFhcmd1bWVudHNWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgaW5kZXggaW4gYXJndW1lbnRzVmFsdWUpIHtcbiAgICAgIGxldCBhcmd1bWVudFZhbHVlID0gYXJndW1lbnRzVmFsdWVbaW5kZXhdO1xuXG4gICAgICBpZiAoIShhcmd1bWVudFZhbHVlIGluc3RhbmNlb2YgSHR0cFBhcmFtcykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBwYWdlVmFsdWUgPSBhcmd1bWVudFZhbHVlLmdldCgncGFnZScpO1xuXG4gICAgICBpZiAoc2VhcmNoT25saW5lICYmIHVwZGF0ZVNlYXJjaCkge1xuICAgICAgICBhcmd1bWVudFZhbHVlID0gYXJndW1lbnRWYWx1ZS5zZXQoJ3NlYXJjaCcsIGtleVNlYXJjaCk7XG4gICAgICAgIGFyZ3VtZW50c1ZhbHVlW2luZGV4XSA9IGFyZ3VtZW50VmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoYXJndW1lbnRWYWx1ZS5oYXMoJ2JlZm9yZScpKSB7XG4gICAgICAgIGFyZ3VtZW50VmFsdWUgPSBhcmd1bWVudFZhbHVlLnNldCgnYmVmb3JlJywgcGFnaW5nU3RvcmU/LmJlZm9yZSk7XG4gICAgICAgIGFyZ3VtZW50c1ZhbHVlW2luZGV4XSA9IGFyZ3VtZW50VmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoYXJndW1lbnRWYWx1ZS5oYXMoJ2FmdGVyJykpIHtcbiAgICAgICAgYXJndW1lbnRWYWx1ZSA9IGFyZ3VtZW50VmFsdWUuc2V0KCdhZnRlcicsIHBhZ2luZ1N0b3JlPy5hZnRlcik7XG4gICAgICAgIGFyZ3VtZW50c1ZhbHVlW2luZGV4XSA9IGFyZ3VtZW50VmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoTnVtYmVyKHBhZ2VWYWx1ZSkudmFsdWVPZigpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICghcGFnaW5nU3RvcmUgfHwgcGFnZVZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgcGFnZSwgdG90YWxfcGFnZXMgfSA9IHBhZ2luZ1N0b3JlO1xuICAgICAgY29uc3QgbmV4dFBhZ2UgPSAocGFnZSB8fCAwKSArIDE7XG5cbiAgICAgIGlmIChuZXh0UGFnZSAmJiBOdW1iZXIobmV4dFBhZ2UpLnZhbHVlT2YoKSA+IE51bWJlcih0b3RhbF9wYWdlcykudmFsdWVPZigpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgYXJndW1lbnRzVmFsdWVbaW5kZXhdID0gYXJndW1lbnRWYWx1ZS5zZXQoJ3BhZ2UnLCBuZXh0UGFnZSk7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlOiBBcnJheTxhbnk+LCBvYmplY3RHZXREYXRhVXBkYXRlOiBhbnksIGNvbmZpZzogSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlQ29uZmlnKSB7XG4gICAgaWYgKCFjb25maWcgfHwgIW9iamVjdEdldERhdGFVcGRhdGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChjb25maWcubG9nPy5sb2dJbnB1dHMpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdjb25maWcnLCBjb25maWcpO1xuICAgICAgY29uc29sZS5sb2coJ29iamVjdEdldERhdGFVcGRhdGUnLCBvYmplY3RHZXREYXRhVXBkYXRlKTtcbiAgICAgIGNvbnNvbGUubG9nKCdhcmd1bWVudHNWYWx1ZScsIGFyZ3VtZW50c1ZhbHVlKTtcbiAgICAgIGNvbnNvbGUubG9nKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScpO1xuICAgIH1cbiAgICBjb25zdCB7IGZpZWxkVXBkYXRlLCBmaWVsZEdldFZhbHVlLCBwcmVwcm9jZXNzb3IgfSA9IGNvbmZpZztcblxuICAgIGlmICghZmllbGRVcGRhdGUgfHwgIWZpZWxkR2V0VmFsdWUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlID0gZ2V0KG9iamVjdEdldERhdGFVcGRhdGUsIGZpZWxkR2V0VmFsdWUpO1xuICAgIGlmIChjb25maWcubG9nPy5sb2dHZXRWYWx1ZSkge1xuICAgICAgY29uc29sZS5sb2coYHZhbHVlIG9mIG9iamVjdEdldERhdGFVcGRhdGVbJHtmaWVsZEdldFZhbHVlfV06IGAsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAocHJlcHJvY2Vzc29yKSB7XG4gICAgICB2YWx1ZSA9IHByZXByb2Nlc3Nvcih2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChmaWVsZFVwZGF0ZSkge1xuICAgICAgbGV0IHJlc3VsdE9mRmllbGRVcGRhdGUgPSBnZXQoYXJndW1lbnRzVmFsdWUsIGZpZWxkVXBkYXRlIGFzIGFueSk7XG5cbiAgICAgIGlmIChyZXN1bHRPZkZpZWxkVXBkYXRlIGluc3RhbmNlb2YgSHR0cFBhcmFtcykge1xuICAgICAgICByZXN1bHRPZkZpZWxkVXBkYXRlID0gcmVzdWx0T2ZGaWVsZFVwZGF0ZS5zZXQoY29uZmlnLnN1YkZpZWxkVXBkYXRlIHx8ICdzZWFyY2gnLCB2YWx1ZSk7XG4gICAgICAgIHNldChhcmd1bWVudHNWYWx1ZSwgZmllbGRVcGRhdGUgYXMgYW55LCByZXN1bHRPZkZpZWxkVXBkYXRlKTtcblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0T2ZGaWVsZFVwZGF0ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJlc3VsdE9mRmllbGRVcGRhdGUucHVzaCh2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdE9mRmllbGRVcGRhdGUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgc2V0KHJlc3VsdE9mRmllbGRVcGRhdGUsIGNvbmZpZy5zdWJGaWVsZFVwZGF0ZSB8fCAnc2VhcmNoJywgdmFsdWUpO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHNldChhcmd1bWVudHNWYWx1ZSwgZmllbGRVcGRhdGUgYXMgYW55LCB2YWx1ZSk7XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZmFrZVJlc3BvbnNlUGFnaW5nQXBpKCk6IHsgcGFnaW5nOiBJUGFnaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBwYWdpbmc6IHtcbiAgICAgICAgcGFnZTogMCxcbiAgICAgICAgdG90YWxfcGFnZXM6IDEsXG4gICAgICAgIGJlZm9yZTogJycsXG4gICAgICAgIGFmdGVyOiAnJyxcbiAgICAgICAgZmFrZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaHR0cC1yZXF1ZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTXJDLE1BQU0sT0FBTyx3QkFBd0I7SUFDM0IsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxnQ0FBZ0M7SUFDeEIsWUFBWSxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTVDLEtBQUssQ0FBQyxPQUFPLENBQVUsaUJBQXFDO1FBQ2pFLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFELE1BQU0sbURBQW1ELENBQUM7UUFDNUQsQ0FBQztRQUVELE1BQU0sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLEdBQUcsaUJBQWlCLENBQUM7UUFFbkcsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JDLE1BQU0sK0RBQStELENBQUM7UUFDeEUsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFRLGNBQWMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBSSxZQUFtQixDQUFDLENBQUM7UUFDbEYs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Ii8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUGFnaW5nIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBVdGlsc0NhY2hlLCBnZXQsIGdldEtleUNhY2hlQnlBcnJheU9iamVjdCwgaXNFbXB0eSwgc2V0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlLCBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWcsIElIdHRwUmVxdWVzdENvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9pbmRleCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlIdHRwUmVxdWVzdFNlcnZpY2Uge1xuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgLyoqIENo4bupYSBk4buvIGxp4buHdSBjYWNoZSBtZW1vcnkgKi9cbiAgcHJpdmF0ZSBzZXJ2aWNlU3RvcmU6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKCk7XG5cbiAgcHVibGljIGFzeW5jIGNhbGxBcGk8VCA9IGFueT4oaHR0cFJlcXVlc3RDb25maWc6IElIdHRwUmVxdWVzdENvbmZpZyk6IFByb21pc2U8VD4ge1xuICAgIGlmICghaHR0cFJlcXVlc3RDb25maWcgfHwgIWh0dHBSZXF1ZXN0Q29uZmlnLmZ1bmN0aW9uTmFtZSkge1xuICAgICAgdGhyb3cgJ2h0dHAgcmVxdWVzdCBjb25maWcgbm90IGV4YWN0bHkgaHR0cFJlcXVlc3RDb25maWcnO1xuICAgIH1cblxuICAgIGNvbnN0IHsgb2JqZWN0SW5zdGFuY2UsIGtleUNhY2hlLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50c1ZhbHVlLCBzZXJ2aWNlQ2xhc3MgfSA9IGh0dHBSZXF1ZXN0Q29uZmlnO1xuXG4gICAgaWYgKCFvYmplY3RJbnN0YW5jZSAmJiAhc2VydmljZUNsYXNzKSB7XG4gICAgICB0aHJvdyBgaHR0cCByZXF1ZXN0IGNvbmZpZyBub3QgZXhhY3RseSBvYmplY3RJbnN0YW5jZSBvciBzZXJ2aWNlTmFtZWA7XG4gICAgfVxuICAgIGNvbnN0IGluc3RhbmNlOiBhbnkgPSBvYmplY3RJbnN0YW5jZSB8fCB0aGlzLmluamVjdG9yLmdldDxUPihzZXJ2aWNlQ2xhc3MgYXMgYW55KTtcbiAgICBpZiAoIWluc3RhbmNlKSB7XG4gICAgICB0aHJvdyBgaHR0cCByZXF1ZXN0IG5vdGZvdW5kIHNlcnZpY2UgaW5zdGFuY2VgO1xuICAgIH1cbiAgICBjb25zdCBtZXRob2RJbnN0YW5jZSA9IGluc3RhbmNlW2Z1bmN0aW9uTmFtZV07XG5cbiAgICBpZiAoIW1ldGhvZEluc3RhbmNlKSB7XG4gICAgICB0aHJvdyBgaHR0cCByZXF1ZXN0IGNvbmZpZyBub3Rmb3VuZCBtZXRob2RJbnN0YW5jZSBuYW1lOiAke1N0cmluZyhmdW5jdGlvbk5hbWUpfWA7XG4gICAgfVxuICAgIGNvbnN0IGtleUNhY2hlTUQ1OiBzdHJpbmcgPSBnZXRLZXlDYWNoZUJ5QXJyYXlPYmplY3Qoa2V5Q2FjaGUgfHwgJycsIGFyZ3VtZW50c1ZhbHVlKTtcbiAgICBjb25zdCBjYWNoZURhdGEgPSBhd2FpdCB0aGlzLmdldENhY2hlRGF0YShodHRwUmVxdWVzdENvbmZpZywga2V5Q2FjaGVNRDUpO1xuXG4gICAgaWYgKGNhY2hlRGF0YSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjYWNoZURhdGEpO1xuICAgIH1cblxuICAgIGxldCBjYWxsUmVzcG9uc2UgPSBtZXRob2RJbnN0YW5jZS5hcHBseShpbnN0YW5jZSwgYXJndW1lbnRzVmFsdWUpO1xuICAgIGlmICghY2FsbFJlc3BvbnNlLnRoZW4pIHtcbiAgICAgIGNhbGxSZXNwb25zZSA9IGxhc3RWYWx1ZUZyb20oY2FsbFJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBjYWxsUmVzcG9uc2U7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZXRDYWNoZURhdGEocmVzLCBodHRwUmVxdWVzdENvbmZpZywga2V5Q2FjaGVNRDUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDYWNoZURhdGEoaHR0cFJlcXVlc3RDb25maWc6IElIdHRwUmVxdWVzdENvbmZpZywga2V5Q2FjaGU6IHN0cmluZykge1xuICAgIGNvbnN0IHsgY2FjaGVUeXBlLCBjb252ZXJ0UmVzcG9uc2VEYXRhIH0gPSBodHRwUmVxdWVzdENvbmZpZztcblxuICAgIGlmICghY2FjaGVUeXBlIHx8ICFrZXlDYWNoZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKGNhY2hlVHlwZSA9PT0gJ3NlcnZpY2UnKSB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5zZXJ2aWNlU3RvcmUuZ2V0KGtleUNhY2hlKTtcblxuICAgICAgcmV0dXJuIGRhdGEgPyAoY29udmVydFJlc3BvbnNlRGF0YSA/IGNvbnZlcnRSZXNwb25zZURhdGEoZGF0YSkgOiBkYXRhKSA6IGRhdGE7XG4gICAgfVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBVdGlsc0NhY2hlLkdldEFzeW5jKGtleUNhY2hlLCB1bmRlZmluZWQsIHRydWUpO1xuXG4gICAgcmV0dXJuIGRhdGEgPyAoY29udmVydFJlc3BvbnNlRGF0YSA/IGNvbnZlcnRSZXNwb25zZURhdGEoZGF0YSkgOiBkYXRhKSA6IGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldENhY2hlRGF0YShkYXRhOiBhbnksIGh0dHBSZXF1ZXN0Q29uZmlnOiBJSHR0cFJlcXVlc3RDb25maWcsIGtleUNhY2hlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGNhY2hlVHlwZSwgY2xlYXJDYWNoZSwgY29udmVydFJlc3BvbnNlRGF0YSB9ID0gaHR0cFJlcXVlc3RDb25maWc7XG5cbiAgICBpZiAoIWNhY2hlVHlwZSB8fCAha2V5Q2FjaGUpIHtcbiAgICAgIHJldHVybiBjb252ZXJ0UmVzcG9uc2VEYXRhID8gY29udmVydFJlc3BvbnNlRGF0YShkYXRhKSA6IGRhdGE7XG4gICAgfVxuICAgIGlmIChjbGVhckNhY2hlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmNsZWFyQ2FjaGUoY2FjaGVUeXBlLCBrZXlDYWNoZSk7XG4gICAgfVxuICAgIGlmIChjYWNoZVR5cGUgPT09ICdzZXJ2aWNlJykge1xuICAgICAgdGhpcy5zZXJ2aWNlU3RvcmUuc2V0KGtleUNhY2hlLCBkYXRhKTtcblxuICAgICAgcmV0dXJuIGNvbnZlcnRSZXNwb25zZURhdGEgPyBjb252ZXJ0UmVzcG9uc2VEYXRhKGRhdGEpIDogZGF0YTtcbiAgICB9XG4gICAgYXdhaXQgVXRpbHNDYWNoZS5TZXRBc3luYyhrZXlDYWNoZSwgZGF0YSwgKGh0dHBSZXF1ZXN0Q29uZmlnLnRpbWVDYWNoZSB8fCA1KSAqIDYwLCB0cnVlKTtcblxuICAgIHJldHVybiBjb252ZXJ0UmVzcG9uc2VEYXRhID8gY29udmVydFJlc3BvbnNlRGF0YShkYXRhKSA6IGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQ2FjaGUoY2FjaGVUeXBlOiAnc2VydmljZScgfCAnbG9jYWwtc3RvcmUnLCBrZXlDYWNoZTogc3RyaW5nKSB7XG4gICAgaWYgKGNhY2hlVHlwZSA9PT0gJ3NlcnZpY2UnKSB7XG4gICAgICB0aGlzLnNlcnZpY2VTdG9yZS5kZWxldGUoa2V5Q2FjaGUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFV0aWxzQ2FjaGUuQ2xlYXJBc3luYyhrZXlDYWNoZSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB0cuG6oyB24buBIHRy4bqhbmcgdGjDoWkgxJHDoyBsb2FkIGjhur90IGl0ZW0gY2jGsGEgKHbDrSBk4bulOiBk4buxYSB2w6BvIHRoYW0gc+G7kSBuw6B5IMSR4buDIHF1eeG6v3QgxJHhu4tuaCBjw7MgdGnhur9wIHThu6VjIGfhu41pIGFwaSBraGkgc2Nyb2xsIGtvKSAuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlQXJndW1lbnRzKFxuICAgIGFyZ3VtZW50c1ZhbHVlOiBBcnJheTxhbnk+LFxuICAgIG9iamVjdEdldERhdGFVcGRhdGU6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgcGFnaW5nU3RvcmU6IElQYWdpbmcsXG4gICAga2V5U2VhcmNoOiBzdHJpbmcsXG4gICAgc2VhcmNoT25saW5lOiBib29sZWFuLFxuICAgIGxvYWRlZExhc3RJdGVtOiBib29sZWFuLFxuICAgIGd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlPzogSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmICghYXJndW1lbnRzVmFsdWUgfHwgIShhcmd1bWVudHNWYWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB8fCBsb2FkZWRMYXN0SXRlbSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlQXJndW1lbnRzRGVmYXVsdChhcmd1bWVudHNWYWx1ZSwgdHJ1ZSwgcGFnaW5nU3RvcmUsIGtleVNlYXJjaCwgc2VhcmNoT25saW5lKTtcbiAgICB9XG4gICAgY29uc3QgeyBwYWdpbmcsIHNlYXJjaCwgb3RoZXIsIGRldGFpbEJ5SWQsIHNvcnRPcmRlclR5cGUsIHNvcnRPcmRlckJ5IH0gPSBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZTtcblxuICAgIGlmIChzZWFyY2gpIHtcbiAgICAgIHNlYXJjaC5maWVsZEdldFZhbHVlID0gJ2tleVNlYXJjaCc7XG4gICAgICB0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCB7IGtleVNlYXJjaCB9LCBzZWFyY2gpO1xuICAgIH1cbiAgICBpZiAob2JqZWN0R2V0RGF0YVVwZGF0ZT8uWydzdG9yZVBhcmFtc0NhbGxBcGknXSAmJiB0eXBlb2Ygb2JqZWN0R2V0RGF0YVVwZGF0ZT8uWydzdG9yZVBhcmFtc0NhbGxBcGknXSA9PT0gJ29iamVjdCcgJiYgIShvYmplY3RHZXREYXRhVXBkYXRlPy5bJ3N0b3JlUGFyYW1zQ2FsbEFwaSddIGFzIGFueSkuaW5zdGFuY2VTb3J0KSB7XG4gICAgICBvYmplY3RHZXREYXRhVXBkYXRlWydzdG9yZVBhcmFtc0NhbGxBcGknXSA9IHsgLi4ub2JqZWN0R2V0RGF0YVVwZGF0ZVsnc3RvcmVQYXJhbXNDYWxsQXBpJ10sIGluc3RhbmNlU29ydDoge30gfTtcbiAgICB9XG4gICAgaWYgKHNvcnRPcmRlckJ5KSB7XG4gICAgICB0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBzb3J0T3JkZXJCeSk7XG4gICAgfVxuICAgIGlmIChzb3J0T3JkZXJUeXBlKSB7XG4gICAgICB0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBzb3J0T3JkZXJUeXBlKTtcbiAgICB9XG4gICAgaWYgKG90aGVyICYmIG90aGVyLmxlbmd0aCkge1xuICAgICAgb3RoZXIuZm9yRWFjaCgoY29uZmlnKSA9PiB0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBjb25maWcpKTtcbiAgICB9XG4gICAgaWYgKGRldGFpbEJ5SWQpIHtcbiAgICAgIGRldGFpbEJ5SWQuZmllbGRHZXRWYWx1ZSA9IGRldGFpbEJ5SWQuZmllbGRHZXRWYWx1ZSB8fCBkZXRhaWxCeUlkLmZpZWxkR2V0VmFsdWUudHJpbSgpIHx8ICdrZXknO1xuICAgICAgdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgZGV0YWlsQnlJZCk7XG4gICAgfVxuXG4gICAgaWYgKGlzRW1wdHkocGFnaW5nKSkge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlQXJndW1lbnRzRGVmYXVsdChhcmd1bWVudHNWYWx1ZSwgZmFsc2UsIHBhZ2luZ1N0b3JlIHx8IHRoaXMuZmFrZVJlc3BvbnNlUGFnaW5nQXBpKClbJ3BhZ2luZyddLCBrZXlTZWFyY2gsIHNlYXJjaE9ubGluZSk7XG4gICAgfVxuICAgIGNvbnN0IHsgcGFnZSwgYmVmb3JlLCBhZnRlciB9ID0gcGFnaW5nO1xuXG4gICAgaWYgKHBhZ2UgJiYgb2JqZWN0R2V0RGF0YVVwZGF0ZSkge1xuICAgICAgcGFnZS5wcmVwcm9jZXNzb3IgPSAodmFsdWU6IG51bWJlcik6IG51bWJlciA9PiB7XG4gICAgICAgIHJldHVybiArK3ZhbHVlO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHZhbHVlUGFnZSA9ICt0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBwYWdlKTtcbiAgICAgIGNvbnN0IHZhbHVlTGFzdFBhZ2UgPSArZ2V0KG9iamVjdEdldERhdGFVcGRhdGUgYXMgYW55LCAncGFnaW5nLnRvdGFsX3BhZ2VzJyk7XG5cbiAgICAgIGlmICgodmFsdWVQYWdlICYmIE51bWJlcih2YWx1ZVBhZ2UpLnZhbHVlT2YoKSA+IE51bWJlcih2YWx1ZUxhc3RQYWdlKS52YWx1ZU9mKCkpIHx8IHZhbHVlTGFzdFBhZ2UgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChiZWZvcmUgJiYgb2JqZWN0R2V0RGF0YVVwZGF0ZSAmJiAhdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgYmVmb3JlKSAmJiAhZ2V0KG9iamVjdEdldERhdGFVcGRhdGUsICdwYWdpbmcuZmFrZScpKSB7XG4gICAgICBzZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgJ3BhZ2luZy5mYWtlJywgZmFsc2UpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGFmdGVyICYmIG9iamVjdEdldERhdGFVcGRhdGUgJiYgIXRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIGFmdGVyKSAmJiAhZ2V0KG9iamVjdEdldERhdGFVcGRhdGUsICdwYWdpbmcuZmFrZScpKSB7XG4gICAgICBzZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgJ3BhZ2luZy5mYWtlJywgZmFsc2UpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWFyZ3VtZW50c1ZhbHVlIHx8ICFhcmd1bWVudHNWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQXJndW1lbnRzRGVmYXVsdChhcmd1bWVudHNWYWx1ZTogQXJyYXk8YW55PiwgdXBkYXRlU2VhcmNoOiBib29sZWFuLCBwYWdpbmdTdG9yZTogSVBhZ2luZywga2V5U2VhcmNoOiBzdHJpbmcsIHNlYXJjaE9ubGluZTogYm9vbGVhbikge1xuICAgIGlmICghYXJndW1lbnRzVmFsdWUgfHwgIWFyZ3VtZW50c1ZhbHVlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBpbmRleCBpbiBhcmd1bWVudHNWYWx1ZSkge1xuICAgICAgbGV0IGFyZ3VtZW50VmFsdWUgPSBhcmd1bWVudHNWYWx1ZVtpbmRleF07XG5cbiAgICAgIGlmICghKGFyZ3VtZW50VmFsdWUgaW5zdGFuY2VvZiBIdHRwUGFyYW1zKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZ2VWYWx1ZSA9IGFyZ3VtZW50VmFsdWUuZ2V0KCdwYWdlJyk7XG5cbiAgICAgIGlmIChzZWFyY2hPbmxpbmUgJiYgdXBkYXRlU2VhcmNoKSB7XG4gICAgICAgIGFyZ3VtZW50VmFsdWUgPSBhcmd1bWVudFZhbHVlLnNldCgnc2VhcmNoJywga2V5U2VhcmNoKTtcbiAgICAgICAgYXJndW1lbnRzVmFsdWVbaW5kZXhdID0gYXJndW1lbnRWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmd1bWVudFZhbHVlLmhhcygnYmVmb3JlJykpIHtcbiAgICAgICAgYXJndW1lbnRWYWx1ZSA9IGFyZ3VtZW50VmFsdWUuc2V0KCdiZWZvcmUnLCBwYWdpbmdTdG9yZT8uYmVmb3JlKTtcbiAgICAgICAgYXJndW1lbnRzVmFsdWVbaW5kZXhdID0gYXJndW1lbnRWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmd1bWVudFZhbHVlLmhhcygnYWZ0ZXInKSkge1xuICAgICAgICBhcmd1bWVudFZhbHVlID0gYXJndW1lbnRWYWx1ZS5zZXQoJ2FmdGVyJywgcGFnaW5nU3RvcmU/LmFmdGVyKTtcbiAgICAgICAgYXJndW1lbnRzVmFsdWVbaW5kZXhdID0gYXJndW1lbnRWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChOdW1iZXIocGFnZVZhbHVlKS52YWx1ZU9mKCkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFwYWdpbmdTdG9yZSB8fCBwYWdlVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBwYWdlLCB0b3RhbF9wYWdlcyB9ID0gcGFnaW5nU3RvcmU7XG4gICAgICBjb25zdCBuZXh0UGFnZSA9IChwYWdlIHx8IDApICsgMTtcblxuICAgICAgaWYgKG5leHRQYWdlICYmIE51bWJlcihuZXh0UGFnZSkudmFsdWVPZigpID4gTnVtYmVyKHRvdGFsX3BhZ2VzKS52YWx1ZU9mKCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlLnNldCgncGFnZScsIG5leHRQYWdlKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWU6IEFycmF5PGFueT4sIG9iamVjdEdldERhdGFVcGRhdGU6IGFueSwgY29uZmlnOiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWcpIHtcbiAgICBpZiAoIWNvbmZpZyB8fCAhb2JqZWN0R2V0RGF0YVVwZGF0ZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5sb2c/LmxvZ0lucHV0cykge1xuICAgICAgY29uc29sZS5sb2coJ2NvbmZpZycsIGNvbmZpZyk7XG4gICAgICBjb25zb2xlLmxvZygnb2JqZWN0R2V0RGF0YVVwZGF0ZScsIG9iamVjdEdldERhdGFVcGRhdGUpO1xuICAgICAgY29uc29sZS5sb2coJ2FyZ3VtZW50c1ZhbHVlJywgYXJndW1lbnRzVmFsdWUpO1xuICAgICAgY29uc29sZS5sb2coJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJyk7XG4gICAgfVxuICAgIGNvbnN0IHsgZmllbGRVcGRhdGUsIGZpZWxkR2V0VmFsdWUsIHByZXByb2Nlc3NvciB9ID0gY29uZmlnO1xuXG4gICAgaWYgKCFmaWVsZFVwZGF0ZSB8fCAhZmllbGRHZXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSBnZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgZmllbGRHZXRWYWx1ZSk7XG4gICAgaWYgKGNvbmZpZy5sb2c/LmxvZ0dldFZhbHVlKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdmFsdWUgb2Ygb2JqZWN0R2V0RGF0YVVwZGF0ZVske2ZpZWxkR2V0VmFsdWV9XTogYCwgdmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChwcmVwcm9jZXNzb3IpIHtcbiAgICAgIHZhbHVlID0gcHJlcHJvY2Vzc29yKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGZpZWxkVXBkYXRlKSB7XG4gICAgICBsZXQgcmVzdWx0T2ZGaWVsZFVwZGF0ZSA9IGdldChhcmd1bWVudHNWYWx1ZSwgZmllbGRVcGRhdGUgYXMgYW55KTtcblxuICAgICAgaWYgKHJlc3VsdE9mRmllbGRVcGRhdGUgaW5zdGFuY2VvZiBIdHRwUGFyYW1zKSB7XG4gICAgICAgIHJlc3VsdE9mRmllbGRVcGRhdGUgPSByZXN1bHRPZkZpZWxkVXBkYXRlLnNldChjb25maWcuc3ViRmllbGRVcGRhdGUgfHwgJ3NlYXJjaCcsIHZhbHVlKTtcbiAgICAgICAgc2V0KGFyZ3VtZW50c1ZhbHVlLCBmaWVsZFVwZGF0ZSBhcyBhbnksIHJlc3VsdE9mRmllbGRVcGRhdGUpO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHRPZkZpZWxkVXBkYXRlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgcmVzdWx0T2ZGaWVsZFVwZGF0ZS5wdXNoKHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0T2ZGaWVsZFVwZGF0ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICBzZXQocmVzdWx0T2ZGaWVsZFVwZGF0ZSwgY29uZmlnLnN1YkZpZWxkVXBkYXRlIHx8ICdzZWFyY2gnLCB2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgc2V0KGFyZ3VtZW50c1ZhbHVlLCBmaWVsZFVwZGF0ZSBhcyBhbnksIHZhbHVlKTtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBmYWtlUmVzcG9uc2VQYWdpbmdBcGkoKTogeyBwYWdpbmc6IElQYWdpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2luZzoge1xuICAgICAgICBwYWdlOiAwLFxuICAgICAgICB0b3RhbF9wYWdlczogMSxcbiAgICAgICAgYmVmb3JlOiAnJyxcbiAgICAgICAgYWZ0ZXI6ICcnLFxuICAgICAgICBmYWtlOiB0cnVlLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -15,7 +15,7 @@ class LibsUiHttpRequestService {
15
15
  }
16
16
  const { objectInstance, keyCache, functionName, argumentsValue, serviceClass } = httpRequestConfig;
17
17
  if (!objectInstance && !serviceClass) {
18
- throw `http request config not exactly serviceOther or serviceName`;
18
+ throw `http request config not exactly objectInstance or serviceName`;
19
19
  }
20
20
  const instance = objectInstance || this.injector.get(serviceClass);
21
21
  if (!instance) {
@@ -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 serviceOther 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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"}
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":"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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.318-0",
3
+ "version": "0.2.319-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.318-0",
8
- "@libs-ui/utils": "0.2.318-0",
7
+ "@libs-ui/interfaces-types": "0.2.319-0",
8
+ "@libs-ui/utils": "0.2.319-0",
9
9
  "rxjs": "~7.8.0"
10
10
  },
11
11
  "sideEffects": false,