1 | require('babel-register')({
|
2 | presets: ['env']
|
3 | });
|
4 |
|
5 | import fs from 'fs';
|
6 | import resolve from 'rollup-plugin-node-resolve';
|
7 | import commonjs from 'rollup-plugin-commonjs';
|
8 | import globals from 'rollup-plugin-node-globals';
|
9 | import builtins from 'rollup-plugin-node-builtins';
|
10 | import Inflector from 'i';
|
11 | import { classify, dasherize } from 'ember-cli-string-utils';
|
12 | import virtual from 'rollup-plugin-virtual';
|
13 |
|
14 | const { pluralize } = Inflector();
|
15 |
|
16 | const modelFileNames = fs.readdirSync(`${process.cwd()}/memserver/models`);
|
17 | const targetMemServerPath = `${process.cwd()}/memserver/server.js`;
|
18 |
|
19 | if (!fs.existsSync(targetMemServerPath)) {
|
20 | throw new Error('memserver/server.js doesnt exist! Please create a memserver/server.js to use MemServer');
|
21 | }
|
22 |
|
23 | const IS_DEVELOPMENT = process.env.BUILD === 'development';
|
24 | const targetInput = IS_DEVELOPMENT ? 'lib/browser.js' : `${require.resolve('memserver')}/../browser.js`;
|
25 |
|
26 | export default {
|
27 | input: targetInput,
|
28 | output: {
|
29 | file: IS_DEVELOPMENT ? 'dist/memserver.dist.js' : `${process.cwd()}/dist/memserver.dist.js`,
|
30 | format: 'iife'
|
31 | },
|
32 | name: 'MEMSERVER',
|
33 | footer: 'window.MemServer = MEMSERVER;',
|
34 | plugins: [
|
35 | virtual({
|
36 | '_memserver_models': generateInMemoryModelsImport(modelFileNames),
|
37 | '_memserver_fixtures': generateInMemoryFixturesImport(modelFileNames),
|
38 | '_memserver_initializer': generateInitializerImport(),
|
39 | '_memserver': `
|
40 | import server from '${process.cwd()}/memserver/server';
|
41 | export default server;`
|
42 | }),
|
43 | resolve({ jsnext: true }),
|
44 | commonjs({
|
45 | include: IS_DEVELOPMENT ? 'node_modules/**' : [
|
46 | `${require.resolve('memserver')}/../../node_modules/**`, 'node_modules/**'
|
47 | ],
|
48 | namedExports: {
|
49 | 'node_modules/ember-cli-string-utils/index.js': ['classify', 'underscore', 'dasherize'],
|
50 | 'node_modules/ember-inflector/index.js': ['singularize', 'pluralize']
|
51 | }
|
52 | }),
|
53 | globals(),
|
54 | builtins()
|
55 | ]
|
56 | };
|
57 |
|
58 | function generateInMemoryFixturesImport(modelFileNames) {
|
59 | const imports = modelFileNames.reduce((codeText, modelFileName) => {
|
60 | const modelName = classify(modelFileName.slice(0, -3));
|
61 |
|
62 | return codeText + `import ${modelName} from '${process.cwd()}/memserver/fixtures/${dasherize(pluralize(modelName))}';`;
|
63 | }, '');
|
64 |
|
65 | return imports.concat(createObjectFromModels(modelFileNames));
|
66 | }
|
67 |
|
68 | function generateInMemoryModelsImport(modelFileNames) {
|
69 | const imports = modelFileNames.reduce((codeText, modelFileName) => {
|
70 | const modelName = classify(modelFileName.slice(0, -3));
|
71 |
|
72 | return codeText + `import ${modelName} from '${process.cwd()}/memserver/models/${modelFileName}';`;
|
73 | }, '');
|
74 |
|
75 | return imports.concat(createObjectFromModels(modelFileNames));
|
76 | }
|
77 |
|
78 | function createObjectFromModels(modelFileNames) {
|
79 | return 'export default { ' + modelFileNames.reduce((codeText, modelFileName) => {
|
80 | const modelName = classify(modelFileName.slice(0, -3));
|
81 |
|
82 | if (codeText === '') {
|
83 | return modelName;
|
84 | }
|
85 |
|
86 | return [codeText, modelName].join(', ');
|
87 | }, '') + ' };';
|
88 | }
|
89 |
|
90 | function generateInitializerImport() {
|
91 | const initializerExists = fs.existsSync(`${process.cwd()}/memserver/initializer`);
|
92 |
|
93 | if (initializerExists) {
|
94 | return `import server from '${process.cwd()}/memserver/server';
|
95 | export default server;`;
|
96 | }
|
97 |
|
98 | return 'export default function(Models) {};';
|
99 | }
|