Type frontend core app endpoints
This commit is contained in:
parent
6776a55356
commit
a26eb57115
|
@ -1,6 +1,56 @@
|
|||
import { sdk } from "@budibase/shared-core"
|
||||
import { BaseAPIClient } from "./types"
|
||||
import {
|
||||
App,
|
||||
CreateAppRequest,
|
||||
DuplicateAppRequest,
|
||||
DuplicateAppResponse,
|
||||
FetchAppPackageResponse,
|
||||
GetDiagnosticsResponse,
|
||||
UpdateAppRequest,
|
||||
UpdateAppResponse,
|
||||
} from "@budibase/types"
|
||||
|
||||
export const buildAppEndpoints = API => ({
|
||||
export type AppEndpoints = {
|
||||
fetchAppPackage: (appId: string) => Promise<FetchAppPackageResponse>
|
||||
saveAppMetadata: (
|
||||
appId: string,
|
||||
metadata: UpdateAppRequest
|
||||
) => Promise<UpdateAppResponse>
|
||||
unpublishApp: (appId: string) => Promise<void>
|
||||
createApp: (app: CreateAppRequest) => Promise<App>
|
||||
deleteApp: (appId: string) => Promise<void>
|
||||
duplicateApp: (
|
||||
appId: string,
|
||||
app: DuplicateAppRequest
|
||||
) => Promise<DuplicateAppResponse>
|
||||
updateAppFromExport: (
|
||||
appId: string,
|
||||
body: any
|
||||
) => Promise<{ message: string }>
|
||||
fetchSystemDebugInfo: () => Promise<GetDiagnosticsResponse>
|
||||
syncApp: (appId: string) => Promise<{ message: string }>
|
||||
getApps: () => Promise<App[]>
|
||||
fetchComponentLibDefinitions: (
|
||||
appId: string
|
||||
) => Promise<{ [key: string]: any }>
|
||||
setRevertableVersion: (
|
||||
appId: string,
|
||||
revertableVersion: string
|
||||
) => Promise<App>
|
||||
addSampleData: (appId: string) => Promise<void>
|
||||
|
||||
// Untyped - TODO:
|
||||
publishAppChanges: (appId: string) => Promise<any>
|
||||
revertAppChanges: (appId: string) => Promise<any>
|
||||
updateAppClientVersion: (appId: string) => Promise<any>
|
||||
revertAppClientVersion: (appId: string) => Promise<any>
|
||||
importApps: (apps: any) => Promise<any>
|
||||
releaseAppLock: (appId: string) => Promise<any>
|
||||
getAppDeployments: () => Promise<any>
|
||||
}
|
||||
|
||||
export const buildAppEndpoints = (API: BaseAPIClient): AppEndpoints => ({
|
||||
/**
|
||||
* Fetches screen definition for an app.
|
||||
* @param appId the ID of the app to fetch from
|
||||
|
@ -16,7 +66,7 @@ export const buildAppEndpoints = API => ({
|
|||
* @param appId the ID of the app to update
|
||||
* @param metadata the app metadata to save
|
||||
*/
|
||||
saveAppMetadata: async ({ appId, metadata }) => {
|
||||
saveAppMetadata: async (appId, metadata) => {
|
||||
return await API.put({
|
||||
url: `/api/applications/${appId}`,
|
||||
body: metadata,
|
||||
|
@ -87,7 +137,7 @@ export const buildAppEndpoints = API => ({
|
|||
* Duplicate an existing app
|
||||
* @param app the app to dupe
|
||||
*/
|
||||
duplicateApp: async (app, appId) => {
|
||||
duplicateApp: async (appId, app) => {
|
||||
return await API.post({
|
||||
url: `/api/applications/${appId}/duplicate`,
|
||||
body: app,
|
||||
|
@ -192,12 +242,22 @@ export const buildAppEndpoints = API => ({
|
|||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* Adds sample data to an app
|
||||
* @param appId the app ID
|
||||
*/
|
||||
addSampleData: async appId => {
|
||||
return await API.post({
|
||||
url: `/api/applications/${appId}/sample`,
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets the revertable version of an app.
|
||||
* Used when manually reverting to older client versions.
|
||||
* @param appId the app ID
|
||||
* @param revertableVersion the version number
|
||||
*/
|
||||
setRevertableVersion: async (appId, revertableVersion) => {
|
||||
return await API.post({
|
||||
url: `/api/applications/${appId}/setRevertableVersion`,
|
|
@ -4,7 +4,8 @@ import {
|
|||
APIClientConfig,
|
||||
APIClient,
|
||||
APICallConfig,
|
||||
} from "../types"
|
||||
BaseAPIClient,
|
||||
} from "./types"
|
||||
import { Helpers } from "@budibase/bbui"
|
||||
import { Header } from "@budibase/shared-core"
|
||||
import { ApiVersion } from "../constants"
|
||||
|
@ -55,7 +56,7 @@ export const APISessionID = Helpers.uuid()
|
|||
/**
|
||||
* Constructs an API client with the provided configuration.
|
||||
*/
|
||||
export const createAPIClient = (config: APIClientConfig = {}) => {
|
||||
export const createAPIClient = (config: APIClientConfig = {}): APIClient => {
|
||||
let cache: Record<string, any> = {}
|
||||
|
||||
// Generates an error object from an API response
|
||||
|
@ -220,7 +221,7 @@ export const createAPIClient = (config: APIClientConfig = {}) => {
|
|||
}
|
||||
|
||||
// Build the underlying core API methods
|
||||
let API: APIClient = {
|
||||
let API: BaseAPIClient = {
|
||||
post: requestApiCall(HTTPMethod.POST),
|
||||
get: requestApiCall(HTTPMethod.GET),
|
||||
patch: requestApiCall(HTTPMethod.PATCH),
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import { AppEndpoints } from "./app"
|
||||
|
||||
export enum HTTPMethod {
|
||||
POST = "POST",
|
||||
PATCH = "PATCH",
|
||||
|
@ -26,11 +28,15 @@ export type APICallConfig = {
|
|||
|
||||
export type APICallParams = Pick<APICallConfig, "url"> & Partial<APICallConfig>
|
||||
|
||||
export type APIClient = {
|
||||
export type BaseAPIClient = {
|
||||
post: <T>(params: APICallParams) => Promise<T>
|
||||
get: <T>(params: APICallParams) => Promise<T>
|
||||
put: <T>(params: APICallParams) => Promise<T>
|
||||
delete: <T>(params: APICallParams) => Promise<T>
|
||||
patch: <T>(params: APICallParams) => Promise<T>
|
||||
[key: string]: any
|
||||
error: (message: string) => void
|
||||
invalidateCache: () => void
|
||||
getAppID: () => string
|
||||
}
|
||||
|
||||
export type APIClient = BaseAPIClient & AppEndpoints & { [key: string]: any }
|
||||
|
|
Loading…
Reference in New Issue