nativescript 8.9.0-dev.1 → 8.9.0-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (404) hide show
  1. package/config/test-deps-versions-generated.json +1 -1
  2. package/lib/.d.ts +1 -0
  3. package/lib/android-tools-info.js +32 -9
  4. package/lib/base-package-manager.js +71 -47
  5. package/lib/bootstrap.js +6 -1
  6. package/lib/bun-package-manager.js +104 -65
  7. package/lib/color.js +5 -2
  8. package/lib/commands/add-platform.js +31 -14
  9. package/lib/commands/apple-login.js +30 -18
  10. package/lib/commands/appstore-list.js +46 -34
  11. package/lib/commands/appstore-upload.js +68 -52
  12. package/lib/commands/build.js +90 -57
  13. package/lib/commands/clean.js +197 -161
  14. package/lib/commands/command-base.js +28 -14
  15. package/lib/commands/config.js +71 -48
  16. package/lib/commands/create-project.js +235 -210
  17. package/lib/commands/debug.js +93 -66
  18. package/lib/commands/deploy.js +47 -30
  19. package/lib/commands/embedding/embed.js +59 -33
  20. package/lib/commands/extensibility/install-extension.js +17 -5
  21. package/lib/commands/extensibility/list-extensions.js +25 -13
  22. package/lib/commands/extensibility/uninstall-extension.js +16 -4
  23. package/lib/commands/fonts.js +42 -30
  24. package/lib/commands/generate-assets.js +29 -13
  25. package/lib/commands/generate-help.js +14 -2
  26. package/lib/commands/generate.js +70 -12
  27. package/lib/commands/info.js +14 -2
  28. package/lib/commands/install.js +50 -34
  29. package/lib/commands/list-platforms.js +26 -14
  30. package/lib/commands/migrate.js +27 -15
  31. package/lib/commands/native-add.js +51 -23
  32. package/lib/commands/platform-clean.js +33 -19
  33. package/lib/commands/plugin/add-plugin.js +26 -12
  34. package/lib/commands/plugin/build-plugin.js +45 -31
  35. package/lib/commands/plugin/create-plugin.js +138 -110
  36. package/lib/commands/plugin/list-plugins.js +34 -22
  37. package/lib/commands/plugin/remove-plugin.js +35 -20
  38. package/lib/commands/plugin/update-plugin.js +34 -20
  39. package/lib/commands/post-install.js +39 -20
  40. package/lib/commands/prepare.js +39 -22
  41. package/lib/commands/preview.js +64 -49
  42. package/lib/commands/remove-platform.js +19 -7
  43. package/lib/commands/resources/resources-update.js +28 -13
  44. package/lib/commands/run.js +77 -55
  45. package/lib/commands/setup.js +1 -0
  46. package/lib/commands/start.js +20 -6
  47. package/lib/commands/test-init.js +138 -123
  48. package/lib/commands/test.js +97 -67
  49. package/lib/commands/typings.js +143 -126
  50. package/lib/commands/update-platform.js +40 -22
  51. package/lib/commands/update.js +45 -30
  52. package/lib/commands/widget.js +767 -0
  53. package/lib/common/bootstrap.js +1 -0
  54. package/lib/common/child-process.js +75 -53
  55. package/lib/common/codeGeneration/code-entity.js +2 -1
  56. package/lib/common/codeGeneration/code-printer.js +2 -1
  57. package/lib/common/command-params.js +19 -7
  58. package/lib/common/commands/analytics.js +43 -27
  59. package/lib/common/commands/autocompletion.js +59 -39
  60. package/lib/common/commands/device/device-log-stream.js +24 -12
  61. package/lib/common/commands/device/get-file.js +35 -22
  62. package/lib/common/commands/device/list-applications.js +24 -12
  63. package/lib/common/commands/device/list-devices.js +90 -72
  64. package/lib/common/commands/device/list-files.js +36 -23
  65. package/lib/common/commands/device/put-file.js +35 -22
  66. package/lib/common/commands/device/run-application.js +26 -12
  67. package/lib/common/commands/device/stop-application.js +23 -11
  68. package/lib/common/commands/device/uninstall-application.js +18 -6
  69. package/lib/common/commands/doctor.js +3 -2
  70. package/lib/common/commands/generate-messages.js +29 -17
  71. package/lib/common/commands/help.js +34 -20
  72. package/lib/common/commands/package-manager-get.js +18 -6
  73. package/lib/common/commands/package-manager-set.js +21 -9
  74. package/lib/common/commands/post-install.js +14 -2
  75. package/lib/common/commands/preuninstall.js +48 -24
  76. package/lib/common/commands/proxy/proxy-base.js +23 -8
  77. package/lib/common/commands/proxy/proxy-clear.js +16 -4
  78. package/lib/common/commands/proxy/proxy-get.js +15 -3
  79. package/lib/common/commands/proxy/proxy-set.js +101 -87
  80. package/lib/common/common-lib.js +1 -0
  81. package/lib/common/constants.js +22 -11
  82. package/lib/common/decorators.js +70 -10
  83. package/lib/common/dispatchers.js +106 -80
  84. package/lib/common/errors.js +116 -91
  85. package/lib/common/file-system.js +141 -108
  86. package/lib/common/header.js +5 -1
  87. package/lib/common/helpers.js +267 -152
  88. package/lib/common/host-info.js +54 -37
  89. package/lib/common/http-client.js +128 -93
  90. package/lib/common/logger/appenders/cli-appender.js +6 -1
  91. package/lib/common/logger/appenders/emit-appender.js +6 -1
  92. package/lib/common/logger/layouts/cli-layout.js +3 -1
  93. package/lib/common/logger/logger.js +9 -4
  94. package/lib/common/messages/messages.js +6 -0
  95. package/lib/common/mobile/android/android-application-manager.js +162 -122
  96. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +2 -1
  97. package/lib/common/mobile/android/android-debug-bridge.js +118 -87
  98. package/lib/common/mobile/android/android-device-file-system.js +135 -98
  99. package/lib/common/mobile/android/android-device-hash-service.js +78 -50
  100. package/lib/common/mobile/android/android-device.js +93 -68
  101. package/lib/common/mobile/android/android-emulator-services.js +131 -105
  102. package/lib/common/mobile/android/android-ini-file-parser.js +9 -0
  103. package/lib/common/mobile/android/android-log-filter.js +5 -1
  104. package/lib/common/mobile/android/android-virtual-device-service.js +123 -76
  105. package/lib/common/mobile/android/device-android-debug-bridge.js +30 -13
  106. package/lib/common/mobile/android/genymotion/genymotion-service.js +123 -91
  107. package/lib/common/mobile/android/genymotion/virtualbox-service.js +92 -64
  108. package/lib/common/mobile/android/logcat-helper.js +140 -108
  109. package/lib/common/mobile/application-manager-base.js +113 -84
  110. package/lib/common/mobile/device-emitter.js +4 -0
  111. package/lib/common/mobile/device-log-emitter.js +1 -0
  112. package/lib/common/mobile/device-log-provider-base.js +19 -7
  113. package/lib/common/mobile/device-log-provider.js +23 -0
  114. package/lib/common/mobile/device-platforms-constants.js +1 -0
  115. package/lib/common/mobile/emulator-helper.js +3 -0
  116. package/lib/common/mobile/ios/device/ios-application-manager.js +111 -79
  117. package/lib/common/mobile/ios/device/ios-device-file-system.js +106 -78
  118. package/lib/common/mobile/ios/device/ios-device-operations.js +146 -105
  119. package/lib/common/mobile/ios/device/ios-device.js +40 -20
  120. package/lib/common/mobile/ios/ios-device-base.js +82 -58
  121. package/lib/common/mobile/ios/ios-device-product-name-mapper.js +2 -0
  122. package/lib/common/mobile/ios/ios-log-filter.js +1 -0
  123. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +96 -63
  124. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +2 -1
  125. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +95 -60
  126. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +48 -27
  127. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +63 -37
  128. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +36 -24
  129. package/lib/common/mobile/local-to-device-path-data-factory.js +1 -0
  130. package/lib/common/mobile/log-filter.js +2 -0
  131. package/lib/common/mobile/logging-levels.js +1 -0
  132. package/lib/common/mobile/mobile-core/android-device-discovery.js +64 -43
  133. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +35 -21
  134. package/lib/common/mobile/mobile-core/android-process-service.js +214 -143
  135. package/lib/common/mobile/mobile-core/device-discovery.js +14 -2
  136. package/lib/common/mobile/mobile-core/devices-service.js +505 -386
  137. package/lib/common/mobile/mobile-core/ios-device-discovery.js +37 -24
  138. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +65 -47
  139. package/lib/common/mobile/mobile-helper.js +27 -15
  140. package/lib/common/mobile/wp8/wp8-emulator-services.js +53 -25
  141. package/lib/common/opener.js +3 -2
  142. package/lib/common/os-info.js +1 -0
  143. package/lib/common/plist-parser.js +1 -0
  144. package/lib/common/project-helper.js +1 -0
  145. package/lib/common/prompter.js +114 -91
  146. package/lib/common/queue.js +21 -9
  147. package/lib/common/resource-loader.js +1 -0
  148. package/lib/common/services/auto-completion-service.js +65 -40
  149. package/lib/common/services/cancellation.js +29 -17
  150. package/lib/common/services/commands-service.js +180 -146
  151. package/lib/common/services/help-service.js +166 -133
  152. package/lib/common/services/hooks-service.js +121 -93
  153. package/lib/common/services/ios-notification-service.js +35 -21
  154. package/lib/common/services/json-file-settings-service.js +77 -52
  155. package/lib/common/services/lock-service.js +58 -35
  156. package/lib/common/services/message-contract-generator.js +47 -35
  157. package/lib/common/services/messages-service.js +1 -0
  158. package/lib/common/services/micro-templating-service.js +21 -4
  159. package/lib/common/services/net-service.js +110 -90
  160. package/lib/common/services/project-files-manager.js +28 -10
  161. package/lib/common/services/project-files-provider-base.js +1 -0
  162. package/lib/common/services/proxy-service.js +25 -13
  163. package/lib/common/services/qr.js +25 -13
  164. package/lib/common/services/settings-service.js +2 -1
  165. package/lib/common/services/xcode-select-service.js +36 -20
  166. package/lib/common/utils.js +3 -2
  167. package/lib/common/validators/project-name-validator.js +2 -1
  168. package/lib/common/validators/validation-result.js +2 -1
  169. package/lib/common/verify-node-version.js +11 -3
  170. package/lib/common/yok.js +69 -35
  171. package/lib/config.js +72 -36
  172. package/lib/constants-provider.js +1 -0
  173. package/lib/constants.js +78 -25
  174. package/lib/controllers/build-controller.js +100 -82
  175. package/lib/controllers/debug-controller.js +133 -107
  176. package/lib/controllers/deploy-controller.js +24 -15
  177. package/lib/controllers/migrate-controller.js +884 -723
  178. package/lib/controllers/platform-controller.js +94 -71
  179. package/lib/controllers/prepare-controller.js +274 -232
  180. package/lib/controllers/run-controller.js +427 -397
  181. package/lib/controllers/update-controller-base.js +30 -16
  182. package/lib/controllers/update-controller.js +130 -94
  183. package/lib/data/build-data.js +1 -0
  184. package/lib/data/controller-data-base.js +1 -0
  185. package/lib/data/debug-data.js +1 -0
  186. package/lib/data/platform-data.js +1 -0
  187. package/lib/data/prepare-data.js +2 -4
  188. package/lib/data/run-data.js +1 -0
  189. package/lib/definitions/project.d.ts +26 -0
  190. package/lib/detached-processes/cleanup-js-subprocess.js +20 -5
  191. package/lib/detached-processes/cleanup-process.js +43 -30
  192. package/lib/detached-processes/file-log-service.js +2 -1
  193. package/lib/device-path-provider.js +35 -23
  194. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +171 -149
  195. package/lib/device-sockets/ios/notification.js +4 -1
  196. package/lib/device-sockets/ios/socket-request-executor.js +42 -24
  197. package/lib/helpers/android-bundle-validator-helper.js +3 -2
  198. package/lib/helpers/deploy-command-helper.js +50 -44
  199. package/lib/helpers/key-command-helper.js +17 -6
  200. package/lib/helpers/livesync-command-helper.js +155 -137
  201. package/lib/helpers/network-connectivity-validator.js +18 -6
  202. package/lib/helpers/options-track-helper.js +19 -7
  203. package/lib/helpers/package-path-helper.js +1 -0
  204. package/lib/helpers/platform-command-helper.js +127 -101
  205. package/lib/helpers/version-validator-helper.js +1 -0
  206. package/lib/key-commands/bootstrap.js +3 -2
  207. package/lib/key-commands/index.js +205 -154
  208. package/lib/nativescript-cli-lib-bootstrap.js +4 -0
  209. package/lib/nativescript-cli-lib.js +1 -0
  210. package/lib/nativescript-cli.js +24 -6
  211. package/lib/node/pbxproj-dom-xcode.js +1 -0
  212. package/lib/node/xcode.js +1 -0
  213. package/lib/node-package-manager.js +114 -81
  214. package/lib/options.js +156 -122
  215. package/lib/package-installation-manager.js +172 -130
  216. package/lib/package-manager.js +88 -63
  217. package/lib/platform-command-param.js +16 -4
  218. package/lib/pnpm-package-manager.js +81 -59
  219. package/lib/project-data.js +13 -1
  220. package/lib/providers/project-files-provider.js +2 -1
  221. package/lib/resolvers/livesync-service-resolver.js +1 -0
  222. package/lib/services/analytics/analytics-broker-process.js +32 -19
  223. package/lib/services/analytics/analytics-broker.js +31 -17
  224. package/lib/services/analytics/analytics-service.js +210 -170
  225. package/lib/services/analytics/google-analytics-provider.js +59 -43
  226. package/lib/services/analytics-settings-service.js +37 -15
  227. package/lib/services/android/android-bundle-tool-service.js +61 -43
  228. package/lib/services/android/gradle-build-args-service.js +23 -9
  229. package/lib/services/android/gradle-build-service.js +36 -22
  230. package/lib/services/android/gradle-command-service.js +36 -22
  231. package/lib/services/android-device-debug-service.js +123 -90
  232. package/lib/services/android-plugin-build-service.js +260 -205
  233. package/lib/services/android-project-service.js +241 -129
  234. package/lib/services/android-resources-migration-service.js +71 -51
  235. package/lib/services/apple-portal/apple-portal-application-service.js +64 -46
  236. package/lib/services/apple-portal/apple-portal-cookie-service.js +1 -0
  237. package/lib/services/apple-portal/apple-portal-session-service.js +218 -197
  238. package/lib/services/apple-portal/srp/srp-wrapper.js +61 -43
  239. package/lib/services/assets-generation/assets-generation-service.js +128 -103
  240. package/lib/services/build-artifacts-service.js +22 -10
  241. package/lib/services/build-data-service.js +1 -0
  242. package/lib/services/build-info-file-service.js +36 -20
  243. package/lib/services/cleanup-service.js +81 -48
  244. package/lib/services/cocoapods-platform-manager.js +9 -0
  245. package/lib/services/cocoapods-service.js +153 -112
  246. package/lib/services/debug-data-service.js +1 -0
  247. package/lib/services/debug-service-base.js +7 -0
  248. package/lib/services/device/device-install-app-service.js +72 -54
  249. package/lib/services/doctor-service.js +135 -101
  250. package/lib/services/extensibility-service.js +108 -81
  251. package/lib/services/files-hash-service.js +44 -26
  252. package/lib/services/hmr-status-service.js +3 -1
  253. package/lib/services/info-service.js +1 -0
  254. package/lib/services/initialize-service.js +54 -37
  255. package/lib/services/ios/export-options-plist-service.js +55 -38
  256. package/lib/services/ios/ios-signing-service.js +191 -168
  257. package/lib/services/ios/spm-service.js +70 -46
  258. package/lib/services/ios/xcodebuild-args-service.js +103 -77
  259. package/lib/services/ios/xcodebuild-command-service.js +26 -14
  260. package/lib/services/ios/xcodebuild-service.js +72 -52
  261. package/lib/services/ios-debugger-port-service.js +38 -24
  262. package/lib/services/ios-device-debug-service.js +103 -75
  263. package/lib/services/ios-entitlements-service.js +43 -31
  264. package/lib/services/ios-extensions-service.js +30 -18
  265. package/lib/services/ios-log-filter.js +20 -0
  266. package/lib/services/ios-native-target-service.js +6 -4
  267. package/lib/services/ios-project-service.js +605 -437
  268. package/lib/services/ios-provision-service.js +132 -108
  269. package/lib/services/ios-watch-app-service.js +33 -21
  270. package/lib/services/ip-service.js +55 -38
  271. package/lib/services/itmstransporter-service.js +153 -129
  272. package/lib/services/karma-execution.js +2 -0
  273. package/lib/services/livesync/android-device-livesync-service-base.js +49 -31
  274. package/lib/services/livesync/android-device-livesync-service.js +151 -120
  275. package/lib/services/livesync/android-device-livesync-sockets-service.js +155 -121
  276. package/lib/services/livesync/android-livesync-service.js +36 -14
  277. package/lib/services/livesync/android-livesync-tool.js +117 -90
  278. package/lib/services/livesync/device-livesync-service-base.js +30 -15
  279. package/lib/services/livesync/ios-device-livesync-service.js +150 -114
  280. package/lib/services/livesync/ios-livesync-service.js +60 -42
  281. package/lib/services/livesync/livesync-socket.js +1 -0
  282. package/lib/services/livesync/platform-livesync-service-base.js +124 -94
  283. package/lib/services/livesync-process-data-service.js +1 -0
  284. package/lib/services/log-parser-service.js +2 -1
  285. package/lib/services/log-source-map-service.js +56 -30
  286. package/lib/services/marking-mode-service.js +33 -17
  287. package/lib/services/metadata-filtering-service.js +1 -0
  288. package/lib/services/npm-config-service.js +5 -1
  289. package/lib/services/pacote-service.js +71 -49
  290. package/lib/services/performance-service.js +4 -2
  291. package/lib/services/platform/add-platform-service.js +119 -51
  292. package/lib/services/platform/platform-validation-service.js +34 -22
  293. package/lib/services/platform/prepare-native-platform-service.js +65 -49
  294. package/lib/services/platform-environment-requirements.js +43 -27
  295. package/lib/services/platform-project-service-base.js +1 -0
  296. package/lib/services/platforms-data-service.js +1 -0
  297. package/lib/services/plugins-service.js +168 -125
  298. package/lib/services/prepare-data-service.js +1 -0
  299. package/lib/services/project-backup-service.js +5 -1
  300. package/lib/services/project-changes-service.js +152 -124
  301. package/lib/services/project-cleanup-service.js +79 -64
  302. package/lib/services/project-config-service.js +111 -73
  303. package/lib/services/project-data-service.js +154 -108
  304. package/lib/services/project-name-service.js +44 -28
  305. package/lib/services/project-service.js +113 -84
  306. package/lib/services/project-templates-service.js +68 -52
  307. package/lib/services/qr-code-terminal-service.js +1 -0
  308. package/lib/services/require-service.js +1 -0
  309. package/lib/services/start-service.js +60 -41
  310. package/lib/services/temp-service.js +22 -8
  311. package/lib/services/terminal-spinner-service.js +28 -15
  312. package/lib/services/test-execution-service.js +79 -59
  313. package/lib/services/test-initialization-service.js +6 -2
  314. package/lib/services/timeline-profiler-service.js +2 -1
  315. package/lib/services/user-settings-service.js +1 -0
  316. package/lib/services/versions-service.js +140 -119
  317. package/lib/services/watch-ignore-list-service.js +1 -0
  318. package/lib/services/webpack/webpack-compiler-service.js +279 -215
  319. package/lib/services/xcconfig-service.js +21 -8
  320. package/lib/services/xcproj-service.js +1 -0
  321. package/lib/shared-event-bus.js +6 -0
  322. package/lib/sys-info.js +63 -45
  323. package/lib/tools/config-manipulation/config-transformer.js +21 -0
  324. package/lib/tools/node-modules/node-modules-builder.js +28 -16
  325. package/lib/tools/node-modules/node-modules-dependencies-builder.js +6 -0
  326. package/lib/yarn-package-manager.js +79 -59
  327. package/lib/yarn2-package-manager.js +82 -60
  328. package/node_modules/@npmcli/move-file/LICENSE.md +22 -0
  329. package/node_modules/@npmcli/move-file/README.md +69 -0
  330. package/node_modules/@npmcli/move-file/lib/index.js +185 -0
  331. package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +21 -0
  332. package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +68 -0
  333. package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +31 -0
  334. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +29 -0
  335. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +64 -0
  336. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +39 -0
  337. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +23 -0
  338. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +29 -0
  339. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +10 -0
  340. package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +44 -0
  341. package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +266 -0
  342. package/node_modules/@npmcli/move-file/package.json +47 -0
  343. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  344. package/node_modules/balanced-match/LICENSE.md +21 -0
  345. package/node_modules/balanced-match/README.md +97 -0
  346. package/node_modules/balanced-match/index.js +62 -0
  347. package/node_modules/balanced-match/package.json +48 -0
  348. package/node_modules/concat-map/.travis.yml +4 -0
  349. package/node_modules/concat-map/LICENSE +18 -0
  350. package/node_modules/concat-map/README.markdown +62 -0
  351. package/node_modules/concat-map/example/map.js +6 -0
  352. package/node_modules/concat-map/index.js +13 -0
  353. package/node_modules/concat-map/package.json +43 -0
  354. package/node_modules/concat-map/test/map.js +39 -0
  355. package/node_modules/fs.realpath/LICENSE +43 -0
  356. package/node_modules/fs.realpath/README.md +33 -0
  357. package/node_modules/fs.realpath/index.js +66 -0
  358. package/node_modules/fs.realpath/old.js +303 -0
  359. package/node_modules/fs.realpath/package.json +26 -0
  360. package/node_modules/inflight/LICENSE +15 -0
  361. package/node_modules/inflight/README.md +37 -0
  362. package/node_modules/inflight/inflight.js +54 -0
  363. package/node_modules/inflight/package.json +29 -0
  364. package/node_modules/inherits/LICENSE +16 -0
  365. package/node_modules/inherits/README.md +42 -0
  366. package/node_modules/inherits/inherits.js +9 -0
  367. package/node_modules/inherits/inherits_browser.js +27 -0
  368. package/node_modules/inherits/package.json +29 -0
  369. package/node_modules/once/LICENSE +15 -0
  370. package/node_modules/once/README.md +79 -0
  371. package/node_modules/once/once.js +42 -0
  372. package/node_modules/once/package.json +33 -0
  373. package/node_modules/path-is-absolute/index.js +20 -0
  374. package/node_modules/path-is-absolute/license +21 -0
  375. package/node_modules/path-is-absolute/package.json +43 -0
  376. package/node_modules/path-is-absolute/readme.md +59 -0
  377. package/node_modules/rimraf/LICENSE +15 -0
  378. package/node_modules/rimraf/README.md +101 -0
  379. package/node_modules/rimraf/bin.js +68 -0
  380. package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +21 -0
  381. package/node_modules/rimraf/node_modules/brace-expansion/README.md +129 -0
  382. package/node_modules/rimraf/node_modules/brace-expansion/index.js +201 -0
  383. package/node_modules/rimraf/node_modules/brace-expansion/package.json +47 -0
  384. package/node_modules/rimraf/node_modules/glob/LICENSE +21 -0
  385. package/node_modules/rimraf/node_modules/glob/README.md +378 -0
  386. package/node_modules/rimraf/node_modules/glob/common.js +238 -0
  387. package/node_modules/rimraf/node_modules/glob/glob.js +790 -0
  388. package/node_modules/rimraf/node_modules/glob/package.json +55 -0
  389. package/node_modules/rimraf/node_modules/glob/sync.js +486 -0
  390. package/node_modules/rimraf/node_modules/minimatch/LICENSE +15 -0
  391. package/node_modules/rimraf/node_modules/minimatch/README.md +230 -0
  392. package/node_modules/rimraf/node_modules/minimatch/minimatch.js +947 -0
  393. package/node_modules/rimraf/node_modules/minimatch/package.json +33 -0
  394. package/node_modules/rimraf/package.json +32 -0
  395. package/node_modules/rimraf/rimraf.js +360 -0
  396. package/node_modules/stringify-package/LICENSE +13 -0
  397. package/node_modules/stringify-package/README.md +55 -0
  398. package/node_modules/stringify-package/index.js +18 -0
  399. package/node_modules/stringify-package/package.json +38 -0
  400. package/node_modules/wrappy/LICENSE +15 -0
  401. package/node_modules/wrappy/README.md +36 -0
  402. package/node_modules/wrappy/package.json +29 -0
  403. package/node_modules/wrappy/wrappy.js +33 -0
  404. package/package.json +79 -64
@@ -5,6 +5,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
15
+ });
16
+ };
8
17
  Object.defineProperty(exports, "__esModule", { value: true });
9
18
  exports.Yarn2PackageManager = void 0;
10
19
  const path = require("path");
@@ -27,32 +36,36 @@ class Yarn2PackageManager extends base_package_manager_1.BasePackageManager {
27
36
  }
28
37
  return executableName;
29
38
  }
30
- async install(packageName, pathToSave, config) {
31
- if (config.disableNpmInstall) {
32
- return;
33
- }
34
- if (config.ignoreScripts) {
35
- config["ignore-scripts"] = true;
36
- }
37
- const packageJsonPath = path.join(pathToSave, "package.json");
38
- const jsonContentBefore = this.$fs.readJson(packageJsonPath);
39
- const cleanedConfig = _.omit(config, ["save-dev", "save-exact"]);
40
- const flags = this.getFlagsString(cleanedConfig, true);
41
- let params = [];
42
- const isInstallingAllDependencies = packageName === pathToSave;
43
- if (!isInstallingAllDependencies) {
44
- params.push("add", packageName);
45
- }
46
- params = params.concat(flags);
47
- const cwd = pathToSave;
48
- try {
49
- const result = await this.processPackageManagerInstall(packageName, params, { cwd, isInstallingAllDependencies });
50
- return result;
51
- }
52
- catch (e) {
53
- this.$fs.writeJson(packageJsonPath, jsonContentBefore);
54
- throw e;
55
- }
39
+ install(packageName, pathToSave, config) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ if (config.disableNpmInstall) {
42
+ return;
43
+ }
44
+ if (config.ignoreScripts) {
45
+ config["ignore-scripts"] = true;
46
+ }
47
+ const packageJsonPath = path.join(pathToSave, "package.json");
48
+ const jsonContentBefore = this.$fs.readJson(packageJsonPath);
49
+ // remove unsupported flags
50
+ // todo: refactor all package managers to map typed flags to the actual flags
51
+ const cleanedConfig = _.omit(config, ["save-dev", "save-exact"]);
52
+ const flags = this.getFlagsString(cleanedConfig, true);
53
+ let params = [];
54
+ const isInstallingAllDependencies = packageName === pathToSave;
55
+ if (!isInstallingAllDependencies) {
56
+ params.push("add", packageName);
57
+ }
58
+ params = params.concat(flags);
59
+ const cwd = pathToSave;
60
+ try {
61
+ const result = yield this.processPackageManagerInstall(packageName, params, { cwd, isInstallingAllDependencies });
62
+ return result;
63
+ }
64
+ catch (e) {
65
+ this.$fs.writeJson(packageJsonPath, jsonContentBefore);
66
+ throw e;
67
+ }
68
+ });
56
69
  }
57
70
  uninstall(packageName, config, cwd) {
58
71
  const flags = this.getFlagsString(config, false);
@@ -60,49 +73,56 @@ class Yarn2PackageManager extends base_package_manager_1.BasePackageManager {
60
73
  cwd,
61
74
  });
62
75
  }
63
- async view(packageName, config) {
64
- const wrappedConfig = _.extend({}, config, { json: true });
65
- const flags = this.getFlagsString(wrappedConfig, false);
66
- let viewResult;
67
- try {
68
- viewResult = await this.$childProcess.exec(`yarn npm info ${packageName} ${flags}`);
69
- }
70
- catch (e) {
71
- this.$errors.fail(e.message);
72
- }
73
- try {
74
- return JSON.parse(viewResult);
75
- }
76
- catch (err) {
77
- this.$errors.fail(err.message);
78
- return null;
79
- }
76
+ view(packageName, config) {
77
+ return __awaiter(this, void 0, void 0, function* () {
78
+ const wrappedConfig = _.extend({}, config, { json: true });
79
+ const flags = this.getFlagsString(wrappedConfig, false);
80
+ let viewResult;
81
+ try {
82
+ viewResult = yield this.$childProcess.exec(`yarn npm info ${packageName} ${flags}`);
83
+ }
84
+ catch (e) {
85
+ this.$errors.fail(e.message);
86
+ }
87
+ try {
88
+ return JSON.parse(viewResult);
89
+ }
90
+ catch (err) {
91
+ this.$errors.fail(err.message);
92
+ return null;
93
+ }
94
+ });
80
95
  }
81
96
  search(filter, config) {
82
97
  this.$errors.fail("Method not implemented. Yarn does not support searching for packages in the registry.");
83
98
  return null;
84
99
  }
85
- async searchNpms(keyword) {
86
- const httpRequestResult = await this.$httpClient.httpRequest(`https://api.npms.io/v2/search?q=keywords:${keyword}`);
87
- const result = JSON.parse(httpRequestResult.body);
88
- return result;
100
+ searchNpms(keyword) {
101
+ return __awaiter(this, void 0, void 0, function* () {
102
+ const httpRequestResult = yield this.$httpClient.httpRequest(`https://api.npms.io/v2/search?q=keywords:${keyword}`);
103
+ const result = JSON.parse(httpRequestResult.body);
104
+ return result;
105
+ });
89
106
  }
90
- async getRegistryPackageData(packageName) {
91
- const registry = await this.$childProcess.exec(`yarn config get npmRegistryServer`);
92
- const url = `${registry.trim()}/${packageName}`;
93
- this.$logger.trace(`Trying to get data from yarn registry for package ${packageName}, url is: ${url}`);
94
- const responseData = (await this.$httpClient.httpRequest(url)).body;
95
- this.$logger.trace(`Successfully received data from yarn registry for package ${packageName}. Response data is: ${responseData}`);
96
- const jsonData = JSON.parse(responseData);
97
- this.$logger.trace(`Successfully parsed data from yarn registry for package ${packageName}.`);
98
- return jsonData;
107
+ getRegistryPackageData(packageName) {
108
+ return __awaiter(this, void 0, void 0, function* () {
109
+ const registry = yield this.$childProcess.exec(`yarn config get npmRegistryServer`);
110
+ const url = `${registry.trim()}/${packageName}`;
111
+ this.$logger.trace(`Trying to get data from yarn registry for package ${packageName}, url is: ${url}`);
112
+ const responseData = (yield this.$httpClient.httpRequest(url)).body;
113
+ this.$logger.trace(`Successfully received data from yarn registry for package ${packageName}. Response data is: ${responseData}`);
114
+ const jsonData = JSON.parse(responseData);
115
+ this.$logger.trace(`Successfully parsed data from yarn registry for package ${packageName}.`);
116
+ return jsonData;
117
+ });
99
118
  }
100
- async getCachePath() {
101
- const result = await this.$childProcess.exec(`yarn config get cacheFolder`);
102
- return result.toString().trim();
119
+ getCachePath() {
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ const result = yield this.$childProcess.exec(`yarn config get cacheFolder`);
122
+ return result.toString().trim();
123
+ });
103
124
  }
104
125
  }
105
- exports.Yarn2PackageManager = Yarn2PackageManager;
106
126
  __decorate([
107
127
  (0, decorators_1.exported)("yarn2")
108
128
  ], Yarn2PackageManager.prototype, "install", null);
@@ -121,4 +141,6 @@ __decorate([
121
141
  __decorate([
122
142
  (0, decorators_1.exported)("yarn2")
123
143
  ], Yarn2PackageManager.prototype, "getCachePath", null);
144
+ exports.Yarn2PackageManager = Yarn2PackageManager;
124
145
  yok_1.injector.register("yarn2", Yarn2PackageManager);
146
+ //# sourceMappingURL=yarn2-package-manager.js.map
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
4
+ Copyright (c) npm, Inc.
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a
7
+ copy of this software and associated documentation files (the "Software"),
8
+ to deal in the Software without restriction, including without limitation
9
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
10
+ and/or sell copies of the Software, and to permit persons to whom the
11
+ Software is furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in
14
+ all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22
+ DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,69 @@
1
+ # @npmcli/move-file
2
+
3
+ A fork of [move-file](https://github.com/sindresorhus/move-file) with
4
+ compatibility with all node 10.x versions.
5
+
6
+ > Move a file (or directory)
7
+
8
+ The built-in
9
+ [`fs.rename()`](https://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback)
10
+ is just a JavaScript wrapper for the C `rename(2)` function, which doesn't
11
+ support moving files across partitions or devices. This module is what you
12
+ would have expected `fs.rename()` to be.
13
+
14
+ ## Highlights
15
+
16
+ - Promise API.
17
+ - Supports moving a file across partitions and devices.
18
+ - Optionally prevent overwriting an existing file.
19
+ - Creates non-existent destination directories for you.
20
+ - Support for Node versions that lack built-in recursive `fs.mkdir()`
21
+ - Automatically recurses when source is a directory.
22
+
23
+ ## Install
24
+
25
+ ```
26
+ $ npm install @npmcli/move-file
27
+ ```
28
+
29
+ ## Usage
30
+
31
+ ```js
32
+ const moveFile = require('@npmcli/move-file');
33
+
34
+ (async () => {
35
+ await moveFile('source/unicorn.png', 'destination/unicorn.png');
36
+ console.log('The file has been moved');
37
+ })();
38
+ ```
39
+
40
+ ## API
41
+
42
+ ### moveFile(source, destination, options?)
43
+
44
+ Returns a `Promise` that resolves when the file has been moved.
45
+
46
+ ### moveFile.sync(source, destination, options?)
47
+
48
+ #### source
49
+
50
+ Type: `string`
51
+
52
+ File, or directory, you want to move.
53
+
54
+ #### destination
55
+
56
+ Type: `string`
57
+
58
+ Where you want the file or directory moved.
59
+
60
+ #### options
61
+
62
+ Type: `object`
63
+
64
+ ##### overwrite
65
+
66
+ Type: `boolean`\
67
+ Default: `true`
68
+
69
+ Overwrite existing destination file(s).
@@ -0,0 +1,185 @@
1
+ const { dirname, join, resolve, relative, isAbsolute } = require('path')
2
+ const rimraf_ = require('rimraf')
3
+ const { promisify } = require('util')
4
+ const {
5
+ access: access_,
6
+ accessSync,
7
+ copyFile: copyFile_,
8
+ copyFileSync,
9
+ readdir: readdir_,
10
+ readdirSync,
11
+ rename: rename_,
12
+ renameSync,
13
+ stat: stat_,
14
+ statSync,
15
+ lstat: lstat_,
16
+ lstatSync,
17
+ symlink: symlink_,
18
+ symlinkSync,
19
+ readlink: readlink_,
20
+ readlinkSync,
21
+ } = require('fs')
22
+
23
+ const access = promisify(access_)
24
+ const copyFile = promisify(copyFile_)
25
+ const readdir = promisify(readdir_)
26
+ const rename = promisify(rename_)
27
+ const stat = promisify(stat_)
28
+ const lstat = promisify(lstat_)
29
+ const symlink = promisify(symlink_)
30
+ const readlink = promisify(readlink_)
31
+ const rimraf = promisify(rimraf_)
32
+ const rimrafSync = rimraf_.sync
33
+
34
+ const mkdirp = require('mkdirp')
35
+
36
+ const pathExists = async path => {
37
+ try {
38
+ await access(path)
39
+ return true
40
+ } catch (er) {
41
+ return er.code !== 'ENOENT'
42
+ }
43
+ }
44
+
45
+ const pathExistsSync = path => {
46
+ try {
47
+ accessSync(path)
48
+ return true
49
+ } catch (er) {
50
+ return er.code !== 'ENOENT'
51
+ }
52
+ }
53
+
54
+ const moveFile = async (source, destination, options = {}, root = true, symlinks = []) => {
55
+ if (!source || !destination) {
56
+ throw new TypeError('`source` and `destination` file required')
57
+ }
58
+
59
+ options = {
60
+ overwrite: true,
61
+ ...options,
62
+ }
63
+
64
+ if (!options.overwrite && await pathExists(destination)) {
65
+ throw new Error(`The destination file exists: ${destination}`)
66
+ }
67
+
68
+ await mkdirp(dirname(destination))
69
+
70
+ try {
71
+ await rename(source, destination)
72
+ } catch (error) {
73
+ if (error.code === 'EXDEV' || error.code === 'EPERM') {
74
+ const sourceStat = await lstat(source)
75
+ if (sourceStat.isDirectory()) {
76
+ const files = await readdir(source)
77
+ await Promise.all(files.map((file) =>
78
+ moveFile(join(source, file), join(destination, file), options, false, symlinks)
79
+ ))
80
+ } else if (sourceStat.isSymbolicLink()) {
81
+ symlinks.push({ source, destination })
82
+ } else {
83
+ await copyFile(source, destination)
84
+ }
85
+ } else {
86
+ throw error
87
+ }
88
+ }
89
+
90
+ if (root) {
91
+ await Promise.all(symlinks.map(async ({ source: symSource, destination: symDestination }) => {
92
+ let target = await readlink(symSource)
93
+ // junction symlinks in windows will be absolute paths, so we need to
94
+ // make sure they point to the symlink destination
95
+ if (isAbsolute(target)) {
96
+ target = resolve(symDestination, relative(symSource, target))
97
+ }
98
+ // try to determine what the actual file is so we can create the correct
99
+ // type of symlink in windows
100
+ let targetStat = 'file'
101
+ try {
102
+ targetStat = await stat(resolve(dirname(symSource), target))
103
+ if (targetStat.isDirectory()) {
104
+ targetStat = 'junction'
105
+ }
106
+ } catch {
107
+ // targetStat remains 'file'
108
+ }
109
+ await symlink(
110
+ target,
111
+ symDestination,
112
+ targetStat
113
+ )
114
+ }))
115
+ await rimraf(source)
116
+ }
117
+ }
118
+
119
+ const moveFileSync = (source, destination, options = {}, root = true, symlinks = []) => {
120
+ if (!source || !destination) {
121
+ throw new TypeError('`source` and `destination` file required')
122
+ }
123
+
124
+ options = {
125
+ overwrite: true,
126
+ ...options,
127
+ }
128
+
129
+ if (!options.overwrite && pathExistsSync(destination)) {
130
+ throw new Error(`The destination file exists: ${destination}`)
131
+ }
132
+
133
+ mkdirp.sync(dirname(destination))
134
+
135
+ try {
136
+ renameSync(source, destination)
137
+ } catch (error) {
138
+ if (error.code === 'EXDEV' || error.code === 'EPERM') {
139
+ const sourceStat = lstatSync(source)
140
+ if (sourceStat.isDirectory()) {
141
+ const files = readdirSync(source)
142
+ for (const file of files) {
143
+ moveFileSync(join(source, file), join(destination, file), options, false, symlinks)
144
+ }
145
+ } else if (sourceStat.isSymbolicLink()) {
146
+ symlinks.push({ source, destination })
147
+ } else {
148
+ copyFileSync(source, destination)
149
+ }
150
+ } else {
151
+ throw error
152
+ }
153
+ }
154
+
155
+ if (root) {
156
+ for (const { source: symSource, destination: symDestination } of symlinks) {
157
+ let target = readlinkSync(symSource)
158
+ // junction symlinks in windows will be absolute paths, so we need to
159
+ // make sure they point to the symlink destination
160
+ if (isAbsolute(target)) {
161
+ target = resolve(symDestination, relative(symSource, target))
162
+ }
163
+ // try to determine what the actual file is so we can create the correct
164
+ // type of symlink in windows
165
+ let targetStat = 'file'
166
+ try {
167
+ targetStat = statSync(resolve(dirname(symSource), target))
168
+ if (targetStat.isDirectory()) {
169
+ targetStat = 'junction'
170
+ }
171
+ } catch {
172
+ // targetStat remains 'file'
173
+ }
174
+ symlinkSync(
175
+ target,
176
+ symDestination,
177
+ targetStat
178
+ )
179
+ }
180
+ rimrafSync(source)
181
+ }
182
+ }
183
+
184
+ module.exports = moveFile
185
+ module.exports.sync = moveFileSync
@@ -0,0 +1,21 @@
1
+ Copyright James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me)
2
+
3
+ This project is free software released under the MIT license:
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env node
2
+
3
+ const usage = () => `
4
+ usage: mkdirp [DIR1,DIR2..] {OPTIONS}
5
+
6
+ Create each supplied directory including any necessary parent directories
7
+ that don't yet exist.
8
+
9
+ If the directory already exists, do nothing.
10
+
11
+ OPTIONS are:
12
+
13
+ -m<mode> If a directory needs to be created, set the mode as an octal
14
+ --mode=<mode> permission string.
15
+
16
+ -v --version Print the mkdirp version number
17
+
18
+ -h --help Print this helpful banner
19
+
20
+ -p --print Print the first directories created for each path provided
21
+
22
+ --manual Use manual implementation, even if native is available
23
+ `
24
+
25
+ const dirs = []
26
+ const opts = {}
27
+ let print = false
28
+ let dashdash = false
29
+ let manual = false
30
+ for (const arg of process.argv.slice(2)) {
31
+ if (dashdash)
32
+ dirs.push(arg)
33
+ else if (arg === '--')
34
+ dashdash = true
35
+ else if (arg === '--manual')
36
+ manual = true
37
+ else if (/^-h/.test(arg) || /^--help/.test(arg)) {
38
+ console.log(usage())
39
+ process.exit(0)
40
+ } else if (arg === '-v' || arg === '--version') {
41
+ console.log(require('../package.json').version)
42
+ process.exit(0)
43
+ } else if (arg === '-p' || arg === '--print') {
44
+ print = true
45
+ } else if (/^-m/.test(arg) || /^--mode=/.test(arg)) {
46
+ const mode = parseInt(arg.replace(/^(-m|--mode=)/, ''), 8)
47
+ if (isNaN(mode)) {
48
+ console.error(`invalid mode argument: ${arg}\nMust be an octal number.`)
49
+ process.exit(1)
50
+ }
51
+ opts.mode = mode
52
+ } else
53
+ dirs.push(arg)
54
+ }
55
+
56
+ const mkdirp = require('../')
57
+ const impl = manual ? mkdirp.manual : mkdirp
58
+ if (dirs.length === 0)
59
+ console.error(usage())
60
+
61
+ Promise.all(dirs.map(dir => impl(dir, opts)))
62
+ .then(made => print ? made.forEach(m => m && console.log(m)) : null)
63
+ .catch(er => {
64
+ console.error(er.message)
65
+ if (er.code)
66
+ console.error(' code: ' + er.code)
67
+ process.exit(1)
68
+ })
@@ -0,0 +1,31 @@
1
+ const optsArg = require('./lib/opts-arg.js')
2
+ const pathArg = require('./lib/path-arg.js')
3
+
4
+ const {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')
5
+ const {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')
6
+ const {useNative, useNativeSync} = require('./lib/use-native.js')
7
+
8
+
9
+ const mkdirp = (path, opts) => {
10
+ path = pathArg(path)
11
+ opts = optsArg(opts)
12
+ return useNative(opts)
13
+ ? mkdirpNative(path, opts)
14
+ : mkdirpManual(path, opts)
15
+ }
16
+
17
+ const mkdirpSync = (path, opts) => {
18
+ path = pathArg(path)
19
+ opts = optsArg(opts)
20
+ return useNativeSync(opts)
21
+ ? mkdirpNativeSync(path, opts)
22
+ : mkdirpManualSync(path, opts)
23
+ }
24
+
25
+ mkdirp.sync = mkdirpSync
26
+ mkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))
27
+ mkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))
28
+ mkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))
29
+ mkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))
30
+
31
+ module.exports = mkdirp
@@ -0,0 +1,29 @@
1
+ const {dirname} = require('path')
2
+
3
+ const findMade = (opts, parent, path = undefined) => {
4
+ // we never want the 'made' return value to be a root directory
5
+ if (path === parent)
6
+ return Promise.resolve()
7
+
8
+ return opts.statAsync(parent).then(
9
+ st => st.isDirectory() ? path : undefined, // will fail later
10
+ er => er.code === 'ENOENT'
11
+ ? findMade(opts, dirname(parent), parent)
12
+ : undefined
13
+ )
14
+ }
15
+
16
+ const findMadeSync = (opts, parent, path = undefined) => {
17
+ if (path === parent)
18
+ return undefined
19
+
20
+ try {
21
+ return opts.statSync(parent).isDirectory() ? path : undefined
22
+ } catch (er) {
23
+ return er.code === 'ENOENT'
24
+ ? findMadeSync(opts, dirname(parent), parent)
25
+ : undefined
26
+ }
27
+ }
28
+
29
+ module.exports = {findMade, findMadeSync}
@@ -0,0 +1,64 @@
1
+ const {dirname} = require('path')
2
+
3
+ const mkdirpManual = (path, opts, made) => {
4
+ opts.recursive = false
5
+ const parent = dirname(path)
6
+ if (parent === path) {
7
+ return opts.mkdirAsync(path, opts).catch(er => {
8
+ // swallowed by recursive implementation on posix systems
9
+ // any other error is a failure
10
+ if (er.code !== 'EISDIR')
11
+ throw er
12
+ })
13
+ }
14
+
15
+ return opts.mkdirAsync(path, opts).then(() => made || path, er => {
16
+ if (er.code === 'ENOENT')
17
+ return mkdirpManual(parent, opts)
18
+ .then(made => mkdirpManual(path, opts, made))
19
+ if (er.code !== 'EEXIST' && er.code !== 'EROFS')
20
+ throw er
21
+ return opts.statAsync(path).then(st => {
22
+ if (st.isDirectory())
23
+ return made
24
+ else
25
+ throw er
26
+ }, () => { throw er })
27
+ })
28
+ }
29
+
30
+ const mkdirpManualSync = (path, opts, made) => {
31
+ const parent = dirname(path)
32
+ opts.recursive = false
33
+
34
+ if (parent === path) {
35
+ try {
36
+ return opts.mkdirSync(path, opts)
37
+ } catch (er) {
38
+ // swallowed by recursive implementation on posix systems
39
+ // any other error is a failure
40
+ if (er.code !== 'EISDIR')
41
+ throw er
42
+ else
43
+ return
44
+ }
45
+ }
46
+
47
+ try {
48
+ opts.mkdirSync(path, opts)
49
+ return made || path
50
+ } catch (er) {
51
+ if (er.code === 'ENOENT')
52
+ return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))
53
+ if (er.code !== 'EEXIST' && er.code !== 'EROFS')
54
+ throw er
55
+ try {
56
+ if (!opts.statSync(path).isDirectory())
57
+ throw er
58
+ } catch (_) {
59
+ throw er
60
+ }
61
+ }
62
+ }
63
+
64
+ module.exports = {mkdirpManual, mkdirpManualSync}