faf-cli 2.4.8 → 2.4.9

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.
Files changed (129) hide show
  1. package/dist/cli.js +0 -0
  2. package/dist/commands/ai-analyze.js +32 -35
  3. package/dist/commands/ai-analyze.js.map +1 -1
  4. package/dist/commands/ai-enhance.js +19 -22
  5. package/dist/commands/ai-enhance.js.map +1 -1
  6. package/dist/commands/audit.js +18 -21
  7. package/dist/commands/audit.js.map +1 -1
  8. package/dist/commands/auto.js +30 -33
  9. package/dist/commands/auto.js.map +1 -1
  10. package/dist/commands/chat.js +2 -2
  11. package/dist/commands/chat.js.map +1 -1
  12. package/dist/commands/convert.js +13 -16
  13. package/dist/commands/convert.js.map +1 -1
  14. package/dist/commands/doctor.js +11 -14
  15. package/dist/commands/doctor.js.map +1 -1
  16. package/dist/commands/edit-helper.js +23 -26
  17. package/dist/commands/edit-helper.js.map +1 -1
  18. package/dist/commands/enhance-real.js +46 -46
  19. package/dist/commands/enhance-real.js.map +1 -1
  20. package/dist/commands/faq.js +12 -12
  21. package/dist/commands/faq.js.map +1 -1
  22. package/dist/commands/formats.js +6 -9
  23. package/dist/commands/formats.js.map +1 -1
  24. package/dist/commands/index.js +11 -14
  25. package/dist/commands/index.js.map +1 -1
  26. package/dist/commands/lint.js +18 -21
  27. package/dist/commands/lint.js.map +1 -1
  28. package/dist/commands/notifications.js +3 -6
  29. package/dist/commands/notifications.js.map +1 -1
  30. package/dist/commands/quick.js +18 -21
  31. package/dist/commands/quick.js.map +1 -1
  32. package/dist/commands/score-v3.js +28 -31
  33. package/dist/commands/score-v3.js.map +1 -1
  34. package/dist/commands/score.js +26 -29
  35. package/dist/commands/score.js.map +1 -1
  36. package/dist/commands/show.js +25 -28
  37. package/dist/commands/show.js.map +1 -1
  38. package/dist/commands/sync.js +17 -20
  39. package/dist/commands/sync.js.map +1 -1
  40. package/dist/commands/trust.js +31 -31
  41. package/dist/commands/trust.js.map +1 -1
  42. package/dist/commands/verify.js +21 -21
  43. package/dist/commands/verify.js.map +1 -1
  44. package/dist/commands/version.js +6 -9
  45. package/dist/commands/version.js.map +1 -1
  46. package/dist/commands/vibe.js +2 -5
  47. package/dist/commands/vibe.js.map +1 -1
  48. package/dist/commands/welcome.js +15 -18
  49. package/dist/commands/welcome.js.map +1 -1
  50. package/dist/tests/test-chrome-fuzzy.js +7 -10
  51. package/dist/tests/test-chrome-fuzzy.js.map +1 -1
  52. package/dist/utils/announcements.js +27 -27
  53. package/dist/utils/announcements.js.map +1 -1
  54. package/dist/utils/chrome-extension-confirmer.js +5 -5
  55. package/dist/utils/chrome-extension-confirmer.js.map +1 -1
  56. package/dist/utils/color-utils.d.ts +6 -6
  57. package/dist/utils/color-utils.js +20 -23
  58. package/dist/utils/color-utils.js.map +1 -1
  59. package/dist/utils/email-opt-in.js +22 -22
  60. package/dist/utils/email-opt-in.js.map +1 -1
  61. package/dist/utils/feedback-messages.d.ts +1 -1
  62. package/dist/utils/feedback-messages.d.ts.map +1 -1
  63. package/dist/utils/feedback-messages.js +32 -35
  64. package/dist/utils/feedback-messages.js.map +1 -1
  65. package/dist/utils/score-header.js +7 -10
  66. package/dist/utils/score-header.js.map +1 -1
  67. package/dist/utils/update-checker.js +2 -2
  68. package/dist/utils/update-checker.js.map +1 -1
  69. package/package.json +2 -2
  70. package/dist/commands/about.d.ts +0 -10
  71. package/dist/commands/about.d.ts.map +0 -1
  72. package/dist/commands/about.js +0 -249
  73. package/dist/commands/about.js.map +0 -1
  74. package/dist/commands/art.d.ts +0 -10
  75. package/dist/commands/art.d.ts.map +0 -1
  76. package/dist/commands/art.js +0 -130
  77. package/dist/commands/art.js.map +0 -1
  78. package/dist/commands/email.d.ts +0 -23
  79. package/dist/commands/email.d.ts.map +0 -1
  80. package/dist/commands/email.js +0 -183
  81. package/dist/commands/email.js.map +0 -1
  82. package/dist/commands/license-config.d.ts +0 -10
  83. package/dist/commands/license-config.d.ts.map +0 -1
  84. package/dist/commands/license-config.js +0 -140
  85. package/dist/commands/license-config.js.map +0 -1
  86. package/dist/commands/license.d.ts +0 -7
  87. package/dist/commands/license.d.ts.map +0 -1
  88. package/dist/commands/license.js +0 -60
  89. package/dist/commands/license.js.map +0 -1
  90. package/dist/commands/submit-art.d.ts +0 -25
  91. package/dist/commands/submit-art.d.ts.map +0 -1
  92. package/dist/commands/submit-art.js +0 -348
  93. package/dist/commands/submit-art.js.map +0 -1
  94. package/dist/commands/subscribe.d.ts +0 -12
  95. package/dist/commands/subscribe.d.ts.map +0 -1
  96. package/dist/commands/subscribe.js +0 -38
  97. package/dist/commands/subscribe.js.map +0 -1
  98. package/dist/engine/engine-loader.d.ts +0 -24
  99. package/dist/engine/engine-loader.d.ts.map +0 -1
  100. package/dist/engine/engine-loader.js +0 -156
  101. package/dist/engine/engine-loader.js.map +0 -1
  102. package/dist/engine-bridge.d.ts +0 -38
  103. package/dist/engine-bridge.d.ts.map +0 -1
  104. package/dist/engine-bridge.js +0 -71
  105. package/dist/engine-bridge.js.map +0 -1
  106. package/dist/engine-mk2/mk2-core.d.ts +0 -38
  107. package/dist/engine-mk2/mk2-core.d.ts.map +0 -1
  108. package/dist/engine-mk2/mk2-core.js +0 -217
  109. package/dist/engine-mk2/mk2-core.js.map +0 -1
  110. package/dist/license/license-config.d.ts +0 -59
  111. package/dist/license/license-config.d.ts.map +0 -1
  112. package/dist/license/license-config.js +0 -263
  113. package/dist/license/license-config.js.map +0 -1
  114. package/dist/license/license-controller.d.ts +0 -41
  115. package/dist/license/license-controller.d.ts.map +0 -1
  116. package/dist/license/license-controller.js +0 -243
  117. package/dist/license/license-controller.js.map +0 -1
  118. package/dist/utils/art-gallery.d.ts +0 -66
  119. package/dist/utils/art-gallery.d.ts.map +0 -1
  120. package/dist/utils/art-gallery.js +0 -320
  121. package/dist/utils/art-gallery.js.map +0 -1
  122. package/dist/utils/error-handler.d.ts +0 -27
  123. package/dist/utils/error-handler.d.ts.map +0 -1
  124. package/dist/utils/error-handler.js +0 -152
  125. package/dist/utils/error-handler.js.map +0 -1
  126. package/dist/utils/score-indicators.d.ts +0 -47
  127. package/dist/utils/score-indicators.d.ts.map +0 -1
  128. package/dist/utils/score-indicators.js +0 -197
  129. package/dist/utils/score-indicators.js.map +0 -1
@@ -1,59 +0,0 @@
1
- /**
2
- * License Configuration - Dynamically configurable limits
3
- * Can be updated without code changes
4
- */
5
- interface TierConfig {
6
- scoreLimit: number;
7
- enabled: boolean;
8
- features: string[];
9
- message?: string;
10
- }
11
- interface LicenseConfig {
12
- tiers: {
13
- free: TierConfig;
14
- developer: TierConfig;
15
- professional: TierConfig;
16
- enterprise: TierConfig;
17
- championship: TierConfig;
18
- };
19
- championshipMode: {
20
- enabled: boolean;
21
- duration: number;
22
- limit: number;
23
- };
24
- messaging: {
25
- upgradeCTA: boolean;
26
- showLimitWarnings: boolean;
27
- };
28
- }
29
- declare class LicenseConfigManager {
30
- private static instance;
31
- private config;
32
- private configPath;
33
- private constructor();
34
- static getInstance(): LicenseConfigManager;
35
- private findConfigFile;
36
- private loadConfig;
37
- private getDefaultConfig;
38
- private getEnvOverrides;
39
- private mergeConfigs;
40
- getScoreLimit(tier: string): number;
41
- isTierEnabled(tier: string): boolean;
42
- getTierConfig(tier: string): TierConfig | null;
43
- isChampionshipModeEnabled(): boolean;
44
- getChampionshipDuration(): number;
45
- shouldShowUpgradeMessages(): boolean;
46
- updateTierLimit(tier: string, limit: number): void;
47
- enableTier(tier: string): void;
48
- disableTier(tier: string): void;
49
- saveConfig(): void;
50
- setTestConfig(config: Partial<LicenseConfig>): void;
51
- resetToDefaults(): void;
52
- getFullConfig(): LicenseConfig;
53
- }
54
- export declare const licenseConfig: LicenseConfigManager;
55
- export declare function configureLicenseLimits(limits: {
56
- [key: string]: number;
57
- }): void;
58
- export {};
59
- //# sourceMappingURL=license-config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"license-config.d.ts","sourceRoot":"","sources":["../../src/license/license-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,aAAa;IACrB,KAAK,EAAE;QACL,IAAI,EAAE,UAAU,CAAC;QACjB,SAAS,EAAE,UAAU,CAAC;QACtB,YAAY,EAAE,UAAU,CAAC;QACzB,UAAU,EAAE,UAAU,CAAC;QACvB,YAAY,EAAE,UAAU,CAAC;KAC1B,CAAC;IACF,gBAAgB,EAAE;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,SAAS,EAAE;QACT,UAAU,EAAE,OAAO,CAAC;QACpB,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH;AAED,cAAM,oBAAoB;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuB;IAC9C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO;IAKP,MAAM,CAAC,WAAW,IAAI,oBAAoB;IAO1C,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,gBAAgB;IA0CxB,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,YAAY;IA8BpB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQnC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKpC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAK9C,yBAAyB,IAAI,OAAO;IAIpC,uBAAuB,IAAI,MAAM;IAIjC,yBAAyB,IAAI,OAAO;IAMpC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOlD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO9B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO/B,UAAU,IAAI,IAAI;IAclB,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAInD,eAAe,IAAI,IAAI;IAKvB,aAAa,IAAI,aAAa;CAG/B;AAED,eAAO,MAAM,aAAa,sBAAqC,CAAC;AAGhE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,IAAI,CAK9E"}
@@ -1,263 +0,0 @@
1
- "use strict";
2
- /**
3
- * License Configuration - Dynamically configurable limits
4
- * Can be updated without code changes
5
- */
6
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
- if (k2 === undefined) k2 = k;
8
- var desc = Object.getOwnPropertyDescriptor(m, k);
9
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
- desc = { enumerable: true, get: function() { return m[k]; } };
11
- }
12
- Object.defineProperty(o, k2, desc);
13
- }) : (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- o[k2] = m[k];
16
- }));
17
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
- Object.defineProperty(o, "default", { enumerable: true, value: v });
19
- }) : function(o, v) {
20
- o["default"] = v;
21
- });
22
- var __importStar = (this && this.__importStar) || (function () {
23
- var ownKeys = function(o) {
24
- ownKeys = Object.getOwnPropertyNames || function (o) {
25
- var ar = [];
26
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
- return ar;
28
- };
29
- return ownKeys(o);
30
- };
31
- return function (mod) {
32
- if (mod && mod.__esModule) return mod;
33
- var result = {};
34
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
- __setModuleDefault(result, mod);
36
- return result;
37
- };
38
- })();
39
- Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.licenseConfig = void 0;
41
- exports.configureLicenseLimits = configureLicenseLimits;
42
- const fs = __importStar(require("fs"));
43
- const path = __importStar(require("path"));
44
- class LicenseConfigManager {
45
- static instance;
46
- config;
47
- configPath;
48
- constructor() {
49
- this.configPath = this.findConfigFile();
50
- this.config = this.loadConfig();
51
- }
52
- static getInstance() {
53
- if (!this.instance) {
54
- this.instance = new LicenseConfigManager();
55
- }
56
- return this.instance;
57
- }
58
- findConfigFile() {
59
- // Check for config file in order of precedence
60
- const locations = [
61
- process.env.FAF_LICENSE_CONFIG, // Environment variable
62
- path.join(process.cwd(), '.faf-license-config.json'), // Project directory
63
- path.join(require('os').homedir(), '.faf', 'license-config.json'), // User home
64
- '/etc/faf/license-config.json' // System-wide
65
- ].filter(Boolean);
66
- for (const location of locations) {
67
- if (location && fs.existsSync(location)) {
68
- return location;
69
- }
70
- }
71
- // Return default location
72
- return path.join(require('os').homedir(), '.faf', 'license-config.json');
73
- }
74
- loadConfig() {
75
- // Try environment variable overrides first
76
- const envConfig = this.getEnvOverrides();
77
- // Try loading from file
78
- let fileConfig = {};
79
- try {
80
- if (fs.existsSync(this.configPath)) {
81
- const content = fs.readFileSync(this.configPath, 'utf-8');
82
- fileConfig = JSON.parse(content);
83
- }
84
- }
85
- catch (error) {
86
- console.warn('Failed to load license config file, using defaults');
87
- }
88
- // Merge with defaults
89
- return this.mergeConfigs(this.getDefaultConfig(), fileConfig, envConfig);
90
- }
91
- getDefaultConfig() {
92
- return {
93
- tiers: {
94
- free: {
95
- scoreLimit: 85, // Can be changed!
96
- enabled: true,
97
- features: ['basic'],
98
- message: "You're doing great! Unlock more with an upgrade"
99
- },
100
- developer: {
101
- scoreLimit: 90,
102
- enabled: true,
103
- features: ['basic', 'cache', 'chrome-extension']
104
- },
105
- professional: {
106
- scoreLimit: 95,
107
- enabled: true,
108
- features: ['basic', 'cache', 'chrome-extension', 'advanced-scoring', 'compiler']
109
- },
110
- enterprise: {
111
- scoreLimit: 100,
112
- enabled: true,
113
- features: ['all']
114
- },
115
- championship: {
116
- scoreLimit: 100,
117
- enabled: true,
118
- features: ['all', 'priority-support', 'custom-features']
119
- }
120
- },
121
- championshipMode: {
122
- enabled: true,
123
- duration: 60, // minutes
124
- limit: 100
125
- },
126
- messaging: {
127
- upgradeCTA: true,
128
- showLimitWarnings: true
129
- }
130
- };
131
- }
132
- getEnvOverrides() {
133
- const overrides = {};
134
- // Check environment variables for overrides
135
- // FAF_FREE_LIMIT=75 sets free tier to 75%
136
- if (process.env.FAF_FREE_LIMIT) {
137
- overrides.tiers = overrides.tiers || {};
138
- overrides.tiers.free = overrides.tiers.free || {};
139
- overrides.tiers.free.scoreLimit = parseInt(process.env.FAF_FREE_LIMIT);
140
- }
141
- // FAF_FREE_ENABLED=false disables free tier
142
- if (process.env.FAF_FREE_ENABLED === 'false') {
143
- overrides.tiers = overrides.tiers || {};
144
- overrides.tiers.free = overrides.tiers.free || {};
145
- overrides.tiers.free.enabled = false;
146
- }
147
- // FAF_CHAMPIONSHIP_MODE=false disables championship mode
148
- if (process.env.FAF_CHAMPIONSHIP_MODE === 'false') {
149
- overrides.championshipMode = overrides.championshipMode || {};
150
- overrides.championshipMode.enabled = false;
151
- }
152
- // FAF_UPGRADE_CTA=false disables upgrade messages
153
- if (process.env.FAF_UPGRADE_CTA === 'false') {
154
- overrides.messaging = overrides.messaging || {};
155
- overrides.messaging.upgradeCTA = false;
156
- }
157
- return overrides;
158
- }
159
- mergeConfigs(...configs) {
160
- // Deep merge configs, later ones override earlier ones
161
- const result = this.getDefaultConfig();
162
- for (const config of configs) {
163
- if (config.tiers) {
164
- Object.keys(config.tiers).forEach(tier => {
165
- if (config.tiers[tier]) {
166
- result.tiers[tier] = {
167
- ...result.tiers[tier],
168
- ...config.tiers[tier]
169
- };
170
- }
171
- });
172
- }
173
- if (config.championshipMode) {
174
- result.championshipMode = { ...result.championshipMode, ...config.championshipMode };
175
- }
176
- if (config.messaging) {
177
- result.messaging = { ...result.messaging, ...config.messaging };
178
- }
179
- }
180
- return result;
181
- }
182
- // Public API
183
- getScoreLimit(tier) {
184
- const tierConfig = this.config.tiers[tier];
185
- if (!tierConfig || !tierConfig.enabled) {
186
- return 0;
187
- }
188
- return tierConfig.scoreLimit;
189
- }
190
- isTierEnabled(tier) {
191
- const tierConfig = this.config.tiers[tier];
192
- return tierConfig?.enabled || false;
193
- }
194
- getTierConfig(tier) {
195
- const tierConfig = this.config.tiers[tier];
196
- return tierConfig || null;
197
- }
198
- isChampionshipModeEnabled() {
199
- return this.config.championshipMode.enabled;
200
- }
201
- getChampionshipDuration() {
202
- return this.config.championshipMode.duration;
203
- }
204
- shouldShowUpgradeMessages() {
205
- return this.config.messaging.upgradeCTA;
206
- }
207
- // Dynamic updates
208
- updateTierLimit(tier, limit) {
209
- if (this.config.tiers[tier]) {
210
- this.config.tiers[tier].scoreLimit = limit;
211
- this.saveConfig();
212
- }
213
- }
214
- enableTier(tier) {
215
- if (this.config.tiers[tier]) {
216
- this.config.tiers[tier].enabled = true;
217
- this.saveConfig();
218
- }
219
- }
220
- disableTier(tier) {
221
- if (this.config.tiers[tier]) {
222
- this.config.tiers[tier].enabled = false;
223
- this.saveConfig();
224
- }
225
- }
226
- saveConfig() {
227
- try {
228
- const dir = path.dirname(this.configPath);
229
- if (!fs.existsSync(dir)) {
230
- fs.mkdirSync(dir, { recursive: true });
231
- }
232
- fs.writeFileSync(this.configPath, JSON.stringify(this.config, null, 2), 'utf-8');
233
- }
234
- catch (error) {
235
- console.warn('Failed to save license config');
236
- }
237
- }
238
- // Testing/Admin functions
239
- setTestConfig(config) {
240
- this.config = this.mergeConfigs(this.config, config);
241
- }
242
- resetToDefaults() {
243
- this.config = this.getDefaultConfig();
244
- this.saveConfig();
245
- }
246
- getFullConfig() {
247
- return this.config;
248
- }
249
- }
250
- exports.licenseConfig = LicenseConfigManager.getInstance();
251
- // CLI helpers for easy configuration
252
- function configureLicenseLimits(limits) {
253
- const config = exports.licenseConfig;
254
- Object.entries(limits).forEach(([tier, limit]) => {
255
- config.updateTierLimit(tier, limit);
256
- });
257
- }
258
- // Usage examples:
259
- // FAF_FREE_LIMIT=75 faf score # Free tier at 75%
260
- // FAF_FREE_LIMIT=90 faf score # Free tier at 90%
261
- // FAF_FREE_ENABLED=false faf score # No free tier
262
- // FAF_CHAMPIONSHIP_MODE=false faf # No championship mode
263
- //# sourceMappingURL=license-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"license-config.js","sourceRoot":"","sources":["../../src/license/license-config.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- /**
2
- * License Controller for FAF Engine
3
- * Controls which engine (MK-1/MK-2) and features are available
4
- */
5
- export type LicenseType = 'free' | 'developer' | 'professional' | 'enterprise' | 'championship';
6
- export type EngineVersion = 'MK-1' | 'MK-2';
7
- interface License {
8
- type: LicenseType;
9
- engine: EngineVersion;
10
- scoreLimit: number;
11
- features: string[];
12
- expiresAt?: Date;
13
- issuedTo?: string;
14
- key?: string;
15
- }
16
- export declare class LicenseController {
17
- private static instance;
18
- private currentLicense;
19
- private licensePath;
20
- private constructor();
21
- static getInstance(): LicenseController;
22
- private findLicenseFile;
23
- private loadLicense;
24
- private validateKey;
25
- private verifySignature;
26
- private buildLicense;
27
- private getFreeTier;
28
- private getChampionshipTier;
29
- getLicense(): License;
30
- getEngine(): EngineVersion;
31
- getScoreLimit(): number;
32
- hasFeature(feature: string): boolean;
33
- canUseEngine(engine: EngineVersion): boolean;
34
- setLicense(key: string): boolean;
35
- generateTrialKey(email: string, days?: number): string;
36
- private hash;
37
- getInfo(): string;
38
- }
39
- export declare const licenseController: LicenseController;
40
- export {};
41
- //# sourceMappingURL=license-controller.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"license-controller.d.ts","sourceRoot":"","sources":["../../src/license/license-controller.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,YAAY,GAAG,cAAc,CAAC;AAChG,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C,UAAU,OAAO;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoB;IAC3C,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IAMP,MAAM,CAAC,WAAW,IAAI,iBAAiB;IAOvC,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,WAAW;IAgCnB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,mBAAmB;IAW3B,UAAU,IAAI,OAAO;IAIrB,SAAS,IAAI,aAAa;IAI1B,aAAa,IAAI,MAAM;IAIvB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKpC,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAQ5C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAoBhC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,GAAG,MAAM;IAM1D,OAAO,CAAC,IAAI;IAIZ,OAAO,IAAI,MAAM;CAmBlB;AAGD,eAAO,MAAM,iBAAiB,mBAAkC,CAAC"}
@@ -1,243 +0,0 @@
1
- "use strict";
2
- /**
3
- * License Controller for FAF Engine
4
- * Controls which engine (MK-1/MK-2) and features are available
5
- */
6
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
- if (k2 === undefined) k2 = k;
8
- var desc = Object.getOwnPropertyDescriptor(m, k);
9
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
- desc = { enumerable: true, get: function() { return m[k]; } };
11
- }
12
- Object.defineProperty(o, k2, desc);
13
- }) : (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- o[k2] = m[k];
16
- }));
17
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
- Object.defineProperty(o, "default", { enumerable: true, value: v });
19
- }) : function(o, v) {
20
- o["default"] = v;
21
- });
22
- var __importStar = (this && this.__importStar) || (function () {
23
- var ownKeys = function(o) {
24
- ownKeys = Object.getOwnPropertyNames || function (o) {
25
- var ar = [];
26
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
- return ar;
28
- };
29
- return ownKeys(o);
30
- };
31
- return function (mod) {
32
- if (mod && mod.__esModule) return mod;
33
- var result = {};
34
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
- __setModuleDefault(result, mod);
36
- return result;
37
- };
38
- })();
39
- Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.licenseController = exports.LicenseController = void 0;
41
- const crypto = __importStar(require("crypto"));
42
- const fs = __importStar(require("fs"));
43
- const path = __importStar(require("path"));
44
- const os = __importStar(require("os"));
45
- class LicenseController {
46
- static instance;
47
- currentLicense;
48
- licensePath;
49
- constructor() {
50
- // Check for license file in order of precedence
51
- this.licensePath = this.findLicenseFile();
52
- this.currentLicense = this.loadLicense();
53
- }
54
- static getInstance() {
55
- if (!this.instance) {
56
- this.instance = new LicenseController();
57
- }
58
- return this.instance;
59
- }
60
- findLicenseFile() {
61
- // Check locations in order
62
- const locations = [
63
- process.env.FAF_LICENSE_FILE, // Environment variable
64
- path.join(process.cwd(), '.faf-license'), // Project directory
65
- path.join(os.homedir(), '.faf', 'license'), // User home
66
- '/etc/faf/license' // System-wide
67
- ].filter(Boolean);
68
- for (const location of locations) {
69
- if (location && fs.existsSync(location)) {
70
- return location;
71
- }
72
- }
73
- return path.join(os.homedir(), '.faf', 'license');
74
- }
75
- loadLicense() {
76
- // Check environment variable first
77
- if (process.env.FAF_LICENSE_KEY) {
78
- return this.validateKey(process.env.FAF_LICENSE_KEY);
79
- }
80
- // Try to load from file
81
- try {
82
- if (fs.existsSync(this.licensePath)) {
83
- const content = fs.readFileSync(this.licensePath, 'utf-8');
84
- return this.validateKey(content.trim());
85
- }
86
- }
87
- catch {
88
- // Fall through to free tier
89
- }
90
- // Default to free tier
91
- return this.getFreeTier();
92
- }
93
- validateKey(key) {
94
- // Special keys for testing
95
- if (key === 'FREE')
96
- return this.getFreeTier();
97
- if (key === 'CHAMPIONSHIP-TEST')
98
- return this.getChampionshipTier();
99
- // Decode license key (format: TYPE-ENGINE-EXPIRY-SIGNATURE)
100
- try {
101
- const parts = key.split('-');
102
- if (parts.length < 3)
103
- return this.getFreeTier();
104
- const [type, engine, expiry, ...signature] = parts;
105
- // Verify signature
106
- if (!this.verifySignature(key)) {
107
- return this.getFreeTier();
108
- }
109
- // Check expiry
110
- if (expiry !== 'NEVER') {
111
- const expiryDate = new Date(parseInt(expiry));
112
- if (expiryDate < new Date()) {
113
- return this.getFreeTier();
114
- }
115
- }
116
- // Return appropriate license
117
- return this.buildLicense(type, engine);
118
- }
119
- catch {
120
- return this.getFreeTier();
121
- }
122
- }
123
- verifySignature(key) {
124
- // In production, verify against your signing key
125
- // For now, simple validation
126
- return key.includes('-') && key.length > 10;
127
- }
128
- buildLicense(type, engine) {
129
- const licenses = {
130
- free: this.getFreeTier(),
131
- developer: {
132
- type: 'developer',
133
- engine: 'MK-1',
134
- scoreLimit: 85,
135
- features: ['basic', 'cache', 'chrome-extension']
136
- },
137
- professional: {
138
- type: 'professional',
139
- engine: 'MK-2',
140
- scoreLimit: 95,
141
- features: ['basic', 'cache', 'chrome-extension', 'advanced-scoring', 'compiler']
142
- },
143
- enterprise: {
144
- type: 'enterprise',
145
- engine: 'MK-2',
146
- scoreLimit: 100,
147
- features: ['all']
148
- },
149
- championship: this.getChampionshipTier()
150
- };
151
- const license = licenses[type];
152
- if (engine) {
153
- license.engine = engine;
154
- }
155
- return license;
156
- }
157
- getFreeTier() {
158
- return {
159
- type: 'free',
160
- engine: 'MK-1',
161
- scoreLimit: 70,
162
- features: ['basic']
163
- };
164
- }
165
- getChampionshipTier() {
166
- return {
167
- type: 'championship',
168
- engine: 'MK-2',
169
- scoreLimit: 100,
170
- features: ['all', 'priority-support', 'custom-features']
171
- };
172
- }
173
- // Public API
174
- getLicense() {
175
- return this.currentLicense;
176
- }
177
- getEngine() {
178
- return this.currentLicense.engine;
179
- }
180
- getScoreLimit() {
181
- return this.currentLicense.scoreLimit;
182
- }
183
- hasFeature(feature) {
184
- return this.currentLicense.features.includes('all') ||
185
- this.currentLicense.features.includes(feature);
186
- }
187
- canUseEngine(engine) {
188
- if (engine === 'MK-1')
189
- return true; // Everyone can use MK-1
190
- if (engine === 'MK-2') {
191
- return this.currentLicense.engine === 'MK-2';
192
- }
193
- return false;
194
- }
195
- setLicense(key) {
196
- const newLicense = this.validateKey(key);
197
- if (newLicense.type !== 'free') {
198
- this.currentLicense = newLicense;
199
- // Save to file
200
- try {
201
- const dir = path.dirname(this.licensePath);
202
- if (!fs.existsSync(dir)) {
203
- fs.mkdirSync(dir, { recursive: true });
204
- }
205
- fs.writeFileSync(this.licensePath, key, 'utf-8');
206
- return true;
207
- }
208
- catch {
209
- // Still use the license in memory
210
- return true;
211
- }
212
- }
213
- return false;
214
- }
215
- generateTrialKey(email, days = 14) {
216
- const expiry = Date.now() + (days * 24 * 60 * 60 * 1000);
217
- const key = `TRIAL-MK2-${expiry}-${this.hash(email)}`;
218
- return key;
219
- }
220
- hash(input) {
221
- return crypto.createHash('sha256').update(input).digest('hex').substring(0, 8);
222
- }
223
- getInfo() {
224
- const license = this.currentLicense;
225
- const lines = [
226
- `License Type: ${license.type.toUpperCase()}`,
227
- `Engine: ${license.engine}`,
228
- `Score Limit: ${license.scoreLimit}%`,
229
- `Features: ${license.features.join(', ')}`,
230
- ];
231
- if (license.expiresAt) {
232
- lines.push(`Expires: ${license.expiresAt.toLocaleDateString()}`);
233
- }
234
- if (license.issuedTo) {
235
- lines.push(`Issued To: ${license.issuedTo}`);
236
- }
237
- return lines.join('\n');
238
- }
239
- }
240
- exports.LicenseController = LicenseController;
241
- // Export singleton instance
242
- exports.licenseController = LicenseController.getInstance();
243
- //# sourceMappingURL=license-controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"license-controller.js","sourceRoot":"","sources":["../../src/license/license-controller.ts"],"names":[],"mappings":"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"}