necessary 11.8.5 → 11.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,6 +22,7 @@ These can be used both on Node and in the browser:
22
22
  * [Path utilities](#path-utilities)
23
23
  * [Array utilities](#array-utilities)
24
24
  * [HTTP utilities](#http-utilities)
25
+ * [Version utilities](#version-utilities)
25
26
  * [Template utilities](#template-utilities)
26
27
  * [Asynchronous utilities](#asynchronous-utilities)
27
28
 
@@ -834,6 +835,78 @@ urlFromHostURIAndQuery(host, uri, query); // returns "https://site.com/user?name
834
835
 
835
836
  Ideally the `host` argument should not include a trailing forward slash whereas `uri` arguments should always start with a leading forward slash.
836
837
 
838
+ ## Version utilities
839
+
840
+ - `migrate()`
841
+
842
+ A single `migrate()` function to handle the migration of JSON files with a required `version` entry. This function can be used in conjunction with the configuration utilities but does not have to be.
843
+
844
+ * The `migrate` function takes `json`, `migrationMap` and `latestVersion` arguments. The easiest way to demonstrate its use is by an extensive example.
845
+
846
+ Your application should maintain a list of version numbers. A new version number should be used every time the format of the requisite JSON file needs to be migrated:
847
+
848
+ ```
849
+ const VERSION_1_5 = "1.5",
850
+ VERSION_2_0 = "2.0",
851
+ VERSION_5_0 = "5.0",
852
+ VERSION_5_1 = "5.1";
853
+
854
+ module.exports = {
855
+ VERSION_1_5,
856
+ VERSION_2_0,
857
+ VERSION_5_0,
858
+ VERSION_5_1
859
+ };
860
+ ```
861
+
862
+ These version numbers, together with their corresponding migration functions should then be required or imported for use by the function that handles the migration:
863
+
864
+ ```
865
+ const { migrateConfigurationToVersion_2_0 } = require("./configuration/version_2_0"),
866
+ { migrateConfigurationToVersion_5_0 } = require("./configuration/version_5_0"),
867
+ { migrateConfigurationToVersion_5_1 } = require("./configuration/version_5_1"),
868
+ { VERSION_1_5, VERSION_2_0, VERSION_5_0, VERSION_5_1 } = require("./versions");
869
+ ```
870
+
871
+ A map must then be created that is passed to the `migrate()` function along with the JSON and the latest version:
872
+
873
+ ```
874
+ function migrateConfigurationFile() {
875
+ let json = readRCFile();
876
+
877
+ const migrationMap = {
878
+ [ VERSION_1_5 ]: migrateConfigurationToVersion_2_0,
879
+ [ VERSION_2_0 ]: migrateConfigurationToVersion_5_0,
880
+ [ VERSION_5_0 ] :migrateConfigurationToVersion_5_1
881
+ },
882
+ latestVersion = VERSION_5_1;
883
+
884
+ json = migrate(json, migrationMap, latestVersion);
885
+
886
+ writeRCFile(json);
887
+ }
888
+ ```
889
+
890
+ Note carefully the matching of the keys to their corresponding values. Each key matches the version that the `migrate()` function finds in the JSON. It therefore must apply the requisite migration function to migrate the JSON to the next version.
891
+
892
+ Lastly, the migration function must have the prescribed signature and return the migrated JSON. Again an example will suffice:
893
+
894
+ ```
895
+ const { VERSION_2_0 } = require("../versions");
896
+
897
+ function migrateConfigurationToVersion_2_0(configuration) {
898
+ const version = VERSION_2_0;
899
+
900
+ Object.assign(configuration, {
901
+ version
902
+ });
903
+
904
+ return configuration;
905
+ }
906
+ ```
907
+
908
+ In this admittedly somewhat trivial example, all the migration function does is to update the version number. Exactly how the JSON otherwise changes is immaterial but the version number must be updated in this way otherwise the `migrate()` function will loop indefinitely.
909
+
837
910
  ## Template utilities
838
911
 
839
912
  - `parseFile()`
package/lib/browser.js CHANGED
@@ -48,6 +48,9 @@ _export(exports, {
48
48
  arrayUtilities: function() {
49
49
  return _array.default;
50
50
  },
51
+ versionUtilities: function() {
52
+ return _version.default;
53
+ },
51
54
  asynchronousUtilities: function() {
52
55
  return _asynchronous.default;
53
56
  }
@@ -65,6 +68,7 @@ var _ajax = /*#__PURE__*/ _interop_require_default(require("./utilities/ajax"));
65
68
  var _path = /*#__PURE__*/ _interop_require_default(require("./utilities/path"));
66
69
  var _http = /*#__PURE__*/ _interop_require_default(require("./utilities/http"));
67
70
  var _array = /*#__PURE__*/ _interop_require_default(require("./utilities/array"));
71
+ var _version = /*#__PURE__*/ _interop_require_default(require("./utilities/version"));
68
72
  var _asynchronous = /*#__PURE__*/ _interop_require_default(require("./utilities/asynchronous"));
69
73
  function _interop_require_default(obj) {
70
74
  return obj && obj.__esModule ? obj : {
@@ -72,4 +76,4 @@ function _interop_require_default(obj) {
72
76
  };
73
77
  }
74
78
 
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9icm93c2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIGxldmVscyB9IGZyb20gXCIuL2xldmVsc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtZXRob2RzIH0gZnJvbSBcIi4vbWV0aG9kc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBoZWFkZXJzIH0gZnJvbSBcIi4vaGVhZGVyc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBrZXlDb2RlcyB9IGZyb20gXCIuL2tleUNvZGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuY29kaW5ncyB9IGZyb20gXCIuL2VuY29kaW5nc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjaGFyYWN0ZXJzIH0gZnJvbSBcIi4vY2hhcmFjdGVyc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGF0dXNDb2RlcyB9IGZyb20gXCIuL3N0YXR1c0NvZGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbnRlbnRUeXBlcyB9IGZyb20gXCIuL2NvbnRlbnRUeXBlc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGF0dXNNZXNzYWdlcyB9IGZyb20gXCIuL3N0YXR1c01lc3NhZ2VzXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWpheFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9hamF4XCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGF0aFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9wYXRoXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGh0dHBVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvaHR0cFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhc3luY2hyb25vdXNVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXN5bmNocm9ub3VzXCI7XG4iXSwibmFtZXMiOlsibGV2ZWxzIiwibWV0aG9kcyIsImhlYWRlcnMiLCJrZXlDb2RlcyIsImVuY29kaW5ncyIsImNoYXJhY3RlcnMiLCJzdGF0dXNDb2RlcyIsImNvbnRlbnRUeXBlcyIsInN0YXR1c01lc3NhZ2VzIiwiYWpheFV0aWxpdGllcyIsInBhdGhVdGlsaXRpZXMiLCJodHRwVXRpbGl0aWVzIiwiYXJyYXlVdGlsaXRpZXMiLCJhc3luY2hyb25vdXNVdGlsaXRpZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVvQkEsTUFBTTtlQUFOQSxlQUFNOztJQUNOQyxPQUFPO2VBQVBBLGdCQUFPOztJQUNQQyxPQUFPO2VBQVBBLGdCQUFPOztJQUNQQyxRQUFRO2VBQVJBLGlCQUFROztJQUNSQyxTQUFTO2VBQVRBLGtCQUFTOztJQUNUQyxVQUFVO2VBQVZBLG1CQUFVOztJQUNWQyxXQUFXO2VBQVhBLG9CQUFXOztJQUNYQyxZQUFZO2VBQVpBLHFCQUFZOztJQUNaQyxjQUFjO2VBQWRBLHVCQUFjOztJQUVkQyxhQUFhO2VBQWJBLGFBQWE7O0lBRWJDLGFBQWE7ZUFBYkEsYUFBYTs7SUFDYkMsYUFBYTtlQUFiQSxhQUFhOztJQUNiQyxjQUFjO2VBQWRBLGNBQWM7O0lBQ2RDLHFCQUFxQjtlQUFyQkEscUJBQXFCOzs7NkRBZlA7OERBQ0M7OERBQ0E7K0RBQ0M7Z0VBQ0M7aUVBQ0M7a0VBQ0M7bUVBQ0M7cUVBQ0U7MkRBRUQ7MkRBRUE7MkRBQ0E7NERBQ0M7bUVBQ08ifQ==
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9icm93c2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIGxldmVscyB9IGZyb20gXCIuL2xldmVsc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtZXRob2RzIH0gZnJvbSBcIi4vbWV0aG9kc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBoZWFkZXJzIH0gZnJvbSBcIi4vaGVhZGVyc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBrZXlDb2RlcyB9IGZyb20gXCIuL2tleUNvZGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuY29kaW5ncyB9IGZyb20gXCIuL2VuY29kaW5nc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjaGFyYWN0ZXJzIH0gZnJvbSBcIi4vY2hhcmFjdGVyc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGF0dXNDb2RlcyB9IGZyb20gXCIuL3N0YXR1c0NvZGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbnRlbnRUeXBlcyB9IGZyb20gXCIuL2NvbnRlbnRUeXBlc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGF0dXNNZXNzYWdlcyB9IGZyb20gXCIuL3N0YXR1c01lc3NhZ2VzXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWpheFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9hamF4XCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGF0aFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9wYXRoXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGh0dHBVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvaHR0cFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB2ZXJzaW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3ZlcnNpb25cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2FzeW5jaHJvbm91c1wiO1xuIl0sIm5hbWVzIjpbImxldmVscyIsIm1ldGhvZHMiLCJoZWFkZXJzIiwia2V5Q29kZXMiLCJlbmNvZGluZ3MiLCJjaGFyYWN0ZXJzIiwic3RhdHVzQ29kZXMiLCJjb250ZW50VHlwZXMiLCJzdGF0dXNNZXNzYWdlcyIsImFqYXhVdGlsaXRpZXMiLCJwYXRoVXRpbGl0aWVzIiwiaHR0cFV0aWxpdGllcyIsImFycmF5VXRpbGl0aWVzIiwidmVyc2lvblV0aWxpdGllcyIsImFzeW5jaHJvbm91c1V0aWxpdGllcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRW9CQSxNQUFNO2VBQU5BLGVBQU07O0lBQ05DLE9BQU87ZUFBUEEsZ0JBQU87O0lBQ1BDLE9BQU87ZUFBUEEsZ0JBQU87O0lBQ1BDLFFBQVE7ZUFBUkEsaUJBQVE7O0lBQ1JDLFNBQVM7ZUFBVEEsa0JBQVM7O0lBQ1RDLFVBQVU7ZUFBVkEsbUJBQVU7O0lBQ1ZDLFdBQVc7ZUFBWEEsb0JBQVc7O0lBQ1hDLFlBQVk7ZUFBWkEscUJBQVk7O0lBQ1pDLGNBQWM7ZUFBZEEsdUJBQWM7O0lBRWRDLGFBQWE7ZUFBYkEsYUFBYTs7SUFFYkMsYUFBYTtlQUFiQSxhQUFhOztJQUNiQyxhQUFhO2VBQWJBLGFBQWE7O0lBQ2JDLGNBQWM7ZUFBZEEsY0FBYzs7SUFDZEMsZ0JBQWdCO2VBQWhCQSxnQkFBZ0I7O0lBQ2hCQyxxQkFBcUI7ZUFBckJBLHFCQUFxQjs7OzZEQWhCUDs4REFDQzs4REFDQTsrREFDQztnRUFDQztpRUFDQztrRUFDQzttRUFDQztxRUFDRTsyREFFRDsyREFFQTsyREFDQTs0REFDQzs4REFDRTttRUFDSyJ9
package/lib/main.js CHANGED
@@ -45,6 +45,9 @@ _export(exports, {
45
45
  arrayUtilities: function() {
46
46
  return _array.default;
47
47
  },
48
+ versionUtilities: function() {
49
+ return _version.default;
50
+ },
48
51
  packageUtilities: function() {
49
52
  return _package.default;
50
53
  },
@@ -82,6 +85,7 @@ var _statusMessages = /*#__PURE__*/ _interop_require_default(require("./statusMe
82
85
  var _path = /*#__PURE__*/ _interop_require_default(require("./utilities/path"));
83
86
  var _http = /*#__PURE__*/ _interop_require_default(require("./utilities/http"));
84
87
  var _array = /*#__PURE__*/ _interop_require_default(require("./utilities/array"));
88
+ var _version = /*#__PURE__*/ _interop_require_default(require("./utilities/version"));
85
89
  var _package = /*#__PURE__*/ _interop_require_default(require("./utilities/package"));
86
90
  var _asynchronous = /*#__PURE__*/ _interop_require_default(require("./utilities/asynchronous"));
87
91
  var _shell = /*#__PURE__*/ _interop_require_default(require("./utilities/shell"));
@@ -96,4 +100,4 @@ function _interop_require_default(obj) {
96
100
  };
97
101
  }
98
102
 
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIGxldmVscyB9IGZyb20gXCIuL2xldmVsc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtZXRob2RzIH0gZnJvbSBcIi4vbWV0aG9kc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBoZWFkZXJzIH0gZnJvbSBcIi4vaGVhZGVyc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBrZXlDb2RlcyB9IGZyb20gXCIuL2tleUNvZGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuY29kaW5ncyB9IGZyb20gXCIuL2VuY29kaW5nc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjaGFyYWN0ZXJzIH0gZnJvbSBcIi4vY2hhcmFjdGVyc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGF0dXNDb2RlcyB9IGZyb20gXCIuL3N0YXR1c0NvZGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbnRlbnRUeXBlcyB9IGZyb20gXCIuL2NvbnRlbnRUeXBlc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGF0dXNNZXNzYWdlcyB9IGZyb20gXCIuL3N0YXR1c01lc3NhZ2VzXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGF0aFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9wYXRoXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGh0dHBVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvaHR0cFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYWNrYWdlVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3BhY2thZ2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2FzeW5jaHJvbm91c1wiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIHNoZWxsVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3NoZWxsXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlcXVlc3RVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcmVxdWVzdFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsb2dnaW5nVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2xvZ2dpbmdcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGVtcGxhdGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvdGVtcGxhdGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9maWxlU3lzdGVtXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbmZpZ3VyYXRpb25VdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvY29uZmlndXJhdGlvblwiO1xuIl0sIm5hbWVzIjpbImxldmVscyIsIm1ldGhvZHMiLCJoZWFkZXJzIiwia2V5Q29kZXMiLCJlbmNvZGluZ3MiLCJjaGFyYWN0ZXJzIiwic3RhdHVzQ29kZXMiLCJjb250ZW50VHlwZXMiLCJzdGF0dXNNZXNzYWdlcyIsInBhdGhVdGlsaXRpZXMiLCJodHRwVXRpbGl0aWVzIiwiYXJyYXlVdGlsaXRpZXMiLCJwYWNrYWdlVXRpbGl0aWVzIiwiYXN5bmNocm9ub3VzVXRpbGl0aWVzIiwic2hlbGxVdGlsaXRpZXMiLCJyZXF1ZXN0VXRpbGl0aWVzIiwibG9nZ2luZ1V0aWxpdGllcyIsInRlbXBsYXRlVXRpbGl0aWVzIiwiZmlsZVN5c3RlbVV0aWxpdGllcyIsImNvbmZpZ3VyYXRpb25VdGlsaXRpZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVvQkEsTUFBTTtlQUFOQSxlQUFNOztJQUNOQyxPQUFPO2VBQVBBLGdCQUFPOztJQUNQQyxPQUFPO2VBQVBBLGdCQUFPOztJQUNQQyxRQUFRO2VBQVJBLGlCQUFROztJQUNSQyxTQUFTO2VBQVRBLGtCQUFTOztJQUNUQyxVQUFVO2VBQVZBLG1CQUFVOztJQUNWQyxXQUFXO2VBQVhBLG9CQUFXOztJQUNYQyxZQUFZO2VBQVpBLHFCQUFZOztJQUNaQyxjQUFjO2VBQWRBLHVCQUFjOztJQUVkQyxhQUFhO2VBQWJBLGFBQWE7O0lBQ2JDLGFBQWE7ZUFBYkEsYUFBYTs7SUFDYkMsY0FBYztlQUFkQSxjQUFjOztJQUNkQyxnQkFBZ0I7ZUFBaEJBLGdCQUFnQjs7SUFDaEJDLHFCQUFxQjtlQUFyQkEscUJBQXFCOztJQUVyQkMsY0FBYztlQUFkQSxjQUFjOztJQUNkQyxnQkFBZ0I7ZUFBaEJBLGdCQUFnQjs7SUFDaEJDLGdCQUFnQjtlQUFoQkEsZ0JBQWdCOztJQUNoQkMsaUJBQWlCO2VBQWpCQSxpQkFBaUI7O0lBQ2pCQyxtQkFBbUI7ZUFBbkJBLG1CQUFtQjs7SUFDbkJDLHNCQUFzQjtlQUF0QkEsc0JBQXNCOzs7NkRBckJSOzhEQUNDOzhEQUNBOytEQUNDO2dFQUNDO2lFQUNDO2tFQUNDO21FQUNDO3FFQUNFOzJEQUVEOzJEQUNBOzREQUNDOzhEQUNFO21FQUNLOzREQUVQOzhEQUNFOzhEQUNBOytEQUNDO2lFQUNFO29FQUNHIn0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIGxldmVscyB9IGZyb20gXCIuL2xldmVsc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtZXRob2RzIH0gZnJvbSBcIi4vbWV0aG9kc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBoZWFkZXJzIH0gZnJvbSBcIi4vaGVhZGVyc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBrZXlDb2RlcyB9IGZyb20gXCIuL2tleUNvZGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuY29kaW5ncyB9IGZyb20gXCIuL2VuY29kaW5nc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjaGFyYWN0ZXJzIH0gZnJvbSBcIi4vY2hhcmFjdGVyc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGF0dXNDb2RlcyB9IGZyb20gXCIuL3N0YXR1c0NvZGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbnRlbnRUeXBlcyB9IGZyb20gXCIuL2NvbnRlbnRUeXBlc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGF0dXNNZXNzYWdlcyB9IGZyb20gXCIuL3N0YXR1c01lc3NhZ2VzXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGF0aFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9wYXRoXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGh0dHBVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvaHR0cFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB2ZXJzaW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3ZlcnNpb25cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGFja2FnZVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9wYWNrYWdlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFzeW5jaHJvbm91c1V0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9hc3luY2hyb25vdXNcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBzaGVsbFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9zaGVsbFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZXF1ZXN0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlcXVlc3RcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbG9nZ2luZ1V0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9sb2dnaW5nXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRlbXBsYXRlVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3RlbXBsYXRlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZpbGVTeXN0ZW1VdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZVN5c3RlbVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjb25maWd1cmF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2NvbmZpZ3VyYXRpb25cIjtcbiJdLCJuYW1lcyI6WyJsZXZlbHMiLCJtZXRob2RzIiwiaGVhZGVycyIsImtleUNvZGVzIiwiZW5jb2RpbmdzIiwiY2hhcmFjdGVycyIsInN0YXR1c0NvZGVzIiwiY29udGVudFR5cGVzIiwic3RhdHVzTWVzc2FnZXMiLCJwYXRoVXRpbGl0aWVzIiwiaHR0cFV0aWxpdGllcyIsImFycmF5VXRpbGl0aWVzIiwidmVyc2lvblV0aWxpdGllcyIsInBhY2thZ2VVdGlsaXRpZXMiLCJhc3luY2hyb25vdXNVdGlsaXRpZXMiLCJzaGVsbFV0aWxpdGllcyIsInJlcXVlc3RVdGlsaXRpZXMiLCJsb2dnaW5nVXRpbGl0aWVzIiwidGVtcGxhdGVVdGlsaXRpZXMiLCJmaWxlU3lzdGVtVXRpbGl0aWVzIiwiY29uZmlndXJhdGlvblV0aWxpdGllcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRW9CQSxNQUFNO2VBQU5BLGVBQU07O0lBQ05DLE9BQU87ZUFBUEEsZ0JBQU87O0lBQ1BDLE9BQU87ZUFBUEEsZ0JBQU87O0lBQ1BDLFFBQVE7ZUFBUkEsaUJBQVE7O0lBQ1JDLFNBQVM7ZUFBVEEsa0JBQVM7O0lBQ1RDLFVBQVU7ZUFBVkEsbUJBQVU7O0lBQ1ZDLFdBQVc7ZUFBWEEsb0JBQVc7O0lBQ1hDLFlBQVk7ZUFBWkEscUJBQVk7O0lBQ1pDLGNBQWM7ZUFBZEEsdUJBQWM7O0lBRWRDLGFBQWE7ZUFBYkEsYUFBYTs7SUFDYkMsYUFBYTtlQUFiQSxhQUFhOztJQUNiQyxjQUFjO2VBQWRBLGNBQWM7O0lBQ2RDLGdCQUFnQjtlQUFoQkEsZ0JBQWdCOztJQUNoQkMsZ0JBQWdCO2VBQWhCQSxnQkFBZ0I7O0lBQ2hCQyxxQkFBcUI7ZUFBckJBLHFCQUFxQjs7SUFFckJDLGNBQWM7ZUFBZEEsY0FBYzs7SUFDZEMsZ0JBQWdCO2VBQWhCQSxnQkFBZ0I7O0lBQ2hCQyxnQkFBZ0I7ZUFBaEJBLGdCQUFnQjs7SUFDaEJDLGlCQUFpQjtlQUFqQkEsaUJBQWlCOztJQUNqQkMsbUJBQW1CO2VBQW5CQSxtQkFBbUI7O0lBQ25CQyxzQkFBc0I7ZUFBdEJBLHNCQUFzQjs7OzZEQXRCUjs4REFDQzs4REFDQTsrREFDQztnRUFDQztpRUFDQztrRUFDQzttRUFDQztxRUFDRTsyREFFRDsyREFDQTs0REFDQzs4REFDRTs4REFDQTttRUFDSzs0REFFUDs4REFDRTs4REFDQTsrREFDQztpRUFDRTtvRUFDRyJ9
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ migrate: function() {
13
+ return migrate;
14
+ },
15
+ default: function() {
16
+ return _default;
17
+ }
18
+ });
19
+ function migrate(json, migrationMap, latestVersion) {
20
+ var version = json.version;
21
+ while(version !== latestVersion){
22
+ var migrateFunction = migrationMap[version];
23
+ json = migrateFunction(json);
24
+ version = json.version;
25
+ }
26
+ return json;
27
+ }
28
+ var _default = {
29
+ migrate: migrate
30
+ };
31
+
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyc2lvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIG1pZ3JhdGUoanNvbiwgbWlncmF0aW9uTWFwLCBsYXRlc3RWZXJzaW9uKSB7XG4gIGxldCB7IHZlcnNpb24gfSA9IGpzb247XG5cbiAgd2hpbGUgKHZlcnNpb24gIT09IGxhdGVzdFZlcnNpb24pIHtcbiAgICBjb25zdCBtaWdyYXRlRnVuY3Rpb24gPSBtaWdyYXRpb25NYXBbdmVyc2lvbl07XG5cbiAgICBqc29uID0gbWlncmF0ZUZ1bmN0aW9uKGpzb24pO1xuXG4gICAgKHsgdmVyc2lvbiB9ID0ganNvbik7XG4gIH1cblxuICByZXR1cm4ganNvbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaWdyYXRlXG59O1xuIl0sIm5hbWVzIjpbIm1pZ3JhdGUiLCJqc29uIiwibWlncmF0aW9uTWFwIiwibGF0ZXN0VmVyc2lvbiIsInZlcnNpb24iLCJtaWdyYXRlRnVuY3Rpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVnQkEsT0FBTztlQUFQQTs7SUFjaEIsT0FFRTtlQUZGOzs7QUFkTyxTQUFTQSxRQUFRQyxJQUFJLEVBQUVDLFlBQVksRUFBRUMsYUFBYTtJQUN2RCxJQUFJLEFBQUVDLFVBQVlILEtBQVpHO0lBRU4sTUFBT0EsWUFBWUQsY0FBZTtRQUNoQyxJQUFNRSxrQkFBa0JILFlBQVksQ0FBQ0UsUUFBUTtRQUU3Q0gsT0FBT0ksZ0JBQWdCSjtRQUVwQkcsVUFBWUgsS0FBWkc7SUFDTDtJQUVBLE9BQU9IO0FBQ1Q7SUFFQSxXQUFlO0lBQ2JELFNBQUFBO0FBQ0YifQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "necessary",
3
3
  "author": "James Smith",
4
- "version": "11.8.5",
4
+ "version": "11.9.2",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/necessary",
7
7
  "description": "A collection of utility functions.",
package/src/browser.js CHANGED
@@ -15,4 +15,5 @@ export { default as ajaxUtilities } from "./utilities/ajax";
15
15
  export { default as pathUtilities } from "./utilities/path";
16
16
  export { default as httpUtilities } from "./utilities/http";
17
17
  export { default as arrayUtilities } from "./utilities/array";
18
+ export { default as versionUtilities } from "./utilities/version";
18
19
  export { default as asynchronousUtilities } from "./utilities/asynchronous";
package/src/main.js CHANGED
@@ -13,6 +13,7 @@ export { default as statusMessages } from "./statusMessages";
13
13
  export { default as pathUtilities } from "./utilities/path";
14
14
  export { default as httpUtilities } from "./utilities/http";
15
15
  export { default as arrayUtilities } from "./utilities/array";
16
+ export { default as versionUtilities } from "./utilities/version";
16
17
  export { default as packageUtilities } from "./utilities/package";
17
18
  export { default as asynchronousUtilities } from "./utilities/asynchronous";
18
19
 
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ export function migrate(json, migrationMap, latestVersion) {
4
+ let { version } = json;
5
+
6
+ while (version !== latestVersion) {
7
+ const migrateFunction = migrationMap[version];
8
+
9
+ json = migrateFunction(json);
10
+
11
+ ({ version } = json);
12
+ }
13
+
14
+ return json;
15
+ }
16
+
17
+ export default {
18
+ migrate
19
+ };