@knpkv/jcf-web 0.2.0
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/LICENSE +21 -0
- package/README.md +315 -0
- package/dist/client/assets/AgentSettingsPanel-NhTzwiq6.js +1 -0
- package/dist/client/assets/Schema-DUFTUil2.js +2 -0
- package/dist/client/assets/UrlParams-ZN2s8OM_.js +6 -0
- package/dist/client/assets/agentSettings-nw9lCgBQ.js +1 -0
- package/dist/client/assets/api-BQCWhiKV.js +4 -0
- package/dist/client/assets/decoding-CebF86HD.js +1 -0
- package/dist/client/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/dist/client/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
- package/dist/client/assets/index-Ch0W9DhA.css +1 -0
- package/dist/client/assets/index-N2vhoKYl.js +51 -0
- package/dist/client/assets/rolldown-runtime-hePW80VL.js +1 -0
- package/dist/client/assets/transport-AcByYfLh.js +1 -0
- package/dist/client/index.html +19 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.js +32 -0
- package/dist/main.js.map +1 -0
- package/dist/server/Api.d.ts +789 -0
- package/dist/server/Api.js +98 -0
- package/dist/server/Api.js.map +1 -0
- package/dist/server/Confirm.d.ts +94 -0
- package/dist/server/Confirm.js +243 -0
- package/dist/server/Confirm.js.map +1 -0
- package/dist/server/Handlers.d.ts +14 -0
- package/dist/server/Handlers.js +157 -0
- package/dist/server/Handlers.js.map +1 -0
- package/dist/server/HttpApplication.d.ts +7 -0
- package/dist/server/HttpApplication.js +62 -0
- package/dist/server/HttpApplication.js.map +1 -0
- package/dist/server/OwnerSession.d.ts +62 -0
- package/dist/server/OwnerSession.js +219 -0
- package/dist/server/OwnerSession.js.map +1 -0
- package/dist/server/RowDescriptions.d.ts +19 -0
- package/dist/server/RowDescriptions.js +42 -0
- package/dist/server/RowDescriptions.js.map +1 -0
- package/dist/server/SavedEntryOperations.d.ts +27 -0
- package/dist/server/SavedEntryOperations.js +171 -0
- package/dist/server/SavedEntryOperations.js.map +1 -0
- package/dist/server/Server.d.ts +13 -0
- package/dist/server/Server.js +29 -0
- package/dist/server/Server.js.map +1 -0
- package/dist/server/WeekPlan.d.ts +110 -0
- package/dist/server/WeekPlan.js +258 -0
- package/dist/server/WeekPlan.js.map +1 -0
- package/dist/server/WeekPlans.d.ts +30 -0
- package/dist/server/WeekPlans.js +190 -0
- package/dist/server/WeekPlans.js.map +1 -0
- package/dist/server/WeekRead.d.ts +435 -0
- package/dist/server/WeekRead.js +189 -0
- package/dist/server/WeekRead.js.map +1 -0
- package/dist/shared/contracts.d.ts +901 -0
- package/dist/shared/contracts.js +365 -0
- package/dist/shared/contracts.js.map +1 -0
- package/dist/shared/writePlanning.d.ts +6 -0
- package/dist/shared/writePlanning.js +19 -0
- package/dist/shared/writePlanning.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));export{s as n,l as r,o as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$n as e,A as t,Ar as n,At as r,B as i,Br as a,C as o,Ct as s,D as c,Dr as l,Dt as ee,Ei as u,Jr as te,K as ne,Mn as re,Nn as d,O as f,Ot as ie,Q as ae,Qr as oe,St as se,U as p,Ur as ce,Vr as m,X as le,Xn as ue,Xr as de,Yn as fe,Yr as pe,_r as me,ar as he,at as ge,cr as _e,di as ve,dr as ye,dt as be,er as h,gr as g,gt as xe,hi as Se,hr as Ce,ht as we,ir as Te,mi as Ee,mt as _,n as De,ni as v,o as Oe,or as ke,qn as Ae,qr as y,r as b,ri as x,st as S,ti as je,tn as C,tr as w,u as Me,ur as T,vi as E,vt as D,xt as O,y as k,yt as A,zr as j}from"./UrlParams-ZN2s8OM_.js";import{t as M}from"./api-BQCWhiKV.js";import{f as Ne,g as N,h as Pe,m as Fe,p as Ie}from"./index-N2vhoKYl.js";var P=new WeakMap,F=`~effect/Redacted`,Le=e=>x(e,F),I=(e,t)=>{let n=Object.create(Re);return t?.label&&(n.label=t.label),P.set(n,e),n},Re={[F]:{_A:e=>e},label:void 0,...n,toJSON(){return this.toString()},toString(){return`<redacted${ve(this.label)?`:`+this.label:``}>`},[v](){return oe(P.get(this))},[de](e){return Le(e)&&pe(P.get(this),P.get(e))}},L=Symbol.for(`~effect/http/Headers`),R=Object.defineProperties(Object.create(null),{[L]:{value:L},[te]:{value(e){return We(this,Te(e,Ke))}},toJSON:{value(){return y(this)}},[de]:{value(e){return ze(this,e)}},[v]:{value(){return je(this)}},toString:{value:j.toString},[m]:{value:j[m]}}),z=e=>Object.assign(Object.create(R),e),ze=Ae(l()),Be=Object.create(R),B=e=>{if(e===void 0)return Be;if(Symbol.iterator in e){let t=Object.create(R);for(let[n,r]of e)t[n.toLowerCase()]=r;return t}let t=Object.create(R);for(let[n,r]of Object.entries(e))Array.isArray(r)?t[n.toLowerCase()]=r.join(`, `):r!==void 0&&(t[n.toLowerCase()]=r);return t},Ve=e=>Object.setPrototypeOf(e,R),V=E(3,(e,t,n)=>{let r=z(e);return r[t.toLowerCase()]=n,r}),He=E(2,(e,t)=>z({...e,...B(t)})),Ue=E(2,(e,t)=>{let n=z(e);return Object.assign(n,t),n}),H=E(2,(e,t)=>{let n=z(e);return delete n[t.toLowerCase()],n}),We=E(2,(e,t)=>{let n={...e},r=t=>{if(typeof t==`string`){let r=t.toLowerCase();r in e&&(n[r]=I(e[r]))}else for(let r in e)r.search(t)!==-1&&(n[r]=I(e[r]))};if(Array.isArray(t))for(let e=0;e<t.length;e++)r(t[e]);else r(t);return n}),Ge=(e,t)=>{for(let n=0;n<t.length;n++){let r=t[n];if(typeof r==`string`){if(r.toLowerCase()===e.toLowerCase())return!0}else if(e.search(r)!==-1)return!0}return!1},Ke=h(`effect/Headers/CurrentRedactedNames`,{defaultValue:()=>[`authorization`,`cookie`,`set-cookie`,`x-api-key`]}),U=`~effect/http/HttpBody`,qe=class{[U];constructor(){this[U]=U}[m](){return this.toJSON()}toString(){return ce(this,{ignoreToString:!0})}},Je=new class extends qe{_tag=`Empty`;toJSON(){return{_id:`effect/HttpBody`,_tag:`Empty`}}},Ye=class extends qe{_tag=`Uint8Array`;contentType;contentLength;text;_body;constructor(e,t,n,r){super(),this._body=e,this.text=r,this.contentType=t,this.contentLength=n}get body(){return this._body??=Ze(this.text)}toJSON(){return{_id:`effect/HttpBody`,_tag:`Uint8Array`,body:this.contentType.startsWith(`text/`)||this.contentType.endsWith(`json`)?new TextDecoder().decode(this.body):`Uint8Array(${this.body.length})`,contentType:this.contentType,contentLength:this.contentLength}}},Xe=new TextEncoder,W=globalThis.Buffer,Ze=W===void 0?e=>Xe.encode(e):e=>W.from(e,`utf8`),Qe=(e,t)=>{if(typeof e!=`string`&&(e=e===void 0?``:String(e)),W!==void 0)return new Ye(void 0,t??`text/plain`,W.byteLength(e,`utf8`),e);let n=Xe.encode(e);return new Ye(n,t??`text/plain`,n.length,e)},$e=`~effect/http/HttpClientError`,G=class extends d(`HttpClientError`){constructor(e){`cause`in e.reason?super({...e,cause:e.reason.cause}):super(e)}[$e]=$e;get request(){return this.reason.request}get response(){return`response`in this.reason?this.reason.response:void 0}get message(){return this.reason.message}},K=e=>e.endsWith(`Error`)?e.slice(0,-5):e,q=(e,t,n)=>t?`${e}: ${t} (${n})`:`${e} error (${n})`,et=class extends d(`TransportError`){get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){return q(K(this._tag),this.description,this.methodAndUrl)}},tt=class extends d(`InvalidUrlError`){get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){return q(K(this._tag),this.description,this.methodAndUrl)}},J=class extends d(`DecodeError`){get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){let e=`${this.response.status} ${this.methodAndUrl}`;return q(K(this._tag),this.description,e)}},nt=class extends d(`EmptyBodyError`){get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){let e=`${this.response.status} ${this.methodAndUrl}`;return q(K(this._tag),this.description,e)}},rt=[[`GET`,`get`],[`POST`,`post`],[`PUT`,`put`],[`DELETE`,`del`],[`PATCH`,`patch`],[`HEAD`,`head`],[`OPTIONS`,`options`],[`TRACE`,`trace`],[`QUERY`,`query`]],it=(e,t)=>t._tag===`Empty`||t._tag===`FormData`?H(H(e,`content-type`),`content-length`):(e=t.contentType===void 0?H(e,`content-type`):V(e,`content-type`,t.contentType),t.contentLength===void 0?H(e,`content-length`):V(e,`content-length`,t.contentLength.toString())),at=class extends d(`UrlError`){},ot=(t,n,r)=>e({try:()=>{let e=new URL(t,st());for(let t=0;t<n.params.length;t++){let[r,i]=n.params[t];i!==void 0&&e.searchParams.append(r,i)}return r!==void 0&&(e.hash=r),e},catch:e=>new at({cause:e})}),st=()=>{if(`location`in globalThis&&globalThis.location!==void 0&&globalThis.location.origin!==void 0&&globalThis.location.pathname!==void 0)return location.origin+location.pathname},Y=`~effect/http/HttpClientRequest`,ct=e=>x(e,Y),lt={[Y]:Y,...j,toJSON(){return{_id:`HttpClientRequest`,method:this.method,url:this.url,urlParams:this.urlParams,hash:this.hash,headers:y(this.headers),body:this.body.toJSON()}},pipe(){return u(this,arguments)}};function X(e,t,n,r,i,a){let o=Object.create(lt);return o.method=e,o.url=t,o.urlParams=n,o.hash=r,o.headers=i,o.body=a,o}var ut=X(`GET`,``,De,g(),Be,Je),dt=e=>(t,n)=>ft(ut,{method:e,url:t,...n??void 0}),ft=E(2,(e,t)=>{let n=e;return t.method&&(n=pt(n,t.method)),t.url&&(n=vt(n,t.url)),t.headers&&(n=ht(n,t.headers)),t.urlParams&&(n=yt(n,t.urlParams)),t.hash&&(n=bt(n,t.hash)),t.body&&(n=xt(n,t.body)),t.accept&&(n=gt(n,t.accept)),t.acceptJson&&(n=_t(n)),n}),pt=E(2,(e,t)=>X(t,e.url,e.urlParams,e.hash,e.headers,e.body)),mt=E(3,(e,t,n)=>X(e.method,e.url,e.urlParams,e.hash,V(e.headers,t,n),e.body)),ht=E(2,(e,t)=>X(e.method,e.url,e.urlParams,e.hash,He(e.headers,t),e.body)),gt=E(2,(e,t)=>mt(e,`Accept`,t)),_t=gt(`application/json`),vt=E(2,(e,t)=>{if(typeof t==`string`)return X(e.method,t,e.urlParams,e.hash,e.headers,e.body);let n=new URL(t.toString()),r=b(n.searchParams),i=_e(n.hash===``?void 0:n.hash.slice(1));return n.search=``,n.hash=``,X(e.method,n.toString(),r,i,e.headers,e.body)}),yt=E(2,(e,t)=>X(e.method,e.url,Oe(e.urlParams,t),e.hash,e.headers,e.body)),bt=E(2,(e,t)=>X(e.method,e.url,e.urlParams,me(t),e.headers,e.body)),xt=E(2,(e,t)=>X(e.method,e.url,e.urlParams,e.hash,it(e.headers,t),t)),St=E(e=>ct(e[0]),(e,t,n)=>xt(e,Qe(t,n)));function Ct(e){let t=ot(e.url,e.urlParams,T(e.hash));return ue(t)?me(t.success):g()}var Z=`~effect/http/HttpIncomingMessage`,wt=(e,t)=>{let n=e.headers[`content-type`]??``,r;if(n.includes(`application/json`))try{r=S(e.json)}catch{}else if(n.includes(`text/`)||n.includes(`urlencoded`))try{r=S(e.text)}catch{}let i={...t,headers:y(e.headers),remoteAddress:e.remoteAddress};return r!==void 0&&(i.body=r),i},Q=`~effect/http/HttpClientResponse`,Tt=(e,t)=>new Et(e,t),Et=class extends a{[Z];[Q];request;source;constructor(e,t){super(),this.request=e,this.source=t,this[Z]=Z,this[Q]=Q}toJSON(){return wt(this,{_id:`HttpClientResponse`,request:this.request.toJSON(),status:this.status})}get status(){return this.source.status}get url(){if(this.source.url)return this.source.url.split(`#`)[0];let e=Ct(this.request);return ye(e)?``:(e.value.hash=``,e.value.href)}get headers(){return B(this.source.headers)}cachedCookies;get cookies(){return this.cachedCookies?this.cachedCookies:this.cachedCookies=Me(this.source.headers.getSetCookie())}get remoteAddress(){return g()}get stream(){return this.source.body?Fe({evaluate:()=>this.source.body,onError:e=>new G({reason:new J({request:this.request,response:this,cause:e})})}):Ie(new G({reason:new nt({request:this.request,response:this,description:`can not create stream from empty body`})}))}get json(){return t(this.text,e=>A({try:()=>e===``?null:JSON.parse(e),catch:e=>new G({reason:new J({request:this.request,response:this,cause:e})})}))}textBody;get text(){return this.textBody??=p(this.arrayBuffer,e=>new TextDecoder().decode(e))}get urlParamsBody(){return t(this.text,e=>A({try:()=>b(new URLSearchParams(e)),catch:e=>new G({reason:new J({request:this.request,response:this,cause:e})})}))}formDataBody;get formData(){return this.formDataBody??=D({try:()=>this.source.formData(),catch:e=>new G({reason:new J({request:this.request,response:this,cause:e})})}).pipe(k,S)}arrayBufferBody;get arrayBuffer(){return this.arrayBufferBody||=D({try:()=>this.source.arrayBuffer(),catch:e=>new G({reason:new J({request:this.request,response:this,cause:e})})}).pipe(k,S),this.arrayBufferBody}pipe(){return u(this,arguments)}},Dt=e=>Ve({b3:`${e.traceId}-${e.spanId}-${e.sampled?`1`:`0`}${Ce(e.parent,{onNone:()=>``,onSome:e=>`-${e.spanId}`})}`,traceparent:`00-${e.traceId}-${e.spanId}-${e.sampled?`01`:`00`}`}),Ot=`~effect/http/HttpClient`,kt=w(`effect/HttpClient`),At=E(2,(e,t)=>jt(n=>t(e.postprocess(n)),e.preprocess)),jt=(e,t)=>{let n=Object.create(Mt);return n.preprocess=t,n.postprocess=e,n.execute=function(n){return e(t(n))},n},Mt={[Ot]:Ot,pipe(){return u(this,arguments)},...j,toJSON(){return{_id:`effect/HttpClient`}},...Object.fromEntries(rt.map(([e,t])=>[t,function(t,n){return this.execute(dt(e)(t,n))}]))},Nt=e=>jt(n=>t(n,t=>ee(n=>{let r=zt.get(t),i=r??new AbortController,a=ot(t.url,t.urlParams,T(t.hash));if(fe(a))return c(new G({reason:new tt({request:t,cause:a.failure})}));let o=a.success;if(n.getRef(re)||n.getRef(Pt)(t)){let a=e(t,o,i.signal,n);return r?a:O(e=>ne(e(a),{onSuccess(e){return $.register(e,i),_(new Bt(e,i))},onFailure(e){return C(e)&&i.abort(),f(e)}}))}return s(n.getRef(Lt)(t),{kind:`client`},a=>{a.attribute(`http.request.method`,t.method),a.attribute(`server.address`,o.origin),o.port!==``&&a.attribute(`server.port`,+o.port),a.attribute(`url.full`,o.toString()),a.attribute(`url.path`,o.pathname),a.attribute(`url.scheme`,o.protocol.slice(0,-1));let s=o.search.slice(1);s!==``&&a.attribute(`url.query`,s);let c=n.getRef(Ke),l=n.getRef(Ft);for(let e in t.headers)l(e,`request`)&&a.attribute(`http.request.header.${e}`,Ge(e,c)?`<redacted>`:t.headers[e]);return t=n.getRef(It)?ht(t,Dt(a)):t,O(s=>s(e(t,o,i.signal,n)).pipe(ie(a,{captureStackTrace:!1}),ne({onSuccess:e=>{a.attribute(`http.response.status_code`,e.status);for(let t in e.headers)l(t,`response`)&&a.attribute(`http.response.header.${t}`,Ge(t,c)?`<redacted>`:e.headers[t]);return r?_(e):($.register(e,i),_(new Bt(e,i)))},onFailure(e){return!r&&C(e)&&i.abort(),f(e)}})))})})),_),Pt=h(`effect/http/HttpClient/TracerDisabledWhen`,{defaultValue:()=>Ee}),Ft=h(`effect/http/HttpClient/TracerHeaderFilter`,{defaultValue:()=>Se}),It=h(`effect/http/HttpClient/TracerPropagationEnabled`,{defaultValue:Se}),Lt=h(`effect/http/HttpClient/SpanNameGenerator`,{defaultValue:()=>e=>`http.client ${e.method}`}),Rt=e=>r(kt)(o(t=>p(e,e=>At(e,se(e=>ke(t,e)))))),$=(()=>{if(`FinalizationRegistry`in globalThis&&globalThis.FinalizationRegistry){let e=new FinalizationRegistry(e=>{e.abort()});return{register(t,n){e.register(t,n,t)},unregister(t){e.unregister(t)}}}let e=new Map;return{register(t,n){e.set(t,setTimeout(()=>n.abort(),5e3))},unregister(t){let n=e.get(t);n!==void 0&&(clearTimeout(n),e.delete(t))}}})(),zt=new WeakMap,Bt=class{original;controller;constructor(e,t){this.original=e,this.controller=t}[Q]=Q;[Z]=Z;applyInterrupt(e){return we(()=>($.unregister(this.original),le(e,()=>xe(()=>{this.controller.abort()}))))}get request(){return this.original.request}get url(){return this.original.url}get status(){return this.original.status}get headers(){return this.original.headers}get cookies(){return this.original.cookies}get remoteAddress(){return this.original.remoteAddress}get formData(){return this.applyInterrupt(this.original.formData)}get text(){return this.applyInterrupt(this.original.text)}get json(){return this.applyInterrupt(this.original.json)}get urlParamsBody(){return this.applyInterrupt(this.original.urlParamsBody)}get arrayBuffer(){return this.applyInterrupt(this.original.arrayBuffer)}get stream(){return Pe(()=>($.unregister(this.original),Ne(this.original.stream,xe(()=>{this.controller.abort()}))))}toJSON(){return this.original.toJSON()}[m](){return this.original[m]()}pipe(){return u(this,arguments)}},Vt=h(`effect/http/FetchHttpClient/Fetch`,{defaultValue:()=>globalThis.fetch}),Ht=class extends w()(`effect/http/FetchHttpClient/RequestInit`){},Ut=Rt(_(Nt((e,n,r,i)=>{let a=i.getRef(Vt),o=he(i.context,Ht)??{},s=o.headers?Ue(B(o.headers),e.headers):e.headers;s[`content-length`]&&(s=H(s,`content-length`));let c=t=>p(D({try:()=>a(n,{...o,method:e.method,headers:s,body:t,duplex:typeof ReadableStream<`u`&&t instanceof ReadableStream?`half`:void 0,signal:r}),catch:t=>new G({reason:new et({request:e,cause:t})})}),t=>Tt(e,t));switch(e.body._tag){case`Raw`:case`Uint8Array`:return c(e.body.body);case`FormData`:return c(e.body.formData);case`Stream`:return t(N(e.body.stream),c)}return c(void 0)}))),Wt=(e,t,n)=>ge(i(function*(){let r=yield*kt,i=dt(t.method)(new URL(e,window.location.href),{headers:t.headers}),a=yield*r.execute(t.body===void 0?i:St(i,t.body,`application/json`)),o=yield*N(a.stream);return yield*D({try:()=>n(new Response(o,{status:a.status,headers:a.headers})),catch:e=>M.is(e)?e:new M({message:String(e),status:a.status})})}).pipe(be,ae(Ut)),{signal:t.signal});export{Wt as request};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta content="width=device-width, initial-scale=1" name="viewport" />
|
|
6
|
+
<!-- The bootstrap code rides in the fragment; keep it out of any outbound request. -->
|
|
7
|
+
<meta content="no-referrer" name="referrer" />
|
|
8
|
+
<title>jcf — week</title>
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-N2vhoKYl.js"></script>
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-hePW80VL.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/UrlParams-ZN2s8OM_.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/Schema-DUFTUil2.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/api-BQCWhiKV.js">
|
|
14
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Ch0W9DhA.css">
|
|
15
|
+
</head>
|
|
16
|
+
<body>
|
|
17
|
+
<div id="root"></div>
|
|
18
|
+
</body>
|
|
19
|
+
</html>
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@knpkv/jcf-web` — a week of Jira and Clockify time, and the gaps a Coding Agent's sessions
|
|
3
|
+
* evidence, in a browser.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
export * as Api from "./server/Api.js";
|
|
8
|
+
export * as OwnerSession from "./server/OwnerSession.js";
|
|
9
|
+
export * as Server from "./server/Server.js";
|
|
10
|
+
export * as WeekPlan from "./server/WeekPlan.js";
|
|
11
|
+
export * as WeekPlans from "./server/WeekPlans.js";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@knpkv/jcf-web` — a week of Jira and Clockify time, and the gaps a Coding Agent's sessions
|
|
3
|
+
* evidence, in a browser.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
export * as Api from "./server/Api.js";
|
|
8
|
+
export * as OwnerSession from "./server/OwnerSession.js";
|
|
9
|
+
export * as Server from "./server/Server.js";
|
|
10
|
+
export * as WeekPlan from "./server/WeekPlan.js";
|
|
11
|
+
export * as WeekPlans from "./server/WeekPlans.js";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAA;AACtC,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAA;AACxD,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAChD,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA"}
|
package/dist/main.d.ts
ADDED
package/dist/main.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* `jcf-web` — start the week view and print the URL that gets you in.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import { NodeRuntime, NodeServices } from "@effect/platform-node";
|
|
8
|
+
import { Deferred, Effect, Fiber, Layer, Option } from "effect";
|
|
9
|
+
import * as Stdio from "effect/Stdio";
|
|
10
|
+
import * as Stream from "effect/Stream";
|
|
11
|
+
import { makeOwnerSessionSecrets, ownerSessionOrigin, ownerSessionUrl } from "./server/OwnerSession.js";
|
|
12
|
+
import { makeServer, Port, PublicOrigin } from "./server/Server.js";
|
|
13
|
+
const run = Effect.gen(function* () {
|
|
14
|
+
const stdio = yield* Stdio.Stdio;
|
|
15
|
+
const port = yield* Port.pipe(Effect.orDie);
|
|
16
|
+
const configuredOrigin = yield* PublicOrigin.pipe(Effect.orDie);
|
|
17
|
+
const authorityOrigin = ownerSessionOrigin("127.0.0.1", port);
|
|
18
|
+
// One origin decision: the URL that gets printed is the same origin every request is checked
|
|
19
|
+
// against, so a dev proxy in front of the server cannot be advertised and then rejected.
|
|
20
|
+
const security = yield* makeOwnerSessionSecrets(authorityOrigin, Option.getOrUndefined(configuredOrigin)).pipe(Effect.orDie);
|
|
21
|
+
const ready = yield* Deferred.make();
|
|
22
|
+
const server = yield* Layer.launch(makeServer({ port, ready, security })).pipe(Effect.forkChild({ startImmediately: true }));
|
|
23
|
+
yield* Effect.raceFirst(Deferred.await(ready), Fiber.join(server));
|
|
24
|
+
// On stdout and nowhere else: this line is the credential. It is not logged, so it cannot end up
|
|
25
|
+
// in a log file that outlives the process that minted it.
|
|
26
|
+
yield* Stream.make(`jcf week view: ${ownerSessionUrl(security.browserOrigin, security)}\n`).pipe(Stream.run(stdio.stdout()));
|
|
27
|
+
return yield* Fiber.join(server);
|
|
28
|
+
});
|
|
29
|
+
// Executable entry point: the host platform is provided once for this process.
|
|
30
|
+
// @effect-diagnostics-next-line strictEffectProvide:off
|
|
31
|
+
NodeRuntime.runMain(run.pipe(Effect.provide(NodeServices.layer)));
|
|
32
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/D,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AACvG,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEnE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAA;IAChC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC/D,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAE7D,6FAA6F;IAC7F,yFAAyF;IACzF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,uBAAuB,CAC7C,eAAe,EACf,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,CACxC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAEpB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAQ,CAAA;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAC5E,MAAM,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAC7C,CAAA;IACD,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAClE,iGAAiG;IACjG,0DAA0D;IAC1D,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,eAAe,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAC9F,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAC3B,CAAA;IACD,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAClC,CAAC,CAAC,CAAA;AAEF,+EAA+E;AAC/E,wDAAwD;AACxD,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA"}
|