版博士V2.0程序
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

index.js 1.3 KiB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // src/createBuilder.ts
  2. import { createFnWithProps } from "inferred-types";
  3. function createAboutSection(name, description, stage) {
  4. return {
  5. kind: "builder",
  6. about: { name, description, stage }
  7. };
  8. }
  9. var createBuilder = (name, lifecycle) => {
  10. return {
  11. options: () => {
  12. return {
  13. initializer: (initializer) => {
  14. return {
  15. handler: (handler) => {
  16. return {
  17. meta(meta = {}) {
  18. const apiMeta = createAboutSection(name, meta?.description || "", lifecycle);
  19. const registration = {
  20. ...meta,
  21. name,
  22. lifecycle,
  23. description: meta?.description,
  24. parserRules: meta?.parserRules,
  25. handler,
  26. initializer
  27. };
  28. const api = createFnWithProps(
  29. (options = {}) => createFnWithProps(
  30. () => ({ ...registration, options: options || {}, ...apiMeta }),
  31. apiMeta
  32. ),
  33. apiMeta
  34. );
  35. return api;
  36. }
  37. };
  38. }
  39. };
  40. }
  41. };
  42. }
  43. };
  44. };
  45. export {
  46. createBuilder
  47. };