@timbenniks/contentstack-platform-app-scaffold 0.1.0 → 0.1.6
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/README.md +141 -0
- package/dist/commands/scaffold.d.ts +0 -1
- package/dist/commands/scaffold.d.ts.map +1 -1
- package/dist/commands/scaffold.js +0 -5
- package/dist/commands/scaffold.js.map +1 -1
- package/dist/services/prompts.d.ts.map +1 -1
- package/dist/services/prompts.js +94 -7
- package/dist/services/prompts.js.map +1 -1
- package/dist/services/scaffold.d.ts.map +1 -1
- package/dist/services/scaffold.js +68 -19
- package/dist/services/scaffold.js.map +1 -1
- package/dist/types.d.ts +0 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/oclif.manifest.json +5 -21
- package/package.json +6 -2
- package/templates/nextjs/.env.example.hbs +31 -4
- package/templates/nextjs/app/api/auth/[...nextauth]/route.ts.hbs +1 -0
- package/templates/nextjs/app/api/brandkit/[...path]/route.ts.hbs +7 -18
- package/templates/nextjs/app/api/cma/[...path]/route.ts.hbs +7 -18
- package/templates/nextjs/app/api/launch/[...path]/route.ts.hbs +7 -18
- package/templates/nextjs/app/assets/page.tsx.hbs +27 -12
- package/templates/nextjs/app/brandkit/page.tsx.hbs +32 -19
- package/templates/nextjs/app/entries/page.tsx.hbs +29 -13
- package/templates/nextjs/app/globals.css.hbs +175 -0
- package/templates/nextjs/app/launch/page.tsx.hbs +32 -19
- package/templates/nextjs/app/layout.tsx.hbs +19 -4
- package/templates/nextjs/app/page.tsx.hbs +142 -38
- package/templates/nextjs/app/providers.tsx.hbs +13 -1
- package/templates/nextjs/lib/auth.ts.hbs +48 -10
- package/templates/nextjs/manifest.json +3 -4
- package/templates/nextjs/next.config.ts +7 -0
- package/templates/nextjs/types/next-auth.d.ts.hbs +8 -0
- package/templates/nextjs/next.config.js +0 -4
- package/templates/nextjs/package.json.hbs +0 -24
- package/templates/nextjs/tsconfig.json +0 -21
package/README.md
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# @timbenniks/contentstack-platform-app-scaffold
|
|
2
|
+
|
|
3
|
+
CLI tool to scaffold full-stack Contentstack apps using the [Platform SDK](https://www.npmjs.com/package/@timbenniks/contentstack-platform-sdk). It creates a production-ready Next.js project with shadcn/ui, Tailwind v4, and Contentstack design tokens — wired up with CMA proxies, OAuth, Launch, and Brand Kit support.
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
1. Runs `create-next-app@latest` with TypeScript, Tailwind v4, and App Router
|
|
8
|
+
2. Initializes [shadcn/ui](https://ui.shadcn.com) with Button and Card components
|
|
9
|
+
3. Adds `@timbenniks/contentstack-platform-sdk` as a dependency
|
|
10
|
+
4. Overlays Contentstack-specific files based on the features you select:
|
|
11
|
+
- **CMA** — Server proxy at `/api/cma`, entries and assets pages with React hooks
|
|
12
|
+
- **OAuth** — Auth.js v5 integration with `createContentstackAuth`, sign-in/sign-out UI
|
|
13
|
+
- **Launch** — Server proxy at `/api/launch`, projects page
|
|
14
|
+
- **Brand Kit** — Server proxy at `/api/brandkit`, brand kits page
|
|
15
|
+
5. Maps the SDK's Venus Design System tokens to shadcn CSS variables via `tokens.css`
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
### As a Contentstack CLI plugin
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
csdx plugins:install @timbenniks/contentstack-platform-app-scaffold
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Then run:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
csdx scaffold my-app
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Standalone with npx
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npx @timbenniks/contentstack-platform-app-scaffold scaffold my-app
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Global install
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install -g @timbenniks/contentstack-platform-app-scaffold
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Usage
|
|
44
|
+
|
|
45
|
+
### Interactive mode
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
csdx scaffold my-app
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The CLI will prompt you for:
|
|
52
|
+
- **Framework** — Next.js (more coming soon)
|
|
53
|
+
- **Region** — `us`, `eu`, `au`, `azure-na`, `azure-eu`, `gcp-na`, `gcp-eu`
|
|
54
|
+
- **Features** — CMA, OAuth, Launch, Brand Kit
|
|
55
|
+
- **OAuth scopes** — if OAuth is selected
|
|
56
|
+
- **Package manager** — npm, yarn, or pnpm
|
|
57
|
+
|
|
58
|
+
### Non-interactive mode
|
|
59
|
+
|
|
60
|
+
Pass all options as flags to skip prompts:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
csdx scaffold my-app \
|
|
64
|
+
--framework nextjs \
|
|
65
|
+
--region eu \
|
|
66
|
+
--features cma,oauth \
|
|
67
|
+
--scopes "user:read,cm.entries.management:read,cm.assets.management:read" \
|
|
68
|
+
--package-manager pnpm
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Flags
|
|
72
|
+
|
|
73
|
+
| Flag | Description | Default |
|
|
74
|
+
|------|-------------|---------|
|
|
75
|
+
| `--framework` | Framework (`nextjs`) | prompted |
|
|
76
|
+
| `--region` | Contentstack region | prompted |
|
|
77
|
+
| `--features` | Comma-separated: `cma`, `oauth`, `launch`, `brandkit` | prompted |
|
|
78
|
+
| `--scopes` | Comma-separated OAuth scopes | prompted if oauth selected |
|
|
79
|
+
| `--package-manager` | `npm`, `yarn`, or `pnpm` | prompted |
|
|
80
|
+
| `--no-install` | Skip dependency installation | `false` |
|
|
81
|
+
|
|
82
|
+
## Generated project structure
|
|
83
|
+
|
|
84
|
+
With all features enabled (`cma,oauth,launch,brandkit`):
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
my-app/
|
|
88
|
+
├── app/
|
|
89
|
+
│ ├── api/
|
|
90
|
+
│ │ ├── auth/[...nextauth]/route.ts # OAuth handlers
|
|
91
|
+
│ │ ├── cma/[...path]/route.ts # CMA proxy
|
|
92
|
+
│ │ ├── launch/[...path]/route.ts # Launch proxy
|
|
93
|
+
│ │ └── brandkit/[...path]/route.ts # Brand Kit proxy
|
|
94
|
+
│ ├── entries/page.tsx # Entries page (useEntries hook)
|
|
95
|
+
│ ├── assets/page.tsx # Assets page (useAssets hook)
|
|
96
|
+
│ ├── launch/page.tsx # Launch projects page
|
|
97
|
+
│ ├── brandkit/page.tsx # Brand Kits page
|
|
98
|
+
│ ├── globals.css # shadcn + Venus Design System tokens
|
|
99
|
+
│ ├── layout.tsx # Root layout with Providers
|
|
100
|
+
│ ├── page.tsx # Home with sign-in/sign-out
|
|
101
|
+
│ └── providers.tsx # ContentstackProvider wrapper
|
|
102
|
+
├── lib/
|
|
103
|
+
│ └── auth.ts # createContentstackAuth config
|
|
104
|
+
├── types/
|
|
105
|
+
│ └── next-auth.d.ts # Session type augmentation
|
|
106
|
+
├── .env.example # All required env vars
|
|
107
|
+
├── next.config.ts # SDK transpile config
|
|
108
|
+
└── package.json
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Environment variables
|
|
112
|
+
|
|
113
|
+
After scaffolding, copy `.env.example` to `.env.local` and fill in your credentials:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
cp .env.example .env.local
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
The required variables depend on your feature selection:
|
|
120
|
+
|
|
121
|
+
| Variable | Required when |
|
|
122
|
+
|----------|--------------|
|
|
123
|
+
| `CONTENTSTACK_REGION` | Always |
|
|
124
|
+
| `CONTENTSTACK_API_KEY` | Always |
|
|
125
|
+
| `CONTENTSTACK_MANAGEMENT_TOKEN` | CMA without OAuth |
|
|
126
|
+
| `CONTENTSTACK_APP_ID` | OAuth |
|
|
127
|
+
| `CONTENTSTACK_CLIENT_ID` | OAuth |
|
|
128
|
+
| `CONTENTSTACK_CLIENT_SECRET` | OAuth |
|
|
129
|
+
| `AUTH_SECRET` | OAuth |
|
|
130
|
+
| `CONTENTSTACK_ORGANIZATION_UID` | Launch or Brand Kit |
|
|
131
|
+
| `CONTENTSTACK_AUTHTOKEN` | Launch/Brand Kit without OAuth |
|
|
132
|
+
| `CONTENTSTACK_BRAND_KIT_UID` | Brand Kit |
|
|
133
|
+
|
|
134
|
+
## Requirements
|
|
135
|
+
|
|
136
|
+
- Node.js >= 18
|
|
137
|
+
- npm, yarn, or pnpm
|
|
138
|
+
|
|
139
|
+
## License
|
|
140
|
+
|
|
141
|
+
MIT
|
|
@@ -11,7 +11,6 @@ export default class Scaffold extends Command {
|
|
|
11
11
|
features: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
12
|
scopes: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
13
|
"package-manager": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
14
|
-
"no-git": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
15
14
|
"no-install": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
16
15
|
};
|
|
17
16
|
run(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAoBlD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,MAAM,CAAC,WAAW,SAAuD;IAEzE,MAAM,CAAC,QAAQ,WAId;IAED,MAAM,CAAC,IAAI;;MAKV;IAED,MAAM,CAAC,KAAK
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAoBlD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,MAAM,CAAC,WAAW,SAAuD;IAEzE,MAAM,CAAC,QAAQ,WAId;IAED,MAAM,CAAC,IAAI;;MAKV;IAED,MAAM,CAAC,KAAK;;;;;;;MAuBX;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB3B"}
|
|
@@ -48,10 +48,6 @@ class Scaffold extends core_1.Command {
|
|
|
48
48
|
description: `Package manager (${types_1.VALID_PACKAGE_MANAGERS.join("|")})`,
|
|
49
49
|
options: types_1.VALID_PACKAGE_MANAGERS,
|
|
50
50
|
}),
|
|
51
|
-
"no-git": core_1.Flags.boolean({
|
|
52
|
-
description: "Skip git initialization",
|
|
53
|
-
default: false,
|
|
54
|
-
}),
|
|
55
51
|
"no-install": core_1.Flags.boolean({
|
|
56
52
|
description: "Skip dependency installation",
|
|
57
53
|
default: false,
|
|
@@ -66,7 +62,6 @@ class Scaffold extends core_1.Command {
|
|
|
66
62
|
features: flags.features ? parseFeatures(flags.features) : undefined,
|
|
67
63
|
scopes: flags.scopes ? parseScopes(flags.scopes) : undefined,
|
|
68
64
|
packageManager: flags["package-manager"],
|
|
69
|
-
git: !flags["no-git"],
|
|
70
65
|
install: !flags["no-install"],
|
|
71
66
|
};
|
|
72
67
|
const resolvedOptions = await (0, prompts_1.runPrompts)(cliOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":";;AAAA,sCAAkD;AAClD,iDAAgD;AAChD,mDAA+C;AAE/C,oCAAkG;AAElG,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;IACpE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,sBAAc,CAAC,QAAQ,CAAC,CAAY,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,aAAa,sBAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChF,CAAC;IACH,CAAC;IACD,OAAO,QAAqB,CAAA;AAC9B,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAC9C,CAAC;AAED,MAAqB,QAAS,SAAQ,cAAO;IAC3C,MAAM,CAAC,WAAW,GAAG,oDAAoD,CAAA;IAEzE,MAAM,CAAC,QAAQ,GAAG;QAChB,mCAAmC;QACnC,kEAAkE;QAClE,qEAAqE;KACtE,CAAA;IAED,MAAM,CAAC,IAAI,GAAG;QACZ,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,wBAAwB;YACrC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAA;IAED,MAAM,CAAC,KAAK,GAAG;QACb,SAAS,EAAE,YAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,cAAc,wBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YACxD,OAAO,EAAE,wBAAgB;SAC1B,CAAC;QACF,MAAM,EAAE,YAAK,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,wBAAwB,qBAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YAC/D,OAAO,EAAE,CAAC,GAAG,qBAAa,CAAC;SAC5B,CAAC;QACF,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC;YACrB,WAAW,EAAE,qDAAqD;SACnE,CAAC;QACF,MAAM,EAAE,YAAK,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,8BAA8B;SAC5C,CAAC;QACF,iBAAiB,EAAE,YAAK,CAAC,MAAM,CAAC;YAC9B,WAAW,EAAE,oBAAoB,8BAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YACpE,OAAO,EAAE,8BAAsB;SAChC,CAAC;QACF,
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/services/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAKV,eAAe,EAChB,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/services/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAKV,eAAe,EAChB,MAAM,UAAU,CAAA;AAiIjB,wBAAsB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAyFjF"}
|
package/dist/services/prompts.js
CHANGED
|
@@ -52,23 +52,111 @@ const FEATURE_LABELS = {
|
|
|
52
52
|
brandkit: "Brand Kit AI",
|
|
53
53
|
};
|
|
54
54
|
const OAUTH_SCOPES = [
|
|
55
|
-
|
|
56
|
-
{ value: "
|
|
55
|
+
// User
|
|
56
|
+
{ value: "user:read", label: "user:read", hint: "View user details (required)" },
|
|
57
|
+
// Content types
|
|
58
|
+
{
|
|
59
|
+
value: "cm.content-types.management:read",
|
|
60
|
+
label: "cm.content-types.management:read",
|
|
61
|
+
hint: "View all content types",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
value: "cm.content-types.management:write",
|
|
65
|
+
label: "cm.content-types.management:write",
|
|
66
|
+
hint: "Create, update, remove content types",
|
|
67
|
+
},
|
|
68
|
+
// Entries
|
|
57
69
|
{
|
|
58
70
|
value: "cm.entries.management:read",
|
|
59
71
|
label: "cm.entries.management:read",
|
|
60
|
-
hint: "
|
|
72
|
+
hint: "View all entries",
|
|
61
73
|
},
|
|
62
74
|
{
|
|
63
75
|
value: "cm.entries.management:write",
|
|
64
76
|
label: "cm.entries.management:write",
|
|
65
|
-
hint: "
|
|
77
|
+
hint: "Create, update, remove entries",
|
|
78
|
+
},
|
|
79
|
+
{ value: "cm.entry:publish", label: "cm.entry:publish", hint: "Publish an entry" },
|
|
80
|
+
{ value: "cm.entry:unpublish", label: "cm.entry:unpublish", hint: "Unpublish an entry" },
|
|
81
|
+
// Assets
|
|
82
|
+
{
|
|
83
|
+
value: "cm.assets.management:read",
|
|
84
|
+
label: "cm.assets.management:read",
|
|
85
|
+
hint: "View all assets",
|
|
66
86
|
},
|
|
67
|
-
{ value: "cm.assets.management:read", label: "cm.assets.management:read", hint: "Read assets" },
|
|
68
87
|
{
|
|
69
88
|
value: "cm.assets.management:write",
|
|
70
89
|
label: "cm.assets.management:write",
|
|
71
|
-
hint: "
|
|
90
|
+
hint: "Create, update, remove assets",
|
|
91
|
+
},
|
|
92
|
+
{ value: "cm.asset:publish", label: "cm.asset:publish", hint: "Publish an asset" },
|
|
93
|
+
{ value: "cm.asset:unpublish", label: "cm.asset:unpublish", hint: "Unpublish an asset" },
|
|
94
|
+
// Taxonomies
|
|
95
|
+
{
|
|
96
|
+
value: "cm.taxonomies.management:read",
|
|
97
|
+
label: "cm.taxonomies.management:read",
|
|
98
|
+
hint: "View all taxonomies",
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
value: "cm.taxonomies.management:write",
|
|
102
|
+
label: "cm.taxonomies.management:write",
|
|
103
|
+
hint: "Create, update, delete taxonomies",
|
|
104
|
+
},
|
|
105
|
+
{ value: "cm.taxonomy.terms:read", label: "cm.taxonomy.terms:read", hint: "View taxonomy terms" },
|
|
106
|
+
{
|
|
107
|
+
value: "cm.taxonomy.terms:write",
|
|
108
|
+
label: "cm.taxonomy.terms:write",
|
|
109
|
+
hint: "Create, update, delete taxonomy terms",
|
|
110
|
+
},
|
|
111
|
+
// Environments & languages
|
|
112
|
+
{
|
|
113
|
+
value: "cm.environments.management:read",
|
|
114
|
+
label: "cm.environments.management:read",
|
|
115
|
+
hint: "View all environments",
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
value: "cm.languages.management:read",
|
|
119
|
+
label: "cm.languages.management:read",
|
|
120
|
+
hint: "View all languages",
|
|
121
|
+
},
|
|
122
|
+
// Workflows & releases
|
|
123
|
+
{
|
|
124
|
+
value: "cm.workflows.management:read",
|
|
125
|
+
label: "cm.workflows.management:read",
|
|
126
|
+
hint: "View all workflows",
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
value: "cm.releases.management:read",
|
|
130
|
+
label: "cm.releases.management:read",
|
|
131
|
+
hint: "View all releases",
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
value: "cm.releases.management:write",
|
|
135
|
+
label: "cm.releases.management:write",
|
|
136
|
+
hint: "Create, update, remove releases",
|
|
137
|
+
},
|
|
138
|
+
// Brand Kit
|
|
139
|
+
{
|
|
140
|
+
value: "brand-kits:read",
|
|
141
|
+
label: "brand-kits:read",
|
|
142
|
+
hint: "View Brand Kits and Voice Profiles",
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
value: "brand-kits:manage",
|
|
146
|
+
label: "brand-kits:manage",
|
|
147
|
+
hint: "Manage Brand Kits and Knowledge Vault",
|
|
148
|
+
},
|
|
149
|
+
// Launch
|
|
150
|
+
{ value: "launch.projects:read", label: "launch.projects:read", hint: "Read Launch projects" },
|
|
151
|
+
{
|
|
152
|
+
value: "launch.projects:write",
|
|
153
|
+
label: "launch.projects:write",
|
|
154
|
+
hint: "Create, update Launch projects",
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
value: "launch.projects:delete",
|
|
158
|
+
label: "launch.projects:delete",
|
|
159
|
+
hint: "Delete Launch projects",
|
|
72
160
|
},
|
|
73
161
|
];
|
|
74
162
|
async function runPrompts(cliOptions) {
|
|
@@ -147,7 +235,6 @@ async function runPrompts(cliOptions) {
|
|
|
147
235
|
features: features,
|
|
148
236
|
scopes,
|
|
149
237
|
packageManager: packageManager,
|
|
150
|
-
git: cliOptions.git,
|
|
151
238
|
install: cliOptions.install,
|
|
152
239
|
};
|
|
153
240
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/services/prompts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/services/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/services/scaffold.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/services/scaffold.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAkB,eAAe,EAAmB,MAAM,UAAU,CAAA;AAoDhF,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FtE"}
|
|
@@ -37,12 +37,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.scaffold = scaffold;
|
|
40
|
+
const node_child_process_1 = require("node:child_process");
|
|
40
41
|
const node_fs_1 = require("node:fs");
|
|
41
42
|
const node_path_1 = require("node:path");
|
|
42
43
|
const p = __importStar(require("@clack/prompts"));
|
|
43
44
|
const picocolors_1 = __importDefault(require("picocolors"));
|
|
44
|
-
const package_json_1 = __importDefault(require("../../package.json"));
|
|
45
|
-
const git_1 = require("../utils/git");
|
|
46
45
|
const package_manager_1 = require("../utils/package-manager");
|
|
47
46
|
const template_engine_1 = require("../utils/template-engine");
|
|
48
47
|
/** Resolve the path to a framework template directory */
|
|
@@ -62,41 +61,91 @@ function buildContext(options) {
|
|
|
62
61
|
brandkit: options.features.includes("brandkit"),
|
|
63
62
|
},
|
|
64
63
|
scopes: options.scopes,
|
|
65
|
-
sdkVersion: package_json_1.default.version,
|
|
66
64
|
};
|
|
67
65
|
}
|
|
66
|
+
/** Get the --use-<pm> flag for create-next-app */
|
|
67
|
+
function getPackageManagerFlag(pm) {
|
|
68
|
+
switch (pm) {
|
|
69
|
+
case "pnpm":
|
|
70
|
+
return "--use-pnpm";
|
|
71
|
+
case "yarn":
|
|
72
|
+
return "--use-yarn";
|
|
73
|
+
case "npm":
|
|
74
|
+
return "--use-npm";
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Run a shell command, throwing on failure */
|
|
78
|
+
function run(command, cwd) {
|
|
79
|
+
(0, node_child_process_1.execSync)(command, { cwd, stdio: "pipe", timeout: 120_000 });
|
|
80
|
+
}
|
|
81
|
+
/** Add dependencies to an existing package.json */
|
|
82
|
+
function addDependencies(projectDir, deps) {
|
|
83
|
+
const pkgPath = (0, node_path_1.resolve)(projectDir, "package.json");
|
|
84
|
+
const pkg = JSON.parse((0, node_fs_1.readFileSync)(pkgPath, "utf-8"));
|
|
85
|
+
pkg.dependencies = { ...pkg.dependencies, ...deps };
|
|
86
|
+
(0, node_fs_1.writeFileSync)(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`, "utf-8");
|
|
87
|
+
}
|
|
68
88
|
async function scaffold(options) {
|
|
69
89
|
const projectDir = (0, node_path_1.resolve)(process.cwd(), options.projectName);
|
|
70
90
|
if ((0, node_fs_1.existsSync)(projectDir)) {
|
|
71
91
|
p.log.error(`Directory "${options.projectName}" already exists.`);
|
|
72
92
|
throw new Error(`Directory "${options.projectName}" already exists.`);
|
|
73
93
|
}
|
|
74
|
-
|
|
94
|
+
const pmFlag = getPackageManagerFlag(options.packageManager);
|
|
95
|
+
const s = p.spinner();
|
|
96
|
+
// 1. Create Next.js project with Tailwind v4
|
|
97
|
+
s.start("Creating Next.js project...");
|
|
98
|
+
try {
|
|
99
|
+
run(`npx create-next-app@latest ${options.projectName} --ts --tailwind --no-eslint --no-src-dir --app --no-import-alias --turbopack ${pmFlag} --yes`);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
s.stop("Failed to create Next.js project");
|
|
103
|
+
throw new Error(`create-next-app failed: ${err instanceof Error ? err.message : "Unknown error"}`);
|
|
104
|
+
}
|
|
105
|
+
s.stop("Next.js project created");
|
|
106
|
+
// 2. Initialize shadcn/ui
|
|
107
|
+
s.start("Setting up shadcn/ui...");
|
|
108
|
+
try {
|
|
109
|
+
run("npx shadcn@latest init -d --yes", projectDir);
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
s.stop("Failed to initialize shadcn/ui");
|
|
113
|
+
throw new Error(`shadcn init failed: ${err instanceof Error ? err.message : "Unknown error"}`);
|
|
114
|
+
}
|
|
115
|
+
s.stop("shadcn/ui configured");
|
|
116
|
+
// 3. Add shadcn components (button, card)
|
|
117
|
+
s.start("Adding shadcn components...");
|
|
118
|
+
try {
|
|
119
|
+
run("npx shadcn@latest add button card -y", projectDir);
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// Non-critical — user can add components manually
|
|
123
|
+
}
|
|
124
|
+
s.stop("shadcn components added");
|
|
125
|
+
// 4. Add Contentstack SDK dependencies
|
|
126
|
+
const deps = {
|
|
127
|
+
"@timbenniks/contentstack-platform-sdk": "latest",
|
|
128
|
+
};
|
|
129
|
+
if (options.features.includes("oauth")) {
|
|
130
|
+
deps["next-auth"] = "5.0.0-beta.30";
|
|
131
|
+
}
|
|
132
|
+
addDependencies(projectDir, deps);
|
|
133
|
+
// 5. Overlay Contentstack-specific template files
|
|
134
|
+
s.start("Scaffolding Contentstack files...");
|
|
75
135
|
const context = buildContext(options);
|
|
76
136
|
const templateDir = getTemplatePath(options.framework);
|
|
77
137
|
if (!(0, node_fs_1.existsSync)(templateDir)) {
|
|
78
|
-
|
|
138
|
+
s.stop("Template not found");
|
|
79
139
|
throw new Error(`Template for "${options.framework}" not found at ${templateDir}`);
|
|
80
140
|
}
|
|
81
|
-
const s = p.spinner();
|
|
82
|
-
s.start("Scaffolding project...");
|
|
83
141
|
(0, template_engine_1.renderDirectory)(templateDir, projectDir, context);
|
|
84
|
-
s.stop("
|
|
85
|
-
|
|
86
|
-
if ((0, git_1.isGitAvailable)()) {
|
|
87
|
-
s.start("Initializing git repository...");
|
|
88
|
-
const success = (0, git_1.initGitRepo)(projectDir);
|
|
89
|
-
s.stop(success ? "Git repository initialized" : "Git init failed (continuing)");
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
p.log.warn("git not found on PATH, skipping git init");
|
|
93
|
-
}
|
|
94
|
-
}
|
|
142
|
+
s.stop("Contentstack files added");
|
|
143
|
+
// 6. Install newly added dependencies
|
|
95
144
|
if (options.install) {
|
|
96
145
|
const cmd = (0, package_manager_1.getInstallCommand)(options.packageManager);
|
|
97
146
|
s.start(`Installing dependencies (${cmd})...`);
|
|
98
147
|
try {
|
|
99
|
-
(
|
|
148
|
+
run(cmd, projectDir);
|
|
100
149
|
s.stop("Dependencies installed");
|
|
101
150
|
}
|
|
102
151
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/services/scaffold.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/services/scaffold.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -14,7 +14,6 @@ export interface CLIOptions {
|
|
|
14
14
|
features?: Feature[];
|
|
15
15
|
scopes?: string[];
|
|
16
16
|
packageManager?: PackageManager;
|
|
17
|
-
git: boolean;
|
|
18
17
|
install: boolean;
|
|
19
18
|
}
|
|
20
19
|
/** Fully resolved options after interactive prompts fill in missing values */
|
|
@@ -25,7 +24,6 @@ export interface ResolvedOptions {
|
|
|
25
24
|
features: Feature[];
|
|
26
25
|
scopes: string[];
|
|
27
26
|
packageManager: PackageManager;
|
|
28
|
-
git: boolean;
|
|
29
27
|
install: boolean;
|
|
30
28
|
}
|
|
31
29
|
/** Context passed to Handlebars template rendering */
|
|
@@ -40,7 +38,6 @@ export interface TemplateContext {
|
|
|
40
38
|
brandkit: boolean;
|
|
41
39
|
};
|
|
42
40
|
scopes: string[];
|
|
43
|
-
sdkVersion: string;
|
|
44
41
|
}
|
|
45
42
|
export declare const VALID_REGIONS: Region[];
|
|
46
43
|
export declare const VALID_FEATURES: Feature[];
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEvF,0CAA0C;AAC1C,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAA;AAE7D,2BAA2B;AAC3B,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAA;AAEhC,iCAAiC;AACjC,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;AAEpD,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEvF,0CAA0C;AAC1C,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAA;AAE7D,2BAA2B;AAC3B,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAA;AAEhC,iCAAiC;AACjC,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;AAEpD,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,OAAO,CAAA;IAC1B,QAAQ,EAAE;QACR,GAAG,EAAE,OAAO,CAAA;QACZ,KAAK,EAAE,OAAO,CAAA;QACd,MAAM,EAAE,OAAO,CAAA;QACf,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,EAQjC,CAAA;AACD,eAAO,MAAM,cAAc,EAAE,OAAO,EAA2C,CAAA;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,EAAe,CAAA;AACvD,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAA4B,CAAA"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAgDa,QAAA,aAAa,GAAa;IACrC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,UAAU;IACV,UAAU;IACV,QAAQ;IACR,QAAQ;CACT,CAAA;AACY,QAAA,cAAc,GAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;AAClE,QAAA,gBAAgB,GAAgB,CAAC,QAAQ,CAAC,CAAA;AAC1C,QAAA,sBAAsB,GAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA"}
|
package/oclif.manifest.json
CHANGED
|
@@ -21,9 +21,7 @@
|
|
|
21
21
|
"name": "framework",
|
|
22
22
|
"hasDynamicHelp": false,
|
|
23
23
|
"multiple": false,
|
|
24
|
-
"options": [
|
|
25
|
-
"nextjs"
|
|
26
|
-
],
|
|
24
|
+
"options": ["nextjs"],
|
|
27
25
|
"type": "option"
|
|
28
26
|
},
|
|
29
27
|
"region": {
|
|
@@ -61,19 +59,9 @@
|
|
|
61
59
|
"name": "package-manager",
|
|
62
60
|
"hasDynamicHelp": false,
|
|
63
61
|
"multiple": false,
|
|
64
|
-
"options": [
|
|
65
|
-
"npm",
|
|
66
|
-
"yarn",
|
|
67
|
-
"pnpm"
|
|
68
|
-
],
|
|
62
|
+
"options": ["npm", "yarn", "pnpm"],
|
|
69
63
|
"type": "option"
|
|
70
64
|
},
|
|
71
|
-
"no-git": {
|
|
72
|
-
"description": "Skip git initialization",
|
|
73
|
-
"name": "no-git",
|
|
74
|
-
"allowNo": false,
|
|
75
|
-
"type": "boolean"
|
|
76
|
-
},
|
|
77
65
|
"no-install": {
|
|
78
66
|
"description": "Skip dependency installation",
|
|
79
67
|
"name": "no-install",
|
|
@@ -90,12 +78,8 @@
|
|
|
90
78
|
"strict": true,
|
|
91
79
|
"enableJsonFlag": false,
|
|
92
80
|
"isESM": false,
|
|
93
|
-
"relativePath": [
|
|
94
|
-
"dist",
|
|
95
|
-
"commands",
|
|
96
|
-
"scaffold.js"
|
|
97
|
-
]
|
|
81
|
+
"relativePath": ["dist", "commands", "scaffold.js"]
|
|
98
82
|
}
|
|
99
83
|
},
|
|
100
|
-
"version": "0.1.
|
|
101
|
-
}
|
|
84
|
+
"version": "0.1.6"
|
|
85
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timbenniks/contentstack-platform-app-scaffold",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Contentstack CLI plugin to scaffold apps using the Platform SDK",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -11,7 +11,11 @@
|
|
|
11
11
|
},
|
|
12
12
|
"bin": "csdx"
|
|
13
13
|
},
|
|
14
|
-
"files": [
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"templates",
|
|
17
|
+
"oclif.manifest.json"
|
|
18
|
+
],
|
|
15
19
|
"scripts": {
|
|
16
20
|
"build": "tsc",
|
|
17
21
|
"postbuild": "oclif manifest",
|