UNPKG

@flatfile/plugin-convert-yaml-schema

Version:

A plugin for converting YAML Schema definitions to Flatfile Blueprint.

1 lines 4.62 kB
{"version":3,"sources":["../src/setup.factory.ts","../src/index.ts"],"names":["generateSetup","models","options","asdf","getSchemas","schema","jsYaml","sheets","model","i","data","fields","generateFields","setup","schemas","fetchExternalReference","url","response","error","configureSpaceWithYamlSchema","callback","configureSpace"],"mappings":";;;;;;;;;;AAmBA,eAAsBA,CAAAA,CACpBC,EACAC,CAIgB,CAAA,CAEhB,IAAMC,CADU,CAAA,CAAA,MAAMC,EAAWH,CAAM,CAAA,EAClB,IAAKI,CAAWC,EAAAA,kBAAAA,CAAO,KAAKD,CAAM,CAAC,EAElDE,CAAS,CAAA,MAAM,QAAQ,GAC3BN,CAAAA,CAAAA,CAAO,IAAI,MAAOO,CAAAA,CAA2BC,IAAM,CACjD,IAAMC,EAAOP,CAAKM,CAAAA,CAAC,EACbE,CAAS,CAAA,MAAMC,sCAAeF,CAAAA,CAAI,EAExC,OAAO,CACL,KAAMF,CAAO,EAAA,IAAA,EAAQE,EAAK,KAC1B,CAAA,GAAIA,GAAM,WAAe,EAAA,CAAE,YAAaA,CAAK,CAAA,WAAY,EACzD,MAAAC,CAAAA,CAAAA,CACA,GAAGH,CACL,CACF,CAAC,CACH,CAAA,CACMK,EAAe,CACnB,SAAA,CAAW,CACT,CACE,IAAA,CAAMX,GAAS,cAAgB,EAAA,IAAA,EAAQ,uBACvC,MAAAK,CAAAA,CACF,CACF,CACA,CAAA,GAAGL,GAAS,cACd,CAAA,CACA,OAAIA,CAAS,EAAA,KAAA,EACX,OAAQ,CAAA,GAAA,CAAIW,EAAO,CAAE,KAAA,CAAO,IAAK,CAAC,CAAA,CAE7BA,CACT,CAEA,eAAeT,EAAWH,CAA+B,CAAA,CACvD,IAAMa,CAAUb,CAAAA,CAAAA,CAAO,IAAI,MAAOO,CAAAA,EACzB,MAAMO,CAAuBP,CAAAA,CAAAA,CAAM,SAAS,CACpD,CAAA,CAED,OAAO,MAAM,OAAA,CAAQ,IAAIM,CAAO,CAClC,CAEA,eAAeC,CAAAA,CAAuBC,EAA2B,CAC/D,GAAI,CACF,IAAMC,CAAAA,CAAW,MAAM,KAAMD,CAAAA,CAAG,EAChC,GAAI,CAACC,CAAS,CAAA,EAAA,CACZ,MAAM,IAAI,KAAA,CACR,uBAAuBA,CAAS,CAAA,MAAM,KAAKA,CAAS,CAAA,UAAU,EAChE,CAIF,CAAA,OADa,MAAMA,CAAS,CAAA,IAAA,EAE9B,CAASC,MAAAA,CAAAA,CAAO,CACd,MAAM,IAAI,MACR,CAAuCA,mCAAAA,EAAAA,CAAAA,CAAc,OAAO,CAC9D,CAAA,CACF,CACF,CC3EO,SAASC,EACdlB,CACAC,CAAAA,CAAAA,CAIAkB,EAKA,CACA,OAAOC,oCAAe,IAAMrB,CAAAA,CAAcC,EAAQC,CAAO,CAAA,CAAGkB,CAAQ,CACtE","file":"index.cjs","sourcesContent":["import type { Flatfile } from '@flatfile/api'\nimport { generateFields } from '@flatfile/plugin-convert-json-schema'\nimport type { Setup } from '@flatfile/plugin-space-configure'\nimport jsYaml from 'js-yaml'\n\nexport interface ModelToSheetConfig extends PartialSheetConfig {\n sourceUrl: string\n}\n\nexport interface PartialSheetConfig\n extends Omit<Flatfile.SheetConfig, 'fields' | 'name'> {\n name?: string\n}\n\nexport interface PartialWorkbookConfig\n extends Omit<Flatfile.CreateWorkbookConfig, 'sheets' | 'name'> {\n name?: string\n}\n\nexport async function generateSetup(\n models?: ModelToSheetConfig[],\n options?: {\n workbookConfig?: PartialWorkbookConfig\n debug?: boolean\n }\n): Promise<Setup> {\n const schemas = await getSchemas(models)\n const asdf = schemas.map((schema) => jsYaml.load(schema))\n\n const sheets = await Promise.all(\n models.map(async (model: ModelToSheetConfig, i) => {\n const data = asdf[i]\n const fields = await generateFields(data)\n\n return {\n name: model?.name || data.title,\n ...(data?.description && { description: data.description }),\n fields,\n ...model,\n }\n })\n )\n const setup: Setup = {\n workbooks: [\n {\n name: options?.workbookConfig?.name || 'YAML Schema Workbook',\n sheets,\n },\n ],\n ...options?.workbookConfig,\n }\n if (options?.debug) {\n console.dir(setup, { depth: null })\n }\n return setup\n}\n\nasync function getSchemas(models?: ModelToSheetConfig[]) {\n const schemas = models.map(async (model: ModelToSheetConfig) => {\n return await fetchExternalReference(model.sourceUrl)\n })\n\n return await Promise.all(schemas)\n}\n\nasync function fetchExternalReference(url: string): Promise<any> {\n try {\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(\n `API returned status ${response.status}: ${response.statusText}`\n )\n }\n\n const data = await response.text()\n return data\n } catch (error) {\n throw new Error(\n `Error fetching external reference: ${(error as any).message}`\n )\n }\n}\n","import type { FlatfileEvent } from '@flatfile/listener'\nimport type { TickFunction } from '@flatfile/plugin-job-handler'\nimport { configureSpace } from '@flatfile/plugin-space-configure'\nimport type { ModelToSheetConfig, PartialWorkbookConfig } from './setup.factory'\nimport { generateSetup } from './setup.factory'\n\nexport function configureSpaceWithYamlSchema(\n models?: ModelToSheetConfig[],\n options?: {\n workbookConfig?: PartialWorkbookConfig\n debug?: boolean\n },\n callback?: (\n event: FlatfileEvent,\n workbookIds: string[],\n tick: TickFunction\n ) => any | Promise<any>\n) {\n return configureSpace(() => generateSetup(models, options), callback)\n}\n\nexport * from './setup.factory'\n"]}