Skip to content

Commit

Permalink
[interim] Begin breaking up the tko.provider into submodules
Browse files Browse the repository at this point in the history
- Break out parser into tko.utils.parser
- Add an `ko-*` attribute binder
- Break out the data-bind provider
- Break out a multi-provider
- Convert mustache text/attribute interpolation into a provider (with a preprocessor for now, but can provide direct bindings — later)

- Remove some more polyfill/transpilation for compat.
  • Loading branch information
brianmhunt committed May 9, 2017
1 parent baf5a40 commit 7dbec4c
Show file tree
Hide file tree
Showing 51 changed files with 591 additions and 1,786 deletions.
11 changes: 0 additions & 11 deletions .babelrc

This file was deleted.

42 changes: 27 additions & 15 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
/* eslint semi: 0 */
import * as utils from 'tko.utils'
import { options } from 'tko.utils'

import {
// applyExtenders,
Expand Down Expand Up @@ -28,8 +27,16 @@ import {
} from 'tko.computed'

import {
Provider
} from 'tko.provider';
DataBindProvider
} from 'tko.provider.databind'

import {
AttrProvider
} from 'tko.provider.attr'

import {
MultiProvider
} from 'tko.provider.multi'

import {
applyBindingAccessorsToNode,
Expand Down Expand Up @@ -132,17 +139,22 @@ utils.extend(coreUtils, {


// Create the binding provider and default bindings.
var provider = new Provider();
options.bindingProviderInstance = provider;
provider.bindingHandlers.set(coreBindings);
provider.bindingHandlers.set(templateBindings);
provider.bindingHandlers.set(ifBindings);
provider.bindingHandlers.set(foreachBindings);
provider.bindingHandlers.set({ each: foreachBindings.foreach });
provider.addNodePreprocessor(textInterpolation[0].nodePreProcessor);
provider.addNodePreprocessor(textInterpolation[1].nodePreProcessor);
provider.bindingHandlers.set({ component: components.bindingHandler });
provider.addProvider(components.bindingProvider);
const provider = new MultiProvider();

provider.addProvider(new DataBindProvider())
provider.addProvider(new AttrProvider())

options.bindingProviderInstance = provider

provider.bindingHandlers.set(coreBindings)
provider.bindingHandlers.set(templateBindings)
provider.bindingHandlers.set(ifBindings)
provider.bindingHandlers.set(foreachBindings)
provider.bindingHandlers.set({ each: foreachBindings.foreach })
provider.addNodePreprocessor(textInterpolation[0].nodePreProcessor)
provider.addNodePreprocessor(textInterpolation[1].nodePreProcessor)
provider.bindingHandlers.set({ component: components.bindingHandler })
provider.addProvider(components.bindingProvider)


utils.extend(options.filters, punchesFilters);
Expand All @@ -151,7 +163,7 @@ utils.extend(options.filters, punchesFilters);
// Expose the API.
export default {
// --- Top-level ---
version: {{VERSION}},
version: '{{VERSION}}',
options: options,

extenders: extenders,
Expand Down
30 changes: 18 additions & 12 deletions karma.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ const fs = require('fs')
const path = require('path')

const nodeResolve = require('rollup-plugin-node-resolve')
const rollupCommonJs = require('rollup-plugin-commonjs')
const rollupBabel = require('rollup-plugin-babel')
const rollupVisualizer = require('rollup-plugin-visualizer')
const includePaths = require('rollup-plugin-includepaths')

Expand All @@ -14,37 +12,42 @@ const pkg = JSON.parse(fs.readFileSync('package.json'))
const root = path.join(process.cwd(), 'spec')

const frameworks = pkg.karma.frameworks
const browsers = ['PhantomJS']
const browsers = ['Electron']

const files = [
{ pattern: "polyfills.js" },
{ pattern: "src/*.js", included: false, watched: true },
{ pattern: "spec/*.js" },
]

const preprocessors = {
'polyfills.js': ['rollup'],
'src/**/*.js': ['rollup'],
'spec/**/*.js': ['rollup'],
}

const ROLLUP_CONFIG = {
INCLUDE_PATHS: { paths: [ path.join(root, "../..") ] },
RESOLVE: {jsnext: true},
BABEL: {},
COMMONJS: {},
VISUALIZER: { filename: './visual.html' },
}

// The following can be used to identify
// const seen = []
// SEEN_PLUGIN = { name: 'inline',
// load(x) {
// if (seen.includes(x)) { return }
// seen.push(x)
// console.info(x.replace('/Users/bmh/Repos/tko/packages/',''))
// }
// }


const rollupPreprocessor = Object.assign({}, {
format: 'iife',
moduleName: pkg.name,
plugins: [
includePaths(ROLLUP_CONFIG.INCLUDE_PATHS),
nodeResolve(ROLLUP_CONFIG.RESOLVE),
rollupCommonJs(ROLLUP_CONFIG.COMMONJS),
rollupBabel(ROLLUP_CONFIG.BABEL),
rollupVisualizer(ROLLUP_CONFIG.VISUALIZER),
includePaths(ROLLUP_CONFIG.INCLUDE_PATHS),
nodeResolve(ROLLUP_CONFIG.RESOLVE),
rollupVisualizer(ROLLUP_CONFIG.VISUALIZER),
],
sourceMap: process.argv.includes('--sourcemap') ? 'inline': false,
})
Expand All @@ -58,6 +61,9 @@ module.exports = (config) => {
frameworks,
browsers,
resolve: { root },
electronOpts: {
show: false
},
singleRun: process.argv.includes('--once')
})
}
12 changes: 2 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,16 +47,9 @@
]
},
"devDependencies": {
"babel-cli": "^6.24.1",
"babel-core": "^6.24.1",
"babel-eslint": "^7.2.3",
"babel-plugin-external-helpers": "^6.22.0",
"babel-plugin-transform-proto-to-assign": "^6.23.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"chai": "^3.5.0",
"colors": "^1.1.2",
"core-js": "^2.4.1",
"electron": "^1.6.6",
"gulp": "^3.9.1",
"gulp-rename": "^1.2.2",
"gulp-replace": "^0.5.4",
Expand All @@ -65,15 +58,14 @@
"karma": "^1.7.0",
"karma-chai": "^0.1.0",
"karma-chrome-launcher": "^2.1.1",
"karma-electron-launcher": "^0.2.0",
"karma-jasmine": "^0.1.0",
"karma-mocha": "^1.3.0",
"karma-phantomjs-launcher": "^1.0.4",
"karma-rollup-plugin": "^0.2.4",
"karma-sinon": "^1.0.5",
"lerna": "^2.0.0-rc.4",
"lodash": "^4.17.4",
"mocha": "^3.3.0",
"phantomjs-prebuilt": "^2.1.14",
"rollup": "^0.41.6",
"rollup-plugin-babel": "^2.7.1",
"rollup-plugin-babili": "^3.0.0",
Expand Down
2 changes: 0 additions & 2 deletions packages/tko.bind/spec/asyncBindingBehaviors.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ import {
useMockForTasks
} from 'tko.utils/helpers/jasmine-13-helper.js';

import 'core-js/fn/object/assign'


describe("Deferred bindings", function() {
var bindingSpy, bindingHandlers;
Expand Down
1 change: 0 additions & 1 deletion packages/tko.lifecycle/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
{
"dependencies": {
"core-js": "^2.4.1",
"tko.computed": "knockout/tko.computed",
"tko.utils": "knockout/tko.utils"
},
Expand Down
3 changes: 0 additions & 3 deletions packages/tko.lifecycle/spec/LifeCycleBehaviour.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@ import {
cleanNode
} from 'tko.utils'

// Polyfills needed.
import 'core-js/fn/object/assign'


describe('KO LifeCycle', function() {
describe("mixInto", function () {
Expand Down
9 changes: 0 additions & 9 deletions packages/tko.preprocessor.textInterpolation/index.js

This file was deleted.

168 changes: 0 additions & 168 deletions packages/tko.preprocessor.textInterpolation/src/interpolationMarkup.js

This file was deleted.

1 change: 1 addition & 0 deletions packages/tko.provider.attr/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export {default as AttrProvider} from './AttrProvider.js'
Loading

0 comments on commit 7dbec4c

Please sign in to comment.