Skip to content

Commit 48b8937

Browse files
committed
first push
0 parents  commit 48b8937

File tree

13 files changed

+5215
-0
lines changed

13 files changed

+5215
-0
lines changed

.babelrc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"presets": ["es2015"],
3+
"plugins": ["transform-object-rest-spread"]
4+
}

.gitignore

Whitespace-only changes.

.npmignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
example
2+
src
3+
tests
4+
webpack.config.js
5+
.babelrc

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
##Immutable Proxy
2+
3+
A simple library that wraps around [immutable](https://facebook.github.io/immutable-js). Tired of doing `Map.get('item')`? With proxy support, you can do `Map.item`, like accessing regular objects!
4+
5+
This is just the start. Only `Map`s are supported right now.
6+
7+
###Example
8+
9+
```js
10+
import Immutable from 'immutable-proxy'
11+
12+
const data = Immutable.Map({first: 'yo'})
13+
expect(data.first).to.equal('yo')
14+
```

example/index.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<html>
2+
<head>
3+
<script src="../umd/index.js"></script>
4+
</head>
5+
<body>
6+
<div id="app"></div>
7+
</body>
8+
</html>

index.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
'use strict';
2+
3+
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
4+
5+
var _immutable = require('immutable');
6+
7+
var _immutable2 = _interopRequireDefault(_immutable);
8+
9+
var _map = require('./map');
10+
11+
var _map2 = _interopRequireDefault(_map);
12+
13+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14+
15+
module.exports = _extends({}, _immutable2.default, {
16+
Map: _map2.default
17+
});

package.json

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{
2+
"name": "immutable-proxy",
3+
"version": "1.0.0",
4+
"description": "access immutable values more easily",
5+
"main": "index.js",
6+
"peerDependencies": {
7+
"immutable": "^3.7.6"
8+
},
9+
"devDependencies": {
10+
"babel-cli": "^6.6.5",
11+
"babel-loader": "^6.2.4",
12+
"babel-plugin-transform-object-rest-spread": "^6.6.5",
13+
"babel-preset-es2015": "^6.6.0",
14+
"babel-register": "^6.7.2",
15+
"chai": "^3.5.0",
16+
"mocha": "^2.4.5",
17+
"webpack": "^1.12.14"
18+
},
19+
"scripts": {
20+
"test": "mocha tests --compilers js:babel-register --recursive --harmony_shipping ",
21+
"build": "babel src/index.js --out-file index.js && npm run build-umd && npm run build-min",
22+
"build-umd": "NODE_ENV=production webpack src/index.js umd/index.js",
23+
"build-min": "NODE_ENV=production webpack -p src/index.js umd/index.min.js"
24+
},
25+
"repository": {
26+
"type": "git",
27+
"url": "git+ssh://[email protected]/zackify/fragment.git"
28+
},
29+
"author": "Zach Silveira",
30+
"license": "ISC",
31+
"bugs": {
32+
"url": "https://github.com/zackify/fragment/issues"
33+
},
34+
"homepage": "https://github.com/zackify/fragment#readme"
35+
}

src/index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import Immutable from 'immutable'
2+
import Map from './map'
3+
4+
module.exports = {
5+
...Immutable,
6+
Map
7+
}

src/map.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { Map } from 'immutable'
2+
3+
export default initialData => {
4+
const immutableMap = Map(initialData)
5+
6+
return new Proxy(immutableMap, {
7+
get: (proxy, name) => immutableMap.get(name) || immutableMap[name]
8+
})
9+
}

tests/map.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import Map from '../src/map'
2+
import { expect } from 'chai'
3+
4+
describe('Map Proxy', () => {
5+
it('should access value without calling .get', () => {
6+
const data = Map({first: 'yo'})
7+
expect(data.first).to.equal('yo')
8+
})
9+
})

0 commit comments

Comments
 (0)