mirror of
https://github.com/modernweb-dev/rocket.git
synced 2026-03-10 08:51:24 +00:00
fix(engine): support nested recursive.data.js in data cascade
This commit is contained in:
@@ -167,7 +167,7 @@ export class RocketHeader {
|
||||
const fileDir = path.dirname(this.sourceFilePath);
|
||||
if (existsSync(thisAndSubDirsFilePath)) {
|
||||
const rel = path.relative(fileDir, thisAndSubDirsFilePath);
|
||||
dataFiles.push({
|
||||
dataFiles.unshift({
|
||||
filePath: thisAndSubDirsFilePath,
|
||||
exportModuleName: rel.startsWith('.') ? rel : `./${rel}`,
|
||||
});
|
||||
|
||||
@@ -229,7 +229,7 @@ describe('Engine Data Cascade', () => {
|
||||
|
||||
it('06: `local.data.js` overwrites data from `recursive.data.js`', async () => {
|
||||
const { build, readSource, writeSource } = await setupTestEngine(
|
||||
'fixtures/01-data-cascade/06-local-overwrite/docs',
|
||||
'fixtures/01-data-cascade/06-overwrite-local/docs',
|
||||
);
|
||||
await writeSource(
|
||||
'index.rocket.js',
|
||||
@@ -285,6 +285,66 @@ describe('Engine Data Cascade', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('06b: nested `recursive.data.js` overwrites data from `recursive.data.js`', async () => {
|
||||
const { build, readSource, writeSource } = await setupTestEngine(
|
||||
'fixtures/01-data-cascade/06b-overwrite-recursive/docs',
|
||||
);
|
||||
await writeSource(
|
||||
'index.rocket.js',
|
||||
"import { html } from 'lit';\nexport default () => html`index`;",
|
||||
);
|
||||
await writeSource(
|
||||
'components/index.rocket.js',
|
||||
"import { html } from 'lit';\nexport default () => html`components/index`;",
|
||||
);
|
||||
await writeSource(
|
||||
'components/tabs.rocket.js',
|
||||
"import { html } from 'lit';\nexport default () => html`components/tabs`;",
|
||||
);
|
||||
await build();
|
||||
|
||||
expect(readSource('index.rocket.js')).to.equal(
|
||||
[
|
||||
`/* START - Rocket auto generated - do not touch */`,
|
||||
"export const sourceRelativeFilePath = 'index.rocket.js';",
|
||||
"import { fromRoot, overwriteMe } from './recursive.data.js';",
|
||||
'export { fromRoot, overwriteMe };',
|
||||
`/* END - Rocket auto generated - do not touch */`,
|
||||
'',
|
||||
"import { html } from 'lit';",
|
||||
'export default () => html`index`;',
|
||||
].join('\n'),
|
||||
);
|
||||
|
||||
expect(readSource('components/index.rocket.js')).to.equal(
|
||||
[
|
||||
'/* START - Rocket auto generated - do not touch */',
|
||||
"export const sourceRelativeFilePath = 'components/index.rocket.js';",
|
||||
"import { fromRoot } from '../recursive.data.js';",
|
||||
"import { overwriteMe } from './recursive.data.js';",
|
||||
'export { fromRoot, overwriteMe };',
|
||||
'/* END - Rocket auto generated - do not touch */',
|
||||
'',
|
||||
"import { html } from 'lit';",
|
||||
'export default () => html`components/index`;',
|
||||
].join('\n'),
|
||||
);
|
||||
|
||||
expect(readSource('components/tabs.rocket.js')).to.equal(
|
||||
[
|
||||
'/* START - Rocket auto generated - do not touch */',
|
||||
"export const sourceRelativeFilePath = 'components/tabs.rocket.js';",
|
||||
"import { fromRoot } from '../recursive.data.js';",
|
||||
"import { overwriteMe } from './recursive.data.js';",
|
||||
'export { fromRoot, overwriteMe };',
|
||||
'/* END - Rocket auto generated - do not touch */',
|
||||
'',
|
||||
"import { html } from 'lit';",
|
||||
'export default () => html`components/tabs`;',
|
||||
].join('\n'),
|
||||
);
|
||||
});
|
||||
|
||||
it('07: injects a header into the markdown source file', async () => {
|
||||
const { build, readSource, writeSource } = await setupTestEngine(
|
||||
'fixtures/01-data-cascade/07-markdown/docs',
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/* START - Rocket auto generated - do not touch */
|
||||
export const sourceRelativeFilePath = 'components/index.rocket.js';
|
||||
import { fromRoot } from '../recursive.data.js';
|
||||
import { overwriteMe } from './recursive.data.js';
|
||||
export { fromRoot, overwriteMe };
|
||||
/* END - Rocket auto generated - do not touch */
|
||||
|
||||
import { html } from 'lit';
|
||||
export default () => html`components/index`;
|
||||
@@ -0,0 +1 @@
|
||||
export const overwriteMe = false;
|
||||
@@ -0,0 +1,9 @@
|
||||
/* START - Rocket auto generated - do not touch */
|
||||
export const sourceRelativeFilePath = 'components/tabs.rocket.js';
|
||||
import { fromRoot } from '../recursive.data.js';
|
||||
import { overwriteMe } from './recursive.data.js';
|
||||
export { fromRoot, overwriteMe };
|
||||
/* END - Rocket auto generated - do not touch */
|
||||
|
||||
import { html } from 'lit';
|
||||
export default () => html`components/tabs`;
|
||||
@@ -0,0 +1,8 @@
|
||||
/* START - Rocket auto generated - do not touch */
|
||||
export const sourceRelativeFilePath = 'index.rocket.js';
|
||||
import { fromRoot, overwriteMe } from './recursive.data.js';
|
||||
export { fromRoot, overwriteMe };
|
||||
/* END - Rocket auto generated - do not touch */
|
||||
|
||||
import { html } from 'lit';
|
||||
export default () => html`index`;
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "index.rocket.js",
|
||||
"menuLinkText": "index.rocket.js",
|
||||
"url": "/",
|
||||
"outputRelativeFilePath": "index.html",
|
||||
"sourceRelativeFilePath": "index.rocket.js",
|
||||
"level": 0,
|
||||
"fromRoot": true,
|
||||
"overwriteMe": true,
|
||||
"children": [
|
||||
{
|
||||
"name": "components/index.rocket.js",
|
||||
"menuLinkText": "components/index.rocket.js",
|
||||
"url": "/components/",
|
||||
"outputRelativeFilePath": "components/index.html",
|
||||
"sourceRelativeFilePath": "components/index.rocket.js",
|
||||
"level": 1,
|
||||
"fromRoot": true,
|
||||
"overwriteMe": false,
|
||||
"children": [
|
||||
{
|
||||
"name": "components/tabs.rocket.js",
|
||||
"menuLinkText": "components/tabs.rocket.js",
|
||||
"url": "/components/tabs/",
|
||||
"outputRelativeFilePath": "components/tabs/index.html",
|
||||
"sourceRelativeFilePath": "components/tabs.rocket.js",
|
||||
"level": 2,
|
||||
"fromRoot": true,
|
||||
"overwriteMe": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
export const fromRoot = true;
|
||||
export const overwriteMe = true;
|
||||
Reference in New Issue
Block a user