id-kit / dist / index.js
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { $APP, shadow$provide } from "./shared.js";
var oa,H,I,pa,J,qa,ta,va,ya,Ba,Ca,Da,Ea,M,O,Q,R,Ga,S,Fa,Ha,Ia,Ja,Ka,La,Ma,Oa,U,Pa,Qa,Ra,Sa,Ta,Ua,Va;$APP.G=function(a){return a==null?!0:a===!1?!0:!1};oa=function(a,b){var c=b==null?null:b.constructor;c=$APP.n($APP.n(c)?c.m:c)?c.l:$APP.l(b);return Error(["No protocol method ",a," defined for type ",c,": ",b].join(""))};
H=function(a){if(a!=null&&a.j!=null)a=a.state;else{var b=H[$APP.l(a==null?null:a)];if(b!=null)a=b.g?b.g(a):b.call(null,a);else if(b=H._,b!=null)a=b.g?b.g(a):b.call(null,a);else throw oa("IDeref.-deref",a);}return a};I=function(a,b){if(a!=null&&a.i!=null)a.i(a,b);else{var c=I[$APP.l(a==null?null:a)];if(c!=null)c.h?c.h(a,b):c.call(null,a,b);else if(c=I._,c!=null)c.h?c.h(a,b):c.call(null,a,b);else throw oa("IVolatile.-vreset!",a);}};pa=function(a){return a==null?!1:a===!1?!1:!0};
J=function(a){this.state=a};qa=function(a,b){I(a,b)};$APP.ra=function(a,b,c,d,e){return Promise.resolve(null).then(function(){return crypto.subtle.importKey("raw",$APP.B(d),"Ed25519",!1,["verify"]).then(function(f){return crypto.subtle.verify("Ed25519",f,$APP.B(e.replace($APP.la,"-").replace($APP.ma,"_")),$APP.v("sueta-id|v2|"+$APP.u(a)+"|"+$APP.u(b)+"|"+$APP.u(c))).then(function(g){return $APP.n(g)?$APP.D(d):null})})}).catch(function(){return null})};
ta=function(){return crypto.subtle.generateKey("Ed25519",!1,["sign","verify"]).then(function(){return!0}).catch(function(){return!1})};$APP.ua=function(a){for(var b=a.length,c=0,d=0;;)if(c<b)d=d*31+a.charCodeAt(c)>>>0,c+=1;else return d%360};
va=function(a){if(a==null||a==="")return null;var b=typeof Intl!=="undefined";if($APP.n(b?"Segmenter"in Intl:b))return a=(new Intl.Segmenter).segment(a),a=a[Symbol.iterator].call(a).next(),$APP.n(a.done)?null:a.value.segment;a=Array.from(a);return a.length>0?a[0]:null};
$APP.K=function(a){var b=a!=null&&"object"===typeof a?a:{};a=function(){var e=b.name;return typeof e==="string"?Array.from(e.trim()).slice(0,32).join(""):""}();var c=function(){var e=b.hue,f;if(f=typeof e==="number")f=Number.isFinite(e),f=$APP.n(f)?e>=0&&e<360:f;return $APP.n(f)?Math.floor(e):null}(),d=function(){var e=b.glyph;return typeof e==="string"?va(e.trim()):null}();return{name:a,hue:c,glyph:d,lang:function(){var e=b.lang,f=typeof e==="string";return $APP.n(f?/^[a-z]{2}$/.test(e):f)?e:null}()}};
ya=function(a){var b=wa.test(a);return $APP.n(b)?b:xa.includes(a)};Ba=function(a){if(typeof a!=="string")return null;if($APP.n(xa.includes(a)))return"dev";a=wa.exec(a);var b=a!=null?a[1]:null;if(a==null)return null;if(b==null)return"home";a=b.slice(0,b.length-1);b=za.test(a);b=$APP.n(b)?$APP.G(Aa.includes(a)):b;return $APP.n(b)?a:null};Ca=function(a){return pa(function(){if($APP.n(a)){var b=1===a.v;return b?(b=a.t,b==="id-ready"||b==="state"||b==="conflict"):b}return a}())};
Da=function(a){return pa(function(){if($APP.n(a)){var b=1===a.v;if(b){if(b=typeof a.reqId==="number"){b=a.t;var c=b==="get";return c||(c=b==="put")||(c=b==="profile")||(c=b==="soc")||(c=b==="clear")?c:(b=b==="app")?(b=typeof a.expect==="string")?Object.hasOwn(a,"state"):b:b}return b}return b}return a}())};Ea=function(a,b){try{return localStorage.getItem(""+$APP.u(a._ns)+":"+$APP.u(b))}catch(c){return null}};
M=function(a,b,c){try{c==null?localStorage.removeItem(""+$APP.u(a._ns)+":"+$APP.u(b)):localStorage.setItem(""+$APP.u(a._ns)+":"+$APP.u(b),c)}catch(d){}};O=function(a){a=Ea(a,"id");return $APP.n($APP.n(a)?$APP.N.test(a):a)?a:null};
Q=function(a){var b=function(){try{var e=JSON,f=e.parse,g=Ea(a,"profile");return f.call(e,g!=null?g:"{}")}catch(k){return{}}}(),c=$APP.K(function(){var e=Ea(a,"name");return{name:e!=null?e:"",hue:b.hue,glyph:b.glyph,lang:b.lang}}()),d=function(){var e=b.ts;var f=(f=typeof e==="number")?Number.isFinite(e):f;return $APP.n(f)?e:0}();c=Object.assign({},c);c.ts=d;return c};
R=function(a,b,c,d){b!=null&&M(a,"id",b);b=c.name;M(a,"name",b!=null&&b!==""?b:null);M(a,"profile",JSON.stringify({hue:c.hue,glyph:c.glyph,lang:c.lang,ts:d}))};
Ga=function(a){var b=a._ready;if($APP.n(b))return b;b=new Promise(function(c,d){function e(h){var q=a._frame;if(h.origin===a._origin&&q!=null&&h.source===q.contentWindow&&Ca(h.data)){h=h.data;var p=h.t,m=h.reqId;if(p==="id-ready"){if($APP.n(H(f)))return null;I(f,!0);clearTimeout(g);h=q.contentWindow;return c.g?c.g(h):c.call(null,h)}if(p==="state"&&void 0===m){var r=h.rec;a._lastRec=r;Fa.h?Fa.h(a,r):Fa.call(null,a,r);return a._onChange.forEach(function(t){return t.g?t.g(r):t.call(null,r)})}if(void 0!==
m&&(q=a._pending,p=q.get(m),$APP.n(p)))return q.delete(m),p.g?p.g(h):p.call(null,h)}return null}var f=new J(!1),g=setTimeout(function(){if($APP.n(H(f)))return null;I(f,!0);var h=Error("id bridge timeout");return d.g?d.g(h):d.call(null,h)},a._frameTimeoutMs);a._listener=e;window.addEventListener("message",e);var k=document.createElement("iframe");k.hidden=!0;k.setAttribute("aria-hidden","true");k.src=a._url;k.addEventListener("error",function(){if($APP.n(H(f)))return null;I(f,!0);clearTimeout(g);var h=
Error("id bridge failed to load");return d.g?d.g(h):d.call(null,h)});a._frame=k;return function(){var h=document.body;return h!=null?h:document.documentElement}().appendChild(k)});return a._ready=b};
S=function(a,b){return Ga(a).then(function(c){var d=a._reqId+1;a._reqId=d;var e=b.g?b.g(d):b.call(null,d);return new Promise(function(f,g){var k=setTimeout(function(){a._pending.delete(d);var h=Error("id bridge timeout");return g.g?g.g(h):g.call(null,h)},a._timeoutMs);a._pending.set(d,function(h){clearTimeout(k);return f.g?f.g(h):f.call(null,h)});return c.postMessage(e,a._origin)})})};Fa=function(a,b){b!=null&&b.seed===O(a)&&b.updatedAt>Q(a).ts&&R(a,b.seed,$APP.K(b),b.updatedAt)};
Ha=function(a,b,c,d,e){return S(a,function(f){var g={v:1};g.seed=b;g.name=c.name;g.hue=c.hue;g.glyph=c.glyph;g.lang=c.lang;g.soc=null;g.apps=null;g.createdAt=d;g.updatedAt=d;return{t:"put",v:1,reqId:f,rec:g,expect:e}})};Ia=function(a,b,c){Ha(a,b,T,c,null).catch(function(){})};
Ja=function(a,b){var c=O(a),d=Q(a);d=$APP.K({name:$APP.n("name"in b)?b.name:d.name,hue:$APP.n("hue"in b)?b.hue:d.hue,glyph:$APP.n("glyph"in b)?b.glyph:d.glyph,lang:$APP.n("lang"in b)?b.lang:d.lang});R(a,c,d,Date.now());return c==null?Promise.resolve(void 0):S(a,function(e){return{t:"profile",v:1,reqId:e,expect:c,patch:b}}).then(function(e){e.t==="state"&&(a._lastRec=e.rec)}).catch(function(){})};
Ka=function(a,b){var c=O(a);return c==null?Promise.resolve(!1):S(a,function(d){return{t:"soc",v:1,reqId:d,expect:c,soc:b}}).then(function(d){return d.t==="state"?(a._lastRec=d.rec,!0):!1}).catch(function(){return!1})};
La=function(a,b){var c=O(a);return c==null?Promise.resolve({ok:!1,reason:"noseed"}):S(a,function(d){return{t:"app",v:1,reqId:d,expect:c,state:b}}).then(function(d){if(d.t==="state")return a._lastRec=d.rec,{ok:!0,reason:null};d=d.reason;return{ok:!1,reason:typeof d==="string"?d:"conflict"}}).catch(function(){return{ok:!1,reason:"offline"}})};
Ma=function(a,b,c){if($APP.G($APP.N.test(b)))return Promise.resolve(!1);var d=Q(a),e=$APP.n(function(){var f=c!=null;return f?c.force:f}())?function(){var f=a._lastRec;return f!=null?(f=f.seed,f!=null?f:null):null}():null;return Ha(a,b,d,Date.now(),e).then(function(f){return f.t==="state"?(a._lastRec=f.rec,!0):!1}).catch(function(){return!1})};Oa=function(a,b,c,d,e,f){return{seed:a,identity:b,profile:{name:c.name,hue:c.hue,glyph:c.glyph,lang:c.lang},source:d,conflict:e,bridged:f}};
U=function(a,b,c,d,e,f){return $APP.n(function(){var g=c!=null;return g?a:g}())?$APP.F(c).then(function(g){return Oa(c,g,d,e,f,b)}).catch(function(){return Oa(c,null,d,e,f,b)}):Promise.resolve(Oa(c,null,d,e,f,b))};
Pa=function(a){var b=O(a),c=Q(a);return ta().catch(function(){return!1}).then(function(d){return S(a,function(e){return{t:"get",v:1,reqId:e}}).catch(function(){return null}).then(function(e){var f=e!=null&&e.t==="state";e=f?e.rec:null;f&&(a._lastRec=e);if(f){if(e==null){h=b!=null?b:$APP.n(d)?$APP.A($APP.w(32)):null;if(h==null)return U(d,f,null,T,"none",null);e=b!=null?function(){var q=c.ts;return q===0?Date.now():q}():Date.now();var g=b!=null?c:T,k=b!=null?"mirror":"fresh";b==null&&R(a,h,g,e);return Ha(a,
h,g,e,null).catch(function(){return null}).then(function(q){return q!=null&&q.t==="conflict"&&q.rec!=null&&q.rec.seed!==h?U(d,f,h,g,k,q.rec):U(d,f,h,g,k,null)})}if(b==null)return g=$APP.K(e),R(a,e.seed,g,e.updatedAt),U(d,f,e.seed,g,"bridge",null);if(e.seed===b){if(c.ts>e.updatedAt)return Ja(a,{name:c.name,hue:c.hue,glyph:c.glyph,lang:c.lang}),U(d,f,b,c,"mirror",null);g=$APP.K(e);R(a,b,g,e.updatedAt);return U(d,f,b,g,"mirror",null)}return Ea(a,"id-conflict-dismissed")===e.seed?U(d,f,b,c,"mirror",null):
U(d,f,b,c,"mirror",e)}if(b!=null)return U(d,f,b,c,"mirror",null);if($APP.G(d))return U(d,f,null,T,"none",null);var h=$APP.A($APP.w(32));e=Date.now();R(a,h,T,e);Ia(a,h,e);return U(d,f,h,T,"fresh",null)})})};Qa=function(a){return a!=null&&"object"===typeof a};Ra=function(a){try{var b=JSON.stringify(a);return typeof b==="string"?b.length:null}catch(c){return null}};
Sa=function(a){if(Qa(a)&&$APP.G(Array.isArray(a))){for(var b={},c=Object.keys(a).sort(),d=c.length,e=new J(0),f=0;;)if(f<d){var g=c[f],k=a[g];if($APP.n(function(){var m=za.test(g);return $APP.n(m)?Qa(k):m}())){var h=k.ts,q=k.state,p=Ra(q);$APP.n(function(){var m=typeof h==="number";return m?(m=Number.isFinite(h),$APP.n(m)?h>0&&p!=null&&p<=16384:m):m}())&&(e.i(null,e.state+1),b[g]={state:q,ts:h})}f+=1}else break;return H(e)>0?b:null}return null};
$APP.V=function(a){if(Qa(a)){var b=a.seed;if($APP.G(function(){var k=typeof b==="string";return k?$APP.N.test(b):k}()))return null;var c=$APP.K(a),d=Date.now(),e=function(k){var h;if(h=typeof k==="number")h=Number.isFinite(k),h=$APP.n(h)?k>0:h;return $APP.n(h)?k:d},f=a.soc,g={v:1};g.seed=b;g.name=c.name;g.hue=c.hue;g.glyph=c.glyph;g.lang=c.lang;g.soc=void 0===f?null:f;g.apps=Sa(a.apps);g.createdAt=e(a.createdAt);g.updatedAt=e(a.updatedAt);return g}return null};
Ta=function(a){a=Ra(a);return a!=null&&a<=131072};Ua=function(){try{var a=localStorage.getItem("ardegazu-id:v1");return{rec:$APP.n(a)?$APP.V(JSON.parse(a)):null,ephemeral:!1}}catch(b){return{rec:null,ephemeral:!0}}};Va=function(a){try{return a==null?localStorage.removeItem("ardegazu-id:v1"):localStorage.setItem("ardegazu-id:v1",JSON.stringify(a)),!0}catch(b){return!1}};J.prototype.i=function(a,b){return this.state=b};J.prototype.j=function(){return this.state};var T={name:"",hue:null,glyph:null,lang:null},W=function W(a){switch(arguments.length){case 1:return W.g(arguments[0]);case 2:return W.h(arguments[0],arguments[1]);default:throw Error(["Invalid arity: ",arguments.length].join(""));}};W.g=function(a){return W.h(a,null)};W.h=function(a,b){b=b!=null?b.hue:null;return typeof b==="number"&&b>=0&&b<360?Math.floor(b):$APP.ua(a)};
var X=function X(a){switch(arguments.length){case 1:return X.g(arguments[0]);case 2:return X.h(arguments[0],arguments[1]);default:throw Error(["Invalid arity: ",arguments.length].join(""));}};X.g=function(a){return X.h(a,null)};X.h=function(a,b){return"hsl("+$APP.u(W.h(a,b))+" 45% 40%)"};var Wa,wa,xa,za,Aa;Wa="https://ardegazu.ro"+$APP.u("/id/");$APP.N=/^[A-Za-z0-9_-]{43}$/;wa=/^https:\/\/([a-z0-9-]+\.)?ardegazu\.ro$/;xa=["http://localhost:4173","http://localhost:5173","http://127.0.0.1:4173","http://127.0.0.1:5173"];za=/^[a-z0-9-]{1,32}$/;Aa=["home","dev"];var Xa=class{constructor(a){var b=this;b._ns=a.ns;b._url=function(){var c=a.bridgeUrl;return c!=null?c:Wa}();b._origin=(new URL(b._url)).origin;b._timeoutMs=function(){var c=a.timeoutMs;return c!=null?c:2500}();b._frameTimeoutMs=function(){var c=a.timeoutMs;return c!=null?c:(O.g?O.g(b):O.call(null,b))==null?8E3:2500}();b._frame=null;b._ready=null;b._reqId=0;b._pending=new Map;b._onChange=new Set;b._lastRec=null;b._listener=null}},Y=Xa.prototype;Y.mirrorSeed=function(){return O(this)};
Y.mirrorProfile=function(){return Q(this)};Y.onChange=function(a){var b=this;b._onChange.add(a);return function(){return b._onChange.delete(a)}};Y.lastRecord=function(){return this._lastRec};Y.boot=function(){return Pa(this)};Y.putProfile=function(a){return Ja(this,a)};Y.putSoc=function(a){return Ka(this,a)};Y.putAppState=function(a){return La(this,a).then(function(b){return b.ok})};Y.putAppStateDetailed=function(a){return La(this,a)};
Y.appKey=function(){return typeof location!=="undefined"?Ba(location.origin):null};Y.appStateOf=function(a){var b=this._lastRec;b=b!=null?b.apps:null;a=b!=null?b[a]:null;a!=null?(a=a.state,a=void 0===a?null:a):a=null;return a};Y.adoptBridgeSeed=function(a){var b=O(this);b!=null&&b!==a.seed&&M(this,"id-prev",b);R(this,a.seed,$APP.K(a),a.updatedAt);M(this,"id-conflict-dismissed",null)};Y.keepLocalSeed=function(a){M(this,"id-conflict-dismissed",a.seed)};Y.publishSeed=function(a,b){return Ma(this,a,b)};
Y.destroy=function(){var a=this._listener;a!=null&&window.removeEventListener("message",a);a=this._frame;a!=null&&a.remove();this._ready=this._frame=null;this._pending.clear();this._onChange.clear()};export const appKeyOfOrigin=Ba;export const MAX_RECORD_BYTES=131072;export const readBridgeRecord=Ua;export const IdBridge=Xa;export const DEFAULT_BRIDGE_URL=Wa;
export const initBridgeHost=function(){function a(g){var k={t:"state",v:1,rec:c()};void 0!==g&&(k.reqId=g);$APP.n(H(e))&&(k.ephemeral=!0);return k}function b(g){I(d,g);$APP.G(H(e))&&!Va(g)&&I(e,!0)}function c(){if($APP.n(H(e)))return H(d);var g=Ua();return $APP.n(g.ephemeral)?(I(e,!0),H(d)):g.rec}var d=new J(null),e=new J(!1),f=new J(null);window.addEventListener("message",function(g){if($APP.n(function(){var x=ya(g.origin);return $APP.n(x)?(x=g.source,$APP.n(x)?Da(g.data):x):x}())){var k=g.data,
h=g.origin;qa(f,{source:g.source,origin:h});var q=function(x){var P=H(f);return P.source.postMessage(x,P.origin)},p=c(),m=p!=null?p.seed:null,r=function(){function x(sa){return q({t:"conflict",v:1,reqId:k.reqId,rec:p,reason:sa})}var P=null;P=function(sa){switch(arguments.length){case 0:return q({t:"conflict",v:1,reqId:k.reqId,rec:p});case 1:return x.call(this,sa)}throw Error("Invalid arity: "+arguments.length);};P.g=x;return P}(),t=k.t;if(t==="get")return q(a(k.reqId));if(t==="put"){h=$APP.V(k.rec);
if(h==null||m!==k.expect)return r();t=Date.now();m=Object.assign({},h);var fa=p!=null&&p.seed===h.seed;m.createdAt=fa?p.createdAt:h.createdAt;m.apps=fa?p.apps:null;m.updatedAt=t;return Ta(m)?(b(m),q(a(k.reqId))):r()}if(t==="profile"){if(p==null||m!==k.expect)return r();r=function(){var x=k.patch;return Qa(x)?x:{}}();r=$APP.K({name:$APP.n("name"in r)?r.name:p.name,hue:$APP.n("hue"in r)?r.hue:p.hue,glyph:$APP.n("glyph"in r)?r.glyph:p.glyph,lang:$APP.n("lang"in r)?r.lang:p.lang});m=Object.assign({},
p,r);m.updatedAt=Date.now();b(m);return q(a(k.reqId))}if(t==="soc"){if(p==null||m!==k.expect)return r();h=k.soc;m=Object.assign({},p);m.soc=void 0===h?null:h;m.updatedAt=Date.now();return Ta(m)?(b(m),q(a(k.reqId))):r()}if(t==="app"){h=Ba(h);t=k.state;var Na=(fa=t==null||void 0===t)?0:Ra(t);if(p==null||m!==k.expect)return r("cas");if(h==null)return r("key");if(Na==null||Na>16384)return r("size");m=Object.assign({},p.apps);fa?delete m[h]:m[h]={state:t,ts:Date.now()};h=Sa(m);t=Ra(h);m=Object.assign({},
p);m.apps=h;m.updatedAt=Date.now();if(t==null||t>98304||!Ta(m))return r("full");b(m);return q(a(k.reqId))}if(t==="clear"){if(m!==k.expect)return r();b(null);return q(a(k.reqId))}}return null});window.addEventListener("storage",function(g){if(g.key!=null&&g.key!=="ardegazu-id:v1")return null;g=H(f);return g==null?null:g.source.postMessage(a(void 0),g.origin)});$APP.n(function(){var g=window.parent;return $APP.n(g)?window.parent!==window:g}())&&window.parent.postMessage({t:"id-ready",v:1},"*")};
export const MAX_APP_STATE_BYTES=16384;export const verifyRaw=$APP.ka;export const RESERVED_CORE_BYTES=32768;export const defaultGlyph=function(a){return $APP.D(a).then(function(b){b=va(b.emoji);return b!=null?b:"◆"})};export const MAX_APPS_BYTES=98304;export const utf8=$APP.v;export const Identity=$APP.E;export const EMPTY_PROFILE=T;export const SEED_RE=$APP.N;export const fromB64=$APP.z;export const BRIDGE_STORE_KEY="ardegazu-id:v1";export const effectiveHue=W;export const APP_KEY_RE=za;
export const hueOfPub=$APP.ua;export const fingerprintOf=$APP.D;export const colorOfPub=X;export const sanitizeRecord=$APP.V;export const verifyAssertion=$APP.ra;export const BRIDGE_PATH="/id/";export const isAllowedAppOrigin=ya;export const toB64url=$APP.A;export const APP_ORIGIN_RE=wa;export const randomBytes=$APP.w;export const isBridgeReply=Ca;export const writeBridgeRecord=Va;export const isBridgeRequest=Da;export const MAX_NAME_LEN=32;export const clampProfile=$APP.K;
export const fromB64url=$APP.B;export const RESERVED_APP_KEYS=Aa;export const toB64=$APP.y;export const DEV_ORIGINS=xa;export const isEd25519Supported=ta;

static mirror of HEAD · about · clone: git clone https://git.ardegazu.ro/id-kit.git