@knapsack/app-client-api 5.0.0--canary.6593.d6350c3.0 β†’ 5.0.0--canary.7791.86072ba.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.lintstagedrc.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { dirname } from 'path';
2
- import { fileURLToPath } from 'url';
1
+ import { dirname } from 'node:path';
2
+ import { fileURLToPath } from 'node:url';
3
3
 
4
4
  import defaultConfig from '../../.lintstagedrc.mjs';
5
5
 
package/CHANGELOG.md CHANGED
@@ -1,3 +1,143 @@
1
+ # v4.89.8 (Fri Feb 20 2026)
2
+
3
+ ### Release Notes
4
+
5
+ #### KSP-7685: Synthetic Data for Conflict Enrichment/Resolution testing ([#7154](https://github.com/knapsack-labs/app-monorepo/pull/7154))
6
+
7
+ * **Documentation**
8
+ * Added synthetic multi-source test fixtures including component documentation, design tokens, and brand guidelines for comprehensive testing coverage.
9
+
10
+ <!-- end of auto-generated comment: release notes by coderabbit.ai -->
11
+
12
+ ---
13
+
14
+ #### πŸ› Bug Fix
15
+
16
+ - merge latest in ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
17
+ - Merge branch 'latest' into sxa/KSP-7037-tests-v2 ([@sxalexander](https://github.com/sxalexander))
18
+ - Use node: protocol prefix in all .lintstagedrc.mjs files ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
19
+ - Migrated ESLint config to flat config format (ESLint 9) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
20
+
21
+ #### 🏠 Internal
22
+
23
+ - KSP-7685: Synthetic Data for Conflict Enrichment/Resolution testing [#7154](https://github.com/knapsack-labs/app-monorepo/pull/7154) ([@sxalexander](https://github.com/sxalexander))
24
+ - KSP-5524 Migrated ESLint config to flat config format (ESLint 9) [#7162](https://github.com/knapsack-labs/app-monorepo/pull/7162) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
25
+
26
+ #### Authors: 2
27
+
28
+ - [@EmmanuelVelez](https://github.com/EmmanuelVelez)
29
+ - Sam Alexander ([@sxalexander](https://github.com/sxalexander))
30
+
31
+ ---
32
+
33
+ # v4.89.7 (Fri Feb 06 2026)
34
+
35
+ #### πŸ› Bug Fix
36
+
37
+ - Merge branch 'latest' into feature/ksp-6555-remove-app-client-watchers-for-files-in-data-directory ([@EvanLovely](https://github.com/EvanLovely))
38
+ - Merge branch 'latest' into feature/ksp-6555-remove-app-client-watchers-for-files-in-data-directory ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
39
+
40
+ #### 🏠 Internal
41
+
42
+ - KSP-6106 Added consistent-type-imports rule with inline type syntax [#7128](https://github.com/knapsack-labs/app-monorepo/pull/7128) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
43
+ - KSP-7692: expand server actions body size limit [#7097](https://github.com/knapsack-labs/app-monorepo/pull/7097) ([@illepic](https://github.com/illepic))
44
+ - KSP-7623 resolved some of react-hooks/set-state-in-effect lint errors and enab… [#7077](https://github.com/knapsack-labs/app-monorepo/pull/7077) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
45
+
46
+ #### Authors: 3
47
+
48
+ - [@EmmanuelVelez](https://github.com/EmmanuelVelez)
49
+ - Christopher Bloom ([@illepic](https://github.com/illepic))
50
+ - Evan Lovely ([@EvanLovely](https://github.com/EvanLovely))
51
+
52
+ ---
53
+
54
+ # v4.89.4 (Mon Jan 05 2026)
55
+
56
+ #### 🏠 Internal
57
+
58
+ - KSP-6086 normalize error and log metadata for api domains [#6997](https://github.com/knapsack-labs/app-monorepo/pull/6997) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
59
+
60
+ #### Authors: 1
61
+
62
+ - [@EmmanuelVelez](https://github.com/EmmanuelVelez)
63
+
64
+ ---
65
+
66
+ # v4.89.3 (Thu Dec 11 2025)
67
+
68
+ #### πŸ› Bug Fix
69
+
70
+ - KSP-6536 Fixed align token metrics counting with UI logic for variables and collections [#6778](https://github.com/knapsack-labs/app-monorepo/pull/6778) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
71
+ - Merge branch 'latest' into feature/ksp-6536-metrics-not-computing-tokens-and-variables-correctly ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
72
+ - Merge remote-tracking branch 'origin/feature/ksp-6536-metrics-not-computing-tokens-and-variables-correctly' into feature/ksp-6536-metrics-not-computing-tokens-and-variables-correctly ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
73
+
74
+ #### Authors: 1
75
+
76
+ - [@EmmanuelVelez](https://github.com/EmmanuelVelez)
77
+
78
+ ---
79
+
80
+ # v4.89.1 (Wed Dec 10 2025)
81
+
82
+ #### πŸ› Bug Fix
83
+
84
+ - Merge remote-tracking branch 'origin/latest' into KSP-6900_mcp_onboarding_pages ([@brittanysmart](https://github.com/brittanysmart))
85
+
86
+ #### Authors: 1
87
+
88
+ - Brittany Smart ([@brittanysmart](https://github.com/brittanysmart))
89
+
90
+ ---
91
+
92
+ # v4.87.9 (Thu Nov 20 2025)
93
+
94
+ #### 🏠 Internal
95
+
96
+ - fix(deps): update dependency @types/node to ^20.19.25 [#6803](https://github.com/knapsack-labs/app-monorepo/pull/6803) ([@renovate[bot]](https://github.com/renovate[bot]))
97
+ - chore(deps): update typescript [#6933](https://github.com/knapsack-labs/app-monorepo/pull/6933) ([@renovate[bot]](https://github.com/renovate[bot]))
98
+
99
+ #### Authors: 1
100
+
101
+ - [@renovate[bot]](https://github.com/renovate[bot])
102
+
103
+ ---
104
+
105
+ # v4.87.7 (Mon Nov 10 2025)
106
+
107
+ #### 🏠 Internal
108
+
109
+ - fix(deps): update typescript [#6863](https://github.com/knapsack-labs/app-monorepo/pull/6863) ([@renovate[bot]](https://github.com/renovate[bot]))
110
+
111
+ #### Authors: 1
112
+
113
+ - [@renovate[bot]](https://github.com/renovate[bot])
114
+
115
+ ---
116
+
117
+ # v4.87.6 (Wed Nov 05 2025)
118
+
119
+ #### 🏠 Internal
120
+
121
+ - Add comprehensive testing for remaining frameworks and MUI lib [#6876](https://github.com/knapsack-labs/app-monorepo/pull/6876) ([@mabry1985](https://github.com/mabry1985))
122
+
123
+ #### Authors: 1
124
+
125
+ - Josh Mabry ([@mabry1985](https://github.com/mabry1985))
126
+
127
+ ---
128
+
129
+ # v4.87.4 (Fri Oct 31 2025)
130
+
131
+ #### 🏠 Internal
132
+
133
+ - adds wider testing to angular renderer [#6871](https://github.com/knapsack-labs/app-monorepo/pull/6871) ([@mabry1985](https://github.com/mabry1985))
134
+
135
+ #### Authors: 1
136
+
137
+ - Josh Mabry ([@mabry1985](https://github.com/mabry1985))
138
+
139
+ ---
140
+
1
141
  # v4.87.3 (Thu Oct 30 2025)
2
142
 
3
143
  #### πŸ› Bug Fix
@@ -1,5 +1,4 @@
1
- import { KsAppClientData, KsRenderResults } from '@knapsack/types';
2
- import type { Except, GenericResponse, KsAppClientDataAndMeta, KsAppClientDataNoMeta, KsFileSaverParams } from '@knapsack/types';
1
+ import { type KsAppClientData, type KsRenderResults, type Except, type GenericResponse, type KsAppClientDataAndMeta, type KsAppClientDataNoMeta, type KsFileSaverParams } from '@knapsack/types';
3
2
  import type { PatternRenderData, EndpointPaths, EndpointFiles, ExtractEndpointData, ExtractEndpointResBody, EndpointPlugins, RouteDiscovery, RouteInspect } from '@knapsack/app/api-info';
4
3
  export type { PatternRenderData, EndpointPaths };
5
4
  export declare function checkAppClientUrl(url: string): Promise<GenericResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"app-client-api.d.ts","sourceRoot":"","sources":["../src/app-client-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EACV,MAAM,EACN,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EAClB,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,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"}
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 K({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(K,"inspectTemplate");exports.checkAppClientUrl=D;exports.getAppClientData=P;exports.getDataStore=d;exports.getDiscovery=k;exports.getPluginContent=x;exports.getTemplateSuggestions=g;exports.inspectTemplate=K;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 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
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 { KsAppClientData, KsRenderResults } from '@knapsack/types';\nimport type {\n Except,\n GenericResponse,\n KsAppClientDataAndMeta,\n KsAppClientDataNoMeta,\n 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","submitDataForFileSave","data","getPluginContent","pluginId","renderTemplate","options","verifyFile","payload","getDiscovery","authHeader","headers","error","FetcherError","inspectTemplate","templateInfo"],"mappings":"yQAOA,eAAsBA,CAAAA,CAAuB,CAC3C,YAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CACF,CAAA,CAGwC,CACtC,OAAOC,aAAAA,CAAoC,CACzC,GAAA,CAAK,IAAI,GAAA,CACP,8BAAA,CACAF,CACF,CAAA,CAAE,QAAA,EAAS,CACX,KAAA,CAAAC,CACF,CAAC,CACH,CAdsBE,CAAAA,CAAAJ,CAAAA,CAAA,wBAAA,CAAA,CCkBtB,eAAsBK,CAAAA,CAAkBC,EAAuC,CAC7E,GAAI,CACF,IAAMC,CAAAA,CAASC,kBAAAA,CAAQF,CAAAA,CAAK,SAAiC,CAAA,CAI7D,OAHY,MAAMH,aAAAA,CAAyB,CACzC,GAAA,CAAKI,CACP,CAAC,CAEH,CAAA,MAASE,CAAAA,CAAK,CACZ,OAAO,CACL,EAAA,CAAI,KAAA,CACJ,OAAA,CAASA,CAAAA,YAAe,KAAA,CAAQA,CAAAA,CAAI,OAAA,CAAU,eAChD,CACF,CACF,CAbsBL,CAAAA,CAAAC,CAAAA,CAAA,mBAAA,CAAA,CAetB,eAAsBK,CAAAA,CAAa,CACjC,YAAA,CAAAT,CACF,CAAA,CAEqD,CACnD,GAAI,CAKF,OAAO,CACL,EAAA,CAAI,IAAA,CACJ,IAAA,CANW,MAAME,aAAAA,CAAgC,CACjD,GAAA,CAAKK,kBAAAA,CAAQP,CAAAA,CAAc,oBAA4C,CACzE,CAAC,CAKD,CACF,CAAA,MAASQ,CAAAA,CAAK,CACZ,OAAO,CACL,EAAA,CAAI,KAAA,CACJ,OAAA,CAASA,CAAAA,YAAe,KAAA,CAAQA,CAAAA,CAAI,OAAA,CAAU,eAChD,CACF,CACF,CApBsBL,CAAAA,CAAAM,CAAAA,CAAA,cAAA,CAAA,CAuBtB,eAAsBC,EAAiB,CACrC,YAAA,CAAAV,CACF,CAAA,CAEoC,CAClC,IAAMW,EAAgB,MAAMF,CAAAA,CAAa,CAAE,YAAA,CAAAT,CAAa,CAAC,CAAA,CACzD,GAAI,CAACW,CAAAA,CAAc,EAAA,EAAM,CAACA,CAAAA,CAAc,IAAA,CAAM,CAC5C,IAAMC,CAAAA,CAAU,CAAA,8CAAA,EAAiDZ,CAAY,CAAA,CAAA,CAAA,CAC7E,MAAM,IAAI,KAAA,CAAMY,CAAO,CACzB,CACA,OAAOD,CAAAA,CAAc,IACvB,CAXsBR,CAAAA,CAAAO,CAAAA,CAAA,kBAAA,CAAA,CAcf,SAASG,CAAAA,CACdC,CAAAA,CACuB,CACvB,GAAM,CAAE,SAAA,CAAAC,CAAAA,CAAW,GAAGC,CAAoB,CAAA,CAAIF,EAC9C,OAAOE,CACT,CALgBb,CAAAA,CAAAU,CAAAA,CAAA,mBAAA,CAAA,CAOhB,eAAsBI,CAAAA,CAAuB,CAC3C,OAAA,CAAAC,CAAAA,CACA,KAAA,CAAAJ,CACF,CAAA,CAGgD,CAC9C,GAAI,CACF,IAAMK,CAAAA,CAAkC,CACtC,KAAA,CAAON,CAAAA,CAAkBC,CAAK,CAChC,CAAA,CAMA,OALa,MAAMZ,aAAAA,CAA4C,CAC7D,IAAKK,kBAAAA,CAAQW,CAAAA,CAAS,yBAAiD,CAAA,CACvE,IAAA,CAAAC,CACF,CAAC,CAGH,CAAA,MAASX,CAAAA,CAAK,CACZ,OAAO,CACL,EAAA,CAAI,MACJ,OAAA,CAASA,CAAAA,YAAe,KAAA,CAAQA,CAAAA,CAAI,OAAA,CAAU,eAChD,CACF,CACF,CAvBsBL,CAAAA,CAAAc,CAAAA,CAAA,wBAAA,CAAA,CAyBtB,eAAsBG,CAAAA,CAAsB,CAC1C,OAAA,CAAAF,CAAAA,CACA,KAAA,CAAAJ,CACF,CAAA,CAGkB,CAEhB,IAAMK,CAAAA,CAAkC,CACtC,KAAA,CAFoBN,CAAAA,CAAkBC,CAAK,CAG7C,EACMO,CAAAA,CAAO,MAAMnB,aAAAA,CAAyB,CAC1C,GAAA,CAAKK,kBAAAA,CAAQW,CAAAA,CAAS,oBAA4C,CAAA,CAClE,IAAA,CAAAC,CACF,CAAC,CAAA,CAED,GAAI,CAACE,CAAAA,CAAK,EAAA,CACR,MAAM,IAAI,KAAA,CAAM,CAAA,wCAAA,EAA2CA,CAAAA,CAAK,OAAO,CAAA,CAAE,CAE7E,CAnBsBlB,CAAAA,CAAAiB,CAAAA,CAAA,uBAAA,CAAA,CAqBtB,eAAsBE,CAAAA,CAAiB,CACrC,QAAA,CAAAC,CAAAA,CACA,YAAA,CAAAvB,CACF,CAAA,CAIE,CACA,OAAOE,aAAAA,CAAQ,CACb,GAAA,CAAKK,kBAAAA,CACHP,CAAAA,CACA,iBACF,CAAA,CACA,IAAA,CAAM,CACJ,QAAA,CAAAuB,CAAAA,CACA,IAAA,CAAM,YACR,CACF,CAAC,CACH,CAlBsBpB,CAAAA,CAAAmB,CAAAA,CAAA,kBAAA,CAAA,CAoBtB,eAAsBE,CAAAA,CAAe,CACnC,OAAA,CAAAC,CAAAA,CACA,YAAA,CAAAzB,CACF,CAAA,CAG6B,CAK3B,OAJa,MAAME,aAAAA,CAAyB,CAC1C,GAAA,CAAKK,kBAAAA,CAAQP,EAAc,gBAAwC,CAAA,CACnE,IAAA,CAAMyB,CACR,CAAC,CAEH,CAZsBtB,CAAAA,CAAAqB,CAAAA,CAAA,gBAAA,CAAA,CActB,eAAsBE,CAAAA,CAAW,CAC/B,YAAA,CAAA1B,EACA,OAAA,CAAA2B,CACF,CAAA,CAGG,CAQD,OAAA,CAPa,MAAMzB,aAAAA,CAA+C,CAChE,GAAA,CAAKK,kBAAAA,CAAQP,CAAAA,CAAc,eAA+C,CAAA,CAC1E,IAAA,CAAM,CACJ,IAAA,CAAM,QAAA,CACN,OAAA,CAAA2B,CACF,CACF,CAAC,CAAA,EACW,OACd,CAfsBxB,CAAAA,CAAAuB,CAAAA,CAAA,YAAA,CAAA,CAiBtB,eAAsBE,CAAAA,CAAa,CACjC,YAAA,CAAA5B,CAAAA,CACA,UAAA,CAAA6B,CACF,CAAA,CASE,CACA,GAAI,CACF,IAAMC,CAAAA,CAAkC,EAAC,CACrCD,CAAAA,GACFC,CAAAA,CAAQ,cAAgBD,CAAAA,CAAAA,CAE1B,IAAMR,CAAAA,CAAO,MAAMnB,aAAAA,CAAkC,CACnD,GAAA,CAAKK,kBAAAA,CACHP,CAAAA,CACA,mBACF,CAAA,CACA,OAAA,CAAA8B,CACF,CAAC,EACD,GAAI,CAACT,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,0BAA0B,CAAA,CAE5C,OAAO,CACL,IAAA,CAAM,SAAA,CACN,IAAA,CAAAA,CACF,CACF,CAAA,MAASU,CAAAA,CAAO,CACd,OAAIA,CAAAA,YAAiBC,kBAAAA,EAAgBD,CAAAA,CAAM,MAAA,GAAW,GAAA,CAC7C,CACL,IAAA,CAAM,mBACR,CAAA,CAGK,CAAE,KAAM,mBAAoB,CACrC,CACF,CAzCsB5B,CAAAA,CAAAyB,CAAAA,CAAA,cAAA,CAAA,CA2CtB,eAAsBK,CAAAA,CAAgB,CACpC,YAAA,CAAAjC,CAAAA,CACA,YAAA,CAAAkC,CAAAA,CACA,WAAAL,CACF,CAAA,CAIoC,CAClC,IAAMC,CAAAA,CAAkC,EAAC,CACzC,OAAID,CAAAA,GACFC,CAAAA,CAAQ,aAAA,CAAgBD,CAAAA,CAAAA,CAEnB3B,aAAAA,CAAQ,CACb,IAAKK,kBAAAA,CACHP,CAAAA,CACA,iBACF,CAAA,CACA,KAAA,CAAOkC,CAAAA,CACP,OAAA,CAAAJ,CACF,CAAC,CACH,CArBsB3B,CAAAA,CAAA8B,CAAAA,CAAA,iBAAA,CAAA","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"]}
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 K({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(K,"inspectTemplate");export{D as checkAppClientUrl,P as getAppClientData,d as getDataStore,k as getDiscovery,x as getPluginContent,g as getTemplateSuggestions,K 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 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
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 { KsAppClientData, KsRenderResults } from '@knapsack/types';\nimport type {\n Except,\n GenericResponse,\n KsAppClientDataAndMeta,\n KsAppClientDataNoMeta,\n 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","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"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@knapsack/app-client-api",
3
3
  "description": "",
4
- "version": "5.0.0--canary.6593.d6350c3.0",
4
+ "version": "5.0.0--canary.7791.86072ba.0",
5
5
  "exports": {
6
6
  ".": {
7
7
  "types": "./dist/index.d.ts",
@@ -21,21 +21,21 @@
21
21
  "lint": "eslint ./"
22
22
  },
23
23
  "dependencies": {
24
- "@knapsack/app": "5.0.0--canary.6593.d6350c3.0",
25
- "@knapsack/types": "5.0.0--canary.6593.d6350c3.0",
26
- "@knapsack/utils": "5.0.0--canary.6593.d6350c3.0",
24
+ "@knapsack/app": "5.0.0--canary.7791.86072ba.0",
25
+ "@knapsack/types": "5.0.0--canary.7791.86072ba.0",
26
+ "@knapsack/utils": "5.0.0--canary.7791.86072ba.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": "5.0.0--canary.6593.d6350c3.0",
32
- "@knapsack/prettier-config": "5.0.0--canary.6593.d6350c3.0",
33
- "@knapsack/typescript-config-starter": "5.0.0--canary.6593.d6350c3.0",
34
- "@types/node": "^20.19.22",
31
+ "@knapsack/eslint-config-starter": "5.0.0--canary.7791.86072ba.0",
32
+ "@knapsack/prettier-config": "5.0.0--canary.7791.86072ba.0",
33
+ "@knapsack/typescript-config-starter": "5.0.0--canary.7791.86072ba.0",
34
+ "@types/node": "^22.19.11",
35
35
  "@types/url-join": "^4.0.3",
36
- "eslint": "^8.57.0",
37
- "tsup": "^8.5.0",
38
- "typescript": "^5.9.2"
36
+ "eslint": "^9.20.0",
37
+ "tsup": "^8.5.1",
38
+ "typescript": "^5.9.3"
39
39
  },
40
40
  "license": "GPL-2.0-or-later",
41
41
  "publishConfig": {
@@ -46,5 +46,5 @@
46
46
  "directory": "libs/app-client-api",
47
47
  "type": "git"
48
48
  },
49
- "gitHead": "d6350c3155974b24f788116c8edb9769c6c3460e"
49
+ "gitHead": "86072ba9ee416b70b656ebf4fc91827c1d46b0d2"
50
50
  }
package/.eslintignore DELETED
File without changes
package/.eslintrc.js DELETED
@@ -1,5 +0,0 @@
1
- module.exports = {
2
- extends: ['@knapsack/eslint-config-starter'],
3
- parserOptions: { tsconfigRootDir: __dirname },
4
- ignorePatterns: [],
5
- };