parse-server 2.8.4 → 8.6.2
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/LICENSE +167 -25
- package/NOTICE +10 -0
- package/README.md +929 -278
- package/lib/AccountLockout.js +47 -30
- package/lib/Adapters/AdapterLoader.js +21 -6
- package/lib/Adapters/Analytics/AnalyticsAdapter.js +15 -12
- package/lib/Adapters/Auth/AuthAdapter.js +116 -13
- package/lib/Adapters/Auth/BaseCodeAuthAdapter.js +99 -0
- package/lib/Adapters/Auth/OAuth1Client.js +27 -46
- package/lib/Adapters/Auth/apple.js +123 -0
- package/lib/Adapters/Auth/facebook.js +162 -35
- package/lib/Adapters/Auth/gcenter.js +217 -0
- package/lib/Adapters/Auth/github.js +118 -48
- package/lib/Adapters/Auth/google.js +160 -51
- package/lib/Adapters/Auth/gpgames.js +125 -0
- package/lib/Adapters/Auth/httpsRequest.js +6 -7
- package/lib/Adapters/Auth/index.js +170 -62
- package/lib/Adapters/Auth/instagram.js +114 -40
- package/lib/Adapters/Auth/janraincapture.js +52 -23
- package/lib/Adapters/Auth/janrainengage.js +19 -36
- package/lib/Adapters/Auth/keycloak.js +148 -0
- package/lib/Adapters/Auth/ldap.js +167 -0
- package/lib/Adapters/Auth/line.js +125 -0
- package/lib/Adapters/Auth/linkedin.js +111 -55
- package/lib/Adapters/Auth/meetup.js +24 -34
- package/lib/Adapters/Auth/mfa.js +324 -0
- package/lib/Adapters/Auth/microsoft.js +111 -0
- package/lib/Adapters/Auth/oauth2.js +97 -162
- package/lib/Adapters/Auth/phantauth.js +53 -0
- package/lib/Adapters/Auth/qq.js +108 -49
- package/lib/Adapters/Auth/spotify.js +107 -55
- package/lib/Adapters/Auth/twitter.js +188 -48
- package/lib/Adapters/Auth/utils.js +28 -0
- package/lib/Adapters/Auth/vkontakte.js +26 -39
- package/lib/Adapters/Auth/wechat.js +106 -44
- package/lib/Adapters/Auth/weibo.js +132 -58
- package/lib/Adapters/Cache/CacheAdapter.js +13 -8
- package/lib/Adapters/Cache/InMemoryCache.js +3 -13
- package/lib/Adapters/Cache/InMemoryCacheAdapter.js +5 -13
- package/lib/Adapters/Cache/LRUCache.js +13 -27
- package/lib/Adapters/Cache/NullCacheAdapter.js +3 -8
- package/lib/Adapters/Cache/RedisCacheAdapter.js +85 -76
- package/lib/Adapters/Cache/SchemaCache.js +25 -0
- package/lib/Adapters/Email/MailAdapter.js +10 -8
- package/lib/Adapters/Files/FilesAdapter.js +83 -25
- package/lib/Adapters/Files/GridFSBucketAdapter.js +231 -0
- package/lib/Adapters/Files/GridStoreAdapter.js +4 -91
- package/lib/Adapters/Logger/LoggerAdapter.js +18 -14
- package/lib/Adapters/Logger/WinstonLogger.js +69 -88
- package/lib/Adapters/Logger/WinstonLoggerAdapter.js +7 -16
- package/lib/Adapters/MessageQueue/EventEmitterMQ.js +8 -26
- package/lib/Adapters/PubSub/EventEmitterPubSub.js +12 -25
- package/lib/Adapters/PubSub/PubSubAdapter.js +34 -0
- package/lib/Adapters/PubSub/RedisPubSub.js +42 -19
- package/lib/Adapters/Push/PushAdapter.js +14 -7
- package/lib/Adapters/Storage/Mongo/MongoCollection.js +137 -45
- package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +158 -63
- package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +320 -168
- package/lib/Adapters/Storage/Mongo/MongoTransform.js +279 -306
- package/lib/Adapters/Storage/Postgres/PostgresClient.js +14 -10
- package/lib/Adapters/Storage/Postgres/PostgresConfigParser.js +47 -21
- package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +854 -468
- package/lib/Adapters/Storage/Postgres/sql/index.js +4 -6
- package/lib/Adapters/Storage/StorageAdapter.js +1 -1
- package/lib/Adapters/WebSocketServer/WSAdapter.js +35 -0
- package/lib/Adapters/WebSocketServer/WSSAdapter.js +66 -0
- package/lib/Auth.js +488 -125
- package/lib/ClientSDK.js +2 -6
- package/lib/Config.js +525 -94
- package/lib/Controllers/AdaptableController.js +5 -25
- package/lib/Controllers/AnalyticsController.js +22 -23
- package/lib/Controllers/CacheController.js +10 -31
- package/lib/Controllers/DatabaseController.js +767 -313
- package/lib/Controllers/FilesController.js +49 -54
- package/lib/Controllers/HooksController.js +80 -84
- package/lib/Controllers/LiveQueryController.js +35 -22
- package/lib/Controllers/LoggerController.js +22 -58
- package/lib/Controllers/ParseGraphQLController.js +293 -0
- package/lib/Controllers/PushController.js +58 -49
- package/lib/Controllers/SchemaController.js +916 -422
- package/lib/Controllers/UserController.js +265 -180
- package/lib/Controllers/index.js +90 -125
- package/lib/Controllers/types.js +1 -1
- package/lib/Deprecator/Deprecations.js +30 -0
- package/lib/Deprecator/Deprecator.js +127 -0
- package/lib/Error.js +48 -0
- package/lib/GraphQL/ParseGraphQLSchema.js +375 -0
- package/lib/GraphQL/ParseGraphQLServer.js +214 -0
- package/lib/GraphQL/helpers/objectsMutations.js +30 -0
- package/lib/GraphQL/helpers/objectsQueries.js +246 -0
- package/lib/GraphQL/loaders/configMutations.js +87 -0
- package/lib/GraphQL/loaders/configQueries.js +79 -0
- package/lib/GraphQL/loaders/defaultGraphQLMutations.js +21 -0
- package/lib/GraphQL/loaders/defaultGraphQLQueries.js +23 -0
- package/lib/GraphQL/loaders/defaultGraphQLTypes.js +1098 -0
- package/lib/GraphQL/loaders/defaultRelaySchema.js +53 -0
- package/lib/GraphQL/loaders/filesMutations.js +107 -0
- package/lib/GraphQL/loaders/functionsMutations.js +78 -0
- package/lib/GraphQL/loaders/parseClassMutations.js +268 -0
- package/lib/GraphQL/loaders/parseClassQueries.js +127 -0
- package/lib/GraphQL/loaders/parseClassTypes.js +493 -0
- package/lib/GraphQL/loaders/schemaDirectives.js +62 -0
- package/lib/GraphQL/loaders/schemaMutations.js +162 -0
- package/lib/GraphQL/loaders/schemaQueries.js +81 -0
- package/lib/GraphQL/loaders/schemaTypes.js +341 -0
- package/lib/GraphQL/loaders/usersMutations.js +433 -0
- package/lib/GraphQL/loaders/usersQueries.js +90 -0
- package/lib/GraphQL/parseGraphQLUtils.js +63 -0
- package/lib/GraphQL/transformers/className.js +14 -0
- package/lib/GraphQL/transformers/constraintType.js +53 -0
- package/lib/GraphQL/transformers/inputType.js +51 -0
- package/lib/GraphQL/transformers/mutation.js +274 -0
- package/lib/GraphQL/transformers/outputType.js +51 -0
- package/lib/GraphQL/transformers/query.js +237 -0
- package/lib/GraphQL/transformers/schemaFields.js +99 -0
- package/lib/KeyPromiseQueue.js +48 -0
- package/lib/LiveQuery/Client.js +25 -33
- package/lib/LiveQuery/Id.js +2 -5
- package/lib/LiveQuery/ParseCloudCodePublisher.js +26 -23
- package/lib/LiveQuery/ParseLiveQueryServer.js +560 -285
- package/lib/LiveQuery/ParsePubSub.js +7 -16
- package/lib/LiveQuery/ParseWebSocketServer.js +42 -39
- package/lib/LiveQuery/QueryTools.js +76 -15
- package/lib/LiveQuery/RequestSchema.js +111 -97
- package/lib/LiveQuery/SessionTokenCache.js +23 -36
- package/lib/LiveQuery/Subscription.js +8 -17
- package/lib/LiveQuery/equalObjects.js +2 -3
- package/lib/Options/Definitions.js +1355 -382
- package/lib/Options/docs.js +301 -62
- package/lib/Options/index.js +11 -1
- package/lib/Options/parsers.js +14 -10
- package/lib/Page.js +44 -0
- package/lib/ParseMessageQueue.js +6 -13
- package/lib/ParseServer.js +474 -235
- package/lib/ParseServerRESTController.js +102 -40
- package/lib/PromiseRouter.js +39 -50
- package/lib/Push/PushQueue.js +24 -30
- package/lib/Push/PushWorker.js +32 -56
- package/lib/Push/utils.js +22 -35
- package/lib/RestQuery.js +361 -139
- package/lib/RestWrite.js +713 -344
- package/lib/Routers/AggregateRouter.js +97 -71
- package/lib/Routers/AnalyticsRouter.js +8 -14
- package/lib/Routers/AudiencesRouter.js +16 -35
- package/lib/Routers/ClassesRouter.js +86 -72
- package/lib/Routers/CloudCodeRouter.js +28 -37
- package/lib/Routers/FeaturesRouter.js +22 -25
- package/lib/Routers/FilesRouter.js +266 -171
- package/lib/Routers/FunctionsRouter.js +87 -103
- package/lib/Routers/GlobalConfigRouter.js +94 -33
- package/lib/Routers/GraphQLRouter.js +41 -0
- package/lib/Routers/HooksRouter.js +43 -47
- package/lib/Routers/IAPValidationRouter.js +57 -70
- package/lib/Routers/InstallationsRouter.js +17 -25
- package/lib/Routers/LogsRouter.js +10 -25
- package/lib/Routers/PagesRouter.js +647 -0
- package/lib/Routers/PublicAPIRouter.js +104 -112
- package/lib/Routers/PurgeRouter.js +19 -29
- package/lib/Routers/PushRouter.js +14 -28
- package/lib/Routers/RolesRouter.js +7 -14
- package/lib/Routers/SchemasRouter.js +63 -42
- package/lib/Routers/SecurityRouter.js +34 -0
- package/lib/Routers/SessionsRouter.js +25 -38
- package/lib/Routers/UsersRouter.js +463 -190
- package/lib/SchemaMigrations/DefinedSchemas.js +379 -0
- package/lib/SchemaMigrations/Migrations.js +30 -0
- package/lib/Security/Check.js +109 -0
- package/lib/Security/CheckGroup.js +44 -0
- package/lib/Security/CheckGroups/CheckGroupDatabase.js +44 -0
- package/lib/Security/CheckGroups/CheckGroupServerConfig.js +96 -0
- package/lib/Security/CheckGroups/CheckGroups.js +21 -0
- package/lib/Security/CheckRunner.js +213 -0
- package/lib/SharedRest.js +29 -0
- package/lib/StatusHandler.js +96 -93
- package/lib/TestUtils.js +70 -14
- package/lib/Utils.js +468 -0
- package/lib/batch.js +74 -40
- package/lib/cache.js +8 -8
- package/lib/cli/definitions/parse-live-query-server.js +4 -3
- package/lib/cli/definitions/parse-server.js +4 -3
- package/lib/cli/parse-live-query-server.js +9 -17
- package/lib/cli/parse-server.js +49 -47
- package/lib/cli/utils/commander.js +20 -29
- package/lib/cli/utils/runner.js +31 -32
- package/lib/cloud-code/Parse.Cloud.js +711 -36
- package/lib/cloud-code/Parse.Server.js +21 -0
- package/lib/cryptoUtils.js +6 -11
- package/lib/defaults.js +21 -15
- package/lib/deprecated.js +1 -1
- package/lib/index.js +78 -67
- package/lib/logger.js +12 -20
- package/lib/middlewares.js +484 -160
- package/lib/password.js +10 -6
- package/lib/request.js +175 -0
- package/lib/requiredParameter.js +4 -3
- package/lib/rest.js +157 -82
- package/lib/triggers.js +627 -185
- package/lib/vendor/README.md +3 -3
- package/lib/vendor/mongodbUrl.js +224 -137
- package/package.json +135 -57
- package/postinstall.js +38 -50
- package/public_html/invalid_verification_link.html +3 -3
- package/types/@types/@parse/fs-files-adapter/index.d.ts +5 -0
- package/types/@types/deepcopy/index.d.ts +5 -0
- package/types/LiveQuery/ParseLiveQueryServer.d.ts +40 -0
- package/types/Options/index.d.ts +301 -0
- package/types/ParseServer.d.ts +65 -0
- package/types/eslint.config.mjs +30 -0
- package/types/index.d.ts +21 -0
- package/types/logger.d.ts +2 -0
- package/types/tests.ts +44 -0
- package/types/tsconfig.json +24 -0
- package/CHANGELOG.md +0 -1246
- package/PATENTS +0 -37
- package/bin/dev +0 -37
- package/lib/.DS_Store +0 -0
- package/lib/Adapters/Auth/common.js +0 -2
- package/lib/Adapters/Auth/facebookaccountkit.js +0 -69
- package/lib/Controllers/SchemaCache.js +0 -97
- package/lib/LiveQuery/.DS_Store +0 -0
- package/lib/cli/utils/parsers.js +0 -77
- package/lib/cloud-code/.DS_Store +0 -0
- package/lib/cloud-code/HTTPResponse.js +0 -57
- package/lib/cloud-code/Untitled-1 +0 -123
- package/lib/cloud-code/httpRequest.js +0 -102
- package/lib/cloud-code/team.html +0 -123
- package/lib/graphql/ParseClass.js +0 -234
- package/lib/graphql/Schema.js +0 -197
- package/lib/graphql/index.js +0 -1
- package/lib/graphql/types/ACL.js +0 -35
- package/lib/graphql/types/Date.js +0 -25
- package/lib/graphql/types/File.js +0 -24
- package/lib/graphql/types/GeoPoint.js +0 -35
- package/lib/graphql/types/JSONObject.js +0 -30
- package/lib/graphql/types/NumberInput.js +0 -43
- package/lib/graphql/types/NumberQuery.js +0 -42
- package/lib/graphql/types/Pointer.js +0 -35
- package/lib/graphql/types/QueryConstraint.js +0 -61
- package/lib/graphql/types/StringQuery.js +0 -39
- package/lib/graphql/types/index.js +0 -110
|
@@ -1,39 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.ClassesRouter =
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
var _lodash = require('lodash');
|
|
17
|
-
|
|
18
|
-
var _lodash2 = _interopRequireDefault(_lodash);
|
|
19
|
-
|
|
20
|
-
var _node = require('parse/node');
|
|
21
|
-
|
|
22
|
-
var _node2 = _interopRequireDefault(_node);
|
|
23
|
-
|
|
24
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
-
|
|
26
|
-
const ALLOWED_GET_QUERY_KEYS = ['keys', 'include'];
|
|
27
|
-
|
|
28
|
-
class ClassesRouter extends _PromiseRouter2.default {
|
|
29
|
-
|
|
6
|
+
exports.default = exports.ClassesRouter = void 0;
|
|
7
|
+
var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
|
|
8
|
+
var _rest = _interopRequireDefault(require("../rest"));
|
|
9
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
10
|
+
var _node = _interopRequireDefault(require("parse/node"));
|
|
11
|
+
var _middlewares = require("../middlewares");
|
|
12
|
+
var _Error = require("../Error");
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
const ALLOWED_GET_QUERY_KEYS = ['keys', 'include', 'excludeKeys', 'readPreference', 'includeReadPreference', 'subqueryReadPreference'];
|
|
15
|
+
class ClassesRouter extends _PromiseRouter.default {
|
|
30
16
|
className(req) {
|
|
31
17
|
return req.params.className;
|
|
32
18
|
}
|
|
33
|
-
|
|
34
19
|
handleFind(req) {
|
|
35
|
-
const body = Object.assign(req.body, ClassesRouter.JSONFromQuery(req.query));
|
|
36
|
-
const options = ClassesRouter.optionsFromBody(body);
|
|
20
|
+
const body = Object.assign(req.body || {}, ClassesRouter.JSONFromQuery(req.query));
|
|
21
|
+
const options = ClassesRouter.optionsFromBody(body, req.config.defaultLimit);
|
|
37
22
|
if (req.config.maxLimit && body.limit > req.config.maxLimit) {
|
|
38
23
|
// Silently replace the limit on the query with the max configured
|
|
39
24
|
options.limit = Number(req.config.maxLimit);
|
|
@@ -44,82 +29,92 @@ class ClassesRouter extends _PromiseRouter2.default {
|
|
|
44
29
|
if (typeof body.where === 'string') {
|
|
45
30
|
body.where = JSON.parse(body.where);
|
|
46
31
|
}
|
|
47
|
-
return
|
|
48
|
-
return {
|
|
32
|
+
return _rest.default.find(req.config, req.auth, this.className(req), body.where, options, req.info.clientSDK, req.info.context).then(response => {
|
|
33
|
+
return {
|
|
34
|
+
response: response
|
|
35
|
+
};
|
|
49
36
|
});
|
|
50
37
|
}
|
|
51
38
|
|
|
52
39
|
// Returns a promise for a {response} object.
|
|
53
40
|
handleGet(req) {
|
|
54
|
-
const body = Object.assign(req.body, ClassesRouter.JSONFromQuery(req.query));
|
|
41
|
+
const body = Object.assign(req.body || {}, ClassesRouter.JSONFromQuery(req.query));
|
|
55
42
|
const options = {};
|
|
56
|
-
|
|
57
43
|
for (const key of Object.keys(body)) {
|
|
58
44
|
if (ALLOWED_GET_QUERY_KEYS.indexOf(key) === -1) {
|
|
59
|
-
throw new
|
|
45
|
+
throw new _node.default.Error(_node.default.Error.INVALID_QUERY, 'Improper encode of parameter');
|
|
60
46
|
}
|
|
61
47
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
options.keys = body.keys;
|
|
48
|
+
if (body.keys != null) {
|
|
49
|
+
options.keys = String(body.keys);
|
|
65
50
|
}
|
|
66
|
-
if (body.include) {
|
|
51
|
+
if (body.include != null) {
|
|
67
52
|
options.include = String(body.include);
|
|
68
53
|
}
|
|
69
|
-
|
|
70
|
-
|
|
54
|
+
if (body.excludeKeys != null) {
|
|
55
|
+
options.excludeKeys = String(body.excludeKeys);
|
|
56
|
+
}
|
|
57
|
+
if (typeof body.readPreference === 'string') {
|
|
58
|
+
options.readPreference = body.readPreference;
|
|
59
|
+
}
|
|
60
|
+
if (typeof body.includeReadPreference === 'string') {
|
|
61
|
+
options.includeReadPreference = body.includeReadPreference;
|
|
62
|
+
}
|
|
63
|
+
if (typeof body.subqueryReadPreference === 'string') {
|
|
64
|
+
options.subqueryReadPreference = body.subqueryReadPreference;
|
|
65
|
+
}
|
|
66
|
+
return _rest.default.get(req.config, req.auth, this.className(req), req.params.objectId, options, req.info.clientSDK, req.info.context).then(response => {
|
|
71
67
|
if (!response.results || response.results.length == 0) {
|
|
72
|
-
throw new
|
|
68
|
+
throw new _node.default.Error(_node.default.Error.OBJECT_NOT_FOUND, 'Object not found.');
|
|
73
69
|
}
|
|
74
|
-
|
|
75
|
-
if (this.className(req) === "_User") {
|
|
76
|
-
|
|
70
|
+
if (this.className(req) === '_User') {
|
|
77
71
|
delete response.results[0].sessionToken;
|
|
78
|
-
|
|
79
72
|
const user = response.results[0];
|
|
80
|
-
|
|
81
73
|
if (req.auth.user && user.objectId == req.auth.user.id) {
|
|
82
74
|
// Force the session token
|
|
83
75
|
response.results[0].sessionToken = req.info.sessionToken;
|
|
84
76
|
}
|
|
85
77
|
}
|
|
86
|
-
return {
|
|
78
|
+
return {
|
|
79
|
+
response: response.results[0]
|
|
80
|
+
};
|
|
87
81
|
});
|
|
88
82
|
}
|
|
89
|
-
|
|
90
83
|
handleCreate(req) {
|
|
91
|
-
|
|
84
|
+
if (this.className(req) === '_User' && typeof req.body?.objectId === 'string' && req.body.objectId.startsWith('role:')) {
|
|
85
|
+
throw (0, _Error.createSanitizedError)(_node.default.Error.OPERATION_FORBIDDEN, 'Invalid object ID.', req.config);
|
|
86
|
+
}
|
|
87
|
+
return _rest.default.create(req.config, req.auth, this.className(req), req.body || {}, req.info.clientSDK, req.info.context);
|
|
92
88
|
}
|
|
93
|
-
|
|
94
89
|
handleUpdate(req) {
|
|
95
|
-
const where = {
|
|
96
|
-
|
|
90
|
+
const where = {
|
|
91
|
+
objectId: req.params.objectId
|
|
92
|
+
};
|
|
93
|
+
return _rest.default.update(req.config, req.auth, this.className(req), where, req.body || {}, req.info.clientSDK, req.info.context);
|
|
97
94
|
}
|
|
98
|
-
|
|
99
95
|
handleDelete(req) {
|
|
100
|
-
return
|
|
101
|
-
return {
|
|
96
|
+
return _rest.default.del(req.config, req.auth, this.className(req), req.params.objectId, req.info.context).then(() => {
|
|
97
|
+
return {
|
|
98
|
+
response: {}
|
|
99
|
+
};
|
|
102
100
|
});
|
|
103
101
|
}
|
|
104
|
-
|
|
105
102
|
static JSONFromQuery(query) {
|
|
106
103
|
const json = {};
|
|
107
|
-
for (const [key, value] of
|
|
104
|
+
for (const [key, value] of _lodash.default.entries(query)) {
|
|
108
105
|
try {
|
|
109
106
|
json[key] = JSON.parse(value);
|
|
110
|
-
} catch
|
|
107
|
+
} catch {
|
|
111
108
|
json[key] = value;
|
|
112
109
|
}
|
|
113
110
|
}
|
|
114
111
|
return json;
|
|
115
112
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const allowConstraints = ['skip', 'limit', 'order', 'count', 'keys', 'include', 'includeAll', 'redirectClassNameForKey', 'where'];
|
|
119
|
-
|
|
113
|
+
static optionsFromBody(body, defaultLimit) {
|
|
114
|
+
const allowConstraints = ['skip', 'limit', 'order', 'count', 'keys', 'excludeKeys', 'include', 'includeAll', 'redirectClassNameForKey', 'where', 'readPreference', 'includeReadPreference', 'subqueryReadPreference', 'hint', 'explain', 'comment'];
|
|
120
115
|
for (const key of Object.keys(body)) {
|
|
121
116
|
if (allowConstraints.indexOf(key) === -1) {
|
|
122
|
-
throw new
|
|
117
|
+
throw new _node.default.Error(_node.default.Error.INVALID_QUERY, `Invalid parameter for query: ${key}`);
|
|
123
118
|
}
|
|
124
119
|
}
|
|
125
120
|
const options = {};
|
|
@@ -129,7 +124,7 @@ class ClassesRouter extends _PromiseRouter2.default {
|
|
|
129
124
|
if (body.limit || body.limit === 0) {
|
|
130
125
|
options.limit = Number(body.limit);
|
|
131
126
|
} else {
|
|
132
|
-
options.limit = Number(
|
|
127
|
+
options.limit = Number(defaultLimit);
|
|
133
128
|
}
|
|
134
129
|
if (body.order) {
|
|
135
130
|
options.order = String(body.order);
|
|
@@ -137,18 +132,38 @@ class ClassesRouter extends _PromiseRouter2.default {
|
|
|
137
132
|
if (body.count) {
|
|
138
133
|
options.count = true;
|
|
139
134
|
}
|
|
140
|
-
if (
|
|
141
|
-
options.keys = body.keys;
|
|
135
|
+
if (body.keys != null) {
|
|
136
|
+
options.keys = String(body.keys);
|
|
137
|
+
}
|
|
138
|
+
if (body.excludeKeys != null) {
|
|
139
|
+
options.excludeKeys = String(body.excludeKeys);
|
|
142
140
|
}
|
|
143
|
-
if (body.include) {
|
|
141
|
+
if (body.include != null) {
|
|
144
142
|
options.include = String(body.include);
|
|
145
143
|
}
|
|
146
144
|
if (body.includeAll) {
|
|
147
145
|
options.includeAll = true;
|
|
148
146
|
}
|
|
147
|
+
if (typeof body.readPreference === 'string') {
|
|
148
|
+
options.readPreference = body.readPreference;
|
|
149
|
+
}
|
|
150
|
+
if (typeof body.includeReadPreference === 'string') {
|
|
151
|
+
options.includeReadPreference = body.includeReadPreference;
|
|
152
|
+
}
|
|
153
|
+
if (typeof body.subqueryReadPreference === 'string') {
|
|
154
|
+
options.subqueryReadPreference = body.subqueryReadPreference;
|
|
155
|
+
}
|
|
156
|
+
if (body.hint && (typeof body.hint === 'string' || typeof body.hint === 'object')) {
|
|
157
|
+
options.hint = body.hint;
|
|
158
|
+
}
|
|
159
|
+
if (body.explain) {
|
|
160
|
+
options.explain = body.explain;
|
|
161
|
+
}
|
|
162
|
+
if (body.comment && typeof body.comment === 'string') {
|
|
163
|
+
options.comment = body.comment;
|
|
164
|
+
}
|
|
149
165
|
return options;
|
|
150
166
|
}
|
|
151
|
-
|
|
152
167
|
mountRoutes() {
|
|
153
168
|
this.route('GET', '/classes/:className', req => {
|
|
154
169
|
return this.handleFind(req);
|
|
@@ -156,10 +171,10 @@ class ClassesRouter extends _PromiseRouter2.default {
|
|
|
156
171
|
this.route('GET', '/classes/:className/:objectId', req => {
|
|
157
172
|
return this.handleGet(req);
|
|
158
173
|
});
|
|
159
|
-
this.route('POST', '/classes/:className', req => {
|
|
174
|
+
this.route('POST', '/classes/:className', _middlewares.promiseEnsureIdempotency, req => {
|
|
160
175
|
return this.handleCreate(req);
|
|
161
176
|
});
|
|
162
|
-
this.route('PUT', '/classes/:className/:objectId', req => {
|
|
177
|
+
this.route('PUT', '/classes/:className/:objectId', _middlewares.promiseEnsureIdempotency, req => {
|
|
163
178
|
return this.handleUpdate(req);
|
|
164
179
|
});
|
|
165
180
|
this.route('DELETE', '/classes/:className/:objectId', req => {
|
|
@@ -167,7 +182,6 @@ class ClassesRouter extends _PromiseRouter2.default {
|
|
|
167
182
|
});
|
|
168
183
|
}
|
|
169
184
|
}
|
|
170
|
-
|
|
171
185
|
exports.ClassesRouter = ClassesRouter;
|
|
172
|
-
exports.default = ClassesRouter;
|
|
173
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0NsYXNzZXNSb3V0ZXIuanMiXSwibmFtZXMiOlsiQUxMT1dFRF9HRVRfUVVFUllfS0VZUyIsIkNsYXNzZXNSb3V0ZXIiLCJQcm9taXNlUm91dGVyIiwiY2xhc3NOYW1lIiwicmVxIiwicGFyYW1zIiwiaGFuZGxlRmluZCIsImJvZHkiLCJPYmplY3QiLCJhc3NpZ24iLCJKU09ORnJvbVF1ZXJ5IiwicXVlcnkiLCJvcHRpb25zIiwib3B0aW9uc0Zyb21Cb2R5IiwiY29uZmlnIiwibWF4TGltaXQiLCJsaW1pdCIsIk51bWJlciIsInJlZGlyZWN0Q2xhc3NOYW1lRm9yS2V5IiwiU3RyaW5nIiwid2hlcmUiLCJKU09OIiwicGFyc2UiLCJyZXN0IiwiZmluZCIsImF1dGgiLCJpbmZvIiwiY2xpZW50U0RLIiwidGhlbiIsInJlc3BvbnNlIiwiaGFuZGxlR2V0Iiwia2V5Iiwia2V5cyIsImluZGV4T2YiLCJQYXJzZSIsIkVycm9yIiwiSU5WQUxJRF9RVUVSWSIsImluY2x1ZGUiLCJnZXQiLCJvYmplY3RJZCIsInJlc3VsdHMiLCJsZW5ndGgiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwic2Vzc2lvblRva2VuIiwidXNlciIsImlkIiwiaGFuZGxlQ3JlYXRlIiwiY3JlYXRlIiwiaGFuZGxlVXBkYXRlIiwidXBkYXRlIiwiaGFuZGxlRGVsZXRlIiwiZGVsIiwianNvbiIsInZhbHVlIiwiXyIsImVudHJpZXMiLCJlIiwiYWxsb3dDb25zdHJhaW50cyIsInNraXAiLCJvcmRlciIsImNvdW50IiwiaW5jbHVkZUFsbCIsIm1vdW50Um91dGVzIiwicm91dGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUEsTUFBTUEseUJBQXlCLENBQUMsTUFBRCxFQUFTLFNBQVQsQ0FBL0I7O0FBRU8sTUFBTUMsYUFBTixTQUE0QkMsdUJBQTVCLENBQTBDOztBQUUvQ0MsWUFBVUMsR0FBVixFQUFlO0FBQ2Is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LFlBQUwsQ0FBa0IxQyxHQUFsQixDQUFQO0FBQWdDLEtBQXJGO0FBQ0EsU0FBSzJELEtBQUwsQ0FBVyxLQUFYLEVBQWtCLCtCQUFsQixFQUFvRDNELEdBQUQsSUFBUztBQUFFLGFBQU8sS0FBSzRDLFlBQUwsQ0FBa0I1QyxHQUFsQixDQUFQO0FBQWdDLEtBQTlGO0FBQ0EsU0FBSzJELEtBQUwsQ0FBVyxRQUFYLEVBQXNCLCtCQUF0QixFQUF3RDNELEdBQUQsSUFBUztBQUFFLGFBQU8sS0FBSzhDLFlBQUwsQ0FBa0I5QyxHQUFsQixDQUFQO0FBQWdDLEtBQWxHO0FBQ0Q7QUF0SThDOztRQUFwQ0gsYSxHQUFBQSxhO2tCQXlJRUEsYSIsImZpbGUiOiJDbGFzc2VzUm91dGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCByZXN0ICAgICAgICAgIGZyb20gJy4uL3Jlc3QnO1xuaW1wb3J0IF8gICAgICAgICAgICAgZnJvbSAnbG9kYXNoJztcbmltcG9ydCBQYXJzZSAgICAgICAgIGZyb20gJ3BhcnNlL25vZGUnO1xuXG5jb25zdCBBTExPV0VEX0dFVF9RVUVSWV9LRVlTID0gWydrZXlzJywgJ2luY2x1ZGUnXTtcblxuZXhwb3J0IGNsYXNzIENsYXNzZXNSb3V0ZXIgZXh0ZW5kcyBQcm9taXNlUm91dGVyIHtcblxuICBjbGFzc05hbWUocmVxKSB7XG4gICAgcmV0dXJuIHJlcS5wYXJhbXMuY2xhc3NOYW1lO1xuICB9XG5cbiAgaGFuZGxlRmluZChyZXEpIHtcbiAgICBjb25zdCBib2R5ID0gT2JqZWN0LmFzc2lnbihyZXEuYm9keSwgQ2xhc3Nlc1JvdXRlci5KU09ORnJvbVF1ZXJ5KHJlcS5xdWVyeSkpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBDbGFzc2VzUm91dGVyLm9wdGlvbnNGcm9tQm9keShib2R5KTtcbiAgICBpZiAocmVxLmNvbmZpZy5tYXhMaW1pdCAmJiAoYm9keS5saW1pdCA+IHJlcS5jb25maWcubWF4TGltaXQpKSB7XG4gICAgICAvLyBTaWxlbnRseSByZXBsYWNlIHRoZSBsaW1pdCBvbiB0aGUgcXVlcnkgd2l0aCB0aGUgbWF4IGNvbmZpZ3VyZWRcbiAgICAgIG9wdGlvbnMubGltaXQgPSBOdW1iZXIocmVxLmNvbmZpZy5tYXhMaW1pdCk7XG4gICAgfVxuICAgIGlmIChib2R5LnJlZGlyZWN0Q2xhc3NOYW1lRm9yS2V5KSB7XG4gICAgICBvcHRpb25zLnJlZGlyZWN0Q2xhc3NOYW1lRm9yS2V5ID0gU3RyaW5nKGJvZHkucmVkaXJlY3RDbGFzc05hbWVGb3JLZXkpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGJvZHkud2hlcmUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBib2R5LndoZXJlID0gSlNPTi5wYXJzZShib2R5LndoZXJlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3QuZmluZChyZXEuY29uZmlnLCByZXEuYXV0aCwgdGhpcy5jbGFzc05hbWUocmVxKSwgYm9keS53aGVyZSwgb3B0aW9ucywgcmVxLmluZm8uY2xpZW50U0RLKVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJldHVybiB7IHJlc3BvbnNlOiByZXNwb25zZSB9O1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgcHJvbWlzZSBmb3IgYSB7cmVzcG9uc2V9IG9iamVjdC5cbiAgaGFuZGxlR2V0KHJlcSkge1xuICAgIGNvbnN0IGJvZHkgPSBPYmplY3QuYXNzaWduKHJlcS5ib2R5LCBDbGFzc2VzUm91dGVyLkpTT05Gcm9tUXVlcnkocmVxLnF1ZXJ5KSk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYm9keSkpIHtcbiAgICAgIGlmIChBTExPV0VEX0dFVF9RVUVSWV9LRVlTLmluZGV4T2Yoa2V5KSA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksICdJbXByb3BlciBlbmNvZGUgb2YgcGFyYW1ldGVyJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBib2R5LmtleXMgPT0gJ3N0cmluZycpIHtcbiAgICAgIG9wdGlvbnMua2V5cyA9IGJvZHkua2V5cztcbiAgICB9XG4gICAgaWYgKGJvZHkuaW5jbHVkZSkge1xuICAgICAgb3B0aW9ucy5pbmNsdWRlID0gU3RyaW5nKGJvZHkuaW5jbHVkZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3QuZ2V0KHJlcS5jb25maWcsIHJlcS5hdXRoLCB0aGlzLmNsYXNzTmFtZShyZXEpLCByZXEucGFyYW1zLm9iamVjdElkLCBvcHRpb25zLCByZXEuaW5mby5jbGllbnRTREspXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5yZXN1bHRzIHx8IHJlc3BvbnNlLnJlc3VsdHMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ09iamVjdCBub3QgZm91bmQuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jbGFzc05hbWUocmVxKSA9PT0gXCJfVXNlclwiKSB7XG5cbiAgICAgICAgICBkZWxldGUgcmVzcG9uc2UucmVzdWx0c1swXS5zZXNzaW9uVG9rZW47XG5cbiAgICAgICAgICBjb25zdCB1c2VyID0gIHJlc3BvbnNlLnJlc3VsdHNbMF07XG5cbiAgICAgICAgICBpZiAocmVxLmF1dGgudXNlciAmJiB1c2VyLm9iamVjdElkID09IHJlcS5hdXRoLnVzZXIuaWQpIHtcbiAgICAgICAgICAgIC8vIEZvcmNlIHRoZSBzZXNzaW9uIHRva2VuXG4gICAgICAgICAgICByZXNwb25zZS5yZXN1bHRzWzBdLnNlc3Npb25Ub2tlbiA9IHJlcS5pbmZvLnNlc3Npb25Ub2tlbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2U6IHJlc3BvbnNlLnJlc3VsdHNbMF0gfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlQ3JlYXRlKHJlcSkge1xuICAgIHJldHVybiByZXN0LmNyZWF0ZShyZXEuY29uZmlnLCByZXEuYXV0aCwgdGhpcy5jbGFzc05hbWUocmVxKSwgcmVxLmJvZHksIHJlcS5pbmZvLmNsaWVudFNESyk7XG4gIH1cblxuICBoYW5kbGVVcGRhdGUocmVxKSB7XG4gICAgY29uc3Qgd2hlcmUgPSB7IG9iamVjdElkOiByZXEucGFyYW1zLm9iamVjdElkIH1cbiAgICByZXR1cm4gcmVzdC51cGRhdGUocmVxLmNvbmZpZywgcmVxLmF1dGgsIHRoaXMuY2xhc3NOYW1lKHJlcSksIHdoZXJlLCByZXEuYm9keSwgcmVxLmluZm8uY2xpZW50U0RLKTtcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShyZXEpIHtcbiAgICByZXR1cm4gcmVzdC5kZWwocmVxLmNvbmZpZywgcmVxLmF1dGgsIHRoaXMuY2xhc3NOYW1lKHJlcSksIHJlcS5wYXJhbXMub2JqZWN0SWQsIHJlcS5pbmZvLmNsaWVudFNESylcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtyZXNwb25zZToge319O1xuICAgICAgfSk7XG4gIH1cblxuICBzdGF0aWMgSlNPTkZyb21RdWVyeShxdWVyeSkge1xuICAgIGNvbnN0IGpzb24gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBfLmVudHJpZXMocXVlcnkpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBqc29uW2tleV0gPSBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAganNvbltrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBqc29uXG4gIH1cblxuICBzdGF0aWMgb3B0aW9uc0Zyb21Cb2R5KGJvZHkpIHtcbiAgICBjb25zdCBhbGxvd0NvbnN0cmFpbnRzID0gWydza2lwJywgJ2xpbWl0JywgJ29yZGVyJywgJ2NvdW50JywgJ2tleXMnLFxuICAgICAgJ2luY2x1ZGUnLCAnaW5jbHVkZUFsbCcsICdyZWRpcmVjdENsYXNzTmFtZUZvcktleScsICd3aGVyZSddO1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYm9keSkpIHtcbiAgICAgIGlmIChhbGxvd0NvbnN0cmFpbnRzLmluZGV4T2Yoa2V5KSA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksIGBJbnZhbGlkIHBhcmFtZXRlciBmb3IgcXVlcnk6ICR7a2V5fWApO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBvcHRpb25zID0ge307XG4gICAgaWYgKGJvZHkuc2tpcCkge1xuICAgICAgb3B0aW9ucy5za2lwID0gTnVtYmVyKGJvZHkuc2tpcCk7XG4gICAgfVxuICAgIGlmIChib2R5LmxpbWl0IHx8IGJvZHkubGltaXQgPT09IDApIHtcbiAgICAgIG9wdGlvbnMubGltaXQgPSBOdW1iZXIoYm9keS5saW1pdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMubGltaXQgPSBOdW1iZXIoMTAwKTtcbiAgICB9XG4gICAgaWYgKGJvZHkub3JkZXIpIHtcbiAgICAgIG9wdGlvbnMub3JkZXIgPSBTdHJpbmcoYm9keS5vcmRlcik7XG4gICAgfVxuICAgIGlmIChib2R5LmNvdW50KSB7XG4gICAgICBvcHRpb25zLmNvdW50ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBib2R5LmtleXMgPT0gJ3N0cmluZycpIHtcbiAgICAgIG9wdGlvbnMua2V5cyA9IGJvZHkua2V5cztcbiAgICB9XG4gICAgaWYgKGJvZHkuaW5jbHVkZSkge1xuICAgICAgb3B0aW9ucy5pbmNsdWRlID0gU3RyaW5nKGJvZHkuaW5jbHVkZSk7XG4gICAgfVxuICAgIGlmIChib2R5LmluY2x1ZGVBbGwpIHtcbiAgICAgIG9wdGlvbnMuaW5jbHVkZUFsbCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9jbGFzc2VzLzpjbGFzc05hbWUnLCAocmVxKSA9PiB7IHJldHVybiB0aGlzLmhhbmRsZUZpbmQocmVxKTsgfSk7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9jbGFzc2VzLzpjbGFzc05hbWUvOm9iamVjdElkJywgKHJlcSkgPT4geyByZXR1cm4gdGhpcy5oYW5kbGVHZXQocmVxKTsgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvY2xhc3Nlcy86Y2xhc3NOYW1lJywgKHJlcSkgPT4geyByZXR1cm4gdGhpcy5oYW5kbGVDcmVhdGUocmVxKTsgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUFVUJywgJy9jbGFzc2VzLzpjbGFzc05hbWUvOm9iamVjdElkJywgKHJlcSkgPT4geyByZXR1cm4gdGhpcy5oYW5kbGVVcGRhdGUocmVxKTsgfSk7XG4gICAgdGhpcy5yb3V0ZSgnREVMRVRFJywgICcvY2xhc3Nlcy86Y2xhc3NOYW1lLzpvYmplY3RJZCcsIChyZXEpID0+IHsgcmV0dXJuIHRoaXMuaGFuZGxlRGVsZXRlKHJlcSk7IH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENsYXNzZXNSb3V0ZXI7XG4iXX0=
|
|
186
|
+
var _default = exports.default = ClassesRouter;
|
|
187
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3Jlc3QiLCJfbG9kYXNoIiwiX25vZGUiLCJfbWlkZGxld2FyZXMiLCJfRXJyb3IiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJBTExPV0VEX0dFVF9RVUVSWV9LRVlTIiwiQ2xhc3Nlc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJjbGFzc05hbWUiLCJyZXEiLCJwYXJhbXMiLCJoYW5kbGVGaW5kIiwiYm9keSIsIk9iamVjdCIsImFzc2lnbiIsIkpTT05Gcm9tUXVlcnkiLCJxdWVyeSIsIm9wdGlvbnMiLCJvcHRpb25zRnJvbUJvZHkiLCJjb25maWciLCJkZWZhdWx0TGltaXQiLCJtYXhMaW1pdCIsImxpbWl0IiwiTnVtYmVyIiwicmVkaXJlY3RDbGFzc05hbWVGb3JLZXkiLCJTdHJpbmciLCJ3aGVyZSIsIkpTT04iLCJwYXJzZSIsInJlc3QiLCJmaW5kIiwiYXV0aCIsImluZm8iLCJjbGllbnRTREsiLCJjb250ZXh0IiwidGhlbiIsInJlc3BvbnNlIiwiaGFuZGxlR2V0Iiwia2V5Iiwia2V5cyIsImluZGV4T2YiLCJQYXJzZSIsIkVycm9yIiwiSU5WQUxJRF9RVUVSWSIsImluY2x1ZGUiLCJleGNsdWRlS2V5cyIsInJlYWRQcmVmZXJlbmNlIiwiaW5jbHVkZVJlYWRQcmVmZXJlbmNlIiwic3VicXVlcnlSZWFkUHJlZmVyZW5jZSIsImdldCIsIm9iamVjdElkIiwicmVzdWx0cyIsImxlbmd0aCIsIk9CSkVDVF9OT1RfRk9VTkQiLCJzZXNzaW9uVG9rZW4iLCJ1c2VyIiwiaWQiLCJoYW5kbGVDcmVhdGUiLCJzdGFydHNXaXRoIiwiY3JlYXRlU2FuaXRpemVkRXJyb3IiLCJPUEVSQVRJT05fRk9SQklEREVOIiwiY3JlYXRlIiwiaGFuZGxlVXBkYXRlIiwidXBkYXRlIiwiaGFuZGxlRGVsZXRlIiwiZGVsIiwianNvbiIsInZhbHVlIiwiXyIsImVudHJpZXMiLCJhbGxvd0NvbnN0cmFpbnRzIiwic2tpcCIsIm9yZGVyIiwiY291bnQiLCJpbmNsdWRlQWxsIiwiaGludCIsImV4cGxhaW4iLCJjb21tZW50IiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsInByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSIsImV4cG9ydHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0NsYXNzZXNSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgcmVzdCBmcm9tICcuLi9yZXN0JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgeyBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3kgfSBmcm9tICcuLi9taWRkbGV3YXJlcyc7XG5pbXBvcnQgeyBjcmVhdGVTYW5pdGl6ZWRFcnJvciB9IGZyb20gJy4uL0Vycm9yJztcblxuY29uc3QgQUxMT1dFRF9HRVRfUVVFUllfS0VZUyA9IFtcbiAgJ2tleXMnLFxuICAnaW5jbHVkZScsXG4gICdleGNsdWRlS2V5cycsXG4gICdyZWFkUHJlZmVyZW5jZScsXG4gICdpbmNsdWRlUmVhZFByZWZlcmVuY2UnLFxuICAnc3VicXVlcnlSZWFkUHJlZmVyZW5jZScsXG5dO1xuXG5leHBvcnQgY2xhc3MgQ2xhc3Nlc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBjbGFzc05hbWUocmVxKSB7XG4gICAgcmV0dXJuIHJlcS5wYXJhbXMuY2xhc3NOYW1lO1xuICB9XG5cbiAgaGFuZGxlRmluZChyZXEpIHtcbiAgICBjb25zdCBib2R5ID0gT2JqZWN0LmFzc2lnbihyZXEuYm9keSB8fCB7fSwgQ2xhc3Nlc1JvdXRlci5KU09ORnJvbVF1ZXJ5KHJlcS5xdWVyeSkpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBDbGFzc2VzUm91dGVyLm9wdGlvbnNGcm9tQm9keShib2R5LCByZXEuY29uZmlnLmRlZmF1bHRMaW1pdCk7XG4gICAgaWYgKHJlcS5jb25maWcubWF4TGltaXQgJiYgYm9keS5saW1pdCA+IHJlcS5jb25maWcubWF4TGltaXQpIHtcbiAgICAgIC8vIFNpbGVudGx5IHJlcGxhY2UgdGhlIGxpbWl0IG9uIHRoZSBxdWVyeSB3aXRoIHRoZSBtYXggY29uZmlndXJlZFxuICAgICAgb3B0aW9ucy5saW1pdCA9IE51bWJlcihyZXEuY29uZmlnLm1heExpbWl0KTtcbiAgICB9XG4gICAgaWYgKGJvZHkucmVkaXJlY3RDbGFzc05hbWVGb3JLZXkpIHtcbiAgICAgIG9wdGlvbnMucmVkaXJlY3RDbGFzc05hbWVGb3JLZXkgPSBTdHJpbmcoYm9keS5yZWRpcmVjdENsYXNzTmFtZUZvcktleSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYm9keS53aGVyZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJvZHkud2hlcmUgPSBKU09OLnBhcnNlKGJvZHkud2hlcmUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdFxuICAgICAgLmZpbmQoXG4gICAgICAgIHJlcS5jb25maWcsXG4gICAgICAgIHJlcS5hdXRoLFxuICAgICAgICB0aGlzLmNsYXNzTmFtZShyZXEpLFxuICAgICAgICBib2R5LndoZXJlLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICByZXEuaW5mby5jbGllbnRTREssXG4gICAgICAgIHJlcS5pbmZvLmNvbnRleHRcbiAgICAgIClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2U6IHJlc3BvbnNlIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBwcm9taXNlIGZvciBhIHtyZXNwb25zZX0gb2JqZWN0LlxuICBoYW5kbGVHZXQocmVxKSB7XG4gICAgY29uc3QgYm9keSA9IE9iamVjdC5hc3NpZ24ocmVxLmJvZHkgfHwge30sIENsYXNzZXNSb3V0ZXIuSlNPTkZyb21RdWVyeShyZXEucXVlcnkpKTtcbiAgICBjb25zdCBvcHRpb25zID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhib2R5KSkge1xuICAgICAgaWYgKEFMTE9XRURfR0VUX1FVRVJZX0tFWVMuaW5kZXhPZihrZXkpID09PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9RVUVSWSwgJ0ltcHJvcGVyIGVuY29kZSBvZiBwYXJhbWV0ZXInKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYm9keS5rZXlzICE9IG51bGwpIHtcbiAgICAgIG9wdGlvbnMua2V5cyA9IFN0cmluZyhib2R5LmtleXMpO1xuICAgIH1cbiAgICBpZiAoYm9keS5pbmNsdWRlICE9IG51bGwpIHtcbiAgICAgIG9wdGlvbnMuaW5jbHVkZSA9IFN0cmluZyhib2R5LmluY2x1ZGUpO1xuICAgIH1cbiAgICBpZiAoYm9keS5leGNsdWRlS2V5cyAhPSBudWxsKSB7XG4gICAgICBvcHRpb25zLmV4Y2x1ZGVLZXlzID0gU3RyaW5nKGJvZHkuZXhjbHVkZUtleXMpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGJvZHkucmVhZFByZWZlcmVuY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBvcHRpb25zLnJlYWRQcmVmZXJlbmNlID0gYm9keS5yZWFkUHJlZmVyZW5jZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBib2R5LmluY2x1ZGVSZWFkUHJlZmVyZW5jZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9wdGlvbnMuaW5jbHVkZVJlYWRQcmVmZXJlbmNlID0gYm9keS5pbmNsdWRlUmVhZFByZWZlcmVuY2U7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYm9keS5zdWJxdWVyeVJlYWRQcmVmZXJlbmNlID09PSAnc3RyaW5nJykge1xuICAgICAgb3B0aW9ucy5zdWJxdWVyeVJlYWRQcmVmZXJlbmNlID0gYm9keS5zdWJxdWVyeVJlYWRQcmVmZXJlbmNlO1xuICAgIH1cblxuICAgIHJldHVybiByZXN0XG4gICAgICAuZ2V0KFxuICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICByZXEuYXV0aCxcbiAgICAgICAgdGhpcy5jbGFzc05hbWUocmVxKSxcbiAgICAgICAgcmVxLnBhcmFtcy5vYmplY3RJZCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgcmVxLmluZm8uY2xpZW50U0RLLFxuICAgICAgICByZXEuaW5mby5jb250ZXh0XG4gICAgICApXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2UucmVzdWx0cyB8fCByZXNwb25zZS5yZXN1bHRzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdPYmplY3Qgbm90IGZvdW5kLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY2xhc3NOYW1lKHJlcSkgPT09ICdfVXNlcicpIHtcbiAgICAgICAgICBkZWxldGUgcmVzcG9uc2UucmVzdWx0c1swXS5zZXNzaW9uVG9rZW47XG5cbiAgICAgICAgICBjb25zdCB1c2VyID0gcmVzcG9uc2UucmVzdWx0c1swXTtcblxuICAgICAgICAgIGlmIChyZXEuYXV0aC51c2VyICYmIHVzZXIub2JqZWN0SWQgPT0gcmVxLmF1dGgudXNlci5pZCkge1xuICAgICAgICAgICAgLy8gRm9yY2UgdGhlIHNlc3Npb24gdG9rZW5cbiAgICAgICAgICAgIHJlc3BvbnNlLnJlc3VsdHNbMF0uc2Vzc2lvblRva2VuID0gcmVxLmluZm8uc2Vzc2lvblRva2VuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByZXNwb25zZTogcmVzcG9uc2UucmVzdWx0c1swXSB9O1xuICAgICAgfSk7XG4gIH1cblxuICBoYW5kbGVDcmVhdGUocmVxKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5jbGFzc05hbWUocmVxKSA9PT0gJ19Vc2VyJyAmJlxuICAgICAgdHlwZW9mIHJlcS5ib2R5Py5vYmplY3RJZCA9PT0gJ3N0cmluZycgJiZcbiAgICAgIHJlcS5ib2R5Lm9iamVjdElkLnN0YXJ0c1dpdGgoJ3JvbGU6JylcbiAgICApIHtcbiAgICAgIHRocm93IGNyZWF0ZVNhbml0aXplZEVycm9yKFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sICdJbnZhbGlkIG9iamVjdCBJRC4nLCByZXEuY29uZmlnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3QuY3JlYXRlKFxuICAgICAgcmVxLmNvbmZpZyxcbiAgICAgIHJlcS5hdXRoLFxuICAgICAgdGhpcy5jbGFzc05hbWUocmVxKSxcbiAgICAgIHJlcS5ib2R5IHx8IHt9LFxuICAgICAgcmVxLmluZm8uY2xpZW50U0RLLFxuICAgICAgcmVxLmluZm8uY29udGV4dFxuICAgICk7XG4gIH1cblxuICBoYW5kbGVVcGRhdGUocmVxKSB7XG4gICAgY29uc3Qgd2hlcmUgPSB7IG9iamVjdElkOiByZXEucGFyYW1zLm9iamVjdElkIH07XG4gICAgcmV0dXJuIHJlc3QudXBkYXRlKFxuICAgICAgcmVxLmNvbmZpZyxcbiAgICAgIHJlcS5hdXRoLFxuICAgICAgdGhpcy5jbGFzc05hbWUocmVxKSxcbiAgICAgIHdoZXJlLFxuICAgICAgcmVxLmJvZHkgfHwge30sXG4gICAgICByZXEuaW5mby5jbGllbnRTREssXG4gICAgICByZXEuaW5mby5jb250ZXh0XG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShyZXEpIHtcbiAgICByZXR1cm4gcmVzdFxuICAgICAgLmRlbChyZXEuY29uZmlnLCByZXEuYXV0aCwgdGhpcy5jbGFzc05hbWUocmVxKSwgcmVxLnBhcmFtcy5vYmplY3RJZCwgcmVxLmluZm8uY29udGV4dClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2U6IHt9IH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBKU09ORnJvbVF1ZXJ5KHF1ZXJ5KSB7XG4gICAgY29uc3QganNvbiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8uZW50cmllcyhxdWVyeSkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGpzb25ba2V5XSA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGpzb25ba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBvcHRpb25zRnJvbUJvZHkoYm9keSwgZGVmYXVsdExpbWl0KSB7XG4gICAgY29uc3QgYWxsb3dDb25zdHJhaW50cyA9IFtcbiAgICAgICdza2lwJyxcbiAgICAgICdsaW1pdCcsXG4gICAgICAnb3JkZXInLFxuICAgICAgJ2NvdW50JyxcbiAgICAgICdrZXlzJyxcbiAgICAgICdleGNsdWRlS2V5cycsXG4gICAgICAnaW5jbHVkZScsXG4gICAgICAnaW5jbHVkZUFsbCcsXG4gICAgICAncmVkaXJlY3RDbGFzc05hbWVGb3JLZXknLFxuICAgICAgJ3doZXJlJyxcbiAgICAgICdyZWFkUHJlZmVyZW5jZScsXG4gICAgICAnaW5jbHVkZVJlYWRQcmVmZXJlbmNlJyxcbiAgICAgICdzdWJxdWVyeVJlYWRQcmVmZXJlbmNlJyxcbiAgICAgICdoaW50JyxcbiAgICAgICdleHBsYWluJyxcbiAgICAgICdjb21tZW50JyxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYm9keSkpIHtcbiAgICAgIGlmIChhbGxvd0NvbnN0cmFpbnRzLmluZGV4T2Yoa2V5KSA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksIGBJbnZhbGlkIHBhcmFtZXRlciBmb3IgcXVlcnk6ICR7a2V5fWApO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBvcHRpb25zID0ge307XG4gICAgaWYgKGJvZHkuc2tpcCkge1xuICAgICAgb3B0aW9ucy5za2lwID0gTnVtYmVyKGJvZHkuc2tpcCk7XG4gICAgfVxuICAgIGlmIChib2R5LmxpbWl0IHx8IGJvZHkubGltaXQgPT09IDApIHtcbiAgICAgIG9wdGlvbnMubGltaXQgPSBOdW1iZXIoYm9keS5saW1pdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMubGltaXQgPSBOdW1iZXIoZGVmYXVsdExpbWl0KTtcbiAgICB9XG4gICAgaWYgKGJvZHkub3JkZXIpIHtcbiAgICAgIG9wdGlvbnMub3JkZXIgPSBTdHJpbmcoYm9keS5vcmRlcik7XG4gICAgfVxuICAgIGlmIChib2R5LmNvdW50KSB7XG4gICAgICBvcHRpb25zLmNvdW50ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGJvZHkua2V5cyAhPSBudWxsKSB7XG4gICAgICBvcHRpb25zLmtleXMgPSBTdHJpbmcoYm9keS5rZXlzKTtcbiAgICB9XG4gICAgaWYgKGJvZHkuZXhjbHVkZUtleXMgIT0gbnVsbCkge1xuICAgICAgb3B0aW9ucy5leGNsdWRlS2V5cyA9IFN0cmluZyhib2R5LmV4Y2x1ZGVLZXlzKTtcbiAgICB9XG4gICAgaWYgKGJvZHkuaW5jbHVkZSAhPSBudWxsKSB7XG4gICAgICBvcHRpb25zLmluY2x1ZGUgPSBTdHJpbmcoYm9keS5pbmNsdWRlKTtcbiAgICB9XG4gICAgaWYgKGJvZHkuaW5jbHVkZUFsbCkge1xuICAgICAgb3B0aW9ucy5pbmNsdWRlQWxsID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBib2R5LnJlYWRQcmVmZXJlbmNlID09PSAnc3RyaW5nJykge1xuICAgICAgb3B0aW9ucy5yZWFkUHJlZmVyZW5jZSA9IGJvZHkucmVhZFByZWZlcmVuY2U7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYm9keS5pbmNsdWRlUmVhZFByZWZlcmVuY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBvcHRpb25zLmluY2x1ZGVSZWFkUHJlZmVyZW5jZSA9IGJvZHkuaW5jbHVkZVJlYWRQcmVmZXJlbmNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGJvZHkuc3VicXVlcnlSZWFkUHJlZmVyZW5jZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9wdGlvbnMuc3VicXVlcnlSZWFkUHJlZmVyZW5jZSA9IGJvZHkuc3VicXVlcnlSZWFkUHJlZmVyZW5jZTtcbiAgICB9XG4gICAgaWYgKGJvZHkuaGludCAmJiAodHlwZW9mIGJvZHkuaGludCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGJvZHkuaGludCA9PT0gJ29iamVjdCcpKSB7XG4gICAgICBvcHRpb25zLmhpbnQgPSBib2R5LmhpbnQ7XG4gICAgfVxuICAgIGlmIChib2R5LmV4cGxhaW4pIHtcbiAgICAgIG9wdGlvbnMuZXhwbGFpbiA9IGJvZHkuZXhwbGFpbjtcbiAgICB9XG4gICAgaWYgKGJvZHkuY29tbWVudCAmJiB0eXBlb2YgYm9keS5jb21tZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgb3B0aW9ucy5jb21tZW50ID0gYm9keS5jb21tZW50O1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoJ0dFVCcsICcvY2xhc3Nlcy86Y2xhc3NOYW1lJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUZpbmQocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL2NsYXNzZXMvOmNsYXNzTmFtZS86b2JqZWN0SWQnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlR2V0KHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvY2xhc3Nlcy86Y2xhc3NOYW1lJywgcHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5LCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlQ3JlYXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUFVUJywgJy9jbGFzc2VzLzpjbGFzc05hbWUvOm9iamVjdElkJywgcHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5LCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVXBkYXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnREVMRVRFJywgJy9jbGFzc2VzLzpjbGFzc05hbWUvOm9iamVjdElkJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZURlbGV0ZShyZXEpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENsYXNzZXNSb3V0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUFnRCxTQUFBRCx1QkFBQU8sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVoRCxNQUFNRyxzQkFBc0IsR0FBRyxDQUM3QixNQUFNLEVBQ04sU0FBUyxFQUNULGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixDQUN6QjtBQUVNLE1BQU1DLGFBQWEsU0FBU0Msc0JBQWEsQ0FBQztFQUMvQ0MsU0FBU0EsQ0FBQ0MsR0FBRyxFQUFFO0lBQ2IsT0FBT0EsR0FBRyxDQUFDQyxNQUFNLENBQUNGLFNBQVM7RUFDN0I7RUFFQUcsVUFBVUEsQ0FBQ0YsR0FBRyxFQUFFO0lBQ2QsTUFBTUcsSUFBSSxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ0wsR0FBRyxDQUFDRyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUVOLGFBQWEsQ0FBQ1MsYUFBYSxDQUFDTixHQUFHLENBQUNPLEtBQUssQ0FBQyxDQUFDO0lBQ2xGLE1BQU1D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
|
|
@@ -1,42 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.CloudCodeRouter =
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var _node = require('parse/node');
|
|
13
|
-
|
|
14
|
-
var _node2 = _interopRequireDefault(_node);
|
|
15
|
-
|
|
16
|
-
var _rest = require('../rest');
|
|
17
|
-
|
|
18
|
-
var _rest2 = _interopRequireDefault(_rest);
|
|
19
|
-
|
|
20
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
-
|
|
6
|
+
exports.CloudCodeRouter = void 0;
|
|
7
|
+
var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
|
|
8
|
+
var _node = _interopRequireDefault(require("parse/node"));
|
|
9
|
+
var _rest = _interopRequireDefault(require("../rest"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
11
|
const triggers = require('../triggers');
|
|
23
12
|
const middleware = require('../middlewares');
|
|
24
|
-
|
|
25
13
|
function formatJobSchedule(job_schedule) {
|
|
26
14
|
if (typeof job_schedule.startAfter === 'undefined') {
|
|
27
15
|
job_schedule.startAfter = new Date().toISOString();
|
|
28
16
|
}
|
|
29
17
|
return job_schedule;
|
|
30
18
|
}
|
|
31
|
-
|
|
32
19
|
function validateJobSchedule(config, job_schedule) {
|
|
33
20
|
const jobs = triggers.getJobs(config.applicationId) || {};
|
|
34
21
|
if (job_schedule.jobName && !jobs[job_schedule.jobName]) {
|
|
35
|
-
throw new
|
|
22
|
+
throw new _node.default.Error(_node.default.Error.INTERNAL_SERVER_ERROR, 'Cannot Schedule a job that is not deployed');
|
|
36
23
|
}
|
|
37
24
|
}
|
|
38
|
-
|
|
39
|
-
class CloudCodeRouter extends _PromiseRouter2.default {
|
|
25
|
+
class CloudCodeRouter extends _PromiseRouter.default {
|
|
40
26
|
mountRoutes() {
|
|
41
27
|
this.route('GET', '/cloud_code/jobs', middleware.promiseEnforceMasterKeyAccess, CloudCodeRouter.getJobs);
|
|
42
28
|
this.route('GET', '/cloud_code/jobs/data', middleware.promiseEnforceMasterKeyAccess, CloudCodeRouter.getJobsData);
|
|
@@ -44,19 +30,17 @@ class CloudCodeRouter extends _PromiseRouter2.default {
|
|
|
44
30
|
this.route('PUT', '/cloud_code/jobs/:objectId', middleware.promiseEnforceMasterKeyAccess, CloudCodeRouter.editJob);
|
|
45
31
|
this.route('DELETE', '/cloud_code/jobs/:objectId', middleware.promiseEnforceMasterKeyAccess, CloudCodeRouter.deleteJob);
|
|
46
32
|
}
|
|
47
|
-
|
|
48
33
|
static getJobs(req) {
|
|
49
|
-
return
|
|
34
|
+
return _rest.default.find(req.config, req.auth, '_JobSchedule', {}, {}).then(scheduledJobs => {
|
|
50
35
|
return {
|
|
51
36
|
response: scheduledJobs.results
|
|
52
37
|
};
|
|
53
38
|
});
|
|
54
39
|
}
|
|
55
|
-
|
|
56
40
|
static getJobsData(req) {
|
|
57
41
|
const config = req.config;
|
|
58
42
|
const jobs = triggers.getJobs(config.applicationId) || {};
|
|
59
|
-
return
|
|
43
|
+
return _rest.default.find(req.config, req.auth, '_JobSchedule', {}, {}).then(scheduledJobs => {
|
|
60
44
|
return {
|
|
61
45
|
response: {
|
|
62
46
|
in_use: scheduledJobs.results.map(job => job.jobName),
|
|
@@ -65,27 +49,34 @@ class CloudCodeRouter extends _PromiseRouter2.default {
|
|
|
65
49
|
};
|
|
66
50
|
});
|
|
67
51
|
}
|
|
68
|
-
|
|
69
52
|
static createJob(req) {
|
|
70
|
-
const {
|
|
53
|
+
const {
|
|
54
|
+
job_schedule
|
|
55
|
+
} = req.body || {};
|
|
71
56
|
validateJobSchedule(req.config, job_schedule);
|
|
72
|
-
return
|
|
57
|
+
return _rest.default.create(req.config, req.auth, '_JobSchedule', formatJobSchedule(job_schedule), req.client, req.info.context);
|
|
73
58
|
}
|
|
74
|
-
|
|
75
59
|
static editJob(req) {
|
|
76
|
-
const {
|
|
77
|
-
|
|
60
|
+
const {
|
|
61
|
+
objectId
|
|
62
|
+
} = req.params;
|
|
63
|
+
const {
|
|
64
|
+
job_schedule
|
|
65
|
+
} = req.body || {};
|
|
78
66
|
validateJobSchedule(req.config, job_schedule);
|
|
79
|
-
return
|
|
67
|
+
return _rest.default.update(req.config, req.auth, '_JobSchedule', {
|
|
68
|
+
objectId
|
|
69
|
+
}, formatJobSchedule(job_schedule), undefined, req.info.context).then(response => {
|
|
80
70
|
return {
|
|
81
71
|
response
|
|
82
72
|
};
|
|
83
73
|
});
|
|
84
74
|
}
|
|
85
|
-
|
|
86
75
|
static deleteJob(req) {
|
|
87
|
-
const {
|
|
88
|
-
|
|
76
|
+
const {
|
|
77
|
+
objectId
|
|
78
|
+
} = req.params;
|
|
79
|
+
return _rest.default.del(req.config, req.auth, '_JobSchedule', objectId, req.info.context).then(response => {
|
|
89
80
|
return {
|
|
90
81
|
response
|
|
91
82
|
};
|
|
@@ -93,4 +84,4 @@ class CloudCodeRouter extends _PromiseRouter2.default {
|
|
|
93
84
|
}
|
|
94
85
|
}
|
|
95
86
|
exports.CloudCodeRouter = CloudCodeRouter;
|
|
96
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX25vZGUiLCJfcmVzdCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsInRyaWdnZXJzIiwibWlkZGxld2FyZSIsImZvcm1hdEpvYlNjaGVkdWxlIiwiam9iX3NjaGVkdWxlIiwic3RhcnRBZnRlciIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsInZhbGlkYXRlSm9iU2NoZWR1bGUiLCJjb25maWciLCJqb2JzIiwiZ2V0Sm9icyIsImFwcGxpY2F0aW9uSWQiLCJqb2JOYW1lIiwiUGFyc2UiLCJFcnJvciIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsIkNsb3VkQ29kZVJvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwicHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJnZXRKb2JzRGF0YSIsImNyZWF0ZUpvYiIsImVkaXRKb2IiLCJkZWxldGVKb2IiLCJyZXEiLCJyZXN0IiwiZmluZCIsImF1dGgiLCJ0aGVuIiwic2NoZWR1bGVkSm9icyIsInJlc3BvbnNlIiwicmVzdWx0cyIsImluX3VzZSIsIm1hcCIsImpvYiIsIk9iamVjdCIsImtleXMiLCJib2R5IiwiY3JlYXRlIiwiY2xpZW50IiwiaW5mbyIsImNvbnRleHQiLCJvYmplY3RJZCIsInBhcmFtcyIsInVwZGF0ZSIsInVuZGVmaW5lZCIsImRlbCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9DbG91ZENvZGVSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgcmVzdCBmcm9tICcuLi9yZXN0JztcbmNvbnN0IHRyaWdnZXJzID0gcmVxdWlyZSgnLi4vdHJpZ2dlcnMnKTtcbmNvbnN0IG1pZGRsZXdhcmUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlcycpO1xuXG5mdW5jdGlvbiBmb3JtYXRKb2JTY2hlZHVsZShqb2Jfc2NoZWR1bGUpIHtcbiAgaWYgKHR5cGVvZiBqb2Jfc2NoZWR1bGUuc3RhcnRBZnRlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBqb2Jfc2NoZWR1bGUuc3RhcnRBZnRlciA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgfVxuICByZXR1cm4gam9iX3NjaGVkdWxlO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUpvYlNjaGVkdWxlKGNvbmZpZywgam9iX3NjaGVkdWxlKSB7XG4gIGNvbnN0IGpvYnMgPSB0cmlnZ2Vycy5nZXRKb2JzKGNvbmZpZy5hcHBsaWNhdGlvbklkKSB8fCB7fTtcbiAgaWYgKGpvYl9zY2hlZHVsZS5qb2JOYW1lICYmICFqb2JzW2pvYl9zY2hlZHVsZS5qb2JOYW1lXSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLklOVEVSTkFMX1NFUlZFUl9FUlJPUixcbiAgICAgICdDYW5ub3QgU2NoZWR1bGUgYSBqb2IgdGhhdCBpcyBub3QgZGVwbG95ZWQnXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xvdWRDb2RlUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnR0VUJyxcbiAgICAgICcvY2xvdWRfY29kZS9qb2JzJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICBDbG91ZENvZGVSb3V0ZXIuZ2V0Sm9ic1xuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9jbG91ZF9jb2RlL2pvYnMvZGF0YScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgQ2xvdWRDb2RlUm91dGVyLmdldEpvYnNEYXRhXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9jbG91ZF9jb2RlL2pvYnMnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIENsb3VkQ29kZVJvdXRlci5jcmVhdGVKb2JcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUFVUJyxcbiAgICAgICcvY2xvdWRfY29kZS9qb2JzLzpvYmplY3RJZCcsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgQ2xvdWRDb2RlUm91dGVyLmVkaXRKb2JcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnREVMRVRFJyxcbiAgICAgICcvY2xvdWRfY29kZS9qb2JzLzpvYmplY3RJZCcsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgQ2xvdWRDb2RlUm91dGVyLmRlbGV0ZUpvYlxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgZ2V0Sm9icyhyZXEpIHtcbiAgICByZXR1cm4gcmVzdC5maW5kKHJlcS5jb25maWcsIHJlcS5hdXRoLCAnX0pvYlNjaGVkdWxlJywge30sIHt9KS50aGVuKHNjaGVkdWxlZEpvYnMgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzcG9uc2U6IHNjaGVkdWxlZEpvYnMucmVzdWx0cyxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0Sm9ic0RhdGEocmVxKSB7XG4gICAgY29uc3QgY29uZmlnID0gcmVxLmNvbmZpZztcbiAgICBjb25zdCBqb2JzID0gdHJpZ2dlcnMuZ2V0Sm9icyhjb25maWcuYXBwbGljYXRpb25JZCkgfHwge307XG4gICAgcmV0dXJuIHJlc3QuZmluZChyZXEuY29uZmlnLCByZXEuYXV0aCwgJ19Kb2JTY2hlZHVsZScsIHt9LCB7fSkudGhlbihzY2hlZHVsZWRKb2JzID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgaW5fdXNlOiBzY2hlZHVsZWRKb2JzLnJlc3VsdHMubWFwKGpvYiA9PiBqb2Iuam9iTmFtZSksXG4gICAgICAgICAgam9iczogT2JqZWN0LmtleXMoam9icyksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUpvYihyZXEpIHtcbiAgICBjb25zdCB7IGpvYl9zY2hlZHVsZSB9ID0gcmVxLmJvZHkgfHwge307XG4gICAgdmFsaWRhdGVKb2JTY2hlZHVsZShyZXEuY29uZmlnLCBqb2Jfc2NoZWR1bGUpO1xuICAgIHJldHVybiByZXN0LmNyZWF0ZShcbiAgICAgIHJlcS5jb25maWcsXG4gICAgICByZXEuYXV0aCxcbiAgICAgICdfSm9iU2NoZWR1bGUnLFxuICAgICAgZm9ybWF0Sm9iU2NoZWR1bGUoam9iX3NjaGVkdWxlKSxcbiAgICAgIHJlcS5jbGllbnQsXG4gICAgICByZXEuaW5mby5jb250ZXh0XG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBlZGl0Sm9iKHJlcSkge1xuICAgIGNvbnN0IHsgb2JqZWN0SWQgfSA9IHJlcS5wYXJhbXM7XG4gICAgY29uc3QgeyBqb2Jfc2NoZWR1bGUgfSA9IHJlcS5ib2R5IHx8IHt9O1xuICAgIHZhbGlkYXRlSm9iU2NoZWR1bGUocmVxLmNvbmZpZywgam9iX3NjaGVkdWxlKTtcbiAgICByZXR1cm4gcmVzdFxuICAgICAgLnVwZGF0ZShcbiAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGgsXG4gICAgICAgICdfSm9iU2NoZWR1bGUnLFxuICAgICAgICB7IG9iamVjdElkIH0sXG4gICAgICAgIGZvcm1hdEpvYlNjaGVkdWxlKGpvYl9zY2hlZHVsZSksXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgcmVxLmluZm8uY29udGV4dFxuICAgICAgKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZGVsZXRlSm9iKHJlcSkge1xuICAgIGNvbnN0IHsgb2JqZWN0SWQgfSA9IHJlcS5wYXJhbXM7XG4gICAgcmV0dXJuIHJlc3RcbiAgICAgIC5kZWwocmVxLmNvbmZpZywgcmVxLmF1dGgsICdfSm9iU2NoZWR1bGUnLCBvYmplY3RJZCwgcmVxLmluZm8uY29udGV4dClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUEyQixTQUFBRCx1QkFBQUksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUMzQixNQUFNRyxRQUFRLEdBQUdOLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdkMsTUFBTU8sVUFBVSxHQUFHUCxPQUFPLENBQUMsZ0JBQWdCLENBQUM7QUFFNUMsU0FBU1EsaUJBQWlCQSxDQUFDQyxZQUFZLEVBQUU7RUFDdkMsSUFBSSxPQUFPQSxZQUFZLENBQUNDLFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDbERELFlBQVksQ0FBQ0MsVUFBVSxHQUFHLElBQUlDLElBQUksQ0FBQyxDQUFDLENBQUNDLFdBQVcsQ0FBQyxDQUFDO0VBQ3BEO0VBQ0EsT0FBT0gsWUFBWTtBQUNyQjtBQUVBLFNBQVNJLG1CQUFtQkEsQ0FBQ0MsTUFBTSxFQUFFTCxZQUFZLEVBQUU7RUFDakQsTUFBTU0sSUFBSSxHQUFHVCxRQUFR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
|
|
@@ -1,27 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.FeaturesRouter =
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var _middlewares = require('../middlewares');
|
|
15
|
-
|
|
16
|
-
var middleware = _interopRequireWildcard(_middlewares);
|
|
17
|
-
|
|
18
|
-
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
|
19
|
-
|
|
20
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
-
|
|
22
|
-
class FeaturesRouter extends _PromiseRouter2.default {
|
|
6
|
+
exports.FeaturesRouter = void 0;
|
|
7
|
+
var _package = require("../../package.json");
|
|
8
|
+
var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
|
|
9
|
+
var middleware = _interopRequireWildcard(require("../middlewares"));
|
|
10
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
class FeaturesRouter extends _PromiseRouter.default {
|
|
23
13
|
mountRoutes() {
|
|
24
14
|
this.route('GET', '/serverInfo', middleware.promiseEnforceMasterKeyAccess, req => {
|
|
15
|
+
const {
|
|
16
|
+
config
|
|
17
|
+
} = req;
|
|
25
18
|
const features = {
|
|
26
19
|
globalConfig: {
|
|
27
20
|
create: true,
|
|
@@ -46,9 +39,9 @@ class FeaturesRouter extends _PromiseRouter2.default {
|
|
|
46
39
|
from: true
|
|
47
40
|
},
|
|
48
41
|
push: {
|
|
49
|
-
immediatePush:
|
|
50
|
-
scheduledPush:
|
|
51
|
-
storedPushData:
|
|
42
|
+
immediatePush: config.hasPushSupport,
|
|
43
|
+
scheduledPush: config.hasPushScheduledSupport,
|
|
44
|
+
storedPushData: config.hasPushSupport,
|
|
52
45
|
pushAudiences: true,
|
|
53
46
|
localization: true
|
|
54
47
|
},
|
|
@@ -61,15 +54,19 @@ class FeaturesRouter extends _PromiseRouter2.default {
|
|
|
61
54
|
exportClass: false,
|
|
62
55
|
editClassLevelPermissions: true,
|
|
63
56
|
editPointerPermissions: true
|
|
57
|
+
},
|
|
58
|
+
settings: {
|
|
59
|
+
securityCheck: !!config.security?.enableCheck
|
|
64
60
|
}
|
|
65
61
|
};
|
|
66
|
-
|
|
67
|
-
|
|
62
|
+
return {
|
|
63
|
+
response: {
|
|
68
64
|
features: features,
|
|
69
65
|
parseServerVersion: _package.version
|
|
70
|
-
}
|
|
66
|
+
}
|
|
67
|
+
};
|
|
71
68
|
});
|
|
72
69
|
}
|
|
73
70
|
}
|
|
74
71
|
exports.FeaturesRouter = FeaturesRouter;
|
|
75
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGFja2FnZSIsInJlcXVpcmUiLCJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJtaWRkbGV3YXJlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJGZWF0dXJlc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwicHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJyZXEiLCJjb25maWciLCJmZWF0dXJlcyIsImdsb2JhbENvbmZpZyIsImNyZWF0ZSIsInJlYWQiLCJ1cGRhdGUiLCJkZWxldGUiLCJob29rcyIsImNsb3VkQ29kZSIsImpvYnMiLCJsb2dzIiwibGV2ZWwiLCJzaXplIiwib3JkZXIiLCJ1bnRpbCIsImZyb20iLCJwdXNoIiwiaW1tZWRpYXRlUHVzaCIsImhhc1B1c2hTdXBwb3J0Iiwic2NoZWR1bGVkUHVzaCIsImhhc1B1c2hTY2hlZHVsZWRTdXBwb3J0Iiwic3RvcmVkUHVzaERhdGEiLCJwdXNoQXVkaWVuY2VzIiwibG9jYWxpemF0aW9uIiwic2NoZW1hcyIsImFkZEZpZWxkIiwicmVtb3ZlRmllbGQiLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwiY2xlYXJBbGxEYXRhRnJvbUNsYXNzIiwiZXhwb3J0Q2xhc3MiLCJlZGl0Q2xhc3NMZXZlbFBlcm1pc3Npb25zIiwiZWRpdFBvaW50ZXJQZXJtaXNzaW9ucyIsInNldHRpbmdzIiwic2VjdXJpdHlDaGVjayIsInNlY3VyaXR5IiwiZW5hYmxlQ2hlY2siLCJyZXNwb25zZSIsInBhcnNlU2VydmVyVmVyc2lvbiIsInZlcnNpb24iLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvRmVhdHVyZXNSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4uLy4uL3BhY2thZ2UuanNvbic7XG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuXG5leHBvcnQgY2xhc3MgRmVhdHVyZXNSb3V0ZXIgZXh0ZW5kcyBQcm9taXNlUm91dGVyIHtcbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9zZXJ2ZXJJbmZvJywgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcywgcmVxID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnIH0gPSByZXE7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IHtcbiAgICAgICAgZ2xvYmFsQ29uZmlnOiB7XG4gICAgICAgICAgY3JlYXRlOiB0cnVlLFxuICAgICAgICAgIHJlYWQ6IHRydWUsXG4gICAgICAgICAgdXBkYXRlOiB0cnVlLFxuICAgICAgICAgIGRlbGV0ZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICBjcmVhdGU6IHRydWUsXG4gICAgICAgICAgcmVhZDogdHJ1ZSxcbiAgICAgICAgICB1cGRhdGU6IHRydWUsXG4gICAgICAgICAgZGVsZXRlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbG91ZENvZGU6IHtcbiAgICAgICAgICBqb2JzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsb2dzOiB7XG4gICAgICAgICAgbGV2ZWw6IHRydWUsXG4gICAgICAgICAgc2l6ZTogdHJ1ZSxcbiAgICAgICAgICBvcmRlcjogdHJ1ZSxcbiAgICAgICAgICB1bnRpbDogdHJ1ZSxcbiAgICAgICAgICBmcm9tOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwdXNoOiB7XG4gICAgICAgICAgaW1tZWRpYXRlUHVzaDogY29uZmlnLmhhc1B1c2hTdXBwb3J0LFxuICAgICAgICAgIHNjaGVkdWxlZFB1c2g6IGNvbmZpZy5oYXNQdXNoU2NoZWR1bGVkU3VwcG9ydCxcbiAgICAgICAgICBzdG9yZWRQdXNoRGF0YTogY29uZmlnLmhhc1B1c2hTdXBwb3J0LFxuICAgICAgICAgIHB1c2hBdWRpZW5jZXM6IHRydWUsXG4gICAgICAgICAgbG9jYWxpemF0aW9uOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzY2hlbWFzOiB7XG4gICAgICAgICAgYWRkRmllbGQ6IHRydWUsXG4gICAgICAgICAgcmVtb3ZlRmllbGQ6IHRydWUsXG4gICAgICAgICAgYWRkQ2xhc3M6IHRydWUsXG4gICAgICAgICAgcmVtb3ZlQ2xhc3M6IHRydWUsXG4gICAgICAgICAgY2xlYXJBbGxEYXRhRnJvbUNsYXNzOiB0cnVlLFxuICAgICAgICAgIGV4cG9ydENsYXNzOiBmYWxzZSxcbiAgICAgICAgICBlZGl0Q2xhc3NMZXZlbFBlcm1pc3Npb25zOiB0cnVlLFxuICAgICAgICAgIGVkaXRQb2ludGVyUGVybWlzc2lvbnM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgc2VjdXJpdHlDaGVjazogISFjb25maWcuc2VjdXJpdHk/LmVuYWJsZUNoZWNrLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICBmZWF0dXJlczogZmVhdHVyZXMsXG4gICAgICAgICAgcGFyc2VTZXJ2ZXJWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFD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
|