dataparcels
Advanced tools
Comparing version 2.0.0-alpha.3 to 2.0.0-alpha.4
@@ -20,5 +20,5 @@ "use strict"; | ||
var _Errors = require("../errors/Errors"); | ||
var _Action = _interopRequireDefault(require("./Action")); | ||
var _ChangeRequestReducer = _interopRequireDefault(require("../change/ChangeRequestReducer")); | ||
var _ActionReducer = _interopRequireDefault(require("../change/ActionReducer")); | ||
@@ -128,3 +128,3 @@ var _get = _interopRequireDefault(require("../parcelData/get")); | ||
this._nextData = (0, _ChangeRequestReducer.default)(this)(this.prevData); | ||
this._nextData = (0, _ActionReducer.default)(this._actions)(this.prevData); | ||
return this._nextData; | ||
@@ -136,6 +136,2 @@ } // $FlowFixMe - this doesn't have side effects | ||
get: function get() { | ||
if (!this._prevData) { | ||
throw (0, _Errors.ChangeRequestNoPrevDataError)(); | ||
} | ||
return this._prevData; | ||
@@ -161,2 +157,19 @@ } // $FlowFixMe - this doesn't have side effects | ||
} | ||
}], [{ | ||
key: "squash", | ||
value: function squash(others) { | ||
if (others.length === 0) { | ||
return new ChangeRequest(); | ||
} | ||
var merged = others.reduce(function (prev, next) { | ||
return prev.merge(next); | ||
}); | ||
var changeRequest = new ChangeRequest(new _Action.default({ | ||
type: 'batch', | ||
payload: merged.actions | ||
})); | ||
changeRequest._nextFrameMeta = merged._nextFrameMeta; | ||
return changeRequest; | ||
} | ||
}]); | ||
@@ -163,0 +176,0 @@ return ChangeRequest; |
@@ -6,3 +6,3 @@ "use strict"; | ||
}); | ||
exports.AsNodeReturnNonParcelNodeError = exports.ChangeRequestNoPrevDataError = exports.ReducerInvalidStepError = exports.ReducerInvalidActionError = exports.ParcelTypeMethodMismatch = void 0; | ||
exports.ParcelTypeMethodMismatch = void 0; | ||
@@ -14,26 +14,2 @@ var ParcelTypeMethodMismatch = function ParcelTypeMethodMismatch(key, parcelType, path) { | ||
exports.ParcelTypeMethodMismatch = ParcelTypeMethodMismatch; | ||
var ReducerInvalidActionError = function ReducerInvalidActionError(actionType) { | ||
return new Error("\"".concat(actionType, "\" is not a valid action")); | ||
}; | ||
exports.ReducerInvalidActionError = ReducerInvalidActionError; | ||
var ReducerInvalidStepError = function ReducerInvalidStepError(stepType) { | ||
return new Error("\"".concat(stepType, "\" is not a valid action step type")); | ||
}; | ||
exports.ReducerInvalidStepError = ReducerInvalidStepError; | ||
var ChangeRequestNoPrevDataError = function ChangeRequestNoPrevDataError() { | ||
return new Error("ChangeRequest data cannot be accessed before setting changeRequest.prevData"); | ||
}; | ||
exports.ChangeRequestNoPrevDataError = ChangeRequestNoPrevDataError; | ||
var AsNodeReturnNonParcelNodeError = function AsNodeReturnNonParcelNodeError() { | ||
return new Error("The return value of an asNode() updater must be a ParcelNode"); | ||
}; | ||
exports.AsNodeReturnNonParcelNodeError = AsNodeReturnNonParcelNodeError; | ||
exports.ParcelTypeMethodMismatch = ParcelTypeMethodMismatch; |
@@ -10,3 +10,3 @@ "use strict"; | ||
var _asNode = _interopRequireDefault(require("../parcelNode/asNode")); | ||
var _combine = _interopRequireDefault(require("../parcelData/combine")); | ||
@@ -22,5 +22,5 @@ var _default = function _default(config) { | ||
} : _config$up, | ||
preserveInput = config.preserveInput; | ||
preserve = config.preserve; | ||
if (!preserveInput) { | ||
if (!preserve) { | ||
return function (parcel) { | ||
@@ -32,19 +32,27 @@ return parcel.modifyDown(down).modifyUp(up); | ||
return function (parcel) { | ||
return parcel.modifyDown((0, _asNode.default)(function (node) { | ||
if ('translated' in node.meta) { | ||
return node.update(function () { | ||
return node.meta.translated; | ||
}); | ||
return parcel.modifyDown(function (parcelData) { | ||
if ('translated' in parcelData.meta) { | ||
return { | ||
value: parcelData.meta.translated | ||
}; | ||
} | ||
return node.update(down).setMeta({ | ||
untranslated: node.value | ||
}); | ||
})).modifyUp((0, _asNode.default)(function (node) { | ||
var updated = node.update(up); | ||
return updated.setMeta({ | ||
translated: node.value, | ||
untranslated: updated.value | ||
}); | ||
})); | ||
return (0, _combine.default)(down, function () { | ||
return { | ||
meta: { | ||
untranslated: parcelData.value | ||
} | ||
}; | ||
})(parcelData); | ||
}).modifyUp(function (parcelData) { | ||
return (0, _combine.default)(up, function (_ref) { | ||
var value = _ref.value; | ||
return { | ||
meta: { | ||
translated: parcelData.value, | ||
untranslated: value | ||
} | ||
}; | ||
})(parcelData); | ||
}); | ||
}; | ||
@@ -51,0 +59,0 @@ }; |
@@ -22,4 +22,2 @@ "use strict"; | ||
var _cancel = _interopRequireDefault(require("../change/cancel")); | ||
var _ChangeRequest = _interopRequireDefault(require("../change/ChangeRequest")); | ||
@@ -35,3 +33,3 @@ | ||
var _prepUpdater = _interopRequireDefault(require("../parcelData/prepUpdater")); | ||
var _combine = _interopRequireDefault(require("../parcelData/combine")); | ||
@@ -94,3 +92,6 @@ var _setMetaDefault = _interopRequireDefault(require("../parcelData/setMetaDefault")); | ||
}, | ||
registry: {}, | ||
treeShare: { | ||
registry: {}, | ||
effectRegistry: {} | ||
}, | ||
updateChangeRequestOnDispatch: doNothing | ||
@@ -113,3 +114,2 @@ }; | ||
// Parent methods | ||
// Side-effect methods | ||
// Change methods | ||
@@ -137,7 +137,6 @@ // Advanced change methods | ||
(0, _defineProperty2.default)(this, "_frameMeta", void 0); | ||
(0, _defineProperty2.default)(this, "_methods", void 0); | ||
(0, _defineProperty2.default)(this, "_onHandleChange", void 0); | ||
(0, _defineProperty2.default)(this, "_parcelData", void 0); | ||
(0, _defineProperty2.default)(this, "_parent", void 0); | ||
(0, _defineProperty2.default)(this, "_registry", void 0); | ||
(0, _defineProperty2.default)(this, "_treeShare", void 0); | ||
(0, _defineProperty2.default)(this, "_updateChangeRequestOnDispatch", void 0); | ||
@@ -155,4 +154,2 @@ (0, _defineProperty2.default)(this, "_setInput", void 0); | ||
(0, _defineProperty2.default)(this, "has", void 0); | ||
(0, _defineProperty2.default)(this, "spy", void 0); | ||
(0, _defineProperty2.default)(this, "spyChange", void 0); | ||
(0, _defineProperty2.default)(this, "set", void 0); | ||
@@ -196,4 +193,4 @@ (0, _defineProperty2.default)(this, "update", void 0); | ||
parent = _createParcelConfig$p2 === void 0 ? _this._parent : _createParcelConfig$p2, | ||
_createParcelConfig$r3 = createParcelConfig.registry, | ||
registry = _createParcelConfig$r3 === void 0 ? _this._registry : _createParcelConfig$r3, | ||
_createParcelConfig$t = createParcelConfig.treeShare, | ||
treeShare = _createParcelConfig$t === void 0 ? _this._treeShare : _createParcelConfig$t, | ||
_createParcelConfig$u = createParcelConfig.updateChangeRequestOnDispatch, | ||
@@ -216,3 +213,3 @@ updateChangeRequestOnDispatch = _createParcelConfig$u === void 0 ? doNothing : _createParcelConfig$u; | ||
parent: parent, | ||
registry: registry, | ||
treeShare: treeShare, | ||
updateChangeRequestOnDispatch: updateChangeRequestOnDispatch | ||
@@ -266,3 +263,3 @@ }); | ||
(0, _defineProperty2.default)(this, "_dispatchToParent", function (changeRequest) { | ||
var parcel = _this._registry[_this._dispatchId]; | ||
var parcel = _this._treeShare.registry[_this._dispatchId]; | ||
@@ -370,8 +367,3 @@ if (parcel) { | ||
(0, _defineProperty2.default)(this, "_idPushModifierUpdater", function (prefix, updater) { | ||
var hash = function hash(fn) { | ||
return "".concat((0, _HashString.default)(fn.toString())); | ||
}; | ||
var id = updater._asRaw ? "s".concat(hash(updater._updater || updater)) : hash(updater); | ||
return _this._idPushModifier("".concat(prefix, "-").concat(id)); | ||
return _this._idPushModifier("".concat(prefix, "-").concat((0, _HashString.default)((updater._updater || updater).toString()))); | ||
}); | ||
@@ -383,2 +375,25 @@ (0, _defineProperty2.default)(this, "_prepareChildKeys", function () { | ||
}); | ||
(0, _defineProperty2.default)(this, "_effectUpdate", function (effectUpdater) { | ||
var _treeShare = _this._treeShare; | ||
var effectId = "".concat(_this.id, "-").concat((0, _HashString.default)(effectUpdater.toString())); // throttle effects with the same effectId | ||
// the delay added by throttling is fine because these effects are async anyway | ||
if (_treeShare.effectRegistry[effectId]) { | ||
return; | ||
} | ||
_treeShare.effectRegistry[effectId] = true; | ||
setTimeout(function () { | ||
// apply the effect to the current version of the corresponding parcel | ||
var parcel = _treeShare.registry[_this.id]; | ||
if (parcel) { | ||
// remember to make this action exempt from history | ||
// when history is added | ||
parcel.update(effectUpdater); | ||
} | ||
delete _treeShare.effectRegistry[effectId]; | ||
}, 100); | ||
}); | ||
//Types(`Parcel()`, `config`, `object`)(config); | ||
@@ -396,3 +411,3 @@ var _handleChange = config.handleChange, | ||
_parent = _ref2.parent, | ||
_registry = _ref2.registry, | ||
_treeShare2 = _ref2.treeShare, | ||
_updateChangeRequestOnDispatch2 = _ref2.updateChangeRequestOnDispatch; | ||
@@ -417,4 +432,4 @@ | ||
this._parent = _parent; | ||
this._registry = _registry; | ||
this._registry[this._getIdFromRawId(_rawId)] = this; | ||
this._treeShare = _treeShare2; | ||
_treeShare2.registry[this._getIdFromRawId(_rawId)] = this; | ||
@@ -539,26 +554,4 @@ this._setInput = function (event) { | ||
return (0, _has.default)(key)(_this._parcelData); | ||
}); // Side-effect methods | ||
// Types(`spy()`, `sideEffect`, `function`)(sideEffect); | ||
}); // Change methods | ||
this.spy = function (sideEffect) { | ||
sideEffect(_this); | ||
return _this; | ||
}; // Types(`spyChange()`, `sideEffect`, `function`)(sideEffect); | ||
this.spyChange = function (sideEffect) { | ||
return _this._create({ | ||
rawId: _this._idPushModifier('sc'), | ||
updateChangeRequestOnDispatch: function updateChangeRequestOnDispatch(changeRequest) { | ||
var basedChangeRequest = changeRequest._create({ | ||
prevData: _this.data | ||
}); | ||
sideEffect(basedChangeRequest); | ||
return changeRequest; | ||
} | ||
}); | ||
}; // Change methods | ||
this.set = function (value) { | ||
@@ -570,3 +563,4 @@ return fireAction('set', value); | ||
this.update = function (updater) { | ||
fireAction('setData', (0, _prepUpdater.default)(updater)(_this._parcelData)); | ||
var preparedUpdater = (0, _combine.default)(updater); | ||
fireAction('update', preparedUpdater); | ||
}; | ||
@@ -638,10 +632,12 @@ | ||
this.modifyDown = function (updater) { | ||
var parcelDataUpdater = (0, _prepUpdater.default)(updater); | ||
var preparedUpdater = (0, _combine.default)(updater); | ||
return _this._create({ | ||
rawId: _this._idPushModifierUpdater('md', updater), | ||
parcelData: parcelDataUpdater(_this._parcelData), | ||
parcelData: preparedUpdater(_this._parcelData), | ||
updateChangeRequestOnDispatch: function updateChangeRequestOnDispatch(changeRequest) { | ||
return changeRequest._addStep({ | ||
type: 'md', | ||
updater: parcelDataUpdater | ||
updater: function updater(parcelData) { | ||
return preparedUpdater(parcelData); | ||
} | ||
}); | ||
@@ -654,12 +650,3 @@ } | ||
this.modifyUp = function (updater) { | ||
var parcelDataUpdater = function parcelDataUpdater(parcelData, changeRequest) { | ||
var nextData = (0, _prepUpdater.default)(updater)(parcelData, changeRequest); | ||
if (nextData.value === _cancel.default) { | ||
throw new Error('CANCEL'); | ||
} | ||
return nextData; | ||
}; | ||
var preparedUpdater = (0, _combine.default)(updater); | ||
return _this._create({ | ||
@@ -670,4 +657,9 @@ rawId: _this._idPushModifierUpdater('mu', updater), | ||
type: 'mu', | ||
updater: parcelDataUpdater, | ||
changeRequest: changeRequest | ||
updater: function updater(parcelData, changeRequest) { | ||
return preparedUpdater((0, _objectSpread2.default)({}, parcelData, { | ||
changeRequest: changeRequest | ||
})); | ||
}, | ||
changeRequest: changeRequest, | ||
effectUpdate: _this._effectUpdate | ||
}); | ||
@@ -674,0 +666,0 @@ } |
@@ -24,6 +24,4 @@ "use strict"; | ||
var _setMeta = _interopRequireDefault(require("../parcelData/setMeta")); | ||
var _combine = _interopRequireDefault(require("../parcelData/combine")); | ||
var _prepUpdater = _interopRequireDefault(require("../parcelData/prepUpdater")); | ||
var ParcelNode = | ||
@@ -63,11 +61,9 @@ /*#__PURE__*/ | ||
(0, _defineProperty2.default)(this, "update", function (updater) { | ||
var preparedUpdater = (0, _combine.default)(updater); | ||
var parcelNode = new ParcelNode(); | ||
parcelNode._parcelData = (0, _prepUpdater.default)(updater)(_this._parcelData, _this._changeRequest); | ||
parcelNode._parcelData = preparedUpdater((0, _objectSpread2.default)({}, _this._parcelData, { | ||
changeRequest: _this._changeRequest | ||
})); | ||
return parcelNode; | ||
}); | ||
(0, _defineProperty2.default)(this, "setMeta", function (meta) { | ||
var parcelNode = new ParcelNode(); | ||
parcelNode._parcelData = (0, _setMeta.default)(meta)(_this.data); | ||
return parcelNode; | ||
}); | ||
this._parcelData = { | ||
@@ -74,0 +70,0 @@ value: value |
@@ -12,4 +12,2 @@ "use strict"; | ||
var _asRaw = _interopRequireDefault(require("../parcelData/asRaw")); | ||
var _setMeta = _interopRequireDefault(require("../parcelData/setMeta")); | ||
@@ -41,3 +39,3 @@ | ||
var _default = function _default(validatorMap) { | ||
return (0, _asRaw.default)(function (parcelData) { | ||
return function (parcelData) { | ||
var invalidList = []; | ||
@@ -93,5 +91,5 @@ var topLevelValue = parcelData.value; | ||
return _pipeWith.default.apply(void 0, [parcelData].concat((0, _toConsumableArray2.default)((0, _pipeWith.default)(validatorMap, (0, _map.default)(mapValidationRuleApplier), (0, _toArray.default)())), [updateMeta])); | ||
}); | ||
}; | ||
}; | ||
exports.default = _default; |
{ | ||
"name": "dataparcels", | ||
"version": "2.0.0-alpha.3", | ||
"version": "2.0.0-alpha.4", | ||
"description": "A library for editing data structures that works really well with React.", | ||
@@ -10,3 +10,3 @@ "main": "lib/index.js", | ||
"type": "git", | ||
"url": "git+https://github.com/blueflag/dataparcels.git" | ||
"url": "git+https://github.com/92green/dataparcels.git" | ||
}, | ||
@@ -16,7 +16,6 @@ "files": [ | ||
"Action.js", | ||
"asChildNodes.js", | ||
"asNode.js", | ||
"asRaw.js", | ||
"arrange.js", | ||
"cancel.js", | ||
"ChangeRequest.js", | ||
"combine.js", | ||
"deleted.js", | ||
@@ -28,3 +27,3 @@ "ParcelNode.js", | ||
"bugs": { | ||
"url": "https://github.com/blueflag/dataparcels/issues" | ||
"url": "https://github.com/92green/dataparcels/issues" | ||
}, | ||
@@ -57,3 +56,3 @@ "private": false, | ||
}, | ||
"gitHead": "1240251f7f5e23196c2920239feba56373d3204a" | ||
"gitHead": "1c1b911d00c7ccf9a05cf1d2c8025182ea467d40" | ||
} |
![dataparcels](https://user-images.githubusercontent.com/345320/48319791-4eece200-e666-11e8-8b19-252cd1135ae2.png) | ||
<a href="https://www.npmjs.com/package/react-dataparcels"><img src="https://img.shields.io/npm/v/dataparcels.svg?style=flat-square"></a> | ||
[![CircleCI](https://circleci.com/gh/blueflag/dataparcels/tree/master.svg?style=shield)](https://circleci.com/gh/blueflag/dataparcels/tree/master) | ||
![](https://github.com/92green/dataparcels/workflows/test/badge.svg?branch=master) | ||
@@ -10,3 +10,3 @@ A library for editing data structures that works really well with React. | ||
**[See the docs](https://dataparcels.blueflag.codes)** | ||
**[See the docs](https://92green.github.io/dataparcels/)** | ||
@@ -13,0 +13,0 @@ ## Packages |
85607
55
1961