gemi 0.4.64 → 0.4.66
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/dist/app/App.d.ts.map +1 -1
- package/dist/app/index.js +64 -64
- package/dist/auth/AuthenticationServiceProvider.d.ts.map +1 -1
- package/dist/bin/index.js +7 -6
- package/dist/chunk-02118fc60206588d.js +2 -0
- package/dist/chunk-03c8e645c994d40a.js +1 -1
- package/dist/chunk-0de36a7e51fbd11b.js +9 -0
- package/dist/chunk-0e125593337a68aa.js +18 -0
- package/dist/chunk-136896e8038083a1.js +2 -0
- package/dist/chunk-14e60554a2e78f4a.js +2 -0
- package/dist/chunk-1900e90c372bb1d6.js +1 -1
- package/dist/chunk-1b3b7c2c9ae041ca.js +2 -0
- package/dist/chunk-1d6e287ca9c14fef.js +1 -1
- package/dist/chunk-21b1f7ac5f75cd26.js +2 -0
- package/dist/chunk-25dd80c6d9144f89.js +1 -1
- package/dist/chunk-285299d784985340.js +3 -0
- package/dist/chunk-2a0e8565f874d787.js +18 -0
- package/dist/chunk-2a5b4dfab2e26e21.js +1 -0
- package/dist/chunk-30f854fb2ba73268.js +2 -0
- package/dist/chunk-361f806684fe532e.js +6 -0
- package/dist/chunk-3f1eaa4b49aa9a15.js +3 -0
- package/dist/chunk-42aa6e3d42149620.js +1 -1
- package/dist/chunk-432bbd1d38ff3b52.js +2 -0
- package/dist/chunk-543013123141745c.js +1 -1
- package/dist/chunk-5fd67245740e3908.js +1 -1
- package/dist/chunk-65cd4d128b79bd93.js +2 -0
- package/dist/chunk-699957e6eb705a81.js +2 -0
- package/dist/chunk-6c345dba15e1c3f2.js +2 -0
- package/dist/chunk-6f78f2a54491595d.js +2 -0
- package/dist/chunk-733688c7851fffd1.js +2 -0
- package/dist/chunk-7898dd7609f163e8.js +2 -0
- package/dist/chunk-78ab7bcbe6104c5f.js +2 -0
- package/dist/chunk-7dfb17814922ade0.js +2 -0
- package/dist/chunk-82f72dfc6e27be04.js +1 -0
- package/dist/chunk-8884e59809021f5f.js +2 -0
- package/dist/chunk-8b40d6a498f8bf81.js +2 -0
- package/dist/chunk-8c8c8fd3646b76a1.js +2 -0
- package/dist/chunk-a004fce37a0f5a65.js +2 -0
- package/dist/chunk-a14516ac5e6f78aa.js +1 -0
- package/dist/chunk-a1efc60864e65ef2.js +1 -0
- package/dist/chunk-a35eb04f0c7c9944.js +2 -0
- package/dist/chunk-a4b231bf6d911e01.js +2 -0
- package/dist/chunk-a885dc5561caa8e0.js +3 -0
- package/dist/chunk-b13cfa16a8a18324.js +3 -0
- package/dist/chunk-b3e27ec4b56a20ac.js +2 -0
- package/dist/chunk-b7c4dc1136fcaeb7.js +2 -0
- package/dist/chunk-bdc34785363e3f34.js +2 -0
- package/dist/chunk-bffb8d677e1424a9.js +6 -0
- package/dist/chunk-c609d06153ed09ce.js +1 -1
- package/dist/chunk-c6d988f5928a4df1.js +1 -1
- package/dist/chunk-c7e2acfd5087fb30.js +2 -0
- package/dist/chunk-cf7dde2ab1be3a3c.js +1 -0
- package/dist/chunk-cf8b1c7a4e9fc32d.js +18 -0
- package/dist/chunk-d03b02d5f8128f13.js +2 -0
- package/dist/chunk-d27588325ae2c0f3.js +2 -0
- package/dist/chunk-d37757ffee07b05f.js +6 -0
- package/dist/chunk-d3b4a3c778c23705.js +2 -0
- package/dist/chunk-d3e039d010842a3f.js +2 -0
- package/dist/chunk-d7c78cd1ab7dc7ed.js +2 -0
- package/dist/chunk-d850d83873a89e2b.js +18 -0
- package/dist/chunk-d93a6531661d56b5.js +9 -0
- package/dist/chunk-d950bbcb684a11ef.js +2 -0
- package/dist/chunk-dac0e2ef13060d02.js +1 -0
- package/dist/chunk-dac9276e506d125d.js +2 -0
- package/dist/chunk-db2270bbca7854fe.js +2 -0
- package/dist/chunk-e06fbc8e70a88f07.js +2 -0
- package/dist/chunk-e8159722d49ad044.js +1 -1
- package/dist/chunk-ed589d4e4c575de7.js +1 -1
- package/dist/chunk-eea1d6f60a6875d5.js +2 -0
- package/dist/chunk-eeb3b193701aec43.js +1 -0
- package/dist/chunk-f1dfc76a05462dde.js +2 -0
- package/dist/chunk-f25e3644c98f64a7.js +2 -0
- package/dist/chunk-f404a785b581d029.js +2 -0
- package/dist/chunk-f5a531a49e7591bd.js +2 -0
- package/dist/chunk-f69bcbd7998553cb.js +2 -0
- package/dist/chunk-f8ad65b3a07ce3c4.js +6 -0
- package/dist/chunk-ff1bbce70d726bc6.js +9 -0
- package/dist/client/ClientRouterContext.d.ts +0 -1
- package/dist/client/ClientRouterContext.d.ts.map +1 -1
- package/dist/client/HttpReload.d.ts +2 -0
- package/dist/client/HttpReload.d.ts.map +1 -0
- package/dist/client/Mutation.d.ts +5 -5
- package/dist/client/Mutation.d.ts.map +1 -1
- package/dist/client/ProgressManager.d.ts +1 -1
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +186 -158
- package/dist/client/types.d.ts +7 -6
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/useMutation.d.ts +11 -2
- package/dist/client/useMutation.d.ts.map +1 -1
- package/dist/client/useNavigate.d.ts.map +1 -1
- package/dist/client/useParams.d.ts +2 -0
- package/dist/client/useParams.d.ts.map +1 -0
- package/dist/facades/Redirect.d.ts +2 -1
- package/dist/facades/Redirect.d.ts.map +1 -1
- package/dist/facades/index.js +1 -1
- package/dist/http/ApiRouter.d.ts.map +1 -1
- package/dist/http/HttpRequest.d.ts +1 -1
- package/dist/http/HttpRequest.d.ts.map +1 -1
- package/dist/http/I18nServiceContainer.d.ts +2 -5
- package/dist/http/I18nServiceContainer.d.ts.map +1 -1
- package/dist/http/ViewRouter.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/kernel/index.js +2 -2
- package/dist/server/index.js +3 -3
- package/dist/storage/index.js +1 -10
- package/dist/utils/type.d.ts +1 -1
- package/dist/utils/type.d.ts.map +1 -1
- package/dist/vite/index-M61-SALR.mjs +20030 -0
- package/dist/vite/index.mjs +4 -0
- package/dist/vite/typescript-puyfmcra.mjs +14089 -0
- package/package.json +7 -10
- package/dist/vite/index.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{y as J} from"./chunk-7ce930fe69575c87.js";import"./chunk-14e60554a2e78f4a.js";import{ob as cc,pb as z} from"./chunk-cf7dde2ab1be3a3c.js";import{qb as _} from"./chunk-8b40d6a498f8bf81.js";import"./chunk-dac0e2ef13060d02.js";var v=J(_(),1);import{parse as o} from"url";var K=J(_(),1);import{Buffer as a} from"buffer";import{request as n} from"http";function f(c){return new Promise((I,x)=>{const T=n({method:"GET",...c,hostname:c.hostname?.replace(/^\[(.+)\]$/,"$1")});T.on("error",(N)=>{x(Object.assign(new K.ProviderError("Unable to connect to instance metadata service"),N)),T.destroy()}),T.on("timeout",()=>{x(new K.ProviderError("TimeoutError from instance metadata service")),T.destroy()}),T.on("response",(N)=>{const{statusCode:O=400}=N;if(O<200||300<=O)x(Object.assign(new K.ProviderError("Error response received from instance metadata service"),{statusCode:O})),T.destroy();const u=[];N.on("data",(y)=>{u.push(y)}),N.on("end",()=>{I(a.concat(u)),T.destroy()})}),T.end()})}var D=(c)=>Boolean(c)&&typeof c==="object"&&typeof c.AccessKeyId==="string"&&typeof c.SecretAccessKey==="string"&&typeof c.Token==="string"&&typeof c.Expiration==="string",G=(c)=>({accessKeyId:c.AccessKeyId,secretAccessKey:c.SecretAccessKey,sessionToken:c.Token,expiration:new Date(c.Expiration),...c.AccountId&&{accountId:c.AccountId}});var uc=1000,Ec=0,Q=({maxRetries:c=0,timeout:I=1000})=>({maxRetries:c,timeout:I});var m=(c,I)=>{let x=c();for(let T=0;T<I;T++)x=x.catch(c);return x};var Z="AWS_CONTAINER_CREDENTIALS_FULL_URI",L="AWS_CONTAINER_CREDENTIALS_RELATIVE_URI",B="AWS_CONTAINER_AUTHORIZATION_TOKEN",Kc=(c={})=>{const{timeout:I,maxRetries:x}=Q(c);return()=>m(async()=>{const T=await d({logger:c.logger}),N=JSON.parse(await s(I,T));if(!D(N))throw new v.CredentialsProviderError("Invalid response received from instance metadata service.",{logger:c.logger});return G(N)},x)},s=async(c,I)=>{if(process.env[B])I.headers={...I.headers,Authorization:process.env[B]};return(await f({...I,timeout:c})).toString()},g="169.254.170.2",l={localhost:!0,"127.0.0.1":!0},r={"http:":!0,"https:":!0},d=async({logger:c})=>{if(process.env[L])return{hostname:g,path:process.env[L]};if(process.env[Z]){const I=o(process.env[Z]);if(!I.hostname||!(I.hostname in l))throw new v.CredentialsProviderError(`${I.hostname} is not a valid container metadata service hostname`,{tryNextLink:!1,logger:c});if(!I.protocol||!(I.protocol in r))throw new v.CredentialsProviderError(`${I.protocol} is not a valid container metadata service protocol`,{tryNextLink:!1,logger:c});return{...I,port:I.port?parseInt(I.port,10):void 0}}throw new v.CredentialsProviderError("The container metadata credential provider cannot be used unless"+` the ${L} or ${Z} environment`+" variable is set",{tryNextLink:!1,logger:c})};var q=J(_(),1);var U=J(_(),1);class X extends U.CredentialsProviderError{constructor(c,I=!0){super(c,I);this.tryNextLink=I,this.name="InstanceMetadataV1FallbackError",Object.setPrototypeOf(this,X.prototype)}}var P=J(cc(),1);var j;(function(c){c.IPv4="http://169.254.169.254",c.IPv6="http://[fd00:ec2::254]"})(j||(j={}));var t={environmentVariableSelector:(c)=>c["AWS_EC2_METADATA_SERVICE_ENDPOINT"],configFileSelector:(c)=>c["ec2_metadata_service_endpoint"],default:void 0};var S;(function(c){c.IPv4="IPv4",c.IPv6="IPv6"})(S||(S={}));var e="AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE",i="ec2_metadata_service_endpoint_mode",F={environmentVariableSelector:(c)=>c[e],configFileSelector:(c)=>c[i],default:S.IPv4};var W=async()=>P.parseUrl(await Ic()||await Tc()),Ic=async()=>z(t)(),Tc=async()=>{const c=await z(F)();switch(c){case S.IPv4:return j.IPv4;case S.IPv6:return j.IPv6;default:throw new Error(`Unsupported endpoint mode: ${c}.`+` Select from ${Object.values(S)}`)}};var b=(c,I)=>{const x=300+Math.floor(Math.random()*300),T=new Date(Date.now()+x*1000);I.warn("Attempting credential expiration extension due to a credential service availability issue. A refresh of these "+`credentials will be attempted after ${new Date(T)}.\nFor more information, please visit: `+"https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html");const N=c.originalExpiration??c.expiration;return{...c,...N?{originalExpiration:N}:{},expiration:T}};var V=(c,I={})=>{const x=I?.logger||console;let T;return async()=>{let N;try{if(N=await c(),N.expiration&&N.expiration.getTime()<Date.now())N=b(N,x)}catch(O){if(T)x.warn("Credential renew failed: ",O),N=b(T,x);else throw O}return T=N,N}};var k="/latest/meta-data/iam/security-credentials/",Nc="/latest/api/token",H="AWS_EC2_METADATA_V1_DISABLED",R="ec2_metadata_v1_disabled",M="x-aws-ec2-metadata-token",oc=(c={})=>V(xc(c),{logger:c.logger}),xc=(c={})=>{let I=!1;const{logger:x,profile:T}=c,{timeout:N,maxRetries:O}=Q(c),u=async(y,E)=>{if(I||E.headers?.[M]==null){let w=!1,h=!1;const C=await z({environmentVariableSelector:(Y)=>{const $=Y[H];if(h=!!$&&$!=="false",$===void 0)throw new q.CredentialsProviderError(`${H} not set in env, checking config file next.`,{logger:c.logger});return h},configFileSelector:(Y)=>{const $=Y[R];return w=!!$&&$!=="false",w},default:!1},{profile:T})();if(c.ec2MetadataV1Disabled||C){const Y=[];if(c.ec2MetadataV1Disabled)Y.push("credential provider initialization (runtime option ec2MetadataV1Disabled)");if(w)Y.push(`config file profile (${R})`);if(h)Y.push(`process environment variable (${H})`);throw new X(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${Y.join(", ")}].`)}}const p=(await m(async()=>{let w;try{w=await yc(E)}catch(h){if(h.statusCode===401)I=!1;throw h}return w},y)).trim();return m(async()=>{let w;try{w=await wc(p,E,c)}catch(h){if(h.statusCode===401)I=!1;throw h}return w},y)};return async()=>{const y=await W();if(I)return x?.debug("AWS SDK Instance Metadata","using v1 fallback (no token fetch)"),u(O,{...y,timeout:N});else{let E;try{E=(await Oc({...y,timeout:N})).toString()}catch(A){if(A?.statusCode===400)throw Object.assign(A,{message:"EC2 Metadata token request returned error"});else if(A.message==="TimeoutError"||[403,404,405].includes(A.statusCode))I=!0;return x?.debug("AWS SDK Instance Metadata","using v1 fallback (initial)"),u(O,{...y,timeout:N})}return u(O,{...y,headers:{[M]:E},timeout:N})}}},Oc=async(c)=>f({...c,path:Nc,method:"PUT",headers:{"x-aws-ec2-metadata-token-ttl-seconds":"21600"}}),yc=async(c)=>(await f({...c,path:k})).toString(),wc=async(c,I,x)=>{const T=JSON.parse((await f({...I,path:k+c})).toString());if(!D(T))throw new q.CredentialsProviderError("Invalid response received from instance metadata service.",{logger:x.logger});return G(T)};export{Q as providerConfigFromInit,f as httpRequest,W as getInstanceMetadataEndpoint,oc as fromInstanceMetadata,Kc as fromContainerMetadata,j as Endpoint,L as ENV_CMDS_RELATIVE_URI,Z as ENV_CMDS_FULL_URI,B as ENV_CMDS_AUTH_TOKEN,uc as DEFAULT_TIMEOUT,Ec as DEFAULT_MAX_RETRIES};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import"./chunk-7ce930fe69575c87.js";import"./chunk-65cd4d128b79bd93.js";import{ob as v,pb as B} from"./chunk-30f854fb2ba73268.js";import"./chunk-a1efc60864e65ef2.js";import{Ab as y,zb as z} from"./chunk-a14516ac5e6f78aa.js";import{parse as p} from"url";import{Buffer as M} from"buffer";import{request as k} from"http";function u(c){return new Promise((I,x)=>{const T=k({method:"GET",...c,hostname:c.hostname?.replace(/^\[(.+)\]$/,"$1")});T.on("error",(N)=>{x(Object.assign(new z("Unable to connect to instance metadata service"),N)),T.destroy()}),T.on("timeout",()=>{x(new z("TimeoutError from instance metadata service")),T.destroy()}),T.on("response",(N)=>{const{statusCode:O=400}=N;if(O<200||300<=O)x(Object.assign(new z("Error response received from instance metadata service"),{statusCode:O})),T.destroy();const E=[];N.on("data",(w)=>{E.push(w)}),N.on("end",()=>{I(M.concat(E)),T.destroy()})}),T.end()})}var K=(c)=>Boolean(c)&&typeof c==="object"&&typeof c.AccessKeyId==="string"&&typeof c.SecretAccessKey==="string"&&typeof c.Token==="string"&&typeof c.Expiration==="string",_=(c)=>({accessKeyId:c.AccessKeyId,secretAccessKey:c.SecretAccessKey,sessionToken:c.Token,expiration:new Date(c.Expiration),...c.AccountId&&{accountId:c.AccountId}});var hc=1000,Yc=0,D=({maxRetries:c=0,timeout:I=1000})=>({maxRetries:c,timeout:I});var m=(c,I)=>{let x=c();for(let T=0;T<I;T++)x=x.catch(c);return x};var Q="AWS_CONTAINER_CREDENTIALS_FULL_URI",X="AWS_CONTAINER_CREDENTIALS_RELATIVE_URI",b="AWS_CONTAINER_AUTHORIZATION_TOKEN",mc=(c={})=>{const{timeout:I,maxRetries:x}=D(c);return()=>m(async()=>{const T=await s({logger:c.logger}),N=JSON.parse(await C(I,T));if(!K(N))throw new y("Invalid response received from instance metadata service.",{logger:c.logger});return _(N)},x)},C=async(c,I)=>{if(process.env[b])I.headers={...I.headers,Authorization:process.env[b]};return(await u({...I,timeout:c})).toString()},a="169.254.170.2",n={localhost:!0,"127.0.0.1":!0},o={"http:":!0,"https:":!0},s=async({logger:c})=>{if(process.env[X])return{hostname:a,path:process.env[X]};if(process.env[Q]){const I=p(process.env[Q]);if(!I.hostname||!(I.hostname in n))throw new y(`${I.hostname} is not a valid container metadata service hostname`,{tryNextLink:!1,logger:c});if(!I.protocol||!(I.protocol in o))throw new y(`${I.protocol} is not a valid container metadata service protocol`,{tryNextLink:!1,logger:c});return{...I,port:I.port?parseInt(I.port,10):void 0}}throw new y("The container metadata credential provider cannot be used unless"+` the ${X} or ${Q} environment`+" variable is set",{tryNextLink:!1,logger:c})};class G extends y{constructor(c,I=!0){super(c,I);this.tryNextLink=I,this.name="InstanceMetadataV1FallbackError",Object.setPrototypeOf(this,G.prototype)}}var A;(function(c){c.IPv4="http://169.254.169.254",c.IPv6="http://[fd00:ec2::254]"})(A||(A={}));var H={environmentVariableSelector:(c)=>c["AWS_EC2_METADATA_SERVICE_ENDPOINT"],configFileSelector:(c)=>c["ec2_metadata_service_endpoint"],default:void 0};var f;(function(c){c.IPv4="IPv4",c.IPv6="IPv6"})(f||(f={}));var g="AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE",l="ec2_metadata_service_endpoint_mode",q={environmentVariableSelector:(c)=>c[g],configFileSelector:(c)=>c[l],default:f.IPv4};var Z=async()=>B(await r()||await d()),r=async()=>v(H)(),d=async()=>{const c=await v(q)();switch(c){case f.IPv4:return A.IPv4;case f.IPv6:return A.IPv6;default:throw new Error(`Unsupported endpoint mode: ${c}.`+` Select from ${Object.values(f)}`)}};var L=(c,I)=>{const x=300+Math.floor(Math.random()*300),T=new Date(Date.now()+x*1000);I.warn("Attempting credential expiration extension due to a credential service availability issue. A refresh of these "+`credentials will be attempted after ${new Date(T)}.\nFor more information, please visit: `+"https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html");const N=c.originalExpiration??c.expiration;return{...c,...N?{originalExpiration:N}:{},expiration:T}};var U=(c,I={})=>{const x=I?.logger||console;let T;return async()=>{let N;try{if(N=await c(),N.expiration&&N.expiration.getTime()<Date.now())N=L(N,x)}catch(O){if(T)x.warn("Credential renew failed: ",O),N=L(T,x);else throw O}return T=N,N}};var P="/latest/meta-data/iam/security-credentials/",e="/latest/api/token",W="AWS_EC2_METADATA_V1_DISABLED",t="ec2_metadata_v1_disabled",F="x-aws-ec2-metadata-token",oc=(c={})=>U(i(c),{logger:c.logger}),i=(c={})=>{let I=!1;const{logger:x,profile:T}=c,{timeout:N,maxRetries:O}=D(c),E=async(w,$)=>{if(I||$.headers?.[F]==null){let h=!1,Y=!1;const R=await v({environmentVariableSelector:(S)=>{const j=S[W];if(Y=!!j&&j!=="false",j===void 0)throw new y(`${W} not set in env, checking config file next.`,{logger:c.logger});return Y},configFileSelector:(S)=>{const j=S[t];return h=!!j&&j!=="false",h},default:!1},{profile:T})();if(c.ec2MetadataV1Disabled||R){const S=[];if(c.ec2MetadataV1Disabled)S.push("credential provider initialization (runtime option ec2MetadataV1Disabled)");if(h)S.push(`config file profile (${t})`);if(Y)S.push(`process environment variable (${W})`);throw new G(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${S.join(", ")}].`)}}const V=(await m(async()=>{let h;try{h=await Ic($)}catch(Y){if(Y.statusCode===401)I=!1;throw Y}return h},w)).trim();return m(async()=>{let h;try{h=await Tc(V,$,c)}catch(Y){if(Y.statusCode===401)I=!1;throw Y}return h},w)};return async()=>{const w=await Z();if(I)return x?.debug("AWS SDK Instance Metadata","using v1 fallback (no token fetch)"),E(O,{...w,timeout:N});else{let $;try{$=(await cc({...w,timeout:N})).toString()}catch(J){if(J?.statusCode===400)throw Object.assign(J,{message:"EC2 Metadata token request returned error"});else if(J.message==="TimeoutError"||[403,404,405].includes(J.statusCode))I=!0;return x?.debug("AWS SDK Instance Metadata","using v1 fallback (initial)"),E(O,{...w,timeout:N})}return E(O,{...w,headers:{[F]:$},timeout:N})}}},cc=async(c)=>u({...c,path:e,method:"PUT",headers:{"x-aws-ec2-metadata-token-ttl-seconds":"21600"}}),Ic=async(c)=>(await u({...c,path:P})).toString(),Tc=async(c,I,x)=>{const T=JSON.parse((await u({...I,path:P+c})).toString());if(!K(T))throw new y("Invalid response received from instance metadata service.",{logger:x.logger});return _(T)};export{D as providerConfigFromInit,u as httpRequest,Z as getInstanceMetadataEndpoint,oc as fromInstanceMetadata,mc as fromContainerMetadata,A as Endpoint,X as ENV_CMDS_RELATIVE_URI,Q as ENV_CMDS_FULL_URI,b as ENV_CMDS_AUTH_TOKEN,hc as DEFAULT_TIMEOUT,Yc as DEFAULT_MAX_RETRIES};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import"./chunk-7ce930fe69575c87.js";import"./chunk-14e60554a2e78f4a.js";import{ob as v,pb as B} from"./chunk-d950bbcb684a11ef.js";import{qb as z,rb as y} from"./chunk-2a5b4dfab2e26e21.js";import"./chunk-eeb3b193701aec43.js";import{parse as p} from"url";import{Buffer as M} from"buffer";import{request as k} from"http";function u(c){return new Promise((I,x)=>{const T=k({method:"GET",...c,hostname:c.hostname?.replace(/^\[(.+)\]$/,"$1")});T.on("error",(N)=>{x(Object.assign(new z("Unable to connect to instance metadata service"),N)),T.destroy()}),T.on("timeout",()=>{x(new z("TimeoutError from instance metadata service")),T.destroy()}),T.on("response",(N)=>{const{statusCode:O=400}=N;if(O<200||300<=O)x(Object.assign(new z("Error response received from instance metadata service"),{statusCode:O})),T.destroy();const E=[];N.on("data",(w)=>{E.push(w)}),N.on("end",()=>{I(M.concat(E)),T.destroy()})}),T.end()})}var K=(c)=>Boolean(c)&&typeof c==="object"&&typeof c.AccessKeyId==="string"&&typeof c.SecretAccessKey==="string"&&typeof c.Token==="string"&&typeof c.Expiration==="string",_=(c)=>({accessKeyId:c.AccessKeyId,secretAccessKey:c.SecretAccessKey,sessionToken:c.Token,expiration:new Date(c.Expiration),...c.AccountId&&{accountId:c.AccountId}});var hc=1000,Yc=0,D=({maxRetries:c=0,timeout:I=1000})=>({maxRetries:c,timeout:I});var m=(c,I)=>{let x=c();for(let T=0;T<I;T++)x=x.catch(c);return x};var Q="AWS_CONTAINER_CREDENTIALS_FULL_URI",X="AWS_CONTAINER_CREDENTIALS_RELATIVE_URI",b="AWS_CONTAINER_AUTHORIZATION_TOKEN",mc=(c={})=>{const{timeout:I,maxRetries:x}=D(c);return()=>m(async()=>{const T=await s({logger:c.logger}),N=JSON.parse(await C(I,T));if(!K(N))throw new y("Invalid response received from instance metadata service.",{logger:c.logger});return _(N)},x)},C=async(c,I)=>{if(process.env[b])I.headers={...I.headers,Authorization:process.env[b]};return(await u({...I,timeout:c})).toString()},a="169.254.170.2",n={localhost:!0,"127.0.0.1":!0},o={"http:":!0,"https:":!0},s=async({logger:c})=>{if(process.env[X])return{hostname:a,path:process.env[X]};if(process.env[Q]){const I=p(process.env[Q]);if(!I.hostname||!(I.hostname in n))throw new y(`${I.hostname} is not a valid container metadata service hostname`,{tryNextLink:!1,logger:c});if(!I.protocol||!(I.protocol in o))throw new y(`${I.protocol} is not a valid container metadata service protocol`,{tryNextLink:!1,logger:c});return{...I,port:I.port?parseInt(I.port,10):void 0}}throw new y("The container metadata credential provider cannot be used unless"+` the ${X} or ${Q} environment`+" variable is set",{tryNextLink:!1,logger:c})};class G extends y{constructor(c,I=!0){super(c,I);this.tryNextLink=I,this.name="InstanceMetadataV1FallbackError",Object.setPrototypeOf(this,G.prototype)}}var A;(function(c){c.IPv4="http://169.254.169.254",c.IPv6="http://[fd00:ec2::254]"})(A||(A={}));var H={environmentVariableSelector:(c)=>c["AWS_EC2_METADATA_SERVICE_ENDPOINT"],configFileSelector:(c)=>c["ec2_metadata_service_endpoint"],default:void 0};var f;(function(c){c.IPv4="IPv4",c.IPv6="IPv6"})(f||(f={}));var g="AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE",l="ec2_metadata_service_endpoint_mode",q={environmentVariableSelector:(c)=>c[g],configFileSelector:(c)=>c[l],default:f.IPv4};var Z=async()=>B(await r()||await d()),r=async()=>v(H)(),d=async()=>{const c=await v(q)();switch(c){case f.IPv4:return A.IPv4;case f.IPv6:return A.IPv6;default:throw new Error(`Unsupported endpoint mode: ${c}.`+` Select from ${Object.values(f)}`)}};var L=(c,I)=>{const x=300+Math.floor(Math.random()*300),T=new Date(Date.now()+x*1000);I.warn("Attempting credential expiration extension due to a credential service availability issue. A refresh of these "+`credentials will be attempted after ${new Date(T)}.\nFor more information, please visit: `+"https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html");const N=c.originalExpiration??c.expiration;return{...c,...N?{originalExpiration:N}:{},expiration:T}};var U=(c,I={})=>{const x=I?.logger||console;let T;return async()=>{let N;try{if(N=await c(),N.expiration&&N.expiration.getTime()<Date.now())N=L(N,x)}catch(O){if(T)x.warn("Credential renew failed: ",O),N=L(T,x);else throw O}return T=N,N}};var P="/latest/meta-data/iam/security-credentials/",e="/latest/api/token",W="AWS_EC2_METADATA_V1_DISABLED",t="ec2_metadata_v1_disabled",F="x-aws-ec2-metadata-token",oc=(c={})=>U(i(c),{logger:c.logger}),i=(c={})=>{let I=!1;const{logger:x,profile:T}=c,{timeout:N,maxRetries:O}=D(c),E=async(w,$)=>{if(I||$.headers?.[F]==null){let h=!1,Y=!1;const R=await v({environmentVariableSelector:(S)=>{const j=S[W];if(Y=!!j&&j!=="false",j===void 0)throw new y(`${W} not set in env, checking config file next.`,{logger:c.logger});return Y},configFileSelector:(S)=>{const j=S[t];return h=!!j&&j!=="false",h},default:!1},{profile:T})();if(c.ec2MetadataV1Disabled||R){const S=[];if(c.ec2MetadataV1Disabled)S.push("credential provider initialization (runtime option ec2MetadataV1Disabled)");if(h)S.push(`config file profile (${t})`);if(Y)S.push(`process environment variable (${W})`);throw new G(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${S.join(", ")}].`)}}const V=(await m(async()=>{let h;try{h=await Ic($)}catch(Y){if(Y.statusCode===401)I=!1;throw Y}return h},w)).trim();return m(async()=>{let h;try{h=await Tc(V,$,c)}catch(Y){if(Y.statusCode===401)I=!1;throw Y}return h},w)};return async()=>{const w=await Z();if(I)return x?.debug("AWS SDK Instance Metadata","using v1 fallback (no token fetch)"),E(O,{...w,timeout:N});else{let $;try{$=(await cc({...w,timeout:N})).toString()}catch(J){if(J?.statusCode===400)throw Object.assign(J,{message:"EC2 Metadata token request returned error"});else if(J.message==="TimeoutError"||[403,404,405].includes(J.statusCode))I=!0;return x?.debug("AWS SDK Instance Metadata","using v1 fallback (initial)"),E(O,{...w,timeout:N})}return E(O,{...w,headers:{[F]:$},timeout:N})}}},cc=async(c)=>u({...c,path:e,method:"PUT",headers:{"x-aws-ec2-metadata-token-ttl-seconds":"21600"}}),Ic=async(c)=>(await u({...c,path:P})).toString(),Tc=async(c,I,x)=>{const T=JSON.parse((await u({...I,path:P+c})).toString());if(!K(T))throw new y("Invalid response received from instance metadata service.",{logger:x.logger});return _(T)};export{D as providerConfigFromInit,u as httpRequest,Z as getInstanceMetadataEndpoint,oc as fromInstanceMetadata,mc as fromContainerMetadata,A as Endpoint,X as ENV_CMDS_RELATIVE_URI,Q as ENV_CMDS_FULL_URI,b as ENV_CMDS_AUTH_TOKEN,hc as DEFAULT_TIMEOUT,Yc as DEFAULT_MAX_RETRIES};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import"./chunk-7ce930fe69575c87.js";import{H as i,V as I,Z as y,na as C} from"./chunk-b13cfa16a8a18324.js";import"./chunk-c7e2acfd5087fb30.js";import{pb as n} from"./chunk-2db6c9bb69bb27aa.js";import u from"fs/promises";var T="169.254.170.2",x="169.254.170.23",P="[fd00:ec2::23]",d=(e,c)=>{if(e.protocol==="https:")return;if(e.hostname===T||e.hostname===x||e.hostname===P)return;if(e.hostname.includes("[")){if(e.hostname==="[::1]"||e.hostname==="[0000:0000:0000:0000:0000:0000:0000:0001]")return}else{if(e.hostname==="localhost")return;const a=e.hostname.split("."),r=(t)=>{const s=parseInt(t,10);return 0<=s&&s<=255};if(a[0]==="127"&&r(a[1])&&r(a[2])&&r(a[3])&&a.length===4)return}throw new n(`URL not accepted. It must either be HTTPS or match one of the following:
|
|
3
|
+
- loopback CIDR 127.0.0.0/8 or [::1/128]
|
|
4
|
+
- ECS container host 169.254.170.2
|
|
5
|
+
- EKS container host 169.254.170.23 or [fd00:ec2::23]`,{logger:c})};function S(e){return new i({protocol:e.protocol,hostname:e.hostname,port:Number(e.port),path:e.pathname,query:Array.from(e.searchParams.entries()).reduce((c,[a,r])=>{return c[a]=r,c},{}),fragment:e.hash})}async function g(e,c){const r=await y(e.body).transformToString();if(e.statusCode===200){const t=JSON.parse(r);if(typeof t.AccessKeyId!=="string"||typeof t.SecretAccessKey!=="string"||typeof t.Token!=="string"||typeof t.Expiration!=="string")throw new n("HTTP credential provider response not of the required format, an object matching: { AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }",{logger:c});return{accessKeyId:t.AccessKeyId,secretAccessKey:t.SecretAccessKey,sessionToken:t.Token,expiration:C(t.Expiration)}}if(e.statusCode>=400&&e.statusCode<500){let t={};try{t=JSON.parse(r)}catch(s){}throw Object.assign(new n(`Server responded with status: ${e.statusCode}`,{logger:c}),{Code:t.Code,Message:t.Message})}throw new n(`Server responded with status: ${e.statusCode}`,{logger:c})}var w=(e,c,a)=>{return async()=>{for(let r=0;r<c;++r)try{return await e()}catch(t){await new Promise((s)=>setTimeout(s,a))}return await e()}};var E="AWS_CONTAINER_CREDENTIALS_RELATIVE_URI",R="http://169.254.170.2",p="AWS_CONTAINER_CREDENTIALS_FULL_URI",A="AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE",O="AWS_CONTAINER_AUTHORIZATION_TOKEN",b=(e={})=>{e.logger?.debug("@aws-sdk/credential-provider-http - fromHttp");let c;const a=e.awsContainerCredentialsRelativeUri??process.env[E],r=e.awsContainerCredentialsFullUri??process.env[p],t=e.awsContainerAuthorizationToken??process.env[O],s=e.awsContainerAuthorizationTokenFile??process.env[A],m=e.logger?.constructor?.name==="NoOpLogger"||!e.logger?console.warn:e.logger.warn;if(a&&r)m("@aws-sdk/credential-provider-http: you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri."),m("awsContainerCredentialsFullUri will take precedence.");if(t&&s)m("@aws-sdk/credential-provider-http: you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile."),m("awsContainerAuthorizationToken will take precedence.");if(r)c=r;else if(a)c=`${R}${a}`;else throw new n(`No HTTP credential provider host provided.
|
|
6
|
+
Set AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`,{logger:e.logger});const h=new URL(c);d(h,e.logger);const K=new I({requestTimeout:e.timeout??1000,connectionTimeout:e.timeout??1000});return w(async()=>{const o=S(h);if(t)o.headers.Authorization=t;else if(s)o.headers.Authorization=(await u.readFile(s)).toString();try{const f=await K.handle(o);return g(f.response)}catch(f){throw new n(String(f),{logger:e.logger})}},e.maxRetries??3,e.timeout??1000)};export{b as fromHttp};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{t as $,u as w,v as z} from"./chunk-02118fc60206588d.js";import{rb as q,tb as G,vb as Y} from"./chunk-2a5b4dfab2e26e21.js";import{xb as Z} from"./chunk-eeb3b193701aec43.js";var H="AWS_EC2_METADATA_DISABLED",Q=async(b)=>{const{ENV_CMDS_FULL_URI:j,ENV_CMDS_RELATIVE_URI:x,fromContainerMetadata:y,fromInstanceMetadata:J}=await import("./chunk-f69bcbd7998553cb.js");if(process.env[x]||process.env[j]){b.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata");const{fromHttp:K}=await import("./chunk-361f806684fe532e.js");return G(K(b),y(b))}if(process.env[H])return async()=>{throw new q("EC2 Instance Metadata Service access disabled",{logger:b.logger})};return b.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata"),J(b)};var X=!1,W=(b={})=>Y(G(async()=>{if(b.profile??process.env[Z]){if(process.env[$]&&process.env[w]){if(!X)(b.logger?.warn&&b.logger?.constructor?.name!=="NoOpLogger"?b.logger.warn:console.warn)(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING:
|
|
2
|
+
Multiple credential sources detected:
|
|
3
|
+
Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set.
|
|
4
|
+
This SDK will proceed with the AWS_PROFILE value.
|
|
5
|
+
|
|
6
|
+
However, a future version may change this behavior to prefer the ENV static credentials.
|
|
7
|
+
Please ensure that your environment only sets either the AWS_PROFILE or the
|
|
8
|
+
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair.
|
|
9
|
+
`),X=!0}throw new q("AWS_PROFILE is set, skipping fromEnv provider.",{logger:b.logger,tryNextLink:!0})}return b.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromEnv"),z(b)()},async()=>{b.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromSSO");const{ssoStartUrl:j,ssoAccountId:x,ssoRegion:y,ssoRoleName:J,ssoSession:K}=b;if(!j&&!x&&!y&&!J&&!K)throw new q("Skipping SSO provider in default chain (inputs do not include SSO fields).",{logger:b.logger});const{fromSSO:B}=await import("./chunk-7dfb17814922ade0.js");return B(b)()},async()=>{b.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni");const{fromIni:j}=await import("./chunk-6c345dba15e1c3f2.js");return j(b)()},async()=>{b.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess");const{fromProcess:j}=await import("./chunk-8c8c8fd3646b76a1.js");return j(b)()},async()=>{b.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile");const{fromTokenFile:j}=await import("./chunk-e06fbc8e70a88f07.js");return j(b)()},async()=>{return b.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::remoteProvider"),(await Q(b))()},async()=>{throw new q("Could not load credentials from any providers",{tryNextLink:!1,logger:b.logger})}),v,k),k=(b)=>b?.expiration!==void 0,v=(b)=>b?.expiration!==void 0&&b.expiration.getTime()-Date.now()<300000;export{W as wb};
|
|
@@ -28,6 +28,5 @@ interface ClientRouterProviderProps {
|
|
|
28
28
|
}
|
|
29
29
|
export declare const ClientRouterProvider: (props: PropsWithChildren<ClientRouterProviderProps>) => import("react/jsx-runtime").JSX.Element;
|
|
30
30
|
export declare function useLocation(): Location;
|
|
31
|
-
export declare function useParams(): Record<string, string>;
|
|
32
31
|
export {};
|
|
33
32
|
//# sourceMappingURL=ClientRouterContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientRouterContext.d.ts","sourceRoot":"","sources":["../../client/ClientRouterContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAwB,MAAM,SAAS,CAAC;AAC5E,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ClientRouterContext.d.ts","sourceRoot":"","sources":["../../client/ClientRouterContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAwB,MAAM,SAAS,CAAC;AAC5E,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,UAAU,wBAAwB;IAChC,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACxD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;IAClC,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,wBAAwB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACzD,wBAAwB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC1D,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,4BAA4B,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;IACpE,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,eAAO,MAAM,mBAAmB,mDAE/B,CAAC;AAEF,UAAU,yBAAyB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,UACxB,iBAAiB,CAAC,yBAAyB,CAAC,4CAoJpD,CAAC;AAUF,wBAAgB,WAAW,aAU1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpReload.d.ts","sourceRoot":"","sources":["../../client/HttpReload.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,UAAU,mCAwCtB,CAAC"}
|
|
@@ -22,18 +22,18 @@ type Methods = {
|
|
|
22
22
|
DELETE: DeleteRequests;
|
|
23
23
|
PATCH: PatchRequests;
|
|
24
24
|
};
|
|
25
|
-
interface FormBaseProps<M extends keyof Methods, K extends keyof Methods[M]> extends Omit<ComponentProps<"form">, "action"> {
|
|
26
|
-
method
|
|
25
|
+
interface FormBaseProps<M extends keyof Methods, K extends keyof Methods[M]> extends Omit<ComponentProps<"form">, "action" | "onError"> {
|
|
26
|
+
method?: M;
|
|
27
27
|
action: K;
|
|
28
|
-
onSuccess?: (result: Methods[M][K]) => void;
|
|
29
|
-
onError?: (error: any) => void;
|
|
28
|
+
onSuccess?: (result: Methods[M][K], form: HTMLFormElement) => void;
|
|
29
|
+
onError?: (error: any, form: HTMLFormElement) => void;
|
|
30
30
|
}
|
|
31
31
|
type FormProps<T extends keyof Methods, K extends keyof Methods[T]> = FormBaseProps<T, K> & (UrlParser<`${K & string}`> extends Record<string, never> ? {
|
|
32
32
|
params?: never;
|
|
33
33
|
} : {
|
|
34
34
|
params: UrlParser<`${K & string}`>;
|
|
35
35
|
});
|
|
36
|
-
export declare function Form<
|
|
36
|
+
export declare function Form<K extends keyof Methods[T], T extends keyof Methods = "POST">(props: FormProps<T, K>): import("react/jsx-runtime").JSX.Element;
|
|
37
37
|
export declare function useMutationStatus(): {
|
|
38
38
|
isPending: boolean;
|
|
39
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mutation.d.ts","sourceRoot":"","sources":["../../client/Mutation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EAGpB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAiBzC,KAAK,SAAS,CAAC,CAAC,IACd,CAAC,SAAS,gBAAgB,CAAC,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,CAAC,GAC9C,aAAa,CAAC,MAAM,CAAC,GACrB,KAAK,CAAC;AAMZ,KAAK,YAAY,GAAG;KACjB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,QAAQ,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS,CACpE,GAAG,CAAC,CAAC,CAAC,CACP;CACF,CAAC;AAEF,KAAK,WAAW,GAAG;KAChB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,OAAO,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC9E,CAAC;AAEF,KAAK,cAAc,GAAG;KACnB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,UAAU,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS,CACtE,GAAG,CAAC,CAAC,CAAC,CACP;CACF,CAAC;AAEF,KAAK,aAAa,GAAG;KAClB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,SAAS,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS,CACrE,GAAG,CAAC,CAAC,CAAC,CACP;CACF,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,UAAU,aAAa,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,CAAC,SAAS,MAAM,OAAO,CAAC,CAAC,CAAC,CACzE,SAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"Mutation.d.ts","sourceRoot":"","sources":["../../client/Mutation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EAGpB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAiBzC,KAAK,SAAS,CAAC,CAAC,IACd,CAAC,SAAS,gBAAgB,CAAC,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,CAAC,GAC9C,aAAa,CAAC,MAAM,CAAC,GACrB,KAAK,CAAC;AAMZ,KAAK,YAAY,GAAG;KACjB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,QAAQ,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS,CACpE,GAAG,CAAC,CAAC,CAAC,CACP;CACF,CAAC;AAEF,KAAK,WAAW,GAAG;KAChB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,OAAO,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC9E,CAAC;AAEF,KAAK,cAAc,GAAG;KACnB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,UAAU,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS,CACtE,GAAG,CAAC,CAAC,CAAC,CACP;CACF,CAAC;AAEF,KAAK,aAAa,GAAG;KAClB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,SAAS,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS,CACrE,GAAG,CAAC,CAAC,CAAC,CACP;CACF,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,UAAU,aAAa,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,CAAC,SAAS,MAAM,OAAO,CAAC,CAAC,CAAC,CACzE,SAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC1D,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,CAAC,CAAC;IACV,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACnE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CACvD;AAED,KAAK,SAAS,CACZ,CAAC,SAAS,MAAM,OAAO,EACvB,CAAC,SAAS,MAAM,OAAO,CAAC,CAAC,CAAC,IACxB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GACrB,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACrD;IAAE,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAE9C,wBAAgB,IAAI,CAClB,CAAC,SAAS,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,CAAC,SAAS,MAAM,OAAO,GAAG,MAAM,EAChC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,2CAoDvB;AAED,wBAAgB,iBAAiB;;EAIhC;AAED,eAAO,MAAM,gBAAgB,UAAW;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC;CACxD,4CAwBA,CAAC;AAEF,eAAO,MAAM,SAAS,UAAW,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,4CASxE,CAAC;AAEF,eAAO,MAAM,SAAS,UAAW,cAAc,CAAC,KAAK,CAAC,4CAQrD,CAAC"}
|
|
@@ -7,7 +7,7 @@ export declare class ProgressManager {
|
|
|
7
7
|
isTicking: boolean;
|
|
8
8
|
constructor(subject: Subject<boolean>);
|
|
9
9
|
getNextIncrement(): number;
|
|
10
|
-
getNextInterval(): 400 |
|
|
10
|
+
getNextInterval(): 400 | 200 | 1000 | 100 | 2000;
|
|
11
11
|
nextTick(): Promise<void>;
|
|
12
12
|
start(): void;
|
|
13
13
|
end(): void;
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { useQuery } from "./useQuery";
|
|
2
2
|
export { useMutation, useDelete, usePatch, usePost, usePut, } from "./useMutation";
|
|
3
3
|
export { Form, FormError, useMutationStatus, ValidationErrors, FormField, } from "./Mutation";
|
|
4
|
-
export { useLocation
|
|
4
|
+
export { useLocation } from "./ClientRouterContext";
|
|
5
|
+
export { useParams } from "./useParams";
|
|
5
6
|
export { useSearchParams } from "./useSearchParams";
|
|
6
7
|
export { useRoute } from "./useRoute";
|
|
7
8
|
export { useIsNavigationPending } from "./useIsNavigationPending";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EACL,WAAW,EACX,SAAS,EACT,QAAQ,EACR,OAAO,EACP,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,IAAI,EACJ,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EACL,WAAW,EACX,SAAS,EACT,QAAQ,EACR,OAAO,EACP,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,IAAI,EACJ,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/client/index.js
CHANGED
|
@@ -12,7 +12,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
|
|
|
12
12
|
var _i, _n, _t, _e, _s, _l, _o, _d, _p, _g, _H_instances, r_fn, R_fn, b_fn, u_fn, m_fn, a_fn, P_fn, E_fn, S_fn, O_fn, k_fn, x_fn, h_fn, f_fn, T_fn, A_fn, y_fn, w_fn, c_fn, C_fn, _a, _i2, _n2, _t2, _e2, _s2, _l2, _b;
|
|
13
13
|
import require$$1, { createContext, useRef, useContext, useState, useCallback, useEffect, useSyncExternalStore, lazy, StrictMode, Suspense } from "react";
|
|
14
14
|
import { jsx, Fragment, jsxs } from "react/jsx-runtime";
|
|
15
|
-
import require$$2 from "react-dom";
|
|
15
|
+
import require$$2, { createPortal } from "react-dom";
|
|
16
16
|
class Subject {
|
|
17
17
|
constructor(initialValue) {
|
|
18
18
|
__publicField(this, "subscribers", /* @__PURE__ */ new Set());
|
|
@@ -370,7 +370,7 @@ const MutationContext = createContext({
|
|
|
370
370
|
});
|
|
371
371
|
function Form(props) {
|
|
372
372
|
const {
|
|
373
|
-
method,
|
|
373
|
+
method = "POST",
|
|
374
374
|
action,
|
|
375
375
|
onSuccess = () => {
|
|
376
376
|
},
|
|
@@ -388,8 +388,8 @@ function Form(props) {
|
|
|
388
388
|
params
|
|
389
389
|
},
|
|
390
390
|
{
|
|
391
|
-
onSuccess,
|
|
392
|
-
onError
|
|
391
|
+
onSuccess: (data2) => onSuccess(data2, formRef.current),
|
|
392
|
+
onError: (error2) => onError(error2, formRef.current)
|
|
393
393
|
}
|
|
394
394
|
);
|
|
395
395
|
const handleSubmit = async (e) => {
|
|
@@ -1505,159 +1505,6 @@ class ProgressManager {
|
|
|
1505
1505
|
this.unsubscribe();
|
|
1506
1506
|
}
|
|
1507
1507
|
}
|
|
1508
|
-
const ClientRouterContext = createContext(
|
|
1509
|
-
{}
|
|
1510
|
-
);
|
|
1511
|
-
const ClientRouterProvider = (props) => {
|
|
1512
|
-
const {
|
|
1513
|
-
children,
|
|
1514
|
-
pathname,
|
|
1515
|
-
currentPath,
|
|
1516
|
-
is404,
|
|
1517
|
-
routeManifest,
|
|
1518
|
-
pageData,
|
|
1519
|
-
params,
|
|
1520
|
-
searchParams
|
|
1521
|
-
} = props;
|
|
1522
|
-
const [parameters, setParameters] = useState(params);
|
|
1523
|
-
const navigationAbortControllerRef = useRef(new AbortController());
|
|
1524
|
-
const [isNavigatingSubject] = useState(() => {
|
|
1525
|
-
return new Subject(false);
|
|
1526
|
-
});
|
|
1527
|
-
const [progressManager] = useState(new ProgressManager(isNavigatingSubject));
|
|
1528
|
-
const pageDataRef = useRef(structuredClone(pageData));
|
|
1529
|
-
const scrollHistoryRef = useRef(/* @__PURE__ */ new Map());
|
|
1530
|
-
const initalViewEntries = is404 ? ["404"] : routeManifest[pathname] ?? ["404"];
|
|
1531
|
-
const viewEntriesSubject = useRef(new Subject(initalViewEntries));
|
|
1532
|
-
const [locationSubject] = useState(
|
|
1533
|
-
() => new Subject({
|
|
1534
|
-
hash: "",
|
|
1535
|
-
pathname: currentPath,
|
|
1536
|
-
search: searchParams,
|
|
1537
|
-
state: {},
|
|
1538
|
-
key: ""
|
|
1539
|
-
})
|
|
1540
|
-
);
|
|
1541
|
-
const [history] = useState(() => {
|
|
1542
|
-
let history2 = null;
|
|
1543
|
-
if (typeof window !== "undefined") {
|
|
1544
|
-
history2 = createBrowserHistory();
|
|
1545
|
-
}
|
|
1546
|
-
return history2;
|
|
1547
|
-
});
|
|
1548
|
-
const handleScroll = () => {
|
|
1549
|
-
scrollHistoryRef.current.set(
|
|
1550
|
-
locationSubject.getValue().pathname,
|
|
1551
|
-
window.scrollY
|
|
1552
|
-
);
|
|
1553
|
-
};
|
|
1554
|
-
const findMatchingRouteFromParams = (pathname2) => {
|
|
1555
|
-
const candidates = [];
|
|
1556
|
-
for (const route2 of Object.keys(routeManifest)) {
|
|
1557
|
-
const urlPattern = new me({ pathname: route2 });
|
|
1558
|
-
if (urlPattern.test({ pathname: pathname2 })) {
|
|
1559
|
-
candidates.push(route2);
|
|
1560
|
-
}
|
|
1561
|
-
}
|
|
1562
|
-
const sortedCandidates = candidates.sort((a, b2) => {
|
|
1563
|
-
const x2 = a.split("/").length + a.split(":").length;
|
|
1564
|
-
const y2 = b2.split("/").length + b2.split(":").length;
|
|
1565
|
-
return x2 - y2;
|
|
1566
|
-
});
|
|
1567
|
-
const [route] = sortedCandidates ?? [];
|
|
1568
|
-
return route;
|
|
1569
|
-
};
|
|
1570
|
-
const getViewPathsFromPathname = (pathname2) => {
|
|
1571
|
-
const route = findMatchingRouteFromParams(pathname2);
|
|
1572
|
-
return routeManifest[route] ?? [];
|
|
1573
|
-
};
|
|
1574
|
-
const getRoutePathnameFromHref = (href) => {
|
|
1575
|
-
const route = findMatchingRouteFromParams(href);
|
|
1576
|
-
return route;
|
|
1577
|
-
};
|
|
1578
|
-
const getParams = (pathname2) => {
|
|
1579
|
-
var _a2;
|
|
1580
|
-
const route = findMatchingRouteFromParams(pathname2);
|
|
1581
|
-
const urlPattern = new me({ pathname: route });
|
|
1582
|
-
return (_a2 = urlPattern.exec({ pathname: pathname2 })) == null ? void 0 : _a2.pathname.groups;
|
|
1583
|
-
};
|
|
1584
|
-
useEffect(() => {
|
|
1585
|
-
history == null ? void 0 : history.listen(({ location }) => {
|
|
1586
|
-
locationSubject.next(structuredClone(location));
|
|
1587
|
-
setParameters(getParams(location.pathname));
|
|
1588
|
-
viewEntriesSubject.current.next(
|
|
1589
|
-
(() => {
|
|
1590
|
-
var _a2;
|
|
1591
|
-
if (((_a2 = location.state) == null ? void 0 : _a2.status) === 404) {
|
|
1592
|
-
return ["404"];
|
|
1593
|
-
}
|
|
1594
|
-
return getViewPathsFromPathname(location.pathname);
|
|
1595
|
-
})()
|
|
1596
|
-
);
|
|
1597
|
-
});
|
|
1598
|
-
window.addEventListener("scrollend", handleScroll);
|
|
1599
|
-
return () => {
|
|
1600
|
-
window.removeEventListener("scroll", handleScroll);
|
|
1601
|
-
};
|
|
1602
|
-
}, []);
|
|
1603
|
-
const updatePageData = (newPageData) => {
|
|
1604
|
-
var _a2;
|
|
1605
|
-
const [key, value] = Object.entries(newPageData)[0];
|
|
1606
|
-
if (!((_a2 = pageDataRef.current) == null ? void 0 : _a2[key])) {
|
|
1607
|
-
pageDataRef.current[key] = {};
|
|
1608
|
-
}
|
|
1609
|
-
pageDataRef.current[key] = value;
|
|
1610
|
-
};
|
|
1611
|
-
const getPageData = (key) => {
|
|
1612
|
-
return pageDataRef.current[locationSubject.getValue().pathname][key];
|
|
1613
|
-
};
|
|
1614
|
-
const setNavigationAbortController = (controller) => {
|
|
1615
|
-
navigationAbortControllerRef.current.abort();
|
|
1616
|
-
navigationAbortControllerRef.current = controller;
|
|
1617
|
-
};
|
|
1618
|
-
return /* @__PURE__ */ jsx(
|
|
1619
|
-
ClientRouterContext.Provider,
|
|
1620
|
-
{
|
|
1621
|
-
value: {
|
|
1622
|
-
isNavigatingSubject,
|
|
1623
|
-
getViewPathsFromPathname,
|
|
1624
|
-
history,
|
|
1625
|
-
params: parameters,
|
|
1626
|
-
locationSubject,
|
|
1627
|
-
getScrollPosition: (path) => {
|
|
1628
|
-
return scrollHistoryRef.current.get(path) || 0;
|
|
1629
|
-
},
|
|
1630
|
-
viewEntriesSubject: viewEntriesSubject.current,
|
|
1631
|
-
updatePageData,
|
|
1632
|
-
getPageData,
|
|
1633
|
-
getRoutePathnameFromHref,
|
|
1634
|
-
setNavigationAbortController,
|
|
1635
|
-
progressManager
|
|
1636
|
-
},
|
|
1637
|
-
children
|
|
1638
|
-
}
|
|
1639
|
-
);
|
|
1640
|
-
};
|
|
1641
|
-
function useLocationChange(cb) {
|
|
1642
|
-
const { locationSubject } = useContext(ClientRouterContext);
|
|
1643
|
-
useEffect(() => {
|
|
1644
|
-
cb(locationSubject.getValue());
|
|
1645
|
-
return locationSubject.subscribe(cb);
|
|
1646
|
-
}, []);
|
|
1647
|
-
}
|
|
1648
|
-
function useLocation() {
|
|
1649
|
-
const ctx = useContext(ClientRouterContext);
|
|
1650
|
-
const { locationSubject } = ctx;
|
|
1651
|
-
const [location, setLocation] = useState(locationSubject == null ? void 0 : locationSubject.getValue());
|
|
1652
|
-
useLocationChange((newLocation) => {
|
|
1653
|
-
setLocation(newLocation);
|
|
1654
|
-
});
|
|
1655
|
-
return location;
|
|
1656
|
-
}
|
|
1657
|
-
function useParams() {
|
|
1658
|
-
const { params } = useContext(ClientRouterContext);
|
|
1659
|
-
return params;
|
|
1660
|
-
}
|
|
1661
1508
|
const ServerDataContext = createContext({});
|
|
1662
1509
|
const ServerDataProvider = (props) => {
|
|
1663
1510
|
let _value = props.value;
|
|
@@ -1796,7 +1643,14 @@ function useNavigate() {
|
|
|
1796
1643
|
)
|
|
1797
1644
|
]);
|
|
1798
1645
|
if (res.ok) {
|
|
1799
|
-
const { data, is404 = false } = await res.json();
|
|
1646
|
+
const { data, directive = {}, is404 = false } = await res.json();
|
|
1647
|
+
if ((directive == null ? void 0 : directive.kind) === "Redirect") {
|
|
1648
|
+
if (directive == null ? void 0 : directive.path) {
|
|
1649
|
+
isNavigatingSubject.next(false);
|
|
1650
|
+
action("replace").call(directive.path);
|
|
1651
|
+
}
|
|
1652
|
+
return;
|
|
1653
|
+
}
|
|
1800
1654
|
updatePageData(data);
|
|
1801
1655
|
history == null ? void 0 : history[pushOrReplace](
|
|
1802
1656
|
navigationPath,
|
|
@@ -1898,6 +1752,180 @@ function useRoute() {
|
|
|
1898
1752
|
}
|
|
1899
1753
|
};
|
|
1900
1754
|
}
|
|
1755
|
+
function useParams() {
|
|
1756
|
+
const { params } = useContext(ClientRouterContext);
|
|
1757
|
+
return params;
|
|
1758
|
+
}
|
|
1759
|
+
const HttpReload = () => {
|
|
1760
|
+
useNavigate();
|
|
1761
|
+
useSearchParams();
|
|
1762
|
+
useRoute();
|
|
1763
|
+
useParams();
|
|
1764
|
+
const [reloading, setReloading] = useState(false);
|
|
1765
|
+
useEffect(() => {
|
|
1766
|
+
return () => {
|
|
1767
|
+
};
|
|
1768
|
+
}, []);
|
|
1769
|
+
if (!reloading || typeof document === "undefined") {
|
|
1770
|
+
return null;
|
|
1771
|
+
}
|
|
1772
|
+
return createPortal(
|
|
1773
|
+
/* @__PURE__ */ jsx("div", { className: "fixed z-[1000] bottom-0 right-0 p-2", children: /* @__PURE__ */ jsx("div", { className: "p-2 bg-white text-black rounded-md shadow-md", children: "..." }) }),
|
|
1774
|
+
document.body
|
|
1775
|
+
);
|
|
1776
|
+
};
|
|
1777
|
+
const ClientRouterContext = createContext(
|
|
1778
|
+
{}
|
|
1779
|
+
);
|
|
1780
|
+
const ClientRouterProvider = (props) => {
|
|
1781
|
+
const {
|
|
1782
|
+
children,
|
|
1783
|
+
pathname,
|
|
1784
|
+
currentPath,
|
|
1785
|
+
is404,
|
|
1786
|
+
routeManifest,
|
|
1787
|
+
pageData,
|
|
1788
|
+
params,
|
|
1789
|
+
searchParams
|
|
1790
|
+
} = props;
|
|
1791
|
+
const [parameters, setParameters] = useState(params);
|
|
1792
|
+
const navigationAbortControllerRef = useRef(new AbortController());
|
|
1793
|
+
const [isNavigatingSubject] = useState(() => {
|
|
1794
|
+
return new Subject(false);
|
|
1795
|
+
});
|
|
1796
|
+
const [progressManager] = useState(new ProgressManager(isNavigatingSubject));
|
|
1797
|
+
const pageDataRef = useRef(structuredClone(pageData));
|
|
1798
|
+
const scrollHistoryRef = useRef(/* @__PURE__ */ new Map());
|
|
1799
|
+
const initalViewEntries = is404 ? ["404"] : routeManifest[pathname] ?? ["404"];
|
|
1800
|
+
const viewEntriesSubject = useRef(new Subject(initalViewEntries));
|
|
1801
|
+
const [locationSubject] = useState(
|
|
1802
|
+
() => new Subject({
|
|
1803
|
+
hash: "",
|
|
1804
|
+
pathname: currentPath,
|
|
1805
|
+
search: searchParams,
|
|
1806
|
+
state: {},
|
|
1807
|
+
key: ""
|
|
1808
|
+
})
|
|
1809
|
+
);
|
|
1810
|
+
const [history] = useState(() => {
|
|
1811
|
+
let history2 = null;
|
|
1812
|
+
if (typeof window !== "undefined") {
|
|
1813
|
+
history2 = createBrowserHistory();
|
|
1814
|
+
}
|
|
1815
|
+
return history2;
|
|
1816
|
+
});
|
|
1817
|
+
const handleScroll = () => {
|
|
1818
|
+
scrollHistoryRef.current.set(
|
|
1819
|
+
locationSubject.getValue().pathname,
|
|
1820
|
+
window.scrollY
|
|
1821
|
+
);
|
|
1822
|
+
};
|
|
1823
|
+
const findMatchingRouteFromParams = (pathname2) => {
|
|
1824
|
+
const candidates = [];
|
|
1825
|
+
for (const route2 of Object.keys(routeManifest)) {
|
|
1826
|
+
const urlPattern = new me({ pathname: route2 });
|
|
1827
|
+
if (urlPattern.test({ pathname: pathname2 })) {
|
|
1828
|
+
candidates.push(route2);
|
|
1829
|
+
}
|
|
1830
|
+
}
|
|
1831
|
+
const sortedCandidates = candidates.sort((a, b2) => {
|
|
1832
|
+
const x2 = a.split("/").length + a.split(":").length;
|
|
1833
|
+
const y2 = b2.split("/").length + b2.split(":").length;
|
|
1834
|
+
return x2 - y2;
|
|
1835
|
+
});
|
|
1836
|
+
const [route] = sortedCandidates ?? [];
|
|
1837
|
+
return route;
|
|
1838
|
+
};
|
|
1839
|
+
const getViewPathsFromPathname = (pathname2) => {
|
|
1840
|
+
const route = findMatchingRouteFromParams(pathname2);
|
|
1841
|
+
return routeManifest[route] ?? [];
|
|
1842
|
+
};
|
|
1843
|
+
const getRoutePathnameFromHref = (href) => {
|
|
1844
|
+
const route = findMatchingRouteFromParams(href);
|
|
1845
|
+
return route;
|
|
1846
|
+
};
|
|
1847
|
+
const getParams = (pathname2) => {
|
|
1848
|
+
var _a2;
|
|
1849
|
+
const route = findMatchingRouteFromParams(pathname2);
|
|
1850
|
+
const urlPattern = new me({ pathname: route });
|
|
1851
|
+
return (_a2 = urlPattern.exec({ pathname: pathname2 })) == null ? void 0 : _a2.pathname.groups;
|
|
1852
|
+
};
|
|
1853
|
+
useEffect(() => {
|
|
1854
|
+
history == null ? void 0 : history.listen(({ location }) => {
|
|
1855
|
+
locationSubject.next(structuredClone(location));
|
|
1856
|
+
setParameters(getParams(location.pathname));
|
|
1857
|
+
viewEntriesSubject.current.next(
|
|
1858
|
+
(() => {
|
|
1859
|
+
var _a2;
|
|
1860
|
+
if (((_a2 = location.state) == null ? void 0 : _a2.status) === 404) {
|
|
1861
|
+
return ["404"];
|
|
1862
|
+
}
|
|
1863
|
+
return getViewPathsFromPathname(location.pathname);
|
|
1864
|
+
})()
|
|
1865
|
+
);
|
|
1866
|
+
});
|
|
1867
|
+
window.addEventListener("scrollend", handleScroll);
|
|
1868
|
+
return () => {
|
|
1869
|
+
window.removeEventListener("scroll", handleScroll);
|
|
1870
|
+
};
|
|
1871
|
+
}, []);
|
|
1872
|
+
const updatePageData = (newPageData) => {
|
|
1873
|
+
var _a2;
|
|
1874
|
+
const [key, value] = Object.entries(newPageData)[0];
|
|
1875
|
+
if (!((_a2 = pageDataRef.current) == null ? void 0 : _a2[key])) {
|
|
1876
|
+
pageDataRef.current[key] = {};
|
|
1877
|
+
}
|
|
1878
|
+
pageDataRef.current[key] = value;
|
|
1879
|
+
};
|
|
1880
|
+
const getPageData = (key) => {
|
|
1881
|
+
return pageDataRef.current[locationSubject.getValue().pathname][key];
|
|
1882
|
+
};
|
|
1883
|
+
const setNavigationAbortController = (controller) => {
|
|
1884
|
+
navigationAbortControllerRef.current.abort();
|
|
1885
|
+
navigationAbortControllerRef.current = controller;
|
|
1886
|
+
};
|
|
1887
|
+
return /* @__PURE__ */ jsxs(
|
|
1888
|
+
ClientRouterContext.Provider,
|
|
1889
|
+
{
|
|
1890
|
+
value: {
|
|
1891
|
+
isNavigatingSubject,
|
|
1892
|
+
getViewPathsFromPathname,
|
|
1893
|
+
history,
|
|
1894
|
+
params: parameters,
|
|
1895
|
+
locationSubject,
|
|
1896
|
+
getScrollPosition: (path) => {
|
|
1897
|
+
return scrollHistoryRef.current.get(path) || 0;
|
|
1898
|
+
},
|
|
1899
|
+
viewEntriesSubject: viewEntriesSubject.current,
|
|
1900
|
+
updatePageData,
|
|
1901
|
+
getPageData,
|
|
1902
|
+
getRoutePathnameFromHref,
|
|
1903
|
+
setNavigationAbortController,
|
|
1904
|
+
progressManager
|
|
1905
|
+
},
|
|
1906
|
+
children: [
|
|
1907
|
+
children,
|
|
1908
|
+
/* @__PURE__ */ jsx(HttpReload, {})
|
|
1909
|
+
]
|
|
1910
|
+
}
|
|
1911
|
+
);
|
|
1912
|
+
};
|
|
1913
|
+
function useLocationChange(cb) {
|
|
1914
|
+
const { locationSubject } = useContext(ClientRouterContext);
|
|
1915
|
+
useEffect(() => {
|
|
1916
|
+
cb(locationSubject.getValue());
|
|
1917
|
+
return locationSubject.subscribe(cb);
|
|
1918
|
+
}, []);
|
|
1919
|
+
}
|
|
1920
|
+
function useLocation() {
|
|
1921
|
+
const ctx = useContext(ClientRouterContext);
|
|
1922
|
+
const { locationSubject } = ctx;
|
|
1923
|
+
const [location, setLocation] = useState(locationSubject == null ? void 0 : locationSubject.getValue());
|
|
1924
|
+
useLocationChange((newLocation) => {
|
|
1925
|
+
setLocation(newLocation);
|
|
1926
|
+
});
|
|
1927
|
+
return location;
|
|
1928
|
+
}
|
|
1901
1929
|
function useIsNavigationPending() {
|
|
1902
1930
|
const { isNavigatingSubject } = useContext(ClientRouterContext);
|
|
1903
1931
|
const isNavigating = useSyncExternalStore(
|
package/dist/client/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PropsWithChildren } from "react";
|
|
2
2
|
import type { ViewHandler } from "../http";
|
|
3
|
-
import type { UnwrapPromise } from "../utils/type";
|
|
3
|
+
import type { Prettify, UnwrapPromise } from "../utils/type";
|
|
4
4
|
import type { ViewRPC } from "./rpc";
|
|
5
5
|
type ComponentBranch = [string, ComponentBranch[]];
|
|
6
6
|
export type ComponentTree = ComponentBranch[];
|
|
@@ -13,14 +13,15 @@ export type ViewResult<T extends keyof ViewRPC> = ViewRPC[T] extends ViewHandler
|
|
|
13
13
|
export type ViewRoute = keyof ViewRPC;
|
|
14
14
|
type ViewKeys<T> = T extends keyof ViewRPC ? T extends `view:${infer K}` ? K : never : never;
|
|
15
15
|
type LayoutKeys<T> = T extends keyof ViewRPC ? T extends `layout:${infer K}` ? K : never : never;
|
|
16
|
-
export type ViewProps<T extends ViewKeys<keyof ViewRPC>> = ViewRPC[`view:${T}`] extends ViewHandler<any, infer O, any> ? UnwrapPromise<O
|
|
16
|
+
export type ViewProps<T extends ViewKeys<keyof ViewRPC>> = ViewRPC[`view:${T}`] extends ViewHandler<any, infer O, any> ? Prettify<UnwrapPromise<O>> : never;
|
|
17
17
|
export type LayoutProps<T extends LayoutKeys<keyof ViewRPC>> = ViewRPC[`layout:${T}`] extends ViewHandler<any, infer O, any> ? PropsWithChildren<UnwrapPromise<O>> : never;
|
|
18
|
-
|
|
19
|
-
[K in Param]?: string;
|
|
18
|
+
type UrlParserInternal<T extends string> = string extends T ? Record<string, string> : T extends `${infer _Start}/:${infer Param}?/${infer Rest}` ? {
|
|
19
|
+
[K in Param]?: string | number;
|
|
20
20
|
} & UrlParser<`/${Rest}`> : T extends `${infer _Start}/:${infer Param}/${infer Rest}` ? {
|
|
21
|
-
[K in Param]: string;
|
|
21
|
+
[K in Param]: string | number;
|
|
22
22
|
} & UrlParser<`/${Rest}`> : T extends `${infer _Start}/:${infer Param}` ? {
|
|
23
|
-
[K in Param]: string;
|
|
23
|
+
[K in Param]: string | number;
|
|
24
24
|
} : Record<string, never>;
|
|
25
|
+
export type UrlParser<T extends string> = Prettify<UrlParserInternal<T>>;
|
|
25
26
|
export {};
|
|
26
27
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC,KAAK,eAAe,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;AACnD,MAAM,MAAM,aAAa,GAAG,eAAe,EAAE,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,OAAO,CAAC,CAAC;AAEhD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,OAAO,IAC5C,OAAO,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GACrD;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,GAClC,KAAK,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;AAEtC,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,OAAO,GACtC,CAAC,SAAS,QAAQ,MAAM,CAAC,EAAE,GACzB,CAAC,GACD,KAAK,GACP,KAAK,CAAC;AAEV,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,OAAO,GACxC,CAAC,SAAS,UAAU,MAAM,CAAC,EAAE,GAC3B,CAAC,GACD,KAAK,GACP,KAAK,CAAC;AAEV,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,OAAO,CAAC,IACrD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GACvD,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAC1B,KAAK,CAAC;AAEZ,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,OAAO,CAAC,IACzD,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GACzD,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GACnC,KAAK,CAAC;AAEZ,KAAK,iBAAiB,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,SAAS,CAAC,GACvD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,CAAC,SAAS,GAAG,MAAM,MAAM,KAAK,MAAM,KAAK,KAAK,MAAM,IAAI,EAAE,GACxD;KAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAAE,GAAG,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,GAC1D,CAAC,SAAS,GAAG,MAAM,MAAM,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,GACvD;KAAG,CAAC,IAAI,KAAK,GAAG,MAAM,GAAG,MAAM;CAAE,GAAG,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,GACzD,CAAC,SAAS,GAAG,MAAM,MAAM,KAAK,MAAM,KAAK,EAAE,GACzC;KAAG,CAAC,IAAI,KAAK,GAAG,MAAM,GAAG,MAAM;CAAE,GACjC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEhC,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -19,16 +19,25 @@ type Methods = {
|
|
|
19
19
|
type Config<T> = {
|
|
20
20
|
autoInvalidate?: boolean;
|
|
21
21
|
onSuccess: (data: T) => void;
|
|
22
|
-
onError: (error:
|
|
22
|
+
onError: (error: MutationError) => void;
|
|
23
23
|
};
|
|
24
24
|
type Data<M extends keyof Methods, K extends keyof Methods[M]> = Methods[M][K] extends ApiRouterHandler<any, infer T, any> ? UnwrapPromise<T> : never;
|
|
25
25
|
type Body<M extends keyof Methods, K extends keyof Methods[M]> = Methods[M][K] extends ApiRouterHandler<infer T, any, any> ? T : never;
|
|
26
|
-
type
|
|
26
|
+
type MutationError = {
|
|
27
27
|
kind: "validation_error";
|
|
28
28
|
messages: Record<string, any>;
|
|
29
29
|
} | {
|
|
30
30
|
kind: "form_error";
|
|
31
31
|
message: string;
|
|
32
|
+
} | {
|
|
33
|
+
kind: "server_error";
|
|
34
|
+
message: string;
|
|
35
|
+
} | {
|
|
36
|
+
kind: "not_authorized";
|
|
37
|
+
message: string;
|
|
38
|
+
} | {
|
|
39
|
+
kind: "insufficient_permissions";
|
|
40
|
+
message: string;
|
|
32
41
|
};
|
|
33
42
|
type ParseParams<T> = UrlParser<`${T & string}`>;
|
|
34
43
|
export declare function useMutation<M extends keyof Methods, K extends keyof Methods[M], T = Data<M, K>, U = Body<M, K>>(method: M, url: K, ...args: ParseParams<K> extends Record<string, never> ? [options?: {}, config?: Partial<Config<T>>] : [options: {
|