|
- // src/createBuilder.ts
- import { createFnWithProps } from "inferred-types";
- function createAboutSection(name, description, stage) {
- return {
- kind: "builder",
- about: { name, description, stage }
- };
- }
- var createBuilder = (name, lifecycle) => {
- return {
- options: () => {
- return {
- initializer: (initializer) => {
- return {
- handler: (handler) => {
- return {
- meta(meta = {}) {
- const apiMeta = createAboutSection(name, meta?.description || "", lifecycle);
- const registration = {
- ...meta,
- name,
- lifecycle,
- description: meta?.description,
- parserRules: meta?.parserRules,
- handler,
- initializer
- };
- const api = createFnWithProps(
- (options = {}) => createFnWithProps(
- () => ({ ...registration, options: options || {}, ...apiMeta }),
- apiMeta
- ),
- apiMeta
- );
- return api;
- }
- };
- }
- };
- }
- };
- }
- };
- };
- export {
- createBuilder
- };
|