diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index dacfb9e48..702ab3d8a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -25,6 +25,15 @@ jobs:
- run: npm ci
- name: Check types
run: npm run test:types
+ check-docs:
+ name: Check Docs
+ timeout-minutes: 5
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - run: npm ci
+ - name: Check Docs
+ run: npm run docs
build:
runs-on: ubuntu-latest
timeout-minutes: 30
diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md
index c050f9336..e0d171583 100644
--- a/changelogs/CHANGELOG_alpha.md
+++ b/changelogs/CHANGELOG_alpha.md
@@ -1,3 +1,56 @@
+# [4.3.0-alpha.6](https://github.com/parse-community/Parse-SDK-JS/compare/4.3.0-alpha.5...4.3.0-alpha.6) (2023-10-28)
+
+
+### Bug Fixes
+
+* Security upgrade browserify-sign from 4.2.1 to 4.2.2 ([#2043](https://github.com/parse-community/Parse-SDK-JS/issues/2043)) ([fd50b9d](https://github.com/parse-community/Parse-SDK-JS/commit/fd50b9dbc9feb8b51eedfcdddce37ea1882ac438))
+
+# [4.3.0-alpha.5](https://github.com/parse-community/Parse-SDK-JS/compare/4.3.0-alpha.4...4.3.0-alpha.5) (2023-10-26)
+
+
+### Bug Fixes
+
+* Security upgrade crypto-js from 4.1.1 to 4.2.0 ([#2042](https://github.com/parse-community/Parse-SDK-JS/issues/2042)) ([681fbdf](https://github.com/parse-community/Parse-SDK-JS/commit/681fbdfcdd2e6d351e00400eccf41fe732b053ba))
+
+# [4.3.0-alpha.4](https://github.com/parse-community/Parse-SDK-JS/compare/4.3.0-alpha.3...4.3.0-alpha.4) (2023-10-07)
+
+
+### Bug Fixes
+
+* Error in web context when `window.indexedDB` API is available but protected ([#2039](https://github.com/parse-community/Parse-SDK-JS/issues/2039)) ([360981f](https://github.com/parse-community/Parse-SDK-JS/commit/360981f8a529f3e10243413c8114373271bb6f43))
+
+# [4.3.0-alpha.3](https://github.com/parse-community/Parse-SDK-JS/compare/4.3.0-alpha.2...4.3.0-alpha.3) (2023-10-04)
+
+
+### Bug Fixes
+
+* Connection failure in `Parse.Object.saveEventually` and `Parse.Object.destroyEventually` not handled on custom `Parse.Error.CONNECTION_FAILURE` message ([#2032](https://github.com/parse-community/Parse-SDK-JS/issues/2032)) ([4da3ebc](https://github.com/parse-community/Parse-SDK-JS/commit/4da3ebcc28b903a499c07bb194baae738de21d6f))
+
+# [4.3.0-alpha.2](https://github.com/parse-community/Parse-SDK-JS/compare/4.3.0-alpha.1...4.3.0-alpha.2) (2023-10-03)
+
+
+### Bug Fixes
+
+* Docs fail with `Cannot find module 'taffydb'` ([#2036](https://github.com/parse-community/Parse-SDK-JS/issues/2036)) ([dc91d0f](https://github.com/parse-community/Parse-SDK-JS/commit/dc91d0fc4f69639ba762f5af841477e8836c6927))
+
+# [4.3.0-alpha.1](https://github.com/parse-community/Parse-SDK-JS/compare/4.2.0...4.3.0-alpha.1) (2023-09-26)
+
+
+### Bug Fixes
+
+* `ParseUser.linkWith` doesn't remove anonymous auth data ([#2007](https://github.com/parse-community/Parse-SDK-JS/issues/2007)) ([7e2585c](https://github.com/parse-community/Parse-SDK-JS/commit/7e2585c5eb84a396900553d55d6a919de4d9a2c0))
+* Hard-coding of `react-native` path does not work for workspace builds ([#1930](https://github.com/parse-community/Parse-SDK-JS/issues/1930)) ([8222f3c](https://github.com/parse-community/Parse-SDK-JS/commit/8222f3cc2a4a4ee0cdcaf30dd0f9a17e46de7d88))
+
+### Features
+
+* Add Bytes type to `Parse.Schema` ([#2001](https://github.com/parse-community/Parse-SDK-JS/issues/2001)) ([343d0d7](https://github.com/parse-community/Parse-SDK-JS/commit/343d0d729a57acdd3c9ba5c1dbe5738b3916ea04))
+* Add Cloud Code context accessibility to `ParseUser.logIn` ([#2010](https://github.com/parse-community/Parse-SDK-JS/issues/2010)) ([2446007](https://github.com/parse-community/Parse-SDK-JS/commit/2446007ede4cc5af79e34f27dc1fbcc574d5f717))
+* Add support for custom EventEmitter ([#1999](https://github.com/parse-community/Parse-SDK-JS/issues/1999)) ([ca568a6](https://github.com/parse-community/Parse-SDK-JS/commit/ca568a61771e15afe67c9001f2a728205059f2ae))
+* Add support for excluding keys in `ParseQuery.findAll` ([#2000](https://github.com/parse-community/Parse-SDK-JS/issues/2000)) ([012ba4c](https://github.com/parse-community/Parse-SDK-JS/commit/012ba4cdab1e3f853625f507c713cef2264a40dd))
+* Add support to invoke a Cloud Function with a custom `installationId` via `Parse.Cloud.run` ([#1939](https://github.com/parse-community/Parse-SDK-JS/issues/1939)) ([eb70b93](https://github.com/parse-community/Parse-SDK-JS/commit/eb70b934b798cb37722c1ac36796596f5373f67d))
+* Allow overriding `Parse.Error` message with custom message via new Core Manager option `PARSE_ERRORS` ([#2014](https://github.com/parse-community/Parse-SDK-JS/issues/2014)) ([be0c8a6](https://github.com/parse-community/Parse-SDK-JS/commit/be0c8a6ff90a7714487ae793e2b68ae04d0c8d0c))
+* Login with username, password and additional authentication data via `ParseUser.logInWithAdditionalAuth` ([#1955](https://github.com/parse-community/Parse-SDK-JS/issues/1955)) ([2bad411](https://github.com/parse-community/Parse-SDK-JS/commit/2bad4119c23372d1b38c811c4b4bb3d06b1b62f0))
+
# [4.2.0-alpha.10](https://github.com/parse-community/Parse-SDK-JS/compare/4.2.0-alpha.9...4.2.0-alpha.10) (2023-09-03)
diff --git a/integration/test/ParseCloudTest.js b/integration/test/ParseCloudTest.js
index ca5a4ae7f..c4704d00c 100644
--- a/integration/test/ParseCloudTest.js
+++ b/integration/test/ParseCloudTest.js
@@ -96,6 +96,7 @@ describe('Parse Cloud', () => {
it('run job', async () => {
const params = { startedBy: 'Monty Python' };
const jobStatusId = await Parse.Cloud.startJob('CloudJob1', params);
+ expect(jobStatusId).toBeDefined();
await waitForJobStatus(jobStatusId, 'succeeded');
const jobStatus = await Parse.Cloud.getJobStatus(jobStatusId);
diff --git a/integration/test/ParsePushTest.js b/integration/test/ParsePushTest.js
index e34913cad..0fad863ef 100644
--- a/integration/test/ParsePushTest.js
+++ b/integration/test/ParsePushTest.js
@@ -9,6 +9,7 @@ describe('Parse Push', () => {
where: { deviceType: { $eq: 'random' } },
};
const pushStatusId = await Parse.Push.send(payload, { useMasterKey: true });
+ expect(pushStatusId).toBeDefined();
const pushStatus = await Parse.Push.getPushStatus(pushStatusId, { useMasterKey: true });
expect(pushStatus.id).toBe(pushStatusId);
});
diff --git a/package-lock.json b/package-lock.json
index 91f840c58..9e4808191 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,18 +1,18 @@
{
"name": "parse",
- "version": "4.3.0",
+ "version": "4.3.0-alpha.6",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "parse",
- "version": "4.3.0",
+ "version": "4.3.0-alpha.6",
"license": "Apache-2.0",
"dependencies": {
- "@babel/runtime-corejs3": "^7.22.11",
+ "@babel/runtime-corejs3": "^7.23.2",
"idb-keyval": "6.2.1",
"react-native-crypto-js": "1.0.0",
- "uuid": "9.0.0",
+ "uuid": "9.0.1",
"ws": "8.13.0",
"xmlhttprequest": "1.8.0"
},
@@ -27,7 +27,7 @@
"@babel/preset-react": "7.22.5",
"@babel/preset-typescript": "7.22.5",
"@definitelytyped/dtslint": "0.0.163",
- "@parse/minami": "1.0.0",
+ "@parse/minami": "git+https://github.com/parse-community/minami#main",
"@saithodev/semantic-release-backmerge": "2.1.3",
"@semantic-release/changelog": "6.0.3",
"@semantic-release/commit-analyzer": "9.0.2",
@@ -76,7 +76,7 @@
"node": ">=14.21.0 <17 || >=18 <20"
},
"optionalDependencies": {
- "crypto-js": "4.1.1"
+ "crypto-js": "4.2.0"
}
},
"node_modules/@ampproject/remapping": {
@@ -106,12 +106,13 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
- "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.22.5"
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
},
"engines": {
"node": ">=6.9.0"
@@ -202,12 +203,12 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.22.9",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz",
- "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
+ "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5",
+ "@babel/types": "^7.23.0",
"@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
@@ -424,9 +425,9 @@
}
},
"node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz",
- "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@@ -445,25 +446,25 @@
}
},
"node_modules/@babel/helper-function-name": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz",
- "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
"dev": true,
"dependencies": {
- "@babel/template": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.18.6"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -614,9 +615,9 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
- "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@@ -661,13 +662,13 @@
}
},
"node_modules/@babel/highlight": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz",
- "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+ "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.0.0",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
"js-tokens": "^4.0.0"
},
"engines": {
@@ -675,9 +676,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.22.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz",
- "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+ "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -2161,9 +2162,9 @@
}
},
"node_modules/@babel/runtime-corejs3": {
- "version": "7.22.11",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.11.tgz",
- "integrity": "sha512-NhfzUbdWbiE6fCFypbWCPu6AR8xre31EOPF7wwAIJEvGQ2avov04eymayWinCuyXmV1b0+jzoXP/HYzzUYdvwg==",
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.2.tgz",
+ "integrity": "sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==",
"dependencies": {
"core-js-pure": "^3.30.2",
"regenerator-runtime": "^0.14.0"
@@ -2178,33 +2179,33 @@
"integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA=="
},
"node_modules/@babel/template": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz",
- "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.22.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.0.tgz",
- "integrity": "sha512-V5Zp3k0nFGWSIC7zYR8PnfdU6i6VYU4JnifdSSMlXM1GMojPAaelPsKmKPW4tWTmpX9GM+RzKl4Io0UVcHVlpw==",
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
+ "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.21.4",
- "@babel/generator": "^7.22.0",
- "@babel/helper-environment-visitor": "^7.21.5",
- "@babel/helper-function-name": "^7.21.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.22.0",
- "@babel/types": "^7.22.0",
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.23.0",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.0",
+ "@babel/types": "^7.23.0",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -2213,13 +2214,13 @@
}
},
"node_modules/@babel/types": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz",
- "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
+ "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
"dev": true,
"dependencies": {
"@babel/helper-string-parser": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
},
"engines": {
@@ -4315,9 +4316,12 @@
},
"node_modules/@parse/minami": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@parse/minami/-/minami-1.0.0.tgz",
- "integrity": "sha512-Rw+p0WdOOypFPVJsmhyiI+Q056ZxdP2iAtObnU1DZrsvKZTf5x0B/0SjIt0hUgWp+COjqi/p17VdBU9IAD/NJg==",
- "dev": true
+ "resolved": "git+ssh://git@github.com/parse-community/minami.git#2e8529b1276c3559b0ec919932e7a83d7a440c0a",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "taffydb": "2.7.3"
+ }
},
"node_modules/@parse/node-apn": {
"version": "5.1.3",
@@ -4498,6 +4502,13 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@parse/push-adapter/node_modules/crypto-js": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
+ "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==",
+ "dev": true,
+ "optional": true
+ },
"node_modules/@parse/push-adapter/node_modules/idb-keyval": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-5.0.6.tgz",
@@ -7111,20 +7122,23 @@
}
},
"node_modules/browserify-sign": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
- "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
+ "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
"dev": true,
"dependencies": {
- "bn.js": "^5.1.1",
- "browserify-rsa": "^4.0.1",
+ "bn.js": "^5.2.1",
+ "browserify-rsa": "^4.1.0",
"create-hash": "^1.2.0",
"create-hmac": "^1.1.7",
- "elliptic": "^6.5.3",
+ "elliptic": "^6.5.4",
"inherits": "^2.0.4",
- "parse-asn1": "^5.1.5",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
+ "parse-asn1": "^5.1.6",
+ "readable-stream": "^3.6.2",
+ "safe-buffer": "^5.2.1"
+ },
+ "engines": {
+ "node": ">= 4"
}
},
"node_modules/browserify-sign/node_modules/safe-buffer": {
@@ -8731,9 +8745,9 @@
}
},
"node_modules/crypto-js": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
- "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
+ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
"optional": true
},
"node_modules/crypto-random-string": {
@@ -22529,6 +22543,15 @@
"node": ">=10"
}
},
+ "node_modules/parse-server/node_modules/uuid": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
+ "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==",
+ "dev": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
"node_modules/parse-server/node_modules/ws": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz",
@@ -22575,6 +22598,13 @@
"node": ">=6.9.0"
}
},
+ "node_modules/parse/node_modules/crypto-js": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
+ "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==",
+ "dev": true,
+ "optional": true
+ },
"node_modules/parse/node_modules/idb-keyval": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.0.3.tgz",
@@ -23822,9 +23852,9 @@
}
},
"node_modules/readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
"dependencies": {
"inherits": "^2.0.3",
@@ -25947,6 +25977,12 @@
"acorn-node": "^1.2.0"
}
},
+ "node_modules/taffydb": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.3.tgz",
+ "integrity": "sha512-GQ3gtYFSOAxSMN/apGtDKKkbJf+8izz5YfbGqIsUc7AMiQOapARZ76dhilRY2h39cynYxBFdafQo5HUL5vgkrg==",
+ "dev": true
+ },
"node_modules/tar": {
"version": "6.1.15",
"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz",
@@ -27018,9 +27054,13 @@
}
},
"node_modules/uuid": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
- "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
"bin": {
"uuid": "dist/bin/uuid"
}
@@ -27871,12 +27911,13 @@
}
},
"@babel/code-frame": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
- "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
"dev": true,
"requires": {
- "@babel/highlight": "^7.22.5"
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
}
},
"@babel/compat-data": {
@@ -27942,12 +27983,12 @@
}
},
"@babel/generator": {
- "version": "7.22.9",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz",
- "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
+ "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
"dev": true,
"requires": {
- "@babel/types": "^7.22.5",
+ "@babel/types": "^7.23.0",
"@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
@@ -28118,9 +28159,9 @@
}
},
"@babel/helper-environment-visitor": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz",
- "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
"dev": true
},
"@babel/helper-explode-assignable-expression": {
@@ -28133,22 +28174,22 @@
}
},
"@babel/helper-function-name": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz",
- "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
"dev": true,
"requires": {
- "@babel/template": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
}
},
"@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
"dev": true,
"requires": {
- "@babel/types": "^7.18.6"
+ "@babel/types": "^7.22.5"
}
},
"@babel/helper-member-expression-to-functions": {
@@ -28254,9 +28295,9 @@
"dev": true
},
"@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
- "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
"dev": true
},
"@babel/helper-validator-option": {
@@ -28289,20 +28330,20 @@
}
},
"@babel/highlight": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz",
- "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+ "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.0.0",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
- "version": "7.22.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz",
- "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+ "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
"dev": true
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
@@ -29289,9 +29330,9 @@
}
},
"@babel/runtime-corejs3": {
- "version": "7.22.11",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.11.tgz",
- "integrity": "sha512-NhfzUbdWbiE6fCFypbWCPu6AR8xre31EOPF7wwAIJEvGQ2avov04eymayWinCuyXmV1b0+jzoXP/HYzzUYdvwg==",
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.2.tgz",
+ "integrity": "sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==",
"requires": {
"core-js-pure": "^3.30.2",
"regenerator-runtime": "^0.14.0"
@@ -29305,42 +29346,42 @@
}
},
"@babel/template": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz",
- "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
}
},
"@babel/traverse": {
- "version": "7.22.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.0.tgz",
- "integrity": "sha512-V5Zp3k0nFGWSIC7zYR8PnfdU6i6VYU4JnifdSSMlXM1GMojPAaelPsKmKPW4tWTmpX9GM+RzKl4Io0UVcHVlpw==",
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
+ "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.21.4",
- "@babel/generator": "^7.22.0",
- "@babel/helper-environment-visitor": "^7.21.5",
- "@babel/helper-function-name": "^7.21.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.22.0",
- "@babel/types": "^7.22.0",
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.23.0",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.0",
+ "@babel/types": "^7.23.0",
"debug": "^4.1.0",
"globals": "^11.1.0"
}
},
"@babel/types": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz",
- "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
+ "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
"dev": true,
"requires": {
"@babel/helper-string-parser": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
}
},
@@ -30923,10 +30964,12 @@
"dev": true
},
"@parse/minami": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@parse/minami/-/minami-1.0.0.tgz",
- "integrity": "sha512-Rw+p0WdOOypFPVJsmhyiI+Q056ZxdP2iAtObnU1DZrsvKZTf5x0B/0SjIt0hUgWp+COjqi/p17VdBU9IAD/NJg==",
- "dev": true
+ "version": "git+ssh://git@github.com/parse-community/minami.git#2e8529b1276c3559b0ec919932e7a83d7a440c0a",
+ "dev": true,
+ "from": "@parse/minami@git+https://github.com/parse-community/minami#main",
+ "requires": {
+ "taffydb": "2.7.3"
+ }
},
"@parse/node-apn": {
"version": "5.1.3",
@@ -31071,6 +31114,13 @@
"regenerator-runtime": "^0.13.4"
}
},
+ "crypto-js": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
+ "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==",
+ "dev": true,
+ "optional": true
+ },
"idb-keyval": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-5.0.6.tgz",
@@ -33218,20 +33268,20 @@
}
},
"browserify-sign": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
- "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
+ "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
"dev": true,
"requires": {
- "bn.js": "^5.1.1",
- "browserify-rsa": "^4.0.1",
+ "bn.js": "^5.2.1",
+ "browserify-rsa": "^4.1.0",
"create-hash": "^1.2.0",
"create-hmac": "^1.1.7",
- "elliptic": "^6.5.3",
+ "elliptic": "^6.5.4",
"inherits": "^2.0.4",
- "parse-asn1": "^5.1.5",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
+ "parse-asn1": "^5.1.6",
+ "readable-stream": "^3.6.2",
+ "safe-buffer": "^5.2.1"
},
"dependencies": {
"safe-buffer": {
@@ -34449,9 +34499,9 @@
}
},
"crypto-js": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
- "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
+ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
"optional": true
},
"crypto-random-string": {
@@ -44885,6 +44935,13 @@
"regenerator-runtime": "^0.13.4"
}
},
+ "crypto-js": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
+ "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==",
+ "dev": true,
+ "optional": true
+ },
"idb-keyval": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.0.3.tgz",
@@ -45107,6 +45164,12 @@
}
}
},
+ "uuid": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
+ "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==",
+ "dev": true
+ },
"ws": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz",
@@ -46041,9 +46104,9 @@
}
},
"readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
"requires": {
"inherits": "^2.0.3",
@@ -47781,6 +47844,12 @@
"acorn-node": "^1.2.0"
}
},
+ "taffydb": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.3.tgz",
+ "integrity": "sha512-GQ3gtYFSOAxSMN/apGtDKKkbJf+8izz5YfbGqIsUc7AMiQOapARZ76dhilRY2h39cynYxBFdafQo5HUL5vgkrg==",
+ "dev": true
+ },
"tar": {
"version": "6.1.15",
"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz",
@@ -48654,9 +48723,9 @@
"dev": true
},
"uuid": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
- "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg=="
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="
},
"v8-to-istanbul": {
"version": "9.1.0",
diff --git a/package.json b/package.json
index a8071f9f6..22a92f152 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "parse",
- "version": "4.3.0",
+ "version": "4.3.0-alpha.6",
"description": "Parse JavaScript SDK",
"homepage": "https://parseplatform.org",
"keywords": [
@@ -29,10 +29,10 @@
"react-native": false
},
"dependencies": {
- "@babel/runtime-corejs3": "7.22.11",
+ "@babel/runtime-corejs3": "7.23.2",
"idb-keyval": "6.2.1",
"react-native-crypto-js": "1.0.0",
- "uuid": "9.0.0",
+ "uuid": "9.0.1",
"ws": "8.13.0",
"xmlhttprequest": "1.8.0"
},
@@ -47,7 +47,7 @@
"@babel/preset-react": "7.22.5",
"@babel/preset-typescript": "7.22.5",
"@definitelytyped/dtslint": "0.0.163",
- "@parse/minami": "1.0.0",
+ "@parse/minami": "git+https://github.com/parse-community/minami#main",
"@saithodev/semantic-release-backmerge": "2.1.3",
"@semantic-release/changelog": "6.0.3",
"@semantic-release/commit-analyzer": "9.0.2",
@@ -93,7 +93,7 @@
"vinyl-source-stream": "2.0.0"
},
"optionalDependencies": {
- "crypto-js": "4.1.1"
+ "crypto-js": "4.2.0"
},
"scripts": {
"build": "node build_releases.js",
diff --git a/release_docs.sh b/release_docs.sh
index 093619783..ad0e6cf41 100755
--- a/release_docs.sh
+++ b/release_docs.sh
@@ -1,10 +1,17 @@
#!/bin/sh -e
set -x
+# GITHUB_ACTIONS=true SOURCE_TAG=test ./release_docs.sh
+
if [ "${GITHUB_ACTIONS}" = "" ];
then
echo "Cannot release docs without GITHUB_ACTIONS set"
exit 0;
fi
+if [ "${SOURCE_TAG}" = "" ];
+then
+ echo "Cannot release docs without SOURCE_TAG set"
+ exit 0;
+fi
REPO="https://github.com/parse-community/Parse-SDK-JS"
rm -rf docs
@@ -13,16 +20,16 @@ cd docs
git pull origin gh-pages
cd ..
-DEST="master"
+RELEASE="release"
+VERSION="${SOURCE_TAG}"
-if [ "${SOURCE_TAG}" != "" ];
-then
- DEST="${SOURCE_TAG}"
- # change the default page to the latest
- echo "" > "docs/api/index.html"
-fi
+# change the default page to the latest
+echo "" > "docs/api/index.html"
npm run docs
-mkdir -p "docs/api/${DEST}"
-cp -R out/* "docs/api/${DEST}"
+mkdir -p "docs/api/${RELEASE}"
+cp -R out/* "docs/api/${RELEASE}"
+
+mkdir -p "docs/api/${VERSION}"
+cp -R out/* "docs/api/${VERSION}"
diff --git a/src/Cloud.js b/src/Cloud.js
index 4bf748d3a..0d218843c 100644
--- a/src/Cloud.js
+++ b/src/Cloud.js
@@ -131,12 +131,14 @@ const DefaultController = {
return RESTController.request('GET', 'cloud_code/jobs/data', null, options);
},
- startJob(name, data, options: RequestOptions) {
+ async startJob(name, data, options: RequestOptions) {
const RESTController = CoreManager.getRESTController();
const payload = encode(data, true);
+ options.returnStatus = true;
- return RESTController.request('POST', 'jobs/' + name, payload, options);
+ const response = await RESTController.request('POST', 'jobs/' + name, payload, options);
+ return response._headers?.['X-Parse-Job-Status-Id'];
},
};
diff --git a/src/IndexedDBStorageController.js b/src/IndexedDBStorageController.js
index a223000e3..da2d2e973 100644
--- a/src/IndexedDBStorageController.js
+++ b/src/IndexedDBStorageController.js
@@ -6,28 +6,33 @@
import { createStore, del, set, get, clear, keys } from 'idb-keyval';
if (typeof window !== 'undefined' && window.indexedDB) {
- const ParseStore = createStore('parseDB', 'parseStore');
+ try {
+ const ParseStore = createStore('parseDB', 'parseStore');
- const IndexedDBStorageController = {
- async: 1,
- getItemAsync(path: string) {
- return get(path, ParseStore);
- },
- setItemAsync(path: string, value: string) {
- return set(path, value, ParseStore);
- },
- removeItemAsync(path: string) {
- return del(path, ParseStore);
- },
- getAllKeysAsync() {
- return keys(ParseStore);
- },
- clear() {
- return clear(ParseStore);
- },
- };
+ const IndexedDBStorageController = {
+ async: 1,
+ getItemAsync(path: string) {
+ return get(path, ParseStore);
+ },
+ setItemAsync(path: string, value: string) {
+ return set(path, value, ParseStore);
+ },
+ removeItemAsync(path: string) {
+ return del(path, ParseStore);
+ },
+ getAllKeysAsync() {
+ return keys(ParseStore);
+ },
+ clear() {
+ return clear(ParseStore);
+ },
+ };
- module.exports = IndexedDBStorageController;
+ module.exports = IndexedDBStorageController;
+ } catch (_) {
+ // IndexedDB not accessible
+ module.exports = undefined;
+ }
} else {
// IndexedDB not supported
module.exports = undefined;
diff --git a/src/Parse.ts b/src/Parse.ts
index b6876a861..dbf3a0983 100644
--- a/src/Parse.ts
+++ b/src/Parse.ts
@@ -2,6 +2,7 @@ import decode from './decode';
import encode from './encode';
import CryptoController from './CryptoController';
import EventuallyQueue from './EventuallyQueue';
+import IndexedDBStorageController from './IndexedDBStorageController';
import InstallationController from './InstallationController';
import * as ParseOp from './ParseOp';
import RESTController from './RESTController';
@@ -183,6 +184,10 @@ const Parse: ParseType = {
Parse.LiveQuery = new LiveQuery();
CoreManager.setIfNeeded('LiveQuery', Parse.LiveQuery);
+
+ if (process.env.PARSE_BUILD === 'browser') {
+ Parse.IndexedDB = CoreManager.setIfNeeded('IndexedDBStorageController', IndexedDBStorageController);
+ }
},
/**
@@ -428,10 +433,6 @@ const Parse: ParseType = {
},
};
-if (process.env.PARSE_BUILD === 'browser') {
- Parse.IndexedDB = require('./IndexedDBStorageController');
-}
-
CoreManager.setCryptoController(CryptoController);
CoreManager.setInstallationController(InstallationController);
CoreManager.setRESTController(RESTController);
diff --git a/src/ParseObject.js b/src/ParseObject.js
index 94c30b9c1..32701191b 100644
--- a/src/ParseObject.js
+++ b/src/ParseObject.js
@@ -1219,7 +1219,7 @@ class ParseObject {
try {
await this.save(null, options);
} catch (e) {
- if (e.message === 'XMLHttpRequest failed: "Unable to connect to the Parse API"') {
+ if (e.code === ParseError.CONNECTION_FAILED) {
await EventuallyQueue.save(this, options);
EventuallyQueue.poll();
}
@@ -1363,7 +1363,7 @@ class ParseObject {
try {
await this.destroy(options);
} catch (e) {
- if (e.message === 'XMLHttpRequest failed: "Unable to connect to the Parse API"') {
+ if (e.code === ParseError.CONNECTION_FAILED) {
await EventuallyQueue.destroy(this, options);
EventuallyQueue.poll();
}
@@ -2455,6 +2455,8 @@ const DefaultController = {
const objectId = responses[index].success.objectId;
const status = responses[index]._status;
delete responses[index]._status;
+ delete responses[index]._headers;
+ delete responses[index]._xhr;
mapIdForPin[objectId] = obj._localId;
obj._handleSaveResponse(responses[index].success, status);
} else {
@@ -2523,6 +2525,8 @@ const DefaultController = {
response => {
const status = response._status;
delete response._status;
+ delete response._headers;
+ delete response._xhr;
targetCopy._handleSaveResponse(response, status);
},
error => {
diff --git a/src/Push.js b/src/Push.js
index e0d0d9567..a565396be 100644
--- a/src/Push.js
+++ b/src/Push.js
@@ -99,8 +99,10 @@ export function getPushStatus(pushStatusId: string, options?: FullOptions = {}):
}
const DefaultController = {
- send(data: PushData, options?: FullOptions) {
- return CoreManager.getRESTController().request('POST', 'push', data, options);
+ async send(data: PushData, options?: FullOptions) {
+ options.returnStatus = true;
+ const response = await CoreManager.getRESTController().request('POST', 'push', data, options);
+ return response._headers?.['X-Parse-Push-Status-Id'];
},
};
diff --git a/src/RESTController.js b/src/RESTController.js
index 5e0c42d0f..75b30a759 100644
--- a/src/RESTController.js
+++ b/src/RESTController.js
@@ -110,20 +110,18 @@ const RESTController = {
let response;
try {
response = JSON.parse(xhr.responseText);
-
- if (typeof xhr.getResponseHeader === 'function') {
- if ((xhr.getAllResponseHeaders() || '').includes('x-parse-job-status-id: ')) {
- response = xhr.getResponseHeader('x-parse-job-status-id');
- }
- if ((xhr.getAllResponseHeaders() || '').includes('x-parse-push-status-id: ')) {
- response = xhr.getResponseHeader('x-parse-push-status-id');
- }
+ headers = {};
+ if (typeof xhr.getResponseHeader === 'function' && xhr.getResponseHeader('access-control-expose-headers')) {
+ const responseHeaders = xhr.getResponseHeader('access-control-expose-headers').split(', ');
+ responseHeaders.forEach(header => {
+ headers[header] = xhr.getResponseHeader(header.toLowerCase());
+ });
}
} catch (e) {
promise.reject(e.toString());
}
if (response) {
- promise.resolve({ response, status: xhr.status, xhr });
+ promise.resolve({ response, headers, status: xhr.status, xhr });
}
} else if (xhr.status >= 500 || xhr.status === 0) {
// retry on 5XX or node-xmlhttprequest error
@@ -287,9 +285,9 @@ const RESTController = {
const payloadString = JSON.stringify(payload);
return RESTController.ajax(method, url, payloadString, {}, options).then(
- ({ response, status }) => {
+ ({ response, status, headers, xhr }) => {
if (options.returnStatus) {
- return { ...response, _status: status };
+ return { ...response, _status: status, _headers: headers, _xhr: xhr };
} else {
return response;
}
diff --git a/src/__tests__/Cloud-test.js b/src/__tests__/Cloud-test.js
index 48243b635..143f1da9a 100644
--- a/src/__tests__/Cloud-test.js
+++ b/src/__tests__/Cloud-test.js
@@ -229,7 +229,7 @@ describe('CloudController', () => {
value: 12,
when: { __type: 'Date', iso: '2015-01-01T00:00:00.000Z' },
},
- { useMasterKey: true },
+ { returnStatus: true, useMasterKey: true },
]);
});
@@ -242,7 +242,7 @@ describe('CloudController', () => {
{
value: 12,
},
- { useMasterKey: true },
+ { returnStatus: true, useMasterKey: true },
]);
});
diff --git a/src/__tests__/Parse-test.js b/src/__tests__/Parse-test.js
index 4bb09217c..560585230 100644
--- a/src/__tests__/Parse-test.js
+++ b/src/__tests__/Parse-test.js
@@ -237,6 +237,7 @@ describe('Parse module', () => {
expect(Parse.IndexedDB).toBeUndefined();
process.env.PARSE_BUILD = 'browser';
const ParseInstance = require('../Parse');
+ ParseInstance.initialize('test', 'test');
expect(ParseInstance.IndexedDB).toBeDefined();
CoreManager.setStorageController(ParseInstance.IndexedDB);
const currentStorage = CoreManager.getStorageController();
diff --git a/src/__tests__/Push-test.js b/src/__tests__/Push-test.js
index 6ec1833ca..70affe624 100644
--- a/src/__tests__/Push-test.js
+++ b/src/__tests__/Push-test.js
@@ -87,13 +87,7 @@ describe('Push', () => {
describe('PushController', () => {
it('forwards data along', () => {
CoreManager.setPushController(defaultController);
- const request = jest.fn().mockReturnValue({
- _thenRunCallbacks() {
- return {
- _thenRunCallbacks() {},
- };
- },
- });
+ const request = jest.fn().mockReturnValue({ _headers: {} });
CoreManager.setRESTController({
request: request,
ajax: function () {},
@@ -111,7 +105,7 @@ describe('PushController', () => {
'POST',
'push',
{ push_time: '2015-02-01T00:00:00.000Z' },
- { useMasterKey: true },
+ { returnStatus: true, useMasterKey: true },
]);
});
});
diff --git a/src/__tests__/RESTController-test.js b/src/__tests__/RESTController-test.js
index 7beb64f3d..02d72e94d 100644
--- a/src/__tests__/RESTController-test.js
+++ b/src/__tests__/RESTController-test.js
@@ -22,6 +22,12 @@ CoreManager.set('APPLICATION_ID', 'A');
CoreManager.set('JAVASCRIPT_KEY', 'B');
CoreManager.set('VERSION', 'V');
+const headers = {
+ 'x-parse-job-status-id': '1234',
+ 'x-parse-push-status-id': '5678',
+ 'access-control-expose-headers': 'X-Parse-Job-Status-Id, X-Parse-Push-Status-Id',
+};
+
describe('RESTController', () => {
it('throws if there is no XHR implementation', () => {
RESTController._setXHR(null);
@@ -212,8 +218,8 @@ describe('RESTController', () => {
XHR.prototype = {
open: function () {},
setRequestHeader: function () {},
- getResponseHeader: function () {
- return 1234;
+ getResponseHeader: function (header) {
+ return headers[header];
},
send: function () {
this.status = 200;
@@ -221,13 +227,10 @@ describe('RESTController', () => {
this.readyState = 4;
this.onreadystatechange();
},
- getAllResponseHeaders: function () {
- return 'x-parse-job-status-id: 1234';
- },
};
RESTController._setXHR(XHR);
- const response = await RESTController.request('GET', 'classes/MyObject', {}, {});
- expect(response).toBe(1234);
+ const response = await RESTController.request('GET', 'classes/MyObject', {}, { returnStatus: true });
+ expect(response._headers['X-Parse-Job-Status-Id']).toBe('1234');
});
it('handles x-parse-push-status-id header', async () => {
@@ -235,8 +238,8 @@ describe('RESTController', () => {
XHR.prototype = {
open: function () {},
setRequestHeader: function () {},
- getResponseHeader: function () {
- return 1234;
+ getResponseHeader: function (header) {
+ return headers[header];
},
send: function () {
this.status = 200;
@@ -244,13 +247,10 @@ describe('RESTController', () => {
this.readyState = 4;
this.onreadystatechange();
},
- getAllResponseHeaders: function () {
- return 'x-parse-push-status-id: 1234';
- },
};
RESTController._setXHR(XHR);
- const response = await RESTController.request('POST', 'push', {}, {});
- expect(response).toBe(1234);
+ const response = await RESTController.request('POST', 'push', {}, { returnStatus: true });
+ expect(response._headers['X-Parse-Push-Status-Id']).toBe('5678');
});
it('handles invalid header', async () => {
diff --git a/src/__tests__/Storage-test.js b/src/__tests__/Storage-test.js
index 2f64884a4..0b89bb9e5 100644
--- a/src/__tests__/Storage-test.js
+++ b/src/__tests__/Storage-test.js
@@ -12,6 +12,7 @@ global.indexedDB = mockIndexedDB;
jest.mock('idb-keyval', () => {
return mockIndexedDB;
});
+const idbKeyVal = require('idb-keyval');
const BrowserStorageController = require('../StorageController.browser');
@@ -204,6 +205,17 @@ describe('IndexDB StorageController', () => {
expect(dbController).toBeUndefined();
global.indexedDB = mockIndexedDB;
});
+
+ it('handle indexedDB is not accessible', async () => {
+ jest.isolateModules(() => {
+ global.indexedDB = mockIndexedDB;
+ jest.spyOn(idbKeyVal, 'createStore')
+ .mockImplementationOnce(() => { throw new Error('Protected'); });
+ const dbController = require('../IndexedDBStorageController');
+ expect(dbController).toBeUndefined();
+ expect(idbKeyVal.createStore).toHaveBeenCalled();
+ });
+ });
});
const DefaultStorageController = require('../StorageController.default');