@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
102 lines • 13.7 kB
JavaScript
import { Pipe } from '@angular/core';
import { TapApiExplorerService } from '@iotize/ionic';
import { PathParameter } from '@iotize/tap';
import { TapRequestFrame } from '@iotize/tap/client/api';
import { TranslateService } from '@ngx-translate/core';
import { tapResourceTranslateKey } from './utility';
import * as i0 from "@angular/core";
import * as i1 from "@iotize/ionic";
import * as i2 from "@ngx-translate/core";
export class TapServiceCallListPipe {
apiExplorer;
translate;
_paths;
constructor(apiExplorer, translate) {
this.apiExplorer = apiExplorer;
this.translate = translate;
}
transform(search, options) {
const allPaths = this._getApiPaths();
return computeFilteredOptions(allPaths, search, options);
}
_getApiPaths() {
if (!this._paths) {
this._paths = this.apiExplorer.listAllPaths().map((valueOrignal) => {
const value = { ...valueOrignal };
value.tapRequestString = `${TapRequestFrame.MethodType[value.method]} ${value.pathAlias}`;
value.pathParameters = PathParameter.extractParams(value.path).reduce((prev, key) => {
prev[key] = 0;
return prev;
}, {});
if (value.pathAlias) {
if (value.method === TapRequestFrame.MethodType.GET) {
const titleKey = tapResourceTranslateKey(value.pathAlias, 'title');
const titleValue = this.translate.instant(titleKey);
value.title = titleKey !== titleValue ? titleValue : undefined;
}
// value.description = this.translate.instant(
// tapResourceTranslateKey(value.pathAlias, 'description')
// );
}
return value;
});
}
return this._paths;
}
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapServiceCallListPipe, deps: [{ token: i1.TapApiExplorerService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
/** @nocollapse */ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: TapServiceCallListPipe, name: "tapServiceCallList" });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapServiceCallListPipe, decorators: [{
type: Pipe,
args: [{
name: 'tapServiceCallList',
}]
}], ctorParameters: () => [{ type: i1.TapApiExplorerService }, { type: i2.TranslateService }] });
function computeFilteredOptions(allPaths, searchObject, options) {
if (options?.method !== undefined) {
allPaths = allPaths.filter((call) => call.method === options.method);
}
if (!searchObject) {
return allPaths;
}
let search = typeof searchObject === 'string'
? searchObject
: searchObject.tapRequestString;
if (!search) {
return allPaths;
}
search = search.trim();
return allPaths.filter((call) => {
return stringContains(`${call.tapRequestString}`.toLowerCase(), search.toLowerCase());
});
}
function findBiggestSeq(input, search) {
if (search.length == 0) {
return 0;
}
for (let i = 1; i <= search.length; i++) {
let substr = search.substr(0, i);
if (input.indexOf(substr) == -1) {
return i - 1;
}
}
return search.length;
}
function stringContains(input, search) {
if (search.length == 0) {
return true;
}
else {
let seqLength = findBiggestSeq(input, search);
if (seqLength == 0) {
return false;
}
else {
let matchSearch = search.substring(0, seqLength);
let newSearch = search.substring(seqLength);
input = input.substr(input.indexOf(matchSearch));
return stringContains(input, newSearch);
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXNlcnZpY2UtY2FsbC1saXN0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvY29uZmlnL3NyYy9saWIvdGFwLXNlcnZpY2UtY2FsbC1saXN0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQW1CLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7QUFXcEQsTUFBTSxPQUFPLHNCQUFzQjtJQUl2QjtJQUNBO0lBSkYsTUFBTSxDQUFvQztJQUVsRCxZQUNVLFdBQWtDLEVBQ2xDLFNBQTJCO1FBRDNCLGdCQUFXLEdBQVgsV0FBVyxDQUF1QjtRQUNsQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUNsQyxDQUFDO0lBRUosU0FBUyxDQUNQLE1BQTJELEVBQzNELE9BRUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckMsT0FBTyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUNqRSxNQUFNLEtBQUss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QyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUFhLEVBQUUsTUFBYztJQUNuRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO1NBQU0sQ0FBQztRQUNOLElBQUksU0FBUyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbkIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2pELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sY0FBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYXBBcGlFeHBsb3JlclNlcnZpY2UgfSBmcm9tICdAaW90aXplL2lvbmljJztcbmltcG9ydCB7IFBhdGhQYXJhbWV0ZXIsIFNlcnZpY2VDYWxsVHlwZSB9IGZyb20gJ0Bpb3RpemUvdGFwJztcbmltcG9ydCB7IFRhcFJlcXVlc3RGcmFtZSB9IGZyb20gJ0Bpb3RpemUvdGFwL2NsaWVudC9hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgdGFwUmVzb3VyY2VUcmFuc2xhdGVLZXkgfSBmcm9tICcuL3V0aWxpdHknO1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlQ2FsbFR5cGVXaXRoRGlzcGxheUluZm8gPSBTZXJ2aWNlQ2FsbFR5cGU8YW55PiAmIHtcbiAgdGFwUmVxdWVzdFN0cmluZz86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufTtcblxuQFBpcGUoe1xuICBuYW1lOiAndGFwU2VydmljZUNhbGxMaXN0Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGFwU2VydmljZUNhbGxMaXN0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcml2YXRlIF9wYXRocz86IFNlcnZpY2VDYWxsVHlwZVdpdGhEaXNwbGF5SW5mb1tdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBpRXhwbG9yZXI6IFRhcEFwaUV4cGxvcmVyU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgdHJhbnNmb3JtKFxuICAgIHNlYXJjaDogc3RyaW5nIHwgU2VydmljZUNhbGxUeXBlV2l0aERpc3BsYXlJbmZvIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBtZXRob2Q6IFRhcFJlcXVlc3RGcmFtZS5NZXRob2RUeXBlO1xuICAgIH1cbiAgKTogdW5rbm93biB7XG4gICAgY29uc3QgYWxsUGF0aHMgPSB0aGlzLl9nZXRBcGlQYXRocygpO1xuICAgIHJldHVybiBjb21wdXRlRmlsdGVyZWRPcHRpb25zKGFsbFBhdGhzLCBzZWFyY2gsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QXBpUGF0aHMoKSB7XG4gICAgaWYgKCF0aGlzLl9wYXRocykge1xuICAgICAgdGhpcy5fcGF0aHMgPSB0aGlzLmFwaUV4cGxvcmVyLmxpc3RBbGxQYXRocygpLm1hcCgodmFsdWVPcmlnbmFsKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0geyAuLi52YWx1ZU9yaWduYWwgfSBhcyBTZXJ2aWNlQ2FsbFR5cGVXaXRoRGlzcGxheUluZm87XG4gICAgICAgIHZhbHVlLnRhcFJlcXVlc3RTdHJpbmcgPSBgJHtUYXBSZXF1ZXN0RnJhbWUuTWV0aG9kVHlwZVt2YWx1ZS5tZXRob2RdfSAke1xuICAgICAgICAgIHZhbHVlLnBhdGhBbGlhc1xuICAgICAgICB9YDtcbiAgICAgICAgdmFsdWUucGF0aFBhcmFtZXRlcnMgPSBQYXRoUGFyYW1ldGVyLmV4dHJhY3RQYXJhbXModmFsdWUucGF0aCkucmVkdWNlKFxuICAgICAgICAgIChwcmV2LCBrZXkpID0+IHtcbiAgICAgICAgICAgIHByZXZba2V5XSA9IDA7XG4gICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHt9IGFzIFJlcXVpcmVkPFNlcnZpY2VDYWxsVHlwZT5bJ3BhdGhQYXJhbWV0ZXJzJ11cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodmFsdWUucGF0aEFsaWFzKSB7XG4gICAgICAgICAgaWYgKHZhbHVlLm1ldGhvZCA9PT0gVGFwUmVxdWVzdEZyYW1lLk1ldGhvZFR5cGUuR0VUKSB7XG4gICAgICAgICAgICBjb25zdCB0aXRsZUtleSA9IHRhcFJlc291cmNlVHJhbnNsYXRlS2V5KHZhbHVlLnBhdGhBbGlhcywgJ3RpdGxlJyk7XG4gICAgICAgICAgICBjb25zdCB0aXRsZVZhbHVlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aXRsZUtleSk7XG4gICAgICAgICAgICB2YWx1ZS50aXRsZSA9IHRpdGxlS2V5ICE9PSB0aXRsZVZhbHVlID8gdGl0bGVWYWx1ZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gdmFsdWUuZGVzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgIC8vICAgdGFwUmVzb3VyY2VUcmFuc2xhdGVLZXkodmFsdWUucGF0aEFsaWFzLCAnZGVzY3JpcHRpb24nKVxuICAgICAgICAgIC8vICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9wYXRocztcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21wdXRlRmlsdGVyZWRPcHRpb25zKFxuICBhbGxQYXRoczogU2VydmljZUNhbGxUeXBlV2l0aERpc3BsYXlJbmZvW10sXG4gIHNlYXJjaE9iamVjdDogc3RyaW5nIHwgU2VydmljZUNhbGxUeXBlV2l0aERpc3BsYXlJbmZvIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIG1ldGhvZDogVGFwUmVxdWVzdEZyYW1lLk1ldGhvZFR5cGU7XG4gIH1cbik6IFNlcnZpY2VDYWxsVHlwZVtdIHtcbiAgaWYgKG9wdGlvbnM/Lm1ldGhvZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYWxsUGF0aHMgPSBhbGxQYXRocy5maWx0ZXIoKGNhbGwpID0+IGNhbGwubWV0aG9kID09PSBvcHRpb25zLm1ldGhvZCk7XG4gIH1cbiAgaWYgKCFzZWFyY2hPYmplY3QpIHtcbiAgICByZXR1cm4gYWxsUGF0aHM7XG4gIH1cbiAgbGV0IHNlYXJjaCA9XG4gICAgdHlwZW9mIHNlYXJjaE9iamVjdCA9PT0gJ3N0cmluZydcbiAgICAgID8gc2VhcmNoT2JqZWN0XG4gICAgICA6IHNlYXJjaE9iamVjdC50YXBSZXF1ZXN0U3RyaW5nO1xuICBpZiAoIXNlYXJjaCkge1xuICAgIHJldHVybiBhbGxQYXRocztcbiAgfVxuICBzZWFyY2ggPSBzZWFyY2gudHJpbSgpO1xuICByZXR1cm4gYWxsUGF0aHMuZmlsdGVyKChjYWxsKSA9PiB7XG4gICAgcmV0dXJuIHN0cmluZ0NvbnRhaW5zKFxuICAgICAgYCR7Y2FsbC50YXBSZXF1ZXN0U3RyaW5nfWAudG9Mb3dlckNhc2UoKSxcbiAgICAgIHNlYXJjaCEudG9Mb3dlckNhc2UoKVxuICAgICk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmaW5kQmlnZ2VzdFNlcShpbnB1dDogc3RyaW5nLCBzZWFyY2g6IHN0cmluZykge1xuICBpZiAoc2VhcmNoLmxlbmd0aCA9PSAwKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gc2VhcmNoLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IHN1YnN0ciA9IHNlYXJjaC5zdWJzdHIoMCwgaSk7XG4gICAgaWYgKGlucHV0LmluZGV4T2Yoc3Vic3RyKSA9PSAtMSkge1xuICAgICAgcmV0dXJuIGkgLSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc2VhcmNoLmxlbmd0aDtcbn1cblxuZnVuY3Rpb24gc3RyaW5nQ29udGFpbnMoaW5wdXQ6IHN0cmluZywgc2VhcmNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHNlYXJjaC5sZW5ndGggPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIGxldCBzZXFMZW5ndGggPSBmaW5kQmlnZ2VzdFNlcShpbnB1dCwgc2VhcmNoKTtcbiAgICBpZiAoc2VxTGVuZ3RoID09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG1hdGNoU2VhcmNoID0gc2VhcmNoLnN1YnN0cmluZygwLCBzZXFMZW5ndGgpO1xuICAgICAgbGV0IG5ld1NlYXJjaCA9IHNlYXJjaC5zdWJzdHJpbmcoc2VxTGVuZ3RoKTtcbiAgICAgIGlucHV0ID0gaW5wdXQuc3Vic3RyKGlucHV0LmluZGV4T2YobWF0Y2hTZWFyY2gpKTtcbiAgICAgIHJldHVybiBzdHJpbmdDb250YWlucyhpbnB1dCwgbmV3U2VhcmNoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==