@knapsack/app-client-api 4.95.0--canary.7742.736ca94.0 → 4.95.0--canary.7460.ae676ed.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.
@@ -1 +1 @@
1
- {"version":3,"file":"app-client-api.d.ts","sourceRoot":"","sources":["../src/app-client-api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EACV,iBAAiB,EAEjB,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,YAAY,EACb,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAEjD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAa7E;AAED,wBAAsB,YAAY,CAAC,EACjC,YAAY,GACb,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,CAgBnD;AAGD,wBAAsB,gBAAgB,CAAC,EACrC,YAAY,GACb,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAOlC;AAED,qDAAqD;AACrD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,GACrB,qBAAqB,CAGvB;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,OAAO,EACP,KAAK,GACN,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,qBAAqB,CAAC;CAC9B,GAAG,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAiB9C;AAED,wBAAsB,qBAAqB,CAAC,EAC1C,OAAO,EACP,KAAK,GACN,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,qBAAqB,CAAC;CAC9B,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB;AAED,wBAAsB,gBAAgB,CAAC,EACrC,QAAQ,EACR,YAAY,GACb,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,GAAG,OAAO,CAChE,sBAAsB,CAAC,eAAe,CAAC,CACxC,CAWA;AAED,wBAAsB,cAAc,CAAC,EACnC,OAAO,EACP,YAAY,GACb,EAAE;IACD,OAAO,EAAE,iBAAiB,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,eAAe,CAAC,CAM3B;AAED,wBAAsB,UAAU,CAAC,EAC/B,YAAY,EACZ,OAAO,GACR,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC;CACxD;;;;;GASA;AAED,wBAAsB,YAAY,CAAC,EACjC,YAAY,EACZ,UAAU,GACX,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CACP;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;CAChC,GACD;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAChC,CA6BA;AAED,wBAAsB,eAAe,CAAC,EACpC,YAAY,EACZ,YAAY,EACZ,UAAU,GACX,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAalC"}
1
+ {"version":3,"file":"app-client-api.d.ts","sourceRoot":"","sources":["../src/app-client-api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EACV,iBAAiB,EAEjB,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,YAAY,EACb,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAEjD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAa7E;AAED,wBAAsB,YAAY,CAAC,EACjC,YAAY,GACb,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,CAgBnD;AAGD,wBAAsB,gBAAgB,CAAC,EACrC,YAAY,GACb,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAOlC;AAED,qDAAqD;AACrD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,GACrB,qBAAqB,CAGvB;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,OAAO,EACP,KAAK,GACN,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,qBAAqB,CAAC;CAC9B,GAAG,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAgC9C;AAED,wBAAsB,qBAAqB,CAAC,EAC1C,OAAO,EACP,KAAK,GACN,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,qBAAqB,CAAC;CAC9B,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB;AAED,wBAAsB,gBAAgB,CAAC,EACrC,QAAQ,EACR,YAAY,GACb,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,GAAG,OAAO,CAChE,sBAAsB,CAAC,eAAe,CAAC,CACxC,CAWA;AAED,wBAAsB,cAAc,CAAC,EACnC,OAAO,EACP,YAAY,GACb,EAAE;IACD,OAAO,EAAE,iBAAiB,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,eAAe,CAAC,CAM3B;AAED,wBAAsB,UAAU,CAAC,EAC/B,YAAY,EACZ,OAAO,GACR,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC;CACxD;;;;;GASA;AAED,wBAAsB,YAAY,CAAC,EACjC,YAAY,EACZ,UAAU,GACX,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CACP;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;CAChC,GACD;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAChC,CA6BA;AAED,wBAAsB,eAAe,CAAC,EACpC,YAAY,EACZ,YAAY,EACZ,UAAU,GACX,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAalC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var utils=require('@knapsack/utils'),r=require('url-join');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var r__default=/*#__PURE__*/_interopDefault(r);var c=Object.defineProperty;var n=(e,t)=>c(e,"name",{value:t,configurable:true});async function g({appClientUrl:e,query:t}){return utils.fetcher({url:new URL("/api/v1/template-suggestions",e).toString(),query:t})}n(g,"getTemplateSuggestions");async function D(e){try{let t=r__default.default(e,"/api/v1");return await utils.fetcher({url:t})}catch(t){return {ok:false,message:t instanceof Error?t.message:"Unknown error"}}}n(D,"checkAppClientUrl");async function d({appClientUrl:e}){try{return {ok:true,data:await utils.fetcher({url:r__default.default(e,"/api/v1/data-store")})}}catch(t){return {ok:false,message:t instanceof Error?t.message:"Unknown error"}}}n(d,"getDataStore");async function P({appClientUrl:e}){let t=await d({appClientUrl:e});if(!t.ok||!t.data){let a=`We're having trouble accessing your server at ${e}.`;throw new Error(a)}return t.data}n(P,"getAppClientData");function p(e){let{metaState:t,...a}=e;return a}n(p,"prepAppClientData");async function h({urlBase:e,state:t}){try{let a={state:p(t)};return await utils.fetcher({url:r__default.default(e,"/api/v1/data-store-prep"),body:a})}catch(a){return {ok:false,message:a instanceof Error?a.message:"Unknown error"}}}n(h,"prepareDataForFileSave");async function C({urlBase:e,state:t}){let o={state:p(t)},i=await utils.fetcher({url:r__default.default(e,"/api/v1/data-store"),body:o});if(!i.ok)throw new Error(`Could not save data to localhost files: ${i.message}`)}n(C,"submitDataForFileSave");async function x({pluginId:e,appClientUrl:t}){return utils.fetcher({url:r__default.default(t,"/api/v1/plugins"),body:{pluginId:e,type:"getContent"}})}n(x,"getPluginContent");async function A({options:e,appClientUrl:t}){return await utils.fetcher({url:r__default.default(t,"/api/v1/render"),body:e})}n(A,"renderTemplate");async function S({appClientUrl:e,payload:t}){return (await utils.fetcher({url:r__default.default(e,"/api/v1/files"),body:{type:"verify",payload:t}})).payload}n(S,"verifyFile");async function K({appClientUrl:e,authHeader:t}){try{let a={};t&&(a.authorization=t);let o=await utils.fetcher({url:r__default.default(e,"/api/v2/discovery"),headers:a});if(!o)throw new Error("No result from discovery");return {type:"success",data:o}}catch(a){return a instanceof utils.FetcherError&&a.status===404?{type:"routeNotAvailable"}:{type:"routeNotAvailable"}}}n(K,"getDiscovery");async function w({appClientUrl:e,templateInfo:t,authHeader:a}){let o={};return a&&(o.authorization=a),utils.fetcher({url:r__default.default(e,"/api/v2/inspect"),query:t,headers:o})}n(w,"inspectTemplate");exports.checkAppClientUrl=D;exports.getAppClientData=P;exports.getDataStore=d;exports.getDiscovery=K;exports.getPluginContent=x;exports.getTemplateSuggestions=g;exports.inspectTemplate=w;exports.prepAppClientData=p;exports.prepareDataForFileSave=h;exports.renderTemplate=A;exports.submitDataForFileSave=C;exports.verifyFile=S;//# sourceMappingURL=index.js.map
1
+ 'use strict';var utils=require('@knapsack/utils'),r=require('url-join');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var r__default=/*#__PURE__*/_interopDefault(r);var l=Object.defineProperty;var s=(a,t)=>l(a,"name",{value:t,configurable:true});async function g({appClientUrl:a,query:t}){return utils.fetcher({url:new URL("/api/v1/template-suggestions",a).toString(),query:t})}s(g,"getTemplateSuggestions");async function D(a){try{let t=r__default.default(a,"/api/v1");return await utils.fetcher({url:t})}catch(t){return {ok:false,message:t instanceof Error?t.message:"Unknown error"}}}s(D,"checkAppClientUrl");async function d({appClientUrl:a}){try{return {ok:true,data:await utils.fetcher({url:r__default.default(a,"/api/v1/data-store")})}}catch(t){return {ok:false,message:t instanceof Error?t.message:"Unknown error"}}}s(d,"getDataStore");async function P({appClientUrl:a}){let t=await d({appClientUrl:a});if(!t.ok||!t.data){let e=`We're having trouble accessing your server at ${a}.`;throw new Error(e)}return t.data}s(P,"getAppClientData");function c(a){let{metaState:t,...e}=a;return e}s(c,"prepAppClientData");async function h({urlBase:a,state:t}){try{let e={state:c(t)};return await utils.fetcher({url:r__default.default(a,"/api/v1/data-store-prep"),body:e})}catch(e){return e instanceof utils.FetcherError?{ok:false,message:e.message,meta:{status:e.status,statusText:e.statusText,url:e.url,responseHeaders:e.responseHeaders,responseBody:e.responseBody}}:{ok:false,message:e instanceof Error?e.message:"Unknown error"}}}s(h,"prepareDataForFileSave");async function x({urlBase:a,state:t}){let o={state:c(t)},i=await utils.fetcher({url:r__default.default(a,"/api/v1/data-store"),body:o});if(!i.ok)throw new Error(`Could not save data to localhost files: ${i.message}`)}s(x,"submitDataForFileSave");async function C({pluginId:a,appClientUrl:t}){return utils.fetcher({url:r__default.default(t,"/api/v1/plugins"),body:{pluginId:a,type:"getContent"}})}s(C,"getPluginContent");async function A({options:a,appClientUrl:t}){return await utils.fetcher({url:r__default.default(t,"/api/v1/render"),body:a})}s(A,"renderTemplate");async function S({appClientUrl:a,payload:t}){return (await utils.fetcher({url:r__default.default(a,"/api/v1/files"),body:{type:"verify",payload:t}})).payload}s(S,"verifyFile");async function K({appClientUrl:a,authHeader:t}){try{let e={};t&&(e.authorization=t);let o=await utils.fetcher({url:r__default.default(a,"/api/v2/discovery"),headers:e});if(!o)throw new Error("No result from discovery");return {type:"success",data:o}}catch(e){return e instanceof utils.FetcherError&&e.status===404?{type:"routeNotAvailable"}:{type:"routeNotAvailable"}}}s(K,"getDiscovery");async function k({appClientUrl:a,templateInfo:t,authHeader:e}){let o={};return e&&(o.authorization=e),utils.fetcher({url:r__default.default(a,"/api/v2/inspect"),query:t,headers:o})}s(k,"inspectTemplate");exports.checkAppClientUrl=D;exports.getAppClientData=P;exports.getDataStore=d;exports.getDiscovery=K;exports.getPluginContent=C;exports.getTemplateSuggestions=g;exports.inspectTemplate=k;exports.prepAppClientData=c;exports.prepareDataForFileSave=h;exports.renderTemplate=A;exports.submitDataForFileSave=x;exports.verifyFile=S;//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/get-template-suggestions.ts","../src/app-client-api.ts"],"names":["getTemplateSuggestions","appClientUrl","query","fetcher","__name","checkAppClientUrl","url","theUrl","urlJoin","err","getDataStore","getAppClientData","serverDataRes","message","prepAppClientData","state","metaState","appClientDataNoMeta","prepareDataForFileSave","urlBase","body","submitDataForFileSave","data","getPluginContent","pluginId","renderTemplate","options","verifyFile","payload","getDiscovery","authHeader","headers","error","FetcherError","inspectTemplate","templateInfo"],"mappings":"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","file":"index.js","sourcesContent":["import type {\n EndpointPaths,\n TemplateSuggestionsReqParams,\n TemplateSuggestionsResBody,\n} from '@knapsack/app/api-info';\nimport { fetcher } from '@knapsack/utils';\n\nexport async function getTemplateSuggestions({\n appClientUrl,\n query,\n}: {\n appClientUrl: string;\n query: TemplateSuggestionsReqParams;\n}): Promise<TemplateSuggestionsResBody> {\n return fetcher<TemplateSuggestionsResBody>({\n url: new URL(\n '/api/v1/template-suggestions' satisfies EndpointPaths,\n appClientUrl,\n ).toString(),\n query,\n });\n}\n","import {\n type KsAppClientData,\n type KsRenderResults,\n type Except,\n type GenericResponse,\n type KsAppClientDataAndMeta,\n type KsAppClientDataNoMeta,\n type KsFileSaverParams,\n} from '@knapsack/types';\nimport { fetcher, FetcherError } from '@knapsack/utils';\nimport urlJoin from 'url-join';\nimport type {\n PatternRenderData,\n KnapsackDataStoreSaveBody,\n EndpointPaths,\n EndpointFiles,\n ExtractEndpointData,\n ExtractEndpointResBody,\n EndpointPlugins,\n RouteDiscovery,\n RouteInspect,\n} from '@knapsack/app/api-info';\n\nexport type { PatternRenderData, EndpointPaths };\n\nexport async function checkAppClientUrl(url: string): Promise<GenericResponse> {\n try {\n const theUrl = urlJoin(url, '/api/v1' satisfies EndpointPaths);\n const res = await fetcher<GenericResponse>({\n url: theUrl,\n });\n return res;\n } catch (err) {\n return {\n ok: false,\n message: err instanceof Error ? err.message : 'Unknown error',\n };\n }\n}\n\nexport async function getDataStore({\n appClientUrl,\n}: {\n appClientUrl: string;\n}): Promise<GenericResponse<KsAppClientDataAndMeta>> {\n try {\n const data = await fetcher<KsAppClientDataAndMeta>({\n url: urlJoin(appClientUrl, '/api/v1/data-store' satisfies EndpointPaths),\n });\n\n return {\n ok: true,\n data,\n };\n } catch (err) {\n return {\n ok: false,\n message: err instanceof Error ? err.message : 'Unknown error',\n };\n }\n}\n\n// just need a function that can throw an error\nexport async function getAppClientData({\n appClientUrl,\n}: {\n appClientUrl: string;\n}): Promise<KsAppClientDataAndMeta> {\n const serverDataRes = await getDataStore({ appClientUrl });\n if (!serverDataRes.ok || !serverDataRes.data) {\n const message = `We're having trouble accessing your server at ${appClientUrl}.`;\n throw new Error(message);\n }\n return serverDataRes.data;\n}\n\n/** Sole job is to strip `metaState` if it's there */\nexport function prepAppClientData(\n state: KsAppClientData,\n): KsAppClientDataNoMeta {\n const { metaState, ...appClientDataNoMeta } = state;\n return appClientDataNoMeta;\n}\n\nexport async function prepareDataForFileSave({\n urlBase,\n state,\n}: {\n urlBase: string;\n state: KsAppClientDataNoMeta;\n}): Promise<GenericResponse<KsFileSaverParams>> {\n try {\n const body: KnapsackDataStoreSaveBody = {\n state: prepAppClientData(state),\n };\n const data = await fetcher<GenericResponse<KsFileSaverParams>>({\n url: urlJoin(urlBase, '/api/v1/data-store-prep' satisfies EndpointPaths),\n body,\n });\n\n return data;\n } catch (err) {\n return {\n ok: false,\n message: err instanceof Error ? err.message : 'Unknown error',\n };\n }\n}\n\nexport async function submitDataForFileSave({\n urlBase,\n state,\n}: {\n urlBase: string;\n state: KsAppClientDataNoMeta;\n}): Promise<void> {\n const appClientData = prepAppClientData(state);\n const body: KnapsackDataStoreSaveBody = {\n state: appClientData,\n };\n const data = await fetcher<GenericResponse>({\n url: urlJoin(urlBase, '/api/v1/data-store' satisfies EndpointPaths),\n body,\n });\n\n if (!data.ok) {\n throw new Error(`Could not save data to localhost files: ${data.message}`);\n }\n}\n\nexport async function getPluginContent({\n pluginId,\n appClientUrl,\n}: {\n appClientUrl: string;\n} & Except<ExtractEndpointData<EndpointPlugins>, 'type'>): Promise<\n ExtractEndpointResBody<EndpointPlugins>\n> {\n return fetcher({\n url: urlJoin(\n appClientUrl,\n '/api/v1/plugins' satisfies EndpointPlugins['path'],\n ),\n body: {\n pluginId,\n type: 'getContent',\n } satisfies ExtractEndpointData<EndpointPlugins>,\n });\n}\n\nexport async function renderTemplate({\n options,\n appClientUrl,\n}: {\n options: PatternRenderData;\n appClientUrl: string;\n}): Promise<KsRenderResults> {\n const data = await fetcher<KsRenderResults>({\n url: urlJoin(appClientUrl, '/api/v1/render' satisfies EndpointPaths),\n body: options,\n });\n return data;\n}\n\nexport async function verifyFile({\n appClientUrl,\n payload,\n}: {\n appClientUrl: string;\n payload: ExtractEndpointData<EndpointFiles>['payload'];\n}) {\n const data = await fetcher<ExtractEndpointResBody<EndpointFiles>>({\n url: urlJoin(appClientUrl, '/api/v1/files' satisfies EndpointFiles['path']),\n body: {\n type: 'verify',\n payload,\n } satisfies ExtractEndpointData<EndpointFiles>,\n });\n return data.payload;\n}\n\nexport async function getDiscovery({\n appClientUrl,\n authHeader,\n}: {\n appClientUrl: string;\n authHeader: string;\n}): Promise<\n | {\n type: 'success';\n data: RouteDiscovery['output'];\n }\n | { type: 'routeNotAvailable' }\n> {\n try {\n const headers: Record<string, string> = {};\n if (authHeader) {\n headers.authorization = authHeader;\n }\n const data = await fetcher<RouteDiscovery['output']>({\n url: urlJoin(\n appClientUrl,\n '/api/v2/discovery' satisfies RouteDiscovery['path'],\n ),\n headers,\n });\n if (!data) {\n throw new Error('No result from discovery');\n }\n return {\n type: 'success',\n data,\n };\n } catch (error) {\n if (error instanceof FetcherError && error.status === 404) {\n return {\n type: 'routeNotAvailable',\n };\n }\n // being extra cautious here to avoid throwing an error\n return { type: 'routeNotAvailable' };\n }\n}\n\nexport async function inspectTemplate({\n appClientUrl,\n templateInfo,\n authHeader,\n}: {\n appClientUrl: string;\n templateInfo: RouteInspect['input'];\n authHeader: string;\n}): Promise<RouteInspect['output']> {\n const headers: Record<string, string> = {};\n if (authHeader) {\n headers.authorization = authHeader;\n }\n return fetcher({\n url: urlJoin(\n appClientUrl,\n '/api/v2/inspect' satisfies RouteInspect['path'],\n ),\n query: templateInfo,\n headers,\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/get-template-suggestions.ts","../src/app-client-api.ts"],"names":["getTemplateSuggestions","appClientUrl","query","fetcher","__name","checkAppClientUrl","url","theUrl","urlJoin","err","getDataStore","getAppClientData","serverDataRes","message","prepAppClientData","state","metaState","appClientDataNoMeta","prepareDataForFileSave","urlBase","body","FetcherError","submitDataForFileSave","data","getPluginContent","pluginId","renderTemplate","options","verifyFile","payload","getDiscovery","authHeader","headers","error","inspectTemplate","templateInfo"],"mappings":"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","file":"index.js","sourcesContent":["import type {\n EndpointPaths,\n TemplateSuggestionsReqParams,\n TemplateSuggestionsResBody,\n} from '@knapsack/app/api-info';\nimport { fetcher } from '@knapsack/utils';\n\nexport async function getTemplateSuggestions({\n appClientUrl,\n query,\n}: {\n appClientUrl: string;\n query: TemplateSuggestionsReqParams;\n}): Promise<TemplateSuggestionsResBody> {\n return fetcher<TemplateSuggestionsResBody>({\n url: new URL(\n '/api/v1/template-suggestions' satisfies EndpointPaths,\n appClientUrl,\n ).toString(),\n query,\n });\n}\n","import {\n type KsAppClientData,\n type KsRenderResults,\n type Except,\n type GenericResponse,\n type KsAppClientDataAndMeta,\n type KsAppClientDataNoMeta,\n type KsFileSaverParams,\n} from '@knapsack/types';\nimport { fetcher, FetcherError } from '@knapsack/utils';\nimport urlJoin from 'url-join';\nimport type {\n PatternRenderData,\n KnapsackDataStoreSaveBody,\n EndpointPaths,\n EndpointFiles,\n ExtractEndpointData,\n ExtractEndpointResBody,\n EndpointPlugins,\n RouteDiscovery,\n RouteInspect,\n} from '@knapsack/app/api-info';\n\nexport type { PatternRenderData, EndpointPaths };\n\nexport async function checkAppClientUrl(url: string): Promise<GenericResponse> {\n try {\n const theUrl = urlJoin(url, '/api/v1' satisfies EndpointPaths);\n const res = await fetcher<GenericResponse>({\n url: theUrl,\n });\n return res;\n } catch (err) {\n return {\n ok: false,\n message: err instanceof Error ? err.message : 'Unknown error',\n };\n }\n}\n\nexport async function getDataStore({\n appClientUrl,\n}: {\n appClientUrl: string;\n}): Promise<GenericResponse<KsAppClientDataAndMeta>> {\n try {\n const data = await fetcher<KsAppClientDataAndMeta>({\n url: urlJoin(appClientUrl, '/api/v1/data-store' satisfies EndpointPaths),\n });\n\n return {\n ok: true,\n data,\n };\n } catch (err) {\n return {\n ok: false,\n message: err instanceof Error ? err.message : 'Unknown error',\n };\n }\n}\n\n// just need a function that can throw an error\nexport async function getAppClientData({\n appClientUrl,\n}: {\n appClientUrl: string;\n}): Promise<KsAppClientDataAndMeta> {\n const serverDataRes = await getDataStore({ appClientUrl });\n if (!serverDataRes.ok || !serverDataRes.data) {\n const message = `We're having trouble accessing your server at ${appClientUrl}.`;\n throw new Error(message);\n }\n return serverDataRes.data;\n}\n\n/** Sole job is to strip `metaState` if it's there */\nexport function prepAppClientData(\n state: KsAppClientData,\n): KsAppClientDataNoMeta {\n const { metaState, ...appClientDataNoMeta } = state;\n return appClientDataNoMeta;\n}\n\nexport async function prepareDataForFileSave({\n urlBase,\n state,\n}: {\n urlBase: string;\n state: KsAppClientDataNoMeta;\n}): Promise<GenericResponse<KsFileSaverParams>> {\n try {\n const body: KnapsackDataStoreSaveBody = {\n state: prepAppClientData(state),\n };\n const data = await fetcher<GenericResponse<KsFileSaverParams>>({\n url: urlJoin(urlBase, '/api/v1/data-store-prep' satisfies EndpointPaths),\n body,\n });\n\n return data;\n } catch (err) {\n if (err instanceof FetcherError) {\n // Preserve the upstream response so the caller can log the actual\n // headers/body of the failure instead of just \"Error 500\".\n return {\n ok: false,\n message: err.message,\n meta: {\n status: err.status,\n statusText: err.statusText,\n url: err.url,\n responseHeaders: err.responseHeaders,\n responseBody: err.responseBody,\n },\n };\n }\n return {\n ok: false,\n message: err instanceof Error ? err.message : 'Unknown error',\n };\n }\n}\n\nexport async function submitDataForFileSave({\n urlBase,\n state,\n}: {\n urlBase: string;\n state: KsAppClientDataNoMeta;\n}): Promise<void> {\n const appClientData = prepAppClientData(state);\n const body: KnapsackDataStoreSaveBody = {\n state: appClientData,\n };\n const data = await fetcher<GenericResponse>({\n url: urlJoin(urlBase, '/api/v1/data-store' satisfies EndpointPaths),\n body,\n });\n\n if (!data.ok) {\n throw new Error(`Could not save data to localhost files: ${data.message}`);\n }\n}\n\nexport async function getPluginContent({\n pluginId,\n appClientUrl,\n}: {\n appClientUrl: string;\n} & Except<ExtractEndpointData<EndpointPlugins>, 'type'>): Promise<\n ExtractEndpointResBody<EndpointPlugins>\n> {\n return fetcher({\n url: urlJoin(\n appClientUrl,\n '/api/v1/plugins' satisfies EndpointPlugins['path'],\n ),\n body: {\n pluginId,\n type: 'getContent',\n } satisfies ExtractEndpointData<EndpointPlugins>,\n });\n}\n\nexport async function renderTemplate({\n options,\n appClientUrl,\n}: {\n options: PatternRenderData;\n appClientUrl: string;\n}): Promise<KsRenderResults> {\n const data = await fetcher<KsRenderResults>({\n url: urlJoin(appClientUrl, '/api/v1/render' satisfies EndpointPaths),\n body: options,\n });\n return data;\n}\n\nexport async function verifyFile({\n appClientUrl,\n payload,\n}: {\n appClientUrl: string;\n payload: ExtractEndpointData<EndpointFiles>['payload'];\n}) {\n const data = await fetcher<ExtractEndpointResBody<EndpointFiles>>({\n url: urlJoin(appClientUrl, '/api/v1/files' satisfies EndpointFiles['path']),\n body: {\n type: 'verify',\n payload,\n } satisfies ExtractEndpointData<EndpointFiles>,\n });\n return data.payload;\n}\n\nexport async function getDiscovery({\n appClientUrl,\n authHeader,\n}: {\n appClientUrl: string;\n authHeader: string;\n}): Promise<\n | {\n type: 'success';\n data: RouteDiscovery['output'];\n }\n | { type: 'routeNotAvailable' }\n> {\n try {\n const headers: Record<string, string> = {};\n if (authHeader) {\n headers.authorization = authHeader;\n }\n const data = await fetcher<RouteDiscovery['output']>({\n url: urlJoin(\n appClientUrl,\n '/api/v2/discovery' satisfies RouteDiscovery['path'],\n ),\n headers,\n });\n if (!data) {\n throw new Error('No result from discovery');\n }\n return {\n type: 'success',\n data,\n };\n } catch (error) {\n if (error instanceof FetcherError && error.status === 404) {\n return {\n type: 'routeNotAvailable',\n };\n }\n // being extra cautious here to avoid throwing an error\n return { type: 'routeNotAvailable' };\n }\n}\n\nexport async function inspectTemplate({\n appClientUrl,\n templateInfo,\n authHeader,\n}: {\n appClientUrl: string;\n templateInfo: RouteInspect['input'];\n authHeader: string;\n}): Promise<RouteInspect['output']> {\n const headers: Record<string, string> = {};\n if (authHeader) {\n headers.authorization = authHeader;\n }\n return fetcher({\n url: urlJoin(\n appClientUrl,\n '/api/v2/inspect' satisfies RouteInspect['path'],\n ),\n query: templateInfo,\n headers,\n });\n}\n"]}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import {fetcher,FetcherError}from'@knapsack/utils';import r from'url-join';var c=Object.defineProperty;var n=(e,t)=>c(e,"name",{value:t,configurable:true});async function g({appClientUrl:e,query:t}){return fetcher({url:new URL("/api/v1/template-suggestions",e).toString(),query:t})}n(g,"getTemplateSuggestions");async function D(e){try{let t=r(e,"/api/v1");return await fetcher({url:t})}catch(t){return {ok:false,message:t instanceof Error?t.message:"Unknown error"}}}n(D,"checkAppClientUrl");async function d({appClientUrl:e}){try{return {ok:true,data:await fetcher({url:r(e,"/api/v1/data-store")})}}catch(t){return {ok:false,message:t instanceof Error?t.message:"Unknown error"}}}n(d,"getDataStore");async function P({appClientUrl:e}){let t=await d({appClientUrl:e});if(!t.ok||!t.data){let a=`We're having trouble accessing your server at ${e}.`;throw new Error(a)}return t.data}n(P,"getAppClientData");function p(e){let{metaState:t,...a}=e;return a}n(p,"prepAppClientData");async function h({urlBase:e,state:t}){try{let a={state:p(t)};return await fetcher({url:r(e,"/api/v1/data-store-prep"),body:a})}catch(a){return {ok:false,message:a instanceof Error?a.message:"Unknown error"}}}n(h,"prepareDataForFileSave");async function C({urlBase:e,state:t}){let o={state:p(t)},i=await fetcher({url:r(e,"/api/v1/data-store"),body:o});if(!i.ok)throw new Error(`Could not save data to localhost files: ${i.message}`)}n(C,"submitDataForFileSave");async function x({pluginId:e,appClientUrl:t}){return fetcher({url:r(t,"/api/v1/plugins"),body:{pluginId:e,type:"getContent"}})}n(x,"getPluginContent");async function A({options:e,appClientUrl:t}){return await fetcher({url:r(t,"/api/v1/render"),body:e})}n(A,"renderTemplate");async function S({appClientUrl:e,payload:t}){return (await fetcher({url:r(e,"/api/v1/files"),body:{type:"verify",payload:t}})).payload}n(S,"verifyFile");async function K({appClientUrl:e,authHeader:t}){try{let a={};t&&(a.authorization=t);let o=await fetcher({url:r(e,"/api/v2/discovery"),headers:a});if(!o)throw new Error("No result from discovery");return {type:"success",data:o}}catch(a){return a instanceof FetcherError&&a.status===404?{type:"routeNotAvailable"}:{type:"routeNotAvailable"}}}n(K,"getDiscovery");async function w({appClientUrl:e,templateInfo:t,authHeader:a}){let o={};return a&&(o.authorization=a),fetcher({url:r(e,"/api/v2/inspect"),query:t,headers:o})}n(w,"inspectTemplate");export{D as checkAppClientUrl,P as getAppClientData,d as getDataStore,K as getDiscovery,x as getPluginContent,g as getTemplateSuggestions,w as inspectTemplate,p as prepAppClientData,h as prepareDataForFileSave,A as renderTemplate,C as submitDataForFileSave,S as verifyFile};//# sourceMappingURL=index.mjs.map
1
+ import {fetcher,FetcherError}from'@knapsack/utils';import r from'url-join';var l=Object.defineProperty;var s=(a,t)=>l(a,"name",{value:t,configurable:true});async function g({appClientUrl:a,query:t}){return fetcher({url:new URL("/api/v1/template-suggestions",a).toString(),query:t})}s(g,"getTemplateSuggestions");async function D(a){try{let t=r(a,"/api/v1");return await fetcher({url:t})}catch(t){return {ok:false,message:t instanceof Error?t.message:"Unknown error"}}}s(D,"checkAppClientUrl");async function d({appClientUrl:a}){try{return {ok:true,data:await fetcher({url:r(a,"/api/v1/data-store")})}}catch(t){return {ok:false,message:t instanceof Error?t.message:"Unknown error"}}}s(d,"getDataStore");async function P({appClientUrl:a}){let t=await d({appClientUrl:a});if(!t.ok||!t.data){let e=`We're having trouble accessing your server at ${a}.`;throw new Error(e)}return t.data}s(P,"getAppClientData");function c(a){let{metaState:t,...e}=a;return e}s(c,"prepAppClientData");async function h({urlBase:a,state:t}){try{let e={state:c(t)};return await fetcher({url:r(a,"/api/v1/data-store-prep"),body:e})}catch(e){return e instanceof FetcherError?{ok:false,message:e.message,meta:{status:e.status,statusText:e.statusText,url:e.url,responseHeaders:e.responseHeaders,responseBody:e.responseBody}}:{ok:false,message:e instanceof Error?e.message:"Unknown error"}}}s(h,"prepareDataForFileSave");async function x({urlBase:a,state:t}){let o={state:c(t)},i=await fetcher({url:r(a,"/api/v1/data-store"),body:o});if(!i.ok)throw new Error(`Could not save data to localhost files: ${i.message}`)}s(x,"submitDataForFileSave");async function C({pluginId:a,appClientUrl:t}){return fetcher({url:r(t,"/api/v1/plugins"),body:{pluginId:a,type:"getContent"}})}s(C,"getPluginContent");async function A({options:a,appClientUrl:t}){return await fetcher({url:r(t,"/api/v1/render"),body:a})}s(A,"renderTemplate");async function S({appClientUrl:a,payload:t}){return (await fetcher({url:r(a,"/api/v1/files"),body:{type:"verify",payload:t}})).payload}s(S,"verifyFile");async function K({appClientUrl:a,authHeader:t}){try{let e={};t&&(e.authorization=t);let o=await fetcher({url:r(a,"/api/v2/discovery"),headers:e});if(!o)throw new Error("No result from discovery");return {type:"success",data:o}}catch(e){return e instanceof FetcherError&&e.status===404?{type:"routeNotAvailable"}:{type:"routeNotAvailable"}}}s(K,"getDiscovery");async function k({appClientUrl:a,templateInfo:t,authHeader:e}){let o={};return e&&(o.authorization=e),fetcher({url:r(a,"/api/v2/inspect"),query:t,headers:o})}s(k,"inspectTemplate");export{D as checkAppClientUrl,P as getAppClientData,d as getDataStore,K as getDiscovery,C as getPluginContent,g as getTemplateSuggestions,k as inspectTemplate,c as prepAppClientData,h as prepareDataForFileSave,A as renderTemplate,x as submitDataForFileSave,S as verifyFile};//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/get-template-suggestions.ts","../src/app-client-api.ts"],"names":["getTemplateSuggestions","appClientUrl","query","fetcher","__name","checkAppClientUrl","url","theUrl","urlJoin","err","getDataStore","getAppClientData","serverDataRes","message","prepAppClientData","state","metaState","appClientDataNoMeta","prepareDataForFileSave","urlBase","body","submitDataForFileSave","data","getPluginContent","pluginId","renderTemplate","options","verifyFile","payload","getDiscovery","authHeader","headers","error","FetcherError","inspectTemplate","templateInfo"],"mappings":"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","file":"index.mjs","sourcesContent":["import type {\n EndpointPaths,\n TemplateSuggestionsReqParams,\n TemplateSuggestionsResBody,\n} from '@knapsack/app/api-info';\nimport { fetcher } from '@knapsack/utils';\n\nexport async function getTemplateSuggestions({\n appClientUrl,\n query,\n}: {\n appClientUrl: string;\n query: TemplateSuggestionsReqParams;\n}): Promise<TemplateSuggestionsResBody> {\n return fetcher<TemplateSuggestionsResBody>({\n url: new URL(\n '/api/v1/template-suggestions' satisfies EndpointPaths,\n appClientUrl,\n ).toString(),\n query,\n });\n}\n","import {\n type KsAppClientData,\n type KsRenderResults,\n type Except,\n type GenericResponse,\n type KsAppClientDataAndMeta,\n type KsAppClientDataNoMeta,\n type KsFileSaverParams,\n} from '@knapsack/types';\nimport { fetcher, FetcherError } from '@knapsack/utils';\nimport urlJoin from 'url-join';\nimport type {\n PatternRenderData,\n KnapsackDataStoreSaveBody,\n EndpointPaths,\n EndpointFiles,\n ExtractEndpointData,\n ExtractEndpointResBody,\n EndpointPlugins,\n RouteDiscovery,\n RouteInspect,\n} from '@knapsack/app/api-info';\n\nexport type { PatternRenderData, EndpointPaths };\n\nexport async function checkAppClientUrl(url: string): Promise<GenericResponse> {\n try {\n const theUrl = urlJoin(url, '/api/v1' satisfies EndpointPaths);\n const res = await fetcher<GenericResponse>({\n url: theUrl,\n });\n return res;\n } catch (err) {\n return {\n ok: false,\n message: err instanceof Error ? err.message : 'Unknown error',\n };\n }\n}\n\nexport async function getDataStore({\n appClientUrl,\n}: {\n appClientUrl: string;\n}): Promise<GenericResponse<KsAppClientDataAndMeta>> {\n try {\n const data = await fetcher<KsAppClientDataAndMeta>({\n url: urlJoin(appClientUrl, '/api/v1/data-store' satisfies EndpointPaths),\n });\n\n return {\n ok: true,\n data,\n };\n } catch (err) {\n return {\n ok: false,\n message: err instanceof Error ? err.message : 'Unknown error',\n };\n }\n}\n\n// just need a function that can throw an error\nexport async function getAppClientData({\n appClientUrl,\n}: {\n appClientUrl: string;\n}): Promise<KsAppClientDataAndMeta> {\n const serverDataRes = await getDataStore({ appClientUrl });\n if (!serverDataRes.ok || !serverDataRes.data) {\n const message = `We're having trouble accessing your server at ${appClientUrl}.`;\n throw new Error(message);\n }\n return serverDataRes.data;\n}\n\n/** Sole job is to strip `metaState` if it's there */\nexport function prepAppClientData(\n state: KsAppClientData,\n): KsAppClientDataNoMeta {\n const { metaState, ...appClientDataNoMeta } = state;\n return appClientDataNoMeta;\n}\n\nexport async function prepareDataForFileSave({\n urlBase,\n state,\n}: {\n urlBase: string;\n state: KsAppClientDataNoMeta;\n}): Promise<GenericResponse<KsFileSaverParams>> {\n try {\n const body: KnapsackDataStoreSaveBody = {\n state: prepAppClientData(state),\n };\n const data = await fetcher<GenericResponse<KsFileSaverParams>>({\n url: urlJoin(urlBase, '/api/v1/data-store-prep' satisfies EndpointPaths),\n body,\n });\n\n return data;\n } catch (err) {\n return {\n ok: false,\n message: err instanceof Error ? err.message : 'Unknown error',\n };\n }\n}\n\nexport async function submitDataForFileSave({\n urlBase,\n state,\n}: {\n urlBase: string;\n state: KsAppClientDataNoMeta;\n}): Promise<void> {\n const appClientData = prepAppClientData(state);\n const body: KnapsackDataStoreSaveBody = {\n state: appClientData,\n };\n const data = await fetcher<GenericResponse>({\n url: urlJoin(urlBase, '/api/v1/data-store' satisfies EndpointPaths),\n body,\n });\n\n if (!data.ok) {\n throw new Error(`Could not save data to localhost files: ${data.message}`);\n }\n}\n\nexport async function getPluginContent({\n pluginId,\n appClientUrl,\n}: {\n appClientUrl: string;\n} & Except<ExtractEndpointData<EndpointPlugins>, 'type'>): Promise<\n ExtractEndpointResBody<EndpointPlugins>\n> {\n return fetcher({\n url: urlJoin(\n appClientUrl,\n '/api/v1/plugins' satisfies EndpointPlugins['path'],\n ),\n body: {\n pluginId,\n type: 'getContent',\n } satisfies ExtractEndpointData<EndpointPlugins>,\n });\n}\n\nexport async function renderTemplate({\n options,\n appClientUrl,\n}: {\n options: PatternRenderData;\n appClientUrl: string;\n}): Promise<KsRenderResults> {\n const data = await fetcher<KsRenderResults>({\n url: urlJoin(appClientUrl, '/api/v1/render' satisfies EndpointPaths),\n body: options,\n });\n return data;\n}\n\nexport async function verifyFile({\n appClientUrl,\n payload,\n}: {\n appClientUrl: string;\n payload: ExtractEndpointData<EndpointFiles>['payload'];\n}) {\n const data = await fetcher<ExtractEndpointResBody<EndpointFiles>>({\n url: urlJoin(appClientUrl, '/api/v1/files' satisfies EndpointFiles['path']),\n body: {\n type: 'verify',\n payload,\n } satisfies ExtractEndpointData<EndpointFiles>,\n });\n return data.payload;\n}\n\nexport async function getDiscovery({\n appClientUrl,\n authHeader,\n}: {\n appClientUrl: string;\n authHeader: string;\n}): Promise<\n | {\n type: 'success';\n data: RouteDiscovery['output'];\n }\n | { type: 'routeNotAvailable' }\n> {\n try {\n const headers: Record<string, string> = {};\n if (authHeader) {\n headers.authorization = authHeader;\n }\n const data = await fetcher<RouteDiscovery['output']>({\n url: urlJoin(\n appClientUrl,\n '/api/v2/discovery' satisfies RouteDiscovery['path'],\n ),\n headers,\n });\n if (!data) {\n throw new Error('No result from discovery');\n }\n return {\n type: 'success',\n data,\n };\n } catch (error) {\n if (error instanceof FetcherError && error.status === 404) {\n return {\n type: 'routeNotAvailable',\n };\n }\n // being extra cautious here to avoid throwing an error\n return { type: 'routeNotAvailable' };\n }\n}\n\nexport async function inspectTemplate({\n appClientUrl,\n templateInfo,\n authHeader,\n}: {\n appClientUrl: string;\n templateInfo: RouteInspect['input'];\n authHeader: string;\n}): Promise<RouteInspect['output']> {\n const headers: Record<string, string> = {};\n if (authHeader) {\n headers.authorization = authHeader;\n }\n return fetcher({\n url: urlJoin(\n appClientUrl,\n '/api/v2/inspect' satisfies RouteInspect['path'],\n ),\n query: templateInfo,\n headers,\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/get-template-suggestions.ts","../src/app-client-api.ts"],"names":["getTemplateSuggestions","appClientUrl","query","fetcher","__name","checkAppClientUrl","url","theUrl","urlJoin","err","getDataStore","getAppClientData","serverDataRes","message","prepAppClientData","state","metaState","appClientDataNoMeta","prepareDataForFileSave","urlBase","body","FetcherError","submitDataForFileSave","data","getPluginContent","pluginId","renderTemplate","options","verifyFile","payload","getDiscovery","authHeader","headers","error","inspectTemplate","templateInfo"],"mappings":"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","file":"index.mjs","sourcesContent":["import type {\n EndpointPaths,\n TemplateSuggestionsReqParams,\n TemplateSuggestionsResBody,\n} from '@knapsack/app/api-info';\nimport { fetcher } from '@knapsack/utils';\n\nexport async function getTemplateSuggestions({\n appClientUrl,\n query,\n}: {\n appClientUrl: string;\n query: TemplateSuggestionsReqParams;\n}): Promise<TemplateSuggestionsResBody> {\n return fetcher<TemplateSuggestionsResBody>({\n url: new URL(\n '/api/v1/template-suggestions' satisfies EndpointPaths,\n appClientUrl,\n ).toString(),\n query,\n });\n}\n","import {\n type KsAppClientData,\n type KsRenderResults,\n type Except,\n type GenericResponse,\n type KsAppClientDataAndMeta,\n type KsAppClientDataNoMeta,\n type KsFileSaverParams,\n} from '@knapsack/types';\nimport { fetcher, FetcherError } from '@knapsack/utils';\nimport urlJoin from 'url-join';\nimport type {\n PatternRenderData,\n KnapsackDataStoreSaveBody,\n EndpointPaths,\n EndpointFiles,\n ExtractEndpointData,\n ExtractEndpointResBody,\n EndpointPlugins,\n RouteDiscovery,\n RouteInspect,\n} from '@knapsack/app/api-info';\n\nexport type { PatternRenderData, EndpointPaths };\n\nexport async function checkAppClientUrl(url: string): Promise<GenericResponse> {\n try {\n const theUrl = urlJoin(url, '/api/v1' satisfies EndpointPaths);\n const res = await fetcher<GenericResponse>({\n url: theUrl,\n });\n return res;\n } catch (err) {\n return {\n ok: false,\n message: err instanceof Error ? err.message : 'Unknown error',\n };\n }\n}\n\nexport async function getDataStore({\n appClientUrl,\n}: {\n appClientUrl: string;\n}): Promise<GenericResponse<KsAppClientDataAndMeta>> {\n try {\n const data = await fetcher<KsAppClientDataAndMeta>({\n url: urlJoin(appClientUrl, '/api/v1/data-store' satisfies EndpointPaths),\n });\n\n return {\n ok: true,\n data,\n };\n } catch (err) {\n return {\n ok: false,\n message: err instanceof Error ? err.message : 'Unknown error',\n };\n }\n}\n\n// just need a function that can throw an error\nexport async function getAppClientData({\n appClientUrl,\n}: {\n appClientUrl: string;\n}): Promise<KsAppClientDataAndMeta> {\n const serverDataRes = await getDataStore({ appClientUrl });\n if (!serverDataRes.ok || !serverDataRes.data) {\n const message = `We're having trouble accessing your server at ${appClientUrl}.`;\n throw new Error(message);\n }\n return serverDataRes.data;\n}\n\n/** Sole job is to strip `metaState` if it's there */\nexport function prepAppClientData(\n state: KsAppClientData,\n): KsAppClientDataNoMeta {\n const { metaState, ...appClientDataNoMeta } = state;\n return appClientDataNoMeta;\n}\n\nexport async function prepareDataForFileSave({\n urlBase,\n state,\n}: {\n urlBase: string;\n state: KsAppClientDataNoMeta;\n}): Promise<GenericResponse<KsFileSaverParams>> {\n try {\n const body: KnapsackDataStoreSaveBody = {\n state: prepAppClientData(state),\n };\n const data = await fetcher<GenericResponse<KsFileSaverParams>>({\n url: urlJoin(urlBase, '/api/v1/data-store-prep' satisfies EndpointPaths),\n body,\n });\n\n return data;\n } catch (err) {\n if (err instanceof FetcherError) {\n // Preserve the upstream response so the caller can log the actual\n // headers/body of the failure instead of just \"Error 500\".\n return {\n ok: false,\n message: err.message,\n meta: {\n status: err.status,\n statusText: err.statusText,\n url: err.url,\n responseHeaders: err.responseHeaders,\n responseBody: err.responseBody,\n },\n };\n }\n return {\n ok: false,\n message: err instanceof Error ? err.message : 'Unknown error',\n };\n }\n}\n\nexport async function submitDataForFileSave({\n urlBase,\n state,\n}: {\n urlBase: string;\n state: KsAppClientDataNoMeta;\n}): Promise<void> {\n const appClientData = prepAppClientData(state);\n const body: KnapsackDataStoreSaveBody = {\n state: appClientData,\n };\n const data = await fetcher<GenericResponse>({\n url: urlJoin(urlBase, '/api/v1/data-store' satisfies EndpointPaths),\n body,\n });\n\n if (!data.ok) {\n throw new Error(`Could not save data to localhost files: ${data.message}`);\n }\n}\n\nexport async function getPluginContent({\n pluginId,\n appClientUrl,\n}: {\n appClientUrl: string;\n} & Except<ExtractEndpointData<EndpointPlugins>, 'type'>): Promise<\n ExtractEndpointResBody<EndpointPlugins>\n> {\n return fetcher({\n url: urlJoin(\n appClientUrl,\n '/api/v1/plugins' satisfies EndpointPlugins['path'],\n ),\n body: {\n pluginId,\n type: 'getContent',\n } satisfies ExtractEndpointData<EndpointPlugins>,\n });\n}\n\nexport async function renderTemplate({\n options,\n appClientUrl,\n}: {\n options: PatternRenderData;\n appClientUrl: string;\n}): Promise<KsRenderResults> {\n const data = await fetcher<KsRenderResults>({\n url: urlJoin(appClientUrl, '/api/v1/render' satisfies EndpointPaths),\n body: options,\n });\n return data;\n}\n\nexport async function verifyFile({\n appClientUrl,\n payload,\n}: {\n appClientUrl: string;\n payload: ExtractEndpointData<EndpointFiles>['payload'];\n}) {\n const data = await fetcher<ExtractEndpointResBody<EndpointFiles>>({\n url: urlJoin(appClientUrl, '/api/v1/files' satisfies EndpointFiles['path']),\n body: {\n type: 'verify',\n payload,\n } satisfies ExtractEndpointData<EndpointFiles>,\n });\n return data.payload;\n}\n\nexport async function getDiscovery({\n appClientUrl,\n authHeader,\n}: {\n appClientUrl: string;\n authHeader: string;\n}): Promise<\n | {\n type: 'success';\n data: RouteDiscovery['output'];\n }\n | { type: 'routeNotAvailable' }\n> {\n try {\n const headers: Record<string, string> = {};\n if (authHeader) {\n headers.authorization = authHeader;\n }\n const data = await fetcher<RouteDiscovery['output']>({\n url: urlJoin(\n appClientUrl,\n '/api/v2/discovery' satisfies RouteDiscovery['path'],\n ),\n headers,\n });\n if (!data) {\n throw new Error('No result from discovery');\n }\n return {\n type: 'success',\n data,\n };\n } catch (error) {\n if (error instanceof FetcherError && error.status === 404) {\n return {\n type: 'routeNotAvailable',\n };\n }\n // being extra cautious here to avoid throwing an error\n return { type: 'routeNotAvailable' };\n }\n}\n\nexport async function inspectTemplate({\n appClientUrl,\n templateInfo,\n authHeader,\n}: {\n appClientUrl: string;\n templateInfo: RouteInspect['input'];\n authHeader: string;\n}): Promise<RouteInspect['output']> {\n const headers: Record<string, string> = {};\n if (authHeader) {\n headers.authorization = authHeader;\n }\n return fetcher({\n url: urlJoin(\n appClientUrl,\n '/api/v2/inspect' satisfies RouteInspect['path'],\n ),\n query: templateInfo,\n headers,\n });\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@knapsack/app-client-api",
3
3
  "description": "",
4
- "version": "4.95.0--canary.7742.736ca94.0",
4
+ "version": "4.95.0--canary.7460.ae676ed.0",
5
5
  "exports": {
6
6
  ".": {
7
7
  "types": "./dist/index.d.ts",
@@ -21,17 +21,17 @@
21
21
  "lint": "eslint ./"
22
22
  },
23
23
  "dependencies": {
24
- "@knapsack/app": "4.95.0--canary.7742.736ca94.0",
25
- "@knapsack/types": "4.95.0--canary.7742.736ca94.0",
26
- "@knapsack/utils": "4.95.0--canary.7742.736ca94.0",
24
+ "@knapsack/app": "4.95.0--canary.7460.ae676ed.0",
25
+ "@knapsack/types": "4.95.0--canary.7460.ae676ed.0",
26
+ "@knapsack/utils": "4.95.0--canary.7460.ae676ed.0",
27
27
  "cross-fetch": "^4.1.0",
28
28
  "url-join": "^4.0.1"
29
29
  },
30
30
  "devDependencies": {
31
- "@knapsack/eslint-config-starter": "4.95.0--canary.7742.736ca94.0",
32
- "@knapsack/prettier-config": "4.95.0--canary.7742.736ca94.0",
33
- "@knapsack/typescript-config-starter": "4.95.0--canary.7742.736ca94.0",
34
- "@types/node": "^22.19.11",
31
+ "@knapsack/eslint-config-starter": "4.95.0--canary.7460.ae676ed.0",
32
+ "@knapsack/prettier-config": "4.95.0--canary.7460.ae676ed.0",
33
+ "@knapsack/typescript-config-starter": "4.95.0--canary.7460.ae676ed.0",
34
+ "@types/node": "^24.13.2",
35
35
  "@types/url-join": "^4.0.3",
36
36
  "eslint": "^9.20.0",
37
37
  "tsup": "^8.5.1",
@@ -46,5 +46,5 @@
46
46
  "directory": "libs/app-client-api",
47
47
  "type": "git"
48
48
  },
49
- "gitHead": "736ca94359836063c33f65b578c9aa7eaff26c09"
49
+ "gitHead": "ae676edc838d28b8a6b40f404846863c602e7b1a"
50
50
  }