Repository: pboyer/flood
Branch: master
Commit: c86ab0b96034
Files: 194
Total size: 1.2 MB
Directory structure:
gitextract_88nis6rk/
├── .bowerrc
├── .editorconfig
├── .gitattributes
├── .gitignore
├── Gruntfile.js
├── LICENSE
├── README.md
├── app/
│ ├── .htaccess
│ ├── 404.html
│ ├── app.html
│ ├── customizer.html
│ ├── index.html
│ ├── package.json
│ ├── robots.txt
│ ├── scripts/
│ │ ├── collections/
│ │ │ ├── Connections.js
│ │ │ ├── Nodes.js
│ │ │ ├── SearchElements.js
│ │ │ ├── WorkspaceBrowserElements.js
│ │ │ └── Workspaces.js
│ │ ├── config.js
│ │ ├── customizer.js
│ │ ├── lib/
│ │ │ ├── OrbitControls.js
│ │ │ ├── Viewport.js
│ │ │ └── flood/
│ │ │ ├── async.js
│ │ │ ├── csg.js
│ │ │ ├── flood.js
│ │ │ ├── flood_csg.js
│ │ │ ├── flood_runner.js
│ │ │ ├── scheme.js
│ │ │ ├── scheme_async.js
│ │ │ └── test/
│ │ │ ├── flood_csg_test.js
│ │ │ ├── flood_lambda_test.js
│ │ │ ├── flood_runner_test.html
│ │ │ ├── flood_test.js
│ │ │ ├── scheme_async_test.html
│ │ │ └── scheme_eval_async_test.js
│ │ ├── main.js
│ │ ├── models/
│ │ │ ├── App.js
│ │ │ ├── Connection.js
│ │ │ ├── Feedback.js
│ │ │ ├── GeometryExport.js
│ │ │ ├── Help.js
│ │ │ ├── Login.js
│ │ │ ├── Marquee.js
│ │ │ ├── Node.js
│ │ │ ├── Runner.js
│ │ │ ├── Search.js
│ │ │ ├── SearchElement.js
│ │ │ ├── Share.js
│ │ │ ├── Workspace.js
│ │ │ ├── WorkspaceBrowser.js
│ │ │ ├── WorkspaceBrowserElement.js
│ │ │ ├── WorkspaceResolver.js
│ │ │ └── customizer/
│ │ │ └── CustomizerApp.js
│ │ └── views/
│ │ ├── AppView.js
│ │ ├── ConnectionView.js
│ │ ├── FeedbackView.js
│ │ ├── HelpView.js
│ │ ├── LoginView.js
│ │ ├── MarqueeView.js
│ │ ├── NodeViews/
│ │ │ ├── Base.js
│ │ │ ├── CustomNode.js
│ │ │ ├── Input.js
│ │ │ ├── NodeViews.js
│ │ │ ├── Num.js
│ │ │ ├── Output.js
│ │ │ ├── Script.js
│ │ │ ├── ThreeCSG.js
│ │ │ └── Watch.js
│ │ ├── SearchElementView.js
│ │ ├── SearchView.js
│ │ ├── ShareView.js
│ │ ├── WorkspaceBrowserElementView.js
│ │ ├── WorkspaceBrowserView.js
│ │ ├── WorkspaceControlsView.js
│ │ ├── WorkspaceTabView.js
│ │ ├── WorkspaceView.js
│ │ └── customizer/
│ │ ├── CustomizerAppView.js
│ │ ├── CustomizerHeaderView.js
│ │ ├── CustomizerViewerView.js
│ │ ├── CustomizerWorkspaceView.js
│ │ └── widgets/
│ │ ├── Base.js
│ │ ├── Geometry.js
│ │ └── Number.js
│ └── styles/
│ ├── bootstrap.css
│ ├── customizer.css
│ └── main.css
├── bower.json
├── package.json
├── server/
│ ├── .gitignore
│ ├── .travis.yml
│ ├── app.js
│ ├── cluster_app.js
│ ├── config/
│ │ ├── passport.js
│ │ └── secrets.js
│ ├── controllers/
│ │ ├── api.js
│ │ ├── contact.js
│ │ ├── exampleWorkspaces.js
│ │ ├── feedback.js
│ │ ├── flood.js
│ │ ├── home.js
│ │ ├── user.js
│ │ └── workspaces.js
│ ├── models/
│ │ ├── Session.js
│ │ ├── User.js
│ │ └── Workspace.js
│ ├── package.json
│ ├── public/
│ │ ├── css/
│ │ │ ├── lib/
│ │ │ │ ├── animate.css
│ │ │ │ ├── bootstrap/
│ │ │ │ │ ├── alerts.less
│ │ │ │ │ ├── badges.less
│ │ │ │ │ ├── bootstrap.less
│ │ │ │ │ ├── breadcrumbs.less
│ │ │ │ │ ├── button-groups.less
│ │ │ │ │ ├── buttons.less
│ │ │ │ │ ├── carousel.less
│ │ │ │ │ ├── close.less
│ │ │ │ │ ├── code.less
│ │ │ │ │ ├── component-animations.less
│ │ │ │ │ ├── dropdowns.less
│ │ │ │ │ ├── forms.less
│ │ │ │ │ ├── glyphicons.less
│ │ │ │ │ ├── grid.less
│ │ │ │ │ ├── input-groups.less
│ │ │ │ │ ├── jumbotron.less
│ │ │ │ │ ├── labels.less
│ │ │ │ │ ├── list-group.less
│ │ │ │ │ ├── media.less
│ │ │ │ │ ├── mixins.less
│ │ │ │ │ ├── modals.less
│ │ │ │ │ ├── navbar.less
│ │ │ │ │ ├── navs.less
│ │ │ │ │ ├── normalize.less
│ │ │ │ │ ├── pager.less
│ │ │ │ │ ├── pagination.less
│ │ │ │ │ ├── panels.less
│ │ │ │ │ ├── popovers.less
│ │ │ │ │ ├── print.less
│ │ │ │ │ ├── progress-bars.less
│ │ │ │ │ ├── responsive-utilities.less
│ │ │ │ │ ├── scaffolding.less
│ │ │ │ │ ├── tables.less
│ │ │ │ │ ├── theme.less
│ │ │ │ │ ├── thumbnails.less
│ │ │ │ │ ├── tooltip.less
│ │ │ │ │ ├── type.less
│ │ │ │ │ ├── utilities.less
│ │ │ │ │ ├── variables.less
│ │ │ │ │ └── wells.less
│ │ │ │ └── bootstrap-social.less
│ │ │ ├── styles.less
│ │ │ └── themes/
│ │ │ ├── default.less
│ │ │ ├── flatly.less
│ │ │ └── ios7.less
│ │ ├── fonts/
│ │ │ └── FontAwesome.otf
│ │ └── js/
│ │ ├── application.js
│ │ └── main.js
│ ├── test/
│ │ ├── app.js
│ │ ├── mocha.opts
│ │ └── models.js
│ └── views/
│ ├── 404.jade
│ ├── account/
│ │ ├── forgot.jade
│ │ ├── login.jade
│ │ ├── profile.jade
│ │ ├── reset.jade
│ │ └── signup.jade
│ ├── api/
│ │ ├── aviary.jade
│ │ ├── clockwork.jade
│ │ ├── facebook.jade
│ │ ├── foursquare.jade
│ │ ├── github.jade
│ │ ├── index.jade
│ │ ├── lastfm.jade
│ │ ├── linkedin.jade
│ │ ├── nyt.jade
│ │ ├── paypal.jade
│ │ ├── scraping.jade
│ │ ├── steam.jade
│ │ ├── tumblr.jade
│ │ ├── twilio.jade
│ │ ├── twitter.jade
│ │ └── venmo.jade
│ ├── contact.jade
│ ├── home.jade
│ ├── layout.jade
│ └── partials/
│ ├── flash.jade
│ ├── footer.jade
│ └── navigation.jade
├── test/
│ ├── index.html
│ ├── lib/
│ │ ├── chai.js
│ │ ├── expect.js
│ │ └── mocha/
│ │ ├── mocha.css
│ │ └── mocha.js
│ └── spec/
│ └── test.js
└── todo.txt
================================================
FILE CONTENTS
================================================
================================================
FILE: .bowerrc
================================================
{
"directory": "app/bower_components"
}
================================================
FILE: .editorconfig
================================================
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# editorconfig.org
root = false
[*]
# Change these settings to your own preference
indent_style = space
indent_size = 2
# We recommend you to keep these unchanged
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
================================================
FILE: .gitattributes
================================================
* text=auto
================================================
FILE: .gitignore
================================================
node_modules
temp
.sass-cache
app/bower_components
.tmp/
dist_desktop
.DS_Store
dist
================================================
FILE: Gruntfile.js
================================================
'use strict';
var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet;
var mountFolder = function (connect, dir) {
return connect.static(require('path').resolve(dir));
};
// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// use this if you want to match all subfolders:
// 'test/spec/**/*.js'
// templateFramework: 'lodash'
module.exports = function (grunt) {
// load all grunt tasks
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
// configurable paths
var yeomanConfig = {
app: 'app',
dist: 'dist'
};
grunt.initConfig({
yeoman: yeomanConfig,
clean: {
dist: ['.tmp', '<%= yeoman.dist %>/*'],
server: '.tmp'
},
// This task uses James Burke's excellent r.js AMD builder to take all
// modules and concatenate them into a single file.
requirejs: {
release: {
options: {
mainConfigFile: "app/scripts/config.js",
include: ["main"],
insertRequire: ["main"],
out: "dist/source.min.js",
optimize: "uglify",
// Since we bootstrap with nested `require` calls this option allows
// R.js to find them.
findNestedDependencies: true,
// Include a minimal AMD implementation shim.
name: "almond",
// Setting the base url to the distribution directory allows the
// Uglify minification process to correctly map paths for Source
// Maps.
baseUrl: "app/scripts",
// Wrap everything in an IIFE.
wrap: true,
// Do not preserve any license comments when working with source
// maps. These options are incompatible.
preserveLicenseComments: true
}
},
customizer: {
options: {
mainConfigFile: "app/scripts/config.js",
include: ["customizer"],
insertRequire: ["customizer"],
out: "dist/customizer.min.js",
optimize: "uglify",
findNestedDependencies: true,
name: "almond",
baseUrl: "app/scripts",
wrap: true,
preserveLicenseComments: true
}
}
},
imagemin: {
dist: {
files: [{
expand: true,
cwd: '<%= yeoman.app %>/images',
src: '{,*/}*.{png,jpg,jpeg}',
dest: '<%= yeoman.dist %>/images'
}]
},
jqueryui: {
files: [{
expand: true,
flatten: true,
cwd: '<%= yeoman.app %>',
src: 'bower_components/jquery.ui/themes/base/images/*.png',
dest: '<%= yeoman.dist %>/images'
}]
}
},
cssmin: {
dist: {
files: {
'<%= yeoman.dist %>/app.min.css': [
'.tmp/styles/{,*/}*.css',
'<%= yeoman.app %>/bower_components/jquery.ui/themes/base/*.css',
'<%= yeoman.app %>/bower_components/components-font-awesome/css/font-awesome.min.css',
'<%= yeoman.app %>/styles/bootstrap.css',
'<%= yeoman.app %>/bower_components/CodeMirror/lib/codemirror.css',
'<%= yeoman.app %>/bower_components/CodeMirror/addon/hint/show-hint.css',
'<%= yeoman.app %>/styles/main.css',
],
'<%= yeoman.dist %>/customizer.min.css': [
'.tmp/styles/{,*/}*.css',
'<%= yeoman.app %>/bower_components/jquery.ui/themes/base/*.css',
'<%= yeoman.app %>/bower_components/components-font-awesome/css/font-awesome.min.css',
'<%= yeoman.app %>/styles/bootstrap.css',
'<%= yeoman.app %>/styles/main.css',
'<%= yeoman.app %>/styles/customizer.css'
]
}
}
},
copy: {
dist: {
files: [{
expand: true,
dot: true,
cwd: '<%= yeoman.app %>',
dest: '<%= yeoman.dist %>',
src: [
'*.{ico,txt}',
'.htaccess',
'*.html',
'*.json',
'images/{,*/}*.{webp,gif,png}',
'bower_components/jquery/jquery.js',
'bower_components/components-font-awesome/css/font-awesome.min.css',
'bower_components/components-font-awesome/fonts/*.{ttf,eot,svg,woff,otf}',
'scripts/lib/flood/*.js'
]
}]
},
fonts: {
files: [{
expand: true,
dot: true,
flatten: true,
cwd: '<%= yeoman.app %>',
dest: '<%= yeoman.dist %>/fonts',
src: [
'bower_components/components-font-awesome/fonts/*.{ttf,eot,svg,woff,otf}'
]
}]
}
},
bower: {
all: {
rjsConfig: '<%= yeoman.app %>/scripts/main.js'
}
},
processhtml: {
release: {
files: {
"dist/app.html": ["app/app.html"],
"dist/customizer.html": ["app/customizer.html"]
}
}
},
nodewebkit: {
options: {
version: '0.8.1',
build_dir: './dist_desktop', // Where the build version of my node-webkit app is saved
mac: true, // We want to build it for mac
win: true, // We want to build it for win
linux32: false, // We don't need linux32
linux64: false // We don't need linux64
},
src: ['./dist/**'] // Your node-wekit app
}
});
grunt.registerTask('build', [
'clean:dist',
'requirejs',
'imagemin',
'cssmin',
'copy',
'processhtml'
]);
grunt.registerTask('desktop', [
'clean:dist',
'requirejs',
'imagemin',
'cssmin',
'copy',
'processhtml',
'nodewebkit'
]);
grunt.registerTask('default', [
'build'
]);
};
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) Peter Boyer 2013
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: README.md
================================================

## flood
### What is it?
flood is a [dataflow](http://en.wikipedia.org/wiki/Dataflow_programming)-style visual programming language based on Scheme written in JavaScript. flood runs in a browser and as a standalone application on all platforms via [node-webkit](https://github.com/rogerwang/node-webkit).
### Features
* Constructive solid geometry - Cube, cylinder, sphere, union, intersect, subtract
* Formula node - evaluate javascript in a node
* Never save your work
* Fast node library search
* Undo/redo across user sessions
* Copy/paste
* Multiple workspaces
* Async evaluation
* Partial function application
* "Always on" continuous execution
flood, like early versions of [Dynamo](http://github.com/ikeough/Dynamo), is based on Scheme and thus has many of the features of that language. It uses a [lightweight scheme interpreter](http://github.com/pboyer/scheme.js) I wrote called scheme.js.
### Getting started
The flood app is scaffolded with [Yeoman](http://yeoman.io/), uses [Grunt](http://gruntjs.com/) for task management and [Bower](http://bower.io/) for web package management. If you're not familiar with these tools, you should take a look at the docs and get them installed.
flood uses [require.js](http://requirejs.org/) to manage dependencies between JavaScript files and [backbone.js](http://backbonejs.org/) to stick it all together.
flood also has a server written in node.js that handles user authentication and model synchronization.
#### Installing dependencies for the app
To install all of the dependencies for the flood app, run the following commands in the root directory:
bower install
npm install
This will install all of the development dependencies for Grunt and all of the public dependencies with bower.
#### Installing dependencies for the server
To install all of the node.js dependencies for the flood server, run the following commands in the "server" directory:
npm install
You will also need to install MongoDB and run an instance on port 27017, the default port for MongoDB. You can get MongoDB [here](http://www.mongodb.org/downloads).
#### Running the server
For development, I recommend using the great nodemon tool:
npm install -g nodemon
Go to the "server" directory and run:
nodemon app.js
You can also run the server using:
node app.js
#### Building for the web (outdated)
The entire app can be compressed into lightweight, minified, and concatenated css, js, and html files using Grunt:
grunt
#### Building for the desktop
flood can be used as a standalone application via node-webkit. Just do this:
grunt desktop
This will generate binaries for use on Mac and Windows in the dist_desktop folder.
### License
The MIT License (MIT)
Copyright (c) Peter Boyer 2014-2020
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: app/.htaccess
================================================
# Apache configuration file
# httpd.apache.org/docs/2.2/mod/quickreference.html
# Note .htaccess files are an overhead, this logic should be in your Apache
# config if possible: httpd.apache.org/docs/2.2/howto/htaccess.html
# Techniques in here adapted from all over, including:
# Kroc Camen: camendesign.com/.htaccess
# perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/
# Sample .htaccess file of CMS MODx: modxcms.com
# ----------------------------------------------------------------------
# Better website experience for IE users
# ----------------------------------------------------------------------
# Force the latest IE version, in various cases when it may fall back to IE7 mode
# github.com/rails/rails/commit/123eb25#commitcomment-118920
# Use ChromeFrame if it's installed for a better experience for the poor IE folk
Sorry, but the page you were trying to view does not exist.
It looks like this was the result of either: