parse-server 2.8.4 → 8.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +167 -25
- package/NOTICE +10 -0
- package/README.md +929 -278
- package/lib/AccountLockout.js +47 -30
- package/lib/Adapters/AdapterLoader.js +21 -6
- package/lib/Adapters/Analytics/AnalyticsAdapter.js +15 -12
- package/lib/Adapters/Auth/AuthAdapter.js +116 -13
- package/lib/Adapters/Auth/BaseCodeAuthAdapter.js +99 -0
- package/lib/Adapters/Auth/OAuth1Client.js +27 -46
- package/lib/Adapters/Auth/apple.js +123 -0
- package/lib/Adapters/Auth/facebook.js +162 -35
- package/lib/Adapters/Auth/gcenter.js +217 -0
- package/lib/Adapters/Auth/github.js +118 -48
- package/lib/Adapters/Auth/google.js +160 -51
- package/lib/Adapters/Auth/gpgames.js +125 -0
- package/lib/Adapters/Auth/httpsRequest.js +6 -7
- package/lib/Adapters/Auth/index.js +170 -62
- package/lib/Adapters/Auth/instagram.js +114 -40
- package/lib/Adapters/Auth/janraincapture.js +52 -23
- package/lib/Adapters/Auth/janrainengage.js +19 -36
- package/lib/Adapters/Auth/keycloak.js +148 -0
- package/lib/Adapters/Auth/ldap.js +167 -0
- package/lib/Adapters/Auth/line.js +125 -0
- package/lib/Adapters/Auth/linkedin.js +111 -55
- package/lib/Adapters/Auth/meetup.js +24 -34
- package/lib/Adapters/Auth/mfa.js +324 -0
- package/lib/Adapters/Auth/microsoft.js +111 -0
- package/lib/Adapters/Auth/oauth2.js +97 -162
- package/lib/Adapters/Auth/phantauth.js +53 -0
- package/lib/Adapters/Auth/qq.js +108 -49
- package/lib/Adapters/Auth/spotify.js +107 -55
- package/lib/Adapters/Auth/twitter.js +188 -48
- package/lib/Adapters/Auth/utils.js +28 -0
- package/lib/Adapters/Auth/vkontakte.js +26 -39
- package/lib/Adapters/Auth/wechat.js +106 -44
- package/lib/Adapters/Auth/weibo.js +132 -58
- package/lib/Adapters/Cache/CacheAdapter.js +13 -8
- package/lib/Adapters/Cache/InMemoryCache.js +3 -13
- package/lib/Adapters/Cache/InMemoryCacheAdapter.js +5 -13
- package/lib/Adapters/Cache/LRUCache.js +13 -27
- package/lib/Adapters/Cache/NullCacheAdapter.js +3 -8
- package/lib/Adapters/Cache/RedisCacheAdapter.js +85 -76
- package/lib/Adapters/Cache/SchemaCache.js +25 -0
- package/lib/Adapters/Email/MailAdapter.js +10 -8
- package/lib/Adapters/Files/FilesAdapter.js +83 -25
- package/lib/Adapters/Files/GridFSBucketAdapter.js +231 -0
- package/lib/Adapters/Files/GridStoreAdapter.js +4 -91
- package/lib/Adapters/Logger/LoggerAdapter.js +18 -14
- package/lib/Adapters/Logger/WinstonLogger.js +69 -88
- package/lib/Adapters/Logger/WinstonLoggerAdapter.js +7 -16
- package/lib/Adapters/MessageQueue/EventEmitterMQ.js +8 -26
- package/lib/Adapters/PubSub/EventEmitterPubSub.js +12 -25
- package/lib/Adapters/PubSub/PubSubAdapter.js +34 -0
- package/lib/Adapters/PubSub/RedisPubSub.js +42 -19
- package/lib/Adapters/Push/PushAdapter.js +14 -7
- package/lib/Adapters/Storage/Mongo/MongoCollection.js +137 -45
- package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +158 -63
- package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +320 -168
- package/lib/Adapters/Storage/Mongo/MongoTransform.js +279 -306
- package/lib/Adapters/Storage/Postgres/PostgresClient.js +14 -10
- package/lib/Adapters/Storage/Postgres/PostgresConfigParser.js +47 -21
- package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +854 -468
- package/lib/Adapters/Storage/Postgres/sql/index.js +4 -6
- package/lib/Adapters/Storage/StorageAdapter.js +1 -1
- package/lib/Adapters/WebSocketServer/WSAdapter.js +35 -0
- package/lib/Adapters/WebSocketServer/WSSAdapter.js +66 -0
- package/lib/Auth.js +488 -125
- package/lib/ClientSDK.js +2 -6
- package/lib/Config.js +525 -94
- package/lib/Controllers/AdaptableController.js +5 -25
- package/lib/Controllers/AnalyticsController.js +22 -23
- package/lib/Controllers/CacheController.js +10 -31
- package/lib/Controllers/DatabaseController.js +767 -313
- package/lib/Controllers/FilesController.js +49 -54
- package/lib/Controllers/HooksController.js +80 -84
- package/lib/Controllers/LiveQueryController.js +35 -22
- package/lib/Controllers/LoggerController.js +22 -58
- package/lib/Controllers/ParseGraphQLController.js +293 -0
- package/lib/Controllers/PushController.js +58 -49
- package/lib/Controllers/SchemaController.js +916 -422
- package/lib/Controllers/UserController.js +265 -180
- package/lib/Controllers/index.js +90 -125
- package/lib/Controllers/types.js +1 -1
- package/lib/Deprecator/Deprecations.js +30 -0
- package/lib/Deprecator/Deprecator.js +127 -0
- package/lib/Error.js +48 -0
- package/lib/GraphQL/ParseGraphQLSchema.js +375 -0
- package/lib/GraphQL/ParseGraphQLServer.js +214 -0
- package/lib/GraphQL/helpers/objectsMutations.js +30 -0
- package/lib/GraphQL/helpers/objectsQueries.js +246 -0
- package/lib/GraphQL/loaders/configMutations.js +87 -0
- package/lib/GraphQL/loaders/configQueries.js +79 -0
- package/lib/GraphQL/loaders/defaultGraphQLMutations.js +21 -0
- package/lib/GraphQL/loaders/defaultGraphQLQueries.js +23 -0
- package/lib/GraphQL/loaders/defaultGraphQLTypes.js +1098 -0
- package/lib/GraphQL/loaders/defaultRelaySchema.js +53 -0
- package/lib/GraphQL/loaders/filesMutations.js +107 -0
- package/lib/GraphQL/loaders/functionsMutations.js +78 -0
- package/lib/GraphQL/loaders/parseClassMutations.js +268 -0
- package/lib/GraphQL/loaders/parseClassQueries.js +127 -0
- package/lib/GraphQL/loaders/parseClassTypes.js +493 -0
- package/lib/GraphQL/loaders/schemaDirectives.js +62 -0
- package/lib/GraphQL/loaders/schemaMutations.js +162 -0
- package/lib/GraphQL/loaders/schemaQueries.js +81 -0
- package/lib/GraphQL/loaders/schemaTypes.js +341 -0
- package/lib/GraphQL/loaders/usersMutations.js +433 -0
- package/lib/GraphQL/loaders/usersQueries.js +90 -0
- package/lib/GraphQL/parseGraphQLUtils.js +63 -0
- package/lib/GraphQL/transformers/className.js +14 -0
- package/lib/GraphQL/transformers/constraintType.js +53 -0
- package/lib/GraphQL/transformers/inputType.js +51 -0
- package/lib/GraphQL/transformers/mutation.js +274 -0
- package/lib/GraphQL/transformers/outputType.js +51 -0
- package/lib/GraphQL/transformers/query.js +237 -0
- package/lib/GraphQL/transformers/schemaFields.js +99 -0
- package/lib/KeyPromiseQueue.js +48 -0
- package/lib/LiveQuery/Client.js +25 -33
- package/lib/LiveQuery/Id.js +2 -5
- package/lib/LiveQuery/ParseCloudCodePublisher.js +26 -23
- package/lib/LiveQuery/ParseLiveQueryServer.js +560 -285
- package/lib/LiveQuery/ParsePubSub.js +7 -16
- package/lib/LiveQuery/ParseWebSocketServer.js +42 -39
- package/lib/LiveQuery/QueryTools.js +76 -15
- package/lib/LiveQuery/RequestSchema.js +111 -97
- package/lib/LiveQuery/SessionTokenCache.js +23 -36
- package/lib/LiveQuery/Subscription.js +8 -17
- package/lib/LiveQuery/equalObjects.js +2 -3
- package/lib/Options/Definitions.js +1355 -382
- package/lib/Options/docs.js +301 -62
- package/lib/Options/index.js +11 -1
- package/lib/Options/parsers.js +14 -10
- package/lib/Page.js +44 -0
- package/lib/ParseMessageQueue.js +6 -13
- package/lib/ParseServer.js +474 -235
- package/lib/ParseServerRESTController.js +102 -40
- package/lib/PromiseRouter.js +39 -50
- package/lib/Push/PushQueue.js +24 -30
- package/lib/Push/PushWorker.js +32 -56
- package/lib/Push/utils.js +22 -35
- package/lib/RestQuery.js +361 -139
- package/lib/RestWrite.js +713 -344
- package/lib/Routers/AggregateRouter.js +97 -71
- package/lib/Routers/AnalyticsRouter.js +8 -14
- package/lib/Routers/AudiencesRouter.js +16 -35
- package/lib/Routers/ClassesRouter.js +86 -72
- package/lib/Routers/CloudCodeRouter.js +28 -37
- package/lib/Routers/FeaturesRouter.js +22 -25
- package/lib/Routers/FilesRouter.js +266 -171
- package/lib/Routers/FunctionsRouter.js +87 -103
- package/lib/Routers/GlobalConfigRouter.js +94 -33
- package/lib/Routers/GraphQLRouter.js +41 -0
- package/lib/Routers/HooksRouter.js +43 -47
- package/lib/Routers/IAPValidationRouter.js +57 -70
- package/lib/Routers/InstallationsRouter.js +17 -25
- package/lib/Routers/LogsRouter.js +10 -25
- package/lib/Routers/PagesRouter.js +647 -0
- package/lib/Routers/PublicAPIRouter.js +104 -112
- package/lib/Routers/PurgeRouter.js +19 -29
- package/lib/Routers/PushRouter.js +14 -28
- package/lib/Routers/RolesRouter.js +7 -14
- package/lib/Routers/SchemasRouter.js +63 -42
- package/lib/Routers/SecurityRouter.js +34 -0
- package/lib/Routers/SessionsRouter.js +25 -38
- package/lib/Routers/UsersRouter.js +463 -190
- package/lib/SchemaMigrations/DefinedSchemas.js +379 -0
- package/lib/SchemaMigrations/Migrations.js +30 -0
- package/lib/Security/Check.js +109 -0
- package/lib/Security/CheckGroup.js +44 -0
- package/lib/Security/CheckGroups/CheckGroupDatabase.js +44 -0
- package/lib/Security/CheckGroups/CheckGroupServerConfig.js +96 -0
- package/lib/Security/CheckGroups/CheckGroups.js +21 -0
- package/lib/Security/CheckRunner.js +213 -0
- package/lib/SharedRest.js +29 -0
- package/lib/StatusHandler.js +96 -93
- package/lib/TestUtils.js +70 -14
- package/lib/Utils.js +468 -0
- package/lib/batch.js +74 -40
- package/lib/cache.js +8 -8
- package/lib/cli/definitions/parse-live-query-server.js +4 -3
- package/lib/cli/definitions/parse-server.js +4 -3
- package/lib/cli/parse-live-query-server.js +9 -17
- package/lib/cli/parse-server.js +49 -47
- package/lib/cli/utils/commander.js +20 -29
- package/lib/cli/utils/runner.js +31 -32
- package/lib/cloud-code/Parse.Cloud.js +711 -36
- package/lib/cloud-code/Parse.Server.js +21 -0
- package/lib/cryptoUtils.js +6 -11
- package/lib/defaults.js +21 -15
- package/lib/deprecated.js +1 -1
- package/lib/index.js +78 -67
- package/lib/logger.js +12 -20
- package/lib/middlewares.js +484 -160
- package/lib/password.js +10 -6
- package/lib/request.js +175 -0
- package/lib/requiredParameter.js +4 -3
- package/lib/rest.js +157 -82
- package/lib/triggers.js +627 -185
- package/lib/vendor/README.md +3 -3
- package/lib/vendor/mongodbUrl.js +224 -137
- package/package.json +135 -57
- package/postinstall.js +38 -50
- package/public_html/invalid_verification_link.html +3 -3
- package/types/@types/@parse/fs-files-adapter/index.d.ts +5 -0
- package/types/@types/deepcopy/index.d.ts +5 -0
- package/types/LiveQuery/ParseLiveQueryServer.d.ts +40 -0
- package/types/Options/index.d.ts +301 -0
- package/types/ParseServer.d.ts +65 -0
- package/types/eslint.config.mjs +30 -0
- package/types/index.d.ts +21 -0
- package/types/logger.d.ts +2 -0
- package/types/tests.ts +44 -0
- package/types/tsconfig.json +24 -0
- package/CHANGELOG.md +0 -1246
- package/PATENTS +0 -37
- package/bin/dev +0 -37
- package/lib/.DS_Store +0 -0
- package/lib/Adapters/Auth/common.js +0 -2
- package/lib/Adapters/Auth/facebookaccountkit.js +0 -69
- package/lib/Controllers/SchemaCache.js +0 -97
- package/lib/LiveQuery/.DS_Store +0 -0
- package/lib/cli/utils/parsers.js +0 -77
- package/lib/cloud-code/.DS_Store +0 -0
- package/lib/cloud-code/HTTPResponse.js +0 -57
- package/lib/cloud-code/Untitled-1 +0 -123
- package/lib/cloud-code/httpRequest.js +0 -102
- package/lib/cloud-code/team.html +0 -123
- package/lib/graphql/ParseClass.js +0 -234
- package/lib/graphql/Schema.js +0 -197
- package/lib/graphql/index.js +0 -1
- package/lib/graphql/types/ACL.js +0 -35
- package/lib/graphql/types/Date.js +0 -25
- package/lib/graphql/types/File.js +0 -24
- package/lib/graphql/types/GeoPoint.js +0 -35
- package/lib/graphql/types/JSONObject.js +0 -30
- package/lib/graphql/types/NumberInput.js +0 -43
- package/lib/graphql/types/NumberQuery.js +0 -42
- package/lib/graphql/types/Pointer.js +0 -35
- package/lib/graphql/types/QueryConstraint.js +0 -61
- package/lib/graphql/types/StringQuery.js +0 -39
- package/lib/graphql/types/index.js +0 -110
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
// This file is manually updated to match src/Options/index.js until typed
|
|
2
|
+
import { AnalyticsAdapter } from '../Adapters/Analytics/AnalyticsAdapter';
|
|
3
|
+
import { CacheAdapter } from '../Adapters/Cache/CacheAdapter';
|
|
4
|
+
import { MailAdapter } from '../Adapters/Email/MailAdapter';
|
|
5
|
+
import { FilesAdapter } from '../Adapters/Files/FilesAdapter';
|
|
6
|
+
import { LoggerAdapter } from '../Adapters/Logger/LoggerAdapter';
|
|
7
|
+
import { PubSubAdapter } from '../Adapters/PubSub/PubSubAdapter';
|
|
8
|
+
import { StorageAdapter } from '../Adapters/Storage/StorageAdapter';
|
|
9
|
+
import { WSSAdapter } from '../Adapters/WebSocketServer/WSSAdapter';
|
|
10
|
+
import { CheckGroup } from '../Security/CheckGroup';
|
|
11
|
+
export interface SchemaOptions {
|
|
12
|
+
definitions: any;
|
|
13
|
+
strict?: boolean;
|
|
14
|
+
deleteExtraFields?: boolean;
|
|
15
|
+
recreateModifiedFields?: boolean;
|
|
16
|
+
lockSchemas?: boolean;
|
|
17
|
+
beforeMigration?: () => void | Promise<void>;
|
|
18
|
+
afterMigration?: () => void | Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
type Adapter<T> = string | T;
|
|
21
|
+
type NumberOrBoolean = number | boolean;
|
|
22
|
+
type NumberOrString = number | string;
|
|
23
|
+
type ProtectedFields = any;
|
|
24
|
+
type StringOrStringArray = string | string[];
|
|
25
|
+
type RequestKeywordDenylist = {
|
|
26
|
+
key: string;
|
|
27
|
+
value: any;
|
|
28
|
+
};
|
|
29
|
+
export interface ParseServerOptions {
|
|
30
|
+
appId: string;
|
|
31
|
+
masterKey: (() => void) | string;
|
|
32
|
+
masterKeyTtl?: number;
|
|
33
|
+
maintenanceKey: string;
|
|
34
|
+
serverURL: string;
|
|
35
|
+
masterKeyIps?: (string[]);
|
|
36
|
+
maintenanceKeyIps?: (string[]);
|
|
37
|
+
appName?: string;
|
|
38
|
+
allowHeaders?: (string[]);
|
|
39
|
+
allowOrigin?: StringOrStringArray;
|
|
40
|
+
analyticsAdapter?: Adapter<AnalyticsAdapter>;
|
|
41
|
+
filesAdapter?: Adapter<FilesAdapter>;
|
|
42
|
+
push?: any;
|
|
43
|
+
scheduledPush?: boolean;
|
|
44
|
+
loggerAdapter?: Adapter<LoggerAdapter>;
|
|
45
|
+
jsonLogs?: boolean;
|
|
46
|
+
logsFolder?: string;
|
|
47
|
+
verbose?: boolean;
|
|
48
|
+
logLevel?: string;
|
|
49
|
+
logLevels?: LogLevels;
|
|
50
|
+
maxLogFiles?: NumberOrString;
|
|
51
|
+
silent?: boolean;
|
|
52
|
+
databaseURI: string;
|
|
53
|
+
databaseOptions?: DatabaseOptions;
|
|
54
|
+
databaseAdapter?: Adapter<StorageAdapter>;
|
|
55
|
+
enableCollationCaseComparison?: boolean;
|
|
56
|
+
convertEmailToLowercase?: boolean;
|
|
57
|
+
convertUsernameToLowercase?: boolean;
|
|
58
|
+
cloud?: string;
|
|
59
|
+
collectionPrefix?: string;
|
|
60
|
+
clientKey?: string;
|
|
61
|
+
javascriptKey?: string;
|
|
62
|
+
dotNetKey?: string;
|
|
63
|
+
encryptionKey?: string;
|
|
64
|
+
restAPIKey?: string;
|
|
65
|
+
readOnlyMasterKey?: string;
|
|
66
|
+
webhookKey?: string;
|
|
67
|
+
fileKey?: string;
|
|
68
|
+
preserveFileName?: boolean;
|
|
69
|
+
userSensitiveFields?: (string[]);
|
|
70
|
+
protectedFields?: ProtectedFields;
|
|
71
|
+
enableAnonymousUsers?: boolean;
|
|
72
|
+
allowClientClassCreation?: boolean;
|
|
73
|
+
allowCustomObjectId?: boolean;
|
|
74
|
+
auth?: Record<string, AuthAdapter>;
|
|
75
|
+
enableInsecureAuthAdapters?: boolean;
|
|
76
|
+
maxUploadSize?: string;
|
|
77
|
+
verifyUserEmails?: (boolean | void);
|
|
78
|
+
preventLoginWithUnverifiedEmail?: boolean;
|
|
79
|
+
preventSignupWithUnverifiedEmail?: boolean;
|
|
80
|
+
emailVerifyTokenValidityDuration?: number;
|
|
81
|
+
emailVerifyTokenReuseIfValid?: boolean;
|
|
82
|
+
sendUserEmailVerification?: (boolean | void);
|
|
83
|
+
accountLockout?: AccountLockoutOptions;
|
|
84
|
+
passwordPolicy?: PasswordPolicyOptions;
|
|
85
|
+
cacheAdapter?: Adapter<CacheAdapter>;
|
|
86
|
+
emailAdapter?: Adapter<MailAdapter>;
|
|
87
|
+
encodeParseObjectInCloudFunction?: boolean;
|
|
88
|
+
publicServerURL?: string | (() => string) | (() => Promise<string>);
|
|
89
|
+
pages?: PagesOptions;
|
|
90
|
+
customPages?: CustomPagesOptions;
|
|
91
|
+
liveQuery?: LiveQueryOptions;
|
|
92
|
+
sessionLength?: number;
|
|
93
|
+
extendSessionOnUse?: boolean;
|
|
94
|
+
defaultLimit?: number;
|
|
95
|
+
maxLimit?: number;
|
|
96
|
+
expireInactiveSessions?: boolean;
|
|
97
|
+
revokeSessionOnPasswordReset?: boolean;
|
|
98
|
+
cacheTTL?: number;
|
|
99
|
+
cacheMaxSize?: number;
|
|
100
|
+
directAccess?: boolean;
|
|
101
|
+
enableExpressErrorHandler?: boolean;
|
|
102
|
+
objectIdSize?: number;
|
|
103
|
+
port?: number;
|
|
104
|
+
host?: string;
|
|
105
|
+
mountPath?: string;
|
|
106
|
+
cluster?: NumberOrBoolean;
|
|
107
|
+
middleware?: ((() => void) | string);
|
|
108
|
+
trustProxy?: any;
|
|
109
|
+
startLiveQueryServer?: boolean;
|
|
110
|
+
liveQueryServerOptions?: LiveQueryServerOptions;
|
|
111
|
+
idempotencyOptions?: IdempotencyOptions;
|
|
112
|
+
fileUpload?: FileUploadOptions;
|
|
113
|
+
graphQLSchema?: string;
|
|
114
|
+
mountGraphQL?: boolean;
|
|
115
|
+
graphQLPath?: string;
|
|
116
|
+
mountPlayground?: boolean;
|
|
117
|
+
playgroundPath?: string;
|
|
118
|
+
schema?: SchemaOptions;
|
|
119
|
+
serverCloseComplete?: () => void;
|
|
120
|
+
security?: SecurityOptions;
|
|
121
|
+
enforcePrivateUsers?: boolean;
|
|
122
|
+
allowExpiredAuthDataToken?: boolean;
|
|
123
|
+
requestKeywordDenylist?: (RequestKeywordDenylist[]);
|
|
124
|
+
rateLimit?: (RateLimitOptions[]);
|
|
125
|
+
verifyServerUrl?: boolean;
|
|
126
|
+
}
|
|
127
|
+
export interface RateLimitOptions {
|
|
128
|
+
requestPath: string;
|
|
129
|
+
requestTimeWindow?: number;
|
|
130
|
+
requestCount?: number;
|
|
131
|
+
errorResponseMessage?: string;
|
|
132
|
+
requestMethods?: (string[]);
|
|
133
|
+
includeMasterKey?: boolean;
|
|
134
|
+
includeInternalRequests?: boolean;
|
|
135
|
+
redisUrl?: string;
|
|
136
|
+
zone?: string;
|
|
137
|
+
}
|
|
138
|
+
export interface SecurityOptions {
|
|
139
|
+
enableCheck?: boolean;
|
|
140
|
+
enableCheckLog?: boolean;
|
|
141
|
+
checkGroups?: (CheckGroup[]);
|
|
142
|
+
}
|
|
143
|
+
export interface PagesOptions {
|
|
144
|
+
enableRouter?: boolean;
|
|
145
|
+
enableLocalization?: boolean;
|
|
146
|
+
localizationJsonPath?: string;
|
|
147
|
+
localizationFallbackLocale?: string;
|
|
148
|
+
placeholders?: any;
|
|
149
|
+
forceRedirect?: boolean;
|
|
150
|
+
pagesPath?: string;
|
|
151
|
+
pagesEndpoint?: string;
|
|
152
|
+
customUrls?: PagesCustomUrlsOptions;
|
|
153
|
+
customRoutes?: (PagesRoute[]);
|
|
154
|
+
}
|
|
155
|
+
export interface PagesRoute {
|
|
156
|
+
path: string;
|
|
157
|
+
method: string;
|
|
158
|
+
handler: () => void;
|
|
159
|
+
}
|
|
160
|
+
export interface PagesCustomUrlsOptions {
|
|
161
|
+
passwordReset?: string;
|
|
162
|
+
passwordResetLinkInvalid?: string;
|
|
163
|
+
passwordResetSuccess?: string;
|
|
164
|
+
emailVerificationSuccess?: string;
|
|
165
|
+
emailVerificationSendFail?: string;
|
|
166
|
+
emailVerificationSendSuccess?: string;
|
|
167
|
+
emailVerificationLinkInvalid?: string;
|
|
168
|
+
emailVerificationLinkExpired?: string;
|
|
169
|
+
}
|
|
170
|
+
export interface CustomPagesOptions {
|
|
171
|
+
invalidLink?: string;
|
|
172
|
+
linkSendFail?: string;
|
|
173
|
+
choosePassword?: string;
|
|
174
|
+
linkSendSuccess?: string;
|
|
175
|
+
verifyEmailSuccess?: string;
|
|
176
|
+
passwordResetSuccess?: string;
|
|
177
|
+
invalidVerificationLink?: string;
|
|
178
|
+
expiredVerificationLink?: string;
|
|
179
|
+
invalidPasswordResetLink?: string;
|
|
180
|
+
parseFrameURL?: string;
|
|
181
|
+
}
|
|
182
|
+
export interface LiveQueryOptions {
|
|
183
|
+
classNames?: (string[]);
|
|
184
|
+
redisOptions?: any;
|
|
185
|
+
redisURL?: string;
|
|
186
|
+
pubSubAdapter?: Adapter<PubSubAdapter>;
|
|
187
|
+
wssAdapter?: Adapter<WSSAdapter>;
|
|
188
|
+
}
|
|
189
|
+
export interface LiveQueryServerOptions {
|
|
190
|
+
appId?: string;
|
|
191
|
+
masterKey?: string;
|
|
192
|
+
serverURL?: string;
|
|
193
|
+
keyPairs?: any;
|
|
194
|
+
websocketTimeout?: number;
|
|
195
|
+
cacheTimeout?: number;
|
|
196
|
+
logLevel?: string;
|
|
197
|
+
port?: number;
|
|
198
|
+
redisOptions?: any;
|
|
199
|
+
redisURL?: string;
|
|
200
|
+
pubSubAdapter?: Adapter<PubSubAdapter>;
|
|
201
|
+
wssAdapter?: Adapter<WSSAdapter>;
|
|
202
|
+
}
|
|
203
|
+
export interface IdempotencyOptions {
|
|
204
|
+
paths?: (string[]);
|
|
205
|
+
ttl?: number;
|
|
206
|
+
}
|
|
207
|
+
export interface AccountLockoutOptions {
|
|
208
|
+
duration?: number;
|
|
209
|
+
threshold?: number;
|
|
210
|
+
unlockOnPasswordReset?: boolean;
|
|
211
|
+
}
|
|
212
|
+
export interface PasswordPolicyOptions {
|
|
213
|
+
validatorPattern?: string;
|
|
214
|
+
validatorCallback?: () => void;
|
|
215
|
+
validationError?: string;
|
|
216
|
+
doNotAllowUsername?: boolean;
|
|
217
|
+
maxPasswordAge?: number;
|
|
218
|
+
maxPasswordHistory?: number;
|
|
219
|
+
resetTokenValidityDuration?: number;
|
|
220
|
+
resetTokenReuseIfValid?: boolean;
|
|
221
|
+
resetPasswordSuccessOnInvalidEmail?: boolean;
|
|
222
|
+
}
|
|
223
|
+
export interface FileUploadOptions {
|
|
224
|
+
fileExtensions?: (string[]);
|
|
225
|
+
enableForAnonymousUser?: boolean;
|
|
226
|
+
enableForAuthenticatedUser?: boolean;
|
|
227
|
+
enableForPublic?: boolean;
|
|
228
|
+
}
|
|
229
|
+
export interface DatabaseOptions {
|
|
230
|
+
// Parse Server custom options
|
|
231
|
+
allowPublicExplain?: boolean;
|
|
232
|
+
createIndexRoleName?: boolean;
|
|
233
|
+
createIndexUserEmail?: boolean;
|
|
234
|
+
createIndexUserEmailCaseInsensitive?: boolean;
|
|
235
|
+
createIndexUserEmailVerifyToken?: boolean;
|
|
236
|
+
createIndexUserPasswordResetToken?: boolean;
|
|
237
|
+
createIndexUserUsername?: boolean;
|
|
238
|
+
createIndexUserUsernameCaseInsensitive?: boolean;
|
|
239
|
+
disableIndexFieldValidation?: boolean;
|
|
240
|
+
enableSchemaHooks?: boolean;
|
|
241
|
+
logClientEvents?: any[];
|
|
242
|
+
// maxTimeMS is a MongoDB option but Parse Server applies it per-operation, not as a global client option
|
|
243
|
+
maxTimeMS?: number;
|
|
244
|
+
schemaCacheTtl?: number;
|
|
245
|
+
|
|
246
|
+
// MongoDB driver options
|
|
247
|
+
appName?: string;
|
|
248
|
+
authMechanism?: string;
|
|
249
|
+
authMechanismProperties?: any;
|
|
250
|
+
authSource?: string;
|
|
251
|
+
autoSelectFamily?: boolean;
|
|
252
|
+
autoSelectFamilyAttemptTimeout?: number;
|
|
253
|
+
compressors?: string[] | string;
|
|
254
|
+
connectTimeoutMS?: number;
|
|
255
|
+
directConnection?: boolean;
|
|
256
|
+
forceServerObjectId?: boolean;
|
|
257
|
+
heartbeatFrequencyMS?: number;
|
|
258
|
+
loadBalanced?: boolean;
|
|
259
|
+
localThresholdMS?: number;
|
|
260
|
+
maxConnecting?: number;
|
|
261
|
+
maxIdleTimeMS?: number;
|
|
262
|
+
maxPoolSize?: number;
|
|
263
|
+
maxStalenessSeconds?: number;
|
|
264
|
+
minPoolSize?: number;
|
|
265
|
+
proxyHost?: string;
|
|
266
|
+
proxyPassword?: string;
|
|
267
|
+
proxyPort?: number;
|
|
268
|
+
proxyUsername?: string;
|
|
269
|
+
readConcernLevel?: string;
|
|
270
|
+
readPreference?: string;
|
|
271
|
+
readPreferenceTags?: any[];
|
|
272
|
+
replicaSet?: string;
|
|
273
|
+
retryReads?: boolean;
|
|
274
|
+
retryWrites?: boolean;
|
|
275
|
+
serverMonitoringMode?: string;
|
|
276
|
+
serverSelectionTimeoutMS?: number;
|
|
277
|
+
socketTimeoutMS?: number;
|
|
278
|
+
srvMaxHosts?: number;
|
|
279
|
+
srvServiceName?: string;
|
|
280
|
+
ssl?: boolean;
|
|
281
|
+
tls?: boolean;
|
|
282
|
+
tlsAllowInvalidCertificates?: boolean;
|
|
283
|
+
tlsAllowInvalidHostnames?: boolean;
|
|
284
|
+
tlsCAFile?: string;
|
|
285
|
+
tlsCertificateKeyFile?: string;
|
|
286
|
+
tlsCertificateKeyFilePassword?: string;
|
|
287
|
+
tlsInsecure?: boolean;
|
|
288
|
+
waitQueueTimeoutMS?: number;
|
|
289
|
+
zlibCompressionLevel?: number;
|
|
290
|
+
}
|
|
291
|
+
export interface AuthAdapter {
|
|
292
|
+
enabled?: boolean;
|
|
293
|
+
}
|
|
294
|
+
export interface LogLevels {
|
|
295
|
+
triggerAfter?: string;
|
|
296
|
+
triggerBeforeSuccess?: string;
|
|
297
|
+
triggerBeforeError?: string;
|
|
298
|
+
cloudFunctionSuccess?: string;
|
|
299
|
+
cloudFunctionError?: string;
|
|
300
|
+
}
|
|
301
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { ParseServerOptions, LiveQueryServerOptions } from './Options';
|
|
2
|
+
import { ParseLiveQueryServer } from './LiveQuery/ParseLiveQueryServer';
|
|
3
|
+
declare class ParseServer {
|
|
4
|
+
_app: any;
|
|
5
|
+
config: any;
|
|
6
|
+
server: any;
|
|
7
|
+
expressApp: any;
|
|
8
|
+
liveQueryServer: any;
|
|
9
|
+
/**
|
|
10
|
+
* @constructor
|
|
11
|
+
* @param {ParseServerOptions} options the parse server initialization options
|
|
12
|
+
*/
|
|
13
|
+
constructor(options: ParseServerOptions);
|
|
14
|
+
/**
|
|
15
|
+
* Starts Parse Server as an express app; this promise resolves when Parse Server is ready to accept requests.
|
|
16
|
+
*/
|
|
17
|
+
start(): Promise<this>;
|
|
18
|
+
get app(): any;
|
|
19
|
+
/**
|
|
20
|
+
* Stops the parse server, cancels any ongoing requests and closes all connections.
|
|
21
|
+
*
|
|
22
|
+
* Currently, express doesn't shut down immediately after receiving SIGINT/SIGTERM
|
|
23
|
+
* if it has client connections that haven't timed out.
|
|
24
|
+
* (This is a known issue with node - https://github.com/nodejs/node/issues/2642)
|
|
25
|
+
*
|
|
26
|
+
* @returns {Promise<void>} a promise that resolves when the server is stopped
|
|
27
|
+
*/
|
|
28
|
+
handleShutdown(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* @static
|
|
31
|
+
* Allow developers to customize each request with inversion of control/dependency injection
|
|
32
|
+
*/
|
|
33
|
+
static applyRequestContextMiddleware(api: any, options: any): void;
|
|
34
|
+
/**
|
|
35
|
+
* @static
|
|
36
|
+
* Create an express app for the parse server
|
|
37
|
+
* @param {Object} options let you specify the maxUploadSize when creating the express app */
|
|
38
|
+
static app(options: any): any;
|
|
39
|
+
static promiseRouter({ appId }: {
|
|
40
|
+
appId: any;
|
|
41
|
+
}): any;
|
|
42
|
+
/**
|
|
43
|
+
* starts the parse server's express app
|
|
44
|
+
* @param {ParseServerOptions} options to use to start the server
|
|
45
|
+
* @returns {ParseServer} the parse server instance
|
|
46
|
+
*/
|
|
47
|
+
startApp(options: ParseServerOptions): Promise<this>;
|
|
48
|
+
/**
|
|
49
|
+
* Creates a new ParseServer and starts it.
|
|
50
|
+
* @param {ParseServerOptions} options used to start the server
|
|
51
|
+
* @returns {ParseServer} the parse server instance
|
|
52
|
+
*/
|
|
53
|
+
static startApp(options: ParseServerOptions): Promise<ParseServer>;
|
|
54
|
+
/**
|
|
55
|
+
* Helper method to create a liveQuery server
|
|
56
|
+
* @static
|
|
57
|
+
* @param {Server} httpServer an optional http server to pass
|
|
58
|
+
* @param {LiveQueryServerOptions} config options for the liveQueryServer
|
|
59
|
+
* @param {ParseServerOptions} options options for the ParseServer
|
|
60
|
+
* @returns {Promise<ParseLiveQueryServer>} the live query server instance
|
|
61
|
+
*/
|
|
62
|
+
static createLiveQueryServer(httpServer: any, config: LiveQueryServerOptions, options: ParseServerOptions): Promise<ParseLiveQueryServer>;
|
|
63
|
+
static verifyServerUrl(): any;
|
|
64
|
+
}
|
|
65
|
+
export default ParseServer;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import eslint from '@eslint/js';
|
|
2
|
+
import tseslint from 'typescript-eslint';
|
|
3
|
+
import expectType from 'eslint-plugin-expect-type/configs/recommended';
|
|
4
|
+
|
|
5
|
+
export default tseslint.config({
|
|
6
|
+
files: ['**/*.js', '**/*.ts'],
|
|
7
|
+
extends: [
|
|
8
|
+
expectType,
|
|
9
|
+
eslint.configs.recommended,
|
|
10
|
+
...tseslint.configs.recommended,
|
|
11
|
+
...tseslint.configs.recommendedTypeChecked,
|
|
12
|
+
],
|
|
13
|
+
plugins: {
|
|
14
|
+
'@typescript-eslint': tseslint.plugin,
|
|
15
|
+
},
|
|
16
|
+
rules: {
|
|
17
|
+
'@typescript-eslint/no-unused-vars': 'off',
|
|
18
|
+
'@typescript-eslint/no-unused-expressions': 'off',
|
|
19
|
+
'@typescript-eslint/no-unsafe-call': 'off',
|
|
20
|
+
"@typescript-eslint/no-explicit-any": "off",
|
|
21
|
+
"@typescript-eslint/no-unsafe-return": "off",
|
|
22
|
+
},
|
|
23
|
+
languageOptions: {
|
|
24
|
+
parser: tseslint.parser,
|
|
25
|
+
parserOptions: {
|
|
26
|
+
projectService: true,
|
|
27
|
+
tsconfigRootDir: import.meta.dirname,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
});
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import ParseServer from './ParseServer';
|
|
2
|
+
import FileSystemAdapter from '@parse/fs-files-adapter';
|
|
3
|
+
import InMemoryCacheAdapter from './Adapters/Cache/InMemoryCacheAdapter';
|
|
4
|
+
import NullCacheAdapter from './Adapters/Cache/NullCacheAdapter';
|
|
5
|
+
import RedisCacheAdapter from './Adapters/Cache/RedisCacheAdapter';
|
|
6
|
+
import LRUCacheAdapter from './Adapters/Cache/LRUCache.js';
|
|
7
|
+
import * as TestUtils from './TestUtils';
|
|
8
|
+
import * as SchemaMigrations from './SchemaMigrations/Migrations';
|
|
9
|
+
import AuthAdapter from './Adapters/Auth/AuthAdapter';
|
|
10
|
+
import { PushWorker } from './Push/PushWorker';
|
|
11
|
+
import { ParseServerOptions } from './Options';
|
|
12
|
+
import { ParseGraphQLServer } from './GraphQL/ParseGraphQLServer';
|
|
13
|
+
declare const _ParseServer: {
|
|
14
|
+
(options: ParseServerOptions): ParseServer;
|
|
15
|
+
createLiveQueryServer: typeof ParseServer.createLiveQueryServer;
|
|
16
|
+
startApp: typeof ParseServer.startApp;
|
|
17
|
+
};
|
|
18
|
+
declare const S3Adapter: any;
|
|
19
|
+
declare const GCSAdapter: any;
|
|
20
|
+
export default ParseServer;
|
|
21
|
+
export { S3Adapter, GCSAdapter, FileSystemAdapter, InMemoryCacheAdapter, NullCacheAdapter, RedisCacheAdapter, LRUCacheAdapter, TestUtils, PushWorker, ParseGraphQLServer, _ParseServer as ParseServer, SchemaMigrations, AuthAdapter, };
|
package/types/tests.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import ParseServer, { FileSystemAdapter } from 'parse-server';
|
|
2
|
+
|
|
3
|
+
async function server() {
|
|
4
|
+
// $ExpectType ParseServer
|
|
5
|
+
const parseServer = await ParseServer.startApp({});
|
|
6
|
+
|
|
7
|
+
// $ExpectType void
|
|
8
|
+
await parseServer.handleShutdown();
|
|
9
|
+
|
|
10
|
+
// $ExpectType any
|
|
11
|
+
parseServer.app;
|
|
12
|
+
|
|
13
|
+
// $ExpectType any
|
|
14
|
+
ParseServer.app({});
|
|
15
|
+
|
|
16
|
+
// $ExpectType any
|
|
17
|
+
ParseServer.promiseRouter({ appId: 'appId' });
|
|
18
|
+
|
|
19
|
+
// $ExpectType ParseLiveQueryServer
|
|
20
|
+
await ParseServer.createLiveQueryServer({}, {}, {});
|
|
21
|
+
|
|
22
|
+
// $ExpectType any
|
|
23
|
+
ParseServer.verifyServerUrl();
|
|
24
|
+
|
|
25
|
+
// $ExpectError
|
|
26
|
+
await ParseServer.startApp();
|
|
27
|
+
|
|
28
|
+
// $ExpectError
|
|
29
|
+
ParseServer.promiseRouter();
|
|
30
|
+
|
|
31
|
+
// $ExpectError
|
|
32
|
+
await ParseServer.createLiveQueryServer();
|
|
33
|
+
|
|
34
|
+
// $ExpectType ParseServer
|
|
35
|
+
const parseServer2 = new ParseServer({});
|
|
36
|
+
|
|
37
|
+
// $ExpectType ParseServer
|
|
38
|
+
await parseServer2.start();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function exports() {
|
|
42
|
+
// $ExpectType any
|
|
43
|
+
FileSystemAdapter;
|
|
44
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"module": "commonjs",
|
|
4
|
+
"lib": ["es6"],
|
|
5
|
+
"noImplicitAny": true,
|
|
6
|
+
"noImplicitThis": true,
|
|
7
|
+
"strictFunctionTypes": true,
|
|
8
|
+
"strictNullChecks": true,
|
|
9
|
+
"types": [],
|
|
10
|
+
"noEmit": true,
|
|
11
|
+
"forceConsistentCasingInFileNames": true,
|
|
12
|
+
|
|
13
|
+
// If the library is an external module (uses `export`), this allows your test file to import "mylib" instead of "./index".
|
|
14
|
+
// If the library is global (cannot be imported via `import` or `require`), leave this out.
|
|
15
|
+
"baseUrl": ".",
|
|
16
|
+
"paths": {
|
|
17
|
+
"parse-server": ["."],
|
|
18
|
+
"@parse/fs-files-adapter": ["./@types/@parse/fs-files-adapter"],
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"include": [
|
|
22
|
+
"tests.ts"
|
|
23
|
+
]
|
|
24
|
+
}
|