ember-cli 4.0.0-beta.4 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/.github/workflows/ci.yml +4 -4
  2. package/CHANGELOG.md +28 -17
  3. package/bin/ember +0 -0
  4. package/blueprints/addon/additional-dev-dependencies.json +1 -1
  5. package/blueprints/addon/files/.github/workflows/ci.yml +5 -1
  6. package/blueprints/addon/files/.travis.yml +1 -1
  7. package/blueprints/addon/files/README.md +2 -2
  8. package/blueprints/addon/files/addon-config/ember-try.js +4 -4
  9. package/blueprints/app/files/.github/workflows/ci.yml +4 -0
  10. package/blueprints/app/files/package.json +8 -8
  11. package/blueprints/in-repo-addon/files/__root__/__name__/index.js +0 -0
  12. package/blueprints/in-repo-addon/index.js +0 -0
  13. package/blueprints/lib/index.js +0 -0
  14. package/docs/build/data.json +413 -413
  15. package/lib/models/host-info-cache.js +3 -5
  16. package/lib/models/per-bundle-addon-cache/index.js +2 -3
  17. package/lib/tasks/npm-task.js +1 -1
  18. package/lib/utilities/get-lang-arg.js +45 -45
  19. package/package.json +25 -25
  20. package/.github/ISSUE_TEMPLATE.md +0 -12
  21. package/.github/dependabot.yml +0 -15
  22. package/.github/workflows/coverage.yml +0 -31
  23. package/docs/analytics.md +0 -44
  24. package/docs/architecture.md +0 -316
  25. package/docs/assets/architecture/Ember-CLI architecture.png +0 -0
  26. package/docs/assets/architecture/Ember-CLI architecture.xml +0 -1
  27. package/docs/assets/architecture/README.md +0 -5
  28. package/docs/brocfile-transition.md +0 -46
  29. package/docs/build/api.js +0 -44
  30. package/docs/build/assets/css/external-small.png +0 -0
  31. package/docs/build/assets/css/logo.png +0 -0
  32. package/docs/build/assets/css/main.css +0 -555
  33. package/docs/build/assets/favicon.ico +0 -0
  34. package/docs/build/assets/img/spinner.gif +0 -0
  35. package/docs/build/assets/index.html +0 -10
  36. package/docs/build/assets/js/api-filter.js +0 -56
  37. package/docs/build/assets/js/api-list.js +0 -255
  38. package/docs/build/assets/js/api-search.js +0 -98
  39. package/docs/build/assets/js/apidocs.js +0 -376
  40. package/docs/build/assets/js/yui-prettify.js +0 -17
  41. package/docs/build/assets/vendor/prettify/CHANGES.html +0 -130
  42. package/docs/build/assets/vendor/prettify/COPYING +0 -202
  43. package/docs/build/assets/vendor/prettify/README.html +0 -203
  44. package/docs/build/assets/vendor/prettify/prettify-min.css +0 -1
  45. package/docs/build/assets/vendor/prettify/prettify-min.js +0 -1
  46. package/docs/build/classes/Addon.html +0 -4318
  47. package/docs/build/classes/AmdTransformAddon.html +0 -202
  48. package/docs/build/classes/Blueprint.html +0 -4796
  49. package/docs/build/classes/Builder.html +0 -611
  50. package/docs/build/classes/CLI.html +0 -810
  51. package/docs/build/classes/Command.html +0 -1655
  52. package/docs/build/classes/DefaultPackager.html +0 -202
  53. package/docs/build/classes/EmberAddon.html +0 -2207
  54. package/docs/build/classes/EmberApp.html +0 -2225
  55. package/docs/build/classes/HardwareInfo.html +0 -620
  56. package/docs/build/classes/HistorySupportAddon.html +0 -203
  57. package/docs/build/classes/Instrumentation.html +0 -695
  58. package/docs/build/classes/NodeModulesList.html +0 -460
  59. package/docs/build/classes/NpmTask.html +0 -333
  60. package/docs/build/classes/PackageInfo.html +0 -1390
  61. package/docs/build/classes/PackageInfoCache.html +0 -963
  62. package/docs/build/classes/PerBundleAddonCache {.html +0 -1010
  63. package/docs/build/classes/Project.html +0 -2083
  64. package/docs/build/classes/ServeFilesAddon.html +0 -260
  65. package/docs/build/classes/TestsServerAddon.html +0 -203
  66. package/docs/build/classes/WatcherAddon.html +0 -204
  67. package/docs/build/classes/WindowsSymlinkChecker.html +0 -1505
  68. package/docs/build/files/lib_broccoli_default-packager.js.html +0 -1426
  69. package/docs/build/files/lib_broccoli_ember-addon.js.html +0 -159
  70. package/docs/build/files/lib_broccoli_ember-app.js.html +0 -1913
  71. package/docs/build/files/lib_cli_cli.js.html +0 -417
  72. package/docs/build/files/lib_models_addon-info.js.html +0 -112
  73. package/docs/build/files/lib_models_addon.js.html +0 -1866
  74. package/docs/build/files/lib_models_blueprint.js.html +0 -1678
  75. package/docs/build/files/lib_models_builder.js.html +0 -417
  76. package/docs/build/files/lib_models_command.js.html +0 -804
  77. package/docs/build/files/lib_models_hardware-info.js.html +0 -479
  78. package/docs/build/files/lib_models_host-info-cache.js.html +0 -428
  79. package/docs/build/files/lib_models_installation-checker.js.html +0 -181
  80. package/docs/build/files/lib_models_instantiate-addons.js.html +0 -191
  81. package/docs/build/files/lib_models_instrumentation.js.html +0 -433
  82. package/docs/build/files/lib_models_package-info-cache_index.js.html +0 -793
  83. package/docs/build/files/lib_models_package-info-cache_node-modules-list.js.html +0 -208
  84. package/docs/build/files/lib_models_package-info-cache_package-info.js.html +0 -661
  85. package/docs/build/files/lib_models_per-bundle-addon-cache_addon-proxy.js.html +0 -252
  86. package/docs/build/files/lib_models_per-bundle-addon-cache_index.js.html +0 -485
  87. package/docs/build/files/lib_models_per-bundle-addon-cache_target-instance.js.html +0 -108
  88. package/docs/build/files/lib_models_project.js.html +0 -913
  89. package/docs/build/files/lib_models_task.js.html +0 -117
  90. package/docs/build/files/lib_tasks_build-watch.js.html +0 -157
  91. package/docs/build/files/lib_tasks_npm-task.js.html +0 -463
  92. package/docs/build/files/lib_tasks_serve.js.html +0 -207
  93. package/docs/build/files/lib_tasks_server_middleware_broccoli-serve-files_index.js.html +0 -127
  94. package/docs/build/files/lib_tasks_server_middleware_broccoli-watcher_index.js.html +0 -158
  95. package/docs/build/files/lib_tasks_server_middleware_history-support_index.js.html +0 -181
  96. package/docs/build/files/lib_tasks_server_middleware_tests-server_index.js.html +0 -171
  97. package/docs/build/files/lib_tasks_test-server.js.html +0 -167
  98. package/docs/build/files/lib_tasks_transforms_amd_index.js.html +0 -143
  99. package/docs/build/files/lib_utilities_ember-app-utils.js.html +0 -292
  100. package/docs/build/files/lib_utilities_insert-into-file.js.html +0 -219
  101. package/docs/build/files/lib_utilities_is-lazy-engine.js.html +0 -125
  102. package/docs/build/files/lib_utilities_is-yarn-project.js.html +0 -120
  103. package/docs/build/files/lib_utilities_valid-project-name.js.html +0 -142
  104. package/docs/build/files/lib_utilities_will-interrupt-process.js.html +0 -290
  105. package/docs/build/files/lib_utilities_windows-admin.js.html +0 -230
  106. package/docs/build/index.html +0 -125
  107. package/docs/build/modules/ember-cli.html +0 -152
  108. package/docs/build/modules/is-lazy-engine.html +0 -106
  109. package/docs/build-concurrency.md +0 -15
  110. package/docs/build-pipeline-debugging.md +0 -33
  111. package/docs/code-coverage.md +0 -14
  112. package/docs/error-propagation.md +0 -136
  113. package/docs/experiments.md +0 -53
  114. package/docs/node-support.md +0 -43
  115. package/docs/perf-guide.md +0 -250
  116. package/docs/project_version_preprocessor.js +0 -8
  117. package/docs/sourcemaps.md +0 -60
  118. package/docs/yuidoc.json +0 -13
@@ -1,127 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <title>lib/tasks/server/middleware/broccoli-serve-files/index.js - ember-cli</title>
6
- <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
7
- <link rel="stylesheet" href="../assets/css/main.css" id="site_styles">
8
- <script src="https://cdnjs.cloudflare.com/ajax/libs/yui/3.18.0/yui/yui-min.js"></script>
9
- </head>
10
- <body class="yui3-skin-sam">
11
-
12
- <div id="doc">
13
- <div class="yui3-g">
14
- <div id="sidebar" class="yui3-u">
15
- <div class="logo">
16
- <a href="../index.html">
17
- <img src="https://ember-cli.com/assets/images/ember-cli-logo-small-dark.png">
18
- </a>
19
- </div>
20
-
21
- <div id="modules" class="sidebox">
22
- <div class="hd">
23
- <h2 class="no-toc">Modules</h2>
24
- </div>
25
- <div class="bd">
26
- <ul>
27
- <li><a href="../modules/ember-cli.html">ember-cli</a>
28
- </li>
29
- <li><a href="../modules/is-lazy-engine.html">is-lazy-engine</a>
30
- </li>
31
- </ul>
32
- </div>
33
- </div>
34
-
35
- <div id="classes" class="sidebox">
36
- <div class="hd">
37
- <h2 class="no-toc">Classes</h2>
38
- </div>
39
- <div class="bd">
40
- <ul>
41
- <li><a href="../classes/Addon.html">Addon</a></li>
42
- <li><a href="../classes/AmdTransformAddon.html">AmdTransformAddon</a></li>
43
- <li><a href="../classes/Blueprint.html">Blueprint</a></li>
44
- <li><a href="../classes/Builder.html">Builder</a></li>
45
- <li><a href="../classes/CLI.html">CLI</a></li>
46
- <li><a href="../classes/Command.html">Command</a></li>
47
- <li><a href="../classes/DefaultPackager.html">DefaultPackager</a></li>
48
- <li><a href="../classes/EmberAddon.html">EmberAddon</a></li>
49
- <li><a href="../classes/EmberApp.html">EmberApp</a></li>
50
- <li><a href="../classes/HardwareInfo.html">HardwareInfo</a></li>
51
- <li><a href="../classes/HistorySupportAddon.html">HistorySupportAddon</a></li>
52
- <li><a href="../classes/Instrumentation.html">Instrumentation</a></li>
53
- <li><a href="../classes/NodeModulesList.html">NodeModulesList</a></li>
54
- <li><a href="../classes/NpmTask.html">NpmTask</a></li>
55
- <li><a href="../classes/PackageInfo.html">PackageInfo</a></li>
56
- <li><a href="../classes/PackageInfoCache.html">PackageInfoCache</a></li>
57
- <li><a href="../classes/PerBundleAddonCache {.html">PerBundleAddonCache {</a></li>
58
- <li><a href="../classes/Project.html">Project</a></li>
59
- <li><a href="../classes/ServeFilesAddon.html">ServeFilesAddon</a></li>
60
- <li><a href="../classes/TestsServerAddon.html">TestsServerAddon</a></li>
61
- <li><a href="../classes/WatcherAddon.html">WatcherAddon</a></li>
62
- <li><a href="../classes/WindowsSymlinkChecker.html">WindowsSymlinkChecker</a></li>
63
- </ul>
64
- </div>
65
- </div>
66
-
67
-
68
-
69
-
70
-
71
- <div class="version-info">
72
- Version: 4.0.0-beta.4-beta-724190cca6
73
- </div>
74
-
75
- </div>
76
-
77
- <div id="main" class="yui3-u">
78
- <div class="content"><div class="title">
79
- <h1 class="file-name">lib/tasks/server/middleware/broccoli-serve-files/index.js</h1>
80
- </div>
81
-
82
- <pre class="code prettyprint linenums">
83
- &#x27;use strict&#x27;;
84
-
85
- const logger = require(&#x27;heimdalljs-logger&#x27;)(&#x27;ember-cli:broccoli-serve-files&#x27;);
86
-
87
- class ServeFilesAddon {
88
- /**
89
- * This addon is used to serve the requested assets and set the required response
90
- * headers. It runs after broccoli-watcher addon.
91
- *
92
- * @class ServeFilesAddon
93
- * @constructor
94
- */
95
- constructor(project) {
96
- this.project = project;
97
- this.name = &#x27;broccoli-serve-files&#x27;;
98
- }
99
-
100
- serverMiddleware(options) {
101
- let app = options.app;
102
- options = options.options;
103
-
104
- let serveAssetMiddleware = require(&#x27;broccoli-middleware&#x27;).serveAssetMiddleware;
105
-
106
- app.use((req, res, next) =&gt; {
107
- logger.info(&#x27;serving asset: %s&#x27;, req.url);
108
-
109
- // serve the asset and close the response.
110
- serveAssetMiddleware(req, res, next);
111
- });
112
- }
113
- }
114
-
115
- module.exports = ServeFilesAddon;
116
-
117
- </pre>
118
-
119
- </div>
120
- </div>
121
- </div>
122
- </div>
123
- <script src="../assets/vendor/prettify/prettify-min.js"></script>
124
- <script>prettyPrint();</script>
125
- <script src="../assets/js/yui-prettify.js"></script>
126
- </body>
127
- </html>
@@ -1,158 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <title>lib/tasks/server/middleware/broccoli-watcher/index.js - ember-cli</title>
6
- <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
7
- <link rel="stylesheet" href="../assets/css/main.css" id="site_styles">
8
- <script src="https://cdnjs.cloudflare.com/ajax/libs/yui/3.18.0/yui/yui-min.js"></script>
9
- </head>
10
- <body class="yui3-skin-sam">
11
-
12
- <div id="doc">
13
- <div class="yui3-g">
14
- <div id="sidebar" class="yui3-u">
15
- <div class="logo">
16
- <a href="../index.html">
17
- <img src="https://ember-cli.com/assets/images/ember-cli-logo-small-dark.png">
18
- </a>
19
- </div>
20
-
21
- <div id="modules" class="sidebox">
22
- <div class="hd">
23
- <h2 class="no-toc">Modules</h2>
24
- </div>
25
- <div class="bd">
26
- <ul>
27
- <li><a href="../modules/ember-cli.html">ember-cli</a>
28
- </li>
29
- <li><a href="../modules/is-lazy-engine.html">is-lazy-engine</a>
30
- </li>
31
- </ul>
32
- </div>
33
- </div>
34
-
35
- <div id="classes" class="sidebox">
36
- <div class="hd">
37
- <h2 class="no-toc">Classes</h2>
38
- </div>
39
- <div class="bd">
40
- <ul>
41
- <li><a href="../classes/Addon.html">Addon</a></li>
42
- <li><a href="../classes/AmdTransformAddon.html">AmdTransformAddon</a></li>
43
- <li><a href="../classes/Blueprint.html">Blueprint</a></li>
44
- <li><a href="../classes/Builder.html">Builder</a></li>
45
- <li><a href="../classes/CLI.html">CLI</a></li>
46
- <li><a href="../classes/Command.html">Command</a></li>
47
- <li><a href="../classes/DefaultPackager.html">DefaultPackager</a></li>
48
- <li><a href="../classes/EmberAddon.html">EmberAddon</a></li>
49
- <li><a href="../classes/EmberApp.html">EmberApp</a></li>
50
- <li><a href="../classes/HardwareInfo.html">HardwareInfo</a></li>
51
- <li><a href="../classes/HistorySupportAddon.html">HistorySupportAddon</a></li>
52
- <li><a href="../classes/Instrumentation.html">Instrumentation</a></li>
53
- <li><a href="../classes/NodeModulesList.html">NodeModulesList</a></li>
54
- <li><a href="../classes/NpmTask.html">NpmTask</a></li>
55
- <li><a href="../classes/PackageInfo.html">PackageInfo</a></li>
56
- <li><a href="../classes/PackageInfoCache.html">PackageInfoCache</a></li>
57
- <li><a href="../classes/PerBundleAddonCache {.html">PerBundleAddonCache {</a></li>
58
- <li><a href="../classes/Project.html">Project</a></li>
59
- <li><a href="../classes/ServeFilesAddon.html">ServeFilesAddon</a></li>
60
- <li><a href="../classes/TestsServerAddon.html">TestsServerAddon</a></li>
61
- <li><a href="../classes/WatcherAddon.html">WatcherAddon</a></li>
62
- <li><a href="../classes/WindowsSymlinkChecker.html">WindowsSymlinkChecker</a></li>
63
- </ul>
64
- </div>
65
- </div>
66
-
67
-
68
-
69
-
70
-
71
- <div class="version-info">
72
- Version: 4.0.0-beta.4-beta-724190cca6
73
- </div>
74
-
75
- </div>
76
-
77
- <div id="main" class="yui3-u">
78
- <div class="content"><div class="title">
79
- <h1 class="file-name">lib/tasks/server/middleware/broccoli-watcher/index.js</h1>
80
- </div>
81
-
82
- <pre class="code prettyprint linenums">
83
- &#x27;use strict&#x27;;
84
-
85
- const cleanBaseURL = require(&#x27;clean-base-url&#x27;);
86
- const logger = require(&#x27;heimdalljs-logger&#x27;)(&#x27;ember-cli:broccoli-watcher&#x27;);
87
-
88
- class WatcherAddon {
89
- /**
90
- * This addon is used to set the default response headers for the assets that will be
91
- * served by the next middleware. It waits for the watcher promise to resolve before
92
- * setting the response headers.
93
- *
94
- * @class WatcherAddon
95
- * @constructor
96
- */
97
- constructor(project) {
98
- this.project = project;
99
- this.name = &#x27;broccoli-watcher&#x27;;
100
- }
101
-
102
- serverMiddleware(options) {
103
- let app = options.app;
104
- options = options.options;
105
-
106
- let broccoliMiddleware = options.middleware || require(&#x27;broccoli-middleware&#x27;).watcherMiddleware;
107
- let middleware = broccoliMiddleware(options.watcher, {
108
- liveReloadPath: &#x27;/ember-cli-live-reload.js&#x27;,
109
- autoIndex: false, // disable directory listings
110
- });
111
-
112
- let baseURL = options.rootURL === &#x27;&#x27; ? &#x27;/&#x27; : cleanBaseURL(options.rootURL || options.baseURL);
113
-
114
- logger.info(&#x27;serverMiddleware: baseURL: %s&#x27;, baseURL);
115
-
116
- app.use((req, res, next) =&gt; {
117
- let oldURL = req.url;
118
- let url = req.serveUrl || req.url;
119
- logger.info(&#x27;serving: %s&#x27;, url);
120
-
121
- let actualPrefix = req.url.slice(0, baseURL.length - 1); // Don&#x27;t care
122
- let expectedPrefix = baseURL.slice(0, baseURL.length - 1); // about last slash
123
-
124
- if (actualPrefix === expectedPrefix) {
125
- let urlToBeServed = url.slice(actualPrefix.length); // Remove baseURL prefix
126
- req.url = urlToBeServed;
127
- logger.info(&#x27;serving: (prefix stripped) %s, was: %s&#x27;, urlToBeServed, url);
128
-
129
- // Find asset and set response headers, if no file has been found, reset url for proxy stuff
130
- // that comes afterwards
131
- middleware(req, res, (err) =&gt; {
132
- req.url = oldURL;
133
- if (err) {
134
- logger.error(&#x27;err&#x27;, err);
135
- }
136
- next(err);
137
- });
138
- } else {
139
- logger.info(&quot;prefixes didn&#x27;t match, passing control on: (actual:%s expected:%s)&quot;, actualPrefix, expectedPrefix);
140
- next();
141
- }
142
- });
143
- }
144
- }
145
-
146
- module.exports = WatcherAddon;
147
-
148
- </pre>
149
-
150
- </div>
151
- </div>
152
- </div>
153
- </div>
154
- <script src="../assets/vendor/prettify/prettify-min.js"></script>
155
- <script>prettyPrint();</script>
156
- <script src="../assets/js/yui-prettify.js"></script>
157
- </body>
158
- </html>
@@ -1,181 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <title>lib/tasks/server/middleware/history-support/index.js - ember-cli</title>
6
- <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
7
- <link rel="stylesheet" href="../assets/css/main.css" id="site_styles">
8
- <script src="https://cdnjs.cloudflare.com/ajax/libs/yui/3.18.0/yui/yui-min.js"></script>
9
- </head>
10
- <body class="yui3-skin-sam">
11
-
12
- <div id="doc">
13
- <div class="yui3-g">
14
- <div id="sidebar" class="yui3-u">
15
- <div class="logo">
16
- <a href="../index.html">
17
- <img src="https://ember-cli.com/assets/images/ember-cli-logo-small-dark.png">
18
- </a>
19
- </div>
20
-
21
- <div id="modules" class="sidebox">
22
- <div class="hd">
23
- <h2 class="no-toc">Modules</h2>
24
- </div>
25
- <div class="bd">
26
- <ul>
27
- <li><a href="../modules/ember-cli.html">ember-cli</a>
28
- </li>
29
- <li><a href="../modules/is-lazy-engine.html">is-lazy-engine</a>
30
- </li>
31
- </ul>
32
- </div>
33
- </div>
34
-
35
- <div id="classes" class="sidebox">
36
- <div class="hd">
37
- <h2 class="no-toc">Classes</h2>
38
- </div>
39
- <div class="bd">
40
- <ul>
41
- <li><a href="../classes/Addon.html">Addon</a></li>
42
- <li><a href="../classes/AmdTransformAddon.html">AmdTransformAddon</a></li>
43
- <li><a href="../classes/Blueprint.html">Blueprint</a></li>
44
- <li><a href="../classes/Builder.html">Builder</a></li>
45
- <li><a href="../classes/CLI.html">CLI</a></li>
46
- <li><a href="../classes/Command.html">Command</a></li>
47
- <li><a href="../classes/DefaultPackager.html">DefaultPackager</a></li>
48
- <li><a href="../classes/EmberAddon.html">EmberAddon</a></li>
49
- <li><a href="../classes/EmberApp.html">EmberApp</a></li>
50
- <li><a href="../classes/HardwareInfo.html">HardwareInfo</a></li>
51
- <li><a href="../classes/HistorySupportAddon.html">HistorySupportAddon</a></li>
52
- <li><a href="../classes/Instrumentation.html">Instrumentation</a></li>
53
- <li><a href="../classes/NodeModulesList.html">NodeModulesList</a></li>
54
- <li><a href="../classes/NpmTask.html">NpmTask</a></li>
55
- <li><a href="../classes/PackageInfo.html">PackageInfo</a></li>
56
- <li><a href="../classes/PackageInfoCache.html">PackageInfoCache</a></li>
57
- <li><a href="../classes/PerBundleAddonCache {.html">PerBundleAddonCache {</a></li>
58
- <li><a href="../classes/Project.html">Project</a></li>
59
- <li><a href="../classes/ServeFilesAddon.html">ServeFilesAddon</a></li>
60
- <li><a href="../classes/TestsServerAddon.html">TestsServerAddon</a></li>
61
- <li><a href="../classes/WatcherAddon.html">WatcherAddon</a></li>
62
- <li><a href="../classes/WindowsSymlinkChecker.html">WindowsSymlinkChecker</a></li>
63
- </ul>
64
- </div>
65
- </div>
66
-
67
-
68
-
69
-
70
-
71
- <div class="version-info">
72
- Version: 4.0.0-beta.4-beta-724190cca6
73
- </div>
74
-
75
- </div>
76
-
77
- <div id="main" class="yui3-u">
78
- <div class="content"><div class="title">
79
- <h1 class="file-name">lib/tasks/server/middleware/history-support/index.js</h1>
80
- </div>
81
-
82
- <pre class="code prettyprint linenums">
83
- &#x27;use strict&#x27;;
84
-
85
- const path = require(&#x27;path&#x27;);
86
- const fs = require(&#x27;fs&#x27;);
87
- const cleanBaseURL = require(&#x27;clean-base-url&#x27;);
88
-
89
- class HistorySupportAddon {
90
- /**
91
- * This addon is used to serve the &#x60;index.html&#x60; file at every requested
92
- * URL that begins with &#x60;rootURL&#x60; and is expecting &#x60;text/html&#x60; output.
93
- *
94
- * @class HistorySupportAddon
95
- * @constructor
96
- */
97
- constructor(project) {
98
- this.project = project;
99
- this.name = &#x27;history-support-middleware&#x27;;
100
- }
101
-
102
- shouldAddMiddleware(environment) {
103
- let config = this.project.config(environment);
104
- let locationType = config.locationType;
105
- let historySupportMiddleware = config.historySupportMiddleware;
106
-
107
- if (typeof historySupportMiddleware === &#x27;boolean&#x27;) {
108
- return historySupportMiddleware;
109
- }
110
-
111
- return [&#x27;auto&#x27;, &#x27;history&#x27;].indexOf(locationType) !== -1;
112
- }
113
-
114
- serverMiddleware(config) {
115
- if (this.shouldAddMiddleware(config.options.environment)) {
116
- this.project.ui.writeWarnLine(
117
- &#x27;Empty &#x60;rootURL&#x60; is not supported. Disable history support, or use an absolute &#x60;rootURL&#x60;&#x27;,
118
- config.options.rootURL !== &#x27;&#x27;
119
- );
120
-
121
- this.addMiddleware(config);
122
- }
123
- }
124
-
125
- addMiddleware(config) {
126
- let app = config.app;
127
- let options = config.options;
128
- let watcher = options.watcher;
129
-
130
- let baseURL = options.rootURL === &#x27;&#x27; ? &#x27;/&#x27; : cleanBaseURL(options.rootURL || options.baseURL);
131
-
132
- app.use(async (req, _, next) =&gt; {
133
- try {
134
- const results = await watcher;
135
- if (this.shouldHandleRequest(req, options)) {
136
- let assetPath = req.path.slice(baseURL.length);
137
- let isFile = false;
138
-
139
- try {
140
- isFile = fs.statSync(path.join(results.directory, assetPath)).isFile();
141
- } catch (err) {
142
- /* ignore */
143
- }
144
- if (!isFile) {
145
- req.serveUrl = &#x60;${baseURL}index.html&#x60;;
146
- }
147
- }
148
- } finally {
149
- next();
150
- }
151
- });
152
- }
153
-
154
- shouldHandleRequest(req, options) {
155
- let acceptHeaders = req.headers.accept || [];
156
- let hasHTMLHeader = acceptHeaders.indexOf(&#x27;text/html&#x27;) !== -1;
157
- if (req.method !== &#x27;GET&#x27;) {
158
- return false;
159
- }
160
- if (!hasHTMLHeader) {
161
- return false;
162
- }
163
- let baseURL = options.rootURL === &#x27;&#x27; ? &#x27;/&#x27; : cleanBaseURL(options.rootURL || options.baseURL);
164
- let baseURLRegexp = new RegExp(&#x60;^${baseURL}&#x60;);
165
- return baseURLRegexp.test(req.path);
166
- }
167
- }
168
-
169
- module.exports = HistorySupportAddon;
170
-
171
- </pre>
172
-
173
- </div>
174
- </div>
175
- </div>
176
- </div>
177
- <script src="../assets/vendor/prettify/prettify-min.js"></script>
178
- <script>prettyPrint();</script>
179
- <script src="../assets/js/yui-prettify.js"></script>
180
- </body>
181
- </html>
@@ -1,171 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <title>lib/tasks/server/middleware/tests-server/index.js - ember-cli</title>
6
- <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
7
- <link rel="stylesheet" href="../assets/css/main.css" id="site_styles">
8
- <script src="https://cdnjs.cloudflare.com/ajax/libs/yui/3.18.0/yui/yui-min.js"></script>
9
- </head>
10
- <body class="yui3-skin-sam">
11
-
12
- <div id="doc">
13
- <div class="yui3-g">
14
- <div id="sidebar" class="yui3-u">
15
- <div class="logo">
16
- <a href="../index.html">
17
- <img src="https://ember-cli.com/assets/images/ember-cli-logo-small-dark.png">
18
- </a>
19
- </div>
20
-
21
- <div id="modules" class="sidebox">
22
- <div class="hd">
23
- <h2 class="no-toc">Modules</h2>
24
- </div>
25
- <div class="bd">
26
- <ul>
27
- <li><a href="../modules/ember-cli.html">ember-cli</a>
28
- </li>
29
- <li><a href="../modules/is-lazy-engine.html">is-lazy-engine</a>
30
- </li>
31
- </ul>
32
- </div>
33
- </div>
34
-
35
- <div id="classes" class="sidebox">
36
- <div class="hd">
37
- <h2 class="no-toc">Classes</h2>
38
- </div>
39
- <div class="bd">
40
- <ul>
41
- <li><a href="../classes/Addon.html">Addon</a></li>
42
- <li><a href="../classes/AmdTransformAddon.html">AmdTransformAddon</a></li>
43
- <li><a href="../classes/Blueprint.html">Blueprint</a></li>
44
- <li><a href="../classes/Builder.html">Builder</a></li>
45
- <li><a href="../classes/CLI.html">CLI</a></li>
46
- <li><a href="../classes/Command.html">Command</a></li>
47
- <li><a href="../classes/DefaultPackager.html">DefaultPackager</a></li>
48
- <li><a href="../classes/EmberAddon.html">EmberAddon</a></li>
49
- <li><a href="../classes/EmberApp.html">EmberApp</a></li>
50
- <li><a href="../classes/HardwareInfo.html">HardwareInfo</a></li>
51
- <li><a href="../classes/HistorySupportAddon.html">HistorySupportAddon</a></li>
52
- <li><a href="../classes/Instrumentation.html">Instrumentation</a></li>
53
- <li><a href="../classes/NodeModulesList.html">NodeModulesList</a></li>
54
- <li><a href="../classes/NpmTask.html">NpmTask</a></li>
55
- <li><a href="../classes/PackageInfo.html">PackageInfo</a></li>
56
- <li><a href="../classes/PackageInfoCache.html">PackageInfoCache</a></li>
57
- <li><a href="../classes/PerBundleAddonCache {.html">PerBundleAddonCache {</a></li>
58
- <li><a href="../classes/Project.html">Project</a></li>
59
- <li><a href="../classes/ServeFilesAddon.html">ServeFilesAddon</a></li>
60
- <li><a href="../classes/TestsServerAddon.html">TestsServerAddon</a></li>
61
- <li><a href="../classes/WatcherAddon.html">WatcherAddon</a></li>
62
- <li><a href="../classes/WindowsSymlinkChecker.html">WindowsSymlinkChecker</a></li>
63
- </ul>
64
- </div>
65
- </div>
66
-
67
-
68
-
69
-
70
-
71
- <div class="version-info">
72
- Version: 4.0.0-beta.4-beta-724190cca6
73
- </div>
74
-
75
- </div>
76
-
77
- <div id="main" class="yui3-u">
78
- <div class="content"><div class="title">
79
- <h1 class="file-name">lib/tasks/server/middleware/tests-server/index.js</h1>
80
- </div>
81
-
82
- <pre class="code prettyprint linenums">
83
- &#x27;use strict&#x27;;
84
-
85
- const cleanBaseURL = require(&#x27;clean-base-url&#x27;);
86
- const path = require(&#x27;path&#x27;);
87
- const fs = require(&#x27;fs&#x27;);
88
- const logger = require(&#x27;heimdalljs-logger&#x27;)(&#x27;ember-cli:test-server&#x27;);
89
-
90
- module.exports = class TestsServerAddon {
91
- /**
92
- * This addon is used to serve the QUnit or Mocha test runner
93
- * at &#x60;baseURL + &#x27;/tests&#x27;&#x60;.
94
- *
95
- * @class TestsServerAddon
96
- * @constructor
97
- */
98
- constructor(project) {
99
- this.project = project;
100
- this.name = &#x27;tests-server-middleware&#x27;;
101
- }
102
-
103
- serverMiddleware(config) {
104
- let app = config.app;
105
- let options = config.options;
106
- let watcher = options.watcher;
107
-
108
- let baseURL = options.rootURL === &#x27;&#x27; ? &#x27;/&#x27; : cleanBaseURL(options.rootURL || options.baseURL);
109
- let testsPath = &#x60;${baseURL}tests&#x60;;
110
-
111
- app.use(async (req, _, next) =&gt; {
112
- let results;
113
- let watcherSuccess;
114
-
115
- try {
116
- results = await watcher;
117
- watcherSuccess = true;
118
- } catch (e) {
119
- watcherSuccess = false;
120
- // the build has failed, the middleware can safely be skipped.
121
- // build error reporting is handled by:
122
- // 1. watcher production stderr
123
- // 2. watcher-middleware serving the error page
124
- }
125
-
126
- if (watcherSuccess) {
127
- rewriteRequestUrlIfBasePageIsNeeded(req, testsPath, baseURL, results.directory);
128
- }
129
-
130
- next();
131
-
132
- if (config.finally) {
133
- config.finally();
134
- }
135
- });
136
- }
137
- };
138
-
139
- function rewriteRequestUrlIfBasePageIsNeeded(req, testsPath, baseURL, directory) {
140
- let acceptHeaders = req.headers.accept || [];
141
- let hasHTMLHeader = acceptHeaders.indexOf(&#x27;text/html&#x27;) !== -1;
142
- let hasWildcardHeader = acceptHeaders.indexOf(&#x27;*/*&#x27;) !== -1;
143
-
144
- let isForTests = req.path.indexOf(testsPath) === 0;
145
-
146
- logger.info(&#x27;isForTests: %o&#x27;, isForTests);
147
-
148
- if (isForTests &amp;&amp; (hasHTMLHeader || hasWildcardHeader) &amp;&amp; req.method === &#x27;GET&#x27;) {
149
- let assetPath = req.path.slice(baseURL.length);
150
- let filePath = path.join(directory, assetPath);
151
-
152
- if (!fs.existsSync(filePath) || !fs.statSync(filePath).isFile()) {
153
- // N.B., &#x60;baseURL&#x60; will end with a slash as it went through &#x60;cleanBaseURL&#x60;
154
- let newURL = &#x60;${baseURL}tests/index.html&#x60;;
155
- logger.info(&#x27;url: %s resolved to path: %s which is not a file. Assuming %s instead&#x27;, req.path, filePath, newURL);
156
- req.url = newURL;
157
- }
158
- }
159
- }
160
-
161
- </pre>
162
-
163
- </div>
164
- </div>
165
- </div>
166
- </div>
167
- <script src="../assets/vendor/prettify/prettify-min.js"></script>
168
- <script>prettyPrint();</script>
169
- <script src="../assets/js/yui-prettify.js"></script>
170
- </body>
171
- </html>