UNPKG

@iotize/ionic

Version:

Iotize specific building blocks on top of @ionic/angular.

102 lines 13.7 kB
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==