angular-odata 0.78.1 → 0.95.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/README.md +133 -62
- package/{esm2015/angular-odata.js → esm2020/angular-odata.mjs} +0 -0
- package/esm2020/lib/api.mjs +303 -0
- package/{esm2015/lib/cache/cache.js → esm2020/lib/cache/cache.mjs} +12 -5
- package/{esm2015/lib/cache/index.js → esm2020/lib/cache/index.mjs} +0 -0
- package/{esm2015/lib/cache/memory.js → esm2020/lib/cache/memory.mjs} +0 -0
- package/{esm2015/lib/cache/storage.js → esm2020/lib/cache/storage.mjs} +1 -1
- package/esm2020/lib/client.mjs +271 -0
- package/{esm2015/lib/constants.js → esm2020/lib/constants.mjs} +9 -3
- package/esm2020/lib/helper.mjs +268 -0
- package/esm2020/lib/index.mjs +19 -0
- package/esm2020/lib/models/collection.mjs +741 -0
- package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +0 -0
- package/esm2020/lib/models/model.mjs +453 -0
- package/esm2020/lib/models/options.mjs +945 -0
- package/{esm2015/lib/module.js → esm2020/lib/module.mjs} +6 -6
- package/esm2020/lib/options.mjs +32 -0
- package/esm2020/lib/resources/index.mjs +7 -0
- package/esm2020/lib/resources/path/handlers.mjs +69 -0
- package/esm2020/lib/resources/path/index.mjs +3 -0
- package/esm2020/lib/resources/path/segments.mjs +124 -0
- package/esm2020/lib/resources/query/builder.mjs +590 -0
- package/esm2020/lib/resources/query/expressions.mjs +207 -0
- package/esm2020/lib/resources/query/handlers.mjs +186 -0
- package/esm2020/lib/resources/query/index.mjs +4 -0
- package/esm2020/lib/resources/query/options.mjs +103 -0
- package/esm2020/lib/resources/query/syntax.mjs +406 -0
- package/esm2020/lib/resources/request.mjs +167 -0
- package/esm2020/lib/resources/resource.mjs +326 -0
- package/esm2020/lib/resources/responses/annotations.mjs +119 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-annotation.js → esm2020/lib/resources/responses/csdl/csdl-annotation.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-entity-container.js → esm2020/lib/resources/responses/csdl/csdl-entity-container.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-entity-set.js → esm2020/lib/resources/responses/csdl/csdl-entity-set.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-enum-type.js → esm2020/lib/resources/responses/csdl/csdl-enum-type.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-function-action.js → esm2020/lib/resources/responses/csdl/csdl-function-action.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-navigation-property-binding.js → esm2020/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-reference.js → esm2020/lib/resources/responses/csdl/csdl-reference.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-schema.js → esm2020/lib/resources/responses/csdl/csdl-schema.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-singleton.js → esm2020/lib/resources/responses/csdl/csdl-singleton.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-structural-property.js → esm2020/lib/resources/responses/csdl/csdl-structural-property.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-structured-type.js → esm2020/lib/resources/responses/csdl/csdl-structured-type.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-type-definition.js → esm2020/lib/resources/responses/csdl/csdl-type-definition.mjs} +0 -0
- package/{esm2015/lib/resources/responses/index.js → esm2020/lib/resources/responses/index.mjs} +0 -0
- package/esm2020/lib/resources/responses/metadata.mjs +547 -0
- package/{esm2015/lib/resources/responses/options.js → esm2020/lib/resources/responses/options.mjs} +1 -1
- package/esm2020/lib/resources/responses/response.mjs +170 -0
- package/{esm2015/lib/resources/responses/types.js → esm2020/lib/resources/responses/types.mjs} +1 -1
- package/esm2020/lib/resources/types/action.mjs +101 -0
- package/esm2020/lib/resources/types/batch.mjs +288 -0
- package/esm2020/lib/resources/types/count.mjs +27 -0
- package/esm2020/lib/resources/types/entity-set.mjs +94 -0
- package/esm2020/lib/resources/types/entity.mjs +106 -0
- package/esm2020/lib/resources/types/function.mjs +137 -0
- package/{esm2015/lib/resources/types/index.js → esm2020/lib/resources/types/index.mjs} +0 -0
- package/esm2020/lib/resources/types/media.mjs +41 -0
- package/esm2020/lib/resources/types/metadata.mjs +30 -0
- package/esm2020/lib/resources/types/navigation-property.mjs +226 -0
- package/esm2020/lib/resources/types/options.mjs +2 -0
- package/esm2020/lib/resources/types/property.mjs +183 -0
- package/esm2020/lib/resources/types/reference.mjs +85 -0
- package/esm2020/lib/resources/types/singleton.mjs +126 -0
- package/esm2020/lib/resources/types/value.mjs +41 -0
- package/esm2020/lib/schema/annotation.mjs +37 -0
- package/esm2020/lib/schema/callable.mjs +62 -0
- package/esm2020/lib/schema/element.mjs +51 -0
- package/esm2020/lib/schema/entity-container.mjs +9 -0
- package/esm2020/lib/schema/entity-set.mjs +9 -0
- package/esm2020/lib/schema/enum-type.mjs +71 -0
- package/{esm2015/lib/schema/index.js → esm2020/lib/schema/index.mjs} +2 -1
- package/esm2020/lib/schema/parsers/callable.mjs +113 -0
- package/esm2020/lib/schema/parsers/edm.mjs +95 -0
- package/esm2020/lib/schema/parsers/enum-type.mjs +107 -0
- package/esm2020/lib/schema/parsers/index.mjs +5 -0
- package/esm2020/lib/schema/parsers/structured-type.mjs +412 -0
- package/esm2020/lib/schema/schema.mjs +61 -0
- package/esm2020/lib/schema/structured-type.mjs +198 -0
- package/esm2020/lib/services/base.mjs +29 -0
- package/esm2020/lib/services/entity-set.mjs +143 -0
- package/esm2020/lib/services/entity.mjs +12 -0
- package/{esm2015/lib/services/factory.js → esm2020/lib/services/factory.mjs} +3 -3
- package/{esm2015/lib/services/index.js → esm2020/lib/services/index.mjs} +0 -0
- package/esm2020/lib/services/singleton.mjs +48 -0
- package/{esm2015/lib/settings.js → esm2020/lib/settings.mjs} +1 -1
- package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
- package/esm2020/lib/types.mjs +37 -0
- package/esm2020/lib/utils/arraybuffers.mjs +46 -0
- package/{esm2015/lib/utils/dates.js → esm2020/lib/utils/dates.mjs} +0 -0
- package/esm2020/lib/utils/durations.mjs +40 -0
- package/{esm2015/lib/utils/enums.js → esm2020/lib/utils/enums.mjs} +0 -0
- package/esm2020/lib/utils/http.mjs +93 -0
- package/esm2020/lib/utils/index.mjs +10 -0
- package/esm2020/lib/utils/objects.mjs +195 -0
- package/esm2020/lib/utils/odata.mjs +22 -0
- package/esm2020/lib/utils/strings.mjs +20 -0
- package/esm2020/lib/utils/types.mjs +134 -0
- package/{esm2015/lib/utils/urls.js → esm2020/lib/utils/urls.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{angular-odata.js → angular-odata.mjs} +5068 -3943
- package/fesm2015/angular-odata.mjs.map +1 -0
- package/fesm2020/angular-odata.mjs +10274 -0
- package/fesm2020/angular-odata.mjs.map +1 -0
- package/lib/api.d.ts +17 -16
- package/lib/cache/cache.d.ts +2 -2
- package/lib/client.d.ts +93 -18
- package/lib/constants.d.ts +6 -2
- package/lib/helper.d.ts +3 -3
- package/lib/index.d.ts +0 -1
- package/lib/models/collection.d.ts +36 -47
- package/lib/models/model.d.ts +47 -40
- package/lib/models/options.d.ts +53 -52
- package/lib/options.d.ts +50 -2
- package/lib/resources/index.d.ts +2 -3
- package/lib/resources/path/handlers.d.ts +27 -0
- package/lib/resources/path/index.d.ts +2 -0
- package/lib/resources/{path-segments.d.ts → path/segments.d.ts} +4 -16
- package/lib/resources/{builder.d.ts → query/builder.d.ts} +12 -7
- package/lib/resources/query/expressions.d.ts +63 -0
- package/lib/resources/query/handlers.d.ts +89 -0
- package/lib/resources/query/index.d.ts +3 -0
- package/lib/resources/query/options.d.ts +38 -0
- package/lib/resources/query/syntax.d.ts +175 -0
- package/lib/resources/request.d.ts +8 -6
- package/lib/resources/resource.d.ts +49 -55
- package/lib/resources/responses/metadata.d.ts +1 -1
- package/lib/resources/responses/types.d.ts +1 -1
- package/lib/resources/types/action.d.ts +55 -69
- package/lib/resources/types/batch.d.ts +13 -8
- package/lib/resources/types/count.d.ts +16 -19
- package/lib/resources/types/entity-set.d.ts +24 -62
- package/lib/resources/types/entity.d.ts +35 -43
- package/lib/resources/types/function.d.ts +63 -71
- package/lib/resources/types/media.d.ts +20 -22
- package/lib/resources/types/metadata.d.ts +5 -7
- package/lib/resources/types/navigation-property.d.ts +100 -85
- package/lib/resources/types/options.d.ts +8 -8
- package/lib/resources/types/property.d.ts +63 -73
- package/lib/resources/types/reference.d.ts +72 -16
- package/lib/resources/types/singleton.d.ts +75 -43
- package/lib/resources/types/value.d.ts +18 -9
- package/lib/schema/annotation.d.ts +18 -0
- package/lib/schema/callable.d.ts +27 -11
- package/lib/schema/element.d.ts +39 -0
- package/lib/schema/entity-container.d.ts +3 -8
- package/lib/schema/entity-set.d.ts +3 -9
- package/lib/schema/enum-type.d.ts +41 -14
- package/lib/schema/index.d.ts +1 -0
- package/lib/{parsers → schema/parsers}/callable.d.ts +2 -2
- package/lib/schema/parsers/edm.d.ts +4 -0
- package/lib/{parsers → schema/parsers}/enum-type.d.ts +13 -7
- package/lib/{parsers → schema/parsers}/index.d.ts +0 -0
- package/lib/{parsers → schema/parsers}/structured-type.d.ts +14 -9
- package/lib/schema/schema.d.ts +6 -8
- package/lib/schema/structured-type.d.ts +97 -18
- package/lib/services/base.d.ts +12 -12
- package/lib/services/entity-set.d.ts +15 -12
- package/lib/services/entity.d.ts +4 -1
- package/lib/services/singleton.d.ts +6 -3
- package/lib/settings.d.ts +4 -4
- package/lib/types.d.ts +7 -3
- package/lib/utils/arraybuffers.d.ts +4 -0
- package/lib/{parsers/edm.d.ts → utils/durations.d.ts} +3 -3
- package/lib/utils/http.d.ts +9 -0
- package/lib/utils/index.d.ts +5 -2
- package/lib/utils/objects.d.ts +1 -1
- package/lib/utils/strings.d.ts +4 -0
- package/lib/utils/types.d.ts +2 -0
- package/package.json +21 -8
- package/bundles/angular-odata.umd.js +0 -10756
- package/bundles/angular-odata.umd.js.map +0 -1
- package/esm2015/lib/api.js +0 -251
- package/esm2015/lib/client.js +0 -197
- package/esm2015/lib/helper.js +0 -269
- package/esm2015/lib/index.js +0 -21
- package/esm2015/lib/models/collection.js +0 -660
- package/esm2015/lib/models/model.js +0 -421
- package/esm2015/lib/models/options.js +0 -889
- package/esm2015/lib/options.js +0 -31
- package/esm2015/lib/parsers/callable.js +0 -110
- package/esm2015/lib/parsers/edm.js +0 -310
- package/esm2015/lib/parsers/enum-type.js +0 -97
- package/esm2015/lib/parsers/index.js +0 -5
- package/esm2015/lib/parsers/structured-type.js +0 -394
- package/esm2015/lib/resources/builder.js +0 -537
- package/esm2015/lib/resources/index.js +0 -8
- package/esm2015/lib/resources/path-segments.js +0 -156
- package/esm2015/lib/resources/query-options.js +0 -157
- package/esm2015/lib/resources/request.js +0 -141
- package/esm2015/lib/resources/resource.js +0 -328
- package/esm2015/lib/resources/responses/annotations.js +0 -121
- package/esm2015/lib/resources/responses/metadata.js +0 -548
- package/esm2015/lib/resources/responses/response.js +0 -170
- package/esm2015/lib/resources/types/action.js +0 -146
- package/esm2015/lib/resources/types/batch.js +0 -330
- package/esm2015/lib/resources/types/count.js +0 -50
- package/esm2015/lib/resources/types/entity-set.js +0 -164
- package/esm2015/lib/resources/types/entity.js +0 -158
- package/esm2015/lib/resources/types/function.js +0 -166
- package/esm2015/lib/resources/types/media.js +0 -46
- package/esm2015/lib/resources/types/metadata.js +0 -36
- package/esm2015/lib/resources/types/navigation-property.js +0 -214
- package/esm2015/lib/resources/types/options.js +0 -2
- package/esm2015/lib/resources/types/property.js +0 -190
- package/esm2015/lib/resources/types/reference.js +0 -50
- package/esm2015/lib/resources/types/singleton.js +0 -147
- package/esm2015/lib/resources/types/value.js +0 -30
- package/esm2015/lib/schema/annotation.js +0 -7
- package/esm2015/lib/schema/callable.js +0 -50
- package/esm2015/lib/schema/entity-container.js +0 -17
- package/esm2015/lib/schema/entity-set.js +0 -23
- package/esm2015/lib/schema/enum-type.js +0 -68
- package/esm2015/lib/schema/schema.js +0 -55
- package/esm2015/lib/schema/structured-type.js +0 -107
- package/esm2015/lib/services/base.js +0 -23
- package/esm2015/lib/services/entity-set.js +0 -143
- package/esm2015/lib/services/entity.js +0 -10
- package/esm2015/lib/services/singleton.js +0 -46
- package/esm2015/lib/types.js +0 -37
- package/esm2015/lib/utils/http.js +0 -59
- package/esm2015/lib/utils/index.js +0 -7
- package/esm2015/lib/utils/objects.js +0 -140
- package/esm2015/lib/utils/odata.js +0 -21
- package/esm2015/lib/utils/types.js +0 -103
- package/fesm2015/angular-odata.js.map +0 -1
- package/lib/resources/query-options.d.ts +0 -57
package/esm2015/lib/options.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { DEFAULT_FETCH_POLICY, DEFAULT_STRIP_METADATA, DEFAULT_VERSION, } from './constants';
|
|
2
|
-
import { ODataHelper } from './helper';
|
|
3
|
-
export class ODataApiOptions {
|
|
4
|
-
constructor(config) {
|
|
5
|
-
this.etag = { ifMatch: true, ifNoneMatch: false };
|
|
6
|
-
this.version = config.version || DEFAULT_VERSION;
|
|
7
|
-
this.stringAsEnum = config.stringAsEnum;
|
|
8
|
-
this.params = config.params || {};
|
|
9
|
-
this.headers = config.headers || {};
|
|
10
|
-
this.withCredentials = config.withCredentials;
|
|
11
|
-
this.stripMetadata = config.stripMetadata || DEFAULT_STRIP_METADATA;
|
|
12
|
-
this.fetchPolicy = config.fetchPolicy || DEFAULT_FETCH_POLICY;
|
|
13
|
-
this.bodyQueryOptions = config.bodyQueryOptions || [];
|
|
14
|
-
this.accept = config.accept;
|
|
15
|
-
Object.assign(this.etag, config.etag || {});
|
|
16
|
-
this.prefer = config.prefer;
|
|
17
|
-
}
|
|
18
|
-
get helper() {
|
|
19
|
-
return ODataHelper[this.version];
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
export class ODataParserOptions {
|
|
23
|
-
constructor(config) {
|
|
24
|
-
this.version = config.version || DEFAULT_VERSION;
|
|
25
|
-
this.stringAsEnum = config.stringAsEnum;
|
|
26
|
-
}
|
|
27
|
-
get helper() {
|
|
28
|
-
return ODataHelper[this.version];
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLGVBQWUsR0FDaEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQVd2QyxNQUFNLE9BQU8sZUFBZTtJQWdDMUIsWUFBWSxNQUFrQjtRQWpCOUIsU0FBSSxHQUtBLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFheEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLGVBQWUsQ0FBQztRQUNqRCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUM5QyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLElBQUksc0JBQXNCLENBQUM7UUFDcEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLG9CQUFvQixDQUFDO1FBQzlELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sa0JBQWtCO0lBSTdCLFlBQVksTUFBZTtRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERFRkFVTFRfRkVUQ0hfUE9MSUNZLFxuICBERUZBVUxUX1NUUklQX01FVEFEQVRBLFxuICBERUZBVUxUX1ZFUlNJT04sXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9EYXRhSGVscGVyIH0gZnJvbSAnLi9oZWxwZXInO1xuaW1wb3J0IHtcbiAgQXBpT3B0aW9ucyxcbiAgRmV0Y2hQb2xpY3ksXG4gIE9EYXRhTWV0YWRhdGFUeXBlLFxuICBPRGF0YVZlcnNpb24sXG4gIE9wdGlvbnMsXG4gIE9wdGlvbnNIZWxwZXIsXG4gIFF1ZXJ5T3B0aW9uTmFtZXMsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgT0RhdGFBcGlPcHRpb25zIGltcGxlbWVudHMgQXBpT3B0aW9ucywgT3B0aW9uc0hlbHBlciB7XG4gIHZlcnNpb246IE9EYXRhVmVyc2lvbjtcbiAgc3RyaW5nQXNFbnVtPzogYm9vbGVhbjtcbiAgc3RyaXBNZXRhZGF0YTogT0RhdGFNZXRhZGF0YVR5cGU7XG4gIGZldGNoUG9saWN5OiBGZXRjaFBvbGljeTtcbiAgc3RyZWFtaW5nPzogYm9vbGVhbjtcbiAgLy8gSHR0cFxuICBwYXJhbXM6IHsgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuICBoZWFkZXJzOiB7IFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfTtcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgYm9keVF1ZXJ5T3B0aW9uczogUXVlcnlPcHRpb25OYW1lc1tdO1xuICBhY2NlcHQ/OiB7XG4gICAgbWV0YWRhdGE/OiBPRGF0YU1ldGFkYXRhVHlwZTtcbiAgICBpZWVlNzU0Q29tcGF0aWJsZT86IGJvb2xlYW47XG4gIH07XG4gIGV0YWc6IHtcbiAgICAvL2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhL3Y0LjAvZXJyYXRhMDIvb3MvY29tcGxldGUvcGFydDEtcHJvdG9jb2wvb2RhdGEtdjQuMC1lcnJhdGEwMi1vcy1wYXJ0MS1wcm90b2NvbC1jb21wbGV0ZS5odG1sI19Ub2M0MDYzOTgyMjlcbiAgICBpZk1hdGNoOiBib29sZWFuO1xuICAgIC8vaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMC9lcnJhdGEwMi9vcy9jb21wbGV0ZS9wYXJ0MS1wcm90b2NvbC9vZGF0YS12NC4wLWVycmF0YTAyLW9zLXBhcnQxLXByb3RvY29sLWNvbXBsZXRlLmh0bWwjX1RvYzQwNjM5ODIzMFxuICAgIGlmTm9uZU1hdGNoOiBib29sZWFuO1xuICB9ID0geyBpZk1hdGNoOiB0cnVlLCBpZk5vbmVNYXRjaDogZmFsc2UgfTtcbiAgcHJlZmVyPzoge1xuICAgIC8vaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMC9lcnJhdGEwMi9vcy9jb21wbGV0ZS9wYXJ0MS1wcm90b2NvbC9vZGF0YS12NC4wLWVycmF0YTAyLW9zLXBhcnQxLXByb3RvY29sLWNvbXBsZXRlLmh0bWwjX1RvYzQwNjM5ODIzOFxuICAgIG1heFBhZ2VTaXplPzogbnVtYmVyO1xuICAgIC8vaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMC9lcnJhdGEwMi9vcy9jb21wbGV0ZS9wYXJ0MS1wcm90b2NvbC9vZGF0YS12NC4wLWVycmF0YTAyLW9zLXBhcnQxLXByb3RvY29sLWNvbXBsZXRlLmh0bWwjX1RvYzQwNjM5ODI0MFxuICAgIHJldHVybj86ICdyZXByZXNlbnRhdGlvbicgfCAnbWluaW1hbCc7XG4gICAgLy9odHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9vZGF0YS9vZGF0YS92NC4wL2VycmF0YTAyL29zL2NvbXBsZXRlL3BhcnQxLXByb3RvY29sL29kYXRhLXY0LjAtZXJyYXRhMDItb3MtcGFydDEtcHJvdG9jb2wtY29tcGxldGUuaHRtbCNfVG9jNDA2Mzk4MjM2XG4gICAgY29udGludWVPbkVycm9yPzogYm9vbGVhbjtcbiAgICAvL2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhL3Y0LjAvZXJyYXRhMDIvb3MvY29tcGxldGUvcGFydDEtcHJvdG9jb2wvb2RhdGEtdjQuMC1lcnJhdGEwMi1vcy1wYXJ0MS1wcm90b2NvbC1jb21wbGV0ZS5odG1sI19Ub2M0MDYzOTgyMzdcbiAgICBpbmNsdWRlQW5ub3RhdGlvbnM/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBBcGlPcHRpb25zKSB7XG4gICAgdGhpcy52ZXJzaW9uID0gY29uZmlnLnZlcnNpb24gfHwgREVGQVVMVF9WRVJTSU9OO1xuICAgIHRoaXMuc3RyaW5nQXNFbnVtID0gY29uZmlnLnN0cmluZ0FzRW51bTtcbiAgICB0aGlzLnBhcmFtcyA9IGNvbmZpZy5wYXJhbXMgfHwge307XG4gICAgdGhpcy5oZWFkZXJzID0gY29uZmlnLmhlYWRlcnMgfHwge307XG4gICAgdGhpcy53aXRoQ3JlZGVudGlhbHMgPSBjb25maWcud2l0aENyZWRlbnRpYWxzO1xuICAgIHRoaXMuc3RyaXBNZXRhZGF0YSA9IGNvbmZpZy5zdHJpcE1ldGFkYXRhIHx8IERFRkFVTFRfU1RSSVBfTUVUQURBVEE7XG4gICAgdGhpcy5mZXRjaFBvbGljeSA9IGNvbmZpZy5mZXRjaFBvbGljeSB8fCBERUZBVUxUX0ZFVENIX1BPTElDWTtcbiAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMgPSBjb25maWcuYm9keVF1ZXJ5T3B0aW9ucyB8fCBbXTtcbiAgICB0aGlzLmFjY2VwdCA9IGNvbmZpZy5hY2NlcHQ7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLmV0YWcsIGNvbmZpZy5ldGFnIHx8IHt9KTtcbiAgICB0aGlzLnByZWZlciA9IGNvbmZpZy5wcmVmZXI7XG4gIH1cblxuICBnZXQgaGVscGVyKCkge1xuICAgIHJldHVybiBPRGF0YUhlbHBlclt0aGlzLnZlcnNpb25dO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVBhcnNlck9wdGlvbnMgaW1wbGVtZW50cyBPcHRpb25zSGVscGVyIHtcbiAgdmVyc2lvbjogT0RhdGFWZXJzaW9uO1xuICBzdHJpbmdBc0VudW0/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogT3B0aW9ucykge1xuICAgIHRoaXMudmVyc2lvbiA9IGNvbmZpZy52ZXJzaW9uIHx8IERFRkFVTFRfVkVSU0lPTjtcbiAgICB0aGlzLnN0cmluZ0FzRW51bSA9IGNvbmZpZy5zdHJpbmdBc0VudW07XG4gIH1cblxuICBnZXQgaGVscGVyKCkge1xuICAgIHJldHVybiBPRGF0YUhlbHBlclt0aGlzLnZlcnNpb25dO1xuICB9XG59XG4iXX0=
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { CALLABLE_BINDING_PARAMETER } from '../constants';
|
|
2
|
-
import { ODataParserOptions } from '../options';
|
|
3
|
-
import { NONE_PARSER, } from '../types';
|
|
4
|
-
import { ODataEnumTypeParser } from './enum-type';
|
|
5
|
-
import { ODataStructuredTypeParser } from './structured-type';
|
|
6
|
-
export class ODataParameterParser {
|
|
7
|
-
constructor(name, parameter) {
|
|
8
|
-
this.name = name;
|
|
9
|
-
this.type = parameter.type;
|
|
10
|
-
this.parser = NONE_PARSER;
|
|
11
|
-
Object.assign(this, parameter);
|
|
12
|
-
}
|
|
13
|
-
serialize(value, options) {
|
|
14
|
-
const parserOptions = options !== undefined
|
|
15
|
-
? new ODataParserOptions(options)
|
|
16
|
-
: this.optionsHelper;
|
|
17
|
-
return Array.isArray(value)
|
|
18
|
-
? value.map((v) => this.parser.serialize(v, parserOptions))
|
|
19
|
-
: this.parser.serialize(value, parserOptions);
|
|
20
|
-
}
|
|
21
|
-
//Encode
|
|
22
|
-
encode(value, options) {
|
|
23
|
-
const parserOptions = options !== undefined
|
|
24
|
-
? new ODataParserOptions(options)
|
|
25
|
-
: this.optionsHelper;
|
|
26
|
-
return Array.isArray(value)
|
|
27
|
-
? value.map((v) => this.parser.encode(v, parserOptions))
|
|
28
|
-
: this.parser.encode(value, parserOptions);
|
|
29
|
-
}
|
|
30
|
-
configure({ parserForType, options, }) {
|
|
31
|
-
this.optionsHelper = options;
|
|
32
|
-
this.parser = parserForType(this.type);
|
|
33
|
-
}
|
|
34
|
-
isEdmType() {
|
|
35
|
-
return this.type.startsWith('Edm.');
|
|
36
|
-
}
|
|
37
|
-
isEnumType() {
|
|
38
|
-
return this.parser instanceof ODataEnumTypeParser;
|
|
39
|
-
}
|
|
40
|
-
enum() {
|
|
41
|
-
if (!this.isEnumType())
|
|
42
|
-
throw new Error('Field are not EnumType');
|
|
43
|
-
return this.parser;
|
|
44
|
-
}
|
|
45
|
-
isStructuredType() {
|
|
46
|
-
return this.parser instanceof ODataStructuredTypeParser;
|
|
47
|
-
}
|
|
48
|
-
structured() {
|
|
49
|
-
if (!this.isStructuredType())
|
|
50
|
-
throw new Error('Field are not StrucuturedType');
|
|
51
|
-
return this.parser;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
export class ODataCallableParser {
|
|
55
|
-
constructor(config, namespace, alias) {
|
|
56
|
-
this.name = config.name;
|
|
57
|
-
this.namespace = namespace;
|
|
58
|
-
this.alias = alias;
|
|
59
|
-
this.return = config.return;
|
|
60
|
-
this.parser = NONE_PARSER;
|
|
61
|
-
this.parameters = Object.entries(config.parameters || []).map(([name, p]) => new ODataParameterParser(name, p));
|
|
62
|
-
}
|
|
63
|
-
isTypeOf(type) {
|
|
64
|
-
var names = [`${this.namespace}.${this.name}`];
|
|
65
|
-
if (this.alias)
|
|
66
|
-
names.push(`${this.alias}.${this.name}`);
|
|
67
|
-
return names.indexOf(type) !== -1;
|
|
68
|
-
}
|
|
69
|
-
// Deserialize
|
|
70
|
-
deserialize(value, options) {
|
|
71
|
-
const parserOptions = options !== undefined
|
|
72
|
-
? new ODataParserOptions(options)
|
|
73
|
-
: this.optionsHelper;
|
|
74
|
-
return this.parser.deserialize(value, parserOptions);
|
|
75
|
-
}
|
|
76
|
-
// Serialize
|
|
77
|
-
serialize(params, options) {
|
|
78
|
-
const parserOptions = options !== undefined
|
|
79
|
-
? new ODataParserOptions(options)
|
|
80
|
-
: this.optionsHelper;
|
|
81
|
-
return Object.assign({}, this.parameters
|
|
82
|
-
.filter((p) => p.name !== CALLABLE_BINDING_PARAMETER)
|
|
83
|
-
.filter((p) => p.name in params && params[p.name] !== undefined)
|
|
84
|
-
.reduce((acc, p) => Object.assign(acc, {
|
|
85
|
-
[p.name]: p.serialize(params[p.name], parserOptions),
|
|
86
|
-
}), {}));
|
|
87
|
-
}
|
|
88
|
-
//Encode
|
|
89
|
-
encode(params, options) {
|
|
90
|
-
const parserOptions = options !== undefined
|
|
91
|
-
? new ODataParserOptions(options)
|
|
92
|
-
: this.optionsHelper;
|
|
93
|
-
return Object.assign({}, this.parameters
|
|
94
|
-
.filter((p) => p.name !== CALLABLE_BINDING_PARAMETER)
|
|
95
|
-
.filter((p) => p.name in params && params[p.name] !== undefined)
|
|
96
|
-
.reduce((acc, p) => Object.assign(acc, {
|
|
97
|
-
[p.name]: p.encode(params[p.name], parserOptions),
|
|
98
|
-
}), {}));
|
|
99
|
-
}
|
|
100
|
-
configure({ parserForType, options, }) {
|
|
101
|
-
this.optionsHelper = options;
|
|
102
|
-
if (this.return)
|
|
103
|
-
this.parser = parserForType(this.return.type) || NONE_PARSER;
|
|
104
|
-
this.parameters.forEach((p) => p.configure({ parserForType, options }));
|
|
105
|
-
}
|
|
106
|
-
binding() {
|
|
107
|
-
return this.parameters.find((p) => p.name === CALLABLE_BINDING_PARAMETER);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcGFyc2Vycy9jYWxsYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFLTCxXQUFXLEdBR1osTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTlELE1BQU0sT0FBTyxvQkFBb0I7SUFRL0IsWUFBWSxJQUFZLEVBQUUsU0FBb0I7UUFDNUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBUSxFQUFFLE9BQWlCO1FBQ25DLE1BQU0sYUFBYSxHQUNqQixPQUFPLEtBQUssU0FBUztZQUNuQixDQUFDLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7WUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN6QixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFD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QUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSywwQkFBMEIsQ0FBQyxDQUFDO0lBQzVFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENBTExBQkxFX0JJTkRJTkdfUEFSQU1FVEVSIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9EYXRhUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4uL29wdGlvbnMnO1xuaW1wb3J0IHtcbiAgUGFyc2VyLFxuICBQYXJhbWV0ZXIsXG4gIENhbGxhYmxlQ29uZmlnLFxuICBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyxcbiAgTk9ORV9QQVJTRVIsXG4gIE9wdGlvbnNIZWxwZXIsXG4gIE9wdGlvbnMsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE9EYXRhRW51bVR5cGVQYXJzZXIgfSBmcm9tICcuL2VudW0tdHlwZSc7XG5pbXBvcnQgeyBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyIH0gZnJvbSAnLi9zdHJ1Y3R1cmVkLXR5cGUnO1xuXG5leHBvcnQgY2xhc3MgT0RhdGFQYXJhbWV0ZXJQYXJzZXI8VD4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgcHJpdmF0ZSBwYXJzZXI6IFBhcnNlcjxUPjtcbiAgY29sbGVjdGlvbj86IGJvb2xlYW47XG4gIG51bGxhYmxlPzogYm9vbGVhbjtcbiAgb3B0aW9uc0hlbHBlcj86IE9wdGlvbnNIZWxwZXI7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwYXJhbWV0ZXI6IFBhcmFtZXRlcikge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy50eXBlID0gcGFyYW1ldGVyLnR5cGU7XG4gICAgdGhpcy5wYXJzZXIgPSBOT05FX1BBUlNFUjtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHBhcmFtZXRlcik7XG4gIH1cblxuICBzZXJpYWxpemUodmFsdWU6IFQsIG9wdGlvbnM/OiBPcHRpb25zKTogYW55IHtcbiAgICBjb25zdCBwYXJzZXJPcHRpb25zID1cbiAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IG5ldyBPRGF0YVBhcnNlck9wdGlvbnMob3B0aW9ucylcbiAgICAgICAgOiB0aGlzLm9wdGlvbnNIZWxwZXI7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gdGhpcy5wYXJzZXIuc2VyaWFsaXplKHYsIHBhcnNlck9wdGlvbnMpKVxuICAgICAgOiB0aGlzLnBhcnNlci5zZXJpYWxpemUodmFsdWUsIHBhcnNlck9wdGlvbnMpO1xuICB9XG5cbiAgLy9FbmNvZGVcbiAgZW5jb2RlKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBPcHRpb25zKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJzZXJPcHRpb25zID1cbiAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IG5ldyBPRGF0YVBhcnNlck9wdGlvbnMob3B0aW9ucylcbiAgICAgICAgOiB0aGlzLm9wdGlvbnNIZWxwZXI7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gdGhpcy5wYXJzZXIuZW5jb2RlKHYsIHBhcnNlck9wdGlvbnMpKVxuICAgICAgOiB0aGlzLnBhcnNlci5lbmNvZGUodmFsdWUsIHBhcnNlck9wdGlvbnMpO1xuICB9XG5cbiAgY29uZmlndXJlKHtcbiAgICBwYXJzZXJGb3JUeXBlLFxuICAgIG9wdGlvbnMsXG4gIH06IHtcbiAgICBwYXJzZXJGb3JUeXBlOiAodHlwZTogc3RyaW5nKSA9PiBQYXJzZXI8YW55PjtcbiAgICBvcHRpb25zOiBPcHRpb25zSGVscGVyO1xuICB9KSB7XG4gICAgdGhpcy5vcHRpb25zSGVscGVyID0gb3B0aW9ucztcbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlckZvclR5cGUodGhpcy50eXBlKTtcbiAgfVxuXG4gIGlzRWRtVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlLnN0YXJ0c1dpdGgoJ0VkbS4nKTtcbiAgfVxuXG4gIGlzRW51bVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyIGluc3RhbmNlb2YgT0RhdGFFbnVtVHlwZVBhcnNlcjtcbiAgfVxuXG4gIGVudW0oKSB7XG4gICAgaWYgKCF0aGlzLmlzRW51bVR5cGUoKSkgdGhyb3cgbmV3IEVycm9yKCdGaWVsZCBhcmUgbm90IEVudW1UeXBlJyk7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyIGFzIE9EYXRhRW51bVR5cGVQYXJzZXI8VD47XG4gIH1cblxuICBpc1N0cnVjdHVyZWRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlciBpbnN0YW5jZW9mIE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI7XG4gIH1cblxuICBzdHJ1Y3R1cmVkKCkge1xuICAgIGlmICghdGhpcy5pc1N0cnVjdHVyZWRUeXBlKCkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpZWxkIGFyZSBub3QgU3RydWN1dHVyZWRUeXBlJyk7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyIGFzIE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI8VD47XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhQ2FsbGFibGVQYXJzZXI8Uj4gaW1wbGVtZW50cyBQYXJzZXI8Uj4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBhbGlhcz86IHN0cmluZztcbiAgcmV0dXJuPzogeyB0eXBlOiBzdHJpbmc7IGNhbGxhYmxlPzogYm9vbGVhbiB9O1xuICBwYXJzZXI6IFBhcnNlcjxhbnk+O1xuICBwYXJhbWV0ZXJzOiBPRGF0YVBhcmFtZXRlclBhcnNlcjxhbnk+W107XG4gIG9wdGlvbnNIZWxwZXI/OiBPcHRpb25zSGVscGVyO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQ2FsbGFibGVDb25maWcsIG5hbWVzcGFjZTogc3RyaW5nLCBhbGlhcz86IHN0cmluZykge1xuICAgIHRoaXMubmFtZSA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMuYWxpYXMgPSBhbGlhcztcbiAgICB0aGlzLnJldHVybiA9IGNvbmZpZy5yZXR1cm47XG4gICAgdGhpcy5wYXJzZXIgPSBOT05FX1BBUlNFUjtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBPYmplY3QuZW50cmllcyhjb25maWcucGFyYW1ldGVycyB8fCBbXSkubWFwKFxuICAgICAgKFtuYW1lLCBwXSkgPT4gbmV3IE9EYXRhUGFyYW1ldGVyUGFyc2VyKG5hbWUsIHAgYXMgUGFyYW1ldGVyKVxuICAgICk7XG4gIH1cblxuICBpc1R5cGVPZih0eXBlOiBzdHJpbmcpIHtcbiAgICB2YXIgbmFtZXMgPSBbYCR7dGhpcy5uYW1lc3BhY2V9LiR7dGhpcy5uYW1lfWBdO1xuICAgIGlmICh0aGlzLmFsaWFzKSBuYW1lcy5wdXNoKGAke3RoaXMuYWxpYXN9LiR7dGhpcy5uYW1lfWApO1xuICAgIHJldHVybiBuYW1lcy5pbmRleE9mKHR5cGUpICE9PSAtMTtcbiAgfVxuXG4gIC8vIERlc2VyaWFsaXplXG4gIGRlc2VyaWFsaXplKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBPcHRpb25zKTogUiB7XG4gICAgY29uc3QgcGFyc2VyT3B0aW9ucyA9XG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBuZXcgT0RhdGFQYXJzZXJPcHRpb25zKG9wdGlvbnMpXG4gICAgICAgIDogdGhpcy5vcHRpb25zSGVscGVyO1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5kZXNlcmlhbGl6ZSh2YWx1ZSwgcGFyc2VyT3B0aW9ucyk7XG4gIH1cblxuICAvLyBTZXJpYWxpemVcbiAgc2VyaWFsaXplKHBhcmFtczogYW55LCBvcHRpb25zPzogT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgcGFyc2VyT3B0aW9ucyA9XG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBuZXcgT0RhdGFQYXJzZXJPcHRpb25zKG9wdGlvbnMpXG4gICAgICAgIDogdGhpcy5vcHRpb25zSGVscGVyO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICB0aGlzLnBhcmFtZXRlcnNcbiAgICAgICAgLmZpbHRlcigocCkgPT4gcC5uYW1lICE9PSBDQUxMQUJMRV9CSU5ESU5HX1BBUkFNRVRFUilcbiAgICAgICAgLmZpbHRlcigocCkgPT4gcC5uYW1lIGluIHBhcmFtcyAmJiBwYXJhbXNbcC5uYW1lXSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChhY2MsIHApID0+XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGFjYywge1xuICAgICAgICAgICAgICBbcC5uYW1lXTogcC5zZXJpYWxpemUocGFyYW1zW3AubmFtZV0sIHBhcnNlck9wdGlvbnMpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAge31cbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvL0VuY29kZVxuICBlbmNvZGUocGFyYW1zOiBhbnksIG9wdGlvbnM/OiBPcHRpb25zKTogYW55IHtcbiAgICBjb25zdCBwYXJzZXJPcHRpb25zID1cbiAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IG5ldyBPRGF0YVBhcnNlck9wdGlvbnMob3B0aW9ucylcbiAgICAgICAgOiB0aGlzLm9wdGlvbnNIZWxwZXI7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIHRoaXMucGFyYW1ldGVyc1xuICAgICAgICAuZmlsdGVyKChwKSA9PiBwLm5hbWUgIT09IENBTExBQkxFX0JJTkRJTkdfUEFSQU1FVEVSKVxuICAgICAgICAuZmlsdGVyKChwKSA9PiBwLm5hbWUgaW4gcGFyYW1zICYmIHBhcmFtc1twLm5hbWVdICE9PSB1bmRlZmluZWQpXG4gICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgcCkgPT5cbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYWNjLCB7XG4gICAgICAgICAgICAgIFtwLm5hbWVdOiBwLmVuY29kZShwYXJhbXNbcC5uYW1lXSwgcGFyc2VyT3B0aW9ucyksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB7fVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGNvbmZpZ3VyZSh7XG4gICAgcGFyc2VyRm9yVHlwZSxcbiAgICBvcHRpb25zLFxuICB9OiB7XG4gICAgcGFyc2VyRm9yVHlwZTogKHR5cGU6IHN0cmluZykgPT4gUGFyc2VyPGFueT47XG4gICAgb3B0aW9uczogT3B0aW9uc0hlbHBlcjtcbiAgfSkge1xuICAgIHRoaXMub3B0aW9uc0hlbHBlciA9IG9wdGlvbnM7XG4gICAgaWYgKHRoaXMucmV0dXJuKVxuICAgICAgdGhpcy5wYXJzZXIgPSBwYXJzZXJGb3JUeXBlKHRoaXMucmV0dXJuLnR5cGUpIHx8IE5PTkVfUEFSU0VSO1xuICAgIHRoaXMucGFyYW1ldGVycy5mb3JFYWNoKChwKSA9PiBwLmNvbmZpZ3VyZSh7IHBhcnNlckZvclR5cGUsIG9wdGlvbnMgfSkpO1xuICB9XG5cbiAgYmluZGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gQ0FMTEFCTEVfQklORElOR19QQVJBTUVURVIpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
import { binary, duration, raw } from '../resources/builder';
|
|
2
|
-
//https://github.com/niklasvh/base64-arraybuffer
|
|
3
|
-
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
4
|
-
// Use a lookup table to find the index.
|
|
5
|
-
const lookup = new Uint8Array(256);
|
|
6
|
-
for (var i = 0; i < chars.length; i++) {
|
|
7
|
-
lookup[chars.charCodeAt(i)] = i;
|
|
8
|
-
}
|
|
9
|
-
export const EDM_PARSERS = {
|
|
10
|
-
'Edm.Guid': {
|
|
11
|
-
deserialize(value, options) {
|
|
12
|
-
return value;
|
|
13
|
-
},
|
|
14
|
-
serialize(value, options) {
|
|
15
|
-
return value;
|
|
16
|
-
},
|
|
17
|
-
encode(value, options) {
|
|
18
|
-
return Array.isArray(value) ? value.map((v) => raw(v)) : raw(value);
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
'Edm.Date': {
|
|
22
|
-
deserialize(value, options) {
|
|
23
|
-
//TODO: Check valid input for date
|
|
24
|
-
const _deserialize = (v) => new Date(`${v}T00:00:00.000Z`);
|
|
25
|
-
return Array.isArray(value)
|
|
26
|
-
? value.map(_deserialize)
|
|
27
|
-
: _deserialize(value);
|
|
28
|
-
},
|
|
29
|
-
serialize(value, options) {
|
|
30
|
-
const _serialize = (v) => v.toISOString().substring(0, 10);
|
|
31
|
-
return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
|
|
32
|
-
},
|
|
33
|
-
encode(value, options) {
|
|
34
|
-
const _encode = (v) => v.toISOString().substring(0, 10);
|
|
35
|
-
return Array.isArray(value)
|
|
36
|
-
? value.map((v) => raw(_encode(v)))
|
|
37
|
-
: raw(_encode(value));
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
'Edm.TimeOfDay': {
|
|
41
|
-
deserialize(value, options) {
|
|
42
|
-
//TODO: Check valid input for time of day
|
|
43
|
-
const _deserialize = (v) => new Date(`1970-01-01T${v}Z`);
|
|
44
|
-
return Array.isArray(value)
|
|
45
|
-
? value.map(_deserialize)
|
|
46
|
-
: _deserialize(value);
|
|
47
|
-
},
|
|
48
|
-
serialize(value, options) {
|
|
49
|
-
const _serialize = (v) => v.toISOString().substring(11, 23);
|
|
50
|
-
return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
|
|
51
|
-
},
|
|
52
|
-
encode(value, options) {
|
|
53
|
-
const _encode = (v) => v.toISOString().substring(11, 23);
|
|
54
|
-
return Array.isArray(value)
|
|
55
|
-
? value.map((v) => raw(_encode(v)))
|
|
56
|
-
: raw(_encode(value));
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
'Edm.DateTimeOffset': {
|
|
60
|
-
deserialize(value, options) {
|
|
61
|
-
const _deserialize = (v) => new Date(v);
|
|
62
|
-
return Array.isArray(value)
|
|
63
|
-
? value.map(_deserialize)
|
|
64
|
-
: _deserialize(value);
|
|
65
|
-
},
|
|
66
|
-
serialize(value, options) {
|
|
67
|
-
const _serialize = (v) => v.toISOString();
|
|
68
|
-
return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
|
|
69
|
-
},
|
|
70
|
-
encode(value, options) {
|
|
71
|
-
const _encode = (v) => v.toISOString();
|
|
72
|
-
return Array.isArray(value)
|
|
73
|
-
? value.map((v) => raw(_encode(v)))
|
|
74
|
-
: raw(_encode(value));
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
'Edm.Duration': {
|
|
78
|
-
deserialize(value, options) {
|
|
79
|
-
const _deserialize = (v) => {
|
|
80
|
-
const matches = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/.exec(v);
|
|
81
|
-
if (!matches || value.length < 3) {
|
|
82
|
-
throw new TypeError(`duration invalid: "${value}". Must be a ISO 8601 duration. See https://en.wikipedia.org/wiki/ISO_8601#Durations`);
|
|
83
|
-
}
|
|
84
|
-
let duration = {};
|
|
85
|
-
duration.sign = matches[1] === '-' ? -1 : 1;
|
|
86
|
-
return [
|
|
87
|
-
'years',
|
|
88
|
-
'months',
|
|
89
|
-
'weeks',
|
|
90
|
-
'days',
|
|
91
|
-
'hours',
|
|
92
|
-
'minutes',
|
|
93
|
-
'seconds',
|
|
94
|
-
].reduce((acc, name, index) => {
|
|
95
|
-
const v = parseFloat(matches[index + 2]);
|
|
96
|
-
if (!Number.isNaN(v))
|
|
97
|
-
acc[name] = v;
|
|
98
|
-
return acc;
|
|
99
|
-
}, duration);
|
|
100
|
-
};
|
|
101
|
-
return Array.isArray(value)
|
|
102
|
-
? value.map(_deserialize)
|
|
103
|
-
: _deserialize(value);
|
|
104
|
-
},
|
|
105
|
-
serialize(value, options) {
|
|
106
|
-
const _serialize = (v) => [
|
|
107
|
-
v.sign === -1 ? '-' : '',
|
|
108
|
-
'P',
|
|
109
|
-
v.years ? v.years + 'Y' : '',
|
|
110
|
-
v.months ? v.months + 'M' : '',
|
|
111
|
-
v.weeks ? v.weeks + 'W' : '',
|
|
112
|
-
v.days ? v.days + 'D' : '',
|
|
113
|
-
'T',
|
|
114
|
-
v.hours ? v.hours + 'H' : '',
|
|
115
|
-
v.minutes ? v.minutes + 'M' : '',
|
|
116
|
-
v.seconds ? v.seconds + 'S' : '',
|
|
117
|
-
].join('');
|
|
118
|
-
return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
|
|
119
|
-
},
|
|
120
|
-
encode(value, options) {
|
|
121
|
-
const _encode = (v) => [
|
|
122
|
-
v.sign === -1 ? '-' : '',
|
|
123
|
-
'P',
|
|
124
|
-
v.years ? v.years + 'Y' : '',
|
|
125
|
-
v.months ? v.months + 'M' : '',
|
|
126
|
-
v.weeks ? v.weeks + 'W' : '',
|
|
127
|
-
v.days ? v.days + 'D' : '',
|
|
128
|
-
'T',
|
|
129
|
-
v.hours ? v.hours + 'H' : '',
|
|
130
|
-
v.minutes ? v.minutes + 'M' : '',
|
|
131
|
-
v.seconds ? v.seconds + 'S' : '',
|
|
132
|
-
].join('');
|
|
133
|
-
return Array.isArray(value)
|
|
134
|
-
? value.map((v) => duration(_encode(v)))
|
|
135
|
-
: duration(_encode(value));
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
'Edm.Decimal': {
|
|
139
|
-
deserialize(value, options) {
|
|
140
|
-
const _deserialize = (v) => {
|
|
141
|
-
if (typeof v === 'string' && options.ieee754Compatible) {
|
|
142
|
-
return parseFloat(v);
|
|
143
|
-
}
|
|
144
|
-
return v;
|
|
145
|
-
};
|
|
146
|
-
return Array.isArray(value)
|
|
147
|
-
? value.map(_deserialize)
|
|
148
|
-
: _deserialize(value);
|
|
149
|
-
},
|
|
150
|
-
serialize(value, options) {
|
|
151
|
-
const _serialize = (v) => {
|
|
152
|
-
if (options.ieee754Compatible) {
|
|
153
|
-
return parseFloat(v.toPrecision(options.field.precision)).toFixed(options.field.scale);
|
|
154
|
-
}
|
|
155
|
-
return v;
|
|
156
|
-
};
|
|
157
|
-
return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
|
|
158
|
-
},
|
|
159
|
-
encode(value, options) {
|
|
160
|
-
const _encode = (v) => {
|
|
161
|
-
if (options.ieee754Compatible) {
|
|
162
|
-
return parseFloat(v.toPrecision(options.field.precision)).toFixed(options.field.scale);
|
|
163
|
-
}
|
|
164
|
-
return v;
|
|
165
|
-
};
|
|
166
|
-
return Array.isArray(value)
|
|
167
|
-
? value.map((v) => raw(`${_encode(v)}`))
|
|
168
|
-
: raw(`${_encode(value)}`);
|
|
169
|
-
},
|
|
170
|
-
},
|
|
171
|
-
'Edm.Double': {
|
|
172
|
-
deserialize(value, options) {
|
|
173
|
-
const _deserialize = (v) => v === 'INF' ? Infinity : v;
|
|
174
|
-
return Array.isArray(value)
|
|
175
|
-
? value.map(_deserialize)
|
|
176
|
-
: _deserialize(value);
|
|
177
|
-
},
|
|
178
|
-
serialize(value, options) {
|
|
179
|
-
const _serialize = (v) => (v === Infinity ? 'INF' : v);
|
|
180
|
-
return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
|
|
181
|
-
},
|
|
182
|
-
encode(value, options) {
|
|
183
|
-
const _encode = (v) => (v === Infinity ? 'INF' : v);
|
|
184
|
-
return Array.isArray(value)
|
|
185
|
-
? value.map((v) => raw(`${_encode(v)}`))
|
|
186
|
-
: raw(`${_encode(value)}`);
|
|
187
|
-
},
|
|
188
|
-
},
|
|
189
|
-
'Edm.Single': {
|
|
190
|
-
deserialize(value, options) {
|
|
191
|
-
const _deserialize = (v) => v === 'INF' ? Infinity : v;
|
|
192
|
-
return Array.isArray(value)
|
|
193
|
-
? value.map(_deserialize)
|
|
194
|
-
: _deserialize(value);
|
|
195
|
-
},
|
|
196
|
-
serialize(value, options) {
|
|
197
|
-
const _serialize = (v) => (v === Infinity ? 'INF' : v);
|
|
198
|
-
return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
|
|
199
|
-
},
|
|
200
|
-
encode(value, options) {
|
|
201
|
-
const _encode = (v) => (v === Infinity ? 'INF' : v);
|
|
202
|
-
return Array.isArray(value)
|
|
203
|
-
? value.map((v) => raw(`${_encode(v)}`))
|
|
204
|
-
: raw(`${_encode(value)}`);
|
|
205
|
-
},
|
|
206
|
-
},
|
|
207
|
-
'Edm.Binary': {
|
|
208
|
-
deserialize(value, options) {
|
|
209
|
-
const _deserialize = (v) => {
|
|
210
|
-
var bufferLength = v.length * 0.75, len = v.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
|
|
211
|
-
if (v[v.length - 1] === '=') {
|
|
212
|
-
bufferLength--;
|
|
213
|
-
if (v[v.length - 2] === '=') {
|
|
214
|
-
bufferLength--;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);
|
|
218
|
-
for (i = 0; i < len; i += 4) {
|
|
219
|
-
encoded1 = lookup[v.charCodeAt(i)];
|
|
220
|
-
encoded2 = lookup[v.charCodeAt(i + 1)];
|
|
221
|
-
encoded3 = lookup[v.charCodeAt(i + 2)];
|
|
222
|
-
encoded4 = lookup[v.charCodeAt(i + 3)];
|
|
223
|
-
bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
|
|
224
|
-
bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
|
|
225
|
-
bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
|
|
226
|
-
}
|
|
227
|
-
return arraybuffer;
|
|
228
|
-
};
|
|
229
|
-
return Array.isArray(value)
|
|
230
|
-
? value.map(_deserialize)
|
|
231
|
-
: _deserialize(value);
|
|
232
|
-
},
|
|
233
|
-
serialize(value, options) {
|
|
234
|
-
const _serialize = (v) => {
|
|
235
|
-
var bytes = new Uint8Array(v), i, len = bytes.length, base64 = '';
|
|
236
|
-
for (i = 0; i < len; i += 3) {
|
|
237
|
-
base64 += chars[bytes[i] >> 2];
|
|
238
|
-
base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
|
|
239
|
-
base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
|
|
240
|
-
base64 += chars[bytes[i + 2] & 63];
|
|
241
|
-
}
|
|
242
|
-
if (len % 3 === 2) {
|
|
243
|
-
base64 = base64.substring(0, base64.length - 1) + '=';
|
|
244
|
-
}
|
|
245
|
-
else if (len % 3 === 1) {
|
|
246
|
-
base64 = base64.substring(0, base64.length - 2) + '==';
|
|
247
|
-
}
|
|
248
|
-
return base64;
|
|
249
|
-
};
|
|
250
|
-
return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
|
|
251
|
-
},
|
|
252
|
-
encode(value, options) {
|
|
253
|
-
const _encode = (v) => {
|
|
254
|
-
var bytes = new Uint8Array(v), i, len = bytes.length, base64 = '';
|
|
255
|
-
for (i = 0; i < len; i += 3) {
|
|
256
|
-
base64 += chars[bytes[i] >> 2];
|
|
257
|
-
base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
|
|
258
|
-
base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
|
|
259
|
-
base64 += chars[bytes[i + 2] & 63];
|
|
260
|
-
}
|
|
261
|
-
if (len % 3 === 2) {
|
|
262
|
-
base64 = base64.substring(0, base64.length - 1) + '=';
|
|
263
|
-
}
|
|
264
|
-
else if (len % 3 === 1) {
|
|
265
|
-
base64 = base64.substring(0, base64.length - 2) + '==';
|
|
266
|
-
}
|
|
267
|
-
return base64;
|
|
268
|
-
};
|
|
269
|
-
return Array.isArray(value)
|
|
270
|
-
? value.map((v) => binary(_encode(v)))
|
|
271
|
-
: binary(_encode(value));
|
|
272
|
-
},
|
|
273
|
-
},
|
|
274
|
-
};
|
|
275
|
-
/*
|
|
276
|
-
Edm.Binary Binary data
|
|
277
|
-
Edm.Boolean Binary-valued logic
|
|
278
|
-
Edm.Byte Unsigned 8-bit integer
|
|
279
|
-
Edm.Date Date without a time-zone offset
|
|
280
|
-
Edm.DateTimeOffset Date and time with a time-zone offset, no leap seconds
|
|
281
|
-
Edm.Decimal Numeric values with fixed precision and scale
|
|
282
|
-
Edm.Double IEEE 754 binary64 floating-point number (15-17 decimal digits)
|
|
283
|
-
Edm.Duration Signed duration in days, hours, minutes, and (sub)seconds
|
|
284
|
-
Edm.Guid 16-byte (128-bit) unique identifier
|
|
285
|
-
Edm.Int16 Signed 16-bit integer
|
|
286
|
-
Edm.Int32 Signed 32-bit integer
|
|
287
|
-
Edm.Int64 Signed 64-bit integer
|
|
288
|
-
Edm.SByte Signed 8-bit integer
|
|
289
|
-
Edm.Single IEEE 754 binary32 floating-point number (6-9 decimal digits)
|
|
290
|
-
Edm.Stream Binary data stream
|
|
291
|
-
Edm.String Sequence of UTF-8 characters
|
|
292
|
-
Edm.TimeOfDay Clock time 00:00-23:59:59.999999999999
|
|
293
|
-
Edm.Geography Abstract base type for all Geography types
|
|
294
|
-
Edm.GeographyPoint A point in a round-earth coordinate system
|
|
295
|
-
Edm.GeographyLineString Line string in a round-earth coordinate system
|
|
296
|
-
Edm.GeographyPolygon Polygon in a round-earth coordinate system
|
|
297
|
-
Edm.GeographyMultiPoint Collection of points in a round-earth coordinate system
|
|
298
|
-
Edm.GeographyMultiLineString Collection of line strings in a round-earth coordinate system
|
|
299
|
-
Edm.GeographyMultiPolygon Collection of polygons in a round-earth coordinate system
|
|
300
|
-
Edm.GeographyCollection Collection of arbitrary Geography values
|
|
301
|
-
Edm.Geometry Abstract base type for all Geometry types
|
|
302
|
-
Edm.GeometryPoint Point in a flat-earth coordinate system
|
|
303
|
-
Edm.GeometryLineString Line string in a flat-earth coordinate system
|
|
304
|
-
Edm.GeometryPolygon Polygon in a flat-earth coordinate system
|
|
305
|
-
Edm.GeometryMultiPoint Collection of points in a flat-earth coordinate system
|
|
306
|
-
Edm.GeometryMultiLineString Collection of line strings in a flat-earth coordinate system
|
|
307
|
-
Edm.GeometryMultiPolygon Collection of polygons in a flat-earth coordinate system
|
|
308
|
-
Edm.GeometryCollection Collection of arbitrary Geometry values
|
|
309
|
-
*/
|
|
310
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3BhcnNlcnMvZWRtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBZ0I3RCxnREFBZ0Q7QUFDaEQsTUFBTSxLQUFLLEdBQ1Qsa0VBQWtFLENBQUM7QUFFckUsd0NBQXdDO0FBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ2pDO0FBRUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFvQztJQUMxRCxVQUFVLEVBQTZCO1FBQ3JDLFdBQVcsQ0FDVCxLQUF3QixFQUN4QixPQUFtQztZQUVuQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxTQUFTLENBQ1AsS0FBd0IsRUFDeEIsT0FBbUM7WUFFbkMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQXdCLEVBQUUsT0FBbUM7WUFDbEUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLENBQUM7S0FDRjtJQUNELFVBQVUsRUFBeUI7UUFDakMsV0FBVyxDQUNULEtBQXdCLEVB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Ozs7Ozs7Ozs7Ozs7RUFrQ0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiaW5hcnksIGR1cmF0aW9uLCByYXcgfSBmcm9tICcuLi9yZXNvdXJjZXMvYnVpbGRlcic7XG5pbXBvcnQgeyBQYXJzZXIsIFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vL2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9uc1xuXG5leHBvcnQgdHlwZSBEdXJhdGlvbiA9IHtcbiAgc2lnbj86IDEgfCAtMTtcbiAgeWVhcnM/OiBudW1iZXI7XG4gIG1vbnRocz86IG51bWJlcjtcbiAgd2Vla3M/OiBudW1iZXI7XG4gIGRheXM/OiBudW1iZXI7XG4gIGhvdXJzPzogbnVtYmVyO1xuICBtaW51dGVzPzogbnVtYmVyO1xuICBzZWNvbmRzPzogbnVtYmVyO1xufTtcblxuLy9odHRwczovL2dpdGh1Yi5jb20vbmlrbGFzdmgvYmFzZTY0LWFycmF5YnVmZmVyXG5jb25zdCBjaGFycyA9XG4gICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJztcblxuLy8gVXNlIGEgbG9va3VwIHRhYmxlIHRvIGZpbmQgdGhlIGluZGV4LlxuY29uc3QgbG9va3VwID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTtcbmZvciAodmFyIGkgPSAwOyBpIDwgY2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgbG9va3VwW2NoYXJzLmNoYXJDb2RlQXQoaSldID0gaTtcbn1cblxuZXhwb3J0IGNvbnN0IEVETV9QQVJTRVJTOiB7IFt0eXBlOiBzdHJpbmddOiBQYXJzZXI8YW55PiB9ID0ge1xuICAnRWRtLkd1aWQnOiA8UGFyc2VyPHN0cmluZyB8IHN0cmluZ1tdPj57XG4gICAgZGVzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgICBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9uc1xuICAgICk6IHN0cmluZyB8IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIHNlcmlhbGl6ZShcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgZW5jb2RlKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSwgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnMpOiBhbnkge1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKCh2KSA9PiByYXcodikpIDogcmF3KHZhbHVlKTtcbiAgICB9LFxuICB9LFxuICAnRWRtLkRhdGUnOiA8UGFyc2VyPERhdGUgfCBEYXRlW10+PntcbiAgICBkZXNlcmlhbGl6ZShcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogRGF0ZSB8IERhdGVbXSB7XG4gICAgICAvL1RPRE86IENoZWNrIHZhbGlkIGlucHV0IGZvciBkYXRlXG4gICAgICBjb25zdCBfZGVzZXJpYWxpemUgPSAodjogc3RyaW5nKSA9PiBuZXcgRGF0ZShgJHt2fVQwMDowMDowMC4wMDBaYCk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoX2Rlc2VyaWFsaXplKVxuICAgICAgICA6IF9kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogRGF0ZSB8IERhdGVbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgICAgY29uc3QgX3NlcmlhbGl6ZSA9ICh2OiBEYXRlKSA9PiB2LnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDEwKTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLm1hcChfc2VyaWFsaXplKSA6IF9zZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgZW5jb2RlKHZhbHVlOiBEYXRlIHwgRGF0ZVtdLCBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyk6IGFueSB7XG4gICAgICBjb25zdCBfZW5jb2RlID0gKHY6IERhdGUpID0+IHYudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTApO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKCh2KSA9PiByYXcoX2VuY29kZSh2KSkpXG4gICAgICAgIDogcmF3KF9lbmNvZGUodmFsdWUpKTtcbiAgICB9LFxuICB9LFxuICAnRWRtLlRpbWVPZkRheSc6IDxQYXJzZXI8RGF0ZSB8IERhdGVbXT4+e1xuICAgIGRlc2VyaWFsaXplKFxuICAgICAgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgICAgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnNcbiAgICApOiBEYXRlIHwgRGF0ZVtdIHtcbiAgICAgIC8vVE9ETzogQ2hlY2sgdmFsaWQgaW5wdXQgZm9yIHRpbWUgb2YgZGF5XG4gICAgICBjb25zdCBfZGVzZXJpYWxpemUgPSAodjogc3RyaW5nKSA9PiBuZXcgRGF0ZShgMTk3MC0wMS0wMVQke3Z9WmApO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKF9kZXNlcmlhbGl6ZSlcbiAgICAgICAgOiBfZGVzZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgc2VyaWFsaXplKFxuICAgICAgdmFsdWU6IERhdGUgfCBEYXRlW10sXG4gICAgICBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9uc1xuICAgICk6IHN0cmluZyB8IHN0cmluZ1tdIHtcbiAgICAgIGNvbnN0IF9zZXJpYWxpemUgPSAodjogRGF0ZSkgPT4gdi50b0lTT1N0cmluZygpLnN1YnN0cmluZygxMSwgMjMpO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKF9zZXJpYWxpemUpIDogX3NlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBlbmNvZGUodmFsdWU6IERhdGUgfCBEYXRlW10sIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zKTogYW55IHtcbiAgICAgIGNvbnN0IF9lbmNvZGUgPSAodjogRGF0ZSkgPT4gdi50b0lTT1N0cmluZygpLnN1YnN0cmluZygxMSwgMjMpO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKCh2KSA9PiByYXcoX2VuY29kZSh2KSkpXG4gICAgICAgIDogcmF3KF9lbmNvZGUodmFsdWUpKTtcbiAgICB9LFxuICB9LFxuICAnRWRtLkRhdGVUaW1lT2Zmc2V0JzogPFBhcnNlcjxEYXRlPj57XG4gICAgZGVzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgICBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9uc1xuICAgICk6IERhdGUgfCBEYXRlW10ge1xuICAgICAgY29uc3QgX2Rlc2VyaWFsaXplID0gKHY6IHN0cmluZykgPT4gbmV3IERhdGUodik7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoX2Rlc2VyaWFsaXplKVxuICAgICAgICA6IF9kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogRGF0ZSB8IERhdGVbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgICAgY29uc3QgX3NlcmlhbGl6ZSA9ICh2OiBEYXRlKSA9PiB2LnRvSVNPU3RyaW5nKCk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5tYXAoX3NlcmlhbGl6ZSkgOiBfc2VyaWFsaXplKHZhbHVlKTtcbiAgICB9LFxuICAgIGVuY29kZSh2YWx1ZTogRGF0ZSB8IERhdGVbXSwgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnMpOiBhbnkge1xuICAgICAgY29uc3QgX2VuY29kZSA9ICh2OiBEYXRlKSA9PiB2LnRvSVNPU3RyaW5nKCk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IHJhdyhfZW5jb2RlKHYpKSlcbiAgICAgICAgOiByYXcoX2VuY29kZSh2YWx1ZSkpO1xuICAgIH0sXG4gIH0sXG4gICdFZG0uRHVyYXRpb24nOiA8UGFyc2VyPER1cmF0aW9uPj57XG4gICAgZGVzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogc3RyaW5nLFxuICAgICAgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnNcbiAgICApOiBEdXJhdGlvbiB8IER1cmF0aW9uW10ge1xuICAgICAgY29uc3QgX2Rlc2VyaWFsaXplID0gKHY6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaGVzID1cbiAgICAgICAgICAvXigtfFxcKyk/UCg/OihbLStdP1swLTksLl0qKVkpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVcpPyg/OihbLStdP1swLTksLl0qKUQpPyg/OlQoPzooWy0rXT9bMC05LC5dKilIKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilTKT8pPyQvLmV4ZWMoXG4gICAgICAgICAgICB2XG4gICAgICAgICAgKTtcbiAgICAgICAgaWYgKCFtYXRjaGVzIHx8IHZhbHVlLmxlbmd0aCA8IDMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgYGR1cmF0aW9uIGludmFsaWQ6IFwiJHt2YWx1ZX1cIi4gTXVzdCBiZSBhIElTTyA4NjAxIGR1cmF0aW9uLiBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjRHVyYXRpb25zYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGR1cmF0aW9uOiBEdXJhdGlvbiA9IHt9O1xuICAgICAgICBkdXJhdGlvbi5zaWduID0gbWF0Y2hlc1sxXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICd5ZWFycycsXG4gICAgICAgICAgJ21vbnRocycsXG4gICAgICAgICAgJ3dlZWtzJyxcbiAgICAgICAgICAnZGF5cycsXG4gICAgICAgICAgJ2hvdXJzJyxcbiAgICAgICAgICAnbWludXRlcycsXG4gICAgICAgICAgJ3NlY29uZHMnLFxuICAgICAgICBdLnJlZHVjZSgoYWNjOiBhbnksIG5hbWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgdiA9IHBhcnNlRmxvYXQobWF0Y2hlc1tpbmRleCArIDJdKTtcbiAgICAgICAgICBpZiAoIU51bWJlci5pc05hTih2KSkgYWNjW25hbWVdID0gdjtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBkdXJhdGlvbikgYXMgRHVyYXRpb247XG4gICAgICB9O1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKF9kZXNlcmlhbGl6ZSlcbiAgICAgICAgOiBfZGVzZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgc2VyaWFsaXplKFxuICAgICAgdmFsdWU6IER1cmF0aW9uIHwgRHVyYXRpb25bXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgICAgY29uc3QgX3NlcmlhbGl6ZSA9ICh2OiBEdXJhdGlvbikgPT5cbiAgICAgICAgW1xuICAgICAgICAgIHYuc2lnbiA9PT0gLTEgPyAnLScgOiAnJyxcbiAgICAgICAgICAnUCcsXG4gICAgICAgICAgdi55ZWFycyA/IHYueWVhcnMgKyAnWScgOiAnJyxcbiAgICAgICAgICB2Lm1vbnRocyA/IHYubW9udGhzICsgJ00nIDogJycsXG4gICAgICAgICAgdi53ZWVrcyA/IHYud2Vla3MgKyAnVycgOiAnJyxcbiAgICAgICAgICB2LmRheXMgPyB2LmRheXMgKyAnRCcgOiAnJyxcbiAgICAgICAgICAnVCcsXG4gICAgICAgICAgdi5ob3VycyA/IHYuaG91cnMgKyAnSCcgOiAnJyxcbiAgICAgICAgICB2Lm1pbnV0ZXMgPyB2Lm1pbnV0ZXMgKyAnTScgOiAnJyxcbiAgICAgICAgICB2LnNlY29uZHMgPyB2LnNlY29uZHMgKyAnUycgOiAnJyxcbiAgICAgICAgXS5qb2luKCcnKTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLm1hcChfc2VyaWFsaXplKSA6IF9zZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgZW5jb2RlKFxuICAgICAgdmFsdWU6IER1cmF0aW9uIHwgRHVyYXRpb25bXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogYW55IHtcbiAgICAgIGNvbnN0IF9lbmNvZGUgPSAodjogRHVyYXRpb24pID0+XG4gICAgICAgIFtcbiAgICAgICAgICB2LnNpZ24gPT09IC0xID8gJy0nIDogJycsXG4gICAgICAgICAgJ1AnLFxuICAgICAgICAgIHYueWVhcnMgPyB2LnllYXJzICsgJ1knIDogJycsXG4gICAgICAgICAgdi5tb250aHMgPyB2Lm1vbnRocyArICdNJyA6ICcnLFxuICAgICAgICAgIHYud2Vla3MgPyB2LndlZWtzICsgJ1cnIDogJycsXG4gICAgICAgICAgdi5kYXlzID8gdi5kYXlzICsgJ0QnIDogJycsXG4gICAgICAgICAgJ1QnLFxuICAgICAgICAgIHYuaG91cnMgPyB2LmhvdXJzICsgJ0gnIDogJycsXG4gICAgICAgICAgdi5taW51dGVzID8gdi5taW51dGVzICsgJ00nIDogJycsXG4gICAgICAgICAgdi5zZWNvbmRzID8gdi5zZWNvbmRzICsgJ1MnIDogJycsXG4gICAgICAgIF0uam9pbignJyk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IGR1cmF0aW9uKF9lbmNvZGUodikpKVxuICAgICAgICA6IGR1cmF0aW9uKF9lbmNvZGUodmFsdWUpKTtcbiAgICB9LFxuICB9LFxuICAnRWRtLkRlY2ltYWwnOiA8UGFyc2VyPG51bWJlcj4+e1xuICAgIGRlc2VyaWFsaXplKFxuICAgICAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IChzdHJpbmcgfCBudW1iZXIpW10sXG4gICAgICBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9uc1xuICAgICk6IHN0cmluZyB8IG51bWJlciB8IChzdHJpbmcgfCBudW1iZXIpW10ge1xuICAgICAgY29uc3QgX2Rlc2VyaWFsaXplID0gKHY6IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIG9wdGlvbnMuaWVlZTc1NENvbXBhdGlibGUpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH07XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoX2Rlc2VyaWFsaXplKVxuICAgICAgICA6IF9kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogbnVtYmVyIHwgbnVtYmVyW10sXG4gICAgICBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9uc1xuICAgICk6IGFueSB7XG4gICAgICBjb25zdCBfc2VyaWFsaXplID0gKHY6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucy5pZWVlNzU0Q29tcGF0aWJsZSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHYudG9QcmVjaXNpb24ob3B0aW9ucy5maWVsZC5wcmVjaXNpb24pKS50b0ZpeGVkKFxuICAgICAgICAgICAgb3B0aW9ucy5maWVsZC5zY2FsZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKF9zZXJpYWxpemUpIDogX3NlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBlbmNvZGUodmFsdWU6IG51bWJlciB8IG51bWJlcltdLCBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyk6IGFueSB7XG4gICAgICBjb25zdCBfZW5jb2RlID0gKHY6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucy5pZWVlNzU0Q29tcGF0aWJsZSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHYudG9QcmVjaXNpb24ob3B0aW9ucy5maWVsZC5wcmVjaXNpb24pKS50b0ZpeGVkKFxuICAgICAgICAgICAgb3B0aW9ucy5maWVsZC5zY2FsZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKCh2KSA9PiByYXcoYCR7X2VuY29kZSh2KX1gKSlcbiAgICAgICAgOiByYXcoYCR7X2VuY29kZSh2YWx1ZSl9YCk7XG4gICAgfSxcbiAgfSxcbiAgJ0VkbS5Eb3VibGUnOiA8UGFyc2VyPG51bWJlcj4+e1xuICAgIGRlc2VyaWFsaXplKFxuICAgICAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IChzdHJpbmcgfCBudW1iZXIpW10sXG4gICAgICBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9uc1xuICAgICk6IG51bWJlciB8IG51bWJlcltdIHtcbiAgICAgIGNvbnN0IF9kZXNlcmlhbGl6ZSA9ICh2OiBzdHJpbmcgfCBudW1iZXIpID0+XG4gICAgICAgIHYgPT09ICdJTkYnID8gSW5maW5pdHkgOiAodiBhcyBudW1iZXIpO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKF9kZXNlcmlhbGl6ZSlcbiAgICAgICAgOiBfZGVzZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgc2VyaWFsaXplKFxuICAgICAgdmFsdWU6IG51bWJlciB8IG51bWJlcltdLFxuICAgICAgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnNcbiAgICApOiBzdHJpbmcgfCBudW1iZXIgfCAoc3RyaW5nIHwgbnVtYmVyKVtdIHtcbiAgICAgIGNvbnN0IF9zZXJpYWxpemUgPSAodjogbnVtYmVyKSA9PiAodiA9PT0gSW5maW5pdHkgPyAnSU5GJyA6IHYpO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKF9zZXJpYWxpemUpIDogX3NlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBlbmNvZGUodmFsdWU6IG51bWJlciB8IG51bWJlcltdLCBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyk6IGFueSB7XG4gICAgICBjb25zdCBfZW5jb2RlID0gKHY6IG51bWJlcikgPT4gKHYgPT09IEluZmluaXR5ID8gJ0lORicgOiB2KTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICA/IHZhbHVlLm1hcCgodikgPT4gcmF3KGAke19lbmNvZGUodil9YCkpXG4gICAgICAgIDogcmF3KGAke19lbmNvZGUodmFsdWUpfWApO1xuICAgIH0sXG4gIH0sXG4gICdFZG0uU2luZ2xlJzogPFBhcnNlcjxudW1iZXI+PntcbiAgICBkZXNlcmlhbGl6ZShcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICAgICAgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnNcbiAgICApOiBudW1iZXIgfCBudW1iZXJbXSB7XG4gICAgICBjb25zdCBfZGVzZXJpYWxpemUgPSAodjogc3RyaW5nIHwgbnVtYmVyKSA9PlxuICAgICAgICB2ID09PSAnSU5GJyA/IEluZmluaXR5IDogKHYgYXMgbnVtYmVyKTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICA/IHZhbHVlLm1hcChfZGVzZXJpYWxpemUpXG4gICAgICAgIDogX2Rlc2VyaWFsaXplKHZhbHVlKTtcbiAgICB9LFxuICAgIHNlcmlhbGl6ZShcbiAgICAgIHZhbHVlOiBudW1iZXIgfCBudW1iZXJbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogc3RyaW5nIHwgbnVtYmVyIHwgKHN0cmluZyB8IG51bWJlcilbXSB7XG4gICAgICBjb25zdCBfc2VyaWFsaXplID0gKHY6IG51bWJlcikgPT4gKHYgPT09IEluZmluaXR5ID8gJ0lORicgOiB2KTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLm1hcChfc2VyaWFsaXplKSA6IF9zZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgZW5jb2RlKHZhbHVlOiBudW1iZXIgfCBudW1iZXJbXSwgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnMpOiBhbnkge1xuICAgICAgY29uc3QgX2VuY29kZSA9ICh2OiBudW1iZXIpID0+ICh2ID09PSBJbmZpbml0eSA/ICdJTkYnIDogdik7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IHJhdyhgJHtfZW5jb2RlKHYpfWApKVxuICAgICAgICA6IHJhdyhgJHtfZW5jb2RlKHZhbHVlKX1gKTtcbiAgICB9LFxuICB9LFxuICAnRWRtLkJpbmFyeSc6IDxQYXJzZXI8QXJyYXlCdWZmZXI+PntcbiAgICBkZXNlcmlhbGl6ZShcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogQXJyYXlCdWZmZXIgfCBBcnJheUJ1ZmZlcltdIHtcbiAgICAgIGNvbnN0IF9kZXNlcmlhbGl6ZSA9ICh2OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdmFyIGJ1ZmZlckxlbmd0aCA9IHYubGVuZ3RoICogMC43NSxcbiAgICAgICAgICBsZW4gPSB2Lmxlbmd0aCxcbiAgICAgICAgICBpLFxuICAgICAgICAgIHAgPSAwLFxuICAgICAgICAgIGVuY29kZWQxLFxuICAgICAgICAgIGVuY29kZWQyLFxuICAgICAgICAgIGVuY29kZWQzLFxuICAgICAgICAgIGVuY29kZWQ0O1xuXG4gICAgICAgIGlmICh2W3YubGVuZ3RoIC0gMV0gPT09ICc9Jykge1xuICAgICAgICAgIGJ1ZmZlckxlbmd0aC0tO1xuICAgICAgICAgIGlmICh2W3YubGVuZ3RoIC0gMl0gPT09ICc9Jykge1xuICAgICAgICAgICAgYnVmZmVyTGVuZ3RoLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGFycmF5YnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ1ZmZlckxlbmd0aCksXG4gICAgICAgICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheShhcnJheWJ1ZmZlcik7XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgICAgICAgZW5jb2RlZDEgPSBsb29rdXBbdi5jaGFyQ29kZUF0KGkpXTtcbiAgICAgICAgICBlbmNvZGVkMiA9IGxvb2t1cFt2LmNoYXJDb2RlQXQoaSArIDEpXTtcbiAgICAgICAgICBlbmNvZGVkMyA9IGxvb2t1cFt2LmNoYXJDb2RlQXQoaSArIDIpXTtcbiAgICAgICAgICBlbmNvZGVkNCA9IGxvb2t1cFt2LmNoYXJDb2RlQXQoaSArIDMpXTtcblxuICAgICAgICAgIGJ5dGVzW3ArK10gPSAoZW5jb2RlZDEgPDwgMikgfCAoZW5jb2RlZDIgPj4gNCk7XG4gICAgICAgICAgYnl0ZXNbcCsrXSA9ICgoZW5jb2RlZDIgJiAxNSkgPDwgNCkgfCAoZW5jb2RlZDMgPj4gMik7XG4gICAgICAgICAgYnl0ZXNbcCsrXSA9ICgoZW5jb2RlZDMgJiAzKSA8PCA2KSB8IChlbmNvZGVkNCAmIDYzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhcnJheWJ1ZmZlcjtcbiAgICAgIH07XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoX2Rlc2VyaWFsaXplKVxuICAgICAgICA6IF9kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogQXJyYXlCdWZmZXIgfCBBcnJheUJ1ZmZlcltdLFxuICAgICAgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnNcbiAgICApOiBzdHJpbmcgfCBzdHJpbmdbXSB7XG4gICAgICBjb25zdCBfc2VyaWFsaXplID0gKHY6IEFycmF5QnVmZmVyKSA9PiB7XG4gICAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KHYpLFxuICAgICAgICAgIGksXG4gICAgICAgICAgbGVuID0gYnl0ZXMubGVuZ3RoLFxuICAgICAgICAgIGJhc2U2NCA9ICcnO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykge1xuICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpXSA+PiAyXTtcbiAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbKChieXRlc1tpXSAmIDMpIDw8IDQpIHwgKGJ5dGVzW2kgKyAxXSA+PiA0KV07XG4gICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07XG4gICAgICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kgKyAyXSAmIDYzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7XG4gICAgICAgICAgYmFzZTY0ID0gYmFzZTY0LnN1YnN0cmluZygwLCBiYXNlNjQubGVuZ3RoIC0gMSkgKyAnPSc7XG4gICAgICAgIH0gZWxzZSBpZiAobGVuICUgMyA9PT0gMSkge1xuICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmFzZTY0O1xuICAgICAgfTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLm1hcChfc2VyaWFsaXplKSA6IF9zZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgZW5jb2RlKFxuICAgICAgdmFsdWU6IEFycmF5QnVmZmVyIHwgQXJyYXlCdWZmZXJbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogYW55IHtcbiAgICAgIGNvbnN0IF9lbmNvZGUgPSAodjogQXJyYXlCdWZmZXIpID0+IHtcbiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkodiksXG4gICAgICAgICAgaSxcbiAgICAgICAgICBsZW4gPSBieXRlcy5sZW5ndGgsXG4gICAgICAgICAgYmFzZTY0ID0gJyc7XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSAzKSB7XG4gICAgICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2ldID4+IDJdO1xuICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTtcbiAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbKChieXRlc1tpICsgMV0gJiAxNSkgPDwgMikgfCAoYnl0ZXNbaSArIDJdID4+IDYpXTtcbiAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaSArIDJdICYgNjNdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxlbiAlIDMgPT09IDIpIHtcbiAgICAgICAgICBiYXNlNjQgPSBiYXNlNjQuc3Vic3RyaW5nKDAsIGJhc2U2NC5sZW5ndGggLSAxKSArICc9JztcbiAgICAgICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7XG4gICAgICAgICAgYmFzZTY0ID0gYmFzZTY0LnN1YnN0cmluZygwLCBiYXNlNjQubGVuZ3RoIC0gMikgKyAnPT0nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiYXNlNjQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKCh2KSA9PiBiaW5hcnkoX2VuY29kZSh2KSkpXG4gICAgICAgIDogYmluYXJ5KF9lbmNvZGUodmFsdWUpKTtcbiAgICB9LFxuICB9LFxufTtcblxuLypcbkVkbS5CaW5hcnkgQmluYXJ5IGRhdGFcbkVkbS5Cb29sZWFuIEJpbmFyeS12YWx1ZWQgbG9naWNcbkVkbS5CeXRlIFVuc2lnbmVkIDgtYml0IGludGVnZXJcbkVkbS5EYXRlIERhdGUgd2l0aG91dCBhIHRpbWUtem9uZSBvZmZzZXRcbkVkbS5EYXRlVGltZU9mZnNldCBEYXRlIGFuZCB0aW1lIHdpdGggYSB0aW1lLXpvbmUgb2Zmc2V0LCBubyBsZWFwIHNlY29uZHNcbkVkbS5EZWNpbWFsIE51bWVyaWMgdmFsdWVzIHdpdGggZml4ZWQgcHJlY2lzaW9uIGFuZCBzY2FsZVxuRWRtLkRvdWJsZSBJRUVFIDc1NCBiaW5hcnk2NCBmbG9hdGluZy1wb2ludCBudW1iZXIgKDE1LTE3IGRlY2ltYWwgZGlnaXRzKVxuRWRtLkR1cmF0aW9uIFNpZ25lZCBkdXJhdGlvbiBpbiBkYXlzLCBob3VycywgbWludXRlcywgYW5kIChzdWIpc2Vjb25kc1xuRWRtLkd1aWQgMTYtYnl0ZSAoMTI4LWJpdCkgdW5pcXVlIGlkZW50aWZpZXJcbkVkbS5JbnQxNiBTaWduZWQgMTYtYml0IGludGVnZXJcbkVkbS5JbnQzMiBTaWduZWQgMzItYml0IGludGVnZXJcbkVkbS5JbnQ2NCBTaWduZWQgNjQtYml0IGludGVnZXJcbkVkbS5TQnl0ZSBTaWduZWQgOC1iaXQgaW50ZWdlclxuRWRtLlNpbmdsZSBJRUVFIDc1NCBiaW5hcnkzMiBmbG9hdGluZy1wb2ludCBudW1iZXIgKDYtOSBkZWNpbWFsIGRpZ2l0cylcbkVkbS5TdHJlYW0gQmluYXJ5IGRhdGEgc3RyZWFtXG5FZG0uU3RyaW5nIFNlcXVlbmNlIG9mIFVURi04IGNoYXJhY3RlcnNcbkVkbS5UaW1lT2ZEYXkgQ2xvY2sgdGltZSAwMDowMC0yMzo1OTo1OS45OTk5OTk5OTk5OTlcbkVkbS5HZW9ncmFwaHkgQWJzdHJhY3QgYmFzZSB0eXBlIGZvciBhbGwgR2VvZ3JhcGh5IHR5cGVzXG5FZG0uR2VvZ3JhcGh5UG9pbnQgQSBwb2ludCBpbiBhIHJvdW5kLWVhcnRoIGNvb3JkaW5hdGUgc3lzdGVtXG5FZG0uR2VvZ3JhcGh5TGluZVN0cmluZyBMaW5lIHN0cmluZyBpbiBhIHJvdW5kLWVhcnRoIGNvb3JkaW5hdGUgc3lzdGVtXG5FZG0uR2VvZ3JhcGh5UG9seWdvbiBQb2x5Z29uIGluIGEgcm91bmQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9ncmFwaHlNdWx0aVBvaW50IENvbGxlY3Rpb24gb2YgcG9pbnRzIGluIGEgcm91bmQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9ncmFwaHlNdWx0aUxpbmVTdHJpbmcgQ29sbGVjdGlvbiBvZiBsaW5lIHN0cmluZ3MgaW4gYSByb3VuZC1lYXJ0aCBjb29yZGluYXRlIHN5c3RlbVxuRWRtLkdlb2dyYXBoeU11bHRpUG9seWdvbiBDb2xsZWN0aW9uIG9mIHBvbHlnb25zIGluIGEgcm91bmQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9ncmFwaHlDb2xsZWN0aW9uIENvbGxlY3Rpb24gb2YgYXJiaXRyYXJ5IEdlb2dyYXBoeSB2YWx1ZXNcbkVkbS5HZW9tZXRyeSBBYnN0cmFjdCBiYXNlIHR5cGUgZm9yIGFsbCBHZW9tZXRyeSB0eXBlc1xuRWRtLkdlb21ldHJ5UG9pbnQgUG9pbnQgaW4gYSBmbGF0LWVhcnRoIGNvb3JkaW5hdGUgc3lzdGVtXG5FZG0uR2VvbWV0cnlMaW5lU3RyaW5nIExpbmUgc3RyaW5nIGluIGEgZmxhdC1lYXJ0aCBjb29yZGluYXRlIHN5c3RlbVxuRWRtLkdlb21ldHJ5UG9seWdvbiBQb2x5Z29uIGluIGEgZmxhdC1lYXJ0aCBjb29yZGluYXRlIHN5c3RlbVxuRWRtLkdlb21ldHJ5TXVsdGlQb2ludCBDb2xsZWN0aW9uIG9mIHBvaW50cyBpbiBhIGZsYXQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9tZXRyeU11bHRpTGluZVN0cmluZyBDb2xsZWN0aW9uIG9mIGxpbmUgc3RyaW5ncyBpbiBhIGZsYXQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9tZXRyeU11bHRpUG9seWdvbiBDb2xsZWN0aW9uIG9mIHBvbHlnb25zIGluIGEgZmxhdC1lYXJ0aCBjb29yZGluYXRlIHN5c3RlbVxuRWRtLkdlb21ldHJ5Q29sbGVjdGlvbiBDb2xsZWN0aW9uIG9mIGFyYml0cmFyeSBHZW9tZXRyeSB2YWx1ZXNcbiovXG4iXX0=
|