ng-qubee 2.0.2 → 2.0.4

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.
@@ -1,42 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { NgQubeeService } from './services/ng-qubee.service';
3
- import { PaginationService } from './services/pagination.service';
4
- import { NestService } from './services/nest.service';
5
- import * as i0 from "@angular/core";
6
- // @dynamic
7
- export class NgQubeeModule {
8
- static forRoot(config = {}) {
9
- return {
10
- ngModule: NgQubeeModule,
11
- providers: [
12
- NestService,
13
- {
14
- deps: [NestService],
15
- provide: NgQubeeService,
16
- useFactory: (nestService) => new NgQubeeService(nestService, Object.assign({}, config.request))
17
- }, {
18
- provide: PaginationService,
19
- useFactory: () => new PaginationService(Object.assign({}, config.response))
20
- }
21
- ]
22
- };
23
- }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgQubeeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
25
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: NgQubeeModule }); }
26
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgQubeeModule, providers: [{
27
- deps: [NestService],
28
- provide: NgQubeeService,
29
- useFactory: (nestService) => new NgQubeeService(nestService, {})
30
- }] }); }
31
- }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgQubeeModule, decorators: [{
33
- type: NgModule,
34
- args: [{
35
- providers: [{
36
- deps: [NestService],
37
- provide: NgQubeeService,
38
- useFactory: (nestService) => new NgQubeeService(nestService, {})
39
- }]
40
- }]
41
- }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcXViZWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcXViZWUvc3JjL2xpYi9uZy1xdWJlZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFFdEQsV0FBVztBQVFYLE1BQU0sT0FBTyxhQUFhO0lBQ2pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBa0IsRUFBRTtRQUN4QyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGFBQWE7WUFDdkIsU0FBUyxFQUFFO2dCQUNULFdBQVc7Z0JBQ1g7b0JBQ0UsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDO29CQUNuQixPQUFPLEVBQUUsY0FBYztvQkFDdkIsVUFBVSxFQUFFLENBQUMsV0FBd0IsRUFBRSxFQUFFLENBQ3ZDLElBQUksY0FBYyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ3JFLEVBQUU7b0JBQ0QsT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUNmLElBQUksaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUM1RDthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7OEdBbEJVLGFBQWE7K0dBQWIsYUFBYTsrR0FBYixhQUFhLGFBTmIsQ0FBQztnQkFDVixJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixVQUFVLEVBQUUsQ0FBQyxXQUF3QixFQUFFLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2FBQzlFLENBQUM7OzJGQUVTLGFBQWE7a0JBUHpCLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFLENBQUM7NEJBQ1YsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDOzRCQUNuQixPQUFPLEVBQUUsY0FBYzs0QkFDdkIsVUFBVSxFQUFFLENBQUMsV0FBd0IsRUFBRSxFQUFFLENBQUMsSUFBSSxjQUFjLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQzt5QkFDOUUsQ0FBQztpQkFDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ1F1YmVlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbmctcXViZWUuc2VydmljZSc7XG5pbXBvcnQgeyBJQ29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOZXN0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbmVzdC5zZXJ2aWNlJztcblxuLy8gQGR5bmFtaWNcbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW3tcbiAgICBkZXBzOiBbTmVzdFNlcnZpY2VdLFxuICAgIHByb3ZpZGU6IE5nUXViZWVTZXJ2aWNlLFxuICAgIHVzZUZhY3Rvcnk6IChuZXN0U2VydmljZTogTmVzdFNlcnZpY2UpID0+IG5ldyBOZ1F1YmVlU2VydmljZShuZXN0U2VydmljZSwge30pXG4gIH1dXG59KVxuZXhwb3J0IGNsYXNzIE5nUXViZWVNb2R1bGUge1xuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoY29uZmlnOiBJQ29uZmlnID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5nUXViZWVNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE5nUXViZWVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgTmVzdFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICBkZXBzOiBbTmVzdFNlcnZpY2VdLFxuICAgICAgICAgIHByb3ZpZGU6IE5nUXViZWVTZXJ2aWNlLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IChuZXN0U2VydmljZTogTmVzdFNlcnZpY2UpID0+XG4gICAgICAgICAgICBuZXcgTmdRdWJlZVNlcnZpY2UobmVzdFNlcnZpY2UsIE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZy5yZXF1ZXN0KSlcbiAgICAgICAgfSwge1xuICAgICAgICAgIHByb3ZpZGU6IFBhZ2luYXRpb25TZXJ2aWNlLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+XG4gICAgICAgICAgICBuZXcgUGFnaW5hdGlvblNlcnZpY2UoT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnLnJlc3BvbnNlKSlcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,39 +0,0 @@
1
- import { makeEnvironmentProviders } from "@angular/core";
2
- import { NgQubeeService } from "./services/ng-qubee.service";
3
- import { PaginationService } from "./services/pagination.service";
4
- import { NestService } from "./services/nest.service";
5
- /**
6
- * Sets up providers necessary to enable `NgQubee` functionality for the application.
7
- *
8
- * @usageNotes
9
- *
10
- * Basic example of how you can add NgQubee to your application:
11
- * ```
12
- * const config = {};
13
- *
14
- * bootstrapApplication(AppComponent, {
15
- * providers: [provideNgQubee(config)]
16
- * });
17
- * ```
18
- *
19
- * @publicApi
20
- * @param config Configuration object compliant to the IConfig interface
21
- * @returns A set of providers to setup NgQubee
22
- */
23
- export function provideNgQubee(config = {}) {
24
- return makeEnvironmentProviders([
25
- {
26
- provide: NestService,
27
- useClass: NestService
28
- },
29
- {
30
- deps: [NestService],
31
- provide: NgQubeeService,
32
- useFactory: (nestService) => new NgQubeeService(nestService, Object.assign({}, config.request))
33
- }, {
34
- provide: PaginationService,
35
- useFactory: () => new PaginationService(Object.assign({}, config.response))
36
- }
37
- ]);
38
- }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1uZ3F1YmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcXViZWUvc3JjL2xpYi9wcm92aWRlLW5ncXViZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3Qix3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXREOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsU0FBa0IsRUFBRTtJQUNqRCxPQUFPLHdCQUF3QixDQUFDO1FBQzlCO1lBQ0UsT0FBTyxFQUFFLFdBQVc7WUFDcEIsUUFBUSxFQUFFLFdBQVc7U0FDdEI7UUFDRDtZQUNFLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQztZQUNuQixPQUFPLEVBQUUsY0FBYztZQUN2QixVQUFVLEVBQUUsQ0FBQyxXQUF3QixFQUFFLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdHLEVBQUU7WUFDRCxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM1RTtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElDb25maWcgfSBmcm9tIFwiLi9pbnRlcmZhY2VzL2NvbmZpZy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IE5nUXViZWVTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvbmctcXViZWUuc2VydmljZVwiO1xuaW1wb3J0IHsgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9wYWdpbmF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IE5lc3RTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvbmVzdC5zZXJ2aWNlXCI7XG5cbi8qKlxuICogU2V0cyB1cCBwcm92aWRlcnMgbmVjZXNzYXJ5IHRvIGVuYWJsZSBgTmdRdWJlZWAgZnVuY3Rpb25hbGl0eSBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKlxuICogQmFzaWMgZXhhbXBsZSBvZiBob3cgeW91IGNhbiBhZGQgTmdRdWJlZSB0byB5b3VyIGFwcGxpY2F0aW9uOlxuICogYGBgXG4gKiBjb25zdCBjb25maWcgPSB7fTtcbiAqIFxuICogYm9vdHN0cmFwQXBwbGljYXRpb24oQXBwQ29tcG9uZW50LCB7XG4gKiAgIHByb3ZpZGVyczogW3Byb3ZpZGVOZ1F1YmVlKGNvbmZpZyldXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBwdWJsaWNBcGlcbiAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBvYmplY3QgY29tcGxpYW50IHRvIHRoZSBJQ29uZmlnIGludGVyZmFjZVxuICogQHJldHVybnMgQSBzZXQgb2YgcHJvdmlkZXJzIHRvIHNldHVwIE5nUXViZWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOZ1F1YmVlKGNvbmZpZzogSUNvbmZpZyA9IHt9KTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOZXN0U2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBOZXN0U2VydmljZVxuICAgIH0sXG4gICAge1xuICAgICAgZGVwczogW05lc3RTZXJ2aWNlXSxcbiAgICAgIHByb3ZpZGU6IE5nUXViZWVTZXJ2aWNlLFxuICAgICAgdXNlRmFjdG9yeTogKG5lc3RTZXJ2aWNlOiBOZXN0U2VydmljZSkgPT4gbmV3IE5nUXViZWVTZXJ2aWNlKG5lc3RTZXJ2aWNlLCBPYmplY3QuYXNzaWduKHt9LCBjb25maWcucmVxdWVzdCkpXG4gICAgfSwge1xuICAgICAgcHJvdmlkZTogUGFnaW5hdGlvblNlcnZpY2UsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiBuZXcgUGFnaW5hdGlvblNlcnZpY2UoT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnLnJlc3BvbnNlKSlcbiAgICB9XG4gIF0pO1xufSJdfQ==
@@ -1,173 +0,0 @@
1
- import { Injectable, computed, signal } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- const INITIAL_STATE = {
4
- baseUrl: '',
5
- fields: {},
6
- filters: {},
7
- includes: [],
8
- limit: 15,
9
- model: '',
10
- page: 1,
11
- sorts: []
12
- };
13
- export class NestService {
14
- constructor() {
15
- /**
16
- * Private writable signal that holds the Query Builder state
17
- *
18
- * @type {IQueryBuilderState}
19
- */
20
- this._nest = signal(this._clone(INITIAL_STATE));
21
- /**
22
- * A computed signal that makes readonly the writable signal _nest
23
- *
24
- * @type {Signal<IQueryBuilderState>}
25
- */
26
- this.nest = computed(() => this._clone(this._nest()));
27
- // Nothing to see here 👮🏻‍♀️
28
- }
29
- set baseUrl(baseUrl) {
30
- this._nest.update(nest => ({
31
- ...nest,
32
- baseUrl
33
- }));
34
- }
35
- set limit(limit) {
36
- this._nest.update(nest => ({
37
- ...nest,
38
- limit
39
- }));
40
- }
41
- set model(model) {
42
- this._nest.update(nest => ({
43
- ...nest,
44
- model
45
- }));
46
- }
47
- set page(page) {
48
- this._nest.update(nest => ({
49
- ...nest,
50
- page
51
- }));
52
- }
53
- _clone(obj) {
54
- return JSON.parse(JSON.stringify(obj));
55
- }
56
- /**
57
- * Add selectable fields for the given model to the request
58
- *
59
- * @param {IFields} fields
60
- * @return {void}
61
- * @todo Avoid duplicated fields
62
- */
63
- addFields(fields) {
64
- this._nest.update(nest => ({
65
- ...nest,
66
- fields: { ...nest.fields, ...fields }
67
- }));
68
- }
69
- /**
70
- * Add filters to the request
71
- *
72
- * @param {IFilters} filters
73
- * @todo Avoid duplicated filters
74
- */
75
- addFilters(filters) {
76
- this._nest.update(nest => ({
77
- ...nest,
78
- filters: { ...nest.filters, ...filters }
79
- }));
80
- }
81
- /**
82
- * Add resources to include with the request
83
- *
84
- * @param {string[]} includes models to include to the request
85
- * @return {void}
86
- * @todo Avoid duplicated includes
87
- */
88
- addIncludes(includes) {
89
- this._nest.update(nest => ({
90
- ...nest,
91
- includes: [...nest.includes, ...includes]
92
- }));
93
- }
94
- /**
95
- * Add a field that should be used for sorting data
96
- *
97
- * @param {ISort} sort
98
- * @return {void}
99
- */
100
- addSort(sort) {
101
- this._nest.update(nest => ({
102
- ...nest,
103
- sorts: [...nest.sorts, sort]
104
- }));
105
- }
106
- /**
107
- * Remove fields for the given model
108
- *
109
- * @param {IFields} fields
110
- */
111
- deleteFields(fields) {
112
- const f = Object.assign({}, this.nest().fields);
113
- Object.keys(fields).forEach(k => {
114
- if (!(k in f)) {
115
- return;
116
- }
117
- f[k] = this._nest().fields[k].filter(v => !fields[k].includes(v));
118
- });
119
- this._nest.update(nest => ({
120
- ...nest,
121
- fields: f
122
- }));
123
- }
124
- /**
125
- *
126
- * @param filters
127
- * @todo Create a clone of the filter obj before assigning to f
128
- */
129
- deleteFilters(...filters) {
130
- const f = Object.assign({}, this._nest().filters);
131
- filters.forEach(k => delete f[k]);
132
- this._nest.update(nest => ({
133
- ...nest,
134
- filters: f
135
- }));
136
- }
137
- /**
138
- *
139
- * @param includes
140
- */
141
- deleteIncludes(...includes) {
142
- this._nest.update(nest => ({
143
- ...nest,
144
- includes: nest.includes.filter(v => !includes.includes(v))
145
- }));
146
- }
147
- /**
148
- *
149
- * @param sorts
150
- */
151
- deleteSorts(...sorts) {
152
- const s = [...this._nest().sorts];
153
- sorts.forEach(field => {
154
- const p = this.nest().sorts.findIndex(sort => sort.field === field);
155
- if (p > -1) {
156
- s.splice(p, 1);
157
- }
158
- });
159
- this._nest.update(nest => ({
160
- ...nest,
161
- sorts: s
162
- }));
163
- }
164
- reset() {
165
- this._nest.update(_ => this._clone(INITIAL_STATE));
166
- }
167
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
168
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NestService }); }
169
- }
170
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NestService, decorators: [{
171
- type: Injectable
172
- }], ctorParameters: () => [] });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcXViZWUvc3JjL2xpYi9zZXJ2aWNlcy9uZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBMEIsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNckYsTUFBTSxhQUFhLEdBQXVCO0lBQ3hDLE9BQU8sRUFBRSxFQUFFO0lBQ1gsTUFBTSxFQUFFLEVBQUU7SUFDVixPQUFPLEVBQUUsRUFBRTtJQUNYLFFBQVEsRUFBRSxFQUFFO0lBQ1osS0FBSyxFQUFFLEVBQUU7SUFDVCxLQUFLLEVBQUUsRUFBRTtJQUNULElBQUksRUFBRSxDQUFDO0lBQ1AsS0FBSyxFQUFFLEVBQUU7Q0FDVixDQUFDO0FBR0YsTUFBTSxPQUFPLFdBQVc7SUFnQnRCO1FBZEE7Ozs7V0FJRztRQUNLLFVBQUssR0FBdUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUV2Rjs7OztXQUlHO1FBQ0ksU0FBSSxHQUErQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBR2xGLDhCQUE4QjtJQUNoQyxDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsT0FBZTtRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsR0FBRyxJQUFJO1lBQ1AsT0FBTztTQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEdBQUcsSUFBSTtZQUNQLEtBQUs7U0FDTixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixHQUFHLElBQUk7WUFDUCxLQUFLO1NBQ04sQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsR0FBRyxJQUFJO1lBQ1AsSUFBSTtTQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVPLE1BQU0sQ0FBSSxHQUFNO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFNBQVMsQ0FBQyxNQUFlO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixHQUFHLElBQUk7WUFDUCxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUU7U0FDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxVQUFVLENBQUMsT0FBaUI7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEdBQUcsSUFBSTtZQUNQLE9BQU8sRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRTtTQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxXQUFXLENBQUMsUUFBa0I7UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEdBQUcsSUFBSTtZQUNQLFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLFFBQVEsQ0FBQztTQUMxQyxDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE9BQU8sQ0FBQyxJQUFXO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixHQUFHLElBQUk7WUFDUCxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO1NBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZLENBQUMsTUFBZTtRQUNqQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEQsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUNiLE9BQU87YUFDUjtZQUVELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEdBQUcsSUFBSTtZQUNQLE1BQU0sRUFBRSxDQUFDO1NBQ1YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGFBQWEsQ0FBQyxHQUFHLE9BQWlCO1FBQ3ZDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVsRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsR0FBRyxJQUFJO1lBQ1AsT0FBTyxFQUFFLENBQUM7U0FDWCxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSSxjQUFjLENBQUMsR0FBRyxRQUFrQjtRQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsR0FBRyxJQUFJO1lBQ1AsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNJLFdBQVcsQ0FBQyxHQUFHLEtBQWU7UUFDbkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVsQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztZQUVwRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDVixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNoQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEdBQUcsSUFBSTtZQUNQLEtBQUssRUFBRSxDQUFDO1NBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7OEdBbExVLFdBQVc7a0hBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFNpZ25hbCwgV3JpdGFibGVTaWduYWwsIGNvbXB1dGVkLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElRdWVyeUJ1aWxkZXJTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlcnktYnVpbGRlci1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUZpZWxkcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmllbGRzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVycyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmlsdGVycy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVNvcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NvcnQuaW50ZXJmYWNlJztcblxuY29uc3QgSU5JVElBTF9TVEFURTogSVF1ZXJ5QnVpbGRlclN0YXRlID0ge1xuICBiYXNlVXJsOiAnJyxcbiAgZmllbGRzOiB7fSxcbiAgZmlsdGVyczoge30sXG4gIGluY2x1ZGVzOiBbXSxcbiAgbGltaXQ6IDE1LFxuICBtb2RlbDogJycsXG4gIHBhZ2U6IDEsXG4gIHNvcnRzOiBbXVxufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5lc3RTZXJ2aWNlIHtcblxuICAvKipcbiAgICogUHJpdmF0ZSB3cml0YWJsZSBzaWduYWwgdGhhdCBob2xkcyB0aGUgUXVlcnkgQnVpbGRlciBzdGF0ZVxuICAgKiBcbiAgICogQHR5cGUge0lRdWVyeUJ1aWxkZXJTdGF0ZX1cbiAgICovXG4gIHByaXZhdGUgX25lc3Q6IFdyaXRhYmxlU2lnbmFsPElRdWVyeUJ1aWxkZXJTdGF0ZT4gPSBzaWduYWwodGhpcy5fY2xvbmUoSU5JVElBTF9TVEFURSkpO1xuXG4gIC8qKlxuICAgKiBBIGNvbXB1dGVkIHNpZ25hbCB0aGF0IG1ha2VzIHJlYWRvbmx5IHRoZSB3cml0YWJsZSBzaWduYWwgX25lc3RcbiAgICogXG4gICAqIEB0eXBlIHtTaWduYWw8SVF1ZXJ5QnVpbGRlclN0YXRlPn1cbiAgICovXG4gIHB1YmxpYyBuZXN0OiBTaWduYWw8SVF1ZXJ5QnVpbGRlclN0YXRlPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2Nsb25lKHRoaXMuX25lc3QoKSkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIE5vdGhpbmcgdG8gc2VlIGhlcmUg8J+RrvCfj7vigI3imYDvuI9cbiAgfVxuXG4gIHNldCBiYXNlVXJsKGJhc2VVcmw6IHN0cmluZykge1xuICAgIHRoaXMuX25lc3QudXBkYXRlKG5lc3QgPT4gKHtcbiAgICAgIC4uLm5lc3QsXG4gICAgICBiYXNlVXJsXG4gICAgfSkpO1xuICB9XG5cbiAgc2V0IGxpbWl0KGxpbWl0OiBudW1iZXIpIHtcbiAgICB0aGlzLl9uZXN0LnVwZGF0ZShuZXN0ID0+ICh7XG4gICAgICAuLi5uZXN0LFxuICAgICAgbGltaXRcbiAgICB9KSk7XG4gIH1cblxuICBzZXQgbW9kZWwobW9kZWw6IHN0cmluZykge1xuICAgIHRoaXMuX25lc3QudXBkYXRlKG5lc3QgPT4gKHtcbiAgICAgIC4uLm5lc3QsXG4gICAgICBtb2RlbFxuICAgIH0pKTtcbiAgfVxuXG4gIHNldCBwYWdlKHBhZ2U6IG51bWJlcikge1xuICAgIHRoaXMuX25lc3QudXBkYXRlKG5lc3QgPT4gKHtcbiAgICAgIC4uLm5lc3QsXG4gICAgICBwYWdlXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvbmU8VD4ob2JqOiBUKTogVCB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoIEpTT04uc3RyaW5naWZ5KG9iaikgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgc2VsZWN0YWJsZSBmaWVsZHMgZm9yIHRoZSBnaXZlbiBtb2RlbCB0byB0aGUgcmVxdWVzdFxuICAgKiBcbiAgICogQHBhcmFtIHtJRmllbGRzfSBmaWVsZHMgXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqIEB0b2RvIEF2b2lkIGR1cGxpY2F0ZWQgZmllbGRzXG4gICAqL1xuICBwdWJsaWMgYWRkRmllbGRzKGZpZWxkczogSUZpZWxkcyk6IHZvaWQge1xuICAgIHRoaXMuX25lc3QudXBkYXRlKG5lc3QgPT4gKHtcbiAgICAgIC4uLm5lc3QsXG4gICAgICBmaWVsZHM6IHsgLi4ubmVzdC5maWVsZHMsIC4uLmZpZWxkcyB9XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBmaWx0ZXJzIHRvIHRoZSByZXF1ZXN0XG4gICAqIFxuICAgKiBAcGFyYW0ge0lGaWx0ZXJzfSBmaWx0ZXJzXG4gICAqIEB0b2RvIEF2b2lkIGR1cGxpY2F0ZWQgZmlsdGVyc1xuICAgKi9cbiAgcHVibGljIGFkZEZpbHRlcnMoZmlsdGVyczogSUZpbHRlcnMpOiB2b2lkIHtcbiAgICB0aGlzLl9uZXN0LnVwZGF0ZShuZXN0ID0+ICh7XG4gICAgICAuLi5uZXN0LFxuICAgICAgZmlsdGVyczogeyAuLi5uZXN0LmZpbHRlcnMsIC4uLmZpbHRlcnMgfVxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgcmVzb3VyY2VzIHRvIGluY2x1ZGUgd2l0aCB0aGUgcmVxdWVzdFxuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gaW5jbHVkZXMgIG1vZGVscyB0byBpbmNsdWRlIHRvIHRoZSByZXF1ZXN0XG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqIEB0b2RvIEF2b2lkIGR1cGxpY2F0ZWQgaW5jbHVkZXNcbiAgICovXG4gIHB1YmxpYyBhZGRJbmNsdWRlcyhpbmNsdWRlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLl9uZXN0LnVwZGF0ZShuZXN0ID0+ICh7XG4gICAgICAuLi5uZXN0LFxuICAgICAgaW5jbHVkZXM6IFsuLi5uZXN0LmluY2x1ZGVzLCAuLi5pbmNsdWRlc11cbiAgICB9KSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBmaWVsZCB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBzb3J0aW5nIGRhdGFcbiAgICogXG4gICAqIEBwYXJhbSB7SVNvcnR9IHNvcnRcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHB1YmxpYyBhZGRTb3J0KHNvcnQ6IElTb3J0KTogdm9pZCB7XG4gICAgdGhpcy5fbmVzdC51cGRhdGUobmVzdCA9PiAoe1xuICAgICAgLi4ubmVzdCxcbiAgICAgIHNvcnRzOiBbLi4ubmVzdC5zb3J0cywgc29ydF1cbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGZpZWxkcyBmb3IgdGhlIGdpdmVuIG1vZGVsXG4gICAqIFxuICAgKiBAcGFyYW0ge0lGaWVsZHN9IGZpZWxkcyBcbiAgICovXG4gIHB1YmxpYyBkZWxldGVGaWVsZHMoZmllbGRzOiBJRmllbGRzKTogdm9pZCB7XG4gICAgY29uc3QgZiA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMubmVzdCgpLmZpZWxkcyk7XG5cbiAgICBPYmplY3Qua2V5cyhmaWVsZHMpLmZvckVhY2goayA9PiB7XG4gICAgICBpZiAoIShrIGluIGYpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZltrXSA9IHRoaXMuX25lc3QoKS5maWVsZHNba10uZmlsdGVyKHYgPT4gIWZpZWxkc1trXS5pbmNsdWRlcyh2KSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9uZXN0LnVwZGF0ZShuZXN0ID0+ICh7XG4gICAgICAuLi5uZXN0LFxuICAgICAgZmllbGRzOiBmXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFxuICAgKiBAcGFyYW0gZmlsdGVycyBcbiAgICogQHRvZG8gQ3JlYXRlIGEgY2xvbmUgb2YgdGhlIGZpbHRlciBvYmogYmVmb3JlIGFzc2lnbmluZyB0byBmXG4gICAqL1xuICBwdWJsaWMgZGVsZXRlRmlsdGVycyguLi5maWx0ZXJzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IGYgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9uZXN0KCkuZmlsdGVycyk7XG4gICAgXG4gICAgZmlsdGVycy5mb3JFYWNoKGsgPT4gZGVsZXRlIGZba10pO1xuXG4gICAgdGhpcy5fbmVzdC51cGRhdGUobmVzdCA9PiAoe1xuICAgICAgLi4ubmVzdCxcbiAgICAgIGZpbHRlcnM6IGZcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogXG4gICAqIEBwYXJhbSBpbmNsdWRlcyBcbiAgICovXG4gIHB1YmxpYyBkZWxldGVJbmNsdWRlcyguLi5pbmNsdWRlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLl9uZXN0LnVwZGF0ZShuZXN0ID0+ICh7XG4gICAgICAuLi5uZXN0LFxuICAgICAgaW5jbHVkZXM6IG5lc3QuaW5jbHVkZXMuZmlsdGVyKHYgPT4gIWluY2x1ZGVzLmluY2x1ZGVzKHYpKVxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcbiAgICogQHBhcmFtIHNvcnRzIFxuICAgKi9cbiAgcHVibGljIGRlbGV0ZVNvcnRzKC4uLnNvcnRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IHMgPSBbLi4udGhpcy5fbmVzdCgpLnNvcnRzXTtcbiAgICBcbiAgICBzb3J0cy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGNvbnN0IHAgPSB0aGlzLm5lc3QoKS5zb3J0cy5maW5kSW5kZXgoc29ydCA9PiBzb3J0LmZpZWxkID09PSBmaWVsZCk7XG5cbiAgICAgIGlmIChwID4gLTEpIHtcbiAgICAgICAgcy5zcGxpY2UocCwgMSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5fbmVzdC51cGRhdGUobmVzdCA9PiAoe1xuICAgICAgLi4ubmVzdCxcbiAgICAgIHNvcnRzOiBzXG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX25lc3QudXBkYXRlKF8gPT4gdGhpcy5fY2xvbmUoSU5JVElBTF9TVEFURSkpO1xuICB9XG59XG4iXX0=
@@ -1,319 +0,0 @@
1
- import { Inject, Injectable, Optional } from '@angular/core';
2
- import * as qs from 'qs';
3
- import { BehaviorSubject, filter } from 'rxjs';
4
- // Enums
5
- import { SortEnum } from '../enums/sort.enum';
6
- // Errors
7
- import { UnselectableModelError } from '../errors/unselectable-model.error';
8
- // Models
9
- import { QueryBuilderOptions } from '../models/query-builder-options';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "./nest.service";
12
- export class NgQubeeService {
13
- constructor(_nestService, options = {}) {
14
- this._nestService = _nestService;
15
- /**
16
- * This property serves as an accumulator for holding the composed string with each query param
17
- */
18
- this._uri = '';
19
- this._uri$ = new BehaviorSubject('');
20
- this.uri$ = this._uri$.asObservable().pipe(filter(uri => !!uri));
21
- this._options = new QueryBuilderOptions(options);
22
- }
23
- _parseFields(s) {
24
- if (!Object.keys(s.fields).length) {
25
- return this._uri;
26
- }
27
- if (!s.model) {
28
- throw new Error('While selecting fields, the -> model <- is required');
29
- }
30
- if (!(s.model in s.fields)) {
31
- throw new Error(`Key ${s.model} is missing in the fields object`);
32
- }
33
- const f = {};
34
- for (const k in s.fields) {
35
- if (s.fields.hasOwnProperty(k)) {
36
- // Check if the key is the model or is declared in "includes".
37
- // If not, it means that has not been selected anywhere and that will cause an error on the API
38
- if (k !== s.model && !s.includes.includes(k)) {
39
- throw new UnselectableModelError(k);
40
- }
41
- Object.assign(f, { [`${this._options.fields}[${k}]`]: s.fields[k].join(',') });
42
- }
43
- }
44
- const param = `${this._prepend(s.model)}${qs.stringify(f, { encode: false })}`;
45
- this._uri += param;
46
- return param;
47
- }
48
- _parseFilters(s) {
49
- const keys = Object.keys(s.filters);
50
- if (!keys.length) {
51
- return this._uri;
52
- }
53
- const f = {
54
- [`${this._options.filters}`]: keys.reduce((acc, key) => {
55
- return Object.assign(acc, { [key]: s.filters[key].join(',') });
56
- }, {})
57
- };
58
- const param = `${this._prepend(s.model)}${qs.stringify(f, { encode: false })}`;
59
- this._uri += param;
60
- return param;
61
- }
62
- _parseIncludes(s) {
63
- if (!s.includes.length) {
64
- return this._uri;
65
- }
66
- const param = `${this._prepend(s.model)}${this._options.includes}=${s.includes}`;
67
- this._uri += param;
68
- return param;
69
- }
70
- _parseLimit(s) {
71
- const param = `${this._prepend(s.model)}${this._options.limit}=${s.limit}`;
72
- this._uri += param;
73
- return param;
74
- }
75
- _parsePage(s) {
76
- const param = `${this._prepend(s.model)}${this._options.page}=${s.page}`;
77
- this._uri += param;
78
- return param;
79
- }
80
- _parseSort(s) {
81
- let param = '';
82
- if (!s.sorts.length) {
83
- return param;
84
- }
85
- param = `${this._prepend(s.model)}${this._options.sort}=`;
86
- s.sorts.forEach((sort, idx) => {
87
- param += `${sort.order === SortEnum.DESC ? '-' : ''}${sort.field}`;
88
- if (idx < s.sorts.length - 1) {
89
- param += ',';
90
- }
91
- });
92
- this._uri += param;
93
- return param;
94
- }
95
- _parse(s) {
96
- if (!s.model) {
97
- throw new Error('Set the model property BEFORE adding filters or calling the url() / get() methods');
98
- }
99
- // Cleanup the previously generated URI
100
- this._uri = '';
101
- this._parseIncludes(s);
102
- this._parseFields(s);
103
- this._parseFilters(s);
104
- this._parseLimit(s);
105
- this._parsePage(s);
106
- this._parseSort(s);
107
- return this._uri;
108
- }
109
- _prepend(model) {
110
- return this._uri ? '&' : `/${model}?`;
111
- }
112
- // private _removeArgIfEmpty(arg: string): string {
113
- // const params = new URL(this._uri).searchParams;
114
- // if (!params.get(arg)) {
115
- // params.delete(arg);
116
- // }
117
- // }
118
- /**
119
- * Add fields to the select statement for the given model
120
- *
121
- * @param model Model that holds the fields
122
- * @param fields Fields to select
123
- * @returns {this}
124
- */
125
- addFields(model, fields) {
126
- if (!fields.length) {
127
- return this;
128
- }
129
- this._nestService.addFields({ [model]: fields });
130
- return this;
131
- }
132
- /**
133
- * Add a filter with the given value(s)
134
- * I.e. filter[field]=1 or filter[field]=1,2,3
135
- *
136
- * @param {string} field Name of the field to filter
137
- * @param {string[]} value The needle(s)
138
- * @returns {this}
139
- */
140
- addFilter(field, ...values) {
141
- if (!values.length) {
142
- return this;
143
- }
144
- this._nestService.addFilters({
145
- [field]: values
146
- });
147
- return this;
148
- }
149
- /**
150
- * Add related entities to include in the request
151
- *
152
- * @param {string[]} models
153
- * @returns
154
- */
155
- addIncludes(...models) {
156
- if (!models.length) {
157
- return this;
158
- }
159
- this._nestService.addIncludes(models);
160
- return this;
161
- }
162
- /**
163
- * Add a field with a sort criteria
164
- *
165
- * @param field Field to use for sorting
166
- * @param {SortEnum} order A value from the SortEnum enumeration
167
- * @returns {this}
168
- */
169
- addSort(field, order) {
170
- this._nestService.addSort({
171
- field,
172
- order
173
- });
174
- return this;
175
- }
176
- /**
177
- * Delete selected fields for the given models in the current query builder state
178
- *
179
- * ```
180
- * ngQubeeService.deleteFields({
181
- * users: ['email', 'password'],
182
- * address: ['zipcode']
183
- * });
184
- * ```
185
- *
186
- * @param {IFields} fields
187
- * @returns
188
- */
189
- deleteFields(fields) {
190
- this._nestService.deleteFields(fields);
191
- return this;
192
- }
193
- /**
194
- * Delete selected fields for the given model in the current query builder state
195
- *
196
- * ```
197
- * ngQubeeService.deleteFieldsByModel('users', 'email', 'password']);
198
- * ```
199
- *
200
- * @param model Model that holds the fields
201
- * @param {string[]} fields Fields to delete from the state
202
- * @returns {this}
203
- */
204
- deleteFieldsByModel(model, ...fields) {
205
- if (!fields.length) {
206
- return this;
207
- }
208
- this._nestService.deleteFields({
209
- [model]: fields
210
- });
211
- return this;
212
- }
213
- /**
214
- * Remove given filters from the query builder state
215
- *
216
- * @param {string[]} filters Filters to remove
217
- * @returns {this}
218
- */
219
- deleteFilters(...filters) {
220
- if (!filters.length) {
221
- return this;
222
- }
223
- this._nestService.deleteFilters(...filters);
224
- return this;
225
- }
226
- /**
227
- * Remove selected related models from the query builder state
228
- *
229
- * @param {string[]} includes Models to remove
230
- * @returns
231
- */
232
- deleteIncludes(...includes) {
233
- if (!includes.length) {
234
- return this;
235
- }
236
- this._nestService.deleteIncludes(...includes);
237
- return this;
238
- }
239
- /**
240
- * Remove sorts rules from the query builder state
241
- *
242
- * @param sorts Fields used for sorting to remove
243
- * @returns {this}
244
- */
245
- deleteSorts(...sorts) {
246
- this._nestService.deleteSorts(...sorts);
247
- return this;
248
- }
249
- /**
250
- * Generate an URI accordingly to the given data
251
- *
252
- * @returns {Observable<string>} An observable that emits the generated uri
253
- */
254
- generateUri() {
255
- this._uri$.next(this._parse(this._nestService.nest()));
256
- return this.uri$;
257
- }
258
- /**
259
- * Clear the current state and reset the Query Builder to a fresh, clean condition
260
- *
261
- * @returns {this}
262
- */
263
- reset() {
264
- this._nestService.reset();
265
- return this;
266
- }
267
- /**
268
- * Set the base url to use for composing the address
269
- *
270
- * @param {string} baseUrl
271
- * @returns {this}
272
- */
273
- setBaseUrl(baseUrl) {
274
- this._nestService.baseUrl = baseUrl;
275
- return this;
276
- }
277
- /**
278
- * Set the items per page number
279
- *
280
- * @param limit
281
- * @returns {this}
282
- */
283
- setLimit(limit) {
284
- this._nestService.limit = limit;
285
- return this;
286
- }
287
- /**
288
- * Set the model to use for running the query against
289
- * - I.e. the model "users" will return /users
290
- *
291
- * @param {string} model Model name
292
- * @returns {this}
293
- */
294
- setModel(model) {
295
- this._nestService.model = model;
296
- return this;
297
- }
298
- /**
299
- * Set the page that the backend will use to paginate the result set
300
- *
301
- * @param page Page param
302
- * @returns {this}
303
- */
304
- setPage(page) {
305
- this._nestService.page = page;
306
- return this;
307
- }
308
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgQubeeService, deps: [{ token: i1.NestService }, { token: 'QUERY_PARAMS_CONFIG', optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
309
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgQubeeService }); }
310
- }
311
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgQubeeService, decorators: [{
312
- type: Injectable
313
- }], ctorParameters: () => [{ type: i1.NestService }, { type: undefined, decorators: [{
314
- type: Inject,
315
- args: ['QUERY_PARAMS_CONFIG']
316
- }, {
317
- type: Optional
318
- }] }] });
319
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcXViZWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXF1YmVlL3NyYy9saWIvc2VydmljZXMvbmctcXViZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0QsUUFBUTtBQUNSLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxTQUFTO0FBQ1QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFPNUUsU0FBUztBQUNULE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFNdEUsTUFBTSxPQUFPLGNBQWM7SUFlekIsWUFBb0IsWUFBeUIsRUFBNkMsVUFBK0IsRUFBRTtRQUF2RyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQVg3Qzs7V0FFRztRQUNLLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFVixVQUFLLEdBQTRCLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTFELFNBQUksR0FBdUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQzlELE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDckIsQ0FBQztRQUdBLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU8sWUFBWSxDQUFDLENBQXFCO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FB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UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksVUFBVSxDQUFDLE9BQWU7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksUUFBUSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFFBQVEsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE9BQU8sQ0FBQyxJQUFZO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBOVdVLGNBQWMsNkNBZThCLHFCQUFxQjtrSEFmakUsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBZ0J1QyxNQUFNOzJCQUFDLHFCQUFxQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIHFzIGZyb20gJ3FzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5cbi8vIEVudW1zXG5pbXBvcnQgeyBTb3J0RW51bSB9IGZyb20gJy4uL2VudW1zL3NvcnQuZW51bSc7XG5cbi8vIEVycm9yc1xuaW1wb3J0IHsgVW5zZWxlY3RhYmxlTW9kZWxFcnJvciB9IGZyb20gJy4uL2Vycm9ycy91bnNlbGVjdGFibGUtbW9kZWwuZXJyb3InO1xuXG4vLyBJbnRlcmZhY2VzXG5pbXBvcnQgeyBJRmllbGRzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9maWVsZHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IElRdWVyeUJ1aWxkZXJDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3F1ZXJ5LWJ1aWxkZXItY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJUXVlcnlCdWlsZGVyU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3F1ZXJ5LWJ1aWxkZXItc3RhdGUuaW50ZXJmYWNlJztcblxuLy8gTW9kZWxzXG5pbXBvcnQgeyBRdWVyeUJ1aWxkZXJPcHRpb25zIH0gZnJvbSAnLi4vbW9kZWxzL3F1ZXJ5LWJ1aWxkZXItb3B0aW9ucyc7XG5cbi8vIFNlcnZpY2VzXG5pbXBvcnQgeyBOZXN0U2VydmljZSB9IGZyb20gJy4vbmVzdC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5nUXViZWVTZXJ2aWNlIHtcblxuICBwcml2YXRlIF9vcHRpb25zOiBRdWVyeUJ1aWxkZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IHNlcnZlcyBhcyBhbiBhY2N1bXVsYXRvciBmb3IgaG9sZGluZyB0aGUgY29tcG9zZWQgc3RyaW5nIHdpdGggZWFjaCBxdWVyeSBwYXJhbVxuICAgKi9cbiAgcHJpdmF0ZSBfdXJpID0gJyc7XG5cbiAgcHJpdmF0ZSBfdXJpJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcblxuICBwdWJsaWMgdXJpJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5fdXJpJC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgIGZpbHRlcih1cmkgPT4gISF1cmkpXG4gICk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbmVzdFNlcnZpY2U6IE5lc3RTZXJ2aWNlLCBASW5qZWN0KCdRVUVSWV9QQVJBTVNfQ09ORklHJykgQE9wdGlvbmFsKCkgb3B0aW9uczogSVF1ZXJ5QnVpbGRlckNvbmZpZyA9IHt9KSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IG5ldyBRdWVyeUJ1aWxkZXJPcHRpb25zKG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VGaWVsZHMoczogSVF1ZXJ5QnVpbGRlclN0YXRlKTogc3RyaW5nIHtcbiAgICBpZiAoIU9iamVjdC5rZXlzKHMuZmllbGRzKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLl91cmk7XG4gICAgfVxuXG4gICAgaWYgKCFzLm1vZGVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1doaWxlIHNlbGVjdGluZyBmaWVsZHMsIHRoZSAtPiBtb2RlbCA8LSBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGlmICghKHMubW9kZWwgaW4gcy5maWVsZHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleSAke3MubW9kZWx9IGlzIG1pc3NpbmcgaW4gdGhlIGZpZWxkcyBvYmplY3RgKTtcbiAgICB9XG5cbiAgICBjb25zdCBmID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGsgaW4gcy5maWVsZHMpIHtcbiAgICAgIGlmIChzLmZpZWxkcy5oYXNPd25Qcm9wZXJ0eShrKSkge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUga2V5IGlzIHRoZSBtb2RlbCBvciBpcyBkZWNsYXJlZCBpbiBcImluY2x1ZGVzXCIuXG4gICAgICAgIC8vIElmIG5vdCwgaXQgbWVhbnMgdGhhdCBoYXMgbm90IGJlZW4gc2VsZWN0ZWQgYW55d2hlcmUgYW5kIHRoYXQgd2lsbCBjYXVzZSBhbiBlcnJvciBvbiB0aGUgQVBJXG4gICAgICAgIGlmIChrICE9PSBzLm1vZGVsICYmICFzLmluY2x1ZGVzLmluY2x1ZGVzKGspKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFVuc2VsZWN0YWJsZU1vZGVsRXJyb3Ioayk7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuYXNzaWduKGYsIHsgW2Ake3RoaXMuX29wdGlvbnMuZmllbGRzfVske2t9XWBdOiBzLmZpZWxkc1trXS5qb2luKCcsJykgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW0gPSBgJHt0aGlzLl9wcmVwZW5kKHMubW9kZWwpfSR7cXMuc3RyaW5naWZ5KGYsIHsgZW5jb2RlOiBmYWxzZSB9KX1gO1xuICAgIHRoaXMuX3VyaSArPSBwYXJhbTtcblxuICAgIHJldHVybiBwYXJhbTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlRmlsdGVycyhzOiBJUXVlcnlCdWlsZGVyU3RhdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzLmZpbHRlcnMpO1xuXG4gICAgaWYgKCFrZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3VyaTtcbiAgICB9XG5cbiAgICBjb25zdCBmID0ge1xuICAgICAgW2Ake3RoaXMuX29wdGlvbnMuZmlsdGVyc31gXToga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGFjYywgeyBba2V5XTogcy5maWx0ZXJzW2tleV0uam9pbignLCcpIH0pO1xuICAgICAgfSwge30pXG4gICAgfTtcbiAgICBjb25zdCBwYXJhbSA9IGAke3RoaXMuX3ByZXBlbmQocy5tb2RlbCl9JHtxcy5zdHJpbmdpZnkoZiwgeyBlbmNvZGU6IGZhbHNlIH0pfWA7XG5cbiAgICB0aGlzLl91cmkgKz0gcGFyYW07XG5cbiAgICByZXR1cm4gcGFyYW07XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUluY2x1ZGVzKHM6IElRdWVyeUJ1aWxkZXJTdGF0ZSk6IHN0cmluZyB7XG4gICAgaWYgKCFzLmluY2x1ZGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3VyaTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbSA9IGAke3RoaXMuX3ByZXBlbmQocy5tb2RlbCl9JHt0aGlzLl9vcHRpb25zLmluY2x1ZGVzfT0ke3MuaW5jbHVkZXN9YDtcbiAgICB0aGlzLl91cmkgKz0gcGFyYW07XG5cbiAgICByZXR1cm4gcGFyYW07XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUxpbWl0KHM6IElRdWVyeUJ1aWxkZXJTdGF0ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyYW0gPSBgJHt0aGlzLl9wcmVwZW5kKHMubW9kZWwpfSR7dGhpcy5fb3B0aW9ucy5saW1pdH09JHtzLmxpbWl0fWA7XG4gICAgdGhpcy5fdXJpICs9IHBhcmFtO1xuXG4gICAgcmV0dXJuIHBhcmFtO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VQYWdlKHM6IElRdWVyeUJ1aWxkZXJTdGF0ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyYW0gPSBgJHt0aGlzLl9wcmVwZW5kKHMubW9kZWwpfSR7dGhpcy5fb3B0aW9ucy5wYWdlfT0ke3MucGFnZX1gO1xuICAgIHRoaXMuX3VyaSArPSBwYXJhbTtcblxuICAgIHJldHVybiBwYXJhbTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlU29ydChzOiBJUXVlcnlCdWlsZGVyU3RhdGUpOiBzdHJpbmcge1xuICAgIGxldCBwYXJhbTogc3RyaW5nID0gJyc7XG5cbiAgICBpZiAoIXMuc29ydHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gcGFyYW07XG4gICAgfVxuXG4gICAgcGFyYW0gPSBgJHt0aGlzLl9wcmVwZW5kKHMubW9kZWwpfSR7dGhpcy5fb3B0aW9ucy5zb3J0fT1gO1xuXG4gICAgcy5zb3J0cy5mb3JFYWNoKChzb3J0LCBpZHgpID0+IHtcbiAgICAgIHBhcmFtICs9IGAke3NvcnQub3JkZXIgPT09IFNvcnRFbnVtLkRFU0MgPyAnLScgOiAnJ30ke3NvcnQuZmllbGR9YDtcblxuICAgICAgaWYgKGlkeCA8IHMuc29ydHMubGVuZ3RoIC0gMSkge1xuICAgICAgICBwYXJhbSArPSAnLCdcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX3VyaSArPSBwYXJhbTtcblxuICAgIHJldHVybiBwYXJhbTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlKHM6IElRdWVyeUJ1aWxkZXJTdGF0ZSk6IHN0cmluZyB7XG4gICAgaWYgKCFzLm1vZGVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldCB0aGUgbW9kZWwgcHJvcGVydHkgQkVGT1JFIGFkZGluZyBmaWx0ZXJzIG9yIGNhbGxpbmcgdGhlIHVybCgpIC8gZ2V0KCkgbWV0aG9kcycpO1xuICAgIH1cblxuICAgIC8vIENsZWFudXAgdGhlIHByZXZpb3VzbHkgZ2VuZXJhdGVkIFVSSVxuICAgIHRoaXMuX3VyaSA9ICcnO1xuXG4gICAgdGhpcy5fcGFyc2VJbmNsdWRlcyhzKTtcbiAgICB0aGlzLl9wYXJzZUZpZWxkcyhzKTtcbiAgICB0aGlzLl9wYXJzZUZpbHRlcnMocyk7XG4gICAgdGhpcy5fcGFyc2VMaW1pdChzKTtcbiAgICB0aGlzLl9wYXJzZVBhZ2Uocyk7XG4gICAgdGhpcy5fcGFyc2VTb3J0KHMpO1xuXG4gICAgcmV0dXJuIHRoaXMuX3VyaTtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXBlbmQobW9kZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VyaSA/ICcmJyA6IGAvJHttb2RlbH0/YDtcbiAgfVxuXG4gIC8vIHByaXZhdGUgX3JlbW92ZUFyZ0lmRW1wdHkoYXJnOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkwodGhpcy5fdXJpKS5zZWFyY2hQYXJhbXM7XG4gICAgXG4gIC8vICAgaWYgKCFwYXJhbXMuZ2V0KGFyZykpIHtcbiAgLy8gICAgIHBhcmFtcy5kZWxldGUoYXJnKTtcbiAgLy8gICB9XG4gICAgXG5cbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBBZGQgZmllbGRzIHRvIHRoZSBzZWxlY3Qgc3RhdGVtZW50IGZvciB0aGUgZ2l2ZW4gbW9kZWxcbiAgICogXG4gICAqIEBwYXJhbSBtb2RlbCBNb2RlbCB0aGF0IGhvbGRzIHRoZSBmaWVsZHNcbiAgICogQHBhcmFtIGZpZWxkcyBGaWVsZHMgdG8gc2VsZWN0XG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcHVibGljIGFkZEZpZWxkcyhtb2RlbDogc3RyaW5nLCBmaWVsZHM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgaWYgKCFmaWVsZHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLl9uZXN0U2VydmljZS5hZGRGaWVsZHMoeyBbbW9kZWxdOiBmaWVsZHMgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBmaWx0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUocylcbiAgICogIEkuZS4gZmlsdGVyW2ZpZWxkXT0xIG9yIGZpbHRlcltmaWVsZF09MSwyLDNcbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZCBOYW1lIG9mIHRoZSBmaWVsZCB0byBmaWx0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gdmFsdWUgVGhlIG5lZWRsZShzKVxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHB1YmxpYyBhZGRGaWx0ZXIoZmllbGQ6IHN0cmluZywgLi4udmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbilbXSk6IHRoaXMge1xuICAgIGlmICghdmFsdWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5fbmVzdFNlcnZpY2UuYWRkRmlsdGVycyh7XG4gICAgICBbZmllbGRdOiB2YWx1ZXNcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCByZWxhdGVkIGVudGl0aWVzIHRvIGluY2x1ZGUgaW4gdGhlIHJlcXVlc3RcbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IG1vZGVscyBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBwdWJsaWMgYWRkSW5jbHVkZXMoLi4ubW9kZWxzOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgIGlmICghbW9kZWxzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5fbmVzdFNlcnZpY2UuYWRkSW5jbHVkZXMobW9kZWxzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGZpZWxkIHdpdGggYSBzb3J0IGNyaXRlcmlhXG4gICAqIFxuICAgKiBAcGFyYW0gZmllbGQgRmllbGQgdG8gdXNlIGZvciBzb3J0aW5nXG4gICAqIEBwYXJhbSB7U29ydEVudW19IG9yZGVyIEEgdmFsdWUgZnJvbSB0aGUgU29ydEVudW0gZW51bWVyYXRpb25cbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBwdWJsaWMgYWRkU29ydChmaWVsZDogc3RyaW5nLCBvcmRlcjogU29ydEVudW0pOiB0aGlzIHtcbiAgICB0aGlzLl9uZXN0U2VydmljZS5hZGRTb3J0KHtcbiAgICAgIGZpZWxkLFxuICAgICAgb3JkZXJcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBzZWxlY3RlZCBmaWVsZHMgZm9yIHRoZSBnaXZlbiBtb2RlbHMgaW4gdGhlIGN1cnJlbnQgcXVlcnkgYnVpbGRlciBzdGF0ZVxuICAgKiBcbiAgICogYGBgXG4gICAqIG5nUXViZWVTZXJ2aWNlLmRlbGV0ZUZpZWxkcyh7XG4gICAqICAgdXNlcnM6IFsnZW1haWwnLCAncGFzc3dvcmQnXSxcbiAgICogICBhZGRyZXNzOiBbJ3ppcGNvZGUnXVxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqIFxuICAgKiBAcGFyYW0ge0lGaWVsZHN9IGZpZWxkcyBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBwdWJsaWMgZGVsZXRlRmllbGRzKGZpZWxkczogSUZpZWxkcyk6IHRoaXMge1xuICAgIHRoaXMuX25lc3RTZXJ2aWNlLmRlbGV0ZUZpZWxkcyhmaWVsZHMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBzZWxlY3RlZCBmaWVsZHMgZm9yIHRoZSBnaXZlbiBtb2RlbCBpbiB0aGUgY3VycmVudCBxdWVyeSBidWlsZGVyIHN0YXRlXG4gICAqIFxuICAgKiBgYGBcbiAgICogbmdRdWJlZVNlcnZpY2UuZGVsZXRlRmllbGRzQnlNb2RlbCgndXNlcnMnLCAnZW1haWwnLCAncGFzc3dvcmQnXSk7XG4gICAqIGBgYFxuICAgKiBcbiAgICogQHBhcmFtIG1vZGVsIE1vZGVsIHRoYXQgaG9sZHMgdGhlIGZpZWxkc1xuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBmaWVsZHMgRmllbGRzIHRvIGRlbGV0ZSBmcm9tIHRoZSBzdGF0ZVxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHB1YmxpYyBkZWxldGVGaWVsZHNCeU1vZGVsKG1vZGVsOiBzdHJpbmcsIC4uLmZpZWxkczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICBpZiAoIWZpZWxkcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMuX25lc3RTZXJ2aWNlLmRlbGV0ZUZpZWxkcyh7XG4gICAgICBbbW9kZWxdOiBmaWVsZHNcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBnaXZlbiBmaWx0ZXJzIGZyb20gdGhlIHF1ZXJ5IGJ1aWxkZXIgc3RhdGVcbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGZpbHRlcnMgRmlsdGVycyB0byByZW1vdmVcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBwdWJsaWMgZGVsZXRlRmlsdGVycyguLi5maWx0ZXJzOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgIGlmICghZmlsdGVycy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMuX25lc3RTZXJ2aWNlLmRlbGV0ZUZpbHRlcnMoLi4uZmlsdGVycyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgc2VsZWN0ZWQgcmVsYXRlZCBtb2RlbHMgZnJvbSB0aGUgcXVlcnkgYnVpbGRlciBzdGF0ZVxuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gaW5jbHVkZXMgTW9kZWxzIHRvIHJlbW92ZVxuICAgKiBAcmV0dXJucyBcbiAgICovXG4gIHB1YmxpYyBkZWxldGVJbmNsdWRlcyguLi5pbmNsdWRlczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICBpZiAoIWluY2x1ZGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5fbmVzdFNlcnZpY2UuZGVsZXRlSW5jbHVkZXMoLi4uaW5jbHVkZXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHNvcnRzIHJ1bGVzIGZyb20gdGhlIHF1ZXJ5IGJ1aWxkZXIgc3RhdGVcbiAgICogXG4gICAqIEBwYXJhbSBzb3J0cyBGaWVsZHMgdXNlZCBmb3Igc29ydGluZyB0byByZW1vdmVcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBwdWJsaWMgZGVsZXRlU29ydHMoLi4uc29ydHM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgdGhpcy5fbmVzdFNlcnZpY2UuZGVsZXRlU29ydHMoLi4uc29ydHMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGFuIFVSSSBhY2NvcmRpbmdseSB0byB0aGUgZ2l2ZW4gZGF0YVxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxzdHJpbmc+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGdlbmVyYXRlZCB1cmlcbiAgICovXG4gIHB1YmxpYyBnZW5lcmF0ZVVyaSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHRoaXMuX3VyaSQubmV4dCh0aGlzLl9wYXJzZSh0aGlzLl9uZXN0U2VydmljZS5uZXN0KCkpKTtcbiAgICByZXR1cm4gdGhpcy51cmkkO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBjdXJyZW50IHN0YXRlIGFuZCByZXNldCB0aGUgUXVlcnkgQnVpbGRlciB0byBhIGZyZXNoLCBjbGVhbiBjb25kaXRpb25cbiAgICogXG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcHVibGljIHJlc2V0KCk6IHRoaXMge1xuICAgIHRoaXMuX25lc3RTZXJ2aWNlLnJlc2V0KCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBiYXNlIHVybCB0byB1c2UgZm9yIGNvbXBvc2luZyB0aGUgYWRkcmVzc1xuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVcmwgXG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcHVibGljIHNldEJhc2VVcmwoYmFzZVVybDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fbmVzdFNlcnZpY2UuYmFzZVVybCA9IGJhc2VVcmw7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBpdGVtcyBwZXIgcGFnZSBudW1iZXJcbiAgICogXG4gICAqIEBwYXJhbSBsaW1pdCBcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBwdWJsaWMgc2V0TGltaXQobGltaXQ6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuX25lc3RTZXJ2aWNlLmxpbWl0ID0gbGltaXQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBtb2RlbCB0byB1c2UgZm9yIHJ1bm5pbmcgdGhlIHF1ZXJ5IGFnYWluc3RcbiAgICogICAtIEkuZS4gdGhlIG1vZGVsIFwidXNlcnNcIiB3aWxsIHJldHVybiAvdXNlcnNcbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlbCBNb2RlbCBuYW1lXG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcHVibGljIHNldE1vZGVsKG1vZGVsOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9uZXN0U2VydmljZS5tb2RlbCA9IG1vZGVsO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcGFnZSB0aGF0IHRoZSBiYWNrZW5kIHdpbGwgdXNlIHRvIHBhZ2luYXRlIHRoZSByZXN1bHQgc2V0XG4gICAqIFxuICAgKiBAcGFyYW0gcGFnZSBQYWdlIHBhcmFtXG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcHVibGljIHNldFBhZ2UocGFnZTogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5fbmVzdFNlcnZpY2UucGFnZSA9IHBhZ2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiJdfQ==