@cross-check/core
Advanced tools
Comparing version 0.11.3 to 0.11.4
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiJmaWxlOi8vL1VzZXJzL3NvaGFyYS9jb2RlL2Nyb3NzLWNoZWNrL3BhY2thZ2VzL2NvcmUvIiwic291cmNlcyI6WyJkZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYXNrIH0gZnJvbSBcIm5vLXNob3dcIjtcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gXCJ0cy1zdGRcIjtcblxuZXhwb3J0IHR5cGUgRXJyb3JQYXRoID0gUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xuXG4vKipcbiAqIEBhcGkgcHVibGljXG4gKlxuICogQSByZXByZXNlbmF0aW9uIG9mIGEgZmFpbGVkIHZhbGlkYXRpb24sIG5vdCBpbmNsdWRpbmcgaXRzIGxvY2F0aW9uLiBUaGlzIG9iamVjdFxuICogY2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBhIGZvcm1hdHRlciB0byBwcm9kdWNlIGh1bWFuLXJlYWRhYmxlIGVycm9ycy4gVGhlXG4gKiBpbmZvcm1hdGlvbiBwcm92aWRlZCBpbiBhbiBgRXJyb3JNZXNzYWdlYCBzaG91bGQgYmUgZW5vdWdoIHRvIHByb3Blcmx5XG4gKiBpbnRlcm5hdGlvbmFsaXplIHRoZSBlcnJvciBtZXNzYWdlIG9yIHVzZSBpdCBpbiBvdGhlciBsb2NhbGl6YXRpb24gY29udGV4dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JNZXNzYWdlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXRhaWxzOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEBhcGkgcHVibGljXG4gKlxuICogQSByZXByZXNlbnRhdGlvbiBvZiBhIGZhaWxlZCB2YWxpZGF0aW9uLCBpbmNsdWRpbmcgdGhlIGxvY2F0aW9uIGluIHRoZSB2YWxpZGF0ZWRcbiAqIG9iamVjdCB3aGVyZSB0aGUgdmFsaWRhdGlvbiBmYWlsZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbkVycm9yIHtcbiAgcGF0aDogRXJyb3JQYXRoO1xuICBtZXNzYWdlOiBFcnJvck1lc3NhZ2U7XG59XG5cbi8qKlxuICogQGFwaSBob3N0XG4gKlxuICogQW4gb2JqZWN0IHRoYXQgcHJvdmlkZXMgaG9zdC1zcGVjaWZpYyBiZWhhdmlvciBmb3IgdmFsaWRhdG9ycy4gSXQgaXMgcGFzc2VkIGluIHRvXG4gKiBhbGwgYFZhbGlkYXRvckZhY3Rvcnlgcywgc28gaG9zdHMgY2FuIGFsc28gZXh0ZW5kIEVudmlyb25tZW50IHRvIGNvbW11bmljYXRlIHdpdGhcbiAqIHZhbGlkYXRvcnMgd3JpdHRlbiB0byBiZSB1c2VkIGluIHRoYXQgZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXJvbm1lbnQge1xuICBnZXQob2JqZWN0OiB1bmtub3duLCBrZXk6IHN0cmluZyB8IG51bWJlcik6IHVua25vd247XG59XG5cbi8qKlxuICogQGFwaSBwcmltaXRpdmVcbiAqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gZW52aXJvbm1lbnQgYW5kIHZhbGlkYXRvciBvcHRpb25zIGFuZCBwcm9kdWNlcyBhIG5ld1xuICogVmFsaWRhdG9yIGZ1bmN0aW9uLiBJbiBvdGhlciB3b3JkcywgaXQgY3VycmllcyB0aGUgZW52aXJvbm1lbnQgYW5kIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRvckZhY3Rvcnk8VCwgT3B0aW9ucz4gPSAoXG4gIG9wdGlvbnM6IE9wdGlvbnMsXG4gIGVudjogRW52aXJvbm1lbnRcbikgPT4gVmFsaWRhdG9yPFQ+O1xuXG4vKipcbiAqIEBhcGkgcHJpbWl0aXZlXG4gKlxuICogQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdmFsdWUgYW5kIGEgdmFsaWRhdGlvbiBjb250ZXh0IGFuZCAoYXN5bmNocm9ub3VzbHkpXG4gKiBwcm9kdWNlcyBhIGxpc3Qgb2YgdmFsaWRhdGlvbiBlcnJvcnMuXG4gKlxuICogQSBzdWNjZXNzZnVsIHZhbGlkYXRpb24gcHJvZHVjZXMgYW4gZW1wdHkgbGlzdCBvZiB2YWxpZGF0aW9uIGVycm9ycy5cbiAqXG4gKiBQcmltaXRpdmUgdmFsaWRhdGlvbnMgbXVzdCB1c2Ugbm8tc2hvdyBUYXNrcyAod2hpY2ggY2FuIGJlIGNhbmNlbGxlZCkgdG8gbWFuYWdlIGFzeW5jaHJvbnkuXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRvcjxUID0gdW5rbm93bj4gPSAoXG4gIHZhbHVlOiBULFxuICBjb250ZXh0OiBPcHRpb248c3RyaW5nPlxuKSA9PiBUYXNrPFZhbGlkYXRpb25FcnJvcltdPjtcblxuLyoqXG4gKiBAYXBpIHByaW1pdGl2ZVxuICpcbiAqIEEgbG93LWxldmVsIHJlcHJlc2VudGF0aW9uIG9mIGEgdmFsaWRhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkRlc2NyaXB0b3I8VCA9IHVua25vd24sIE9wdGlvbnMgPSB1bmtub3duPiA9IFJlYWRvbmx5PHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWxpZGF0b3I6IFZhbGlkYXRvckZhY3Rvcnk8VCwgT3B0aW9ucz47XG4gIG9wdGlvbnM6IE9wdGlvbnM7XG4gIGNvbnRleHRzPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xufT47XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiJmaWxlOi8vL1VzZXJzL3NvaGFyYS9jb2RlL2Nyb3NzLWNoZWNrL3BhY2thZ2VzL2NvcmUvIiwic291cmNlcyI6WyJkZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYXNrIH0gZnJvbSBcIm5vLXNob3dcIjtcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gXCJ0cy1zdGRcIjtcblxuZXhwb3J0IHR5cGUgRXJyb3JQYXRoID0gUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xuXG4vKipcbiAqIEBhcGkgcHVibGljXG4gKlxuICogQSByZXByZXNlbmF0aW9uIG9mIGEgZmFpbGVkIHZhbGlkYXRpb24sIG5vdCBpbmNsdWRpbmcgaXRzIGxvY2F0aW9uLiBUaGlzIG9iamVjdFxuICogY2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBhIGZvcm1hdHRlciB0byBwcm9kdWNlIGh1bWFuLXJlYWRhYmxlIGVycm9ycy4gVGhlXG4gKiBpbmZvcm1hdGlvbiBwcm92aWRlZCBpbiBhbiBgRXJyb3JNZXNzYWdlYCBzaG91bGQgYmUgZW5vdWdoIHRvIHByb3Blcmx5XG4gKiBpbnRlcm5hdGlvbmFsaXplIHRoZSBlcnJvciBtZXNzYWdlIG9yIHVzZSBpdCBpbiBvdGhlciBsb2NhbGl6YXRpb24gY29udGV4dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JNZXNzYWdlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXRhaWxzOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEBhcGkgcHVibGljXG4gKlxuICogQSByZXByZXNlbnRhdGlvbiBvZiBhIGZhaWxlZCB2YWxpZGF0aW9uLCBpbmNsdWRpbmcgdGhlIGxvY2F0aW9uIGluIHRoZSB2YWxpZGF0ZWRcbiAqIG9iamVjdCB3aGVyZSB0aGUgdmFsaWRhdGlvbiBmYWlsZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbkVycm9yIHtcbiAgcGF0aDogRXJyb3JQYXRoO1xuICBtZXNzYWdlOiBFcnJvck1lc3NhZ2U7XG59XG5cbi8qKlxuICogQGFwaSBob3N0XG4gKlxuICogQW4gb2JqZWN0IHRoYXQgcHJvdmlkZXMgaG9zdC1zcGVjaWZpYyBiZWhhdmlvciBmb3IgdmFsaWRhdG9ycy4gSXQgaXMgcGFzc2VkIGluIHRvXG4gKiBhbGwgYFZhbGlkYXRvckZhY3Rvcnlgcywgc28gaG9zdHMgY2FuIGFsc28gZXh0ZW5kIE9iamVjdE1vZGVsIHRvIGNvbW11bmljYXRlIHdpdGhcbiAqIHZhbGlkYXRvcnMgd3JpdHRlbiB0byBiZSB1c2VkIGluIHRoYXQgb2JqZWN0IG1vZGVsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdE1vZGVsIHtcbiAgZ2V0KG9iamVjdDogdW5rbm93biwga2V5OiBzdHJpbmcgfCBudW1iZXIpOiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIGFueSBvYmplY3QsIGFuZCByZXR1cm5zIGBudWxsYCBpZiB0aGUgb2JqZWN0XG4gICAqIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhbiBhcnJheSBieSB0aGUgYnVpbHQtaW4gdmFsaWRhdG9ycywgYW5kXG4gICAqIGFuIGl0ZXJhYmxlIGlmIHRoZSBvYmplY3Qgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gYXJyYXkuXG4gICAqXG4gICAqIElmIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyBhIHNpbXBsZSBhcnJheSwgaXQncyBmaW5lIHRvIHJldHVybiBpdC5cbiAgICpcbiAgICogWW91IGNhbiBhbHNvIHJldHVybiBhbiBpdGVyYWJsZSwgd2hpY2ggd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiB0aGVcbiAgICogaW50ZXJuYWxzIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSB2YWx1ZXMuIFRoaXMgY2FuIHNhdmUgd29yayBpZlxuICAgKiB0aGUgcHJvY2VzcyBvZiB0dXJuaW5nIHlvdXIgdmFsdWUgaW50byBhbiBBcnJheSBpcyBleHBlbnNpdmUuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhbiBJbW11dGFibGUuanMgbGlzdCB0aGF0IHlvdSB3YW50IHRoZVxuICAgKiBidWlsdC1pbiB2YWxpZGF0b3JzIHRvIHRyZWF0IGFzIGEgbGlzdCwgeW91IGNvdWxkIHdyaXRlOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBjb25zdCBFTlYgPSB7XG4gICAqICAgYXNMaXN0KG9iamVjdCkge1xuICAgKiAgICAgaWYgKExpc3QuaXNMaXN0KG9iamVjdCkgfHwgQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAqICAgICAgIHJldHVybiBvYmplY3RbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgKiAgICAgfSBlbHNlIHtcbiAgICogICAgICAgcmV0dXJuIG51bGw7XG4gICAqICAgICB9XG4gICAqICAgfVxuICAgKiB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogSWYgeW91IGFyZSB3b3JraW5nIHdpdGggYSBjb2xsZWN0aW9uIHRoYXQgZG9lc24ndCBhbHJlYWR5IHN1cHBvcnRcbiAgICogYFN5bWJvbC5pdGVyYXRvcmAsIHlvdSBjYW4gZWFzaWx5IGFkYXB0IGl0LiBGb3IgZXhhbXBsZSwgc2F5IHlvdSdyZVxuICAgKiB3b3JraW5nIHdpdGggYW4gYXJyYXktbGlrZSBzdHJ1Y3R1cmUgdGhhdCBoYXMgYSBgdG9BcnJheWAgbWV0aG9kIG9uXG4gICAqIGl0LlxuICAgKlxuICAgKiBDcm9zcyBDaGVjayBtaWdodCBpbnZva2UgYXNMaXN0IG11bHRpcGxlIHRpbWVzLCBidXQgd2lsbCBvbmx5IGludm9rZVxuICAgKiB0aGUgZ2VuZXJhdG9yIGlmIGl0IHdhbnRzIHRvIHZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgbGlzdC5cbiAgICpcbiAgICogYGBgdHNcbiAgICogaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gXCJAZW1iZXIvYXJyYXlcIjtcbiAgICpcbiAgICogY29uc3QgRU5WID0ge1xuICAgKiAgIGFzTGlzdChvYmplY3QpIHtcbiAgICogICAgIC8vIHN1cHBvcnQgYnVpbHQtaW4gQXJyYXlzXG4gICAqICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAqICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAqICAgICB9IGVsc2UgaWYgKGlzQXJyYXkob2JqZWN0KSkge1xuICAgKiAgICAgICByZXR1cm4gaXRlcmFibGUob2JqZWN0KTtcbiAgICogICAgIH0gZWxzZSB7XG4gICAqICAgICAgIHJldHVybiBudWxsO1xuICAgKiAgICAgfVxuICAgKiAgIH1cbiAgICogfTtcbiAgICpcbiAgICogZnVuY3Rpb24qIGl0ZXJhYmxlKG9iamVjdCkge1xuICAgKiAgIC8vIFRoaXMgd2lsbCBvbmx5IHJ1biBpZiBjcm9zcy1jaGVjayBhdHRlbXB0cyB0byBpdGVyYXRlLFxuICAgKiAgIC8vIHNvIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNvc3Qgb2YgY29lcmNpbmcgaW50b1xuICAgKiAgIC8vIGFuIGFycmF5LlxuICAgKiAgIGxldCBhcnJheSA9IG9iamVjdC50b0FycmF5KCk7XG4gICAqXG4gICAqICAgZm9yIChsZXQgaXRlbSBvZiBhcnJheSkge1xuICAgKiAgICAgeWllbGQgaXRlbTtcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBvYmplY3RcbiAgICovXG4gIGFzTGlzdChvYmplY3Q6IHVua25vd24pOiBPcHRpb248SXRlcmFibGU8dW5rbm93bj4gfCBBcnJheTx1bmtub3duPj47XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IHR5cGUgRW52aXJvbm1lbnQgPSBPYmplY3RNb2RlbDtcblxuLyoqXG4gKiBAYXBpIHByaW1pdGl2ZVxuICpcbiAqIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBvYmplY3QgbW9kZWwgYW5kIHZhbGlkYXRvciBvcHRpb25zIGFuZCBwcm9kdWNlcyBhIG5ld1xuICogVmFsaWRhdG9yIGZ1bmN0aW9uLiBJbiBvdGhlciB3b3JkcywgaXQgY3VycmllcyB0aGUgb2JqZWN0IG1vZGVsIGFuZCBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0b3JGYWN0b3J5PFQsIE9wdGlvbnM+ID0gKFxuICBvcHRpb25zOiBPcHRpb25zLFxuICBvYmplY3RNb2RlbDogT2JqZWN0TW9kZWxcbikgPT4gVmFsaWRhdG9yPFQ+O1xuXG4vKipcbiAqIEBhcGkgcHJpbWl0aXZlXG4gKlxuICogQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdmFsdWUgYW5kIGEgdmFsaWRhdGlvbiBjb250ZXh0IGFuZCAoYXN5bmNocm9ub3VzbHkpXG4gKiBwcm9kdWNlcyBhIGxpc3Qgb2YgdmFsaWRhdGlvbiBlcnJvcnMuXG4gKlxuICogQSBzdWNjZXNzZnVsIHZhbGlkYXRpb24gcHJvZHVjZXMgYW4gZW1wdHkgbGlzdCBvZiB2YWxpZGF0aW9uIGVycm9ycy5cbiAqXG4gKiBQcmltaXRpdmUgdmFsaWRhdGlvbnMgbXVzdCB1c2Ugbm8tc2hvdyBUYXNrcyAod2hpY2ggY2FuIGJlIGNhbmNlbGxlZCkgdG8gbWFuYWdlIGFzeW5jaHJvbnkuXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRvcjxUID0gdW5rbm93bj4gPSAoXG4gIHZhbHVlOiBULFxuICBjb250ZXh0OiBPcHRpb248c3RyaW5nPlxuKSA9PiBUYXNrPFZhbGlkYXRpb25FcnJvcltdPjtcblxuLyoqXG4gKiBAYXBpIHByaW1pdGl2ZVxuICpcbiAqIEEgbG93LWxldmVsIHJlcHJlc2VudGF0aW9uIG9mIGEgdmFsaWRhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkRlc2NyaXB0b3I8VCA9IHVua25vd24sIE9wdGlvbnMgPSB1bmtub3duPiA9IFJlYWRvbmx5PHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWxpZGF0b3I6IFZhbGlkYXRvckZhY3Rvcnk8VCwgT3B0aW9ucz47XG4gIG9wdGlvbnM6IE9wdGlvbnM7XG4gIGNvbnRleHRzPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xufT47XG4iXX0= |
@@ -10,2 +10,2 @@ "use strict"; | ||
exports.validator = validator_1.validator; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiZmlsZTovLy9Vc2Vycy9zb2hhcmEvY29kZS9jcm9zcy1jaGVjay9wYWNrYWdlcy9jb3JlLyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFTQSxnQ0FBMkI7QUFDM0IsOEJBQXlCO0FBQ3pCLHlDQUlxQjtBQURuQixnQ0FBQSxTQUFTLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBFcnJvclBhdGgsXG4gIEVycm9yTWVzc2FnZSxcbiAgVmFsaWRhdGlvbkVycm9yLFxuICBFbnZpcm9ubWVudCxcbiAgVmFsaWRhdG9yRmFjdG9yeSxcbiAgVmFsaWRhdG9yLFxuICBWYWxpZGF0aW9uRGVzY3JpcHRvclxufSBmcm9tIFwiLi9kZXNjcmlwdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9ybWF0XCI7XG5leHBvcnQge1xuICBCYXNpY1ZhbGlkYXRvcixcbiAgSGlnaGVyT3JkZXJCYXNpY1ZhbGlkYXRvcixcbiAgdmFsaWRhdG9yXG59IGZyb20gXCIuL3ZhbGlkYXRvclwiO1xuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiZmlsZTovLy9Vc2Vycy9zb2hhcmEvY29kZS9jcm9zcy1jaGVjay9wYWNrYWdlcy9jb3JlLyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFVQSxnQ0FBMkI7QUFDM0IsOEJBQXlCO0FBQ3pCLHlDQUlxQjtBQURuQixnQ0FBQSxTQUFTLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBFcnJvclBhdGgsXG4gIEVycm9yTWVzc2FnZSxcbiAgVmFsaWRhdGlvbkVycm9yLFxuICBPYmplY3RNb2RlbCxcbiAgRW52aXJvbm1lbnQsXG4gIFZhbGlkYXRvckZhY3RvcnksXG4gIFZhbGlkYXRvcixcbiAgVmFsaWRhdGlvbkRlc2NyaXB0b3Jcbn0gZnJvbSBcIi4vZGVzY3JpcHRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmFsaWRhdGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Zvcm1hdFwiO1xuZXhwb3J0IHtcbiAgQmFzaWNWYWxpZGF0b3IsXG4gIEhpZ2hlck9yZGVyQmFzaWNWYWxpZGF0b3IsXG4gIHZhbGlkYXRvclxufSBmcm9tIFwiLi92YWxpZGF0b3JcIjtcbiJdfQ== |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const no_show_1 = require("no-show"); | ||
const DEFAULT_ENVIRONMENT = { | ||
const DEFAULT_OBJECT_MODEL = { | ||
get(object, key) { | ||
@@ -12,2 +12,10 @@ if (object !== null && object !== undefined) { | ||
} | ||
}, | ||
asList(object) { | ||
if (Array.isArray(object)) { | ||
return object; | ||
} | ||
else { | ||
return null; | ||
} | ||
} | ||
@@ -18,3 +26,3 @@ }; | ||
* | ||
* A function that takes an environment, value, descriptor and context, and (asynchronously) | ||
* A function that takes an object model, value, descriptor and context, and (asynchronously) | ||
* produces an array of validation errors. If this function produces an empty array, the | ||
@@ -28,3 +36,3 @@ * validation succeeded. | ||
* | ||
* @param env The host environment | ||
* @param objectModel The host object model | ||
* @param value The value to validate; it need not be an object | ||
@@ -35,3 +43,3 @@ * @param descriptor A validation descriptor to use to validate the value; a single validation | ||
*/ | ||
function validate(value, descriptor, context = null, env = DEFAULT_ENVIRONMENT) { | ||
function validate(value, descriptor, context = null, objectModel = DEFAULT_OBJECT_MODEL) { | ||
return new no_show_1.Task(async (run) => { | ||
@@ -43,3 +51,3 @@ let { validator, options, contexts } = descriptor; | ||
} | ||
let validateFunction = validator(options, env); | ||
let validateFunction = validator(options, objectModel); | ||
return await run(validateFunction(value, context)); | ||
@@ -49,2 +57,2 @@ }); | ||
exports.validate = validate; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiZmlsZTovLy9Vc2Vycy9zb2hhcmEvY29kZS9jcm9zcy1jaGVjay9wYWNrYWdlcy9jb3JlLyIsInNvdXJjZXMiOlsidmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBK0I7QUFRL0IsTUFBTSxtQkFBbUIsR0FBZ0I7SUFDdkMsR0FBRyxDQUFDLE1BQWUsRUFBRSxHQUFvQjtRQUN2QyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUMzQyxPQUFRLE1BQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNMLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILFNBQWdCLFFBQVEsQ0FDdEIsS0FBUSxFQUNSLFVBQTRDLEVBQzVDLFVBQTBCLElBQUksRUFDOUIsTUFBbUIsbUJBQW1CO0lBRXRDLE9BQU8sSUFBSSxjQUFJLENBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFFO1FBQzFCLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUVsRCxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDbkQsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFBRSxPQUFPLEVBQUUsQ0FBQztTQUNqRDtRQUVELElBQUksZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUvQyxPQUFPLE1BQU0sR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWpCRCw0QkFpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYXNrIH0gZnJvbSBcIm5vLXNob3dcIjtcbmltcG9ydCB7IEluZGV4YWJsZSwgT3B0aW9uIH0gZnJvbSBcInRzLXN0ZFwiO1xuaW1wb3J0IHtcbiAgRW52aXJvbm1lbnQsXG4gIFZhbGlkYXRpb25EZXNjcmlwdG9yLFxuICBWYWxpZGF0aW9uRXJyb3Jcbn0gZnJvbSBcIi4vZGVzY3JpcHRvclwiO1xuXG5jb25zdCBERUZBVUxUX0VOVklST05NRU5UOiBFbnZpcm9ubWVudCA9IHtcbiAgZ2V0KG9iamVjdDogdW5rbm93biwga2V5OiBzdHJpbmcgfCBudW1iZXIpOiB1bmtub3duIHtcbiAgICBpZiAob2JqZWN0ICE9PSBudWxsICYmIG9iamVjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gKG9iamVjdCBhcyBJbmRleGFibGUpW2tleV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEBhcGkgcHVibGljXG4gKlxuICogQSBmdW5jdGlvbiB0aGF0IHRha2VzIGFuIGVudmlyb25tZW50LCB2YWx1ZSwgZGVzY3JpcHRvciBhbmQgY29udGV4dCwgYW5kIChhc3luY2hyb25vdXNseSlcbiAqIHByb2R1Y2VzIGFuIGFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3JzLiBJZiB0aGlzIGZ1bmN0aW9uIHByb2R1Y2VzIGFuIGVtcHR5IGFycmF5LCB0aGVcbiAqIHZhbGlkYXRpb24gc3VjY2VlZGVkLlxuICpcbiAqIFRoZSBcImNvbnRleHRcIiBpcyBhbiBhcHAtc3BlY2lmaWMgY29uY2VwdC4gRm9yIGV4YW1wbGUsIGFuIGFwcCBtaWdodCB3YW50IHRvIHNlcGFyYXRlXG4gKiBiZXR3ZWVuIHZhbGlkYXRpb25zIHRoYXQgbXVzdCBwYXNzIHdoZW4gZHJhZnRpbmcgYW4gYXJ0aWNsZSB2cy4gdmFsaWRhdGlvbnMgdGhhdFxuICogbXVzdCBwYXNzIHdoZW4gcHVibGlzaGluZyBhbiBhcnRpY2xlLiBJZiBhIHZhbGlkYXRpb24gZGVzY3JpcHRvciBkb2VzIG5vdCBzcGVjaWZ5XG4gKiB0aGUgY29udGV4dCBwYXNzZWQgaW4gdG8gYHZhbGlkYXRlYCwgdGhlIHZhbGlkYXRpb24gcGFzc2VzLlxuICpcbiAqIEBwYXJhbSBlbnYgVGhlIGhvc3QgZW52aXJvbm1lbnRcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gdmFsaWRhdGU7IGl0IG5lZWQgbm90IGJlIGFuIG9iamVjdFxuICogQHBhcmFtIGRlc2NyaXB0b3IgQSB2YWxpZGF0aW9uIGRlc2NyaXB0b3IgdG8gdXNlIHRvIHZhbGlkYXRlIHRoZSB2YWx1ZTsgYSBzaW5nbGUgdmFsaWRhdGlvblxuICogIGRlc2NyaXB0b3IgY2FuIHJlcHJlc2VudCBtdWx0aXBsZSBjb21wb3NlZCB2YWxpZGF0aW9uc1xuICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWxseSwgYSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBzYXZpbmcgY29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGU8VCwgT3B0aW9ucz4oXG4gIHZhbHVlOiBULFxuICBkZXNjcmlwdG9yOiBWYWxpZGF0aW9uRGVzY3JpcHRvcjxULCBPcHRpb25zPixcbiAgY29udGV4dDogT3B0aW9uPHN0cmluZz4gPSBudWxsLFxuICBlbnY6IEVudmlyb25tZW50ID0gREVGQVVMVF9FTlZJUk9OTUVOVFxuKTogVGFzazxWYWxpZGF0aW9uRXJyb3JbXT4ge1xuICByZXR1cm4gbmV3IFRhc2soYXN5bmMgcnVuID0+IHtcbiAgICBsZXQgeyB2YWxpZGF0b3IsIG9wdGlvbnMsIGNvbnRleHRzIH0gPSBkZXNjcmlwdG9yO1xuXG4gICAgaWYgKGNvbnRleHQgIT09IG51bGwgJiYgY29udGV4dHMgJiYgY29udGV4dHMubGVuZ3RoKSB7XG4gICAgICBpZiAoY29udGV4dHMuaW5kZXhPZihjb250ZXh0KSA9PT0gLTEpIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBsZXQgdmFsaWRhdGVGdW5jdGlvbiA9IHZhbGlkYXRvcihvcHRpb25zLCBlbnYpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHJ1bih2YWxpZGF0ZUZ1bmN0aW9uKHZhbHVlLCBjb250ZXh0KSk7XG4gIH0pO1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiZmlsZTovLy9Vc2Vycy9zb2hhcmEvY29kZS9jcm9zcy1jaGVjay9wYWNrYWdlcy9jb3JlLyIsInNvdXJjZXMiOlsidmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBK0I7QUFRL0IsTUFBTSxvQkFBb0IsR0FBZ0I7SUFDeEMsR0FBRyxDQUFDLE1BQWUsRUFBRSxHQUFvQjtRQUN2QyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUMzQyxPQUFRLE1BQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNMLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWU7UUFDcEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILFNBQWdCLFFBQVEsQ0FDdEIsS0FBUSxFQUNSLFVBQTRDLEVBQzVDLFVBQTBCLElBQUksRUFDOUIsY0FBMkIsb0JBQW9CO0lBRS9DLE9BQU8sSUFBSSxjQUFJLENBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFFO1FBQzFCLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUVsRCxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDbkQsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFBRSxPQUFPLEVBQUUsQ0FBQztTQUNqRDtRQUVELElBQUksZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUV2RCxPQUFPLE1BQU0sR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWpCRCw0QkFpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYXNrIH0gZnJvbSBcIm5vLXNob3dcIjtcbmltcG9ydCB7IEluZGV4YWJsZSwgT3B0aW9uIH0gZnJvbSBcInRzLXN0ZFwiO1xuaW1wb3J0IHtcbiAgT2JqZWN0TW9kZWwsXG4gIFZhbGlkYXRpb25EZXNjcmlwdG9yLFxuICBWYWxpZGF0aW9uRXJyb3Jcbn0gZnJvbSBcIi4vZGVzY3JpcHRvclwiO1xuXG5jb25zdCBERUZBVUxUX09CSkVDVF9NT0RFTDogT2JqZWN0TW9kZWwgPSB7XG4gIGdldChvYmplY3Q6IHVua25vd24sIGtleTogc3RyaW5nIHwgbnVtYmVyKTogdW5rbm93biB7XG4gICAgaWYgKG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIChvYmplY3QgYXMgSW5kZXhhYmxlKVtrZXldO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbiAgfSxcblxuICBhc0xpc3Qob2JqZWN0OiB1bmtub3duKTogT3B0aW9uPEFycmF5PHVua25vd24+PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqZWN0KSkge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEBhcGkgcHVibGljXG4gKlxuICogQSBmdW5jdGlvbiB0aGF0IHRha2VzIGFuIG9iamVjdCBtb2RlbCwgdmFsdWUsIGRlc2NyaXB0b3IgYW5kIGNvbnRleHQsIGFuZCAoYXN5bmNocm9ub3VzbHkpXG4gKiBwcm9kdWNlcyBhbiBhcnJheSBvZiB2YWxpZGF0aW9uIGVycm9ycy4gSWYgdGhpcyBmdW5jdGlvbiBwcm9kdWNlcyBhbiBlbXB0eSBhcnJheSwgdGhlXG4gKiB2YWxpZGF0aW9uIHN1Y2NlZWRlZC5cbiAqXG4gKiBUaGUgXCJjb250ZXh0XCIgaXMgYW4gYXBwLXNwZWNpZmljIGNvbmNlcHQuIEZvciBleGFtcGxlLCBhbiBhcHAgbWlnaHQgd2FudCB0byBzZXBhcmF0ZVxuICogYmV0d2VlbiB2YWxpZGF0aW9ucyB0aGF0IG11c3QgcGFzcyB3aGVuIGRyYWZ0aW5nIGFuIGFydGljbGUgdnMuIHZhbGlkYXRpb25zIHRoYXRcbiAqIG11c3QgcGFzcyB3aGVuIHB1Ymxpc2hpbmcgYW4gYXJ0aWNsZS4gSWYgYSB2YWxpZGF0aW9uIGRlc2NyaXB0b3IgZG9lcyBub3Qgc3BlY2lmeVxuICogdGhlIGNvbnRleHQgcGFzc2VkIGluIHRvIGB2YWxpZGF0ZWAsIHRoZSB2YWxpZGF0aW9uIHBhc3Nlcy5cbiAqXG4gKiBAcGFyYW0gb2JqZWN0TW9kZWwgVGhlIGhvc3Qgb2JqZWN0IG1vZGVsXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHZhbGlkYXRlOyBpdCBuZWVkIG5vdCBiZSBhbiBvYmplY3RcbiAqIEBwYXJhbSBkZXNjcmlwdG9yIEEgdmFsaWRhdGlvbiBkZXNjcmlwdG9yIHRvIHVzZSB0byB2YWxpZGF0ZSB0aGUgdmFsdWU7IGEgc2luZ2xlIHZhbGlkYXRpb25cbiAqICBkZXNjcmlwdG9yIGNhbiByZXByZXNlbnQgbXVsdGlwbGUgY29tcG9zZWQgdmFsaWRhdGlvbnNcbiAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsbHksIGEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgc2F2aW5nIGNvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlPFQsIE9wdGlvbnM+KFxuICB2YWx1ZTogVCxcbiAgZGVzY3JpcHRvcjogVmFsaWRhdGlvbkRlc2NyaXB0b3I8VCwgT3B0aW9ucz4sXG4gIGNvbnRleHQ6IE9wdGlvbjxzdHJpbmc+ID0gbnVsbCxcbiAgb2JqZWN0TW9kZWw6IE9iamVjdE1vZGVsID0gREVGQVVMVF9PQkpFQ1RfTU9ERUxcbik6IFRhc2s8VmFsaWRhdGlvbkVycm9yW10+IHtcbiAgcmV0dXJuIG5ldyBUYXNrKGFzeW5jIHJ1biA9PiB7XG4gICAgbGV0IHsgdmFsaWRhdG9yLCBvcHRpb25zLCBjb250ZXh0cyB9ID0gZGVzY3JpcHRvcjtcblxuICAgIGlmIChjb250ZXh0ICE9PSBudWxsICYmIGNvbnRleHRzICYmIGNvbnRleHRzLmxlbmd0aCkge1xuICAgICAgaWYgKGNvbnRleHRzLmluZGV4T2YoY29udGV4dCkgPT09IC0xKSByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IHZhbGlkYXRlRnVuY3Rpb24gPSB2YWxpZGF0b3Iob3B0aW9ucywgb2JqZWN0TW9kZWwpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHJ1bih2YWxpZGF0ZUZ1bmN0aW9uKHZhbHVlLCBjb250ZXh0KSk7XG4gIH0pO1xufVxuIl19 |
@@ -1,1 +0,1 @@ | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiJmaWxlOi8vL1VzZXJzL3NvaGFyYS9jb2RlL2Nyb3NzLWNoZWNrL3BhY2thZ2VzL2NvcmUvIiwic291cmNlcyI6WyJkZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYXNrIH0gZnJvbSBcIm5vLXNob3dcIjtcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gXCJ0cy1zdGRcIjtcblxuZXhwb3J0IHR5cGUgRXJyb3JQYXRoID0gUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xuXG4vKipcbiAqIEBhcGkgcHVibGljXG4gKlxuICogQSByZXByZXNlbmF0aW9uIG9mIGEgZmFpbGVkIHZhbGlkYXRpb24sIG5vdCBpbmNsdWRpbmcgaXRzIGxvY2F0aW9uLiBUaGlzIG9iamVjdFxuICogY2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBhIGZvcm1hdHRlciB0byBwcm9kdWNlIGh1bWFuLXJlYWRhYmxlIGVycm9ycy4gVGhlXG4gKiBpbmZvcm1hdGlvbiBwcm92aWRlZCBpbiBhbiBgRXJyb3JNZXNzYWdlYCBzaG91bGQgYmUgZW5vdWdoIHRvIHByb3Blcmx5XG4gKiBpbnRlcm5hdGlvbmFsaXplIHRoZSBlcnJvciBtZXNzYWdlIG9yIHVzZSBpdCBpbiBvdGhlciBsb2NhbGl6YXRpb24gY29udGV4dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JNZXNzYWdlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXRhaWxzOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEBhcGkgcHVibGljXG4gKlxuICogQSByZXByZXNlbnRhdGlvbiBvZiBhIGZhaWxlZCB2YWxpZGF0aW9uLCBpbmNsdWRpbmcgdGhlIGxvY2F0aW9uIGluIHRoZSB2YWxpZGF0ZWRcbiAqIG9iamVjdCB3aGVyZSB0aGUgdmFsaWRhdGlvbiBmYWlsZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbkVycm9yIHtcbiAgcGF0aDogRXJyb3JQYXRoO1xuICBtZXNzYWdlOiBFcnJvck1lc3NhZ2U7XG59XG5cbi8qKlxuICogQGFwaSBob3N0XG4gKlxuICogQW4gb2JqZWN0IHRoYXQgcHJvdmlkZXMgaG9zdC1zcGVjaWZpYyBiZWhhdmlvciBmb3IgdmFsaWRhdG9ycy4gSXQgaXMgcGFzc2VkIGluIHRvXG4gKiBhbGwgYFZhbGlkYXRvckZhY3Rvcnlgcywgc28gaG9zdHMgY2FuIGFsc28gZXh0ZW5kIEVudmlyb25tZW50IHRvIGNvbW11bmljYXRlIHdpdGhcbiAqIHZhbGlkYXRvcnMgd3JpdHRlbiB0byBiZSB1c2VkIGluIHRoYXQgZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXJvbm1lbnQge1xuICBnZXQob2JqZWN0OiB1bmtub3duLCBrZXk6IHN0cmluZyB8IG51bWJlcik6IHVua25vd247XG59XG5cbi8qKlxuICogQGFwaSBwcmltaXRpdmVcbiAqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gZW52aXJvbm1lbnQgYW5kIHZhbGlkYXRvciBvcHRpb25zIGFuZCBwcm9kdWNlcyBhIG5ld1xuICogVmFsaWRhdG9yIGZ1bmN0aW9uLiBJbiBvdGhlciB3b3JkcywgaXQgY3VycmllcyB0aGUgZW52aXJvbm1lbnQgYW5kIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRvckZhY3Rvcnk8VCwgT3B0aW9ucz4gPSAoXG4gIG9wdGlvbnM6IE9wdGlvbnMsXG4gIGVudjogRW52aXJvbm1lbnRcbikgPT4gVmFsaWRhdG9yPFQ+O1xuXG4vKipcbiAqIEBhcGkgcHJpbWl0aXZlXG4gKlxuICogQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdmFsdWUgYW5kIGEgdmFsaWRhdGlvbiBjb250ZXh0IGFuZCAoYXN5bmNocm9ub3VzbHkpXG4gKiBwcm9kdWNlcyBhIGxpc3Qgb2YgdmFsaWRhdGlvbiBlcnJvcnMuXG4gKlxuICogQSBzdWNjZXNzZnVsIHZhbGlkYXRpb24gcHJvZHVjZXMgYW4gZW1wdHkgbGlzdCBvZiB2YWxpZGF0aW9uIGVycm9ycy5cbiAqXG4gKiBQcmltaXRpdmUgdmFsaWRhdGlvbnMgbXVzdCB1c2Ugbm8tc2hvdyBUYXNrcyAod2hpY2ggY2FuIGJlIGNhbmNlbGxlZCkgdG8gbWFuYWdlIGFzeW5jaHJvbnkuXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRvcjxUID0gdW5rbm93bj4gPSAoXG4gIHZhbHVlOiBULFxuICBjb250ZXh0OiBPcHRpb248c3RyaW5nPlxuKSA9PiBUYXNrPFZhbGlkYXRpb25FcnJvcltdPjtcblxuLyoqXG4gKiBAYXBpIHByaW1pdGl2ZVxuICpcbiAqIEEgbG93LWxldmVsIHJlcHJlc2VudGF0aW9uIG9mIGEgdmFsaWRhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkRlc2NyaXB0b3I8VCA9IHVua25vd24sIE9wdGlvbnMgPSB1bmtub3duPiA9IFJlYWRvbmx5PHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWxpZGF0b3I6IFZhbGlkYXRvckZhY3Rvcnk8VCwgT3B0aW9ucz47XG4gIG9wdGlvbnM6IE9wdGlvbnM7XG4gIGNvbnRleHRzPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xufT47XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiJmaWxlOi8vL1VzZXJzL3NvaGFyYS9jb2RlL2Nyb3NzLWNoZWNrL3BhY2thZ2VzL2NvcmUvIiwic291cmNlcyI6WyJkZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYXNrIH0gZnJvbSBcIm5vLXNob3dcIjtcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gXCJ0cy1zdGRcIjtcblxuZXhwb3J0IHR5cGUgRXJyb3JQYXRoID0gUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xuXG4vKipcbiAqIEBhcGkgcHVibGljXG4gKlxuICogQSByZXByZXNlbmF0aW9uIG9mIGEgZmFpbGVkIHZhbGlkYXRpb24sIG5vdCBpbmNsdWRpbmcgaXRzIGxvY2F0aW9uLiBUaGlzIG9iamVjdFxuICogY2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBhIGZvcm1hdHRlciB0byBwcm9kdWNlIGh1bWFuLXJlYWRhYmxlIGVycm9ycy4gVGhlXG4gKiBpbmZvcm1hdGlvbiBwcm92aWRlZCBpbiBhbiBgRXJyb3JNZXNzYWdlYCBzaG91bGQgYmUgZW5vdWdoIHRvIHByb3Blcmx5XG4gKiBpbnRlcm5hdGlvbmFsaXplIHRoZSBlcnJvciBtZXNzYWdlIG9yIHVzZSBpdCBpbiBvdGhlciBsb2NhbGl6YXRpb24gY29udGV4dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JNZXNzYWdlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXRhaWxzOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEBhcGkgcHVibGljXG4gKlxuICogQSByZXByZXNlbnRhdGlvbiBvZiBhIGZhaWxlZCB2YWxpZGF0aW9uLCBpbmNsdWRpbmcgdGhlIGxvY2F0aW9uIGluIHRoZSB2YWxpZGF0ZWRcbiAqIG9iamVjdCB3aGVyZSB0aGUgdmFsaWRhdGlvbiBmYWlsZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbkVycm9yIHtcbiAgcGF0aDogRXJyb3JQYXRoO1xuICBtZXNzYWdlOiBFcnJvck1lc3NhZ2U7XG59XG5cbi8qKlxuICogQGFwaSBob3N0XG4gKlxuICogQW4gb2JqZWN0IHRoYXQgcHJvdmlkZXMgaG9zdC1zcGVjaWZpYyBiZWhhdmlvciBmb3IgdmFsaWRhdG9ycy4gSXQgaXMgcGFzc2VkIGluIHRvXG4gKiBhbGwgYFZhbGlkYXRvckZhY3Rvcnlgcywgc28gaG9zdHMgY2FuIGFsc28gZXh0ZW5kIE9iamVjdE1vZGVsIHRvIGNvbW11bmljYXRlIHdpdGhcbiAqIHZhbGlkYXRvcnMgd3JpdHRlbiB0byBiZSB1c2VkIGluIHRoYXQgb2JqZWN0IG1vZGVsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdE1vZGVsIHtcbiAgZ2V0KG9iamVjdDogdW5rbm93biwga2V5OiBzdHJpbmcgfCBudW1iZXIpOiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIGFueSBvYmplY3QsIGFuZCByZXR1cm5zIGBudWxsYCBpZiB0aGUgb2JqZWN0XG4gICAqIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhbiBhcnJheSBieSB0aGUgYnVpbHQtaW4gdmFsaWRhdG9ycywgYW5kXG4gICAqIGFuIGl0ZXJhYmxlIGlmIHRoZSBvYmplY3Qgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gYXJyYXkuXG4gICAqXG4gICAqIElmIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyBhIHNpbXBsZSBhcnJheSwgaXQncyBmaW5lIHRvIHJldHVybiBpdC5cbiAgICpcbiAgICogWW91IGNhbiBhbHNvIHJldHVybiBhbiBpdGVyYWJsZSwgd2hpY2ggd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiB0aGVcbiAgICogaW50ZXJuYWxzIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSB2YWx1ZXMuIFRoaXMgY2FuIHNhdmUgd29yayBpZlxuICAgKiB0aGUgcHJvY2VzcyBvZiB0dXJuaW5nIHlvdXIgdmFsdWUgaW50byBhbiBBcnJheSBpcyBleHBlbnNpdmUuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhbiBJbW11dGFibGUuanMgbGlzdCB0aGF0IHlvdSB3YW50IHRoZVxuICAgKiBidWlsdC1pbiB2YWxpZGF0b3JzIHRvIHRyZWF0IGFzIGEgbGlzdCwgeW91IGNvdWxkIHdyaXRlOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBjb25zdCBFTlYgPSB7XG4gICAqICAgYXNMaXN0KG9iamVjdCkge1xuICAgKiAgICAgaWYgKExpc3QuaXNMaXN0KG9iamVjdCkgfHwgQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAqICAgICAgIHJldHVybiBvYmplY3RbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgKiAgICAgfSBlbHNlIHtcbiAgICogICAgICAgcmV0dXJuIG51bGw7XG4gICAqICAgICB9XG4gICAqICAgfVxuICAgKiB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogSWYgeW91IGFyZSB3b3JraW5nIHdpdGggYSBjb2xsZWN0aW9uIHRoYXQgZG9lc24ndCBhbHJlYWR5IHN1cHBvcnRcbiAgICogYFN5bWJvbC5pdGVyYXRvcmAsIHlvdSBjYW4gZWFzaWx5IGFkYXB0IGl0LiBGb3IgZXhhbXBsZSwgc2F5IHlvdSdyZVxuICAgKiB3b3JraW5nIHdpdGggYW4gYXJyYXktbGlrZSBzdHJ1Y3R1cmUgdGhhdCBoYXMgYSBgdG9BcnJheWAgbWV0aG9kIG9uXG4gICAqIGl0LlxuICAgKlxuICAgKiBDcm9zcyBDaGVjayBtaWdodCBpbnZva2UgYXNMaXN0IG11bHRpcGxlIHRpbWVzLCBidXQgd2lsbCBvbmx5IGludm9rZVxuICAgKiB0aGUgZ2VuZXJhdG9yIGlmIGl0IHdhbnRzIHRvIHZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgbGlzdC5cbiAgICpcbiAgICogYGBgdHNcbiAgICogaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gXCJAZW1iZXIvYXJyYXlcIjtcbiAgICpcbiAgICogY29uc3QgRU5WID0ge1xuICAgKiAgIGFzTGlzdChvYmplY3QpIHtcbiAgICogICAgIC8vIHN1cHBvcnQgYnVpbHQtaW4gQXJyYXlzXG4gICAqICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAqICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAqICAgICB9IGVsc2UgaWYgKGlzQXJyYXkob2JqZWN0KSkge1xuICAgKiAgICAgICByZXR1cm4gaXRlcmFibGUob2JqZWN0KTtcbiAgICogICAgIH0gZWxzZSB7XG4gICAqICAgICAgIHJldHVybiBudWxsO1xuICAgKiAgICAgfVxuICAgKiAgIH1cbiAgICogfTtcbiAgICpcbiAgICogZnVuY3Rpb24qIGl0ZXJhYmxlKG9iamVjdCkge1xuICAgKiAgIC8vIFRoaXMgd2lsbCBvbmx5IHJ1biBpZiBjcm9zcy1jaGVjayBhdHRlbXB0cyB0byBpdGVyYXRlLFxuICAgKiAgIC8vIHNvIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNvc3Qgb2YgY29lcmNpbmcgaW50b1xuICAgKiAgIC8vIGFuIGFycmF5LlxuICAgKiAgIGxldCBhcnJheSA9IG9iamVjdC50b0FycmF5KCk7XG4gICAqXG4gICAqICAgZm9yIChsZXQgaXRlbSBvZiBhcnJheSkge1xuICAgKiAgICAgeWllbGQgaXRlbTtcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBvYmplY3RcbiAgICovXG4gIGFzTGlzdChvYmplY3Q6IHVua25vd24pOiBPcHRpb248SXRlcmFibGU8dW5rbm93bj4gfCBBcnJheTx1bmtub3duPj47XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IHR5cGUgRW52aXJvbm1lbnQgPSBPYmplY3RNb2RlbDtcblxuLyoqXG4gKiBAYXBpIHByaW1pdGl2ZVxuICpcbiAqIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBvYmplY3QgbW9kZWwgYW5kIHZhbGlkYXRvciBvcHRpb25zIGFuZCBwcm9kdWNlcyBhIG5ld1xuICogVmFsaWRhdG9yIGZ1bmN0aW9uLiBJbiBvdGhlciB3b3JkcywgaXQgY3VycmllcyB0aGUgb2JqZWN0IG1vZGVsIGFuZCBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0b3JGYWN0b3J5PFQsIE9wdGlvbnM+ID0gKFxuICBvcHRpb25zOiBPcHRpb25zLFxuICBvYmplY3RNb2RlbDogT2JqZWN0TW9kZWxcbikgPT4gVmFsaWRhdG9yPFQ+O1xuXG4vKipcbiAqIEBhcGkgcHJpbWl0aXZlXG4gKlxuICogQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdmFsdWUgYW5kIGEgdmFsaWRhdGlvbiBjb250ZXh0IGFuZCAoYXN5bmNocm9ub3VzbHkpXG4gKiBwcm9kdWNlcyBhIGxpc3Qgb2YgdmFsaWRhdGlvbiBlcnJvcnMuXG4gKlxuICogQSBzdWNjZXNzZnVsIHZhbGlkYXRpb24gcHJvZHVjZXMgYW4gZW1wdHkgbGlzdCBvZiB2YWxpZGF0aW9uIGVycm9ycy5cbiAqXG4gKiBQcmltaXRpdmUgdmFsaWRhdGlvbnMgbXVzdCB1c2Ugbm8tc2hvdyBUYXNrcyAod2hpY2ggY2FuIGJlIGNhbmNlbGxlZCkgdG8gbWFuYWdlIGFzeW5jaHJvbnkuXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRvcjxUID0gdW5rbm93bj4gPSAoXG4gIHZhbHVlOiBULFxuICBjb250ZXh0OiBPcHRpb248c3RyaW5nPlxuKSA9PiBUYXNrPFZhbGlkYXRpb25FcnJvcltdPjtcblxuLyoqXG4gKiBAYXBpIHByaW1pdGl2ZVxuICpcbiAqIEEgbG93LWxldmVsIHJlcHJlc2VudGF0aW9uIG9mIGEgdmFsaWRhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkRlc2NyaXB0b3I8VCA9IHVua25vd24sIE9wdGlvbnMgPSB1bmtub3duPiA9IFJlYWRvbmx5PHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWxpZGF0b3I6IFZhbGlkYXRvckZhY3Rvcnk8VCwgT3B0aW9ucz47XG4gIG9wdGlvbnM6IE9wdGlvbnM7XG4gIGNvbnRleHRzPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xufT47XG4iXX0= |
export * from "./validate"; | ||
export * from "./format"; | ||
export { validator } from "./validator"; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiZmlsZTovLy9Vc2Vycy9zb2hhcmEvY29kZS9jcm9zcy1jaGVjay9wYWNrYWdlcy9jb3JlLyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxVQUFVLENBQUM7QUFDekIsT0FBTyxFQUdMLFNBQVMsRUFDVixNQUFNLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIEVycm9yUGF0aCxcbiAgRXJyb3JNZXNzYWdlLFxuICBWYWxpZGF0aW9uRXJyb3IsXG4gIEVudmlyb25tZW50LFxuICBWYWxpZGF0b3JGYWN0b3J5LFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRpb25EZXNjcmlwdG9yXG59IGZyb20gXCIuL2Rlc2NyaXB0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mb3JtYXRcIjtcbmV4cG9ydCB7XG4gIEJhc2ljVmFsaWRhdG9yLFxuICBIaWdoZXJPcmRlckJhc2ljVmFsaWRhdG9yLFxuICB2YWxpZGF0b3Jcbn0gZnJvbSBcIi4vdmFsaWRhdG9yXCI7XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiZmlsZTovLy9Vc2Vycy9zb2hhcmEvY29kZS9jcm9zcy1jaGVjay9wYWNrYWdlcy9jb3JlLyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxVQUFVLENBQUM7QUFDekIsT0FBTyxFQUdMLFNBQVMsRUFDVixNQUFNLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIEVycm9yUGF0aCxcbiAgRXJyb3JNZXNzYWdlLFxuICBWYWxpZGF0aW9uRXJyb3IsXG4gIE9iamVjdE1vZGVsLFxuICBFbnZpcm9ubWVudCxcbiAgVmFsaWRhdG9yRmFjdG9yeSxcbiAgVmFsaWRhdG9yLFxuICBWYWxpZGF0aW9uRGVzY3JpcHRvclxufSBmcm9tIFwiLi9kZXNjcmlwdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9ybWF0XCI7XG5leHBvcnQge1xuICBCYXNpY1ZhbGlkYXRvcixcbiAgSGlnaGVyT3JkZXJCYXNpY1ZhbGlkYXRvcixcbiAgdmFsaWRhdG9yXG59IGZyb20gXCIuL3ZhbGlkYXRvclwiO1xuIl19 |
import { Task } from "no-show"; | ||
const DEFAULT_ENVIRONMENT = { | ||
const DEFAULT_OBJECT_MODEL = { | ||
get(object, key) { | ||
@@ -10,2 +10,10 @@ if (object !== null && object !== undefined) { | ||
} | ||
}, | ||
asList(object) { | ||
if (Array.isArray(object)) { | ||
return object; | ||
} | ||
else { | ||
return null; | ||
} | ||
} | ||
@@ -16,3 +24,3 @@ }; | ||
* | ||
* A function that takes an environment, value, descriptor and context, and (asynchronously) | ||
* A function that takes an object model, value, descriptor and context, and (asynchronously) | ||
* produces an array of validation errors. If this function produces an empty array, the | ||
@@ -26,3 +34,3 @@ * validation succeeded. | ||
* | ||
* @param env The host environment | ||
* @param objectModel The host object model | ||
* @param value The value to validate; it need not be an object | ||
@@ -33,3 +41,3 @@ * @param descriptor A validation descriptor to use to validate the value; a single validation | ||
*/ | ||
export function validate(value, descriptor, context = null, env = DEFAULT_ENVIRONMENT) { | ||
export function validate(value, descriptor, context = null, objectModel = DEFAULT_OBJECT_MODEL) { | ||
return new Task(async (run) => { | ||
@@ -41,6 +49,6 @@ let { validator, options, contexts } = descriptor; | ||
} | ||
let validateFunction = validator(options, env); | ||
let validateFunction = validator(options, objectModel); | ||
return await run(validateFunction(value, context)); | ||
}); | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiZmlsZTovLy9Vc2Vycy9zb2hhcmEvY29kZS9jcm9zcy1jaGVjay9wYWNrYWdlcy9jb3JlLyIsInNvdXJjZXMiOlsidmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQVEvQixNQUFNLG1CQUFtQixHQUFnQjtJQUN2QyxHQUFHLENBQUMsTUFBZSxFQUFFLEdBQW9CO1FBQ3ZDLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQzNDLE9BQVEsTUFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNuQzthQUFNO1lBQ0wsT0FBTyxNQUFNLENBQUM7U0FDZjtJQUNILENBQUM7Q0FDRixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsS0FBUSxFQUNSLFVBQTRDLEVBQzVDLFVBQTBCLElBQUksRUFDOUIsTUFBbUIsbUJBQW1CO0lBRXRDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFFO1FBQzFCLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUVsRCxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDbkQsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFBRSxPQUFPLEVBQUUsQ0FBQztTQUNqRDtRQUVELElBQUksZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUvQyxPQUFPLE1BQU0sR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhc2sgfSBmcm9tIFwibm8tc2hvd1wiO1xuaW1wb3J0IHsgSW5kZXhhYmxlLCBPcHRpb24gfSBmcm9tIFwidHMtc3RkXCI7XG5pbXBvcnQge1xuICBFbnZpcm9ubWVudCxcbiAgVmFsaWRhdGlvbkRlc2NyaXB0b3IsXG4gIFZhbGlkYXRpb25FcnJvclxufSBmcm9tIFwiLi9kZXNjcmlwdG9yXCI7XG5cbmNvbnN0IERFRkFVTFRfRU5WSVJPTk1FTlQ6IEVudmlyb25tZW50ID0ge1xuICBnZXQob2JqZWN0OiB1bmtub3duLCBrZXk6IHN0cmluZyB8IG51bWJlcik6IHVua25vd24ge1xuICAgIGlmIChvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAob2JqZWN0IGFzIEluZGV4YWJsZSlba2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQGFwaSBwdWJsaWNcbiAqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gZW52aXJvbm1lbnQsIHZhbHVlLCBkZXNjcmlwdG9yIGFuZCBjb250ZXh0LCBhbmQgKGFzeW5jaHJvbm91c2x5KVxuICogcHJvZHVjZXMgYW4gYXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvcnMuIElmIHRoaXMgZnVuY3Rpb24gcHJvZHVjZXMgYW4gZW1wdHkgYXJyYXksIHRoZVxuICogdmFsaWRhdGlvbiBzdWNjZWVkZWQuXG4gKlxuICogVGhlIFwiY29udGV4dFwiIGlzIGFuIGFwcC1zcGVjaWZpYyBjb25jZXB0LiBGb3IgZXhhbXBsZSwgYW4gYXBwIG1pZ2h0IHdhbnQgdG8gc2VwYXJhdGVcbiAqIGJldHdlZW4gdmFsaWRhdGlvbnMgdGhhdCBtdXN0IHBhc3Mgd2hlbiBkcmFmdGluZyBhbiBhcnRpY2xlIHZzLiB2YWxpZGF0aW9ucyB0aGF0XG4gKiBtdXN0IHBhc3Mgd2hlbiBwdWJsaXNoaW5nIGFuIGFydGljbGUuIElmIGEgdmFsaWRhdGlvbiBkZXNjcmlwdG9yIGRvZXMgbm90IHNwZWNpZnlcbiAqIHRoZSBjb250ZXh0IHBhc3NlZCBpbiB0byBgdmFsaWRhdGVgLCB0aGUgdmFsaWRhdGlvbiBwYXNzZXMuXG4gKlxuICogQHBhcmFtIGVudiBUaGUgaG9zdCBlbnZpcm9ubWVudFxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB2YWxpZGF0ZTsgaXQgbmVlZCBub3QgYmUgYW4gb2JqZWN0XG4gKiBAcGFyYW0gZGVzY3JpcHRvciBBIHZhbGlkYXRpb24gZGVzY3JpcHRvciB0byB1c2UgdG8gdmFsaWRhdGUgdGhlIHZhbHVlOyBhIHNpbmdsZSB2YWxpZGF0aW9uXG4gKiAgZGVzY3JpcHRvciBjYW4gcmVwcmVzZW50IG11bHRpcGxlIGNvbXBvc2VkIHZhbGlkYXRpb25zXG4gKiBAcGFyYW0gY29udGV4dCBPcHRpb25hbGx5LCBhIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhlIHNhdmluZyBjb250ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZTxULCBPcHRpb25zPihcbiAgdmFsdWU6IFQsXG4gIGRlc2NyaXB0b3I6IFZhbGlkYXRpb25EZXNjcmlwdG9yPFQsIE9wdGlvbnM+LFxuICBjb250ZXh0OiBPcHRpb248c3RyaW5nPiA9IG51bGwsXG4gIGVudjogRW52aXJvbm1lbnQgPSBERUZBVUxUX0VOVklST05NRU5UXG4pOiBUYXNrPFZhbGlkYXRpb25FcnJvcltdPiB7XG4gIHJldHVybiBuZXcgVGFzayhhc3luYyBydW4gPT4ge1xuICAgIGxldCB7IHZhbGlkYXRvciwgb3B0aW9ucywgY29udGV4dHMgfSA9IGRlc2NyaXB0b3I7XG5cbiAgICBpZiAoY29udGV4dCAhPT0gbnVsbCAmJiBjb250ZXh0cyAmJiBjb250ZXh0cy5sZW5ndGgpIHtcbiAgICAgIGlmIChjb250ZXh0cy5pbmRleE9mKGNvbnRleHQpID09PSAtMSkgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGxldCB2YWxpZGF0ZUZ1bmN0aW9uID0gdmFsaWRhdG9yKG9wdGlvbnMsIGVudik7XG5cbiAgICByZXR1cm4gYXdhaXQgcnVuKHZhbGlkYXRlRnVuY3Rpb24odmFsdWUsIGNvbnRleHQpKTtcbiAgfSk7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiZmlsZTovLy9Vc2Vycy9zb2hhcmEvY29kZS9jcm9zcy1jaGVjay9wYWNrYWdlcy9jb3JlLyIsInNvdXJjZXMiOlsidmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQVEvQixNQUFNLG9CQUFvQixHQUFnQjtJQUN4QyxHQUFHLENBQUMsTUFBZSxFQUFFLEdBQW9CO1FBQ3ZDLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQzNDLE9BQVEsTUFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNuQzthQUFNO1lBQ0wsT0FBTyxNQUFNLENBQUM7U0FDZjtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsTUFBZTtRQUNwQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsT0FBTyxNQUFNLENBQUM7U0FDZjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7Q0FDRixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsS0FBUSxFQUNSLFVBQTRDLEVBQzVDLFVBQTBCLElBQUksRUFDOUIsY0FBMkIsb0JBQW9CO0lBRS9DLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFFO1FBQzFCLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUVsRCxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDbkQsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFBRSxPQUFPLEVBQUUsQ0FBQztTQUNqRDtRQUVELElBQUksZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUV2RCxPQUFPLE1BQU0sR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhc2sgfSBmcm9tIFwibm8tc2hvd1wiO1xuaW1wb3J0IHsgSW5kZXhhYmxlLCBPcHRpb24gfSBmcm9tIFwidHMtc3RkXCI7XG5pbXBvcnQge1xuICBPYmplY3RNb2RlbCxcbiAgVmFsaWRhdGlvbkRlc2NyaXB0b3IsXG4gIFZhbGlkYXRpb25FcnJvclxufSBmcm9tIFwiLi9kZXNjcmlwdG9yXCI7XG5cbmNvbnN0IERFRkFVTFRfT0JKRUNUX01PREVMOiBPYmplY3RNb2RlbCA9IHtcbiAgZ2V0KG9iamVjdDogdW5rbm93biwga2V5OiBzdHJpbmcgfCBudW1iZXIpOiB1bmtub3duIHtcbiAgICBpZiAob2JqZWN0ICE9PSBudWxsICYmIG9iamVjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gKG9iamVjdCBhcyBJbmRleGFibGUpW2tleV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuICB9LFxuXG4gIGFzTGlzdChvYmplY3Q6IHVua25vd24pOiBPcHRpb248QXJyYXk8dW5rbm93bj4+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQGFwaSBwdWJsaWNcbiAqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gb2JqZWN0IG1vZGVsLCB2YWx1ZSwgZGVzY3JpcHRvciBhbmQgY29udGV4dCwgYW5kIChhc3luY2hyb25vdXNseSlcbiAqIHByb2R1Y2VzIGFuIGFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3JzLiBJZiB0aGlzIGZ1bmN0aW9uIHByb2R1Y2VzIGFuIGVtcHR5IGFycmF5LCB0aGVcbiAqIHZhbGlkYXRpb24gc3VjY2VlZGVkLlxuICpcbiAqIFRoZSBcImNvbnRleHRcIiBpcyBhbiBhcHAtc3BlY2lmaWMgY29uY2VwdC4gRm9yIGV4YW1wbGUsIGFuIGFwcCBtaWdodCB3YW50IHRvIHNlcGFyYXRlXG4gKiBiZXR3ZWVuIHZhbGlkYXRpb25zIHRoYXQgbXVzdCBwYXNzIHdoZW4gZHJhZnRpbmcgYW4gYXJ0aWNsZSB2cy4gdmFsaWRhdGlvbnMgdGhhdFxuICogbXVzdCBwYXNzIHdoZW4gcHVibGlzaGluZyBhbiBhcnRpY2xlLiBJZiBhIHZhbGlkYXRpb24gZGVzY3JpcHRvciBkb2VzIG5vdCBzcGVjaWZ5XG4gKiB0aGUgY29udGV4dCBwYXNzZWQgaW4gdG8gYHZhbGlkYXRlYCwgdGhlIHZhbGlkYXRpb24gcGFzc2VzLlxuICpcbiAqIEBwYXJhbSBvYmplY3RNb2RlbCBUaGUgaG9zdCBvYmplY3QgbW9kZWxcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gdmFsaWRhdGU7IGl0IG5lZWQgbm90IGJlIGFuIG9iamVjdFxuICogQHBhcmFtIGRlc2NyaXB0b3IgQSB2YWxpZGF0aW9uIGRlc2NyaXB0b3IgdG8gdXNlIHRvIHZhbGlkYXRlIHRoZSB2YWx1ZTsgYSBzaW5nbGUgdmFsaWRhdGlvblxuICogIGRlc2NyaXB0b3IgY2FuIHJlcHJlc2VudCBtdWx0aXBsZSBjb21wb3NlZCB2YWxpZGF0aW9uc1xuICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWxseSwgYSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBzYXZpbmcgY29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGU8VCwgT3B0aW9ucz4oXG4gIHZhbHVlOiBULFxuICBkZXNjcmlwdG9yOiBWYWxpZGF0aW9uRGVzY3JpcHRvcjxULCBPcHRpb25zPixcbiAgY29udGV4dDogT3B0aW9uPHN0cmluZz4gPSBudWxsLFxuICBvYmplY3RNb2RlbDogT2JqZWN0TW9kZWwgPSBERUZBVUxUX09CSkVDVF9NT0RFTFxuKTogVGFzazxWYWxpZGF0aW9uRXJyb3JbXT4ge1xuICByZXR1cm4gbmV3IFRhc2soYXN5bmMgcnVuID0+IHtcbiAgICBsZXQgeyB2YWxpZGF0b3IsIG9wdGlvbnMsIGNvbnRleHRzIH0gPSBkZXNjcmlwdG9yO1xuXG4gICAgaWYgKGNvbnRleHQgIT09IG51bGwgJiYgY29udGV4dHMgJiYgY29udGV4dHMubGVuZ3RoKSB7XG4gICAgICBpZiAoY29udGV4dHMuaW5kZXhPZihjb250ZXh0KSA9PT0gLTEpIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBsZXQgdmFsaWRhdGVGdW5jdGlvbiA9IHZhbGlkYXRvcihvcHRpb25zLCBvYmplY3RNb2RlbCk7XG5cbiAgICByZXR1cm4gYXdhaXQgcnVuKHZhbGlkYXRlRnVuY3Rpb24odmFsdWUsIGNvbnRleHQpKTtcbiAgfSk7XG59XG4iXX0= |
@@ -30,15 +30,82 @@ import { Task } from "no-show"; | ||
* An object that provides host-specific behavior for validators. It is passed in to | ||
* all `ValidatorFactory`s, so hosts can also extend Environment to communicate with | ||
* validators written to be used in that environment. | ||
* all `ValidatorFactory`s, so hosts can also extend ObjectModel to communicate with | ||
* validators written to be used in that object model. | ||
*/ | ||
export interface Environment { | ||
export interface ObjectModel { | ||
get(object: unknown, key: string | number): unknown; | ||
/** | ||
* This function takes any object, and returns `null` if the object | ||
* should not be treated as an array by the built-in validators, and | ||
* an iterable if the object should be treated as an array. | ||
* | ||
* If the underlying object is a simple array, it's fine to return it. | ||
* | ||
* You can also return an iterable, which will only be called if the | ||
* internals need to iterate over the values. This can save work if | ||
* the process of turning your value into an Array is expensive. | ||
* | ||
* For example, if you have an Immutable.js list that you want the | ||
* built-in validators to treat as a list, you could write: | ||
* | ||
* ```ts | ||
* const ENV = { | ||
* asList(object) { | ||
* if (List.isList(object) || Array.isArray(object)) { | ||
* return object[Symbol.iterator](); | ||
* } else { | ||
* return null; | ||
* } | ||
* } | ||
* }; | ||
* ``` | ||
* | ||
* If you are working with a collection that doesn't already support | ||
* `Symbol.iterator`, you can easily adapt it. For example, say you're | ||
* working with an array-like structure that has a `toArray` method on | ||
* it. | ||
* | ||
* Cross Check might invoke asList multiple times, but will only invoke | ||
* the generator if it wants to validate the contents of the list. | ||
* | ||
* ```ts | ||
* import { isArray } from "@ember/array"; | ||
* | ||
* const ENV = { | ||
* asList(object) { | ||
* // support built-in Arrays | ||
* if (Array.isArray(object)) { | ||
* return object; | ||
* } else if (isArray(object)) { | ||
* return iterable(object); | ||
* } else { | ||
* return null; | ||
* } | ||
* } | ||
* }; | ||
* | ||
* function* iterable(object) { | ||
* // This will only run if cross-check attempts to iterate, | ||
* // so we don't need to worry about the cost of coercing into | ||
* // an array. | ||
* let array = object.toArray(); | ||
* | ||
* for (let item of array) { | ||
* yield item; | ||
* } | ||
* } | ||
* ``` | ||
* | ||
* @param object | ||
*/ | ||
asList(object: unknown): Option<Iterable<unknown> | Array<unknown>>; | ||
} | ||
/** @deprecated */ | ||
export declare type Environment = ObjectModel; | ||
/** | ||
* @api primitive | ||
* | ||
* A function that takes an environment and validator options and produces a new | ||
* Validator function. In other words, it curries the environment and options. | ||
* A function that takes an object model and validator options and produces a new | ||
* Validator function. In other words, it curries the object model and options. | ||
*/ | ||
export declare type ValidatorFactory<T, Options> = (options: Options, env: Environment) => Validator<T>; | ||
export declare type ValidatorFactory<T, Options> = (options: Options, objectModel: ObjectModel) => Validator<T>; | ||
/** | ||
@@ -45,0 +112,0 @@ * @api primitive |
@@ -1,4 +0,4 @@ | ||
export { ErrorPath, ErrorMessage, ValidationError, Environment, ValidatorFactory, Validator, ValidationDescriptor } from "./descriptor"; | ||
export { ErrorPath, ErrorMessage, ValidationError, ObjectModel, Environment, ValidatorFactory, Validator, ValidationDescriptor } from "./descriptor"; | ||
export * from "./validate"; | ||
export * from "./format"; | ||
export { BasicValidator, HigherOrderBasicValidator, validator } from "./validator"; |
import { Task } from "no-show"; | ||
import { Option } from "ts-std"; | ||
import { Environment, ValidationDescriptor, ValidationError } from "./descriptor"; | ||
import { ObjectModel, ValidationDescriptor, ValidationError } from "./descriptor"; | ||
/** | ||
* @api public | ||
* | ||
* A function that takes an environment, value, descriptor and context, and (asynchronously) | ||
* A function that takes an object model, value, descriptor and context, and (asynchronously) | ||
* produces an array of validation errors. If this function produces an empty array, the | ||
@@ -16,3 +16,3 @@ * validation succeeded. | ||
* | ||
* @param env The host environment | ||
* @param objectModel The host object model | ||
* @param value The value to validate; it need not be an object | ||
@@ -23,2 +23,2 @@ * @param descriptor A validation descriptor to use to validate the value; a single validation | ||
*/ | ||
export declare function validate<T, Options>(value: T, descriptor: ValidationDescriptor<T, Options>, context?: Option<string>, env?: Environment): Task<ValidationError[]>; | ||
export declare function validate<T, Options>(value: T, descriptor: ValidationDescriptor<T, Options>, context?: Option<string>, objectModel?: ObjectModel): Task<ValidationError[]>; |
{ | ||
"name": "@cross-check/core", | ||
"version": "0.11.3", | ||
"version": "0.11.4", | ||
"description": "The primitives for building validations.", | ||
@@ -5,0 +5,0 @@ "contributors": [ |
@@ -47,5 +47,5 @@ # @cross-check/core | ||
In the case of both of these issues (services and getters), the philosophy of cross-check is to expose hooks on an "Environment" (see below) that framework integrators can use to abstract these distinctions. Validators receive this environment as a parameter, and if validator definitions work through the Environment (e.g. looking up properties by using `environment.get` rather than direct indexing), they will be reusable in more environments and with more kinds of data structures. | ||
In the case of both of these issues (services and getters), the philosophy of cross-check is to expose hooks on an "ObjectModel" (see below) that framework integrators can use to abstract these distinctions. Validators receive this object model as a parameter, and if validator definitions work through the `ObjectModel` (e.g. looking up properties by using `objectModel.get` rather than direct indexing), they will be reusable in more environments and with more kinds of data structures. | ||
Because it can be difficult to remember to work through the environment all the time, the `@cross-check/dsl` library provides a number of abstractions that do the work for you. For example, the `object()` validator provided by `@cross-check/dsl` automatically looks up sub-properties by using `environment.get`. | ||
Because it can be difficult to remember to work through the object model all the time, the `@cross-check/dsl` library provides a number of abstractions that do the work for you. For example, the `object()` validator provided by `@cross-check/dsl` automatically looks up sub-properties by using `objectModel.get`. | ||
@@ -105,16 +105,21 @@ ### Values, Not Models | ||
## The Environment | ||
## The Object Model | ||
Once you have constructed a validation descriptor, you validate a value by calling `validate(environment, value, descriptor, context)`. | ||
Once you have constructed a validation descriptor, you validate a value by calling `validate(objectModel, value, descriptor, context)`. | ||
The first parameter, `environment`, is an object that gets passed into each validation function. | ||
The first parameter, `objectModel`, is an object that gets passed into each validation function. | ||
The `ObjectModel` has two mandatory methods: | ||
- `get` | ||
- `asList` | ||
### The `get` Function | ||
The `Environment`'s only mandatory method is `get`. It takes an object and key and returns another value. | ||
The `get` function takes an object and key and returns another value. | ||
The simplest environment is therefore: | ||
A simple implementation of the get function is: | ||
```ts | ||
const SimpleEnvironment = { | ||
const SimpleObjectModel = { | ||
get(obj, key) { | ||
@@ -130,2 +135,18 @@ return obj && obj[key]; | ||
### The `asList` Function | ||
The simplest implementation of an object model is: | ||
```ts | ||
const SimpleObjectModel = { | ||
get(obj, key) { | ||
return obj && obj[key]; | ||
}, | ||
asList(obj) { | ||
return Array.isArray(obj) ? obj : null; | ||
} | ||
} | ||
``` | ||
### Service Functions | ||
@@ -135,10 +156,14 @@ | ||
You can implement a specialized `Environment`: | ||
You can implement a specialized `ObjectModel`: | ||
```ts | ||
const AppEnvironment { | ||
const AppObjectModel { | ||
get(obj, key) { | ||
return obj && obj[key]; | ||
} | ||
}, | ||
asList(obj) { | ||
return Array.isArray(obj) ? obj : null; | ||
}, | ||
config = { | ||
@@ -150,6 +175,6 @@ strict: true | ||
Then, a validator that wants to use that service simply depends on the specialized environment. If you're using TypeScript, the type signature tells the whole story: | ||
Then, a validator that wants to use that service simply depends on the specialized object model. If you're using TypeScript, the type signature tells the whole story: | ||
```ts | ||
function format(env: AppEnvironment, options: RegExp) { | ||
function format(env: AppObjectModel, options: RegExp) { | ||
return value => { | ||
@@ -166,9 +191,9 @@ return new Task(async run => { | ||
### Specialized Environments, Philosophy | ||
### Specialized Object Models, Philosophy | ||
By looking at the definition of this validator factory, you can tell that it can only be used with an implementation of `AppEnvironment`. | ||
By looking at the definition of this validator factory, you can tell that it can only be used with an implementation of `AppObjectModel`. | ||
General-purpose validators should avoid relying on specialized environments, but applications should use them to be explicit about validator dependencies. | ||
General-purpose validators should avoid relying on specialized object models, but applications should use them to be explicit about validator dependencies. | ||
If an application wants to reuse some validator definitions in another implementation (such as a native app), the specialized environment definition will fully describe what the other implementation needs to do in order to use validator definitions built for the application. | ||
If an application wants to reuse some validator definitions in another implementation (such as a native app), the specialized object model definition will fully describe what the other implementation needs to do in order to use validator definitions built for the application. | ||
@@ -175,0 +200,0 @@ ## Basic Usage |
@@ -34,18 +34,87 @@ import { Task } from "no-show"; | ||
* An object that provides host-specific behavior for validators. It is passed in to | ||
* all `ValidatorFactory`s, so hosts can also extend Environment to communicate with | ||
* validators written to be used in that environment. | ||
* all `ValidatorFactory`s, so hosts can also extend ObjectModel to communicate with | ||
* validators written to be used in that object model. | ||
*/ | ||
export interface Environment { | ||
export interface ObjectModel { | ||
get(object: unknown, key: string | number): unknown; | ||
/** | ||
* This function takes any object, and returns `null` if the object | ||
* should not be treated as an array by the built-in validators, and | ||
* an iterable if the object should be treated as an array. | ||
* | ||
* If the underlying object is a simple array, it's fine to return it. | ||
* | ||
* You can also return an iterable, which will only be called if the | ||
* internals need to iterate over the values. This can save work if | ||
* the process of turning your value into an Array is expensive. | ||
* | ||
* For example, if you have an Immutable.js list that you want the | ||
* built-in validators to treat as a list, you could write: | ||
* | ||
* ```ts | ||
* const ENV = { | ||
* asList(object) { | ||
* if (List.isList(object) || Array.isArray(object)) { | ||
* return object[Symbol.iterator](); | ||
* } else { | ||
* return null; | ||
* } | ||
* } | ||
* }; | ||
* ``` | ||
* | ||
* If you are working with a collection that doesn't already support | ||
* `Symbol.iterator`, you can easily adapt it. For example, say you're | ||
* working with an array-like structure that has a `toArray` method on | ||
* it. | ||
* | ||
* Cross Check might invoke asList multiple times, but will only invoke | ||
* the generator if it wants to validate the contents of the list. | ||
* | ||
* ```ts | ||
* import { isArray } from "@ember/array"; | ||
* | ||
* const ENV = { | ||
* asList(object) { | ||
* // support built-in Arrays | ||
* if (Array.isArray(object)) { | ||
* return object; | ||
* } else if (isArray(object)) { | ||
* return iterable(object); | ||
* } else { | ||
* return null; | ||
* } | ||
* } | ||
* }; | ||
* | ||
* function* iterable(object) { | ||
* // This will only run if cross-check attempts to iterate, | ||
* // so we don't need to worry about the cost of coercing into | ||
* // an array. | ||
* let array = object.toArray(); | ||
* | ||
* for (let item of array) { | ||
* yield item; | ||
* } | ||
* } | ||
* ``` | ||
* | ||
* @param object | ||
*/ | ||
asList(object: unknown): Option<Iterable<unknown> | Array<unknown>>; | ||
} | ||
/** @deprecated */ | ||
export type Environment = ObjectModel; | ||
/** | ||
* @api primitive | ||
* | ||
* A function that takes an environment and validator options and produces a new | ||
* Validator function. In other words, it curries the environment and options. | ||
* A function that takes an object model and validator options and produces a new | ||
* Validator function. In other words, it curries the object model and options. | ||
*/ | ||
export type ValidatorFactory<T, Options> = ( | ||
options: Options, | ||
env: Environment | ||
objectModel: ObjectModel | ||
) => Validator<T>; | ||
@@ -52,0 +121,0 @@ |
@@ -5,2 +5,3 @@ export { | ||
ValidationError, | ||
ObjectModel, | ||
Environment, | ||
@@ -7,0 +8,0 @@ ValidatorFactory, |
import { Task } from "no-show"; | ||
import { Indexable, Option } from "ts-std"; | ||
import { | ||
Environment, | ||
ObjectModel, | ||
ValidationDescriptor, | ||
@@ -9,3 +9,3 @@ ValidationError | ||
const DEFAULT_ENVIRONMENT: Environment = { | ||
const DEFAULT_OBJECT_MODEL: ObjectModel = { | ||
get(object: unknown, key: string | number): unknown { | ||
@@ -17,2 +17,10 @@ if (object !== null && object !== undefined) { | ||
} | ||
}, | ||
asList(object: unknown): Option<Array<unknown>> { | ||
if (Array.isArray(object)) { | ||
return object; | ||
} else { | ||
return null; | ||
} | ||
} | ||
@@ -24,3 +32,3 @@ }; | ||
* | ||
* A function that takes an environment, value, descriptor and context, and (asynchronously) | ||
* A function that takes an object model, value, descriptor and context, and (asynchronously) | ||
* produces an array of validation errors. If this function produces an empty array, the | ||
@@ -34,3 +42,3 @@ * validation succeeded. | ||
* | ||
* @param env The host environment | ||
* @param objectModel The host object model | ||
* @param value The value to validate; it need not be an object | ||
@@ -45,3 +53,3 @@ * @param descriptor A validation descriptor to use to validate the value; a single validation | ||
context: Option<string> = null, | ||
env: Environment = DEFAULT_ENVIRONMENT | ||
objectModel: ObjectModel = DEFAULT_OBJECT_MODEL | ||
): Task<ValidationError[]> { | ||
@@ -55,3 +63,3 @@ return new Task(async run => { | ||
let validateFunction = validator(options, env); | ||
let validateFunction = validator(options, objectModel); | ||
@@ -58,0 +66,0 @@ return await run(validateFunction(value, context)); |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
99271
1028
229
0