mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
Merge branch 'master' into wl-update-apm
This commit is contained in:
3
.eslintrc.json
Normal file
3
.eslintrc.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "./script/node_modules/eslint-config-standard/eslintrc.json"
|
||||
}
|
||||
481
package-lock.json
generated
481
package-lock.json
generated
@@ -455,6 +455,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"@atom/notify": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@atom/notify/-/notify-1.2.1.tgz",
|
||||
"integrity": "sha512-d1mZlBmPrYbk/SS1q0+gq/I9lG58a+PZ5y9vKBNuWzbgVaDPhpYBJyiO4glr80UbTxCQ/KW8AAD+rY517P8TfA=="
|
||||
},
|
||||
"@atom/nsfw": {
|
||||
"version": "1.0.22",
|
||||
"resolved": "https://registry.npmjs.org/@atom/nsfw/-/nsfw-1.0.22.tgz",
|
||||
@@ -508,17 +513,17 @@
|
||||
}
|
||||
},
|
||||
"@babel/core": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz",
|
||||
"integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.4.tgz",
|
||||
"integrity": "sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ==",
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.0.0",
|
||||
"@babel/generator": "^7.4.0",
|
||||
"@babel/helpers": "^7.4.3",
|
||||
"@babel/parser": "^7.4.3",
|
||||
"@babel/template": "^7.4.0",
|
||||
"@babel/traverse": "^7.4.3",
|
||||
"@babel/types": "^7.4.0",
|
||||
"@babel/generator": "^7.4.4",
|
||||
"@babel/helpers": "^7.4.4",
|
||||
"@babel/parser": "^7.4.4",
|
||||
"@babel/template": "^7.4.4",
|
||||
"@babel/traverse": "^7.4.4",
|
||||
"@babel/types": "^7.4.4",
|
||||
"convert-source-map": "^1.1.0",
|
||||
"debug": "^4.1.0",
|
||||
"json5": "^2.1.0",
|
||||
@@ -528,6 +533,18 @@
|
||||
"source-map": "^0.5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/generator": {
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz",
|
||||
"integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.4.4",
|
||||
"jsesc": "^2.5.1",
|
||||
"lodash": "^4.17.11",
|
||||
"source-map": "^0.5.0",
|
||||
"trim-right": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
@@ -536,6 +553,11 @@
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"jsesc": {
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
|
||||
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
|
||||
},
|
||||
"json5": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
|
||||
@@ -627,35 +649,35 @@
|
||||
}
|
||||
},
|
||||
"@babel/helper-call-delegate": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz",
|
||||
"integrity": "sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz",
|
||||
"integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==",
|
||||
"requires": {
|
||||
"@babel/helper-hoist-variables": "^7.4.0",
|
||||
"@babel/traverse": "^7.4.0",
|
||||
"@babel/types": "^7.4.0"
|
||||
"@babel/helper-hoist-variables": "^7.4.4",
|
||||
"@babel/traverse": "^7.4.4",
|
||||
"@babel/types": "^7.4.4"
|
||||
}
|
||||
},
|
||||
"@babel/helper-create-class-features-plugin": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.3.tgz",
|
||||
"integrity": "sha512-UMl3TSpX11PuODYdWGrUeW6zFkdYhDn7wRLrOuNVM6f9L+S9CzmDXYyrp3MTHcwWjnzur1f/Op8A7iYZWya2Yg==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz",
|
||||
"integrity": "sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA==",
|
||||
"requires": {
|
||||
"@babel/helper-function-name": "^7.1.0",
|
||||
"@babel/helper-member-expression-to-functions": "^7.0.0",
|
||||
"@babel/helper-optimise-call-expression": "^7.0.0",
|
||||
"@babel/helper-plugin-utils": "^7.0.0",
|
||||
"@babel/helper-replace-supers": "^7.4.0",
|
||||
"@babel/helper-split-export-declaration": "^7.4.0"
|
||||
"@babel/helper-replace-supers": "^7.4.4",
|
||||
"@babel/helper-split-export-declaration": "^7.4.4"
|
||||
}
|
||||
},
|
||||
"@babel/helper-define-map": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz",
|
||||
"integrity": "sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz",
|
||||
"integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==",
|
||||
"requires": {
|
||||
"@babel/helper-function-name": "^7.1.0",
|
||||
"@babel/types": "^7.4.0",
|
||||
"@babel/types": "^7.4.4",
|
||||
"lodash": "^4.17.11"
|
||||
},
|
||||
"dependencies": {
|
||||
@@ -694,11 +716,11 @@
|
||||
}
|
||||
},
|
||||
"@babel/helper-hoist-variables": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz",
|
||||
"integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz",
|
||||
"integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.4.0"
|
||||
"@babel/types": "^7.4.4"
|
||||
}
|
||||
},
|
||||
"@babel/helper-member-expression-to-functions": {
|
||||
@@ -718,15 +740,15 @@
|
||||
}
|
||||
},
|
||||
"@babel/helper-module-transforms": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.3.tgz",
|
||||
"integrity": "sha512-H88T9IySZW25anu5uqyaC1DaQre7ofM+joZtAaO2F8NBdFfupH0SZ4gKjgSFVcvtx/aAirqA9L9Clio2heYbZA==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz",
|
||||
"integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==",
|
||||
"requires": {
|
||||
"@babel/helper-module-imports": "^7.0.0",
|
||||
"@babel/helper-simple-access": "^7.1.0",
|
||||
"@babel/helper-split-export-declaration": "^7.0.0",
|
||||
"@babel/template": "^7.2.2",
|
||||
"@babel/types": "^7.2.2",
|
||||
"@babel/helper-split-export-declaration": "^7.4.4",
|
||||
"@babel/template": "^7.4.4",
|
||||
"@babel/types": "^7.4.4",
|
||||
"lodash": "^4.17.11"
|
||||
},
|
||||
"dependencies": {
|
||||
@@ -751,9 +773,9 @@
|
||||
"integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA=="
|
||||
},
|
||||
"@babel/helper-regex": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.3.tgz",
|
||||
"integrity": "sha512-hnoq5u96pLCfgjXuj8ZLX3QQ+6nAulS+zSgi6HulUwFbEruRAKwbGLU5OvXkE14L8XW6XsQEKsIDfgthKLRAyA==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz",
|
||||
"integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==",
|
||||
"requires": {
|
||||
"lodash": "^4.17.11"
|
||||
},
|
||||
@@ -778,14 +800,14 @@
|
||||
}
|
||||
},
|
||||
"@babel/helper-replace-supers": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz",
|
||||
"integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz",
|
||||
"integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==",
|
||||
"requires": {
|
||||
"@babel/helper-member-expression-to-functions": "^7.0.0",
|
||||
"@babel/helper-optimise-call-expression": "^7.0.0",
|
||||
"@babel/traverse": "^7.4.0",
|
||||
"@babel/types": "^7.4.0"
|
||||
"@babel/traverse": "^7.4.4",
|
||||
"@babel/types": "^7.4.4"
|
||||
}
|
||||
},
|
||||
"@babel/helper-simple-access": {
|
||||
@@ -798,11 +820,11 @@
|
||||
}
|
||||
},
|
||||
"@babel/helper-split-export-declaration": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
|
||||
"integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
|
||||
"integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.4.0"
|
||||
"@babel/types": "^7.4.4"
|
||||
}
|
||||
},
|
||||
"@babel/helper-wrap-function": {
|
||||
@@ -817,13 +839,13 @@
|
||||
}
|
||||
},
|
||||
"@babel/helpers": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz",
|
||||
"integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz",
|
||||
"integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==",
|
||||
"requires": {
|
||||
"@babel/template": "^7.4.0",
|
||||
"@babel/traverse": "^7.4.3",
|
||||
"@babel/types": "^7.4.0"
|
||||
"@babel/template": "^7.4.4",
|
||||
"@babel/traverse": "^7.4.4",
|
||||
"@babel/types": "^7.4.4"
|
||||
}
|
||||
},
|
||||
"@babel/highlight": {
|
||||
@@ -883,9 +905,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz",
|
||||
"integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ=="
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz",
|
||||
"integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w=="
|
||||
},
|
||||
"@babel/plugin-proposal-async-generator-functions": {
|
||||
"version": "7.2.0",
|
||||
@@ -934,12 +956,12 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-proposal-unicode-property-regex": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.0.tgz",
|
||||
"integrity": "sha512-h/KjEZ3nK9wv1P1FSNb9G079jXrNYR0Ko+7XkOx85+gM24iZbPn0rh4vCftk+5QKY7y1uByFataBTmX7irEF1w==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz",
|
||||
"integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==",
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.0.0",
|
||||
"@babel/helper-regex": "^7.0.0",
|
||||
"@babel/helper-regex": "^7.4.4",
|
||||
"regexpu-core": "^4.5.4"
|
||||
}
|
||||
},
|
||||
@@ -992,9 +1014,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-async-to-generator": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.0.tgz",
|
||||
"integrity": "sha512-EeaFdCeUULM+GPFEsf7pFcNSxM7hYjoj5fiYbyuiXobW4JhFnjAv9OWzNwHyHcKoPNpAfeRDuW6VyaXEDUBa7g==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz",
|
||||
"integrity": "sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==",
|
||||
"requires": {
|
||||
"@babel/helper-module-imports": "^7.0.0",
|
||||
"@babel/helper-plugin-utils": "^7.0.0",
|
||||
@@ -1010,9 +1032,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-block-scoping": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.0.tgz",
|
||||
"integrity": "sha512-AWyt3k+fBXQqt2qb9r97tn3iBwFpiv9xdAiG+Gr2HpAZpuayvbL55yWrsV3MyHvXk/4vmSiedhDRl1YI2Iy5nQ==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz",
|
||||
"integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==",
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.0.0",
|
||||
"lodash": "^4.17.11"
|
||||
@@ -1026,24 +1048,24 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-classes": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.3.tgz",
|
||||
"integrity": "sha512-PUaIKyFUDtG6jF5DUJOfkBdwAS/kFFV3XFk7Nn0a6vR7ZT8jYw5cGtIlat77wcnd0C6ViGqo/wyNf4ZHytF/nQ==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz",
|
||||
"integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==",
|
||||
"requires": {
|
||||
"@babel/helper-annotate-as-pure": "^7.0.0",
|
||||
"@babel/helper-define-map": "^7.4.0",
|
||||
"@babel/helper-define-map": "^7.4.4",
|
||||
"@babel/helper-function-name": "^7.1.0",
|
||||
"@babel/helper-optimise-call-expression": "^7.0.0",
|
||||
"@babel/helper-plugin-utils": "^7.0.0",
|
||||
"@babel/helper-replace-supers": "^7.4.0",
|
||||
"@babel/helper-split-export-declaration": "^7.4.0",
|
||||
"@babel/helper-replace-supers": "^7.4.4",
|
||||
"@babel/helper-split-export-declaration": "^7.4.4",
|
||||
"globals": "^11.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"globals": {
|
||||
"version": "11.11.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz",
|
||||
"integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw=="
|
||||
"version": "11.12.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
|
||||
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1056,20 +1078,20 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-destructuring": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.3.tgz",
|
||||
"integrity": "sha512-rVTLLZpydDFDyN4qnXdzwoVpk1oaXHIvPEOkOLyr88o7oHxVc/LyrnDx+amuBWGOwUb7D1s/uLsKBNTx08htZg==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz",
|
||||
"integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==",
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-dotall-regex": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.3.tgz",
|
||||
"integrity": "sha512-9Arc2I0AGynzXRR/oPdSALv3k0rM38IMFyto7kOCwb5F9sLUt2Ykdo3V9yUPR+Bgr4kb6bVEyLkPEiBhzcTeoA==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz",
|
||||
"integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==",
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.0.0",
|
||||
"@babel/helper-regex": "^7.4.3",
|
||||
"@babel/helper-regex": "^7.4.4",
|
||||
"regexpu-core": "^4.5.4"
|
||||
}
|
||||
},
|
||||
@@ -1091,17 +1113,17 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-for-of": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.3.tgz",
|
||||
"integrity": "sha512-UselcZPwVWNSURnqcfpnxtMehrb8wjXYOimlYQPBnup/Zld426YzIhNEvuRsEWVHfESIECGrxoI6L5QqzuLH5Q==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz",
|
||||
"integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==",
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-function-name": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.3.tgz",
|
||||
"integrity": "sha512-uT5J/3qI/8vACBR9I1GlAuU/JqBtWdfCrynuOkrWG6nCDieZd5przB1vfP59FRHBZQ9DC2IUfqr/xKqzOD5x0A==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz",
|
||||
"integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==",
|
||||
"requires": {
|
||||
"@babel/helper-function-name": "^7.1.0",
|
||||
"@babel/helper-plugin-utils": "^7.0.0"
|
||||
@@ -1133,21 +1155,21 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-modules-commonjs": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.3.tgz",
|
||||
"integrity": "sha512-sMP4JqOTbMJMimqsSZwYWsMjppD+KRyDIUVW91pd7td0dZKAvPmhCaxhOzkzLParKwgQc7bdL9UNv+rpJB0HfA==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz",
|
||||
"integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==",
|
||||
"requires": {
|
||||
"@babel/helper-module-transforms": "^7.4.3",
|
||||
"@babel/helper-module-transforms": "^7.4.4",
|
||||
"@babel/helper-plugin-utils": "^7.0.0",
|
||||
"@babel/helper-simple-access": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-modules-systemjs": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.0.tgz",
|
||||
"integrity": "sha512-gjPdHmqiNhVoBqus5qK60mWPp1CmYWp/tkh11mvb0rrys01HycEGD7NvvSoKXlWEfSM9TcL36CpsK8ElsADptQ==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz",
|
||||
"integrity": "sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==",
|
||||
"requires": {
|
||||
"@babel/helper-hoist-variables": "^7.4.0",
|
||||
"@babel/helper-hoist-variables": "^7.4.4",
|
||||
"@babel/helper-plugin-utils": "^7.0.0"
|
||||
}
|
||||
},
|
||||
@@ -1161,17 +1183,17 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-named-capturing-groups-regex": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.2.tgz",
|
||||
"integrity": "sha512-NsAuliSwkL3WO2dzWTOL1oZJHm0TM8ZY8ZSxk2ANyKkt5SQlToGA4pzctmq1BEjoacurdwZ3xp2dCQWJkME0gQ==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz",
|
||||
"integrity": "sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA==",
|
||||
"requires": {
|
||||
"regexp-tree": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-new-target": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.0.tgz",
|
||||
"integrity": "sha512-6ZKNgMQmQmrEX/ncuCwnnw1yVGoaOW5KpxNhoWI7pCQdA0uZ0HqHGqenCUIENAnxRjy2WwNQ30gfGdIgqJXXqw==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz",
|
||||
"integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==",
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.0.0"
|
||||
}
|
||||
@@ -1186,11 +1208,11 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-parameters": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.3.tgz",
|
||||
"integrity": "sha512-ULJYC2Vnw96/zdotCZkMGr2QVfKpIT/4/K+xWWY0MbOJyMZuk660BGkr3bEKWQrrciwz6xpmft39nA4BF7hJuA==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz",
|
||||
"integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==",
|
||||
"requires": {
|
||||
"@babel/helper-call-delegate": "^7.4.0",
|
||||
"@babel/helper-call-delegate": "^7.4.4",
|
||||
"@babel/helper-get-function-arity": "^7.0.0",
|
||||
"@babel/helper-plugin-utils": "^7.0.0"
|
||||
}
|
||||
@@ -1240,9 +1262,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-regenerator": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.3.tgz",
|
||||
"integrity": "sha512-kEzotPuOpv6/iSlHroCDydPkKYw7tiJGKlmYp6iJn4a6C/+b2FdttlJsLKYxolYHgotTJ5G5UY5h0qey5ka3+A==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.4.tgz",
|
||||
"integrity": "sha512-Zz3w+pX1SI0KMIiqshFZkwnVGUhDZzpX2vtPzfJBKQQq8WsP/Xy9DNdELWivxcKOCX/Pywge4SiEaPaLtoDT4g==",
|
||||
"requires": {
|
||||
"regenerator-transform": "^0.13.4"
|
||||
}
|
||||
@@ -1281,9 +1303,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-template-literals": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz",
|
||||
"integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz",
|
||||
"integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==",
|
||||
"requires": {
|
||||
"@babel/helper-annotate-as-pure": "^7.0.0",
|
||||
"@babel/helper-plugin-utils": "^7.0.0"
|
||||
@@ -1298,12 +1320,12 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-unicode-regex": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.3.tgz",
|
||||
"integrity": "sha512-lnSNgkVjL8EMtnE8eSS7t2ku8qvKH3eqNf/IwIfnSPUqzgqYmRwzdsQWv4mNQAN9Nuo6Gz1Y0a4CSmdpu1Pp6g==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz",
|
||||
"integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==",
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.0.0",
|
||||
"@babel/helper-regex": "^7.4.3",
|
||||
"@babel/helper-regex": "^7.4.4",
|
||||
"regexpu-core": "^4.5.4"
|
||||
}
|
||||
},
|
||||
@@ -1382,39 +1404,51 @@
|
||||
}
|
||||
},
|
||||
"@babel/runtime": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.3.tgz",
|
||||
"integrity": "sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.4.tgz",
|
||||
"integrity": "sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==",
|
||||
"requires": {
|
||||
"regenerator-runtime": "^0.13.2"
|
||||
}
|
||||
},
|
||||
"@babel/template": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz",
|
||||
"integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz",
|
||||
"integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==",
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.0.0",
|
||||
"@babel/parser": "^7.4.0",
|
||||
"@babel/types": "^7.4.0"
|
||||
"@babel/parser": "^7.4.4",
|
||||
"@babel/types": "^7.4.4"
|
||||
}
|
||||
},
|
||||
"@babel/traverse": {
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz",
|
||||
"integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz",
|
||||
"integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==",
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.0.0",
|
||||
"@babel/generator": "^7.4.0",
|
||||
"@babel/generator": "^7.4.4",
|
||||
"@babel/helper-function-name": "^7.1.0",
|
||||
"@babel/helper-split-export-declaration": "^7.4.0",
|
||||
"@babel/parser": "^7.4.3",
|
||||
"@babel/types": "^7.4.0",
|
||||
"@babel/helper-split-export-declaration": "^7.4.4",
|
||||
"@babel/parser": "^7.4.4",
|
||||
"@babel/types": "^7.4.4",
|
||||
"debug": "^4.1.0",
|
||||
"globals": "^11.1.0",
|
||||
"lodash": "^4.17.11"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/generator": {
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz",
|
||||
"integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.4.4",
|
||||
"jsesc": "^2.5.1",
|
||||
"lodash": "^4.17.11",
|
||||
"source-map": "^0.5.0",
|
||||
"trim-right": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
@@ -1424,9 +1458,14 @@
|
||||
}
|
||||
},
|
||||
"globals": {
|
||||
"version": "11.11.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz",
|
||||
"integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw=="
|
||||
"version": "11.12.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
|
||||
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
|
||||
},
|
||||
"jsesc": {
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
|
||||
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.11",
|
||||
@@ -1437,13 +1476,18 @@
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.5.7",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
|
||||
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@babel/types": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
|
||||
"integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
|
||||
"version": "7.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
|
||||
"integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
|
||||
"requires": {
|
||||
"esutils": "^2.0.2",
|
||||
"lodash": "^4.17.11",
|
||||
@@ -1918,9 +1962,9 @@
|
||||
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
|
||||
"integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
|
||||
"version": "1.10.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz",
|
||||
"integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==",
|
||||
"requires": {
|
||||
"path-parse": "^1.0.6"
|
||||
}
|
||||
@@ -2029,9 +2073,9 @@
|
||||
}
|
||||
},
|
||||
"binary-search": {
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.4.tgz",
|
||||
"integrity": "sha512-dPxU/vZLnH0tEVjVPgi015oSwqu6oLfCeHywuFRhBE0yM0mYocvleTl8qsdM1YFhRzTRhM1+VzS8XLDVrHPopg=="
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.5.tgz",
|
||||
"integrity": "sha512-RHFP0AdU6KAB0CCZsRMU2CJTk2EpL8GLURT+4gilpjr1f/7M91FgUMnXuQLmf3OKLet34gjuNFwO7e4agdX5pw=="
|
||||
},
|
||||
"bintrees": {
|
||||
"version": "1.0.2",
|
||||
@@ -2108,13 +2152,13 @@
|
||||
"integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8="
|
||||
},
|
||||
"browserslist": {
|
||||
"version": "4.5.4",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz",
|
||||
"integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==",
|
||||
"version": "4.5.6",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.6.tgz",
|
||||
"integrity": "sha512-o/hPOtbU9oX507lIqon+UvPYqpx3mHc8cV3QemSBTXwkG8gSQSK6UKvXcE/DcleU3+A59XTUHyCvZ5qGy8xVAg==",
|
||||
"requires": {
|
||||
"caniuse-lite": "^1.0.30000955",
|
||||
"electron-to-chromium": "^1.3.122",
|
||||
"node-releases": "^1.1.13"
|
||||
"caniuse-lite": "^1.0.30000963",
|
||||
"electron-to-chromium": "^1.3.127",
|
||||
"node-releases": "^1.1.17"
|
||||
}
|
||||
},
|
||||
"buffer-alloc": {
|
||||
@@ -2186,9 +2230,9 @@
|
||||
"integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30000957",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz",
|
||||
"integrity": "sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ=="
|
||||
"version": "1.0.30000967",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000967.tgz",
|
||||
"integrity": "sha512-rUBIbap+VJfxTzrM4akJ00lkvVb5/n5v3EGXfWzSH5zT8aJmGzjA8HWhJ4U6kCpzxozUSnB+yvAYDRPY6mRpgQ=="
|
||||
},
|
||||
"caseless": {
|
||||
"version": "0.12.0",
|
||||
@@ -2970,16 +3014,16 @@
|
||||
}
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.3.124",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz",
|
||||
"integrity": "sha512-glecGr/kFdfeXUHOHAWvGcXrxNU+1wSO/t5B23tT1dtlvYB26GY8aHzZSWD7HqhqC800Lr+w/hQul6C5AF542w=="
|
||||
"version": "1.3.133",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.133.tgz",
|
||||
"integrity": "sha512-lyoC8aoqbbDqsprb6aPdt9n3DpOZZzdz/T4IZKsR0/dkZIxnJVUjjcpOSwA66jPRIOyDAamCTAUqweU05kKNSg=="
|
||||
},
|
||||
"element-resize-detector": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.0.tgz",
|
||||
"integrity": "sha512-UmhNB8sIJVZeg56gEjgmMd6p37sCg8j8trVW0LZM7Wzv+kxQ5CnRHcgRKBTB/kFUSn3e7UP59kl2V2U8Du1hmg==",
|
||||
"version": "1.1.15",
|
||||
"resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.1.15.tgz",
|
||||
"integrity": "sha512-16/5avDegXlUxytGgaumhjyQoM6hpp5j3+L79sYq5hlXfTNRy5WMMuTVWkZU3egp/CokCmTmvf18P3KeB57Iog==",
|
||||
"requires": {
|
||||
"batch-processor": "1.0.0"
|
||||
"batch-processor": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"emissary": {
|
||||
@@ -3282,8 +3326,8 @@
|
||||
}
|
||||
},
|
||||
"find-and-replace": {
|
||||
"version": "https://www.atom.io/api/packages/find-and-replace/versions/0.218.9/tarball",
|
||||
"integrity": "sha512-j1KWRa8Ki9P3G3//kP9sWUqa8vva3+HiWfZJAR8kAaOJFUqy9EGOp6SR3Xs6ChQbk8kHmQBnIcYUjCz/gDoJ/g==",
|
||||
"version": "https://www.atom.io/api/packages/find-and-replace/versions/0.218.10/tarball",
|
||||
"integrity": "sha512-P9pFWPlUIUO+COMR6VdTQa7Q4JUcrSS8NALq5Pc0RI8scoMoLnZ5RSReKgYp5Gnc7kshPPa09agw3GitLFmorw==",
|
||||
"requires": {
|
||||
"binary-search": "^1.3.3",
|
||||
"element-resize-detector": "^1.1.10",
|
||||
@@ -3461,6 +3505,16 @@
|
||||
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
|
||||
"integrity": "sha1-a+Dem+mYzhavivwkSXue6bfM2a0="
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
|
||||
"integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.2",
|
||||
"jsonfile": "^4.0.0",
|
||||
"universalify": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"fs-minipass": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
|
||||
@@ -3531,8 +3585,8 @@
|
||||
"integrity": "sha1-gy9kifvodnaUWVmckUpnDsIpR+4="
|
||||
},
|
||||
"fuzzy-finder": {
|
||||
"version": "https://www.atom.io/api/packages/fuzzy-finder/versions/1.13.2/tarball",
|
||||
"integrity": "sha512-L93zrlzaTpibScRPy8v9h/4i0f9heTuBs2gqB+tEr9PTjihlaxPwBmjFVzrHQ8rPs+aD7Fxi5O1LhcBOMo2xdA==",
|
||||
"version": "https://www.atom.io/api/packages/fuzzy-finder/versions/1.13.3/tarball",
|
||||
"integrity": "sha512-wVj9JkOZaeK26OtuTi3bMr8TlZ0srwmf3avtvMBnYjza4eueHOrRM6i+yxgoaPqv2ODQl1T33IldXFo1z5YWMw==",
|
||||
"requires": {
|
||||
"@atom/fuzzy-native": "^1.0.1",
|
||||
"async": "0.2.6",
|
||||
@@ -3662,8 +3716,8 @@
|
||||
}
|
||||
},
|
||||
"github": {
|
||||
"version": "https://www.atom.io/api/packages/github/versions/0.28.0/tarball",
|
||||
"integrity": "sha512-QTxAaN796hGVARelwZB/rXjoivpim5H+o4W2FVmJ68ExA2/9tchFGM5S24LOTRqBnOVsitk/uesGuNweE9HNSQ==",
|
||||
"version": "https://www.atom.io/api/packages/github/versions/0.29.0/tarball",
|
||||
"integrity": "sha512-XlPinyfFjpsCEbEoZMspiJtrjwAVD/27kJJZWqRZhGxieAEO4wH6X/F5p5BoYbq3LfwMASIWEZXJ0pP5v1O/0Q==",
|
||||
"requires": {
|
||||
"@atom/babel-plugin-chai-assert-async": "1.0.0",
|
||||
"@atom/babel7-transpiler": "1.0.0-1",
|
||||
@@ -3698,7 +3752,7 @@
|
||||
"underscore-plus": "1.7.0",
|
||||
"what-the-diff": "0.6.0",
|
||||
"what-the-status": "1.0.3",
|
||||
"whats-my-line": "0.1.1-0",
|
||||
"whats-my-line": "0.1.1",
|
||||
"yubikiri": "2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
@@ -3707,29 +3761,11 @@
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
|
||||
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
|
||||
"integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.2",
|
||||
"jsonfile": "^4.0.0",
|
||||
"universalify": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"moment": {
|
||||
"version": "2.24.0",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
|
||||
"integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
|
||||
},
|
||||
"temp": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/temp/-/temp-0.9.0.tgz",
|
||||
"integrity": "sha512-YfUhPQCJoNQE5N+FJQcdPz63O3x3sdT4Xju69Gj4iZe0lBKOtnAMi0SLj9xKhGkcGhsxThvTJ/usxtFPo438zQ==",
|
||||
"requires": {
|
||||
"rimraf": "~2.6.2"
|
||||
}
|
||||
},
|
||||
"underscore": {
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
|
||||
@@ -4368,11 +4404,11 @@
|
||||
}
|
||||
},
|
||||
"language-c": {
|
||||
"version": "https://www.atom.io/api/packages/language-c/versions/0.60.15/tarball",
|
||||
"integrity": "sha512-dCNjAEwyA69lnWYiiSOGEbEFuswaHCYdkeaat4TJw48oNTDgnXnUnPeyEimbL5MIx4iLJx1dWg8r3kTmYBTvYQ==",
|
||||
"version": "https://www.atom.io/api/packages/language-c/versions/0.60.16/tarball",
|
||||
"integrity": "sha512-cg6q/mAeHpj7rMe9J3NoA9cfz+g0zKkPRhZFSGaspTEUPGGFZj+tJcBBpbIeC2vl1bhoL7e8G41fzA3hjC7+4Q==",
|
||||
"requires": {
|
||||
"tree-sitter-c": "^0.13.12",
|
||||
"tree-sitter-cpp": "^0.13.14"
|
||||
"tree-sitter-c": "^0.13.13",
|
||||
"tree-sitter-cpp": "^0.13.15"
|
||||
}
|
||||
},
|
||||
"language-clojure": {
|
||||
@@ -4410,8 +4446,8 @@
|
||||
}
|
||||
},
|
||||
"language-html": {
|
||||
"version": "https://www.atom.io/api/packages/language-html/versions/0.52.0/tarball",
|
||||
"integrity": "sha512-fmj0XFE6x8LsiJwcTtXDqDlajcPYDf+ZFHE13K4N1fQrWa7/lICN5k0qOWTvWZJPeEL+p32okzN+SdWmiYKdpw==",
|
||||
"version": "https://www.atom.io/api/packages/language-html/versions/0.52.1/tarball",
|
||||
"integrity": "sha512-39BmsxqzTJcb6u5bSqv/k/bigdZibbMm3BHascMuWHHl5swIQlJhYf+QPR3ozaojNK/aFbx4hj4zDolmlFEKlA==",
|
||||
"requires": {
|
||||
"atom-grammar-test": "^0.6.3",
|
||||
"tree-sitter-embedded-template": "^0.13.0",
|
||||
@@ -4419,8 +4455,8 @@
|
||||
}
|
||||
},
|
||||
"language-hyperlink": {
|
||||
"version": "https://www.atom.io/api/packages/language-hyperlink/versions/0.17.0/tarball",
|
||||
"integrity": "sha512-V7IEqrIvn75LX/iQ/MPA75nKdfQ3kfJ5zWvUoCAxfvE9tJ6X25eSvqqgp10zxI0yjB9AQ/JDywYsKd5fEmQ8NQ=="
|
||||
"version": "https://www.atom.io/api/packages/language-hyperlink/versions/0.17.1/tarball",
|
||||
"integrity": "sha512-bntgT5AVqSbWZpjjiGbKVfzjocWHgDLbfAnECKkk87owjlMeuzbZaylI+HRdbVxPMt9K1UdFRVT/NUaia+A3+g=="
|
||||
},
|
||||
"language-java": {
|
||||
"version": "https://www.atom.io/api/packages/language-java/versions/0.31.3/tarball",
|
||||
@@ -4436,8 +4472,11 @@
|
||||
}
|
||||
},
|
||||
"language-json": {
|
||||
"version": "https://www.atom.io/api/packages/language-json/versions/0.19.2/tarball",
|
||||
"integrity": "sha512-iJtZm5+vulzXeXgW4ig+8fGk1okZGCZPqlQwOGwlrQosLPx/h+fAhlZEAr4qt20hn8W9EFw/bUprf48XdJpVoQ=="
|
||||
"version": "https://www.atom.io/api/packages/language-json/versions/1.0.0/tarball",
|
||||
"integrity": "sha512-oq7QgVaMbFVggiERCRihooIvzeELhpoPQey9dZVeP6ICjYKsVOa75jqaYBfBIWoIpigsVUpZKY6GJtz9D5GsnQ==",
|
||||
"requires": {
|
||||
"tree-sitter-json": "^0.13.1"
|
||||
}
|
||||
},
|
||||
"language-less": {
|
||||
"version": "https://www.atom.io/api/packages/language-less/versions/0.34.3/tarball",
|
||||
@@ -5064,8 +5103,8 @@
|
||||
}
|
||||
},
|
||||
"metrics": {
|
||||
"version": "https://www.atom.io/api/packages/metrics/versions/1.7.2/tarball",
|
||||
"integrity": "sha512-/YUFThrNX7pVPR3s1r8z+9j6O6zR8eRBEfAL20HhGTanbLp3vImmfVri9KDigujTZ39oQS6sEFVevsstAg9rIg==",
|
||||
"version": "https://www.atom.io/api/packages/metrics/versions/1.7.4/tarball",
|
||||
"integrity": "sha512-o4ggvI17jLKgKw7i8TIE81vLSlRv1YSjHEckQ2ZlzzTIppM3wkcNkWpmTQl+Rwpn/xwnopiz66YXN6G5XgJ0Jg==",
|
||||
"requires": {
|
||||
"fs-plus": "^3.0.0",
|
||||
"grim": "^2.0.1",
|
||||
@@ -5337,9 +5376,9 @@
|
||||
}
|
||||
},
|
||||
"node-releases": {
|
||||
"version": "1.1.13",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.13.tgz",
|
||||
"integrity": "sha512-fKZGviSXR6YvVPyc011NHuJDSD8gFQvLPmc2d2V3BS4gr52ycyQ1Xzs7a8B+Ax3Ni/W+5h1h4SqmzeoA8WZRmA==",
|
||||
"version": "1.1.18",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.18.tgz",
|
||||
"integrity": "sha512-/mnVgm6u/8OwlIsoyRXtTI0RfQcxZoAZbdwyXap0EeWwcOpDDymyCHM2/aR9XKmHXrvizHoPAOs0pcbiJ6RUaA==",
|
||||
"requires": {
|
||||
"semver": "^5.3.0"
|
||||
},
|
||||
@@ -5966,9 +6005,9 @@
|
||||
}
|
||||
},
|
||||
"regexp-tree": {
|
||||
"version": "0.1.5",
|
||||
"resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz",
|
||||
"integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ=="
|
||||
"version": "0.1.6",
|
||||
"resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.6.tgz",
|
||||
"integrity": "sha512-LFrA98Dw/heXqDojz7qKFdygZmFoiVlvE1Zp7Cq2cvF+ZA+03Gmhy0k0PQlsC1jvHPiTUSs+pDHEuSWv6+6D7w=="
|
||||
},
|
||||
"regexpu": {
|
||||
"version": "1.3.0",
|
||||
@@ -6357,8 +6396,8 @@
|
||||
"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
|
||||
},
|
||||
"settings-view": {
|
||||
"version": "https://www.atom.io/api/packages/settings-view/versions/0.261.2/tarball",
|
||||
"integrity": "sha512-xyYhtom7Ht8mY42Qh/EEUi3lztPv1GRGGFkm1+xyw+XQ2qDlOAkdZOBdogwoQ+JIgD5OilRGzbvSonELaQ+6oA==",
|
||||
"version": "https://www.atom.io/api/packages/settings-view/versions/0.261.3/tarball",
|
||||
"integrity": "sha512-I3TokkkQQ/UEdJIQXP9UotIPxWeWeUcTrdwAbFsFYJXGVDg2ME+hI6WmJ24rtgNtUZqyk1WVoAKK+1ayotTkRQ==",
|
||||
"requires": {
|
||||
"async": "~0.2.9",
|
||||
"dompurify": "^1.0.2",
|
||||
@@ -7059,17 +7098,17 @@
|
||||
}
|
||||
},
|
||||
"tree-sitter-c": {
|
||||
"version": "0.13.12",
|
||||
"resolved": "https://registry.npmjs.org/tree-sitter-c/-/tree-sitter-c-0.13.12.tgz",
|
||||
"integrity": "sha512-hthgSnnh/9stOT1JELCft/J0XFeC6RBKVoTne1311FnQIz5N7pvLEj3IGYXq4fPUBed44P2k/rbUPhjq6UeWtg==",
|
||||
"version": "0.13.13",
|
||||
"resolved": "https://registry.npmjs.org/tree-sitter-c/-/tree-sitter-c-0.13.13.tgz",
|
||||
"integrity": "sha512-ToGn+YgTnidSN7Y1qYoEUlk6kws+WKsEL7G3GmQ62ZUhxE7Oumom65l+QS0JuQXpLeic4BWhXEhOKugOkYpqzA==",
|
||||
"requires": {
|
||||
"nan": "^2.10.0"
|
||||
}
|
||||
},
|
||||
"tree-sitter-cpp": {
|
||||
"version": "0.13.14",
|
||||
"resolved": "https://registry.npmjs.org/tree-sitter-cpp/-/tree-sitter-cpp-0.13.14.tgz",
|
||||
"integrity": "sha512-u9B0iScnGNmpRIwVM8DFU0BRpW92xgi4pOcBtFXZVBiVSdovP2NrDUOg7gEzqENJ7s17nshCh3Dff7hs2DuJag==",
|
||||
"version": "0.13.15",
|
||||
"resolved": "https://registry.npmjs.org/tree-sitter-cpp/-/tree-sitter-cpp-0.13.15.tgz",
|
||||
"integrity": "sha512-S+29FaAfWFCkG02Lw0p4dVFRYnFua9Ua8tY+oFM9ZTgZMaBc7o5rfXVCxNIv5kXKdkHVq0TJWybsFJhtLlQuAw==",
|
||||
"requires": {
|
||||
"nan": "^2.10.0"
|
||||
}
|
||||
@@ -7136,6 +7175,14 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"tree-sitter-json": {
|
||||
"version": "0.13.1",
|
||||
"resolved": "https://registry.npmjs.org/tree-sitter-json/-/tree-sitter-json-0.13.1.tgz",
|
||||
"integrity": "sha512-3Z6CC5vaEX+vvCmZ5ULCYVaILQVqkhv1Yw7Wo7ARlVsOAehVEj5JCag+lyU4RGkZY65tgYyrkw5s0Anv4ij4kQ==",
|
||||
"requires": {
|
||||
"nan": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"tree-sitter-python": {
|
||||
"version": "0.14.0",
|
||||
"resolved": "https://registry.npmjs.org/tree-sitter-python/-/tree-sitter-python-0.14.0.tgz",
|
||||
@@ -7384,23 +7431,13 @@
|
||||
}
|
||||
},
|
||||
"whats-my-line": {
|
||||
"version": "0.1.1-0",
|
||||
"resolved": "https://registry.npmjs.org/whats-my-line/-/whats-my-line-0.1.1-0.tgz",
|
||||
"integrity": "sha512-wuHvdWG/Rlt4pqYL5ymyYnK+rolVa0fTjrCGq/dK3u+yF1qkBKVyI5zGSCaF+zeOx6VjlXrNKewStlj2iInY8A==",
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/whats-my-line/-/whats-my-line-0.1.1.tgz",
|
||||
"integrity": "sha512-ldFEAzvGmd3uTq3STfdwTU43h85NmgIwZG1t9GkM5669iO+hhgD/9UAqhdmEmJPqeLNRsOKx3I7L58trcffrpA==",
|
||||
"requires": {
|
||||
"dugite": "^1.86.0",
|
||||
"superstring": "^2.3.6",
|
||||
"what-the-diff": "^0.6.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"superstring": {
|
||||
"version": "2.3.6",
|
||||
"resolved": "https://registry.npmjs.org/superstring/-/superstring-2.3.6.tgz",
|
||||
"integrity": "sha512-kDTXCXArhHL1lRk2zBW7ByRJByqVwoLK3E3jlf8+LcwQLZgSMs9dwrDHDpBdoOm89kstSBSrGcW8OJqNkxjWrQ==",
|
||||
"requires": {
|
||||
"nan": "^2.10.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"whatwg-fetch": {
|
||||
|
||||
39
package.json
39
package.json
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "atom",
|
||||
"productName": "Atom",
|
||||
"version": "1.38.0-dev",
|
||||
"version": "1.39.0-dev",
|
||||
"description": "A hackable text editor for the 21st Century.",
|
||||
"main": "./src/main-process/main.js",
|
||||
"repository": {
|
||||
@@ -14,6 +14,7 @@
|
||||
"license": "MIT",
|
||||
"electronVersion": "2.0.18",
|
||||
"dependencies": {
|
||||
"@atom/notify": "1.2.1",
|
||||
"@atom/nsfw": "1.0.22",
|
||||
"@atom/source-map-support": "^0.3.4",
|
||||
"@atom/watcher": "1.3.1",
|
||||
@@ -55,7 +56,7 @@
|
||||
"etch": "^0.12.6",
|
||||
"event-kit": "^2.5.3",
|
||||
"exception-reporting": "file:packages/exception-reporting",
|
||||
"find-and-replace": "https://www.atom.io/api/packages/find-and-replace/versions/0.218.9/tarball",
|
||||
"find-and-replace": "https://www.atom.io/api/packages/find-and-replace/versions/0.218.10/tarball",
|
||||
"find-parent-dir": "^0.3.0",
|
||||
"first-mate": "7.3.0",
|
||||
"focus-trap": "2.4.5",
|
||||
@@ -63,10 +64,10 @@
|
||||
"fs-plus": "^3.1.1",
|
||||
"fstream": "0.1.24",
|
||||
"fuzzaldrin": "^2.1",
|
||||
"fuzzy-finder": "https://www.atom.io/api/packages/fuzzy-finder/versions/1.13.2/tarball",
|
||||
"fuzzy-finder": "https://www.atom.io/api/packages/fuzzy-finder/versions/1.13.3/tarball",
|
||||
"git-diff": "file:packages/git-diff",
|
||||
"git-utils": "5.5.0",
|
||||
"github": "https://www.atom.io/api/packages/github/versions/0.28.0/tarball",
|
||||
"github": "https://www.atom.io/api/packages/github/versions/0.29.0/tarball",
|
||||
"glob": "^7.1.1",
|
||||
"go-to-line": "file:packages/go-to-line",
|
||||
"grammar-selector": "file:packages/grammar-selector",
|
||||
@@ -78,7 +79,7 @@
|
||||
"jasmine-tagged": "^1.1.4",
|
||||
"key-path-helpers": "^0.4.0",
|
||||
"keybinding-resolver": "https://www.atom.io/api/packages/keybinding-resolver/versions/0.39.0/tarball",
|
||||
"language-c": "https://www.atom.io/api/packages/language-c/versions/0.60.15/tarball",
|
||||
"language-c": "https://www.atom.io/api/packages/language-c/versions/0.60.16/tarball",
|
||||
"language-clojure": "https://www.atom.io/api/packages/language-clojure/versions/0.22.8/tarball",
|
||||
"language-coffee-script": "https://www.atom.io/api/packages/language-coffee-script/versions/0.50.0/tarball",
|
||||
"language-csharp": "https://www.atom.io/api/packages/language-csharp/versions/1.1.0/tarball",
|
||||
@@ -86,11 +87,11 @@
|
||||
"language-gfm": "https://www.atom.io/api/packages/language-gfm/versions/0.90.6/tarball",
|
||||
"language-git": "https://www.atom.io/api/packages/language-git/versions/0.19.1/tarball",
|
||||
"language-go": "https://www.atom.io/api/packages/language-go/versions/0.47.0/tarball",
|
||||
"language-html": "https://www.atom.io/api/packages/language-html/versions/0.52.0/tarball",
|
||||
"language-hyperlink": "https://www.atom.io/api/packages/language-hyperlink/versions/0.17.0/tarball",
|
||||
"language-html": "https://www.atom.io/api/packages/language-html/versions/0.52.1/tarball",
|
||||
"language-hyperlink": "https://www.atom.io/api/packages/language-hyperlink/versions/0.17.1/tarball",
|
||||
"language-java": "https://www.atom.io/api/packages/language-java/versions/0.31.3/tarball",
|
||||
"language-javascript": "https://www.atom.io/api/packages/language-javascript/versions/0.130.0/tarball",
|
||||
"language-json": "https://www.atom.io/api/packages/language-json/versions/0.19.2/tarball",
|
||||
"language-json": "https://www.atom.io/api/packages/language-json/versions/1.0.0/tarball",
|
||||
"language-less": "https://www.atom.io/api/packages/language-less/versions/0.34.3/tarball",
|
||||
"language-make": "https://www.atom.io/api/packages/language-make/versions/0.23.0/tarball",
|
||||
"language-mustache": "https://www.atom.io/api/packages/language-mustache/versions/0.14.5/tarball",
|
||||
@@ -118,7 +119,7 @@
|
||||
"link": "file:packages/link",
|
||||
"markdown-preview": "https://www.atom.io/api/packages/markdown-preview/versions/0.160.0/tarball",
|
||||
"marked": "^0.3.12",
|
||||
"metrics": "https://www.atom.io/api/packages/metrics/versions/1.7.2/tarball",
|
||||
"metrics": "https://www.atom.io/api/packages/metrics/versions/1.7.4/tarball",
|
||||
"minimatch": "^3.0.3",
|
||||
"mocha": "2.5.1",
|
||||
"mocha-junit-reporter": "^1.13.0",
|
||||
@@ -145,7 +146,7 @@
|
||||
"season": "^6.0.2",
|
||||
"semver": "^4.3.3",
|
||||
"service-hub": "^0.7.4",
|
||||
"settings-view": "https://www.atom.io/api/packages/settings-view/versions/0.261.2/tarball",
|
||||
"settings-view": "https://www.atom.io/api/packages/settings-view/versions/0.261.3/tarball",
|
||||
"sinon": "1.17.4",
|
||||
"snippets": "https://www.atom.io/api/packages/snippets/versions/1.5.0/tarball",
|
||||
"solarized-dark-syntax": "file:packages/solarized-dark-syntax",
|
||||
@@ -200,9 +201,9 @@
|
||||
"dev-live-reload": "file:./packages/dev-live-reload",
|
||||
"encoding-selector": "0.23.9",
|
||||
"exception-reporting": "file:./packages/exception-reporting",
|
||||
"find-and-replace": "0.218.9",
|
||||
"fuzzy-finder": "1.13.2",
|
||||
"github": "0.28.0",
|
||||
"find-and-replace": "0.218.10",
|
||||
"fuzzy-finder": "1.13.3",
|
||||
"github": "0.29.0",
|
||||
"git-diff": "file:./packages/git-diff",
|
||||
"go-to-line": "file:./packages/go-to-line",
|
||||
"grammar-selector": "file:./packages/grammar-selector",
|
||||
@@ -212,11 +213,11 @@
|
||||
"line-ending-selector": "file:./packages/line-ending-selector",
|
||||
"link": "file:./packages/link",
|
||||
"markdown-preview": "0.160.0",
|
||||
"metrics": "1.7.2",
|
||||
"metrics": "1.7.4",
|
||||
"notifications": "0.70.6",
|
||||
"open-on-github": "1.3.1",
|
||||
"package-generator": "1.3.0",
|
||||
"settings-view": "0.261.2",
|
||||
"settings-view": "0.261.3",
|
||||
"snippets": "1.5.0",
|
||||
"spell-check": "0.74.5",
|
||||
"status-bar": "1.8.17",
|
||||
@@ -229,7 +230,7 @@
|
||||
"welcome": "0.36.9",
|
||||
"whitespace": "0.37.7",
|
||||
"wrap-guide": "0.41.0",
|
||||
"language-c": "0.60.15",
|
||||
"language-c": "0.60.16",
|
||||
"language-clojure": "0.22.8",
|
||||
"language-coffee-script": "0.50.0",
|
||||
"language-csharp": "1.1.0",
|
||||
@@ -237,11 +238,11 @@
|
||||
"language-gfm": "0.90.6",
|
||||
"language-git": "0.19.1",
|
||||
"language-go": "0.47.0",
|
||||
"language-html": "0.52.0",
|
||||
"language-hyperlink": "0.17.0",
|
||||
"language-html": "0.52.1",
|
||||
"language-hyperlink": "0.17.1",
|
||||
"language-java": "0.31.3",
|
||||
"language-javascript": "0.130.0",
|
||||
"language-json": "0.19.2",
|
||||
"language-json": "1.0.0",
|
||||
"language-less": "0.34.3",
|
||||
"language-make": "0.23.0",
|
||||
"language-mustache": "0.14.5",
|
||||
|
||||
@@ -69,7 +69,10 @@ module.exports = function (packagedAppPath) {
|
||||
requiredModuleRelativePath === path.join('..', 'node_modules', 'tree-sitter', 'index.js') ||
|
||||
requiredModuleRelativePath === path.join('..', 'node_modules', 'yauzl', 'index.js') ||
|
||||
requiredModuleRelativePath === path.join('..', 'node_modules', 'winreg', 'lib', 'registry.js') ||
|
||||
requiredModuleRelativePath === path.join('..', 'node_modules', '@atom', 'fuzzy-native', 'lib', 'main.js')
|
||||
requiredModuleRelativePath === path.join('..', 'node_modules', '@atom', 'fuzzy-native', 'lib', 'main.js') ||
|
||||
// The startup-time script is used by both the renderer and the main process and having it in the
|
||||
// snapshot causes issues.
|
||||
requiredModuleRelativePath === path.join('..', 'src', 'startup-time.js')
|
||||
)
|
||||
}
|
||||
}).then(({snapshotScript}) => {
|
||||
|
||||
336
script/package-lock.json
generated
336
script/package-lock.json
generated
@@ -232,6 +232,15 @@
|
||||
"resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
|
||||
"integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E="
|
||||
},
|
||||
"array-includes": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
|
||||
"integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
|
||||
"requires": {
|
||||
"define-properties": "^1.1.2",
|
||||
"es-abstract": "^1.7.0"
|
||||
}
|
||||
},
|
||||
"array-iterate": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.2.tgz",
|
||||
@@ -1168,6 +1177,11 @@
|
||||
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
|
||||
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
|
||||
},
|
||||
"contains-path": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
|
||||
"integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo="
|
||||
},
|
||||
"convert-source-map": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
|
||||
@@ -1397,6 +1411,21 @@
|
||||
"inherits": "^2.0.3"
|
||||
}
|
||||
},
|
||||
"define-properties": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
|
||||
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
|
||||
"requires": {
|
||||
"object-keys": "^1.0.12"
|
||||
},
|
||||
"dependencies": {
|
||||
"object-keys": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
|
||||
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"define-property": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
|
||||
@@ -1964,6 +1993,36 @@
|
||||
"is-arrayish": "^0.2.1"
|
||||
}
|
||||
},
|
||||
"es-abstract": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
|
||||
"integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
|
||||
"requires": {
|
||||
"es-to-primitive": "^1.2.0",
|
||||
"function-bind": "^1.1.1",
|
||||
"has": "^1.0.3",
|
||||
"is-callable": "^1.1.4",
|
||||
"is-regex": "^1.0.4",
|
||||
"object-keys": "^1.0.12"
|
||||
},
|
||||
"dependencies": {
|
||||
"object-keys": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
|
||||
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"es-to-primitive": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
|
||||
"integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
|
||||
"requires": {
|
||||
"is-callable": "^1.1.4",
|
||||
"is-date-object": "^1.0.1",
|
||||
"is-symbol": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"es5-ext": {
|
||||
"version": "0.10.45",
|
||||
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz",
|
||||
@@ -2146,19 +2205,189 @@
|
||||
}
|
||||
},
|
||||
"eslint-config-standard": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-6.2.0.tgz",
|
||||
"integrity": "sha1-HSOE7gdN5va2wPK76XaGMDJWWu4="
|
||||
"version": "12.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz",
|
||||
"integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ=="
|
||||
},
|
||||
"eslint-config-standard-jsx": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-3.2.0.tgz",
|
||||
"integrity": "sha1-wkDibtkZoRpCqk3oBZRys4Jo1iA="
|
||||
},
|
||||
"eslint-import-resolver-node": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
|
||||
"integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
|
||||
"requires": {
|
||||
"debug": "^2.6.9",
|
||||
"resolve": "^1.5.0"
|
||||
}
|
||||
},
|
||||
"eslint-module-utils": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz",
|
||||
"integrity": "sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==",
|
||||
"requires": {
|
||||
"debug": "^2.6.8",
|
||||
"pkg-dir": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"eslint-plugin-es": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz",
|
||||
"integrity": "sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw==",
|
||||
"requires": {
|
||||
"eslint-utils": "^1.3.0",
|
||||
"regexpp": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"eslint-plugin-import": {
|
||||
"version": "2.17.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.17.2.tgz",
|
||||
"integrity": "sha512-m+cSVxM7oLsIpmwNn2WXTJoReOF9f/CtLMo7qOVmKd1KntBy0hEcuNZ3erTmWjx+DxRO0Zcrm5KwAvI9wHcV5g==",
|
||||
"requires": {
|
||||
"array-includes": "^3.0.3",
|
||||
"contains-path": "^0.1.0",
|
||||
"debug": "^2.6.9",
|
||||
"doctrine": "1.5.0",
|
||||
"eslint-import-resolver-node": "^0.3.2",
|
||||
"eslint-module-utils": "^2.4.0",
|
||||
"has": "^1.0.3",
|
||||
"lodash": "^4.17.11",
|
||||
"minimatch": "^3.0.4",
|
||||
"read-pkg-up": "^2.0.0",
|
||||
"resolve": "^1.10.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"find-up": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
|
||||
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
|
||||
"requires": {
|
||||
"locate-path": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"load-json-file": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
|
||||
"integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.2",
|
||||
"parse-json": "^2.2.0",
|
||||
"pify": "^2.0.0",
|
||||
"strip-bom": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.11",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
|
||||
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"path-parse": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
|
||||
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
|
||||
},
|
||||
"path-type": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
|
||||
"integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
|
||||
"requires": {
|
||||
"pify": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"read-pkg": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
|
||||
"integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
|
||||
"requires": {
|
||||
"load-json-file": "^2.0.0",
|
||||
"normalize-package-data": "^2.3.2",
|
||||
"path-type": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"read-pkg-up": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
|
||||
"integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
|
||||
"requires": {
|
||||
"find-up": "^2.0.0",
|
||||
"read-pkg": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.10.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz",
|
||||
"integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==",
|
||||
"requires": {
|
||||
"path-parse": "^1.0.6"
|
||||
}
|
||||
},
|
||||
"strip-bom": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
|
||||
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
|
||||
}
|
||||
}
|
||||
},
|
||||
"eslint-plugin-node": {
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-9.0.1.tgz",
|
||||
"integrity": "sha512-fljT5Uyy3lkJzuqhxrYanLSsvaILs9I7CmQ31atTtZ0DoIzRbbvInBh4cQ1CrthFHInHYBQxfPmPt6KLHXNXdw==",
|
||||
"requires": {
|
||||
"eslint-plugin-es": "^1.4.0",
|
||||
"eslint-utils": "^1.3.1",
|
||||
"ignore": "^5.1.1",
|
||||
"minimatch": "^3.0.4",
|
||||
"resolve": "^1.10.1",
|
||||
"semver": "^6.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ignore": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.1.tgz",
|
||||
"integrity": "sha512-DWjnQIFLenVrwyRCKZT+7a7/U4Cqgar4WG8V++K3hw+lrW1hc/SIwdiGmtxKCVACmHULTuGeBbHJmbwW7/sAvA=="
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"path-parse": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
|
||||
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.10.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz",
|
||||
"integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==",
|
||||
"requires": {
|
||||
"path-parse": "^1.0.6"
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz",
|
||||
"integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"eslint-plugin-promise": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.0.0.tgz",
|
||||
"integrity": "sha1-FShjXQFg80hOQlzOIWnLdM7AGGo="
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.1.1.tgz",
|
||||
"integrity": "sha512-faAHw7uzlNPy7b45J1guyjazw28M+7gJokKUjC5JSFoYfUEyy6Gw/i7YQvmv2Yk00sUjWcmzXQLpU1Ki/C2IZQ=="
|
||||
},
|
||||
"eslint-plugin-react": {
|
||||
"version": "6.4.1",
|
||||
@@ -2170,9 +2399,14 @@
|
||||
}
|
||||
},
|
||||
"eslint-plugin-standard": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-2.0.1.tgz",
|
||||
"integrity": "sha1-NYlpn/nJF/LCX3apFmh/ZBw2n/M="
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz",
|
||||
"integrity": "sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA=="
|
||||
},
|
||||
"eslint-utils": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz",
|
||||
"integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q=="
|
||||
},
|
||||
"espree": {
|
||||
"version": "3.5.4",
|
||||
@@ -2897,6 +3131,11 @@
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||
},
|
||||
"function-bind": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
|
||||
},
|
||||
"gauge": {
|
||||
"version": "2.7.4",
|
||||
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
|
||||
@@ -3081,6 +3320,14 @@
|
||||
"har-schema": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||
"requires": {
|
||||
"function-bind": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"has-ansi": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
|
||||
@@ -3094,6 +3341,11 @@
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
|
||||
"integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
|
||||
},
|
||||
"has-symbols": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
|
||||
"integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
|
||||
},
|
||||
"has-unicode": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
|
||||
@@ -3384,6 +3636,11 @@
|
||||
"builtin-modules": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"is-callable": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
|
||||
"integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
|
||||
},
|
||||
"is-data-descriptor": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
|
||||
@@ -3392,6 +3649,11 @@
|
||||
"kind-of": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"is-date-object": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
|
||||
"integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
|
||||
},
|
||||
"is-decimal": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz",
|
||||
@@ -3572,6 +3834,14 @@
|
||||
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
|
||||
"integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
|
||||
},
|
||||
"is-regex": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
|
||||
"integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
|
||||
"requires": {
|
||||
"has": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"is-regexp": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
|
||||
@@ -3592,6 +3862,14 @@
|
||||
"resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz",
|
||||
"integrity": "sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ=="
|
||||
},
|
||||
"is-symbol": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
|
||||
"integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
|
||||
"requires": {
|
||||
"has-symbols": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"is-typedarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||
@@ -7763,6 +8041,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"pkg-dir": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
|
||||
"integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
|
||||
"requires": {
|
||||
"find-up": "^2.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"find-up": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
|
||||
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
|
||||
"requires": {
|
||||
"locate-path": "^2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plist": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/plist/-/plist-1.2.0.tgz",
|
||||
@@ -8415,6 +8711,11 @@
|
||||
"safe-regex": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"regexpp": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
|
||||
"integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw=="
|
||||
},
|
||||
"regexpu": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.3.0.tgz",
|
||||
@@ -9054,6 +9355,23 @@
|
||||
"eslint-plugin-react": "~6.4.1",
|
||||
"eslint-plugin-standard": "~2.0.1",
|
||||
"standard-engine": "~5.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"eslint-config-standard": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-6.2.0.tgz",
|
||||
"integrity": "sha1-HSOE7gdN5va2wPK76XaGMDJWWu4="
|
||||
},
|
||||
"eslint-plugin-promise": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.0.0.tgz",
|
||||
"integrity": "sha1-FShjXQFg80hOQlzOIWnLdM7AGGo="
|
||||
},
|
||||
"eslint-plugin-standard": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-2.0.1.tgz",
|
||||
"integrity": "sha1-NYlpn/nJF/LCX3apFmh/ZBw2n/M="
|
||||
}
|
||||
}
|
||||
},
|
||||
"standard-engine": {
|
||||
|
||||
@@ -14,6 +14,11 @@
|
||||
"electron-mksnapshot": "~2.0",
|
||||
"electron-packager": "7.3.0",
|
||||
"electron-winstaller": "2.6.4",
|
||||
"eslint-config-standard": "^12.0.0",
|
||||
"eslint-plugin-import": "^2.17.2",
|
||||
"eslint-plugin-node": "^9.0.1",
|
||||
"eslint-plugin-promise": "^4.1.1",
|
||||
"eslint-plugin-standard": "^4.0.0",
|
||||
"fs-admin": "^0.1.5",
|
||||
"fs-extra": "0.30.0",
|
||||
"glob": "7.0.3",
|
||||
|
||||
@@ -48,6 +48,7 @@ const resourcePath = CONFIG.repositoryRootPath
|
||||
let executablePath
|
||||
if (process.platform === 'darwin') {
|
||||
const executablePaths = glob.sync(path.join(CONFIG.buildOutputPath, '*.app'))
|
||||
assert(executablePaths.length > 0, `No application found in ${CONFIG.buildOutputPath} to run tests against`)
|
||||
assert(executablePaths.length === 1, `More than one application to run tests against was found. ${executablePaths.join(',')}`)
|
||||
executablePath = path.join(executablePaths[0], 'Contents', 'MacOS', path.basename(executablePaths[0], '.app'))
|
||||
} else if (process.platform === 'linux') {
|
||||
|
||||
@@ -78,7 +78,10 @@ jobs:
|
||||
IS_SIGNED_ZIP_BRANCH: $(IsSignedZipBranch)
|
||||
displayName: Build Atom
|
||||
|
||||
- script: node script\vsts\windows-run.js script\test.cmd
|
||||
- powershell: |
|
||||
# Normalize %TEMP% as a long (non 8.3) path to avoid assertion failures comparing paths in temp folders
|
||||
$env:TEMP = (Get-Item -LiteralPath $env:TEMP).FullName
|
||||
node script\vsts\windows-run.js script\test.cmd
|
||||
env:
|
||||
CI: true
|
||||
CI_PROVIDER: VSTS
|
||||
|
||||
@@ -6,7 +6,7 @@ import path from 'path'
|
||||
import { promisify } from 'util'
|
||||
|
||||
import { CompositeDisposable } from 'event-kit'
|
||||
import { watchPath, stopAllWatchers } from '../src/path-watcher'
|
||||
import { PathWatcherManager } from '../src/path-watcher'
|
||||
|
||||
temp.track()
|
||||
|
||||
@@ -17,7 +17,7 @@ const realpath = promisify(fs.realpath)
|
||||
|
||||
const tempMkdir = promisify(temp.mkdir)
|
||||
|
||||
describe('watchPath', function () {
|
||||
describe('PathWatcherManager', function () {
|
||||
let subs
|
||||
|
||||
beforeEach(function () {
|
||||
@@ -26,7 +26,6 @@ describe('watchPath', function () {
|
||||
|
||||
afterEach(async function () {
|
||||
subs.dispose()
|
||||
await stopAllWatchers()
|
||||
})
|
||||
|
||||
function waitForChanges (watcher, ...fileNames) {
|
||||
@@ -51,124 +50,136 @@ describe('watchPath', function () {
|
||||
})
|
||||
}
|
||||
|
||||
describe('watchPath()', function () {
|
||||
it('resolves the returned promise when the watcher begins listening', async function () {
|
||||
const rootDir = await tempMkdir('atom-fsmanager-test-')
|
||||
describe('in "native" mode', () => {
|
||||
let manager
|
||||
|
||||
const watcher = await watchPath(rootDir, {}, () => {})
|
||||
expect(watcher.constructor.name).toBe('PathWatcher')
|
||||
beforeEach(function () {
|
||||
manager = new PathWatcherManager('native')
|
||||
})
|
||||
|
||||
it('reuses an existing native watcher and resolves getStartPromise immediately if attached to a running watcher', async function () {
|
||||
const rootDir = await tempMkdir('atom-fsmanager-test-')
|
||||
|
||||
const watcher0 = await watchPath(rootDir, {}, () => {})
|
||||
const watcher1 = await watchPath(rootDir, {}, () => {})
|
||||
|
||||
expect(watcher0.native).toBe(watcher1.native)
|
||||
afterEach(async function () {
|
||||
await manager.stopAllWatchers()
|
||||
})
|
||||
|
||||
it("reuses existing native watchers even while they're still starting", async function () {
|
||||
const rootDir = await tempMkdir('atom-fsmanager-test-')
|
||||
describe('watchPath()', function () {
|
||||
it('resolves the returned promise when the watcher begins listening', async function () {
|
||||
const rootDir = await tempMkdir('atom-fsmanager-test-')
|
||||
|
||||
const [watcher0, watcher1] = await Promise.all([
|
||||
watchPath(rootDir, {}, () => {}),
|
||||
watchPath(rootDir, {}, () => {})
|
||||
])
|
||||
expect(watcher0.native).toBe(watcher1.native)
|
||||
})
|
||||
const watcher = await manager.watchPath(rootDir, {}, () => {})
|
||||
expect(watcher.constructor.name).toBe('PathWatcher')
|
||||
})
|
||||
|
||||
it("doesn't attach new watchers to a native watcher that's stopping", async function () {
|
||||
const rootDir = await tempMkdir('atom-fsmanager-test-')
|
||||
it('reuses an existing native watcher and resolves getStartPromise immediately if attached to a running watcher', async function () {
|
||||
const rootDir = await tempMkdir('atom-fsmanager-test-')
|
||||
|
||||
const watcher0 = await watchPath(rootDir, {}, () => {})
|
||||
const native0 = watcher0.native
|
||||
const watcher0 = await manager.watchPath(rootDir, {}, () => {})
|
||||
const watcher1 = await manager.watchPath(rootDir, {}, () => {})
|
||||
|
||||
watcher0.dispose()
|
||||
const watcher1 = await watchPath(rootDir, {}, () => {})
|
||||
expect(watcher0.native).toBe(watcher1.native)
|
||||
})
|
||||
|
||||
expect(watcher1.native).not.toBe(native0)
|
||||
})
|
||||
it("reuses existing native watchers even while they're still starting", async function () {
|
||||
const rootDir = await tempMkdir('atom-fsmanager-test-')
|
||||
|
||||
it('reuses an existing native watcher on a parent directory and filters events', async function () {
|
||||
const rootDir = await tempMkdir('atom-fsmanager-test-').then(realpath)
|
||||
const rootFile = path.join(rootDir, 'rootfile.txt')
|
||||
const subDir = path.join(rootDir, 'subdir')
|
||||
const subFile = path.join(subDir, 'subfile.txt')
|
||||
const [watcher0, watcher1] = await Promise.all([
|
||||
manager.watchPath(rootDir, {}, () => {}),
|
||||
manager.watchPath(rootDir, {}, () => {})
|
||||
])
|
||||
expect(watcher0.native).toBe(watcher1.native)
|
||||
})
|
||||
|
||||
await mkdir(subDir)
|
||||
it("doesn't attach new watchers to a native watcher that's stopping", async function () {
|
||||
const rootDir = await tempMkdir('atom-fsmanager-test-')
|
||||
|
||||
// Keep the watchers alive with an undisposed subscription
|
||||
const rootWatcher = await watchPath(rootDir, {}, () => {})
|
||||
const childWatcher = await watchPath(subDir, {}, () => {})
|
||||
const watcher0 = await manager.watchPath(rootDir, {}, () => {})
|
||||
const native0 = watcher0.native
|
||||
|
||||
expect(rootWatcher.native).toBe(childWatcher.native)
|
||||
expect(rootWatcher.native.isRunning()).toBe(true)
|
||||
watcher0.dispose()
|
||||
const watcher1 = await manager.watchPath(rootDir, {}, () => {})
|
||||
|
||||
const firstChanges = Promise.all([
|
||||
waitForChanges(rootWatcher, subFile),
|
||||
waitForChanges(childWatcher, subFile)
|
||||
])
|
||||
await writeFile(subFile, 'subfile\n', { encoding: 'utf8' })
|
||||
await firstChanges
|
||||
expect(watcher1.native).not.toBe(native0)
|
||||
})
|
||||
|
||||
const nextRootEvent = waitForChanges(rootWatcher, rootFile)
|
||||
await writeFile(rootFile, 'rootfile\n', { encoding: 'utf8' })
|
||||
await nextRootEvent
|
||||
})
|
||||
it('reuses an existing native watcher on a parent directory and filters events', async function () {
|
||||
const rootDir = await tempMkdir('atom-fsmanager-test-').then(realpath)
|
||||
const rootFile = path.join(rootDir, 'rootfile.txt')
|
||||
const subDir = path.join(rootDir, 'subdir')
|
||||
const subFile = path.join(subDir, 'subfile.txt')
|
||||
|
||||
it('adopts existing child watchers and filters events appropriately to them', async function () {
|
||||
const parentDir = await tempMkdir('atom-fsmanager-test-')
|
||||
.then(realpath)
|
||||
await mkdir(subDir)
|
||||
|
||||
// Create the directory tree
|
||||
const rootFile = path.join(parentDir, 'rootfile.txt')
|
||||
const subDir0 = path.join(parentDir, 'subdir0')
|
||||
const subFile0 = path.join(subDir0, 'subfile0.txt')
|
||||
const subDir1 = path.join(parentDir, 'subdir1')
|
||||
const subFile1 = path.join(subDir1, 'subfile1.txt')
|
||||
// Keep the watchers alive with an undisposed subscription
|
||||
const rootWatcher = await manager.watchPath(rootDir, {}, () => {})
|
||||
const childWatcher = await manager.watchPath(subDir, {}, () => {})
|
||||
|
||||
await mkdir(subDir0)
|
||||
await mkdir(subDir1)
|
||||
await Promise.all([
|
||||
writeFile(rootFile, 'rootfile\n', { encoding: 'utf8' }),
|
||||
writeFile(subFile0, 'subfile 0\n', { encoding: 'utf8' }),
|
||||
writeFile(subFile1, 'subfile 1\n', { encoding: 'utf8' })
|
||||
])
|
||||
expect(rootWatcher.native).toBe(childWatcher.native)
|
||||
expect(rootWatcher.native.isRunning()).toBe(true)
|
||||
|
||||
// Begin the child watchers and keep them alive
|
||||
const subWatcher0 = await watchPath(subDir0, {}, () => {})
|
||||
const subWatcherChanges0 = waitForChanges(subWatcher0, subFile0)
|
||||
const firstChanges = Promise.all([
|
||||
waitForChanges(rootWatcher, subFile),
|
||||
waitForChanges(childWatcher, subFile)
|
||||
])
|
||||
await writeFile(subFile, 'subfile\n', { encoding: 'utf8' })
|
||||
await firstChanges
|
||||
|
||||
const subWatcher1 = await watchPath(subDir1, {}, () => {})
|
||||
const subWatcherChanges1 = waitForChanges(subWatcher1, subFile1)
|
||||
const nextRootEvent = waitForChanges(rootWatcher, rootFile)
|
||||
await writeFile(rootFile, 'rootfile\n', { encoding: 'utf8' })
|
||||
await nextRootEvent
|
||||
})
|
||||
|
||||
expect(subWatcher0.native).not.toBe(subWatcher1.native)
|
||||
it('adopts existing child watchers and filters events appropriately to them', async function () {
|
||||
const parentDir = await tempMkdir('atom-fsmanager-test-')
|
||||
.then(realpath)
|
||||
|
||||
// Create the parent watcher
|
||||
const parentWatcher = await watchPath(parentDir, {}, () => {})
|
||||
const parentWatcherChanges = waitForChanges(
|
||||
parentWatcher,
|
||||
rootFile,
|
||||
subFile0,
|
||||
subFile1
|
||||
)
|
||||
// Create the directory tree
|
||||
const rootFile = path.join(parentDir, 'rootfile.txt')
|
||||
const subDir0 = path.join(parentDir, 'subdir0')
|
||||
const subFile0 = path.join(subDir0, 'subfile0.txt')
|
||||
const subDir1 = path.join(parentDir, 'subdir1')
|
||||
const subFile1 = path.join(subDir1, 'subfile1.txt')
|
||||
|
||||
expect(subWatcher0.native).toBe(parentWatcher.native)
|
||||
expect(subWatcher1.native).toBe(parentWatcher.native)
|
||||
await mkdir(subDir0)
|
||||
await mkdir(subDir1)
|
||||
await Promise.all([
|
||||
writeFile(rootFile, 'rootfile\n', { encoding: 'utf8' }),
|
||||
writeFile(subFile0, 'subfile 0\n', { encoding: 'utf8' }),
|
||||
writeFile(subFile1, 'subfile 1\n', { encoding: 'utf8' })
|
||||
])
|
||||
|
||||
// Ensure events are filtered correctly
|
||||
await Promise.all([
|
||||
appendFile(rootFile, 'change\n', { encoding: 'utf8' }),
|
||||
appendFile(subFile0, 'change\n', { encoding: 'utf8' }),
|
||||
appendFile(subFile1, 'change\n', { encoding: 'utf8' })
|
||||
])
|
||||
// Begin the child watchers and keep them alive
|
||||
const subWatcher0 = await manager.watchPath(subDir0, {}, () => {})
|
||||
const subWatcherChanges0 = waitForChanges(subWatcher0, subFile0)
|
||||
|
||||
await Promise.all([
|
||||
subWatcherChanges0,
|
||||
subWatcherChanges1,
|
||||
parentWatcherChanges
|
||||
])
|
||||
const subWatcher1 = await manager.watchPath(subDir1, {}, () => {})
|
||||
const subWatcherChanges1 = waitForChanges(subWatcher1, subFile1)
|
||||
|
||||
expect(subWatcher0.native).not.toBe(subWatcher1.native)
|
||||
|
||||
// Create the parent watcher
|
||||
const parentWatcher = await manager.watchPath(parentDir, {}, () => {})
|
||||
const parentWatcherChanges = waitForChanges(
|
||||
parentWatcher,
|
||||
rootFile,
|
||||
subFile0,
|
||||
subFile1
|
||||
)
|
||||
|
||||
expect(subWatcher0.native).toBe(parentWatcher.native)
|
||||
expect(subWatcher1.native).toBe(parentWatcher.native)
|
||||
|
||||
// Ensure events are filtered correctly
|
||||
await Promise.all([
|
||||
appendFile(rootFile, 'change\n', { encoding: 'utf8' }),
|
||||
appendFile(subFile0, 'change\n', { encoding: 'utf8' }),
|
||||
appendFile(subFile1, 'change\n', { encoding: 'utf8' })
|
||||
])
|
||||
|
||||
await Promise.all([
|
||||
subWatcherChanges0,
|
||||
subWatcherChanges1,
|
||||
parentWatcherChanges
|
||||
])
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -59,7 +59,7 @@ describe('Project', () => {
|
||||
})
|
||||
})
|
||||
|
||||
it('does not deserialize paths that are now files', () => {
|
||||
it('does not deserialize paths that are now files', async () => {
|
||||
const childPath = path.join(temp.mkdirSync('atom-spec-project'), 'child')
|
||||
fs.mkdirSync(childPath)
|
||||
|
||||
@@ -70,22 +70,21 @@ describe('Project', () => {
|
||||
grammarRegistry: atom.grammars
|
||||
})
|
||||
atom.project.setPaths([childPath])
|
||||
await stopAllWatchers()
|
||||
const state = atom.project.serialize()
|
||||
|
||||
fs.rmdirSync(childPath)
|
||||
fs.writeFileSync(childPath, 'surprise!\n')
|
||||
|
||||
let err = null
|
||||
waitsForPromise(() =>
|
||||
deserializedProject.deserialize(state, atom.deserializers).catch(e => {
|
||||
err = e
|
||||
})
|
||||
)
|
||||
try {
|
||||
await deserializedProject.deserialize(state, atom.deserializers)
|
||||
} catch (e) {
|
||||
err = e
|
||||
}
|
||||
|
||||
runs(() => {
|
||||
expect(deserializedProject.getPaths()).toEqual([])
|
||||
expect(err.missingProjectPaths).toEqual([childPath])
|
||||
})
|
||||
expect(deserializedProject.getPaths()).toEqual([])
|
||||
expect(err.missingProjectPaths).toEqual([childPath])
|
||||
})
|
||||
|
||||
it('does not include unretained buffers in the serialized state', () => {
|
||||
@@ -1056,18 +1055,20 @@ describe('Project', () => {
|
||||
afterEach(() => sub.dispose())
|
||||
|
||||
const waitForEvents = paths => {
|
||||
const remaining = new Set(paths.map(p => fs.realpathSync(p)))
|
||||
const remaining = new Set(paths.map(path => fs.realpathSync(path)))
|
||||
return new Promise((resolve, reject) => {
|
||||
checkCallback = () => {
|
||||
for (let event of events) {
|
||||
remaining.delete(event.path)
|
||||
}
|
||||
if (remaining.size === 0) {
|
||||
clearTimeout(timeout)
|
||||
resolve()
|
||||
}
|
||||
}
|
||||
|
||||
const expire = () => {
|
||||
clearTimeout(interval)
|
||||
checkCallback = () => {}
|
||||
console.error('Paths not seen:', remaining)
|
||||
reject(
|
||||
@@ -1075,37 +1076,33 @@ describe('Project', () => {
|
||||
)
|
||||
}
|
||||
|
||||
checkCallback()
|
||||
setTimeout(expire, 2000)
|
||||
const interval = setInterval(checkCallback, 100)
|
||||
const timeout = setTimeout(expire, 2000)
|
||||
})
|
||||
}
|
||||
|
||||
it('reports filesystem changes within project paths', () => {
|
||||
it('reports filesystem changes within project paths', async () => {
|
||||
const dirOne = temp.mkdirSync('atom-spec-project-one')
|
||||
const fileOne = path.join(dirOne, 'file-one.txt')
|
||||
const fileTwo = path.join(dirOne, 'file-two.txt')
|
||||
const dirTwo = temp.mkdirSync('atom-spec-project-two')
|
||||
const fileThree = path.join(dirTwo, 'file-three.txt')
|
||||
|
||||
// Ensure that all preexisting watchers are stopped
|
||||
waitsForPromise(() => stopAllWatchers())
|
||||
await stopAllWatchers()
|
||||
|
||||
runs(() => atom.project.setPaths([dirOne]))
|
||||
waitsForPromise(() => atom.project.getWatcherPromise(dirOne))
|
||||
atom.project.setPaths([dirOne])
|
||||
|
||||
runs(() => {
|
||||
expect(atom.project.watcherPromisesByPath[dirTwo]).toEqual(undefined)
|
||||
await atom.project.getWatcherPromise(dirOne)
|
||||
|
||||
fs.writeFileSync(fileThree, 'three\n')
|
||||
fs.writeFileSync(fileTwo, 'two\n')
|
||||
fs.writeFileSync(fileOne, 'one\n')
|
||||
})
|
||||
expect(atom.project.watcherPromisesByPath[dirTwo]).toEqual(undefined)
|
||||
|
||||
waitsForPromise(() => waitForEvents([fileOne, fileTwo]))
|
||||
fs.writeFileSync(fileThree, 'three\n')
|
||||
fs.writeFileSync(fileTwo, 'two\n')
|
||||
fs.writeFileSync(fileOne, 'one\n')
|
||||
|
||||
runs(() =>
|
||||
expect(events.some(event => event.path === fileThree)).toBeFalsy()
|
||||
)
|
||||
await waitForEvents([fileOne, fileTwo])
|
||||
|
||||
expect(events.some(event => event.path === fileThree)).toBeFalsy()
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@@ -507,6 +507,7 @@ describe('TreeSitterLanguageMode', () => {
|
||||
scopeName: 'javascript',
|
||||
parser: 'tree-sitter-javascript',
|
||||
scopes: {
|
||||
comment: 'comment',
|
||||
property_identifier: 'property',
|
||||
'call_expression > identifier': 'function',
|
||||
template_string: 'string',
|
||||
@@ -766,6 +767,62 @@ describe('TreeSitterLanguageMode', () => {
|
||||
])
|
||||
})
|
||||
|
||||
it('terminates comment token at the end of an injection, so that the next injection is NOT a continuation of the comment', async () => {
|
||||
const ejsGrammar = new TreeSitterGrammar(
|
||||
atom.grammars,
|
||||
ejsGrammarPath,
|
||||
{
|
||||
id: 'ejs',
|
||||
parser: 'tree-sitter-embedded-template',
|
||||
scopes: {
|
||||
'"<%"': 'directive',
|
||||
'"%>"': 'directive'
|
||||
},
|
||||
injectionPoints: [
|
||||
{
|
||||
type: 'template',
|
||||
language (node) { return 'javascript' },
|
||||
content (node) { return node.descendantsOfType('code') },
|
||||
newlinesBetween: true
|
||||
},
|
||||
{
|
||||
type: 'template',
|
||||
language (node) { return 'html' },
|
||||
content (node) { return node.descendantsOfType('content') }
|
||||
}
|
||||
]
|
||||
}
|
||||
)
|
||||
|
||||
atom.grammars.addGrammar(jsGrammar)
|
||||
atom.grammars.addGrammar(htmlGrammar)
|
||||
|
||||
buffer.setText('<% // js comment %>\n<% b() %>')
|
||||
const languageMode = new TreeSitterLanguageMode({
|
||||
buffer,
|
||||
grammar: ejsGrammar,
|
||||
grammars: atom.grammars
|
||||
})
|
||||
buffer.setLanguageMode(languageMode)
|
||||
|
||||
expectTokensToEqual(editor, [
|
||||
[
|
||||
{ text: '<%', scopes: ['directive'] },
|
||||
{ text: ' ', scopes: [] },
|
||||
{ text: '// js comment ', scopes: ['comment'] },
|
||||
{ text: '%>', scopes: ['directive'] },
|
||||
{ text: '', scopes: ['html'] }
|
||||
],
|
||||
[
|
||||
{ text: '<%', scopes: ['directive'] },
|
||||
{ text: ' ', scopes: [] },
|
||||
{ text: 'b', scopes: ['function'] },
|
||||
{ text: '() ', scopes: [] },
|
||||
{ text: '%>', scopes: ['directive'] }
|
||||
]
|
||||
])
|
||||
})
|
||||
|
||||
it('notifies onDidTokenize listeners the first time all syntax highlighting is done', async () => {
|
||||
const promise = new Promise(resolve => {
|
||||
editor.onDidTokenize(event => {
|
||||
|
||||
@@ -44,6 +44,7 @@ const TextEditor = require('./text-editor')
|
||||
const TextBuffer = require('text-buffer')
|
||||
const TextEditorRegistry = require('./text-editor-registry')
|
||||
const AutoUpdateManager = require('./auto-update-manager')
|
||||
const StartupTime = require('./startup-time')
|
||||
|
||||
const stat = util.promisify(fs.stat)
|
||||
|
||||
@@ -529,6 +530,18 @@ class AtomEnvironment {
|
||||
return this.loadTime
|
||||
}
|
||||
|
||||
// Public: Get the all the markers with the information about startup time.
|
||||
//
|
||||
// Returns an array of timing markers.
|
||||
// Each timing is an object with two keys:
|
||||
// * `label`: string
|
||||
// * `time`: Time since the `startTime` (in milliseconds).
|
||||
getStartupMarkers () {
|
||||
const data = StartupTime.exportData()
|
||||
|
||||
return data ? data.markers : []
|
||||
}
|
||||
|
||||
// Public: Get the load settings for the current window.
|
||||
//
|
||||
// Returns an {Object} containing all the load setting key/value pairs.
|
||||
@@ -781,6 +794,8 @@ class AtomEnvironment {
|
||||
|
||||
// Call this method when establishing a real application window.
|
||||
async startEditorWindow () {
|
||||
StartupTime.addMarker('window:environment:start-editor-window:start')
|
||||
|
||||
if (this.getLoadSettings().clearWindowState) {
|
||||
await this.stateStore.clear()
|
||||
}
|
||||
@@ -792,6 +807,7 @@ class AtomEnvironment {
|
||||
const loadStatePromise = this.loadState().then(async state => {
|
||||
this.windowDimensions = state && state.windowDimensions
|
||||
if (!this.getLoadSettings().headless) {
|
||||
StartupTime.addMarker('window:environment:start-editor-window:display-window')
|
||||
await this.displayWindow()
|
||||
}
|
||||
this.commandInstaller.installAtomCommand(false, (error) => {
|
||||
@@ -818,9 +834,11 @@ class AtomEnvironment {
|
||||
|
||||
this.registerDefaultTargetForKeymaps()
|
||||
|
||||
StartupTime.addMarker('window:environment:start-editor-window:load-packages')
|
||||
this.packages.loadPackages()
|
||||
|
||||
const startTime = Date.now()
|
||||
StartupTime.addMarker('window:environment:start-editor-window:deserialize-state')
|
||||
await this.deserialize(state)
|
||||
this.deserializeTimings.atom = Date.now() - startTime
|
||||
|
||||
@@ -856,12 +874,14 @@ class AtomEnvironment {
|
||||
}
|
||||
}))
|
||||
|
||||
StartupTime.addMarker('window:environment:start-editor-window:activate-packages')
|
||||
this.packages.activate()
|
||||
this.keymaps.loadUserKeymap()
|
||||
if (!this.getLoadSettings().safeMode) this.requireUserInitScript()
|
||||
|
||||
this.menu.update()
|
||||
|
||||
StartupTime.addMarker('window:environment:start-editor-window:open-editor')
|
||||
await this.openInitialEmptyEditorIfNecessary()
|
||||
})
|
||||
|
||||
@@ -876,7 +896,11 @@ class AtomEnvironment {
|
||||
this.reopenProjectMenuManager.update()
|
||||
})
|
||||
|
||||
return Promise.all([loadStatePromise, loadHistoryPromise, updateProcessEnvPromise])
|
||||
const output = await Promise.all([loadStatePromise, loadHistoryPromise, updateProcessEnvPromise])
|
||||
|
||||
StartupTime.addMarker('window:environment:start-editor-window:end')
|
||||
|
||||
return output
|
||||
}
|
||||
|
||||
serialize (options) {
|
||||
|
||||
@@ -329,17 +329,17 @@ const configSchema = {
|
||||
default: 40
|
||||
},
|
||||
fileSystemWatcher: {
|
||||
description: 'Choose the underlying implementation used to watch for filesystem changes. Emulating changes will miss any events caused by applications other than Atom, but may help prevent crashes or freezes.',
|
||||
description: 'Choose the underlying implementation used to watch for filesystem changes. Emulating changes will miss any events caused by applications other than Atom, but may help prevent crashes or freezes. Polling may be useful for network drives, but will be more costly in terms of CPU overhead.<br>This setting will require a relaunch of Atom to take effect.',
|
||||
type: 'string',
|
||||
default: 'native',
|
||||
default: 'experimental',
|
||||
enum: [
|
||||
{
|
||||
value: 'native',
|
||||
description: 'Native operating system APIs'
|
||||
description: 'Native operating system APIs (@atom/nsfw)'
|
||||
},
|
||||
{
|
||||
value: 'experimental',
|
||||
description: 'Experimental filesystem watching library'
|
||||
description: 'Experimental (@atom/notify)'
|
||||
},
|
||||
{
|
||||
value: 'poll',
|
||||
@@ -351,6 +351,11 @@ const configSchema = {
|
||||
}
|
||||
]
|
||||
},
|
||||
fileSystemWatcherPollInterval: {
|
||||
description: "If the 'Polling' option is selected for the file system watcher, this will be the interval between polls.",
|
||||
type: 'number',
|
||||
default: 1000
|
||||
},
|
||||
useTreeSitterParsers: {
|
||||
type: 'boolean',
|
||||
default: true,
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
module.exports =
|
||||
CustomEventMixin =
|
||||
componentWillMount: ->
|
||||
@customEventListeners = {}
|
||||
|
||||
componentWillUnmount: ->
|
||||
for name, listeners in @customEventListeners
|
||||
for listener in listeners
|
||||
@getDOMNode().removeEventListener(name, listener)
|
||||
return
|
||||
|
||||
addCustomEventListeners: (customEventListeners) ->
|
||||
for name, listener of customEventListeners
|
||||
@customEventListeners[name] ?= []
|
||||
@customEventListeners[name].push(listener)
|
||||
@getDOMNode().addEventListener(name, listener)
|
||||
return
|
||||
@@ -6,6 +6,7 @@ const StorageFolder = require('../storage-folder')
|
||||
const Config = require('../config')
|
||||
const ConfigFile = require('../config-file')
|
||||
const FileRecoveryService = require('./file-recovery-service')
|
||||
const StartupTime = require('../startup-time')
|
||||
const ipcHelpers = require('../ipc-helpers')
|
||||
const {BrowserWindow, Menu, app, clipboard, dialog, ipcMain, shell, screen} = require('electron')
|
||||
const {CompositeDisposable, Disposable} = require('event-kit')
|
||||
@@ -135,6 +136,8 @@ module.exports =
|
||||
class AtomApplication extends EventEmitter {
|
||||
// Public: The entry point into the Atom application.
|
||||
static open (options) {
|
||||
StartupTime.addMarker('main-process:atom-application:open')
|
||||
|
||||
const socketSecret = getExistingSocketSecret(options.version)
|
||||
const socketPath = getSocketPath(socketSecret)
|
||||
const createApplication = options.createApplication || (async () => {
|
||||
@@ -172,6 +175,8 @@ class AtomApplication extends EventEmitter {
|
||||
}
|
||||
|
||||
constructor (options) {
|
||||
StartupTime.addMarker('main-process:atom-application:constructor:start')
|
||||
|
||||
super()
|
||||
this.quitting = false
|
||||
this.quittingForUpdate = false
|
||||
@@ -214,6 +219,8 @@ class AtomApplication extends EventEmitter {
|
||||
|
||||
this.disposable = new CompositeDisposable()
|
||||
this.handleEvents()
|
||||
|
||||
StartupTime.addMarker('main-process:atom-application:constructor:end')
|
||||
}
|
||||
|
||||
// This stuff was previously done in the constructor, but we want to be able to construct this object
|
||||
@@ -221,6 +228,8 @@ class AtomApplication extends EventEmitter {
|
||||
// of these various sub-objects into the constructor, but you'll need to remove the side-effects they
|
||||
// perform during their construction, adding an initialize method that you call here.
|
||||
async initialize (options) {
|
||||
StartupTime.addMarker('main-process:atom-application:initialize:start')
|
||||
|
||||
global.atomApplication = this
|
||||
|
||||
// DEPRECATED: This can be removed at some point (added in 1.13)
|
||||
@@ -246,6 +255,8 @@ class AtomApplication extends EventEmitter {
|
||||
this.autoUpdateManager.initialize()
|
||||
await socketServerPromise
|
||||
|
||||
StartupTime.addMarker('main-process:atom-application:initialize:end')
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -271,6 +282,7 @@ class AtomApplication extends EventEmitter {
|
||||
}
|
||||
this.config.onDidChange('core.titleBar', () => this.promptForRestart())
|
||||
this.config.onDidChange('core.colorProfile', () => this.promptForRestart())
|
||||
this.config.onDidChange('core.fileSystemWatcher', () => this.promptForRestart())
|
||||
}
|
||||
|
||||
let optionsForWindowsToOpen = []
|
||||
@@ -1084,6 +1096,7 @@ class AtomApplication extends EventEmitter {
|
||||
let openedWindow
|
||||
if (existingWindow) {
|
||||
openedWindow = existingWindow
|
||||
StartupTime.addMarker('main-process:atom-application:open-in-existing')
|
||||
openedWindow.openLocations(locationsToOpen)
|
||||
if (openedWindow.isMinimized()) {
|
||||
openedWindow.restore()
|
||||
@@ -1108,6 +1121,7 @@ class AtomApplication extends EventEmitter {
|
||||
if (!resourcePath) resourcePath = this.resourcePath
|
||||
if (!windowDimensions) windowDimensions = this.getDimensionsForNewWindow()
|
||||
|
||||
StartupTime.addMarker('main-process:atom-application:create-window')
|
||||
openedWindow = this.createWindow({
|
||||
locationsToOpen,
|
||||
windowInitializationScript,
|
||||
|
||||
@@ -2,6 +2,7 @@ const {BrowserWindow, app, dialog, ipcMain} = require('electron')
|
||||
const path = require('path')
|
||||
const url = require('url')
|
||||
const {EventEmitter} = require('events')
|
||||
const StartupTime = require('../startup-time')
|
||||
|
||||
const ICON_PATH = path.resolve(__dirname, '..', '..', 'resources', 'atom.png')
|
||||
|
||||
@@ -11,6 +12,8 @@ let nextId = 0
|
||||
module.exports =
|
||||
class AtomWindow extends EventEmitter {
|
||||
constructor (atomApplication, fileRecoveryService, settings = {}) {
|
||||
StartupTime.addMarker('main-process:atom-window:start')
|
||||
|
||||
super()
|
||||
|
||||
this.id = nextId++
|
||||
@@ -78,6 +81,22 @@ class AtomWindow extends EventEmitter {
|
||||
.some(location => location.pathToOpen && !location.isDirectory)
|
||||
this.loadSettings.initialProjectRoots = this.projectRoots
|
||||
|
||||
StartupTime.addMarker('main-process:atom-window:end')
|
||||
|
||||
// Expose the startup markers to the renderer process, so we can have unified
|
||||
// measures about startup time between the main process and the renderer process.
|
||||
Object.defineProperty(this.browserWindow, 'startupMarkers', {
|
||||
get: () => {
|
||||
// We only want to make the main process startup data available once,
|
||||
// so if the window is refreshed or a new window is opened, the
|
||||
// renderer process won't use it again.
|
||||
const timingData = StartupTime.exportData()
|
||||
StartupTime.deleteData()
|
||||
|
||||
return timingData
|
||||
}
|
||||
})
|
||||
|
||||
// Only send to the first non-spec window created
|
||||
if (includeShellLoadTime && !this.isSpec) {
|
||||
includeShellLoadTime = false
|
||||
|
||||
@@ -3,6 +3,8 @@ if (typeof snapshotResult !== 'undefined') {
|
||||
}
|
||||
|
||||
const startTime = Date.now()
|
||||
const StartupTime = require('../startup-time')
|
||||
StartupTime.setStartTime()
|
||||
|
||||
const path = require('path')
|
||||
const fs = require('fs-plus')
|
||||
|
||||
@@ -8,9 +8,13 @@ const atomPaths = require('../atom-paths')
|
||||
const fs = require('fs')
|
||||
const CSON = require('season')
|
||||
const Config = require('../config')
|
||||
const StartupTime = require('../startup-time')
|
||||
|
||||
StartupTime.setStartTime()
|
||||
|
||||
module.exports = function start (resourcePath, devResourcePath, startTime) {
|
||||
global.shellStartTime = startTime
|
||||
StartupTime.addMarker('main-process:start')
|
||||
|
||||
process.on('uncaughtException', function (error = {}) {
|
||||
if (error.message != null) {
|
||||
@@ -85,7 +89,9 @@ module.exports = function start (resourcePath, devResourcePath, startTime) {
|
||||
app.setPath('userData', temp.mkdirSync('atom-test-data'))
|
||||
}
|
||||
|
||||
StartupTime.addMarker('main-process:electron-onready:start')
|
||||
app.on('ready', function () {
|
||||
StartupTime.addMarker('main-process:electron-onready:end')
|
||||
app.removeListener('open-file', addPathToOpen)
|
||||
app.removeListener('open-url', addUrlToOpen)
|
||||
const AtomApplication = require(path.join(args.resourcePath, 'src', 'main-process', 'atom-application'))
|
||||
|
||||
@@ -2,8 +2,9 @@ const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
const {Emitter, Disposable, CompositeDisposable} = require('event-kit')
|
||||
|
||||
const NotifyWatcher = require('@atom/notify')
|
||||
const nsfw = require('@atom/nsfw')
|
||||
const watcher = require('@atom/watcher')
|
||||
const {NativeWatcherRegistry} = require('./native-watcher-registry')
|
||||
|
||||
// Private: Associate native watcher action flags with descriptive String equivalents.
|
||||
@@ -384,12 +385,7 @@ class PathWatcher {
|
||||
return this.normalizedPathPromise
|
||||
}
|
||||
|
||||
// Private: Return a {Promise} that will resolve the first time that this watcher is attached to a native watcher.
|
||||
getAttachedPromise () {
|
||||
return this.attachedPromise
|
||||
}
|
||||
|
||||
// Extended: Return a {Promise} that will resolve when the underlying native watcher is ready to begin sending events.
|
||||
// Private: Return a {Promise} that will resolve when the underlying native watcher is ready to begin sending events.
|
||||
// When testing filesystem watchers, it's important to await this promise before making filesystem changes that you
|
||||
// intend to assert about because there will be a delay between the instantiation of the watcher and the activation
|
||||
// of the underlying OS resources that feed its events.
|
||||
@@ -544,50 +540,18 @@ class PathWatcherManager {
|
||||
// Private: Access the currently active manager instance, creating one if necessary.
|
||||
static active () {
|
||||
if (!this.activeManager) {
|
||||
this.activeManager = new PathWatcherManager(atom.config.get('core.fileSystemWatcher'))
|
||||
this.sub = atom.config.onDidChange('core.fileSystemWatcher', ({newValue}) => { this.transitionTo(newValue) })
|
||||
this.activeManager = new PathWatcherManager(
|
||||
atom.config.get('core.fileSystemWatcher'),
|
||||
atom.config.get('core.fileSystemWatcherPollInterval')
|
||||
)
|
||||
}
|
||||
return this.activeManager
|
||||
}
|
||||
|
||||
// Private: Replace the active {PathWatcherManager} with a new one that creates [NativeWatchers]{NativeWatcher}
|
||||
// based on the value of `setting`.
|
||||
static async transitionTo (setting) {
|
||||
const current = this.active()
|
||||
|
||||
if (this.transitionPromise) {
|
||||
await this.transitionPromise
|
||||
}
|
||||
|
||||
if (current.setting === setting) {
|
||||
return
|
||||
}
|
||||
current.isShuttingDown = true
|
||||
|
||||
let resolveTransitionPromise = () => {}
|
||||
this.transitionPromise = new Promise(resolve => {
|
||||
resolveTransitionPromise = resolve
|
||||
})
|
||||
|
||||
const replacement = new PathWatcherManager(setting)
|
||||
this.activeManager = replacement
|
||||
|
||||
await Promise.all(
|
||||
Array.from(current.live, async ([root, native]) => {
|
||||
const w = await replacement.createWatcher(root, {}, () => {})
|
||||
native.reattachTo(w.native, root, w.native.options || {})
|
||||
})
|
||||
)
|
||||
|
||||
current.stopAllWatchers()
|
||||
|
||||
resolveTransitionPromise()
|
||||
this.transitionPromise = null
|
||||
}
|
||||
|
||||
// Private: Initialize global {PathWatcher} state.
|
||||
constructor (setting) {
|
||||
constructor (setting, pollInterval) {
|
||||
this.setting = setting
|
||||
this.pollInterval = pollInterval
|
||||
this.live = new Map()
|
||||
|
||||
const initLocal = NativeConstructor => {
|
||||
@@ -608,15 +572,9 @@ class PathWatcherManager {
|
||||
|
||||
if (setting === 'atom') {
|
||||
initLocal(AtomNativeWatcher)
|
||||
} else if (setting === 'experimental') {
|
||||
//
|
||||
} else if (setting === 'poll') {
|
||||
//
|
||||
} else {
|
||||
} else if (setting === 'native') {
|
||||
initLocal(NSFWNativeWatcher)
|
||||
}
|
||||
|
||||
this.isShuttingDown = false
|
||||
}
|
||||
|
||||
useExperimentalWatcher () {
|
||||
@@ -624,66 +582,53 @@ class PathWatcherManager {
|
||||
}
|
||||
|
||||
// Private: Create a {PathWatcher} tied to this global state. See {watchPath} for detailed arguments.
|
||||
async createWatcher (rootPath, options, eventCallback) {
|
||||
if (this.isShuttingDown) {
|
||||
await this.constructor.transitionPromise
|
||||
return PathWatcherManager.active().createWatcher(rootPath, options, eventCallback)
|
||||
}
|
||||
|
||||
async watchPath (rootPath, options, eventCallback) {
|
||||
if (this.useExperimentalWatcher()) {
|
||||
if (this.setting === 'poll') {
|
||||
options.poll = true
|
||||
if (!this.notifyWatcher) {
|
||||
const options = {
|
||||
onError: (error) => {
|
||||
throw new Error(`Error watching file system: ${error}`)
|
||||
}
|
||||
}
|
||||
if (this.setting === 'poll') {
|
||||
options.pollInterval = this.pollInterval
|
||||
}
|
||||
this.notifyWatcher = new NotifyWatcher(options)
|
||||
}
|
||||
|
||||
const w = await watcher.watchPath(rootPath, options, eventCallback)
|
||||
this.live.set(rootPath, w.native)
|
||||
const watch = await this.notifyWatcher.watchPath(rootPath, event => {
|
||||
if (event.action === 'error') {
|
||||
watch.emitter.emit('error', event.description)
|
||||
throw new Error(`Error watching file system at "${event.path}": ${event.description}`)
|
||||
} else {
|
||||
eventCallback(event)
|
||||
}
|
||||
})
|
||||
watch.emitter = new Emitter()
|
||||
watch.onDidError = function (handler) {
|
||||
return this.emitter.on('error', handler)
|
||||
}
|
||||
return watch
|
||||
} else {
|
||||
const w = new PathWatcher(this.nativeRegistry, rootPath, options)
|
||||
w.onDidChange(eventCallback)
|
||||
await w.getStartPromise()
|
||||
return w
|
||||
}
|
||||
|
||||
const w = new PathWatcher(this.nativeRegistry, rootPath, options)
|
||||
w.onDidChange(eventCallback)
|
||||
await w.getStartPromise()
|
||||
return w
|
||||
}
|
||||
|
||||
// Private: Directly access the {NativeWatcherRegistry}.
|
||||
getRegistry () {
|
||||
if (this.useExperimentalWatcher()) {
|
||||
return watcher.getRegistry()
|
||||
}
|
||||
|
||||
return this.nativeRegistry
|
||||
}
|
||||
|
||||
// Private: Sample watcher usage statistics. Only available for experimental watchers.
|
||||
status () {
|
||||
if (this.useExperimentalWatcher()) {
|
||||
return watcher.status()
|
||||
}
|
||||
|
||||
return {}
|
||||
}
|
||||
|
||||
// Private: Return a {String} depicting the currently active native watchers.
|
||||
print () {
|
||||
if (this.useExperimentalWatcher()) {
|
||||
return watcher.printWatchers()
|
||||
}
|
||||
|
||||
return this.nativeRegistry.print()
|
||||
}
|
||||
|
||||
// Private: Stop all living watchers.
|
||||
//
|
||||
// Returns a {Promise} that resolves when all native watcher resources are disposed.
|
||||
stopAllWatchers () {
|
||||
async stopAllWatchers () {
|
||||
if (this.useExperimentalWatcher()) {
|
||||
return watcher.stopAllWatchers()
|
||||
await this.notifyWatcher.kill()
|
||||
this.notifyWatcher = null
|
||||
} else {
|
||||
await Promise.all(
|
||||
Array.from(this.live, ([, w]) => w.stop())
|
||||
)
|
||||
}
|
||||
|
||||
return Promise.all(
|
||||
Array.from(this.live, ([, w]) => w.stop())
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -727,7 +672,7 @@ class PathWatcherManager {
|
||||
// ```
|
||||
//
|
||||
function watchPath (rootPath, options, eventCallback) {
|
||||
return PathWatcherManager.active().createWatcher(rootPath, options, eventCallback)
|
||||
return PathWatcherManager.active().watchPath(rootPath, options, eventCallback)
|
||||
}
|
||||
|
||||
// Private: Return a Promise that resolves when all {NativeWatcher} instances associated with a FileSystemManager
|
||||
@@ -736,24 +681,4 @@ function stopAllWatchers () {
|
||||
return PathWatcherManager.active().stopAllWatchers()
|
||||
}
|
||||
|
||||
// Private: Show the currently active native watchers in a formatted {String}.
|
||||
watchPath.printWatchers = function () {
|
||||
return PathWatcherManager.active().print()
|
||||
}
|
||||
|
||||
// Private: Access the active {NativeWatcherRegistry}.
|
||||
watchPath.getRegistry = function () {
|
||||
return PathWatcherManager.active().getRegistry()
|
||||
}
|
||||
|
||||
// Private: Sample usage statistics for the active watcher.
|
||||
watchPath.status = function () {
|
||||
return PathWatcherManager.active().status()
|
||||
}
|
||||
|
||||
// Private: Configure @atom/watcher ("experimental") directly.
|
||||
watchPath.configure = function (...args) {
|
||||
return watcher.configure(...args)
|
||||
}
|
||||
|
||||
module.exports = {watchPath, stopAllWatchers}
|
||||
module.exports = {watchPath, stopAllWatchers, PathWatcherManager}
|
||||
|
||||
33
src/startup-time.js
Normal file
33
src/startup-time.js
Normal file
@@ -0,0 +1,33 @@
|
||||
let startTime
|
||||
let markers = []
|
||||
|
||||
module.exports = {
|
||||
setStartTime () {
|
||||
if (!startTime) {
|
||||
startTime = Date.now()
|
||||
}
|
||||
},
|
||||
addMarker (label, dateTime) {
|
||||
if (!startTime) {
|
||||
return
|
||||
}
|
||||
|
||||
dateTime = dateTime || Date.now()
|
||||
markers.push({label, time: dateTime - startTime})
|
||||
},
|
||||
importData (data) {
|
||||
startTime = data.startTime
|
||||
markers = data.markers
|
||||
},
|
||||
exportData () {
|
||||
if (!startTime) {
|
||||
return undefined
|
||||
}
|
||||
|
||||
return { startTime, markers }
|
||||
},
|
||||
deleteData () {
|
||||
startTime = undefined
|
||||
markers = []
|
||||
}
|
||||
}
|
||||
@@ -623,7 +623,7 @@ class LanguageLayer {
|
||||
async _performUpdate (nodeRangeSet, params) {
|
||||
let includedRanges = null
|
||||
if (nodeRangeSet) {
|
||||
includedRanges = nodeRangeSet.getRanges()
|
||||
includedRanges = nodeRangeSet.getRanges(this.languageMode.buffer)
|
||||
if (includedRanges.length === 0) {
|
||||
this.tree = null
|
||||
this.destroyed = true
|
||||
@@ -744,7 +744,6 @@ class LanguageLayer {
|
||||
existingInjectionMarkerIndex = i
|
||||
if (existingMarker.languageLayer.grammar === grammar) {
|
||||
marker = existingMarker
|
||||
marker.id === node.id
|
||||
break
|
||||
}
|
||||
} else {
|
||||
@@ -758,7 +757,7 @@ class LanguageLayer {
|
||||
marker.parentLanguageLayer = this
|
||||
}
|
||||
|
||||
markersToUpdate.set(marker, new NodeRangeSet(nodeRangeSet, injectionNodes))
|
||||
markersToUpdate.set(marker, new NodeRangeSet(nodeRangeSet, injectionNodes, injectionPoint.newlinesBetween))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1101,13 +1100,14 @@ class NullHighlightIterator {
|
||||
}
|
||||
|
||||
class NodeRangeSet {
|
||||
constructor (previous, nodes) {
|
||||
constructor (previous, nodes, newlinesBetween) {
|
||||
this.previous = previous
|
||||
this.nodes = nodes
|
||||
this.newlinesBetween = newlinesBetween
|
||||
}
|
||||
|
||||
getRanges () {
|
||||
const previousRanges = this.previous && this.previous.getRanges()
|
||||
getRanges (buffer) {
|
||||
const previousRanges = this.previous && this.previous.getRanges(buffer)
|
||||
const result = []
|
||||
|
||||
for (const node of this.nodes) {
|
||||
@@ -1117,7 +1117,7 @@ class NodeRangeSet {
|
||||
for (const child of node.children) {
|
||||
const nextIndex = child.startIndex
|
||||
if (nextIndex > index) {
|
||||
this._pushRange(previousRanges, result, {
|
||||
this._pushRange(buffer, previousRanges, result, {
|
||||
startIndex: index,
|
||||
endIndex: nextIndex,
|
||||
startPosition: position,
|
||||
@@ -1129,7 +1129,7 @@ class NodeRangeSet {
|
||||
}
|
||||
|
||||
if (node.endIndex > index) {
|
||||
this._pushRange(previousRanges, result, {
|
||||
this._pushRange(buffer, previousRanges, result, {
|
||||
startIndex: index,
|
||||
endIndex: node.endIndex,
|
||||
startPosition: position,
|
||||
@@ -1141,8 +1141,12 @@ class NodeRangeSet {
|
||||
return result
|
||||
}
|
||||
|
||||
_pushRange (previousRanges, newRanges, newRange) {
|
||||
_pushRange (buffer, previousRanges, newRanges, newRange) {
|
||||
if (!previousRanges) {
|
||||
if (this.newlinesBetween) {
|
||||
const {startIndex, startPosition} = newRange
|
||||
this._ensureNewline(buffer, newRanges, startIndex, startPosition)
|
||||
}
|
||||
newRanges.push(newRange)
|
||||
return
|
||||
}
|
||||
@@ -1150,11 +1154,27 @@ class NodeRangeSet {
|
||||
for (const previousRange of previousRanges) {
|
||||
if (previousRange.endIndex <= newRange.startIndex) continue
|
||||
if (previousRange.startIndex >= newRange.endIndex) break
|
||||
const startIndex = Math.max(previousRange.startIndex, newRange.startIndex)
|
||||
const endIndex = Math.min(previousRange.endIndex, newRange.endIndex)
|
||||
const startPosition = Point.max(previousRange.startPosition, newRange.startPosition)
|
||||
const endPosition = Point.min(previousRange.endPosition, newRange.endPosition)
|
||||
if (this.newlinesBetween) {
|
||||
this._ensureNewline(buffer, newRanges, startIndex, startPosition)
|
||||
}
|
||||
newRanges.push({startIndex, endIndex, startPosition, endPosition})
|
||||
}
|
||||
}
|
||||
|
||||
// For injection points with `newlinesBetween` enabled, ensure that a
|
||||
// newline is included between each disjoint range.
|
||||
_ensureNewline (buffer, newRanges, startIndex, startPosition) {
|
||||
const lastRange = newRanges[newRanges.length - 1]
|
||||
if (lastRange && lastRange.endPosition.row < startPosition.row) {
|
||||
newRanges.push({
|
||||
startIndex: Math.max(previousRange.startIndex, newRange.startIndex),
|
||||
endIndex: Math.min(previousRange.endIndex, newRange.endIndex),
|
||||
startPosition: Point.max(previousRange.startPosition, newRange.startPosition),
|
||||
endPosition: Point.min(previousRange.endPosition, newRange.endPosition)
|
||||
startPosition: new Point(startPosition.row - 1, buffer.lineLengthForRow(startPosition.row - 1)),
|
||||
endPosition: new Point(startPosition.row, 0),
|
||||
startIndex: startIndex - startPosition.column - 1,
|
||||
endIndex: startIndex - startPosition.column
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,16 +3,29 @@
|
||||
// when using `NativeCompileCache` for the first time.
|
||||
require('cached-run-in-this-context')
|
||||
|
||||
// Define the window start time before the requires so we get a more accurate
|
||||
// window:start marker.
|
||||
const startWindowTime = Date.now()
|
||||
|
||||
const electron = require('electron')
|
||||
const path = require('path')
|
||||
const Module = require('module')
|
||||
const getWindowLoadSettings = require('../src/get-window-load-settings')
|
||||
const StartupTime = require('../src/startup-time')
|
||||
const entryPointDirPath = __dirname
|
||||
let blobStore = null
|
||||
let useSnapshot = false
|
||||
|
||||
const startupMarkers = electron.remote.getCurrentWindow().startupMarkers
|
||||
|
||||
if (startupMarkers) {
|
||||
StartupTime.importData(startupMarkers)
|
||||
}
|
||||
StartupTime.addMarker('window:start', startWindowTime)
|
||||
|
||||
window.onload = function () {
|
||||
try {
|
||||
StartupTime.addMarker('window:onload:start')
|
||||
const startTime = Date.now()
|
||||
|
||||
process.on('unhandledRejection', function (error, promise) {
|
||||
@@ -64,12 +77,16 @@
|
||||
if (getWindowLoadSettings().profileStartup) {
|
||||
profileStartup(Date.now() - startTime)
|
||||
} else {
|
||||
setupWindow()
|
||||
StartupTime.addMarker('window:setup-window:start')
|
||||
setupWindow().then(() => {
|
||||
StartupTime.addMarker('window:setup-window:end')
|
||||
})
|
||||
setLoadTime(Date.now() - startTime)
|
||||
}
|
||||
} catch (error) {
|
||||
handleSetupError(error)
|
||||
}
|
||||
StartupTime.addMarker('window:onload:end')
|
||||
}
|
||||
|
||||
function setLoadTime (loadTime) {
|
||||
@@ -103,7 +120,11 @@
|
||||
|
||||
const initScriptPath = path.relative(entryPointDirPath, getWindowLoadSettings().windowInitializationScript)
|
||||
const initialize = useSnapshot ? snapshotResult.customRequire(initScriptPath) : require(initScriptPath)
|
||||
|
||||
StartupTime.addMarker('window:initialize:start')
|
||||
|
||||
return initialize({blobStore: blobStore}).then(function () {
|
||||
StartupTime.addMarker('window:initialize:end')
|
||||
electron.ipcRenderer.send('window-command', 'window:loaded')
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user