UNPKG

@proofgeist/fmdapi

Version:
82 lines 2.52 kB
import { fmFetch } from '@proofgeist/fm-webviewer-fetch'; import { CreateResponse, DeleteResponse, GetResponse, LayoutMetadataResponse, RawFMResponse, UpdateResponse, } from '../client-types.js'; import { FileMakerError } from '../index.js'; import { Adapter, BaseRequest, CreateOptions, DeleteOptions, FindOptions, GetOptions, LayoutMetadataOptions, ListOptions, UpdateOptions, } from './core.js'; export class WebViewerAdapter { scriptName; constructor(options) { this.scriptName = options.scriptName; } request = async (params) => { const { action = 'read', layout, body } = params; const resp = await fmFetch(this.scriptName, { ...body, layouts: layout, action, version: 'vLatest', }); if (resp.messages?.[0].code !== '0') { throw new FileMakerError(resp?.messages?.[0].code ?? '500', `Filemaker Data API failed with (${resp.messages?.[0].code}): ${JSON.stringify(resp, null, 2)}`); } return resp.response; }; list = async (opts) => { const { data, layout } = opts; const resp = await this.request({ body: data, layout, }); return resp; }; get = async (opts) => { const { data, layout } = opts; const resp = await this.request({ body: data, layout, }); return resp; }; find = async (opts) => { const { data, layout } = opts; const resp = await this.request({ body: data, layout, }); return resp; }; create = async (opts) => { const { data, layout } = opts; const resp = await this.request({ action: 'create', body: data, layout, }); return resp; }; update = async (opts) => { const { data, layout } = opts; const resp = await this.request({ action: 'update', layout, body: data, }); return resp; }; delete = async (opts) => { const { data, layout } = opts; const resp = await this.request({ action: 'delete', body: data, layout, }); return resp; }; layoutMetadata = async (opts) => { return (await this.request({ action: 'metaData', layout: opts.layout, body: {}, })); }; } //# sourceMappingURL=wv.js.map