UNPKG

3.35 kBJavaScriptView Raw
1require('babel-register')({
2 presets: ['env']
3});
4
5import fs from 'fs';
6import resolve from 'rollup-plugin-node-resolve';
7import commonjs from 'rollup-plugin-commonjs';
8import globals from 'rollup-plugin-node-globals';
9import builtins from 'rollup-plugin-node-builtins';
10import Inflector from 'i';
11import { classify, dasherize } from 'ember-cli-string-utils';
12import virtual from 'rollup-plugin-virtual';
13
14const { pluralize } = Inflector();
15
16const modelFileNames = fs.readdirSync(`${process.cwd()}/memserver/models`);
17const targetMemServerPath = `${process.cwd()}/memserver/server.js`;
18
19if (!fs.existsSync(targetMemServerPath)) {
20 throw new Error('memserver/server.js doesnt exist! Please create a memserver/server.js to use MemServer');
21}
22
23const IS_DEVELOPMENT = process.env.BUILD === 'development';
24const targetInput = IS_DEVELOPMENT ? 'lib/browser.js' : `${require.resolve('memserver')}/../browser.js`;
25
26export 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
58function 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
68function 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
78function 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
90function 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}