@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
99 lines • 13.6 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 {
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