@stackbox/cms 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/tsconfig.json CHANGED
@@ -12,6 +12,7 @@
12
12
  "strict": true,
13
13
  "skipLibCheck": true,
14
14
  "esModuleInterop": true,
15
+ "resolveJsonModule": true,
15
16
  "types": ["node"]
16
17
  },
17
18
  "include": ["src/**/*.ts"],
package/src/modules.ts DELETED
@@ -1,58 +0,0 @@
1
- import type { RenderContext } from "./pages.js";
2
- import type { HSHtml } from "@hyperspan/html";
3
-
4
- export type ModuleRenderResult = HSHtml | Promise<HSHtml>;
5
-
6
- export type Module = {
7
- readonly __kind: "module";
8
- readonly name: string;
9
- render(ctx: RenderContext): ModuleRenderResult;
10
- };
11
-
12
- type ModuleDef<TOptions = undefined> = {
13
- name: string;
14
- render(options: TOptions, ctx?: RenderContext): ModuleRenderResult;
15
- };
16
-
17
- export type ModuleOptionsOf<F> = F extends (options?: infer O) => unknown
18
- ? [O] extends [undefined]
19
- ? undefined
20
- : O
21
- : never;
22
-
23
- export type ModuleFactory<TOptions = undefined> = (
24
- options?: TOptions,
25
- ) => Module;
26
-
27
- function validateModuleName(name: string): void {
28
- if (!name || name.length === 0) {
29
- throw new Error("createModule(def): name is required");
30
- }
31
- }
32
-
33
- export function createModule<TOptions = undefined>(
34
- def: ModuleDef<TOptions>,
35
- ): ModuleFactory<TOptions> {
36
- validateModuleName(def.name);
37
-
38
- if (typeof def.render !== "function") {
39
- throw new Error("createModule(def): render is required");
40
- }
41
-
42
- return ((options?: TOptions) => ({
43
- __kind: "module" as const,
44
- name: def.name,
45
- render: (ctx: RenderContext) => def.render(options as TOptions, ctx),
46
- })) as ModuleFactory<TOptions>;
47
- }
48
-
49
- export function isModule(value: unknown): value is Module {
50
- return (
51
- typeof value === "object" &&
52
- value !== null &&
53
- (value as Module).__kind === "module" &&
54
- typeof (value as Module).name === "string" &&
55
- (value as Module).name.length > 0 &&
56
- typeof (value as Module).render === "function"
57
- );
58
- }
File without changes