create-noxion 0.1.1 → 0.2.0

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.
Files changed (83) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +159 -5
  4. package/dist/index.js.map +1 -1
  5. package/dist/scaffold.d.ts +9 -1
  6. package/dist/scaffold.d.ts.map +1 -1
  7. package/dist/scaffold.js +20 -3
  8. package/dist/scaffold.js.map +1 -1
  9. package/dist/templates/docs/.env +8 -0
  10. package/dist/templates/docs/.env.example +9 -0
  11. package/dist/templates/docs/app/[slug]/page.tsx +49 -0
  12. package/dist/templates/docs/app/api/notion-webhook/route.ts +12 -0
  13. package/dist/templates/docs/app/api/revalidate/route.ts +12 -0
  14. package/dist/templates/docs/app/globals.css +31 -0
  15. package/dist/templates/docs/app/layout.tsx +35 -0
  16. package/dist/templates/docs/app/not-found.tsx +38 -0
  17. package/dist/templates/docs/app/page.tsx +45 -0
  18. package/dist/templates/docs/app/providers.tsx +45 -0
  19. package/dist/templates/docs/app/robots.ts +7 -0
  20. package/dist/templates/docs/app/sitemap.ts +9 -0
  21. package/dist/templates/docs/app/theme-script.tsx +16 -0
  22. package/dist/templates/docs/lib/config.ts +24 -0
  23. package/dist/templates/docs/lib/notion.ts +48 -0
  24. package/dist/templates/docs/next.config.ts +26 -0
  25. package/dist/templates/docs/noxion.config.ts +23 -0
  26. package/dist/templates/docs/package.json +25 -0
  27. package/dist/templates/docs/tsconfig.json +19 -0
  28. package/dist/templates/full/.env +10 -0
  29. package/dist/templates/full/.env.example +11 -0
  30. package/dist/templates/full/app/[slug]/page.tsx +55 -0
  31. package/dist/templates/full/app/api/notion-webhook/route.ts +12 -0
  32. package/dist/templates/full/app/api/revalidate/route.ts +12 -0
  33. package/dist/templates/full/app/globals.css +31 -0
  34. package/dist/templates/full/app/home-content.tsx +58 -0
  35. package/dist/templates/full/app/layout.tsx +35 -0
  36. package/dist/templates/full/app/not-found.tsx +38 -0
  37. package/dist/templates/full/app/page.tsx +50 -0
  38. package/dist/templates/full/app/providers.tsx +45 -0
  39. package/dist/templates/full/app/robots.ts +7 -0
  40. package/dist/templates/full/app/sitemap.ts +9 -0
  41. package/dist/templates/full/app/tag/[tag]/page.tsx +66 -0
  42. package/dist/templates/full/app/theme-script.tsx +16 -0
  43. package/dist/templates/full/lib/config.ts +24 -0
  44. package/dist/templates/full/lib/notion.ts +66 -0
  45. package/dist/templates/full/next.config.ts +26 -0
  46. package/dist/templates/full/noxion.config.ts +40 -0
  47. package/dist/templates/full/package.json +25 -0
  48. package/dist/templates/full/tsconfig.json +19 -0
  49. package/dist/templates/nextjs/.env.example +1 -0
  50. package/dist/templates/nextjs/app/api/notion-webhook/route.ts +12 -0
  51. package/dist/templates/nextjs/app/page.tsx +3 -3
  52. package/dist/templates/nextjs/app/tag/[tag]/page.tsx +4 -4
  53. package/dist/templates/nextjs/lib/config.ts +1 -0
  54. package/dist/templates/nextjs/lib/notion.ts +5 -5
  55. package/dist/templates/plugin/noxion-plugin.json +10 -0
  56. package/dist/templates/plugin/package.json +41 -0
  57. package/dist/templates/plugin/src/__tests__/plugin.test.ts +39 -0
  58. package/dist/templates/plugin/src/index.ts +20 -0
  59. package/dist/templates/plugin/tsconfig.json +20 -0
  60. package/dist/templates/portfolio/.env +8 -0
  61. package/dist/templates/portfolio/.env.example +9 -0
  62. package/dist/templates/portfolio/app/[slug]/page.tsx +48 -0
  63. package/dist/templates/portfolio/app/api/notion-webhook/route.ts +12 -0
  64. package/dist/templates/portfolio/app/api/revalidate/route.ts +12 -0
  65. package/dist/templates/portfolio/app/globals.css +31 -0
  66. package/dist/templates/portfolio/app/layout.tsx +35 -0
  67. package/dist/templates/portfolio/app/not-found.tsx +38 -0
  68. package/dist/templates/portfolio/app/page.tsx +70 -0
  69. package/dist/templates/portfolio/app/providers.tsx +45 -0
  70. package/dist/templates/portfolio/app/robots.ts +7 -0
  71. package/dist/templates/portfolio/app/sitemap.ts +9 -0
  72. package/dist/templates/portfolio/app/theme-script.tsx +16 -0
  73. package/dist/templates/portfolio/lib/config.ts +24 -0
  74. package/dist/templates/portfolio/lib/notion.ts +48 -0
  75. package/dist/templates/portfolio/next.config.ts +26 -0
  76. package/dist/templates/portfolio/noxion.config.ts +23 -0
  77. package/dist/templates/portfolio/package.json +25 -0
  78. package/dist/templates/portfolio/tsconfig.json +19 -0
  79. package/dist/templates/theme/package.json +42 -0
  80. package/dist/templates/theme/src/index.ts +40 -0
  81. package/dist/templates/theme/styles/theme.css +23 -0
  82. package/dist/templates/theme/tsconfig.json +20 -0
  83. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { scaffoldProject, resolveTemplateVariables, getTemplateDir } from "./scaffold.js";
2
- export type { ScaffoldOptions, ScaffoldResult } from "./scaffold.js";
1
+ export { scaffoldProject, resolveTemplateVariables, getTemplateDir, resolveTemplateForType } from "./scaffold.js";
2
+ export type { ScaffoldOptions, ScaffoldResult, TemplateType } from "./scaffold.js";
3
3
  export declare function run(args?: string[]): Promise<void>;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC1F,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAErE,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAiG/E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAClH,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAInF,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB/E"}
package/dist/index.js CHANGED
@@ -1,18 +1,35 @@
1
1
  import * as p from "@clack/prompts";
2
2
  import { join } from "node:path";
3
- import { scaffoldProject, getTemplateDir } from "./scaffold.js";
4
- export { scaffoldProject, resolveTemplateVariables, getTemplateDir } from "./scaffold.js";
3
+ import { scaffoldProject, getTemplateDir, resolveTemplateForType } from "./scaffold.js";
4
+ export { scaffoldProject, resolveTemplateVariables, getTemplateDir, resolveTemplateForType } from "./scaffold.js";
5
+ const TEMPLATE_TYPES = ["blog", "docs", "portfolio", "full"];
5
6
  export async function run(args = process.argv.slice(2)) {
6
7
  p.intro("create-noxion");
7
8
  const projectNameArg = args[0];
8
9
  const flagArgs = parseFlags(args.slice(projectNameArg && !projectNameArg.startsWith("-") ? 1 : 0));
9
10
  const isNonInteractive = flagArgs.yes === true;
11
+ const isPlugin = flagArgs.plugin === true;
12
+ const isTheme = flagArgs.theme === true;
13
+ if (isPlugin) {
14
+ await runPluginScaffold(projectNameArg, flagArgs, isNonInteractive);
15
+ return;
16
+ }
17
+ if (isTheme) {
18
+ await runThemeScaffold(projectNameArg, flagArgs, isNonInteractive);
19
+ return;
20
+ }
21
+ await runSiteScaffold(projectNameArg, flagArgs, isNonInteractive);
22
+ }
23
+ async function runSiteScaffold(projectNameArg, flagArgs, isNonInteractive) {
10
24
  let projectName;
11
25
  let notionPageId;
12
26
  let siteName;
13
27
  let siteDescription;
14
28
  let author;
15
29
  let domain;
30
+ let templateType;
31
+ let docsNotionId;
32
+ let portfolioNotionId;
16
33
  if (isNonInteractive) {
17
34
  projectName = projectNameArg || "my-noxion-blog";
18
35
  notionPageId = flagArgs["notion-id"] || "";
@@ -20,6 +37,9 @@ export async function run(args = process.argv.slice(2)) {
20
37
  siteDescription = flagArgs["description"] || "A blog powered by Notion and Noxion";
21
38
  author = flagArgs["author"] || "Noxion";
22
39
  domain = flagArgs["domain"] || "localhost:3000";
40
+ templateType = isValidTemplate(flagArgs["template"]) ? flagArgs["template"] : "blog";
41
+ docsNotionId = flagArgs["docs-notion-id"] || undefined;
42
+ portfolioNotionId = flagArgs["portfolio-notion-id"] || undefined;
23
43
  }
24
44
  else {
25
45
  const nameResult = await p.text({
@@ -32,8 +52,24 @@ export async function run(args = process.argv.slice(2)) {
32
52
  process.exit(0);
33
53
  }
34
54
  projectName = nameResult;
55
+ const templateResult = await p.select({
56
+ message: "Project template",
57
+ options: [
58
+ { value: "blog", label: "Blog", hint: "Blog site (default)" },
59
+ { value: "docs", label: "Docs", hint: "Documentation site with sidebar" },
60
+ { value: "portfolio", label: "Portfolio", hint: "Portfolio with project grid" },
61
+ { value: "full", label: "Full", hint: "All page types (blog + docs + portfolio)" },
62
+ ],
63
+ });
64
+ if (p.isCancel(templateResult)) {
65
+ p.cancel("Cancelled.");
66
+ process.exit(0);
67
+ }
68
+ templateType = templateResult;
35
69
  const notionResult = await p.text({
36
- message: "Notion database page ID",
70
+ message: templateType === "blog" || templateType === "full"
71
+ ? "Notion database page ID (blog)"
72
+ : `Notion database page ID (${templateType})`,
37
73
  placeholder: "e.g. abc123def456...",
38
74
  validate: (v) => (!v.trim() ? "Notion page ID is required" : undefined),
39
75
  });
@@ -42,6 +78,26 @@ export async function run(args = process.argv.slice(2)) {
42
78
  process.exit(0);
43
79
  }
44
80
  notionPageId = notionResult;
81
+ if (templateType === "full") {
82
+ const docsResult = await p.text({
83
+ message: "Notion database page ID (docs)",
84
+ placeholder: "e.g. abc123def456... (leave empty to use same as blog)",
85
+ });
86
+ if (p.isCancel(docsResult)) {
87
+ p.cancel("Cancelled.");
88
+ process.exit(0);
89
+ }
90
+ docsNotionId = docsResult || undefined;
91
+ const portfolioResult = await p.text({
92
+ message: "Notion database page ID (portfolio)",
93
+ placeholder: "e.g. abc123def456... (leave empty to use same as blog)",
94
+ });
95
+ if (p.isCancel(portfolioResult)) {
96
+ p.cancel("Cancelled.");
97
+ process.exit(0);
98
+ }
99
+ portfolioNotionId = portfolioResult || undefined;
100
+ }
45
101
  const siteNameResult = await p.text({
46
102
  message: "Site name",
47
103
  initialValue: projectName,
@@ -79,8 +135,9 @@ export async function run(args = process.argv.slice(2)) {
79
135
  }
80
136
  domain = domainResult;
81
137
  }
138
+ const templateDirName = resolveTemplateForType(templateType);
82
139
  const targetDir = join(process.cwd(), projectName);
83
- const templateDir = getTemplateDir("nextjs");
140
+ const templateDir = getTemplateDir(templateDirName);
84
141
  const options = {
85
142
  projectName,
86
143
  notionPageId,
@@ -88,6 +145,9 @@ export async function run(args = process.argv.slice(2)) {
88
145
  siteDescription,
89
146
  author,
90
147
  domain,
148
+ templateType,
149
+ docsNotionId,
150
+ portfolioNotionId,
91
151
  };
92
152
  const spinner = p.spinner();
93
153
  spinner.start("Creating project...");
@@ -99,7 +159,101 @@ export async function run(args = process.argv.slice(2)) {
99
159
  `# Add your NOTION_PAGE_ID to .env`,
100
160
  `bun run dev`,
101
161
  ].join("\n"), "Next steps");
102
- p.outro("Happy blogging!");
162
+ const templateLabel = templateType === "blog" ? "blogging" : templateType === "docs" ? "documenting" : templateType === "portfolio" ? "building" : "creating";
163
+ p.outro(`Happy ${templateLabel}!`);
164
+ }
165
+ async function runPluginScaffold(projectNameArg, flagArgs, isNonInteractive) {
166
+ let pluginName;
167
+ let pluginDescription;
168
+ if (isNonInteractive) {
169
+ pluginName = projectNameArg || "my-plugin";
170
+ pluginDescription = flagArgs["description"] || "A Noxion plugin";
171
+ }
172
+ else {
173
+ const nameResult = await p.text({
174
+ message: "Plugin name (without noxion-plugin- prefix)",
175
+ initialValue: projectNameArg || "my-plugin",
176
+ validate: (v) => (!v.trim() ? "Plugin name is required" : undefined),
177
+ });
178
+ if (p.isCancel(nameResult)) {
179
+ p.cancel("Cancelled.");
180
+ process.exit(0);
181
+ }
182
+ pluginName = nameResult;
183
+ const descResult = await p.text({
184
+ message: "Plugin description",
185
+ initialValue: "A Noxion plugin",
186
+ });
187
+ if (p.isCancel(descResult)) {
188
+ p.cancel("Cancelled.");
189
+ process.exit(0);
190
+ }
191
+ pluginDescription = descResult;
192
+ }
193
+ const targetDir = join(process.cwd(), `noxion-plugin-${pluginName}`);
194
+ const templateDir = getTemplateDir("plugin");
195
+ const options = {
196
+ projectName: `noxion-plugin-${pluginName}`,
197
+ notionPageId: "",
198
+ siteName: "",
199
+ siteDescription: "",
200
+ author: "",
201
+ domain: "",
202
+ pluginName,
203
+ pluginDescription,
204
+ };
205
+ const spinner = p.spinner();
206
+ spinner.start("Creating plugin project...");
207
+ const result = await scaffoldProject(targetDir, templateDir, options);
208
+ spinner.stop(`Created ${result.files.length} files`);
209
+ p.note([
210
+ `cd noxion-plugin-${pluginName}`,
211
+ `bun install`,
212
+ `bun test`,
213
+ ].join("\n"), "Next steps");
214
+ p.outro("Happy plugin building!");
215
+ }
216
+ async function runThemeScaffold(projectNameArg, _flagArgs, isNonInteractive) {
217
+ let themeName;
218
+ if (isNonInteractive) {
219
+ themeName = projectNameArg || "my-theme";
220
+ }
221
+ else {
222
+ const nameResult = await p.text({
223
+ message: "Theme name (without noxion-theme- prefix)",
224
+ initialValue: projectNameArg || "my-theme",
225
+ validate: (v) => (!v.trim() ? "Theme name is required" : undefined),
226
+ });
227
+ if (p.isCancel(nameResult)) {
228
+ p.cancel("Cancelled.");
229
+ process.exit(0);
230
+ }
231
+ themeName = nameResult;
232
+ }
233
+ const targetDir = join(process.cwd(), `noxion-theme-${themeName}`);
234
+ const templateDir = getTemplateDir("theme");
235
+ const options = {
236
+ projectName: `noxion-theme-${themeName}`,
237
+ notionPageId: "",
238
+ siteName: "",
239
+ siteDescription: "",
240
+ author: "",
241
+ domain: "",
242
+ themeName,
243
+ };
244
+ const spinner = p.spinner();
245
+ spinner.start("Creating theme project...");
246
+ const result = await scaffoldProject(targetDir, templateDir, options);
247
+ spinner.stop(`Created ${result.files.length} files`);
248
+ p.note([
249
+ `cd noxion-theme-${themeName}`,
250
+ `bun install`,
251
+ `bun run build`,
252
+ ].join("\n"), "Next steps");
253
+ p.outro("Happy theming!");
254
+ }
255
+ function isValidTemplate(value) {
256
+ return typeof value === "string" && TEMPLATE_TYPES.includes(value);
103
257
  }
104
258
  function parseFlags(args) {
105
259
  const flags = {};
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG1F,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEzB,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnG,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC;IAE/C,IAAI,WAAmB,CAAC;IACxB,IAAI,YAAoB,CAAC;IACzB,IAAI,QAAgB,CAAC;IACrB,IAAI,eAAuB,CAAC;IAC5B,IAAI,MAAc,CAAC;IACnB,IAAI,MAAc,CAAC;IAEnB,IAAI,gBAAgB,EAAE,CAAC;QACrB,WAAW,GAAG,cAAc,IAAI,gBAAgB,CAAC;QACjD,YAAY,GAAI,QAAQ,CAAC,WAAW,CAAY,IAAI,EAAE,CAAC;QACvD,QAAQ,GAAI,QAAQ,CAAC,MAAM,CAAY,IAAI,WAAW,CAAC;QACvD,eAAe,GAAI,QAAQ,CAAC,aAAa,CAAY,IAAI,qCAAqC,CAAC;QAC/F,MAAM,GAAI,QAAQ,CAAC,QAAQ,CAAY,IAAI,QAAQ,CAAC;QACpD,MAAM,GAAI,QAAQ,CAAC,QAAQ,CAAY,IAAI,gBAAgB,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,cAAc;YACvB,YAAY,EAAE,cAAc,IAAI,gBAAgB;YAChD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,SAAS,CAAC;SACtE,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACxE,WAAW,GAAG,UAAU,CAAC;QAEzB,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAChC,OAAO,EAAE,yBAAyB;YAClC,WAAW,EAAE,sBAAsB;YACnC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,SAAS,CAAC;SACxE,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC1E,YAAY,GAAG,YAAY,CAAC;QAE5B,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,WAAW;YACpB,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC5E,QAAQ,GAAG,cAAc,CAAC;QAE1B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,kBAAkB;YAC3B,YAAY,EAAE,qCAAqC;SACpD,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACxE,eAAe,GAAG,UAAU,CAAC;QAE7B,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAChC,OAAO,EAAE,QAAQ;YACjB,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC1E,MAAM,GAAG,YAAY,CAAC;QAEtB,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAChC,OAAO,EAAE,QAAQ;YACjB,YAAY,EAAE,gBAAgB;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC1E,MAAM,GAAG,YAAY,CAAC;IACxB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAoB;QAC/B,WAAW;QACX,YAAY;QACZ,QAAQ;QACR,eAAe;QACf,MAAM;QACN,MAAM;KACP,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAErC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAEtE,OAAO,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;IAErD,CAAC,CAAC,IAAI,CACJ;QACE,MAAM,WAAW,EAAE;QACnB,aAAa;QACb,mCAAmC;QACnC,aAAa;KACd,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,YAAY,CACb,CAAC;IAEF,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,UAAU,CAAC,IAAc;IAChC,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGxF,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGlH,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAU,CAAC;AAEtE,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEzB,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnG,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC;IAE/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC;IAExC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,iBAAiB,CAAC,cAAc,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,gBAAgB,CAAC,cAAc,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,MAAM,eAAe,CAAC,cAAc,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,cAAkC,EAClC,QAA0C,EAC1C,gBAAyB;IAEzB,IAAI,WAAmB,CAAC;IACxB,IAAI,YAAoB,CAAC;IACzB,IAAI,QAAgB,CAAC;IACrB,IAAI,eAAuB,CAAC;IAC5B,IAAI,MAAc,CAAC;IACnB,IAAI,MAAc,CAAC;IACnB,IAAI,YAA0B,CAAC;IAC/B,IAAI,YAAgC,CAAC;IACrC,IAAI,iBAAqC,CAAC;IAE1C,IAAI,gBAAgB,EAAE,CAAC;QACrB,WAAW,GAAG,cAAc,IAAI,gBAAgB,CAAC;QACjD,YAAY,GAAI,QAAQ,CAAC,WAAW,CAAY,IAAI,EAAE,CAAC;QACvD,QAAQ,GAAI,QAAQ,CAAC,MAAM,CAAY,IAAI,WAAW,CAAC;QACvD,eAAe,GAAI,QAAQ,CAAC,aAAa,CAAY,IAAI,qCAAqC,CAAC;QAC/F,MAAM,GAAI,QAAQ,CAAC,QAAQ,CAAY,IAAI,QAAQ,CAAC;QACpD,MAAM,GAAI,QAAQ,CAAC,QAAQ,CAAY,IAAI,gBAAgB,CAAC;QAC5D,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAW,CAAC,CAAC,CAAC,CAAE,QAAQ,CAAC,UAAU,CAAkB,CAAC,CAAC,CAAC,MAAM,CAAC;QACjH,YAAY,GAAI,QAAQ,CAAC,gBAAgB,CAAY,IAAI,SAAS,CAAC;QACnE,iBAAiB,GAAI,QAAQ,CAAC,qBAAqB,CAAY,IAAI,SAAS,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,cAAc;YACvB,YAAY,EAAE,cAAc,IAAI,gBAAgB;YAChD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,SAAS,CAAC;SACtE,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACxE,WAAW,GAAG,UAAU,CAAC;QAEzB,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;YACpC,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE;gBAC7D,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE;gBACzE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,6BAA6B,EAAE;gBAC/E,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,0CAA0C,EAAE;aACnF;SACF,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC5E,YAAY,GAAG,cAA8B,CAAC;QAE9C,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAChC,OAAO,EAAE,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM;gBACzD,CAAC,CAAC,gCAAgC;gBAClC,CAAC,CAAC,4BAA4B,YAAY,GAAG;YAC/C,WAAW,EAAE,sBAAsB;YACnC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,SAAS,CAAC;SACxE,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC1E,YAAY,GAAG,YAAY,CAAC;QAE5B,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;gBAC9B,OAAO,EAAE,gCAAgC;gBACzC,WAAW,EAAE,wDAAwD;aACtE,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YACxE,YAAY,GAAG,UAAU,IAAI,SAAS,CAAC;YAEvC,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;gBACnC,OAAO,EAAE,qCAAqC;gBAC9C,WAAW,EAAE,wDAAwD;aACtE,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YAC7E,iBAAiB,GAAG,eAAe,IAAI,SAAS,CAAC;QACnD,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,WAAW;YACpB,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC5E,QAAQ,GAAG,cAAc,CAAC;QAE1B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,kBAAkB;YAC3B,YAAY,EAAE,qCAAqC;SACpD,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACxE,eAAe,GAAG,UAAU,CAAC;QAE7B,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAChC,OAAO,EAAE,QAAQ;YACjB,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC1E,MAAM,GAAG,YAAY,CAAC;QAEtB,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAChC,OAAO,EAAE,QAAQ;YACjB,YAAY,EAAE,gBAAgB;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC1E,MAAM,GAAG,YAAY,CAAC;IACxB,CAAC;IAED,MAAM,eAAe,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAoB;QAC/B,WAAW;QACX,YAAY;QACZ,QAAQ;QACR,eAAe;QACf,MAAM;QACN,MAAM;QACN,YAAY;QACZ,YAAY;QACZ,iBAAiB;KAClB,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAErC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAEtE,OAAO,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;IAErD,CAAC,CAAC,IAAI,CACJ;QACE,MAAM,WAAW,EAAE;QACnB,aAAa;QACb,mCAAmC;QACnC,aAAa;KACd,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,YAAY,CACb,CAAC;IAEF,MAAM,aAAa,GAAG,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAC9J,CAAC,CAAC,KAAK,CAAC,SAAS,aAAa,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,cAAkC,EAClC,QAA0C,EAC1C,gBAAyB;IAEzB,IAAI,UAAkB,CAAC;IACvB,IAAI,iBAAyB,CAAC;IAE9B,IAAI,gBAAgB,EAAE,CAAC;QACrB,UAAU,GAAG,cAAc,IAAI,WAAW,CAAC;QAC3C,iBAAiB,GAAI,QAAQ,CAAC,aAAa,CAAY,IAAI,iBAAiB,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,6CAA6C;YACtD,YAAY,EAAE,cAAc,IAAI,WAAW;YAC3C,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC;SACrE,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACxE,UAAU,GAAG,UAAU,CAAC;QAExB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,oBAAoB;YAC7B,YAAY,EAAE,iBAAiB;SAChC,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACxE,iBAAiB,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,UAAU,EAAE,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAoB;QAC/B,WAAW,EAAE,iBAAiB,UAAU,EAAE;QAC1C,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,EAAE;QACnB,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,UAAU;QACV,iBAAiB;KAClB,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAEtE,OAAO,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;IAErD,CAAC,CAAC,IAAI,CACJ;QACE,oBAAoB,UAAU,EAAE;QAChC,aAAa;QACb,UAAU;KACX,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,YAAY,CACb,CAAC;IAEF,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,cAAkC,EAClC,SAA2C,EAC3C,gBAAyB;IAEzB,IAAI,SAAiB,CAAC;IAEtB,IAAI,gBAAgB,EAAE,CAAC;QACrB,SAAS,GAAG,cAAc,IAAI,UAAU,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,2CAA2C;YACpD,YAAY,EAAE,cAAc,IAAI,UAAU;YAC1C,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC;SACpE,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACxE,SAAS,GAAG,UAAU,CAAC;IACzB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,SAAS,EAAE,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAoB;QAC/B,WAAW,EAAE,gBAAgB,SAAS,EAAE;QACxC,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,EAAE;QACnB,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,SAAS;KACV,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAE3C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAEtE,OAAO,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;IAErD,CAAC,CAAC,IAAI,CACJ;QACE,mBAAmB,SAAS,EAAE;QAC9B,aAAa;QACb,eAAe;KAChB,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,YAAY,CACb,CAAC;IAEF,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAqB,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,UAAU,CAAC,IAAc;IAChC,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,3 +1,4 @@
1
+ export type TemplateType = "blog" | "docs" | "portfolio" | "full";
1
2
  export interface ScaffoldOptions {
2
3
  projectName: string;
3
4
  notionPageId: string;
@@ -5,6 +6,12 @@ export interface ScaffoldOptions {
5
6
  siteDescription: string;
6
7
  author: string;
7
8
  domain: string;
9
+ templateType?: TemplateType;
10
+ docsNotionId?: string;
11
+ portfolioNotionId?: string;
12
+ pluginName?: string;
13
+ pluginDescription?: string;
14
+ themeName?: string;
8
15
  }
9
16
  export interface ScaffoldResult {
10
17
  directory: string;
@@ -12,5 +19,6 @@ export interface ScaffoldResult {
12
19
  }
13
20
  export declare function resolveTemplateVariables(content: string, options: ScaffoldOptions): string;
14
21
  export declare function scaffoldProject(targetDir: string, templateDir: string, options: ScaffoldOptions): Promise<ScaffoldResult>;
15
- export declare function getTemplateDir(framework: string): string;
22
+ export declare function getTemplateDir(template: string): string;
23
+ export declare function resolveTemplateForType(templateType: TemplateType): string;
16
24
  //# sourceMappingURL=scaffold.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GACvB,MAAM,CAQR;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CASzB;AA6BD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GACvB,MAAM,CAaR;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CASzB;AA6BD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAWzE"}
package/dist/scaffold.js CHANGED
@@ -7,7 +7,12 @@ export function resolveTemplateVariables(content, options) {
7
7
  .replace(/\{\{SITE_NAME\}\}/g, options.siteName)
8
8
  .replace(/\{\{SITE_DESCRIPTION\}\}/g, options.siteDescription)
9
9
  .replace(/\{\{AUTHOR\}\}/g, options.author)
10
- .replace(/\{\{DOMAIN\}\}/g, options.domain);
10
+ .replace(/\{\{DOMAIN\}\}/g, options.domain)
11
+ .replace(/\{\{DOCS_NOTION_ID\}\}/g, options.docsNotionId ?? "")
12
+ .replace(/\{\{PORTFOLIO_NOTION_ID\}\}/g, options.portfolioNotionId ?? "")
13
+ .replace(/\{\{PLUGIN_NAME\}\}/g, options.pluginName ?? "")
14
+ .replace(/\{\{PLUGIN_DESCRIPTION\}\}/g, options.pluginDescription ?? "A Noxion plugin")
15
+ .replace(/\{\{THEME_NAME\}\}/g, options.themeName ?? "");
11
16
  }
12
17
  export async function scaffoldProject(targetDir, templateDir, options) {
13
18
  await mkdir(targetDir, { recursive: true });
@@ -36,7 +41,19 @@ async function copyTemplateDir(src, dest, options, files = []) {
36
41
  }
37
42
  return files;
38
43
  }
39
- export function getTemplateDir(framework) {
40
- return join(import.meta.dirname, "templates", framework);
44
+ export function getTemplateDir(template) {
45
+ return join(import.meta.dirname, "templates", template);
46
+ }
47
+ export function resolveTemplateForType(templateType) {
48
+ switch (templateType) {
49
+ case "blog":
50
+ return "nextjs";
51
+ case "docs":
52
+ return "docs";
53
+ case "portfolio":
54
+ return "portfolio";
55
+ case "full":
56
+ return "full";
57
+ }
41
58
  }
42
59
  //# sourceMappingURL=scaffold.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAgB3C,MAAM,UAAU,wBAAwB,CACtC,OAAe,EACf,OAAwB;IAExB,OAAO,OAAO;SACX,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC,WAAW,CAAC;SACrD,OAAO,CAAC,yBAAyB,EAAE,OAAO,CAAC,YAAY,CAAC;SACxD,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,QAAQ,CAAC;SAC/C,OAAO,CAAC,2BAA2B,EAAE,OAAO,CAAC,eAAe,CAAC;SAC7D,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC;SAC1C,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAiB,EACjB,WAAmB,EACnB,OAAwB;IAExB,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAErE,OAAO;QACL,SAAS,EAAE,SAAS;QACpB,KAAK;KACN,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,GAAW,EACX,IAAY,EACZ,OAAwB,EACxB,QAAkB,EAAE;IAEpB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAEnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,MAAM,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5D,MAAM,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ NOTION_PAGE_ID={{NOTION_PAGE_ID}}
2
+ NOTION_TOKEN=
3
+ NOTION_SPACE_ID=
4
+ SITE_NAME={{SITE_NAME}}
5
+ SITE_DOMAIN={{DOMAIN}}
6
+ SITE_AUTHOR={{AUTHOR}}
7
+ SITE_DESCRIPTION={{SITE_DESCRIPTION}}
8
+ REVALIDATE_SECRET=
@@ -0,0 +1,9 @@
1
+ NOTION_PAGE_ID={{NOTION_PAGE_ID}}
2
+ NOTION_TOKEN=
3
+ NOTION_SPACE_ID=
4
+ SITE_NAME={{SITE_NAME}}
5
+ SITE_DOMAIN={{DOMAIN}}
6
+ SITE_AUTHOR={{AUTHOR}}
7
+ SITE_DESCRIPTION={{SITE_DESCRIPTION}}
8
+ REVALIDATE_SECRET=
9
+ NOTION_WEBHOOK_SECRET=
@@ -0,0 +1,49 @@
1
+ import { notFound } from "next/navigation";
2
+ import type { Metadata } from "next";
3
+ import { NotionPage } from "@noxion/renderer";
4
+ import { generateNoxionMetadata } from "@noxion/adapter-nextjs";
5
+ import { getPageBySlug, getPageRecordMap, getAllPages } from "../../lib/notion";
6
+ import { siteConfig } from "../../lib/config";
7
+
8
+ export const revalidate = 3600;
9
+
10
+ export async function generateStaticParams() {
11
+ const pages = await getAllPages();
12
+ return pages.map((p) => ({ slug: p.slug }));
13
+ }
14
+
15
+ export async function generateMetadata({
16
+ params,
17
+ }: {
18
+ params: Promise<{ slug: string }>;
19
+ }): Promise<Metadata> {
20
+ const { slug } = await params;
21
+ const page = await getPageBySlug(slug);
22
+ if (!page) return { title: "Not Found" };
23
+ return generateNoxionMetadata(page, siteConfig);
24
+ }
25
+
26
+ export default async function DocPage({
27
+ params,
28
+ }: {
29
+ params: Promise<{ slug: string }>;
30
+ }) {
31
+ const { slug } = await params;
32
+ const page = await getPageBySlug(slug);
33
+ if (!page) notFound();
34
+
35
+ const recordMap = await getPageRecordMap(page.id);
36
+
37
+ return (
38
+ <article>
39
+ <NotionPage
40
+ recordMap={recordMap}
41
+ rootPageId={page.id}
42
+ fullPage
43
+ previewImages
44
+ showTableOfContents
45
+ mapPageUrl={(pageId: string) => `/${pageId}`}
46
+ />
47
+ </article>
48
+ );
49
+ }
@@ -0,0 +1,12 @@
1
+ import { revalidatePath } from "next/cache";
2
+ import { createNotionWebhookHandler } from "@noxion/adapter-nextjs";
3
+ import { siteConfig } from "../../../lib/config";
4
+
5
+ const handler = createNotionWebhookHandler({
6
+ config: siteConfig,
7
+ revalidatePath,
8
+ });
9
+
10
+ export async function POST(request: Request) {
11
+ return handler(request);
12
+ }
@@ -0,0 +1,12 @@
1
+ import { revalidatePath } from "next/cache";
2
+ import { createRevalidateHandler } from "@noxion/adapter-nextjs";
3
+ import { siteConfig } from "../../../lib/config";
4
+
5
+ const handler = createRevalidateHandler({
6
+ config: siteConfig,
7
+ revalidatePath,
8
+ });
9
+
10
+ export async function POST(request: Request) {
11
+ return handler(request as never);
12
+ }
@@ -0,0 +1,31 @@
1
+ @import "@noxion/notion-renderer/styles";
2
+
3
+ *,
4
+ *::before,
5
+ *::after {
6
+ box-sizing: border-box;
7
+ margin: 0;
8
+ padding: 0;
9
+ }
10
+
11
+ html {
12
+ font-family: var(--noxion-font-sans, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
13
+ -webkit-font-smoothing: antialiased;
14
+ -moz-osx-font-smoothing: grayscale;
15
+ }
16
+
17
+ body {
18
+ background-color: var(--noxion-background, #fff);
19
+ color: var(--noxion-foreground, #0a0a0a);
20
+ min-height: 100vh;
21
+ }
22
+
23
+ [data-theme="dark"] body {
24
+ background-color: var(--noxion-background, #0a0a0a);
25
+ color: var(--noxion-foreground, #fafafa);
26
+ }
27
+
28
+ a {
29
+ color: inherit;
30
+ text-decoration: none;
31
+ }
@@ -0,0 +1,35 @@
1
+ import type { Metadata } from "next";
2
+ import { generateNoxionListMetadata, generateWebSiteLD } from "@noxion/adapter-nextjs";
3
+ import { siteConfig } from "../lib/config";
4
+ import { ThemeScript } from "./theme-script";
5
+ import { Providers } from "./providers";
6
+ import "./globals.css";
7
+
8
+ export function generateMetadata(): Metadata {
9
+ return generateNoxionListMetadata(siteConfig);
10
+ }
11
+
12
+ export default function RootLayout({
13
+ children,
14
+ }: {
15
+ children: React.ReactNode;
16
+ }) {
17
+ const jsonLd = generateWebSiteLD(siteConfig);
18
+
19
+ return (
20
+ <html lang={siteConfig.language} suppressHydrationWarning>
21
+ <head>
22
+ <ThemeScript />
23
+ <script
24
+ type="application/ld+json"
25
+ dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
26
+ />
27
+ </head>
28
+ <body>
29
+ <Providers siteName={siteConfig.name} author={siteConfig.author}>
30
+ {children}
31
+ </Providers>
32
+ </body>
33
+ </html>
34
+ );
35
+ }
@@ -0,0 +1,38 @@
1
+ import Link from "next/link";
2
+
3
+ export default function NotFound() {
4
+ return (
5
+ <div
6
+ style={{
7
+ display: "flex",
8
+ flexDirection: "column",
9
+ alignItems: "center",
10
+ justifyContent: "center",
11
+ minHeight: "50vh",
12
+ textAlign: "center",
13
+ gap: "1rem",
14
+ }}
15
+ >
16
+ <h1 style={{ fontSize: "4rem", fontWeight: 700, color: "var(--noxion-mutedForeground, #737373)" }}>
17
+ 404
18
+ </h1>
19
+ <p style={{ fontSize: "1.125rem", color: "var(--noxion-mutedForeground, #737373)" }}>
20
+ This page could not be found.
21
+ </p>
22
+ <Link
23
+ href="/"
24
+ style={{
25
+ marginTop: "1rem",
26
+ padding: "0.5rem 1.5rem",
27
+ borderRadius: "var(--noxion-border-radius, 0.5rem)",
28
+ backgroundColor: "var(--noxion-primary, #2563eb)",
29
+ color: "var(--noxion-primaryForeground, #fff)",
30
+ fontSize: "0.875rem",
31
+ fontWeight: 500,
32
+ }}
33
+ >
34
+ Go Home
35
+ </Link>
36
+ </div>
37
+ );
38
+ }
@@ -0,0 +1,45 @@
1
+ import Link from "next/link";
2
+ import { getAllPages } from "../lib/notion";
3
+
4
+ export const revalidate = 3600;
5
+
6
+ export default async function HomePage() {
7
+ const pages = await getAllPages();
8
+
9
+ const sections = new Map<string, typeof pages>();
10
+ for (const page of pages) {
11
+ const section = (page.metadata.section as string) ?? "General";
12
+ if (!sections.has(section)) sections.set(section, []);
13
+ sections.get(section)!.push(page);
14
+ }
15
+
16
+ return (
17
+ <div>
18
+ <h1 style={{ fontSize: "1.5rem", fontWeight: 700, marginBottom: "2rem" }}>
19
+ Documentation
20
+ </h1>
21
+ {[...sections.entries()].map(([section, sectionPages]) => (
22
+ <div key={section} style={{ marginBottom: "2rem" }}>
23
+ <h2 style={{ fontSize: "1.125rem", fontWeight: 600, marginBottom: "0.75rem" }}>
24
+ {section}
25
+ </h2>
26
+ <ul style={{ listStyle: "none", display: "flex", flexDirection: "column", gap: "0.5rem" }}>
27
+ {sectionPages.map((page) => (
28
+ <li key={page.id}>
29
+ <Link
30
+ href={`/${page.slug}`}
31
+ style={{
32
+ color: "var(--noxion-primary, #2563eb)",
33
+ fontSize: "0.95rem",
34
+ }}
35
+ >
36
+ {page.title}
37
+ </Link>
38
+ </li>
39
+ ))}
40
+ </ul>
41
+ </div>
42
+ ))}
43
+ </div>
44
+ );
45
+ }
@@ -0,0 +1,45 @@
1
+ "use client";
2
+
3
+ import { NoxionThemeProvider, defaultTheme, Header, Footer } from "@noxion/renderer";
4
+
5
+ interface ProvidersProps {
6
+ siteName: string;
7
+ author: string;
8
+ children: React.ReactNode;
9
+ }
10
+
11
+ export function Providers({ siteName, author, children }: ProvidersProps) {
12
+ return (
13
+ <NoxionThemeProvider theme={defaultTheme}>
14
+ <div
15
+ style={{
16
+ display: "flex",
17
+ flexDirection: "column",
18
+ minHeight: "100vh",
19
+ }}
20
+ >
21
+ <Header
22
+ siteName={siteName}
23
+ navigation={[
24
+ { label: "Home", href: "/" },
25
+ ]}
26
+ />
27
+ <main
28
+ style={{
29
+ flex: 1,
30
+ width: "100%",
31
+ maxWidth: "var(--noxion-content-width, 720px)",
32
+ margin: "0 auto",
33
+ padding: "2rem 1.5rem",
34
+ }}
35
+ >
36
+ {children}
37
+ </main>
38
+ <Footer
39
+ siteName={siteName}
40
+ author={author}
41
+ />
42
+ </div>
43
+ </NoxionThemeProvider>
44
+ );
45
+ }
@@ -0,0 +1,7 @@
1
+ import type { MetadataRoute } from "next";
2
+ import { generateNoxionRobots } from "@noxion/adapter-nextjs";
3
+ import { siteConfig } from "../lib/config";
4
+
5
+ export default function robots(): MetadataRoute.Robots {
6
+ return generateNoxionRobots(siteConfig);
7
+ }