@codecanva/nest-auth 0.1.0 → 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.
@@ -0,0 +1,270 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ // ---------------------------------------------------------------------------
4
+ // `nest-auth` CLI — scaffold this auth module into an existing NestJS project.
5
+ //
6
+ // npx @codecanva/nest-auth init [options]
7
+ //
8
+ // Generates the user/auth integration files, merges env vars, wires the host
9
+ // AppModule + main.ts, and installs the required dependencies.
10
+ // ---------------------------------------------------------------------------
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const fs_1 = require("fs");
13
+ const path_1 = require("path");
14
+ const templates_1 = require("./templates");
15
+ const utils_1 = require("./utils");
16
+ function parseArgs(argv) {
17
+ const o = {
18
+ command: '',
19
+ store: 'mongoose',
20
+ force: false,
21
+ skipInstall: false,
22
+ dryRun: false,
23
+ wire: true,
24
+ help: false,
25
+ version: false,
26
+ };
27
+ for (let i = 0; i < argv.length; i++) {
28
+ const a = argv[i];
29
+ switch (a) {
30
+ case '-h':
31
+ case '--help':
32
+ o.help = true;
33
+ break;
34
+ case '-v':
35
+ case '--version':
36
+ o.version = true;
37
+ break;
38
+ case '--dir':
39
+ o.dir = argv[++i];
40
+ break;
41
+ case '--store':
42
+ o.store = argv[++i] === 'memory' ? 'memory' : 'mongoose';
43
+ break;
44
+ case '--force':
45
+ o.force = true;
46
+ break;
47
+ case '--skip-install':
48
+ o.skipInstall = true;
49
+ break;
50
+ case '--dry-run':
51
+ o.dryRun = true;
52
+ break;
53
+ case '--no-wire':
54
+ o.wire = false;
55
+ break;
56
+ case '-y':
57
+ case '--yes':
58
+ break; // accepted for convenience; the CLI is non-interactive
59
+ default:
60
+ if (!a.startsWith('-') && !o.command)
61
+ o.command = a;
62
+ }
63
+ }
64
+ if (!o.command)
65
+ o.command = 'init';
66
+ return o;
67
+ }
68
+ function ownPackage() {
69
+ try {
70
+ const pkg = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '..', '..', 'package.json'), 'utf8'));
71
+ return { name: pkg.name, version: pkg.version };
72
+ }
73
+ catch {
74
+ return { name: '@codecanva/nest-auth', version: '0.0.0' };
75
+ }
76
+ }
77
+ function depsFor(pkg, store) {
78
+ const deps = [
79
+ pkg,
80
+ '@nestjs/jwt',
81
+ '@nestjs/passport',
82
+ 'passport',
83
+ 'passport-jwt',
84
+ 'class-validator',
85
+ 'class-transformer',
86
+ ];
87
+ const devDeps = ['@types/passport-jwt'];
88
+ if (store === 'mongoose') {
89
+ deps.push('@nestjs/mongoose', 'mongoose', 'bcrypt');
90
+ devDeps.push('@types/bcrypt');
91
+ }
92
+ return { deps, devDeps };
93
+ }
94
+ function printHelp(pkg) {
95
+ console.log(`
96
+ ${utils_1.c.bold(`${pkg} — installer`)}
97
+
98
+ ${utils_1.c.bold('Usage')}
99
+ npx ${pkg} init [options]
100
+
101
+ ${utils_1.c.bold('Options')}
102
+ --store <mongoose|memory> Persistence to scaffold (default: mongoose)
103
+ --dir <path> Target project root (default: current directory)
104
+ --no-wire Don't touch app.module.ts / main.ts
105
+ --skip-install Don't install npm dependencies
106
+ --force Overwrite files that already exist
107
+ --dry-run Show what would happen, write nothing
108
+ -h, --help Show this help
109
+ -v, --version Show version
110
+
111
+ ${utils_1.c.bold('Examples')}
112
+ ${utils_1.c.dim('# Production setup (Mongoose persistence) in the current project')}
113
+ npx ${pkg} init
114
+
115
+ ${utils_1.c.dim('# Quick trial with an in-memory store, no DB needed')}
116
+ npx ${pkg} init --store memory
117
+
118
+ ${utils_1.c.dim('# Preview the changes first')}
119
+ npx ${pkg} init --dry-run
120
+ `);
121
+ }
122
+ function runInit(pkg, opts) {
123
+ const root = (0, utils_1.resolveDir)(opts.dir);
124
+ utils_1.log.info(utils_1.c.bold(`\n${pkg} — installing into ${utils_1.c.cyan(root)}\n`));
125
+ if (opts.dryRun)
126
+ utils_1.log.warn('dry run: no files will be written\n');
127
+ const project = (0, utils_1.loadProject)(root);
128
+ if (!project) {
129
+ utils_1.log.err(`No package.json found in ${root}. Run this inside a NestJS project.`);
130
+ return 1;
131
+ }
132
+ if (!(0, utils_1.isNestProject)(project)) {
133
+ utils_1.log.err(`${root} doesn't look like a NestJS project (no @nestjs/core dependency).`);
134
+ return 1;
135
+ }
136
+ const plan = (0, templates_1.buildPlan)(pkg, opts.store);
137
+ utils_1.log.step(`Scaffolding files (${utils_1.c.bold(opts.store)} persistence)`);
138
+ let wrote = 0;
139
+ let skipped = 0;
140
+ for (const f of plan.files) {
141
+ const dest = (0, path_1.join)(project.srcDir, f.rel);
142
+ const result = (0, utils_1.writeFileSafe)(dest, f.content, {
143
+ force: opts.force,
144
+ dryRun: opts.dryRun,
145
+ });
146
+ const shown = relForLog(root, dest);
147
+ if (result === 'skipped') {
148
+ utils_1.log.skip(`${shown} (exists — use --force to overwrite)`);
149
+ skipped++;
150
+ }
151
+ else if (result === 'would-write') {
152
+ utils_1.log.ok(`would create ${shown}`);
153
+ }
154
+ else {
155
+ utils_1.log.ok(`created ${shown}`);
156
+ wrote++;
157
+ }
158
+ }
159
+ // Env files
160
+ utils_1.log.step('Merging environment variables');
161
+ for (const envName of ['.env', '.env.example']) {
162
+ const envPath = (0, path_1.join)(root, envName);
163
+ // Only create .env.example proactively; touch .env only if it exists or we create it intentionally.
164
+ const added = (0, utils_1.mergeEnvFile)(envPath, plan.env, opts.dryRun);
165
+ if (added.length > 0) {
166
+ utils_1.log.ok(`${opts.dryRun ? 'would add' : 'added'} ${added.join(', ')} → ${relForLog(root, envPath)}`);
167
+ }
168
+ else {
169
+ utils_1.log.skip(`${relForLog(root, envPath)} already has the keys`);
170
+ }
171
+ }
172
+ // Wiring
173
+ if (opts.wire) {
174
+ utils_1.log.step('Wiring AppModule + main.ts');
175
+ if (project.appModulePath) {
176
+ const r = (0, utils_1.patchAppModule)(project.appModulePath, plan.integrationModule, plan.integrationImportPath, opts.dryRun);
177
+ const shown = relForLog(root, project.appModulePath);
178
+ if (r === 'patched')
179
+ utils_1.log.ok(`imported ${plan.integrationModule} into ${shown} ${utils_1.c.dim('(.bak saved)')}`);
180
+ else if (r === 'already')
181
+ utils_1.log.skip(`${shown} already imports ${plan.integrationModule}`);
182
+ else
183
+ utils_1.log.warn(`couldn't auto-edit ${shown} — add ${plan.integrationModule} to its imports manually`);
184
+ }
185
+ else {
186
+ utils_1.log.warn('app.module.ts not found — add AuthIntegrationModule to your root module manually');
187
+ }
188
+ if (project.mainPath) {
189
+ const r = (0, utils_1.patchMain)(project.mainPath, opts.dryRun);
190
+ const shown = relForLog(root, project.mainPath);
191
+ if (r === 'patched')
192
+ utils_1.log.ok(`added global ValidationPipe to ${shown} ${utils_1.c.dim('(.bak saved)')}`);
193
+ else if (r === 'already')
194
+ utils_1.log.skip(`${shown} already configures a global pipe`);
195
+ else
196
+ utils_1.log.warn(`couldn't auto-edit ${shown} — add a global ValidationPipe manually`);
197
+ }
198
+ else {
199
+ utils_1.log.warn('main.ts not found — enable a global ValidationPipe manually');
200
+ }
201
+ }
202
+ else {
203
+ utils_1.log.step('Skipping wiring (--no-wire)');
204
+ }
205
+ // Install
206
+ const { deps, devDeps } = depsFor(pkg, opts.store);
207
+ if (opts.skipInstall || opts.dryRun) {
208
+ utils_1.log.step('Skipping dependency install');
209
+ const pm = (0, utils_1.detectPackageManager)(root);
210
+ const add = pm === 'npm' ? 'install' : 'add';
211
+ utils_1.log.info(` ${utils_1.c.dim(`run: ${pm} ${add} ${deps.join(' ')}`)}\n ${utils_1.c.dim(` ${pm} ${add} -D ${devDeps.join(' ')}`)}`);
212
+ }
213
+ else {
214
+ utils_1.log.step('Installing dependencies');
215
+ const pm = (0, utils_1.detectPackageManager)(root);
216
+ const ok = (0, utils_1.runInstall)(root, pm, deps, devDeps);
217
+ if (!ok)
218
+ return 1;
219
+ }
220
+ printNextSteps(pkg, opts, project.appModulePath != null);
221
+ return 0;
222
+ }
223
+ function printNextSteps(pkg, opts, hasAppModule) {
224
+ const lines = [];
225
+ lines.push('', utils_1.c.bold('Next steps'));
226
+ lines.push(` 1. Set real ${utils_1.c.cyan('JWT_ACCESS_SECRET')} / ${utils_1.c.cyan('JWT_REFRESH_SECRET')} / ${utils_1.c.cyan('TOKEN_HASH_PEPPER')} in ${utils_1.c.cyan('.env')}.`);
227
+ if (!hasAppModule || !opts.wire) {
228
+ lines.push(` 2. Import ${utils_1.c.cyan('AuthIntegrationModule')} in your root AppModule.`);
229
+ }
230
+ if (opts.store === 'mongoose') {
231
+ lines.push(` ${hasAppModule && opts.wire ? '2' : '3'}. Ensure a Mongoose connection is configured (${utils_1.c.cyan('MongooseModule.forRoot(...)')}) at the app root.`);
232
+ }
233
+ else {
234
+ lines.push(` ${hasAppModule && opts.wire ? '2' : '3'}. The in-memory validator ships a demo user (${utils_1.c.dim('demo@example.com / password123')}) — replace it for real use.`);
235
+ }
236
+ lines.push('');
237
+ lines.push(utils_1.c.bold(' Smoke test'));
238
+ if (opts.store === 'mongoose') {
239
+ lines.push(utils_1.c.dim(` curl -X POST localhost:3000/user/register -H 'content-type: application/json' \\`));
240
+ lines.push(utils_1.c.dim(` -d '{"email":"a@b.com","password":"password123"}'`));
241
+ }
242
+ lines.push(utils_1.c.dim(` curl -i -X POST localhost:3000/auth/login -H 'content-type: application/json' \\`));
243
+ lines.push(utils_1.c.dim(` -d '{"email":"${opts.store === 'memory' ? 'demo@example.com' : 'a@b.com'}","password":"password123"}'`));
244
+ lines.push(utils_1.c.dim(` # wrong password → 401 {"message":"Invalid credentials"}`));
245
+ lines.push('');
246
+ console.log(lines.join('\n'));
247
+ }
248
+ function relForLog(root, abs) {
249
+ return abs.startsWith(root) ? abs.slice(root.length).replace(/^[\\/]/, '') : abs;
250
+ }
251
+ function main() {
252
+ const opts = parseArgs(process.argv.slice(2));
253
+ const { name, version } = ownPackage();
254
+ if (opts.version) {
255
+ console.log(version);
256
+ return;
257
+ }
258
+ if (opts.help || opts.command === 'help') {
259
+ printHelp(name);
260
+ return;
261
+ }
262
+ if (opts.command !== 'init') {
263
+ utils_1.log.err(`Unknown command "${opts.command}". Try: ${name} init --help`);
264
+ process.exitCode = 1;
265
+ return;
266
+ }
267
+ process.exitCode = runInit(name, opts);
268
+ }
269
+ main();
270
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export type StoreKind = 'mongoose' | 'memory';
2
+ export interface GeneratedFile {
3
+ /** Path relative to the project's source dir (e.g. `auth/auth.controller.ts`). */
4
+ rel: string;
5
+ content: string;
6
+ }
7
+ export interface EnvEntry {
8
+ key: string;
9
+ value: string;
10
+ comment?: string;
11
+ }
12
+ export interface Plan {
13
+ files: GeneratedFile[];
14
+ env: EnvEntry[];
15
+ /** Module to add to AppModule's `imports`. */
16
+ integrationModule: string;
17
+ /** Import path for that module, relative to the source dir (no extension). */
18
+ integrationImportPath: string;
19
+ }
20
+ export declare function buildPlan(pkg: string, store: StoreKind): Plan;
21
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/lib/cli/templates.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,GAAG,EAAE,QAAQ,EAAE,CAAC;IAChB,8CAA8C;IAC9C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAyiBD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAE7D"}