Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .flowconfig
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
[ignore]
; Mock files don't need to be type checked
.*/react-cosmos-voyager/src/use-cases/.*
💩 Ignore packages with type issues
.*/node_modules/graphql/.*
.*/node_modules/apollo-client/.*
.*/node_modules/apollo-link-core/.*
.*/node_modules/react-apollo/.*
.*/node_modules/cypress/.*

; React Native 🙄
; https://github.com/facebook/react-native/issues/19797
.*/node_modules/react-native/Libraries/react-native/react-native-implementation.js
.*/node_modules/xdl/build/detach/AndroidShellApp.js.flow

[include]

Expand Down
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ npm-debug.log
yarn-error.log

packages/*/dist
examples/local-state/cosmos-export
examples/webpack-dll/build

coverage
cypress/screenshots
Expand Down
12 changes: 8 additions & 4 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,12 @@
- [ ] Create new App file that forks between App.dev and App.cosmos
- [ ] Add package.json script
- [ ] RN UI
- [ ] Add support for websocket communication (choose between sockets or postMessage)
- [ ] Create RN-specific onboarding screen
- [x] Add support for websocket communication (choose between sockets or postMessage)
- [ ] Create RN-specific onboarding screens
- [ ] Test socket transport
- [ ] RN loader
- [ ] Extract non ReactDOM-specific core from react-cosmos-loader
- [ ] Create RN loader and proxies
- [x] Extract non ReactDOM-specific core from react-cosmos-loader
- [x] Create RN loader
- [ ] Check if existing proxies are compatible
- [ ] Test socket transport
- [ ] Create React Native App example
2 changes: 1 addition & 1 deletion examples/browserify/loader.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { mount } from 'react-cosmos-loader';
import { mount } from 'react-cosmos-loader/dom';
import { prepareOldSchoolFixtures } from './prepare-modules';

module.exports = mount({
Expand Down
1 change: 1 addition & 0 deletions examples/browserify/playground.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@
const mountPlayground = require('react-cosmos-playground');

module.exports = mountPlayground({
platform: 'web',
loaderUri: 'http://localhost:8990/'
});
47 changes: 9 additions & 38 deletions examples/browserify/prepare-modules.js
Original file line number Diff line number Diff line change
@@ -1,33 +1,28 @@
// @flow

import { importModule } from 'react-cosmos-shared';
import {
getNormalizedFixtureModules,
getOldSchoolFixturesFromNewStyleComponents
} from 'react-cosmos-shared';
import { getComponents } from 'react-cosmos-voyager2/client';

const { keys } = Object;

const rawFixtureModules = require('./components/__fixtures__/**/*.js', {
const fixtureModules = require('./components/__fixtures__/**/*.js', {
mode: 'hash',
resolve: ['path']
});

export function prepareOldSchoolFixtures() {
const fixtureModules = getNormalizedModules(rawFixtureModules);
const fixtureFiles = getFixtureFilesFromModules(fixtureModules);
const components = getComponents({ fixtureFiles, fixtureModules });
const components = getComponents({
fixtureFiles,
fixtureModules: getNormalizedFixtureModules(fixtureModules, fixtureFiles)
});

return getOldSchoolFixturesFromNewStyleComponents(components);
}

function getNormalizedModules(modules) {
return keys(modules).reduce(
(acc, relPath) => ({
...acc,
[relToAbsPath(relPath)]: importModule(modules[relPath])
}),
{}
);
}

function getFixtureFilesFromModules(modules) {
return keys(modules).map(filePath => {
return {
Expand All @@ -36,27 +31,3 @@ function getFixtureFilesFromModules(modules) {
};
});
}

function getOldSchoolFixturesFromNewStyleComponents(newStyleComponents) {
const fixtures = {};

newStyleComponents.forEach(c => {
const componentName = getObjectPath(c);
fixtures[componentName] = {};

c.fixtures.forEach(f => {
const fixtureName = getObjectPath(f);
fixtures[componentName][fixtureName] = f.source;
});
});

return fixtures;
}

function relToAbsPath(relPath) {
return relPath.slice(1);
}

function getObjectPath(obj) {
return obj.namespace ? `${obj.namespace}/${obj.name}` : obj.name;
}
1 change: 1 addition & 0 deletions examples/local-state/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cosmos-export
2 changes: 1 addition & 1 deletion examples/local-state/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"test": "node ../../node_modules/jest-cli/bin/jest.js --watch --config ../../jest.config.json"
},
"dependencies": {
"async-until": "^1.0.0",
"async-until": "^1.0.1",
"react-cosmos": "^4.5.0",
"react-cosmos-test": "^4.5.0"
},
Expand Down
1 change: 1 addition & 0 deletions examples/webpack-dll/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
build
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
"devDependencies": {
"after-pending-promises": "^0.0.1",
"after-pending-timers": "^0.0.1",
"async-until": "^1.0.0",
"async-until": "^1.0.1",
"babel-cli": "^6.26.0",
"babel-core": "^6.26.3",
"babel-eslint": "^8.2.3",
Expand Down Expand Up @@ -76,6 +76,7 @@
"prop-types": "^15.6.1",
"react": "^16.4.0",
"react-dom": "^16.4.0",
"react-native": "^0.55.4",
"react-test-renderer": "^16.4.0",
"request": "^2.87.0",
"request-promise-native": "^1.0.5",
Expand Down Expand Up @@ -127,6 +128,7 @@
"error",
"as-needed"
],
"valid-jsdoc": 0,
"unicorn/filename-case": 0,
"import/no-unassigned-import": 0,
"import/no-extraneous-dependencies": 0,
Expand Down
2 changes: 1 addition & 1 deletion packages/react-cosmos-apollo-proxy/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
},
"xo": false,
"devDependencies": {
"async-until": "^1.0.0",
"async-until": "^1.0.1",
"fetch-mock": "^5.12.2",
"graphql-tag": "^2.9.2"
}
Expand Down
48 changes: 26 additions & 22 deletions packages/react-cosmos-flow/loader.js
Original file line number Diff line number Diff line change
@@ -1,53 +1,57 @@
// @flow

export type LoaderOpts = {
import type { FixtureNames } from './module';

export type LoaderWebOpts = {
containerQuerySelector?: string
};

export type RuntimeErrorMessageData = {
export type LoaderNativeOpts = {
port: number
};

export type LoaderOpts = LoaderWebOpts | LoaderNativeOpts;

export type RuntimeErrorMessage = {
type: 'runtimeError'
};

export type LoaderReadyMessageData = {
export type LoaderReadyMessage = {
type: 'loaderReady',
fixtures: Object
fixtures: FixtureNames
};

export type FixtureListUpdateMessageData = {
export type FixtureListUpdateMessage = {
type: 'fixtureListUpdate',
fixtures: Object
fixtures: FixtureNames
};

export type FixtureSelectMessageData = {
export type FixtureSelectMessage = {
type: 'fixtureSelect',
component: string,
fixture: string
};

export type FixtureLoadMessageData = {
export type FixtureLoadMessage = {
type: 'fixtureLoad',
fixtureBody: Object
};

export type FixtureUpdateMessageData = {
export type FixtureUpdateMessage = {
type: 'fixtureUpdate',
fixtureBody: Object
};

export type FixtureEditMessageData = {
export type FixtureEditMessage = {
type: 'fixtureEdit',
fixtureBody: Object
};

export type LoaderMessageData =
| RuntimeErrorMessageData
| LoaderReadyMessageData
| FixtureListUpdateMessageData
| FixtureSelectMessageData
| FixtureLoadMessageData
| FixtureUpdateMessageData
| FixtureEditMessageData;

export type LoaderMessage = {
data: LoaderMessageData
};
export type LoaderMessage =
| RuntimeErrorMessage
| LoaderReadyMessage
| FixtureListUpdateMessage
| FixtureSelectMessage
| FixtureLoadMessage
| FixtureUpdateMessage
| FixtureEditMessage;
3 changes: 3 additions & 0 deletions packages/react-cosmos-loader/dom.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// @flow

exports.mount = require('./src/dom/mount').mount;
1 change: 0 additions & 1 deletion packages/react-cosmos-loader/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// @flow

exports.mount = require('./src/mount').mount;
exports.createContext = require('./src/create-context').createContext;
exports.Loader = require('./src/components/Loader').Loader;
3 changes: 3 additions & 0 deletions packages/react-cosmos-loader/native.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// @flow

exports.CosmosNativeLoader = require('./src/native').CosmosNativeLoader;
7 changes: 5 additions & 2 deletions packages/react-cosmos-loader/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,15 @@
"license": "MIT",
"main": "index.js",
"dependencies": {
"async-until": "^1.0.0",
"async-until": "^1.0.1",
"deep-equal": "^1.0.1",
"lodash.merge": "^4.6.1",
"prop-types": "^15.6.1",
"react-cosmos-shared": "^4.4.0",
"react-cosmos-state-proxy": "^4.4.0"
"react-cosmos-state-proxy": "^4.4.0",
"react-cosmos-voyager2": "^4.4.0",
"socket.io-client": "^2.1.1",
"url-parse": "^1.4.1"
},
"xo": false
}
Loading