@factiii/stack 0.1.116 → 0.1.118
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/generators/generate-stack-yml.d.ts.map +1 -1
- package/dist/generators/generate-stack-yml.js +30 -2
- package/dist/generators/generate-stack-yml.js.map +1 -1
- package/dist/plugins/addons/auth/index.d.ts +12 -12
- package/dist/plugins/addons/auth/index.d.ts.map +1 -1
- package/dist/plugins/addons/auth/index.js +43 -19
- package/dist/plugins/addons/auth/index.js.map +1 -1
- package/dist/plugins/addons/auth/scanfix/setup.d.ts +7 -5
- package/dist/plugins/addons/auth/scanfix/setup.d.ts.map +1 -1
- package/dist/plugins/addons/auth/scanfix/setup.js +42 -128
- package/dist/plugins/addons/auth/scanfix/setup.js.map +1 -1
- package/dist/plugins/pipelines/aws/prod.js +2 -2
- package/dist/plugins/pipelines/aws/prod.js.map +1 -1
- package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/index.js +2 -0
- package/dist/plugins/pipelines/factiii/index.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/config.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/config.js +4 -3
- package/dist/plugins/pipelines/factiii/scanfix/config.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/db-seed.d.ts +10 -0
- package/dist/plugins/pipelines/factiii/scanfix/db-seed.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/db-seed.js +220 -0
- package/dist/plugins/pipelines/factiii/scanfix/db-seed.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js +16 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js.map +1 -1
- package/dist/plugins/servers/mac/staging.js +2 -2
- package/dist/plugins/servers/mac/staging.js.map +1 -1
- package/dist/scanfix/fixes/certbot.d.ts.map +1 -1
- package/dist/scanfix/fixes/certbot.js +3 -2
- package/dist/scanfix/fixes/certbot.js.map +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/plugin.d.ts +13 -0
- package/dist/types/plugin.d.ts.map +1 -1
- package/package.json +94 -93
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-stack-yml.d.ts","sourceRoot":"","sources":["../../src/generators/generate-stack-yml.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkDH;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"generate-stack-yml.d.ts","sourceRoot":"","sources":["../../src/generators/generate-stack-yml.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkDH;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CA+NjG"}
|
|
@@ -125,17 +125,18 @@ function generateSmartStackYml(rootDir, options = {}) {
|
|
|
125
125
|
name,
|
|
126
126
|
config_version: '0.1.0',
|
|
127
127
|
github_repo: githubRepo,
|
|
128
|
-
ssl_email: 'EXAMPLE_admin@yourdomain.com',
|
|
129
128
|
pipeline: 'factiii',
|
|
130
129
|
staging: {
|
|
131
130
|
server: stagingServer,
|
|
132
131
|
domain: 'EXAMPLE_staging.yourdomain.com',
|
|
132
|
+
ssl_email: 'EXAMPLE_admin@yourdomain.com',
|
|
133
133
|
ssh_user: 'macuser',
|
|
134
134
|
env_file: '.env.staging',
|
|
135
135
|
},
|
|
136
136
|
prod: {
|
|
137
137
|
server: 'ubuntu',
|
|
138
138
|
domain: 'EXAMPLE_yourdomain.com',
|
|
139
|
+
ssl_email: 'EXAMPLE_admin@yourdomain.com',
|
|
139
140
|
ssh_user: 'ubuntu',
|
|
140
141
|
env_file: '.env.prod',
|
|
141
142
|
config: 'free-tier',
|
|
@@ -163,6 +164,32 @@ function generateSmartStackYml(rootDir, options = {}) {
|
|
|
163
164
|
// Dump main config
|
|
164
165
|
sections.push(js_yaml_1.default.dump(config, { lineWidth: -1, noRefs: true }).trim());
|
|
165
166
|
sections.push('');
|
|
167
|
+
// Features explainer
|
|
168
|
+
sections.push('# ============================================================');
|
|
169
|
+
sections.push('# AVAILABLE FEATURES');
|
|
170
|
+
sections.push('# ============================================================');
|
|
171
|
+
sections.push('# stack.yml is your single config file. Enable features by');
|
|
172
|
+
sections.push('# uncommenting the relevant sections below, then run:');
|
|
173
|
+
sections.push('# npx stack fix --dev');
|
|
174
|
+
sections.push('#');
|
|
175
|
+
sections.push('# INCLUDED (enabled by default):');
|
|
176
|
+
sections.push('# - Staging deploy SSH to Mac Mini (staging: section above)');
|
|
177
|
+
sections.push('# - Prod deploy AWS free-tier EC2 (prod: section above)');
|
|
178
|
+
sections.push('# - CI workflows GitHub Actions build+test on push');
|
|
179
|
+
sections.push('# - SSL certificates Auto Let\'s Encrypt via certbot');
|
|
180
|
+
sections.push('# - Ansible Vault Encrypted secrets (SSH keys, env vars)');
|
|
181
|
+
sections.push('#');
|
|
182
|
+
sections.push('# OPT-IN (uncomment to enable):');
|
|
183
|
+
sections.push('# - Auth @factiii/auth — JWT, OAuth, 2FA (see AUTH section)');
|
|
184
|
+
sections.push('# - OpenClaw Local AI coding agent in Tart VM (see OPENCLAW section)');
|
|
185
|
+
sections.push('# - Vercel Deploy to Vercel instead of SSH (see VERCEL section)');
|
|
186
|
+
sections.push('#');
|
|
187
|
+
sections.push('# AUTO-DETECTED (no config needed):');
|
|
188
|
+
sections.push('# - Prisma Migrations, schema validation');
|
|
189
|
+
sections.push('# - tRPC Type-safe API layer');
|
|
190
|
+
sections.push('# - Expo Mobile app builds');
|
|
191
|
+
sections.push('# ============================================================');
|
|
192
|
+
sections.push('');
|
|
166
193
|
// Env match exceptions hint
|
|
167
194
|
sections.push('# ============================================================');
|
|
168
195
|
sections.push('# ENV MATCH EXCEPTIONS');
|
|
@@ -244,9 +271,10 @@ function generateSmartStackYml(rootDir, options = {}) {
|
|
|
244
271
|
sections.push('#');
|
|
245
272
|
sections.push('# 1. UPDATE THIS FILE');
|
|
246
273
|
sections.push('# Replace all values marked EXAMPLE_ with your actual values:');
|
|
247
|
-
sections.push('# - ssl_email: your real email for SSL certificates');
|
|
248
274
|
sections.push('# - staging.domain: your staging domain');
|
|
275
|
+
sections.push('# - staging.ssl_email: your email for SSL certificates');
|
|
249
276
|
sections.push('# - prod.domain: your production domain');
|
|
277
|
+
sections.push('# - prod.ssl_email: your email for SSL certificates');
|
|
250
278
|
sections.push('#');
|
|
251
279
|
sections.push('# 2. SCAN FOR ISSUES');
|
|
252
280
|
sections.push('# npx stack scan -> checks everything, reports what is missing (changes nothing)');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-stack-yml.js","sourceRoot":"","sources":["../../src/generators/generate-stack-yml.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DH,
|
|
1
|
+
{"version":3,"file":"generate-stack-yml.js","sourceRoot":"","sources":["../../src/generators/generate-stack-yml.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auth Addon Plugin
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Thin delegation layer for @factiii/auth.
|
|
5
|
+
* Scanfix logic lives in the @factiii/auth package — stack loads and
|
|
6
|
+
* runs those fixes at runtime via resolveAuthPlugin().
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - Secrets: Auto-generate JWT_SECRET, prompt for OAuth keys
|
|
10
|
-
* - Staging/Prod: Validate auth env vars are set
|
|
8
|
+
* When @factiii/auth exports a `stackPlugin` object with a `fixes` array,
|
|
9
|
+
* those fixes are used. Otherwise, falls back to inline scanfixes.
|
|
11
10
|
*
|
|
12
11
|
* ============================================================
|
|
13
12
|
* PLUGIN STRUCTURE
|
|
14
13
|
* ============================================================
|
|
15
14
|
*
|
|
16
|
-
* **scanfix/** -
|
|
17
|
-
*
|
|
15
|
+
* **scanfix/** - Fallback scan/fix operations (used when @factiii/auth
|
|
16
|
+
* does not yet export stackPlugin)
|
|
17
|
+
* - setup.ts - Dev stage: package check, init, doctor, migrate
|
|
18
18
|
* - secrets.ts - Secrets stage: JWT_SECRET, OAuth keys
|
|
19
19
|
* - validate.ts - Staging/Prod: env var validation
|
|
20
20
|
*
|
|
21
|
-
* **index.ts** - This file
|
|
22
|
-
* -
|
|
23
|
-
* - shouldLoad() - auto-detects @factiii/auth
|
|
24
|
-
* -
|
|
21
|
+
* **index.ts** - This file (thin loader)
|
|
22
|
+
* - resolveAuthPlugin() - dynamically loads fixes from @factiii/auth
|
|
23
|
+
* - shouldLoad() - auto-detects @factiii/auth in project
|
|
24
|
+
* - Falls back to inline scanfixes if @factiii/auth doesn't export plugin
|
|
25
25
|
* ============================================================
|
|
26
26
|
*/
|
|
27
27
|
import type { FactiiiConfig, Fix, ServerOS } from '../../../types/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/addons/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/addons/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAwB,MAAM,yBAAyB,CAAC;AAoClG,cAAM,SAAS;IAKb,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,0BAA0B;IAC9C,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAW;IAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;IAElC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAgC;IAE7E,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAY;IAGnD,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAkB;IAG3D,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASnD;IAGF,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGtD;IAEF;;;OAGG;WACU,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAalF,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASrC;IAMF,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,CAAe;IAM3C;;OAEG;WACU,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAkC5E,OAAO,CAAC,OAAO,CAAgB;gBAEnB,MAAM,EAAE,aAAa;CAGlC;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -2,27 +2,27 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Auth Addon Plugin
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Thin delegation layer for @factiii/auth.
|
|
6
|
+
* Scanfix logic lives in the @factiii/auth package — stack loads and
|
|
7
|
+
* runs those fixes at runtime via resolveAuthPlugin().
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* - Secrets: Auto-generate JWT_SECRET, prompt for OAuth keys
|
|
11
|
-
* - Staging/Prod: Validate auth env vars are set
|
|
9
|
+
* When @factiii/auth exports a `stackPlugin` object with a `fixes` array,
|
|
10
|
+
* those fixes are used. Otherwise, falls back to inline scanfixes.
|
|
12
11
|
*
|
|
13
12
|
* ============================================================
|
|
14
13
|
* PLUGIN STRUCTURE
|
|
15
14
|
* ============================================================
|
|
16
15
|
*
|
|
17
|
-
* **scanfix/** -
|
|
18
|
-
*
|
|
16
|
+
* **scanfix/** - Fallback scan/fix operations (used when @factiii/auth
|
|
17
|
+
* does not yet export stackPlugin)
|
|
18
|
+
* - setup.ts - Dev stage: package check, init, doctor, migrate
|
|
19
19
|
* - secrets.ts - Secrets stage: JWT_SECRET, OAuth keys
|
|
20
20
|
* - validate.ts - Staging/Prod: env var validation
|
|
21
21
|
*
|
|
22
|
-
* **index.ts** - This file
|
|
23
|
-
* -
|
|
24
|
-
* - shouldLoad() - auto-detects @factiii/auth
|
|
25
|
-
* -
|
|
22
|
+
* **index.ts** - This file (thin loader)
|
|
23
|
+
* - resolveAuthPlugin() - dynamically loads fixes from @factiii/auth
|
|
24
|
+
* - shouldLoad() - auto-detects @factiii/auth in project
|
|
25
|
+
* - Falls back to inline scanfixes if @factiii/auth doesn't export plugin
|
|
26
26
|
* ============================================================
|
|
27
27
|
*/
|
|
28
28
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
@@ -61,10 +61,38 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
61
61
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
62
62
|
const fs = __importStar(require("fs"));
|
|
63
63
|
const path = __importStar(require("path"));
|
|
64
|
-
//
|
|
64
|
+
// Inline fallback scanfixes (used when @factiii/auth doesn't export stackPlugin)
|
|
65
65
|
const setup_js_1 = require("./scanfix/setup.js");
|
|
66
66
|
const secrets_js_1 = require("./scanfix/secrets.js");
|
|
67
67
|
const validate_js_1 = require("./scanfix/validate.js");
|
|
68
|
+
/**
|
|
69
|
+
* Try to load scanfixes from @factiii/auth's stackPlugin export.
|
|
70
|
+
* Returns the exported fixes if available, null otherwise.
|
|
71
|
+
*/
|
|
72
|
+
function resolveAuthPlugin() {
|
|
73
|
+
try {
|
|
74
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
75
|
+
const authPkg = require('@factiii/auth');
|
|
76
|
+
if (authPkg.stackPlugin && Array.isArray(authPkg.stackPlugin.fixes)) {
|
|
77
|
+
return authPkg.stackPlugin;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// @factiii/auth not installed or doesn't export stackPlugin
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get fixes — prefer @factiii/auth's exported fixes, fall back to inline.
|
|
87
|
+
*/
|
|
88
|
+
function loadFixes() {
|
|
89
|
+
const external = resolveAuthPlugin();
|
|
90
|
+
if (external) {
|
|
91
|
+
return external.fixes;
|
|
92
|
+
}
|
|
93
|
+
// Fallback: use inline scanfixes from this repo
|
|
94
|
+
return [...setup_js_1.setupFixes, ...secrets_js_1.secretsFixes, ...validate_js_1.validateFixes];
|
|
95
|
+
}
|
|
68
96
|
class AuthAddon {
|
|
69
97
|
// ============================================================
|
|
70
98
|
// STATIC METADATA
|
|
@@ -124,13 +152,9 @@ class AuthAddon {
|
|
|
124
152
|
authentication tokens (JWT) for your application.`,
|
|
125
153
|
};
|
|
126
154
|
// ============================================================
|
|
127
|
-
// FIXES -
|
|
155
|
+
// FIXES - Loaded from @factiii/auth when available, inline fallback otherwise
|
|
128
156
|
// ============================================================
|
|
129
|
-
static fixes =
|
|
130
|
-
...setup_js_1.setupFixes,
|
|
131
|
-
...secrets_js_1.secretsFixes,
|
|
132
|
-
...validate_js_1.validateFixes,
|
|
133
|
-
];
|
|
157
|
+
static fixes = loadFixes();
|
|
134
158
|
// ============================================================
|
|
135
159
|
// STATIC HELPER METHODS
|
|
136
160
|
// ============================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/addons/auth/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAG7B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/addons/auth/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auth Setup Scanfixes (Dev Stage)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* Thin delegation layer — all auth logic lives in @factiii/auth.
|
|
5
|
+
* Stack only handles:
|
|
6
|
+
* 1. Ensuring @factiii/auth is in package.json
|
|
7
|
+
* 2. Calling `npx @factiii/auth doctor` for everything else
|
|
8
|
+
*
|
|
9
|
+
* The doctor command in @factiii/auth handles init, schema checks,
|
|
10
|
+
* migrations, and any other auth-specific validations.
|
|
9
11
|
*/
|
|
10
12
|
import type { Fix } from '../../../../types/index.js';
|
|
11
13
|
export declare const setupFixes: Fix[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/auth/scanfix/setup.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/auth/scanfix/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AA4BrE,eAAO,MAAM,UAAU,EAAE,GAAG,EAsE3B,CAAC"}
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Auth Setup Scanfixes (Dev Stage)
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* Thin delegation layer — all auth logic lives in @factiii/auth.
|
|
6
|
+
* Stack only handles:
|
|
7
|
+
* 1. Ensuring @factiii/auth is in package.json
|
|
8
|
+
* 2. Calling `npx @factiii/auth doctor` for everything else
|
|
9
|
+
*
|
|
10
|
+
* The doctor command in @factiii/auth handles init, schema checks,
|
|
11
|
+
* migrations, and any other auth-specific validations.
|
|
10
12
|
*/
|
|
11
13
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
14
|
if (k2 === undefined) k2 = k;
|
|
@@ -41,25 +43,20 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
43
|
return result;
|
|
42
44
|
};
|
|
43
45
|
})();
|
|
44
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
-
};
|
|
47
46
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
47
|
exports.setupFixes = void 0;
|
|
49
48
|
const fs = __importStar(require("fs"));
|
|
50
49
|
const path = __importStar(require("path"));
|
|
51
50
|
const child_process_1 = require("child_process");
|
|
52
|
-
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
53
|
-
const config_files_js_1 = require("../../../../constants/config-files.js");
|
|
54
51
|
/**
|
|
55
|
-
*
|
|
52
|
+
* Detect the package manager used in the project
|
|
56
53
|
*/
|
|
57
|
-
function
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
return
|
|
54
|
+
function detectPackageManager(rootDir) {
|
|
55
|
+
if (fs.existsSync(path.join(rootDir, 'pnpm-lock.yaml')))
|
|
56
|
+
return 'pnpm';
|
|
57
|
+
if (fs.existsSync(path.join(rootDir, 'yarn.lock')))
|
|
58
|
+
return 'yarn';
|
|
59
|
+
return 'npm';
|
|
63
60
|
}
|
|
64
61
|
/**
|
|
65
62
|
* Run a command silently and return success/failure
|
|
@@ -80,112 +77,60 @@ function runSilent(cmd, rootDir) {
|
|
|
80
77
|
}
|
|
81
78
|
exports.setupFixes = [
|
|
82
79
|
{
|
|
83
|
-
id: 'auth-missing
|
|
80
|
+
id: 'auth-package-missing',
|
|
84
81
|
stage: 'dev',
|
|
85
|
-
severity: '
|
|
86
|
-
description: '
|
|
82
|
+
severity: 'critical',
|
|
83
|
+
description: '@factiii/auth missing from package.json dependencies',
|
|
87
84
|
scan: async (_config, rootDir) => {
|
|
88
|
-
const stackPath = path.join(rootDir, config_files_js_1.STACK_CONFIG_FILENAME);
|
|
89
|
-
if (!fs.existsSync(stackPath))
|
|
90
|
-
return false; // No stack.yml yet, bootstrap handles it
|
|
91
|
-
const content = fs.readFileSync(stackPath, 'utf8');
|
|
92
|
-
// Check if there's an uncommented auth: key at the top level
|
|
93
|
-
return !content.match(/^auth:/m);
|
|
94
|
-
},
|
|
95
|
-
fix: async (_config, rootDir) => {
|
|
96
85
|
try {
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
'# Detected @factiii/auth in dependencies.\n' +
|
|
104
|
-
'# JWT_SECRET is auto-generated and stored in Ansible Vault.\n' +
|
|
105
|
-
'# Customize features below as needed.\n' +
|
|
106
|
-
'auth:\n' +
|
|
107
|
-
' features:\n' +
|
|
108
|
-
' oauth: false\n' +
|
|
109
|
-
' twoFa: false\n' +
|
|
110
|
-
' emailVerification: false\n' +
|
|
111
|
-
' oauth_provider: EXAMPLE_google\n';
|
|
112
|
-
// Remove any commented-out auth section if present
|
|
113
|
-
let updated = content.replace(/\n?# =+\n# AUTH[^\n]*\n# =+\n(?:#[^\n]*\n)*/g, '');
|
|
114
|
-
// Append auth section before NEXT STEPS or at end
|
|
115
|
-
if (updated.includes('# NEXT STEPS')) {
|
|
116
|
-
updated = updated.replace(/(\n# =+\n# NEXT STEPS)/, authSection + '\n$1');
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
updated = updated.trimEnd() + '\n' + authSection;
|
|
120
|
-
}
|
|
121
|
-
fs.writeFileSync(stackPath, updated, 'utf8');
|
|
122
|
-
console.log(' [OK] Added auth: section to ' + config_files_js_1.STACK_CONFIG_FILENAME);
|
|
123
|
-
// Verify by re-reading
|
|
124
|
-
const verify = fs.readFileSync(stackPath, 'utf8');
|
|
125
|
-
const parsed = js_yaml_1.default.load(verify);
|
|
126
|
-
return !!parsed.auth;
|
|
86
|
+
const pkgPath = path.join(rootDir, 'package.json');
|
|
87
|
+
if (!fs.existsSync(pkgPath))
|
|
88
|
+
return false;
|
|
89
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
90
|
+
const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
|
|
91
|
+
return !deps['@factiii/auth'];
|
|
127
92
|
}
|
|
128
|
-
catch
|
|
129
|
-
console.log(' Failed: ' + (e instanceof Error ? e.message : String(e)));
|
|
93
|
+
catch {
|
|
130
94
|
return false;
|
|
131
95
|
}
|
|
132
96
|
},
|
|
133
|
-
manualFix: 'Add to ' + config_files_js_1.STACK_CONFIG_FILENAME + ':\n' +
|
|
134
|
-
' auth:\n' +
|
|
135
|
-
' features:\n' +
|
|
136
|
-
' oauth: false\n' +
|
|
137
|
-
' twoFa: false\n' +
|
|
138
|
-
' emailVerification: false\n' +
|
|
139
|
-
' oauth_provider: EXAMPLE_google',
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
id: 'auth-not-initialized',
|
|
143
|
-
stage: 'dev',
|
|
144
|
-
severity: 'critical',
|
|
145
|
-
description: 'Auth schema not initialized (missing User/Session models in Prisma)',
|
|
146
|
-
scan: async (_config, rootDir) => {
|
|
147
|
-
// Only flag if @factiii/auth is installed but schema not initialized
|
|
148
|
-
const schemaPath = path.join(rootDir, 'prisma', 'schema.prisma');
|
|
149
|
-
if (!fs.existsSync(schemaPath))
|
|
150
|
-
return true; // No schema at all
|
|
151
|
-
return !hasAuthModels(rootDir);
|
|
152
|
-
},
|
|
153
97
|
fix: async (_config, rootDir) => {
|
|
154
98
|
try {
|
|
155
|
-
|
|
156
|
-
|
|
99
|
+
const pm = detectPackageManager(rootDir);
|
|
100
|
+
const installCmd = pm === 'pnpm' ? 'pnpm add @factiii/auth'
|
|
101
|
+
: pm === 'yarn' ? 'yarn add @factiii/auth'
|
|
102
|
+
: 'npm install @factiii/auth';
|
|
103
|
+
console.log(' Running: ' + installCmd);
|
|
104
|
+
(0, child_process_1.execSync)(installCmd, {
|
|
157
105
|
cwd: rootDir,
|
|
158
106
|
stdio: 'inherit',
|
|
159
107
|
});
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
});
|
|
166
|
-
return hasAuthModels(rootDir);
|
|
108
|
+
// Verify
|
|
109
|
+
const pkgPath = path.join(rootDir, 'package.json');
|
|
110
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
111
|
+
const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
|
|
112
|
+
return !!deps['@factiii/auth'];
|
|
167
113
|
}
|
|
168
114
|
catch (e) {
|
|
169
115
|
console.log(' Failed: ' + (e instanceof Error ? e.message : String(e)));
|
|
170
116
|
return false;
|
|
171
117
|
}
|
|
172
118
|
},
|
|
173
|
-
manualFix: 'Run:
|
|
119
|
+
manualFix: 'Run: pnpm add @factiii/auth (or npm install @factiii/auth)',
|
|
174
120
|
},
|
|
175
121
|
{
|
|
176
|
-
id: 'auth-doctor
|
|
122
|
+
id: 'auth-doctor',
|
|
177
123
|
stage: 'dev',
|
|
178
|
-
severity: '
|
|
179
|
-
description: '
|
|
124
|
+
severity: 'critical',
|
|
125
|
+
description: '@factiii/auth doctor check failed',
|
|
180
126
|
scan: async (_config, rootDir) => {
|
|
181
|
-
//
|
|
182
|
-
|
|
183
|
-
return false;
|
|
127
|
+
// Delegate to @factiii/auth doctor — it handles all checks
|
|
128
|
+
// (init, schema, migrations, config, etc.)
|
|
184
129
|
const result = runSilent('npx @factiii/auth doctor', rootDir);
|
|
185
130
|
return !result.success;
|
|
186
131
|
},
|
|
187
132
|
fix: async (_config, rootDir) => {
|
|
188
|
-
// Run doctor with
|
|
133
|
+
// Run doctor with visible output — it handles all fixes
|
|
189
134
|
try {
|
|
190
135
|
(0, child_process_1.execSync)('npx @factiii/auth doctor', {
|
|
191
136
|
cwd: rootDir,
|
|
@@ -200,36 +145,5 @@ exports.setupFixes = [
|
|
|
200
145
|
},
|
|
201
146
|
manualFix: 'Run: npx @factiii/auth doctor',
|
|
202
147
|
},
|
|
203
|
-
{
|
|
204
|
-
id: 'auth-prisma-not-migrated',
|
|
205
|
-
stage: 'dev',
|
|
206
|
-
severity: 'warning',
|
|
207
|
-
description: 'Auth database tables not migrated (pending Prisma migrations)',
|
|
208
|
-
scan: async (_config, rootDir) => {
|
|
209
|
-
// Skip if auth models not initialized
|
|
210
|
-
if (!hasAuthModels(rootDir))
|
|
211
|
-
return false;
|
|
212
|
-
// Check for pending migrations
|
|
213
|
-
const result = runSilent('npx prisma migrate status', rootDir);
|
|
214
|
-
if (!result.success)
|
|
215
|
-
return true; // Can't check = assume pending
|
|
216
|
-
return result.output.includes('Following migration') || result.output.includes('not yet been applied');
|
|
217
|
-
},
|
|
218
|
-
fix: async (_config, rootDir) => {
|
|
219
|
-
try {
|
|
220
|
-
console.log(' Running: npx prisma migrate dev');
|
|
221
|
-
(0, child_process_1.execSync)('npx prisma migrate dev', {
|
|
222
|
-
cwd: rootDir,
|
|
223
|
-
stdio: 'inherit',
|
|
224
|
-
});
|
|
225
|
-
return true;
|
|
226
|
-
}
|
|
227
|
-
catch (e) {
|
|
228
|
-
console.log(' Migration failed: ' + (e instanceof Error ? e.message : String(e)));
|
|
229
|
-
return false;
|
|
230
|
-
}
|
|
231
|
-
},
|
|
232
|
-
manualFix: 'Run: npx prisma migrate dev',
|
|
233
|
-
},
|
|
234
148
|
];
|
|
235
149
|
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/auth/scanfix/setup.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/auth/scanfix/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -183,10 +183,10 @@ async function runCertbot(envConfig, config) {
|
|
|
183
183
|
console.log(' No domains configured, skipping SSL certificates');
|
|
184
184
|
return;
|
|
185
185
|
}
|
|
186
|
-
const sslEmail = config.ssl_email;
|
|
186
|
+
const sslEmail = envConfig.ssl_email ?? config.ssl_email;
|
|
187
187
|
if (!sslEmail || sslEmail.toUpperCase().startsWith('EXAMPLE')) {
|
|
188
188
|
console.log(' ⚠️ ssl_email not configured in stack.yml, skipping SSL');
|
|
189
|
-
console.log(' Add ssl_email to
|
|
189
|
+
console.log(' Add ssl_email to your environment config in stack.yml');
|
|
190
190
|
return;
|
|
191
191
|
}
|
|
192
192
|
// For each domain, obtain certificate using Docker certbot
|