UNPKG

@iotize/ionic

Version:

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

99 lines 13.6 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 { 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 */ TapServiceCallListPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapServiceCallListPipe, deps: [{ token: i1.TapApiExplorerService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); /** @nocollapse */ TapServiceCallListPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TapServiceCallListPipe, name: "tapServiceCallList" }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapServiceCallListPipe, decorators: [{ type: Pipe, args: [{ name: 'tapServiceCallList', }] }], ctorParameters: function () { return [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXNlcnZpY2UtY2FsbC1saXN0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvY29uZmlnL3NyYy9saWIvdGFwLXNlcnZpY2UtY2FsbC1saXN0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQW1CLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7QUFXcEQsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQyxZQUNVLFdBQWtDLEVBQ2xDLFNBQTJCO1FBRDNCLGdCQUFXLEdBQVgsV0FBVyxDQUF1QjtRQUNsQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUNsQyxDQUFDO0lBRUosU0FBUyxDQUNQLE1BQTJELEVBQzNELE9BRUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckMsT0FBTyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtnQkFDakUsTUFBTSxLQUFLLEdBQUcsRUFBRSxHQUFHLFlBQVksRUFBb0MsQ0FBQztn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QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDZDtLQUNGO0lBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUFhLEVBQUUsTUFBYztJQUNuRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7U0FBTTtRQUNMLElBQUksU0FBUyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFO1lBQ2xCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFBTTtZQUNMLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2pELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sY0FBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN6QztLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhcEFwaUV4cGxvcmVyU2VydmljZSB9IGZyb20gJ0Bpb3RpemUvaW9uaWMnO1xuaW1wb3J0IHsgUGF0aFBhcmFtZXRlciwgU2VydmljZUNhbGxUeXBlIH0gZnJvbSAnQGlvdGl6ZS90YXAnO1xuaW1wb3J0IHsgVGFwUmVxdWVzdEZyYW1lIH0gZnJvbSAnQGlvdGl6ZS90YXAvY2xpZW50L2FwaSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyB0YXBSZXNvdXJjZVRyYW5zbGF0ZUtleSB9IGZyb20gJy4vdXRpbGl0eSc7XG5cbmV4cG9ydCB0eXBlIFNlcnZpY2VDYWxsVHlwZVdpdGhEaXNwbGF5SW5mbyA9IFNlcnZpY2VDYWxsVHlwZTxhbnk+ICYge1xuICB0YXBSZXF1ZXN0U3RyaW5nPzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59O1xuXG5AUGlwZSh7XG4gIG5hbWU6ICd0YXBTZXJ2aWNlQ2FsbExpc3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUYXBTZXJ2aWNlQ2FsbExpc3RQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgX3BhdGhzPzogU2VydmljZUNhbGxUeXBlV2l0aERpc3BsYXlJbmZvW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcGlFeHBsb3JlcjogVGFwQXBpRXhwbG9yZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICB0cmFuc2Zvcm0oXG4gICAgc2VhcmNoOiBzdHJpbmcgfCBTZXJ2aWNlQ2FsbFR5cGVXaXRoRGlzcGxheUluZm8gfCB1bmRlZmluZWQsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIG1ldGhvZDogVGFwUmVxdWVzdEZyYW1lLk1ldGhvZFR5cGU7XG4gICAgfVxuICApOiB1bmtub3duIHtcbiAgICBjb25zdCBhbGxQYXRocyA9IHRoaXMuX2dldEFwaVBhdGhzKCk7XG4gICAgcmV0dXJuIGNvbXB1dGVGaWx0ZXJlZE9wdGlvbnMoYWxsUGF0aHMsIHNlYXJjaCwgb3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRBcGlQYXRocygpIHtcbiAgICBpZiAoIXRoaXMuX3BhdGhzKSB7XG4gICAgICB0aGlzLl9wYXRocyA9IHRoaXMuYXBpRXhwbG9yZXIubGlzdEFsbFBhdGhzKCkubWFwKCh2YWx1ZU9yaWduYWwpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB7IC4uLnZhbHVlT3JpZ25hbCB9IGFzIFNlcnZpY2VDYWxsVHlwZVdpdGhEaXNwbGF5SW5mbztcbiAgICAgICAgdmFsdWUudGFwUmVxdWVzdFN0cmluZyA9IGAke1RhcFJlcXVlc3RGcmFtZS5NZXRob2RUeXBlW3ZhbHVlLm1ldGhvZF19ICR7XG4gICAgICAgICAgdmFsdWUucGF0aEFsaWFzXG4gICAgICAgIH1gO1xuICAgICAgICB2YWx1ZS5wYXRoUGFyYW1ldGVycyA9IFBhdGhQYXJhbWV0ZXIuZXh0cmFjdFBhcmFtcyh2YWx1ZS5wYXRoKS5yZWR1Y2UoXG4gICAgICAgICAgKHByZXYsIGtleSkgPT4ge1xuICAgICAgICAgICAgcHJldltrZXldID0gMDtcbiAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgIH0sXG4gICAgICAgICAge30gYXMgUmVxdWlyZWQ8U2VydmljZUNhbGxUeXBlPlsncGF0aFBhcmFtZXRlcnMnXVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh2YWx1ZS5wYXRoQWxpYXMpIHtcbiAgICAgICAgICBpZiAodmFsdWUubWV0aG9kID09PSBUYXBSZXF1ZXN0RnJhbWUuTWV0aG9kVHlwZS5HRVQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlS2V5ID0gdGFwUmVzb3VyY2VUcmFuc2xhdGVLZXkodmFsdWUucGF0aEFsaWFzLCAndGl0bGUnKTtcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlVmFsdWUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRpdGxlS2V5KTtcbiAgICAgICAgICAgIHZhbHVlLnRpdGxlID0gdGl0bGVLZXkgIT09IHRpdGxlVmFsdWUgPyB0aXRsZVZhbHVlIDogdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB2YWx1ZS5kZXNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgLy8gICB0YXBSZXNvdXJjZVRyYW5zbGF0ZUtleSh2YWx1ZS5wYXRoQWxpYXMsICdkZXNjcmlwdGlvbicpXG4gICAgICAgICAgLy8gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3BhdGhzO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVGaWx0ZXJlZE9wdGlvbnMoXG4gIGFsbFBhdGhzOiBTZXJ2aWNlQ2FsbFR5cGVXaXRoRGlzcGxheUluZm9bXSxcbiAgc2VhcmNoT2JqZWN0OiBzdHJpbmcgfCBTZXJ2aWNlQ2FsbFR5cGVXaXRoRGlzcGxheUluZm8gfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgbWV0aG9kOiBUYXBSZXF1ZXN0RnJhbWUuTWV0aG9kVHlwZTtcbiAgfVxuKTogU2VydmljZUNhbGxUeXBlW10ge1xuICBpZiAob3B0aW9ucz8ubWV0aG9kICE9PSB1bmRlZmluZWQpIHtcbiAgICBhbGxQYXRocyA9IGFsbFBhdGhzLmZpbHRlcigoY2FsbCkgPT4gY2FsbC5tZXRob2QgPT09IG9wdGlvbnMubWV0aG9kKTtcbiAgfVxuICBpZiAoIXNlYXJjaE9iamVjdCkge1xuICAgIHJldHVybiBhbGxQYXRocztcbiAgfVxuICBsZXQgc2VhcmNoID1cbiAgICB0eXBlb2Ygc2VhcmNoT2JqZWN0ID09PSAnc3RyaW5nJ1xuICAgICAgPyBzZWFyY2hPYmplY3RcbiAgICAgIDogc2VhcmNoT2JqZWN0LnRhcFJlcXVlc3RTdHJpbmc7XG4gIGlmICghc2VhcmNoKSB7XG4gICAgcmV0dXJuIGFsbFBhdGhzO1xuICB9XG4gIHNlYXJjaCA9IHNlYXJjaC50cmltKCk7XG4gIHJldHVybiBhbGxQYXRocy5maWx0ZXIoKGNhbGwpID0+IHtcbiAgICByZXR1cm4gc3RyaW5nQ29udGFpbnMoXG4gICAgICBgJHtjYWxsLnRhcFJlcXVlc3RTdHJpbmd9YC50b0xvd2VyQ2FzZSgpLFxuICAgICAgc2VhcmNoIS50b0xvd2VyQ2FzZSgpXG4gICAgKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRCaWdnZXN0U2VxKGlucHV0OiBzdHJpbmcsIHNlYXJjaDogc3RyaW5nKSB7XG4gIGlmIChzZWFyY2gubGVuZ3RoID09IDApIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBmb3IgKGxldCBpID0gMTsgaSA8PSBzZWFyY2gubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgc3Vic3RyID0gc2VhcmNoLnN1YnN0cigwLCBpKTtcbiAgICBpZiAoaW5wdXQuaW5kZXhPZihzdWJzdHIpID09IC0xKSB7XG4gICAgICByZXR1cm4gaSAtIDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBzZWFyY2gubGVuZ3RoO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdDb250YWlucyhpbnB1dDogc3RyaW5nLCBzZWFyY2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoc2VhcmNoLmxlbmd0aCA9PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSB7XG4gICAgbGV0IHNlcUxlbmd0aCA9IGZpbmRCaWdnZXN0U2VxKGlucHV0LCBzZWFyY2gpO1xuICAgIGlmIChzZXFMZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbWF0Y2hTZWFyY2ggPSBzZWFyY2guc3Vic3RyaW5nKDAsIHNlcUxlbmd0aCk7XG4gICAgICBsZXQgbmV3U2VhcmNoID0gc2VhcmNoLnN1YnN0cmluZyhzZXFMZW5ndGgpO1xuICAgICAgaW5wdXQgPSBpbnB1dC5zdWJzdHIoaW5wdXQuaW5kZXhPZihtYXRjaFNlYXJjaCkpO1xuICAgICAgcmV0dXJuIHN0cmluZ0NvbnRhaW5zKGlucHV0LCBuZXdTZWFyY2gpO1xuICAgIH1cbiAgfVxufVxuIl19