serverless-spy 2.2.3 → 2.2.5

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.
Files changed (224) hide show
  1. package/.jsii +4 -4
  2. package/dist/releasetag.txt +1 -1
  3. package/lib/src/ServerlessSpy.js +1 -1
  4. package/node_modules/bundle-name/index.js +2 -2
  5. package/node_modules/bundle-name/package.json +6 -5
  6. package/node_modules/bundle-name/readme.md +2 -2
  7. package/node_modules/default-browser/index.d.ts +5 -4
  8. package/node_modules/default-browser/index.js +13 -11
  9. package/node_modules/default-browser/package.json +14 -12
  10. package/node_modules/default-browser/windows.js +11 -5
  11. package/node_modules/default-browser-id/index.js +8 -32
  12. package/node_modules/default-browser-id/package.json +5 -8
  13. package/node_modules/default-browser-id/readme.md +2 -2
  14. package/node_modules/open/index.js +10 -10
  15. package/node_modules/{is-wsl → open/node_modules/is-wsl}/index.d.ts +2 -2
  16. package/node_modules/open/node_modules/is-wsl/index.js +27 -0
  17. package/node_modules/{is-wsl → open/node_modules/is-wsl}/package.json +21 -9
  18. package/node_modules/open/node_modules/is-wsl/readme.md +21 -0
  19. package/node_modules/open/package.json +9 -8
  20. package/node_modules/open/xdg-open +338 -137
  21. package/node_modules/run-applescript/index.d.ts +28 -4
  22. package/node_modules/run-applescript/index.js +20 -7
  23. package/node_modules/run-applescript/package.json +10 -9
  24. package/node_modules/run-applescript/readme.md +44 -6
  25. package/node_modules/ws/README.md +9 -10
  26. package/node_modules/ws/lib/constants.js +7 -1
  27. package/node_modules/ws/lib/receiver.js +11 -47
  28. package/node_modules/ws/lib/sender.js +172 -47
  29. package/node_modules/ws/lib/validation.js +22 -0
  30. package/node_modules/ws/lib/websocket-server.js +6 -5
  31. package/node_modules/ws/lib/websocket.js +71 -19
  32. package/node_modules/ws/package.json +4 -3
  33. package/package.json +4 -4
  34. package/node_modules/big-integer/BigInteger.d.ts +0 -2393
  35. package/node_modules/big-integer/BigInteger.js +0 -1453
  36. package/node_modules/big-integer/BigInteger.min.js +0 -1
  37. package/node_modules/big-integer/LICENSE +0 -24
  38. package/node_modules/big-integer/README.md +0 -589
  39. package/node_modules/big-integer/bower.json +0 -29
  40. package/node_modules/big-integer/package.json +0 -48
  41. package/node_modules/big-integer/tsconfig.json +0 -24
  42. package/node_modules/bplist-parser/README.md +0 -48
  43. package/node_modules/bplist-parser/bplistParser.js +0 -363
  44. package/node_modules/bplist-parser/package.json +0 -34
  45. package/node_modules/bplist-parser/test/airplay.bplist +0 -0
  46. package/node_modules/bplist-parser/test/iTunes-small.bplist +0 -0
  47. package/node_modules/bplist-parser/test/int64.bplist +0 -0
  48. package/node_modules/bplist-parser/test/int64.xml +0 -10
  49. package/node_modules/bplist-parser/test/parseTest.js +0 -104
  50. package/node_modules/bplist-parser/test/sample1.bplist +0 -0
  51. package/node_modules/bplist-parser/test/sample2.bplist +0 -0
  52. package/node_modules/bplist-parser/test/uid.bplist +0 -0
  53. package/node_modules/bplist-parser/test/utf16.bplist +0 -0
  54. package/node_modules/bplist-parser/test/utf16_chinese.plist +0 -0
  55. package/node_modules/cross-spawn/CHANGELOG.md +0 -130
  56. package/node_modules/cross-spawn/LICENSE +0 -21
  57. package/node_modules/cross-spawn/README.md +0 -96
  58. package/node_modules/cross-spawn/index.js +0 -39
  59. package/node_modules/cross-spawn/lib/enoent.js +0 -59
  60. package/node_modules/cross-spawn/lib/parse.js +0 -91
  61. package/node_modules/cross-spawn/lib/util/escape.js +0 -45
  62. package/node_modules/cross-spawn/lib/util/readShebang.js +0 -23
  63. package/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -52
  64. package/node_modules/cross-spawn/package.json +0 -73
  65. package/node_modules/default-browser/node_modules/execa/index.d.ts +0 -937
  66. package/node_modules/default-browser/node_modules/execa/index.js +0 -309
  67. package/node_modules/default-browser/node_modules/execa/lib/command.js +0 -120
  68. package/node_modules/default-browser/node_modules/execa/lib/error.js +0 -87
  69. package/node_modules/default-browser/node_modules/execa/lib/kill.js +0 -102
  70. package/node_modules/default-browser/node_modules/execa/lib/pipe.js +0 -42
  71. package/node_modules/default-browser/node_modules/execa/lib/promise.js +0 -36
  72. package/node_modules/default-browser/node_modules/execa/lib/stdio.js +0 -49
  73. package/node_modules/default-browser/node_modules/execa/lib/stream.js +0 -119
  74. package/node_modules/default-browser/node_modules/execa/lib/verbose.js +0 -19
  75. package/node_modules/default-browser/node_modules/execa/package.json +0 -87
  76. package/node_modules/default-browser/node_modules/execa/readme.md +0 -824
  77. package/node_modules/default-browser/node_modules/human-signals/LICENSE +0 -201
  78. package/node_modules/default-browser/node_modules/human-signals/README.md +0 -178
  79. package/node_modules/default-browser/node_modules/human-signals/build/src/core.js +0 -273
  80. package/node_modules/default-browser/node_modules/human-signals/build/src/main.d.ts +0 -73
  81. package/node_modules/default-browser/node_modules/human-signals/build/src/main.js +0 -70
  82. package/node_modules/default-browser/node_modules/human-signals/build/src/realtime.js +0 -16
  83. package/node_modules/default-browser/node_modules/human-signals/build/src/signals.js +0 -34
  84. package/node_modules/default-browser/node_modules/human-signals/package.json +0 -61
  85. package/node_modules/default-browser/node_modules/is-stream/index.d.ts +0 -81
  86. package/node_modules/default-browser/node_modules/is-stream/index.js +0 -29
  87. package/node_modules/default-browser/node_modules/is-stream/license +0 -9
  88. package/node_modules/default-browser/node_modules/is-stream/package.json +0 -44
  89. package/node_modules/default-browser/node_modules/is-stream/readme.md +0 -60
  90. package/node_modules/default-browser/node_modules/mimic-fn/index.d.ts +0 -52
  91. package/node_modules/default-browser/node_modules/mimic-fn/index.js +0 -71
  92. package/node_modules/default-browser/node_modules/mimic-fn/license +0 -9
  93. package/node_modules/default-browser/node_modules/mimic-fn/package.json +0 -45
  94. package/node_modules/default-browser/node_modules/mimic-fn/readme.md +0 -90
  95. package/node_modules/default-browser/node_modules/npm-run-path/index.d.ts +0 -90
  96. package/node_modules/default-browser/node_modules/npm-run-path/index.js +0 -52
  97. package/node_modules/default-browser/node_modules/npm-run-path/license +0 -9
  98. package/node_modules/default-browser/node_modules/npm-run-path/package.json +0 -49
  99. package/node_modules/default-browser/node_modules/npm-run-path/readme.md +0 -104
  100. package/node_modules/default-browser/node_modules/onetime/index.d.ts +0 -59
  101. package/node_modules/default-browser/node_modules/onetime/index.js +0 -41
  102. package/node_modules/default-browser/node_modules/onetime/license +0 -9
  103. package/node_modules/default-browser/node_modules/onetime/package.json +0 -45
  104. package/node_modules/default-browser/node_modules/onetime/readme.md +0 -94
  105. package/node_modules/default-browser/node_modules/path-key/index.d.ts +0 -31
  106. package/node_modules/default-browser/node_modules/path-key/index.js +0 -12
  107. package/node_modules/default-browser/node_modules/path-key/license +0 -9
  108. package/node_modules/default-browser/node_modules/path-key/package.json +0 -41
  109. package/node_modules/default-browser/node_modules/path-key/readme.md +0 -57
  110. package/node_modules/default-browser/node_modules/strip-final-newline/index.js +0 -14
  111. package/node_modules/default-browser/node_modules/strip-final-newline/license +0 -9
  112. package/node_modules/default-browser/node_modules/strip-final-newline/package.json +0 -43
  113. package/node_modules/default-browser/node_modules/strip-final-newline/readme.md +0 -35
  114. package/node_modules/execa/index.d.ts +0 -564
  115. package/node_modules/execa/index.js +0 -268
  116. package/node_modules/execa/lib/command.js +0 -52
  117. package/node_modules/execa/lib/error.js +0 -88
  118. package/node_modules/execa/lib/kill.js +0 -115
  119. package/node_modules/execa/lib/promise.js +0 -46
  120. package/node_modules/execa/lib/stdio.js +0 -52
  121. package/node_modules/execa/lib/stream.js +0 -97
  122. package/node_modules/execa/license +0 -9
  123. package/node_modules/execa/package.json +0 -74
  124. package/node_modules/execa/readme.md +0 -663
  125. package/node_modules/get-stream/buffer-stream.js +0 -52
  126. package/node_modules/get-stream/index.d.ts +0 -105
  127. package/node_modules/get-stream/index.js +0 -61
  128. package/node_modules/get-stream/license +0 -9
  129. package/node_modules/get-stream/package.json +0 -47
  130. package/node_modules/get-stream/readme.md +0 -124
  131. package/node_modules/human-signals/CHANGELOG.md +0 -11
  132. package/node_modules/human-signals/LICENSE +0 -201
  133. package/node_modules/human-signals/README.md +0 -165
  134. package/node_modules/human-signals/build/src/core.js +0 -273
  135. package/node_modules/human-signals/build/src/core.js.map +0 -1
  136. package/node_modules/human-signals/build/src/main.d.ts +0 -52
  137. package/node_modules/human-signals/build/src/main.js +0 -71
  138. package/node_modules/human-signals/build/src/main.js.map +0 -1
  139. package/node_modules/human-signals/build/src/realtime.js +0 -19
  140. package/node_modules/human-signals/build/src/realtime.js.map +0 -1
  141. package/node_modules/human-signals/build/src/signals.js +0 -35
  142. package/node_modules/human-signals/build/src/signals.js.map +0 -1
  143. package/node_modules/human-signals/package.json +0 -64
  144. package/node_modules/is-stream/index.d.ts +0 -79
  145. package/node_modules/is-stream/index.js +0 -28
  146. package/node_modules/is-stream/license +0 -9
  147. package/node_modules/is-stream/package.json +0 -42
  148. package/node_modules/is-stream/readme.md +0 -60
  149. package/node_modules/is-wsl/index.js +0 -31
  150. package/node_modules/is-wsl/license +0 -9
  151. package/node_modules/is-wsl/node_modules/is-docker/cli.js +0 -5
  152. package/node_modules/is-wsl/node_modules/is-docker/index.d.ts +0 -15
  153. package/node_modules/is-wsl/node_modules/is-docker/index.js +0 -29
  154. package/node_modules/is-wsl/node_modules/is-docker/license +0 -9
  155. package/node_modules/is-wsl/node_modules/is-docker/package.json +0 -42
  156. package/node_modules/is-wsl/node_modules/is-docker/readme.md +0 -27
  157. package/node_modules/is-wsl/readme.md +0 -36
  158. package/node_modules/isexe/.npmignore +0 -2
  159. package/node_modules/isexe/LICENSE +0 -15
  160. package/node_modules/isexe/README.md +0 -51
  161. package/node_modules/isexe/index.js +0 -57
  162. package/node_modules/isexe/mode.js +0 -41
  163. package/node_modules/isexe/package.json +0 -31
  164. package/node_modules/isexe/test/basic.js +0 -221
  165. package/node_modules/isexe/windows.js +0 -42
  166. package/node_modules/merge-stream/LICENSE +0 -21
  167. package/node_modules/merge-stream/README.md +0 -78
  168. package/node_modules/merge-stream/index.js +0 -41
  169. package/node_modules/merge-stream/package.json +0 -19
  170. package/node_modules/mimic-fn/index.d.ts +0 -54
  171. package/node_modules/mimic-fn/index.js +0 -13
  172. package/node_modules/mimic-fn/license +0 -9
  173. package/node_modules/mimic-fn/package.json +0 -42
  174. package/node_modules/mimic-fn/readme.md +0 -69
  175. package/node_modules/npm-run-path/index.d.ts +0 -89
  176. package/node_modules/npm-run-path/index.js +0 -47
  177. package/node_modules/npm-run-path/license +0 -9
  178. package/node_modules/npm-run-path/package.json +0 -44
  179. package/node_modules/npm-run-path/readme.md +0 -115
  180. package/node_modules/onetime/index.d.ts +0 -64
  181. package/node_modules/onetime/index.js +0 -44
  182. package/node_modules/onetime/license +0 -9
  183. package/node_modules/onetime/package.json +0 -43
  184. package/node_modules/onetime/readme.md +0 -94
  185. package/node_modules/path-key/index.d.ts +0 -40
  186. package/node_modules/path-key/index.js +0 -16
  187. package/node_modules/path-key/license +0 -9
  188. package/node_modules/path-key/package.json +0 -39
  189. package/node_modules/path-key/readme.md +0 -61
  190. package/node_modules/shebang-command/index.js +0 -19
  191. package/node_modules/shebang-command/license +0 -9
  192. package/node_modules/shebang-command/package.json +0 -34
  193. package/node_modules/shebang-command/readme.md +0 -34
  194. package/node_modules/shebang-regex/index.d.ts +0 -22
  195. package/node_modules/shebang-regex/index.js +0 -2
  196. package/node_modules/shebang-regex/license +0 -9
  197. package/node_modules/shebang-regex/package.json +0 -35
  198. package/node_modules/shebang-regex/readme.md +0 -33
  199. package/node_modules/signal-exit/LICENSE.txt +0 -16
  200. package/node_modules/signal-exit/README.md +0 -39
  201. package/node_modules/signal-exit/index.js +0 -202
  202. package/node_modules/signal-exit/package.json +0 -38
  203. package/node_modules/signal-exit/signals.js +0 -53
  204. package/node_modules/strip-final-newline/index.js +0 -16
  205. package/node_modules/strip-final-newline/license +0 -9
  206. package/node_modules/strip-final-newline/package.json +0 -40
  207. package/node_modules/strip-final-newline/readme.md +0 -30
  208. package/node_modules/titleize/index.d.ts +0 -17
  209. package/node_modules/titleize/index.js +0 -7
  210. package/node_modules/titleize/license +0 -9
  211. package/node_modules/titleize/package.json +0 -42
  212. package/node_modules/titleize/readme.md +0 -25
  213. package/node_modules/untildify/index.d.ts +0 -14
  214. package/node_modules/untildify/index.js +0 -12
  215. package/node_modules/untildify/license +0 -9
  216. package/node_modules/untildify/package.json +0 -43
  217. package/node_modules/untildify/readme.md +0 -30
  218. package/node_modules/which/CHANGELOG.md +0 -166
  219. package/node_modules/which/LICENSE +0 -15
  220. package/node_modules/which/README.md +0 -54
  221. package/node_modules/which/bin/node-which +0 -52
  222. package/node_modules/which/package.json +0 -43
  223. package/node_modules/which/which.js +0 -125
  224. /package/node_modules/{default-browser/node_modules/execa → open/node_modules/is-wsl}/license +0 -0
@@ -1,29 +0,0 @@
1
- {
2
- "name": "big-integer",
3
- "description": "An arbitrary length integer library for Javascript",
4
- "main": "./BigInteger.js",
5
- "authors": [
6
- "Peter Olson"
7
- ],
8
- "license": "Unlicense",
9
- "keywords": [
10
- "math",
11
- "big",
12
- "bignum",
13
- "bigint",
14
- "biginteger",
15
- "integer",
16
- "arbitrary",
17
- "precision",
18
- "arithmetic"
19
- ],
20
- "homepage": "https://github.com/peterolson/BigInteger.js",
21
- "ignore": [
22
- "**/.*",
23
- "node_modules",
24
- "bower_components",
25
- "test",
26
- "coverage",
27
- "tests"
28
- ]
29
- }
@@ -1,48 +0,0 @@
1
- {
2
- "name": "big-integer",
3
- "version": "1.6.52",
4
- "author": "Peter Olson <peter.e.c.olson+npm@gmail.com>",
5
- "description": "An arbitrary length integer library for Javascript",
6
- "contributors": [],
7
- "bin": {},
8
- "scripts": {
9
- "test": "tsc && karma start my.conf.js && node spec/tsDefinitions.js",
10
- "minify": "uglifyjs BigInteger.js -o BigInteger.min.js"
11
- },
12
- "main": "./BigInteger",
13
- "repository": {
14
- "type": "git",
15
- "url": "git@github.com:peterolson/BigInteger.js.git"
16
- },
17
- "keywords": [
18
- "math",
19
- "big",
20
- "bignum",
21
- "bigint",
22
- "biginteger",
23
- "integer",
24
- "arbitrary",
25
- "precision",
26
- "arithmetic"
27
- ],
28
- "devDependencies": {
29
- "@types/lodash": "^4.14.175",
30
- "@types/node": "^7.10.2",
31
- "coveralls": "^3.0.6",
32
- "jasmine": "3.5.0",
33
- "jasmine-core": "^3.5.0",
34
- "karma": "^6.3.4",
35
- "karma-cli": "^2.0.0",
36
- "karma-coverage": "^2.0.3",
37
- "karma-jasmine": "^4.0.1",
38
- "karma-phantomjs-launcher": "^1.0.4",
39
- "lodash": "^4.17.21",
40
- "typescript": "^5.3.2",
41
- "uglify-js": "^3.17.4"
42
- },
43
- "license": "Unlicense",
44
- "engines": {
45
- "node": ">=0.6"
46
- },
47
- "typings": "./BigInteger.d.ts"
48
- }
@@ -1,24 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "esnext",
4
- "module": "commonjs",
5
- "lib": [
6
- "es6"
7
- ],
8
- "noImplicitAny": true,
9
- "noImplicitThis": true,
10
- "strictNullChecks": false,
11
- "baseUrl": "./",
12
- "moduleResolution": "node",
13
- "allowJs": true,
14
- "typeRoots": [
15
- "./"
16
- ],
17
- "types": [],
18
- "forceConsistentCasingInFileNames": true
19
- },
20
- "files": [
21
- "BigInteger.d.ts",
22
- "spec/tsDefinitions.ts"
23
- ]
24
- }
@@ -1,48 +0,0 @@
1
- # bplist-parser
2
-
3
- Binary Mac OS X Plist (property list) parser.
4
-
5
- ## Installation
6
-
7
- ```bash
8
- $ npm install bplist-parser
9
- ```
10
-
11
- ## Quick Examples
12
-
13
- ```javascript
14
- const bplist = require('bplist-parser');
15
-
16
- (async () => {
17
-
18
- const obj = await bplist.parseFile('myPlist.bplist');
19
-
20
- console.log(JSON.stringify(obj));
21
-
22
- })();
23
- ```
24
-
25
- ## License
26
-
27
- (The MIT License)
28
-
29
- Copyright (c) 2012 Near Infinity Corporation
30
-
31
- Permission is hereby granted, free of charge, to any person obtaining
32
- a copy of this software and associated documentation files (the
33
- "Software"), to deal in the Software without restriction, including
34
- without limitation the rights to use, copy, modify, merge, publish,
35
- distribute, sublicense, and/or sell copies of the Software, and to
36
- permit persons to whom the Software is furnished to do so, subject to
37
- the following conditions:
38
-
39
- The above copyright notice and this permission notice shall be
40
- included in all copies or substantial portions of the Software.
41
-
42
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
43
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
44
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
45
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
46
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
47
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
48
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,363 +0,0 @@
1
- 'use strict';
2
-
3
- // adapted from http://code.google.com/p/plist/source/browse/trunk/src/com/dd/plist/BinaryPropertyListParser.java
4
-
5
- const fs = require('fs');
6
- const bigInt = require("big-integer");
7
- const debug = false;
8
-
9
- exports.maxObjectSize = 100 * 1000 * 1000; // 100Meg
10
- exports.maxObjectCount = 32768;
11
-
12
- // EPOCH = new SimpleDateFormat("yyyy MM dd zzz").parse("2001 01 01 GMT").getTime();
13
- // ...but that's annoying in a static initializer because it can throw exceptions, ick.
14
- // So we just hardcode the correct value.
15
- const EPOCH = 978307200000;
16
-
17
- // UID object definition
18
- const UID = exports.UID = function(id) {
19
- this.UID = id;
20
- };
21
-
22
- const parseFile = exports.parseFile = function (fileNameOrBuffer, callback) {
23
- return new Promise(function (resolve, reject) {
24
- function tryParseBuffer(buffer) {
25
- let err = null;
26
- let result;
27
- try {
28
- result = parseBuffer(buffer);
29
- resolve(result);
30
- } catch (ex) {
31
- err = ex;
32
- reject(err);
33
- } finally {
34
- if (callback) callback(err, result);
35
- }
36
- }
37
-
38
- if (Buffer.isBuffer(fileNameOrBuffer)) {
39
- return tryParseBuffer(fileNameOrBuffer);
40
- }
41
- fs.readFile(fileNameOrBuffer, function (err, data) {
42
- if (err) {
43
- reject(err);
44
- return callback(err);
45
- }
46
- tryParseBuffer(data);
47
- });
48
- });
49
- };
50
-
51
- const parseBuffer = exports.parseBuffer = function (buffer) {
52
- // check header
53
- const header = buffer.slice(0, 'bplist'.length).toString('utf8');
54
- if (header !== 'bplist') {
55
- throw new Error("Invalid binary plist. Expected 'bplist' at offset 0.");
56
- }
57
-
58
- // Handle trailer, last 32 bytes of the file
59
- const trailer = buffer.slice(buffer.length - 32, buffer.length);
60
- // 6 null bytes (index 0 to 5)
61
- const offsetSize = trailer.readUInt8(6);
62
- if (debug) {
63
- console.log("offsetSize: " + offsetSize);
64
- }
65
- const objectRefSize = trailer.readUInt8(7);
66
- if (debug) {
67
- console.log("objectRefSize: " + objectRefSize);
68
- }
69
- const numObjects = readUInt64BE(trailer, 8);
70
- if (debug) {
71
- console.log("numObjects: " + numObjects);
72
- }
73
- const topObject = readUInt64BE(trailer, 16);
74
- if (debug) {
75
- console.log("topObject: " + topObject);
76
- }
77
- const offsetTableOffset = readUInt64BE(trailer, 24);
78
- if (debug) {
79
- console.log("offsetTableOffset: " + offsetTableOffset);
80
- }
81
-
82
- if (numObjects > exports.maxObjectCount) {
83
- throw new Error("maxObjectCount exceeded");
84
- }
85
-
86
- // Handle offset table
87
- const offsetTable = [];
88
-
89
- for (let i = 0; i < numObjects; i++) {
90
- const offsetBytes = buffer.slice(offsetTableOffset + i * offsetSize, offsetTableOffset + (i + 1) * offsetSize);
91
- offsetTable[i] = readUInt(offsetBytes, 0);
92
- if (debug) {
93
- console.log("Offset for Object #" + i + " is " + offsetTable[i] + " [" + offsetTable[i].toString(16) + "]");
94
- }
95
- }
96
-
97
- // Parses an object inside the currently parsed binary property list.
98
- // For the format specification check
99
- // <a href="http://www.opensource.apple.com/source/CF/CF-635/CFBinaryPList.c">
100
- // Apple's binary property list parser implementation</a>.
101
- function parseObject(tableOffset) {
102
- const offset = offsetTable[tableOffset];
103
- const type = buffer[offset];
104
- const objType = (type & 0xF0) >> 4; //First 4 bits
105
- const objInfo = (type & 0x0F); //Second 4 bits
106
- switch (objType) {
107
- case 0x0:
108
- return parseSimple();
109
- case 0x1:
110
- return parseInteger();
111
- case 0x8:
112
- return parseUID();
113
- case 0x2:
114
- return parseReal();
115
- case 0x3:
116
- return parseDate();
117
- case 0x4:
118
- return parseData();
119
- case 0x5: // ASCII
120
- return parsePlistString();
121
- case 0x6: // UTF-16
122
- return parsePlistString(true);
123
- case 0xA:
124
- return parseArray();
125
- case 0xD:
126
- return parseDictionary();
127
- default:
128
- throw new Error("Unhandled type 0x" + objType.toString(16));
129
- }
130
-
131
- function parseSimple() {
132
- //Simple
133
- switch (objInfo) {
134
- case 0x0: // null
135
- return null;
136
- case 0x8: // false
137
- return false;
138
- case 0x9: // true
139
- return true;
140
- case 0xF: // filler byte
141
- return null;
142
- default:
143
- throw new Error("Unhandled simple type 0x" + objType.toString(16));
144
- }
145
- }
146
-
147
- function bufferToHexString(buffer) {
148
- let str = '';
149
- let i;
150
- for (i = 0; i < buffer.length; i++) {
151
- if (buffer[i] != 0x00) {
152
- break;
153
- }
154
- }
155
- for (; i < buffer.length; i++) {
156
- const part = '00' + buffer[i].toString(16);
157
- str += part.substr(part.length - 2);
158
- }
159
- return str;
160
- }
161
-
162
- function parseInteger() {
163
- const length = Math.pow(2, objInfo);
164
-
165
- if (objInfo == 0x4) {
166
- const data = buffer.slice(offset + 1, offset + 1 + length);
167
- const str = bufferToHexString(data);
168
- return bigInt(str, 16);
169
- }
170
- if (objInfo == 0x3) {
171
- return buffer.readInt32BE(offset + 1);
172
- }
173
- if (length < exports.maxObjectSize) {
174
- return readUInt(buffer.slice(offset + 1, offset + 1 + length));
175
- }
176
- throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available.");
177
- }
178
-
179
- function parseUID() {
180
- const length = objInfo + 1;
181
- if (length < exports.maxObjectSize) {
182
- return new UID(readUInt(buffer.slice(offset + 1, offset + 1 + length)));
183
- }
184
- throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available.");
185
- }
186
-
187
- function parseReal() {
188
- const length = Math.pow(2, objInfo);
189
- if (length < exports.maxObjectSize) {
190
- const realBuffer = buffer.slice(offset + 1, offset + 1 + length);
191
- if (length === 4) {
192
- return realBuffer.readFloatBE(0);
193
- }
194
- if (length === 8) {
195
- return realBuffer.readDoubleBE(0);
196
- }
197
- } else {
198
- throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available.");
199
- }
200
- }
201
-
202
- function parseDate() {
203
- if (objInfo != 0x3) {
204
- console.error("Unknown date type :" + objInfo + ". Parsing anyway...");
205
- }
206
- const dateBuffer = buffer.slice(offset + 1, offset + 9);
207
- return new Date(EPOCH + (1000 * dateBuffer.readDoubleBE(0)));
208
- }
209
-
210
- function parseData() {
211
- let dataoffset = 1;
212
- let length = objInfo;
213
- if (objInfo == 0xF) {
214
- const int_type = buffer[offset + 1];
215
- const intType = (int_type & 0xF0) / 0x10;
216
- if (intType != 0x1) {
217
- console.error("0x4: UNEXPECTED LENGTH-INT TYPE! " + intType);
218
- }
219
- const intInfo = int_type & 0x0F;
220
- const intLength = Math.pow(2, intInfo);
221
- dataoffset = 2 + intLength;
222
- if (intLength < 3) {
223
- length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
224
- } else {
225
- length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
226
- }
227
- }
228
- if (length < exports.maxObjectSize) {
229
- return buffer.slice(offset + dataoffset, offset + dataoffset + length);
230
- }
231
- throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available.");
232
- }
233
-
234
- function parsePlistString (isUtf16) {
235
- isUtf16 = isUtf16 || 0;
236
- let enc = "utf8";
237
- let length = objInfo;
238
- let stroffset = 1;
239
- if (objInfo == 0xF) {
240
- const int_type = buffer[offset + 1];
241
- const intType = (int_type & 0xF0) / 0x10;
242
- if (intType != 0x1) {
243
- console.err("UNEXPECTED LENGTH-INT TYPE! " + intType);
244
- }
245
- const intInfo = int_type & 0x0F;
246
- const intLength = Math.pow(2, intInfo);
247
- stroffset = 2 + intLength;
248
- if (intLength < 3) {
249
- length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
250
- } else {
251
- length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
252
- }
253
- }
254
- // length is String length -> to get byte length multiply by 2, as 1 character takes 2 bytes in UTF-16
255
- length *= (isUtf16 + 1);
256
- if (length < exports.maxObjectSize) {
257
- let plistString = Buffer.from(buffer.slice(offset + stroffset, offset + stroffset + length));
258
- if (isUtf16) {
259
- plistString = swapBytes(plistString);
260
- enc = "ucs2";
261
- }
262
- return plistString.toString(enc);
263
- }
264
- throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available.");
265
- }
266
-
267
- function parseArray() {
268
- let length = objInfo;
269
- let arrayoffset = 1;
270
- if (objInfo == 0xF) {
271
- const int_type = buffer[offset + 1];
272
- const intType = (int_type & 0xF0) / 0x10;
273
- if (intType != 0x1) {
274
- console.error("0xa: UNEXPECTED LENGTH-INT TYPE! " + intType);
275
- }
276
- const intInfo = int_type & 0x0F;
277
- const intLength = Math.pow(2, intInfo);
278
- arrayoffset = 2 + intLength;
279
- if (intLength < 3) {
280
- length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
281
- } else {
282
- length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
283
- }
284
- }
285
- if (length * objectRefSize > exports.maxObjectSize) {
286
- throw new Error("To little heap space available!");
287
- }
288
- const array = [];
289
- for (let i = 0; i < length; i++) {
290
- const objRef = readUInt(buffer.slice(offset + arrayoffset + i * objectRefSize, offset + arrayoffset + (i + 1) * objectRefSize));
291
- array[i] = parseObject(objRef);
292
- }
293
- return array;
294
- }
295
-
296
- function parseDictionary() {
297
- let length = objInfo;
298
- let dictoffset = 1;
299
- if (objInfo == 0xF) {
300
- const int_type = buffer[offset + 1];
301
- const intType = (int_type & 0xF0) / 0x10;
302
- if (intType != 0x1) {
303
- console.error("0xD: UNEXPECTED LENGTH-INT TYPE! " + intType);
304
- }
305
- const intInfo = int_type & 0x0F;
306
- const intLength = Math.pow(2, intInfo);
307
- dictoffset = 2 + intLength;
308
- if (intLength < 3) {
309
- length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
310
- } else {
311
- length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
312
- }
313
- }
314
- if (length * 2 * objectRefSize > exports.maxObjectSize) {
315
- throw new Error("To little heap space available!");
316
- }
317
- if (debug) {
318
- console.log("Parsing dictionary #" + tableOffset);
319
- }
320
- const dict = {};
321
- for (let i = 0; i < length; i++) {
322
- const keyRef = readUInt(buffer.slice(offset + dictoffset + i * objectRefSize, offset + dictoffset + (i + 1) * objectRefSize));
323
- const valRef = readUInt(buffer.slice(offset + dictoffset + (length * objectRefSize) + i * objectRefSize, offset + dictoffset + (length * objectRefSize) + (i + 1) * objectRefSize));
324
- const key = parseObject(keyRef);
325
- const val = parseObject(valRef);
326
- if (debug) {
327
- console.log(" DICT #" + tableOffset + ": Mapped " + key + " to " + val);
328
- }
329
- dict[key] = val;
330
- }
331
- return dict;
332
- }
333
- }
334
-
335
- return [ parseObject(topObject) ];
336
- };
337
-
338
- function readUInt(buffer, start) {
339
- start = start || 0;
340
-
341
- let l = 0;
342
- for (let i = start; i < buffer.length; i++) {
343
- l <<= 8;
344
- l |= buffer[i] & 0xFF;
345
- }
346
- return l;
347
- }
348
-
349
- // we're just going to toss the high order bits because javascript doesn't have 64-bit ints
350
- function readUInt64BE(buffer, start) {
351
- const data = buffer.slice(start, start + 8);
352
- return data.readUInt32BE(4, 8);
353
- }
354
-
355
- function swapBytes(buffer) {
356
- const len = buffer.length;
357
- for (let i = 0; i < len; i += 2) {
358
- const a = buffer[i];
359
- buffer[i] = buffer[i+1];
360
- buffer[i+1] = a;
361
- }
362
- return buffer;
363
- }
@@ -1,34 +0,0 @@
1
- {
2
- "name": "bplist-parser",
3
- "version": "0.2.0",
4
- "description": "Binary plist parser.",
5
- "main": "bplistParser.js",
6
- "scripts": {
7
- "test": "mocha test"
8
- },
9
- "keywords": [
10
- "bplist",
11
- "plist",
12
- "parser"
13
- ],
14
- "author": "Joe Ferner <joe.ferner@nearinfinity.com>",
15
- "contributors": [
16
- "Brett Zamir"
17
- ],
18
- "license": "MIT",
19
- "devDependencies": {
20
- "mocha": "^6.1.4"
21
- },
22
- "homepage": "https://github.com/nearinfinity/node-bplist-parser",
23
- "bugs": "https://github.com/nearinfinity/node-bplist-parser/issues",
24
- "engines": {
25
- "node": ">= 5.10.0"
26
- },
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/nearinfinity/node-bplist-parser.git"
30
- },
31
- "dependencies": {
32
- "big-integer": "^1.6.44"
33
- }
34
- }
@@ -1,10 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>zero</key>
6
- <integer>0</integer>
7
- <key>int64item</key>
8
- <integer>12345678901234567890</integer>
9
- </dict>
10
- </plist>
@@ -1,104 +0,0 @@
1
- 'use strict';
2
-
3
- // tests are adapted from https://github.com/TooTallNate/node-plist
4
-
5
- const assert = require('assert');
6
- const path = require('path');
7
- const bplist = require('../');
8
-
9
- describe('bplist-parser', function () {
10
- it('iTunes Small', async function () {
11
- const file = path.join(__dirname, "iTunes-small.bplist");
12
- const startTime1 = new Date();
13
-
14
- const [dict] = await bplist.parseFile(file);
15
- const endTime = new Date();
16
- console.log('Parsed "' + file + '" in ' + (endTime - startTime1) + 'ms');
17
- assert.equal(dict['Application Version'], "9.0.3");
18
- assert.equal(dict['Library Persistent ID'], "6F81D37F95101437");
19
- });
20
-
21
- it('sample1', async function () {
22
- const file = path.join(__dirname, "sample1.bplist");
23
- const startTime = new Date();
24
-
25
- const [dict] = await bplist.parseFile(file);
26
- const endTime = new Date();
27
- console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
28
-
29
- assert.equal(dict['CFBundleIdentifier'], 'com.apple.dictionary.MySample');
30
- });
31
-
32
- it('sample2', async function () {
33
- const file = path.join(__dirname, "sample2.bplist");
34
- const startTime = new Date();
35
-
36
- const [dict] = await bplist.parseFile(file);
37
- const endTime = new Date();
38
- console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
39
-
40
- assert.equal(dict['PopupMenu'][2]['Key'], "\n #import <Cocoa/Cocoa.h>\n\n#import <MacRuby/MacRuby.h>\n\nint main(int argc, char *argv[])\n{\n return macruby_main(\"rb_main.rb\", argc, argv);\n}\n");
41
- });
42
-
43
- it('airplay', async function () {
44
- const file = path.join(__dirname, "airplay.bplist");
45
- const startTime = new Date();
46
-
47
- const [dict] = await bplist.parseFile(file);
48
- const endTime = new Date();
49
- console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
50
-
51
- assert.equal(dict['duration'], 5555.0495000000001);
52
- assert.equal(dict['position'], 4.6269989039999997);
53
- });
54
-
55
- it('utf16', async function () {
56
- const file = path.join(__dirname, "utf16.bplist");
57
- const startTime = new Date();
58
-
59
- const [dict] = await bplist.parseFile(file);
60
- const endTime = new Date();
61
- console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
62
-
63
- assert.equal(dict['CFBundleName'], 'sellStuff');
64
- assert.equal(dict['CFBundleShortVersionString'], '2.6.1');
65
- assert.equal(dict['NSHumanReadableCopyright'], '©2008-2012, sellStuff, Inc.');
66
- });
67
-
68
- it('utf16chinese', async function () {
69
- const file = path.join(__dirname, "utf16_chinese.plist");
70
- const startTime = new Date();
71
-
72
- const [dict] = await bplist.parseFile(file);
73
- const endTime = new Date();
74
- console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
75
-
76
- assert.equal(dict['CFBundleName'], '天翼阅读');
77
- assert.equal(dict['CFBundleDisplayName'], '天翼阅读');
78
- });
79
-
80
- it('uid', async function () {
81
- const file = path.join(__dirname, "uid.bplist");
82
- const startTime = new Date();
83
-
84
- const [dict] = await bplist.parseFile(file);
85
- const endTime = new Date();
86
- console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
87
-
88
- assert.deepEqual(dict['$objects'][1]['NS.keys'], [{UID:2}, {UID:3}, {UID:4}]);
89
- assert.deepEqual(dict['$objects'][1]['NS.objects'], [{UID: 5}, {UID:6}, {UID:7}]);
90
- assert.deepEqual(dict['$top']['root'], {UID:1});
91
- });
92
-
93
- it('int64', async function () {
94
- const file = path.join(__dirname, "int64.bplist");
95
- const startTime = new Date();
96
-
97
- const [dict] = await bplist.parseFile(file);
98
- const endTime = new Date();
99
- console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
100
-
101
- assert.equal(dict['zero'], '0');
102
- assert.equal(dict['int64item'], '12345678901234567890');
103
- });
104
- });