Skip to content

Commit 7208895

Browse files
authored
Merge branch 'alpha' into ts-def
2 parents 0f7e9bd + 1b9560b commit 7208895

File tree

14 files changed

+99
-9
lines changed

14 files changed

+99
-9
lines changed

changelogs/CHANGELOG_alpha.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# [6.1.0-alpha.2](https://github.com/parse-community/Parse-SDK-JS/compare/6.1.0-alpha.1...6.1.0-alpha.2) (2025-03-10)
2+
3+
4+
### Features
5+
6+
* Add `Parse.Query` option `useMaintenanceKey` ([#2484](https://github.com/parse-community/Parse-SDK-JS/issues/2484)) ([2ead3f3](https://github.com/parse-community/Parse-SDK-JS/commit/2ead3f3af31654b27470bb5b596cb01df03e8fe3))
7+
18
# [6.1.0-alpha.1](https://github.com/parse-community/Parse-SDK-JS/compare/6.0.0...6.1.0-alpha.1) (2025-03-05)
29

310

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "parse",
3-
"version": "6.1.0-alpha.1",
3+
"version": "6.1.0-alpha.2",
44
"description": "Parse JavaScript SDK",
55
"homepage": "https://parseplatform.org",
66
"keywords": [

src/CoreManager.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@ const config: Config & { [key: string]: any } = {
353353
VERSION: 'js' + require('../package.json').version,
354354
APPLICATION_ID: null,
355355
JAVASCRIPT_KEY: null,
356+
MAINTENANCE_KEY: null,
356357
MASTER_KEY: null,
357358
USE_MASTER_KEY: false,
358359
PERFORM_USER_REWRITE: true,

src/Parse.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,15 @@ const Parse = {
110110
Parse._initialize(applicationId, javaScriptKey);
111111
},
112112

113-
_initialize(applicationId: string, javaScriptKey: string, masterKey?: string) {
113+
_initialize(
114+
applicationId: string,
115+
javaScriptKey: string,
116+
masterKey?: string,
117+
maintenanceKey?: string
118+
) {
114119
CoreManager.set('APPLICATION_ID', applicationId);
115120
CoreManager.set('JAVASCRIPT_KEY', javaScriptKey);
121+
CoreManager.set('MAINTENANCE_KEY', maintenanceKey);
116122
CoreManager.set('MASTER_KEY', masterKey);
117123
CoreManager.set('USE_MASTER_KEY', false);
118124
CoreManager.setIfNeeded('EventEmitter', EventEmitter);
@@ -198,6 +204,17 @@ const Parse = {
198204
return CoreManager.get('MASTER_KEY');
199205
},
200206

207+
/**
208+
* @member {string} Parse.maintenanceKey
209+
* @static
210+
*/
211+
set maintenanceKey(value) {
212+
CoreManager.set('MAINTENANCE_KEY', value);
213+
},
214+
get maintenanceKey() {
215+
return CoreManager.get('MAINTENANCE_KEY');
216+
},
217+
201218
/**
202219
* @member {string} Parse.serverURL
203220
* @static

src/ParseObject.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,9 @@ class ParseObject<T extends Attributes = Attributes> {
513513
if (hasOwn(options, 'useMasterKey')) {
514514
requestOptions.useMasterKey = !!options.useMasterKey;
515515
}
516+
if (hasOwn(options, 'useMaintenanceKey')) {
517+
requestOptions.useMaintenanceKey = !!options.useMaintenanceKey;
518+
}
516519
if (hasOwn(options, 'sessionToken') && typeof options.sessionToken === 'string') {
517520
requestOptions.sessionToken = options.sessionToken;
518521
}

src/ParseQuery.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import type { Pointer } from './ParseObject';
1414
type BatchOptions = FullOptions & {
1515
batchSize?: number;
1616
useMasterKey?: boolean;
17+
useMaintenanceKey?: boolean;
1718
sessionToken?: string;
1819
context?: { [key: string]: any };
1920
json?: boolean;

src/RESTController.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import XhrWeapp from './Xhr.weapp';
77

88
export type RequestOptions = {
99
useMasterKey?: boolean;
10+
useMaintenanceKey?: boolean;
1011
sessionToken?: string;
1112
installationId?: string;
1213
returnStatus?: boolean;
@@ -23,6 +24,7 @@ export type FullOptions = {
2324
success?: any;
2425
error?: any;
2526
useMasterKey?: boolean;
27+
useMaintenanceKey?: boolean;
2628
sessionToken?: string;
2729
installationId?: string;
2830
progress?: any;
@@ -36,6 +38,7 @@ type PayloadType = {
3638
_JavaScriptKey?: string;
3739
_ClientVersion: string;
3840
_MasterKey?: string;
41+
_MaintenanceKey?: string;
3942
_RevocableSession?: string;
4043
_InstallationId?: string;
4144
_SessionToken?: string;
@@ -273,7 +276,9 @@ const RESTController = {
273276
throw new Error('Cannot use the Master Key, it has not been provided.');
274277
}
275278
}
276-
279+
if (options.useMaintenanceKey) {
280+
payload._MaintenanceKey = CoreManager.get('MAINTENANCE_KEY');
281+
}
277282
if (CoreManager.get('FORCE_REVOCABLE_SESSION')) {
278283
payload._RevocableSession = '1';
279284
}

src/__tests__/Parse-test.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@ describe('Parse module', () => {
2424
expect(CoreManager.get('APPLICATION_ID')).toBe('A');
2525
expect(CoreManager.get('JAVASCRIPT_KEY')).toBe('B');
2626

27-
Parse._initialize('A', 'B', 'C');
27+
Parse._initialize('A', 'B', 'C', 'D');
2828
expect(CoreManager.get('APPLICATION_ID')).toBe('A');
2929
expect(CoreManager.get('JAVASCRIPT_KEY')).toBe('B');
3030
expect(CoreManager.get('MASTER_KEY')).toBe('C');
31+
expect(CoreManager.get('MAINTENANCE_KEY')).toBe('D');
3132
});
3233

3334
it('enables master key use in the node build', () => {
@@ -55,6 +56,10 @@ describe('Parse module', () => {
5556
expect(CoreManager.get('MASTER_KEY')).toBe('789');
5657
expect(Parse.masterKey).toBe('789');
5758

59+
Parse.maintenanceKey = '000';
60+
expect(CoreManager.get('MAINTENANCE_KEY')).toBe('000');
61+
expect(Parse.maintenanceKey).toBe('000');
62+
5863
Parse.serverURL = 'http://example.com';
5964
expect(CoreManager.get('SERVER_URL')).toBe('http://example.com');
6065
expect(Parse.serverURL).toBe('http://example.com');

src/__tests__/ParseQuery-test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1263,6 +1263,7 @@ describe('ParseQuery', () => {
12631263
},
12641264
});
12651265
expect(options.useMasterKey).toEqual(true);
1266+
expect(options.useMaintenanceKey).toEqual(true);
12661267
expect(options.sessionToken).toEqual('1234');
12671268
return Promise.resolve({
12681269
results: [],
@@ -1274,6 +1275,7 @@ describe('ParseQuery', () => {
12741275
q.equalTo('size', 'small')
12751276
.first({
12761277
useMasterKey: true,
1278+
useMaintenanceKey: true,
12771279
sessionToken: '1234',
12781280
})
12791281
.then(obj => {
@@ -1440,6 +1442,7 @@ describe('ParseQuery', () => {
14401442
},
14411443
});
14421444
expect(options.useMasterKey).toEqual(true);
1445+
expect(options.useMaintenanceKey).toEqual(true);
14431446
expect(options.sessionToken).toEqual('1234');
14441447
expect(options.context).toEqual(context);
14451448
return Promise.resolve({
@@ -1451,6 +1454,7 @@ describe('ParseQuery', () => {
14511454
const q = new ParseQuery('Item');
14521455
q.get('I27', {
14531456
useMasterKey: true,
1457+
useMaintenanceKey: true,
14541458
sessionToken: '1234',
14551459
context: context,
14561460
}).then(() => {
@@ -1587,6 +1591,7 @@ describe('ParseQuery', () => {
15871591
},
15881592
});
15891593
expect(options.useMasterKey).toEqual(true);
1594+
expect(options.useMaintenanceKey).toEqual(true);
15901595
expect(options.sessionToken).toEqual('1234');
15911596
expect(options.context).toEqual(context);
15921597
return Promise.resolve({
@@ -1599,6 +1604,7 @@ describe('ParseQuery', () => {
15991604
q.containedIn('size', ['small', 'medium'])
16001605
.find({
16011606
useMasterKey: true,
1607+
useMaintenanceKey: true,
16021608
sessionToken: '1234',
16031609
context: context,
16041610
})
@@ -1713,6 +1719,7 @@ describe('ParseQuery', () => {
17131719
it('passes options through to the REST API', async () => {
17141720
const batchOptions = {
17151721
useMasterKey: true,
1722+
useMaintenanceKey: true,
17161723
sessionToken: '1234',
17171724
batchSize: 50,
17181725
};
@@ -1727,6 +1734,7 @@ describe('ParseQuery', () => {
17271734
where: {},
17281735
});
17291736
expect(options.useMasterKey).toBe(true);
1737+
expect(options.useMaintenanceKey).toEqual(true);
17301738
expect(options.sessionToken).toEqual('1234');
17311739
});
17321740

@@ -1840,6 +1848,7 @@ describe('ParseQuery', () => {
18401848
it('passes options through to the REST API', async () => {
18411849
const batchOptions = {
18421850
useMasterKey: true,
1851+
useMaintenanceKey: true,
18431852
sessionToken: '1234',
18441853
batchSize: 50,
18451854
json: true,
@@ -1855,6 +1864,7 @@ describe('ParseQuery', () => {
18551864
where: {},
18561865
});
18571866
expect(options.useMasterKey).toBe(true);
1867+
expect(options.useMaintenanceKey).toEqual(true);
18581868
expect(options.sessionToken).toEqual('1234');
18591869
expect(options.json).toEqual(true);
18601870
});
@@ -1962,6 +1972,7 @@ describe('ParseQuery', () => {
19621972
},
19631973
});
19641974
expect(options.useMasterKey).toEqual(true);
1975+
expect(options.useMaintenanceKey).toEqual(true);
19651976
expect(options.sessionToken).toEqual('1234');
19661977
expect(options.context).toEqual(context);
19671978
return Promise.resolve({
@@ -1986,6 +1997,7 @@ describe('ParseQuery', () => {
19861997
},
19871998
{
19881999
useMasterKey: true,
2000+
useMaintenanceKey: true,
19892001
sessionToken: '1234',
19902002
context: context,
19912003
}
@@ -2014,6 +2026,7 @@ describe('ParseQuery', () => {
20142026
hint: '_id_',
20152027
});
20162028
expect(options.useMasterKey).toEqual(true);
2029+
expect(options.useMaintenanceKey).toEqual(true);
20172030
expect(options.sessionToken).toEqual('1234');
20182031
expect(options.context).toEqual(context);
20192032
return Promise.resolve({
@@ -2039,6 +2052,7 @@ describe('ParseQuery', () => {
20392052
},
20402053
{
20412054
useMasterKey: true,
2055+
useMaintenanceKey: true,
20422056
sessionToken: '1234',
20432057
context: context,
20442058
}
@@ -2761,6 +2775,7 @@ describe('ParseQuery', () => {
27612775
group: { objectId: '$name' },
27622776
});
27632777
expect(options.useMasterKey).toEqual(true);
2778+
expect(options.useMaintenanceKey).toEqual(true);
27642779
expect(options.requestTask).toBeDefined();
27652780
return Promise.resolve({
27662781
results: [],

0 commit comments

Comments
 (0)