UNPKG

@servable/tools

Version:

Servable tools is a utility that builds a protocol's manifest and documents it.

224 lines (182 loc) 7.5 kB
import gitUrlParse from "git-url-parse" import { ProtocolEnum } from "../../../../manifest/data/1.0.0/enums.js" // import append from "../utils/builder/append.js" import access from '../../../../manifest/access/index.js' import buildSeed from '../../chunks/build/protocol/seed.js' import buildProtocolClass from '../../chunks/build/protocol/class.js' import buildConfig from '../../chunks/build/protocol/config.js' import buildLiveClasses from '../../chunks/build/protocol/liveClasses.js' import buildAfterInit from '../../chunks/build/protocol/afterInit.js' import buildBeforeInit from '../../chunks/build/protocol/beforeInit.js' import buildFunctions from '../../chunks/build/protocol/functions.js' import buildSchema from '../../chunks/build/protocol/schema.js' import buildSystem from '../../chunks/build/protocol/system.js' import buildLib from '../../chunks/build/protocol/lib.js' import buildGithubTags from './chunks/githubTags.js' import buildRegistry from './chunks/registry.js' import buildInstall from './chunks/install.js' import buildUsage from './chunks/usage.js' import buildFooter from './chunks/footer.js' import buildPackages from './chunks/packages.js' import buildDependencies from './chunks/dependencies/index.js' import buildTriggers from '../../chunks/build/protocol/triggers.js' import buildAdapters from './chunks/adapters.js' import buildApis from './chunks/apis.js' import buildCategories from './chunks/categories.js' export default async props => { const { path, includeChunksInMain = true } = props let payload = [] const chunks = {} let extraction = null let githubPackageName = null let npmPackageName = null let mainPackage = null let packages let version = null let index = await access({ item: ProtocolEnum.Index, extraction, path }) if (index && index.data && index.data.module) { packages = index.data.module.packages mainPackage = index.data.module const { name, description, id, } = mainPackage version = mainPackage.version payload.push({ h1: `${name} *protocol for Servable*` }) payload.push({ p: `**${id}**` }) npmPackageName = id if (mainPackage.repository) { const { owner, name: _packageName } = gitUrlParse(mainPackage.repository.url) githubPackageName = `${owner}/${_packageName}` } else if (npmPackageName) { githubPackageName = npmPackageName.replace('@') } } chunks.githubTags = await buildGithubTags({ path, npmPackageName, githubPackageName }) // payload.push({ h2: chunks.githubTags.name }) payload = payload.concat(chunks.githubTags.payload) let icon = await access({ item: ProtocolEnum.Assets.Icon, // variant: ProtocolEnum.Assets.Icon.variants.x2, mimeType: ProtocolEnum.Assets.Icon.mimeTypes.SVG, extraction, path }) // if (icon && icon.data && icon.data.module) { // Github does not displaya svg if (false) { const data = icon.data.module.replace('<svg ', '<svg width="100px" height="100px" ') payload.push({ // p: icon.data.module, p: data }) } else { icon = await access({ item: ProtocolEnum.Assets.Icon, variant: ProtocolEnum.Assets.Icon.variants.x2, mimeType: ProtocolEnum.Assets.Icon.mimeTypes.PNG, extraction, path }) if (icon && icon.data && icon.data.module && icon.data.module.base64) { // Github does not displaya svg // payload.push({ // img: { // title: 'icon', // source: `${icon.data.module.base64}`, // alt: 'icon', // style: { width: "20px" } // } // }) // Can't resize // payload.push({ // img: { // title: 'icon', // source: `src/assets/icon.png`, // alt: 'icon', // style: { width: "20px" } // } // }) payload.push({ p: '<img src="src/assets/icon.png" alt="drawing" style="width:80px;" />' }) payload.push({ p: '\n' }) } } if (index && index.data && index.data.documentation) { payload.push({ p: index.data.documentation }) // payload.push({ p: '' }) } else if (index && index.data && index.data.module) { payload.push({ p: description }) } chunks.registry = await buildRegistry({ path, mainPackage, index }) // payload.push({ h2: chunks.githubTags.name }) payload = payload.concat(chunks.registry.payload) chunks.install = await buildInstall({ path, npmPackageName, githubPackageName }) // payload.push({ h2: chunks.githubTags.name }) payload = payload.concat(chunks.install.payload) chunks.adapters = await buildAdapters({ mainPackage }) // payload.push({ h2: chunks.githubTags.name }) payload = payload.concat(chunks.adapters.payload) chunks.apis = await buildApis({ mainPackage }) // payload.push({ h2: chunks.githubTags.name }) payload = payload.concat(chunks.apis.payload) chunks.categories = await buildCategories({ mainPackage }) // payload.push({ h2: chunks.githubTags.name }) payload = payload.concat(chunks.categories.payload) chunks.packages = await buildPackages({ packages }) // payload.push({ h2: chunks.githubTags.name }) payload = payload.concat(chunks.packages.payload) chunks.dependencies = await buildDependencies({ dependencies: mainPackage.dependencies }) // payload.push({ h2: chunks.githubTags.name }) payload = payload.concat(chunks.dependencies.payload) chunks.usage = await buildUsage({ path, mainPackage, index }) // payload.push({ h2: chunks.githubTags.name }) payload = payload.concat(chunks.usage.payload) // payload.push({ hr: `` }) // payload.push({ p: `*Generated documentation below*` }) chunks.seed = await buildSeed({ path }) payload.push({ h2: chunks.seed.name }) payload = payload.concat(chunks.seed.payload) chunks.protocolClass = await buildProtocolClass({ path }) payload.push({ h2: chunks.protocolClass.name }) payload = payload.concat(chunks.protocolClass.payload) chunks.beforeInit = await buildBeforeInit({ path }) payload.push({ h2: chunks.beforeInit.name }) payload = payload.concat(chunks.beforeInit.payload) chunks.afterInit = await buildAfterInit({ path }) payload.push({ h2: chunks.afterInit.name }) payload = payload.concat(chunks.afterInit.payload) chunks.config = await buildConfig({ path }) payload.push({ h2: chunks.config.name }) payload = payload.concat(chunks.config.payload) chunks.functions = await buildFunctions({ path }) payload.push({ h2: chunks.functions.name }) payload = payload.concat(chunks.functions.payload) chunks.liveClasses = await buildLiveClasses({ path }) payload.push({ h2: chunks.liveClasses.name }) payload = payload.concat(chunks.liveClasses.payload) chunks.schema = await buildSchema({ path, version }) payload.push({ h2: chunks.schema.name }) payload = payload.concat(chunks.schema.payload) chunks.system = await buildSystem({ path }) payload.push({ h2: chunks.system.name }) payload = payload.concat(chunks.system.payload) chunks.lib = await buildLib({ path }) payload.push({ h2: chunks.lib.name }) payload = payload.concat(chunks.lib.payload) chunks.triggers = await buildTriggers({ path }) payload.push({ h2: chunks.triggers.name }) payload = payload.concat(chunks.triggers.payload) chunks.footer = await buildFooter({ path }) payload = payload.concat(chunks.footer.payload) payload = payload.filter(a => a) return { payload, chunks, } }