UNPKG

@dashkite/joy

Version:

[![Hippocratic License HL3-CORE](https://img.shields.io/static/v1?label=Hippocratic%20License&message=HL3-CORE&labelColor=5e2751&color=bc8c3d)](https://firstdonoharm.dev/version/3/0/core.html)

156 lines (155 loc) 17.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: Object.getOwnPropertyDescriptor(all, name).get }); } _export(exports, { get getter () { return getter; }, get getters () { return getters; }, get metaclass () { return metaclass; }, get method () { return method; }, get methods () { return methods; }, get mixin () { return mixin; }, get properties () { return properties; }, get property () { return property; }, get setter () { return setter; }, get setters () { return setters; } }); const _function = require("./function"); const _object = require("./object"); var getter, getters, metaclass, method, methods, mixin, properties, property, setter, setters; property = (0, _function.curry)(function(key, description, target) { return Object.defineProperty(target, key, (0, _object.merge)({ enumerable: true, configurable: true }, description)); }); getter = (0, _function.curry)(function(key, f, target) { return property(key, { get: f }, target); }); setter = (0, _function.curry)(function(key, f, target) { return property(key, { set: f }, target); }); method = (0, _function.curry)(function(key, f, target) { return property(key, { value: f, configurable: true, writeable: true }, target); }); properties = (0, _function.curry)(function(dictionary, target) { var description, key, results; results = []; for(key in dictionary){ description = dictionary[key]; results.push(property(key, description, target)); } return results; }); getters = (0, _function.curry)(function(dictionary, target) { var f, key, results; results = []; for(key in dictionary){ f = dictionary[key]; results.push(getter(key, f, target)); } return results; }); setters = (0, _function.curry)(function(dictionary, target) { var f, key, results; results = []; for(key in dictionary){ f = dictionary[key]; results.push(setter(key, f, target)); } return results; }); methods = (0, _function.curry)(function(dictionary, target) { var f, key, results; results = []; for(key in dictionary){ f = dictionary[key]; results.push(method(key, f, target)); } return results; }); mixin = (0, _function.curry)(function(target, fx) { var f, i, len; for(i = 0, len = fx.length; i < len; i++){ f = fx[i]; f(target); } return target; }); metaclass = function(base = Object) { return class extends base { static getter(key, f) { return getter(key, f, this.prototype); } static setter(key, f) { return setter(key, f, this.prototype); } static property(key, specifier) { return property(key, specifier, this.prototype); } static getters(dictionary) { return getters(dictionary, this.prototype); } static setters(dictionary) { return setters(dictionary, this.prototype); } static properties(dictionary) { return properties(dictionary, this.prototype); } static $getter(key, f) { return getter(key, f, this); } static $setter(key, f) { return setter(key, f, this); } static $property(key, specifier) { return property(key, specifier, this); } static $getters(dictionary) { return getters(dictionary, this); } static $setters(dictionary) { return setters(dictionary, this); } static $properties(dictionary) { return properties(dictionary, this); } }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL21ldGFjbGFzcy5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQSxNQUFBLEVBQUEsT0FBQSxFQUFBLFNBQUEsRUFBQSxNQUFBLEVBQUEsT0FBQSxFQUFBLEtBQUEsRUFBQSxVQUFBLEVBQUEsUUFBQSxFQUFBLE1BQUEsRUFBQTs7QUFBQSxPQUFBO0VBQVEsS0FBUjtDQUFBLE1BQUE7O0FBQ0EsT0FBQTtFQUFRLEtBQVI7Q0FBQSxNQUFBOztBQUVBLFFBQUEsR0FBVyxLQUFBLENBQU0sUUFBQSxDQUFDLEdBQUQsRUFBTSxXQUFOLEVBQW1CLE1BQW5CLENBQUE7U0FDZixNQUFNLENBQUMsY0FBUCxDQUFzQixNQUF0QixFQUE4QixHQUE5QixFQUNFLEtBQUEsQ0FBTTtJQUFFLFVBQUEsRUFBWSxJQUFkO0lBQW9CLFlBQUEsRUFBYztFQUFsQyxDQUFOLEVBQWdELFdBQWhELENBREY7QUFEZSxDQUFOOztBQUlYLE1BQUEsR0FBUyxLQUFBLENBQU0sUUFBQSxDQUFDLEdBQUQsRUFBTSxDQUFOLEVBQVMsTUFBVCxDQUFBO1NBQW9CLFFBQUEsQ0FBUyxHQUFULEVBQWM7SUFBQyxHQUFBLEVBQUs7RUFBTixDQUFkLEVBQXdCLE1BQXhCO0FBQXBCLENBQU47O0FBQ1QsTUFBQSxHQUFTLEtBQUEsQ0FBTSxRQUFBLENBQUMsR0FBRCxFQUFNLENBQU4sRUFBUyxNQUFULENBQUE7U0FBb0IsUUFBQSxDQUFTLEdBQVQsRUFBYztJQUFDLEdBQUEsRUFBSztFQUFOLENBQWQsRUFBd0IsTUFBeEI7QUFBcEIsQ0FBTjs7QUFDVCxNQUFBLEdBQVMsS0FBQSxDQUFNLFFBQUEsQ0FBQyxHQUFELEVBQU0sQ0FBTixFQUFTLE1BQVQsQ0FBQTtTQUNiLFFBQUEsQ0FBUyxHQUFULEVBQWM7SUFBQyxLQUFBLEVBQU8sQ0FBUjtJQUFXLFlBQUEsRUFBYyxJQUF6QjtJQUErQixTQUFBLEVB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T0FBVixRQUFVLENBQUUsVUFBRixDQUFBO2FBQWtCLE9BQUEsQ0FBUSxVQUFSLEVBQW9CLElBQXBCO0lBQWxCOztJQUNHLE9BQWIsV0FBYSxDQUFFLFVBQUYsQ0FBQTthQUFrQixVQUFBLENBQVcsVUFBWCxFQUF1QixJQUF2QjtJQUFsQjs7RUFkaEI7QUFGVTs7QUFrQlosT0FBQTtFQUNFLFFBREY7RUFFRSxNQUZGO0VBR0UsTUFIRjtFQUlFLE1BSkY7RUFLRSxVQUxGO0VBTUUsT0FORjtFQU9FLE9BUEY7RUFRRSxPQVJGO0VBU0UsS0FURjtFQVVFLFNBVkYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2N1cnJ5fSBmcm9tIFwiLi9mdW5jdGlvblwiXG5pbXBvcnQge21lcmdlfSBmcm9tIFwiLi9vYmplY3RcIlxuXG5wcm9wZXJ0eSA9IGN1cnJ5IChrZXksIGRlc2NyaXB0aW9uLCB0YXJnZXQpIC0+XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB0YXJnZXQsIGtleSxcbiAgICBtZXJnZSB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LCBkZXNjcmlwdGlvblxuXG5nZXR0ZXIgPSBjdXJyeSAoa2V5LCBmLCB0YXJnZXQpIC0+IHByb3BlcnR5IGtleSwge2dldDogZn0sIHRhcmdldFxuc2V0dGVyID0gY3VycnkgKGtleSwgZiwgdGFyZ2V0KSAtPiBwcm9wZXJ0eSBrZXksIHtzZXQ6IGZ9LCB0YXJnZXRcbm1ldGhvZCA9IGN1cnJ5IChrZXksIGYsIHRhcmdldCkgLT5cbiAgcHJvcGVydHkga2V5LCB7dmFsdWU6IGYsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGVhYmxlOiB0cnVlfSwgdGFyZ2V0XG5cbnByb3BlcnRpZXMgPSBjdXJyeSAoZGljdGlvbmFyeSwgdGFyZ2V0KSAtPlxuICBmb3Iga2V5LCBkZXNjcmlwdGlvbiBvZiBkaWN0aW9uYXJ5XG4gICAgcHJvcGVydHkga2V5LCBkZXNjcmlwdGlvbiwgdGFyZ2V0XG5cbmdldHRlcnMgPSBjdXJyeSAoZGljdGlvbmFyeSwgdGFyZ2V0KSAtPlxuICBmb3Iga2V5LCBmIG9mIGRpY3Rpb25hcnlcbiAgICBnZXR0ZXIga2V5LCBmLCB0YXJnZXRcblxuc2V0dGVycyA9IGN1cnJ5IChkaWN0aW9uYXJ5LCB0YXJnZXQpIC0+XG4gIGZvciBrZXksIGYgb2YgZGljdGlvbmFyeVxuICAgIHNldHRlciBrZXksIGYsIHRhcmdldFxuXG5tZXRob2RzID0gY3VycnkgKGRpY3Rpb25hcnksIHRhcmdldCkgLT5cbiAgZm9yIGtleSwgZiBvZiBkaWN0aW9uYXJ5XG4gICAgbWV0aG9kIGtleSwgZiwgdGFyZ2V0XG5cbm1peGluID0gY3VycnkgKHRhcmdldCwgZngpIC0+IGYgdGFyZ2V0IGZvciBmIGluIGZ4IDsgdGFyZ2V0XG5cbm1ldGFjbGFzcyA9ICggYmFzZSA9IE9iamVjdCApIC0+XG5cbiAgY2xhc3MgZXh0ZW5kcyBiYXNlXG5cbiAgICBAZ2V0dGVyOiAoIGtleSwgZiApIC0+IGdldHRlciBrZXksIGYsIEA6OlxuICAgIEBzZXR0ZXI6ICgga2V5LCBmICkgLT4gc2V0dGVyIGtleSwgZiwgQDo6XG4gICAgQHByb3BlcnR5OiAoIGtleSwgc3BlY2lmaWVyICkgLT4gcHJvcGVydHkga2V5LCBzcGVjaWZpZXIsIEA6OlxuICAgIEBnZXR0ZXJzOiAoIGRpY3Rpb25hcnkgKSAtPiBnZXR0ZXJzIGRpY3Rpb25hcnksIEA6OlxuICAgIEBzZXR0ZXJzOiAoIGRpY3Rpb25hcnkgKSAtPiBzZXR0ZXJzIGRpY3Rpb25hcnksIEA6OlxuICAgIEBwcm9wZXJ0aWVzOiAoIGRpY3Rpb25hcnkgKSAtPiBwcm9wZXJ0aWVzIGRpY3Rpb25hcnksIEA6OlxuXG4gICAgQCRnZXR0ZXI6ICgga2V5LCBmICkgLT4gZ2V0dGVyIGtleSwgZiwgQFxuICAgIEAkc2V0dGVyOiAoIGtleSwgZiApIC0+IHNldHRlciBrZXksIGYsIEBcbiAgICBAJHByb3BlcnR5OiAoIGtleSwgc3BlY2lmaWVyICkgLT4gcHJvcGVydHkga2V5LCBzcGVjaWZpZXIsIEBcbiAgICBAJGdldHRlcnM6ICggZGljdGlvbmFyeSApIC0+IGdldHRlcnMgZGljdGlvbmFyeSwgQFxuICAgIEAkc2V0dGVyczogKCBkaWN0aW9uYXJ5ICkgLT4gc2V0dGVycyBkaWN0aW9uYXJ5LCBAXG4gICAgQCRwcm9wZXJ0aWVzOiAoIGRpY3Rpb25hcnkgKSAtPiBwcm9wZXJ0aWVzIGRpY3Rpb25hcnksIEBcblxuZXhwb3J0IHtcbiAgcHJvcGVydHlcbiAgZ2V0dGVyXG4gIHNldHRlclxuICBtZXRob2RcbiAgcHJvcGVydGllc1xuICBnZXR0ZXJzXG4gIHNldHRlcnNcbiAgbWV0aG9kc1xuICBtaXhpblxuICBtZXRhY2xhc3Ncbn1cbiJdfQ== //# sourceURL=/@dashkite/joy/src/metaclass.coffee //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL2pveS9zcmMvbWV0YWNsYXNzLmNvZmZlZSJdLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjdXJyeX0gZnJvbSBcIi4vZnVuY3Rpb25cIlxuaW1wb3J0IHttZXJnZX0gZnJvbSBcIi4vb2JqZWN0XCJcblxucHJvcGVydHkgPSBjdXJyeSAoa2V5LCBkZXNjcmlwdGlvbiwgdGFyZ2V0KSAtPlxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkgdGFyZ2V0LCBrZXksXG4gICAgbWVyZ2UgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSwgZGVzY3JpcHRpb25cblxuZ2V0dGVyID0gY3VycnkgKGtleSwgZiwgdGFyZ2V0KSAtPiBwcm9wZXJ0eSBrZXksIHtnZXQ6IGZ9LCB0YXJnZXRcbnNldHRlciA9IGN1cnJ5IChrZXksIGYsIHRhcmdldCkgLT4gcHJvcGVydHkga2V5LCB7c2V0OiBmfSwgdGFyZ2V0XG5tZXRob2QgPSBjdXJyeSAoa2V5LCBmLCB0YXJnZXQpIC0+XG4gIHByb3BlcnR5IGtleSwge3ZhbHVlOiBmLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRlYWJsZTogdHJ1ZX0sIHRhcmdldFxuXG5wcm9wZXJ0aWVzID0gY3VycnkgKGRpY3Rpb25hcnksIHRhcmdldCkgLT5cbiAgZm9yIGtleSwgZGVzY3JpcHRpb24gb2YgZGljdGlvbmFyeVxuICAgIHByb3BlcnR5IGtleSwgZGVzY3JpcHRpb24sIHRhcmdldFxuXG5nZXR0ZXJzID0gY3VycnkgKGRpY3Rpb25hcnksIHRhcmdldCkgLT5cbiAgZm9yIGtleSwgZiBvZiBkaWN0aW9uYXJ5XG4gICAgZ2V0dGVyIGtleSwgZiwgdGFyZ2V0XG5cbnNldHRlcnMgPSBjdXJyeSAoZGljdGlvbmFyeSwgdGFyZ2V0KSAtPlxuICBmb3Iga2V5LCBmIG9mIGRpY3Rpb25hcnlcbiAgICBzZXR0ZXIga2V5LCBmLCB0YXJnZXRcblxubWV0aG9kcyA9IGN1cnJ5IChkaWN0aW9uYXJ5LCB0YXJnZXQpIC0+XG4gIGZvciBrZXksIGYgb2YgZGljdGlvbmFyeVxuICAgIG1ldGhvZCBrZXksIGYsIHRhcmdldFxuXG5taXhpbiA9IGN1cnJ5ICh0YXJnZXQsIGZ4KSAtPiBmIHRhcmdldCBmb3IgZiBpbiBmeCA7IHRhcmdldFxuXG5tZXRhY2xhc3MgPSAoIGJhc2UgPSBPYmplY3QgKSAtPlxuXG4gIGNsYXNzIGV4dGVuZHMgYmFzZVxuXG4gICAgQGdldHRlcjogKCBrZXksIGYgKSAtPiBnZXR0ZXIga2V5LCBmLCBAOjpcbiAgICBAc2V0dGVyOiAoIGtleSwgZiApIC0+IHNldHRlciBrZXksIGYsIEA6OlxuICAgIEBwcm9wZXJ0eTogKCBrZXksIHNwZWNpZmllciApIC0+IHByb3BlcnR5IGtleSwgc3BlY2lmaWVyLCBAOjpcbiAgICBAZ2V0dGVyczogKCBkaWN0aW9uYXJ5ICkgLT4gZ2V0dGVycyBkaWN0aW9uYXJ5LCBAOjpcbiAgICBAc2V0dGVyczogKCBkaWN0aW9uYXJ5ICkgLT4gc2V0dGVycyBkaWN0aW9uYXJ5LCBAOjpcbiAgICBAcHJvcGVydGllczogKCBkaWN0aW9uYXJ5ICkgLT4gcHJvcGVydGllcyBkaWN0aW9uYXJ5LCBAOjpcblxuICAgIEAkZ2V0dGVyOiAoIGtleSwgZiApIC0+IGdldHRlciBrZXksIGYsIEBcbiAgICBAJHNldHRlcjogKCBrZXksIGYgKSAtPiBzZXR0ZXIga2V5LCBmLCBAXG4gICAgQCRwcm9wZXJ0eTogKCBrZXksIHNwZWNpZmllciApIC0+IHByb3BlcnR5IGtleSwgc3BlY2lmaWVyLCBAXG4gICAgQCRnZXR0ZXJzOiAoIGRpY3Rpb25hcnkgKSAtPiBnZXR0ZXJzIGRpY3Rpb25hcnksIEBcbiAgICBAJHNldHRlcnM6ICggZGljdGlvbmFyeSApIC0+IHNldHRlcnMgZGljdGlvbmFyeSwgQFxuICAgIEAkcHJvcGVydGllczogKCBkaWN0aW9uYXJ5ICkgLT4gcHJvcGVydGllcyBkaWN0aW9uYXJ5LCBAXG5cbmV4cG9ydCB7XG4gIHByb3BlcnR5XG4gIGdldHRlclxuICBzZXR0ZXJcbiAgbWV0aG9kXG4gIHByb3BlcnRpZXNcbiAgZ2V0dGVyc1xuICBzZXR0ZXJzXG4gIG1ldGhvZHNcbiAgbWl4aW5cbiAgbWV0YWNsYXNzXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUFrREUsTUFGRjs7OztlQU1FLE9BTkY7O1FBVUUsU0FWRjs7O1FBSUUsTUFKRjs7OztlQVFFLE9BUkY7OztlQVNFLEtBVEY7OztlQUtFLFVBTEY7OztlQUNFLFFBREY7O1FBR0UsTUFIRjs7OztlQU9FLE9BUEY7OzswQkFoREE7d0JBQ0E7QUFEQSxJQUFBLE1BQUEsRUFBQSxPQUFBLEVBQUEsU0FBQSxFQUFBLE1BQUEsRUFBQSxPQUFBLEVBQUEsS0FBQSxFQUFBLFVBQUEsRUFBQSxRQUFBLEVBQUEsTUFBQSxFQUFBO0FBR0EsUUFBQSxPQUFXLGVBQUEsRUFBTSxRQUFBLENBQUMsR0FBRCxFQUFNLFdBQU4sRUFBbUIsTUFBbkIsQ0FBQTtXQUNmLE1BQU0sQ0FBQyxjQUFQLENBQXNCLE1BQXRCLEVBQThCLEdBQTlCLE1BQ0UsYUFBQSxFQUFNO1FBQUUsVUFBQSxFQUFZLElBQWQ7UUFBb0IsWUFBQSxFQUFjO0lBQWxDLENBQU4sRUFBZ0QsV0FBaEQsQ0FERjtBQURlLENBQU47QUFJWCxNQUFBLEdBQVMsbUJBQUEsRUFBTSxRQUFBLENBQUMsR0FBRCxFQUFNLENBQU4sRUFBUyxNQUFULENBQUE7V0FBb0IsUUFBQSxDQUFTLEdBQVQsRUFBYztRQUFDLEdBQUEsRUFBSztJQUFOLENBQWQsRUFBd0IsTUFBeEI7QUFBcEIsQ0FBTjtBQUNULE1BQUEsT0FBUyxlQUFBLEVBQU0sUUFBQSxDQUFDLEdBQUQsRUFBTSxDQUFOLEVBQVMsTUFBVCxDQUFBO1dBQW9CLFFBQUEsQ0FBUyxHQUFULEVBQWM7UUFBQyxHQUFBLEVBQUs7SUFBTixDQUFkLEVBQXdCLE1BQXhCO0FBQXBCLENBQU47QUFDVCxNQUFBLE9BQVMsZUFBQSxFQUFNLFFBQUEsQ0FB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