Skip to content

Commit f5720cc

Browse files
authored
Merge pull request #569 from cibernox/remove-content-between-markers
Remove content between markers
2 parents ce54c35 + df3ef28 commit f5720cc

5 files changed

Lines changed: 95 additions & 27 deletions

File tree

addon/instance-initializers/clear-double-boot.js

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,34 @@
1-
// When using `ember serve` when fastboot addon is installed the application
2-
// output will already be rendered to the DOM when the actual JavaScript
3-
// loads. Ember does not automatically clear its `rootElement` so this
4-
// leads to the "double" applications being visible at once (only the
1+
// When using `ember serve` when fastboot addon is installed the application
2+
// output will already be rendered to the DOM when the actual JavaScript
3+
// loads. Ember does not automatically clear its `rootElement` so this
4+
// leads to the "double" applications being visible at once (only the
55
// "bottom" one is running via JS and is interactive).
66
//
77
// This removes any pre-rendered ember-view elements, so that the booting
88
// application will replace the pre-rendered output
9-
9+
export function clearHtml() {
10+
let current = document.getElementById('fastboot-body-start');
11+
if (current) {
12+
let endMarker = document.getElementById('fastboot-body-end');
13+
let parent = current.parentElement;
14+
let nextNode;
15+
do {
16+
nextNode = current.nextSibling;
17+
parent.removeChild(current);
18+
current = nextNode;
19+
} while (nextNode && nextNode !== endMarker);
20+
parent.removeChild(endMarker);
21+
}
22+
}
1023
export default {
1124
name: "clear-double-boot",
1225

13-
initialize: function(instance) {
26+
initialize(instance) {
1427
if (typeof FastBoot === 'undefined') {
1528
var originalDidCreateRootView = instance.didCreateRootView;
1629

1730
instance.didCreateRootView = function() {
18-
let elements = document.querySelectorAll(instance.rootElement + ' .ember-view');
19-
for (let i = 0; i < elements.length; i++) {
20-
let element = elements[i];
21-
element.parentNode.removeChild(element);
22-
}
23-
31+
clearHtml();
2432
originalDidCreateRootView.apply(instance, arguments);
2533
};
2634
}

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
"chalk": "^2.0.1",
2828
"ember-cli-babel": "^6.7.2",
2929
"ember-cli-lodash-subset": "2.0.1",
30-
"ember-cli-version-checker": "^2.1.0",
3130
"ember-cli-preprocess-registry": "^3.1.0",
32-
"fastboot": "^1.1.0",
31+
"ember-cli-version-checker": "^2.1.0",
32+
"fastboot": "^1.1.3",
3333
"fastboot-express-middleware": "^1.1.0",
3434
"fastboot-transform": "^0.1.2",
3535
"fs-extra": "^4.0.2",
@@ -52,13 +52,14 @@
5252
"ember-cli-htmlbars": "^2.0.2",
5353
"ember-cli-htmlbars-inline-precompile": "^1.0.2",
5454
"ember-cli-inject-live-reload": "^1.4.1",
55-
"ember-cli-qunit": "^4.2.1",
55+
"ember-cli-qunit": "^4.3.0",
5656
"ember-cli-shims": "^1.2.0",
5757
"ember-cli-sri": "^2.1.0",
5858
"ember-cli-uglify": "^2.0.0",
5959
"ember-disable-prototype-extensions": "^1.1.2",
6060
"ember-export-application-global": "^2.0.0",
6161
"ember-load-initializers": "^1.0.0",
62+
"ember-maybe-import-regenerator-for-testing": "^1.0.0",
6263
"ember-resolver": "^4.3.0",
6364
"ember-sinon": "^1.0.0",
6465
"ember-source": "~2.18.0",

test/response-details-test.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,17 @@ describe('response details', function() {
5353
expect(response.statusCode).to.equal(418);
5454
});
5555
});
56+
57+
it('the body is contained between markers', function () {
58+
return get({
59+
url: 'http://localhost:49741/',
60+
headers: {
61+
'Accept': 'text/html'
62+
}
63+
})
64+
.then(function (response) {
65+
expect(response.body).to.contain('<script type="x/boundary" id="fastboot-body-start"></script>')
66+
expect(response.body).to.contain('<script type="x/boundary" id="fastboot-body-end"></script>')
67+
});
68+
});
5669
});
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { module, test } from 'qunit';
2+
import { setupRenderingTest } from 'ember-qunit';
3+
import { render } from '@ember/test-helpers';
4+
import hbs from 'htmlbars-inline-precompile';
5+
import { clearHtml } from 'ember-cli-fastboot/instance-initializers/clear-double-boot';
6+
7+
module('Instance-initializer: clear-double-boot', function(hooks) {
8+
setupRenderingTest(hooks);
9+
10+
test('It removes the fastboot markers and anything between them', async function(assert) {
11+
await render(hbs`
12+
<script type="x/boundary" id="fastboot-body-start"></script>
13+
<div id="content-in-between"></div>
14+
<script type="x/boundary" id="fastboot-body-end"></script>
15+
`);
16+
clearHtml();
17+
assert.notOk(this.element.querySelector('#fastboot-body-start'), 'There is no start marker');
18+
assert.notOk(this.element.querySelector('#fastboot-body-end'), 'There is no end marker');
19+
assert.notOk(this.element.querySelector('#content-in-between'), 'The content is between is gone');
20+
});
21+
});

yarn.lock

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2076,7 +2076,7 @@ ember-cli-addon-tests@^0.11.0:
20762076
symlink-or-copy "^1.1.3"
20772077
temp "^0.8.3"
20782078

2079-
ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.7, ember-cli-babel@^6.10.0, ember-cli-babel@^6.3.0, ember-cli-babel@^6.7.2, ember-cli-babel@^6.8.1:
2079+
ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.7, ember-cli-babel@^6.10.0, ember-cli-babel@^6.3.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.7.2, ember-cli-babel@^6.8.1:
20802080
version "6.11.0"
20812081
resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.11.0.tgz#79cb184bac3c05bfe181ddc306bac100ab1f9493"
20822082
dependencies:
@@ -2210,12 +2210,12 @@ ember-cli-preprocess-registry@^3.1.0:
22102210
process-relative-require "^1.0.0"
22112211
silent-error "^1.0.0"
22122212

2213-
ember-cli-qunit@^4.2.1:
2214-
version "4.2.1"
2215-
resolved "https://registry.yarnpkg.com/ember-cli-qunit/-/ember-cli-qunit-4.2.1.tgz#89580e6eb157ee98b9eefbd48fba9bb75ea64544"
2213+
ember-cli-qunit@^4.3.0:
2214+
version "4.3.0"
2215+
resolved "https://registry.yarnpkg.com/ember-cli-qunit/-/ember-cli-qunit-4.3.0.tgz#1ce65dea553d18f5fd9b6b08d3d5128afb2ab94e"
22162216
dependencies:
22172217
ember-cli-babel "^6.8.1"
2218-
ember-qunit "^3.2.2"
2218+
ember-qunit "^3.3.0"
22192219

22202220
ember-cli-shims@^1.2.0:
22212221
version "1.2.0"
@@ -2374,17 +2374,25 @@ ember-load-initializers@^1.0.0:
23742374
dependencies:
23752375
ember-cli-babel "^6.0.0-beta.7"
23762376

2377-
ember-qunit@^3.2.2:
2378-
version "3.2.2"
2379-
resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-3.2.2.tgz#96c8818ecfa3894580a3dc805f7e7f1e82e07c4a"
2377+
ember-maybe-import-regenerator-for-testing@^1.0.0:
2378+
version "1.0.0"
2379+
resolved "https://registry.yarnpkg.com/ember-maybe-import-regenerator-for-testing/-/ember-maybe-import-regenerator-for-testing-1.0.0.tgz#894b8089c5b3067c920b492c81233603852d5c2f"
2380+
dependencies:
2381+
broccoli-funnel "^1.0.1"
2382+
ember-cli-babel "^6.6.0"
2383+
regenerator-runtime "^0.9.5"
2384+
2385+
ember-qunit@^3.3.0:
2386+
version "3.3.0"
2387+
resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-3.3.0.tgz#98c0c8d9473808fa7be48808989255cbfa70e760"
23802388
dependencies:
23812389
"@ember/test-helpers" "^0.7.9"
23822390
broccoli-funnel "^2.0.1"
23832391
broccoli-merge-trees "^2.0.0"
23842392
common-tags "^1.4.0"
23852393
ember-cli-babel "^6.3.0"
23862394
ember-cli-test-loader "^2.2.0"
2387-
qunit "^2.4.1"
2395+
qunit "^2.5.0"
23882396

23892397
ember-resolver@^4.3.0:
23902398
version "4.5.0"
@@ -2904,9 +2912,22 @@ fastboot-transform@^0.1.2:
29042912
dependencies:
29052913
broccoli-stew "^1.5.0"
29062914

2907-
fastboot@^1.1.0, fastboot@^1.1.2:
2915+
fastboot@^1.1.2:
29082916
version "1.1.2"
2909-
resolved "https://registry.yarnpkg.com/fastboot/-/fastboot-1.1.2.tgz#1cb4b6423aacc4339fbf003cc7b6ecabd3083dfa"
2917+
resolved "git+https://[email protected]/ember-fastboot/fastboot.git#f17668a7bbb57f8f45acd279b704de9ba716f39c"
2918+
dependencies:
2919+
chalk "^2.0.1"
2920+
cookie "^0.3.1"
2921+
debug "^3.0.0"
2922+
exists-sync "0.0.4"
2923+
najax "^1.0.2"
2924+
rsvp "^4.7.0"
2925+
simple-dom "^1.0.0"
2926+
source-map-support "^0.5.0"
2927+
2928+
fastboot@^1.1.3:
2929+
version "1.1.3"
2930+
resolved "https://registry.yarnpkg.com/fastboot/-/fastboot-1.1.3.tgz#56c5f56415c5ae8de2db539c0d3ecbcd65538f8b"
29102931
dependencies:
29112932
chalk "^2.0.1"
29122933
cookie "^0.3.1"
@@ -5274,7 +5295,7 @@ quick-temp@^0.1.0, quick-temp@^0.1.2, quick-temp@^0.1.3, quick-temp@^0.1.5, quic
52745295
rimraf "^2.5.4"
52755296
underscore.string "~3.3.4"
52765297

5277-
qunit@^2.4.1:
5298+
qunit@^2.5.0:
52785299
version "2.5.0"
52795300
resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.5.0.tgz#64cbe30a1193ef02edc5b278efcdf1d0bae96b22"
52805301
dependencies:
@@ -5410,6 +5431,10 @@ regenerator-runtime@^0.11.0:
54105431
version "0.11.1"
54115432
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
54125433

5434+
regenerator-runtime@^0.9.5:
5435+
version "0.9.6"
5436+
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029"
5437+
54135438
regenerator-transform@^0.10.0:
54145439
version "0.10.1"
54155440
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"

0 commit comments

Comments
 (0)