mirror of
https://github.com/storybookjs/storybook.git
synced 2025-04-02 05:03:44 +08:00
Source-loader: Add imports to top of file
This commit is contained in:
parent
b45f98af61
commit
bea119a459
@ -1,50 +0,0 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`insertAfterImports addon-notes 1`] = `
|
||||
"import React from 'react';
|
||||
|
||||
import BaseButton from '../components/BaseButton';
|
||||
import markdownNotes from './notes/notes.md';
|
||||
INSERT
|
||||
|
||||
|
||||
|
||||
const markdownString = '...';"
|
||||
`;
|
||||
|
||||
exports[`insertAfterImports imports 1`] = `
|
||||
"import './foo';
|
||||
import './bar';
|
||||
INSERT
|
||||
|
||||
|
||||
whatever;"
|
||||
`;
|
||||
|
||||
exports[`insertAfterImports multi-line imports 1`] = `
|
||||
"import 'foo';
|
||||
import {
|
||||
bar
|
||||
} from 'baz';
|
||||
INSERT
|
||||
|
||||
|
||||
whatever;"
|
||||
`;
|
||||
|
||||
exports[`insertAfterImports no imports 1`] = `
|
||||
"
|
||||
INSERT
|
||||
|
||||
foo bar;
|
||||
baz;"
|
||||
`;
|
||||
|
||||
exports[`insertAfterImports single-line imports 1`] = `
|
||||
"import 'foo';
|
||||
import { bar } from 'baz';
|
||||
INSERT
|
||||
|
||||
|
||||
whatever;"
|
||||
`;
|
@ -257,22 +257,6 @@ export function findDependencies(ast) {
|
||||
return { dependencies, storiesOfIdentifiers };
|
||||
}
|
||||
|
||||
export function endOfImports(ast) {
|
||||
let end = 0;
|
||||
|
||||
estraverse.traverse(ast, {
|
||||
fallback: 'iteration',
|
||||
enter: node => {
|
||||
patchNode(node);
|
||||
|
||||
if (node.type === 'ImportDeclaration') {
|
||||
end = Math.max(node.end, end);
|
||||
}
|
||||
},
|
||||
});
|
||||
return end;
|
||||
}
|
||||
|
||||
export function popParametersObjectFromDefaultExport(source, ast) {
|
||||
let splicedSource = source;
|
||||
let parametersSliceOfCode = '';
|
||||
|
@ -1,26 +1,5 @@
|
||||
import { getOptions } from 'loader-utils';
|
||||
import { readStory } from './dependencies-lookup/readAsObject';
|
||||
import { getRidOfUselessFilePrefixes } from './dependencies-lookup/getRidOfUselessFilePrefixes';
|
||||
import getParser from './abstract-syntax-tree/parsers';
|
||||
import { endOfImports } from './abstract-syntax-tree/traverse-helpers';
|
||||
|
||||
export function insertAfterImports(classLoader, insert, source) {
|
||||
const options = getOptions(classLoader) || {};
|
||||
let ast;
|
||||
try {
|
||||
ast = getParser(options.parser || classLoader.extension || 'javascript').parse(source);
|
||||
} catch (e) {
|
||||
// if not working, then we will fallback to not adding anything
|
||||
// perhaps the code was not written in javascript
|
||||
return source;
|
||||
}
|
||||
if (!ast) return `${insert}${source}`;
|
||||
const endOfImportsIndex = endOfImports(ast);
|
||||
const result = `${source.substring(0, endOfImportsIndex)}\n${insert}\n${source.substring(
|
||||
endOfImportsIndex
|
||||
)}`;
|
||||
return result;
|
||||
}
|
||||
|
||||
export function transform(inputSource) {
|
||||
return readStory(this, inputSource)
|
||||
@ -57,8 +36,7 @@ var __LOCAL_DEPENDENCIES__ = ${JSON.stringify(localDependencies)};
|
||||
// @ts-ignore
|
||||
var __IDS_TO_FRAMEWORKS__ = ${JSON.stringify(idsToFrameworks)};
|
||||
`;
|
||||
return insertAfterImports(this, preamble, source);
|
||||
// return `${preamble}${source}`;
|
||||
return `${preamble}\n${source}`;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -1,54 +0,0 @@
|
||||
import { insertAfterImports } from './build';
|
||||
|
||||
const insert = 'INSERT\n';
|
||||
|
||||
describe('insertAfterImports', () => {
|
||||
it('no imports', () => {
|
||||
const noImports = `
|
||||
foo bar;
|
||||
baz;
|
||||
`.trim();
|
||||
expect(insertAfterImports({}, insert, noImports)).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('imports', () => {
|
||||
const hasImports = `
|
||||
import './foo';
|
||||
import './bar';
|
||||
whatever;
|
||||
`.trim();
|
||||
expect(insertAfterImports({}, insert, hasImports)).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('single-line imports', () => {
|
||||
const hasImports = `
|
||||
import 'foo';
|
||||
import { bar } from 'baz';
|
||||
whatever;
|
||||
`.trim();
|
||||
expect(insertAfterImports({}, insert, hasImports)).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('multi-line imports', () => {
|
||||
const hasImports = `
|
||||
import 'foo';
|
||||
import {
|
||||
bar
|
||||
} from 'baz';
|
||||
whatever;
|
||||
`.trim();
|
||||
expect(insertAfterImports({}, insert, hasImports)).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('addon-notes', () => {
|
||||
const notesStory = `
|
||||
import React from 'react';
|
||||
|
||||
import BaseButton from '../components/BaseButton';
|
||||
import markdownNotes from './notes/notes.md';
|
||||
|
||||
const markdownString = '...';
|
||||
`.trim();
|
||||
expect(insertAfterImports({}, insert, notesStory)).toMatchSnapshot();
|
||||
});
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user