frintjs / frint Goto Github PK
View Code? Open in Web Editor NEWModular JavaScript framework for building scalable and reactive applications
Home Page: https://frint.js.org/
License: MIT License
Modular JavaScript framework for building scalable and reactive applications
Home Page: https://frint.js.org/
License: MIT License
Since we use Lerna for managing our monorepo, we benefit by keeping majority of our common devDependencies
in the root package.json
.
Packages like Babel
, ESLint
, etc are all listed as devDependencies
. Also also all site
related packages (like metalsmith
) are listed in root package.json
too.
But there are also some, which are not common across all packages:
http-server
(examples only)jsdom
(only frint-test-utils
need it, iirc)live-server
(examples only)react
(only frint-react
and frint-react-server
should need it)react-addons-test-utils
(only frint-react
and frint-react-server
should need it)react-dom
(only frint-react
and frint-react-server
should need it)rxjs
They should either be moved to appropriate packages as their own devDependencies
, or removed altogether (because examples have their own package.json
files now).
Right now we can do:
const Todo = createModel({...});
const todo = new Todo({ title: 'My First Todo' });
const title = todo.get('title'); // `My First Todo`
It would be beneficial for form management, if we can observe Model values too:
const title$ = todo.get$('title');
title$.subscribe(x => console.log(x));
todo.set('title', 'Updated title'); // prints out title in console
Then for handling forms in component, we could do something like this with frint-react
's observe
:
import React from 'react';
import { observe, streamProps } from 'frint-react';
const FormComponent = React.createClass({...});
export default observe(function () {
const todo = new Todo({ title: 'My todo' });
return streamProps()
.set(
todo.get$(),
todoAttributes => ({ todo: todoAttributes })
)
.get$();
})(FormComponent);
App names are very frequently used, and an integral part of inter-app communication.
Instead of doing:
app.getOption('name');
It's worth giving it a dedicated method:
app.getName();
Since name
in options
is a required key.
To be compatible with latest Webpack in root package.json
.
Upgrade ./examples/multiple-widgets
with latest Frint v1.0
Branch | Build failing π¨ |
---|---|
Dependency | jsdom |
Current Version | 9.11.0 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As jsdom is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
The new version differs by 9 commits .
e068779
Version 9.12.0
580e557
Fix clearTimeout in web workers
8838684
Fix event.stopImmediatePropagation()
5069d64
Update Option constructor and text/value for spec compliance
7f148e8
Preserve URL fragments across redirects in jsdom.env
0454f04
Enable support for the canvas-prebuilt package
ccbab03
Add Option element constructor
2161116
Remove the old defineSetter utility
79f5522
Make timer functions always return a positive integer
See the full diff.
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
Branch | Build failing π¨ |
---|---|
Dependency | alex |
Current Version | 4.0.1 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As alex is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
The new version differs by 14 commits0.
d9dee36
4.1.0
958ca7f
Remove Node@4, Node@5 from tests in Travis
3fc5e35
Update ava
, xo
da5b48a
Update remark, retext
4890f2d
Update update-notifier
2129ea7
Update ava
79208c5
Update nyc
92a2141
Update execa
dd31197
Update ava
73ada28
Update nyc
2ba08e7
Update execa
611422b
Update xo
3fa1d51
Add mention of all rules
6af0c22
Update vfile-sort
false
See the full diff
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
Upgrade ./examples/counter
with latest Frint v1.0
The root application is required to load and inject itself into the window global before any other child application can register. This prevents us from adding the async attribute to the script, which allows us to load multiple scripts in parallel.
// In index.html
<script src="https://example.com/assets/root.js"></script>
<script src="https://example.com/assets/childApp.js"></script>
// In root.js
window.app = new App();
render(window.app, containerElement);
// In childApp.js
window.app.registerApp(ChildApp, {
regions: ['main'],
});
The proposed changes would allow to load root and child apps asynchronously, but in a way that execution order is not guaranteed. Doing this would increase the time to first paint and would prevent the script from blocking any other script parsing and/or layout render.
We achieve this by injecting a placeholder array for the root app on each child app, when it's not currently available. When the root app is loaded, we replace the placeholder array with the root app. By adding a push
method to the Application API, we can emulate the array's own. This way, child apps don't need to be aware if they're pushing to an array or to the actual root application.
Prior Art: http://googlecode.blogspot.nl/2009/12/google-analytics-launches-asynchronous.html
// In index.html
// Note the addition of the async attribute
<script src="https://example.com/assets/rootApp.js" async></script>
<script src="https://example.com/assets/childApp.js" async></script>
// In root.js
const rootApp = new RootApp();
window.app.forEach(app => rootApp.push(app));
window.app = rootApp;
render(rootApp, containerElement);
// In childApp.js
window.app || window.app = [];
window.app.push({
app: ChildApp,
regions: ['main'],
});
Branch | Build failing π¨ |
---|---|
Dependency | babel-loader |
Current Version | 6.3.2 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As babel-loader is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
The new version differs by 9 commits .
36db87b
6.4.0
da6201a
Update CHANGELOG.md for 6.4.0
ca3318b
Optimize code after merge of #398
cd10945
Update yarn.lock
a8fd06e
Sort package.json
1fbbdf3
added metadata passing from babel to webpack (#398)
2fbcc01
document globalOptions (#365)
9ea739f
Docs: change babel-preset-es2015 to babel-preset-env (#404) [skip ci]
931c619
Update CHANGELOG.md
See the full diff.
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
Branch | Build failing π¨ |
---|---|
Dependency | webpack |
Current Version | 2.4.1 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As webpack is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
hashSalt
to schemasourceMappingURL
, which caused issues with some toolsThe new version differs by 81 commits0.
bf3652b
2.5.0
cd1cd29
Merge pull request #4815 from webpack/bugfix/extract-async-initial
b45588b
CommonsChunkPlugin in async mode doesn't select initial chunks
8bab88c
Merge pull request #4814 from webpack/test/move-entry
a244879
add testcase for moving entry modules into the commons chunk
85dc98f
Merge pull request #4813 from JLHwung/perf/date-now
6afc397
perf: use Date.now() instead of new Date().getTime()
94d0641
perf: use Date.now() instead of +new Date()
c91ba49
Merge pull request #4791 from deificx/master
94ba75f
Merge pull request #4794 from ndresx/disable-manifest-json-pretty-print
84ea1ff
added error to stats.moduleTrace test name to trigger test cases corretly
8ad4386
test cases for stats.moduleTrace option
958156a
moduleTrace added to webpackOptionsSchema.json
de87f93
Disable manifest.json pretty print
4131013
rename stats.stackTrace to stats.moduleTrace
There are 81 commits in total.
See the full diff
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
Branch | Build failing π¨ |
---|---|
Dependency | mocha |
Current Version | 3.3.0 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As mocha is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
Mocha is now moving to a quicker release schedule: when non-breaking changes are merged, a release should happen that week.
This week's highlights:
allowUncaught
added to commandline as --allow-uncaught
(and bugfixed)--no-warnings
and --trace-warnings
flags (@sonicdoe)The new version differs by 9 commits0.
7554b31
Add Changelog for v3.4.0
9f7f7ed
Add --trace-warnings
flag
92561c8
Add --no-warnings
flag
ceee976
lint test/integration/fixtures/simple-reporter.js
dcfc094
Revert "use semistandard
directly"
93392dd
no special case for macOS running Karma locally
4d1d91d
--allow-uncaught cli option
fb1e083
fix allowUncaught in browser
4ed3fc5
Add license report and scan status
false
See the full diff
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
Right now, app.render()
returns the Component class, so the method name feels misleading.
Refs #80
Create a new package in this repo called frint-preset-react
, and it will install these dependencies:
Besides only bringing the dependencies via npm install
, we can provide webpack.config.js
for generating dist files (which can even be pushed to npm, and later made available via unpkg CDN). IT would generate two files:
I am undecided about another preset called frint-preset-travix
, whether it should be in this repo or not.
This preset would extend frint-preset-react
, and also add:
Branch | Build failing π¨ |
---|---|
Dependency | uglify-js |
Current Version | 2.8.7 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As uglify-js is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
The new version differs by 7 commits .
144052c
v2.8.8
65c848c
include benchmark.js in test suite (#1564)
8a8a94a
fix deep cloning of labels (#1565)
8153b7b
transform function calls to IIFEs (#1560)
d787d70
avoid substitution of global variables (#1557)
3ac2421
collapse_vars: do not replace a constant in loop condition or init (#1562)
a9fc9dd
suppress semicolons after do/while (#1556)
See the full diff.
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
Because createClass
doesn't exist in frint
: https://github.com/Travix-International/frint/blob/master/packages/frint-compat/src/createService.js#L5
Same in createFactory
.
Will be nice to have an access to components props (which is passed by parent) in observe. This feature can allow to perform some actions, get some stuff from "store" according to passed value, or even simply wrap up third-party component without creating the new one.
This proposal is inspired by react-redux package which allow to do same things.
We've used in our application 'streamProps' for streaming props, but it's not mapping the updated store to props and as a result, in the widget we have outdated old props despite the actions and reducers work in correct way and state is correct. Here's the usage of the function:
return streamProps({}) .set( store.getState$(), state => state.carShow )
Branch | Build failing π¨ |
---|---|
Dependency | eslint |
Current Version | 3.17.0 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As eslint is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
operator-assignment
with parenthesized expression (fixes #8190) (#8197) (alberto)output
property to tests (#8195) (alberto)The new version differs by 7 commits .
af8f8b9
3.17.1
a6c12f3
Build: package.json and changelog update for 3.17.1
f8c8e6e
Build: change mock-fs path without SSH (fixes #8207) (#8208)
f713f11
Fix: nonblock-statement-body-position multiline error (fixes #8202) (#8203)
41e3d9c
Fix: operator-assignment
with parenthesized expression (fixes #8190) (#8197)
5e3bca7
Chore: add eslint-plugin-eslint-plugin (#8198)
580da36
Chore: add missing output
property to tests (#8195)
See the full diff.
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
Show developers how Redux can be used with Frint.
Create an example demonstrating css-modules.
Branch | Build failing π¨ |
---|---|
Dependency | nyc |
Current Version | 10.3.1 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As nyc is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
The new version differs by 2 commits0.
e062a86
chore(release): 10.3.2
213206f
fix: we should not create a cache folder if cache is false (#567)
false
See the full diff
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
See if ReactRouter can be implemented at all with Frint. I am mainly worried about context
being hijacked.
Sometimes it is like, from one Widget, I would like to know if another Widget is available or not, and then do something.
app.waitUntilMounted('anotherAppsName', 5000)
.then(function (anotherAppInstance) {
// found `anotherApp` within 5 seconds of waiting
})
.catch(function () {
// 5 seconds waiting period has passed
});
Can possibly be done as an Observable, instead of Promise to allow it to be cancellable on demand.
At the moment, any App instance can register other Apps:
myAppInstance.registerApp(SomeOtherApp);
We primarily want only Root Apps to be able to register other apps. We can do it with an API like this:
import { createApp } from 'frint';
const RootApp = createApp({
registerable: true, // by default, it will be `false`
});
OR, we can possibly go ahead with a decorator-like API:
import { createApp, makeItRegisterable } from 'frint';
const RootApp = createApp({});
export default makeItRegisterable()(RootApp);
Doing so means, only those Apps we explicitly want to be able to register other Apps, will allow methods like .registerApp()
.
Branch | Build failing π¨ |
---|---|
Dependency | coveralls |
Current Version | 2.11.16 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As coveralls is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
Adds branch coverage data to Coveralls API post.
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
Should we add preinstall
script to main package.json
for easy installing node modules for all packages before installing root modules?
Add a search bar to the documentation to be able to search.
An example can be the search bar used in Gitbook, for example here: https://codiechanel.gitbooks.io/gitbook-demo/content/
And also see how we can keep things backwards compatible with React v0.14.
Instead of developers explicitly requesting for a particular Service of Factory, let them request for the instance just by their name (without having to know whether it is a Service or a Factory).
Example API (doesn't mean it will be the final API):
import FooService from './services/Foo';
import BarFactory from './factories/Bar';
const App = createApp({
providers: {
foo: FooService,
bar: BarFactory
}
});
const app = new App();
const fooService = app.get('foo'); // returns service
const barFactory = app.get('bar'); // returns factory
// same way, mapToProps() can also have `providers` key:
const ContainerComponent = mapToProps({
providers: {
foo: 'foo',
bar: 'bar',
}
})(RootComponent);
Branch | Build failing π¨ |
---|---|
Dependency | babel-core |
Current Version | 6.23.1 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As babel-core is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
Branch | Build failing π¨ |
---|---|
Dependency | babel-register |
Current Version | 6.23.0 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As babel-register is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
Region is a feature mainly found in frint-react
package. So frint
package itself doesn't need to have it baked in.
Branch | Build failing π¨ |
---|---|
Dependency | babel-core |
Current Version | 6.18.2 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As babel-core is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
If mapToProps
is called for only binding self state
, it doesn't really need to bind data for shared
states too unless requested.
For example, if this is the implementation of a Root
component:
mapToProps({
state(state) {
return {
counter: state.counter.value
};
}
})(RootComponent);
then, we don't need to listen to shared
states from other App instances.
Implement a /packages
page in the site, that lists all npm packages with the keyword frint
.
Inspiration can be taken from: http://gulpjs.com/plugins/
NPM search can be made against https://npmsearch.com/
Docs for REST API usage: https://github.com/nodesource/npmsearch#api
Because otherwise the dependency versions in frint-preset-travix/package.json
won't be pinned like we want, to control what goes to production for Travix.
Create a FrintJS example following http://todomvc.com/, which is the community standard for recreating the same application with same behaviour, using various frameworks.
Drop usage of http-server
and remove it from root package.json: https://github.com/Travix-International/frint/blob/02266ff86d8034f07db3ad48836966ee2d648176/package.json#L63
And use live-server
instead.
It would be nice to add smth like onLoad
event for app when it's just being loaded to page (when FRINT_INIT action is dispatched, not when beforeMount is called)
we have now a problem with subscribing for message broker.
Branch | Build failing π¨ |
---|---|
Dependency | js-yaml |
Current Version | 3.8.3 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As js-yaml is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
The new version differs by 5 commits0.
3de650d
3.8.4 released
57af257
Browser files rebuild
0ecfea0
deps update
9e26400
Merge pull request #343 from onebytegone/fix_342_array_eol_space
66e07b2
Prevent space after dash for arrays that wrap
false
See the full diff
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
Branch | Build failing π¨ |
---|---|
Dependency | rxjs |
Current Version | 5.3.0 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As rxjs is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
Likely a bug, or I am mistaken. But needs to be confirmed.
const INITIAL_STATE = {
foo: 'bar'
};
function myReducer(state = INITIAL_STATE, action) {
// ...
}
initialState
key, with data that one of the reducer expects:const Store = createStore({
reducer: combinedReducer
});
const store = new Store();
Branch | Build failing π¨ |
---|---|
Dependency | eslint-plugin-babel |
Current Version | 4.1.0 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As eslint-plugin-babel is βonlyβ a devDependency of this project it might not break production or downstream projects, but βonlyβ your build or test tools β preventing new deploys or publishes.
I recommend you give this issue a high priority. Iβm sure you can resolve this πͺ
The new version differs by 4 commits .
14b2765
4.1.1
6f2faae
Merge pull request #123 from daltones/master
ba479cf
Typo: remove trailing spaces
dcf5587
Deprecate rule no-await-in-loop
See the full diff.
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot π΄
Right now, we can render multiple Widgets inside a Region. It would be nice to control the ordering of the Widgets too. Right now, there is no clear way of predicting it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.