@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Replace javelinsymbols with Peast

Summary:
This makes it an entirely PHP-only linter implementation,
similar in setup to the PHPAST linter found in arcanist.

Ref T15123

Test Plan:
* Run `./support/peast/build-peast.php`
* Remove all linters but `javelin` from .arclint
* Run arc lint --everything --never-apply-patches
* Observe (lack of) lint violations
(Optional:)
* Compile javelinsymbols from source using instructions in T15123
* Put it in $PATH
* Observe the futility of your effort because javelinsymbols (or more precise, libfbjs) cannot parse the JS in Phorge
* And even if it could, the lint violations are beligerent and numerous

Reviewers: O1 Blessed Committers, avivey

Reviewed By: O1 Blessed Committers, avivey

Subscribers: avivey, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno

Maniphest Tasks: T15123

Differential Revision: https://we.phorge.it/D26774

+2355 -1146
+5
.gitignore
··· 41 41 # Places for users to add custom resources. 42 42 /resources/cows/custom/* 43 43 /resources/figlet/custom/* 44 + 45 + # Peast 46 + /support/peast/peast*.tar.gz 47 + /support/peast/peast*.zip 48 + /support/peast/lib/*
+1081 -890
resources/celerity/map.php
··· 8 8 return array( 9 9 'names' => array( 10 10 'conpherence.pkg.css' => 'b2d6f4b8', 11 - 'conpherence.pkg.js' => '020aebcf', 11 + 'conpherence.pkg.js' => 'b9c54e6f', 12 12 'core.pkg.css' => 'dac75b15', 13 - 'core.pkg.js' => '83c66b30', 14 - 'dark-console.pkg.js' => '187792c2', 13 + 'core.pkg.js' => '206c9549', 14 + 'dark-console.pkg.js' => '40bfef42', 15 15 'differential.pkg.css' => '0dac8831', 16 - 'differential.pkg.js' => '46fcb3af', 16 + 'differential.pkg.js' => '69da62a0', 17 17 'diffusion.pkg.css' => '91e57dc1', 18 - 'diffusion.pkg.js' => 'd06aa1f7', 18 + 'diffusion.pkg.js' => '3fba0510', 19 19 'maniphest.pkg.css' => '31ad4266', 20 20 'maniphest.pkg.js' => 'f17ec1b3', 21 21 'rsrc/audio/basic/alert.mp3' => '17889334', ··· 180 180 'rsrc/css/sprite-login.css' => '0abdf921', 181 181 'rsrc/css/sprite-tokens.css' => '330edc9e', 182 182 'rsrc/css/syntax/syntax-default.css' => 'c0307dc6', 183 - 'rsrc/externals/d3/d3.min.js' => 'e97b4b78', 183 + 'rsrc/externals/d3/d3.min.js' => 'dae76c10', 184 184 'rsrc/externals/font/fontawesome/fontawesome-webfont.woff2' => '351fd46a', 185 185 'rsrc/externals/font/lato/lato-bold.woff2' => '389fcdb1', 186 186 'rsrc/externals/font/lato/lato-bolditalic.woff2' => 'bc7d1274', 187 187 'rsrc/externals/font/lato/lato-italic.woff2' => 'fffc0d8c', 188 188 'rsrc/externals/font/lato/lato-regular.woff2' => '8f846797', 189 - 'rsrc/externals/javelin/core/Event.js' => '1dbe260d', 190 - 'rsrc/externals/javelin/core/Stratcom.js' => '0889b835', 189 + 'rsrc/externals/javelin/core/Event.js' => '38bc5a44', 190 + 'rsrc/externals/javelin/core/Stratcom.js' => '86e7c900', 191 191 'rsrc/externals/javelin/core/__tests__/event-stop-and-kill.js' => '048472d2', 192 192 'rsrc/externals/javelin/core/__tests__/install.js' => '14a7e671', 193 193 'rsrc/externals/javelin/core/__tests__/stratcom.js' => 'a28464bb', 194 194 'rsrc/externals/javelin/core/__tests__/util.js' => 'e29a4354', 195 - 'rsrc/externals/javelin/core/init.js' => '98e6504a', 195 + 'rsrc/externals/javelin/core/init.js' => '1767ee66', 196 196 'rsrc/externals/javelin/core/init_node.js' => '16961339', 197 197 'rsrc/externals/javelin/core/install.js' => '5902260c', 198 - 'rsrc/externals/javelin/core/util.js' => '472cda1c', 198 + 'rsrc/externals/javelin/core/util.js' => '32a82ac2', 199 199 'rsrc/externals/javelin/docs/Base.js' => '5a401d7d', 200 200 'rsrc/externals/javelin/docs/onload.js' => 'ee58fb62', 201 - 'rsrc/externals/javelin/ext/fx/Color.js' => '78f811c9', 202 - 'rsrc/externals/javelin/ext/fx/FX.js' => '34450586', 203 - 'rsrc/externals/javelin/ext/reactor/core/DynVal.js' => '202a2e85', 204 - 'rsrc/externals/javelin/ext/reactor/core/Reactor.js' => '1c850a26', 205 - 'rsrc/externals/javelin/ext/reactor/core/ReactorNode.js' => '72960bc1', 206 - 'rsrc/externals/javelin/ext/reactor/core/ReactorNodeCalmer.js' => '225bbb98', 207 - 'rsrc/externals/javelin/ext/reactor/dom/RDOM.js' => '6cfa0008', 208 - 'rsrc/externals/javelin/ext/view/HTMLView.js' => 'f8c4e135', 209 - 'rsrc/externals/javelin/ext/view/View.js' => '289bf236', 210 - 'rsrc/externals/javelin/ext/view/ViewInterpreter.js' => '876506b6', 211 - 'rsrc/externals/javelin/ext/view/ViewPlaceholder.js' => 'a9942052', 212 - 'rsrc/externals/javelin/ext/view/ViewRenderer.js' => '9aae2b66', 213 - 'rsrc/externals/javelin/ext/view/ViewVisitor.js' => '308f9fe4', 201 + 'rsrc/externals/javelin/ext/fx/Color.js' => '36576292', 202 + 'rsrc/externals/javelin/ext/fx/FX.js' => '0a9fdbb9', 203 + 'rsrc/externals/javelin/ext/reactor/core/DynVal.js' => 'e47745d1', 204 + 'rsrc/externals/javelin/ext/reactor/core/Reactor.js' => '93ec1300', 205 + 'rsrc/externals/javelin/ext/reactor/core/ReactorNode.js' => '9af9ca69', 206 + 'rsrc/externals/javelin/ext/reactor/core/ReactorNodeCalmer.js' => '7a7abb10', 207 + 'rsrc/externals/javelin/ext/reactor/dom/RDOM.js' => 'eac68b41', 208 + 'rsrc/externals/javelin/ext/view/HTMLView.js' => '122e6e60', 209 + 'rsrc/externals/javelin/ext/view/View.js' => 'f2977446', 210 + 'rsrc/externals/javelin/ext/view/ViewInterpreter.js' => '339f5c61', 211 + 'rsrc/externals/javelin/ext/view/ViewPlaceholder.js' => '7bdf6903', 212 + 'rsrc/externals/javelin/ext/view/ViewRenderer.js' => 'a2a6143c', 213 + 'rsrc/externals/javelin/ext/view/ViewVisitor.js' => '8b0e0928', 214 214 'rsrc/externals/javelin/ext/view/__tests__/HTMLView.js' => '6e50a13f', 215 215 'rsrc/externals/javelin/ext/view/__tests__/View.js' => 'd284be5d', 216 216 'rsrc/externals/javelin/ext/view/__tests__/ViewInterpreter.js' => 'a9f35511', 217 217 'rsrc/externals/javelin/ext/view/__tests__/ViewRenderer.js' => '3a1b81f6', 218 - 'rsrc/externals/javelin/lib/Cookie.js' => '05d290ef', 219 - 'rsrc/externals/javelin/lib/DOM.js' => '3c6f9405', 220 - 'rsrc/externals/javelin/lib/History.js' => '030b4f7a', 221 - 'rsrc/externals/javelin/lib/JSON.js' => '541f81c3', 222 - 'rsrc/externals/javelin/lib/Leader.js' => '0d2490ce', 223 - 'rsrc/externals/javelin/lib/Mask.js' => '7c4d8998', 224 - 'rsrc/externals/javelin/lib/Quicksand.js' => 'd3799cb4', 225 - 'rsrc/externals/javelin/lib/Request.js' => '84e6891f', 226 - 'rsrc/externals/javelin/lib/Resource.js' => '20514cc2', 227 - 'rsrc/externals/javelin/lib/Routable.js' => '6a18c42e', 228 - 'rsrc/externals/javelin/lib/Router.js' => '32755edb', 229 - 'rsrc/externals/javelin/lib/Scrollbar.js' => 'a43ae2ae', 230 - 'rsrc/externals/javelin/lib/Sound.js' => 'd4cc2d2a', 231 - 'rsrc/externals/javelin/lib/URI.js' => '1fcfd5c0', 232 - 'rsrc/externals/javelin/lib/Vector.js' => 'e9c80beb', 233 - 'rsrc/externals/javelin/lib/WebSocket.js' => 'fdc13e4e', 234 - 'rsrc/externals/javelin/lib/Workflow.js' => 'cc1553f3', 218 + 'rsrc/externals/javelin/lib/Cookie.js' => '05b28aa2', 219 + 'rsrc/externals/javelin/lib/DOM.js' => '7d83258e', 220 + 'rsrc/externals/javelin/lib/History.js' => '533a88ab', 221 + 'rsrc/externals/javelin/lib/JSON.js' => '4e373d4b', 222 + 'rsrc/externals/javelin/lib/Leader.js' => '467214de', 223 + 'rsrc/externals/javelin/lib/Mask.js' => '5ce5c490', 224 + 'rsrc/externals/javelin/lib/Quicksand.js' => '904b29cd', 225 + 'rsrc/externals/javelin/lib/Request.js' => '4e3567dd', 226 + 'rsrc/externals/javelin/lib/Resource.js' => '699676a1', 227 + 'rsrc/externals/javelin/lib/Routable.js' => '45f4ef11', 228 + 'rsrc/externals/javelin/lib/Router.js' => '8841c560', 229 + 'rsrc/externals/javelin/lib/Scrollbar.js' => '70743772', 230 + 'rsrc/externals/javelin/lib/Sound.js' => '755f30a4', 231 + 'rsrc/externals/javelin/lib/URI.js' => '5ab77007', 232 + 'rsrc/externals/javelin/lib/Vector.js' => '4b8bc989', 233 + 'rsrc/externals/javelin/lib/WebSocket.js' => 'd9979d19', 234 + 'rsrc/externals/javelin/lib/Workflow.js' => '0c69620e', 235 235 'rsrc/externals/javelin/lib/__tests__/Cookie.js' => 'ca686f71', 236 236 'rsrc/externals/javelin/lib/__tests__/DOM.js' => '4566e249', 237 237 'rsrc/externals/javelin/lib/__tests__/JSON.js' => '710377ae', 238 238 'rsrc/externals/javelin/lib/__tests__/URI.js' => '6fff0c2b', 239 239 'rsrc/externals/javelin/lib/__tests__/behavior.js' => '8426ebeb', 240 240 'rsrc/externals/javelin/lib/behavior.js' => '1b6acc2a', 241 - 'rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js' => '89a1ae3a', 242 - 'rsrc/externals/javelin/lib/control/typeahead/Typeahead.js' => '0507519c', 243 - 'rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js' => 'a241536a', 244 - 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js' => '22ee68a5', 245 - 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js' => '23387297', 246 - 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js' => '5a79f6c3', 247 - 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js' => '8badee71', 248 - 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js' => '80bff3af', 241 + 'rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js' => '6691be26', 242 + 'rsrc/externals/javelin/lib/control/typeahead/Typeahead.js' => '6bb4873a', 243 + 'rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js' => '9a68421a', 244 + 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js' => 'ce39158d', 245 + 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js' => '63598f73', 246 + 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js' => '8d038327', 247 + 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js' => '670c0b8a', 248 + 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js' => 'b6bafedf', 249 249 'rsrc/favicons/favicon-16x16.png' => '4c51a03a', 250 250 'rsrc/favicons/mask-icon.svg' => 'db699fe1', 251 251 'rsrc/image/avatar.png' => '0d17c6c4', ··· 290 290 'rsrc/image/sprite-login.png' => '6c73e3ca', 291 291 'rsrc/image/sprite-tokens-X2.png' => '5ddc639b', 292 292 'rsrc/image/sprite-tokens.png' => '15f84535', 293 - 'rsrc/js/application/aphlict/Aphlict.js' => '022516b4', 293 + 'rsrc/js/application/aphlict/Aphlict.js' => '7e93c8d6', 294 294 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => 'e9a2940f', 295 - 'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => '4e61fa88', 296 - 'rsrc/js/application/aphlict/behavior-aphlict-status.js' => 'c3703a16', 297 - 'rsrc/js/application/aphlict/behavior-desktop-notifications-control.js' => '070679fe', 298 - 'rsrc/js/application/calendar/behavior-day-view.js' => '727a5a61', 299 - 'rsrc/js/application/calendar/behavior-event-all-day.js' => '0b1bc990', 300 - 'rsrc/js/application/calendar/behavior-month-view.js' => '158c64e0', 295 + 'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => 'a4859af5', 296 + 'rsrc/js/application/aphlict/behavior-aphlict-status.js' => 'da402bda', 297 + 'rsrc/js/application/aphlict/behavior-desktop-notifications-control.js' => '9e3e8389', 298 + 'rsrc/js/application/calendar/behavior-day-view.js' => '1a6b7115', 299 + 'rsrc/js/application/calendar/behavior-event-all-day.js' => 'a64672b5', 300 + 'rsrc/js/application/calendar/behavior-month-view.js' => 'e5e044e8', 301 301 'rsrc/js/application/config/behavior-reorder-fields.js' => '2539f834', 302 - 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => 'aec8e38c', 303 - 'rsrc/js/application/conpherence/behavior-conpherence-search.js' => '91befbcc', 304 - 'rsrc/js/application/conpherence/behavior-durable-column.js' => 'fa6f30b2', 305 - 'rsrc/js/application/conpherence/behavior-menu.js' => '8c2ed2bf', 306 - 'rsrc/js/application/conpherence/behavior-participant-pane.js' => '43ba89a2', 307 - 'rsrc/js/application/conpherence/behavior-pontificate.js' => '4ae58b5a', 302 + 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '3b255926', 303 + 'rsrc/js/application/conpherence/behavior-conpherence-search.js' => 'afe38d96', 304 + 'rsrc/js/application/conpherence/behavior-durable-column.js' => 'a2d381d8', 305 + 'rsrc/js/application/conpherence/behavior-menu.js' => '299e50bd', 306 + 'rsrc/js/application/conpherence/behavior-participant-pane.js' => '1fabcc80', 307 + 'rsrc/js/application/conpherence/behavior-pontificate.js' => '0946ebd6', 308 308 'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '5a6f6a06', 309 - 'rsrc/js/application/conpherence/behavior-toggle-widget.js' => '8f959ad0', 309 + 'rsrc/js/application/conpherence/behavior-toggle-widget.js' => '194194c0', 310 310 'rsrc/js/application/countdown/timer.js' => '6a162524', 311 311 'rsrc/js/application/daemon/behavior-bulk-job-reload.js' => '3829a3cf', 312 312 'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => '9c01e364', 313 313 'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => 'a2ab19be', 314 314 'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '1e413dc9', 315 315 'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => '0116d3e8', 316 - 'rsrc/js/application/diff/DiffChangeset.js' => 'd7d3ba75', 317 - 'rsrc/js/application/diff/DiffChangesetList.js' => 'cc2c5de5', 318 - 'rsrc/js/application/diff/DiffInline.js' => '9c775532', 319 - 'rsrc/js/application/diff/DiffInlineContentState.js' => 'aa51efb4', 320 - 'rsrc/js/application/diff/DiffPathView.js' => '8207abf9', 321 - 'rsrc/js/application/diff/DiffTreeView.js' => '5d83623b', 316 + 'rsrc/js/application/diff/DiffChangeset.js' => '83560c3e', 317 + 'rsrc/js/application/diff/DiffChangesetList.js' => '3bc5d0a2', 318 + 'rsrc/js/application/diff/DiffInline.js' => '7fb61bce', 319 + 'rsrc/js/application/diff/DiffInlineContentState.js' => '09b25d79', 320 + 'rsrc/js/application/diff/DiffPathView.js' => '06c422f5', 321 + 'rsrc/js/application/diff/DiffTreeView.js' => '284cdce8', 322 322 'rsrc/js/application/differential/behavior-diff-radios.js' => '925fe8cd', 323 - 'rsrc/js/application/differential/behavior-populate.js' => 'b86ef6c2', 324 - 'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => '6c798a10', 325 - 'rsrc/js/application/diffusion/ExternalEditorLinkEngine.js' => '48a8641f', 323 + 'rsrc/js/application/differential/behavior-populate.js' => 'fabc70ac', 324 + 'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => 'c2129f37', 325 + 'rsrc/js/application/diffusion/ExternalEditorLinkEngine.js' => '0597e99e', 326 326 'rsrc/js/application/diffusion/behavior-audit-preview.js' => 'b7b73831', 327 327 'rsrc/js/application/diffusion/behavior-commit-branches.js' => '4b671572', 328 - 'rsrc/js/application/diffusion/behavior-commit-graph.js' => '56d8091e', 328 + 'rsrc/js/application/diffusion/behavior-commit-graph.js' => '9bc1dd14', 329 329 'rsrc/js/application/diffusion/behavior-locate-file.js' => '4c77f259', 330 330 'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => 'c715c123', 331 331 'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => '6a85bc5a', 332 332 'rsrc/js/application/drydock/drydock-live-operation-status.js' => '47a0728b', 333 - 'rsrc/js/application/fact/Chart.js' => 'ce6f8e3d', 334 - 'rsrc/js/application/fact/ChartCurtainView.js' => '86954222', 335 - 'rsrc/js/application/fact/ChartFunctionLabel.js' => '81de1dab', 336 - 'rsrc/js/application/files/behavior-document-engine.js' => '243d6c22', 333 + 'rsrc/js/application/fact/Chart.js' => '71779eee', 334 + 'rsrc/js/application/fact/ChartCurtainView.js' => '52837786', 335 + 'rsrc/js/application/fact/ChartFunctionLabel.js' => 'b04c258c', 336 + 'rsrc/js/application/files/behavior-document-engine.js' => '9d02b360', 337 337 'rsrc/js/application/files/behavior-icon-composer.js' => '38a6cedb', 338 338 'rsrc/js/application/files/behavior-launch-icon-composer.js' => 'a17b84f1', 339 - 'rsrc/js/application/harbormaster/behavior-harbormaster-log.js' => 'b347a301', 340 - 'rsrc/js/application/herald/HeraldRuleEditor.js' => '2633bef7', 341 - 'rsrc/js/application/herald/PathTypeahead.js' => 'ad486db3', 339 + 'rsrc/js/application/harbormaster/behavior-harbormaster-log.js' => 'd3115244', 340 + 'rsrc/js/application/herald/HeraldRuleEditor.js' => '459fbefc', 341 + 'rsrc/js/application/herald/PathTypeahead.js' => '66ed7808', 342 342 'rsrc/js/application/herald/herald-rule-editor.js' => '0922e81d', 343 343 'rsrc/js/application/maniphest/behavior-batch-selector.js' => '1f5c3cb3', 344 - 'rsrc/js/application/maniphest/behavior-line-chart.js' => 'ad258e28', 344 + 'rsrc/js/application/maniphest/behavior-line-chart.js' => 'c3ea5759', 345 345 'rsrc/js/application/maniphest/behavior-list-edit.js' => 'c687e867', 346 - 'rsrc/js/application/owners/OwnersPathEditor.js' => '2a8b62d9', 346 + 'rsrc/js/application/owners/OwnersPathEditor.js' => 'e44abfd6', 347 347 'rsrc/js/application/owners/owners-path-editor.js' => 'ff688a7a', 348 348 'rsrc/js/application/passphrase/passphrase-credential-control.js' => '48fe33d0', 349 - 'rsrc/js/application/pholio/behavior-pholio-mock-edit.js' => '3eed1f2b', 350 - 'rsrc/js/application/pholio/behavior-pholio-mock-view.js' => '5aa1544e', 349 + 'rsrc/js/application/pholio/behavior-pholio-mock-edit.js' => 'e10d1263', 350 + 'rsrc/js/application/pholio/behavior-pholio-mock-view.js' => 'e9592389', 351 351 'rsrc/js/application/phortune/behavior-stripe-payment-form.js' => '02cb4398', 352 352 'rsrc/js/application/phortune/behavior-test-payment-form.js' => '4a7fb02b', 353 - 'rsrc/js/application/phortune/phortune-credit-card-form.js' => 'd12d214f', 354 - 'rsrc/js/application/policy/behavior-policy-control.js' => '0eaa33a9', 353 + 'rsrc/js/application/phortune/phortune-credit-card-form.js' => '58883f56', 354 + 'rsrc/js/application/policy/behavior-policy-control.js' => '274f48cf', 355 355 'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '9347f172', 356 - 'rsrc/js/application/projects/WorkboardBoard.js' => 'b46d88c5', 357 - 'rsrc/js/application/projects/WorkboardCard.js' => '0392a5d8', 358 - 'rsrc/js/application/projects/WorkboardCardTemplate.js' => '84f82dad', 359 - 'rsrc/js/application/projects/WorkboardColumn.js' => 'c3d24e63', 360 - 'rsrc/js/application/projects/WorkboardController.js' => '7474d31f', 361 - 'rsrc/js/application/projects/WorkboardDropEffect.js' => '8e0aa661', 362 - 'rsrc/js/application/projects/WorkboardHeader.js' => '111bfd2d', 363 - 'rsrc/js/application/projects/WorkboardHeaderTemplate.js' => 'ebe83a6b', 364 - 'rsrc/js/application/projects/WorkboardOrderTemplate.js' => '03e8891f', 365 - 'rsrc/js/application/projects/behavior-project-boards.js' => '58cb6a88', 356 + 'rsrc/js/application/projects/WorkboardBoard.js' => 'a4fd3b57', 357 + 'rsrc/js/application/projects/WorkboardCard.js' => 'b82fc780', 358 + 'rsrc/js/application/projects/WorkboardCardTemplate.js' => 'e63ab0ec', 359 + 'rsrc/js/application/projects/WorkboardColumn.js' => 'c74a690a', 360 + 'rsrc/js/application/projects/WorkboardController.js' => '78148921', 361 + 'rsrc/js/application/projects/WorkboardDropEffect.js' => 'e342e2b4', 362 + 'rsrc/js/application/projects/WorkboardHeader.js' => '5a59fb82', 363 + 'rsrc/js/application/projects/WorkboardHeaderTemplate.js' => '02a2c910', 364 + 'rsrc/js/application/projects/WorkboardOrderTemplate.js' => 'f9d95e77', 365 + 'rsrc/js/application/projects/behavior-project-boards.js' => 'b852b68e', 366 366 'rsrc/js/application/projects/behavior-project-create.js' => '34c53422', 367 367 'rsrc/js/application/projects/behavior-reorder-columns.js' => '8ac32fd9', 368 - 'rsrc/js/application/repository/repository-crossreference.js' => '44d48cd1', 368 + 'rsrc/js/application/repository/repository-crossreference.js' => 'f5bba944', 369 369 'rsrc/js/application/search/behavior-reorder-profile-menu-items.js' => 'e5bdb730', 370 370 'rsrc/js/application/search/behavior-reorder-queries.js' => 'b86f297f', 371 - 'rsrc/js/application/transactions/behavior-comment-actions.js' => '4dffaeb2', 372 - 'rsrc/js/application/transactions/behavior-reorder-configs.js' => '4842f137', 373 - 'rsrc/js/application/transactions/behavior-reorder-fields.js' => '0ad8d31f', 374 - 'rsrc/js/application/transactions/behavior-show-older-transactions.js' => '8b5c7d65', 371 + 'rsrc/js/application/transactions/behavior-comment-actions.js' => '19124eb6', 372 + 'rsrc/js/application/transactions/behavior-reorder-configs.js' => '636c1d6d', 373 + 'rsrc/js/application/transactions/behavior-reorder-fields.js' => '0235b35d', 374 + 'rsrc/js/application/transactions/behavior-show-older-transactions.js' => '02d0d179', 375 375 'rsrc/js/application/transactions/behavior-transaction-comment-form.js' => '2bdadf1a', 376 376 'rsrc/js/application/transactions/behavior-transaction-list.js' => '9cec214e', 377 - 'rsrc/js/application/trigger/TriggerRule.js' => '41b7b4f6', 378 - 'rsrc/js/application/trigger/TriggerRuleControl.js' => '5faf27b9', 379 - 'rsrc/js/application/trigger/TriggerRuleEditor.js' => 'b49fd60c', 380 - 'rsrc/js/application/trigger/TriggerRuleType.js' => '4feea7d3', 381 - 'rsrc/js/application/trigger/trigger-rule-editor.js' => '398fdf13', 377 + 'rsrc/js/application/trigger/TriggerRule.js' => 'a9747130', 378 + 'rsrc/js/application/trigger/TriggerRuleControl.js' => '199300af', 379 + 'rsrc/js/application/trigger/TriggerRuleEditor.js' => '516b27db', 380 + 'rsrc/js/application/trigger/TriggerRuleType.js' => 'e6bc2ced', 381 + 'rsrc/js/application/trigger/trigger-rule-editor.js' => '89cfe5ef', 382 382 'rsrc/js/application/typeahead/behavior-typeahead-browse.js' => '70245195', 383 - 'rsrc/js/application/typeahead/behavior-typeahead-search.js' => '7b139193', 383 + 'rsrc/js/application/typeahead/behavior-typeahead-search.js' => '5ec2a4b0', 384 384 'rsrc/js/application/uiexample/gesture-example.js' => '242dedd0', 385 385 'rsrc/js/application/uiexample/notification-example.js' => '29819b75', 386 - 'rsrc/js/core/Busy.js' => '5202e831', 387 - 'rsrc/js/core/DragAndDropFileUpload.js' => '4370900d', 388 - 'rsrc/js/core/DraggableList.js' => '0169e425', 389 - 'rsrc/js/core/Favicon.js' => '7930776a', 390 - 'rsrc/js/core/FileUpload.js' => '331676ea', 391 - 'rsrc/js/core/Hovercard.js' => '6199f752', 392 - 'rsrc/js/core/HovercardList.js' => 'de4b4919', 393 - 'rsrc/js/core/KeyboardShortcut.js' => '1a844c06', 394 - 'rsrc/js/core/KeyboardShortcutManager.js' => '81debc48', 395 - 'rsrc/js/core/MultirowRowManager.js' => '5b54c823', 396 - 'rsrc/js/core/Notification.js' => 'a9b91e3f', 397 - 'rsrc/js/core/Prefab.js' => '5793d835', 398 - 'rsrc/js/core/RemarkupMetadata.js' => 'e40c4991', 399 - 'rsrc/js/core/ShapedRequest.js' => '995f5102', 400 - 'rsrc/js/core/TextAreaUtils.js' => 'f340a484', 401 - 'rsrc/js/core/Title.js' => '43bc9360', 402 - 'rsrc/js/core/ToolTip.js' => '83754533', 386 + 'rsrc/js/core/Busy.js' => 'ec0c35b0', 387 + 'rsrc/js/core/DragAndDropFileUpload.js' => '184e5354', 388 + 'rsrc/js/core/DraggableList.js' => '0092408f', 389 + 'rsrc/js/core/Favicon.js' => '6be35145', 390 + 'rsrc/js/core/FileUpload.js' => 'bcb07115', 391 + 'rsrc/js/core/Hovercard.js' => 'b4afcd89', 392 + 'rsrc/js/core/HovercardList.js' => 'c5a9b42b', 393 + 'rsrc/js/core/KeyboardShortcut.js' => 'beca9a7a', 394 + 'rsrc/js/core/KeyboardShortcutManager.js' => '4c65e1f0', 395 + 'rsrc/js/core/MultirowRowManager.js' => '037c04be', 396 + 'rsrc/js/core/Notification.js' => 'cf6b743b', 397 + 'rsrc/js/core/Prefab.js' => '8673c75c', 398 + 'rsrc/js/core/RemarkupMetadata.js' => 'fe7cdb3b', 399 + 'rsrc/js/core/ShapedRequest.js' => 'bdc40a6b', 400 + 'rsrc/js/core/TextAreaUtils.js' => '9cde5660', 401 + 'rsrc/js/core/Title.js' => 'c6d00cb9', 402 + 'rsrc/js/core/ToolTip.js' => '09ff9853', 403 403 'rsrc/js/core/behavior-audio-source.js' => '6e815b50', 404 404 'rsrc/js/core/behavior-autofocus.js' => '65bb0011', 405 405 'rsrc/js/core/behavior-badge-view.js' => '92cdd7b6', 406 406 'rsrc/js/core/behavior-bulk-editor.js' => 'aa6d2308', 407 407 'rsrc/js/core/behavior-choose-control.js' => '04f8a1e3', 408 408 'rsrc/js/core/behavior-copy.js' => '96b63a02', 409 - 'rsrc/js/core/behavior-detect-timezone.js' => '78bc5d94', 410 - 'rsrc/js/core/behavior-device.js' => 'ac2b1e01', 409 + 'rsrc/js/core/behavior-detect-timezone.js' => '4321459b', 410 + 'rsrc/js/core/behavior-device.js' => 'f941cb00', 411 411 'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '6bc7ccf7', 412 - 'rsrc/js/core/behavior-fancy-datepicker.js' => 'b545d0a0', 412 + 'rsrc/js/core/behavior-fancy-datepicker.js' => '7aa2cf57', 413 413 'rsrc/js/core/behavior-form.js' => 'c60fb44a', 414 414 'rsrc/js/core/behavior-gesture.js' => 'b58d1a2a', 415 - 'rsrc/js/core/behavior-global-drag-and-drop.js' => '1cab0e9a', 416 - 'rsrc/js/core/behavior-high-security-warning.js' => 'dae2d55b', 415 + 'rsrc/js/core/behavior-global-drag-and-drop.js' => 'b7bd4fb1', 416 + 'rsrc/js/core/behavior-high-security-warning.js' => '8261d229', 417 417 'rsrc/js/core/behavior-history-install.js' => '6a1583a8', 418 - 'rsrc/js/core/behavior-hovercard.js' => '0a4b35f2', 418 + 'rsrc/js/core/behavior-hovercard.js' => 'f29b7914', 419 419 'rsrc/js/core/behavior-keyboard-pager.js' => '1325b731', 420 - 'rsrc/js/core/behavior-keyboard-shortcuts.js' => '42c44e8b', 421 - 'rsrc/js/core/behavior-lightbox-attachments.js' => '14c7ab36', 422 - 'rsrc/js/core/behavior-line-linker.js' => '8cbbcfc5', 423 - 'rsrc/js/core/behavior-linked-container.js' => '74446546', 420 + 'rsrc/js/core/behavior-keyboard-shortcuts.js' => '408a69dd', 421 + 'rsrc/js/core/behavior-lightbox-attachments.js' => '978a8ed3', 422 + 'rsrc/js/core/behavior-line-linker.js' => 'ab273e9d', 423 + 'rsrc/js/core/behavior-linked-container.js' => '861b6cde', 424 424 'rsrc/js/core/behavior-more.js' => '506aa3f4', 425 425 'rsrc/js/core/behavior-object-selector.js' => '98ef467f', 426 - 'rsrc/js/core/behavior-oncopy.js' => 'da8f5259', 427 - 'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => 'daceb29a', 426 + 'rsrc/js/core/behavior-oncopy.js' => 'd336267a', 427 + 'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => '957ff438', 428 428 'rsrc/js/core/behavior-read-only-warning.js' => 'b9109f8f', 429 429 'rsrc/js/core/behavior-redirect.js' => '407ee861', 430 - 'rsrc/js/core/behavior-refresh-csrf.js' => '46116c01', 431 - 'rsrc/js/core/behavior-remarkup-load-image.js' => '202bfa3f', 432 - 'rsrc/js/core/behavior-remarkup-preview.js' => 'd8a86cfb', 430 + 'rsrc/js/core/behavior-refresh-csrf.js' => '345119db', 431 + 'rsrc/js/core/behavior-remarkup-load-image.js' => 'c51e6aa0', 432 + 'rsrc/js/core/behavior-remarkup-preview.js' => '05a2b50b', 433 433 'rsrc/js/core/behavior-reorder-applications.js' => 'aa371860', 434 434 'rsrc/js/core/behavior-reveal-content.js' => 'b105a3a6', 435 - 'rsrc/js/core/behavior-scrollbar.js' => '92388bae', 436 - 'rsrc/js/core/behavior-search-typeahead.js' => 'f782e983', 435 + 'rsrc/js/core/behavior-scrollbar.js' => '19830cb0', 436 + 'rsrc/js/core/behavior-search-typeahead.js' => '4f888644', 437 437 'rsrc/js/core/behavior-select-content.js' => 'c538cbfc', 438 438 'rsrc/js/core/behavior-select-on-click.js' => '66365ee2', 439 - 'rsrc/js/core/behavior-setup-check-https.js' => '01384686', 440 - 'rsrc/js/core/behavior-time-typeahead.js' => '5803b9e7', 439 + 'rsrc/js/core/behavior-setup-check-https.js' => 'adb0a739', 440 + 'rsrc/js/core/behavior-time-typeahead.js' => 'cd00e3d4', 441 441 'rsrc/js/core/behavior-toggle-class.js' => '32db8374', 442 442 'rsrc/js/core/behavior-tokenizer.js' => '3b4899b0', 443 - 'rsrc/js/core/behavior-tooltip.js' => '73ecc1f8', 444 - 'rsrc/js/core/behavior-user-menu.js' => '60cd9241', 443 + 'rsrc/js/core/behavior-tooltip.js' => '1e25ede7', 444 + 'rsrc/js/core/behavior-user-menu.js' => '808d36b2', 445 445 'rsrc/js/core/behavior-watch-anchor.js' => 'a77e2cbd', 446 446 'rsrc/js/core/behavior-workflow.js' => '9623adc1', 447 - 'rsrc/js/core/darkconsole/DarkLog.js' => '3b869402', 448 - 'rsrc/js/core/darkconsole/DarkMessage.js' => '26cd4b73', 449 - 'rsrc/js/core/darkconsole/behavior-dark-console.js' => '457f4d16', 450 - 'rsrc/js/core/phtize.js' => '2f1db1ed', 447 + 'rsrc/js/core/darkconsole/DarkLog.js' => 'd8a27e0d', 448 + 'rsrc/js/core/darkconsole/DarkMessage.js' => 'ef0160d8', 449 + 'rsrc/js/core/darkconsole/behavior-dark-console.js' => '4794450e', 450 + 'rsrc/js/core/phtize.js' => '4c2bf506', 451 451 'rsrc/js/phui/behavior-phui-dropdown-menu.js' => '5cf0501a', 452 - 'rsrc/js/phui/behavior-phui-file-upload.js' => 'e150bd50', 453 - 'rsrc/js/phui/behavior-phui-selectable-list.js' => 'b26a41e4', 452 + 'rsrc/js/phui/behavior-phui-file-upload.js' => '7032764f', 453 + 'rsrc/js/phui/behavior-phui-selectable-list.js' => '7e9921c8', 454 454 'rsrc/js/phui/behavior-phui-submenu.js' => 'b5e9bff9', 455 455 'rsrc/js/phui/behavior-phui-tab-group.js' => '242aa08b', 456 - 'rsrc/js/phui/behavior-phui-timer-control.js' => 'f84bcbf4', 457 - 'rsrc/js/phuix/PHUIXActionListView.js' => 'c68f183f', 458 - 'rsrc/js/phuix/PHUIXActionView.js' => 'a8f573a9', 459 - 'rsrc/js/phuix/PHUIXAutocomplete.js' => 'cf26eaab', 460 - 'rsrc/js/phuix/PHUIXButtonView.js' => '55a24e84', 461 - 'rsrc/js/phuix/PHUIXDropdownMenu.js' => 'b557770a', 462 - 'rsrc/js/phuix/PHUIXExample.js' => 'c2c500a7', 463 - 'rsrc/js/phuix/PHUIXFormControl.js' => '38c1f3fb', 464 - 'rsrc/js/phuix/PHUIXFormationColumnView.js' => '4bcc1f78', 465 - 'rsrc/js/phuix/PHUIXFormationFlankView.js' => '6648270a', 466 - 'rsrc/js/phuix/PHUIXFormationView.js' => 'cef53b3e', 467 - 'rsrc/js/phuix/PHUIXIconView.js' => 'a5257c4e', 456 + 'rsrc/js/phui/behavior-phui-timer-control.js' => '7f949794', 457 + 'rsrc/js/phuix/PHUIXActionListView.js' => '88d218bb', 458 + 'rsrc/js/phuix/PHUIXActionView.js' => '0de4371d', 459 + 'rsrc/js/phuix/PHUIXAutocomplete.js' => '81e8557b', 460 + 'rsrc/js/phuix/PHUIXButtonView.js' => '5313610a', 461 + 'rsrc/js/phuix/PHUIXDropdownMenu.js' => '1bd02b2b', 462 + 'rsrc/js/phuix/PHUIXExample.js' => '222f5d96', 463 + 'rsrc/js/phuix/PHUIXFormControl.js' => 'f27ca8c5', 464 + 'rsrc/js/phuix/PHUIXFormationColumnView.js' => '145fb979', 465 + 'rsrc/js/phuix/PHUIXFormationFlankView.js' => '8b1a7268', 466 + 'rsrc/js/phuix/PHUIXFormationView.js' => 'c967b0e7', 467 + 'rsrc/js/phuix/PHUIXIconView.js' => '2c393e31', 468 468 ), 469 469 'symbols' => array( 470 470 'almanac-css' => '2e050f4f', ··· 489 489 'conpherence-message-pane-css' => '6c5bfa9d', 490 490 'conpherence-notification-css' => '85c48def', 491 491 'conpherence-participant-pane-css' => '69e0058a', 492 - 'conpherence-thread-manager' => 'aec8e38c', 492 + 'conpherence-thread-manager' => '3b255926', 493 493 'conpherence-transaction-css' => '3a3f5e7e', 494 - 'd3' => 'e97b4b78', 494 + 'd3' => 'dae76c10', 495 495 'diff-tree-view-css' => '9bd306c2', 496 496 'differential-changeset-view-css' => '0e0a956c', 497 497 'differential-core-view-css' => '7300a73e', ··· 512 512 'global-drag-and-drop-css' => '1d2713a4', 513 513 'harbormaster-css' => '9346e08b', 514 514 'herald-css' => '648d39e2', 515 - 'herald-rule-editor' => '2633bef7', 515 + 'herald-rule-editor' => '459fbefc', 516 516 'herald-test-css' => '7e7bbdae', 517 517 'inline-comment-summary-css' => '81eb368d', 518 - 'javelin-aphlict' => '022516b4', 518 + 'javelin-aphlict' => '7e93c8d6', 519 519 'javelin-behavior' => '1b6acc2a', 520 520 'javelin-behavior-aphlict-dropdown' => 'e9a2940f', 521 - 'javelin-behavior-aphlict-listen' => '4e61fa88', 522 - 'javelin-behavior-aphlict-status' => 'c3703a16', 521 + 'javelin-behavior-aphlict-listen' => 'a4859af5', 522 + 'javelin-behavior-aphlict-status' => 'da402bda', 523 523 'javelin-behavior-aphront-basic-tokenizer' => '3b4899b0', 524 524 'javelin-behavior-aphront-drag-and-drop-textarea' => '6bc7ccf7', 525 525 'javelin-behavior-aphront-form-disable-on-submit' => 'c60fb44a', ··· 529 529 'javelin-behavior-badge-view' => '92cdd7b6', 530 530 'javelin-behavior-bulk-editor' => 'aa6d2308', 531 531 'javelin-behavior-bulk-job-reload' => '3829a3cf', 532 - 'javelin-behavior-calendar-month-view' => '158c64e0', 532 + 'javelin-behavior-calendar-month-view' => 'e5e044e8', 533 533 'javelin-behavior-choose-control' => '04f8a1e3', 534 - 'javelin-behavior-comment-actions' => '4dffaeb2', 534 + 'javelin-behavior-comment-actions' => '19124eb6', 535 535 'javelin-behavior-config-reorder-fields' => '2539f834', 536 - 'javelin-behavior-conpherence-menu' => '8c2ed2bf', 537 - 'javelin-behavior-conpherence-participant-pane' => '43ba89a2', 538 - 'javelin-behavior-conpherence-pontificate' => '4ae58b5a', 539 - 'javelin-behavior-conpherence-search' => '91befbcc', 536 + 'javelin-behavior-conpherence-menu' => '299e50bd', 537 + 'javelin-behavior-conpherence-participant-pane' => '1fabcc80', 538 + 'javelin-behavior-conpherence-pontificate' => '0946ebd6', 539 + 'javelin-behavior-conpherence-search' => 'afe38d96', 540 540 'javelin-behavior-countdown-timer' => '6a162524', 541 - 'javelin-behavior-dark-console' => '457f4d16', 541 + 'javelin-behavior-dark-console' => '4794450e', 542 542 'javelin-behavior-dashboard-async-panel' => '9c01e364', 543 543 'javelin-behavior-dashboard-move-panels' => 'a2ab19be', 544 544 'javelin-behavior-dashboard-query-panel-select' => '1e413dc9', 545 545 'javelin-behavior-dashboard-tab-panel' => '0116d3e8', 546 - 'javelin-behavior-day-view' => '727a5a61', 547 - 'javelin-behavior-desktop-notifications-control' => '070679fe', 548 - 'javelin-behavior-detect-timezone' => '78bc5d94', 549 - 'javelin-behavior-device' => 'ac2b1e01', 546 + 'javelin-behavior-day-view' => '1a6b7115', 547 + 'javelin-behavior-desktop-notifications-control' => '9e3e8389', 548 + 'javelin-behavior-detect-timezone' => '4321459b', 549 + 'javelin-behavior-device' => 'f941cb00', 550 550 'javelin-behavior-differential-diff-radios' => '925fe8cd', 551 - 'javelin-behavior-differential-populate' => 'b86ef6c2', 551 + 'javelin-behavior-differential-populate' => 'fabc70ac', 552 552 'javelin-behavior-diffusion-commit-branches' => '4b671572', 553 - 'javelin-behavior-diffusion-commit-graph' => '56d8091e', 553 + 'javelin-behavior-diffusion-commit-graph' => '9bc1dd14', 554 554 'javelin-behavior-diffusion-locate-file' => '4c77f259', 555 555 'javelin-behavior-diffusion-pull-lastmodified' => 'c715c123', 556 - 'javelin-behavior-document-engine' => '243d6c22', 556 + 'javelin-behavior-document-engine' => '9d02b360', 557 557 'javelin-behavior-doorkeeper-tag' => '6a85bc5a', 558 558 'javelin-behavior-drydock-live-operation-status' => '47a0728b', 559 - 'javelin-behavior-durable-column' => 'fa6f30b2', 560 - 'javelin-behavior-editengine-reorder-configs' => '4842f137', 561 - 'javelin-behavior-editengine-reorder-fields' => '0ad8d31f', 562 - 'javelin-behavior-event-all-day' => '0b1bc990', 563 - 'javelin-behavior-fancy-datepicker' => 'b545d0a0', 564 - 'javelin-behavior-global-drag-and-drop' => '1cab0e9a', 565 - 'javelin-behavior-harbormaster-log' => 'b347a301', 559 + 'javelin-behavior-durable-column' => 'a2d381d8', 560 + 'javelin-behavior-editengine-reorder-configs' => '636c1d6d', 561 + 'javelin-behavior-editengine-reorder-fields' => '0235b35d', 562 + 'javelin-behavior-event-all-day' => 'a64672b5', 563 + 'javelin-behavior-fancy-datepicker' => '7aa2cf57', 564 + 'javelin-behavior-global-drag-and-drop' => 'b7bd4fb1', 565 + 'javelin-behavior-harbormaster-log' => 'd3115244', 566 566 'javelin-behavior-herald-rule-editor' => '0922e81d', 567 - 'javelin-behavior-high-security-warning' => 'dae2d55b', 567 + 'javelin-behavior-high-security-warning' => '8261d229', 568 568 'javelin-behavior-history-install' => '6a1583a8', 569 569 'javelin-behavior-icon-composer' => '38a6cedb', 570 570 'javelin-behavior-launch-icon-composer' => 'a17b84f1', 571 - 'javelin-behavior-lightbox-attachments' => '14c7ab36', 572 - 'javelin-behavior-line-chart' => 'ad258e28', 573 - 'javelin-behavior-linked-container' => '74446546', 571 + 'javelin-behavior-lightbox-attachments' => '978a8ed3', 572 + 'javelin-behavior-line-chart' => 'c3ea5759', 573 + 'javelin-behavior-linked-container' => '861b6cde', 574 574 'javelin-behavior-maniphest-batch-selector' => '1f5c3cb3', 575 575 'javelin-behavior-maniphest-list-editor' => 'c687e867', 576 576 'javelin-behavior-owners-path-editor' => 'ff688a7a', ··· 580 580 'javelin-behavior-phabricator-gesture' => 'b58d1a2a', 581 581 'javelin-behavior-phabricator-gesture-example' => '242dedd0', 582 582 'javelin-behavior-phabricator-keyboard-pager' => '1325b731', 583 - 'javelin-behavior-phabricator-keyboard-shortcuts' => '42c44e8b', 584 - 'javelin-behavior-phabricator-line-linker' => '8cbbcfc5', 583 + 'javelin-behavior-phabricator-keyboard-shortcuts' => '408a69dd', 584 + 'javelin-behavior-phabricator-line-linker' => 'ab273e9d', 585 585 'javelin-behavior-phabricator-notification-example' => '29819b75', 586 586 'javelin-behavior-phabricator-object-selector' => '98ef467f', 587 - 'javelin-behavior-phabricator-oncopy' => 'da8f5259', 588 - 'javelin-behavior-phabricator-remarkup-assist' => 'daceb29a', 587 + 'javelin-behavior-phabricator-oncopy' => 'd336267a', 588 + 'javelin-behavior-phabricator-remarkup-assist' => '957ff438', 589 589 'javelin-behavior-phabricator-reveal-content' => 'b105a3a6', 590 - 'javelin-behavior-phabricator-search-typeahead' => 'f782e983', 591 - 'javelin-behavior-phabricator-show-older-transactions' => '8b5c7d65', 592 - 'javelin-behavior-phabricator-tooltips' => '73ecc1f8', 590 + 'javelin-behavior-phabricator-search-typeahead' => '4f888644', 591 + 'javelin-behavior-phabricator-show-older-transactions' => '02d0d179', 592 + 'javelin-behavior-phabricator-tooltips' => '1e25ede7', 593 593 'javelin-behavior-phabricator-transaction-comment-form' => '2bdadf1a', 594 594 'javelin-behavior-phabricator-transaction-list' => '9cec214e', 595 595 'javelin-behavior-phabricator-watch-anchor' => 'a77e2cbd', 596 - 'javelin-behavior-pholio-mock-edit' => '3eed1f2b', 597 - 'javelin-behavior-pholio-mock-view' => '5aa1544e', 596 + 'javelin-behavior-pholio-mock-edit' => 'e10d1263', 597 + 'javelin-behavior-pholio-mock-view' => 'e9592389', 598 598 'javelin-behavior-phui-dropdown-menu' => '5cf0501a', 599 - 'javelin-behavior-phui-file-upload' => 'e150bd50', 600 - 'javelin-behavior-phui-hovercards' => '0a4b35f2', 601 - 'javelin-behavior-phui-selectable-list' => 'b26a41e4', 599 + 'javelin-behavior-phui-file-upload' => '7032764f', 600 + 'javelin-behavior-phui-hovercards' => 'f29b7914', 601 + 'javelin-behavior-phui-selectable-list' => '7e9921c8', 602 602 'javelin-behavior-phui-submenu' => 'b5e9bff9', 603 603 'javelin-behavior-phui-tab-group' => '242aa08b', 604 - 'javelin-behavior-phui-timer-control' => 'f84bcbf4', 605 - 'javelin-behavior-phuix-example' => 'c2c500a7', 606 - 'javelin-behavior-policy-control' => '0eaa33a9', 604 + 'javelin-behavior-phui-timer-control' => '7f949794', 605 + 'javelin-behavior-phuix-example' => '222f5d96', 606 + 'javelin-behavior-policy-control' => '274f48cf', 607 607 'javelin-behavior-policy-rule-editor' => '9347f172', 608 - 'javelin-behavior-project-boards' => '58cb6a88', 608 + 'javelin-behavior-project-boards' => 'b852b68e', 609 609 'javelin-behavior-project-create' => '34c53422', 610 610 'javelin-behavior-quicksand-blacklist' => '5a6f6a06', 611 611 'javelin-behavior-read-only-warning' => 'b9109f8f', 612 612 'javelin-behavior-redirect' => '407ee861', 613 - 'javelin-behavior-refresh-csrf' => '46116c01', 614 - 'javelin-behavior-remarkup-load-image' => '202bfa3f', 615 - 'javelin-behavior-remarkup-preview' => 'd8a86cfb', 613 + 'javelin-behavior-refresh-csrf' => '345119db', 614 + 'javelin-behavior-remarkup-load-image' => 'c51e6aa0', 615 + 'javelin-behavior-remarkup-preview' => '05a2b50b', 616 616 'javelin-behavior-reorder-applications' => 'aa371860', 617 617 'javelin-behavior-reorder-columns' => '8ac32fd9', 618 618 'javelin-behavior-reorder-profile-menu-items' => 'e5bdb730', 619 - 'javelin-behavior-repository-crossreference' => '44d48cd1', 620 - 'javelin-behavior-scrollbar' => '92388bae', 619 + 'javelin-behavior-repository-crossreference' => 'f5bba944', 620 + 'javelin-behavior-scrollbar' => '19830cb0', 621 621 'javelin-behavior-search-reorder-queries' => 'b86f297f', 622 622 'javelin-behavior-select-content' => 'c538cbfc', 623 623 'javelin-behavior-select-on-click' => '66365ee2', 624 - 'javelin-behavior-setup-check-https' => '01384686', 624 + 'javelin-behavior-setup-check-https' => 'adb0a739', 625 625 'javelin-behavior-stripe-payment-form' => '02cb4398', 626 626 'javelin-behavior-test-payment-form' => '4a7fb02b', 627 - 'javelin-behavior-time-typeahead' => '5803b9e7', 627 + 'javelin-behavior-time-typeahead' => 'cd00e3d4', 628 628 'javelin-behavior-toggle-class' => '32db8374', 629 - 'javelin-behavior-toggle-widget' => '8f959ad0', 630 - 'javelin-behavior-trigger-rule-editor' => '398fdf13', 629 + 'javelin-behavior-toggle-widget' => '194194c0', 630 + 'javelin-behavior-trigger-rule-editor' => '89cfe5ef', 631 631 'javelin-behavior-typeahead-browse' => '70245195', 632 - 'javelin-behavior-typeahead-search' => '7b139193', 633 - 'javelin-behavior-user-menu' => '60cd9241', 634 - 'javelin-behavior-view-placeholder' => 'a9942052', 632 + 'javelin-behavior-typeahead-search' => '5ec2a4b0', 633 + 'javelin-behavior-user-menu' => '808d36b2', 634 + 'javelin-behavior-view-placeholder' => '7bdf6903', 635 635 'javelin-behavior-workflow' => '9623adc1', 636 - 'javelin-chart' => 'ce6f8e3d', 637 - 'javelin-chart-curtain-view' => '86954222', 638 - 'javelin-chart-function-label' => '81de1dab', 639 - 'javelin-color' => '78f811c9', 640 - 'javelin-cookie' => '05d290ef', 641 - 'javelin-diffusion-locate-file-source' => '6c798a10', 642 - 'javelin-dom' => '3c6f9405', 643 - 'javelin-dynval' => '202a2e85', 644 - 'javelin-event' => '1dbe260d', 645 - 'javelin-external-editor-link-engine' => '48a8641f', 646 - 'javelin-fx' => '34450586', 647 - 'javelin-history' => '030b4f7a', 636 + 'javelin-chart' => '71779eee', 637 + 'javelin-chart-curtain-view' => '52837786', 638 + 'javelin-chart-function-label' => 'b04c258c', 639 + 'javelin-color' => '36576292', 640 + 'javelin-cookie' => '05b28aa2', 641 + 'javelin-diffusion-locate-file-source' => 'c2129f37', 642 + 'javelin-dom' => '7d83258e', 643 + 'javelin-dynval' => 'e47745d1', 644 + 'javelin-event' => '38bc5a44', 645 + 'javelin-external-editor-link-engine' => '0597e99e', 646 + 'javelin-fx' => '0a9fdbb9', 647 + 'javelin-history' => '533a88ab', 648 648 'javelin-install' => '5902260c', 649 - 'javelin-json' => '541f81c3', 650 - 'javelin-leader' => '0d2490ce', 651 - 'javelin-magical-init' => '98e6504a', 652 - 'javelin-mask' => '7c4d8998', 653 - 'javelin-quicksand' => 'd3799cb4', 654 - 'javelin-reactor' => '1c850a26', 655 - 'javelin-reactor-dom' => '6cfa0008', 656 - 'javelin-reactor-node-calmer' => '225bbb98', 657 - 'javelin-reactornode' => '72960bc1', 658 - 'javelin-request' => '84e6891f', 659 - 'javelin-resource' => '20514cc2', 660 - 'javelin-routable' => '6a18c42e', 661 - 'javelin-router' => '32755edb', 662 - 'javelin-scrollbar' => 'a43ae2ae', 663 - 'javelin-sound' => 'd4cc2d2a', 664 - 'javelin-stratcom' => '0889b835', 665 - 'javelin-tokenizer' => '89a1ae3a', 666 - 'javelin-typeahead' => '0507519c', 667 - 'javelin-typeahead-composite-source' => '22ee68a5', 668 - 'javelin-typeahead-normalizer' => 'a241536a', 669 - 'javelin-typeahead-ondemand-source' => '23387297', 670 - 'javelin-typeahead-preloaded-source' => '5a79f6c3', 671 - 'javelin-typeahead-source' => '8badee71', 672 - 'javelin-typeahead-static-source' => '80bff3af', 673 - 'javelin-uri' => '1fcfd5c0', 674 - 'javelin-util' => '472cda1c', 675 - 'javelin-vector' => 'e9c80beb', 676 - 'javelin-view' => '289bf236', 677 - 'javelin-view-html' => 'f8c4e135', 678 - 'javelin-view-interpreter' => '876506b6', 679 - 'javelin-view-renderer' => '9aae2b66', 680 - 'javelin-view-visitor' => '308f9fe4', 681 - 'javelin-websocket' => 'fdc13e4e', 682 - 'javelin-workboard-board' => 'b46d88c5', 683 - 'javelin-workboard-card' => '0392a5d8', 684 - 'javelin-workboard-card-template' => '84f82dad', 685 - 'javelin-workboard-column' => 'c3d24e63', 686 - 'javelin-workboard-controller' => '7474d31f', 687 - 'javelin-workboard-drop-effect' => '8e0aa661', 688 - 'javelin-workboard-header' => '111bfd2d', 689 - 'javelin-workboard-header-template' => 'ebe83a6b', 690 - 'javelin-workboard-order-template' => '03e8891f', 691 - 'javelin-workflow' => 'cc1553f3', 649 + 'javelin-json' => '4e373d4b', 650 + 'javelin-leader' => '467214de', 651 + 'javelin-magical-init' => '1767ee66', 652 + 'javelin-mask' => '5ce5c490', 653 + 'javelin-quicksand' => '904b29cd', 654 + 'javelin-reactor' => '93ec1300', 655 + 'javelin-reactor-dom' => 'eac68b41', 656 + 'javelin-reactor-node-calmer' => '7a7abb10', 657 + 'javelin-reactornode' => '9af9ca69', 658 + 'javelin-request' => '4e3567dd', 659 + 'javelin-resource' => '699676a1', 660 + 'javelin-routable' => '45f4ef11', 661 + 'javelin-router' => '8841c560', 662 + 'javelin-scrollbar' => '70743772', 663 + 'javelin-sound' => '755f30a4', 664 + 'javelin-stratcom' => '86e7c900', 665 + 'javelin-tokenizer' => '6691be26', 666 + 'javelin-typeahead' => '6bb4873a', 667 + 'javelin-typeahead-composite-source' => 'ce39158d', 668 + 'javelin-typeahead-normalizer' => '9a68421a', 669 + 'javelin-typeahead-ondemand-source' => '63598f73', 670 + 'javelin-typeahead-preloaded-source' => '8d038327', 671 + 'javelin-typeahead-source' => '670c0b8a', 672 + 'javelin-typeahead-static-source' => 'b6bafedf', 673 + 'javelin-uri' => '5ab77007', 674 + 'javelin-util' => '32a82ac2', 675 + 'javelin-vector' => '4b8bc989', 676 + 'javelin-view' => 'f2977446', 677 + 'javelin-view-html' => '122e6e60', 678 + 'javelin-view-interpreter' => '339f5c61', 679 + 'javelin-view-renderer' => 'a2a6143c', 680 + 'javelin-view-visitor' => '8b0e0928', 681 + 'javelin-websocket' => 'd9979d19', 682 + 'javelin-workboard-board' => 'a4fd3b57', 683 + 'javelin-workboard-card' => 'b82fc780', 684 + 'javelin-workboard-card-template' => 'e63ab0ec', 685 + 'javelin-workboard-column' => 'c74a690a', 686 + 'javelin-workboard-controller' => '78148921', 687 + 'javelin-workboard-drop-effect' => 'e342e2b4', 688 + 'javelin-workboard-header' => '5a59fb82', 689 + 'javelin-workboard-header-template' => '02a2c910', 690 + 'javelin-workboard-order-template' => 'f9d95e77', 691 + 'javelin-workflow' => '0c69620e', 692 692 'maniphest-report-css' => '3d53188b', 693 693 'maniphest-task-summary-css' => 'dc5d8e1f', 694 - 'multirow-row-manager' => '5b54c823', 695 - 'owners-path-editor' => '2a8b62d9', 694 + 'multirow-row-manager' => '037c04be', 695 + 'owners-path-editor' => 'e44abfd6', 696 696 'owners-path-editor-css' => 'fa7c13ef', 697 697 'paste-css' => 'b37bcd38', 698 - 'path-typeahead' => 'ad486db3', 698 + 'path-typeahead' => '66ed7808', 699 699 'people-picture-menu-item-css' => 'fe8e07cf', 700 700 'people-profile-css' => 'd1cb9c2e', 701 701 'phabricator-action-list-view-css' => 'b46ef6bd', 702 - 'phabricator-busy' => '5202e831', 702 + 'phabricator-busy' => 'ec0c35b0', 703 703 'phabricator-content-source-view-css' => 'cdf0d579', 704 704 'phabricator-core-css' => '37f19649', 705 705 'phabricator-countdown-css' => '0aaf8a98', 706 - 'phabricator-darklog' => '3b869402', 707 - 'phabricator-darkmessage' => '26cd4b73', 706 + 'phabricator-darklog' => 'd8a27e0d', 707 + 'phabricator-darkmessage' => 'ef0160d8', 708 708 'phabricator-dashboard-css' => '5a205b9d', 709 - 'phabricator-diff-changeset' => 'd7d3ba75', 710 - 'phabricator-diff-changeset-list' => 'cc2c5de5', 711 - 'phabricator-diff-inline' => '9c775532', 712 - 'phabricator-diff-inline-content-state' => 'aa51efb4', 713 - 'phabricator-diff-path-view' => '8207abf9', 714 - 'phabricator-diff-tree-view' => '5d83623b', 715 - 'phabricator-drag-and-drop-file-upload' => '4370900d', 716 - 'phabricator-draggable-list' => '0169e425', 709 + 'phabricator-diff-changeset' => '83560c3e', 710 + 'phabricator-diff-changeset-list' => '3bc5d0a2', 711 + 'phabricator-diff-inline' => '7fb61bce', 712 + 'phabricator-diff-inline-content-state' => '09b25d79', 713 + 'phabricator-diff-path-view' => '06c422f5', 714 + 'phabricator-diff-tree-view' => '284cdce8', 715 + 'phabricator-drag-and-drop-file-upload' => '184e5354', 716 + 'phabricator-draggable-list' => '0092408f', 717 717 'phabricator-fatal-config-template-css' => '20babf50', 718 - 'phabricator-favicon' => '7930776a', 719 - 'phabricator-file-upload' => '331676ea', 718 + 'phabricator-favicon' => '6be35145', 719 + 'phabricator-file-upload' => 'bcb07115', 720 720 'phabricator-flag-css' => '64dacab2', 721 - 'phabricator-keyboard-shortcut' => '1a844c06', 722 - 'phabricator-keyboard-shortcut-manager' => '81debc48', 721 + 'phabricator-keyboard-shortcut' => 'beca9a7a', 722 + 'phabricator-keyboard-shortcut-manager' => '4c65e1f0', 723 723 'phabricator-main-menu-view' => 'b748c1de', 724 - 'phabricator-notification' => 'a9b91e3f', 724 + 'phabricator-notification' => 'cf6b743b', 725 725 'phabricator-notification-css' => '30240bd2', 726 726 'phabricator-notification-menu-css' => '90e445b9', 727 727 'phabricator-object-selector-css' => '80622c84', 728 - 'phabricator-phtize' => '2f1db1ed', 729 - 'phabricator-prefab' => '5793d835', 728 + 'phabricator-phtize' => '4c2bf506', 729 + 'phabricator-prefab' => '8673c75c', 730 730 'phabricator-remarkup-css' => '64bb2ced', 731 - 'phabricator-remarkup-metadata' => 'e40c4991', 731 + 'phabricator-remarkup-metadata' => 'fe7cdb3b', 732 732 'phabricator-search-results-css' => '9ea70ace', 733 - 'phabricator-shaped-request' => '995f5102', 733 + 'phabricator-shaped-request' => 'bdc40a6b', 734 734 'phabricator-slowvote-css' => '0f219c39', 735 735 'phabricator-source-code-view-css' => 'e994d13f', 736 736 'phabricator-standard-page-view' => 'e811b6f6', 737 - 'phabricator-textareautils' => 'f340a484', 738 - 'phabricator-title' => '43bc9360', 739 - 'phabricator-tooltip' => '83754533', 737 + 'phabricator-textareautils' => '9cde5660', 738 + 'phabricator-title' => 'c6d00cb9', 739 + 'phabricator-tooltip' => '09ff9853', 740 740 'phabricator-ui-example-css' => '69d6682f', 741 741 'phabricator-zindex-css' => '56fbe5ba', 742 742 'phame-css' => '209125c7', 743 743 'pholio-css' => 'f0cd31a4', 744 744 'pholio-edit-css' => 'ea13cd28', 745 745 'pholio-inline-comments-css' => '722b48c2', 746 - 'phortune-credit-card-form' => 'd12d214f', 746 + 'phortune-credit-card-form' => '58883f56', 747 747 'phortune-credit-card-form-css' => '3b9868a8', 748 748 'phortune-css' => '508a1a5e', 749 749 'phortune-invoice-css' => '4436b241', ··· 779 779 'phui-formation-view-css' => 'b172a0b3', 780 780 'phui-head-thing-view-css' => 'd7f293df', 781 781 'phui-header-view-css' => '521ef411', 782 - 'phui-hovercard' => '6199f752', 783 - 'phui-hovercard-list' => 'de4b4919', 782 + 'phui-hovercard' => 'b4afcd89', 783 + 'phui-hovercard-list' => 'c5a9b42b', 784 784 'phui-hovercard-view-css' => '7ffb4e0c', 785 785 'phui-icon-set-selector-css' => '19e0253b', 786 786 'phui-icon-view-css' => 'e790b94e', ··· 814 814 'phui-workboard-view-css' => '269c93f8', 815 815 'phui-workcard-view-css' => 'a6c585d5', 816 816 'phui-workpanel-view-css' => 'c44f95c7', 817 - 'phuix-action-list-view' => 'c68f183f', 818 - 'phuix-action-view' => 'a8f573a9', 819 - 'phuix-autocomplete' => 'cf26eaab', 820 - 'phuix-button-view' => '55a24e84', 821 - 'phuix-dropdown-menu' => 'b557770a', 822 - 'phuix-form-control-view' => '38c1f3fb', 823 - 'phuix-formation-column-view' => '4bcc1f78', 824 - 'phuix-formation-flank-view' => '6648270a', 825 - 'phuix-formation-view' => 'cef53b3e', 826 - 'phuix-icon-view' => 'a5257c4e', 817 + 'phuix-action-list-view' => '88d218bb', 818 + 'phuix-action-view' => '0de4371d', 819 + 'phuix-autocomplete' => '81e8557b', 820 + 'phuix-button-view' => '5313610a', 821 + 'phuix-dropdown-menu' => '1bd02b2b', 822 + 'phuix-form-control-view' => 'f27ca8c5', 823 + 'phuix-formation-column-view' => '145fb979', 824 + 'phuix-formation-flank-view' => '8b1a7268', 825 + 'phuix-formation-view' => 'c967b0e7', 826 + 'phuix-icon-view' => '2c393e31', 827 827 'policy-css' => 'ceb56a08', 828 828 'policy-edit-css' => '8794e2ed', 829 829 'policy-transaction-detail-css' => 'c02b8384', ··· 837 837 'syntax-default-css' => 'c0307dc6', 838 838 'syntax-highlighting-css' => '548567f6', 839 839 'tokens-css' => 'cba3965f', 840 - 'trigger-rule' => '41b7b4f6', 841 - 'trigger-rule-control' => '5faf27b9', 842 - 'trigger-rule-editor' => 'b49fd60c', 843 - 'trigger-rule-type' => '4feea7d3', 840 + 'trigger-rule' => 'a9747130', 841 + 'trigger-rule-control' => '199300af', 842 + 'trigger-rule-editor' => '516b27db', 843 + 'trigger-rule-type' => 'e6bc2ced', 844 844 'typeahead-browse-css' => 'b7ed02d2', 845 845 'unhandled-exception-css' => '9ecfc00d', 846 846 ), 847 847 'requires' => array( 848 + '0092408f' => array( 849 + 'javelin-install', 850 + 'javelin-dom', 851 + 'javelin-stratcom', 852 + 'javelin-util', 853 + 'javelin-vector', 854 + 'javelin-magical-init', 855 + 'phabricator-tooltip', 856 + ), 848 857 '0116d3e8' => array( 849 858 'javelin-behavior', 850 859 'javelin-dom', 851 860 'javelin-stratcom', 852 861 ), 853 - '01384686' => array( 862 + '0235b35d' => array( 854 863 'javelin-behavior', 855 - 'javelin-uri', 856 - 'phabricator-notification', 864 + 'javelin-stratcom', 865 + 'javelin-dom', 866 + 'phabricator-draggable-list', 857 867 ), 858 - '0169e425' => array( 868 + '02a2c910' => array( 859 869 'javelin-install', 860 870 'javelin-dom', 861 - 'javelin-stratcom', 862 - 'javelin-util', 863 - 'javelin-vector', 864 - 'javelin-magical-init', 865 - ), 866 - '022516b4' => array( 867 - 'javelin-install', 868 - 'javelin-util', 869 - 'javelin-websocket', 870 - 'javelin-leader', 871 - 'javelin-json', 872 871 ), 873 872 '02cb4398' => array( 874 873 'javelin-behavior', 875 874 'javelin-dom', 876 875 'phortune-credit-card-form', 877 876 ), 878 - '030b4f7a' => array( 877 + '02d0d179' => array( 878 + 'javelin-behavior', 879 879 'javelin-stratcom', 880 - 'javelin-install', 881 - 'javelin-uri', 880 + 'javelin-dom', 881 + 'javelin-json', 882 + 'javelin-router', 882 883 'javelin-util', 884 + 'javelin-workflow', 885 + 'phabricator-keyboard-shortcut', 883 886 ), 884 - '0392a5d8' => array( 887 + '037c04be' => array( 885 888 'javelin-install', 886 - ), 887 - '03e8891f' => array( 888 - 'javelin-install', 889 + 'javelin-stratcom', 890 + 'javelin-dom', 891 + 'javelin-util', 889 892 ), 890 893 '04f8a1e3' => array( 891 894 'javelin-behavior', ··· 893 896 'javelin-dom', 894 897 'javelin-workflow', 895 898 ), 896 - '0507519c' => array( 899 + '0597e99e' => array( 897 900 'javelin-install', 901 + ), 902 + '05a2b50b' => array( 903 + 'javelin-behavior', 904 + 'javelin-behavior-device', 898 905 'javelin-dom', 899 - 'javelin-vector', 900 906 'javelin-util', 907 + 'phabricator-shaped-request', 901 908 ), 902 - '05d290ef' => array( 909 + '05b28aa2' => array( 903 910 'javelin-install', 904 911 'javelin-util', 905 912 ), 906 - '070679fe' => array( 907 - 'javelin-behavior', 908 - 'javelin-stratcom', 913 + '06c422f5' => array( 909 914 'javelin-dom', 910 - 'javelin-uri', 911 - 'phabricator-notification', 912 - ), 913 - '0889b835' => array( 914 915 'javelin-install', 915 - 'javelin-event', 916 916 'javelin-util', 917 - 'javelin-magical-init', 917 + 'phuix-icon-view', 918 918 ), 919 919 '0922e81d' => array( 920 920 'herald-rule-editor', 921 921 'javelin-behavior', 922 922 ), 923 - '0a4b35f2' => array( 923 + '0946ebd6' => array( 924 924 'javelin-behavior', 925 - 'javelin-behavior-device', 926 925 'javelin-stratcom', 926 + 'conpherence-thread-manager', 927 + ), 928 + '09b25d79' => array( 929 + 'javelin-dom', 930 + 'javelin-install', 931 + ), 932 + '09ff9853' => array( 933 + 'javelin-install', 934 + 'javelin-util', 935 + 'javelin-dom', 927 936 'javelin-vector', 928 - 'phui-hovercard', 929 - 'phui-hovercard-list', 930 937 ), 931 - '0ad8d31f' => array( 932 - 'javelin-behavior', 938 + '0a9fdbb9' => array( 939 + 'javelin-color', 940 + 'javelin-install', 941 + 'javelin-util', 942 + ), 943 + '0c69620e' => array( 933 944 'javelin-stratcom', 934 - 'javelin-workflow', 945 + 'javelin-request', 935 946 'javelin-dom', 936 - 'phabricator-draggable-list', 947 + 'javelin-vector', 948 + 'javelin-install', 949 + 'javelin-util', 950 + 'javelin-mask', 951 + 'javelin-uri', 952 + 'javelin-routable', 937 953 ), 938 - '0d2490ce' => array( 954 + '0de4371d' => array( 939 955 'javelin-install', 956 + 'javelin-dom', 957 + 'javelin-stratcom', 958 + 'javelin-util', 940 959 ), 941 960 '0e0a956c' => array( 942 961 'phui-inline-comment-view-css', 943 962 ), 944 - '0eaa33a9' => array( 945 - 'javelin-behavior', 963 + '122e6e60' => array( 964 + 'javelin-install', 946 965 'javelin-dom', 966 + 'javelin-view-visitor', 947 967 'javelin-util', 948 - 'phuix-dropdown-menu', 949 - 'phuix-action-list-view', 950 - 'phuix-action-view', 951 - 'javelin-workflow', 952 - 'phuix-icon-view', 953 - ), 954 - '111bfd2d' => array( 955 - 'javelin-install', 956 968 ), 957 969 '1325b731' => array( 958 970 'javelin-behavior', 959 971 'javelin-uri', 960 972 'phabricator-keyboard-shortcut', 961 973 ), 962 - '14c7ab36' => array( 963 - 'javelin-behavior', 974 + '145fb979' => array( 975 + 'javelin-install', 976 + 'javelin-dom', 977 + 'javelin-vector', 978 + 'javelin-util', 964 979 'javelin-stratcom', 980 + 'javelin-request', 981 + ), 982 + '184e5354' => array( 983 + 'javelin-install', 984 + 'javelin-util', 985 + 'javelin-request', 965 986 'javelin-dom', 966 - 'javelin-mask', 987 + 'javelin-stratcom', 988 + 'javelin-uri', 989 + 'javelin-workflow', 990 + 'phabricator-file-upload', 991 + ), 992 + '19124eb6' => array( 993 + 'javelin-behavior', 994 + 'javelin-behavior-device', 995 + 'javelin-dom', 996 + 'javelin-json', 997 + 'javelin-request', 998 + 'javelin-stratcom', 967 999 'javelin-util', 1000 + 'javelin-vector', 1001 + 'phuix-form-control-view', 968 1002 'phuix-icon-view', 969 - 'phabricator-busy', 1003 + 'phabricator-shaped-request', 1004 + ), 1005 + '194194c0' => array( 1006 + 'javelin-behavior', 1007 + 'javelin-dom', 1008 + 'javelin-request', 1009 + 'javelin-stratcom', 1010 + 'javelin-behavior-device', 1011 + ), 1012 + '19830cb0' => array( 1013 + 'javelin-behavior', 1014 + 'javelin-dom', 1015 + 'javelin-scrollbar', 970 1016 ), 971 - '1a844c06' => array( 1017 + '199300af' => array( 1018 + 'phuix-form-control-view', 972 1019 'javelin-install', 973 1020 'javelin-util', 974 - 'phabricator-keyboard-shortcut-manager', 1021 + ), 1022 + '1a6b7115' => array( 1023 + 'javelin-behavior', 1024 + 'javelin-dom', 1025 + 'javelin-stratcom', 1026 + 'javelin-uri', 1027 + 'javelin-vector', 1028 + 'javelin-workflow', 1029 + 'phuix-icon-view', 975 1030 ), 976 1031 '1b6acc2a' => array( 977 1032 'javelin-magical-init', 978 1033 'javelin-util', 979 1034 ), 980 - '1c850a26' => array( 1035 + '1bd02b2b' => array( 981 1036 'javelin-install', 982 1037 'javelin-util', 1038 + 'javelin-dom', 1039 + 'javelin-vector', 1040 + 'javelin-stratcom', 983 1041 ), 984 - '1cab0e9a' => array( 1042 + '1e25ede7' => array( 985 1043 'javelin-behavior', 986 - 'javelin-dom', 987 - 'javelin-uri', 988 - 'javelin-mask', 989 - 'phabricator-drag-and-drop-file-upload', 990 - ), 991 - '1dbe260d' => array( 992 - 'javelin-install', 1044 + 'javelin-stratcom', 1045 + 'phabricator-tooltip', 993 1046 ), 994 1047 '1e413dc9' => array( 995 1048 'javelin-behavior', ··· 1001 1054 'javelin-stratcom', 1002 1055 'javelin-util', 1003 1056 ), 1004 - '1fcfd5c0' => array( 1005 - 'javelin-install', 1006 - 'javelin-util', 1057 + '1fabcc80' => array( 1058 + 'javelin-behavior', 1059 + 'javelin-dom', 1007 1060 'javelin-stratcom', 1008 - ), 1009 - '202a2e85' => array( 1010 - 'javelin-install', 1011 - 'javelin-reactornode', 1012 - 'javelin-util', 1013 - 'javelin-reactor', 1014 - ), 1015 - '202bfa3f' => array( 1016 - 'javelin-behavior', 1017 - 'javelin-request', 1018 - ), 1019 - '20514cc2' => array( 1061 + 'javelin-workflow', 1020 1062 'javelin-util', 1021 1063 'javelin-uri', 1022 - 'javelin-install', 1023 - ), 1024 - '225bbb98' => array( 1025 - 'javelin-install', 1026 - 'javelin-reactor', 1027 - 'javelin-util', 1064 + 'phabricator-notification', 1065 + 'conpherence-thread-manager', 1028 1066 ), 1029 - '22ee68a5' => array( 1030 - 'javelin-install', 1031 - 'javelin-typeahead-source', 1032 - 'javelin-util', 1033 - ), 1034 - 23387297 => array( 1035 - 'javelin-install', 1067 + '222f5d96' => array( 1068 + 'javelin-behavior', 1069 + 'javelin-dom', 1036 1070 'javelin-util', 1037 - 'javelin-request', 1038 - 'javelin-typeahead-source', 1071 + 'phuix-button-view', 1072 + 'phuix-icon-view', 1039 1073 ), 1040 1074 '242aa08b' => array( 1041 1075 'javelin-behavior', ··· 1048 1082 'javelin-vector', 1049 1083 'javelin-dom', 1050 1084 ), 1051 - '243d6c22' => array( 1052 - 'javelin-behavior', 1053 - 'javelin-dom', 1054 - 'javelin-stratcom', 1055 - ), 1056 1085 '2539f834' => array( 1057 1086 'javelin-behavior', 1058 1087 'javelin-stratcom', ··· 1060 1089 'javelin-json', 1061 1090 'phabricator-draggable-list', 1062 1091 ), 1063 - '2633bef7' => array( 1064 - 'multirow-row-manager', 1065 - 'javelin-install', 1092 + '274f48cf' => array( 1093 + 'javelin-behavior', 1094 + 'javelin-dom', 1095 + 'javelin-uri', 1066 1096 'javelin-util', 1097 + 'phuix-dropdown-menu', 1098 + 'phuix-action-list-view', 1099 + 'phuix-action-view', 1100 + 'javelin-workflow', 1101 + 'phuix-icon-view', 1102 + ), 1103 + '284cdce8' => array( 1067 1104 'javelin-dom', 1068 - 'javelin-stratcom', 1069 - 'javelin-json', 1070 - 'phabricator-prefab', 1071 - ), 1072 - '289bf236' => array( 1073 1105 'javelin-install', 1074 - 'javelin-util', 1106 + 'phabricator-diff-path-view', 1075 1107 ), 1076 1108 '29819b75' => array( 1077 1109 'phabricator-notification', 1078 1110 'javelin-stratcom', 1079 1111 'javelin-behavior', 1080 1112 ), 1081 - '2a8b62d9' => array( 1082 - 'multirow-row-manager', 1083 - 'javelin-install', 1084 - 'path-typeahead', 1113 + '299e50bd' => array( 1114 + 'javelin-behavior', 1085 1115 'javelin-dom', 1086 1116 'javelin-util', 1087 - 'phabricator-prefab', 1088 - 'phuix-form-control-view', 1117 + 'javelin-stratcom', 1118 + 'javelin-workflow', 1119 + 'javelin-behavior-device', 1120 + 'javelin-history', 1121 + 'javelin-scrollbar', 1122 + 'phabricator-title', 1123 + 'conpherence-thread-manager', 1089 1124 ), 1090 1125 '2bdadf1a' => array( 1091 1126 'javelin-behavior', ··· 1094 1129 'javelin-request', 1095 1130 'phabricator-shaped-request', 1096 1131 ), 1097 - '2f1db1ed' => array( 1098 - 'javelin-util', 1099 - ), 1100 - '308f9fe4' => array( 1132 + '2c393e31' => array( 1101 1133 'javelin-install', 1102 - 'javelin-util', 1103 - ), 1104 - '32755edb' => array( 1105 - 'javelin-install', 1106 - 'javelin-util', 1134 + 'javelin-dom', 1107 1135 ), 1108 1136 '32db8374' => array( 1109 1137 'javelin-behavior', 1110 1138 'javelin-stratcom', 1111 1139 'javelin-dom', 1112 1140 ), 1113 - '331676ea' => array( 1141 + '339f5c61' => array( 1142 + 'javelin-view', 1114 1143 'javelin-install', 1115 1144 'javelin-dom', 1116 - 'phabricator-notification', 1117 1145 ), 1118 - 34450586 => array( 1119 - 'javelin-color', 1120 - 'javelin-install', 1146 + '345119db' => array( 1147 + 'javelin-request', 1148 + 'javelin-behavior', 1149 + 'javelin-dom', 1150 + 'javelin-router', 1151 + 'javelin-uri', 1121 1152 'javelin-util', 1153 + 'phabricator-busy', 1122 1154 ), 1123 1155 '34c53422' => array( 1124 1156 'javelin-behavior', 1125 1157 'javelin-dom', 1126 1158 'javelin-stratcom', 1127 1159 'javelin-workflow', 1160 + ), 1161 + 36576292 => array( 1162 + 'javelin-install', 1128 1163 ), 1129 1164 '3829a3cf' => array( 1130 1165 'javelin-behavior', ··· 1135 1170 'javelin-dom', 1136 1171 'javelin-stratcom', 1137 1172 ), 1138 - '38c1f3fb' => array( 1173 + '38bc5a44' => array( 1139 1174 'javelin-install', 1175 + ), 1176 + '3b255926' => array( 1140 1177 'javelin-dom', 1141 - ), 1142 - '398fdf13' => array( 1143 - 'javelin-behavior', 1144 - 'trigger-rule-editor', 1145 - 'trigger-rule', 1146 - 'trigger-rule-type', 1178 + 'javelin-util', 1179 + 'javelin-stratcom', 1180 + 'javelin-install', 1181 + 'javelin-aphlict', 1182 + 'javelin-workflow', 1183 + 'javelin-leader', 1184 + 'phabricator-shaped-request', 1147 1185 ), 1148 1186 '3b4899b0' => array( 1149 1187 'javelin-behavior', 1150 1188 'phabricator-prefab', 1151 1189 ), 1152 - '3c6f9405' => array( 1190 + '3bc5d0a2' => array( 1191 + 'javelin-install', 1192 + 'javelin-behavior-device', 1193 + 'javelin-dom', 1194 + 'javelin-external-editor-link-engine', 1153 1195 'javelin-magical-init', 1154 - 'javelin-install', 1196 + 'javelin-stratcom', 1197 + 'javelin-uri', 1155 1198 'javelin-util', 1156 1199 'javelin-vector', 1157 - 'javelin-stratcom', 1158 - ), 1159 - '3eed1f2b' => array( 1160 - 'javelin-behavior', 1161 - 'javelin-stratcom', 1162 - 'javelin-dom', 1163 1200 'javelin-workflow', 1164 - 'javelin-quicksand', 1165 - 'phabricator-phtize', 1166 - 'phabricator-drag-and-drop-file-upload', 1167 - 'phabricator-draggable-list', 1201 + 'phuix-action-view', 1202 + 'phuix-action-list-view', 1203 + 'phuix-button-view', 1204 + 'phuix-dropdown-menu', 1205 + 'phuix-icon-view', 1206 + 'phabricator-diff-changeset', 1207 + 'phabricator-diff-tree-view', 1208 + 'phabricator-keyboard-shortcut', 1209 + 'phabricator-notification', 1168 1210 ), 1169 1211 '407ee861' => array( 1170 1212 'javelin-behavior', 1171 1213 'javelin-uri', 1172 1214 ), 1173 - '42c44e8b' => array( 1215 + '408a69dd' => array( 1174 1216 'javelin-behavior', 1175 1217 'javelin-workflow', 1176 1218 'javelin-json', 1177 1219 'javelin-dom', 1178 1220 'phabricator-keyboard-shortcut', 1221 + 'phabricator-phtize', 1179 1222 ), 1180 - '4370900d' => array( 1181 - 'javelin-install', 1223 + '4321459b' => array( 1224 + 'javelin-behavior', 1225 + 'javelin-uri', 1182 1226 'javelin-util', 1183 1227 'javelin-request', 1184 - 'javelin-dom', 1185 - 'javelin-uri', 1186 - 'phabricator-file-upload', 1187 - ), 1188 - '43ba89a2' => array( 1189 - 'javelin-behavior', 1190 - 'javelin-dom', 1191 1228 'javelin-stratcom', 1192 1229 'javelin-workflow', 1193 - 'javelin-util', 1194 1230 'phabricator-notification', 1195 - 'conpherence-thread-manager', 1196 1231 ), 1197 - '43bc9360' => array( 1232 + '459fbefc' => array( 1233 + 'multirow-row-manager', 1198 1234 'javelin-install', 1199 - ), 1200 - '44d48cd1' => array( 1201 - 'javelin-behavior', 1235 + 'javelin-util', 1202 1236 'javelin-dom', 1203 1237 'javelin-stratcom', 1204 - 'javelin-uri', 1238 + 'javelin-json', 1239 + 'phabricator-prefab', 1240 + ), 1241 + '45f4ef11' => array( 1242 + 'javelin-install', 1205 1243 ), 1206 - '457f4d16' => array( 1244 + '467214de' => array( 1245 + 'javelin-install', 1246 + 'javelin-json', 1247 + 'javelin-stratcom', 1248 + 'javelin-util', 1249 + ), 1250 + '4794450e' => array( 1207 1251 'javelin-behavior', 1252 + 'javelin-aphlict', 1253 + 'javelin-leader', 1254 + 'javelin-json', 1208 1255 'javelin-stratcom', 1209 1256 'javelin-util', 1210 1257 'javelin-dom', ··· 1213 1260 'phabricator-darklog', 1214 1261 'phabricator-darkmessage', 1215 1262 ), 1216 - '46116c01' => array( 1217 - 'javelin-request', 1218 - 'javelin-behavior', 1219 - 'javelin-dom', 1220 - 'javelin-router', 1221 - 'javelin-util', 1222 - 'phabricator-busy', 1223 - ), 1224 1263 '47a0728b' => array( 1225 1264 'javelin-behavior', 1226 1265 'javelin-dom', 1227 1266 'javelin-request', 1228 1267 ), 1229 - '4842f137' => array( 1230 - 'javelin-behavior', 1231 - 'javelin-stratcom', 1232 - 'javelin-workflow', 1233 - 'javelin-dom', 1234 - 'phabricator-draggable-list', 1235 - ), 1236 - '48a8641f' => array( 1237 - 'javelin-install', 1238 - ), 1239 1268 '48fe33d0' => array( 1240 1269 'javelin-behavior', 1241 1270 'javelin-dom', ··· 1252 1281 'javelin-dom', 1253 1282 'phortune-credit-card-form', 1254 1283 ), 1255 - '4ae58b5a' => array( 1256 - 'javelin-behavior', 1257 - 'javelin-dom', 1258 - 'javelin-util', 1259 - 'javelin-workflow', 1260 - 'javelin-stratcom', 1261 - 'conpherence-thread-manager', 1262 - ), 1263 1284 '4b671572' => array( 1264 1285 'javelin-behavior', 1265 1286 'javelin-dom', 1266 1287 'javelin-util', 1267 1288 'javelin-request', 1268 1289 ), 1269 - '4bcc1f78' => array( 1290 + '4b8bc989' => array( 1270 1291 'javelin-install', 1292 + 'javelin-event', 1293 + ), 1294 + '4c2bf506' => array( 1295 + 'javelin-util', 1296 + ), 1297 + '4c65e1f0' => array( 1298 + 'javelin-install', 1299 + 'javelin-util', 1300 + 'javelin-stratcom', 1271 1301 'javelin-dom', 1302 + 'javelin-vector', 1272 1303 ), 1273 1304 '4c77f259' => array( 1274 1305 'javelin-behavior', ··· 1277 1308 'javelin-typeahead', 1278 1309 'javelin-uri', 1279 1310 ), 1280 - '4dffaeb2' => array( 1311 + '4e3567dd' => array( 1312 + 'javelin-install', 1313 + 'javelin-stratcom', 1314 + 'javelin-util', 1281 1315 'javelin-behavior', 1282 - 'javelin-stratcom', 1283 - 'javelin-workflow', 1316 + 'javelin-json', 1284 1317 'javelin-dom', 1285 - 'phuix-form-control-view', 1286 - 'phuix-icon-view', 1287 - 'javelin-behavior-phabricator-gesture', 1318 + 'javelin-resource', 1319 + 'javelin-routable', 1320 + ), 1321 + '4e373d4b' => array( 1322 + 'javelin-install', 1288 1323 ), 1289 - '4e61fa88' => array( 1324 + '4f888644' => array( 1290 1325 'javelin-behavior', 1291 - 'javelin-aphlict', 1292 - 'javelin-stratcom', 1326 + 'javelin-typeahead-ondemand-source', 1327 + 'javelin-typeahead', 1328 + 'javelin-dom', 1293 1329 'javelin-request', 1294 1330 'javelin-uri', 1295 - 'javelin-dom', 1296 - 'javelin-json', 1297 - 'javelin-router', 1298 1331 'javelin-util', 1299 - 'javelin-leader', 1300 - 'javelin-sound', 1301 - 'phabricator-notification', 1302 - ), 1303 - '4feea7d3' => array( 1304 - 'trigger-rule-control', 1332 + 'javelin-stratcom', 1333 + 'phabricator-prefab', 1334 + 'phuix-action-view', 1335 + 'phuix-action-list-view', 1336 + 'phuix-dropdown-menu', 1337 + 'phuix-icon-view', 1305 1338 ), 1306 1339 '506aa3f4' => array( 1307 1340 'javelin-behavior', 1308 1341 'javelin-stratcom', 1309 1342 'javelin-dom', 1310 1343 ), 1311 - '5202e831' => array( 1344 + '516b27db' => array( 1345 + 'multirow-row-manager', 1346 + 'trigger-rule', 1312 1347 'javelin-install', 1313 1348 'javelin-dom', 1314 - 'javelin-fx', 1349 + 'javelin-util', 1350 + 'javelin-json', 1315 1351 ), 1316 - '541f81c3' => array( 1352 + 52837786 => array( 1317 1353 'javelin-install', 1354 + 'javelin-dom', 1355 + 'phuix-icon-view', 1318 1356 ), 1319 - '548567f6' => array( 1320 - 'syntax-default-css', 1321 - ), 1322 - '55a24e84' => array( 1357 + '5313610a' => array( 1323 1358 'javelin-install', 1324 1359 'javelin-dom', 1360 + 'phuix-icon-view', 1325 1361 ), 1326 - '56d8091e' => array( 1327 - 'javelin-behavior', 1328 - 'javelin-dom', 1362 + '533a88ab' => array( 1329 1363 'javelin-stratcom', 1330 - ), 1331 - '5793d835' => array( 1332 1364 'javelin-install', 1333 - 'javelin-util', 1334 - 'javelin-dom', 1335 - 'javelin-typeahead', 1336 - 'javelin-tokenizer', 1337 - 'javelin-typeahead-preloaded-source', 1338 - 'javelin-typeahead-ondemand-source', 1339 - 'javelin-dom', 1340 - 'javelin-stratcom', 1365 + 'javelin-uri', 1341 1366 'javelin-util', 1342 1367 ), 1343 - '5803b9e7' => array( 1344 - 'javelin-behavior', 1345 - 'javelin-util', 1346 - 'javelin-dom', 1347 - 'javelin-stratcom', 1348 - 'javelin-vector', 1349 - 'javelin-typeahead-static-source', 1368 + '548567f6' => array( 1369 + 'syntax-default-css', 1350 1370 ), 1351 - '58cb6a88' => array( 1352 - 'javelin-behavior', 1371 + '58883f56' => array( 1372 + 'javelin-install', 1353 1373 'javelin-dom', 1354 - 'javelin-util', 1355 - 'javelin-vector', 1356 - 'javelin-stratcom', 1374 + 'javelin-json', 1357 1375 'javelin-workflow', 1358 - 'javelin-workboard-controller', 1359 - 'javelin-workboard-drop-effect', 1376 + 'javelin-util', 1360 1377 ), 1361 1378 '5902260c' => array( 1362 1379 'javelin-util', 1363 1380 'javelin-magical-init', 1364 1381 ), 1382 + '5a59fb82' => array( 1383 + 'javelin-install', 1384 + 'javelin-stratcom', 1385 + ), 1365 1386 '5a6f6a06' => array( 1366 1387 'javelin-behavior', 1367 1388 'javelin-quicksand', 1368 1389 ), 1369 - '5a79f6c3' => array( 1390 + '5ab77007' => array( 1370 1391 'javelin-install', 1371 1392 'javelin-util', 1372 - 'javelin-request', 1373 - 'javelin-typeahead-source', 1374 - ), 1375 - '5aa1544e' => array( 1376 - 'javelin-behavior', 1377 - 'javelin-util', 1378 1393 'javelin-stratcom', 1379 - 'javelin-dom', 1380 - 'javelin-vector', 1381 - 'javelin-magical-init', 1382 - 'javelin-request', 1383 - 'javelin-history', 1384 - 'javelin-workflow', 1385 - 'javelin-mask', 1386 - 'javelin-behavior-device', 1387 - 'phabricator-keyboard-shortcut', 1388 1394 ), 1389 - '5b54c823' => array( 1395 + '5ce5c490' => array( 1390 1396 'javelin-install', 1391 - 'javelin-stratcom', 1392 1397 'javelin-dom', 1393 - 'javelin-util', 1394 1398 ), 1395 1399 '5cf0501a' => array( 1396 1400 'javelin-behavior', ··· 1398 1402 'javelin-dom', 1399 1403 'phuix-dropdown-menu', 1400 1404 ), 1401 - '5d83623b' => array( 1405 + '5ec2a4b0' => array( 1406 + 'javelin-behavior', 1407 + 'javelin-workflow', 1402 1408 'javelin-dom', 1409 + 'javelin-util', 1403 1410 ), 1404 - '5faf27b9' => array( 1405 - 'phuix-form-control-view', 1411 + '63598f73' => array( 1412 + 'javelin-install', 1413 + 'javelin-util', 1414 + 'javelin-request', 1415 + 'javelin-typeahead-source', 1406 1416 ), 1407 - '60cd9241' => array( 1417 + '636c1d6d' => array( 1408 1418 'javelin-behavior', 1409 - ), 1410 - '6199f752' => array( 1411 - 'javelin-install', 1419 + 'javelin-stratcom', 1412 1420 'javelin-dom', 1413 - 'javelin-vector', 1414 - 'javelin-request', 1415 - 'javelin-uri', 1421 + 'phabricator-draggable-list', 1416 1422 ), 1417 1423 '65bb0011' => array( 1418 1424 'javelin-behavior', ··· 1423 1429 'javelin-stratcom', 1424 1430 'javelin-dom', 1425 1431 ), 1426 - '6648270a' => array( 1432 + '6691be26' => array( 1433 + 'javelin-dom', 1434 + 'javelin-util', 1435 + 'javelin-stratcom', 1436 + 'javelin-install', 1437 + 'javelin-workflow', 1438 + ), 1439 + '66ed7808' => array( 1440 + 'javelin-install', 1441 + 'javelin-typeahead', 1442 + 'javelin-dom', 1443 + 'javelin-request', 1444 + 'javelin-typeahead-ondemand-source', 1445 + 'javelin-util', 1446 + ), 1447 + '670c0b8a' => array( 1427 1448 'javelin-install', 1449 + 'javelin-util', 1428 1450 'javelin-dom', 1451 + 'javelin-typeahead-normalizer', 1452 + ), 1453 + '699676a1' => array( 1454 + 'javelin-util', 1455 + 'javelin-uri', 1456 + 'javelin-install', 1429 1457 ), 1430 1458 '6a1583a8' => array( 1431 1459 'javelin-behavior', ··· 1435 1463 'javelin-behavior', 1436 1464 'javelin-dom', 1437 1465 ), 1438 - '6a18c42e' => array( 1439 - 'javelin-install', 1440 - ), 1441 1466 '6a85bc5a' => array( 1442 1467 'javelin-behavior', 1443 1468 'javelin-dom', ··· 1445 1470 'javelin-workflow', 1446 1471 'javelin-magical-init', 1447 1472 ), 1473 + '6bb4873a' => array( 1474 + 'javelin-install', 1475 + 'javelin-dom', 1476 + 'javelin-vector', 1477 + 'javelin-util', 1478 + ), 1448 1479 '6bc7ccf7' => array( 1449 1480 'javelin-behavior', 1450 1481 'javelin-dom', ··· 1452 1483 'phabricator-textareautils', 1453 1484 'phabricator-remarkup-metadata', 1454 1485 ), 1455 - '6c798a10' => array( 1486 + '6be35145' => array( 1456 1487 'javelin-install', 1457 1488 'javelin-dom', 1458 - 'javelin-typeahead-preloaded-source', 1459 - 'javelin-util', 1460 - ), 1461 - '6cfa0008' => array( 1462 - 'javelin-dom', 1463 - 'javelin-dynval', 1464 - 'javelin-reactor', 1465 - 'javelin-reactornode', 1466 - 'javelin-install', 1467 - 'javelin-util', 1468 1489 ), 1469 1490 '6e815b50' => array( 1470 1491 'javelin-behavior', ··· 1478 1499 'javelin-workflow', 1479 1500 'javelin-dom', 1480 1501 ), 1481 - '727a5a61' => array( 1482 - 'phuix-icon-view', 1502 + '7032764f' => array( 1503 + 'javelin-behavior', 1504 + 'javelin-util', 1505 + 'javelin-workflow', 1506 + 'javelin-dom', 1507 + 'phabricator-drag-and-drop-file-upload', 1483 1508 ), 1484 - '72960bc1' => array( 1509 + 70743772 => array( 1485 1510 'javelin-install', 1486 - 'javelin-reactor', 1511 + 'javelin-dom', 1512 + 'javelin-magical-init', 1513 + 'javelin-stratcom', 1487 1514 'javelin-util', 1488 - 'javelin-reactor-node-calmer', 1515 + 'javelin-vector', 1489 1516 ), 1490 - '73ecc1f8' => array( 1491 - 'javelin-behavior', 1517 + '71779eee' => array( 1518 + 'javelin-install', 1492 1519 'javelin-behavior-device', 1520 + 'javelin-chart-curtain-view', 1521 + 'javelin-chart-function-label', 1522 + 'javelin-dom', 1493 1523 'javelin-stratcom', 1494 - 'phabricator-tooltip', 1524 + 'javelin-util', 1525 + 'javelin-vector', 1526 + 'phui-chart-css', 1495 1527 ), 1496 - 74446546 => array( 1497 - 'javelin-behavior', 1528 + '755f30a4' => array( 1529 + 'javelin-install', 1530 + 'javelin-util', 1498 1531 'javelin-dom', 1499 1532 ), 1500 - '7474d31f' => array( 1533 + 78148921 => array( 1501 1534 'javelin-install', 1502 1535 'javelin-dom', 1503 1536 'javelin-util', ··· 1506 1539 'javelin-workflow', 1507 1540 'phabricator-drag-and-drop-file-upload', 1508 1541 'javelin-workboard-board', 1542 + 'javelin-behavior-device', 1509 1543 ), 1510 - '78bc5d94' => array( 1544 + '7a7abb10' => array( 1545 + 'javelin-install', 1546 + 'javelin-reactor', 1547 + 'javelin-util', 1548 + ), 1549 + '7aa2cf57' => array( 1550 + 'javelin-behavior', 1551 + 'javelin-behavior-device', 1552 + 'javelin-mask', 1553 + 'javelin-util', 1554 + 'javelin-dom', 1555 + 'javelin-stratcom', 1556 + 'javelin-vector', 1557 + 'phabricator-phtize', 1558 + ), 1559 + '7bdf6903' => array( 1511 1560 'javelin-behavior', 1512 - 'javelin-uri', 1513 - 'phabricator-notification', 1561 + 'javelin-dom', 1562 + 'javelin-view-renderer', 1563 + 'javelin-install', 1514 1564 ), 1515 - '78f811c9' => array( 1565 + '7d83258e' => array( 1566 + 'javelin-magical-init', 1516 1567 'javelin-install', 1568 + 'javelin-util', 1569 + 'javelin-vector', 1570 + 'javelin-stratcom', 1517 1571 ), 1518 - '7930776a' => array( 1572 + '7e93c8d6' => array( 1519 1573 'javelin-install', 1520 - 'javelin-dom', 1574 + 'javelin-util', 1575 + 'javelin-websocket', 1576 + 'javelin-leader', 1577 + 'javelin-json', 1521 1578 ), 1522 - '7b139193' => array( 1579 + '7e9921c8' => array( 1523 1580 'javelin-behavior', 1524 1581 'javelin-stratcom', 1525 - 'javelin-workflow', 1526 - 'javelin-dom', 1527 - ), 1528 - '7c4d8998' => array( 1529 - 'javelin-install', 1582 + 'javelin-util', 1530 1583 'javelin-dom', 1531 1584 ), 1532 1585 '7ef6de30' => array( 1533 1586 'aphront-typeahead-control-css', 1534 1587 'phui-tag-view-css', 1535 1588 ), 1589 + '7f949794' => array( 1590 + 'javelin-behavior', 1591 + 'javelin-request', 1592 + 'javelin-dom', 1593 + ), 1594 + '7fb61bce' => array( 1595 + 'javelin-dom', 1596 + 'javelin-install', 1597 + 'javelin-request', 1598 + 'javelin-stratcom', 1599 + 'javelin-util', 1600 + 'javelin-workflow', 1601 + 'phabricator-diff-inline-content-state', 1602 + 'phabricator-shaped-request', 1603 + 'phabricator-textareautils', 1604 + 'phuix-action-view', 1605 + 'phuix-action-list-view', 1606 + 'phuix-button-view', 1607 + 'phuix-dropdown-menu', 1608 + ), 1536 1609 '80622c84' => array( 1537 1610 'aphront-dialog-view-css', 1538 1611 ), 1539 - '80bff3af' => array( 1540 - 'javelin-install', 1541 - 'javelin-typeahead-source', 1612 + '808d36b2' => array( 1613 + 'javelin-behavior', 1614 + 'javelin-dom', 1615 + 'javelin-stratcom', 1616 + 'phuix-dropdown-menu', 1542 1617 ), 1543 - '81debc48' => array( 1618 + '81e8557b' => array( 1544 1619 'javelin-install', 1620 + 'javelin-behavior-device', 1621 + 'javelin-dom', 1622 + 'javelin-stratcom', 1623 + 'javelin-typeahead-ondemand-source', 1545 1624 'javelin-util', 1625 + 'javelin-vector', 1626 + 'phuix-icon-view', 1627 + 'phabricator-prefab', 1628 + 'phabricator-textareautils', 1629 + ), 1630 + '8261d229' => array( 1631 + 'javelin-behavior', 1546 1632 'javelin-stratcom', 1633 + 'javelin-uri', 1634 + 'phabricator-notification', 1635 + ), 1636 + '83560c3e' => array( 1547 1637 'javelin-dom', 1638 + 'javelin-util', 1639 + 'javelin-stratcom', 1640 + 'javelin-install', 1641 + 'javelin-workflow', 1642 + 'javelin-router', 1643 + 'javelin-behavior-device', 1548 1644 'javelin-vector', 1645 + 'phabricator-diff-inline', 1646 + 'phabricator-diff-path-view', 1647 + 'phuix-button-view', 1648 + 'javelin-magical-init', 1549 1649 ), 1550 - '8207abf9' => array( 1650 + '861b6cde' => array( 1651 + 'javelin-behavior', 1551 1652 'javelin-dom', 1653 + 'javelin-stratcom', 1552 1654 ), 1553 - 83754533 => array( 1655 + '8673c75c' => array( 1554 1656 'javelin-install', 1555 1657 'javelin-util', 1556 1658 'javelin-dom', 1557 - 'javelin-vector', 1659 + 'javelin-typeahead', 1660 + 'javelin-tokenizer', 1661 + 'javelin-typeahead-normalizer', 1662 + 'javelin-typeahead-preloaded-source', 1663 + 'javelin-typeahead-ondemand-source', 1664 + 'javelin-dom', 1665 + 'javelin-stratcom', 1558 1666 ), 1559 - '84e6891f' => array( 1667 + '86e7c900' => array( 1560 1668 'javelin-install', 1561 - 'javelin-stratcom', 1669 + 'javelin-event', 1562 1670 'javelin-util', 1671 + 'javelin-magical-init', 1563 1672 'javelin-behavior', 1564 - 'javelin-json', 1565 - 'javelin-dom', 1566 - 'javelin-resource', 1567 - 'javelin-routable', 1568 1673 ), 1569 - '84f82dad' => array( 1674 + '8841c560' => array( 1570 1675 'javelin-install', 1676 + 'javelin-util', 1571 1677 ), 1572 - '876506b6' => array( 1573 - 'javelin-view', 1678 + '88d218bb' => array( 1574 1679 'javelin-install', 1575 1680 'javelin-dom', 1576 1681 ), 1577 - '89a1ae3a' => array( 1682 + '89cfe5ef' => array( 1683 + 'javelin-behavior', 1578 1684 'javelin-dom', 1579 - 'javelin-util', 1580 - 'javelin-stratcom', 1581 - 'javelin-install', 1685 + 'trigger-rule-editor', 1686 + 'trigger-rule', 1687 + 'trigger-rule-type', 1582 1688 ), 1583 1689 '8ac32fd9' => array( 1584 1690 'javelin-behavior', ··· 1587 1693 'javelin-dom', 1588 1694 'phabricator-draggable-list', 1589 1695 ), 1590 - '8b5c7d65' => array( 1591 - 'javelin-behavior', 1592 - 'javelin-stratcom', 1593 - 'javelin-dom', 1594 - 'phabricator-busy', 1595 - ), 1596 - '8badee71' => array( 1696 + '8b0e0928' => array( 1597 1697 'javelin-install', 1598 1698 'javelin-util', 1599 - 'javelin-dom', 1600 - 'javelin-typeahead-normalizer', 1601 1699 ), 1602 - '8c2ed2bf' => array( 1603 - 'javelin-behavior', 1604 - 'javelin-dom', 1605 - 'javelin-util', 1606 - 'javelin-stratcom', 1607 - 'javelin-workflow', 1608 - 'javelin-behavior-device', 1609 - 'javelin-history', 1700 + '8b1a7268' => array( 1701 + 'javelin-install', 1610 1702 'javelin-vector', 1611 - 'javelin-scrollbar', 1612 - 'phabricator-title', 1613 - 'phabricator-shaped-request', 1614 - 'conpherence-thread-manager', 1615 1703 ), 1616 - '8cbbcfc5' => array( 1617 - 'javelin-behavior', 1618 - 'javelin-stratcom', 1619 - 'javelin-dom', 1620 - 'javelin-history', 1621 - 'javelin-external-editor-link-engine', 1704 + '8d038327' => array( 1705 + 'javelin-install', 1706 + 'javelin-util', 1707 + 'javelin-request', 1708 + 'javelin-typeahead-source', 1622 1709 ), 1623 - '8e0aa661' => array( 1710 + '904b29cd' => array( 1624 1711 'javelin-install', 1625 1712 'javelin-dom', 1626 - ), 1627 - '8f959ad0' => array( 1628 - 'javelin-behavior', 1629 - 'javelin-dom', 1713 + 'javelin-history', 1714 + 'javelin-stratcom', 1715 + 'javelin-uri', 1630 1716 'javelin-util', 1631 1717 'javelin-workflow', 1632 - 'javelin-stratcom', 1633 1718 ), 1634 1719 90721212 => array( 1635 1720 'phui-fontkit-css', 1636 1721 ), 1637 - '91befbcc' => array( 1638 - 'javelin-behavior', 1639 - 'javelin-dom', 1640 - 'javelin-util', 1641 - 'javelin-workflow', 1642 - 'javelin-stratcom', 1643 - ), 1644 - '92388bae' => array( 1645 - 'javelin-behavior', 1646 - 'javelin-scrollbar', 1647 - ), 1648 1722 '925fe8cd' => array( 1649 1723 'javelin-behavior', 1650 1724 'javelin-stratcom', ··· 1663 1737 'phabricator-prefab', 1664 1738 'javelin-json', 1665 1739 ), 1740 + '93ec1300' => array( 1741 + 'javelin-install', 1742 + 'javelin-util', 1743 + ), 1744 + '957ff438' => array( 1745 + 'javelin-behavior', 1746 + 'javelin-stratcom', 1747 + 'javelin-dom', 1748 + 'phabricator-file-upload', 1749 + 'phabricator-keyboard-shortcut', 1750 + 'phabricator-phtize', 1751 + 'phabricator-textareautils', 1752 + 'phabricator-remarkup-metadata', 1753 + 'javelin-workflow', 1754 + 'javelin-vector', 1755 + 'phuix-autocomplete', 1756 + 'javelin-mask', 1757 + ), 1666 1758 '9623adc1' => array( 1667 1759 'javelin-behavior', 1668 1760 'javelin-stratcom', ··· 1676 1768 'javelin-stratcom', 1677 1769 'phabricator-notification', 1678 1770 ), 1771 + '978a8ed3' => array( 1772 + 'javelin-behavior', 1773 + 'javelin-stratcom', 1774 + 'javelin-dom', 1775 + 'javelin-mask', 1776 + 'javelin-util', 1777 + 'javelin-workflow', 1778 + 'phuix-icon-view', 1779 + 'phabricator-busy', 1780 + ), 1679 1781 '98ef467f' => array( 1680 1782 'javelin-behavior', 1681 1783 'javelin-dom', 1682 1784 'javelin-request', 1683 1785 'javelin-util', 1684 1786 ), 1685 - '995f5102' => array( 1787 + '9a68421a' => array( 1686 1788 'javelin-install', 1687 - 'javelin-util', 1688 - 'javelin-request', 1689 - 'javelin-router', 1690 1789 ), 1691 - '9aae2b66' => array( 1790 + '9af9ca69' => array( 1692 1791 'javelin-install', 1792 + 'javelin-reactor', 1693 1793 'javelin-util', 1794 + 'javelin-reactor-node-calmer', 1694 1795 ), 1695 1796 '9b03a61f' => array( 1696 1797 'phui-oi-list-view-css', 1697 1798 ), 1799 + '9bc1dd14' => array( 1800 + 'javelin-behavior', 1801 + 'javelin-dom', 1802 + 'javelin-stratcom', 1803 + 'javelin-vector', 1804 + ), 1698 1805 '9c01e364' => array( 1699 1806 'javelin-behavior', 1700 1807 'javelin-dom', 1701 1808 'javelin-workflow', 1702 1809 ), 1703 - '9c775532' => array( 1810 + '9cde5660' => array( 1811 + 'javelin-install', 1704 1812 'javelin-dom', 1705 - 'phabricator-diff-inline-content-state', 1813 + 'javelin-vector', 1706 1814 ), 1707 1815 '9cec214e' => array( 1708 1816 'javelin-behavior', ··· 1712 1820 'javelin-uri', 1713 1821 'phabricator-textareautils', 1714 1822 ), 1823 + '9d02b360' => array( 1824 + 'javelin-behavior', 1825 + 'javelin-dom', 1826 + 'javelin-history', 1827 + 'javelin-request', 1828 + 'javelin-stratcom', 1829 + 'javelin-uri', 1830 + 'javelin-util', 1831 + 'javelin-workflow', 1832 + 'phuix-action-list-view', 1833 + 'phuix-action-view', 1834 + 'phuix-dropdown-menu', 1835 + 'phabricator-tooltip', 1836 + ), 1837 + '9e3e8389' => array( 1838 + 'javelin-behavior', 1839 + 'javelin-stratcom', 1840 + 'javelin-dom', 1841 + 'phabricator-notification', 1842 + ), 1715 1843 'a17b84f1' => array( 1716 1844 'javelin-behavior', 1717 1845 'javelin-dom', 1718 1846 'javelin-workflow', 1719 1847 ), 1720 - 'a241536a' => array( 1848 + 'a2a6143c' => array( 1721 1849 'javelin-install', 1850 + 'javelin-util', 1722 1851 ), 1723 1852 'a2ab19be' => array( 1724 1853 'javelin-behavior', ··· 1728 1857 'javelin-workflow', 1729 1858 'phabricator-draggable-list', 1730 1859 ), 1731 - 'a43ae2ae' => array( 1732 - 'javelin-install', 1860 + 'a2d381d8' => array( 1861 + 'javelin-behavior', 1733 1862 'javelin-dom', 1734 1863 'javelin-stratcom', 1735 - 'javelin-vector', 1864 + 'javelin-scrollbar', 1865 + 'javelin-quicksand', 1866 + 'javelin-uri', 1867 + 'javelin-request', 1868 + 'conpherence-thread-manager', 1869 + 'phabricator-title', 1870 + ), 1871 + 'a4859af5' => array( 1872 + 'javelin-behavior', 1873 + 'javelin-aphlict', 1874 + 'javelin-stratcom', 1875 + 'javelin-request', 1876 + 'javelin-uri', 1877 + 'javelin-dom', 1878 + 'javelin-router', 1879 + 'javelin-leader', 1880 + 'javelin-sound', 1881 + 'phabricator-notification', 1736 1882 ), 1737 1883 'a4aa75c4' => array( 1738 1884 'phui-button-css', 1739 1885 'phui-button-simple-css', 1740 1886 ), 1741 - 'a5257c4e' => array( 1887 + 'a4fd3b57' => array( 1742 1888 'javelin-install', 1743 1889 'javelin-dom', 1744 - ), 1745 - 'a77e2cbd' => array( 1746 - 'javelin-behavior', 1890 + 'javelin-util', 1747 1891 'javelin-stratcom', 1748 - 'javelin-dom', 1892 + 'javelin-workflow', 1893 + 'javelin-sound', 1894 + 'javelin-json', 1749 1895 'javelin-vector', 1896 + 'javelin-request', 1897 + 'phabricator-draggable-list', 1898 + 'javelin-workboard-column', 1899 + 'javelin-workboard-header-template', 1900 + 'javelin-workboard-card-template', 1901 + 'javelin-workboard-order-template', 1902 + 'phabricator-keyboard-shortcut', 1750 1903 ), 1751 - 'a8f573a9' => array( 1752 - 'javelin-install', 1904 + 'a64672b5' => array( 1905 + 'javelin-behavior', 1753 1906 'javelin-dom', 1754 - 'javelin-util', 1755 1907 ), 1756 - 'a9942052' => array( 1908 + 'a77e2cbd' => array( 1757 1909 'javelin-behavior', 1910 + 'javelin-stratcom', 1758 1911 'javelin-dom', 1759 - 'javelin-view-renderer', 1760 - 'javelin-install', 1912 + 'javelin-vector', 1761 1913 ), 1762 - 'a9b91e3f' => array( 1914 + 'a9747130' => array( 1763 1915 'javelin-install', 1764 1916 'javelin-dom', 1765 - 'javelin-stratcom', 1766 1917 'javelin-util', 1767 - 'phabricator-notification-css', 1768 1918 ), 1769 1919 'a9da7b2a' => array( 1770 1920 'phui-button-css', ··· 1775 1925 'javelin-workflow', 1776 1926 'javelin-dom', 1777 1927 'phabricator-draggable-list', 1778 - ), 1779 - 'aa51efb4' => array( 1780 - 'javelin-dom', 1781 1928 ), 1782 1929 'aa6d2308' => array( 1783 1930 'javelin-behavior', ··· 1787 1934 'javelin-json', 1788 1935 'phuix-form-control-view', 1789 1936 ), 1790 - 'ac2b1e01' => array( 1937 + 'ab273e9d' => array( 1791 1938 'javelin-behavior', 1792 1939 'javelin-stratcom', 1793 1940 'javelin-dom', 1941 + 'javelin-history', 1942 + 'javelin-external-editor-link-engine', 1943 + 'javelin-uri', 1794 1944 'javelin-vector', 1795 - 'javelin-install', 1945 + 'phabricator-keyboard-shortcut', 1796 1946 ), 1797 - 'ad258e28' => array( 1947 + 'adb0a739' => array( 1798 1948 'javelin-behavior', 1799 1949 'javelin-dom', 1800 - 'javelin-chart', 1950 + 'javelin-uri', 1951 + 'phabricator-notification', 1801 1952 ), 1802 - 'ad486db3' => array( 1803 - 'javelin-install', 1804 - 'javelin-typeahead', 1953 + 'afe38d96' => array( 1954 + 'javelin-behavior', 1805 1955 'javelin-dom', 1806 1956 'javelin-request', 1807 - 'javelin-typeahead-ondemand-source', 1808 - 'javelin-util', 1957 + 'javelin-stratcom', 1958 + 'javelin-uri', 1809 1959 ), 1810 - 'aec8e38c' => array( 1811 - 'javelin-dom', 1812 - 'javelin-util', 1813 - 'javelin-stratcom', 1960 + 'b04c258c' => array( 1814 1961 'javelin-install', 1815 - 'javelin-aphlict', 1816 - 'javelin-workflow', 1817 - 'javelin-router', 1818 - 'javelin-behavior-device', 1819 - 'javelin-vector', 1820 1962 ), 1821 1963 'b105a3a6' => array( 1822 1964 'javelin-behavior', 1823 1965 'javelin-stratcom', 1824 1966 'javelin-dom', 1825 1967 ), 1826 - 'b26a41e4' => array( 1827 - 'javelin-behavior', 1828 - 'javelin-stratcom', 1829 - 'javelin-dom', 1830 - ), 1831 - 'b347a301' => array( 1832 - 'javelin-behavior', 1833 - ), 1834 - 'b46d88c5' => array( 1968 + 'b4afcd89' => array( 1835 1969 'javelin-install', 1836 1970 'javelin-dom', 1837 - 'javelin-util', 1838 - 'javelin-stratcom', 1839 - 'javelin-workflow', 1840 - 'phabricator-draggable-list', 1841 - 'javelin-workboard-column', 1842 - 'javelin-workboard-header-template', 1843 - 'javelin-workboard-card-template', 1844 - 'javelin-workboard-order-template', 1845 - ), 1846 - 'b49fd60c' => array( 1847 - 'multirow-row-manager', 1848 - 'trigger-rule', 1849 1971 ), 1850 1972 'b517bfa0' => array( 1851 1973 'phui-oi-list-view-css', 1852 1974 ), 1853 - 'b545d0a0' => array( 1854 - 'javelin-behavior', 1855 - 'javelin-util', 1856 - 'javelin-dom', 1857 - 'javelin-stratcom', 1858 - 'javelin-vector', 1859 - ), 1860 - 'b557770a' => array( 1861 - 'javelin-install', 1862 - 'javelin-util', 1863 - 'javelin-dom', 1864 - 'javelin-vector', 1865 - 'javelin-stratcom', 1866 - ), 1867 1975 'b58d1a2a' => array( 1868 1976 'javelin-behavior', 1869 1977 'javelin-behavior-device', ··· 1877 1985 'javelin-stratcom', 1878 1986 'javelin-dom', 1879 1987 ), 1988 + 'b6bafedf' => array( 1989 + 'javelin-install', 1990 + 'javelin-typeahead-source', 1991 + ), 1880 1992 'b748c1de' => array( 1881 1993 'phui-theme-css', 1882 1994 ), ··· 1886 1998 'javelin-util', 1887 1999 'phabricator-shaped-request', 1888 2000 ), 1889 - 'b86ef6c2' => array( 2001 + 'b7bd4fb1' => array( 2002 + 'javelin-behavior', 2003 + 'javelin-dom', 2004 + 'javelin-uri', 2005 + 'javelin-mask', 2006 + 'javelin-stratcom', 2007 + 'javelin-workflow', 2008 + 'phabricator-drag-and-drop-file-upload', 2009 + ), 2010 + 'b82fc780' => array( 2011 + 'javelin-install', 2012 + 'javelin-dom', 2013 + 'javelin-stratcom', 2014 + ), 2015 + 'b852b68e' => array( 1890 2016 'javelin-behavior', 1891 2017 'javelin-dom', 2018 + 'javelin-quicksand', 2019 + 'javelin-sound', 1892 2020 'javelin-stratcom', 1893 - 'phabricator-tooltip', 1894 - 'phabricator-diff-changeset-list', 1895 - 'phabricator-diff-changeset', 1896 - 'phuix-formation-view', 2021 + 'javelin-workboard-controller', 2022 + 'javelin-workboard-drop-effect', 2023 + 'phuix-dropdown-menu', 1897 2024 ), 1898 2025 'b86f297f' => array( 1899 2026 'javelin-behavior', ··· 1907 2034 'javelin-uri', 1908 2035 'phabricator-notification', 1909 2036 ), 1910 - 'c2c500a7' => array( 2037 + 'bcb07115' => array( 1911 2038 'javelin-install', 1912 2039 'javelin-dom', 1913 - 'phuix-button-view', 2040 + 'phabricator-notification', 1914 2041 ), 1915 - 'c3703a16' => array( 1916 - 'javelin-behavior', 1917 - 'javelin-aphlict', 1918 - 'phabricator-phtize', 1919 - 'javelin-dom', 2042 + 'bdc40a6b' => array( 2043 + 'javelin-install', 2044 + 'javelin-util', 2045 + 'javelin-request', 2046 + 'javelin-router', 1920 2047 ), 1921 - 'c3d24e63' => array( 2048 + 'beca9a7a' => array( 1922 2049 'javelin-install', 1923 - 'javelin-workboard-card', 1924 - 'javelin-workboard-header', 2050 + 'javelin-util', 2051 + 'phabricator-keyboard-shortcut-manager', 2052 + ), 2053 + 'c2129f37' => array( 2054 + 'javelin-install', 2055 + 'javelin-dom', 2056 + 'javelin-typeahead-preloaded-source', 2057 + 'javelin-util', 2058 + ), 2059 + 'c3ea5759' => array( 2060 + 'javelin-behavior', 2061 + 'javelin-dom', 2062 + 'javelin-chart', 2063 + 'javelin-request', 1925 2064 ), 1926 2065 'c44f95c7' => array( 1927 2066 'phui-workcard-view-css', 1928 2067 ), 2068 + 'c51e6aa0' => array( 2069 + 'javelin-behavior', 2070 + 'javelin-dom', 2071 + 'javelin-request', 2072 + ), 1929 2073 'c538cbfc' => array( 1930 2074 'javelin-behavior', 1931 2075 'javelin-stratcom', 1932 2076 'javelin-dom', 1933 2077 ), 2078 + 'c5a9b42b' => array( 2079 + 'javelin-install', 2080 + 'javelin-dom', 2081 + 'javelin-vector', 2082 + 'javelin-request', 2083 + 'javelin-uri', 2084 + 'javelin-util', 2085 + 'javelin-json', 2086 + 'phui-hovercard', 2087 + ), 1934 2088 'c60fb44a' => array( 1935 2089 'javelin-behavior', 1936 2090 'javelin-stratcom', ··· 1944 2098 'javelin-fx', 1945 2099 'javelin-util', 1946 2100 ), 1947 - 'c68f183f' => array( 2101 + 'c6d00cb9' => array( 1948 2102 'javelin-install', 1949 - 'javelin-dom', 1950 2103 ), 1951 2104 'c715c123' => array( 1952 2105 'javelin-behavior', ··· 1955 2108 'javelin-workflow', 1956 2109 'javelin-json', 1957 2110 ), 1958 - 'cc1553f3' => array( 2111 + 'c74a690a' => array( 2112 + 'javelin-install', 2113 + 'javelin-dom', 1959 2114 'javelin-stratcom', 1960 - 'javelin-request', 1961 - 'javelin-dom', 1962 - 'javelin-vector', 1963 - 'javelin-install', 1964 2115 'javelin-util', 1965 - 'javelin-mask', 1966 - 'javelin-uri', 1967 - 'javelin-routable', 1968 - ), 1969 - 'cc2c5de5' => array( 1970 - 'javelin-install', 1971 - 'phuix-button-view', 1972 - 'phabricator-diff-tree-view', 1973 - ), 1974 - 'ce6f8e3d' => array( 1975 - 'phui-chart-css', 1976 - 'd3', 1977 - 'javelin-chart-curtain-view', 1978 - 'javelin-chart-function-label', 2116 + 'javelin-workboard-card', 2117 + 'javelin-workboard-header', 1979 2118 ), 1980 - 'cef53b3e' => array( 2119 + 'c967b0e7' => array( 1981 2120 'javelin-install', 1982 2121 'javelin-dom', 2122 + 'javelin-magical-init', 2123 + 'javelin-util', 2124 + 'javelin-stratcom', 2125 + 'javelin-vector', 1983 2126 'phuix-formation-column-view', 1984 2127 'phuix-formation-flank-view', 1985 2128 ), 1986 - 'cf26eaab' => array( 1987 - 'javelin-install', 2129 + 'cd00e3d4' => array( 2130 + 'javelin-behavior', 1988 2131 'javelin-dom', 1989 - 'phuix-icon-view', 1990 - 'phabricator-prefab', 2132 + 'javelin-typeahead', 2133 + 'javelin-typeahead-static-source', 1991 2134 ), 1992 - 'd12d214f' => array( 2135 + 'ce39158d' => array( 1993 2136 'javelin-install', 1994 - 'javelin-dom', 1995 - 'javelin-json', 1996 - 'javelin-workflow', 2137 + 'javelin-typeahead-source', 1997 2138 'javelin-util', 1998 2139 ), 1999 - 'd3799cb4' => array( 2000 - 'javelin-install', 2001 - ), 2002 - 'd4cc2d2a' => array( 2140 + 'cf6b743b' => array( 2003 2141 'javelin-install', 2004 - ), 2005 - 'd7d3ba75' => array( 2006 2142 'javelin-dom', 2143 + 'javelin-stratcom', 2007 2144 'javelin-util', 2145 + 'javelin-uri', 2146 + 'phabricator-notification-css', 2147 + ), 2148 + 'd3115244' => array( 2149 + 'javelin-behavior', 2150 + 'javelin-dom', 2008 2151 'javelin-stratcom', 2009 - 'javelin-install', 2010 - 'javelin-workflow', 2011 - 'javelin-router', 2012 - 'javelin-behavior-device', 2013 2152 'javelin-vector', 2014 - 'phabricator-diff-inline', 2015 - 'phabricator-diff-path-view', 2016 - 'phuix-button-view', 2017 - 'javelin-external-editor-link-engine', 2153 + 'javelin-uri', 2154 + 'javelin-request', 2018 2155 ), 2019 - 'd8a86cfb' => array( 2156 + 'd336267a' => array( 2020 2157 'javelin-behavior', 2021 2158 'javelin-dom', 2159 + 'javelin-magical-init', 2160 + 'javelin-stratcom', 2022 2161 'javelin-util', 2023 - 'phabricator-shaped-request', 2162 + ), 2163 + 'd8a27e0d' => array( 2164 + 'javelin-install', 2165 + ), 2166 + 'd9979d19' => array( 2167 + 'javelin-install', 2168 + 'javelin-util', 2024 2169 ), 2025 2170 'da15d3dc' => array( 2026 2171 'phui-oi-list-view-css', 2027 2172 ), 2028 - 'da8f5259' => array( 2173 + 'da402bda' => array( 2029 2174 'javelin-behavior', 2175 + 'javelin-aphlict', 2176 + 'phabricator-phtize', 2030 2177 'javelin-dom', 2178 + 'phuix-icon-view', 2031 2179 ), 2032 - 'daceb29a' => array( 2180 + 'e10d1263' => array( 2033 2181 'javelin-behavior', 2034 2182 'javelin-stratcom', 2035 2183 'javelin-dom', 2036 - 'phabricator-phtize', 2037 - 'phabricator-textareautils', 2038 - 'phabricator-remarkup-metadata', 2039 2184 'javelin-workflow', 2040 - 'javelin-vector', 2041 - 'phuix-autocomplete', 2042 - 'javelin-mask', 2185 + 'javelin-quicksand', 2186 + 'phabricator-phtize', 2187 + 'phabricator-drag-and-drop-file-upload', 2188 + 'phabricator-draggable-list', 2189 + 'phabricator-file-upload', 2043 2190 ), 2044 - 'dae2d55b' => array( 2045 - 'javelin-behavior', 2046 - 'javelin-uri', 2047 - 'phabricator-notification', 2191 + 'e342e2b4' => array( 2192 + 'javelin-install', 2193 + 'javelin-dom', 2194 + 'phuix-icon-view', 2048 2195 ), 2049 - 'de4b4919' => array( 2196 + 'e44abfd6' => array( 2197 + 'multirow-row-manager', 2050 2198 'javelin-install', 2199 + 'path-typeahead', 2051 2200 'javelin-dom', 2052 - 'javelin-vector', 2053 - 'javelin-request', 2054 - 'javelin-uri', 2055 - 'phui-hovercard', 2201 + 'javelin-util', 2202 + 'phabricator-prefab', 2203 + 'phuix-form-control-view', 2204 + ), 2205 + 'e47745d1' => array( 2206 + 'javelin-install', 2207 + 'javelin-reactornode', 2208 + 'javelin-util', 2209 + 'javelin-reactor', 2056 2210 ), 2057 - 'e150bd50' => array( 2211 + 'e5bdb730' => array( 2058 2212 'javelin-behavior', 2059 2213 'javelin-stratcom', 2214 + 'javelin-workflow', 2060 2215 'javelin-dom', 2061 - 'phuix-dropdown-menu', 2216 + 'phabricator-draggable-list', 2062 2217 ), 2063 - 'e40c4991' => array( 2218 + 'e5e044e8' => array( 2219 + 'javelin-behavior', 2220 + 'javelin-dom', 2221 + 'javelin-magical-init', 2222 + 'javelin-stratcom', 2223 + 'javelin-uri', 2224 + ), 2225 + 'e63ab0ec' => array( 2064 2226 'javelin-install', 2065 2227 'javelin-dom', 2066 - 'javelin-json', 2067 2228 ), 2068 - 'e5bdb730' => array( 2229 + 'e6bc2ced' => array( 2230 + 'trigger-rule-control', 2231 + 'javelin-install', 2232 + ), 2233 + 'e9592389' => array( 2069 2234 'javelin-behavior', 2235 + 'javelin-util', 2070 2236 'javelin-stratcom', 2237 + 'javelin-dom', 2238 + 'javelin-vector', 2239 + 'javelin-magical-init', 2240 + 'javelin-request', 2241 + 'javelin-history', 2071 2242 'javelin-workflow', 2072 - 'javelin-dom', 2073 - 'phabricator-draggable-list', 2243 + 'javelin-mask', 2244 + 'javelin-behavior-device', 2245 + 'javelin-quicksand', 2246 + 'phabricator-keyboard-shortcut', 2074 2247 ), 2075 2248 'e9a2940f' => array( 2076 2249 'javelin-behavior', ··· 2083 2256 'phabricator-title', 2084 2257 'phabricator-favicon', 2085 2258 ), 2086 - 'e9c80beb' => array( 2259 + 'eac68b41' => array( 2260 + 'javelin-dom', 2261 + 'javelin-dynval', 2262 + 'javelin-reactor', 2263 + 'javelin-reactornode', 2087 2264 'javelin-install', 2088 - 'javelin-event', 2265 + 'javelin-util', 2089 2266 ), 2090 - 'ebe83a6b' => array( 2267 + 'ec0c35b0' => array( 2091 2268 'javelin-install', 2269 + 'javelin-dom', 2270 + 'javelin-fx', 2092 2271 ), 2093 2272 'ec4e31c0' => array( 2094 2273 'phui-timeline-view-css', 2095 2274 ), 2096 - 'f340a484' => array( 2275 + 'ef0160d8' => array( 2276 + 'javelin-dom', 2277 + 'javelin-install', 2278 + ), 2279 + 'f27ca8c5' => array( 2097 2280 'javelin-install', 2098 2281 'javelin-dom', 2099 - 'javelin-vector', 2282 + 'javelin-util', 2283 + 'phabricator-prefab', 2284 + ), 2285 + 'f2977446' => array( 2286 + 'javelin-install', 2287 + 'javelin-util', 2288 + ), 2289 + 'f29b7914' => array( 2290 + 'javelin-behavior', 2291 + 'javelin-behavior-device', 2292 + 'javelin-stratcom', 2293 + 'phui-hovercard-list', 2100 2294 ), 2101 - 'f782e983' => array( 2295 + 'f5bba944' => array( 2102 2296 'javelin-behavior', 2103 - 'javelin-typeahead-ondemand-source', 2104 - 'javelin-typeahead', 2105 2297 'javelin-dom', 2298 + 'javelin-stratcom', 2106 2299 'javelin-uri', 2107 2300 'javelin-util', 2108 - 'javelin-stratcom', 2109 - 'phabricator-prefab', 2110 - 'phuix-icon-view', 2111 2301 ), 2112 - 'f84bcbf4' => array( 2302 + 'f941cb00' => array( 2113 2303 'javelin-behavior', 2114 2304 'javelin-stratcom', 2115 2305 'javelin-dom', 2306 + 'javelin-vector', 2307 + 'javelin-install', 2116 2308 ), 2117 - 'f8c4e135' => array( 2309 + 'f9d95e77' => array( 2118 2310 'javelin-install', 2119 - 'javelin-dom', 2120 - 'javelin-view-visitor', 2121 - 'javelin-util', 2311 + ), 2312 + 'fa74cc35' => array( 2313 + 'phui-oi-list-view-css', 2122 2314 ), 2123 - 'fa6f30b2' => array( 2315 + 'fabc70ac' => array( 2124 2316 'javelin-behavior', 2125 2317 'javelin-dom', 2126 - 'javelin-stratcom', 2127 - 'javelin-behavior-device', 2128 - 'javelin-scrollbar', 2129 2318 'javelin-quicksand', 2130 - 'phabricator-keyboard-shortcut', 2131 - 'conpherence-thread-manager', 2319 + 'javelin-stratcom', 2320 + 'phabricator-tooltip', 2321 + 'phabricator-phtize', 2322 + 'phabricator-diff-changeset-list', 2323 + 'phuix-formation-view', 2132 2324 ), 2133 - 'fa74cc35' => array( 2134 - 'phui-oi-list-view-css', 2135 - ), 2136 - 'fdc13e4e' => array( 2325 + 'fe7cdb3b' => array( 2137 2326 'javelin-install', 2327 + 'javelin-dom', 2328 + 'javelin-json', 2138 2329 ), 2139 2330 'ff688a7a' => array( 2140 2331 'owners-path-editor',
+6
src/__phutil_library_map__.php
··· 1726 1726 'HeraldWebhookViewController' => 'applications/herald/controller/HeraldWebhookViewController.php', 1727 1727 'HeraldWebhookWorker' => 'applications/herald/worker/HeraldWebhookWorker.php', 1728 1728 'Javelin' => 'infrastructure/javelin/Javelin.php', 1729 + 'JavelinCelerityTestResources' => 'infrastructure/lint/linter/__tests__/JavelinCelerityTestResources.php', 1730 + 'JavelinPeastLibrary' => 'infrastructure/javelin/JavelinPeastLibrary.php', 1729 1731 'LegalpadController' => 'applications/legalpad/controller/LegalpadController.php', 1730 1732 'LegalpadCreateDocumentsCapability' => 'applications/legalpad/capability/LegalpadCreateDocumentsCapability.php', 1731 1733 'LegalpadDAO' => 'applications/legalpad/storage/LegalpadDAO.php', ··· 3676 3678 'PhabricatorJSONDocumentEngine' => 'applications/files/document/PhabricatorJSONDocumentEngine.php', 3677 3679 'PhabricatorJSONExportFormat' => 'infrastructure/export/format/PhabricatorJSONExportFormat.php', 3678 3680 'PhabricatorJavelinLinter' => 'infrastructure/lint/linter/PhabricatorJavelinLinter.php', 3681 + 'PhabricatorJavelinLinterTestCase' => 'infrastructure/lint/linter/__tests__/PhabricatorJavelinLinterTestCase.php', 3679 3682 'PhabricatorJiraIssueHasObjectEdgeType' => 'applications/doorkeeper/edge/PhabricatorJiraIssueHasObjectEdgeType.php', 3680 3683 'PhabricatorJupyterDocumentEngine' => 'applications/files/document/PhabricatorJupyterDocumentEngine.php', 3681 3684 'PhabricatorKeyValueDatabaseCache' => 'applications/cache/PhabricatorKeyValueDatabaseCache.php', ··· 7959 7962 'HeraldWebhookViewController' => 'HeraldWebhookController', 7960 7963 'HeraldWebhookWorker' => 'PhabricatorWorker', 7961 7964 'Javelin' => 'Phobject', 7965 + 'JavelinCelerityTestResources' => 'CelerityResourcesOnDisk', 7966 + 'JavelinPeastLibrary' => 'Phobject', 7962 7967 'LegalpadController' => 'PhabricatorController', 7963 7968 'LegalpadCreateDocumentsCapability' => 'PhabricatorPolicyCapability', 7964 7969 'LegalpadDAO' => 'PhabricatorLiskDAO', ··· 10209 10214 'PhabricatorJSONDocumentEngine' => 'PhabricatorTextDocumentEngine', 10210 10215 'PhabricatorJSONExportFormat' => 'PhabricatorExportFormat', 10211 10216 'PhabricatorJavelinLinter' => 'ArcanistLinter', 10217 + 'PhabricatorJavelinLinterTestCase' => 'ArcanistLinterTestCase', 10212 10218 'PhabricatorJiraIssueHasObjectEdgeType' => 'PhabricatorEdgeType', 10213 10219 'PhabricatorJupyterDocumentEngine' => 'PhabricatorDocumentEngine', 10214 10220 'PhabricatorKeyValueDatabaseCache' => 'PhutilKeyValueCache',
+224
src/infrastructure/javelin/JavelinPeastLibrary.php
··· 1 + <?php 2 + 3 + final class JavelinPeastLibrary extends Phobject { 4 + 5 + /** 6 + * The expected Peast version 7 + * 8 + * This is the version that would be obtained by downloading and including an 9 + * up-to-date Peast. The //actual// Peast version may vary. 10 + */ 11 + const EXPECTED_VERSION = '1.17.4'; 12 + 13 + const REPO = 'https://github.com/mck89/peast'; 14 + 15 + /** 16 + * The expected md5 hash of the PHP-parser packages listed above. 17 + */ 18 + private static $hashes = array( 19 + // v1.17.4.tar.gz 20 + 'b6fe4a3345ec7653adae94cedb1b5405', 21 + // v1.17.4.zip 22 + 'e8056c15c52de1dc2a2318462a0a4a61', 23 + ); 24 + 25 + private static $version; 26 + 27 + private static function downloadPeast(string $path, string $extension) { 28 + $path .= '/peast-'.self::EXPECTED_VERSION.$extension; 29 + 30 + // Skip downloading if the file already exists and matches the hash. 31 + if ( 32 + Filesystem::pathExists($path) && 33 + in_array(md5_file($path), self::$hashes, true)) { 34 + 35 + return $path; 36 + } 37 + 38 + // HTTPSFuture::setDownloadPath refuses to overwrite. 39 + Filesystem::remove($path); 40 + 41 + $future = new HTTPSFuture( 42 + self::REPO.'/archive/refs/tags/v'.self::EXPECTED_VERSION.$extension); 43 + $future 44 + ->setDownloadPath($path) 45 + ->resolvex(); 46 + 47 + $actual_md5 = md5_file($path); 48 + 49 + if (!in_array($actual_md5, self::$hashes, true)) { 50 + $expected = implode(', ', self::$hashes); 51 + 52 + throw new Exception( 53 + "Peast hash does not match: expected any of {$expected}". 54 + ", got {$actual_md5}."); 55 + } 56 + 57 + return $path; 58 + } 59 + 60 + public static function build() { 61 + $root = phutil_get_library_root('phorge'); 62 + $path = Filesystem::resolvePath($root.'/../support/peast'); 63 + $target = self::getPath(); 64 + $version = self::EXPECTED_VERSION; 65 + 66 + if (extension_loaded('zip')) { 67 + $download_path = self::downloadPeast($path, '.zip'); 68 + 69 + $zip = new ZipArchive(); 70 + $result = $zip->open($download_path); 71 + if (!$result) { 72 + throw new Exception( 73 + pht( 74 + 'Opening %s failed! %s.', 75 + $download_path, 76 + $result === false ? 'Unknown Error' : (string)$result)); 77 + } 78 + 79 + $zip->extractTo($target); 80 + 81 + // Renames fail if the target directory exists. 82 + Filesystem::remove("{$target}/Peast"); 83 + 84 + Filesystem::rename( 85 + "{$target}/peast-{$version}/lib/Peast", 86 + "{$target}/Peast"); 87 + 88 + Filesystem::remove("{$target}/peast-{$version}"); 89 + } else if ( 90 + extension_loaded('phar') && 91 + extension_loaded('zlib')) { 92 + 93 + $download_path = self::downloadPeast($path, '.tar.gz'); 94 + 95 + id(new PharData($download_path))->extractTo($target, null, true); 96 + 97 + // Renames fail if the target directory exists. 98 + Filesystem::remove("{$target}/Peast"); 99 + 100 + Filesystem::rename( 101 + "{$target}/peast-{$version}/lib/Peast", 102 + "{$target}/Peast"); 103 + 104 + Filesystem::remove("{$target}/peast-{$version}"); 105 + } else if (Filesystem::binaryExists('git')) { 106 + execx( 107 + 'git clone --single-branch --depth 1 --branch %s %s %s', 108 + 'v'.self::EXPECTED_VERSION, 109 + self::REPO, 110 + $path.'/git'); 111 + 112 + // Renames fail if the target directory exists. 113 + Filesystem::remove("{$path}/Peast"); 114 + 115 + Filesystem::rename( 116 + "{$path}/git/lib/Peast", 117 + "{$path}/Peast"); 118 + 119 + Filesystem::remove($path.'/git'); 120 + } else { 121 + throw new Exception( 122 + pht('No viable means to download Peast is available.')); 123 + } 124 + 125 + Filesystem::writeFile($target.'/version', $version); 126 + } 127 + 128 + /** 129 + * Returns human-readable instructions for building PHP-parser. 130 + * 131 + * @return string 132 + */ 133 + public static function getBuildInstructions() { 134 + $root = phutil_get_library_root('phorge'); 135 + $script = Filesystem::resolvePath( 136 + $root.'/../support/peast/build-peast.php'); 137 + 138 + return phutil_console_format( 139 + "%s:\n\n \$ %s\n", 140 + pht( 141 + "Your version of '%s' is unbuilt or out of date. Run this ". 142 + "script to build it.", 143 + 'peast'), 144 + $script); 145 + } 146 + 147 + private static function peastAutoloader($classname) { 148 + $lib = self::getPath(); 149 + 150 + if (strncmp($classname, 'Peast', 5)) { 151 + return false; 152 + } 153 + 154 + $path = $lib.'/'.str_replace('\\', '/', $classname).'.php'; 155 + 156 + if (!Filesystem::pathExists($path)) { 157 + return false; 158 + } 159 + 160 + require $path; 161 + 162 + return true; 163 + } 164 + 165 + public static function loadLibrary() { 166 + static $loaded = false; 167 + 168 + if (!$loaded) { 169 + if (!self::isAvailable()) { 170 + try { 171 + self::build(); 172 + } catch (Throwable $ex) { 173 + throw new Exception(self::getBuildInstructions(), 0, $ex); 174 + } 175 + } 176 + 177 + spl_autoload_register('JavelinPeastLibrary::peastAutoloader'); 178 + } 179 + } 180 + 181 + /** 182 + * Returns the path to the Peast library. 183 + * 184 + * @return string 185 + */ 186 + public static function getPath() { 187 + static $path = null; 188 + 189 + if (!$path) { 190 + $root = phutil_get_library_root('phorge'); 191 + $path = Filesystem::resolvePath($root.'/../support/peast/lib'); 192 + } 193 + 194 + return $path; 195 + } 196 + 197 + /** 198 + * Returns the Peast version. 199 + * 200 + * @return string 201 + */ 202 + public static function getVersion() { 203 + if (self::$version === null) { 204 + $lib = self::getPath(); 205 + 206 + if (Filesystem::pathExists($lib.'/version')) { 207 + self::$version = trim(Filesystem::readFile($lib.'/version')); 208 + } 209 + } 210 + 211 + return self::$version; 212 + } 213 + 214 + /** 215 + * Checks if PHP-parser is built and up-to-date. 216 + * 217 + * @return bool 218 + */ 219 + public static function isAvailable() { 220 + $version = self::getVersion(); 221 + return $version === self::EXPECTED_VERSION; 222 + } 223 + 224 + }
+184 -100
src/infrastructure/lint/linter/PhabricatorJavelinLinter.php
··· 1 1 <?php 2 2 3 + /** 4 + * @phutil-external-symbol class Peast\Peast 5 + * @phutil-external-symbol class Peast\Formatter\Compact 6 + * @phutil-external-symbol class Peast\Syntax\Node\AssignmentExpression 7 + * @phutil-external-symbol class Peast\Syntax\Node\CallExpression 8 + * @phutil-external-symbol class Peast\Syntax\Node\MemberExpression 9 + * @phutil-external-symbol class Peast\Syntax\Node\Identifier 10 + * @phutil-external-symbol class Peast\Syntax\Node\StringLiteral 11 + */ 3 12 final class PhabricatorJavelinLinter extends ArcanistLinter { 4 13 5 14 private $symbols = array(); 6 15 7 - private $symbolsBinary; 8 - private $haveWarnedAboutBinary; 16 + private $unitTestMode = false; 9 17 10 18 const LINT_PRIVATE_ACCESS = 1; 11 19 const LINT_MISSING_DEPENDENCY = 2; 12 20 const LINT_UNNECESSARY_DEPENDENCY = 3; 13 21 const LINT_UNKNOWN_DEPENDENCY = 4; 14 - const LINT_MISSING_BINARY = 5; 22 + const LINT_UNDOCUMENTED_INSTALL = 6; 23 + const LINT_UNINSTALLED_DOCUMENTATION = 7; 15 24 16 25 public function getInfoName() { 17 26 return pht('Javelin Linter'); ··· 20 29 public function getInfoDescription() { 21 30 return pht( 22 31 'This linter is intended for use with the Javelin JS library and '. 23 - 'extensions. Use `%s` to run Javelin rules on Javascript source files.', 24 - 'javelinsymbols'); 32 + 'extensions.'); 25 33 } 26 34 27 - private function getBinaryPath() { 28 - if ($this->symbolsBinary === null) { 29 - list($err, $stdout) = exec_manual('which javelinsymbols'); 30 - $this->symbolsBinary = ($err ? false : rtrim($stdout)); 31 - } 32 - return $this->symbolsBinary; 35 + /** 36 + * @internal Enables overrides for unit tests. 37 + * 38 + * @param bool $unit_tests 39 + * @return $this 40 + */ 41 + public function enableUnitTestOverrides(bool $unit_tests) { 42 + $this->unitTestMode = $unit_tests; 43 + return $this; 33 44 } 34 45 35 46 public function willLintPaths(array $paths) { 36 - if (!$this->getBinaryPath()) { 37 - return; 38 - } 39 - 40 47 $root = dirname(phutil_get_library_root('phabricator')); 41 48 require_once $root.'/scripts/__init_script__.php'; 42 49 43 - $futures = array(); 44 - foreach ($paths as $path) { 45 - if ($this->shouldIgnorePath($path)) { 46 - continue; 47 - } 48 - 49 - $future = $this->newSymbolsFuture($path); 50 - $futures[$path] = $future; 51 - } 52 - 53 - foreach (id(new FutureIterator($futures))->limit(8) as $path => $future) { 54 - $this->symbols[$path] = $future->resolvex(); 55 - } 50 + JavelinPeastLibrary::loadLibrary(); 56 51 } 57 52 58 53 public function getLinterName() { ··· 63 58 return 'javelin'; 64 59 } 65 60 66 - public function getLintSeverityMap() { 67 - return array( 68 - self::LINT_MISSING_BINARY => ArcanistLintSeverity::SEVERITY_WARNING, 69 - ); 70 - } 71 - 72 61 public function getLintNameMap() { 73 62 return array( 74 63 self::LINT_PRIVATE_ACCESS => ··· 79 68 pht('Unnecessary Javelin Dependency'), 80 69 self::LINT_UNKNOWN_DEPENDENCY => 81 70 pht('Unknown Javelin Dependency'), 82 - self::LINT_MISSING_BINARY => 83 - pht('`%s` Not In Path', 'javelinsymbols'), 71 + self::LINT_UNDOCUMENTED_INSTALL => 72 + pht('Undocumented Install'), 73 + self::LINT_UNINSTALLED_DOCUMENTATION => 74 + pht('Uninstalled Documentation'), 84 75 ); 85 76 } 86 77 ··· 90 81 91 82 public function getCacheVersion() { 92 83 $version = '0'; 93 - $binary_path = $this->getBinaryPath(); 94 - if ($binary_path) { 95 - $version .= '-'.md5_file($binary_path); 84 + if (JavelinPeastLibrary::isAvailable()) { 85 + $version .= '-'.JavelinPeastLibrary::getVersion(); 96 86 } 97 87 return $version; 98 88 } ··· 106 96 return; 107 97 } 108 98 109 - if (!$this->symbolsBinary) { 110 - if (!$this->haveWarnedAboutBinary) { 111 - $this->haveWarnedAboutBinary = true; 112 - // TODO: Write build documentation for the Javelin binaries and point 113 - // the user at it. See also https://we.phorge.it/T15123 and 114 - // https://we.phorge.it/T15669 115 - $this->raiseLintAtLine( 116 - 1, 117 - 0, 118 - self::LINT_MISSING_BINARY, 119 - pht( 120 - "The '%s' binary in the Javelin project is not available in %s, ". 121 - "so the Javelin linter can't run. This isn't a big concern, ". 122 - "but means some Javelin problems can't be automatically detected.", 123 - 'javelinsymbols', 124 - '$PATH')); 125 - } 126 - return; 127 - } 128 - 129 - list($uses, $installs) = $this->getUsedAndInstalledSymbolsForPath($path); 99 + $symbols = $this->getUsedAndInstalledSymbolsForPath($path); 100 + list($uses, $installs, $documented_installs) = $symbols; 130 101 foreach ($uses as $symbol => $line) { 131 102 $parts = explode('.', $symbol); 132 103 foreach ($parts as $part) { ··· 148 119 } 149 120 } 150 121 122 + $undeclared_installs = array_diff_key($installs, $documented_installs); 123 + foreach ($undeclared_installs as $name => $line) { 124 + $this->raiseLintAtLine( 125 + $line, 126 + 0, 127 + self::LINT_UNDOCUMENTED_INSTALL, 128 + pht( 129 + "This file installs component '%s', but does not document it.", 130 + $name)); 131 + } 132 + 133 + $uninstalled_declares = array_diff_key($documented_installs, $installs); 134 + foreach ($uninstalled_declares as $name => $line) { 135 + $this->raiseLintAtLine( 136 + $line, 137 + 0, 138 + self::LINT_UNINSTALLED_DOCUMENTATION, 139 + pht( 140 + "This file %s component '%s', but does not actually install it.", 141 + '@javelin-installs', 142 + $name)); 143 + } 144 + 151 145 $external_classes = array(); 152 146 foreach ($uses as $symbol => $line) { 153 147 $parts = explode('.', $symbol); ··· 158 152 } 159 153 } 160 154 161 - $celerity = CelerityResourceMap::getNamedInstance('phabricator'); 155 + if ($this->unitTestMode) { 156 + $resources = id(new JavelinCelerityTestResources()) 157 + ->wrap(new CelerityPhabricatorResources()); 158 + $celerity = new CelerityResourceMap($resources); 159 + } else { 160 + $celerity = CelerityResourceMap::getNamedInstance('phabricator'); 161 + } 162 162 163 163 $path = preg_replace( 164 164 '@^externals/javelinjs/src/@', ··· 166 166 $path); 167 167 $need = $external_classes; 168 168 169 - $resource_name = substr($path, strlen('webroot/')); 169 + if (!strncmp($path, 'webroot/', 8)) { 170 + $resource_name = substr($path, strlen('webroot/')); 171 + } else { 172 + $resource_name = $path; 173 + } 174 + 170 175 $requires = $celerity->getRequiredSymbolsForName($resource_name); 171 176 if (!$requires) { 172 177 $requires = array(); ··· 176 181 $requires_name = $celerity->getResourceNameForSymbol($requires_symbol); 177 182 if ($requires_name === null) { 178 183 $this->raiseLintAtLine( 179 - 0, 184 + 1, 180 185 0, 181 186 self::LINT_UNKNOWN_DEPENDENCY, 182 187 pht( ··· 193 198 unset($requires[$key]); 194 199 } else { 195 200 $symbol_path = 'webroot/'.$requires_name; 196 - list($ignored, $req_install) = $this->getUsedAndInstalledSymbolsForPath( 201 + list($_, $_, $req_install) = $this->getUsedAndInstalledSymbolsForPath( 197 202 $symbol_path); 198 203 if (array_intersect_key($req_install, $external_classes)) { 199 204 $need = array_diff_key($need, $req_install); ··· 215 220 216 221 foreach ($requires as $component) { 217 222 $this->raiseLintAtLine( 218 - 0, 223 + 1, 219 224 0, 220 225 self::LINT_UNNECESSARY_DEPENDENCY, 221 226 pht( ··· 227 232 228 233 private function loadSymbols($path) { 229 234 if (empty($this->symbols[$path])) { 230 - $this->symbols[$path] = $this->newSymbolsFuture($path)->resolvex(); 235 + $this->symbols[$path] = $this->symbolize($path); 231 236 } 232 237 return $this->symbols[$path]; 233 238 } 234 239 235 - private function newSymbolsFuture($path) { 236 - $future = new ExecFuture('javelinsymbols # %s', $path); 237 - $future->write($this->getData($path)); 238 - return $future; 239 - } 240 + private function symbolize(string $path): array { 241 + $installs = array(); 242 + $behaviors = array(); 243 + $uses = array(); 240 244 241 - private function getUsedAndInstalledSymbolsForPath($path) { 242 - list($symbols) = $this->loadSymbols($path); 243 - $symbols = trim($symbols); 245 + $source = $this->getData($path); 246 + $ast = Peast\Peast::latest($source)->parse(); 247 + $expressions = $ast 248 + ->query('CallExpression, MemberExpression, AssignmentExpression') 249 + ->getIterator(); 250 + 251 + foreach ($expressions as $expression) { 252 + if ($expression instanceof Peast\Syntax\Node\CallExpression) { 253 + $callee = $expression->getCallee(); 254 + if (!($callee instanceof Peast\Syntax\Node\MemberExpression)) { 255 + continue; 256 + } 257 + 258 + $member_expression = $this->unnestMemberExpression($callee); 259 + $full_name = $callee->render(new Peast\Formatter\Compact()); 260 + } else if ( 261 + $expression instanceof Peast\Syntax\Node\AssignmentExpression) { 262 + 263 + $left = $expression->getLeft(); 264 + if (!($left instanceof Peast\Syntax\Node\MemberExpression)) { 265 + continue; 266 + } 267 + 268 + $member_expression = $this->unnestMemberExpression($left); 269 + $full_name = $left->render(new Peast\Formatter\Compact()); 270 + } else { 271 + $member_expression = $expression; 272 + $full_name = $expression->render(new Peast\Formatter\Compact()); 273 + } 244 274 245 - $uses = array(); 246 - $installs = array(); 247 - if (empty($symbols)) { 248 - // This file has no symbols. 249 - return array($uses, $installs); 250 - } 275 + $object = $member_expression->getObject(); 276 + $property = $member_expression->getProperty(); 251 277 252 - $symbols = explode("\n", trim($symbols)); 253 - foreach ($symbols as $line) { 254 - $matches = null; 255 - if (!preg_match('/^([?+\*])([^:]*):(\d+)$/', $line, $matches)) { 256 - throw new Exception( 257 - pht('Received malformed output from `%s`.', 'javelinsymbols')); 278 + if ( 279 + !($object instanceof Peast\Syntax\Node\Identifier) || 280 + !($property instanceof Peast\Syntax\Node\Identifier) || 281 + // Computed means using indexers ([ & ]). We ignore these. 282 + $member_expression->getComputed()) { 283 + continue; 258 284 } 259 - $type = $matches[1]; 260 - $symbol = $matches[2]; 261 - $line = $matches[3]; 262 285 263 - switch ($type) { 264 - case '?': 265 - $uses[$symbol] = $line; 266 - break; 267 - case '+': 268 - $installs['JX.'.$symbol] = $line; 269 - break; 286 + if ($object->getName() !== 'JX') { 287 + continue; 288 + } 289 + 290 + $property_name = $property->getName(); 291 + $start_line = $expression->getLocation()->getStart()->getLine(); 292 + $end_line = $expression->getLocation()->getEnd()->getLine(); 293 + 294 + if ($expression instanceof Peast\Syntax\Node\AssignmentExpression) { 295 + $installs['JX.'.$property_name] = $end_line; 296 + continue; 297 + } 298 + 299 + $uses[$full_name] = $start_line; 300 + 301 + if ( 302 + !($expression instanceof Peast\Syntax\Node\CallExpression) || 303 + ($property_name !== 'install' && $property_name !== 'behavior')) { 304 + continue; 305 + } 306 + 307 + $arguments = $expression->getArguments(); 308 + if ( 309 + !$arguments || 310 + !($arguments[0] instanceof Peast\Syntax\Node\StringLiteral)) { 311 + continue; 312 + } 313 + 314 + $name = $arguments[0]->getValue(); 315 + 316 + if ($property_name === 'install') { 317 + $installs['JX.'.$name] = $end_line; 318 + } else { 319 + $behaviors[$name] = $end_line; 270 320 } 271 321 } 272 322 323 + return array($installs, $behaviors, $uses); 324 + } 325 + 326 + /** 327 + * Unpacks a MemberExpression to its left-most side. 328 + * MemberExpressions are parsed left to right, but that means the first part 329 + * is the furthest in the tree. 330 + * 331 + * @param Peast\Syntax\Node\MemberExpression $expression 332 + * @return Peast\Syntax\Node\MemberExpression 333 + */ 334 + private function unnestMemberExpression( 335 + Peast\Syntax\Node\MemberExpression $expression) { 336 + 337 + $object = $expression->getObject(); 338 + if ($object instanceof Peast\Syntax\Node\MemberExpression) { 339 + return $this->unnestMemberExpression($object); 340 + } 341 + 342 + return $expression; 343 + } 344 + 345 + private function getUsedAndInstalledSymbolsForPath($path) { 346 + list($installs, $behaviors, $uses) = $this->loadSymbols($path); 347 + $documented_installs = array(); 348 + 273 349 $contents = $this->getData($path); 274 350 275 351 $matches = null; ··· 277 353 '/@javelin-installs\W+(\S+)/', 278 354 $contents, 279 355 $matches, 280 - PREG_PATTERN_ORDER); 356 + PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE); 281 357 282 358 if ($count) { 283 - foreach ($matches[1] as $symbol) { 284 - $installs[$symbol] = 0; 359 + $engine = $this->getEngine(); 360 + 361 + if ($this->unitTestMode) { 362 + $engine->addFileData($path, $contents); 363 + } 364 + 365 + foreach ($matches[1] as $match) { 366 + list($symbol, $offset) = $match; 367 + list($line) = $engine->getLineAndCharFromOffset($path, $offset); 368 + $documented_installs[$symbol] = $line + 1; 285 369 } 286 370 } 287 371 288 - return array($uses, $installs); 372 + return array($uses, $installs, $documented_installs); 289 373 } 290 374 291 375 }
+50
src/infrastructure/lint/linter/__tests__/JavelinCelerityTestResources.php
··· 1 + <?php 2 + 3 + final class JavelinCelerityTestResources 4 + extends CelerityResourcesOnDisk { 5 + 6 + /** @var CelerityResources|null */ 7 + private $wrap; 8 + 9 + public function wrap(CelerityResources $resources) { 10 + $this->wrap = $resources; 11 + return $this; 12 + } 13 + 14 + public function getPathToResources() { 15 + return __DIR__.'/javelin/'; 16 + } 17 + 18 + public function getPathToMap() { 19 + return __DIR__.'/map.php'; 20 + } 21 + 22 + public function loadMap() { 23 + $map = parent::loadMap(); 24 + 25 + if (!$this->wrap) { 26 + return $map; 27 + } 28 + 29 + return array_merge_recursive($map, $this->wrap->loadMap()); 30 + } 31 + 32 + public function getName() { 33 + return 'javelinunittest'; 34 + } 35 + 36 + protected function getTextFileSuffixes() { 37 + return array( 38 + 'lint-test', 39 + ); 40 + } 41 + 42 + public function getResourceData($name) { 43 + $data = parent::getResourceData($name); 44 + 45 + list($data) = preg_split('/^~{4,}\n/m', $data, 2); 46 + 47 + return $data; 48 + } 49 + 50 + }
+33
src/infrastructure/lint/linter/__tests__/PhabricatorJavelinLinterTestCase.php
··· 1 + <?php 2 + 3 + final class PhabricatorJavelinLinterTestCase extends ArcanistLinterTestCase { 4 + 5 + protected function getLinter() { 6 + $linter = id(new PhabricatorJavelinLinter()) 7 + ->enableUnitTestOverrides(true); 8 + 9 + $phorge_root = Filesystem::resolvePath( 10 + phutil_get_library_root('phorge').'/../').'/'; 11 + $webroot = 'webroot/rsrc/externals/javelin/'; 12 + 13 + $files = id(new FileFinder($phorge_root.$webroot)) 14 + ->excludePath('*/__tests__/*') 15 + ->excludePath('*/docs/*') 16 + ->withSuffix('js') 17 + ->find(); 18 + 19 + foreach ($files as $file) { 20 + $data = Filesystem::readFile($phorge_root.$webroot.$file); 21 + $linter->addData( 22 + $webroot.$file, 23 + $data); 24 + } 25 + 26 + return $linter; 27 + } 28 + 29 + public function testLinter() { 30 + $this->executeTestsInDirectory(__DIR__.'/javelin/'); 31 + } 32 + 33 + }
+22
src/infrastructure/lint/linter/__tests__/javelin/missing-dependency.lint-test
··· 1 + /** 2 + * @requires javelin-install 3 + * @provides javelin-test 4 + * 5 + * @javelin-installs JX.Test 6 + * 7 + * @javelin 8 + */ 9 + 10 + JX.install('Test', { 11 + 12 + statics : { 13 + 14 + test: function (wild) { 15 + alert(JX.JSON(wild)); 16 + } 17 + 18 + } 19 + 20 + }); 21 + ~~~~~~~~~~ 22 + error:15:0:JAVELIN2
+23
src/infrastructure/lint/linter/__tests__/javelin/private-access.lint-test
··· 1 + /** 2 + * @requires javelin-install 3 + * javelin-history 4 + * @provides javelin-test 5 + * 6 + * @javelin-installs JX.Test 7 + * 8 + * @javelin 9 + */ 10 + 11 + JX.install('Test', { 12 + 13 + statics : { 14 + 15 + test: function (wild) { 16 + JX.History._fire('/', wild); 17 + } 18 + 19 + } 20 + 21 + }); 22 + ~~~~~~~~~~ 23 + error:16:0:JAVELIN1
+13
src/infrastructure/lint/linter/__tests__/javelin/undocumented-install.lint-test
··· 1 + /** 2 + * @requires javelin-install 3 + * @provides javelin-test 4 + * 5 + * @javelin-installs JX.Test 6 + * 7 + * @javelin 8 + */ 9 + 10 + JX.install('Test', {}); 11 + JX.install('Test2', {}); 12 + ~~~~~~~~~~ 13 + error:11:0:JAVELIN6
+13
src/infrastructure/lint/linter/__tests__/javelin/uninstalled-documentation.lint-test
··· 1 + /** 2 + * @requires javelin-install 3 + * @provides javelin-test 4 + * 5 + * @javelin-installs JX.Test 6 + * @javelin-installs JX.Test2 7 + * 8 + * @javelin 9 + */ 10 + 11 + JX.install('Test', {}); 12 + ~~~~~~~~~~ 13 + error:6:0:JAVELIN7
+13
src/infrastructure/lint/linter/__tests__/javelin/unknown-dependency.lint-test
··· 1 + /** 2 + * @requires javelin-install 3 + * javelin-does-not-exist 4 + * @provides javelin-test 5 + * 6 + * @javelin-installs JX.Test 7 + * 8 + * @javelin 9 + */ 10 + 11 + JX.install('Test', {}); 12 + ~~~~~~~~~~ 13 + error:1:0:JAVELIN4
+13
src/infrastructure/lint/linter/__tests__/javelin/unnecessary-dependency.lint-test
··· 1 + /** 2 + * @requires javelin-install 3 + * javelin-workflow 4 + * @provides javelin-test 5 + * 6 + * @javelin-installs JX.Test 7 + * 8 + * @javelin 9 + */ 10 + 11 + JX.install('Test', {}); 12 + ~~~~~~~~~~ 13 + error:1:0:JAVELIN3
+44
src/infrastructure/lint/linter/__tests__/map.php
··· 1 + <?php 2 + 3 + /** 4 + * This file is automatically generated. Use 'bin/celerity map' to rebuild it. 5 + * 6 + * @generated 7 + */ 8 + return array( 9 + 'names' => array( 10 + 'missing-dependency.lint-test' => '3f966f42', 11 + 'private-access.lint-test' => 'fa831308', 12 + 'undocumented-install.lint-test' => 'e575f333', 13 + 'uninstalled-documentation.lint-test' => '9b61fd26', 14 + 'unknown-dependency.lint-test' => 'abc533df', 15 + 'unnecessary-dependency.lint-test' => '1608e0c1', 16 + ), 17 + 'symbols' => array( 18 + 'javelin-test' => 'e575f333', 19 + ), 20 + 'requires' => array( 21 + '1608e0c1' => array( 22 + 'javelin-install', 23 + 'javelin-workflow', 24 + ), 25 + '3f966f42' => array( 26 + 'javelin-install', 27 + ), 28 + '9b61fd26' => array( 29 + 'javelin-install', 30 + ), 31 + 'abc533df' => array( 32 + 'javelin-install', 33 + 'javelin-does-not-exist', 34 + ), 35 + 'e575f333' => array( 36 + 'javelin-install', 37 + ), 38 + 'fa831308' => array( 39 + 'javelin-install', 40 + 'javelin-history', 41 + ), 42 + ), 43 + 'packages' => array(), 44 + );
+9
support/peast/build-peast.php
··· 1 + #!/usr/bin/env php 2 + <?php 3 + 4 + $root = dirname(dirname(dirname(__FILE__))); 5 + require_once $root.'/scripts/init/init-script.php'; 6 + 7 + JavelinPeastLibrary::build(); 8 + 9 + echo pht('Build successful!')."\n";
+2
webroot/rsrc/externals/d3/d3.min.js
··· 1 1 /** 2 2 * @provides d3 3 + * 4 + * @javelin-installs d3 3 5 * @do-not-minify 4 6 */ 5 7 // https://d3js.org v6.7.0 Copyright 2021 Mike Bostock
+3
webroot/rsrc/externals/javelin/core/Event.js
··· 1 1 /** 2 2 * @requires javelin-install 3 3 * @provides javelin-event 4 + * 5 + * @javelin-installs JX.Event 6 + * 4 7 * @javelin 5 8 */ 6 9
+8 -1
webroot/rsrc/externals/javelin/core/Stratcom.js
··· 1 1 /** 2 - * @requires javelin-install javelin-event javelin-util javelin-magical-init 2 + * @requires javelin-install 3 + * javelin-event 4 + * javelin-util 5 + * javelin-magical-init 6 + * javelin-behavior 3 7 * @provides javelin-stratcom 8 + * 9 + * @javelin-installs JX.Stratcom 10 + * 4 11 * @javelin 5 12 */ 6 13
+4 -2
webroot/rsrc/externals/javelin/core/init.js
··· 59 59 60 60 var ii; 61 61 var Stratcom = JX['Stratcom']; 62 + var JSON = JX['JSON']; 63 + var DOM = JX['DOM']; 62 64 63 65 if (!loaded && what.type == 'domready') { 64 66 var initializers = []; 65 67 66 - var tags = JX.DOM.scry(document.body, 'data'); 68 + var tags = DOM.scry(document.body, 'data'); 67 69 for (ii = 0; ii < tags.length; ii++) { 68 70 69 71 // Ignore tags which are not immediate children of the document ··· 76 78 77 79 var tag_kind = tags[ii].getAttribute('data-javelin-init-kind'); 78 80 var tag_data = tags[ii].getAttribute('data-javelin-init-data'); 79 - tag_data = JX.JSON.parse(tag_data); 81 + tag_data = JSON.parse(tag_data); 80 82 81 83 initializers.push({kind: tag_kind, data: tag_data}); 82 84 }
+2 -1
webroot/rsrc/externals/javelin/core/util.js
··· 11 11 * @javelin-installs JX.bind 12 12 * @javelin-installs JX.bag 13 13 * @javelin-installs JX.keys 14 + * @javelin-installs JX.id 14 15 * @javelin-installs JX.log 15 - * @javelin-installs JX.id 16 + * @javelin-installs JX.sprintf 16 17 * @javelin-installs JX.now 17 18 * 18 19 * @javelin
+4 -1
webroot/rsrc/externals/javelin/ext/fx/Color.js
··· 1 1 /** 2 + * @requires javelin-install 2 3 * @provides javelin-color 3 - * @requires javelin-install 4 + * 5 + * @javelin-installs JX.Color 6 + * 4 7 * @javelin 5 8 */ 6 9
+6 -1
webroot/rsrc/externals/javelin/ext/fx/FX.js
··· 1 1 /** 2 + * @requires javelin-color 3 + * javelin-install 4 + * javelin-util 2 5 * @provides javelin-fx 3 - * @requires javelin-color javelin-install javelin-util 6 + * 7 + * @javelin-installs JX.FX 8 + * 4 9 * @javelin 5 10 * 6 11 * Based on moo.fx (moofx.mad4milk.net).
+4 -1
webroot/rsrc/externals/javelin/ext/reactor/core/DynVal.js
··· 1 1 /** 2 - * @provides javelin-dynval 3 2 * @requires javelin-install 4 3 * javelin-reactornode 5 4 * javelin-util 6 5 * javelin-reactor 6 + * @provides javelin-dynval 7 + * 8 + * @javelin-installs JX.DynVal 9 + * 7 10 * @javelin 8 11 */ 9 12
+4 -1
webroot/rsrc/externals/javelin/ext/reactor/core/Reactor.js
··· 1 1 /** 2 - * @provides javelin-reactor 3 2 * @requires javelin-install 4 3 * javelin-util 4 + * @provides javelin-reactor 5 + * 6 + * @javelin-installs JX.Reactor 7 + * 5 8 * @javelin 6 9 */ 7 10
+4 -1
webroot/rsrc/externals/javelin/ext/reactor/core/ReactorNode.js
··· 1 1 /** 2 - * @provides javelin-reactornode 3 2 * @requires javelin-install 4 3 * javelin-reactor 5 4 * javelin-util 6 5 * javelin-reactor-node-calmer 6 + * @provides javelin-reactornode 7 + * 8 + * @javelin-installs JX.ReactorNode 9 + * 7 10 * @javelin 8 11 */ 9 12
+4 -1
webroot/rsrc/externals/javelin/ext/reactor/core/ReactorNodeCalmer.js
··· 1 1 /** 2 - * @provides javelin-reactor-node-calmer 3 2 * @requires javelin-install 4 3 * javelin-reactor 5 4 * javelin-util 5 + * @provides javelin-reactor-node-calmer 6 + * 7 + * @javelin-installs JX.ReactorNodeCalmer 8 + * 6 9 * @javelin 7 10 */ 8 11
+4 -1
webroot/rsrc/externals/javelin/ext/reactor/dom/RDOM.js
··· 1 1 /** 2 2 * Javelin Reactive functions to work with the DOM. 3 - * @provides javelin-reactor-dom 4 3 * @requires javelin-dom 5 4 * javelin-dynval 6 5 * javelin-reactor 7 6 * javelin-reactornode 8 7 * javelin-install 9 8 * javelin-util 9 + * @provides javelin-reactor-dom 10 + * 11 + * @javelin-installs JX.RDOM 12 + * 10 13 * @javelin 11 14 */ 12 15 JX.install('RDOM', {
+3 -1
webroot/rsrc/externals/javelin/ext/view/HTMLView.js
··· 3 3 * views works, as driven by validation. I'm not convinced it's actually a good 4 4 * idea to do validation. 5 5 * 6 - * @provides javelin-view-html 7 6 * @requires javelin-install 8 7 * javelin-dom 9 8 * javelin-view-visitor 10 9 * javelin-util 10 + * @provides javelin-view-html 11 + * 12 + * @javelin-installs JX.HTMLView 11 13 */ 12 14 13 15 JX.install('HTMLView', {
+3 -1
webroot/rsrc/externals/javelin/ext/view/View.js
··· 4 4 * to be used either directly or as a building block for a syntactic sugar layer 5 5 * for concise expression of markup patterns. 6 6 * 7 - * @provides javelin-view 8 7 * @requires javelin-install 9 8 * javelin-util 9 + * @provides javelin-view 10 + * 11 + * @javelin-installs JX.View 10 12 */ 11 13 JX.install('View', { 12 14 construct : function(attrs, children) {
+3 -1
webroot/rsrc/externals/javelin/ext/view/ViewInterpreter.js
··· 39 39 * 40 40 * This view interpreter is meant to make it work. 41 41 * 42 - * @provides javelin-view-interpreter 43 42 * @requires javelin-view 44 43 * javelin-install 45 44 * javelin-dom 45 + * @provides javelin-view-interpreter 46 + * 47 + * @javelin-installs JX.ViewInterpreter 46 48 */ 47 49 48 50 JX.install('ViewInterpreter', {
+3 -3
webroot/rsrc/externals/javelin/ext/view/ViewPlaceholder.js
··· 44 44 * trigger_id: id of containing view that must be rendered first 45 45 * } 46 46 * 47 - * @provides javelin-behavior-view-placeholder 48 47 * @requires javelin-behavior 49 48 * javelin-dom 50 49 * javelin-view-renderer 51 50 * javelin-install 51 + * @provides javelin-behavior-view-placeholder 52 + * 53 + * @javelin-installs JX.ViewPlaceholder 52 54 */ 53 - 54 - 55 55 56 56 JX.behavior('view-placeholder', function(config) { 57 57 JX.ViewPlaceholder.register(config.trigger_id, config.id, function() {
+3 -1
webroot/rsrc/externals/javelin/ext/view/ViewRenderer.js
··· 1 1 /** 2 - * @provides javelin-view-renderer 3 2 * @requires javelin-install 4 3 * javelin-util 4 + * @provides javelin-view-renderer 5 + * 6 + * @javelin-installs JX.ViewRenderer 5 7 */ 6 8 7 9 JX.install('ViewRenderer', {
+3 -1
webroot/rsrc/externals/javelin/ext/view/ViewVisitor.js
··· 1 1 /** 2 - * @provides javelin-view-visitor 3 2 * @requires javelin-install 4 3 * javelin-util 4 + * @provides javelin-view-visitor 5 + * 6 + * @javelin-installs JX.ViewVisitor 5 7 * 6 8 * Add new behaviors to views without changing the view classes themselves. 7 9 *
+4 -1
webroot/rsrc/externals/javelin/lib/Cookie.js
··· 1 1 /** 2 - * @provides javelin-cookie 3 2 * @requires javelin-install 4 3 * javelin-util 4 + * @provides javelin-cookie 5 + * 6 + * @javelin-installs JX.Cookie 7 + * 5 8 * @javelin 6 9 */ 7 10
+2
webroot/rsrc/externals/javelin/lib/DOM.js
··· 9 9 * @javelin-installs JX.$ 10 10 * @javelin-installs JX.$N 11 11 * @javelin-installs JX.$H 12 + * @javelin-installs JX.HTML 13 + * @javelin-installs JX.DOM 12 14 * 13 15 * @javelin 14 16 */
+3
webroot/rsrc/externals/javelin/lib/History.js
··· 4 4 * javelin-uri 5 5 * javelin-util 6 6 * @provides javelin-history 7 + * 8 + * @javelin-installs JX.History 9 + * 7 10 * @javelin 8 11 */ 9 12
+3
webroot/rsrc/externals/javelin/lib/JSON.js
··· 3 3 * 4 4 * @requires javelin-install 5 5 * @provides javelin-json 6 + * 7 + * @javelin-installs JX.JSON 8 + * 6 9 * @javelin 7 10 */ 8 11
+6
webroot/rsrc/externals/javelin/lib/Leader.js
··· 1 1 /** 2 2 * @requires javelin-install 3 + * javelin-json 4 + * javelin-stratcom 5 + * javelin-util 3 6 * @provides javelin-leader 7 + * 8 + * @javelin-installs JX.Leader 9 + * 4 10 * @javelin 5 11 */ 6 12
+3
webroot/rsrc/externals/javelin/lib/Mask.js
··· 2 2 * @requires javelin-install 3 3 * javelin-dom 4 4 * @provides javelin-mask 5 + * 6 + * @javelin-installs JX.Mask 7 + * 5 8 * @javelin 6 9 */ 7 10
+9
webroot/rsrc/externals/javelin/lib/Quicksand.js
··· 1 1 /** 2 2 * @requires javelin-install 3 + * javelin-dom 4 + * javelin-history 5 + * javelin-stratcom 6 + * javelin-uri 7 + * javelin-util 8 + * javelin-workflow 3 9 * @provides javelin-quicksand 10 + * 11 + * @javelin-installs JX.Quicksand 12 + * 4 13 * @javelin 5 14 */ 6 15
+3
webroot/rsrc/externals/javelin/lib/Request.js
··· 8 8 * javelin-resource 9 9 * javelin-routable 10 10 * @provides javelin-request 11 + * 12 + * @javelin-installs JX.Request 13 + * 11 14 * @javelin 12 15 */ 13 16
+3 -1
webroot/rsrc/externals/javelin/lib/Resource.js
··· 1 1 /** 2 - * @provides javelin-resource 3 2 * @requires javelin-util 4 3 * javelin-uri 5 4 * javelin-install 5 + * @provides javelin-resource 6 + * 7 + * @javelin-installs JX.Resource 6 8 * 7 9 * @javelin 8 10 */
+4 -1
webroot/rsrc/externals/javelin/lib/Routable.js
··· 1 1 /** 2 + * @requires javelin-install 2 3 * @provides javelin-routable 3 - * @requires javelin-install 4 + * 5 + * @javelin-installs JX.Routable 6 + * 4 7 * @javelin 5 8 */ 6 9
+4 -1
webroot/rsrc/externals/javelin/lib/Router.js
··· 1 1 /** 2 - * @provides javelin-router 3 2 * @requires javelin-install 4 3 * javelin-util 4 + * @provides javelin-router 5 + * 6 + * @javelin-installs JX.Router 7 + * 5 8 * @javelin 6 9 */ 7 10
+6 -1
webroot/rsrc/externals/javelin/lib/Scrollbar.js
··· 1 1 /** 2 - * @provides javelin-scrollbar 3 2 * @requires javelin-install 4 3 * javelin-dom 4 + * javelin-magical-init 5 5 * javelin-stratcom 6 + * javelin-util 6 7 * javelin-vector 8 + * @provides javelin-scrollbar 9 + * 10 + * @javelin-installs JX.Scrollbar 11 + * 7 12 * @javelin 8 13 */ 9 14
+5
webroot/rsrc/externals/javelin/lib/Sound.js
··· 1 1 /** 2 2 * @requires javelin-install 3 + * javelin-util 4 + * javelin-dom 3 5 * @provides javelin-sound 6 + * 7 + * @javelin-installs JX.Sound 8 + * 4 9 * @javelin 5 10 */ 6 11
+2 -1
webroot/rsrc/externals/javelin/lib/URI.js
··· 1 1 /** 2 - * @provides javelin-uri 3 2 * @requires javelin-install 4 3 * javelin-util 5 4 * javelin-stratcom 5 + * @provides javelin-uri 6 6 * 7 7 * @javelin-installs JX.$U 8 + * @javelin-installs JX.URI 8 9 * 9 10 * @javelin 10 11 */
+1
webroot/rsrc/externals/javelin/lib/Vector.js
··· 4 4 * @provides javelin-vector 5 5 * 6 6 * @javelin-installs JX.$V 7 + * @javelin-installs JX.Vector 7 8 * 8 9 * @javelin 9 10 */
+4
webroot/rsrc/externals/javelin/lib/WebSocket.js
··· 1 1 /** 2 2 * @requires javelin-install 3 + * javelin-util 3 4 * @provides javelin-websocket 5 + * 6 + * @javelin-installs JX.WebSocket 7 + * 4 8 * @javelin 5 9 */ 6 10
+3
webroot/rsrc/externals/javelin/lib/Workflow.js
··· 9 9 * javelin-uri 10 10 * javelin-routable 11 11 * @provides javelin-workflow 12 + * 13 + * @javelin-installs JX.Workflow 14 + * 12 15 * @javelin 13 16 */ 14 17
+4
webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js
··· 3 3 * javelin-util 4 4 * javelin-stratcom 5 5 * javelin-install 6 + * javelin-workflow 6 7 * @provides javelin-tokenizer 8 + * 9 + * @javelin-installs JX.Tokenizer 10 + * 7 11 * @javelin 8 12 */ 9 13
+3
webroot/rsrc/externals/javelin/lib/control/typeahead/Typeahead.js
··· 4 4 * javelin-vector 5 5 * javelin-util 6 6 * @provides javelin-typeahead 7 + * 8 + * @javelin-installs JX.Typeahead 9 + * 7 10 * @javelin 8 11 */ 9 12
+3
webroot/rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js
··· 1 1 /** 2 2 * @requires javelin-install 3 3 * @provides javelin-typeahead-normalizer 4 + * 5 + * @javelin-installs JX.TypeaheadNormalizer 6 + * 4 7 * @javelin 5 8 */ 6 9
+3
webroot/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js
··· 3 3 * javelin-typeahead-source 4 4 * javelin-util 5 5 * @provides javelin-typeahead-composite-source 6 + * 7 + * @javelin-installs JX.TypeaheadCompositeSource 8 + * 6 9 * @javelin 7 10 */ 8 11
+3
webroot/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js
··· 4 4 * javelin-request 5 5 * javelin-typeahead-source 6 6 * @provides javelin-typeahead-ondemand-source 7 + * 8 + * @javelin-installs JX.TypeaheadOnDemandSource 9 + * 7 10 * @javelin 8 11 */ 9 12
+3
webroot/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js
··· 4 4 * javelin-request 5 5 * javelin-typeahead-source 6 6 * @provides javelin-typeahead-preloaded-source 7 + * 8 + * @javelin-installs JX.TypeaheadPreloadedSource 9 + * 7 10 * @javelin 8 11 */ 9 12
+3
webroot/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js
··· 4 4 * javelin-dom 5 5 * javelin-typeahead-normalizer 6 6 * @provides javelin-typeahead-source 7 + * 8 + * @javelin-installs JX.TypeaheadSource 9 + * 7 10 * @javelin 8 11 */ 9 12
+3
webroot/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js
··· 2 2 * @requires javelin-install 3 3 * javelin-typeahead-source 4 4 * @provides javelin-typeahead-static-source 5 + * 6 + * @javelin-installs JX.TypeaheadStaticSource 7 + * 5 8 * @javelin 6 9 */ 7 10
+3 -1
webroot/rsrc/js/application/aphlict/Aphlict.js
··· 1 1 /** 2 - * @provides javelin-aphlict 3 2 * @requires javelin-install 4 3 * javelin-util 5 4 * javelin-websocket 6 5 * javelin-leader 7 6 * javelin-json 7 + * @provides javelin-aphlict 8 + * 9 + * @javelin-installs JX.Aphlict 8 10 */ 9 11 10 12 /**
+1 -3
webroot/rsrc/js/application/aphlict/behavior-aphlict-listen.js
··· 1 1 /** 2 - * @provides javelin-behavior-aphlict-listen 3 2 * @requires javelin-behavior 4 3 * javelin-aphlict 5 4 * javelin-stratcom 6 5 * javelin-request 7 6 * javelin-uri 8 7 * javelin-dom 9 - * javelin-json 10 8 * javelin-router 11 - * javelin-util 12 9 * javelin-leader 13 10 * javelin-sound 14 11 * phabricator-notification 12 + * @provides javelin-behavior-aphlict-listen 15 13 */ 16 14 17 15 JX.behavior('aphlict-listen', function(config) {
+3 -1
webroot/rsrc/js/application/aphlict/behavior-aphlict-status.js
··· 1 1 /** 2 - * @provides javelin-behavior-aphlict-status 3 2 * @requires javelin-behavior 4 3 * javelin-aphlict 5 4 * phabricator-phtize 6 5 * javelin-dom 6 + * phuix-icon-view 7 + * @provides javelin-behavior-aphlict-status 8 + * 7 9 * @javelin 8 10 */ 9 11
+1 -2
webroot/rsrc/js/application/aphlict/behavior-desktop-notifications-control.js
··· 1 1 /** 2 - * @provides javelin-behavior-desktop-notifications-control 3 2 * @requires javelin-behavior 4 3 * javelin-stratcom 5 4 * javelin-dom 6 - * javelin-uri 7 5 * phabricator-notification 6 + * @provides javelin-behavior-desktop-notifications-control 8 7 */ 9 8 10 9 JX.behavior('desktop-notifications-control', function(config, statics) {
+7 -1
webroot/rsrc/js/application/calendar/behavior-day-view.js
··· 1 1 /** 2 + * @requires javelin-behavior 3 + * javelin-dom 4 + * javelin-stratcom 5 + * javelin-uri 6 + * javelin-vector 7 + * javelin-workflow 8 + * phuix-icon-view 2 9 * @provides javelin-behavior-day-view 3 - * @requires phuix-icon-view 4 10 */ 5 11 JX.behavior('day-view', function(config) { 6 12
+2
webroot/rsrc/js/application/calendar/behavior-event-all-day.js
··· 1 1 /** 2 + * @requires javelin-behavior 3 + * javelin-dom 2 4 * @provides javelin-behavior-event-all-day 3 5 */ 4 6
+5
webroot/rsrc/js/application/calendar/behavior-month-view.js
··· 1 1 /** 2 + * @requires javelin-behavior 3 + * javelin-dom 4 + * javelin-magical-init 5 + * javelin-stratcom 6 + * javelin-uri 2 7 * @provides javelin-behavior-calendar-month-view 3 8 */ 4 9 JX.behavior('calendar-month-view', function() {
+5 -4
webroot/rsrc/js/application/conpherence/ConpherenceThreadManager.js
··· 1 1 /** 2 - * @provides conpherence-thread-manager 3 2 * @requires javelin-dom 4 3 * javelin-util 5 4 * javelin-stratcom 6 5 * javelin-install 7 6 * javelin-aphlict 8 7 * javelin-workflow 9 - * javelin-router 10 - * javelin-behavior-device 11 - * javelin-vector 8 + * javelin-leader 9 + * phabricator-shaped-request 10 + * @provides conpherence-thread-manager 11 + * 12 + * @javelin-installs JX.ConpherenceThreadManager 12 13 */ 13 14 JX.install('ConpherenceThreadManager', { 14 15
+3 -3
webroot/rsrc/js/application/conpherence/behavior-conpherence-search.js
··· 1 1 /** 2 - * @provides javelin-behavior-conpherence-search 3 2 * @requires javelin-behavior 4 3 * javelin-dom 5 - * javelin-util 6 - * javelin-workflow 4 + * javelin-request 7 5 * javelin-stratcom 6 + * javelin-uri 7 + * @provides javelin-behavior-conpherence-search 8 8 */ 9 9 10 10 JX.behavior('conpherence-search', function() {
+4 -3
webroot/rsrc/js/application/conpherence/behavior-durable-column.js
··· 1 1 /** 2 - * @provides javelin-behavior-durable-column 3 2 * @requires javelin-behavior 4 3 * javelin-dom 5 4 * javelin-stratcom 6 - * javelin-behavior-device 7 5 * javelin-scrollbar 8 6 * javelin-quicksand 9 - * phabricator-keyboard-shortcut 7 + * javelin-uri 8 + * javelin-request 10 9 * conpherence-thread-manager 10 + * phabricator-title 11 + * @provides javelin-behavior-durable-column 11 12 */ 12 13 13 14 JX.behavior('durable-column', function(config, statics) {
-2
webroot/rsrc/js/application/conpherence/behavior-menu.js
··· 7 7 * javelin-workflow 8 8 * javelin-behavior-device 9 9 * javelin-history 10 - * javelin-vector 11 10 * javelin-scrollbar 12 11 * phabricator-title 13 - * phabricator-shaped-request 14 12 * conpherence-thread-manager 15 13 */ 16 14
+1
webroot/rsrc/js/application/conpherence/behavior-participant-pane.js
··· 4 4 * javelin-stratcom 5 5 * javelin-workflow 6 6 * javelin-util 7 + * javelin-uri 7 8 * phabricator-notification 8 9 * conpherence-thread-manager 9 10 * @provides javelin-behavior-conpherence-participant-pane
+1 -4
webroot/rsrc/js/application/conpherence/behavior-pontificate.js
··· 1 1 /** 2 - * @provides javelin-behavior-conpherence-pontificate 3 2 * @requires javelin-behavior 4 - * javelin-dom 5 - * javelin-util 6 - * javelin-workflow 7 3 * javelin-stratcom 8 4 * conpherence-thread-manager 5 + * @provides javelin-behavior-conpherence-pontificate 9 6 */ 10 7 11 8 JX.behavior('conpherence-pontificate', function() {
+2 -2
webroot/rsrc/js/application/conpherence/behavior-toggle-widget.js
··· 2 2 * @provides javelin-behavior-toggle-widget 3 3 * @requires javelin-behavior 4 4 * javelin-dom 5 - * javelin-util 6 - * javelin-workflow 5 + * javelin-request 7 6 * javelin-stratcom 7 + * javelin-behavior-device 8 8 */ 9 9 10 10 JX.behavior('toggle-widget', function(config) {
+5 -2
webroot/rsrc/js/application/diff/DiffChangeset.js
··· 1 1 /** 2 - * @provides phabricator-diff-changeset 3 2 * @requires javelin-dom 4 3 * javelin-util 5 4 * javelin-stratcom ··· 11 10 * phabricator-diff-inline 12 11 * phabricator-diff-path-view 13 12 * phuix-button-view 14 - * javelin-external-editor-link-engine 13 + * javelin-magical-init 14 + * @provides phabricator-diff-changeset 15 + * 16 + * @javelin-installs JX.DiffChangeset 17 + * 15 18 * @javelin 16 19 */ 17 20
+20 -1
webroot/rsrc/js/application/diff/DiffChangesetList.js
··· 1 1 /** 2 - * @provides phabricator-diff-changeset-list 3 2 * @requires javelin-install 3 + * javelin-behavior-device 4 + * javelin-dom 5 + * javelin-external-editor-link-engine 6 + * javelin-magical-init 7 + * javelin-stratcom 8 + * javelin-uri 9 + * javelin-util 10 + * javelin-vector 11 + * javelin-workflow 12 + * phuix-action-view 13 + * phuix-action-list-view 4 14 * phuix-button-view 15 + * phuix-dropdown-menu 16 + * phuix-icon-view 17 + * phabricator-diff-changeset 5 18 * phabricator-diff-tree-view 19 + * phabricator-keyboard-shortcut 20 + * phabricator-notification 21 + * @provides phabricator-diff-changeset-list 22 + * 23 + * @javelin-installs JX.DiffChangesetList 24 + * 6 25 * @javelin 7 26 */ 8 27
+15 -1
webroot/rsrc/js/application/diff/DiffInline.js
··· 1 1 /** 2 - * @provides phabricator-diff-inline 3 2 * @requires javelin-dom 3 + * javelin-install 4 + * javelin-request 5 + * javelin-stratcom 6 + * javelin-util 7 + * javelin-workflow 4 8 * phabricator-diff-inline-content-state 9 + * phabricator-shaped-request 10 + * phabricator-textareautils 11 + * phuix-action-view 12 + * phuix-action-list-view 13 + * phuix-button-view 14 + * phuix-dropdown-menu 15 + * @provides phabricator-diff-inline 16 + * 17 + * @javelin-installs JX.DiffInline 18 + * 5 19 * @javelin 6 20 */ 7 21
+5 -1
webroot/rsrc/js/application/diff/DiffInlineContentState.js
··· 1 1 /** 2 + * @requires javelin-dom 3 + * javelin-install 2 4 * @provides phabricator-diff-inline-content-state 3 - * @requires javelin-dom 5 + * 6 + * @javelin-installs JX.DiffInlineContentState 7 + * 4 8 * @javelin 5 9 */ 6 10
+7 -1
webroot/rsrc/js/application/diff/DiffPathView.js
··· 1 1 /** 2 - * @provides phabricator-diff-path-view 3 2 * @requires javelin-dom 3 + * javelin-install 4 + * javelin-util 5 + * phuix-icon-view 6 + * @provides phabricator-diff-path-view 7 + * 8 + * @javelin-installs JX.DiffPathView 9 + * 4 10 * @javelin 5 11 */ 6 12
+6 -1
webroot/rsrc/js/application/diff/DiffTreeView.js
··· 1 1 /** 2 + * @requires javelin-dom 3 + * javelin-install 4 + * phabricator-diff-path-view 2 5 * @provides phabricator-diff-tree-view 3 - * @requires javelin-dom 6 + * 7 + * @javelin-installs JX.DiffTreeView 8 + * 4 9 * @javelin 5 10 */ 6 11
+4 -2
webroot/rsrc/js/application/differential/behavior-populate.js
··· 1 1 /** 2 - * @provides javelin-behavior-differential-populate 3 2 * @requires javelin-behavior 4 3 * javelin-dom 4 + * javelin-quicksand 5 5 * javelin-stratcom 6 6 * phabricator-tooltip 7 + * phabricator-phtize 7 8 * phabricator-diff-changeset-list 8 - * phabricator-diff-changeset 9 9 * phuix-formation-view 10 + * @provides javelin-behavior-differential-populate 11 + * 10 12 * @javelin 11 13 */ 12 14
+4 -1
webroot/rsrc/js/application/diffusion/DiffusionLocateFileSource.js
··· 1 1 /** 2 - * @provides javelin-diffusion-locate-file-source 3 2 * @requires javelin-install 4 3 * javelin-dom 5 4 * javelin-typeahead-preloaded-source 6 5 * javelin-util 6 + * @provides javelin-diffusion-locate-file-source 7 + * 8 + * @javelin-installs JX.DiffusionLocateFileSource 9 + * 7 10 * @javelin 8 11 */ 9 12
+4 -1
webroot/rsrc/js/application/diffusion/ExternalEditorLinkEngine.js
··· 1 1 /** 2 + * @requires javelin-install 2 3 * @provides javelin-external-editor-link-engine 3 - * @requires javelin-install 4 + * 5 + * @javelin-installs JX.ExternalEditorLinkEngine 6 + * 4 7 * @javelin 5 8 */ 6 9
+2 -1
webroot/rsrc/js/application/diffusion/behavior-commit-graph.js
··· 1 1 /** 2 - * @provides javelin-behavior-diffusion-commit-graph 3 2 * @requires javelin-behavior 4 3 * javelin-dom 5 4 * javelin-stratcom 5 + * javelin-vector 6 + * @provides javelin-behavior-diffusion-commit-graph 6 7 */ 7 8 8 9 JX.behavior('diffusion-commit-graph', function(config) {
+10 -3
webroot/rsrc/js/application/fact/Chart.js
··· 1 1 /** 2 - * @provides javelin-chart 3 - * @requires phui-chart-css 4 - * d3 2 + * @requires javelin-install 3 + * javelin-behavior-device 5 4 * javelin-chart-curtain-view 6 5 * javelin-chart-function-label 6 + * javelin-dom 7 + * javelin-stratcom 8 + * javelin-util 9 + * javelin-vector 10 + * phui-chart-css 11 + * @provides javelin-chart 12 + * 13 + * @javelin-installs JX.Chart 7 14 */ 8 15 JX.install('Chart', { 9 16
+5
webroot/rsrc/js/application/fact/ChartCurtainView.js
··· 1 1 /** 2 + * @requires javelin-install 3 + * javelin-dom 4 + * phuix-icon-view 2 5 * @provides javelin-chart-curtain-view 6 + * 7 + * @javelin-installs JX.ChartCurtainView 3 8 */ 4 9 JX.install('ChartCurtainView', { 5 10
+3
webroot/rsrc/js/application/fact/ChartFunctionLabel.js
··· 1 1 /** 2 + * @requires javelin-install 2 3 * @provides javelin-chart-function-label 4 + * 5 + * @javelin-installs JX.ChartFunctionLabel 3 6 */ 4 7 JX.install('ChartFunctionLabel', { 5 8
+10 -1
webroot/rsrc/js/application/files/behavior-document-engine.js
··· 1 1 /** 2 - * @provides javelin-behavior-document-engine 3 2 * @requires javelin-behavior 4 3 * javelin-dom 4 + * javelin-history 5 + * javelin-request 5 6 * javelin-stratcom 7 + * javelin-uri 8 + * javelin-util 9 + * javelin-workflow 10 + * phuix-action-list-view 11 + * phuix-action-view 12 + * phuix-dropdown-menu 13 + * phabricator-tooltip 14 + * @provides javelin-behavior-document-engine 6 15 */ 7 16 8 17 JX.behavior('document-engine', function(config, statics) {
+6 -1
webroot/rsrc/js/application/harbormaster/behavior-harbormaster-log.js
··· 1 1 /** 2 + * @requires javelin-behavior 3 + * javelin-dom 4 + * javelin-stratcom 5 + * javelin-vector 6 + * javelin-uri 7 + * javelin-request 2 8 * @provides javelin-behavior-harbormaster-log 3 - * @requires javelin-behavior 4 9 */ 5 10 6 11 JX.behavior('harbormaster-log', function(config) {
+3
webroot/rsrc/js/application/herald/HeraldRuleEditor.js
··· 7 7 * javelin-json 8 8 * phabricator-prefab 9 9 * @provides herald-rule-editor 10 + * 11 + * @javelin-installs JX.HeraldRuleEditor 12 + * 10 13 * @javelin 11 14 */ 12 15
+3
webroot/rsrc/js/application/herald/PathTypeahead.js
··· 6 6 * javelin-typeahead-ondemand-source 7 7 * javelin-util 8 8 * @provides path-typeahead 9 + * 10 + * @javelin-installs JX.PathTypeahead 11 + * 9 12 * @javelin 10 13 */ 11 14
+2 -1
webroot/rsrc/js/application/maniphest/behavior-line-chart.js
··· 1 1 /** 2 - * @provides javelin-behavior-line-chart 3 2 * @requires javelin-behavior 4 3 * javelin-dom 5 4 * javelin-chart 5 + * javelin-request 6 + * @provides javelin-behavior-line-chart 6 7 */ 7 8 8 9 JX.behavior('line-chart', function(config) {
+3
webroot/rsrc/js/application/owners/OwnersPathEditor.js
··· 7 7 * phabricator-prefab 8 8 * phuix-form-control-view 9 9 * @provides owners-path-editor 10 + * 11 + * @javelin-installs JX.OwnersPathEditor 12 + * 10 13 * @javelin 11 14 */ 12 15
+2 -1
webroot/rsrc/js/application/pholio/behavior-pholio-mock-edit.js
··· 1 1 /** 2 - * @provides javelin-behavior-pholio-mock-edit 3 2 * @requires javelin-behavior 4 3 * javelin-stratcom 5 4 * javelin-dom ··· 8 7 * phabricator-phtize 9 8 * phabricator-drag-and-drop-file-upload 10 9 * phabricator-draggable-list 10 + * phabricator-file-upload 11 + * @provides javelin-behavior-pholio-mock-edit 11 12 */ 12 13 JX.behavior('pholio-mock-edit', function(config, statics) { 13 14 var pht = JX.phtize(config.pht);
+2 -1
webroot/rsrc/js/application/pholio/behavior-pholio-mock-view.js
··· 1 1 /** 2 - * @provides javelin-behavior-pholio-mock-view 3 2 * @requires javelin-behavior 4 3 * javelin-util 5 4 * javelin-stratcom ··· 11 10 * javelin-workflow 12 11 * javelin-mask 13 12 * javelin-behavior-device 13 + * javelin-quicksand 14 14 * phabricator-keyboard-shortcut 15 + * @provides javelin-behavior-pholio-mock-view 15 16 */ 16 17 JX.behavior('pholio-mock-view', function(config, statics) { 17 18 var is_dragging = false;
+4 -1
webroot/rsrc/js/application/phortune/phortune-credit-card-form.js
··· 1 1 /** 2 - * @provides phortune-credit-card-form 3 2 * @requires javelin-install 4 3 * javelin-dom 5 4 * javelin-json 6 5 * javelin-workflow 7 6 * javelin-util 7 + * @provides phortune-credit-card-form 8 + * 9 + * @javelin-installs JX.PhortuneCreditCardForm 10 + * 8 11 * @javelin 9 12 */ 10 13
+3 -1
webroot/rsrc/js/application/policy/behavior-policy-control.js
··· 1 1 /** 2 - * @provides javelin-behavior-policy-control 3 2 * @requires javelin-behavior 4 3 * javelin-dom 4 + * javelin-uri 5 5 * javelin-util 6 6 * phuix-dropdown-menu 7 7 * phuix-action-list-view 8 8 * phuix-action-view 9 9 * javelin-workflow 10 10 * phuix-icon-view 11 + * @provides javelin-behavior-policy-control 12 + * 11 13 * @javelin 12 14 */ 13 15 JX.behavior('policy-control', function(config) {
+9 -1
webroot/rsrc/js/application/projects/WorkboardBoard.js
··· 1 1 /** 2 - * @provides javelin-workboard-board 3 2 * @requires javelin-install 4 3 * javelin-dom 5 4 * javelin-util 6 5 * javelin-stratcom 7 6 * javelin-workflow 7 + * javelin-sound 8 + * javelin-json 9 + * javelin-vector 10 + * javelin-request 8 11 * phabricator-draggable-list 9 12 * javelin-workboard-column 10 13 * javelin-workboard-header-template 11 14 * javelin-workboard-card-template 12 15 * javelin-workboard-order-template 16 + * phabricator-keyboard-shortcut 17 + * @provides javelin-workboard-board 18 + * 19 + * @javelin-installs JX.WorkboardBoard 20 + * 13 21 * @javelin 14 22 */ 15 23
+6 -1
webroot/rsrc/js/application/projects/WorkboardCard.js
··· 1 1 /** 2 + * @requires javelin-install 3 + * javelin-dom 4 + * javelin-stratcom 2 5 * @provides javelin-workboard-card 3 - * @requires javelin-install 6 + * 7 + * @javelin-installs JX.WorkboardCard 8 + * 4 9 * @javelin 5 10 */ 6 11
+5 -1
webroot/rsrc/js/application/projects/WorkboardCardTemplate.js
··· 1 1 /** 2 + * @requires javelin-install 3 + * javelin-dom 2 4 * @provides javelin-workboard-card-template 3 - * @requires javelin-install 5 + * 6 + * @javelin-installs JX.WorkboardCardTemplate 7 + * 4 8 * @javelin 5 9 */ 6 10
+7 -1
webroot/rsrc/js/application/projects/WorkboardColumn.js
··· 1 1 /** 2 - * @provides javelin-workboard-column 3 2 * @requires javelin-install 3 + * javelin-dom 4 + * javelin-stratcom 5 + * javelin-util 4 6 * javelin-workboard-card 5 7 * javelin-workboard-header 8 + * @provides javelin-workboard-column 9 + * 10 + * @javelin-installs JX.WorkboardColumn 11 + * 6 12 * @javelin 7 13 */ 8 14
+5 -1
webroot/rsrc/js/application/projects/WorkboardController.js
··· 1 1 /** 2 - * @provides javelin-workboard-controller 3 2 * @requires javelin-install 4 3 * javelin-dom 5 4 * javelin-util ··· 8 7 * javelin-workflow 9 8 * phabricator-drag-and-drop-file-upload 10 9 * javelin-workboard-board 10 + * javelin-behavior-device 11 + * @provides javelin-workboard-controller 12 + * 13 + * @javelin-installs JX.WorkboardController 14 + * 11 15 * @javelin 12 16 */ 13 17
+5 -1
webroot/rsrc/js/application/projects/WorkboardDropEffect.js
··· 1 1 /** 2 - * @provides javelin-workboard-drop-effect 3 2 * @requires javelin-install 4 3 * javelin-dom 4 + * phuix-icon-view 5 + * @provides javelin-workboard-drop-effect 6 + * 7 + * @javelin-installs JX.WorkboardDropEffect 8 + * 5 9 * @javelin 6 10 */ 7 11
+5 -1
webroot/rsrc/js/application/projects/WorkboardHeader.js
··· 1 1 /** 2 + * @requires javelin-install 3 + * javelin-stratcom 2 4 * @provides javelin-workboard-header 3 - * @requires javelin-install 5 + * 6 + * @javelin-installs JX.WorkboardHeader 7 + * 4 8 * @javelin 5 9 */ 6 10
+5 -1
webroot/rsrc/js/application/projects/WorkboardHeaderTemplate.js
··· 1 1 /** 2 + * @requires javelin-install 3 + * javelin-dom 2 4 * @provides javelin-workboard-header-template 3 - * @requires javelin-install 5 + * 6 + * @javelin-installs JX.WorkboardHeaderTemplate 7 + * 4 8 * @javelin 5 9 */ 6 10
+4 -1
webroot/rsrc/js/application/projects/WorkboardOrderTemplate.js
··· 1 1 /** 2 + * @requires javelin-install 2 3 * @provides javelin-workboard-order-template 3 - * @requires javelin-install 4 + * 5 + * @javelin-installs JX.WorkboardOrderTemplate 6 + * 4 7 * @javelin 5 8 */ 6 9
+4 -4
webroot/rsrc/js/application/projects/behavior-project-boards.js
··· 1 1 /** 2 - * @provides javelin-behavior-project-boards 3 2 * @requires javelin-behavior 4 3 * javelin-dom 5 - * javelin-util 6 - * javelin-vector 4 + * javelin-quicksand 5 + * javelin-sound 7 6 * javelin-stratcom 8 - * javelin-workflow 9 7 * javelin-workboard-controller 10 8 * javelin-workboard-drop-effect 9 + * phuix-dropdown-menu 10 + * @provides javelin-behavior-project-boards 11 11 */ 12 12 13 13 JX.behavior('project-boards', function(config, statics) {
+2 -1
webroot/rsrc/js/application/repository/repository-crossreference.js
··· 1 1 /** 2 - * @provides javelin-behavior-repository-crossreference 3 2 * @requires javelin-behavior 4 3 * javelin-dom 5 4 * javelin-stratcom 6 5 * javelin-uri 6 + * javelin-util 7 + * @provides javelin-behavior-repository-crossreference 7 8 */ 8 9 9 10 JX.behavior('repository-crossreference', function(config, statics) {
+8 -4
webroot/rsrc/js/application/transactions/behavior-comment-actions.js
··· 1 1 /** 2 - * @provides javelin-behavior-comment-actions 3 2 * @requires javelin-behavior 4 - * javelin-stratcom 5 - * javelin-workflow 3 + * javelin-behavior-device 6 4 * javelin-dom 5 + * javelin-json 6 + * javelin-request 7 + * javelin-stratcom 8 + * javelin-util 9 + * javelin-vector 7 10 * phuix-form-control-view 8 11 * phuix-icon-view 9 - * javelin-behavior-phabricator-gesture 12 + * phabricator-shaped-request 13 + * @provides javelin-behavior-comment-actions 10 14 */ 11 15 12 16 JX.behavior('comment-actions', function(config) {
+1 -2
webroot/rsrc/js/application/transactions/behavior-reorder-configs.js
··· 1 1 /** 2 - * @provides javelin-behavior-editengine-reorder-configs 3 2 * @requires javelin-behavior 4 3 * javelin-stratcom 5 - * javelin-workflow 6 4 * javelin-dom 7 5 * phabricator-draggable-list 6 + * @provides javelin-behavior-editengine-reorder-configs 8 7 */ 9 8 10 9 JX.behavior('editengine-reorder-configs', function(config) {
+1 -2
webroot/rsrc/js/application/transactions/behavior-reorder-fields.js
··· 1 1 /** 2 - * @provides javelin-behavior-editengine-reorder-fields 3 2 * @requires javelin-behavior 4 3 * javelin-stratcom 5 - * javelin-workflow 6 4 * javelin-dom 7 5 * phabricator-draggable-list 6 + * @provides javelin-behavior-editengine-reorder-fields 8 7 */ 9 8 10 9 JX.behavior('editengine-reorder-fields', function(config) {
+6 -2
webroot/rsrc/js/application/transactions/behavior-show-older-transactions.js
··· 1 1 /** 2 - * @provides javelin-behavior-phabricator-show-older-transactions 3 2 * @requires javelin-behavior 4 3 * javelin-stratcom 5 4 * javelin-dom 6 - * phabricator-busy 5 + * javelin-json 6 + * javelin-router 7 + * javelin-util 8 + * javelin-workflow 9 + * phabricator-keyboard-shortcut 10 + * @provides javelin-behavior-phabricator-show-older-transactions 7 11 */ 8 12 9 13 JX.behavior('phabricator-show-older-transactions', function(config) {
+6
webroot/rsrc/js/application/trigger/TriggerRule.js
··· 1 1 /** 2 2 * @provides trigger-rule 3 + * @requires javelin-install 4 + * javelin-dom 5 + * javelin-util 6 + * 7 + * @javelin-installs JX.TriggerRule 8 + * 3 9 * @javelin 4 10 */ 5 11
+5
webroot/rsrc/js/application/trigger/TriggerRuleControl.js
··· 1 1 /** 2 2 * @requires phuix-form-control-view 3 + * javelin-install 4 + * javelin-util 3 5 * @provides trigger-rule-control 6 + * 7 + * @javelin-installs JX.TriggerRuleControl 8 + * 4 9 * @javelin 5 10 */ 6 11
+7
webroot/rsrc/js/application/trigger/TriggerRuleEditor.js
··· 1 1 /** 2 2 * @requires multirow-row-manager 3 3 * trigger-rule 4 + * javelin-install 5 + * javelin-dom 6 + * javelin-util 7 + * javelin-json 4 8 * @provides trigger-rule-editor 9 + * 10 + * @javelin-installs JX.TriggerRuleEditor 11 + * 5 12 * @javelin 6 13 */ 7 14
+4
webroot/rsrc/js/application/trigger/TriggerRuleType.js
··· 1 1 /** 2 2 * @requires trigger-rule-control 3 + * javelin-install 3 4 * @provides trigger-rule-type 5 + * 6 + * @javelin-installs JX.TriggerRuleType 7 + * 4 8 * @javelin 5 9 */ 6 10
+2
webroot/rsrc/js/application/trigger/trigger-rule-editor.js
··· 1 1 /** 2 2 * @requires javelin-behavior 3 + * javelin-dom 3 4 * trigger-rule-editor 4 5 * trigger-rule 5 6 * trigger-rule-type 6 7 * @provides javelin-behavior-trigger-rule-editor 8 + * 7 9 * @javelin 8 10 */ 9 11
+1 -1
webroot/rsrc/js/application/typeahead/behavior-typeahead-search.js
··· 1 1 /** 2 2 * @provides javelin-behavior-typeahead-search 3 3 * @requires javelin-behavior 4 - * javelin-stratcom 5 4 * javelin-workflow 6 5 * javelin-dom 6 + * javelin-util 7 7 */ 8 8 9 9 JX.behavior('typeahead-search', function(config) {
+3
webroot/rsrc/js/core/Busy.js
··· 3 3 * javelin-dom 4 4 * javelin-fx 5 5 * @provides phabricator-busy 6 + * 7 + * @javelin-installs JX.Busy 8 + * 6 9 * @javelin 7 10 */ 8 11
+5
webroot/rsrc/js/core/DragAndDropFileUpload.js
··· 3 3 * javelin-util 4 4 * javelin-request 5 5 * javelin-dom 6 + * javelin-stratcom 6 7 * javelin-uri 8 + * javelin-workflow 7 9 * phabricator-file-upload 8 10 * @provides phabricator-drag-and-drop-file-upload 11 + * 12 + * @javelin-installs JX.PhabricatorDragAndDropFileUpload 13 + * 9 14 * @javelin 10 15 */ 11 16
+5 -1
webroot/rsrc/js/core/DraggableList.js
··· 1 1 /** 2 - * @provides phabricator-draggable-list 3 2 * @requires javelin-install 4 3 * javelin-dom 5 4 * javelin-stratcom 6 5 * javelin-util 7 6 * javelin-vector 8 7 * javelin-magical-init 8 + * phabricator-tooltip 9 + * @provides phabricator-draggable-list 10 + * 11 + * @javelin-installs JX.DraggableList 12 + * 9 13 * @javelin 10 14 */ 11 15
+3 -1
webroot/rsrc/js/core/Favicon.js
··· 1 1 /** 2 - * @provides phabricator-favicon 3 2 * @requires javelin-install 4 3 * javelin-dom 4 + * @provides phabricator-favicon 5 + * 6 + * @javelin-installs JX.Favicon 5 7 */ 6 8 JX.install('Favicon', { 7 9 statics: {
+3
webroot/rsrc/js/core/FileUpload.js
··· 3 3 * javelin-dom 4 4 * phabricator-notification 5 5 * @provides phabricator-file-upload 6 + * 7 + * @javelin-installs JX.PhabricatorFileUpload 8 + * 6 9 * @javelin 7 10 */ 8 11
+3 -3
webroot/rsrc/js/core/Hovercard.js
··· 1 1 /** 2 2 * @requires javelin-install 3 3 * javelin-dom 4 - * javelin-vector 5 - * javelin-request 6 - * javelin-uri 7 4 * @provides phui-hovercard 5 + * 6 + * @javelin-installs JX.Hovercard 7 + * 8 8 * @javelin 9 9 */ 10 10
+5
webroot/rsrc/js/core/HovercardList.js
··· 4 4 * javelin-vector 5 5 * javelin-request 6 6 * javelin-uri 7 + * javelin-util 8 + * javelin-json 7 9 * phui-hovercard 8 10 * @provides phui-hovercard-list 11 + * 12 + * @javelin-installs JX.HovercardList 13 + * 9 14 * @javelin 10 15 */ 11 16
+4 -1
webroot/rsrc/js/core/KeyboardShortcut.js
··· 1 1 /** 2 - * @provides phabricator-keyboard-shortcut 3 2 * @requires javelin-install 4 3 * javelin-util 5 4 * phabricator-keyboard-shortcut-manager 5 + * @provides phabricator-keyboard-shortcut 6 + * 7 + * @javelin-installs JX.KeyboardShortcut 8 + * 6 9 * @javelin 7 10 */ 8 11
+4 -1
webroot/rsrc/js/core/KeyboardShortcutManager.js
··· 1 1 /** 2 - * @provides phabricator-keyboard-shortcut-manager 3 2 * @requires javelin-install 4 3 * javelin-util 5 4 * javelin-stratcom 6 5 * javelin-dom 7 6 * javelin-vector 7 + * @provides phabricator-keyboard-shortcut-manager 8 + * 9 + * @javelin-installs JX.KeyboardShortcutManager 10 + * 8 11 * @javelin 9 12 */ 10 13
+3
webroot/rsrc/js/core/MultirowRowManager.js
··· 4 4 * javelin-dom 5 5 * javelin-util 6 6 * @provides multirow-row-manager 7 + * 8 + * @javelin-installs JX.MultirowRowManager 9 + * 7 10 * @javelin 8 11 */ 9 12
+4
webroot/rsrc/js/core/Notification.js
··· 3 3 * javelin-dom 4 4 * javelin-stratcom 5 5 * javelin-util 6 + * javelin-uri 6 7 * phabricator-notification-css 7 8 * @provides phabricator-notification 9 + * 10 + * @javelin-installs JX.Notification 11 + * 8 12 * @javelin 9 13 */ 10 14
+5 -2
webroot/rsrc/js/core/Prefab.js
··· 1 1 /** 2 - * @provides phabricator-prefab 3 2 * @requires javelin-install 4 3 * javelin-util 5 4 * javelin-dom 6 5 * javelin-typeahead 7 6 * javelin-tokenizer 7 + * javelin-typeahead-normalizer 8 8 * javelin-typeahead-preloaded-source 9 9 * javelin-typeahead-ondemand-source 10 10 * javelin-dom 11 11 * javelin-stratcom 12 - * javelin-util 12 + * @provides phabricator-prefab 13 + * 14 + * @javelin-installs JX.Prefab 15 + * 13 16 * @javelin 14 17 */ 15 18
+3
webroot/rsrc/js/core/RemarkupMetadata.js
··· 3 3 * javelin-dom 4 4 * javelin-json 5 5 * @provides phabricator-remarkup-metadata 6 + * 7 + * @javelin-installs JX.RemarkupMetadata 8 + * 6 9 * @javelin 7 10 */ 8 11
+3
webroot/rsrc/js/core/ShapedRequest.js
··· 4 4 * javelin-request 5 5 * javelin-router 6 6 * @provides phabricator-shaped-request 7 + * 8 + * @javelin-installs JX.PhabricatorShapedRequest 9 + * 7 10 * @javelin 8 11 */ 9 12
+3
webroot/rsrc/js/core/TextAreaUtils.js
··· 3 3 * javelin-dom 4 4 * javelin-vector 5 5 * @provides phabricator-textareautils 6 + * 7 + * @javelin-installs JX.TextAreaUtils 8 + * 6 9 * @javelin 7 10 */ 8 11
+3 -1
webroot/rsrc/js/core/Title.js
··· 1 1 /** 2 - * @provides phabricator-title 3 2 * @requires javelin-install 3 + * @provides phabricator-title 4 + * 5 + * @javelin-installs JX.Title 4 6 */ 5 7 6 8 /**
+3
webroot/rsrc/js/core/ToolTip.js
··· 4 4 * javelin-dom 5 5 * javelin-vector 6 6 * @provides phabricator-tooltip 7 + * 8 + * @javelin-installs JX.Tooltip 9 + * 7 10 * @javelin 8 11 */ 9 12
+5 -1
webroot/rsrc/js/core/behavior-detect-timezone.js
··· 1 1 /** 2 - * @provides javelin-behavior-detect-timezone 3 2 * @requires javelin-behavior 4 3 * javelin-uri 4 + * javelin-util 5 + * javelin-request 6 + * javelin-stratcom 7 + * javelin-workflow 5 8 * phabricator-notification 9 + * @provides javelin-behavior-detect-timezone 6 10 */ 7 11 8 12 JX.behavior('detect-timezone', function(config) {
+3 -1
webroot/rsrc/js/core/behavior-device.js
··· 1 1 /** 2 - * @provides javelin-behavior-device 3 2 * @requires javelin-behavior 4 3 * javelin-stratcom 5 4 * javelin-dom 6 5 * javelin-vector 7 6 * javelin-install 7 + * @provides javelin-behavior-device 8 + * 9 + * @javelin-installs JX.Device 8 10 */ 9 11 10 12 JX.install('Device', {
+4 -1
webroot/rsrc/js/core/behavior-fancy-datepicker.js
··· 1 1 /** 2 - * @provides javelin-behavior-fancy-datepicker 3 2 * @requires javelin-behavior 3 + * javelin-behavior-device 4 + * javelin-mask 4 5 * javelin-util 5 6 * javelin-dom 6 7 * javelin-stratcom 7 8 * javelin-vector 9 + * phabricator-phtize 10 + * @provides javelin-behavior-fancy-datepicker 8 11 */ 9 12 10 13 JX.behavior('fancy-datepicker', function(config, statics) {
+3 -1
webroot/rsrc/js/core/behavior-global-drag-and-drop.js
··· 1 1 /** 2 - * @provides javelin-behavior-global-drag-and-drop 3 2 * @requires javelin-behavior 4 3 * javelin-dom 5 4 * javelin-uri 6 5 * javelin-mask 6 + * javelin-stratcom 7 + * javelin-workflow 7 8 * phabricator-drag-and-drop-file-upload 9 + * @provides javelin-behavior-global-drag-and-drop 8 10 */ 9 11 10 12 JX.behavior('global-drag-and-drop', function(config, statics) {
+2 -1
webroot/rsrc/js/core/behavior-high-security-warning.js
··· 1 1 /** 2 - * @provides javelin-behavior-high-security-warning 3 2 * @requires javelin-behavior 3 + * javelin-stratcom 4 4 * javelin-uri 5 5 * phabricator-notification 6 + * @provides javelin-behavior-high-security-warning 6 7 */ 7 8 8 9 JX.behavior('high-security-warning', function(config, statics) {
+2 -3
webroot/rsrc/js/core/behavior-hovercard.js
··· 1 1 /** 2 - * @provides javelin-behavior-phui-hovercards 3 2 * @requires javelin-behavior 4 3 * javelin-behavior-device 5 4 * javelin-stratcom 6 - * javelin-vector 7 - * phui-hovercard 8 5 * phui-hovercard-list 6 + * @provides javelin-behavior-phui-hovercards 7 + * 9 8 * @javelin 10 9 */ 11 10
+2 -1
webroot/rsrc/js/core/behavior-keyboard-shortcuts.js
··· 1 1 /** 2 - * @provides javelin-behavior-phabricator-keyboard-shortcuts 3 2 * @requires javelin-behavior 4 3 * javelin-workflow 5 4 * javelin-json 6 5 * javelin-dom 7 6 * phabricator-keyboard-shortcut 7 + * phabricator-phtize 8 + * @provides javelin-behavior-phabricator-keyboard-shortcuts 8 9 */ 9 10 10 11 /**
+2 -1
webroot/rsrc/js/core/behavior-lightbox-attachments.js
··· 1 1 /** 2 - * @provides javelin-behavior-lightbox-attachments 3 2 * @requires javelin-behavior 4 3 * javelin-stratcom 5 4 * javelin-dom 6 5 * javelin-mask 7 6 * javelin-util 7 + * javelin-workflow 8 8 * phuix-icon-view 9 9 * phabricator-busy 10 + * @provides javelin-behavior-lightbox-attachments 10 11 */ 11 12 12 13 JX.behavior('lightbox-attachments', function() {
+4 -1
webroot/rsrc/js/core/behavior-line-linker.js
··· 1 1 /** 2 - * @provides javelin-behavior-phabricator-line-linker 3 2 * @requires javelin-behavior 4 3 * javelin-stratcom 5 4 * javelin-dom 6 5 * javelin-history 7 6 * javelin-external-editor-link-engine 7 + * javelin-uri 8 + * javelin-vector 9 + * phabricator-keyboard-shortcut 10 + * @provides javelin-behavior-phabricator-line-linker 8 11 */ 9 12 10 13 JX.behavior('phabricator-line-linker', function() {
+3 -1
webroot/rsrc/js/core/behavior-linked-container.js
··· 1 1 /** 2 + * @requires javelin-behavior 3 + * javelin-dom 4 + * javelin-stratcom 2 5 * @provides javelin-behavior-linked-container 3 - * @requires javelin-behavior javelin-dom 4 6 */ 5 7 6 8 JX.behavior('linked-container', function() {
+4 -1
webroot/rsrc/js/core/behavior-oncopy.js
··· 1 1 /** 2 - * @provides javelin-behavior-phabricator-oncopy 3 2 * @requires javelin-behavior 4 3 * javelin-dom 4 + * javelin-magical-init 5 + * javelin-stratcom 6 + * javelin-util 7 + * @provides javelin-behavior-phabricator-oncopy 5 8 */ 6 9 7 10 JX.behavior('phabricator-oncopy', function() {
+3 -1
webroot/rsrc/js/core/behavior-phabricator-remarkup-assist.js
··· 1 1 /** 2 - * @provides javelin-behavior-phabricator-remarkup-assist 3 2 * @requires javelin-behavior 4 3 * javelin-stratcom 5 4 * javelin-dom 5 + * phabricator-file-upload 6 + * phabricator-keyboard-shortcut 6 7 * phabricator-phtize 7 8 * phabricator-textareautils 8 9 * phabricator-remarkup-metadata ··· 10 11 * javelin-vector 11 12 * phuix-autocomplete 12 13 * javelin-mask 14 + * @provides javelin-behavior-phabricator-remarkup-assist 13 15 */ 14 16 15 17 JX.behavior('phabricator-remarkup-assist', function(config) {
+2 -1
webroot/rsrc/js/core/behavior-refresh-csrf.js
··· 1 1 /** 2 - * @provides javelin-behavior-refresh-csrf 3 2 * @requires javelin-request 4 3 * javelin-behavior 5 4 * javelin-dom 6 5 * javelin-router 6 + * javelin-uri 7 7 * javelin-util 8 8 * phabricator-busy 9 + * @provides javelin-behavior-refresh-csrf 9 10 */ 10 11 11 12 /**
+2 -1
webroot/rsrc/js/core/behavior-remarkup-load-image.js
··· 1 1 /** 2 - * @provides javelin-behavior-remarkup-load-image 3 2 * @requires javelin-behavior 3 + * javelin-dom 4 4 * javelin-request 5 + * @provides javelin-behavior-remarkup-load-image 5 6 */ 6 7 7 8 JX.behavior('remarkup-load-image', function(config) {
+2 -1
webroot/rsrc/js/core/behavior-remarkup-preview.js
··· 1 1 /** 2 - * @provides javelin-behavior-remarkup-preview 3 2 * @requires javelin-behavior 3 + * javelin-behavior-device 4 4 * javelin-dom 5 5 * javelin-util 6 6 * phabricator-shaped-request 7 + * @provides javelin-behavior-remarkup-preview 7 8 */ 8 9 9 10 JX.behavior('remarkup-preview', function(config) {
+2 -1
webroot/rsrc/js/core/behavior-scrollbar.js
··· 1 1 /** 2 - * @provides javelin-behavior-scrollbar 3 2 * @requires javelin-behavior 3 + * javelin-dom 4 4 * javelin-scrollbar 5 + * @provides javelin-behavior-scrollbar 5 6 */ 6 7 7 8 JX.behavior('scrollbar', function(config) {
+5 -1
webroot/rsrc/js/core/behavior-search-typeahead.js
··· 1 1 /** 2 - * @provides javelin-behavior-phabricator-search-typeahead 3 2 * @requires javelin-behavior 4 3 * javelin-typeahead-ondemand-source 5 4 * javelin-typeahead 6 5 * javelin-dom 6 + * javelin-request 7 7 * javelin-uri 8 8 * javelin-util 9 9 * javelin-stratcom 10 10 * phabricator-prefab 11 + * phuix-action-view 12 + * phuix-action-list-view 13 + * phuix-dropdown-menu 11 14 * phuix-icon-view 15 + * @provides javelin-behavior-phabricator-search-typeahead 12 16 */ 13 17 14 18 JX.behavior('phabricator-search-typeahead', function(config) {
+2 -1
webroot/rsrc/js/core/behavior-setup-check-https.js
··· 1 1 /** 2 - * @provides javelin-behavior-setup-check-https 3 2 * @requires javelin-behavior 3 + * javelin-dom 4 4 * javelin-uri 5 5 * phabricator-notification 6 + * @provides javelin-behavior-setup-check-https 6 7 */ 7 8 8 9 JX.behavior('setup-check-https', function(config) {
+2 -4
webroot/rsrc/js/core/behavior-time-typeahead.js
··· 1 1 /** 2 - * @provides javelin-behavior-time-typeahead 3 2 * @requires javelin-behavior 4 - * javelin-util 5 3 * javelin-dom 6 - * javelin-stratcom 7 - * javelin-vector 4 + * javelin-typeahead 8 5 * javelin-typeahead-static-source 6 + * @provides javelin-behavior-time-typeahead 9 7 */ 10 8 11 9 JX.behavior('time-typeahead', function(config) {
+2 -2
webroot/rsrc/js/core/behavior-tooltip.js
··· 1 1 /** 2 - * @provides javelin-behavior-phabricator-tooltips 3 2 * @requires javelin-behavior 4 - * javelin-behavior-device 5 3 * javelin-stratcom 6 4 * phabricator-tooltip 5 + * @provides javelin-behavior-phabricator-tooltips 6 + * 7 7 * @javelin 8 8 */ 9 9
+4 -1
webroot/rsrc/js/core/behavior-user-menu.js
··· 1 1 /** 2 + * @requires javelin-behavior 3 + * javelin-dom 4 + * javelin-stratcom 5 + * phuix-dropdown-menu 2 6 * @provides javelin-behavior-user-menu 3 - * @requires javelin-behavior 4 7 */ 5 8 6 9 JX.behavior('user-menu', function(config) {
+4
webroot/rsrc/js/core/darkconsole/DarkLog.js
··· 1 1 /** 2 + * @requires javelin-install 2 3 * @provides phabricator-darklog 4 + * 5 + * @javelin-installs JX.DarkLog 6 + * 3 7 * @javelin 4 8 */ 5 9
+5
webroot/rsrc/js/core/darkconsole/DarkMessage.js
··· 1 1 /** 2 + * @requires javelin-dom 3 + * javelin-install 2 4 * @provides phabricator-darkmessage 5 + * 6 + * @javelin-installs JX.DarkMessage 7 + * 3 8 * @javelin 4 9 */ 5 10
+4 -1
webroot/rsrc/js/core/darkconsole/behavior-dark-console.js
··· 1 1 /** 2 - * @provides javelin-behavior-dark-console 3 2 * @requires javelin-behavior 3 + * javelin-aphlict 4 + * javelin-leader 5 + * javelin-json 4 6 * javelin-stratcom 5 7 * javelin-util 6 8 * javelin-dom ··· 8 10 * phabricator-keyboard-shortcut 9 11 * phabricator-darklog 10 12 * phabricator-darkmessage 13 + * @provides javelin-behavior-dark-console 11 14 */ 12 15 13 16 JX.behavior('dark-console', function(config, statics) {
+3 -1
webroot/rsrc/js/core/phtize.js
··· 1 1 /** 2 - * @provides phabricator-phtize 3 2 * @requires javelin-util 3 + * @provides phabricator-phtize 4 + * 4 5 * @javelin-installs JX.phtize 6 + * 5 7 * @javelin 6 8 */ 7 9
+4 -3
webroot/rsrc/js/phui/behavior-phui-file-upload.js
··· 1 1 /** 2 - * @provides javelin-behavior-phui-file-upload 3 2 * @requires javelin-behavior 4 - * javelin-stratcom 3 + * javelin-util 4 + * javelin-workflow 5 5 * javelin-dom 6 - * phuix-dropdown-menu 6 + * phabricator-drag-and-drop-file-upload 7 + * @provides javelin-behavior-phui-file-upload 7 8 */ 8 9 9 10 JX.behavior('phui-file-upload', function(config) {
+2 -1
webroot/rsrc/js/phui/behavior-phui-selectable-list.js
··· 1 1 /** 2 - * @provides javelin-behavior-phui-selectable-list 3 2 * @requires javelin-behavior 4 3 * javelin-stratcom 4 + * javelin-util 5 5 * javelin-dom 6 + * @provides javelin-behavior-phui-selectable-list 6 7 */ 7 8 8 9 JX.behavior('phui-selectable-list', function() {
+2 -2
webroot/rsrc/js/phui/behavior-phui-timer-control.js
··· 1 1 /** 2 - * @provides javelin-behavior-phui-timer-control 3 2 * @requires javelin-behavior 4 - * javelin-stratcom 3 + * javelin-request 5 4 * javelin-dom 5 + * @provides javelin-behavior-phui-timer-control 6 6 */ 7 7 8 8 JX.behavior('phui-timer-control', function(config) {
+3 -1
webroot/rsrc/js/phuix/PHUIXActionListView.js
··· 1 1 /** 2 - * @provides phuix-action-list-view 3 2 * @requires javelin-install 4 3 * javelin-dom 4 + * @provides phuix-action-list-view 5 + * 6 + * @javelin-installs JX.PHUIXActionListView 5 7 */ 6 8 7 9 JX.install('PHUIXActionListView', {
+5 -1
webroot/rsrc/js/phuix/PHUIXActionView.js
··· 1 1 /** 2 - * @provides phuix-action-view 3 2 * @requires javelin-install 4 3 * javelin-dom 4 + * javelin-stratcom 5 5 * javelin-util 6 + * @provides phuix-action-view 7 + * 8 + * @javelin-installs JX.PHUIXActionView 9 + * 6 10 * @javelin 7 11 */ 8 12
+9 -1
webroot/rsrc/js/phuix/PHUIXAutocomplete.js
··· 1 1 /** 2 - * @provides phuix-autocomplete 3 2 * @requires javelin-install 3 + * javelin-behavior-device 4 4 * javelin-dom 5 + * javelin-stratcom 6 + * javelin-typeahead-ondemand-source 7 + * javelin-util 8 + * javelin-vector 5 9 * phuix-icon-view 6 10 * phabricator-prefab 11 + * phabricator-textareautils 12 + * @provides phuix-autocomplete 13 + * 14 + * @javelin-installs JX.PHUIXAutocomplete 7 15 */ 8 16 9 17 JX.install('PHUIXAutocomplete', {
+4 -1
webroot/rsrc/js/phuix/PHUIXButtonView.js
··· 1 1 /** 2 - * @provides phuix-button-view 3 2 * @requires javelin-install 4 3 * javelin-dom 4 + * phuix-icon-view 5 + * @provides phuix-button-view 6 + * 7 + * @javelin-installs JX.PHUIXButtonView 5 8 */ 6 9 JX.install('PHUIXButtonView', { 7 10
+4 -1
webroot/rsrc/js/phuix/PHUIXDropdownMenu.js
··· 1 1 /** 2 - * @provides phuix-dropdown-menu 3 2 * @requires javelin-install 4 3 * javelin-util 5 4 * javelin-dom 6 5 * javelin-vector 7 6 * javelin-stratcom 7 + * @provides phuix-dropdown-menu 8 + * 9 + * @javelin-installs JX.PHUIXDropdownMenu 10 + * 8 11 * @javelin 9 12 */ 10 13
+4 -2
webroot/rsrc/js/phuix/PHUIXExample.js
··· 1 1 /** 2 - * @provides javelin-behavior-phuix-example 3 - * @requires javelin-install 2 + * @requires javelin-behavior 4 3 * javelin-dom 4 + * javelin-util 5 5 * phuix-button-view 6 + * phuix-icon-view 7 + * @provides javelin-behavior-phuix-example 6 8 */ 7 9 8 10 JX.behavior('phuix-example', function(config) {
+5 -1
webroot/rsrc/js/phuix/PHUIXFormControl.js
··· 1 1 /** 2 - * @provides phuix-form-control-view 3 2 * @requires javelin-install 4 3 * javelin-dom 4 + * javelin-util 5 + * phabricator-prefab 6 + * @provides phuix-form-control-view 7 + * 8 + * @javelin-installs JX.PHUIXFormControl 5 9 */ 6 10 7 11 JX.install('PHUIXFormControl', {
+7 -1
webroot/rsrc/js/phuix/PHUIXFormationColumnView.js
··· 1 1 /** 2 - * @provides phuix-formation-column-view 3 2 * @requires javelin-install 4 3 * javelin-dom 4 + * javelin-vector 5 + * javelin-util 6 + * javelin-stratcom 7 + * javelin-request 8 + * @provides phuix-formation-column-view 9 + * 10 + * @javelin-installs JX.PHUIXFormationColumnView 5 11 */ 6 12 7 13 JX.install('PHUIXFormationColumnView', {
+4 -2
webroot/rsrc/js/phuix/PHUIXFormationFlankView.js
··· 1 1 /** 2 - * @provides phuix-formation-flank-view 3 2 * @requires javelin-install 4 - * javelin-dom 3 + * javelin-vector 4 + * @provides phuix-formation-flank-view 5 + * 6 + * @javelin-installs JX.PHUIXFormationFlankView 5 7 */ 6 8 7 9 JX.install('PHUIXFormationFlankView', {
+7 -1
webroot/rsrc/js/phuix/PHUIXFormationView.js
··· 1 1 /** 2 - * @provides phuix-formation-view 3 2 * @requires javelin-install 4 3 * javelin-dom 4 + * javelin-magical-init 5 + * javelin-util 6 + * javelin-stratcom 7 + * javelin-vector 5 8 * phuix-formation-column-view 6 9 * phuix-formation-flank-view 10 + * @provides phuix-formation-view 11 + * 12 + * @javelin-installs JX.PHUIXFormationView 7 13 */ 8 14 9 15 JX.install('PHUIXFormationView', {
+3 -1
webroot/rsrc/js/phuix/PHUIXIconView.js
··· 1 1 /** 2 - * @provides phuix-icon-view 3 2 * @requires javelin-install 4 3 * javelin-dom 4 + * @provides phuix-icon-view 5 + * 6 + * @javelin-installs JX.PHUIXIconView 5 7 */ 6 8 7 9 JX.install('PHUIXIconView', {