pax_global_header 0000666 0000000 0000000 00000000064 12540313316 0014510 g ustar 00root root 0000000 0000000 52 comment=bbbb2fe293d4a8e274e13bb101f1b29677c8f143 jio-v3.0.0/ 0000775 0000000 0000000 00000000000 12540313316 0012457 5 ustar 00root root 0000000 0000000 jio-v3.0.0/.gitignore 0000664 0000000 0000000 00000000061 12540313316 0014444 0 ustar 00root root 0000000 0000000 #vi *.swp *~ #dolphin .directory node_modules/* jio-v3.0.0/Gruntfile.js 0000664 0000000 0000000 00000016110 12540313316 0014753 0 ustar 00root root 0000000 0000000 module.exports = function (grunt) { "use strict"; var LIVERELOAD_PORT, lrSnippet, livereloadMiddleware; // This is the default port that livereload listens on; // change it if you configure livereload to use another port. LIVERELOAD_PORT = 35729; // lrSnippet is just a function. // It's a piece of Connect middleware that injects // a script into the static served html. lrSnippet = require('connect-livereload')({ port: LIVERELOAD_PORT }); // All the middleware necessary to serve static files. livereloadMiddleware = function (connect, options) { return [ // Inject a livereloading script into static files. lrSnippet, // Serve static files. connect.static(options.base), // Make empty directories browsable. connect.directory(options.base) ]; }; grunt.loadNpmTasks('grunt-jslint'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-qunit'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-connect'); grunt.loadNpmTasks('grunt-open'); // Project configuration. grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), jslint: { npm: { src: ['package.json'], directives: { maxlen: 100, indent: 2, maxerr: 3, predef: [ 'module' ] } }, grunt: { src: ['Gruntfile.js'], directives: { es5: true, maxlen: 80, indent: 2, maxerr: 3, predef: [ 'module', 'require' ] } }, jio: { src: ['src/jio.js', 'src/jio/**/*.js', 'src/jio/*.js'], exclude: ['src/jio/intro.js', 'src/jio/outro.js'], directives: { maxlen: 80, indent: 2, maxerr: 3, nomen: true } }, jio_storages: { src: ['src/jio.storage/**/*.js'], directives: { maxlen: 80, indent: 2, maxerr: 3, predef: [ 'define', 'exports', 'require', 'window', 'jIO', 'complex_queries' ] } }, jiodate: { src: ['src/jio.date/jiodate.js'], directives: { maxlen: 80, indent: 2, maxerr: 3, predef: [ 'jIO' ] }, }, tests: { src: ['test/**/*.js'], directives: { maxlen: 80, indent: 2, maxerr: 3, predef: [ 'RSVP', 'QUnit', 'jIO' ] }, }, queries: { src: ['src/queries/core/**/*.js'], exclude: [ 'src/queries/begin.js', 'src/queries/end.js', 'src/queries/parser-begin.js', 'src/queries/parser-end.js' ], options: { errorsOnly: true } }, examples: { src: ['examples/*.js'], directives: { maxlen: 80, indent: 2, maxerr: 3, predef: [ 'window', 'RSVP', 'rJS', 'QUnit', 'jIO' ] }, }, }, concat: { options: { separator: ';' }, jio: { // duplicate files are ignored src: [ 'lib/uri/URI.js', 'node_modules/uritemplate/bin/uritemplate.js', // 'node_modules/moment/moment.js', 'lib/moment/moment-2.5.0.js', // 'src/*.js', // 'src/jio/intro.js', // // // core // 'src/jio/core/globals.js', // 'src/jio/core/util.js', // 'src/jio/core/**/*.js', // 'src/jio/features/**/*.js', // queries 'src/queries/core/globals.js', 'src/queries/core/query.js', 'src/queries/parser-begin.js', 'src/queries/build/parser.js', 'src/queries/parser-end.js', 'src/queries/core/tools.js', 'src/queries/core/**/*.js', 'src/jio.date/*.js', // 'src/jio/outro.js', 'src/jio.js', 'node_modules/rusha/rusha.js', 'src/jio.storage/replicatestorage.js', 'src/jio.storage/shastorage.js', 'src/jio.storage/uuidstorage.js', 'src/jio.storage/memorystorage.js', 'src/jio.storage/localstorage.js', 'src/jio.storage/davstorage.js', 'src/jio.storage/unionstorage.js', 'src/jio.storage/erp5storage.js', 'src/jio.storage/querystorage.js', 'src/jio.storage/drivetojiomapping.js', 'src/jio.storage/documentstorage.js', 'src/jio.storage/indexeddbstorage.js' ], dest: 'dist/<%= pkg.name %>-<%= pkg.version %>.js' // dest: 'jio.js' } }, uglify: { options: { banner: '/*! <%= pkg.name %> <%= pkg.version %> ' + '<%= grunt.template.today("yyyy-mm-dd") %> */\n' }, jio: { src: "<%= concat.jio.dest %>", dest: "dist/<%= pkg.name %>-<%= pkg.version %>.min.js" // }, // jio: { // src: 'jio.js', // '<%= pkg.name %>.js' // dest: 'jio.min.js', // options: { // sourceMap: "jio.min.map" // } // }, // jiodate: { // src: 'src/jio.date/jiodate.js', // dest: 'jiodate.min.js', // options: { // sourceMap: "jiodate.min.map" // } } }, copy: { latest: { files: [{ src: '<%= uglify.jio.src %>', dest: "dist/<%= pkg.name %>-latest.js" }, { src: '<%= uglify.jio.dest %>', dest: "dist/<%= pkg.name %>-latest.min.js" }] } }, qunit: { // grunt doesn't like requirejs files: ['test/tests.html'] }, watch: { src: { files: [ '<%= jslint.npm.src %>', '<%= jslint.grunt.src %>', '<%= jslint.jio.src %>', '<%= jslint.jiodate.src %>', '<%= jslint.jio_storages.src %>', '<%= jslint.tests.src %>', '<%= jslint.queries.src %>', '<%= qunit.files %>', 'test/**/*.js', 'examples/*' ], tasks: ['default'], options: { livereload: LIVERELOAD_PORT } } }, connect: { client: { options: { port: 9000, base: '.', directory: '.', middleware: livereloadMiddleware } } }, open: { all: { // Gets the port from the connect configuration path: 'http://localhost:' + '<%= connect.client.options.port%>/test/tests.html' } } }); grunt.registerTask('default', ['all']); grunt.registerTask('all', ['lint', 'build']); grunt.registerTask('lint', ['jslint']); grunt.registerTask('test', ['qunit']); grunt.registerTask('server', ['connect:client', 'watch']); grunt.registerTask('build', ['concat', 'uglify', 'copy']); }; jio-v3.0.0/Makefile 0000664 0000000 0000000 00000011143 12540313316 0014117 0 ustar 00root root 0000000 0000000 # dir QUERIES_DIR = src/queries # files JIO = jio.js JIO_MIN = jio.min.js JIODATE_MIN = jiodate.min.js PARSER_PAR = $(QUERIES_DIR)/core/parser.par PARSER_OUT = $(QUERIES_DIR)/build/parser.js UGLIFY = ./node_modules/grunt-contrib-uglify/node_modules/uglify-js/bin/uglifyjs ZIP_FULL = jio.zip ZIP_MINI = jio-min.zip # npm install jscc-node JSCC_CMD = node ./node_modules/jscc-node/jscc.js -t ./node_modules/jscc-node/driver_node.js_ auto: compile compile: mkdir -p $(dir $(PARSER_OUT)) $(JSCC_CMD) -o $(PARSER_OUT) $(PARSER_PAR) TMPDIR := $(shell mktemp -d) zip: @echo "Preparing $(ZIP_FULL)" @mkdir $(TMPDIR)/jio @mkdir $(TMPDIR)/jio/storage @cp jio.js $(TMPDIR)/jio/ @cp src/sha1.amd.js $(TMPDIR)/jio/ @cp src/sha2.amd.js $(TMPDIR)/jio/ @cp src/sha256.amd.js $(TMPDIR)/jio/ @cp src/jio.date/jiodate.js $(TMPDIR)/jio/ @cp lib/rsvp/rsvp-custom.js $(TMPDIR)/jio/ @cp lib/rsvp/rsvp-custom.amd.js $(TMPDIR)/jio/ @cp lib/jquery/jquery.js $(TMPDIR)/jio/ @cp lib/require/require.js $(TMPDIR)/jio/ @cp src/jio.storage/localstorage.js $(TMPDIR)/jio/storage/ @cp src/jio.storage/davstorage.js $(TMPDIR)/jio/storage/ @cp src/jio.storage/erp5storage.js $(TMPDIR)/jio/storage/ @cp src/jio.storage/indexstorage.js $(TMPDIR)/jio/storage/ @cp src/jio.storage/gidstorage.js $(TMPDIR)/jio/storage/ @cp src/jio.storage/replicatestorage.js $(TMPDIR)/jio/storage/ @cp src/jio.storage/splitstorage.js $(TMPDIR)/jio/storage/ @cp src/jio.storage/cryptstorage.js $(TMPDIR)/jio/storage/ @cp src/jio.storage/revisionstorage.js $(TMPDIR)/jio/storage/ @cp src/jio.storage/replicaterevisionstorage.js $(TMPDIR)/jio/storage/ @cp src/jio.storage/s3storage.js $(TMPDIR)/jio/storage/ @cp src/jio.storage/splitstorage.js $(TMPDIR)/jio/storage/ @cp src/jio.storage/xwikistorage.js $(TMPDIR)/jio/storage/ @cd $(TMPDIR) && zip -q $(ZIP_FULL) -r jio @mv $(TMPDIR)/$(ZIP_FULL) ./ @rm -rf $(TMPDIR)/jio @echo "Preparing $(ZIP_MINI)" @mkdir $(TMPDIR)/jio @mkdir $(TMPDIR)/jio/storage @echo "Minimizing JS..." @cp jio.min.js $(TMPDIR)/jio/ @cp jio.min.map $(TMPDIR)/jio/ @cp jiodate.min.js $(TMPDIR)/jio/ @cp jiodate.min.map $(TMPDIR)/jio/ @$(UGLIFY) src/sha1.amd.js >$(TMPDIR)/jio/sha1.amd.min.js 2>/dev/null @$(UGLIFY) src/sha2.amd.js >$(TMPDIR)/jio/sha2.amd.min.js 2>/dev/null @$(UGLIFY) src/sha256.amd.js >$(TMPDIR)/jio/sha256.amd.min.js 2>/dev/null @$(UGLIFY) lib/rsvp/rsvp-custom.js >$(TMPDIR)/jio/rsvp-custom.min.js 2>/dev/null @$(UGLIFY) lib/rsvp/rsvp-custom.amd.js >$(TMPDIR)/jio/rsvp-custom.amd.min.js 2>/dev/null @cp lib/jquery/jquery.min.js $(TMPDIR)/jio/ @$(UGLIFY) lib/require/require.js >$(TMPDIR)/jio/require.min.js 2>/dev/null @$(UGLIFY) src/jio.storage/localstorage.js >$(TMPDIR)/jio/storage/localstorage.min.js 2>/dev/null @$(UGLIFY) src/jio.storage/davstorage.js >$(TMPDIR)/jio/storage/davstorage.min.js 2>/dev/null @$(UGLIFY) src/jio.storage/erp5storage.js >$(TMPDIR)/jio/storage/erp5storage.min.js 2>/dev/null @$(UGLIFY) src/jio.storage/indexstorage.js >$(TMPDIR)/jio/storage/indexstorage.min.js 2>/dev/null @$(UGLIFY) src/jio.storage/gidstorage.js >$(TMPDIR)/jio/storage/gidstorage.min.js 2>/dev/null @$(UGLIFY) src/jio.storage/replicatestorage.js >$(TMPDIR)/jio/storage/replicatestorage.min.js 2>/dev/null @$(UGLIFY) src/jio.storage/splitstorage.js >$(TMPDIR)/jio/storage/splitstorage.min.js 2>/dev/null @$(UGLIFY) src/jio.storage/cryptstorage.js >$(TMPDIR)/jio/storage/cryptstorage.min.js 2>/dev/null @$(UGLIFY) src/jio.storage/revisionstorage.js >$(TMPDIR)/jio/storage/revisionstorage.min.js 2>/dev/null @$(UGLIFY) src/jio.storage/replicaterevisionstorage.js >$(TMPDIR)/jio/storage/replicaterevisionstorage.min.js 2>/dev/null @$(UGLIFY) src/jio.storage/s3storage.js >$(TMPDIR)/jio/storage/s3storage.min.js 2>/dev/null @$(UGLIFY) src/jio.storage/splitstorage.js >$(TMPDIR)/jio/storage/splitstorage.min.js 2>/dev/null @$(UGLIFY) src/jio.storage/xwikistorage.js >$(TMPDIR)/jio/storage/xwikistorage.min.js 2>/dev/null @cd $(TMPDIR) && zip -q $(ZIP_MINI) -r jio @mv $(TMPDIR)/$(ZIP_MINI) ./ @rm -rf $(TMPDIR) .phony: clean clean: find -name '*~' -delete realclean: rm -f "$(JIO)" rm -f "$(JIO_MIN)" rm -f "$(JIODATE_MIN)" rm -f "$(PARSER_OUT)" jio-v3.0.0/README.md 0000664 0000000 0000000 00000025464 12540313316 0013751 0 ustar 00root root 0000000 0000000 ## Javascript Input/Output **jIO is a client-side JavaScript library to manage documents across multiple storages.** ### Getting Started To set up jIO you should include jio.js, dependencies and the connectors for the storages you want to use in the HTML page header (note that more dependencies may be required depending on type of storages being used): ```html {{ super() }} {% if theme_touch_icon %} {% endif %} {% endblock %} {%- block relbar2 %}{% endblock %} {%- block footer %}