@beiguancyc/parse-server 9.9.0-ruixiang.1
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 +176 -0
- package/NOTICE +10 -0
- package/README.md +1311 -0
- package/bin/parse-live-query-server +3 -0
- package/bin/parse-server +3 -0
- package/lib/AccountLockout.js +149 -0
- package/lib/Adapters/AdapterLoader.js +60 -0
- package/lib/Adapters/Analytics/AnalyticsAdapter.js +32 -0
- package/lib/Adapters/Auth/AuthAdapter.js +132 -0
- package/lib/Adapters/Auth/BaseCodeAuthAdapter.js +119 -0
- package/lib/Adapters/Auth/OAuth1Client.js +204 -0
- package/lib/Adapters/Auth/apple.js +125 -0
- package/lib/Adapters/Auth/facebook.js +187 -0
- package/lib/Adapters/Auth/gcenter.js +217 -0
- package/lib/Adapters/Auth/github.js +125 -0
- package/lib/Adapters/Auth/google.js +122 -0
- package/lib/Adapters/Auth/gpgames.js +125 -0
- package/lib/Adapters/Auth/httpsRequest.js +41 -0
- package/lib/Adapters/Auth/index.js +248 -0
- package/lib/Adapters/Auth/instagram.js +118 -0
- package/lib/Adapters/Auth/janraincapture.js +85 -0
- package/lib/Adapters/Auth/janrainengage.js +57 -0
- package/lib/Adapters/Auth/keycloak.js +168 -0
- package/lib/Adapters/Auth/ldap.js +193 -0
- package/lib/Adapters/Auth/line.js +125 -0
- package/lib/Adapters/Auth/linkedin.js +117 -0
- package/lib/Adapters/Auth/meetup.js +44 -0
- package/lib/Adapters/Auth/mfa.js +334 -0
- package/lib/Adapters/Auth/microsoft.js +111 -0
- package/lib/Adapters/Auth/oauth2.js +115 -0
- package/lib/Adapters/Auth/phantauth.js +53 -0
- package/lib/Adapters/Auth/qq.js +113 -0
- package/lib/Adapters/Auth/spotify.js +115 -0
- package/lib/Adapters/Auth/twitter.js +197 -0
- package/lib/Adapters/Auth/utils.js +28 -0
- package/lib/Adapters/Auth/vkontakte.js +55 -0
- package/lib/Adapters/Auth/wechat.js +110 -0
- package/lib/Adapters/Auth/weibo.js +141 -0
- package/lib/Adapters/Cache/CacheAdapter.js +40 -0
- package/lib/Adapters/Cache/InMemoryCache.js +61 -0
- package/lib/Adapters/Cache/InMemoryCacheAdapter.js +34 -0
- package/lib/Adapters/Cache/LRUCache.js +35 -0
- package/lib/Adapters/Cache/NullCacheAdapter.js +26 -0
- package/lib/Adapters/Cache/RedisCacheAdapter.js +109 -0
- package/lib/Adapters/Cache/SchemaCache.js +25 -0
- package/lib/Adapters/Email/MailAdapter.js +32 -0
- package/lib/Adapters/Files/FilesAdapter.js +129 -0
- package/lib/Adapters/Files/GridFSBucketAdapter.js +280 -0
- package/lib/Adapters/Files/GridStoreAdapter.js +5 -0
- package/lib/Adapters/Logger/LoggerAdapter.js +27 -0
- package/lib/Adapters/Logger/WinstonLogger.js +107 -0
- package/lib/Adapters/Logger/WinstonLoggerAdapter.js +63 -0
- package/lib/Adapters/MessageQueue/EventEmitterMQ.js +55 -0
- package/lib/Adapters/PubSub/EventEmitterPubSub.js +53 -0
- package/lib/Adapters/PubSub/PubSubAdapter.js +34 -0
- package/lib/Adapters/PubSub/RedisPubSub.js +49 -0
- package/lib/Adapters/Push/PushAdapter.js +40 -0
- package/lib/Adapters/Storage/Mongo/MongoCollection.js +212 -0
- package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +334 -0
- package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +1047 -0
- package/lib/Adapters/Storage/Mongo/MongoTransform.js +1397 -0
- package/lib/Adapters/Storage/Postgres/PostgresClient.js +38 -0
- package/lib/Adapters/Storage/Postgres/PostgresConfigParser.js +73 -0
- package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +2409 -0
- package/lib/Adapters/Storage/Postgres/sql/array/add-unique.sql +11 -0
- package/lib/Adapters/Storage/Postgres/sql/array/add.sql +11 -0
- package/lib/Adapters/Storage/Postgres/sql/array/contains-all-regex.sql +14 -0
- package/lib/Adapters/Storage/Postgres/sql/array/contains-all.sql +14 -0
- package/lib/Adapters/Storage/Postgres/sql/array/contains.sql +11 -0
- package/lib/Adapters/Storage/Postgres/sql/array/remove.sql +11 -0
- package/lib/Adapters/Storage/Postgres/sql/index.js +32 -0
- package/lib/Adapters/Storage/Postgres/sql/misc/json-object-set-keys.sql +19 -0
- package/lib/Adapters/Storage/StorageAdapter.js +2 -0
- package/lib/Adapters/WebSocketServer/WSAdapter.js +35 -0
- package/lib/Adapters/WebSocketServer/WSSAdapter.js +66 -0
- package/lib/Auth.js +687 -0
- package/lib/AuthDataLock.js +53 -0
- package/lib/ClientSDK.js +39 -0
- package/lib/Config.js +879 -0
- package/lib/Controllers/AdaptableController.js +72 -0
- package/lib/Controllers/AnalyticsController.js +43 -0
- package/lib/Controllers/CacheController.js +71 -0
- package/lib/Controllers/DatabaseController.js +1685 -0
- package/lib/Controllers/FilesController.js +122 -0
- package/lib/Controllers/HooksController.js +254 -0
- package/lib/Controllers/LiveQueryController.js +72 -0
- package/lib/Controllers/LoggerController.js +222 -0
- package/lib/Controllers/ParseGraphQLController.js +294 -0
- package/lib/Controllers/PushController.js +224 -0
- package/lib/Controllers/SchemaController.js +1563 -0
- package/lib/Controllers/UserController.js +364 -0
- package/lib/Controllers/index.js +251 -0
- package/lib/Controllers/types.js +2 -0
- package/lib/Deprecator/Deprecations.js +100 -0
- package/lib/Deprecator/Deprecator.js +140 -0
- package/lib/Error.js +50 -0
- package/lib/FileUrlValidator.js +69 -0
- package/lib/GraphQL/ParseGraphQLSchema.js +375 -0
- package/lib/GraphQL/ParseGraphQLServer.js +241 -0
- package/lib/GraphQL/helpers/objectsMutations.js +30 -0
- package/lib/GraphQL/helpers/objectsQueries.js +246 -0
- package/lib/GraphQL/helpers/queryComplexity.js +138 -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 +1099 -0
- package/lib/GraphQL/loaders/defaultRelaySchema.js +53 -0
- package/lib/GraphQL/loaders/filesMutations.js +107 -0
- package/lib/GraphQL/loaders/functionsMutations.js +77 -0
- package/lib/GraphQL/loaders/parseClassMutations.js +267 -0
- package/lib/GraphQL/loaders/parseClassQueries.js +126 -0
- package/lib/GraphQL/loaders/parseClassTypes.js +493 -0
- package/lib/GraphQL/loaders/schemaDirectives.js +62 -0
- package/lib/GraphQL/loaders/schemaMutations.js +161 -0
- package/lib/GraphQL/loaders/schemaQueries.js +80 -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 +71 -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 +280 -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/InstallationDedup.js +178 -0
- package/lib/KeyPromiseQueue.js +48 -0
- package/lib/LiveQuery/Client.js +90 -0
- package/lib/LiveQuery/Id.js +20 -0
- package/lib/LiveQuery/ParseCloudCodePublisher.js +54 -0
- package/lib/LiveQuery/ParseLiveQueryServer.js +1071 -0
- package/lib/LiveQuery/ParsePubSub.js +37 -0
- package/lib/LiveQuery/ParseWebSocketServer.js +66 -0
- package/lib/LiveQuery/QueryTools.js +443 -0
- package/lib/LiveQuery/RequestSchema.js +161 -0
- package/lib/LiveQuery/SessionTokenCache.js +51 -0
- package/lib/LiveQuery/Subscription.js +47 -0
- package/lib/LiveQuery/equalObjects.js +50 -0
- package/lib/Options/Definitions.js +1599 -0
- package/lib/Options/docs.js +389 -0
- package/lib/Options/index.js +12 -0
- package/lib/Options/parsers.js +89 -0
- package/lib/Page.js +44 -0
- package/lib/ParseMessageQueue.js +24 -0
- package/lib/ParseServer.js +632 -0
- package/lib/ParseServerRESTController.js +173 -0
- package/lib/PromiseRouter.js +208 -0
- package/lib/Push/PushQueue.js +67 -0
- package/lib/Push/PushWorker.js +101 -0
- package/lib/Push/utils.js +129 -0
- package/lib/RestQuery.js +1208 -0
- package/lib/RestWrite.js +1671 -0
- package/lib/Routers/AggregateRouter.js +150 -0
- package/lib/Routers/AnalyticsRouter.js +26 -0
- package/lib/Routers/AudiencesRouter.js +54 -0
- package/lib/Routers/ClassesRouter.js +191 -0
- package/lib/Routers/CloudCodeRouter.js +87 -0
- package/lib/Routers/FeaturesRouter.js +72 -0
- package/lib/Routers/FilesRouter.js +772 -0
- package/lib/Routers/FunctionsRouter.js +341 -0
- package/lib/Routers/GlobalConfigRouter.js +123 -0
- package/lib/Routers/GraphQLRouter.js +41 -0
- package/lib/Routers/HooksRouter.js +121 -0
- package/lib/Routers/IAPValidationRouter.js +113 -0
- package/lib/Routers/InstallationsRouter.js +46 -0
- package/lib/Routers/LogsRouter.js +57 -0
- package/lib/Routers/PagesRouter.js +676 -0
- package/lib/Routers/PurgeRouter.js +45 -0
- package/lib/Routers/PushRouter.js +75 -0
- package/lib/Routers/RolesRouter.js +33 -0
- package/lib/Routers/SchemasRouter.js +118 -0
- package/lib/Routers/SecurityRouter.js +34 -0
- package/lib/Routers/SessionsRouter.js +126 -0
- package/lib/Routers/UsersRouter.js +733 -0
- 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 +160 -0
- package/lib/Security/CheckGroups/CheckGroups.js +21 -0
- package/lib/Security/CheckRunner.js +213 -0
- package/lib/SharedRest.js +34 -0
- package/lib/StatusHandler.js +329 -0
- package/lib/TestUtils.js +87 -0
- package/lib/Utils.js +577 -0
- package/lib/batch.js +185 -0
- package/lib/cache.js +12 -0
- package/lib/cli/definitions/parse-live-query-server.js +9 -0
- package/lib/cli/definitions/parse-server.js +9 -0
- package/lib/cli/parse-live-query-server.js +14 -0
- package/lib/cli/parse-server.js +101 -0
- package/lib/cli/utils/commander.js +132 -0
- package/lib/cli/utils/runner.js +53 -0
- package/lib/cloud-code/Parse.Cloud.js +797 -0
- package/lib/cloud-code/Parse.Server.js +21 -0
- package/lib/cryptoUtils.js +54 -0
- package/lib/defaults.js +58 -0
- package/lib/deprecated.js +12 -0
- package/lib/index.js +89 -0
- package/lib/logger.js +40 -0
- package/lib/middlewares.js +810 -0
- package/lib/password.js +40 -0
- package/lib/request.js +175 -0
- package/lib/requiredParameter.js +11 -0
- package/lib/rest.js +264 -0
- package/lib/triggers.js +949 -0
- package/lib/vendor/README.md +8 -0
- package/lib/vendor/mongodbUrl.js +1012 -0
- package/package.json +172 -0
- package/postinstall.js +38 -0
- package/public/custom_json.html +17 -0
- package/public/custom_json.json +23 -0
- package/public/custom_page.html +15 -0
- package/public/de/email_verification_link_expired.html +24 -0
- package/public/de/email_verification_link_invalid.html +21 -0
- package/public/de/email_verification_send_fail.html +21 -0
- package/public/de/email_verification_send_success.html +19 -0
- package/public/de/email_verification_success.html +18 -0
- package/public/de/password_reset.html +65 -0
- package/public/de/password_reset_link_invalid.html +19 -0
- package/public/de/password_reset_success.html +18 -0
- package/public/de-AT/email_verification_link_expired.html +24 -0
- package/public/de-AT/email_verification_link_invalid.html +21 -0
- package/public/de-AT/email_verification_send_fail.html +21 -0
- package/public/de-AT/email_verification_send_success.html +19 -0
- package/public/de-AT/email_verification_success.html +18 -0
- package/public/de-AT/password_reset.html +65 -0
- package/public/de-AT/password_reset_link_invalid.html +19 -0
- package/public/de-AT/password_reset_success.html +18 -0
- package/public/email_verification_link_expired.html +24 -0
- package/public/email_verification_link_invalid.html +21 -0
- package/public/email_verification_send_fail.html +21 -0
- package/public/email_verification_send_success.html +19 -0
- package/public/email_verification_success.html +18 -0
- package/public/password_reset.html +65 -0
- package/public/password_reset_link_invalid.html +19 -0
- package/public/password_reset_success.html +18 -0
- 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 +320 -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/views/choose_password +215 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getAnalyticsController = getAnalyticsController;
|
|
7
|
+
exports.getAuthDataManager = getAuthDataManager;
|
|
8
|
+
exports.getCacheController = getCacheController;
|
|
9
|
+
exports.getControllers = getControllers;
|
|
10
|
+
exports.getDatabaseAdapter = getDatabaseAdapter;
|
|
11
|
+
exports.getDatabaseController = getDatabaseController;
|
|
12
|
+
exports.getFilesController = getFilesController;
|
|
13
|
+
exports.getHooksController = getHooksController;
|
|
14
|
+
exports.getLiveQueryController = getLiveQueryController;
|
|
15
|
+
exports.getLoggerController = getLoggerController;
|
|
16
|
+
exports.getParseGraphQLController = getParseGraphQLController;
|
|
17
|
+
exports.getPushController = getPushController;
|
|
18
|
+
exports.getUserController = getUserController;
|
|
19
|
+
var _Auth = _interopRequireDefault(require("../Adapters/Auth"));
|
|
20
|
+
var _Options = require("../Options");
|
|
21
|
+
var _AdapterLoader = require("../Adapters/AdapterLoader");
|
|
22
|
+
var _defaults = _interopRequireDefault(require("../defaults"));
|
|
23
|
+
var _LoggerController = require("./LoggerController");
|
|
24
|
+
var _FilesController = require("./FilesController");
|
|
25
|
+
var _HooksController = require("./HooksController");
|
|
26
|
+
var _UserController = require("./UserController");
|
|
27
|
+
var _CacheController = require("./CacheController");
|
|
28
|
+
var _LiveQueryController = require("./LiveQueryController");
|
|
29
|
+
var _AnalyticsController = require("./AnalyticsController");
|
|
30
|
+
var _PushController = require("./PushController");
|
|
31
|
+
var _PushQueue = require("../Push/PushQueue");
|
|
32
|
+
var _PushWorker = require("../Push/PushWorker");
|
|
33
|
+
var _DatabaseController = _interopRequireDefault(require("./DatabaseController"));
|
|
34
|
+
var _GridFSBucketAdapter = require("../Adapters/Files/GridFSBucketAdapter");
|
|
35
|
+
var _WinstonLoggerAdapter = require("../Adapters/Logger/WinstonLoggerAdapter");
|
|
36
|
+
var _InMemoryCacheAdapter = require("../Adapters/Cache/InMemoryCacheAdapter");
|
|
37
|
+
var _AnalyticsAdapter = require("../Adapters/Analytics/AnalyticsAdapter");
|
|
38
|
+
var _MongoStorageAdapter = _interopRequireDefault(require("../Adapters/Storage/Mongo/MongoStorageAdapter"));
|
|
39
|
+
var _PostgresStorageAdapter = _interopRequireDefault(require("../Adapters/Storage/Postgres/PostgresStorageAdapter"));
|
|
40
|
+
var _ParseGraphQLController = _interopRequireDefault(require("./ParseGraphQLController"));
|
|
41
|
+
var _SchemaCache = _interopRequireDefault(require("../Adapters/Cache/SchemaCache"));
|
|
42
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
43
|
+
// Controllers
|
|
44
|
+
|
|
45
|
+
// Adapters
|
|
46
|
+
|
|
47
|
+
function getControllers(options) {
|
|
48
|
+
const loggerController = getLoggerController(options);
|
|
49
|
+
const filesController = getFilesController(options);
|
|
50
|
+
const userController = getUserController(options);
|
|
51
|
+
const cacheController = getCacheController(options);
|
|
52
|
+
const analyticsController = getAnalyticsController(options);
|
|
53
|
+
const liveQueryController = getLiveQueryController(options);
|
|
54
|
+
const databaseController = getDatabaseController(options);
|
|
55
|
+
const hooksController = getHooksController(options, databaseController);
|
|
56
|
+
const authDataManager = getAuthDataManager(options);
|
|
57
|
+
const parseGraphQLController = getParseGraphQLController(options, {
|
|
58
|
+
databaseController,
|
|
59
|
+
cacheController
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
loggerController,
|
|
63
|
+
filesController,
|
|
64
|
+
userController,
|
|
65
|
+
analyticsController,
|
|
66
|
+
cacheController,
|
|
67
|
+
parseGraphQLController,
|
|
68
|
+
liveQueryController,
|
|
69
|
+
databaseController,
|
|
70
|
+
hooksController,
|
|
71
|
+
authDataManager,
|
|
72
|
+
schemaCache: _SchemaCache.default
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function getLoggerController(options) {
|
|
76
|
+
const {
|
|
77
|
+
appId,
|
|
78
|
+
jsonLogs,
|
|
79
|
+
logsFolder,
|
|
80
|
+
verbose,
|
|
81
|
+
logLevel,
|
|
82
|
+
logStringTruncateLength,
|
|
83
|
+
maxLogFiles,
|
|
84
|
+
silent,
|
|
85
|
+
loggerAdapter
|
|
86
|
+
} = options;
|
|
87
|
+
const loggerOptions = {
|
|
88
|
+
jsonLogs,
|
|
89
|
+
logsFolder,
|
|
90
|
+
verbose,
|
|
91
|
+
logLevel,
|
|
92
|
+
logStringTruncateLength,
|
|
93
|
+
silent,
|
|
94
|
+
maxLogFiles
|
|
95
|
+
};
|
|
96
|
+
const loggerControllerAdapter = (0, _AdapterLoader.loadAdapter)(loggerAdapter, _WinstonLoggerAdapter.WinstonLoggerAdapter, loggerOptions);
|
|
97
|
+
return new _LoggerController.LoggerController(loggerControllerAdapter, appId, loggerOptions);
|
|
98
|
+
}
|
|
99
|
+
function getFilesController(options) {
|
|
100
|
+
const {
|
|
101
|
+
appId,
|
|
102
|
+
databaseURI,
|
|
103
|
+
databaseOptions = {},
|
|
104
|
+
filesAdapter,
|
|
105
|
+
databaseAdapter,
|
|
106
|
+
preserveFileName,
|
|
107
|
+
fileKey
|
|
108
|
+
} = options;
|
|
109
|
+
if (!filesAdapter && databaseAdapter) {
|
|
110
|
+
throw 'When using an explicit database adapter, you must also use an explicit filesAdapter.';
|
|
111
|
+
}
|
|
112
|
+
const filesControllerAdapter = (0, _AdapterLoader.loadAdapter)(filesAdapter, () => {
|
|
113
|
+
return new _GridFSBucketAdapter.GridFSBucketAdapter(databaseURI, databaseOptions, fileKey);
|
|
114
|
+
});
|
|
115
|
+
return new _FilesController.FilesController(filesControllerAdapter, appId, {
|
|
116
|
+
preserveFileName
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
function getUserController(options) {
|
|
120
|
+
const {
|
|
121
|
+
appId,
|
|
122
|
+
emailAdapter,
|
|
123
|
+
verifyUserEmails
|
|
124
|
+
} = options;
|
|
125
|
+
const emailControllerAdapter = (0, _AdapterLoader.loadAdapter)(emailAdapter);
|
|
126
|
+
return new _UserController.UserController(emailControllerAdapter, appId, {
|
|
127
|
+
verifyUserEmails
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
function getCacheController(options) {
|
|
131
|
+
const {
|
|
132
|
+
appId,
|
|
133
|
+
cacheAdapter,
|
|
134
|
+
cacheTTL,
|
|
135
|
+
cacheMaxSize
|
|
136
|
+
} = options;
|
|
137
|
+
const cacheControllerAdapter = (0, _AdapterLoader.loadAdapter)(cacheAdapter, _InMemoryCacheAdapter.InMemoryCacheAdapter, {
|
|
138
|
+
appId: appId,
|
|
139
|
+
ttl: cacheTTL,
|
|
140
|
+
maxSize: cacheMaxSize
|
|
141
|
+
});
|
|
142
|
+
return new _CacheController.CacheController(cacheControllerAdapter, appId);
|
|
143
|
+
}
|
|
144
|
+
function getParseGraphQLController(options, controllerDeps) {
|
|
145
|
+
return new _ParseGraphQLController.default({
|
|
146
|
+
mountGraphQL: options.mountGraphQL,
|
|
147
|
+
...controllerDeps
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
function getAnalyticsController(options) {
|
|
151
|
+
const {
|
|
152
|
+
analyticsAdapter
|
|
153
|
+
} = options;
|
|
154
|
+
const analyticsControllerAdapter = (0, _AdapterLoader.loadAdapter)(analyticsAdapter, _AnalyticsAdapter.AnalyticsAdapter);
|
|
155
|
+
return new _AnalyticsController.AnalyticsController(analyticsControllerAdapter);
|
|
156
|
+
}
|
|
157
|
+
function getLiveQueryController(options) {
|
|
158
|
+
return new _LiveQueryController.LiveQueryController(options.liveQuery);
|
|
159
|
+
}
|
|
160
|
+
function getDatabaseController(options) {
|
|
161
|
+
const {
|
|
162
|
+
databaseURI,
|
|
163
|
+
collectionPrefix,
|
|
164
|
+
databaseOptions
|
|
165
|
+
} = options;
|
|
166
|
+
let {
|
|
167
|
+
databaseAdapter
|
|
168
|
+
} = options;
|
|
169
|
+
if ((databaseOptions || databaseURI && databaseURI !== _defaults.default.databaseURI || collectionPrefix !== _defaults.default.collectionPrefix) && databaseAdapter) {
|
|
170
|
+
throw 'You cannot specify both a databaseAdapter and a databaseURI/databaseOptions/collectionPrefix.';
|
|
171
|
+
} else if (!databaseAdapter) {
|
|
172
|
+
databaseAdapter = getDatabaseAdapter(databaseURI, collectionPrefix, databaseOptions);
|
|
173
|
+
} else {
|
|
174
|
+
databaseAdapter = (0, _AdapterLoader.loadAdapter)(databaseAdapter);
|
|
175
|
+
}
|
|
176
|
+
return new _DatabaseController.default(databaseAdapter, options);
|
|
177
|
+
}
|
|
178
|
+
function getHooksController(options, databaseController) {
|
|
179
|
+
const {
|
|
180
|
+
appId,
|
|
181
|
+
webhookKey
|
|
182
|
+
} = options;
|
|
183
|
+
return new _HooksController.HooksController(appId, databaseController, webhookKey);
|
|
184
|
+
}
|
|
185
|
+
async function getPushController(options) {
|
|
186
|
+
const {
|
|
187
|
+
scheduledPush,
|
|
188
|
+
push
|
|
189
|
+
} = options;
|
|
190
|
+
const pushOptions = Object.assign({}, push);
|
|
191
|
+
const pushQueueOptions = pushOptions.queueOptions || {};
|
|
192
|
+
if (pushOptions.queueOptions) {
|
|
193
|
+
delete pushOptions.queueOptions;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Pass the push options too as it works with the default
|
|
197
|
+
const ParsePushAdapter = await (0, _AdapterLoader.loadModule)('@parse/push-adapter');
|
|
198
|
+
const pushAdapter = (0, _AdapterLoader.loadAdapter)(pushOptions && pushOptions.adapter, ParsePushAdapter, pushOptions);
|
|
199
|
+
// We pass the options and the base class for the adatper,
|
|
200
|
+
// Note that passing an instance would work too
|
|
201
|
+
const pushController = new _PushController.PushController();
|
|
202
|
+
const hasPushSupport = !!(pushAdapter && push);
|
|
203
|
+
const hasPushScheduledSupport = hasPushSupport && scheduledPush === true;
|
|
204
|
+
const {
|
|
205
|
+
disablePushWorker
|
|
206
|
+
} = pushQueueOptions;
|
|
207
|
+
const pushControllerQueue = new _PushQueue.PushQueue(pushQueueOptions);
|
|
208
|
+
let pushWorker;
|
|
209
|
+
if (!disablePushWorker) {
|
|
210
|
+
pushWorker = new _PushWorker.PushWorker(pushAdapter, pushQueueOptions);
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
pushController,
|
|
214
|
+
hasPushSupport,
|
|
215
|
+
hasPushScheduledSupport,
|
|
216
|
+
pushControllerQueue,
|
|
217
|
+
pushWorker
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
function getAuthDataManager(options) {
|
|
221
|
+
const {
|
|
222
|
+
auth,
|
|
223
|
+
enableAnonymousUsers
|
|
224
|
+
} = options;
|
|
225
|
+
return (0, _Auth.default)(auth, enableAnonymousUsers);
|
|
226
|
+
}
|
|
227
|
+
function getDatabaseAdapter(databaseURI, collectionPrefix, databaseOptions) {
|
|
228
|
+
let protocol;
|
|
229
|
+
try {
|
|
230
|
+
const parsedURI = new URL(databaseURI);
|
|
231
|
+
protocol = parsedURI.protocol ? parsedURI.protocol.toLowerCase() : null;
|
|
232
|
+
} catch {
|
|
233
|
+
/* */
|
|
234
|
+
}
|
|
235
|
+
switch (protocol) {
|
|
236
|
+
case 'postgres:':
|
|
237
|
+
case 'postgresql:':
|
|
238
|
+
return new _PostgresStorageAdapter.default({
|
|
239
|
+
uri: databaseURI,
|
|
240
|
+
collectionPrefix,
|
|
241
|
+
databaseOptions
|
|
242
|
+
});
|
|
243
|
+
default:
|
|
244
|
+
return new _MongoStorageAdapter.default({
|
|
245
|
+
uri: databaseURI,
|
|
246
|
+
collectionPrefix,
|
|
247
|
+
mongoOptions: databaseOptions
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQXV0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX09wdGlvbnMiLCJfQWRhcHRlckxvYWRlciIsIl9kZWZhdWx0cyIsIl9Mb2dnZXJDb250cm9sbGVyIiwiX0ZpbGVzQ29udHJvbGxlciIsIl9Ib29rc0NvbnRyb2xsZXIiLCJfVXNlckNvbnRyb2xsZXIiLCJfQ2FjaGVDb250cm9sbGVyIiwiX0xpdmVRdWVyeUNvbnRyb2xsZXIiLCJfQW5hbHl0aWNzQ29udHJvbGxlciIsIl9QdXNoQ29udHJvbGxlciIsIl9QdXNoUXVldWUiLCJfUHVzaFdvcmtlciIsIl9EYXRhYmFzZUNvbnRyb2xsZXIiLCJfR3JpZEZTQnVja2V0QWRhcHRlciIsIl9XaW5zdG9uTG9nZ2VyQWRhcHRlciIsIl9Jbk1lbW9yeUNhY2hlQWRhcHRlciIsIl9BbmFseXRpY3NBZGFwdGVyIiwiX01vbmdvU3RvcmFnZUFkYXB0ZXIiLCJfUG9zdGdyZXNTdG9yYWdlQWRhcHRlciIsIl9QYXJzZUdyYXBoUUxDb250cm9sbGVyIiwiX1NjaGVtYUNhY2hlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZ2V0Q29udHJvbGxlcnMiLCJvcHRpb25zIiwibG9nZ2VyQ29udHJvbGxlciIsImdldExvZ2dlckNvbnRyb2xsZXIiLCJmaWxlc0NvbnRyb2xsZXIiLCJnZXRGaWxlc0NvbnRyb2xsZXIiLCJ1c2VyQ29udHJvbGxlciIsImdldFVzZXJDb250cm9sbGVyIiwiY2FjaGVDb250cm9sbGVyIiwiZ2V0Q2FjaGVDb250cm9sbGVyIiwiYW5hbHl0aWNzQ29udHJvbGxlciIsImdldEFuYWx5dGljc0NvbnRyb2xsZXIiLCJsaXZlUXVlcnlDb250cm9sbGVyIiwiZ2V0TGl2ZVF1ZXJ5Q29udHJvbGxlciIsImRhdGFiYXNlQ29udHJvbGxlciIsImdldERhdGFiYXNlQ29udHJvbGxlciIsImhvb2tzQ29udHJvbGxlciIsImdldEhvb2tzQ29udHJvbGxlciIsImF1dGhEYXRhTWFuYWdlciIsImdldEF1dGhEYXRhTWFuYWdlciIsInBhcnNlR3JhcGhRTENvbnRyb2xsZXIiLCJnZXRQYXJzZUdyYXBoUUxDb250cm9sbGVyIiwic2NoZW1hQ2FjaGUiLCJTY2hlbWFDYWNoZSIsImFwcElkIiwianNvbkxvZ3MiLCJsb2dzRm9sZGVyIiwidmVyYm9zZSIsImxvZ0xldmVsIiwibG9nU3RyaW5nVHJ1bmNhdGVMZW5ndGgiLCJtYXhMb2dGaWxlcyIsInNpbGVudCIsImxvZ2dlckFkYXB0ZXIiLCJsb2dnZXJPcHRpb25zIiwibG9nZ2VyQ29udHJvbGxlckFkYXB0ZXIiLCJsb2FkQWRhcHRlciIsIldpbnN0b25Mb2dnZXJBZGFwdGVyIiwiTG9nZ2VyQ29udHJvbGxlciIsImRhdGFiYXNlVVJJIiwiZGF0YWJhc2VPcHRpb25zIiwiZmlsZXNBZGFwdGVyIiwiZGF0YWJhc2VBZGFwdGVyIiwicHJlc2VydmVGaWxlTmFtZSIsImZpbGVLZXkiLCJmaWxlc0NvbnRyb2xsZXJBZGFwdGVyIiwiR3JpZEZTQnVja2V0QWRhcHRlciIsIkZpbGVzQ29udHJvbGxlciIsImVtYWlsQWRhcHRlciIsInZlcmlmeVVzZXJFbWFpbHMiLCJlbWFpbENvbnRyb2xsZXJBZGFwdGVyIiwiVXNlckNvbnRyb2xsZXIiLCJjYWNoZUFkYXB0ZXIiLCJjYWNoZVRUTCIsImNhY2hlTWF4U2l6ZSIsImNhY2hlQ29udHJvbGxlckFkYXB0ZXIiLCJJbk1lbW9yeUNhY2hlQWRhcHRlciIsInR0bCIsIm1heFNpemUiLCJDYWNoZUNvbnRyb2xsZXIiLCJjb250cm9sbGVyRGVwcyIsIlBhcnNlR3JhcGhRTENvbnRyb2xsZXIiLCJtb3VudEdyYXBoUUwiLCJhbmFseXRpY3NBZGFwdGVyIiwiYW5hbHl0aWNzQ29udHJvbGxlckFkYXB0ZXIiLCJBbmFseXRpY3NBZGFwdGVyIiwiQW5hbHl0aWNzQ29udHJvbGxlciIsIkxpdmVRdWVyeUNvbnRyb2xsZXIiLCJsaXZlUXVlcnkiLCJjb2xsZWN0aW9uUHJlZml4IiwiZGVmYXVsdHMiLCJnZXREYXRhYmFzZUFkYXB0ZXIiLCJEYXRhYmFzZUNvbnRyb2xsZXIiLCJ3ZWJob29rS2V5IiwiSG9va3NDb250cm9sbGVyIiwiZ2V0UHVzaENvbnRyb2xsZXIiLCJzY2hlZHVsZWRQdXNoIiwicHVzaCIsInB1c2hPcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIiwicHVzaFF1ZXVlT3B0aW9ucyIsInF1ZXVlT3B0aW9ucyIsIlBhcnNlUHVzaEFkYXB0ZXIiLCJsb2FkTW9kdWxlIiwicHVzaEFkYXB0ZXIiLCJhZGFwdGVyIiwicHVzaENvbnRyb2xsZXIiLCJQdXNoQ29udHJvbGxlciIsImhhc1B1c2hTdXBwb3J0IiwiaGFzUHVzaFNjaGVkdWxlZFN1cHBvcnQiLCJkaXNhYmxlUHVzaFdvcmtlciIsInB1c2hDb250cm9sbGVyUXVldWUiLCJQdXNoUXVldWUiLCJwdXNoV29ya2VyIiwiUHVzaFdvcmtlciIsImF1dGgiLCJlbmFibGVBbm9ueW1vdXNVc2VycyIsInByb3RvY29sIiwicGFyc2VkVVJJIiwiVVJMIiwidG9Mb3dlckNhc2UiLCJQb3N0Z3Jlc1N0b3JhZ2VBZGFwdGVyIiwidXJpIiwiTW9uZ29TdG9yYWdlQWRhcHRlciIsIm1vbmdvT3B0aW9ucyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db250cm9sbGVycy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXV0aERhdGFNYW5hZ2VyIGZyb20gJy4uL0FkYXB0ZXJzL0F1dGgnO1xuaW1wb3J0IHsgUGFyc2VTZXJ2ZXJPcHRpb25zIH0gZnJvbSAnLi4vT3B0aW9ucyc7XG5pbXBvcnQgeyBsb2FkQWRhcHRlciwgbG9hZE1vZHVsZSB9IGZyb20gJy4uL0FkYXB0ZXJzL0FkYXB0ZXJMb2FkZXInO1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJy4uL2RlZmF1bHRzJztcbi8vIENvbnRyb2xsZXJzXG5pbXBvcnQgeyBMb2dnZXJDb250cm9sbGVyIH0gZnJvbSAnLi9Mb2dnZXJDb250cm9sbGVyJztcbmltcG9ydCB7IEZpbGVzQ29udHJvbGxlciB9IGZyb20gJy4vRmlsZXNDb250cm9sbGVyJztcbmltcG9ydCB7IEhvb2tzQ29udHJvbGxlciB9IGZyb20gJy4vSG9va3NDb250cm9sbGVyJztcbmltcG9ydCB7IFVzZXJDb250cm9sbGVyIH0gZnJvbSAnLi9Vc2VyQ29udHJvbGxlcic7XG5pbXBvcnQgeyBDYWNoZUNvbnRyb2xsZXIgfSBmcm9tICcuL0NhY2hlQ29udHJvbGxlcic7XG5pbXBvcnQgeyBMaXZlUXVlcnlDb250cm9sbGVyIH0gZnJvbSAnLi9MaXZlUXVlcnlDb250cm9sbGVyJztcbmltcG9ydCB7IEFuYWx5dGljc0NvbnRyb2xsZXIgfSBmcm9tICcuL0FuYWx5dGljc0NvbnRyb2xsZXInO1xuaW1wb3J0IHsgUHVzaENvbnRyb2xsZXIgfSBmcm9tICcuL1B1c2hDb250cm9sbGVyJztcbmltcG9ydCB7IFB1c2hRdWV1ZSB9IGZyb20gJy4uL1B1c2gvUHVzaFF1ZXVlJztcbmltcG9ydCB7IFB1c2hXb3JrZXIgfSBmcm9tICcuLi9QdXNoL1B1c2hXb3JrZXInO1xuaW1wb3J0IERhdGFiYXNlQ29udHJvbGxlciBmcm9tICcuL0RhdGFiYXNlQ29udHJvbGxlcic7XG5cbi8vIEFkYXB0ZXJzXG5pbXBvcnQgeyBHcmlkRlNCdWNrZXRBZGFwdGVyIH0gZnJvbSAnLi4vQWRhcHRlcnMvRmlsZXMvR3JpZEZTQnVja2V0QWRhcHRlcic7XG5pbXBvcnQgeyBXaW5zdG9uTG9nZ2VyQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0xvZ2dlci9XaW5zdG9uTG9nZ2VyQWRhcHRlcic7XG5pbXBvcnQgeyBJbk1lbW9yeUNhY2hlQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0NhY2hlL0luTWVtb3J5Q2FjaGVBZGFwdGVyJztcbmltcG9ydCB7IEFuYWx5dGljc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9BbmFseXRpY3MvQW5hbHl0aWNzQWRhcHRlcic7XG5pbXBvcnQgTW9uZ29TdG9yYWdlQWRhcHRlciBmcm9tICcuLi9BZGFwdGVycy9TdG9yYWdlL01vbmdvL01vbmdvU3RvcmFnZUFkYXB0ZXInO1xuaW1wb3J0IFBvc3RncmVzU3RvcmFnZUFkYXB0ZXIgZnJvbSAnLi4vQWRhcHRlcnMvU3RvcmFnZS9Qb3N0Z3Jlcy9Qb3N0Z3Jlc1N0b3JhZ2VBZGFwdGVyJztcbmltcG9ydCBQYXJzZUdyYXBoUUxDb250cm9sbGVyIGZyb20gJy4vUGFyc2VHcmFwaFFMQ29udHJvbGxlcic7XG5pbXBvcnQgU2NoZW1hQ2FjaGUgZnJvbSAnLi4vQWRhcHRlcnMvQ2FjaGUvU2NoZW1hQ2FjaGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udHJvbGxlcnMob3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zKSB7XG4gIGNvbnN0IGxvZ2dlckNvbnRyb2xsZXIgPSBnZXRMb2dnZXJDb250cm9sbGVyKG9wdGlvbnMpO1xuICBjb25zdCBmaWxlc0NvbnRyb2xsZXIgPSBnZXRGaWxlc0NvbnRyb2xsZXIob3B0aW9ucyk7XG4gIGNvbnN0IHVzZXJDb250cm9sbGVyID0gZ2V0VXNlckNvbnRyb2xsZXIob3B0aW9ucyk7XG4gIGNvbnN0IGNhY2hlQ29udHJvbGxlciA9IGdldENhY2hlQ29udHJvbGxlcihvcHRpb25zKTtcbiAgY29uc3QgYW5hbHl0aWNzQ29udHJvbGxlciA9IGdldEFuYWx5dGljc0NvbnRyb2xsZXIob3B0aW9ucyk7XG4gIGNvbnN0IGxpdmVRdWVyeUNvbnRyb2xsZXIgPSBnZXRMaXZlUXVlcnlDb250cm9sbGVyKG9wdGlvbnMpO1xuICBjb25zdCBkYXRhYmFzZUNvbnRyb2xsZXIgPSBnZXREYXRhYmFzZUNvbnRyb2xsZXIob3B0aW9ucyk7XG4gIGNvbnN0IGhvb2tzQ29udHJvbGxlciA9IGdldEhvb2tzQ29udHJvbGxlcihvcHRpb25zLCBkYXRhYmFzZUNvbnRyb2xsZXIpO1xuICBjb25zdCBhdXRoRGF0YU1hbmFnZXIgPSBnZXRBdXRoRGF0YU1hbmFnZXIob3B0aW9ucyk7XG4gIGNvbnN0IHBhcnNlR3JhcGhRTENvbnRyb2xsZXIgPSBnZXRQYXJzZUdyYXBoUUxDb250cm9sbGVyKG9wdGlvbnMsIHtcbiAgICBkYXRhYmFzZUNvbnRyb2xsZXIsXG4gICAgY2FjaGVDb250cm9sbGVyLFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBsb2dnZXJDb250cm9sbGVyLFxuICAgIGZpbGVzQ29udHJvbGxlcixcbiAgICB1c2VyQ29udHJvbGxlcixcbiAgICBhbmFseXRpY3NDb250cm9sbGVyLFxuICAgIGNhY2hlQ29udHJvbGxlcixcbiAgICBwYXJzZUdyYXBoUUxDb250cm9sbGVyLFxuICAgIGxpdmVRdWVyeUNvbnRyb2xsZXIsXG4gICAgZGF0YWJhc2VDb250cm9sbGVyLFxuICAgIGhvb2tzQ29udHJvbGxlcixcbiAgICBhdXRoRGF0YU1hbmFnZXIsXG4gICAgc2NoZW1hQ2FjaGU6IFNjaGVtYUNhY2hlLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VyQ29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBMb2dnZXJDb250cm9sbGVyIHtcbiAgY29uc3Qge1xuICAgIGFwcElkLFxuICAgIGpzb25Mb2dzLFxuICAgIGxvZ3NGb2xkZXIsXG4gICAgdmVyYm9zZSxcbiAgICBsb2dMZXZlbCxcbiAgICBsb2dTdHJpbmdUcnVuY2F0ZUxlbmd0aCxcbiAgICBtYXhMb2dGaWxlcyxcbiAgICBzaWxlbnQsXG4gICAgbG9nZ2VyQWRhcHRlcixcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGxvZ2dlck9wdGlvbnMgPSB7XG4gICAganNvbkxvZ3MsXG4gICAgbG9nc0ZvbGRlcixcbiAgICB2ZXJib3NlLFxuICAgIGxvZ0xldmVsLFxuICAgIGxvZ1N0cmluZ1RydW5jYXRlTGVuZ3RoLFxuICAgIHNpbGVudCxcbiAgICBtYXhMb2dGaWxlcyxcbiAgfTtcbiAgY29uc3QgbG9nZ2VyQ29udHJvbGxlckFkYXB0ZXIgPSBsb2FkQWRhcHRlcihsb2dnZXJBZGFwdGVyLCBXaW5zdG9uTG9nZ2VyQWRhcHRlciwgbG9nZ2VyT3B0aW9ucyk7XG4gIHJldHVybiBuZXcgTG9nZ2VyQ29udHJvbGxlcihsb2dnZXJDb250cm9sbGVyQWRhcHRlciwgYXBwSWQsIGxvZ2dlck9wdGlvbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZXNDb250cm9sbGVyKG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucyk6IEZpbGVzQ29udHJvbGxlciB7XG4gIGNvbnN0IHtcbiAgICBhcHBJZCxcbiAgICBkYXRhYmFzZVVSSSxcbiAgICBkYXRhYmFzZU9wdGlvbnMgPSB7fSxcbiAgICBmaWxlc0FkYXB0ZXIsXG4gICAgZGF0YWJhc2VBZGFwdGVyLFxuICAgIHByZXNlcnZlRmlsZU5hbWUsXG4gICAgZmlsZUtleSxcbiAgfSA9IG9wdGlvbnM7XG4gIGlmICghZmlsZXNBZGFwdGVyICYmIGRhdGFiYXNlQWRhcHRlcikge1xuICAgIHRocm93ICdXaGVuIHVzaW5nIGFuIGV4cGxpY2l0IGRhdGFiYXNlIGFkYXB0ZXIsIHlvdSBtdXN0IGFsc28gdXNlIGFuIGV4cGxpY2l0IGZpbGVzQWRhcHRlci4nO1xuICB9XG4gIGNvbnN0IGZpbGVzQ29udHJvbGxlckFkYXB0ZXIgPSBsb2FkQWRhcHRlcihmaWxlc0FkYXB0ZXIsICgpID0+IHtcbiAgICByZXR1cm4gbmV3IEdyaWRGU0J1Y2tldEFkYXB0ZXIoZGF0YWJhc2VVUkksIGRhdGFiYXNlT3B0aW9ucywgZmlsZUtleSk7XG4gIH0pO1xuICByZXR1cm4gbmV3IEZpbGVzQ29udHJvbGxlcihmaWxlc0NvbnRyb2xsZXJBZGFwdGVyLCBhcHBJZCwge1xuICAgIHByZXNlcnZlRmlsZU5hbWUsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlckNvbnRyb2xsZXIob3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zKTogVXNlckNvbnRyb2xsZXIge1xuICBjb25zdCB7IGFwcElkLCBlbWFpbEFkYXB0ZXIsIHZlcmlmeVVzZXJFbWFpbHMgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGVtYWlsQ29udHJvbGxlckFkYXB0ZXIgPSBsb2FkQWRhcHRlcihlbWFpbEFkYXB0ZXIpO1xuICByZXR1cm4gbmV3IFVzZXJDb250cm9sbGVyKGVtYWlsQ29udHJvbGxlckFkYXB0ZXIsIGFwcElkLCB7XG4gICAgdmVyaWZ5VXNlckVtYWlscyxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWNoZUNvbnRyb2xsZXIob3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zKTogQ2FjaGVDb250cm9sbGVyIHtcbiAgY29uc3QgeyBhcHBJZCwgY2FjaGVBZGFwdGVyLCBjYWNoZVRUTCwgY2FjaGVNYXhTaXplIH0gPSBvcHRpb25zO1xuICBjb25zdCBjYWNoZUNvbnRyb2xsZXJBZGFwdGVyID0gbG9hZEFkYXB0ZXIoY2FjaGVBZGFwdGVyLCBJbk1lbW9yeUNhY2hlQWRhcHRlciwge1xuICAgIGFwcElkOiBhcHBJZCxcbiAgICB0dGw6IGNhY2hlVFRMLFxuICAgIG1heFNpemU6IGNhY2hlTWF4U2l6ZSxcbiAgfSk7XG4gIHJldHVybiBuZXcgQ2FjaGVDb250cm9sbGVyKGNhY2hlQ29udHJvbGxlckFkYXB0ZXIsIGFwcElkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcnNlR3JhcGhRTENvbnRyb2xsZXIoXG4gIG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucyxcbiAgY29udHJvbGxlckRlcHNcbik6IFBhcnNlR3JhcGhRTENvbnRyb2xsZXIge1xuICByZXR1cm4gbmV3IFBhcnNlR3JhcGhRTENvbnRyb2xsZXIoe1xuICAgIG1vdW50R3JhcGhRTDogb3B0aW9ucy5tb3VudEdyYXBoUUwsXG4gICAgLi4uY29udHJvbGxlckRlcHMsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5hbHl0aWNzQ29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBBbmFseXRpY3NDb250cm9sbGVyIHtcbiAgY29uc3QgeyBhbmFseXRpY3NBZGFwdGVyIH0gPSBvcHRpb25zO1xuICBjb25zdCBhbmFseXRpY3NDb250cm9sbGVyQWRhcHRlciA9IGxvYWRBZGFwdGVyKGFuYWx5dGljc0FkYXB0ZXIsIEFuYWx5dGljc0FkYXB0ZXIpO1xuICByZXR1cm4gbmV3IEFuYWx5dGljc0NvbnRyb2xsZXIoYW5hbHl0aWNzQ29udHJvbGxlckFkYXB0ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGl2ZVF1ZXJ5Q29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBMaXZlUXVlcnlDb250cm9sbGVyIHtcbiAgcmV0dXJuIG5ldyBMaXZlUXVlcnlDb250cm9sbGVyKG9wdGlvbnMubGl2ZVF1ZXJ5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFiYXNlQ29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBEYXRhYmFzZUNvbnRyb2xsZXIge1xuICBjb25zdCB7IGRhdGFiYXNlVVJJLCBjb2xsZWN0aW9uUHJlZml4LCBkYXRhYmFzZU9wdGlvbnMgfSA9IG9wdGlvbnM7XG4gIGxldCB7IGRhdGFiYXNlQWRhcHRlciB9ID0gb3B0aW9ucztcbiAgaWYgKFxuICAgIChkYXRhYmFzZU9wdGlvbnMgfHxcbiAgICAgIChkYXRhYmFzZVVSSSAmJiBkYXRhYmFzZVVSSSAhPT0gZGVmYXVsdHMuZGF0YWJhc2VVUkkpIHx8XG4gICAgICBjb2xsZWN0aW9uUHJlZml4ICE9PSBkZWZhdWx0cy5jb2xsZWN0aW9uUHJlZml4KSAmJlxuICAgIGRhdGFiYXNlQWRhcHRlclxuICApIHtcbiAgICB0aHJvdyAnWW91IGNhbm5vdCBzcGVjaWZ5IGJvdGggYSBkYXRhYmFzZUFkYXB0ZXIgYW5kIGEgZGF0YWJhc2VVUkkvZGF0YWJhc2VPcHRpb25zL2NvbGxlY3Rpb25QcmVmaXguJztcbiAgfSBlbHNlIGlmICghZGF0YWJhc2VBZGFwdGVyKSB7XG4gICAgZGF0YWJhc2VBZGFwdGVyID0gZ2V0RGF0YWJhc2VBZGFwdGVyKGRhdGFiYXNlVVJJLCBjb2xsZWN0aW9uUHJlZml4LCBkYXRhYmFzZU9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIGRhdGFiYXNlQWRhcHRlciA9IGxvYWRBZGFwdGVyKGRhdGFiYXNlQWRhcHRlcik7XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRhYmFzZUNvbnRyb2xsZXIoZGF0YWJhc2VBZGFwdGVyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhvb2tzQ29udHJvbGxlcihcbiAgb3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zLFxuICBkYXRhYmFzZUNvbnRyb2xsZXI6IERhdGFiYXNlQ29udHJvbGxlclxuKTogSG9va3NDb250cm9sbGVyIHtcbiAgY29uc3QgeyBhcHBJZCwgd2ViaG9va0tleSB9ID0gb3B0aW9ucztcbiAgcmV0dXJuIG5ldyBIb29rc0NvbnRyb2xsZXIoYXBwSWQsIGRhdGFiYXNlQ29udHJvbGxlciwgd2ViaG9va0tleSk7XG59XG5cbmludGVyZmFjZSBQdXNoQ29udHJvbGxpbmcge1xuICBwdXNoQ29udHJvbGxlcjogUHVzaENvbnRyb2xsZXI7XG4gIGhhc1B1c2hTY2hlZHVsZWRTdXBwb3J0OiBib29sZWFuO1xuICBwdXNoQ29udHJvbGxlclF1ZXVlOiBQdXNoUXVldWU7XG4gIHB1c2hXb3JrZXI6IFB1c2hXb3JrZXI7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQdXNoQ29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBQdXNoQ29udHJvbGxpbmcge1xuICBjb25zdCB7IHNjaGVkdWxlZFB1c2gsIHB1c2ggfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgcHVzaE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBwdXNoKTtcbiAgY29uc3QgcHVzaFF1ZXVlT3B0aW9ucyA9IHB1c2hPcHRpb25zLnF1ZXVlT3B0aW9ucyB8fCB7fTtcbiAgaWYgKHB1c2hPcHRpb25zLnF1ZXVlT3B0aW9ucykge1xuICAgIGRlbGV0ZSBwdXNoT3B0aW9ucy5xdWV1ZU9wdGlvbnM7XG4gIH1cblxuICAvLyBQYXNzIHRoZSBwdXNoIG9wdGlvbnMgdG9vIGFzIGl0IHdvcmtzIHdpdGggdGhlIGRlZmF1bHRcbiAgY29uc3QgUGFyc2VQdXNoQWRhcHRlciA9IGF3YWl0IGxvYWRNb2R1bGUoJ0BwYXJzZS9wdXNoLWFkYXB0ZXInKTtcbiAgY29uc3QgcHVzaEFkYXB0ZXIgPSBsb2FkQWRhcHRlcihcbiAgICBwdXNoT3B0aW9ucyAmJiBwdXNoT3B0aW9ucy5hZGFwdGVyLFxuICAgIFBhcnNlUHVzaEFkYXB0ZXIsXG4gICAgcHVzaE9wdGlvbnNcbiAgKTtcbiAgLy8gV2UgcGFzcyB0aGUgb3B0aW9ucyBhbmQgdGhlIGJhc2UgY2xhc3MgZm9yIHRoZSBhZGF0cGVyLFxuICAvLyBOb3RlIHRoYXQgcGFzc2luZyBhbiBpbnN0YW5jZSB3b3VsZCB3b3JrIHRvb1xuICBjb25zdCBwdXNoQ29udHJvbGxlciA9IG5ldyBQdXNoQ29udHJvbGxlcigpO1xuICBjb25zdCBoYXNQdXNoU3VwcG9ydCA9ICEhKHB1c2hBZGFwdGVyICYmIHB1c2gpO1xuICBjb25zdCBoYXNQdXNoU2NoZWR1bGVkU3VwcG9ydCA9IGhhc1B1c2hTdXBwb3J0ICYmIHNjaGVkdWxlZFB1c2ggPT09IHRydWU7XG5cbiAgY29uc3QgeyBkaXNhYmxlUHVzaFdvcmtlciB9ID0gcHVzaFF1ZXVlT3B0aW9ucztcblxuICBjb25zdCBwdXNoQ29udHJvbGxlclF1ZXVlID0gbmV3IFB1c2hRdWV1ZShwdXNoUXVldWVPcHRpb25zKTtcbiAgbGV0IHB1c2hXb3JrZXI7XG4gIGlmICghZGlzYWJsZVB1c2hXb3JrZXIpIHtcbiAgICBwdXNoV29ya2VyID0gbmV3IFB1c2hXb3JrZXIocHVzaEFkYXB0ZXIsIHB1c2hRdWV1ZU9wdGlvbnMpO1xuICB9XG4gIHJldHVybiB7XG4gICAgcHVzaENvbnRyb2xsZXIsXG4gICAgaGFzUHVzaFN1cHBvcnQsXG4gICAgaGFzUHVzaFNjaGVkdWxlZFN1cHBvcnQsXG4gICAgcHVzaENvbnRyb2xsZXJRdWV1ZSxcbiAgICBwdXNoV29ya2VyLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXV0aERhdGFNYW5hZ2VyKG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucykge1xuICBjb25zdCB7IGF1dGgsIGVuYWJsZUFub255bW91c1VzZXJzIH0gPSBvcHRpb25zO1xuICByZXR1cm4gYXV0aERhdGFNYW5hZ2VyKGF1dGgsIGVuYWJsZUFub255bW91c1VzZXJzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFiYXNlQWRhcHRlcihkYXRhYmFzZVVSSSwgY29sbGVjdGlvblByZWZpeCwgZGF0YWJhc2VPcHRpb25zKSB7XG4gIGxldCBwcm90b2NvbDtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWRVUkkgPSBuZXcgVVJMKGRhdGFiYXNlVVJJKTtcbiAgICBwcm90b2NvbCA9IHBhcnNlZFVSSS5wcm90b2NvbCA/IHBhcnNlZFVSSS5wcm90b2NvbC50b0xvd2VyQ2FzZSgpIDogbnVsbDtcbiAgfSBjYXRjaCB7XG4gICAgLyogKi9cbiAgfVxuICBzd2l0Y2ggKHByb3RvY29sKSB7XG4gICAgY2FzZSAncG9zdGdyZXM6JzpcbiAgICBjYXNlICdwb3N0Z3Jlc3FsOic6XG4gICAgICByZXR1cm4gbmV3IFBvc3RncmVzU3RvcmFnZUFkYXB0ZXIoe1xuICAgICAgICB1cmk6IGRhdGFiYXNlVVJJLFxuICAgICAgICBjb2xsZWN0aW9uUHJlZml4LFxuICAgICAgICBkYXRhYmFzZU9wdGlvbnMsXG4gICAgICB9KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG5ldyBNb25nb1N0b3JhZ2VBZGFwdGVyKHtcbiAgICAgICAgdXJpOiBkYXRhYmFzZVVSSSxcbiAgICAgICAgY29sbGVjdGlvblByZWZpeCxcbiAgICAgICAgbW9uZ29PcHRpb25zOiBkYXRhYmFzZU9wdGlvbnMsXG4gICAgICB9KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxjQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBSSxpQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssZ0JBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGdCQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxlQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxnQkFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsb0JBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLG9CQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxlQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxVQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxXQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxtQkFBQSxHQUFBZixzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQWUsb0JBQUEsR0FBQWYsT0FBQTtBQUNBLElBQUFnQixxQkFBQSxHQUFBaEIsT0FBQTtBQUNBLElBQUFpQixxQkFBQSxHQUFBakIsT0FBQTtBQUNBLElBQUFrQixpQkFBQSxHQUFBbEIsT0FBQTtBQUNBLElBQUFtQixvQkFBQSxHQUFBcEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFvQix1QkFBQSxHQUFBckIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFxQix1QkFBQSxHQUFBdEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFzQixZQUFBLEdBQUF2QixzQkFBQSxDQUFBQyxPQUFBO0FBQXdELFNBQUFELHVCQUFBd0IsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQXJCeEQ7O0FBYUE7O0FBVU8sU0FBU0csY0FBY0EsQ0FBQ0MsT0FBMkIsRUFBRTtFQUMxRCxNQUFNQyxnQkFBZ0IsR0FBR0MsbUJBQW1CLENBQUNGLE9BQU8sQ0FBQztFQUNyRCxNQUFNRyxlQUFlLEdBQUdDLGtCQUFrQixDQUFDSixPQUFPLENBQUM7RUFDbkQsTUFBTUssY0FBYyxHQUFHQyxpQkFBaUIsQ0FBQ04sT0FBTyxDQUFDO0VBQ2pELE1BQU1PLGVBQWUsR0FBR0Msa0JBQWtCLENBQUNSLE9BQU8sQ0FBQztFQUNuRCxNQUFNUyxtQkFBbUIsR0FBR0Msc0JBQXNCLENBQUNWLE9BQU8sQ0FBQztFQUMzRCxNQUFNVyxtQkFBbUIsR0FBR0Msc0JBQXNCLENBQUNaLE9BQU8sQ0FBQztFQUMzRCxNQUFNYSxrQkFBa0IsR0FBR0MscUJBQXFCLENBQUNkLE9BQU8sQ0FBQztFQUN6RCxNQUFNZSxlQUFlLEdBQUdDLGtCQUFrQixDQUFDaEIsT0FBTyxFQUFFYSxrQkFBa0IsQ0FBQztFQUN2RSxNQUFNSSxlQUFlLEdBQUdDLGtCQUFrQixDQUFDbEIsT0FBTyxDQUFDO0VBQ25ELE1BQU1tQixzQkFBc0IsR0FBR0MseUJBQXlCLENBQUNwQixPQUFPLEVBQUU7SUFDaEVhLGtCQUFrQjtJQUNsQk47RUFDRixDQUFDLENBQUM7RUFDRixPQUFPO0lBQ0xOLGdCQUFnQjtJQUNoQkUsZUFBZTtJQUNmRSxjQUFjO0lBQ2RJLG1CQUFtQjtJQUNuQkYsZUFBZTtJQUNmWSxzQkFBc0I7SUFDdEJSLG1CQUFtQjtJQUNuQkUsa0JBQWtCO0lBQ2xCRSxlQUFlO0lBQ2ZFLGVBQWU7SUFDZkksV0FBVyxFQUFFQztFQUNmLENBQUM7QUFDSDtBQUVPLFNBQVNwQixtQkFBbUJBLENBQUNGLE9BQTJCLEVBQW9CO0VBQ2pGLE1BQU07SUFDSnVCLEtBQUs7SUFDTEMsUUFBUTtJQUNSQyxVQUFVO0lBQ1ZDLE9BQU87SUFDUEMsUUFBUTtJQUNSQyx1QkFBdUI7SUFDdkJDLFdBQVc7SUFDWEMsTUFBTTtJQUNOQztFQUNGLENBQUMsR0FBRy9CLE9BQU87RUFDWCxNQUFNZ0MsYUFBYSxHQUFHO0lBQ3BCUixRQUFRO0lBQ1JDLFVBQVU7SUFDVkMsT0FBTztJQUNQQyxRQUFRO0lBQ1JDLHVCQUF1QjtJQUN2QkUsTUFBTTtJQUNORDtFQUNGLENBQUM7RUFDRCxNQUFNSSx1QkFBdUIsR0FBRyxJQUFBQywwQkFBVyxFQUFDSCxhQUFhLEVBQUVJLDBDQUFvQixFQUFFSCxhQUFhLENBQUM7RUFDL0YsT0FBTyxJQUFJSSxrQ0FBZ0IsQ0FBQ0gsdUJBQXVCLEVBQUVWLEtBQUssRUFBRVMsYUFBYSxDQUFDO0FBQzVFO0FBRU8sU0FBUzVCLGtCQUFrQkEsQ0FBQ0osT0FBMkIsRUFBbUI7RUFDL0UsTUFBTTtJQUNKdUIsS0FBSztJQUNMYyxXQUFXO0lBQ1hDLGVBQWUsR0FBRyxDQUFDLENBQUM7SUFDcEJDLFlBQVk7SUFDWkMsZUFBZTtJQUNmQyxnQkFBZ0I7SUFDaEJDO0VBQ0YsQ0FBQyxHQUFHMUMsT0FBTztFQUNYLElBQUksQ0FBQ3VDLFlBQVksSUFBSUMsZUFBZSxFQUFFO0lBQ3BDLE1BQU0sc0ZBQXNGO0VBQzlGO0VBQ0EsTUFBTUcsc0JBQXNCLEdBQUcsSUFBQVQsMEJBQVcsRUFBQ0ssWUFBWSxFQUFFLE1BQU07SUFDN0QsT0FBTyxJQUFJSyx3Q0FBbUIsQ0FBQ1AsV0FBVyxFQUFFQyxlQUFlLEVBQUVJLE9BQU8sQ0FBQztFQUN2RSxDQUFDLENBQUM7RUFDRixPQUFPLElBQUlHLGdDQUFlLENBQUNGLHNCQUFzQixFQUFFcEIsS0FBSyxFQUFFO0lBQ3hEa0I7RUFDRixDQUFDLENBQUM7QUFDSjtBQUVPLFNBQVNuQyxpQkFBaUJBLENBQUNOLE9BQTJCLEVBQWtCO0VBQzdFLE1BQU07SUFBRXVCLEtBQUs7SUFBRXVCLFlBQVk7SUFBRUM7RUFBaUIsQ0FBQyxHQUFHL0MsT0FBTztFQUN6RCxNQUFNZ0Qsc0JBQXNCLEdBQUcsSUFBQWQsMEJBQVcsRUFBQ1ksWUFBWSxDQUFDO0VBQ3hELE9BQU8sSUFBSUcsOEJBQWMsQ0FBQ0Qsc0JBQXNCLEVBQUV6QixLQUFLLEVBQUU7SUFDdkR3QjtFQUNGLENBQUMsQ0FBQztBQUNKO0FBRU8sU0FBU3ZDLGtCQUFrQkEsQ0FBQ1IsT0FBMkIsRUFBbUI7RUFDL0UsTUFBTTtJQUFFdUIsS0FBSztJQUFFMkIsWUFBWTtJQUFFQyxRQUFRO0lBQUVDO0VBQWEsQ0FBQyxHQUFHcEQsT0FBTztFQUMvRCxNQUFNcUQsc0JBQXNCLEdBQUcsSUFBQW5CLDBCQUFXLEVBQUNnQixZQUFZLEVBQUVJLDBDQUFvQixFQUFFO0lBQzdFL0IsS0FBSyxFQUFFQSxLQUFLO0lBQ1pnQyxHQUFHLEVBQUVKLFFBQVE7SUFDYkssT0FBTyxFQUFFSjtFQUNYLENBQUMsQ0FBQztFQUNGLE9BQU8sSUFBSUssZ0NBQWUsQ0FBQ0osc0JBQXNCLEVBQUU5QixLQUFLLENBQUM7QUFDM0Q7QUFFTyxTQUFTSCx5QkFBeUJBLENBQ3ZDcEIsT0FBMkIsRUFDM0IwRCxjQUFjLEVBQ1U7RUFDeEIsT0FBTyxJQUFJQywrQkFBc0IsQ0FBQztJQUNoQ0MsWUFBWSxFQUFFNUQsT0FBTyxDQUFDNEQsWUFBWTtJQUNsQyxHQUFHRjtFQUNMLENBQUMsQ0FBQztBQUNKO0FBRU8sU0FBU2hELHNCQUFzQkEsQ0FBQ1YsT0FBMkIsRUFBdUI7RUFDdkYsTUFBTTtJQUFFNkQ7RUFBaUIsQ0FBQyxHQUFHN0QsT0FBTztFQUNwQyxNQUFNOEQsMEJBQTBCLEdBQUcsSUFBQTVCLDBCQUFXLEVBQUMyQixnQkFBZ0IsRUFBRUUsa0NBQWdCLENBQUM7RUFDbEYsT0FBTyxJQUFJQyx3Q0FBbUIsQ0FBQ0YsMEJBQTBCLENBQUM7QUFDNUQ7QUFFTyxTQUFTbEQsc0JBQXNCQSxDQUFDWixPQUEyQixFQUF1QjtFQUN2RixPQUFPLElBQUlpRSx3Q0FBbUIsQ0FBQ2pFLE9BQU8sQ0FBQ2tFLFNBQVMsQ0FBQztBQUNuRDtBQUVPLFNBQVNwRCxxQkFBcUJBLENBQUNkLE9BQTJCLEVBQXNCO0VBQ3JGLE1BQU07SUFBRXFDLFdBQVc7SUFBRThCLGdCQUFnQjtJQUFFN0I7RUFBZ0IsQ0FBQyxHQUFHdEMsT0FBTztFQUNsRSxJQUFJO0lBQUV3QztFQUFnQixDQUFDLEdBQUd4QyxPQUFPO0VBQ2pDLElBQ0UsQ0FBQ3NDLGVBQWUsSUFDYkQsV0FBVyxJQUFJQSxXQUFXLEtBQUsrQixpQkFBUSxDQUFDL0IsV0FBWSxJQUNyRDhCLGdCQUFnQixLQUFLQyxpQkFBUSxDQUFDRCxnQkFBZ0IsS0FDaEQzQixlQUFlLEVBQ2Y7SUFDQSxNQUFNLCtGQUErRjtFQUN2RyxDQUFDLE1BQU0sSUFBSSxDQUFDQSxlQUFlLEVBQUU7SUFDM0JBLGVBQWUsR0FBRzZCLGtCQUFrQixDQUFDaEMsV0FBVyxFQUFFOEIsZ0JBQWdCLEVBQUU3QixlQUFlLENBQUM7RUFDdEYsQ0FBQyxNQUFNO0lBQ0xFLGVBQWUsR0FBRyxJQUFBTiwwQkFBVyxFQUFDTSxlQUFlLENBQUM7RUFDaEQ7RUFDQSxPQUFPLElBQUk4QiwyQkFBa0IsQ0FBQzlCLGVBQWUsRUFBRXhDLE9BQU8sQ0FBQztBQUN6RDtBQUVPLFNBQVNnQixrQkFBa0JBLENBQ2hDaEIsT0FBMkIsRUFDM0JhLGtCQUFzQyxFQUNyQjtFQUNqQixNQUFNO0lBQUVVLEtBQUs7SUFBRWdEO0VBQVcsQ0FBQyxHQUFHdkUsT0FBTztFQUNyQyxPQUFPLElBQUl3RSxnQ0FBZSxDQUFDakQsS0FBSyxFQUFFVixrQkFBa0IsRUFBRTBELFVBQVUsQ0FBQztBQUNuRTtBQVNPLGVBQWVFLGlCQUFpQkEsQ0FBQ3pFLE9BQTJCLEVBQW1CO0VBQ3BGLE1BQU07SUFBRTBFLGFBQWE7SUFBRUM7RUFBSyxDQUFDLEdBQUczRSxPQUFPO0VBRXZDLE1BQU00RSxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFSCxJQUFJLENBQUM7RUFDM0MsTUFBTUksZ0JBQWdCLEdBQUdILFdBQVcsQ0FBQ0ksWUFBWSxJQUFJLENBQUMsQ0FBQztFQUN2RCxJQUFJSixXQUFXLENBQUNJLFlBQVksRUFBRTtJQUM1QixPQUFPSixXQUFXLENBQUNJLFlBQVk7RUFDakM7O0VBRUE7RUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxNQUFNLElBQUFDLHlCQUFVLEVBQUMscUJBQXFCLENBQUM7RUFDaEUsTUFBTUMsV0FBVyxHQUFHLElBQUFqRCwwQkFBVyxFQUM3QjBDLFdBQVcsSUFBSUEsV0FBVyxDQUFDUSxPQUFPLEVBQ2xDSCxnQkFBZ0IsRUFDaEJMLFdBQ0YsQ0FBQztFQUNEO0VBQ0E7RUFDQSxNQUFNUyxjQUFjLEdBQUcsSUFBSUMsOEJBQWMsQ0FBQyxDQUFDO0VBQzNDLE1BQU1DLGNBQWMsR0FBRyxDQUFDLEVBQUVKLFdBQVcsSUFBSVIsSUFBSSxDQUFDO0VBQzlDLE1BQU1hLHVCQUF1QixHQUFHRCxjQUFjLElBQUliLGFBQWEsS0FBSyxJQUFJO0VBRXhFLE1BQU07SUFBRWU7RUFBa0IsQ0FBQyxHQUFHVixnQkFBZ0I7RUFFOUMsTUFBTVcsbUJBQW1CLEdBQUcsSUFBSUMsb0JBQVMsQ0FBQ1osZ0JBQWdCLENBQUM7RUFDM0QsSUFBSWEsVUFBVTtFQUNkLElBQUksQ0FBQ0gsaUJBQWlCLEVBQUU7SUFDdEJHLFVBQVUsR0FBRyxJQUFJQyxzQkFBVSxDQUFDVixXQUFXLEVBQUVKLGdCQUFnQixDQUFDO0VBQzVEO0VBQ0EsT0FBTztJQUNMTSxjQUFjO0lBQ2RFLGNBQWM7SUFDZEMsdUJBQXVCO0lBQ3ZCRSxtQkFBbUI7SUFDbkJFO0VBQ0YsQ0FBQztBQUNIO0FBRU8sU0FBUzFFLGtCQUFrQkEsQ0FBQ2xCLE9BQTJCLEVBQUU7RUFDOUQsTUFBTTtJQUFFOEYsSUFBSTtJQUFFQztFQUFxQixDQUFDLEdBQUcvRixPQUFPO0VBQzlDLE9BQU8sSUFBQWlCLGFBQWUsRUFBQzZFLElBQUksRUFBRUMsb0JBQW9CLENBQUM7QUFDcEQ7QUFFTyxTQUFTMUIsa0JBQWtCQSxDQUFDaEMsV0FBVyxFQUFFOEIsZ0JBQWdCLEVBQUU3QixlQUFlLEVBQUU7RUFDakYsSUFBSTBELFFBQVE7RUFDWixJQUFJO0lBQ0YsTUFBTUMsU0FBUyxHQUFHLElBQUlDLEdBQUcsQ0FBQzdELFdBQVcsQ0FBQztJQUN0QzJELFFBQVEsR0FBR0MsU0FBUyxDQUFDRCxRQUFRLEdBQUdDLFNBQVMsQ0FBQ0QsUUFBUSxDQUFDRyxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUk7RUFDekUsQ0FBQyxDQUFDLE1BQU07SUFDTjtFQUFBO0VBRUYsUUFBUUgsUUFBUTtJQUNkLEtBQUssV0FBVztJQUNoQixLQUFLLGFBQWE7TUFDaEIsT0FBTyxJQUFJSSwrQkFBc0IsQ0FBQztRQUNoQ0MsR0FBRyxFQUFFaEUsV0FBVztRQUNoQjhCLGdCQUFnQjtRQUNoQjdCO01BQ0YsQ0FBQyxDQUFDO0lBQ0o7TUFDRSxPQUFPLElBQUlnRSw0QkFBbUIsQ0FBQztRQUM3QkQsR0FBRyxFQUFFaEUsV0FBVztRQUNoQjhCLGdCQUFnQjtRQUNoQm9DLFlBQVksRUFBRWpFO01BQ2hCLENBQUMsQ0FBQztFQUNOO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvbnRyb2xsZXJzL3R5cGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIExvYWRTY2hlbWFPcHRpb25zID0ge1xuICBjbGVhckNhY2hlOiBib29sZWFuLFxufTtcblxuZXhwb3J0IHR5cGUgU2NoZW1hRmllbGQgPSB7XG4gIHR5cGU6IHN0cmluZyxcbiAgdGFyZ2V0Q2xhc3M/OiA/c3RyaW5nLFxuICByZXF1aXJlZD86ID9ib29sZWFuLFxuICBkZWZhdWx0VmFsdWU/OiA/YW55LFxufTtcblxuZXhwb3J0IHR5cGUgU2NoZW1hRmllbGRzID0geyBbc3RyaW5nXTogU2NoZW1hRmllbGQgfTtcblxuZXhwb3J0IHR5cGUgU2NoZW1hID0ge1xuICBjbGFzc05hbWU6IHN0cmluZyxcbiAgZmllbGRzOiBTY2hlbWFGaWVsZHMsXG4gIGNsYXNzTGV2ZWxQZXJtaXNzaW9uczogQ2xhc3NMZXZlbFBlcm1pc3Npb25zLFxuICBpbmRleGVzPzogP2FueSxcbn07XG5cbmV4cG9ydCB0eXBlIENsYXNzTGV2ZWxQZXJtaXNzaW9ucyA9IHtcbiAgQUNMPzoge1xuICAgIFtzdHJpbmddOiB7XG4gICAgICBbc3RyaW5nXTogYm9vbGVhbixcbiAgICB9LFxuICB9LFxuICBmaW5kPzogeyBbc3RyaW5nXTogYm9vbGVhbiB9LFxuICBjb3VudD86IHsgW3N0cmluZ106IGJvb2xlYW4gfSxcbiAgZ2V0PzogeyBbc3RyaW5nXTogYm9vbGVhbiB9LFxuICBjcmVhdGU/OiB7IFtzdHJpbmddOiBib29sZWFuIH0sXG4gIHVwZGF0ZT86IHsgW3N0cmluZ106IGJvb2xlYW4gfSxcbiAgZGVsZXRlPzogeyBbc3RyaW5nXTogYm9vbGVhbiB9LFxuICBhZGRGaWVsZD86IHsgW3N0cmluZ106IGJvb2xlYW4gfSxcbiAgcmVhZFVzZXJGaWVsZHM/OiBzdHJpbmdbXSxcbiAgd3JpdGVVc2VyRmllbGRzPzogc3RyaW5nW10sXG4gIHByb3RlY3RlZEZpZWxkcz86IHsgW3N0cmluZ106IHN0cmluZ1tdIH0sXG59O1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The deprecations.
|
|
5
|
+
*
|
|
6
|
+
* Add deprecations to the array using the following keys:
|
|
7
|
+
* - `optionKey` {String}: The option key incl. its path, e.g. `security.enableCheck`.
|
|
8
|
+
* - `envKey` {String}: The environment key, e.g. `PARSE_SERVER_SECURITY`.
|
|
9
|
+
* - `changeNewKey` {String}: Set the new key name if the current key will be replaced,
|
|
10
|
+
* or set to an empty string if the current key will be removed without replacement.
|
|
11
|
+
* - `changeNewDefault` {String}: Set the new default value if the key's default value
|
|
12
|
+
* will change in a future version.
|
|
13
|
+
* - `resolvedValue` {any}: The option value that suppresses the deprecation warning,
|
|
14
|
+
* indicating the user has already adopted the future behavior. Only applicable when
|
|
15
|
+
* `changeNewKey` is an empty string (option will be removed without replacement).
|
|
16
|
+
* For example, `false` for an option that will be removed, if setting it to `false`
|
|
17
|
+
* disables the deprecated feature.
|
|
18
|
+
* - `solution`: The instruction to resolve this deprecation warning. Optional. This
|
|
19
|
+
* instruction must not include the deprecation warning which is auto-generated.
|
|
20
|
+
* It should only contain additional instruction regarding the deprecation if
|
|
21
|
+
* necessary.
|
|
22
|
+
*
|
|
23
|
+
* If there are no deprecations, this must return an empty array.
|
|
24
|
+
*/
|
|
25
|
+
module.exports = [{
|
|
26
|
+
optionKey: 'fileUpload.allowedFileUrlDomains',
|
|
27
|
+
changeNewDefault: '[]',
|
|
28
|
+
solution: "Set 'fileUpload.allowedFileUrlDomains' to the domains you want to allow, or to '[]' to block all file URLs."
|
|
29
|
+
}, {
|
|
30
|
+
optionKey: 'pages.encodePageParamHeaders',
|
|
31
|
+
changeNewDefault: 'true',
|
|
32
|
+
solution: "Set 'pages.encodePageParamHeaders' to 'true' to URI-encode non-ASCII characters in page parameter headers."
|
|
33
|
+
}, {
|
|
34
|
+
optionKey: 'readOnlyMasterKeyIps',
|
|
35
|
+
changeNewDefault: '["127.0.0.1", "::1"]',
|
|
36
|
+
solution: "Set 'readOnlyMasterKeyIps' to the IP addresses that should be allowed to use the read-only master key, or to '[\"127.0.0.1\", \"::1\"]' to restrict access to localhost."
|
|
37
|
+
}, {
|
|
38
|
+
optionKey: 'mountPlayground',
|
|
39
|
+
changeNewKey: '',
|
|
40
|
+
solution: "Use Parse Dashboard as GraphQL IDE or configure a third-party GraphQL client such as Apollo Sandbox, GraphiQL, or Insomnia with custom request headers."
|
|
41
|
+
}, {
|
|
42
|
+
optionKey: 'playgroundPath',
|
|
43
|
+
changeNewKey: '',
|
|
44
|
+
solution: "Use Parse Dashboard as GraphQL IDE or configure a third-party GraphQL client such as Apollo Sandbox, GraphiQL, or Insomnia with custom request headers."
|
|
45
|
+
}, {
|
|
46
|
+
optionKey: 'requestComplexity.includeDepth',
|
|
47
|
+
changeNewDefault: '10',
|
|
48
|
+
solution: "Set 'requestComplexity.includeDepth' to a positive integer appropriate for your app to limit include pointer chain depth, or to '-1' to disable."
|
|
49
|
+
}, {
|
|
50
|
+
optionKey: 'requestComplexity.includeCount',
|
|
51
|
+
changeNewDefault: '100',
|
|
52
|
+
solution: "Set 'requestComplexity.includeCount' to a positive integer appropriate for your app to limit the number of include paths per query, or to '-1' to disable."
|
|
53
|
+
}, {
|
|
54
|
+
optionKey: 'requestComplexity.subqueryDepth',
|
|
55
|
+
changeNewDefault: '10',
|
|
56
|
+
solution: "Set 'requestComplexity.subqueryDepth' to a positive integer appropriate for your app to limit subquery nesting depth, or to '-1' to disable."
|
|
57
|
+
}, {
|
|
58
|
+
optionKey: 'requestComplexity.queryDepth',
|
|
59
|
+
changeNewDefault: '10',
|
|
60
|
+
solution: "Set 'requestComplexity.queryDepth' to a positive integer appropriate for your app to limit query condition nesting depth, or to '-1' to disable."
|
|
61
|
+
}, {
|
|
62
|
+
optionKey: 'requestComplexity.graphQLDepth',
|
|
63
|
+
changeNewDefault: '20',
|
|
64
|
+
solution: "Set 'requestComplexity.graphQLDepth' to a positive integer appropriate for your app to limit GraphQL field selection depth, or to '-1' to disable."
|
|
65
|
+
}, {
|
|
66
|
+
optionKey: 'requestComplexity.graphQLFields',
|
|
67
|
+
changeNewDefault: '200',
|
|
68
|
+
solution: "Set 'requestComplexity.graphQLFields' to a positive integer appropriate for your app to limit the number of GraphQL field selections, or to '-1' to disable."
|
|
69
|
+
}, {
|
|
70
|
+
optionKey: 'requestComplexity.batchRequestLimit',
|
|
71
|
+
changeNewDefault: '100',
|
|
72
|
+
solution: "Set 'requestComplexity.batchRequestLimit' to a positive integer appropriate for your app to limit the number of sub-requests per batch request, or to '-1' to disable."
|
|
73
|
+
}, {
|
|
74
|
+
optionKey: 'enableProductPurchaseLegacyApi',
|
|
75
|
+
changeNewKey: '',
|
|
76
|
+
resolvedValue: false,
|
|
77
|
+
solution: "The product purchase API is an undocumented, unmaintained legacy feature that may not function as expected and will be removed in a future major version. We strongly advise against using it. Set 'enableProductPurchaseLegacyApi' to 'false' to disable it, or remove the option to accept the future removal."
|
|
78
|
+
}, {
|
|
79
|
+
optionKey: 'allowExpiredAuthDataToken',
|
|
80
|
+
changeNewKey: '',
|
|
81
|
+
resolvedValue: false,
|
|
82
|
+
solution: "Auth providers are always validated on login regardless of this setting. Set 'allowExpiredAuthDataToken' to 'false' or remove the option to accept the future removal."
|
|
83
|
+
}, {
|
|
84
|
+
optionKey: 'protectedFieldsOwnerExempt',
|
|
85
|
+
changeNewDefault: 'false',
|
|
86
|
+
solution: "Set 'protectedFieldsOwnerExempt' to 'false' to apply protectedFields consistently to the user's own _User object (same as all other classes), or to 'true' to keep the current behavior where a user can see all their own fields."
|
|
87
|
+
}, {
|
|
88
|
+
optionKey: 'protectedFieldsTriggerExempt',
|
|
89
|
+
changeNewDefault: 'true',
|
|
90
|
+
solution: "Set 'protectedFieldsTriggerExempt' to 'true' to make Cloud Code triggers (e.g. beforeSave, afterSave) receive the full object including protected fields, or to 'false' to keep the current behavior where protected fields are stripped from trigger objects."
|
|
91
|
+
}, {
|
|
92
|
+
optionKey: 'protectedFieldsSaveResponseExempt',
|
|
93
|
+
changeNewDefault: 'false',
|
|
94
|
+
solution: "Set 'protectedFieldsSaveResponseExempt' to 'false' to strip protected fields from write operation responses (create, update), consistent with how they are stripped from query results. Set to 'true' to keep the current behavior where protected fields are included in write responses."
|
|
95
|
+
}, {
|
|
96
|
+
optionKey: 'installation.duplicateDeviceTokenActionEnforceAuth',
|
|
97
|
+
changeNewDefault: 'true',
|
|
98
|
+
solution: "Set 'installation.duplicateDeviceTokenActionEnforceAuth' to 'true' to enforce the caller's auth context (and the resulting ACL and CLP) when Parse Server deduplicates _Installation records sharing the same deviceToken. Set to 'false' to keep the current behavior of bypassing permissions on the dedup operation."
|
|
99
|
+
}];
|
|
100
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwib3B0aW9uS2V5IiwiY2hhbmdlTmV3RGVmYXVsdCIsInNvbHV0aW9uIiwiY2hhbmdlTmV3S2V5IiwicmVzb2x2ZWRWYWx1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9EZXByZWNhdG9yL0RlcHJlY2F0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBkZXByZWNhdGlvbnMuXG4gKlxuICogQWRkIGRlcHJlY2F0aW9ucyB0byB0aGUgYXJyYXkgdXNpbmcgdGhlIGZvbGxvd2luZyBrZXlzOlxuICogLSBgb3B0aW9uS2V5YCB7U3RyaW5nfTogVGhlIG9wdGlvbiBrZXkgaW5jbC4gaXRzIHBhdGgsIGUuZy4gYHNlY3VyaXR5LmVuYWJsZUNoZWNrYC5cbiAqIC0gYGVudktleWAge1N0cmluZ306IFRoZSBlbnZpcm9ubWVudCBrZXksIGUuZy4gYFBBUlNFX1NFUlZFUl9TRUNVUklUWWAuXG4gKiAtIGBjaGFuZ2VOZXdLZXlgIHtTdHJpbmd9OiBTZXQgdGhlIG5ldyBrZXkgbmFtZSBpZiB0aGUgY3VycmVudCBrZXkgd2lsbCBiZSByZXBsYWNlZCxcbiAqIG9yIHNldCB0byBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGN1cnJlbnQga2V5IHdpbGwgYmUgcmVtb3ZlZCB3aXRob3V0IHJlcGxhY2VtZW50LlxuICogLSBgY2hhbmdlTmV3RGVmYXVsdGAge1N0cmluZ306IFNldCB0aGUgbmV3IGRlZmF1bHQgdmFsdWUgaWYgdGhlIGtleSdzIGRlZmF1bHQgdmFsdWVcbiAqIHdpbGwgY2hhbmdlIGluIGEgZnV0dXJlIHZlcnNpb24uXG4gKiAtIGByZXNvbHZlZFZhbHVlYCB7YW55fTogVGhlIG9wdGlvbiB2YWx1ZSB0aGF0IHN1cHByZXNzZXMgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmcsXG4gKiBpbmRpY2F0aW5nIHRoZSB1c2VyIGhhcyBhbHJlYWR5IGFkb3B0ZWQgdGhlIGZ1dHVyZSBiZWhhdmlvci4gT25seSBhcHBsaWNhYmxlIHdoZW5cbiAqIGBjaGFuZ2VOZXdLZXlgIGlzIGFuIGVtcHR5IHN0cmluZyAob3B0aW9uIHdpbGwgYmUgcmVtb3ZlZCB3aXRob3V0IHJlcGxhY2VtZW50KS5cbiAqIEZvciBleGFtcGxlLCBgZmFsc2VgIGZvciBhbiBvcHRpb24gdGhhdCB3aWxsIGJlIHJlbW92ZWQsIGlmIHNldHRpbmcgaXQgdG8gYGZhbHNlYFxuICogZGlzYWJsZXMgdGhlIGRlcHJlY2F0ZWQgZmVhdHVyZS5cbiAqIC0gYHNvbHV0aW9uYDogVGhlIGluc3RydWN0aW9uIHRvIHJlc29sdmUgdGhpcyBkZXByZWNhdGlvbiB3YXJuaW5nLiBPcHRpb25hbC4gVGhpc1xuICogaW5zdHJ1Y3Rpb24gbXVzdCBub3QgaW5jbHVkZSB0aGUgZGVwcmVjYXRpb24gd2FybmluZyB3aGljaCBpcyBhdXRvLWdlbmVyYXRlZC5cbiAqIEl0IHNob3VsZCBvbmx5IGNvbnRhaW4gYWRkaXRpb25hbCBpbnN0cnVjdGlvbiByZWdhcmRpbmcgdGhlIGRlcHJlY2F0aW9uIGlmXG4gKiBuZWNlc3NhcnkuXG4gKlxuICogSWYgdGhlcmUgYXJlIG5vIGRlcHJlY2F0aW9ucywgdGhpcyBtdXN0IHJldHVybiBhbiBlbXB0eSBhcnJheS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHtcbiAgICBvcHRpb25LZXk6ICdmaWxlVXBsb2FkLmFsbG93ZWRGaWxlVXJsRG9tYWlucycsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJ1tdJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ2ZpbGVVcGxvYWQuYWxsb3dlZEZpbGVVcmxEb21haW5zJyB0byB0aGUgZG9tYWlucyB5b3Ugd2FudCB0byBhbGxvdywgb3IgdG8gJ1tdJyB0byBibG9jayBhbGwgZmlsZSBVUkxzLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncGFnZXMuZW5jb2RlUGFnZVBhcmFtSGVhZGVycycsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJ3RydWUnLFxuICAgIHNvbHV0aW9uOiBcIlNldCAncGFnZXMuZW5jb2RlUGFnZVBhcmFtSGVhZGVycycgdG8gJ3RydWUnIHRvIFVSSS1lbmNvZGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gcGFnZSBwYXJhbWV0ZXIgaGVhZGVycy5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ3JlYWRPbmx5TWFzdGVyS2V5SXBzJyxcbiAgICBjaGFuZ2VOZXdEZWZhdWx0OiAnW1wiMTI3LjAuMC4xXCIsIFwiOjoxXCJdJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3JlYWRPbmx5TWFzdGVyS2V5SXBzJyB0byB0aGUgSVAgYWRkcmVzc2VzIHRoYXQgc2hvdWxkIGJlIGFsbG93ZWQgdG8gdXNlIHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSwgb3IgdG8gJ1tcXFwiMTI3LjAuMC4xXFxcIiwgXFxcIjo6MVxcXCJdJyB0byByZXN0cmljdCBhY2Nlc3MgdG8gbG9jYWxob3N0LlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAnbW91bnRQbGF5Z3JvdW5kJyxcbiAgICBjaGFuZ2VOZXdLZXk6ICcnLFxuICAgIHNvbHV0aW9uOiBcIlVzZSBQYXJzZSBEYXNoYm9hcmQgYXMgR3JhcGhRTCBJREUgb3IgY29uZmlndXJlIGEgdGhpcmQtcGFydHkgR3JhcGhRTCBjbGllbnQgc3VjaCBhcyBBcG9sbG8gU2FuZGJveCwgR3JhcGhpUUwsIG9yIEluc29tbmlhIHdpdGggY3VzdG9tIHJlcXVlc3QgaGVhZGVycy5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ3BsYXlncm91bmRQYXRoJyxcbiAgICBjaGFuZ2VOZXdLZXk6ICcnLFxuICAgIHNvbHV0aW9uOiBcIlVzZSBQYXJzZSBEYXNoYm9hcmQgYXMgR3JhcGhRTCBJREUgb3IgY29uZmlndXJlIGEgdGhpcmQtcGFydHkgR3JhcGhRTCBjbGllbnQgc3VjaCBhcyBBcG9sbG8gU2FuZGJveCwgR3JhcGhpUUwsIG9yIEluc29tbmlhIHdpdGggY3VzdG9tIHJlcXVlc3QgaGVhZGVycy5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ3JlcXVlc3RDb21wbGV4aXR5LmluY2x1ZGVEZXB0aCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzEwJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3JlcXVlc3RDb21wbGV4aXR5LmluY2x1ZGVEZXB0aCcgdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIGFwcHJvcHJpYXRlIGZvciB5b3VyIGFwcCB0byBsaW1pdCBpbmNsdWRlIHBvaW50ZXIgY2hhaW4gZGVwdGgsIG9yIHRvICctMScgdG8gZGlzYWJsZS5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ3JlcXVlc3RDb21wbGV4aXR5LmluY2x1ZGVDb3VudCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzEwMCcsXG4gICAgc29sdXRpb246IFwiU2V0ICdyZXF1ZXN0Q29tcGxleGl0eS5pbmNsdWRlQ291bnQnIHRvIGEgcG9zaXRpdmUgaW50ZWdlciBhcHByb3ByaWF0ZSBmb3IgeW91ciBhcHAgdG8gbGltaXQgdGhlIG51bWJlciBvZiBpbmNsdWRlIHBhdGhzIHBlciBxdWVyeSwgb3IgdG8gJy0xJyB0byBkaXNhYmxlLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncmVxdWVzdENvbXBsZXhpdHkuc3VicXVlcnlEZXB0aCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzEwJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3JlcXVlc3RDb21wbGV4aXR5LnN1YnF1ZXJ5RGVwdGgnIHRvIGEgcG9zaXRpdmUgaW50ZWdlciBhcHByb3ByaWF0ZSBmb3IgeW91ciBhcHAgdG8gbGltaXQgc3VicXVlcnkgbmVzdGluZyBkZXB0aCwgb3IgdG8gJy0xJyB0byBkaXNhYmxlLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncmVxdWVzdENvbXBsZXhpdHkucXVlcnlEZXB0aCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzEwJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3JlcXVlc3RDb21wbGV4aXR5LnF1ZXJ5RGVwdGgnIHRvIGEgcG9zaXRpdmUgaW50ZWdlciBhcHByb3ByaWF0ZSBmb3IgeW91ciBhcHAgdG8gbGltaXQgcXVlcnkgY29uZGl0aW9uIG5lc3RpbmcgZGVwdGgsIG9yIHRvICctMScgdG8gZGlzYWJsZS5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ3JlcXVlc3RDb21wbGV4aXR5LmdyYXBoUUxEZXB0aCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzIwJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3JlcXVlc3RDb21wbGV4aXR5LmdyYXBoUUxEZXB0aCcgdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIGFwcHJvcHJpYXRlIGZvciB5b3VyIGFwcCB0byBsaW1pdCBHcmFwaFFMIGZpZWxkIHNlbGVjdGlvbiBkZXB0aCwgb3IgdG8gJy0xJyB0byBkaXNhYmxlLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncmVxdWVzdENvbXBsZXhpdHkuZ3JhcGhRTEZpZWxkcycsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzIwMCcsXG4gICAgc29sdXRpb246IFwiU2V0ICdyZXF1ZXN0Q29tcGxleGl0eS5ncmFwaFFMRmllbGRzJyB0byBhIHBvc2l0aXZlIGludGVnZXIgYXBwcm9wcmlhdGUgZm9yIHlvdXIgYXBwIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgR3JhcGhRTCBmaWVsZCBzZWxlY3Rpb25zLCBvciB0byAnLTEnIHRvIGRpc2FibGUuXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdyZXF1ZXN0Q29tcGxleGl0eS5iYXRjaFJlcXVlc3RMaW1pdCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzEwMCcsXG4gICAgc29sdXRpb246IFwiU2V0ICdyZXF1ZXN0Q29tcGxleGl0eS5iYXRjaFJlcXVlc3RMaW1pdCcgdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIGFwcHJvcHJpYXRlIGZvciB5b3VyIGFwcCB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHN1Yi1yZXF1ZXN0cyBwZXIgYmF0Y2ggcmVxdWVzdCwgb3IgdG8gJy0xJyB0byBkaXNhYmxlLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAnZW5hYmxlUHJvZHVjdFB1cmNoYXNlTGVnYWN5QXBpJyxcbiAgICBjaGFuZ2VOZXdLZXk6ICcnLFxuICAgIHJlc29sdmVkVmFsdWU6IGZhbHNlLFxuICAgIHNvbHV0aW9uOiBcIlRoZSBwcm9kdWN0IHB1cmNoYXNlIEFQSSBpcyBhbiB1bmRvY3VtZW50ZWQsIHVubWFpbnRhaW5lZCBsZWdhY3kgZmVhdHVyZSB0aGF0IG1heSBub3QgZnVuY3Rpb24gYXMgZXhwZWN0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciB2ZXJzaW9uLiBXZSBzdHJvbmdseSBhZHZpc2UgYWdhaW5zdCB1c2luZyBpdC4gU2V0ICdlbmFibGVQcm9kdWN0UHVyY2hhc2VMZWdhY3lBcGknIHRvICdmYWxzZScgdG8gZGlzYWJsZSBpdCwgb3IgcmVtb3ZlIHRoZSBvcHRpb24gdG8gYWNjZXB0IHRoZSBmdXR1cmUgcmVtb3ZhbC5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ2FsbG93RXhwaXJlZEF1dGhEYXRhVG9rZW4nLFxuICAgIGNoYW5nZU5ld0tleTogJycsXG4gICAgcmVzb2x2ZWRWYWx1ZTogZmFsc2UsXG4gICAgc29sdXRpb246IFwiQXV0aCBwcm92aWRlcnMgYXJlIGFsd2F5cyB2YWxpZGF0ZWQgb24gbG9naW4gcmVnYXJkbGVzcyBvZiB0aGlzIHNldHRpbmcuIFNldCAnYWxsb3dFeHBpcmVkQXV0aERhdGFUb2tlbicgdG8gJ2ZhbHNlJyBvciByZW1vdmUgdGhlIG9wdGlvbiB0byBhY2NlcHQgdGhlIGZ1dHVyZSByZW1vdmFsLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncHJvdGVjdGVkRmllbGRzT3duZXJFeGVtcHQnLFxuICAgIGNoYW5nZU5ld0RlZmF1bHQ6ICdmYWxzZScsXG4gICAgc29sdXRpb246IFwiU2V0ICdwcm90ZWN0ZWRGaWVsZHNPd25lckV4ZW1wdCcgdG8gJ2ZhbHNlJyB0byBhcHBseSBwcm90ZWN0ZWRGaWVsZHMgY29uc2lzdGVudGx5IHRvIHRoZSB1c2VyJ3Mgb3duIF9Vc2VyIG9iamVjdCAoc2FtZSBhcyBhbGwgb3RoZXIgY2xhc3NlcyksIG9yIHRvICd0cnVlJyB0byBrZWVwIHRoZSBjdXJyZW50IGJlaGF2aW9yIHdoZXJlIGEgdXNlciBjYW4gc2VlIGFsbCB0aGVpciBvd24gZmllbGRzLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncHJvdGVjdGVkRmllbGRzVHJpZ2dlckV4ZW1wdCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJ3RydWUnLFxuICAgIHNvbHV0aW9uOiBcIlNldCAncHJvdGVjdGVkRmllbGRzVHJpZ2dlckV4ZW1wdCcgdG8gJ3RydWUnIHRvIG1ha2UgQ2xvdWQgQ29kZSB0cmlnZ2VycyAoZS5nLiBiZWZvcmVTYXZlLCBhZnRlclNhdmUpIHJlY2VpdmUgdGhlIGZ1bGwgb2JqZWN0IGluY2x1ZGluZyBwcm90ZWN0ZWQgZmllbGRzLCBvciB0byAnZmFsc2UnIHRvIGtlZXAgdGhlIGN1cnJlbnQgYmVoYXZpb3Igd2hlcmUgcHJvdGVjdGVkIGZpZWxkcyBhcmUgc3RyaXBwZWQgZnJvbSB0cmlnZ2VyIG9iamVjdHMuXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdwcm90ZWN0ZWRGaWVsZHNTYXZlUmVzcG9uc2VFeGVtcHQnLFxuICAgIGNoYW5nZU5ld0RlZmF1bHQ6ICdmYWxzZScsXG4gICAgc29sdXRpb246IFwiU2V0ICdwcm90ZWN0ZWRGaWVsZHNTYXZlUmVzcG9uc2VFeGVtcHQnIHRvICdmYWxzZScgdG8gc3RyaXAgcHJvdGVjdGVkIGZpZWxkcyBmcm9tIHdyaXRlIG9wZXJhdGlvbiByZXNwb25zZXMgKGNyZWF0ZSwgdXBkYXRlKSwgY29uc2lzdGVudCB3aXRoIGhvdyB0aGV5IGFyZSBzdHJpcHBlZCBmcm9tIHF1ZXJ5IHJlc3VsdHMuIFNldCB0byAndHJ1ZScgdG8ga2VlcCB0aGUgY3VycmVudCBiZWhhdmlvciB3aGVyZSBwcm90ZWN0ZWQgZmllbGRzIGFyZSBpbmNsdWRlZCBpbiB3cml0ZSByZXNwb25zZXMuXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdpbnN0YWxsYXRpb24uZHVwbGljYXRlRGV2aWNlVG9rZW5BY3Rpb25FbmZvcmNlQXV0aCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJ3RydWUnLFxuICAgIHNvbHV0aW9uOiBcIlNldCAnaW5zdGFsbGF0aW9uLmR1cGxpY2F0ZURldmljZVRva2VuQWN0aW9uRW5mb3JjZUF1dGgnIHRvICd0cnVlJyB0byBlbmZvcmNlIHRoZSBjYWxsZXIncyBhdXRoIGNvbnRleHQgKGFuZCB0aGUgcmVzdWx0aW5nIEFDTCBhbmQgQ0xQKSB3aGVuIFBhcnNlIFNlcnZlciBkZWR1cGxpY2F0ZXMgX0luc3RhbGxhdGlvbiByZWNvcmRzIHNoYXJpbmcgdGhlIHNhbWUgZGV2aWNlVG9rZW4uIFNldCB0byAnZmFsc2UnIHRvIGtlZXAgdGhlIGN1cnJlbnQgYmVoYXZpb3Igb2YgYnlwYXNzaW5nIHBlcm1pc3Npb25zIG9uIHRoZSBkZWR1cCBvcGVyYXRpb24uXCIsXG4gIH0sXG5dO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FBLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHLENBQ2Y7RUFDRUMsU0FBUyxFQUFFLGtDQUFrQztFQUM3Q0MsZ0JBQWdCLEVBQUUsSUFBSTtFQUN0QkMsUUFBUSxFQUFFO0FBQ1osQ0FBQyxFQUNEO0VBQ0VGLFNBQVMsRUFBRSw4QkFBOEI7RUFDekNDLGdCQUFnQixFQUFFLE1BQU07RUFDeEJDLFFBQVEsRUFBRTtBQUNaLENBQUMsRUFDRDtFQUNFRixTQUFTLEVBQUUsc0JBQXNCO0VBQ2pDQyxnQkFBZ0IsRUFBRSxzQkFBc0I7RUFDeENDLFFBQVEsRUFBRTtBQUNaLENBQUMsRUFDRDtFQUNFRixTQUFTLEVBQUUsaUJBQWlCO0VBQzVCRyxZQUFZLEVBQUUsRUFBRTtFQUNoQkQsUUFBUSxFQUFFO0FBQ1osQ0FBQyxFQUNEO0VBQ0VGLFNBQVMsRUFBRSxnQkFBZ0I7RUFDM0JHLFlBQVksRUFBRSxFQUFFO0VBQ2hCRCxRQUFRLEVBQUU7QUFDWixDQUFDLEVBQ0Q7RUFDRUYsU0FBUyxFQUFFLGdDQUFnQztFQUMzQ0MsZ0JBQWdCLEVBQUUsSUFBSTtFQUN0QkMsUUFBUSxFQUFFO0FBQ1osQ0FBQyxFQUNEO0VBQ0VGLFNBQVMsRUFBRSxnQ0FBZ0M7RUFDM0NDLGdCQUFnQixFQUFFLEtBQUs7RUFDdkJDLFFBQVEsRUFBRTtBQUNaLENBQUMsRUFDRDtFQUNFRixTQUFTLEVBQUUsaUNBQWlDO0VBQzVDQyxnQkFBZ0IsRUFBRSxJQUFJO0VBQ3RCQyxRQUFRLEVBQUU7QUFDWixDQUFDLEVBQ0Q7RUFDRUYsU0FBUyxFQUFFLDhCQUE4QjtFQUN6Q0MsZ0JBQWdCLEVBQUUsSUFBSTtFQUN0QkMsUUFBUSxFQUFFO0FBQ1osQ0FBQyxFQUNEO0VBQ0VGLFNBQVMsRUFBRSxnQ0FBZ0M7RUFDM0NDLGdCQUFnQixFQUFFLElBQUk7RUFDdEJDLFFBQVEsRUFBRTtBQUNaLENBQUMsRUFDRDtFQUNFRixTQUFTLEVBQUUsaUNBQWlDO0VBQzVDQyxnQkFBZ0IsRUFBRSxLQUFLO0VBQ3ZCQyxRQUFRLEVBQUU7QUFDWixDQUFDLEVBQ0Q7RUFDRUYsU0FBUyxFQUFFLHFDQUFxQztFQUNoREMsZ0JBQWdCLEVBQUUsS0FBSztFQUN2QkMsUUFBUSxFQUFFO0FBQ1osQ0FBQyxFQUNEO0VBQ0VGLFNBQVMsRUFBRSxnQ0FBZ0M7RUFDM0NHLFlBQVksRUFBRSxFQUFFO0VBQ2hCQyxhQUFhLEVBQUUsS0FBSztFQUNwQkYsUUFBUSxFQUFFO0FBQ1osQ0FBQyxFQUNEO0VBQ0VGLFNBQVMsRUFBRSwyQkFBMkI7RUFDdENHLFlBQVksRUFBRSxFQUFFO0VBQ2hCQyxhQUFhLEVBQUUsS0FBSztFQUNwQkYsUUFBUSxFQUFFO0FBQ1osQ0FBQyxFQUNEO0VBQ0VGLFNBQVMsRUFBRSw0QkFBNEI7RUFDdkNDLGdCQUFnQixFQUFFLE9BQU87RUFDekJDLFFBQVEsRUFBRTtBQUNaLENBQUMsRUFDRDtFQUNFRixTQUFTLEVBQUUsOEJBQThCO0VBQ3pDQyxnQkFBZ0IsRUFBRSxNQUFNO0VBQ3hCQyxRQUFRLEVBQUU7QUFDWixDQUFDLEVBQ0Q7RUFDRUYsU0FBUyxFQUFFLG1DQUFtQztFQUM5Q0MsZ0JBQWdCLEVBQUUsT0FBTztFQUN6QkMsUUFBUSxFQUFFO0FBQ1osQ0FBQyxFQUNEO0VBQ0VGLFNBQVMsRUFBRSxvREFBb0Q7RUFDL0RDLGdCQUFnQixFQUFFLE1BQU07RUFDeEJDLFFBQVEsRUFBRTtBQUNaLENBQUMsQ0FDRiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _logger = _interopRequireDefault(require("../logger"));
|
|
4
|
+
var _Deprecations = _interopRequireDefault(require("./Deprecations"));
|
|
5
|
+
var _Utils = _interopRequireDefault(require("../Utils"));
|
|
6
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
/**
|
|
8
|
+
* The deprecator class.
|
|
9
|
+
*/
|
|
10
|
+
class Deprecator {
|
|
11
|
+
/**
|
|
12
|
+
* Scans the Parse Server for deprecated options.
|
|
13
|
+
* This needs to be called before setting option defaults, otherwise it
|
|
14
|
+
* becomes indistinguishable whether an option has been set manually or
|
|
15
|
+
* by default.
|
|
16
|
+
* @param {any} options The Parse Server options.
|
|
17
|
+
*/
|
|
18
|
+
static scanParseServerOptions(options) {
|
|
19
|
+
// Scan for deprecations
|
|
20
|
+
for (const deprecation of Deprecator._getDeprecations()) {
|
|
21
|
+
// Get deprecation properties
|
|
22
|
+
const solution = deprecation.solution;
|
|
23
|
+
const optionKey = deprecation.optionKey;
|
|
24
|
+
const changeNewDefault = deprecation.changeNewDefault;
|
|
25
|
+
const changeNewKey = deprecation.changeNewKey;
|
|
26
|
+
|
|
27
|
+
// If default will change, only throw a warning if option is not set
|
|
28
|
+
if (changeNewDefault != null && _Utils.default.getNestedProperty(options, optionKey) == null) {
|
|
29
|
+
Deprecator._logOption({
|
|
30
|
+
optionKey,
|
|
31
|
+
changeNewDefault,
|
|
32
|
+
solution
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// If key will be removed or renamed, only throw a warning if option is set;
|
|
37
|
+
// skip if option is set to the resolved value that suppresses the deprecation
|
|
38
|
+
const resolvedValue = deprecation.resolvedValue;
|
|
39
|
+
const optionValue = _Utils.default.getNestedProperty(options, optionKey);
|
|
40
|
+
if (changeNewKey != null && optionValue != null && optionValue !== resolvedValue) {
|
|
41
|
+
Deprecator._logOption({
|
|
42
|
+
optionKey,
|
|
43
|
+
changeNewKey,
|
|
44
|
+
solution
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Logs a deprecation warning for a parameter that can only be determined dynamically
|
|
52
|
+
* during runtime.
|
|
53
|
+
*
|
|
54
|
+
* Note: Do not use this to log deprecations of Parse Server options, but add such
|
|
55
|
+
* deprecations to `Deprecations.js` instead. See the contribution docs for more
|
|
56
|
+
* details.
|
|
57
|
+
*
|
|
58
|
+
* For consistency, the deprecation warning is composed of the following parts:
|
|
59
|
+
*
|
|
60
|
+
* > DeprecationWarning: `usage` is deprecated and will be removed in a future version.
|
|
61
|
+
* `solution`.
|
|
62
|
+
*
|
|
63
|
+
* - `usage`: The deprecated usage.
|
|
64
|
+
* - `solution`: The instruction to resolve this deprecation warning.
|
|
65
|
+
*
|
|
66
|
+
* For example:
|
|
67
|
+
* > DeprecationWarning: `Prefixing field names with dollar sign ($) in aggregation query`
|
|
68
|
+
* is deprecated and will be removed in a future version. `Reference field names without
|
|
69
|
+
* dollar sign prefix.`
|
|
70
|
+
*
|
|
71
|
+
* @param {Object} options The deprecation options.
|
|
72
|
+
* @param {String} options.usage The usage that is deprecated.
|
|
73
|
+
* @param {String} [options.solution] The instruction to resolve this deprecation warning.
|
|
74
|
+
* Optional. It is recommended to add an instruction for the convenience of the developer.
|
|
75
|
+
*/
|
|
76
|
+
static logRuntimeDeprecation(options) {
|
|
77
|
+
Deprecator._logGeneric(options);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Returns the deprecation definitions.
|
|
82
|
+
* @returns {Array<Object>} The deprecations.
|
|
83
|
+
*/
|
|
84
|
+
static _getDeprecations() {
|
|
85
|
+
return _Deprecations.default;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Logs a generic deprecation warning.
|
|
90
|
+
*
|
|
91
|
+
* @param {Object} options The deprecation options.
|
|
92
|
+
* @param {String} options.usage The usage that is deprecated.
|
|
93
|
+
* @param {String} [options.solution] The instruction to resolve this deprecation warning.
|
|
94
|
+
* Optional. It is recommended to add an instruction for the convenience of the developer.
|
|
95
|
+
*/
|
|
96
|
+
static _logGeneric({
|
|
97
|
+
usage,
|
|
98
|
+
solution
|
|
99
|
+
}) {
|
|
100
|
+
// Compose message
|
|
101
|
+
let output = `DeprecationWarning: ${usage} is deprecated and will be removed in a future version.`;
|
|
102
|
+
output += solution ? ` ${solution}` : '';
|
|
103
|
+
_logger.default.warn(output);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Logs a deprecation warning for a Parse Server option.
|
|
108
|
+
*
|
|
109
|
+
* @param {String} optionKey The option key incl. its path, e.g. `security.enableCheck`.
|
|
110
|
+
* @param {String} envKey The environment key, e.g. `PARSE_SERVER_SECURITY`.
|
|
111
|
+
* @param {String} changeNewKey Set the new key name if the current key will be replaced,
|
|
112
|
+
* or set to an empty string if the current key will be removed without replacement.
|
|
113
|
+
* @param {String} changeNewDefault Set the new default value if the key's default value
|
|
114
|
+
* will change in a future version.
|
|
115
|
+
* @param {String} [solution] The instruction to resolve this deprecation warning. This
|
|
116
|
+
* message must not include the warning that the parameter is deprecated, that is
|
|
117
|
+
* automatically added to the message. It should only contain the instruction on how
|
|
118
|
+
* to resolve this warning.
|
|
119
|
+
*/
|
|
120
|
+
static _logOption({
|
|
121
|
+
optionKey,
|
|
122
|
+
envKey,
|
|
123
|
+
changeNewKey,
|
|
124
|
+
changeNewDefault,
|
|
125
|
+
solution
|
|
126
|
+
}) {
|
|
127
|
+
const type = optionKey ? 'option' : 'environment key';
|
|
128
|
+
const key = optionKey ? optionKey : envKey;
|
|
129
|
+
const keyAction = changeNewKey == null ? undefined : changeNewKey.length > 0 ? `renamed to '${changeNewKey}'` : `removed`;
|
|
130
|
+
|
|
131
|
+
// Compose message
|
|
132
|
+
let output = `DeprecationWarning: The Parse Server ${type} '${key}' `;
|
|
133
|
+
output += changeNewKey != null ? `is deprecated and will be ${keyAction} in a future version.` : '';
|
|
134
|
+
output += changeNewDefault ? `default will change to '${changeNewDefault}' in a future version.` : '';
|
|
135
|
+
output += solution ? ` ${solution}` : '';
|
|
136
|
+
_logger.default.warn(output);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
module.exports = Deprecator;
|
|
140
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfRGVwcmVjYXRpb25zIiwiX1V0aWxzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiRGVwcmVjYXRvciIsInNjYW5QYXJzZVNlcnZlck9wdGlvbnMiLCJvcHRpb25zIiwiZGVwcmVjYXRpb24iLCJfZ2V0RGVwcmVjYXRpb25zIiwic29sdXRpb24iLCJvcHRpb25LZXkiLCJjaGFuZ2VOZXdEZWZhdWx0IiwiY2hhbmdlTmV3S2V5IiwiVXRpbHMiLCJnZXROZXN0ZWRQcm9wZXJ0eSIsIl9sb2dPcHRpb24iLCJyZXNvbHZlZFZhbHVlIiwib3B0aW9uVmFsdWUiLCJsb2dSdW50aW1lRGVwcmVjYXRpb24iLCJfbG9nR2VuZXJpYyIsIkRlcHJlY2F0aW9ucyIsInVzYWdlIiwib3V0cHV0IiwibG9nZ2VyIiwid2FybiIsImVudktleSIsInR5cGUiLCJrZXkiLCJrZXlBY3Rpb24iLCJ1bmRlZmluZWQiLCJsZW5ndGgiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0RlcHJlY2F0b3IvRGVwcmVjYXRvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgRGVwcmVjYXRpb25zIGZyb20gJy4vRGVwcmVjYXRpb25zJztcbmltcG9ydCBVdGlscyBmcm9tICcuLi9VdGlscyc7XG5cbi8qKlxuICogVGhlIGRlcHJlY2F0b3IgY2xhc3MuXG4gKi9cbmNsYXNzIERlcHJlY2F0b3Ige1xuICAvKipcbiAgICogU2NhbnMgdGhlIFBhcnNlIFNlcnZlciBmb3IgZGVwcmVjYXRlZCBvcHRpb25zLlxuICAgKiBUaGlzIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmUgc2V0dGluZyBvcHRpb24gZGVmYXVsdHMsIG90aGVyd2lzZSBpdFxuICAgKiBiZWNvbWVzIGluZGlzdGluZ3Vpc2hhYmxlIHdoZXRoZXIgYW4gb3B0aW9uIGhhcyBiZWVuIHNldCBtYW51YWxseSBvclxuICAgKiBieSBkZWZhdWx0LlxuICAgKiBAcGFyYW0ge2FueX0gb3B0aW9ucyBUaGUgUGFyc2UgU2VydmVyIG9wdGlvbnMuXG4gICAqL1xuICBzdGF0aWMgc2NhblBhcnNlU2VydmVyT3B0aW9ucyhvcHRpb25zKSB7XG4gICAgLy8gU2NhbiBmb3IgZGVwcmVjYXRpb25zXG4gICAgZm9yIChjb25zdCBkZXByZWNhdGlvbiBvZiBEZXByZWNhdG9yLl9nZXREZXByZWNhdGlvbnMoKSkge1xuICAgICAgLy8gR2V0IGRlcHJlY2F0aW9uIHByb3BlcnRpZXNcbiAgICAgIGNvbnN0IHNvbHV0aW9uID0gZGVwcmVjYXRpb24uc29sdXRpb247XG4gICAgICBjb25zdCBvcHRpb25LZXkgPSBkZXByZWNhdGlvbi5vcHRpb25LZXk7XG4gICAgICBjb25zdCBjaGFuZ2VOZXdEZWZhdWx0ID0gZGVwcmVjYXRpb24uY2hhbmdlTmV3RGVmYXVsdDtcbiAgICAgIGNvbnN0IGNoYW5nZU5ld0tleSA9IGRlcHJlY2F0aW9uLmNoYW5nZU5ld0tleTtcblxuICAgICAgLy8gSWYgZGVmYXVsdCB3aWxsIGNoYW5nZSwgb25seSB0aHJvdyBhIHdhcm5pbmcgaWYgb3B0aW9uIGlzIG5vdCBzZXRcbiAgICAgIGlmIChjaGFuZ2VOZXdEZWZhdWx0ICE9IG51bGwgJiYgVXRpbHMuZ2V0TmVzdGVkUHJvcGVydHkob3B0aW9ucywgb3B0aW9uS2V5KSA9PSBudWxsKSB7XG4gICAgICAgIERlcHJlY2F0b3IuX2xvZ09wdGlvbih7IG9wdGlvbktleSwgY2hhbmdlTmV3RGVmYXVsdCwgc29sdXRpb24gfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIGtleSB3aWxsIGJlIHJlbW92ZWQgb3IgcmVuYW1lZCwgb25seSB0aHJvdyBhIHdhcm5pbmcgaWYgb3B0aW9uIGlzIHNldDtcbiAgICAgIC8vIHNraXAgaWYgb3B0aW9uIGlzIHNldCB0byB0aGUgcmVzb2x2ZWQgdmFsdWUgdGhhdCBzdXBwcmVzc2VzIHRoZSBkZXByZWNhdGlvblxuICAgICAgY29uc3QgcmVzb2x2ZWRWYWx1ZSA9IGRlcHJlY2F0aW9uLnJlc29sdmVkVmFsdWU7XG4gICAgICBjb25zdCBvcHRpb25WYWx1ZSA9IFV0aWxzLmdldE5lc3RlZFByb3BlcnR5KG9wdGlvbnMsIG9wdGlvbktleSk7XG4gICAgICBpZiAoY2hhbmdlTmV3S2V5ICE9IG51bGwgJiYgb3B0aW9uVmFsdWUgIT0gbnVsbCAmJiBvcHRpb25WYWx1ZSAhPT0gcmVzb2x2ZWRWYWx1ZSkge1xuICAgICAgICBEZXByZWNhdG9yLl9sb2dPcHRpb24oeyBvcHRpb25LZXksIGNoYW5nZU5ld0tleSwgc29sdXRpb24gfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGZvciBhIHBhcmFtZXRlciB0aGF0IGNhbiBvbmx5IGJlIGRldGVybWluZWQgZHluYW1pY2FsbHlcbiAgICogZHVyaW5nIHJ1bnRpbWUuXG4gICAqXG4gICAqIE5vdGU6IERvIG5vdCB1c2UgdGhpcyB0byBsb2cgZGVwcmVjYXRpb25zIG9mIFBhcnNlIFNlcnZlciBvcHRpb25zLCBidXQgYWRkIHN1Y2hcbiAgICogZGVwcmVjYXRpb25zIHRvIGBEZXByZWNhdGlvbnMuanNgIGluc3RlYWQuIFNlZSB0aGUgY29udHJpYnV0aW9uIGRvY3MgZm9yIG1vcmVcbiAgICogZGV0YWlscy5cbiAgICpcbiAgICogRm9yIGNvbnNpc3RlbmN5LCB0aGUgZGVwcmVjYXRpb24gd2FybmluZyBpcyBjb21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIHBhcnRzOlxuICAgKlxuICAgKiA+IERlcHJlY2F0aW9uV2FybmluZzogYHVzYWdlYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi5cbiAgICogYHNvbHV0aW9uYC5cbiAgICpcbiAgICogLSBgdXNhZ2VgOiBUaGUgZGVwcmVjYXRlZCB1c2FnZS5cbiAgICogLSBgc29sdXRpb25gOiBUaGUgaW5zdHJ1Y3Rpb24gdG8gcmVzb2x2ZSB0aGlzIGRlcHJlY2F0aW9uIHdhcm5pbmcuXG4gICAqXG4gICAqIEZvciBleGFtcGxlOlxuICAgKiA+IERlcHJlY2F0aW9uV2FybmluZzogYFByZWZpeGluZyBmaWVsZCBuYW1lcyB3aXRoIGRvbGxhciBzaWduICgkKSBpbiBhZ2dyZWdhdGlvbiBxdWVyeWBcbiAgICogaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIGBSZWZlcmVuY2UgZmllbGQgbmFtZXMgd2l0aG91dFxuICAgKiBkb2xsYXIgc2lnbiBwcmVmaXguYFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBUaGUgZGVwcmVjYXRpb24gb3B0aW9ucy5cbiAgICogQHBhcmFtIHtTdHJpbmd9IG9wdGlvbnMudXNhZ2UgVGhlIHVzYWdlIHRoYXQgaXMgZGVwcmVjYXRlZC5cbiAgICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnNvbHV0aW9uXSBUaGUgaW5zdHJ1Y3Rpb24gdG8gcmVzb2x2ZSB0aGlzIGRlcHJlY2F0aW9uIHdhcm5pbmcuXG4gICAqIE9wdGlvbmFsLiBJdCBpcyByZWNvbW1lbmRlZCB0byBhZGQgYW4gaW5zdHJ1Y3Rpb24gZm9yIHRoZSBjb252ZW5pZW5jZSBvZiB0aGUgZGV2ZWxvcGVyLlxuICAgKi9cbiAgc3RhdGljIGxvZ1J1bnRpbWVEZXByZWNhdGlvbihvcHRpb25zKSB7XG4gICAgRGVwcmVjYXRvci5fbG9nR2VuZXJpYyhvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBkZXByZWNhdGlvbiBkZWZpbml0aW9ucy5cbiAgICogQHJldHVybnMge0FycmF5PE9iamVjdD59IFRoZSBkZXByZWNhdGlvbnMuXG4gICAqL1xuICBzdGF0aWMgX2dldERlcHJlY2F0aW9ucygpIHtcbiAgICByZXR1cm4gRGVwcmVjYXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBnZW5lcmljIGRlcHJlY2F0aW9uIHdhcm5pbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIFRoZSBkZXByZWNhdGlvbiBvcHRpb25zLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gb3B0aW9ucy51c2FnZSBUaGUgdXNhZ2UgdGhhdCBpcyBkZXByZWNhdGVkLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMuc29sdXRpb25dIFRoZSBpbnN0cnVjdGlvbiB0byByZXNvbHZlIHRoaXMgZGVwcmVjYXRpb24gd2FybmluZy5cbiAgICogT3B0aW9uYWwuIEl0IGlzIHJlY29tbWVuZGVkIHRvIGFkZCBhbiBpbnN0cnVjdGlvbiBmb3IgdGhlIGNvbnZlbmllbmNlIG9mIHRoZSBkZXZlbG9wZXIuXG4gICAqL1xuICBzdGF0aWMgX2xvZ0dlbmVyaWMoeyB1c2FnZSwgc29sdXRpb24gfSkge1xuICAgIC8vIENvbXBvc2UgbWVzc2FnZVxuICAgIGxldCBvdXRwdXQgPSBgRGVwcmVjYXRpb25XYXJuaW5nOiAke3VzYWdlfSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi5gO1xuICAgIG91dHB1dCArPSBzb2x1dGlvbiA/IGAgJHtzb2x1dGlvbn1gIDogJyc7XG4gICAgbG9nZ2VyLndhcm4ob3V0cHV0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dzIGEgZGVwcmVjYXRpb24gd2FybmluZyBmb3IgYSBQYXJzZSBTZXJ2ZXIgb3B0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gb3B0aW9uS2V5IFRoZSBvcHRpb24ga2V5IGluY2wuIGl0cyBwYXRoLCBlLmcuIGBzZWN1cml0eS5lbmFibGVDaGVja2AuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBlbnZLZXkgVGhlIGVudmlyb25tZW50IGtleSwgZS5nLiBgUEFSU0VfU0VSVkVSX1NFQ1VSSVRZYC5cbiAgICogQHBhcmFtIHtTdHJpbmd9IGNoYW5nZU5ld0tleSBTZXQgdGhlIG5ldyBrZXkgbmFtZSBpZiB0aGUgY3VycmVudCBrZXkgd2lsbCBiZSByZXBsYWNlZCxcbiAgICogb3Igc2V0IHRvIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgY3VycmVudCBrZXkgd2lsbCBiZSByZW1vdmVkIHdpdGhvdXQgcmVwbGFjZW1lbnQuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjaGFuZ2VOZXdEZWZhdWx0IFNldCB0aGUgbmV3IGRlZmF1bHQgdmFsdWUgaWYgdGhlIGtleSdzIGRlZmF1bHQgdmFsdWVcbiAgICogd2lsbCBjaGFuZ2UgaW4gYSBmdXR1cmUgdmVyc2lvbi5cbiAgICogQHBhcmFtIHtTdHJpbmd9IFtzb2x1dGlvbl0gVGhlIGluc3RydWN0aW9uIHRvIHJlc29sdmUgdGhpcyBkZXByZWNhdGlvbiB3YXJuaW5nLiBUaGlzXG4gICAqIG1lc3NhZ2UgbXVzdCBub3QgaW5jbHVkZSB0aGUgd2FybmluZyB0aGF0IHRoZSBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCwgdGhhdCBpc1xuICAgKiBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBtZXNzYWdlLiBJdCBzaG91bGQgb25seSBjb250YWluIHRoZSBpbnN0cnVjdGlvbiBvbiBob3dcbiAgICogdG8gcmVzb2x2ZSB0aGlzIHdhcm5pbmcuXG4gICAqL1xuICBzdGF0aWMgX2xvZ09wdGlvbih7IG9wdGlvbktleSwgZW52S2V5LCBjaGFuZ2VOZXdLZXksIGNoYW5nZU5ld0RlZmF1bHQsIHNvbHV0aW9uIH0pIHtcbiAgICBjb25zdCB0eXBlID0gb3B0aW9uS2V5ID8gJ29wdGlvbicgOiAnZW52aXJvbm1lbnQga2V5JztcbiAgICBjb25zdCBrZXkgPSBvcHRpb25LZXkgPyBvcHRpb25LZXkgOiBlbnZLZXk7XG4gICAgY29uc3Qga2V5QWN0aW9uID1cbiAgICAgIGNoYW5nZU5ld0tleSA9PSBudWxsXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogY2hhbmdlTmV3S2V5Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IGByZW5hbWVkIHRvICcke2NoYW5nZU5ld0tleX0nYFxuICAgICAgICAgIDogYHJlbW92ZWRgO1xuXG4gICAgLy8gQ29tcG9zZSBtZXNzYWdlXG4gICAgbGV0IG91dHB1dCA9IGBEZXByZWNhdGlvbldhcm5pbmc6IFRoZSBQYXJzZSBTZXJ2ZXIgJHt0eXBlfSAnJHtrZXl9JyBgO1xuICAgIG91dHB1dCArPSBjaGFuZ2VOZXdLZXkgIT0gbnVsbCA/IGBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlICR7a2V5QWN0aW9ufSBpbiBhIGZ1dHVyZSB2ZXJzaW9uLmAgOiAnJztcbiAgICBvdXRwdXQgKz0gY2hhbmdlTmV3RGVmYXVsdFxuICAgICAgPyBgZGVmYXVsdCB3aWxsIGNoYW5nZSB0byAnJHtjaGFuZ2VOZXdEZWZhdWx0fScgaW4gYSBmdXR1cmUgdmVyc2lvbi5gXG4gICAgICA6ICcnO1xuICAgIG91dHB1dCArPSBzb2x1dGlvbiA/IGAgJHtzb2x1dGlvbn1gIDogJyc7XG4gICAgbG9nZ2VyLndhcm4ob3V0cHV0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IERlcHJlY2F0b3I7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQTZCLFNBQUFELHVCQUFBSSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRTdCO0FBQ0E7QUFDQTtBQUNBLE1BQU1HLFVBQVUsQ0FBQztFQUNmO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsT0FBT0Msc0JBQXNCQSxDQUFDQyxPQUFPLEVBQUU7SUFDckM7SUFDQSxLQUFLLE1BQU1DLFdBQVcsSUFBSUgsVUFBVSxDQUFDSSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUU7TUFDdkQ7TUFDQSxNQUFNQyxR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
|
package/lib/Error.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createSanitizedError = createSanitizedError;
|
|
7
|
+
exports.createSanitizedHttpError = createSanitizedHttpError;
|
|
8
|
+
var _logger = _interopRequireDefault(require("./logger"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
/**
|
|
11
|
+
* Creates a sanitized error that hides detailed information from clients
|
|
12
|
+
* while logging the detailed message server-side.
|
|
13
|
+
*
|
|
14
|
+
* @param {number} errorCode - The Parse.Error code (e.g., Parse.Error.OPERATION_FORBIDDEN)
|
|
15
|
+
* @param {string} detailedMessage - The detailed error message to log server-side
|
|
16
|
+
* @param {object} config - Parse Server config with enableSanitizedErrorResponse
|
|
17
|
+
* @param {string} [sanitizedMessage='Permission denied'] - The sanitized message to return to clients
|
|
18
|
+
* @returns {Parse.Error} A Parse.Error with sanitized message
|
|
19
|
+
*/
|
|
20
|
+
function createSanitizedError(errorCode, detailedMessage, config, sanitizedMessage = 'Permission denied') {
|
|
21
|
+
// On testing we need to add a prefix to the message to allow to find the correct call in the TestUtils.js file
|
|
22
|
+
if (process.env.TESTING) {
|
|
23
|
+
_logger.default.error('Sanitized error:', detailedMessage);
|
|
24
|
+
} else {
|
|
25
|
+
_logger.default.error(detailedMessage);
|
|
26
|
+
}
|
|
27
|
+
return new Parse.Error(errorCode, config?.enableSanitizedErrorResponse !== false ? sanitizedMessage : detailedMessage);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Creates a sanitized error from a regular Error object
|
|
32
|
+
* Used for non-Parse.Error errors (e.g., Express errors)
|
|
33
|
+
*
|
|
34
|
+
* @param {number} statusCode - HTTP status code (e.g., 403)
|
|
35
|
+
* @param {string} detailedMessage - The detailed error message to log server-side
|
|
36
|
+
* @returns {Error} An Error with sanitized message
|
|
37
|
+
*/
|
|
38
|
+
function createSanitizedHttpError(statusCode, detailedMessage, config) {
|
|
39
|
+
// On testing we need to add a prefix to the message to allow to find the correct call in the TestUtils.js file
|
|
40
|
+
if (process.env.TESTING) {
|
|
41
|
+
_logger.default.error('Sanitized error:', detailedMessage);
|
|
42
|
+
} else {
|
|
43
|
+
_logger.default.error(detailedMessage);
|
|
44
|
+
}
|
|
45
|
+
const error = new Error();
|
|
46
|
+
error.status = statusCode;
|
|
47
|
+
error.message = config?.enableSanitizedErrorResponse !== false ? 'Permission denied' : detailedMessage;
|
|
48
|
+
return error;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjcmVhdGVTYW5pdGl6ZWRFcnJvciIsImVycm9yQ29kZSIsImRldGFpbGVkTWVzc2FnZSIsImNvbmZpZyIsInNhbml0aXplZE1lc3NhZ2UiLCJwcm9jZXNzIiwiZW52IiwiVEVTVElORyIsImRlZmF1bHRMb2dnZXIiLCJlcnJvciIsIlBhcnNlIiwiRXJyb3IiLCJlbmFibGVTYW5pdGl6ZWRFcnJvclJlc3BvbnNlIiwiY3JlYXRlU2FuaXRpemVkSHR0cEVycm9yIiwic3RhdHVzQ29kZSIsInN0YXR1cyIsIm1lc3NhZ2UiXSwic291cmNlcyI6WyIuLi9zcmMvRXJyb3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmF1bHRMb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzYW5pdGl6ZWQgZXJyb3IgdGhhdCBoaWRlcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBmcm9tIGNsaWVudHNcbiAqIHdoaWxlIGxvZ2dpbmcgdGhlIGRldGFpbGVkIG1lc3NhZ2Ugc2VydmVyLXNpZGUuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGVycm9yQ29kZSAtIFRoZSBQYXJzZS5FcnJvciBjb2RlIChlLmcuLCBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOKVxuICogQHBhcmFtIHtzdHJpbmd9IGRldGFpbGVkTWVzc2FnZSAtIFRoZSBkZXRhaWxlZCBlcnJvciBtZXNzYWdlIHRvIGxvZyBzZXJ2ZXItc2lkZVxuICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZyAtIFBhcnNlIFNlcnZlciBjb25maWcgd2l0aCBlbmFibGVTYW5pdGl6ZWRFcnJvclJlc3BvbnNlXG4gKiBAcGFyYW0ge3N0cmluZ30gW3Nhbml0aXplZE1lc3NhZ2U9J1Blcm1pc3Npb24gZGVuaWVkJ10gLSBUaGUgc2FuaXRpemVkIG1lc3NhZ2UgdG8gcmV0dXJuIHRvIGNsaWVudHNcbiAqIEByZXR1cm5zIHtQYXJzZS5FcnJvcn0gQSBQYXJzZS5FcnJvciB3aXRoIHNhbml0aXplZCBtZXNzYWdlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVNhbml0aXplZEVycm9yKGVycm9yQ29kZSwgZGV0YWlsZWRNZXNzYWdlLCBjb25maWcsIHNhbml0aXplZE1lc3NhZ2UgPSAnUGVybWlzc2lvbiBkZW5pZWQnKSB7XG4gIC8vIE9uIHRlc3Rpbmcgd2UgbmVlZCB0byBhZGQgYSBwcmVmaXggdG8gdGhlIG1lc3NhZ2UgdG8gYWxsb3cgdG8gZmluZCB0aGUgY29ycmVjdCBjYWxsIGluIHRoZSBUZXN0VXRpbHMuanMgZmlsZVxuICBpZiAocHJvY2Vzcy5lbnYuVEVTVElORykge1xuICAgIGRlZmF1bHRMb2dnZXIuZXJyb3IoJ1Nhbml0aXplZCBlcnJvcjonLCBkZXRhaWxlZE1lc3NhZ2UpO1xuICB9IGVsc2Uge1xuICAgIGRlZmF1bHRMb2dnZXIuZXJyb3IoZGV0YWlsZWRNZXNzYWdlKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUGFyc2UuRXJyb3IoZXJyb3JDb2RlLCBjb25maWc/LmVuYWJsZVNhbml0aXplZEVycm9yUmVzcG9uc2UgIT09IGZhbHNlID8gc2FuaXRpemVkTWVzc2FnZSA6IGRldGFpbGVkTWVzc2FnZSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNhbml0aXplZCBlcnJvciBmcm9tIGEgcmVndWxhciBFcnJvciBvYmplY3RcbiAqIFVzZWQgZm9yIG5vbi1QYXJzZS5FcnJvciBlcnJvcnMgKGUuZy4sIEV4cHJlc3MgZXJyb3JzKVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGF0dXNDb2RlIC0gSFRUUCBzdGF0dXMgY29kZSAoZS5nLiwgNDAzKVxuICogQHBhcmFtIHtzdHJpbmd9IGRldGFpbGVkTWVzc2FnZSAtIFRoZSBkZXRhaWxlZCBlcnJvciBtZXNzYWdlIHRvIGxvZyBzZXJ2ZXItc2lkZVxuICogQHJldHVybnMge0Vycm9yfSBBbiBFcnJvciB3aXRoIHNhbml0aXplZCBtZXNzYWdlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVNhbml0aXplZEh0dHBFcnJvcihzdGF0dXNDb2RlLCBkZXRhaWxlZE1lc3NhZ2UsIGNvbmZpZykge1xuICAvLyBPbiB0ZXN0aW5nIHdlIG5lZWQgdG8gYWRkIGEgcHJlZml4IHRvIHRoZSBtZXNzYWdlIHRvIGFsbG93IHRvIGZpbmQgdGhlIGNvcnJlY3QgY2FsbCBpbiB0aGUgVGVzdFV0aWxzLmpzIGZpbGVcbiAgaWYgKHByb2Nlc3MuZW52LlRFU1RJTkcpIHtcbiAgICBkZWZhdWx0TG9nZ2VyLmVycm9yKCdTYW5pdGl6ZWQgZXJyb3I6JywgZGV0YWlsZWRNZXNzYWdlKTtcbiAgfSBlbHNlIHtcbiAgICBkZWZhdWx0TG9nZ2VyLmVycm9yKGRldGFpbGVkTWVzc2FnZSk7XG4gIH1cblxuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigpO1xuICBlcnJvci5zdGF0dXMgPSBzdGF0dXNDb2RlO1xuICBlcnJvci5tZXNzYWdlID0gY29uZmlnPy5lbmFibGVTYW5pdGl6ZWRFcnJvclJlc3BvbnNlICE9PSBmYWxzZSA/ICdQZXJtaXNzaW9uIGRlbmllZCcgOiBkZXRhaWxlZE1lc3NhZ2U7XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IHsgY3JlYXRlU2FuaXRpemVkRXJyb3IsIGNyZWF0ZVNhbml0aXplZEh0dHBFcnJvciB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQXFDLFNBQUFELHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0csb0JBQW9CQSxDQUFDQyxTQUFTLEVBQUVDLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxnQkFBZ0IsR0FBRyxtQkFBbUIsRUFBRTtFQUN4RztFQUNBLElBQUlDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxPQUFPLEVBQUU7SUFDdkJDLGVBQWEsQ0FBQ0MsS0FBSyxDQUFDLGtCQUFrQixFQUFFUCxlQUFlLENBQUM7RUFDMUQsQ0FBQyxNQUFNO0lBQ0xNLGVBQWEsQ0FBQ0MsS0FBSyxDQUFDUCxlQUFlLENBQUM7RUFDdEM7RUFFQSxPQUFPLElBQUlRLEtBQUssQ0FBQ0MsS0FBSyxDQUFDVixTQUFTLEVBQUVFLE1BQU0sRUFBRVMsNEJBQTRCLEtBQUssS0FBSyxHQUFHUixnQkFBZ0IsR0FBR0YsZUFBZSxDQUFDO0FBQ3hIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTVyx3QkFBd0JBLENBQUNDLFVBQVUsRUFBRVosZUFBZSxFQUFFQyxNQUFNLEVBQUU7RUFDckU7RUFDQSxJQUFJRSxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsT0FBTyxFQUFFO0lBQ3ZCQyxlQUFhLENBQUNDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRVAsZUFBZSxDQUFDO0VBQzFELENBQUMsTUFBTTtJQUNMTSxlQUFhLENBQUNDLEtBQUssQ0FBQ1AsZUFBZSxDQUFDO0VBQ3RDO0VBRUEsTUFBTU8sS0FBSyxHQUFHLElBQUlFLEtBQUssQ0FBQyxDQUFDO0VBQ3pCRixLQUFLLENBQUNNLE1BQU0sR0FBR0QsVUFBVTtFQUN6QkwsS0FBSyxDQUFDTyxPQUFPLEdBQUdiLE1BQU0sRUFBRVMsNEJBQTRCLEtBQUssS0FBSyxHQUFHLG1CQUFtQixHQUFHVixlQUFlO0VBQ3RHLE9BQU9PLEtBQUs7QUFDZCIsImlnbm9yZUxpc3QiOltdfQ==
|