angular-odata 0.122.0 → 0.124.0
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.
- package/esm2022/lib/api.mjs +373 -0
- package/esm2022/lib/cache/cache.mjs +175 -0
- package/{esm2020 → esm2022}/lib/cache/storage.mjs +1 -1
- package/esm2022/lib/client.mjs +252 -0
- package/{esm2020 → esm2022}/lib/helper.mjs +1 -1
- package/{esm2020 → esm2022}/lib/loaders.mjs +1 -1
- package/esm2022/lib/models/collection.mjs +865 -0
- package/esm2022/lib/models/model.mjs +535 -0
- package/esm2022/lib/models/options.mjs +1117 -0
- package/{esm2020 → esm2022}/lib/module.mjs +5 -5
- package/esm2022/lib/resources/path/segments.mjs +124 -0
- package/esm2022/lib/resources/query/builder.mjs +624 -0
- package/esm2022/lib/resources/query/expressions/base.mjs +20 -0
- package/esm2022/lib/resources/query/expressions/compute.mjs +39 -0
- package/esm2022/lib/resources/query/expressions/count.mjs +99 -0
- package/esm2022/lib/resources/query/expressions/expand.mjs +125 -0
- package/esm2022/lib/resources/query/expressions/filter.mjs +161 -0
- package/esm2022/lib/resources/query/expressions/orderby.mjs +56 -0
- package/esm2022/lib/resources/query/expressions/search.mjs +122 -0
- package/esm2022/lib/resources/query/expressions/select.mjs +31 -0
- package/esm2022/lib/resources/query/expressions/syntax.mjs +444 -0
- package/{esm2020 → esm2022}/lib/resources/query/handlers.mjs +1 -1
- package/esm2022/lib/resources/query/options.mjs +115 -0
- package/{esm2020 → esm2022}/lib/resources/request.mjs +1 -1
- package/esm2022/lib/resources/resource.mjs +257 -0
- package/{esm2020 → esm2022}/lib/resources/responses/annotations.mjs +1 -1
- package/esm2022/lib/resources/responses/csdl/csdl-annotation.mjs +33 -0
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-entity-container.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-entity-set.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-enum-type.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-function-action.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-reference.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-schema.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-singleton.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-structural-property.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-structured-type.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-type-definition.mjs +1 -1
- package/esm2022/lib/resources/responses/metadata.mjs +547 -0
- package/{esm2020 → esm2022}/lib/resources/responses/response.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/action.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/batch.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/count.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/entity-set.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/entity.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/function.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/media.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/navigation-property.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/property.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/reference.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/singleton.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/value.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/annotation.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/callable.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/element.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/entity-container.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/enum-type.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/parsers/callable.mjs +1 -1
- package/esm2022/lib/schema/parsers/edm.mjs +99 -0
- package/{esm2020 → esm2022}/lib/schema/parsers/enum-type.mjs +2 -2
- package/esm2022/lib/schema/parsers/structured-type.mjs +502 -0
- package/{esm2020 → esm2022}/lib/schema/schema.mjs +1 -1
- package/esm2022/lib/schema/structured-type.mjs +207 -0
- package/esm2022/lib/services/base.mjs +29 -0
- package/{esm2020 → esm2022}/lib/services/entity-set.mjs +1 -1
- package/{esm2020 → esm2022}/lib/services/factory.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/singleton.mjs +1 -1
- package/{esm2020 → esm2022}/lib/settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/types.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/arrays.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/durations.mjs +1 -1
- package/esm2022/lib/utils/enums.mjs +61 -0
- package/{esm2020 → esm2022}/lib/utils/http.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/objects.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/odata.mjs +1 -1
- package/esm2022/lib/utils/types.mjs +136 -0
- package/{fesm2020 → fesm2022}/angular-odata.mjs +544 -373
- package/fesm2022/angular-odata.mjs.map +1 -0
- package/lib/helper.d.ts +1 -1
- package/lib/models/model.d.ts +4 -2
- package/lib/models/options.d.ts +7 -8
- package/lib/resources/path/segments.d.ts +15 -6
- package/lib/resources/query/builder.d.ts +21 -20
- package/lib/resources/query/expressions/base.d.ts +6 -4
- package/lib/resources/query/expressions/compute.d.ts +10 -8
- package/lib/resources/query/expressions/count.d.ts +14 -11
- package/lib/resources/query/expressions/expand.d.ts +23 -19
- package/lib/resources/query/expressions/filter.d.ts +22 -20
- package/lib/resources/query/expressions/orderby.d.ts +12 -9
- package/lib/resources/query/expressions/search.d.ts +12 -9
- package/lib/resources/query/expressions/select.d.ts +9 -7
- package/lib/resources/query/expressions/syntax.d.ts +75 -71
- package/lib/resources/query/handlers.d.ts +2 -2
- package/lib/resources/query/options.d.ts +15 -6
- package/lib/resources/resource.d.ts +2 -2
- package/lib/resources/responses/types.d.ts +3 -3
- package/lib/resources/types/options.d.ts +7 -7
- package/lib/schema/parsers/structured-type.d.ts +8 -5
- package/lib/schema/structured-type.d.ts +2 -1
- package/lib/types.d.ts +15 -15
- package/lib/utils/durations.d.ts +1 -1
- package/lib/utils/enums.d.ts +3 -0
- package/lib/utils/types.d.ts +1 -0
- package/package.json +9 -15
- package/esm2020/lib/api.mjs +0 -373
- package/esm2020/lib/cache/cache.mjs +0 -173
- package/esm2020/lib/client.mjs +0 -252
- package/esm2020/lib/models/collection.mjs +0 -861
- package/esm2020/lib/models/model.mjs +0 -507
- package/esm2020/lib/models/options.mjs +0 -1110
- package/esm2020/lib/resources/path/segments.mjs +0 -124
- package/esm2020/lib/resources/query/builder.mjs +0 -588
- package/esm2020/lib/resources/query/expressions/base.mjs +0 -20
- package/esm2020/lib/resources/query/expressions/compute.mjs +0 -39
- package/esm2020/lib/resources/query/expressions/count.mjs +0 -89
- package/esm2020/lib/resources/query/expressions/expand.mjs +0 -115
- package/esm2020/lib/resources/query/expressions/filter.mjs +0 -161
- package/esm2020/lib/resources/query/expressions/orderby.mjs +0 -56
- package/esm2020/lib/resources/query/expressions/search.mjs +0 -122
- package/esm2020/lib/resources/query/expressions/select.mjs +0 -31
- package/esm2020/lib/resources/query/expressions/syntax.mjs +0 -409
- package/esm2020/lib/resources/query/options.mjs +0 -115
- package/esm2020/lib/resources/resource.mjs +0 -251
- package/esm2020/lib/resources/responses/csdl/csdl-annotation.mjs +0 -33
- package/esm2020/lib/resources/responses/metadata.mjs +0 -547
- package/esm2020/lib/schema/parsers/edm.mjs +0 -104
- package/esm2020/lib/schema/parsers/structured-type.mjs +0 -490
- package/esm2020/lib/schema/structured-type.mjs +0 -202
- package/esm2020/lib/services/base.mjs +0 -29
- package/esm2020/lib/utils/enums.mjs +0 -45
- package/esm2020/lib/utils/types.mjs +0 -133
- package/fesm2015/angular-odata.mjs +0 -11811
- package/fesm2015/angular-odata.mjs.map +0 -1
- package/fesm2020/angular-odata.mjs.map +0 -1
- /package/{esm2020 → esm2022}/angular-odata.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/cache/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/cache/memory.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/path/handlers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/path/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/query/expressions/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/query/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/responses/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/responses/options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/responses/types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/types/metadata.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/types/options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/schema/entity-set.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/schema/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/schema/parsers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/entity.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/arraybuffers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/dates.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/strings.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/urls.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
|
@@ -28,15 +28,15 @@ export class ODataModule {
|
|
|
28
28
|
],
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: ODataModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
32
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.3", ngImport: i0, type: ODataModule, imports: [CommonModule, HttpClientModule] }); }
|
|
33
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: ODataModule, providers: [ODataClient, ODataServiceFactory], imports: [CommonModule, HttpClientModule] }); }
|
|
31
34
|
}
|
|
32
|
-
|
|
33
|
-
ODataModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: ODataModule, imports: [CommonModule, HttpClientModule] });
|
|
34
|
-
ODataModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: ODataModule, providers: [ODataClient, ODataServiceFactory], imports: [CommonModule, HttpClientModule] });
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: ODataModule, decorators: [{
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: ODataModule, decorators: [{
|
|
36
36
|
type: NgModule,
|
|
37
37
|
args: [{
|
|
38
38
|
imports: [CommonModule, HttpClientModule],
|
|
39
39
|
providers: [ODataClient, ODataServiceFactory],
|
|
40
40
|
}]
|
|
41
41
|
}] });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUNMLGNBQWMsRUFFZCxRQUFRLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBUXZELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBWSxjQUFjLENBQUMsQ0FBQztBQUUxRSw0RUFBNEU7QUFDNUUsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFlBQWlDO0lBQ2hFLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsTUFBTyxDQUFDLENBQUM7QUFDekQsQ0FBQztBQU1ELE1BQU0sT0FBTyxXQUFXO0lBQ3RCLE1BQU0sQ0FBQyxPQUFPLENBQ1osWUFBaUM7UUFFakMsT0FBTztZQUNMLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVCxvREFBb0Q7Z0JBQ3BELEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFO2dCQUVqRCxpRUFBaUU7Z0JBQ2pFLFlBQVksRUFBRSxNQUFNLElBQUk7b0JBQ3RCLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFVBQVUsRUFBRSxnQkFBZ0I7b0JBQzVCLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDckI7Z0JBQ0QsV0FBVztnQkFDWCxtQkFBbUI7YUFDcEI7U0FDRixDQUFDO0lBQ0osQ0FBQzs4R0FwQlUsV0FBVzsrR0FBWCxXQUFXLFlBSFosWUFBWSxFQUFFLGdCQUFnQjsrR0FHN0IsV0FBVyxhQUZYLENBQUMsV0FBVyxFQUFFLG1CQUFtQixDQUFDLFlBRG5DLFlBQVksRUFBRSxnQkFBZ0I7OzJGQUc3QixXQUFXO2tCQUp2QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQztvQkFDekMsU0FBUyxFQUFFLENBQUMsV0FBVyxFQUFFLG1CQUFtQixDQUFDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIE1vZHVsZVdpdGhQcm92aWRlcnMsXG4gIE5nTW9kdWxlLFxuICBQcm92aWRlcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPRGF0YUNsaWVudCB9IGZyb20gJy4vY2xpZW50JztcbmltcG9ydCB7IE9EYXRhQ29uZmlnTG9hZGVyLCBPRGF0YUNvbmZpZ1N5bmNMb2FkZXIgfSBmcm9tICcuL2xvYWRlcnMnO1xuaW1wb3J0IHsgT0RhdGFTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4vc2VydmljZXMvaW5kZXgnO1xuaW1wb3J0IHsgQXBpQ29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFzc2VkSW5pdGlhbENvbmZpZyB7XG4gIGNvbmZpZz86IEFwaUNvbmZpZyB8IEFwaUNvbmZpZ1tdO1xuICBsb2FkZXI/OiBQcm92aWRlcjtcbn1cblxuZXhwb3J0IGNvbnN0IE9EQVRBX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBcGlDb25maWc+KCdvZGF0YS5jb25maWcnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1mdW5jdGlvbi1yZXR1cm4tdHlwZVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN5bmNMb2FkZXIocGFzc2VkQ29uZmlnOiBQYXNzZWRJbml0aWFsQ29uZmlnKSB7XG4gIHJldHVybiBuZXcgT0RhdGFDb25maWdTeW5jTG9hZGVyKHBhc3NlZENvbmZpZy5jb25maWchKTtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSHR0cENsaWVudE1vZHVsZV0sXG4gIHByb3ZpZGVyczogW09EYXRhQ2xpZW50LCBPRGF0YVNlcnZpY2VGYWN0b3J5XSxcbn0pXG5leHBvcnQgY2xhc3MgT0RhdGFNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChcbiAgICBwYXNzZWRDb25maWc6IFBhc3NlZEluaXRpYWxDb25maWcsXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8T0RhdGFNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE9EYXRhTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIC8vIE1ha2UgdGhlIE9EQVRBX0NPTkZJRyBhdmFpbGFibGUgdGhyb3VnaCBpbmplY3Rpb25cbiAgICAgICAgeyBwcm92aWRlOiBPREFUQV9DT05GSUcsIHVzZVZhbHVlOiBwYXNzZWRDb25maWcgfSxcblxuICAgICAgICAvLyBDcmVhdGUgdGhlIGxvYWRlcjogRWl0aGVyIHRoZSBvbmUgZ2V0dGluZyBwYXNzZWQgb3IgYSBzeW5jIG9uZVxuICAgICAgICBwYXNzZWRDb25maWc/LmxvYWRlciB8fCB7XG4gICAgICAgICAgcHJvdmlkZTogT0RhdGFDb25maWdMb2FkZXIsXG4gICAgICAgICAgdXNlRmFjdG9yeTogY3JlYXRlU3luY0xvYWRlcixcbiAgICAgICAgICBkZXBzOiBbT0RBVEFfQ09ORklHXSxcbiAgICAgICAgfSxcbiAgICAgICAgT0RhdGFDbGllbnQsXG4gICAgICAgIE9EYXRhU2VydmljZUZhY3RvcnksXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { PATH_SEPARATOR } from '../../constants';
|
|
2
|
+
import { PathSegment } from '../../types';
|
|
3
|
+
import { Objects } from '../../utils';
|
|
4
|
+
import { buildPathAndQuery, raw } from '../query';
|
|
5
|
+
import { SegmentHandler } from './handlers';
|
|
6
|
+
function pathSegmentsBuilder(segment, escape = false, parser) {
|
|
7
|
+
if (segment.name === PathSegment.function) {
|
|
8
|
+
let [path, params] = segment.parameters
|
|
9
|
+
? buildPathAndQuery({
|
|
10
|
+
func: { [segment.path]: segment.parameters },
|
|
11
|
+
escape,
|
|
12
|
+
})
|
|
13
|
+
: buildPathAndQuery({ func: segment.path, escape });
|
|
14
|
+
if (path.startsWith(PATH_SEPARATOR)) {
|
|
15
|
+
path = path.slice(1);
|
|
16
|
+
}
|
|
17
|
+
return [path, params];
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
let key = segment.key;
|
|
21
|
+
// HACK: Check guid string
|
|
22
|
+
if (typeof key === 'string' &&
|
|
23
|
+
/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(key)) {
|
|
24
|
+
key = raw(key);
|
|
25
|
+
}
|
|
26
|
+
let [path, params] = key ? buildPathAndQuery({ key, escape }) : ['', {}];
|
|
27
|
+
return [segment.path + path, params];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class ODataPathSegments {
|
|
31
|
+
constructor(segments) {
|
|
32
|
+
this._segments = segments || [];
|
|
33
|
+
}
|
|
34
|
+
pathAndParams({ escape, parser, } = {}) {
|
|
35
|
+
const result = this._segments.reduce((acc, segment) => {
|
|
36
|
+
const [path, params] = pathSegmentsBuilder(segment, escape, parser);
|
|
37
|
+
acc.paths.push(path);
|
|
38
|
+
acc.params = Object.assign(acc.params, params);
|
|
39
|
+
return acc;
|
|
40
|
+
}, { paths: [], params: {} });
|
|
41
|
+
return [result.paths.join(PATH_SEPARATOR), result.params];
|
|
42
|
+
}
|
|
43
|
+
types({ key = false } = {}) {
|
|
44
|
+
return this.segments({ key })
|
|
45
|
+
.map((s) => s.type())
|
|
46
|
+
.filter((t) => t !== undefined);
|
|
47
|
+
}
|
|
48
|
+
keys(values) {
|
|
49
|
+
const segments = this.segments({ key: true });
|
|
50
|
+
if (values !== undefined) {
|
|
51
|
+
segments.forEach((segment, index) => {
|
|
52
|
+
const key = values[index];
|
|
53
|
+
if (key === undefined) {
|
|
54
|
+
segment.clearKey();
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
segment.key(key);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return segments.map((s) => s.key());
|
|
62
|
+
}
|
|
63
|
+
toString({ escape, parser, } = {}) {
|
|
64
|
+
const [path, params] = this.pathAndParams({ escape, parser });
|
|
65
|
+
return (path +
|
|
66
|
+
Object.entries(params)
|
|
67
|
+
.filter(([, value]) => value)
|
|
68
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
69
|
+
.join('&'));
|
|
70
|
+
}
|
|
71
|
+
toJSON() {
|
|
72
|
+
return this._segments.map((s) => {
|
|
73
|
+
let json = {
|
|
74
|
+
name: s.name,
|
|
75
|
+
path: s.path,
|
|
76
|
+
};
|
|
77
|
+
if (s.type !== undefined)
|
|
78
|
+
json.type = s.type;
|
|
79
|
+
if (s.key !== undefined)
|
|
80
|
+
json.key = s.key;
|
|
81
|
+
if (s.parameters !== undefined)
|
|
82
|
+
json.parameters = s.parameters;
|
|
83
|
+
return json;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
clone() {
|
|
87
|
+
const segments = Objects.clone(this._segments);
|
|
88
|
+
return new ODataPathSegments(segments);
|
|
89
|
+
}
|
|
90
|
+
find(predicate) {
|
|
91
|
+
//Backward Find
|
|
92
|
+
return [...this._segments].reverse().find(predicate);
|
|
93
|
+
}
|
|
94
|
+
segments({ key = false } = {}) {
|
|
95
|
+
let segments = [...this._segments];
|
|
96
|
+
if (key)
|
|
97
|
+
segments = segments.filter((s) => [
|
|
98
|
+
PathSegment.entitySet,
|
|
99
|
+
PathSegment.navigationProperty,
|
|
100
|
+
PathSegment.property,
|
|
101
|
+
].indexOf(s.name) !== -1);
|
|
102
|
+
return segments.map((s) => new SegmentHandler(s));
|
|
103
|
+
}
|
|
104
|
+
first({ key = false } = {}) {
|
|
105
|
+
const segments = this.segments({ key });
|
|
106
|
+
return segments.length > 0 ? segments[0] : undefined;
|
|
107
|
+
}
|
|
108
|
+
last({ key = false } = {}) {
|
|
109
|
+
const segments = this.segments({ key });
|
|
110
|
+
return segments.length > 0 ? segments[segments.length - 1] : undefined;
|
|
111
|
+
}
|
|
112
|
+
add(name, path) {
|
|
113
|
+
const segment = { name, path };
|
|
114
|
+
this._segments.push(segment);
|
|
115
|
+
return new SegmentHandler(segment);
|
|
116
|
+
}
|
|
117
|
+
get(name) {
|
|
118
|
+
let segment = this.find((s) => s.name === name);
|
|
119
|
+
if (segment === undefined)
|
|
120
|
+
throw Error(`No Segment for name ${name} was found`);
|
|
121
|
+
return new SegmentHandler(segment);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3BhdGgvc2VnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBVSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFVNUMsU0FBUyxtQkFBbUIsQ0FDMUIsT0FBcUIsRUFDckIsU0FBa0IsS0FBSyxFQUN2QixNQUFvQjtJQUVwQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVEsRUFBRTtRQUN6QyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVO1lBQ3JDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDaEIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRTtnQkFDNUMsTUFBTTthQUNQLENBQUM7WUFDSixDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNuQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0QjtRQUNELE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDdkI7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QUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDekUsQ0FBQztJQUVELEdBQUcsQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUM1QixNQUFNLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQWtCLENBQUM7UUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQVk7UUFDZCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksT0FBTyxLQUFLLFNBQVM7WUFDdkIsTUFBTSxLQUFLLENBQUMsdUJBQXVCLElBQUksWUFBWSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQQVRIX1NFUEFSQVRPUiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQYXJzZXIsIFBhdGhTZWdtZW50IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JqZWN0cyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGJ1aWxkUGF0aEFuZFF1ZXJ5LCByYXcgfSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBFbnRpdHlLZXkgfSBmcm9tICcuLi9yZXNvdXJjZSc7XG5pbXBvcnQgeyBTZWdtZW50SGFuZGxlciB9IGZyb20gJy4vaGFuZGxlcnMnO1xuXG5leHBvcnQgdHlwZSBPRGF0YVNlZ21lbnQgPSB7XG4gIG5hbWU6IFBhdGhTZWdtZW50O1xuICBwYXRoOiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIGtleT86IGFueTtcbiAgcGFyYW1ldGVycz86IGFueTtcbn07XG5cbmZ1bmN0aW9uIHBhdGhTZWdtZW50c0J1aWxkZXIoXG4gIHNlZ21lbnQ6IE9EYXRhU2VnbWVudCxcbiAgZXNjYXBlOiBib29sZWFuID0gZmFsc2UsXG4gIHBhcnNlcj86IFBhcnNlcjxhbnk+LFxuKTogW3N0cmluZywgeyBbbmFtZTogc3RyaW5nXTogYW55IH1dIHtcbiAgaWYgKHNlZ21lbnQubmFtZSA9PT0gUGF0aFNlZ21lbnQuZnVuY3Rpb24pIHtcbiAgICBsZXQgW3BhdGgsIHBhcmFtc10gPSBzZWdtZW50LnBhcmFtZXRlcnNcbiAgICAgID8gYnVpbGRQYXRoQW5kUXVlcnkoe1xuICAgICAgICAgIGZ1bmM6IHsgW3NlZ21lbnQucGF0aF06IHNlZ21lbnQucGFyYW1ldGVycyB9LFxuICAgICAgICAgIGVzY2FwZSxcbiAgICAgICAgfSlcbiAgICAgIDogYnVpbGRQYXRoQW5kUXVlcnkoeyBmdW5jOiBzZWdtZW50LnBhdGgsIGVzY2FwZSB9KTtcbiAgICBpZiAocGF0aC5zdGFydHNXaXRoKFBBVEhfU0VQQVJBVE9SKSkge1xuICAgICAgcGF0aCA9IHBhdGguc2xpY2UoMSk7XG4gICAgfVxuICAgIHJldHVybiBbcGF0aCwgcGFyYW1zXTtcbiAgfSBlbHNlIHtcbiAgICBsZXQga2V5ID0gc2VnbWVudC5rZXk7XG4gICAgLy8gSEFDSzogQ2hlY2sgZ3VpZCBzdHJpbmdcbiAgICBpZiAoXG4gICAgICB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJlxuICAgICAgL15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kLy50ZXN0KFxuICAgICAgICBrZXksXG4gICAgICApXG4gICAgKSB7XG4gICAgICBrZXkgPSByYXcoa2V5KTtcbiAgICB9XG4gICAgbGV0IFtwYXRoLCBwYXJhbXNdID0ga2V5ID8gYnVpbGRQYXRoQW5kUXVlcnkoeyBrZXksIGVzY2FwZSB9KSA6IFsnJywge31dO1xuICAgIHJldHVybiBbc2VnbWVudC5wYXRoICsgcGF0aCwgcGFyYW1zXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFQYXRoU2VnbWVudHMge1xuICBwcml2YXRlIF9zZWdtZW50czogT0RhdGFTZWdtZW50W107XG5cbiAgY29uc3RydWN0b3Ioc2VnbWVudHM/OiBPRGF0YVNlZ21lbnRbXSkge1xuICAgIHRoaXMuX3NlZ21lbnRzID0gc2VnbWVudHMgfHwgW107XG4gIH1cblxuICBwYXRoQW5kUGFyYW1zKHtcbiAgICBlc2NhcGUsXG4gICAgcGFyc2VyLFxuICB9OiB7IGVzY2FwZT86IGJvb2xlYW47IHBhcnNlcj86IFBhcnNlcjxhbnk+IH0gPSB7fSk6IFtcbiAgICBzdHJpbmcsXG4gICAgeyBbbmFtZTogc3RyaW5nXTogYW55IH0sXG4gIF0ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3NlZ21lbnRzLnJlZHVjZShcbiAgICAgIChhY2MsIHNlZ21lbnQpID0+IHtcbiAgICAgICAgY29uc3QgW3BhdGgsIHBhcmFtc10gPSBwYXRoU2VnbWVudHNCdWlsZGVyKHNlZ21lbnQsIGVzY2FwZSwgcGFyc2VyKTtcbiAgICAgICAgYWNjLnBhdGhzLnB1c2gocGF0aCk7XG4gICAgICAgIGFjYy5wYXJhbXMgPSBPYmplY3QuYXNzaWduKGFjYy5wYXJhbXMsIHBhcmFtcyk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAgeyBwYXRoczogW10gYXMgc3RyaW5nW10sIHBhcmFtczoge30gYXMgeyBbbmFtZTogc3RyaW5nXTogYW55IH0gfSxcbiAgICApO1xuICAgIHJldHVybiBbcmVzdWx0LnBhdGhzLmpvaW4oUEFUSF9TRVBBUkFUT1IpLCByZXN1bHQucGFyYW1zXTtcbiAgfVxuXG4gIHR5cGVzKHsga2V5ID0gZmFsc2UgfTogeyBrZXk/OiBib29sZWFuIH0gPSB7fSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zZWdtZW50cyh7IGtleSB9KVxuICAgICAgLm1hcCgocykgPT4gcy50eXBlKCkpXG4gICAgICAuZmlsdGVyKCh0KSA9PiB0ICE9PSB1bmRlZmluZWQpIGFzIHN0cmluZ1tdO1xuICB9XG5cbiAga2V5cyh2YWx1ZXM/OiAoRW50aXR5S2V5PGFueT4gfCB1bmRlZmluZWQpW10pIHtcbiAgICBjb25zdCBzZWdtZW50cyA9IHRoaXMuc2VnbWVudHMoeyBrZXk6IHRydWUgfSk7XG4gICAgaWYgKHZhbHVlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZWdtZW50cy5mb3JFYWNoKChzZWdtZW50LCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSB2YWx1ZXNbaW5kZXhdO1xuICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzZWdtZW50LmNsZWFyS2V5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudC5rZXkoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBzZWdtZW50cy5tYXAoKHMpID0+IHMua2V5KCkgYXMgRW50aXR5S2V5PGFueT4gfCB1bmRlZmluZWQpO1xuICB9XG5cbiAgdG9TdHJpbmcoe1xuICAgIGVzY2FwZSxcbiAgICBwYXJzZXIsXG4gIH06IHsgZXNjYXBlPzogYm9vbGVhbjsgcGFyc2VyPzogUGFyc2VyPGFueT4gfSA9IHt9KTogc3RyaW5nIHtcbiAgICBjb25zdCBbcGF0aCwgcGFyYW1zXSA9IHRoaXMucGF0aEFuZFBhcmFtcyh7IGVzY2FwZSwgcGFyc2VyIH0pO1xuICAgIHJldHVybiAoXG4gICAgICBwYXRoICtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtcylcbiAgICAgICAgLmZpbHRlcigoWywgdmFsdWVdKSA9PiB2YWx1ZSlcbiAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YClcbiAgICAgICAgLmpvaW4oJyYnKVxuICAgICk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlZ21lbnRzLm1hcCgocykgPT4ge1xuICAgICAgbGV0IGpzb24gPSB7XG4gICAgICAgIG5hbWU6IHMubmFtZSBhcyBzdHJpbmcsXG4gICAgICAgIHBhdGg6IHMucGF0aCxcbiAgICAgIH0gYXMgYW55O1xuICAgICAgaWYgKHMudHlwZSAhPT0gdW5kZWZpbmVkKSBqc29uLnR5cGUgPSBzLnR5cGU7XG4gICAgICBpZiAocy5rZXkgIT09IHVuZGVmaW5lZCkganNvbi5rZXkgPSBzLmtleTtcbiAgICAgIGlmIChzLnBhcmFtZXRlcnMgIT09IHVuZGVmaW5lZCkganNvbi5wYXJhbWV0ZXJzID0gcy5wYXJhbWV0ZXJzO1xuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSk7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICBjb25zdCBzZWdtZW50cyA9IE9iamVjdHMuY2xvbmUodGhpcy5fc2VnbWVudHMpO1xuICAgIHJldHVybiBuZXcgT0RhdGFQYXRoU2VnbWVudHMoc2VnbWVudHMpO1xuICB9XG5cbiAgZmluZChwcmVkaWNhdGU6IChzZWdtZW50OiBPRGF0YVNlZ21lbnQpID0+IGJvb2xlYW4pIHtcbiAgICAvL0JhY2t3YXJkIEZpbmRcbiAgICByZXR1cm4gWy4uLnRoaXMuX3NlZ21lbnRzXS5yZXZlcnNlKCkuZmluZChwcmVkaWNhdGUpO1xuICB9XG5cbiAgc2VnbWVudHMoeyBrZXkgPSBmYWxzZSB9OiB7IGtleT86IGJvb2xlYW4gfSA9IHt9KSB7XG4gICAgbGV0IHNlZ21lbnRzID0gWy4uLnRoaXMuX3NlZ21lbnRzXTtcbiAgICBpZiAoa2V5KVxuICAgICAgc2VnbWVudHMgPSBzZWdtZW50cy5maWx0ZXIoXG4gICAgICAgIChzKSA9PlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFBhdGhTZWdtZW50LmVudGl0eVNldCxcbiAgICAgICAgICAgIFBhdGhTZWdtZW50Lm5hdmlnYXRpb25Qcm9wZXJ0eSxcbiAgICAgICAgICAgIFBhdGhTZWdtZW50LnByb3BlcnR5LFxuICAgICAgICAgIF0uaW5kZXhPZihzLm5hbWUpICE9PSAtMSxcbiAgICAgICk7XG4gICAgcmV0dXJuIHNlZ21lbnRzLm1hcCgocykgPT4gbmV3IFNlZ21lbnRIYW5kbGVyKHMpKTtcbiAgfVxuXG4gIGZpcnN0KHsga2V5ID0gZmFsc2UgfTogeyBrZXk/OiBib29sZWFuIH0gPSB7fSkge1xuICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5zZWdtZW50cyh7IGtleSB9KTtcbiAgICByZXR1cm4gc2VnbWVudHMubGVuZ3RoID4gMCA/IHNlZ21lbnRzWzBdIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgbGFzdCh7IGtleSA9IGZhbHNlIH06IHsga2V5PzogYm9vbGVhbiB9ID0ge30pIHtcbiAgICBjb25zdCBzZWdtZW50cyA9IHRoaXMuc2VnbWVudHMoeyBrZXkgfSk7XG4gICAgcmV0dXJuIHNlZ21lbnRzLmxlbmd0aCA+IDAgPyBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGFkZChuYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHNlZ21lbnQgPSB7IG5hbWUsIHBhdGggfSBhcyBPRGF0YVNlZ21lbnQ7XG4gICAgdGhpcy5fc2VnbWVudHMucHVzaChzZWdtZW50KTtcbiAgICByZXR1cm4gbmV3IFNlZ21lbnRIYW5kbGVyKHNlZ21lbnQpO1xuICB9XG5cbiAgZ2V0KG5hbWU6IHN0cmluZykge1xuICAgIGxldCBzZWdtZW50ID0gdGhpcy5maW5kKChzKSA9PiBzLm5hbWUgPT09IG5hbWUpO1xuICAgIGlmIChzZWdtZW50ID09PSB1bmRlZmluZWQpXG4gICAgICB0aHJvdyBFcnJvcihgTm8gU2VnbWVudCBmb3IgbmFtZSAke25hbWV9IHdhcyBmb3VuZGApO1xuICAgIHJldHVybiBuZXcgU2VnbWVudEhhbmRsZXIoc2VnbWVudCk7XG4gIH1cbn1cbiJdfQ==
|