UNPKG

@neodx/vfs

Version:

Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover

1 lines 3.92 kB
{"version":3,"file":"prettier.cjs","sources":["../../../src/plugins/prettier.ts"],"sourcesContent":["import { createTaskRunner } from '@neodx/internal/tasks';\nimport { tryFormatPrettier } from '@neodx/pkg-misc';\nimport { concurrently, isTypeOfString } from '@neodx/std';\nimport { displayPath, getVfsActions } from '../core/operations';\nimport type { VfsContentLike } from '../core/types';\nimport { createVfsPlugin } from '../create-vfs-plugin';\n\nexport interface PrettierPluginParams {\n /** Pass `false` to disable auto formatting on apply */\n auto?: boolean;\n}\n\nexport interface PrettierPluginApi {\n format(path: string): Promise<boolean>;\n // TODO Return information about formatted files count\n formatAll(): Promise<void>;\n}\n\nexport function prettier({ auto = true }: PrettierPluginParams = {}) {\n return createVfsPlugin<PrettierPluginApi>('prettier', (vfs, { context, beforeApply }) => {\n const log = context.log.child('prettier');\n const { task } = createTaskRunner({ log });\n\n const format = task(\n 'format',\n async (path: string, content: VfsContentLike) => {\n const formattedContent = await tryFormatPrettier(\n path,\n isTypeOfString(content) ? content : content.toString('utf-8')\n );\n\n if (formattedContent !== null) {\n await vfs.write(path, formattedContent);\n }\n return formattedContent !== null;\n },\n {\n mapSuccessMessage: (formatted, path) =>\n `${displayPath(context, path)} ${formatted ? 'formatted' : 'skipped'}`\n }\n );\n\n vfs.format = async (path: string) => await format(path, await vfs.read(path, 'utf-8'));\n vfs.formatAll = task(\n 'format all',\n async () => {\n await concurrently(\n await getVfsActions(context, ['create', 'update']),\n async ({ path, content }) => format(path, content),\n 5\n );\n },\n {\n mapSuccessMessage: () => 'formatted all changed files'\n }\n );\n\n if (auto) {\n beforeApply(() => vfs.formatAll!());\n }\n\n return vfs;\n });\n}\n"],"names":["prettier","auto","createVfsPlugin","vfs","context","beforeApply","log","child","task","createTaskRunner","format","path","content","formattedContent","tryFormatPrettier","isTypeOfString","toString","write","mapSuccessMessage","formatted","displayPath","read","formatAll","concurrently","getVfsActions"],"mappings":";;;;;;;AAkBO,SAASA,SAAS,EAAEC,IAAAA,GAAO,IAAI,EAAwB,GAAG,EAAE,EAAA;IACjE,OAAOC,+BAAAA,CAAmC,YAAY,CAACC,GAAAA,EAAK,EAAEC,OAAO,EAAEC,WAAW,EAAE,GAAA;AAClF,QAAA,MAAMC,GAAMF,GAAAA,OAAAA,CAAQE,GAAG,CAACC,KAAK,CAAC,UAAA,CAAA,CAAA;AAC9B,QAAA,MAAM,EAAEC,IAAI,EAAE,GAAGC,2BAAiB,CAAA;AAAEH,YAAAA,GAAAA;AAAI,SAAA,CAAA,CAAA;AAExC,QAAA,MAAMI,MAASF,GAAAA,IAAAA,CACb,QACA,EAAA,OAAOG,IAAcC,EAAAA,OAAAA,GAAAA;YACnB,MAAMC,gBAAAA,GAAmB,MAAMC,yBAC7BH,CAAAA,IAAAA,EACAI,mBAAeH,OAAWA,CAAAA,GAAAA,OAAAA,GAAUA,OAAQI,CAAAA,QAAQ,CAAC,OAAA,CAAA,CAAA,CAAA;AAGvD,YAAA,IAAIH,qBAAqB,IAAM,EAAA;gBAC7B,MAAMV,GAAAA,CAAIc,KAAK,CAACN,IAAME,EAAAA,gBAAAA,CAAAA,CAAAA;AACxB,aAAA;AACA,YAAA,OAAOA,gBAAqB,KAAA,IAAA,CAAA;SAE9B,EAAA;AACEK,YAAAA,iBAAAA,EAAmB,CAACC,SAAAA,EAAWR,IAC7B,GAAA,CAAC,EAAES,sBAAAA,CAAYhB,OAASO,EAAAA,IAAAA,CAAAA,CAAM,CAAC,EAAEQ,SAAY,GAAA,WAAA,GAAc,UAAU,CAAC;AAC1E,SAAA,CAAA,CAAA;QAGFhB,GAAIO,CAAAA,MAAM,GAAG,OAAOC,IAAiB,GAAA,MAAMD,MAAOC,CAAAA,IAAAA,EAAM,MAAMR,GAAAA,CAAIkB,IAAI,CAACV,IAAM,EAAA,OAAA,CAAA,CAAA,CAAA;QAC7ER,GAAImB,CAAAA,SAAS,GAAGd,IAAAA,CACd,YACA,EAAA,UAAA;YACE,MAAMe,gBAAAA,CACJ,MAAMC,wBAAAA,CAAcpB,OAAS,EAAA;AAAC,gBAAA,QAAA;AAAU,gBAAA,QAAA;aAAS,CACjD,EAAA,OAAO,EAAEO,IAAI,EAAEC,OAAO,EAAE,GAAKF,MAAOC,CAAAA,IAAAA,EAAMC,OAC1C,CAAA,EAAA,CAAA,CAAA,CAAA;SAGJ,EAAA;AACEM,YAAAA,iBAAAA,EAAmB,IAAM,6BAAA;AAC3B,SAAA,CAAA,CAAA;AAGF,QAAA,IAAIjB,IAAM,EAAA;YACRI,WAAY,CAAA,IAAMF,IAAImB,SAAS,EAAA,CAAA,CAAA;AACjC,SAAA;QAEA,OAAOnB,GAAAA,CAAAA;AACT,KAAA,CAAA,CAAA;AACF;;;;"}