@knapsack/app-client-api 4.69.12--canary.4821.8709676.0 → 4.69.12--canary.4739.7e3b906.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/get-template-suggestions.d.ts +1 -7
- package/dist/get-template-suggestions.d.ts.map +1 -1
- package/dist/index.d.ts +58 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -9
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10 -8
- package/dist/index.mjs.map +1 -1
- package/package.json +12 -10
- package/tsconfig.json +0 -1
- package/dist/app-client-api.d.ts +0 -65
- package/dist/app-client-api.d.ts.map +0 -1
@@ -1,13 +1,7 @@
|
|
1
1
|
import type { TemplateSuggestionsGetFn } from '@knapsack/types';
|
2
|
-
import { Except } from '@knapsack/utils';
|
3
2
|
export declare const path = "/api/v1/template-suggestions";
|
4
3
|
export declare const method = "GET";
|
5
|
-
export type ReqParams =
|
6
|
-
/**
|
7
|
-
* ID from saving {@link ContentStateForRendering} to `api.knapsack.cloud/render-data
|
8
|
-
*/
|
9
|
-
stateId: string;
|
10
|
-
};
|
4
|
+
export type ReqParams = Parameters<TemplateSuggestionsGetFn>[0];
|
11
5
|
export type ResBody = {
|
12
6
|
type: 'success';
|
13
7
|
data: Awaited<ReturnType<TemplateSuggestionsGetFn>>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"get-template-suggestions.d.ts","sourceRoot":"","sources":["../src/get-template-suggestions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"get-template-suggestions.d.ts","sourceRoot":"","sources":["../src/get-template-suggestions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAGhE,eAAO,MAAM,IAAI,iCAAiC,CAAC;AACnD,eAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,MAAM,MAAM,OAAO,GACf;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,CAAC;CACrD,GACD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,wBAAsB,sBAAsB,CAAC,EAC3C,YAAY,EACZ,KAAK,GACN,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;CAClB,GAAG,OAAO,CAAC,OAAO,CAAC,CAKnB"}
|
package/dist/index.d.ts
CHANGED
@@ -1,4 +1,61 @@
|
|
1
|
+
import { KsAppClientData, PluginsApi, KsRenderResults } from '@knapsack/types';
|
2
|
+
import type { GenericResponse, KsAppClientDataAndMeta, KsAppClientDataNoMeta, KsFileSaverParams } from '@knapsack/types';
|
1
3
|
import * as getTemplateSuggestions from './get-template-suggestions';
|
2
4
|
export { getTemplateSuggestions };
|
3
|
-
export
|
5
|
+
export interface KnapsackDataStoreSaveBody {
|
6
|
+
state: KsAppClientData;
|
7
|
+
}
|
8
|
+
export type PatternRenderData = {
|
9
|
+
patternId: string;
|
10
|
+
templateId: string;
|
11
|
+
/**
|
12
|
+
* Data id from `saveData()`
|
13
|
+
* Cannot use with `demoId`
|
14
|
+
*/
|
15
|
+
dataId?: string;
|
16
|
+
/**
|
17
|
+
* Cannot use with `dataId`
|
18
|
+
*/
|
19
|
+
demoId?: string;
|
20
|
+
assetSetId?: string;
|
21
|
+
wrapHtml?: boolean;
|
22
|
+
isInIframe?: boolean;
|
23
|
+
cacheBuster?: string;
|
24
|
+
};
|
25
|
+
export declare const ENDPOINTS: {
|
26
|
+
health: string;
|
27
|
+
dataStore: string;
|
28
|
+
dataStorePrep: string;
|
29
|
+
files: string;
|
30
|
+
data: string;
|
31
|
+
render: string;
|
32
|
+
upload: string;
|
33
|
+
plugins: string;
|
34
|
+
getTemplateSuggestions: string;
|
35
|
+
};
|
36
|
+
export declare function checkAppClientUrl(url: string): Promise<GenericResponse>;
|
37
|
+
export declare function getDataStore({ appClientUrl, }: {
|
38
|
+
appClientUrl: string;
|
39
|
+
}): Promise<GenericResponse<KsAppClientDataAndMeta>>;
|
40
|
+
export declare function getAppClientData({ appClientUrl, }: {
|
41
|
+
appClientUrl: string;
|
42
|
+
}): Promise<KsAppClientDataAndMeta>;
|
43
|
+
/** Sole job is to strip `metaState` if it's there */
|
44
|
+
export declare function prepAppClientData(state: KsAppClientData): KsAppClientDataNoMeta;
|
45
|
+
export declare function prepareDataForFileSave({ urlBase, state, }: {
|
46
|
+
urlBase: string;
|
47
|
+
state: KsAppClientDataNoMeta;
|
48
|
+
}): Promise<GenericResponse<KsFileSaverParams>>;
|
49
|
+
export declare function submitDataForFileSave({ urlBase, state, }: {
|
50
|
+
urlBase: string;
|
51
|
+
state: KsAppClientDataNoMeta;
|
52
|
+
}): Promise<void>;
|
53
|
+
export declare function getPluginContent({ pluginId, appClientUrl, }: {
|
54
|
+
pluginId: string;
|
55
|
+
appClientUrl: string;
|
56
|
+
}): Promise<PluginsApi.GetContentResponse>;
|
57
|
+
export declare function renderTemplate({ options, appClientUrl, }: {
|
58
|
+
options: PatternRenderData;
|
59
|
+
appClientUrl: string;
|
60
|
+
}): Promise<KsRenderResults>;
|
4
61
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,CAAC;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,sBAAsB,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;CAUrB,CAAC;AAEF,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,CAQlC;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,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAUzC;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"}
|
package/dist/index.js
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
"use strict";
|
2
1
|
var __defProp = Object.defineProperty;
|
3
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
@@ -33,6 +32,8 @@ __export(src_exports, {
|
|
33
32
|
submitDataForFileSave: () => submitDataForFileSave
|
34
33
|
});
|
35
34
|
module.exports = __toCommonJS(src_exports);
|
35
|
+
var import_types = require("@knapsack/types");
|
36
|
+
var import_utils2 = require("@knapsack/utils");
|
36
37
|
|
37
38
|
// src/get-template-suggestions.ts
|
38
39
|
var get_template_suggestions_exports = {};
|
@@ -55,9 +56,7 @@ async function getTemplateSuggestions({
|
|
55
56
|
}
|
56
57
|
__name(getTemplateSuggestions, "getTemplateSuggestions");
|
57
58
|
|
58
|
-
// src/
|
59
|
-
var import_types = require("@knapsack/types");
|
60
|
-
var import_utils2 = require("@knapsack/utils");
|
59
|
+
// src/index.ts
|
61
60
|
var ENDPOINTS = {
|
62
61
|
health: "/api/v1/",
|
63
62
|
dataStore: "/api/v1/data-store",
|
@@ -76,10 +75,10 @@ async function checkAppClientUrl(url) {
|
|
76
75
|
url: theUrl.toString()
|
77
76
|
});
|
78
77
|
return res;
|
79
|
-
} catch (
|
78
|
+
} catch (e) {
|
80
79
|
return {
|
81
80
|
ok: false,
|
82
|
-
message:
|
81
|
+
message: e.message
|
83
82
|
};
|
84
83
|
}
|
85
84
|
}
|
@@ -98,7 +97,7 @@ async function getDataStore({
|
|
98
97
|
} catch (err) {
|
99
98
|
return {
|
100
99
|
ok: false,
|
101
|
-
message: err
|
100
|
+
message: err.message
|
102
101
|
};
|
103
102
|
}
|
104
103
|
}
|
@@ -107,7 +106,7 @@ async function getAppClientData({
|
|
107
106
|
appClientUrl
|
108
107
|
}) {
|
109
108
|
const serverDataRes = await getDataStore({ appClientUrl });
|
110
|
-
if (!serverDataRes.ok
|
109
|
+
if (!serverDataRes.ok) {
|
111
110
|
const message = `Could not load data from custom url "${appClientUrl}" ${serverDataRes.message}`;
|
112
111
|
throw new Error(message);
|
113
112
|
}
|
@@ -135,7 +134,7 @@ async function prepareDataForFileSave({
|
|
135
134
|
} catch (err) {
|
136
135
|
return {
|
137
136
|
ok: false,
|
138
|
-
message: err
|
137
|
+
message: err.message
|
139
138
|
};
|
140
139
|
}
|
141
140
|
}
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/get-template-suggestions.ts"
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/get-template-suggestions.ts"],"sourcesContent":["import { KsAppClientData, PluginsApi, KsRenderResults } from '@knapsack/types';\nimport type {\n GenericResponse,\n KsAppClientDataAndMeta,\n KsAppClientDataNoMeta,\n KsFileSaverParams,\n} from '@knapsack/types';\nimport { fetcher } from '@knapsack/utils';\nimport * as getTemplateSuggestions from './get-template-suggestions';\n\nexport { getTemplateSuggestions };\n\nexport interface KnapsackDataStoreSaveBody {\n state: KsAppClientData;\n}\n\nexport type PatternRenderData = {\n patternId: string;\n templateId: string;\n /**\n * Data id from `saveData()`\n * Cannot use with `demoId`\n */\n dataId?: string;\n /**\n * Cannot use with `dataId`\n */\n demoId?: string;\n assetSetId?: string;\n wrapHtml?: boolean;\n isInIframe?: boolean;\n cacheBuster?: string;\n};\n\nexport const ENDPOINTS = {\n health: '/api/v1/',\n dataStore: '/api/v1/data-store',\n dataStorePrep: '/api/v1/data-store-prep',\n files: '/api/v1/files',\n data: '/api/v1/data',\n render: '/api/v1/render',\n upload: '/api/v1/upload',\n plugins: '/api/v1/plugins',\n getTemplateSuggestions: getTemplateSuggestions.path,\n};\n\nexport async function checkAppClientUrl(url: string): Promise<GenericResponse> {\n try {\n const theUrl = new URL(ENDPOINTS.health, url); // will throw if url not formatted correctly\n const res = await fetcher<GenericResponse>({\n url: theUrl.toString(),\n });\n return res;\n } catch (e) {\n return {\n ok: false,\n message: e.message,\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: new URL(ENDPOINTS.dataStore, appClientUrl).toString(),\n });\n\n return {\n ok: true,\n data,\n };\n } catch (err) {\n return {\n ok: false,\n message: err.message,\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 // console.log(`getDataStore() response`, serverDataRes);\n if (!serverDataRes.ok) {\n const message = `Could not load data from custom url \"${appClientUrl}\" ${serverDataRes.message}`;\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: new URL(ENDPOINTS.dataStorePrep, urlBase).toString(),\n body,\n });\n\n return data;\n } catch (err) {\n return {\n ok: false,\n message: err.message,\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: new URL(ENDPOINTS.dataStore, urlBase).toString(),\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 pluginId: string;\n appClientUrl: string;\n}): Promise<PluginsApi.GetContentResponse> {\n const body: PluginsApi.GetContentRequest = {\n pluginId,\n type: PluginsApi.ACTIONS.getContent,\n };\n const data = await fetcher<PluginsApi.GetContentResponse>({\n url: new URL(ENDPOINTS.plugins, appClientUrl).toString(),\n body,\n });\n return data;\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: new URL(ENDPOINTS.render, appClientUrl).toString(),\n body: options,\n });\n return data;\n}\n","import type { TemplateSuggestionsGetFn } from '@knapsack/types';\nimport { fetcher } from '@knapsack/utils';\n\nexport const path = '/api/v1/template-suggestions';\nexport const method = 'GET';\nexport type ReqParams = Parameters<TemplateSuggestionsGetFn>[0];\nexport type ResBody =\n | {\n type: 'success';\n data: Awaited<ReturnType<TemplateSuggestionsGetFn>>;\n }\n | {\n type: 'error.invalidParams';\n message: string;\n }\n | {\n type: 'error.pathNotFound';\n message: string;\n }\n | {\n type: 'error.couldNotParse';\n message: string;\n };\n\nexport async function getTemplateSuggestions({\n appClientUrl,\n query,\n}: {\n appClientUrl: string;\n query: ReqParams;\n}): Promise<ResBody> {\n return fetcher<ResBody>({\n url: new URL(path, appClientUrl).toString(),\n query,\n });\n}\n"],"mappings":"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","names":["import_utils"]}
|
package/dist/index.mjs
CHANGED
@@ -5,6 +5,10 @@ var __export = (target, all) => {
|
|
5
5
|
__defProp(target, name, { get: all[name], enumerable: true });
|
6
6
|
};
|
7
7
|
|
8
|
+
// src/index.ts
|
9
|
+
import { PluginsApi } from "@knapsack/types";
|
10
|
+
import { fetcher as fetcher2 } from "@knapsack/utils";
|
11
|
+
|
8
12
|
// src/get-template-suggestions.ts
|
9
13
|
var get_template_suggestions_exports = {};
|
10
14
|
__export(get_template_suggestions_exports, {
|
@@ -26,9 +30,7 @@ async function getTemplateSuggestions({
|
|
26
30
|
}
|
27
31
|
__name(getTemplateSuggestions, "getTemplateSuggestions");
|
28
32
|
|
29
|
-
// src/
|
30
|
-
import { PluginsApi } from "@knapsack/types";
|
31
|
-
import { fetcher as fetcher2 } from "@knapsack/utils";
|
33
|
+
// src/index.ts
|
32
34
|
var ENDPOINTS = {
|
33
35
|
health: "/api/v1/",
|
34
36
|
dataStore: "/api/v1/data-store",
|
@@ -47,10 +49,10 @@ async function checkAppClientUrl(url) {
|
|
47
49
|
url: theUrl.toString()
|
48
50
|
});
|
49
51
|
return res;
|
50
|
-
} catch (
|
52
|
+
} catch (e) {
|
51
53
|
return {
|
52
54
|
ok: false,
|
53
|
-
message:
|
55
|
+
message: e.message
|
54
56
|
};
|
55
57
|
}
|
56
58
|
}
|
@@ -69,7 +71,7 @@ async function getDataStore({
|
|
69
71
|
} catch (err) {
|
70
72
|
return {
|
71
73
|
ok: false,
|
72
|
-
message: err
|
74
|
+
message: err.message
|
73
75
|
};
|
74
76
|
}
|
75
77
|
}
|
@@ -78,7 +80,7 @@ async function getAppClientData({
|
|
78
80
|
appClientUrl
|
79
81
|
}) {
|
80
82
|
const serverDataRes = await getDataStore({ appClientUrl });
|
81
|
-
if (!serverDataRes.ok
|
83
|
+
if (!serverDataRes.ok) {
|
82
84
|
const message = `Could not load data from custom url "${appClientUrl}" ${serverDataRes.message}`;
|
83
85
|
throw new Error(message);
|
84
86
|
}
|
@@ -106,7 +108,7 @@ async function prepareDataForFileSave({
|
|
106
108
|
} catch (err) {
|
107
109
|
return {
|
108
110
|
ok: false,
|
109
|
-
message: err
|
111
|
+
message: err.message
|
110
112
|
};
|
111
113
|
}
|
112
114
|
}
|
package/dist/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/get-template-suggestions.ts"],"sourcesContent":["import { KsAppClientData, PluginsApi, KsRenderResults } from '@knapsack/types';\nimport type {\n GenericResponse,\n KsAppClientDataAndMeta,\n KsAppClientDataNoMeta,\n KsFileSaverParams,\n} from '@knapsack/types';\nimport { fetcher } from '@knapsack/utils';\nimport * as getTemplateSuggestions from './get-template-suggestions';\n\nexport { getTemplateSuggestions };\n\nexport interface KnapsackDataStoreSaveBody {\n state: KsAppClientData;\n}\n\nexport type PatternRenderData = {\n patternId: string;\n templateId: string;\n /**\n * Data id from `saveData()`\n * Cannot use with `demoId`\n */\n dataId?: string;\n /**\n * Cannot use with `dataId`\n */\n demoId?: string;\n assetSetId?: string;\n wrapHtml?: boolean;\n isInIframe?: boolean;\n cacheBuster?: string;\n};\n\nexport const ENDPOINTS = {\n health: '/api/v1/',\n dataStore: '/api/v1/data-store',\n dataStorePrep: '/api/v1/data-store-prep',\n files: '/api/v1/files',\n data: '/api/v1/data',\n render: '/api/v1/render',\n upload: '/api/v1/upload',\n plugins: '/api/v1/plugins',\n getTemplateSuggestions: getTemplateSuggestions.path,\n};\n\nexport async function checkAppClientUrl(url: string): Promise<GenericResponse> {\n try {\n const theUrl = new URL(ENDPOINTS.health, url); // will throw if url not formatted correctly\n const res = await fetcher<GenericResponse>({\n url: theUrl.toString(),\n });\n return res;\n } catch (e) {\n return {\n ok: false,\n message: e.message,\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: new URL(ENDPOINTS.dataStore, appClientUrl).toString(),\n });\n\n return {\n ok: true,\n data,\n };\n } catch (err) {\n return {\n ok: false,\n message: err.message,\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 // console.log(`getDataStore() response`, serverDataRes);\n if (!serverDataRes.ok) {\n const message = `Could not load data from custom url \"${appClientUrl}\" ${serverDataRes.message}`;\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: new URL(ENDPOINTS.dataStorePrep, urlBase).toString(),\n body,\n });\n\n return data;\n } catch (err) {\n return {\n ok: false,\n message: err.message,\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: new URL(ENDPOINTS.dataStore, urlBase).toString(),\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 pluginId: string;\n appClientUrl: string;\n}): Promise<PluginsApi.GetContentResponse> {\n const body: PluginsApi.GetContentRequest = {\n pluginId,\n type: PluginsApi.ACTIONS.getContent,\n };\n const data = await fetcher<PluginsApi.GetContentResponse>({\n url: new URL(ENDPOINTS.plugins, appClientUrl).toString(),\n body,\n });\n return data;\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: new URL(ENDPOINTS.render, appClientUrl).toString(),\n body: options,\n });\n return data;\n}\n","import type { TemplateSuggestionsGetFn } from '@knapsack/types';\nimport { fetcher } from '@knapsack/utils';\n\nexport const path = '/api/v1/template-suggestions';\nexport const method = 'GET';\nexport type ReqParams = Parameters<TemplateSuggestionsGetFn>[0];\nexport type ResBody =\n | {\n type: 'success';\n data: Awaited<ReturnType<TemplateSuggestionsGetFn>>;\n }\n | {\n type: 'error.invalidParams';\n message: string;\n }\n | {\n type: 'error.pathNotFound';\n message: string;\n }\n | {\n type: 'error.couldNotParse';\n message: string;\n };\n\nexport async function getTemplateSuggestions({\n appClientUrl,\n query,\n}: {\n appClientUrl: string;\n query: ReqParams;\n}): Promise<ResBody> {\n return fetcher<ResBody>({\n url: new URL(path, appClientUrl).toString(),\n query,\n });\n}\n"],"mappings":"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","names":["fetcher","fetcher"]}
|
package/package.json
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
{
|
2
2
|
"name": "@knapsack/app-client-api",
|
3
3
|
"description": "",
|
4
|
-
"version": "4.69.12--canary.
|
4
|
+
"version": "4.69.12--canary.4739.7e3b906.0",
|
5
|
+
"main": "dist/index.js",
|
6
|
+
"module": "dist/index.mjs",
|
7
|
+
"types": "dist/index.d.ts",
|
5
8
|
"exports": {
|
6
9
|
".": {
|
7
10
|
"types": "./dist/index.d.ts",
|
8
11
|
"import": "./dist/index.mjs",
|
9
|
-
"require": "./dist/index.js"
|
10
|
-
"default": "./dist/index.mjs"
|
12
|
+
"require": "./dist/index.js"
|
11
13
|
},
|
12
14
|
"./package": "./package.json",
|
13
15
|
"./package.json": "./package.json"
|
@@ -21,15 +23,15 @@
|
|
21
23
|
"lint": "eslint ./"
|
22
24
|
},
|
23
25
|
"dependencies": {
|
24
|
-
"@knapsack/types": "4.69.12--canary.
|
25
|
-
"@knapsack/utils": "4.69.12--canary.
|
26
|
+
"@knapsack/types": "4.69.12--canary.4739.7e3b906.0",
|
27
|
+
"@knapsack/utils": "4.69.12--canary.4739.7e3b906.0",
|
26
28
|
"cross-fetch": "^4.0.0"
|
27
29
|
},
|
28
30
|
"devDependencies": {
|
29
|
-
"@knapsack/eslint-config-starter": "4.69.12--canary.
|
30
|
-
"@knapsack/prettier-config": "4.69.12--canary.
|
31
|
-
"@knapsack/typescript-config-starter": "4.69.12--canary.
|
32
|
-
"@types/node": "^20.16.
|
31
|
+
"@knapsack/eslint-config-starter": "4.69.12--canary.4739.7e3b906.0",
|
32
|
+
"@knapsack/prettier-config": "4.69.12--canary.4739.7e3b906.0",
|
33
|
+
"@knapsack/typescript-config-starter": "4.69.12--canary.4739.7e3b906.0",
|
34
|
+
"@types/node": "^20.16.6",
|
33
35
|
"eslint": "^8.57.0",
|
34
36
|
"tsup": "^8.2.4",
|
35
37
|
"typescript": "^5.5.4"
|
@@ -43,5 +45,5 @@
|
|
43
45
|
"directory": "libs/app-client-api",
|
44
46
|
"type": "git"
|
45
47
|
},
|
46
|
-
"gitHead": "
|
48
|
+
"gitHead": "7e3b906fec056ffb9160047dc09d6fbd5533ab3d"
|
47
49
|
}
|
package/tsconfig.json
CHANGED
package/dist/app-client-api.d.ts
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
import { KsAppClientData, PluginsApi, KsRenderResults } from '@knapsack/types';
|
2
|
-
import type { GenericResponse, KsAppClientDataAndMeta, KsAppClientDataNoMeta, KsFileSaverParams } from '@knapsack/types';
|
3
|
-
export interface KnapsackDataStoreSaveBody {
|
4
|
-
state: KsAppClientData;
|
5
|
-
}
|
6
|
-
export type PatternRenderDataWithDemoId = {
|
7
|
-
patternId: string;
|
8
|
-
templateId: string;
|
9
|
-
assetSetId: string;
|
10
|
-
demoId: string;
|
11
|
-
};
|
12
|
-
export type PatternRenderData = {
|
13
|
-
patternId: string;
|
14
|
-
templateId: string;
|
15
|
-
assetSetId?: string;
|
16
|
-
wrapHtml?: boolean;
|
17
|
-
isInIframe?: boolean;
|
18
|
-
cacheBuster?: string;
|
19
|
-
/**
|
20
|
-
* Data id for Demo from `saveData()`
|
21
|
-
* @see {@link Demo}
|
22
|
-
*/
|
23
|
-
dataId: string;
|
24
|
-
/**
|
25
|
-
* ID for @see {ContentStateForRendering}
|
26
|
-
*/
|
27
|
-
stateId: string;
|
28
|
-
};
|
29
|
-
export declare const ENDPOINTS: {
|
30
|
-
health: string;
|
31
|
-
dataStore: string;
|
32
|
-
dataStorePrep: string;
|
33
|
-
files: string;
|
34
|
-
data: string;
|
35
|
-
render: string;
|
36
|
-
upload: string;
|
37
|
-
plugins: string;
|
38
|
-
getTemplateSuggestions: string;
|
39
|
-
};
|
40
|
-
export declare function checkAppClientUrl(url: string): Promise<GenericResponse>;
|
41
|
-
export declare function getDataStore({ appClientUrl, }: {
|
42
|
-
appClientUrl: string;
|
43
|
-
}): Promise<GenericResponse<KsAppClientDataAndMeta>>;
|
44
|
-
export declare function getAppClientData({ appClientUrl, }: {
|
45
|
-
appClientUrl: string;
|
46
|
-
}): Promise<KsAppClientDataAndMeta>;
|
47
|
-
/** Sole job is to strip `metaState` if it's there */
|
48
|
-
export declare function prepAppClientData(state: KsAppClientData): KsAppClientDataNoMeta;
|
49
|
-
export declare function prepareDataForFileSave({ urlBase, state, }: {
|
50
|
-
urlBase: string;
|
51
|
-
state: KsAppClientDataNoMeta;
|
52
|
-
}): Promise<GenericResponse<KsFileSaverParams>>;
|
53
|
-
export declare function submitDataForFileSave({ urlBase, state, }: {
|
54
|
-
urlBase: string;
|
55
|
-
state: KsAppClientDataNoMeta;
|
56
|
-
}): Promise<void>;
|
57
|
-
export declare function getPluginContent({ pluginId, appClientUrl, }: {
|
58
|
-
pluginId: string;
|
59
|
-
appClientUrl: string;
|
60
|
-
}): Promise<PluginsApi.GetContentResponse>;
|
61
|
-
export declare function renderTemplate({ options, appClientUrl, }: {
|
62
|
-
options: PatternRenderData;
|
63
|
-
appClientUrl: string;
|
64
|
-
}): Promise<KsRenderResults>;
|
65
|
-
//# sourceMappingURL=app-client-api.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"app-client-api.d.ts","sourceRoot":"","sources":["../src/app-client-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAIzB,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;CAUrB,CAAC;AAEF,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,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAUzC;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"}
|