@factiii/stack 0.1.92 → 0.1.94
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 +35 -2
- package/dist/generators/generate-stack-yml.js.map +1 -1
- package/dist/plugins/addons/auth/index.d.ts +56 -0
- package/dist/plugins/addons/auth/index.d.ts.map +1 -0
- package/dist/plugins/addons/auth/index.js +178 -0
- package/dist/plugins/addons/auth/index.js.map +1 -0
- package/dist/plugins/addons/auth/scanfix/secrets.d.ts +10 -0
- package/dist/plugins/addons/auth/scanfix/secrets.d.ts.map +1 -0
- package/dist/plugins/addons/auth/scanfix/secrets.js +205 -0
- package/dist/plugins/addons/auth/scanfix/secrets.js.map +1 -0
- package/dist/plugins/addons/auth/scanfix/setup.d.ts +12 -0
- package/dist/plugins/addons/auth/scanfix/setup.d.ts.map +1 -0
- package/dist/plugins/addons/auth/scanfix/setup.js +235 -0
- package/dist/plugins/addons/auth/scanfix/setup.js.map +1 -0
- package/dist/plugins/addons/auth/scanfix/validate.d.ts +9 -0
- package/dist/plugins/addons/auth/scanfix/validate.d.ts.map +1 -0
- package/dist/plugins/addons/auth/scanfix/validate.js +153 -0
- package/dist/plugins/addons/auth/scanfix/validate.js.map +1 -0
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +9 -0
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/bootstrap.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/bootstrap.js +5 -1
- package/dist/plugins/pipelines/factiii/scanfix/bootstrap.js.map +1 -1
- package/package.json +1 -1
|
@@ -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,CAuLjG"}
|
|
@@ -125,7 +125,6 @@ function generateSmartStackYml(rootDir, options = {}) {
|
|
|
125
125
|
const config = {
|
|
126
126
|
name,
|
|
127
127
|
config_version: '0.1.0',
|
|
128
|
-
dev_only: true,
|
|
129
128
|
github_repo: githubRepo,
|
|
130
129
|
ssl_email: 'EXAMPLE_admin@yourdomain.com',
|
|
131
130
|
pipeline: 'factiii',
|
|
@@ -155,6 +154,8 @@ function generateSmartStackYml(rootDir, options = {}) {
|
|
|
155
154
|
detectedPlugins.push('trpc');
|
|
156
155
|
if (deps['expo'])
|
|
157
156
|
detectedPlugins.push('expo');
|
|
157
|
+
if (deps['@factiii/auth'])
|
|
158
|
+
detectedPlugins.push('auth');
|
|
158
159
|
// Build YAML content with comments
|
|
159
160
|
const sections = [];
|
|
160
161
|
sections.push('# Generated by @factiii/stack');
|
|
@@ -168,6 +169,38 @@ function generateSmartStackYml(rootDir, options = {}) {
|
|
|
168
169
|
sections.push('# Detected frameworks: ' + detectedPlugins.join(', '));
|
|
169
170
|
sections.push('');
|
|
170
171
|
}
|
|
172
|
+
// Auth (@factiii/auth) - auto-detected or commented out
|
|
173
|
+
if (deps['@factiii/auth']) {
|
|
174
|
+
sections.push('# ============================================================');
|
|
175
|
+
sections.push('# AUTH (@factiii/auth)');
|
|
176
|
+
sections.push('# ============================================================');
|
|
177
|
+
sections.push('# Detected @factiii/auth in dependencies.');
|
|
178
|
+
sections.push('# JWT_SECRET is auto-generated and stored in Ansible Vault.');
|
|
179
|
+
sections.push('# Customize features below as needed.');
|
|
180
|
+
sections.push('auth:');
|
|
181
|
+
sections.push(' features:');
|
|
182
|
+
sections.push(' oauth: false');
|
|
183
|
+
sections.push(' twoFa: false');
|
|
184
|
+
sections.push(' emailVerification: false');
|
|
185
|
+
sections.push(' oauth_provider: EXAMPLE_google');
|
|
186
|
+
sections.push('');
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
sections.push('# ============================================================');
|
|
190
|
+
sections.push('# AUTH (@factiii/auth)');
|
|
191
|
+
sections.push('# ============================================================');
|
|
192
|
+
sections.push('# Drop-in tRPC auth: JWT sessions, OAuth, 2FA, email verification.');
|
|
193
|
+
sections.push('# Install: npm install @factiii/auth');
|
|
194
|
+
sections.push('# Then re-run: npx stack fix --dev');
|
|
195
|
+
sections.push('#');
|
|
196
|
+
sections.push('# auth:');
|
|
197
|
+
sections.push('# features:');
|
|
198
|
+
sections.push('# oauth: false');
|
|
199
|
+
sections.push('# twoFa: false');
|
|
200
|
+
sections.push('# emailVerification: false');
|
|
201
|
+
sections.push('# oauth_provider: EXAMPLE_google');
|
|
202
|
+
sections.push('');
|
|
203
|
+
}
|
|
171
204
|
// OpenClaw / Moltbot - commented out by default
|
|
172
205
|
sections.push('# ============================================================');
|
|
173
206
|
sections.push('# OPENCLAW (MOLTBOT)');
|
|
@@ -216,7 +249,7 @@ function generateSmartStackYml(rootDir, options = {}) {
|
|
|
216
249
|
sections.push('# npx stack deploy --secrets set -> store SSH keys & credentials in Ansible Vault');
|
|
217
250
|
sections.push('#');
|
|
218
251
|
sections.push('# 5. UNLOCK STAGING/PROD');
|
|
219
|
-
sections.push('#
|
|
252
|
+
sections.push('# Edit stack.local.yml and set: dev_only: false');
|
|
220
253
|
sections.push('# (stack.local.yml is gitignored - only affects YOUR machine)');
|
|
221
254
|
sections.push('#');
|
|
222
255
|
sections.push('# 6. DEPLOY');
|
|
@@ -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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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Addon Plugin
|
|
3
|
+
*
|
|
4
|
+
* Integrates @factiii/auth into the stack pipeline.
|
|
5
|
+
* Auto-detects @factiii/auth in package.json dependencies.
|
|
6
|
+
*
|
|
7
|
+
* Handles:
|
|
8
|
+
* - Dev: Initialize auth schema, run doctor, migrate
|
|
9
|
+
* - Secrets: Auto-generate JWT_SECRET, prompt for OAuth keys
|
|
10
|
+
* - Staging/Prod: Validate auth env vars are set
|
|
11
|
+
*
|
|
12
|
+
* ============================================================
|
|
13
|
+
* PLUGIN STRUCTURE
|
|
14
|
+
* ============================================================
|
|
15
|
+
*
|
|
16
|
+
* **scanfix/** - Scan/fix operations organized by concern
|
|
17
|
+
* - setup.ts - Dev stage: init, doctor, migrate
|
|
18
|
+
* - secrets.ts - Secrets stage: JWT_SECRET, OAuth keys
|
|
19
|
+
* - validate.ts - Staging/Prod: env var validation
|
|
20
|
+
*
|
|
21
|
+
* **index.ts** - This file
|
|
22
|
+
* - Static metadata (id, name, category, version)
|
|
23
|
+
* - shouldLoad() - auto-detects @factiii/auth
|
|
24
|
+
* - Imports and combines all scanfix arrays
|
|
25
|
+
* ============================================================
|
|
26
|
+
*/
|
|
27
|
+
import type { FactiiiConfig, Fix, ServerOS } from '../../../types/index.js';
|
|
28
|
+
declare class AuthAddon {
|
|
29
|
+
static readonly id = "auth";
|
|
30
|
+
static readonly name = "Auth (@factiii/auth)";
|
|
31
|
+
static readonly category: 'addon';
|
|
32
|
+
static readonly version = "1.0.0";
|
|
33
|
+
/**
|
|
34
|
+
* Compatible with all server types (auth is app-level, not OS-specific)
|
|
35
|
+
*/
|
|
36
|
+
static readonly compatibleServers: ServerOS[];
|
|
37
|
+
static readonly defaultServer: ServerOS;
|
|
38
|
+
static readonly requiredEnvVars: string[];
|
|
39
|
+
static readonly configSchema: Record<string, unknown>;
|
|
40
|
+
static readonly autoConfigSchema: Record<string, string>;
|
|
41
|
+
/**
|
|
42
|
+
* Auto-detect @factiii/auth in package.json dependencies.
|
|
43
|
+
* No manual config needed — plugin loads automatically.
|
|
44
|
+
*/
|
|
45
|
+
static shouldLoad(rootDir: string, _config: FactiiiConfig): Promise<boolean>;
|
|
46
|
+
static helpText: Record<string, string>;
|
|
47
|
+
static readonly fixes: Fix[];
|
|
48
|
+
/**
|
|
49
|
+
* Auto-detect auth configuration
|
|
50
|
+
*/
|
|
51
|
+
static detectConfig(rootDir: string): Promise<Record<string, unknown>>;
|
|
52
|
+
private _config;
|
|
53
|
+
constructor(config: FactiiiConfig);
|
|
54
|
+
}
|
|
55
|
+
export default AuthAddon;
|
|
56
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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,EAAE,MAAM,yBAAyB,CAAC;AAO5E,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,CAI1B;IAMF;;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"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Auth Addon Plugin
|
|
4
|
+
*
|
|
5
|
+
* Integrates @factiii/auth into the stack pipeline.
|
|
6
|
+
* Auto-detects @factiii/auth in package.json dependencies.
|
|
7
|
+
*
|
|
8
|
+
* Handles:
|
|
9
|
+
* - Dev: Initialize auth schema, run doctor, migrate
|
|
10
|
+
* - Secrets: Auto-generate JWT_SECRET, prompt for OAuth keys
|
|
11
|
+
* - Staging/Prod: Validate auth env vars are set
|
|
12
|
+
*
|
|
13
|
+
* ============================================================
|
|
14
|
+
* PLUGIN STRUCTURE
|
|
15
|
+
* ============================================================
|
|
16
|
+
*
|
|
17
|
+
* **scanfix/** - Scan/fix operations organized by concern
|
|
18
|
+
* - setup.ts - Dev stage: init, doctor, migrate
|
|
19
|
+
* - secrets.ts - Secrets stage: JWT_SECRET, OAuth keys
|
|
20
|
+
* - validate.ts - Staging/Prod: env var validation
|
|
21
|
+
*
|
|
22
|
+
* **index.ts** - This file
|
|
23
|
+
* - Static metadata (id, name, category, version)
|
|
24
|
+
* - shouldLoad() - auto-detects @factiii/auth
|
|
25
|
+
* - Imports and combines all scanfix arrays
|
|
26
|
+
* ============================================================
|
|
27
|
+
*/
|
|
28
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
29
|
+
if (k2 === undefined) k2 = k;
|
|
30
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
31
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
32
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
33
|
+
}
|
|
34
|
+
Object.defineProperty(o, k2, desc);
|
|
35
|
+
}) : (function(o, m, k, k2) {
|
|
36
|
+
if (k2 === undefined) k2 = k;
|
|
37
|
+
o[k2] = m[k];
|
|
38
|
+
}));
|
|
39
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
40
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
41
|
+
}) : function(o, v) {
|
|
42
|
+
o["default"] = v;
|
|
43
|
+
});
|
|
44
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
45
|
+
var ownKeys = function(o) {
|
|
46
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
47
|
+
var ar = [];
|
|
48
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
49
|
+
return ar;
|
|
50
|
+
};
|
|
51
|
+
return ownKeys(o);
|
|
52
|
+
};
|
|
53
|
+
return function (mod) {
|
|
54
|
+
if (mod && mod.__esModule) return mod;
|
|
55
|
+
var result = {};
|
|
56
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
57
|
+
__setModuleDefault(result, mod);
|
|
58
|
+
return result;
|
|
59
|
+
};
|
|
60
|
+
})();
|
|
61
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
62
|
+
const fs = __importStar(require("fs"));
|
|
63
|
+
const path = __importStar(require("path"));
|
|
64
|
+
// Import scanfixes
|
|
65
|
+
const setup_js_1 = require("./scanfix/setup.js");
|
|
66
|
+
const secrets_js_1 = require("./scanfix/secrets.js");
|
|
67
|
+
const validate_js_1 = require("./scanfix/validate.js");
|
|
68
|
+
class AuthAddon {
|
|
69
|
+
// ============================================================
|
|
70
|
+
// STATIC METADATA
|
|
71
|
+
// ============================================================
|
|
72
|
+
static id = 'auth';
|
|
73
|
+
static name = 'Auth (@factiii/auth)';
|
|
74
|
+
static category = 'addon';
|
|
75
|
+
static version = '1.0.0';
|
|
76
|
+
/**
|
|
77
|
+
* Compatible with all server types (auth is app-level, not OS-specific)
|
|
78
|
+
*/
|
|
79
|
+
static compatibleServers = ['mac', 'ubuntu', 'windows'];
|
|
80
|
+
static defaultServer = 'ubuntu';
|
|
81
|
+
// Env vars this plugin requires (auto-generates .env.example checks)
|
|
82
|
+
static requiredEnvVars = ['JWT_SECRET'];
|
|
83
|
+
// Schema for stack.yml (user-editable, optional)
|
|
84
|
+
static configSchema = {
|
|
85
|
+
auth: {
|
|
86
|
+
features: {
|
|
87
|
+
oauth: false,
|
|
88
|
+
twoFa: false,
|
|
89
|
+
emailVerification: false,
|
|
90
|
+
},
|
|
91
|
+
oauth_provider: 'EXAMPLE_google',
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
// Schema for stackAuto.yml (auto-detected)
|
|
95
|
+
static autoConfigSchema = {
|
|
96
|
+
auth_installed: 'boolean',
|
|
97
|
+
auth_initialized: 'boolean',
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Auto-detect @factiii/auth in package.json dependencies.
|
|
101
|
+
* No manual config needed — plugin loads automatically.
|
|
102
|
+
*/
|
|
103
|
+
static async shouldLoad(rootDir, _config) {
|
|
104
|
+
try {
|
|
105
|
+
const pkgPath = path.join(rootDir, 'package.json');
|
|
106
|
+
if (!fs.existsSync(pkgPath))
|
|
107
|
+
return false;
|
|
108
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
109
|
+
const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
|
|
110
|
+
return !!deps['@factiii/auth'];
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
static helpText = {
|
|
117
|
+
JWT_SECRET: `
|
|
118
|
+
JWT signing secret for @factiii/auth.
|
|
119
|
+
|
|
120
|
+
This is auto-generated (256-bit random) when you run:
|
|
121
|
+
npx stack fix --secrets
|
|
122
|
+
|
|
123
|
+
The secret is stored in Ansible Vault and used to sign
|
|
124
|
+
authentication tokens (JWT) for your application.`,
|
|
125
|
+
};
|
|
126
|
+
// ============================================================
|
|
127
|
+
// FIXES - All issues this plugin can detect and resolve
|
|
128
|
+
// ============================================================
|
|
129
|
+
static fixes = [
|
|
130
|
+
...setup_js_1.setupFixes,
|
|
131
|
+
...secrets_js_1.secretsFixes,
|
|
132
|
+
...validate_js_1.validateFixes,
|
|
133
|
+
];
|
|
134
|
+
// ============================================================
|
|
135
|
+
// STATIC HELPER METHODS
|
|
136
|
+
// ============================================================
|
|
137
|
+
/**
|
|
138
|
+
* Auto-detect auth configuration
|
|
139
|
+
*/
|
|
140
|
+
static async detectConfig(rootDir) {
|
|
141
|
+
const detected = {};
|
|
142
|
+
try {
|
|
143
|
+
const pkgPath = path.join(rootDir, 'package.json');
|
|
144
|
+
if (fs.existsSync(pkgPath)) {
|
|
145
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
146
|
+
const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
|
|
147
|
+
detected.auth_installed = !!deps['@factiii/auth'];
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
detected.auth_installed = false;
|
|
152
|
+
}
|
|
153
|
+
// Check if auth models exist in Prisma schema
|
|
154
|
+
try {
|
|
155
|
+
const schemaPath = path.join(rootDir, 'prisma', 'schema.prisma');
|
|
156
|
+
if (fs.existsSync(schemaPath)) {
|
|
157
|
+
const content = fs.readFileSync(schemaPath, 'utf8');
|
|
158
|
+
detected.auth_initialized = content.includes('model User') && content.includes('model Session');
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
detected.auth_initialized = false;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
detected.auth_initialized = false;
|
|
166
|
+
}
|
|
167
|
+
return detected;
|
|
168
|
+
}
|
|
169
|
+
// ============================================================
|
|
170
|
+
// INSTANCE
|
|
171
|
+
// ============================================================
|
|
172
|
+
_config;
|
|
173
|
+
constructor(config) {
|
|
174
|
+
this._config = config;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
exports.default = AuthAddon;
|
|
178
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/addons/auth/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Secrets Scanfixes
|
|
3
|
+
*
|
|
4
|
+
* Manages authentication secrets in Ansible Vault:
|
|
5
|
+
* - JWT_SECRET: auto-generated 256-bit random key
|
|
6
|
+
* - OAuth keys: prompted from user (Google, Apple)
|
|
7
|
+
*/
|
|
8
|
+
import type { Fix } from '../../../../types/index.js';
|
|
9
|
+
export declare const secretsFixes: Fix[];
|
|
10
|
+
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/auth/scanfix/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAyCrE,eAAO,MAAM,YAAY,EAAE,GAAG,EA+H7B,CAAC"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Auth Secrets Scanfixes
|
|
4
|
+
*
|
|
5
|
+
* Manages authentication secrets in Ansible Vault:
|
|
6
|
+
* - JWT_SECRET: auto-generated 256-bit random key
|
|
7
|
+
* - OAuth keys: prompted from user (Google, Apple)
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.secretsFixes = void 0;
|
|
44
|
+
const crypto = __importStar(require("crypto"));
|
|
45
|
+
const config_helpers_js_1 = require("../../../../utils/config-helpers.js");
|
|
46
|
+
/**
|
|
47
|
+
* Get auth config from FactiiiConfig (handles undefined/null)
|
|
48
|
+
*/
|
|
49
|
+
function getAuthConfig(config) {
|
|
50
|
+
const auth = config.auth;
|
|
51
|
+
if (!auth || typeof auth !== 'object')
|
|
52
|
+
return null;
|
|
53
|
+
return auth;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if OAuth is enabled for a specific provider
|
|
57
|
+
*/
|
|
58
|
+
function isOAuthEnabled(config, provider) {
|
|
59
|
+
const auth = getAuthConfig(config);
|
|
60
|
+
if (!auth)
|
|
61
|
+
return false;
|
|
62
|
+
// Check auth.features.oauth
|
|
63
|
+
const features = auth.features;
|
|
64
|
+
if (features?.oauth)
|
|
65
|
+
return true;
|
|
66
|
+
// Check auth.oauth_provider
|
|
67
|
+
if (auth.oauth_provider === provider)
|
|
68
|
+
return true;
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get Ansible Vault store
|
|
73
|
+
*/
|
|
74
|
+
async function getVault(config, rootDir) {
|
|
75
|
+
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
|
|
76
|
+
return new AnsibleVaultSecrets({
|
|
77
|
+
vault_path: config.ansible?.vault_path ?? (0, config_helpers_js_1.getDefaultVaultPath)(config),
|
|
78
|
+
vault_password_file: config.ansible?.vault_password_file,
|
|
79
|
+
rootDir,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
exports.secretsFixes = [
|
|
83
|
+
{
|
|
84
|
+
id: 'auth-jwt-secret-missing',
|
|
85
|
+
stage: 'secrets',
|
|
86
|
+
severity: 'critical',
|
|
87
|
+
description: 'JWT_SECRET not found in Ansible Vault (required for auth)',
|
|
88
|
+
scan: async (config, rootDir) => {
|
|
89
|
+
try {
|
|
90
|
+
const vault = await getVault(config, rootDir);
|
|
91
|
+
const secret = await vault.getSecret('JWT_SECRET');
|
|
92
|
+
return !secret;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return false; // Vault not available, skip
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
fix: async (config, rootDir) => {
|
|
99
|
+
try {
|
|
100
|
+
const vault = await getVault(config, rootDir);
|
|
101
|
+
// Auto-generate a cryptographically secure 256-bit secret
|
|
102
|
+
const jwtSecret = crypto.randomBytes(32).toString('hex');
|
|
103
|
+
const result = await vault.setSecret('JWT_SECRET', jwtSecret);
|
|
104
|
+
if (result.success) {
|
|
105
|
+
console.log(' [OK] Generated and stored JWT_SECRET in Ansible Vault');
|
|
106
|
+
console.log(' (256-bit random key, no manual input needed)');
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
console.log(' Failed to store JWT_SECRET in vault');
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
console.log(' Error: ' + (e instanceof Error ? e.message : String(e)));
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
manualFix: 'Generate and store JWT secret: npx stack deploy --secrets set JWT_SECRET',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
id: 'auth-oauth-google-missing',
|
|
121
|
+
stage: 'secrets',
|
|
122
|
+
severity: 'warning',
|
|
123
|
+
description: 'Google OAuth credentials not in vault (GOOGLE_CLIENT_ID)',
|
|
124
|
+
scan: async (config, rootDir) => {
|
|
125
|
+
if (!isOAuthEnabled(config, 'google'))
|
|
126
|
+
return false;
|
|
127
|
+
try {
|
|
128
|
+
const vault = await getVault(config, rootDir);
|
|
129
|
+
const clientId = await vault.getSecret('GOOGLE_CLIENT_ID');
|
|
130
|
+
return !clientId;
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
fix: async (config, rootDir) => {
|
|
137
|
+
try {
|
|
138
|
+
const { promptForSecret } = await Promise.resolve().then(() => __importStar(require('../../../../utils/secret-prompts.js')));
|
|
139
|
+
const vault = await getVault(config, rootDir);
|
|
140
|
+
console.log('');
|
|
141
|
+
console.log(' Google OAuth Setup');
|
|
142
|
+
console.log(' Get credentials from: https://console.cloud.google.com/apis/credentials');
|
|
143
|
+
console.log('');
|
|
144
|
+
const clientId = await promptForSecret('GOOGLE_CLIENT_ID', config);
|
|
145
|
+
const r1 = await vault.setSecret('GOOGLE_CLIENT_ID', clientId);
|
|
146
|
+
if (!r1.success)
|
|
147
|
+
return false;
|
|
148
|
+
const clientSecret = await promptForSecret('GOOGLE_CLIENT_SECRET', config);
|
|
149
|
+
const r2 = await vault.setSecret('GOOGLE_CLIENT_SECRET', clientSecret);
|
|
150
|
+
if (!r2.success)
|
|
151
|
+
return false;
|
|
152
|
+
console.log(' [OK] Stored Google OAuth credentials in vault');
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
manualFix: 'Store Google OAuth credentials:\n' +
|
|
160
|
+
' npx stack deploy --secrets set GOOGLE_CLIENT_ID\n' +
|
|
161
|
+
' npx stack deploy --secrets set GOOGLE_CLIENT_SECRET\n' +
|
|
162
|
+
' Get from: https://console.cloud.google.com/apis/credentials',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
id: 'auth-oauth-apple-missing',
|
|
166
|
+
stage: 'secrets',
|
|
167
|
+
severity: 'warning',
|
|
168
|
+
description: 'Apple OAuth credentials not in vault (APPLE_CLIENT_ID)',
|
|
169
|
+
scan: async (config, rootDir) => {
|
|
170
|
+
if (!isOAuthEnabled(config, 'apple'))
|
|
171
|
+
return false;
|
|
172
|
+
try {
|
|
173
|
+
const vault = await getVault(config, rootDir);
|
|
174
|
+
const clientId = await vault.getSecret('APPLE_CLIENT_ID');
|
|
175
|
+
return !clientId;
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
fix: async (config, rootDir) => {
|
|
182
|
+
try {
|
|
183
|
+
const { promptForSecret } = await Promise.resolve().then(() => __importStar(require('../../../../utils/secret-prompts.js')));
|
|
184
|
+
const vault = await getVault(config, rootDir);
|
|
185
|
+
console.log('');
|
|
186
|
+
console.log(' Apple OAuth Setup');
|
|
187
|
+
console.log(' Get credentials from: https://developer.apple.com/account/resources/identifiers');
|
|
188
|
+
console.log('');
|
|
189
|
+
const clientId = await promptForSecret('APPLE_CLIENT_ID', config);
|
|
190
|
+
const r1 = await vault.setSecret('APPLE_CLIENT_ID', clientId);
|
|
191
|
+
if (!r1.success)
|
|
192
|
+
return false;
|
|
193
|
+
console.log(' [OK] Stored Apple OAuth credentials in vault');
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
manualFix: 'Store Apple OAuth credentials:\n' +
|
|
201
|
+
' npx stack deploy --secrets set APPLE_CLIENT_ID\n' +
|
|
202
|
+
' Get from: https://developer.apple.com/account/resources/identifiers',
|
|
203
|
+
},
|
|
204
|
+
];
|
|
205
|
+
//# sourceMappingURL=secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/auth/scanfix/secrets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Setup Scanfixes (Dev Stage)
|
|
3
|
+
*
|
|
4
|
+
* Detects @factiii/auth in dependencies and ensures:
|
|
5
|
+
* - Auth config exists in stack.yml
|
|
6
|
+
* - Auth Prisma schema is initialized (npx @factiii/auth init)
|
|
7
|
+
* - Auth doctor passes (validates setup)
|
|
8
|
+
* - Prisma migrations are applied for auth tables
|
|
9
|
+
*/
|
|
10
|
+
import type { Fix } from '../../../../types/index.js';
|
|
11
|
+
export declare const setupFixes: Fix[];
|
|
12
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/auth/scanfix/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AA+BrE,eAAO,MAAM,UAAU,EAAE,GAAG,EAmK3B,CAAC"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Auth Setup Scanfixes (Dev Stage)
|
|
4
|
+
*
|
|
5
|
+
* Detects @factiii/auth in dependencies and ensures:
|
|
6
|
+
* - Auth config exists in stack.yml
|
|
7
|
+
* - Auth Prisma schema is initialized (npx @factiii/auth init)
|
|
8
|
+
* - Auth doctor passes (validates setup)
|
|
9
|
+
* - Prisma migrations are applied for auth tables
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.setupFixes = void 0;
|
|
49
|
+
const fs = __importStar(require("fs"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
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
|
+
/**
|
|
55
|
+
* Check if Prisma schema contains auth models (User, Session)
|
|
56
|
+
*/
|
|
57
|
+
function hasAuthModels(rootDir) {
|
|
58
|
+
const schemaPath = path.join(rootDir, 'prisma', 'schema.prisma');
|
|
59
|
+
if (!fs.existsSync(schemaPath))
|
|
60
|
+
return false;
|
|
61
|
+
const content = fs.readFileSync(schemaPath, 'utf8');
|
|
62
|
+
return content.includes('model User') && content.includes('model Session');
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Run a command silently and return success/failure
|
|
66
|
+
*/
|
|
67
|
+
function runSilent(cmd, rootDir) {
|
|
68
|
+
try {
|
|
69
|
+
const output = (0, child_process_1.execSync)(cmd, {
|
|
70
|
+
cwd: rootDir,
|
|
71
|
+
encoding: 'utf8',
|
|
72
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
73
|
+
});
|
|
74
|
+
return { success: true, output };
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
const output = e instanceof Error ? e.message : String(e);
|
|
78
|
+
return { success: false, output };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.setupFixes = [
|
|
82
|
+
{
|
|
83
|
+
id: 'auth-missing-stack-yml-config',
|
|
84
|
+
stage: 'dev',
|
|
85
|
+
severity: 'warning',
|
|
86
|
+
description: 'Auth config missing from stack.yml (@factiii/auth detected but no auth: section)',
|
|
87
|
+
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
|
+
try {
|
|
97
|
+
const stackPath = path.join(rootDir, config_files_js_1.STACK_CONFIG_FILENAME);
|
|
98
|
+
const content = fs.readFileSync(stackPath, 'utf8');
|
|
99
|
+
// Build auth section
|
|
100
|
+
const authSection = '\n# ============================================================\n' +
|
|
101
|
+
'# AUTH (@factiii/auth)\n' +
|
|
102
|
+
'# ============================================================\n' +
|
|
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;
|
|
127
|
+
}
|
|
128
|
+
catch (e) {
|
|
129
|
+
console.log(' Failed: ' + (e instanceof Error ? e.message : String(e)));
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
},
|
|
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
|
+
fix: async (_config, rootDir) => {
|
|
154
|
+
try {
|
|
155
|
+
console.log(' Running: npx @factiii/auth init');
|
|
156
|
+
(0, child_process_1.execSync)('npx @factiii/auth init', {
|
|
157
|
+
cwd: rootDir,
|
|
158
|
+
stdio: 'inherit',
|
|
159
|
+
});
|
|
160
|
+
// Regenerate Prisma client
|
|
161
|
+
console.log(' Running: npx prisma generate');
|
|
162
|
+
(0, child_process_1.execSync)('npx prisma generate', {
|
|
163
|
+
cwd: rootDir,
|
|
164
|
+
stdio: 'inherit',
|
|
165
|
+
});
|
|
166
|
+
return hasAuthModels(rootDir);
|
|
167
|
+
}
|
|
168
|
+
catch (e) {
|
|
169
|
+
console.log(' Failed: ' + (e instanceof Error ? e.message : String(e)));
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
manualFix: 'Run: npx @factiii/auth init && npx prisma generate',
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
id: 'auth-doctor-fail',
|
|
177
|
+
stage: 'dev',
|
|
178
|
+
severity: 'warning',
|
|
179
|
+
description: 'Auth doctor check failed (run npx @factiii/auth doctor for details)',
|
|
180
|
+
scan: async (_config, rootDir) => {
|
|
181
|
+
// Skip if auth models not yet initialized
|
|
182
|
+
if (!hasAuthModels(rootDir))
|
|
183
|
+
return false;
|
|
184
|
+
const result = runSilent('npx @factiii/auth doctor', rootDir);
|
|
185
|
+
return !result.success;
|
|
186
|
+
},
|
|
187
|
+
fix: async (_config, rootDir) => {
|
|
188
|
+
// Run doctor with output visible so user can see what's wrong
|
|
189
|
+
try {
|
|
190
|
+
(0, child_process_1.execSync)('npx @factiii/auth doctor', {
|
|
191
|
+
cwd: rootDir,
|
|
192
|
+
stdio: 'inherit',
|
|
193
|
+
});
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
console.log(' Doctor found issues — review output above');
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
manualFix: 'Run: npx @factiii/auth doctor',
|
|
202
|
+
},
|
|
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
|
+
];
|
|
235
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/auth/scanfix/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Validation Scanfixes (Staging/Prod)
|
|
3
|
+
*
|
|
4
|
+
* Validates that auth environment variables are properly
|
|
5
|
+
* configured on staging and production servers.
|
|
6
|
+
*/
|
|
7
|
+
import type { Fix } from '../../../../types/index.js';
|
|
8
|
+
export declare const validateFixes: Fix[];
|
|
9
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/auth/scanfix/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAkBrE,eAAO,MAAM,aAAa,EAAE,GAAG,EAiG9B,CAAC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Auth Validation Scanfixes (Staging/Prod)
|
|
4
|
+
*
|
|
5
|
+
* Validates that auth environment variables are properly
|
|
6
|
+
* configured on staging and production servers.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.validateFixes = void 0;
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const config_helpers_js_1 = require("../../../../utils/config-helpers.js");
|
|
46
|
+
/**
|
|
47
|
+
* Check if an env file has a variable set (non-empty, non-EXAMPLE)
|
|
48
|
+
*/
|
|
49
|
+
function envFileHasVar(envFilePath, varName) {
|
|
50
|
+
if (!fs.existsSync(envFilePath))
|
|
51
|
+
return false;
|
|
52
|
+
const content = fs.readFileSync(envFilePath, 'utf8');
|
|
53
|
+
const regex = new RegExp('^' + varName + '\\s*=\\s*(.+)$', 'm');
|
|
54
|
+
const match = content.match(regex);
|
|
55
|
+
if (!match || !match[1])
|
|
56
|
+
return false;
|
|
57
|
+
const value = match[1].trim();
|
|
58
|
+
return value.length > 0 && !value.toUpperCase().startsWith('EXAMPLE');
|
|
59
|
+
}
|
|
60
|
+
exports.validateFixes = [
|
|
61
|
+
{
|
|
62
|
+
id: 'auth-env-jwt-staging',
|
|
63
|
+
stage: 'staging',
|
|
64
|
+
severity: 'critical',
|
|
65
|
+
description: 'JWT_SECRET not set in .env.staging (auth will not work)',
|
|
66
|
+
scan: async (_config, rootDir) => {
|
|
67
|
+
const envPath = path.join(rootDir, '.env.staging');
|
|
68
|
+
return !envFileHasVar(envPath, 'JWT_SECRET');
|
|
69
|
+
},
|
|
70
|
+
fix: async (config, rootDir) => {
|
|
71
|
+
try {
|
|
72
|
+
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
|
|
73
|
+
const vault = new AnsibleVaultSecrets({
|
|
74
|
+
vault_path: config.ansible?.vault_path ?? (0, config_helpers_js_1.getDefaultVaultPath)(config),
|
|
75
|
+
vault_password_file: config.ansible?.vault_password_file,
|
|
76
|
+
rootDir,
|
|
77
|
+
});
|
|
78
|
+
const jwtSecret = await vault.getSecret('JWT_SECRET');
|
|
79
|
+
if (!jwtSecret) {
|
|
80
|
+
console.log(' JWT_SECRET not in vault — run: npx stack fix --secrets');
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
// Append to .env.staging
|
|
84
|
+
const envPath = path.join(rootDir, '.env.staging');
|
|
85
|
+
let content = '';
|
|
86
|
+
if (fs.existsSync(envPath)) {
|
|
87
|
+
content = fs.readFileSync(envPath, 'utf8');
|
|
88
|
+
}
|
|
89
|
+
if (content.includes('JWT_SECRET=')) {
|
|
90
|
+
// Replace existing (empty or EXAMPLE) value
|
|
91
|
+
content = content.replace(/^JWT_SECRET\s*=.*$/m, 'JWT_SECRET=' + jwtSecret);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
content = content.trimEnd() + '\nJWT_SECRET=' + jwtSecret + '\n';
|
|
95
|
+
}
|
|
96
|
+
fs.writeFileSync(envPath, content, 'utf8');
|
|
97
|
+
console.log(' [OK] Set JWT_SECRET in .env.staging from vault');
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
console.log(' Error: ' + (e instanceof Error ? e.message : String(e)));
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
manualFix: 'Add JWT_SECRET to .env.staging or run: npx stack fix --secrets && npx stack fix --staging',
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
id: 'auth-env-jwt-prod',
|
|
109
|
+
stage: 'prod',
|
|
110
|
+
severity: 'critical',
|
|
111
|
+
description: 'JWT_SECRET not set in .env.prod (auth will not work)',
|
|
112
|
+
scan: async (_config, rootDir) => {
|
|
113
|
+
const envPath = path.join(rootDir, '.env.prod');
|
|
114
|
+
return !envFileHasVar(envPath, 'JWT_SECRET');
|
|
115
|
+
},
|
|
116
|
+
fix: async (config, rootDir) => {
|
|
117
|
+
try {
|
|
118
|
+
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
|
|
119
|
+
const vault = new AnsibleVaultSecrets({
|
|
120
|
+
vault_path: config.ansible?.vault_path ?? (0, config_helpers_js_1.getDefaultVaultPath)(config),
|
|
121
|
+
vault_password_file: config.ansible?.vault_password_file,
|
|
122
|
+
rootDir,
|
|
123
|
+
});
|
|
124
|
+
const jwtSecret = await vault.getSecret('JWT_SECRET');
|
|
125
|
+
if (!jwtSecret) {
|
|
126
|
+
console.log(' JWT_SECRET not in vault — run: npx stack fix --secrets');
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
// Append to .env.prod
|
|
130
|
+
const envPath = path.join(rootDir, '.env.prod');
|
|
131
|
+
let content = '';
|
|
132
|
+
if (fs.existsSync(envPath)) {
|
|
133
|
+
content = fs.readFileSync(envPath, 'utf8');
|
|
134
|
+
}
|
|
135
|
+
if (content.includes('JWT_SECRET=')) {
|
|
136
|
+
content = content.replace(/^JWT_SECRET\s*=.*$/m, 'JWT_SECRET=' + jwtSecret);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
content = content.trimEnd() + '\nJWT_SECRET=' + jwtSecret + '\n';
|
|
140
|
+
}
|
|
141
|
+
fs.writeFileSync(envPath, content, 'utf8');
|
|
142
|
+
console.log(' [OK] Set JWT_SECRET in .env.prod from vault');
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
catch (e) {
|
|
146
|
+
console.log(' Error: ' + (e instanceof Error ? e.message : String(e)));
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
manualFix: 'Add JWT_SECRET to .env.prod or run: npx stack fix --secrets && npx stack fix --prod',
|
|
151
|
+
},
|
|
152
|
+
];
|
|
153
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/auth/scanfix/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAyBvF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAE5E,KAAK,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC;CACrE;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CAClC;AAMD;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,cAStB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"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"}
|
package/dist/plugins/index.js
CHANGED
|
@@ -189,6 +189,15 @@ try {
|
|
|
189
189
|
catch {
|
|
190
190
|
// Plugin not available
|
|
191
191
|
}
|
|
192
|
+
// Auth addon (@factiii/auth integration)
|
|
193
|
+
try {
|
|
194
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
195
|
+
const AuthAddon = require('./addons/auth/index').default;
|
|
196
|
+
exports.registry.addons['auth'] = AuthAddon;
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
// Plugin not available
|
|
200
|
+
}
|
|
192
201
|
// ============================================================
|
|
193
202
|
// REGISTRATION FUNCTIONS
|
|
194
203
|
// ============================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,GAAG,EAAiB,MAAM,4BAA4B,CAAC;AAWrE,eAAO,MAAM,cAAc,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,GAAG,EAAiB,MAAM,4BAA4B,CAAC;AAWrE,eAAO,MAAM,cAAc,EAAE,GAAG,EAoH/B,CAAC"}
|
|
@@ -101,7 +101,11 @@ exports.bootstrapFixes = [
|
|
|
101
101
|
const content = '# Local machine config (gitignored - each developer has their own)\n' +
|
|
102
102
|
'# Generated by: npx stack\n' +
|
|
103
103
|
'\n' +
|
|
104
|
-
'dev_os: ' + devOS + '\n'
|
|
104
|
+
'dev_os: ' + devOS + '\n' +
|
|
105
|
+
'\n' +
|
|
106
|
+
'# Dev-only mode (default: true)\n' +
|
|
107
|
+
'# Set to false to unlock staging/prod stages\n' +
|
|
108
|
+
'dev_only: true\n';
|
|
105
109
|
fs.writeFileSync(localPath, content, 'utf8');
|
|
106
110
|
// Also ensure gitignored
|
|
107
111
|
(0, gitignore_js_1.ensureGitignored)(rootDir, config_files_js_1.STACK_LOCAL_FILENAME);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/bootstrap.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AAEzB,2EAAkL;AAClL,iEAAgF;AAGhF;;GAEG;AACH,SAAS,WAAW;IAClB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IACnD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAEY,QAAA,cAAc,GAAU;IACnC,kEAAkE;IAClE;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,KAAK,GAAG,uCAAqB,GAAG,YAAY;QACzD,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAA,oCAAkB,EAAC,OAAO,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACvE,kDAAkD;YAClD,MAAM,EAAE,qBAAqB,EAAE,GAAG,wDAAa,8CAA8C,GAAC,CAAC;YAC/F,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,SAAS,EAAE,oBAAoB;KAChC;IAED;QACE,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,KAAK,GAAG,qCAAmB,GAAG,YAAY;QACvD,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAA,kCAAgB,EAAC,OAAO,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACvE,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,+CAA+C,GAAC,CAAC;YAC9F,MAAM,mBAAmB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,EAAE,oBAAoB;KAChC;IAED;QACE,EAAE,EAAE,yBAAyB;QAC7B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,KAAK,GAAG,sCAAoB,GAAG,oCAAoC;QAChF,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAA,mCAAiB,EAAC,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACvE,MAAM,SAAS,GAAG,IAAA,mCAAiB,EAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;YAC5B,MAAM,OAAO,GACX,sEAAsE;gBACtE,6BAA6B;gBAC7B,IAAI;gBACJ,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/bootstrap.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AAEzB,2EAAkL;AAClL,iEAAgF;AAGhF;;GAEG;AACH,SAAS,WAAW;IAClB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IACnD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAEY,QAAA,cAAc,GAAU;IACnC,kEAAkE;IAClE;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,KAAK,GAAG,uCAAqB,GAAG,YAAY;QACzD,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAA,oCAAkB,EAAC,OAAO,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACvE,kDAAkD;YAClD,MAAM,EAAE,qBAAqB,EAAE,GAAG,wDAAa,8CAA8C,GAAC,CAAC;YAC/F,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,SAAS,EAAE,oBAAoB;KAChC;IAED;QACE,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,KAAK,GAAG,qCAAmB,GAAG,YAAY;QACvD,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAA,kCAAgB,EAAC,OAAO,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACvE,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,+CAA+C,GAAC,CAAC;YAC9F,MAAM,mBAAmB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,EAAE,oBAAoB;KAChC;IAED;QACE,EAAE,EAAE,yBAAyB;QAC7B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,KAAK,GAAG,sCAAoB,GAAG,oCAAoC;QAChF,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAA,mCAAiB,EAAC,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACvE,MAAM,SAAS,GAAG,IAAA,mCAAiB,EAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;YAC5B,MAAM,OAAO,GACX,sEAAsE;gBACtE,6BAA6B;gBAC7B,IAAI;gBACJ,UAAU,GAAG,KAAK,GAAG,IAAI;gBACzB,IAAI;gBACJ,mCAAmC;gBACnC,gDAAgD;gBAChD,kBAAkB,CAAC;YACrB,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7C,yBAAyB;YACzB,IAAA,+BAAgB,EAAC,OAAO,EAAE,sCAAoB,CAAC,CAAC;YAChD,IAAA,+BAAgB,EAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,sCAAoB,GAAG,YAAY,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;YACnF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,EAAE,SAAS,GAAG,sCAAoB,GAAG,mCAAmC;KAClF;IAED,iEAAiE;IACjE;QACE,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,KAAK,GAAG,sCAAoB,GAAG,oBAAoB;QAChE,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,oFAAoF;YACpF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAA,mCAAiB,EAAC,OAAO,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC7D,OAAO,CAAC,IAAA,2BAAY,EAAC,OAAO,EAAE,sCAAoB,CAAC,CAAC;QACtD,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACvE,IAAA,+BAAgB,EAAC,OAAO,EAAE,sCAAoB,CAAC,CAAC;YAChD,IAAA,+BAAgB,EAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,EAAE,MAAM,GAAG,sCAAoB,GAAG,gBAAgB;KAC5D;IAED;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,mCAAmC;QAChD,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC1C,OAAO,CAAC,IAAA,2BAAY,EAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAChD,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACvE,IAAA,+BAAgB,EAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,EAAE,gCAAgC;KAC5C;IAED;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC1C,OAAO,CAAC,IAAA,2BAAY,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC7C,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACvE,IAAA,+BAAgB,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,EAAE,6BAA6B;KACzC;CACF,CAAC"}
|