UNPKG

8.53 kBPlain TextView Raw
1{"code":"function defineName$__(cls,name){\n\tObject.defineProperty(cls,\"name\",{value:name,configurable:true});\n};;\nfunction inheritClass$__(cls){\n\tObject.getPrototypeOf(cls.prototype).constructor?.inherited?.(cls);\n};\nconst $setup$ = Symbol.for('#setup'), $__init__$ = Symbol.for('#__init__'), $__patch__$ = Symbol.for('#__patch__'), $__initor__$ = Symbol.for('#__initor__'), $__inited__$ = Symbol.for('#__inited__'), $__hooks__$ = Symbol.for('#__hooks__');\nvar $1 = Symbol();\n\n/*body*/\nimport './any';\nimport './set';\n// import {Iterable} from '../core/iterable'\n\n// @template [Type=any]\nexport class OPACLField extends OPField {\n\t[$__patch__$]($$ = {},fields = true){\n\t\tvar $2;\n\t\tsuper[$__patch__$] && super[$__patch__$]($$,fields);\n\t\t($2 = $$.pgtype) !== undefined && (this.pgtype = $2);\n\t\t($2 = $$.index) !== undefined && (this.index = $2);\n\t\t\n\t}\n\tconstructor(){\n\t\tsuper(...arguments);\n\t\tsuper[$__init__$] || this[$__init__$]();this[$__initor__$]===$1 && (this[$__hooks__$]&&this[$__hooks__$].inited(this),this[$__inited__$] && this[$__inited__$]());\n\t}\n\t[$__init__$]($$ = null,deep = true,fields = true){\n\t\tvar $3;\n\t\tdeep && super[$__init__$] && super[$__init__$](...arguments);\n\t\tthis.pgtype = ($$ && ($3 = $$.pgtype) !== undefined) ? ($3) : 'jsonb';\n\t\tthis.index = ($$ && ($3 = $$.index) !== undefined) ? ($3) : true;\n\t\t\n\t}\n\t\n\t\n\t// Make it default to '{\"_\":1}' in postgres?\n\t\n\tget valuetype(){\n\t\t\n\t\treturn OPACL;\n\t}\n\t\n\t[$setup$](){\n\t\t\n\t\treturn this.default ||= function() { return {}; };\n\t}\n\t\n\t/**\n\t@returns { OPACL<InstanceType<Type>> }\n\t*/\n\t$get(target){\n\t\t\n\t\treturn target[this.key] ||= new OPACL(target,this,{});\n\t}\n\t\n\t$load(value,target){\n\t\t\n\t\tif (value !== undefined) { this.$get(target).$patch(value) };\n\t\treturn;\n\t}\n\t\n\t$init(value,target){\n\t\t\n\t\tif (value !== undefined) { this.$get(target).$init(value || {}) };\n\t\treturn;\n\t}\n\tstatic {\n\t\tthis.prototype[$__initor__$] = $1;defineName$__(this,'OPACLField');inheritClass$__(this);}\n}; globalThis.OPACLField = OPACLField;\n\n/*\nSerializes to a map containing agents as keys and a bitmask of roles as values.\nRemoving all roles for an agent will set the value to a negative int marking the\ntime of the removal.\n*/\n\nclass OPACL {\n\t\n\tconstructor(owner,field,options){\n\t\t\n\t\tthis.$up = owner;\n\t\tthis.$key = field;\n\t\tthis.$raw = {};\n\t}\n\t\n\tget $field(){\n\t\t\n\t\treturn this.$up?.$shape[this.$key];\n\t}\n\t\n\tserialize(){\n\t\t\n\t\treturn this.$raw;\n\t}\n\t\n\tget privateΦ(){\n\t\t\n\t\treturn this.$raw && (this.$raw[OP.ANYONE] || 0) < 1;\n\t}\n\t\n\tset private(val){\n\t\t\n\t\tif (val && this.privateΦ) {\n\t\t\t\n\t\t\treturn;\n\t\t};\n\t\t\n\t\tif (val && this.$raw[OP.ANYONE] != null) {\n\t\t\t\n\t\t\tthis.$raw[OP.ANYONE] = -OP.now;\n\t\t};\n\t\t\n\t\tif (!(val)) {\n\t\t\t\n\t\t\tthis.$raw[OP.ANYONE] = +OP.GUEST;\n\t\t\tthis.$raw._mod = OP.now;\n\t\t};\n\t\tthis.$changed();\n\t}\n\t\n\tget private(){\n\t\t\n\t\treturn this.privateΦ;\n\t}\n\t\n\t$init(val){\n\t\t\n\t\tconsole.log(`acl.$init`,val);\n\t\tthis.$raw[OP.agent] = OP.OWNER | OP.CREATOR;\n\t\tif (!(val.private)) {\n\t\t\t\n\t\t\tthis.$raw[OP.ANYONE] = +OP.GUEST;\n\t\t};\n\t\treturn this;\n\t}\n\t\n\t$patch(val){\n\t\t\n\t\tif (!(val)) { return this };\n\t\t// $raw = val\n\t\tfor (let $4 = 0, $5 = Object.keys(val), $6 = $5.length, k, v; $4 < $6; $4++){\n\t\t\tk = $5[$4];v = val[k];\n\t\t\tthis.$raw[k] = v;\n\t\t};\n\t\t// Workaround to still support _\n\t\tif (val._ >= 1) {\n\t\t\t\n\t\t\tval[OP.ANYONE] = +OP.GUEST;\n\t\t};\n\t\treturn this;\n\t\t\n\t\t// super\n\t}\n\t$changed(){\n\t\t\n\t\tconsole.log('changed field!',this);\n\t\tif (this.$up) { this.$up.$changed(this.$field,this) };\n\t\treturn this;\n\t}\n\tstatic {\n\t\tdefineName$__(this,'OPACL');}\n}; globalThis.OPACL = OPACL;\n","map":{"version":3,"file":"acl.js","sourceRoot":"","sources":["/Users/abdellah/workspace/scrimba/op/src/fields/acl.imba"],"sourcesContent":["import './any'\nimport './set'\n# import {Iterable} from '../core/iterable'\n\n# @template [Type=any]\nexport global class OPACLField < OPField\n\n\t# Make it default to '{\"_\":1}' in postgres?\n\tpgtype = 'jsonb'\n\tindex = yes\n\n\tget valuetype\n\t\tOPACL\n\n\tdef #setup\n\t\tdefault ||= do {}\n\n\tdef $get\\OPACL<InstanceType<Type>> target\n\t\ttarget[key] ||= new OPACL(target,self,{})\n\n\tdef $load value, target\n\t\t$get(target).$patch(value) unless value === undefined\n\t\treturn\n\n\tdef $init value, target\n\t\t$get(target).$init(value or {}) unless value === undefined\n\t\treturn\n\n###\nSerializes to a map containing agents as keys and a bitmask of roles as values.\nRemoving all roles for an agent will set the value to a negative int marking the\ntime of the removal.\n###\nglobal class OPACL\n\tdef constructor owner,field,options\n\t\t$up = owner\n\t\t$key = field\n\t\t$raw = {}\n\n\tget $field\n\t\t$up..$shape[$key]\n\n\tdef serialize\n\t\t$raw\n\n\tget private?\n\t\t$raw and ($raw[OP.ANYONE] or 0) < 1\n\n\tset private val\n\t\tif val and private?\n\t\t\treturn\n\n\t\tif val and $raw[OP.ANYONE] != null\n\t\t\t$raw[OP.ANYONE] = -OP.now\n\n\t\tif !val\n\t\t\t$raw[OP.ANYONE] = +OP.GUEST\n\t\t\t$raw._mod = OP.now\n\t\t$changed!\n\n\tget private\n\t\tprivate?\n\n\tdef $init val\n\t\tconsole.log `acl.$init`,val\n\t\t$raw[OP.agent] = OP.OWNER | OP.CREATOR\n\t\tif !val.private\n\t\t\t$raw[OP.ANYONE] = +OP.GUEST\n\t\tself\n\n\tdef $patch val\n\t\treturn self unless val\n\t\t# $raw = val\n\t\tfor own k,v of val\n\t\t\t$raw[k] = v\n\t\t# Workaround to still support _\n\t\tif val._ >= 1\n\t\t\tval[OP.ANYONE] = +OP.GUEST\n\t\treturn self\n\n\t\t# super\n\tdef $changed\n\t\tconsole.log 'changed field!',self\n\t\t$up.$changed($field,self) if $up\n\t\treturn self"],"names":[],"mappings":"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"},"dependencies":[],"meta":{"vite":{"lang":"js"}}}
\No newline at end of file