create-frootkit 1.2.0 → 1.2.1

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/dist/index.js CHANGED
@@ -11,7 +11,7 @@ import { scaffoldProject } from './scaffold.js';
11
11
  export * from './template.js';
12
12
  export * from './scaffold.js';
13
13
  export * from './ui.js';
14
- const VERSION = '1.2.0';
14
+ const VERSION = '1.2.1';
15
15
  function parseCliArgs(argv) {
16
16
  const raw = argv.slice(2);
17
17
  const args = {};
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Template Definition for FrootKit (Next.js Alternative).
3
- * Loads project templates from real template folders on disk (with fallback to code definitions).
3
+ * Loads project templates directly from physical template folders on disk.
4
4
  */
5
+ import { type TemplateFileMap } from './templates/index.js';
5
6
  export * from './templates/index.js';
6
- export declare function generateFrootKitTemplate(projectName: string, templateId?: string): Record<string, string>;
7
+ export declare function generateFrootKitTemplate(projectName: string, templateId?: string): TemplateFileMap;
7
8
  export declare const generateFullstackTemplate: typeof generateFrootKitTemplate;
8
9
  //# sourceMappingURL=template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,cAAc,sBAAsB,CAAC;AAqCrC,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,MAAkB,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUxB;AAED,eAAO,MAAM,yBAAyB,iCAA2B,CAAC"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAgC,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE1F,cAAc,sBAAsB,CAAC;AAErC,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,MAAkB,GAC7B,eAAe,CAGjB;AAED,eAAO,MAAM,yBAAyB,iCAA2B,CAAC"}
package/dist/template.js CHANGED
@@ -1,52 +1,10 @@
1
1
  /**
2
2
  * Template Definition for FrootKit (Next.js Alternative).
3
- * Loads project templates from real template folders on disk (with fallback to code definitions).
3
+ * Loads project templates directly from physical template folders on disk.
4
4
  */
5
- import * as fs from 'node:fs';
6
- import * as path from 'node:path';
7
5
  import { getTemplate, starterTemplate } from './templates/index.js';
8
6
  export * from './templates/index.js';
9
- /**
10
- * Attempts to load template files directly from the physical template directory on disk.
11
- */
12
- function loadTemplateFromDisk(templateId, projectName) {
13
- const candidateDirs = [
14
- path.resolve(import.meta.dirname, '../templates', templateId),
15
- path.resolve(import.meta.dirname, '../../templates', templateId),
16
- path.resolve(process.cwd(), 'templates', templateId),
17
- path.resolve(process.cwd(), 'create-frootkit/templates', templateId),
18
- ];
19
- for (const dir of candidateDirs) {
20
- if (fs.existsSync(dir) && fs.statSync(dir).isDirectory()) {
21
- const files = {};
22
- const walk = (currentDir, base = '') => {
23
- const entries = fs.readdirSync(currentDir, { withFileTypes: true });
24
- for (const entry of entries) {
25
- const rel = base ? `${base}/${entry.name}` : entry.name;
26
- const full = path.join(currentDir, entry.name);
27
- if (entry.isDirectory()) {
28
- walk(full, rel);
29
- }
30
- else if (entry.isFile()) {
31
- let content = fs.readFileSync(full, 'utf8');
32
- content = content.replaceAll('{{PROJECT_NAME}}', projectName);
33
- files[rel] = content;
34
- }
35
- }
36
- };
37
- walk(dir);
38
- return files;
39
- }
40
- }
41
- return null;
42
- }
43
7
  export function generateFrootKitTemplate(projectName, templateId = 'starter') {
44
- // 1. Try physical folder on disk first
45
- const diskFiles = loadTemplateFromDisk(templateId, projectName);
46
- if (diskFiles && Object.keys(diskFiles).length > 0) {
47
- return diskFiles;
48
- }
49
- // 2. Fall back to compiled template generator
50
8
  const tpl = getTemplate(templateId) || starterTemplate;
51
9
  return tpl.generate(projectName);
52
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAwB,MAAM,sBAAsB,CAAC;AAE1F,cAAc,sBAAsB,CAAC;AAErC;;GAEG;AACH,SAAS,oBAAoB,CAAC,UAAkB,EAAE,WAAmB;IACnE,MAAM,aAAa,GAAG;QACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,UAAU,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,2BAA2B,EAAE,UAAU,CAAC;KACrE,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACzD,MAAM,KAAK,GAA2B,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,CAAC,UAAkB,EAAE,OAAe,EAAE,EAAE,EAAE;gBACrD,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;oBACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;wBACxB,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAClB,CAAC;yBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;wBAC1B,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;wBAC5C,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;wBAC9D,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,WAAmB,EACnB,aAAqB,SAAS;IAE9B,uCAAuC;IACvC,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,8CAA8C;IAC9C,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC;IACvD,OAAO,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,wBAAwB,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAwB,MAAM,sBAAsB,CAAC;AAE1F,cAAc,sBAAsB,CAAC;AAErC,MAAM,UAAU,wBAAwB,CACtC,WAAmB,EACnB,aAAqB,SAAS;IAE9B,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC;IACvD,OAAO,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,wBAAwB,CAAC"}
@@ -1,15 +1,22 @@
1
1
  /**
2
2
  * Template Registry for create-frootkit
3
- * Provides templates for Starter, Empty/Minimal, Blog, E-Commerce, and SaaS & Auth.
3
+ * Dynamically loads templates from physical template folders on disk.
4
4
  */
5
- import type { TemplateDefinition, TemplateId } from './types.js';
6
- import { starterTemplate } from './starter.js';
7
- import { emptyTemplate } from './empty.js';
8
- import { blogTemplate } from './blog.js';
9
- import { ecommerceTemplate } from './ecommerce.js';
10
- import { authTemplate } from './auth.js';
5
+ import type { TemplateDefinition, TemplateId, TemplateFileMap } from './types.js';
11
6
  export * from './types.js';
12
- export { starterTemplate, emptyTemplate, blogTemplate, ecommerceTemplate, authTemplate };
7
+ /**
8
+ * Resolves the directory for a given template ID.
9
+ */
10
+ export declare function getTemplateDir(templateId: TemplateId): string;
11
+ /**
12
+ * Reads all files from the physical template directory recursively.
13
+ */
14
+ export declare function readTemplateFiles(templateId: TemplateId, projectName: string): TemplateFileMap;
15
+ export declare const starterTemplate: TemplateDefinition;
16
+ export declare const emptyTemplate: TemplateDefinition;
17
+ export declare const blogTemplate: TemplateDefinition;
18
+ export declare const ecommerceTemplate: TemplateDefinition;
19
+ export declare const authTemplate: TemplateDefinition;
13
20
  export declare const TEMPLATES: Record<TemplateId, TemplateDefinition>;
14
21
  export declare const TEMPLATE_LIST: TemplateDefinition[];
15
22
  export declare function getTemplate(id?: string): TemplateDefinition | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAEzF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAM5D,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,kBAAkB,EAM7C,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAIvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElF,cAAc,YAAY,CAAC;AAE3B;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAe7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe,CAqB9F;AAED,eAAO,MAAM,eAAe,EAAE,kBAM7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,kBAK3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,kBAK1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAK/B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,kBAK1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAM5D,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,kBAAkB,EAM7C,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAIvE"}
@@ -1,14 +1,82 @@
1
1
  /**
2
2
  * Template Registry for create-frootkit
3
- * Provides templates for Starter, Empty/Minimal, Blog, E-Commerce, and SaaS & Auth.
3
+ * Dynamically loads templates from physical template folders on disk.
4
4
  */
5
- import { starterTemplate } from './starter.js';
6
- import { emptyTemplate } from './empty.js';
7
- import { blogTemplate } from './blog.js';
8
- import { ecommerceTemplate } from './ecommerce.js';
9
- import { authTemplate } from './auth.js';
5
+ import * as fs from 'node:fs';
6
+ import * as path from 'node:path';
10
7
  export * from './types.js';
11
- export { starterTemplate, emptyTemplate, blogTemplate, ecommerceTemplate, authTemplate };
8
+ /**
9
+ * Resolves the directory for a given template ID.
10
+ */
11
+ export function getTemplateDir(templateId) {
12
+ const candidateDirs = [
13
+ path.resolve(import.meta.dirname, '../../templates', templateId),
14
+ path.resolve(import.meta.dirname, '../templates', templateId),
15
+ path.resolve(process.cwd(), 'templates', templateId),
16
+ path.resolve(process.cwd(), 'create-frootkit/templates', templateId),
17
+ ];
18
+ for (const dir of candidateDirs) {
19
+ if (fs.existsSync(dir) && fs.statSync(dir).isDirectory()) {
20
+ return dir;
21
+ }
22
+ }
23
+ throw new Error(`Template directory not found for template "${templateId}".`);
24
+ }
25
+ /**
26
+ * Reads all files from the physical template directory recursively.
27
+ */
28
+ export function readTemplateFiles(templateId, projectName) {
29
+ const dir = getTemplateDir(templateId);
30
+ const files = {};
31
+ const walk = (currentDir, base = '') => {
32
+ const entries = fs.readdirSync(currentDir, { withFileTypes: true });
33
+ for (const entry of entries) {
34
+ const rel = base ? `${base}/${entry.name}` : entry.name;
35
+ const full = path.join(currentDir, entry.name);
36
+ if (entry.isDirectory()) {
37
+ walk(full, rel);
38
+ }
39
+ else if (entry.isFile()) {
40
+ let content = fs.readFileSync(full, 'utf8');
41
+ content = content.replaceAll('{{PROJECT_NAME}}', projectName);
42
+ files[rel] = content;
43
+ }
44
+ }
45
+ };
46
+ walk(dir);
47
+ return files;
48
+ }
49
+ export const starterTemplate = {
50
+ id: 'starter',
51
+ name: 'Starter (Recommended)',
52
+ description: 'Full-featured developer showcase with hero, Tailwind v4, and health API',
53
+ badge: 'Recommended',
54
+ generate: (projectName) => readTemplateFiles('starter', projectName),
55
+ };
56
+ export const emptyTemplate = {
57
+ id: 'empty',
58
+ name: 'Minimal Canvas',
59
+ description: 'Clean blank slate with Preact SSR and Tailwind CSS',
60
+ generate: (projectName) => readTemplateFiles('empty', projectName),
61
+ };
62
+ export const blogTemplate = {
63
+ id: 'blog',
64
+ name: 'Blog & Content',
65
+ description: 'Engineering articles, dynamic [slug] routes, and search API',
66
+ generate: (projectName) => readTemplateFiles('blog', projectName),
67
+ };
68
+ export const ecommerceTemplate = {
69
+ id: 'ecommerce',
70
+ name: 'E-Commerce Store',
71
+ description: 'Product catalog, [id] details, cart & checkout API',
72
+ generate: (projectName) => readTemplateFiles('ecommerce', projectName),
73
+ };
74
+ export const authTemplate = {
75
+ id: 'auth',
76
+ name: 'SaaS & Authentication',
77
+ description: 'Web Crypto PBKDF2 hashing, sessions, login, signup & dashboard',
78
+ generate: (projectName) => readTemplateFiles('auth', projectName),
79
+ };
12
80
  export const TEMPLATES = {
13
81
  starter: starterTemplate,
14
82
  empty: emptyTemplate,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAEzF,MAAM,CAAC,MAAM,SAAS,GAA2C;IAC/D,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,YAAY;IAClB,SAAS,EAAE,iBAAiB;IAC5B,IAAI,EAAE,YAAY;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAyB;IACjD,eAAe;IACf,aAAa;IACb,YAAY;IACZ,iBAAiB;IACjB,YAAY;CACb,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,EAAW;IACrC,IAAI,CAAC,EAAE;QAAE,OAAO,eAAe,CAAC;IAChC,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAgB,CAAC;IAClD,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,SAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAClF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-frootkit",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "Interactive CLI for scaffolding high-performance FrootKit (Next.js Alternative) applications",
5
5
  "type": "module",
6
6
  "bin": {