parse-server 5.3.0-alpha.2 → 5.3.0-alpha.20
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 +50 -44
- package/lib/Adapters/Auth/gcenter.js +104 -30
- package/lib/Adapters/Cache/LRUCache.js +2 -2
- package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +29 -20
- package/lib/Auth.js +11 -1
- package/lib/Controllers/DatabaseController.js +4 -3
- package/lib/Controllers/LiveQueryController.js +9 -1
- package/lib/Controllers/SchemaController.js +13 -6
- package/lib/Controllers/index.js +3 -2
- package/lib/Deprecator/Deprecations.js +4 -1
- package/lib/GraphQL/ParseGraphQLSchema.js +39 -58
- package/lib/GraphQL/ParseGraphQLServer.js +37 -26
- package/lib/GraphQL/helpers/objectsQueries.js +5 -11
- package/lib/GraphQL/loaders/defaultGraphQLTypes.js +14 -11
- package/lib/GraphQL/loaders/defaultRelaySchema.js +2 -2
- package/lib/GraphQL/loaders/filesMutations.js +9 -22
- package/lib/GraphQL/loaders/schemaDirectives.js +51 -42
- package/lib/GraphQL/loaders/schemaTypes.js +14 -14
- package/lib/GraphQL/parseGraphQLUtils.js +5 -3
- package/lib/GraphQL/transformers/mutation.js +2 -2
- package/lib/GraphQL/transformers/query.js +3 -3
- package/lib/LiveQuery/ParseCloudCodePublisher.js +11 -1
- package/lib/LiveQuery/ParseLiveQueryServer.js +78 -17
- package/lib/LiveQuery/ParseWebSocketServer.js +8 -2
- package/lib/LiveQuery/SessionTokenCache.js +2 -2
- package/lib/Options/Definitions.js +55 -38
- package/lib/Options/docs.js +19 -2
- package/lib/Options/index.js +1 -1
- package/lib/RestWrite.js +33 -3
- package/lib/Routers/FilesRouter.js +23 -14
- package/lib/SchemaMigrations/Migrations.js +1 -1
- package/lib/cloud-code/Parse.Cloud.js +36 -16
- package/lib/triggers.js +7 -18
- package/package.json +34 -34
|
@@ -7,13 +7,7 @@ exports.ParseGraphQLServer = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _cors = _interopRequireDefault(require("cors"));
|
|
9
9
|
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
var _graphqlUpload = require("graphql-upload");
|
|
13
|
-
|
|
14
|
-
var _expressApollo = require("apollo-server-express/dist/expressApollo");
|
|
15
|
-
|
|
16
|
-
var _graphqlPlaygroundHtml = require("@apollographql/graphql-playground-html");
|
|
10
|
+
var _node = require("@graphql-yoga/node");
|
|
17
11
|
|
|
18
12
|
var _graphql = require("graphql");
|
|
19
13
|
|
|
@@ -55,18 +49,24 @@ class ParseGraphQLServer {
|
|
|
55
49
|
});
|
|
56
50
|
}
|
|
57
51
|
|
|
58
|
-
async _getGraphQLOptions(
|
|
52
|
+
async _getGraphQLOptions() {
|
|
59
53
|
try {
|
|
60
54
|
return {
|
|
61
55
|
schema: await this.parseGraphQLSchema.load(),
|
|
62
|
-
context: {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
56
|
+
context: ({
|
|
57
|
+
req: {
|
|
58
|
+
info,
|
|
59
|
+
config,
|
|
60
|
+
auth
|
|
61
|
+
}
|
|
62
|
+
}) => ({
|
|
63
|
+
info,
|
|
64
|
+
config,
|
|
65
|
+
auth
|
|
66
|
+
}),
|
|
67
|
+
maskedErrors: false,
|
|
68
|
+
multipart: {
|
|
69
|
+
fileSize: this._transformMaxUploadSizeToBytes(this.parseServer.config.maxUploadSize || '20mb')
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
72
|
} catch (e) {
|
|
@@ -75,6 +75,19 @@ class ParseGraphQLServer {
|
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
async _getServer() {
|
|
79
|
+
const schemaRef = this.parseGraphQLSchema.graphQLSchema;
|
|
80
|
+
const newSchemaRef = await this.parseGraphQLSchema.load();
|
|
81
|
+
|
|
82
|
+
if (schemaRef === newSchemaRef && this._server) {
|
|
83
|
+
return this._server;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const options = await this._getGraphQLOptions();
|
|
87
|
+
this._server = (0, _node.createServer)(options);
|
|
88
|
+
return this._server;
|
|
89
|
+
}
|
|
90
|
+
|
|
78
91
|
_transformMaxUploadSizeToBytes(maxUploadSize) {
|
|
79
92
|
const unitMap = {
|
|
80
93
|
kb: 1,
|
|
@@ -89,14 +102,13 @@ class ParseGraphQLServer {
|
|
|
89
102
|
(0, _requiredParameter.default)('You must provide an Express.js app instance!');
|
|
90
103
|
}
|
|
91
104
|
|
|
92
|
-
app.use(this.config.graphQLPath, (0, _graphqlUpload.graphqlUploadExpress)({
|
|
93
|
-
maxFileSize: this._transformMaxUploadSizeToBytes(this.parseServer.config.maxUploadSize || '20mb')
|
|
94
|
-
}));
|
|
95
105
|
app.use(this.config.graphQLPath, (0, _cors.default)());
|
|
96
|
-
app.use(this.config.graphQLPath, _bodyParser.default.json());
|
|
97
106
|
app.use(this.config.graphQLPath, _middlewares.handleParseHeaders);
|
|
98
107
|
app.use(this.config.graphQLPath, _middlewares.handleParseErrors);
|
|
99
|
-
app.use(this.config.graphQLPath, (
|
|
108
|
+
app.use(this.config.graphQLPath, async (req, res) => {
|
|
109
|
+
const server = await this._getServer();
|
|
110
|
+
return server(req, res);
|
|
111
|
+
});
|
|
100
112
|
}
|
|
101
113
|
|
|
102
114
|
applyPlayground(app) {
|
|
@@ -106,14 +118,13 @@ class ParseGraphQLServer {
|
|
|
106
118
|
|
|
107
119
|
app.get(this.config.playgroundPath || (0, _requiredParameter.default)('You must provide a config.playgroundPath to applyPlayground!'), (_req, res) => {
|
|
108
120
|
res.setHeader('Content-Type', 'text/html');
|
|
109
|
-
res.write((0,
|
|
121
|
+
res.write((0, _node.renderGraphiQL)({
|
|
110
122
|
endpoint: this.config.graphQLPath,
|
|
111
|
-
version: '1.7.25',
|
|
112
123
|
subscriptionEndpoint: this.config.subscriptionsPath,
|
|
113
|
-
headers: {
|
|
124
|
+
headers: JSON.stringify({
|
|
114
125
|
'X-Parse-Application-Id': this.parseServer.config.appId,
|
|
115
126
|
'X-Parse-Master-Key': this.parseServer.config.masterKey
|
|
116
|
-
}
|
|
127
|
+
})
|
|
117
128
|
}));
|
|
118
129
|
res.end();
|
|
119
130
|
});
|
|
@@ -137,4 +148,4 @@ class ParseGraphQLServer {
|
|
|
137
148
|
}
|
|
138
149
|
|
|
139
150
|
exports.ParseGraphQLServer = ParseGraphQLServer;
|
|
140
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9HcmFwaFFML1BhcnNlR3JhcGhRTFNlcnZlci5qcyJdLCJuYW1lcyI6WyJQYXJzZUdyYXBoUUxTZXJ2ZXIiLCJjb25zdHJ1Y3RvciIsInBhcnNlU2VydmVyIiwiY29uZmlnIiwiZ3JhcGhRTFBhdGgiLCJwYXJzZUdyYXBoUUxDb250cm9sbGVyIiwibG9nIiwibG9nZ2VyQ29udHJvbGxlciIsImRlZmF1bHRMb2dnZXIiLCJwYXJzZUdyYXBoUUxTY2hlbWEiLCJQYXJzZUdyYXBoUUxTY2hlbWEiLCJkYXRhYmFzZUNvbnRyb2xsZXIiLCJncmFwaFFMQ3VzdG9tVHlwZURlZnMiLCJhcHBJZCIsIl9nZXRHcmFwaFFMT3B0aW9ucyIsInJlcSIsInNjaGVtYSIsImxvYWQiLCJjb250ZXh0IiwiaW5mbyIsImF1dGgiLCJmb3JtYXRFcnJvciIsImVycm9yIiwiZSIsInN0YWNrIiwidG9TdHJpbmciLCJfdHJhbnNmb3JtTWF4VXBsb2FkU2l6ZVRvQnl0ZXMiLCJtYXhVcGxvYWRTaXplIiwidW5pdE1hcCIsImtiIiwibWIiLCJnYiIsIk51bWJlciIsInNsaWNlIiwiTWF0aCIsInBvdyIsInRvTG93ZXJDYXNlIiwiYXBwbHlHcmFwaFFMIiwiYXBwIiwidXNlIiwibWF4RmlsZVNpemUiLCJib2R5UGFyc2VyIiwianNvbiIsImhhbmRsZVBhcnNlSGVhZGVycyIsImhhbmRsZVBhcnNlRXJyb3JzIiwiYXBwbHlQbGF5Z3JvdW5kIiwiZ2V0IiwicGxheWdyb3VuZFBhdGgiLCJfcmVxIiwicmVzIiwic2V0SGVhZGVyIiwid3JpdGUiLCJlbmRwb2ludCIsInZlcnNpb24iLCJzdWJzY3JpcHRpb25FbmRwb2ludCIsInN1YnNjcmlwdGlvbnNQYXRoIiwiaGVhZGVycyIsIm1hc3RlcktleSIsImVuZCIsImNyZWF0ZVN1YnNjcmlwdGlvbnMiLCJzZXJ2ZXIiLCJTdWJzY3JpcHRpb25TZXJ2ZXIiLCJjcmVhdGUiLCJleGVjdXRlIiwic3Vic2NyaWJlIiwib25PcGVyYXRpb24iLCJfbWVzc2FnZSIsInBhcmFtcyIsIndlYlNvY2tldCIsIk9iamVjdCIsImFzc2lnbiIsInVwZ3JhZGVSZXEiLCJwYXRoIiwic2V0R3JhcGhRTENvbmZpZyIsImdyYXBoUUxDb25maWciLCJ1cGRhdGVHcmFwaFFMQ29uZmlnIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBRUEsTUFBTUEsa0JBQU4sQ0FBeUI7QUFHdkJDLEVBQUFBLFdBQVcsQ0FBQ0MsV0FBRCxFQUFjQyxNQUFkLEVBQXNCO0FBQy9CLFNBQUtELFdBQUwsR0FBbUJBLFdBQVcsSUFBSSxnQ0FBa0IsMENBQWxCLENBQWxDOztBQUNBLFFBQUksQ0FBQ0MsTUFBRCxJQUFXLENBQUNBLE1BQU0sQ0FBQ0MsV0FBdkIsRUFBb0M7QUFDbEMsc0NBQWtCLHdDQUFsQjtBQUNEOztBQUNELFNBQUtELE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUtFLHNCQUFMLEdBQThCLEtBQUtILFdBQUwsQ0FBaUJDLE1BQWpCLENBQXdCRSxzQkFBdEQ7QUFDQSxTQUFLQyxHQUFMLEdBQ0csS0FBS0osV0FBTCxDQUFpQkMsTUFBakIsSUFBMkIsS0FBS0QsV0FBTCxDQUFpQkMsTUFBakIsQ0FBd0JJLGdCQUFwRCxJQUF5RUMsZUFEM0U7QUFFQSxTQUFLQyxrQkFBTCxHQUEwQixJQUFJQyxzQ0FBSixDQUF1QjtBQUMvQ0wsTUFBQUEsc0JBQXNCLEVBQUUsS0FBS0Esc0JBRGtCO0FBRS9DTSxNQUFBQSxrQkFBa0IsRUFBRSxLQUFLVCxXQUFMLENBQWlCQyxNQUFqQixDQUF3QlEsa0JBRkc7QUFHL0NMLE1BQUFBLEdBQUcsRUFBRSxLQUFLQSxHQUhxQztBQUkvQ00sTUFBQUEscUJBQXFCLEVBQUUsS0FBS1QsTUFBTCxDQUFZUyxxQkFKWTtBQUsvQ0MsTUFBQUEsS0FBSyxFQUFFLEtBQUtYLFdBQUwsQ0FBaUJDLE1BQWpCLENBQXdC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QixDQUFnREQsYUFBaEQsQ0FBUDtBQUNEOztBQXpIc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29yc01pZGRsZXdhcmUgZnJvbSAnY29ycyc7XG5pbXBvcnQgYm9keVBhcnNlciBmcm9tICdib2R5LXBhcnNlcic7XG5pbXBvcnQgeyBncmFwaHFsVXBsb2FkRXhwcmVzcyB9IGZyb20gJ2dyYXBocWwtdXBsb2FkJztcbmltcG9ydCB7IGdyYXBocWxFeHByZXNzIH0gZnJvbSAnYXBvbGxvLXNlcnZlci1leHByZXNzL2Rpc3QvZXhwcmVzc0Fwb2xsbyc7XG5pbXBvcnQgeyByZW5kZXJQbGF5Z3JvdW5kUGFnZSB9IGZyb20gJ0BhcG9sbG9ncmFwaHFsL2dyYXBocWwtcGxheWdyb3VuZC1odG1sJztcbmltcG9ydCB7IGV4ZWN1dGUsIHN1YnNjcmliZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uU2VydmVyIH0gZnJvbSAnc3Vic2NyaXB0aW9ucy10cmFuc3BvcnQtd3MnO1xuaW1wb3J0IHsgaGFuZGxlUGFyc2VFcnJvcnMsIGhhbmRsZVBhcnNlSGVhZGVycyB9IGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCByZXF1aXJlZFBhcmFtZXRlciBmcm9tICcuLi9yZXF1aXJlZFBhcmFtZXRlcic7XG5pbXBvcnQgZGVmYXVsdExvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgUGFyc2VHcmFwaFFMU2NoZW1hIH0gZnJvbSAnLi9QYXJzZUdyYXBoUUxTY2hlbWEnO1xuaW1wb3J0IFBhcnNlR3JhcGhRTENvbnRyb2xsZXIsIHsgUGFyc2VHcmFwaFFMQ29uZmlnIH0gZnJvbSAnLi4vQ29udHJvbGxlcnMvUGFyc2VHcmFwaFFMQ29udHJvbGxlcic7XG5cbmNsYXNzIFBhcnNlR3JhcGhRTFNlcnZlciB7XG4gIHBhcnNlR3JhcGhRTENvbnRyb2xsZXI6IFBhcnNlR3JhcGhRTENvbnRyb2xsZXI7XG5cbiAgY29uc3RydWN0b3IocGFyc2VTZXJ2ZXIsIGNvbmZpZykge1xuICAgIHRoaXMucGFyc2VTZXJ2ZXIgPSBwYXJzZVNlcnZlciB8fCByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhIHBhcnNlU2VydmVyIGluc3RhbmNlIScpO1xuICAgIGlmICghY29uZmlnIHx8ICFjb25maWcuZ3JhcGhRTFBhdGgpIHtcbiAgICAgIHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGEgY29uZmlnLmdyYXBoUUxQYXRoIScpO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnBhcnNlR3JhcGhRTENvbnRyb2xsZXIgPSB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5wYXJzZUdyYXBoUUxDb250cm9sbGVyO1xuICAgIHRoaXMubG9nID1cbiAgICAgICh0aGlzLnBhcnNlU2VydmVyLmNvbmZpZyAmJiB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5sb2dnZXJDb250cm9sbGVyKSB8fCBkZWZhdWx0TG9nZ2VyO1xuICAgIHRoaXMucGFyc2VHcmFwaFFMU2NoZW1hID0gbmV3IFBhcnNlR3JhcGhRTFNjaGVtYSh7XG4gICAgICBwYXJzZUdyYXBoUUxDb250cm9sbGVyOiB0aGlzLnBhcnNlR3JhcGhRTENvbnRyb2xsZXIsXG4gICAgICBkYXRhYmFzZUNvbnRyb2xsZXI6IHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLmRhdGFiYXNlQ29udHJvbGxlcixcbiAgICAgIGxvZzogdGhpcy5sb2csXG4gICAgICBncmFwaFFMQ3VzdG9tVHlwZURlZnM6IHRoaXMuY29uZmlnLmdyYXBoUUxDdXN0b21UeXBlRGVmcyxcbiAgICAgIGFwcElkOiB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5hcHBJZCxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIF9nZXRHcmFwaFFMT3B0aW9ucyhyZXEpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2NoZW1hOiBhd2FpdCB0aGlzLnBhcnNlR3JhcGhRTFNjaGVtYS5sb2FkKCksXG4gICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICBpbmZvOiByZXEuaW5mbyxcbiAgICAgICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICAgICAgYXV0aDogcmVxLmF1dGgsXG4gICAgICAgIH0sXG4gICAgICAgIGZvcm1hdEVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgICAgLy8gQWxsb3cgdG8gY29uc29sZS5sb2cgaGVyZSB0byBkZWJ1Z1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2cuZXJyb3IoZS5zdGFjayB8fCAodHlwZW9mIGUudG9TdHJpbmcgPT09ICdmdW5jdGlvbicgJiYgZS50b1N0cmluZygpKSB8fCBlKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgX3RyYW5zZm9ybU1heFVwbG9hZFNpemVUb0J5dGVzKG1heFVwbG9hZFNpemUpIHtcbiAgICBjb25zdCB1bml0TWFwID0ge1xuICAgICAga2I6IDEsXG4gICAgICBtYjogMixcbiAgICAgIGdiOiAzLFxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgTnVtYmVyKG1heFVwbG9hZFNpemUuc2xpY2UoMCwgLTIpKSAqXG4gICAgICBNYXRoLnBvdygxMDI0LCB1bml0TWFwW21heFVwbG9hZFNpemUuc2xpY2UoLTIpLnRvTG93ZXJDYXNlKCldKVxuICAgICk7XG4gIH1cblxuICBhcHBseUdyYXBoUUwoYXBwKSB7XG4gICAgaWYgKCFhcHAgfHwgIWFwcC51c2UpIHtcbiAgICAgIHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGFuIEV4cHJlc3MuanMgYXBwIGluc3RhbmNlIScpO1xuICAgIH1cblxuICAgIGFwcC51c2UoXG4gICAgICB0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCxcbiAgICAgIGdyYXBocWxVcGxvYWRFeHByZXNzKHtcbiAgICAgICAgbWF4RmlsZVNpemU6IHRoaXMuX3RyYW5zZm9ybU1heFVwbG9hZFNpemVUb0J5dGVzKFxuICAgICAgICAgIHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLm1heFVwbG9hZFNpemUgfHwgJzIwbWInXG4gICAgICAgICksXG4gICAgICB9KVxuICAgICk7XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgY29yc01pZGRsZXdhcmUoKSk7XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgYm9keVBhcnNlci5qc29uKCkpO1xuICAgIGFwcC51c2UodGhpcy5jb25maWcuZ3JhcGhRTFBhdGgsIGhhbmRsZVBhcnNlSGVhZGVycyk7XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgaGFuZGxlUGFyc2VFcnJvcnMpO1xuICAgIGFwcC51c2UoXG4gICAgICB0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCxcbiAgICAgIGdyYXBocWxFeHByZXNzKGFzeW5jIHJlcSA9PiBhd2FpdCB0aGlzLl9nZXRHcmFwaFFMT3B0aW9ucyhyZXEpKVxuICAgICk7XG4gIH1cblxuICBhcHBseVBsYXlncm91bmQoYXBwKSB7XG4gICAgaWYgKCFhcHAgfHwgIWFwcC5nZXQpIHtcbiAgICAgIHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGFuIEV4cHJlc3MuanMgYXBwIGluc3RhbmNlIScpO1xuICAgIH1cbiAgICBhcHAuZ2V0KFxuICAgICAgdGhpcy5jb25maWcucGxheWdyb3VuZFBhdGggfHxcbiAgICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBjb25maWcucGxheWdyb3VuZFBhdGggdG8gYXBwbHlQbGF5Z3JvdW5kIScpLFxuICAgICAgKF9yZXEsIHJlcykgPT4ge1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9odG1sJyk7XG4gICAgICAgIHJlcy53cml0ZShcbiAgICAgICAgICByZW5kZXJQbGF5Z3JvdW5kUGFnZSh7XG4gICAgICAgICAgICBlbmRwb2ludDogdGhpcy5jb25maWcuZ3JhcGhRTFBhdGgsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMS43LjI1JyxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbkVuZHBvaW50OiB0aGlzLmNvbmZpZy5zdWJzY3JpcHRpb25zUGF0aCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ1gtUGFyc2UtQXBwbGljYXRpb24tSWQnOiB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5hcHBJZCxcbiAgICAgICAgICAgICAgJ1gtUGFyc2UtTWFzdGVyLUtleSc6IHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLm1hc3RlcktleSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBjcmVhdGVTdWJzY3JpcHRpb25zKHNlcnZlcikge1xuICAgIFN1YnNjcmlwdGlvblNlcnZlci5jcmVhdGUoXG4gICAgICB7XG4gICAgICAgIGV4ZWN1dGUsXG4gICAgICAgIHN1YnNjcmliZSxcbiAgICAgICAgb25PcGVyYXRpb246IGFzeW5jIChfbWVzc2FnZSwgcGFyYW1zLCB3ZWJTb2NrZXQpID0+XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgcGFyYW1zLCBhd2FpdCB0aGlzLl9nZXRHcmFwaFFMT3B0aW9ucyh3ZWJTb2NrZXQudXBncmFkZVJlcSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2VydmVyLFxuICAgICAgICBwYXRoOlxuICAgICAgICAgIHRoaXMuY29uZmlnLnN1YnNjcmlwdGlvbnNQYXRoIHx8XG4gICAgICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBjb25maWcuc3Vic2NyaXB0aW9uc1BhdGggdG8gY3JlYXRlU3Vic2NyaXB0aW9ucyEnKSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc2V0R3JhcGhRTENvbmZpZyhncmFwaFFMQ29uZmlnOiBQYXJzZUdyYXBoUUxDb25maWcpOiBQcm9taXNlIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyLnVwZGF0ZUdyYXBoUUxDb25maWcoZ3JhcGhRTENvbmZpZyk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUGFyc2VHcmFwaFFMU2VydmVyIH07XG4iXX0=
|
|
151
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9HcmFwaFFML1BhcnNlR3JhcGhRTFNlcnZlci5qcyJdLCJuYW1lcyI6WyJQYXJzZUdyYXBoUUxTZXJ2ZXIiLCJjb25zdHJ1Y3RvciIsInBhcnNlU2VydmVyIiwiY29uZmlnIiwiZ3JhcGhRTFBhdGgiLCJwYXJzZUdyYXBoUUxDb250cm9sbGVyIiwibG9nIiwibG9nZ2VyQ29udHJvbGxlciIsImRlZmF1bHRMb2dnZXIiLCJwYXJzZUdyYXBoUUxTY2hlbWEiLCJQYXJzZUdyYXBoUUxTY2hlbWEiLCJkYXRhYmFzZUNvbnRyb2xsZXIiLCJncmFwaFFMQ3VzdG9tVHlwZURlZnMiLCJhcHBJZCIsIl9nZXRHcmFwaFFMT3B0aW9ucyIsInNjaGVtYSIsImxvYWQiLCJjb250ZXh0IiwicmVxIiwiaW5mbyIsImF1dGgiLCJtYXNrZWRFcnJvcnMiLCJtdWx0aXBhcnQiLCJmaWxlU2l6ZSIsIl90cmFuc2Zvcm1NYXhVcGxvYWRTaXplVG9CeXRlcyIsIm1heFVwbG9hZFNpemUiLCJlIiwiZXJyb3IiLCJzdGFjayIsInRvU3RyaW5nIiwiX2dldFNlcnZlciIsInNjaGVtYVJlZiIsImdyYXBoUUxTY2hlbWEiLCJuZXdTY2hlbWFSZWYiLCJfc2VydmVyIiwib3B0aW9ucyIsInVuaXRNYXAiLCJrYiIsIm1iIiwiZ2IiLCJOdW1iZXIiLCJzbGljZSIsIk1hdGgiLCJwb3ciLCJ0b0xvd2VyQ2FzZSIsImFwcGx5R3JhcGhRTCIsImFwcCIsInVzZSIsImhhbmRsZVBhcnNlSGVhZGVycyIsImhhbmRsZVBhcnNlRXJyb3JzIiwicmVzIiwic2VydmVyIiwiYXBwbHlQbGF5Z3JvdW5kIiwiZ2V0IiwicGxheWdyb3VuZFBhdGgiLCJfcmVxIiwic2V0SGVhZGVyIiwid3JpdGUiLCJlbmRwb2ludCIsInN1YnNjcmlwdGlvbkVuZHBvaW50Iiwic3Vic2NyaXB0aW9uc1BhdGgiLCJoZWFkZXJzIiwiSlNPTiIsInN0cmluZ2lmeSIsIm1hc3RlcktleSIsImVuZCIsImNyZWF0ZVN1YnNjcmlwdGlvbnMiLCJTdWJzY3JpcHRpb25TZXJ2ZXIiLCJjcmVhdGUiLCJleGVjdXRlIiwic3Vic2NyaWJlIiwib25PcGVyYXRpb24iLCJfbWVzc2FnZSIsInBhcmFtcyIsIndlYlNvY2tldCIsIk9iamVjdCIsImFzc2lnbiIsInVwZ3JhZGVSZXEiLCJwYXRoIiwic2V0R3JhcGhRTENvbmZpZyIsImdyYXBoUUxDb25maWciLCJ1cGRhdGVHcmFwaFFMQ29uZmlnIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBRUEsTUFBTUEsa0JBQU4sQ0FBeUI7QUFHdkJDLEVBQUFBLFdBQVcsQ0FBQ0MsV0FBRCxFQUFjQyxNQUFkLEVBQXNCO0FBQy9CLFNBQUtELFdBQUwsR0FBbUJBLFdBQVcsSUFBSSxnQ0FBa0IsMENBQWxCLENBQWxDOztBQUNBLFFBQUksQ0FBQ0MsTUFBRCxJQUFXLENBQUNBLE1BQU0sQ0FBQ0MsV0FBdkIsRUFBb0M7QUFDbEMsc0NBQWtCLHdDQUFsQjtBQUNEOztBQUNELFNBQUtELE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUtFLHNCQUFMLEdBQThCLEtBQUtILFdBQUwsQ0FBaUJDLE1BQWpCLENBQXdCRSxzQkFBdEQ7QUFDQSxTQUFLQyxHQUFMLEdBQ0csS0FBS0osV0FBTCxDQUFpQkMsTUFBakIsSUFBMkIsS0FBS0QsV0FBTCxDQUFpQkMsTUFBakIsQ0FBd0JJLGdCQUFwRCxJQUF5RUMsZUFEM0U7QUFFQSxTQUFLQyxrQkFBTCxHQUEwQixJQUFJQyxzQ0FBSixDQUF1QjtBQUMvQ0wsTUFBQUEsc0JBQXNCLEVBQUUsS0FBS0Esc0JBRGtCO0FBRS9DTSxNQUFBQSxrQkFBa0IsRUFBRSxLQUFLVCxXQUFMLENBQWlCQyxNQUFqQixDQUF3QlEsa0JBRkc7QUFHL0NMLE1BQUFBLEdBQUcsRUFBRSxLQUFLQSxHQUhxQztBQUkvQ00sTUFBQUEscUJBQXFCLEVBQUUsS0FBS1QsTUFBTCxDQUFZUyxx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RUFBeUJDLFNBQXpCLEtBQ1hDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JILE1BQWxCLEVBQTBCLE1BQU0sS0FBSzNELGtCQUFMLENBQXdCNEQsU0FBUyxDQUFDRyxVQUFsQyxDQUFoQztBQUpKLEtBREYsRUFPRTtBQUNFMUIsTUFBQUEsTUFERjtBQUVFMkIsTUFBQUEsSUFBSSxFQUNGLEtBQUszRSxNQUFMLENBQVl5RCxpQkFBWixJQUNBLGdDQUFrQixxRUFBbEI7QUFKSixLQVBGO0FBY0Q7O0FBRURtQixFQUFBQSxnQkFBZ0IsQ0FBQ0MsYUFBRCxFQUE2QztBQUMzRCxXQUFPLEtBQUszRSxzQkFBTCxDQUE0QjRFLG1CQUE1QixDQUFnREQsYUFBaEQsQ0FBUDtBQUNEOztBQTVIc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29yc01pZGRsZXdhcmUgZnJvbSAnY29ycyc7XG5pbXBvcnQgeyBjcmVhdGVTZXJ2ZXIsIHJlbmRlckdyYXBoaVFMIH0gZnJvbSAnQGdyYXBocWwteW9nYS9ub2RlJztcbmltcG9ydCB7IGV4ZWN1dGUsIHN1YnNjcmliZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uU2VydmVyIH0gZnJvbSAnc3Vic2NyaXB0aW9ucy10cmFuc3BvcnQtd3MnO1xuaW1wb3J0IHsgaGFuZGxlUGFyc2VFcnJvcnMsIGhhbmRsZVBhcnNlSGVhZGVycyB9IGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCByZXF1aXJlZFBhcmFtZXRlciBmcm9tICcuLi9yZXF1aXJlZFBhcmFtZXRlcic7XG5pbXBvcnQgZGVmYXVsdExvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgUGFyc2VHcmFwaFFMU2NoZW1hIH0gZnJvbSAnLi9QYXJzZUdyYXBoUUxTY2hlbWEnO1xuaW1wb3J0IFBhcnNlR3JhcGhRTENvbnRyb2xsZXIsIHsgUGFyc2VHcmFwaFFMQ29uZmlnIH0gZnJvbSAnLi4vQ29udHJvbGxlcnMvUGFyc2VHcmFwaFFMQ29udHJvbGxlcic7XG5cbmNsYXNzIFBhcnNlR3JhcGhRTFNlcnZlciB7XG4gIHBhcnNlR3JhcGhRTENvbnRyb2xsZXI6IFBhcnNlR3JhcGhRTENvbnRyb2xsZXI7XG5cbiAgY29uc3RydWN0b3IocGFyc2VTZXJ2ZXIsIGNvbmZpZykge1xuICAgIHRoaXMucGFyc2VTZXJ2ZXIgPSBwYXJzZVNlcnZlciB8fCByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhIHBhcnNlU2VydmVyIGluc3RhbmNlIScpO1xuICAgIGlmICghY29uZmlnIHx8ICFjb25maWcuZ3JhcGhRTFBhdGgpIHtcbiAgICAgIHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGEgY29uZmlnLmdyYXBoUUxQYXRoIScpO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnBhcnNlR3JhcGhRTENvbnRyb2xsZXIgPSB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5wYXJzZUdyYXBoUUxDb250cm9sbGVyO1xuICAgIHRoaXMubG9nID1cbiAgICAgICh0aGlzLnBhcnNlU2VydmVyLmNvbmZpZyAmJiB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5sb2dnZXJDb250cm9sbGVyKSB8fCBkZWZhdWx0TG9nZ2VyO1xuICAgIHRoaXMucGFyc2VHcmFwaFFMU2NoZW1hID0gbmV3IFBhcnNlR3JhcGhRTFNjaGVtYSh7XG4gICAgICBwYXJzZUdyYXBoUUxDb250cm9sbGVyOiB0aGlzLnBhcnNlR3JhcGhRTENvbnRyb2xsZXIsXG4gICAgICBkYXRhYmFzZUNvbnRyb2xsZXI6IHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLmRhdGFiYXNlQ29udHJvbGxlcixcbiAgICAgIGxvZzogdGhpcy5sb2csXG4gICAgICBncmFwaFFMQ3VzdG9tVHlwZURlZnM6IHRoaXMuY29uZmlnLmdyYXBoUUxDdXN0b21UeXBlRGVmcyxcbiAgICAgIGFwcElkOiB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5hcHBJZCxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIF9nZXRHcmFwaFFMT3B0aW9ucygpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2NoZW1hOiBhd2FpdCB0aGlzLnBhcnNlR3JhcGhRTFNjaGVtYS5sb2FkKCksXG4gICAgICAgIGNvbnRleHQ6ICh7IHJlcTogeyBpbmZvLCBjb25maWcsIGF1dGggfSB9KSA9PiAoe1xuICAgICAgICAgIGluZm8sXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGF1dGgsXG4gICAgICAgIH0pLFxuICAgICAgICBtYXNrZWRFcnJvcnM6IGZhbHNlLFxuICAgICAgICBtdWx0aXBhcnQ6IHtcbiAgICAgICAgICBmaWxlU2l6ZTogdGhpcy5fdHJhbnNmb3JtTWF4VXBsb2FkU2l6ZVRvQnl0ZXMoXG4gICAgICAgICAgICB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5tYXhVcGxvYWRTaXplIHx8ICcyMG1iJ1xuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yKGUuc3RhY2sgfHwgKHR5cGVvZiBlLnRvU3RyaW5nID09PSAnZnVuY3Rpb24nICYmIGUudG9TdHJpbmcoKSkgfHwgZSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIF9nZXRTZXJ2ZXIoKSB7XG4gICAgY29uc3Qgc2NoZW1hUmVmID0gdGhpcy5wYXJzZUdyYXBoUUxTY2hlbWEuZ3JhcGhRTFNjaGVtYTtcbiAgICBjb25zdCBuZXdTY2hlbWFSZWYgPSBhd2FpdCB0aGlzLnBhcnNlR3JhcGhRTFNjaGVtYS5sb2FkKCk7XG4gICAgaWYgKHNjaGVtYVJlZiA9PT0gbmV3U2NoZW1hUmVmICYmIHRoaXMuX3NlcnZlcikge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlcnZlcjtcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IHRoaXMuX2dldEdyYXBoUUxPcHRpb25zKCk7XG4gICAgdGhpcy5fc2VydmVyID0gY3JlYXRlU2VydmVyKG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLl9zZXJ2ZXI7XG4gIH1cblxuICBfdHJhbnNmb3JtTWF4VXBsb2FkU2l6ZVRvQnl0ZXMobWF4VXBsb2FkU2l6ZSkge1xuICAgIGNvbnN0IHVuaXRNYXAgPSB7XG4gICAgICBrYjogMSxcbiAgICAgIG1iOiAyLFxuICAgICAgZ2I6IDMsXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICBOdW1iZXIobWF4VXBsb2FkU2l6ZS5zbGljZSgwLCAtMikpICpcbiAgICAgIE1hdGgucG93KDEwMjQsIHVuaXRNYXBbbWF4VXBsb2FkU2l6ZS5zbGljZSgtMikudG9Mb3dlckNhc2UoKV0pXG4gICAgKTtcbiAgfVxuXG4gIGFwcGx5R3JhcGhRTChhcHApIHtcbiAgICBpZiAoIWFwcCB8fCAhYXBwLnVzZSkge1xuICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYW4gRXhwcmVzcy5qcyBhcHAgaW5zdGFuY2UhJyk7XG4gICAgfVxuXG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgY29yc01pZGRsZXdhcmUoKSk7XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgaGFuZGxlUGFyc2VIZWFkZXJzKTtcbiAgICBhcHAudXNlKHRoaXMuY29uZmlnLmdyYXBoUUxQYXRoLCBoYW5kbGVQYXJzZUVycm9ycyk7XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gICAgICBjb25zdCBzZXJ2ZXIgPSBhd2FpdCB0aGlzLl9nZXRTZXJ2ZXIoKTtcbiAgICAgIHJldHVybiBzZXJ2ZXIocmVxLCByZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgYXBwbHlQbGF5Z3JvdW5kKGFwcCkge1xuICAgIGlmICghYXBwIHx8ICFhcHAuZ2V0KSB7XG4gICAgICByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhbiBFeHByZXNzLmpzIGFwcCBpbnN0YW5jZSEnKTtcbiAgICB9XG4gICAgYXBwLmdldChcbiAgICAgIHRoaXMuY29uZmlnLnBsYXlncm91bmRQYXRoIHx8XG4gICAgICAgIHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGEgY29uZmlnLnBsYXlncm91bmRQYXRoIHRvIGFwcGx5UGxheWdyb3VuZCEnKSxcbiAgICAgIChfcmVxLCByZXMpID0+IHtcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvaHRtbCcpO1xuICAgICAgICByZXMud3JpdGUoXG4gICAgICAgICAgcmVuZGVyR3JhcGhpUUwoe1xuICAgICAgICAgICAgZW5kcG9pbnQ6IHRoaXMuY29uZmlnLmdyYXBoUUxQYXRoLFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uRW5kcG9pbnQ6IHRoaXMuY29uZmlnLnN1YnNjcmlwdGlvbnNQYXRoLFxuICAgICAgICAgICAgaGVhZGVyczogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAnWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCc6IHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLmFwcElkLFxuICAgICAgICAgICAgICAnWC1QYXJzZS1NYXN0ZXItS2V5JzogdGhpcy5wYXJzZVNlcnZlci5jb25maWcubWFzdGVyS2V5LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBjcmVhdGVTdWJzY3JpcHRpb25zKHNlcnZlcikge1xuICAgIFN1YnNjcmlwdGlvblNlcnZlci5jcmVhdGUoXG4gICAgICB7XG4gICAgICAgIGV4ZWN1dGUsXG4gICAgICAgIHN1YnNjcmliZSxcbiAgICAgICAgb25PcGVyYXRpb246IGFzeW5jIChfbWVzc2FnZSwgcGFyYW1zLCB3ZWJTb2NrZXQpID0+XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgcGFyYW1zLCBhd2FpdCB0aGlzLl9nZXRHcmFwaFFMT3B0aW9ucyh3ZWJTb2NrZXQudXBncmFkZVJlcSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2VydmVyLFxuICAgICAgICBwYXRoOlxuICAgICAgICAgIHRoaXMuY29uZmlnLnN1YnNjcmlwdGlvbnNQYXRoIHx8XG4gICAgICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBjb25maWcuc3Vic2NyaXB0aW9uc1BhdGggdG8gY3JlYXRlU3Vic2NyaXB0aW9ucyEnKSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc2V0R3JhcGhRTENvbmZpZyhncmFwaFFMQ29uZmlnOiBQYXJzZUdyYXBoUUxDb25maWcpOiBQcm9taXNlIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyLnVwZGF0ZUdyYXBoUUxDb25maWcoZ3JhcGhRTENvbmZpZyk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUGFyc2VHcmFwaFFMU2VydmVyIH07XG4iXX0=
|
|
@@ -25,9 +25,7 @@ const needToGetAllKeys = (fields, keys, parseClasses) => keys ? keys.split(',').
|
|
|
25
25
|
if (fields[key[0]].type === 'Relation') return false;
|
|
26
26
|
|
|
27
27
|
if (fields[key[0]].type === 'Pointer') {
|
|
28
|
-
const subClass = parseClasses.
|
|
29
|
-
className: parseClassName
|
|
30
|
-
}) => fields[key[0]].targetClass === parseClassName);
|
|
28
|
+
const subClass = parseClasses[fields[key[0]].targetClass];
|
|
31
29
|
|
|
32
30
|
if (subClass && subClass.fields[key[1]]) {
|
|
33
31
|
// Current sub key is not custom
|
|
@@ -51,13 +49,11 @@ const getObject = async (className, objectId, keys, include, readPreference, inc
|
|
|
51
49
|
const options = {};
|
|
52
50
|
|
|
53
51
|
try {
|
|
54
|
-
if (!needToGetAllKeys(parseClasses.
|
|
55
|
-
className: parseClassName
|
|
56
|
-
}) => className === parseClassName).fields, keys, parseClasses)) {
|
|
52
|
+
if (!needToGetAllKeys(parseClasses[className].fields, keys, parseClasses)) {
|
|
57
53
|
options.keys = keys;
|
|
58
54
|
}
|
|
59
55
|
} catch (e) {
|
|
60
|
-
console.
|
|
56
|
+
console.error(e);
|
|
61
57
|
}
|
|
62
58
|
|
|
63
59
|
if (include) {
|
|
@@ -149,9 +145,7 @@ const findObjects = async (className, where, order, skipInput, first, after, las
|
|
|
149
145
|
options.limit = config.maxLimit;
|
|
150
146
|
}
|
|
151
147
|
|
|
152
|
-
if (!needToGetAllKeys(parseClasses.
|
|
153
|
-
className: parseClassName
|
|
154
|
-
}) => className === parseClassName).fields, keys, parseClasses)) {
|
|
148
|
+
if (!needToGetAllKeys(parseClasses[className].fields, keys, parseClasses)) {
|
|
155
149
|
options.keys = keys;
|
|
156
150
|
}
|
|
157
151
|
|
|
@@ -306,4 +300,4 @@ const calculateSkipAndLimit = (skipInput, first, after, last, before, maxLimit)
|
|
|
306
300
|
};
|
|
307
301
|
|
|
308
302
|
exports.calculateSkipAndLimit = calculateSkipAndLimit;
|
|
309
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9HcmFwaFFML2hlbHBlcnMvb2JqZWN0c1F1ZXJpZXMuanMiXSwibmFtZXMiOlsibmVlZFRvR2V0QWxsS2V5cyIsImZpZWxkcyIsImtleXMiLCJwYXJzZUNsYXNzZXMiLCJzcGxpdCIsInNvbWUiLCJrZXlOYW1lIiwia2V5IiwidHlwZSIsInN1YkNsYXNzIiwiZmluZCIsImNsYXNzTmFtZSIsInBhcnNlQ2xhc3NOYW1lIiwidGFyZ2V0Q2xhc3MiLCJnZXRPYmplY3QiLCJvYmplY3RJZCIsImluY2x1ZGUiLCJyZWFkUHJlZmVyZW5jZSIsImluY2x1ZGVSZWFkUHJlZmVyZW5jZSIsImNvbmZpZyIsImF1dGgiLCJpbmZvIiwib3B0aW9ucyIsImUiLCJjb25zb2xlIiwibG9nIiwicmVzcG9uc2UiLCJyZXN0IiwiZ2V0IiwiY2xpZW50U0RLIiwiY29udGV4dCIsInJlc3VsdHMiLCJsZW5ndGgiLCJQYXJzZSIsIkVycm9yIiwiT0JKRUNUX05PVF9GT1VORCIsIm9iamVjdCIsInNlc3Npb25Ub2tlbiIsImZpbmRPYmplY3RzIiwid2hlcmUiLCJvcmRlciIsInNraXBJbnB1dCIsImZpcnN0IiwiYWZ0ZXIiLCJsYXN0IiwiYmVmb3JlIiwiaW5jbHVkZUFsbCIsInN1YnF1ZXJ5UmVhZFByZWZlcmVuY2UiLCJzZWxlY3RlZEZpZWxkcyIsInNraXBBbmRMaW1pdENhbGN1bGF0aW9uIiwiY2FsY3VsYXRlU2tpcEFuZExpbWl0IiwibWF4TGltaXQiLCJza2lwIiwibGltaXQiLCJuZWVkVG9QcmVDb3VudCIsInByZUNvdW50IiwidW5kZWZpbmVkIiwicHJlQ291bnRPcHRpb25zIiwiY291bnQiLCJPYmplY3QiLCJmaWVsZCIsInN0YXJ0c1dpdGgiLCJpbmNsdWRlcyIsImZpbmRSZXN1bHQiLCJlZGdlcyIsInBhZ2VJbmZvIiwibWFwIiwicmVzdWx0IiwiaW5kZXgiLCJjdXJzb3IiLCJub2RlIiwiaGFzUHJldmlvdXNQYWdlIiwic3RhcnRDdXJzb3IiLCJl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a0I7QUFDaEI7QUFDQUQsUUFBQUEsSUFBSSxHQUFHLENBQUNBLElBQUksSUFBSSxDQUFULEtBQWVDLEtBQUssR0FBR1QsSUFBdkIsQ0FBUCxDQUZnQixDQUVxQjs7QUFDckNTLFFBQUFBLEtBQUssR0FBR1QsSUFBUixDQUhnQixDQUdGO0FBQ2Y7QUFDRixLQVBELE1BT08sSUFBSUEsSUFBSSxLQUFLLENBQWIsRUFBZ0I7QUFDckI7QUFDQVMsTUFBQUEsS0FBSyxHQUFHLENBQVI7QUFDRCxLQUhNLE1BR0E7QUFDTDtBQUNBQSxNQUFBQSxLQUFLLEdBQUdULElBQVI7QUFDQVUsTUFBQUEsY0FBYyxHQUFHLElBQWpCO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPO0FBQ0xGLElBQUFBLElBREs7QUFFTEMsSUFBQUEsS0FGSztBQUdMQyxJQUFBQTtBQUhLLEdBQVA7QUFLRCxDQW5GRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCB7IG9mZnNldFRvQ3Vyc29yLCBjdXJzb3JUb09mZnNldCB9IGZyb20gJ2dyYXBocWwtcmVsYXknO1xuaW1wb3J0IHJlc3QgZnJvbSAnLi4vLi4vcmVzdCc7XG5pbXBvcnQgeyB0cmFuc2Zvcm1RdWVyeUlucHV0VG9QYXJzZSB9IGZyb20gJy4uL3RyYW5zZm9ybWVycy9xdWVyeSc7XG5cbi8vIEVzbGludC9QcmV0dGllciBjb25mbGljdFxuLyogZXNsaW50LWRpc2FibGUqL1xuY29uc3QgbmVlZFRvR2V0QWxsS2V5cyA9IChmaWVsZHMsIGtleXMsIHBhcnNlQ2xhc3NlcykgPT5cbiAga2V5c1xuICAgID8ga2V5cy5zcGxpdCgnLCcpLnNvbWUoa2V5TmFtZSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleU5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgaWYgKGZpZWxkc1trZXlbMF1dKSB7XG4gICAgICAgICAgaWYgKGZpZWxkc1trZXlbMF1dLnR5cGUgPT09ICdSZWxhdGlvbicpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICBpZiAoZmllbGRzW2tleVswXV0udHlwZSA9PT0gJ1BvaW50ZXInKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJDbGFzcyA9IHBhcnNlQ2xhc3Nlcy5maW5kKFxuICAgICAgICAgICAgICAoeyBjbGFzc05hbWU6IHBhcnNlQ2xhc3NOYW1lIH0pID0+IGZpZWxkc1trZXlbMF1dLnRhcmdldENsYXNzID09PSBwYXJzZUNsYXNzTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChzdWJDbGFzcyAmJiBzdWJDbGFzcy5maWVsZHNba2V5WzFdXSkge1xuICAgICAgICAgICAgICAvLyBDdXJyZW50IHN1YiBrZXkgaXMgbm90IGN1c3RvbVxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICFrZXlbMV0gfHxcbiAgICAgICAgICAgIGZpZWxkc1trZXlbMF1dLnR5cGUgPT09ICdBcnJheScgfHxcbiAgICAgICAgICAgIGZpZWxkc1trZXlbMF1dLnR5cGUgPT09ICdPYmplY3QnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBjdXJyZW50IGtleSBpcyBub3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEtleSBub3QgZm91bmQgaW50byBQYXJzZSBTY2hlbWEgc28gaXQncyBjdXN0b21cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KVxuICAgIDogdHJ1ZTtcbi8qIGVzbGludC1lbmFibGUqL1xuXG5jb25zdCBnZXRPYmplY3QgPSBhc3luYyAoXG4gIGNsYXNzTmFtZSxcbiAgb2JqZWN0SWQsXG4gIGtleXMsXG4gIGluY2x1ZGUsXG4gIHJlYWRQcmVmZXJlbmNlLFxuICBpbmNsdWRlUmVhZFByZWZlcmVuY2UsXG4gIGNvbmZpZyxcbiAgYXV0aCxcbiAgaW5mbyxcbiAgcGFyc2VDbGFzc2VzXG4pID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHt9O1xuICB0cnkge1xuICAgIGlmIChcbiAgICAgICFuZWVkVG9HZXRBbGxLZXlzKFxuICAgICAgICBwYXJzZUNsYXNzZXMuZmluZCgoeyBjbGFzc05hbWU6IHBhcnNlQ2xhc3NOYW1lIH0pID0+IGNsYXNzTmFtZSA9PT0gcGFyc2VDbGFzc05hbWUpLmZpZWxkcyxcbiAgICAgICAga2V5cyxcbiAgICAgICAgcGFyc2VDbGFzc2VzXG4gICAgICApXG4gICAgKSB7XG4gICAgICBvcHRpb25zLmtleXMgPSBrZXlzO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKGUpO1xuICB9XG4gIGlmIChpbmNsdWRlKSB7XG4gICAgb3B0aW9ucy5pbmNsdWRlID0gaW5jbHVkZTtcbiAgICBpZiAoaW5jbHVkZVJlYWRQcmVmZXJlbmNlKSB7XG4gICAgICBvcHRpb25zLmluY2x1ZGVSZWFkUHJlZmVyZW5jZSA9IGluY2x1ZGVSZWFkUHJlZmVyZW5jZTtcbiAgICB9XG4gIH1cbiAgaWYgKHJlYWRQcmVmZXJlbmNlKSB7XG4gICAgb3B0aW9ucy5yZWFkUHJlZmVyZW5jZSA9IHJlYWRQcmVmZXJlbmNlO1xuICB9XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXN0LmdldChcbiAgICBjb25maWcsXG4gICAgYXV0aCxcbiAgICBjbGFzc05hbWUsXG4gICAgb2JqZWN0SWQsXG4gICAgb3B0aW9ucyxcbiAgICBpbmZvLmNsaWVudFNESyxcbiAgICBpbmZvLmNvbnRleHRcbiAgKTtcblxuICBpZiAoIXJlc3BvbnNlLnJlc3VsdHMgfHwgcmVzcG9uc2UucmVzdWx0cy5sZW5ndGggPT0gMCkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnT2JqZWN0IG5vdCBmb3VuZC4nKTtcbiAgfVxuXG4gIGNvbnN0IG9iamVjdCA9IHJlc3BvbnNlLnJlc3VsdHNbMF07XG4gIGlmIChjbGFzc05hbWUgPT09ICdfVXNlcicpIHtcbiAgICBkZWxldGUgb2JqZWN0LnNlc3Npb25Ub2tlbjtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufTtcblxuY29uc3QgZmluZE9iamVjdHMgPSBhc3luYyAoXG4gIGNsYXNzTmFtZSxcbiAgd2hlcmUsXG4gIG9yZGVyLFxuICBza2lwSW5wdXQsXG4gIGZpcnN0LFxuICBhZnRlcixcbiAgbGFzdCxcbiAgYmVmb3JlLFxuICBrZXlzLFxuICBpbmNsdWRlLFxuICBpbmNsdWRlQWxsLFxuICByZWFkUHJlZmVyZW5jZSxcbiAgaW5jbHVkZVJlYWRQcmVmZXJlbmNlLFxuICBzdWJxdWVyeVJlYWRQcmVmZXJlbmNlLFxuICBjb25maWcsXG4gIGF1dGgsXG4gIGluZm8sXG4gIHNlbGVjdGVkRmllbGRzLFxuICBwYXJzZUNsYXNzZXNcbikgPT4ge1xuICBpZiAoIXdoZXJlKSB7XG4gICAgd2hlcmUgPSB7fTtcbiAgfVxuICB0cmFuc2Zvcm1RdWVyeUlucHV0VG9QYXJzZSh3aGVyZSwgY2xhc3NOYW1lLCBwYXJzZUNsYXNzZXMpO1xuICBjb25zdCBza2lwQW5kTGltaXRDYWxjdWxhdGlvbiA9IGNhbGN1bGF0ZVNraXBBbmRMaW1pdChcbiAgICBza2lwSW5wdXQsXG4gICAgZmlyc3QsXG4gICAgYWZ0ZXIsXG4gICAgbGFzdCxcbiAgICBiZWZvcmUsXG4gICAgY29uZmlnLm1heExpbWl0XG4gICk7XG4gIGxldCB7IHNraXAgfSA9IHNraXBBbmRMaW1pdENhbGN1bGF0aW9uO1xuICBjb25zdCB7IGxpbWl0LCBuZWVkVG9QcmVDb3VudCB9ID0gc2tpcEFuZExpbWl0Q2FsY3VsYXRpb247XG4gIGxldCBwcmVDb3VudCA9IHVuZGVmaW5lZDtcbiAgaWYgKG5lZWRUb1ByZUNvdW50KSB7XG4gICAgY29uc3QgcHJlQ291bnRPcHRpb25zID0ge1xuICAgICAgbGltaXQ6IDAsXG4gICAgICBjb3VudDogdHJ1ZSxcbiAgICB9O1xuICAgIGlmIChyZWFkUHJlZmVyZW5jZSkge1xuICAgICAgcHJlQ291bnRPcHRpb25zLnJlYWRQcmVmZXJlbmNlID0gcmVhZFByZWZlcmVuY2U7XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyh3aGVyZSkubGVuZ3RoID4gMCAmJiBzdWJxdWVyeVJlYWRQcmVmZXJlbmNlKSB7XG4gICAgICBwcmVDb3VudE9wdGlvbnMuc3VicXVlcnlSZWFkUHJlZmVyZW5jZSA9IHN1YnF1ZXJ5UmVhZFByZWZlcmVuY2U7XG4gICAgfVxuICAgIHByZUNvdW50ID0gKFxuICAgICAgYXdhaXQgcmVzdC5maW5kKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCB3aGVyZSwgcHJlQ291bnRPcHRpb25zLCBpbmZvLmNsaWVudFNESywgaW5mby5jb250ZXh0KVxuICAgICkuY291bnQ7XG4gICAgaWYgKChza2lwIHx8IDApICsgbGltaXQgPCBwcmVDb3VudCkge1xuICAgICAgc2tpcCA9IHByZUNvdW50IC0gbGltaXQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3B0aW9ucyA9IHt9O1xuXG4gIGlmIChzZWxlY3RlZEZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLnN0YXJ0c1dpdGgoJ2VkZ2VzLicpIHx8IGZpZWxkLnN0YXJ0c1dpdGgoJ3BhZ2VJbmZvLicpKSkge1xuICAgIGlmIChsaW1pdCB8fCBsaW1pdCA9PT0gMCkge1xuICAgICAgb3B0aW9ucy5saW1pdCA9IGxpbWl0O1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zLmxpbWl0ID0gMTAwO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5saW1pdCAhPT0gMCkge1xuICAgICAgaWYgKG9yZGVyKSB7XG4gICAgICAgIG9wdGlvbnMub3JkZXIgPSBvcmRlcjtcbiAgICAgIH1cbiAgICAgIGlmIChza2lwKSB7XG4gICAgICAgIG9wdGlvbnMuc2tpcCA9IHNraXA7XG4gICAgICB9XG4gICAgICBpZiAoY29uZmlnLm1heExpbWl0ICYmIG9wdGlvbnMubGltaXQgPiBjb25maWcubWF4TGltaXQpIHtcbiAgICAgICAgLy8gU2lsZW50bHkgcmVwbGFjZSB0aGUgbGltaXQgb24gdGhlIHF1ZXJ5IHdpdGggdGhlIG1heCBjb25maWd1cmVkXG4gICAgICAgIG9wdGlvbnMubGltaXQgPSBjb25maWcubWF4TGltaXQ7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgICFuZWVkVG9HZXRBbGxLZXlzKFxuICAgICAgICAgIHBhcnNlQ2xhc3Nlcy5maW5kKCh7IGNsYXNzTmFtZTogcGFyc2VDbGFzc05hbWUgfSkgPT4gY2xhc3NOYW1lID09PSBwYXJzZUNsYXNzTmFtZSkuZmllbGRzLFxuICAgICAgICAgIGtleXMsXG4gICAgICAgICAgcGFyc2VDbGFzc2VzXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICBvcHRpb25zLmtleXMgPSBrZXlzO1xuICAgICAgfVxuICAgICAgaWYgKGluY2x1ZGVBbGwgPT09IHRydWUpIHtcbiAgICAgICAgb3B0aW9ucy5pbmNsdWRlQWxsID0gaW5jbHVkZUFsbDtcbiAgICAgIH1cbiAgICAgIGlmICghb3B0aW9ucy5pbmNsdWRlQWxsICYmIGluY2x1ZGUpIHtcbiAgICAgICAgb3B0aW9ucy5pbmNsdWRlID0gaW5jbHVkZTtcbiAgICAgIH1cbiAgICAgIGlmICgob3B0aW9ucy5pbmNsdWRlQWxsIHx8IG9wdGlvbnMuaW5jbHVkZSkgJiYgaW5jbHVkZVJlYWRQcmVmZXJlbmNlKSB7XG4gICAgICAgIG9wdGlvbnMuaW5jbHVkZVJlYWRQcmVmZXJlbmNlID0gaW5jbHVkZVJlYWRQcmVmZXJlbmNlO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zLmxpbWl0ID0gMDtcbiAgfVxuXG4gIGlmIChcbiAgICAoc2VsZWN0ZWRGaWVsZHMuaW5jbHVkZXMoJ2NvdW50JykgfHxcbiAgICAgIHNlbGVjdGVkRmllbGRzLmluY2x1ZGVzKCdwYWdlSW5mby5oYXNQcmV2aW91c1BhZ2UnKSB8fFxuICAgICAgc2VsZWN0ZWRGaWVsZHMuaW5jbHVkZXMoJ3BhZ2VJbmZvLmhhc05leHRQYWdlJykpICYmXG4gICAgIW5lZWRUb1ByZUNvdW50XG4gICkge1xuICAgIG9wdGlvbnMuY291bnQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHJlYWRQcmVmZXJlbmNlKSB7XG4gICAgb3B0aW9ucy5yZWFkUHJlZmVyZW5jZSA9IHJlYWRQcmVmZXJlbmNlO1xuICB9XG4gIGlmIChPYmplY3Qua2V5cyh3aGVyZSkubGVuZ3RoID4gMCAmJiBzdWJxdWVyeVJlYWRQcmVmZXJlbmNlKSB7XG4gICAgb3B0aW9ucy5zdWJxdWVyeVJlYWRQcmVmZXJlbmNlID0gc3VicXVlcnlSZWFkUHJlZmVyZW5jZTtcbiAgfVxuXG4gIGxldCByZXN1bHRzLCBjb3VudDtcbiAgaWYgKG9wdGlvbnMuY291bnQgfHwgIW9wdGlvbnMubGltaXQgfHwgKG9wdGlvbnMubGltaXQgJiYgb3B0aW9ucy5saW1pdCA+IDApKSB7XG4gICAgY29uc3QgZmluZFJlc3VsdCA9IGF3YWl0IHJlc3QuZmluZChcbiAgICAgIGNvbmZpZyxcbiAgICAgIGF1dGgsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICB3aGVyZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBpbmZvLmNsaWVudFNESyxcbiAgICAgIGluZm8uY29udGV4dFxuICAgICk7XG4gICAgcmVzdWx0cyA9IGZpbmRSZXN1bHQucmVzdWx0cztcbiAgICBjb3VudCA9IGZpbmRSZXN1bHQuY291bnQ7XG4gIH1cblxuICBsZXQgZWRnZXMgPSBudWxsO1xuICBsZXQgcGFnZUluZm8gPSBudWxsO1xuICBpZiAocmVzdWx0cykge1xuICAgIGVkZ2VzID0gcmVzdWx0cy5tYXAoKHJlc3VsdCwgaW5kZXgpID0+ICh7XG4gICAgICBjdXJzb3I6IG9mZnNldFRvQ3Vyc29yKChza2lwIHx8IDApICsgaW5kZXgpLFxuICAgICAgbm9kZTogcmVzdWx0LFxuICAgIH0pKTtcblxuICAgIHBhZ2VJbmZvID0ge1xuICAgICAgaGFzUHJldmlvdXNQYWdlOlxuICAgICAgICAoKHByZUNvdW50ICYmIHByZUNvdW50ID4gMCkgfHwgKGNvdW50ICYmIGNvdW50ID4gMCkpICYmIHNraXAgIT09IHVuZGVmaW5lZCAmJiBza2lwID4gMCxcbiAgICAgIHN0YXJ0Q3Vyc29yOiBvZmZzZXRUb0N1cnNvcihza2lwIHx8IDApLFxuICAgICAgZW5kQ3Vyc29yOiBvZmZzZXRUb0N1cnNvcigoc2tpcCB8fCAwKSArIChyZXN1bHRzLmxlbmd0aCB8fCAxKSAtIDEpLFxuICAgICAgaGFzTmV4dFBhZ2U6IChwcmVDb3VudCB8fCBjb3VudCkgPiAoc2tpcCB8fCAwKSArIHJlc3VsdHMubGVuZ3RoLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVkZ2VzLFxuICAgIHBhZ2VJbmZvLFxuICAgIGNvdW50OiBwcmVDb3VudCB8fCBjb3VudCxcbiAgfTtcbn07XG5cbmNvbnN0IGNhbGN1bGF0ZVNraXBBbmRMaW1pdCA9IChza2lwSW5wdXQsIGZpcnN0LCBhZnRlciwgbGFzdCwgYmVmb3JlLCBtYXhMaW1pdCkgPT4ge1xuICBsZXQgc2tpcCA9IHVuZGVmaW5lZDtcbiAgbGV0IGxpbWl0ID0gdW5kZWZpbmVkO1xuICBsZXQgbmVlZFRvUHJlQ291bnQgPSBmYWxzZTtcblxuICAvLyBWYWxpZGF0ZXMgdGhlIHNraXAgaW5wdXRcbiAgaWYgKHNraXBJbnB1dCB8fCBza2lwSW5wdXQgPT09IDApIHtcbiAgICBpZiAoc2tpcElucHV0IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksICdTa2lwIHNob3VsZCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICAgIH1cbiAgICBza2lwID0gc2tpcElucHV0O1xuICB9XG5cbiAgLy8gVmFsaWRhdGVzIHRoZSBhZnRlciBwYXJhbVxuICBpZiAoYWZ0ZXIpIHtcbiAgICBhZnRlciA9IGN1cnNvclRvT2Zmc2V0KGFmdGVyKTtcbiAgICBpZiAoKCFhZnRlciAmJiBhZnRlciAhPT0gMCkgfHwgYWZ0ZXIgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9RVUVSWSwgJ0FmdGVyIGlzIG5vdCBhIHZhbGlkIGN1cnNvcicpO1xuICAgIH1cblxuICAgIC8vIElmIHNraXAgYW5kIGFmdGVyIGFyZSBwYXNzZWQsIGEgbmV3IHNraXAgaXMgY2FsY3VsYXRlZCBieSBhZGRpbmcgdGhlbVxuICAgIHNraXAgPSAoc2tpcCB8fCAwKSArIChhZnRlciArIDEpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGVzIHRoZSBmaXJzdCBwYXJhbVxuICBpZiAoZmlyc3QgfHwgZmlyc3QgPT09IDApIHtcbiAgICBpZiAoZmlyc3QgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9RVUVSWSwgJ0ZpcnN0IHNob3VsZCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICAgIH1cblxuICAgIC8vIFRoZSBmaXJzdCBwYXJhbSBpcyB0cmFuc2xhdGVkIHRvIHRoZSBsaW1pdCBwYXJhbSBvZiB0aGUgUGFyc2UgbGVnYWN5IEFQSVxuICAgIGxpbWl0ID0gZmlyc3Q7XG4gIH1cblxuICAvLyBWYWxpZGF0ZXMgdGhlIGJlZm9yZSBwYXJhbVxuICBpZiAoYmVmb3JlIHx8IGJlZm9yZSA9PT0gMCkge1xuICAgIC8vIFRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBjdXJzb3IgdG8gdGhlIGluZGV4IG9mIHRoZSBvYmplY3RcbiAgICBiZWZvcmUgPSBjdXJzb3JUb09mZnNldChiZWZvcmUpO1xuICAgIGlmICgoIWJlZm9yZSAmJiBiZWZvcmUgIT09IDApIHx8IGJlZm9yZSA8IDApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1FVRVJZLCAnQmVmb3JlIGlzIG5vdCBhIHZhbGlkIGN1cnNvcicpO1xuICAgIH1cblxuICAgIGlmICgoc2tpcCB8fCAwKSA+PSBiZWZvcmUpIHtcbiAgICAgIC8vIElmIHRoZSBiZWZvcmUgaW5kZXggaXMgbGVzcyB0aGVuIHRoZSBza2lwLCBubyBvYmplY3RzIHdpbGwgYmUgcmV0dXJuZWRcbiAgICAgIGxpbWl0ID0gMDtcbiAgICB9IGVsc2UgaWYgKCghbGltaXQgJiYgbGltaXQgIT09IDApIHx8IChza2lwIHx8IDApICsgbGltaXQgPiBiZWZvcmUpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGxpbWl0IHNldCwgdGhlIGxpbWl0IGlzIGNhbGN1bGF0ZWQuIE9yLCBpZiB0aGUgbGltaXQgKHBsdXMgc2tpcCkgaXMgYmlnZ2VyIHRoYW4gdGhlIGJlZm9yZSBpbmRleCwgdGhlIG5ldyBsaW1pdCBpcyBzZXQuXG4gICAgICBsaW1pdCA9IGJlZm9yZSAtIChza2lwIHx8IDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIFZhbGlkYXRlcyB0aGUgbGFzdCBwYXJhbVxuICBpZiAobGFzdCB8fCBsYXN0ID09PSAwKSB7XG4gICAgaWYgKGxhc3QgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9RVUVSWSwgJ0xhc3Qgc2hvdWxkIGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gICAgfVxuXG4gICAgaWYgKGxhc3QgPiBtYXhMaW1pdCkge1xuICAgICAgLy8gTGFzdCBjYW4ndCBiZSBiaWdnZXIgdGhhbiBQYXJzZSBzZXJ2ZXIgbWF4TGltaXQgY29uZmlnLlxuICAgICAgbGFzdCA9IG1heExpbWl0O1xuICAgIH1cblxuICAgIGlmIChsaW1pdCB8fCBsaW1pdCA9PT0gMCkge1xuICAgICAgLy8gSWYgdGhlcmUgaXMgYSBwcmV2aW91cyBsaW1pdCBzZXQsIGl0IG1heSBiZSBhZGp1c3RlZFxuICAgICAgaWYgKGxhc3QgPCBsaW1pdCkge1xuICAgICAgICAvLyBpZiBsYXN0IGlzIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsaW1pdFxuICAgICAgICBza2lwID0gKHNraXAgfHwgMCkgKyAobGltaXQgLSBsYXN0KTsgLy8gVGhlIHNraXAgaXMgYWRqdXN0ZWRcbiAgICAgICAgbGltaXQgPSBsYXN0OyAvLyB0aGUgbGltaXQgaXMgYWRqdXN0ZWRcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09IDApIHtcbiAgICAgIC8vIE5vIG9iamVjdHMgd2lsbCBiZSByZXR1cm5lZFxuICAgICAgbGltaXQgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBwcmV2aW91cyBsaW1pdCBzZXQsIHRoZSBsaW1pdCB3aWxsIGJlIGVxdWFsIHRvIGxhc3QgYW5kIHByZSBjb3VudCBpcyBuZWVkZWQuXG4gICAgICBsaW1pdCA9IGxhc3Q7XG4gICAgICBuZWVkVG9QcmVDb3VudCA9IHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgc2tpcCxcbiAgICBsaW1pdCxcbiAgICBuZWVkVG9QcmVDb3VudCxcbiAgfTtcbn07XG5cbmV4cG9ydCB7IGdldE9iamVjdCwgZmluZE9iamVjdHMsIGNhbGN1bGF0ZVNraXBBbmRMaW1pdCwgbmVlZFRvR2V0QWxsS2V5cyB9O1xuIl19
|
|
303
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9HcmFwaFFML2hlbHBlcnMvb2JqZWN0c1F1ZXJpZXMuanMiXSwibmFtZXMiOlsibmVlZFRvR2V0QWxsS2V5cyIsImZpZWxkcyIsImtleXMiLCJwYXJzZUNsYXNzZXMiLCJzcGxpdCIsInNvbWUiLCJrZXlOYW1lIiwia2V5IiwidHlwZSIsInN1YkNsYXNzIiwidGFyZ2V0Q2xhc3MiLCJnZXRPYmplY3QiLCJjbGFzc05hbWUiLCJvYmplY3RJZCIsImluY2x1ZGUiLCJyZWFkUHJlZmVyZW5jZSIsImluY2x1ZGVSZWFkUHJlZmVyZW5jZSIsImNvbmZpZyIsImF1dGgiLCJpbmZvIiwib3B0aW9ucyIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJyZXNwb25zZSIsInJlc3QiLCJnZXQiLCJjbGllbnRTREsiLCJjb250ZXh0IiwicmVzdWx0cyIsImxlbmd0aCIsIlBhcnNlIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwib2JqZWN0Iiwic2Vzc2lvblRva2VuIiwiZmluZE9iamVjdHMiLCJ3aGVyZSIsIm9yZGVyIiwic2tpcElucHV0IiwiZmlyc3QiLCJhZnRlciIsImxhc3QiLCJiZWZvcmUiLCJpbmNsdWRlQWxsIiwic3VicXVlcnlSZWFkUHJlZmVyZW5jZSIsInNlbGVjdGVkRmllbGRzIiwic2tpcEFuZExpbWl0Q2FsY3VsYXRpb24iLCJjYWxjdWxhdGVTa2lwQW5kTGltaXQiLCJtYXhMaW1pdCIsInNraXAiLCJsaW1pdCIsIm5lZWRUb1ByZUNvdW50IiwicHJlQ291bnQiLCJ1bmRlZmluZWQiLCJwcmVDb3VudE9wdGlvbnMiLCJjb3VudCIsIk9iamVjdCIsImZpbmQiLCJmaWVsZCIsInN0YXJ0c1dpdGgiLCJpbmNsdWRlcyIsImZpbmRSZXN1bHQiLCJlZGdlcyIsInBhZ2VJbmZvIiwibWFwIiwicmVzdWx0IiwiaW5kZXgiLCJjdXJzb3IiLCJub2RlIiwiaGFzUHJldmlvdXNQYWdlIiwic3RhcnRDdXJzb3IiLCJlbmRDdXJzb3IiLCJoYXNO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QSxLQUFLLEdBQUcsQ0FBUjtBQUNELEtBSE0sTUFHQTtBQUNMO0FBQ0FBLE1BQUFBLEtBQUssR0FBR1QsSUFBUjtBQUNBVSxNQUFBQSxjQUFjLEdBQUcsSUFBakI7QUFDRDtBQUNGOztBQUNELFNBQU87QUFDTEYsSUFBQUEsSUFESztBQUVMQyxJQUFBQSxLQUZLO0FBR0xDLElBQUFBO0FBSEssR0FBUDtBQUtELENBbkZEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IHsgb2Zmc2V0VG9DdXJzb3IsIGN1cnNvclRvT2Zmc2V0IH0gZnJvbSAnZ3JhcGhxbC1yZWxheSc7XG5pbXBvcnQgcmVzdCBmcm9tICcuLi8uLi9yZXN0JztcbmltcG9ydCB7IHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlIH0gZnJvbSAnLi4vdHJhbnNmb3JtZXJzL3F1ZXJ5JztcblxuLy8gRXNsaW50L1ByZXR0aWVyIGNvbmZsaWN0XG4vKiBlc2xpbnQtZGlzYWJsZSovXG5jb25zdCBuZWVkVG9HZXRBbGxLZXlzID0gKGZpZWxkcywga2V5cywgcGFyc2VDbGFzc2VzKSA9PlxuICBrZXlzXG4gICAgPyBrZXlzLnNwbGl0KCcsJykuc29tZShrZXlOYW1lID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5TmFtZS5zcGxpdCgnLicpO1xuICAgICAgICBpZiAoZmllbGRzW2tleVswXV0pIHtcbiAgICAgICAgICBpZiAoZmllbGRzW2tleVswXV0udHlwZSA9PT0gJ1JlbGF0aW9uJykgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIGlmIChmaWVsZHNba2V5WzBdXS50eXBlID09PSAnUG9pbnRlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1YkNsYXNzID0gcGFyc2VDbGFzc2VzW2ZpZWxkc1trZXlbMF1dLnRhcmdldENsYXNzXTtcbiAgICAgICAgICAgIGlmIChzdWJDbGFzcyAmJiBzdWJDbGFzcy5maWVsZHNba2V5WzFdXSkge1xuICAgICAgICAgICAgICAvLyBDdXJyZW50IHN1YiBrZXkgaXMgbm90IGN1c3RvbVxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICFrZXlbMV0gfHxcbiAgICAgICAgICAgIGZpZWxkc1trZXlbMF1dLnR5cGUgPT09ICdBcnJheScgfHxcbiAgICAgICAgICAgIGZpZWxkc1trZXlbMF1dLnR5cGUgPT09ICdPYmplY3QnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBjdXJyZW50IGtleSBpcyBub3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEtleSBub3QgZm91bmQgaW50byBQYXJzZSBTY2hlbWEgc28gaXQncyBjdXN0b21cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KVxuICAgIDogdHJ1ZTtcbi8qIGVzbGludC1lbmFibGUqL1xuXG5jb25zdCBnZXRPYmplY3QgPSBhc3luYyAoXG4gIGNsYXNzTmFtZSxcbiAgb2JqZWN0SWQsXG4gIGtleXMsXG4gIGluY2x1ZGUsXG4gIHJlYWRQcmVmZXJlbmNlLFxuICBpbmNsdWRlUmVhZFByZWZlcmVuY2UsXG4gIGNvbmZpZyxcbiAgYXV0aCxcbiAgaW5mbyxcbiAgcGFyc2VDbGFzc2VzXG4pID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHt9O1xuICB0cnkge1xuICAgIGlmICghbmVlZFRvR2V0QWxsS2V5cyhwYXJzZUNsYXNzZXNbY2xhc3NOYW1lXS5maWVsZHMsIGtleXMsIHBhcnNlQ2xhc3NlcykpIHtcbiAgICAgIG9wdGlvbnMua2V5cyA9IGtleXM7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgfVxuICBpZiAoaW5jbHVkZSkge1xuICAgIG9wdGlvbnMuaW5jbHVkZSA9IGluY2x1ZGU7XG4gICAgaWYgKGluY2x1ZGVSZWFkUHJlZmVyZW5jZSkge1xuICAgICAgb3B0aW9ucy5pbmNsdWRlUmVhZFByZWZlcmVuY2UgPSBpbmNsdWRlUmVhZFByZWZlcmVuY2U7XG4gICAgfVxuICB9XG4gIGlmIChyZWFkUHJlZmVyZW5jZSkge1xuICAgIG9wdGlvbnMucmVhZFByZWZlcmVuY2UgPSByZWFkUHJlZmVyZW5jZTtcbiAgfVxuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVzdC5nZXQoXG4gICAgY29uZmlnLFxuICAgIGF1dGgsXG4gICAgY2xhc3NOYW1lLFxuICAgIG9iamVjdElkLFxuICAgIG9wdGlvbnMsXG4gICAgaW5mby5jbGllbnRTREssXG4gICAgaW5mby5jb250ZXh0XG4gICk7XG5cbiAgaWYgKCFyZXNwb25zZS5yZXN1bHRzIHx8IHJlc3BvbnNlLnJlc3VsdHMubGVuZ3RoID09IDApIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ09iamVjdCBub3QgZm91bmQuJyk7XG4gIH1cblxuICBjb25zdCBvYmplY3QgPSByZXNwb25zZS5yZXN1bHRzWzBdO1xuICBpZiAoY2xhc3NOYW1lID09PSAnX1VzZXInKSB7XG4gICAgZGVsZXRlIG9iamVjdC5zZXNzaW9uVG9rZW47XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cbmNvbnN0IGZpbmRPYmplY3RzID0gYXN5bmMgKFxuICBjbGFzc05hbWUsXG4gIHdoZXJlLFxuICBvcmRlcixcbiAgc2tpcElucHV0LFxuICBmaXJzdCxcbiAgYWZ0ZXIsXG4gIGxhc3QsXG4gIGJlZm9yZSxcbiAga2V5cyxcbiAgaW5jbHVkZSxcbiAgaW5jbHVkZUFsbCxcbiAgcmVhZFByZWZlcmVuY2UsXG4gIGluY2x1ZGVSZWFkUHJlZmVyZW5jZSxcbiAgc3VicXVlcnlSZWFkUHJlZmVyZW5jZSxcbiAgY29uZmlnLFxuICBhdXRoLFxuICBpbmZvLFxuICBzZWxlY3RlZEZpZWxkcyxcbiAgcGFyc2VDbGFzc2VzXG4pID0+IHtcbiAgaWYgKCF3aGVyZSkge1xuICAgIHdoZXJlID0ge307XG4gIH1cbiAgdHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2Uod2hlcmUsIGNsYXNzTmFtZSwgcGFyc2VDbGFzc2VzKTtcbiAgY29uc3Qgc2tpcEFuZExpbWl0Q2FsY3VsYXRpb24gPSBjYWxjdWxhdGVTa2lwQW5kTGltaXQoXG4gICAgc2tpcElucHV0LFxuICAgIGZpcnN0LFxuICAgIGFmdGVyLFxuICAgIGxhc3QsXG4gICAgYmVmb3JlLFxuICAgIGNvbmZpZy5tYXhMaW1pdFxuICApO1xuICBsZXQgeyBza2lwIH0gPSBza2lwQW5kTGltaXRDYWxjdWxhdGlvbjtcbiAgY29uc3QgeyBsaW1pdCwgbmVlZFRvUHJlQ291bnQgfSA9IHNraXBBbmRMaW1pdENhbGN1bGF0aW9uO1xuICBsZXQgcHJlQ291bnQgPSB1bmRlZmluZWQ7XG4gIGlmIChuZWVkVG9QcmVDb3VudCkge1xuICAgIGNvbnN0IHByZUNvdW50T3B0aW9ucyA9IHtcbiAgICAgIGxpbWl0OiAwLFxuICAgICAgY291bnQ6IHRydWUsXG4gICAgfTtcbiAgICBpZiAocmVhZFByZWZlcmVuY2UpIHtcbiAgICAgIHByZUNvdW50T3B0aW9ucy5yZWFkUHJlZmVyZW5jZSA9IHJlYWRQcmVmZXJlbmNlO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMod2hlcmUpLmxlbmd0aCA+IDAgJiYgc3VicXVlcnlSZWFkUHJlZmVyZW5jZSkge1xuICAgICAgcHJlQ291bnRPcHRpb25zLnN1YnF1ZXJ5UmVhZFByZWZlcmVuY2UgPSBzdWJxdWVyeVJlYWRQcmVmZXJlbmNlO1xuICAgIH1cbiAgICBwcmVDb3VudCA9IChcbiAgICAgIGF3YWl0IHJlc3QuZmluZChjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgd2hlcmUsIHByZUNvdW50T3B0aW9ucywgaW5mby5jbGllbnRTREssIGluZm8uY29udGV4dClcbiAgICApLmNvdW50O1xuICAgIGlmICgoc2tpcCB8fCAwKSArIGxpbWl0IDwgcHJlQ291bnQpIHtcbiAgICAgIHNraXAgPSBwcmVDb3VudCAtIGxpbWl0O1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnMgPSB7fTtcblxuICBpZiAoc2VsZWN0ZWRGaWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5zdGFydHNXaXRoKCdlZGdlcy4nKSB8fCBmaWVsZC5zdGFydHNXaXRoKCdwYWdlSW5mby4nKSkpIHtcbiAgICBpZiAobGltaXQgfHwgbGltaXQgPT09IDApIHtcbiAgICAgIG9wdGlvbnMubGltaXQgPSBsaW1pdDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9ucy5saW1pdCA9IDEwMDtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubGltaXQgIT09IDApIHtcbiAgICAgIGlmIChvcmRlcikge1xuICAgICAgICBvcHRpb25zLm9yZGVyID0gb3JkZXI7XG4gICAgICB9XG4gICAgICBpZiAoc2tpcCkge1xuICAgICAgICBvcHRpb25zLnNraXAgPSBza2lwO1xuICAgICAgfVxuICAgICAgaWYgKGNvbmZpZy5tYXhMaW1pdCAmJiBvcHRpb25zLmxpbWl0ID4gY29uZmlnLm1heExpbWl0KSB7XG4gICAgICAgIC8vIFNpbGVudGx5IHJlcGxhY2UgdGhlIGxpbWl0IG9uIHRoZSBxdWVyeSB3aXRoIHRoZSBtYXggY29uZmlndXJlZFxuICAgICAgICBvcHRpb25zLmxpbWl0ID0gY29uZmlnLm1heExpbWl0O1xuICAgICAgfVxuICAgICAgaWYgKCFuZWVkVG9HZXRBbGxLZXlzKHBhcnNlQ2xhc3Nlc1tjbGFzc05hbWVdLmZpZWxkcywga2V5cywgcGFyc2VDbGFzc2VzKSkge1xuICAgICAgICBvcHRpb25zLmtleXMgPSBrZXlzO1xuICAgICAgfVxuICAgICAgaWYgKGluY2x1ZGVBbGwgPT09IHRydWUpIHtcbiAgICAgICAgb3B0aW9ucy5pbmNsdWRlQWxsID0gaW5jbHVkZUFsbDtcbiAgICAgIH1cbiAgICAgIGlmICghb3B0aW9ucy5pbmNsdWRlQWxsICYmIGluY2x1ZGUpIHtcbiAgICAgICAgb3B0aW9ucy5pbmNsdWRlID0gaW5jbHVkZTtcbiAgICAgIH1cbiAgICAgIGlmICgob3B0aW9ucy5pbmNsdWRlQWxsIHx8IG9wdGlvbnMuaW5jbHVkZSkgJiYgaW5jbHVkZVJlYWRQcmVmZXJlbmNlKSB7XG4gICAgICAgIG9wdGlvbnMuaW5jbHVkZVJlYWRQcmVmZXJlbmNlID0gaW5jbHVkZVJlYWRQcmVmZXJlbmNlO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zLmxpbWl0ID0gMDtcbiAgfVxuXG4gIGlmIChcbiAgICAoc2VsZWN0ZWRGaWVsZHMuaW5jbHVkZXMoJ2NvdW50JykgfHxcbiAgICAgIHNlbGVjdGVkRmllbGRzLmluY2x1ZGVzKCdwYWdlSW5mby5oYXNQcmV2aW91c1BhZ2UnKSB8fFxuICAgICAgc2VsZWN0ZWRGaWVsZHMuaW5jbHVkZXMoJ3BhZ2VJbmZvLmhhc05leHRQYWdlJykpICYmXG4gICAgIW5lZWRUb1ByZUNvdW50XG4gICkge1xuICAgIG9wdGlvbnMuY291bnQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHJlYWRQcmVmZXJlbmNlKSB7XG4gICAgb3B0aW9ucy5yZWFkUHJlZmVyZW5jZSA9IHJlYWRQcmVmZXJlbmNlO1xuICB9XG4gIGlmIChPYmplY3Qua2V5cyh3aGVyZSkubGVuZ3RoID4gMCAmJiBzdWJxdWVyeVJlYWRQcmVmZXJlbmNlKSB7XG4gICAgb3B0aW9ucy5zdWJxdWVyeVJlYWRQcmVmZXJlbmNlID0gc3VicXVlcnlSZWFkUHJlZmVyZW5jZTtcbiAgfVxuXG4gIGxldCByZXN1bHRzLCBjb3VudDtcbiAgaWYgKG9wdGlvbnMuY291bnQgfHwgIW9wdGlvbnMubGltaXQgfHwgKG9wdGlvbnMubGltaXQgJiYgb3B0aW9ucy5saW1pdCA+IDApKSB7XG4gICAgY29uc3QgZmluZFJlc3VsdCA9IGF3YWl0IHJlc3QuZmluZChcbiAgICAgIGNvbmZpZyxcbiAgICAgIGF1dGgsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICB3aGVyZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBpbmZvLmNsaWVudFNESyxcbiAgICAgIGluZm8uY29udGV4dFxuICAgICk7XG4gICAgcmVzdWx0cyA9IGZpbmRSZXN1bHQucmVzdWx0cztcbiAgICBjb3VudCA9IGZpbmRSZXN1bHQuY291bnQ7XG4gIH1cblxuICBsZXQgZWRnZXMgPSBudWxsO1xuICBsZXQgcGFnZUluZm8gPSBudWxsO1xuICBpZiAocmVzdWx0cykge1xuICAgIGVkZ2VzID0gcmVzdWx0cy5tYXAoKHJlc3VsdCwgaW5kZXgpID0+ICh7XG4gICAgICBjdXJzb3I6IG9mZnNldFRvQ3Vyc29yKChza2lwIHx8IDApICsgaW5kZXgpLFxuICAgICAgbm9kZTogcmVzdWx0LFxuICAgIH0pKTtcblxuICAgIHBhZ2VJbmZvID0ge1xuICAgICAgaGFzUHJldmlvdXNQYWdlOlxuICAgICAgICAoKHByZUNvdW50ICYmIHByZUNvdW50ID4gMCkgfHwgKGNvdW50ICYmIGNvdW50ID4gMCkpICYmIHNraXAgIT09IHVuZGVmaW5lZCAmJiBza2lwID4gMCxcbiAgICAgIHN0YXJ0Q3Vyc29yOiBvZmZzZXRUb0N1cnNvcihza2lwIHx8IDApLFxuICAgICAgZW5kQ3Vyc29yOiBvZmZzZXRUb0N1cnNvcigoc2tpcCB8fCAwKSArIChyZXN1bHRzLmxlbmd0aCB8fCAxKSAtIDEpLFxuICAgICAgaGFzTmV4dFBhZ2U6IChwcmVDb3VudCB8fCBjb3VudCkgPiAoc2tpcCB8fCAwKSArIHJlc3VsdHMubGVuZ3RoLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVkZ2VzLFxuICAgIHBhZ2VJbmZvLFxuICAgIGNvdW50OiBwcmVDb3VudCB8fCBjb3VudCxcbiAgfTtcbn07XG5cbmNvbnN0IGNhbGN1bGF0ZVNraXBBbmRMaW1pdCA9IChza2lwSW5wdXQsIGZpcnN0LCBhZnRlciwgbGFzdCwgYmVmb3JlLCBtYXhMaW1pdCkgPT4ge1xuICBsZXQgc2tpcCA9IHVuZGVmaW5lZDtcbiAgbGV0IGxpbWl0ID0gdW5kZWZpbmVkO1xuICBsZXQgbmVlZFRvUHJlQ291bnQgPSBmYWxzZTtcblxuICAvLyBWYWxpZGF0ZXMgdGhlIHNraXAgaW5wdXRcbiAgaWYgKHNraXBJbnB1dCB8fCBza2lwSW5wdXQgPT09IDApIHtcbiAgICBpZiAoc2tpcElucHV0IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksICdTa2lwIHNob3VsZCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICAgIH1cbiAgICBza2lwID0gc2tpcElucHV0O1xuICB9XG5cbiAgLy8gVmFsaWRhdGVzIHRoZSBhZnRlciBwYXJhbVxuICBpZiAoYWZ0ZXIpIHtcbiAgICBhZnRlciA9IGN1cnNvclRvT2Zmc2V0KGFmdGVyKTtcbiAgICBpZiAoKCFhZnRlciAmJiBhZnRlciAhPT0gMCkgfHwgYWZ0ZXIgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9RVUVSWSwgJ0FmdGVyIGlzIG5vdCBhIHZhbGlkIGN1cnNvcicpO1xuICAgIH1cblxuICAgIC8vIElmIHNraXAgYW5kIGFmdGVyIGFyZSBwYXNzZWQsIGEgbmV3IHNraXAgaXMgY2FsY3VsYXRlZCBieSBhZGRpbmcgdGhlbVxuICAgIHNraXAgPSAoc2tpcCB8fCAwKSArIChhZnRlciArIDEpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGVzIHRoZSBmaXJzdCBwYXJhbVxuICBpZiAoZmlyc3QgfHwgZmlyc3QgPT09IDApIHtcbiAgICBpZiAoZmlyc3QgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9RVUVSWSwgJ0ZpcnN0IHNob3VsZCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICAgIH1cblxuICAgIC8vIFRoZSBmaXJzdCBwYXJhbSBpcyB0cmFuc2xhdGVkIHRvIHRoZSBsaW1pdCBwYXJhbSBvZiB0aGUgUGFyc2UgbGVnYWN5IEFQSVxuICAgIGxpbWl0ID0gZmlyc3Q7XG4gIH1cblxuICAvLyBWYWxpZGF0ZXMgdGhlIGJlZm9yZSBwYXJhbVxuICBpZiAoYmVmb3JlIHx8IGJlZm9yZSA9PT0gMCkge1xuICAgIC8vIFRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBjdXJzb3IgdG8gdGhlIGluZGV4IG9mIHRoZSBvYmplY3RcbiAgICBiZWZvcmUgPSBjdXJzb3JUb09mZnNldChiZWZvcmUpO1xuICAgIGlmICgoIWJlZm9yZSAmJiBiZWZvcmUgIT09IDApIHx8IGJlZm9yZSA8IDApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1FVRVJZLCAnQmVmb3JlIGlzIG5vdCBhIHZhbGlkIGN1cnNvcicpO1xuICAgIH1cblxuICAgIGlmICgoc2tpcCB8fCAwKSA+PSBiZWZvcmUpIHtcbiAgICAgIC8vIElmIHRoZSBiZWZvcmUgaW5kZXggaXMgbGVzcyB0aGVuIHRoZSBza2lwLCBubyBvYmplY3RzIHdpbGwgYmUgcmV0dXJuZWRcbiAgICAgIGxpbWl0ID0gMDtcbiAgICB9IGVsc2UgaWYgKCghbGltaXQgJiYgbGltaXQgIT09IDApIHx8IChza2lwIHx8IDApICsgbGltaXQgPiBiZWZvcmUpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGxpbWl0IHNldCwgdGhlIGxpbWl0IGlzIGNhbGN1bGF0ZWQuIE9yLCBpZiB0aGUgbGltaXQgKHBsdXMgc2tpcCkgaXMgYmlnZ2VyIHRoYW4gdGhlIGJlZm9yZSBpbmRleCwgdGhlIG5ldyBsaW1pdCBpcyBzZXQuXG4gICAgICBsaW1pdCA9IGJlZm9yZSAtIChza2lwIHx8IDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIFZhbGlkYXRlcyB0aGUgbGFzdCBwYXJhbVxuICBpZiAobGFzdCB8fCBsYXN0ID09PSAwKSB7XG4gICAgaWYgKGxhc3QgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9RVUVSWSwgJ0xhc3Qgc2hvdWxkIGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gICAgfVxuXG4gICAgaWYgKGxhc3QgPiBtYXhMaW1pdCkge1xuICAgICAgLy8gTGFzdCBjYW4ndCBiZSBiaWdnZXIgdGhhbiBQYXJzZSBzZXJ2ZXIgbWF4TGltaXQgY29uZmlnLlxuICAgICAgbGFzdCA9IG1heExpbWl0O1xuICAgIH1cblxuICAgIGlmIChsaW1pdCB8fCBsaW1pdCA9PT0gMCkge1xuICAgICAgLy8gSWYgdGhlcmUgaXMgYSBwcmV2aW91cyBsaW1pdCBzZXQsIGl0IG1heSBiZSBhZGp1c3RlZFxuICAgICAgaWYgKGxhc3QgPCBsaW1pdCkge1xuICAgICAgICAvLyBpZiBsYXN0IGlzIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsaW1pdFxuICAgICAgICBza2lwID0gKHNraXAgfHwgMCkgKyAobGltaXQgLSBsYXN0KTsgLy8gVGhlIHNraXAgaXMgYWRqdXN0ZWRcbiAgICAgICAgbGltaXQgPSBsYXN0OyAvLyB0aGUgbGltaXQgaXMgYWRqdXN0ZWRcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09IDApIHtcbiAgICAgIC8vIE5vIG9iamVjdHMgd2lsbCBiZSByZXR1cm5lZFxuICAgICAgbGltaXQgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBwcmV2aW91cyBsaW1pdCBzZXQsIHRoZSBsaW1pdCB3aWxsIGJlIGVxdWFsIHRvIGxhc3QgYW5kIHByZSBjb3VudCBpcyBuZWVkZWQuXG4gICAgICBsaW1pdCA9IGxhc3Q7XG4gICAgICBuZWVkVG9QcmVDb3VudCA9IHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgc2tpcCxcbiAgICBsaW1pdCxcbiAgICBuZWVkVG9QcmVDb3VudCxcbiAgfTtcbn07XG5cbmV4cG9ydCB7IGdldE9iamVjdCwgZmluZE9iamVjdHMsIGNhbGN1bGF0ZVNraXBBbmRMaW1pdCwgbmVlZFRvR2V0QWxsS2V5cyB9O1xuIl19
|