@c15t/cli 1.3.3 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/context/package-manager-detection.d.ts +1 -0
- package/dist/context/package-manager-detection.d.ts.map +1 -1
- package/dist/index.mjs +72 -113
- package/dist/onboarding/index.d.ts.map +1 -1
- package/dist/onboarding/templates/config.d.ts.map +1 -1
- package/dist/onboarding/templates/layout.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager-detection.d.ts","sourceRoot":"","sources":["../../src/context/package-manager-detection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package-manager-detection.d.ts","sourceRoot":"","sources":["../../src/context/package-manager-detection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AACrD,eAAO,MAAM,0BAA0B,EAAE,cAAc,EAItD,CAAC;AACF,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAoBD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,SAAS,GAChB,OAAO,CAAC,oBAAoB,CAAC,CAqD/B"}
|
package/dist/index.mjs
CHANGED
|
@@ -18,6 +18,7 @@ import * as __WEBPACK_EXTERNAL_MODULE__c15t_backend_pkgs_db_adapters_cee37d0f__
|
|
|
18
18
|
import * as __WEBPACK_EXTERNAL_MODULE__c15t_backend_pkgs_migrations_80b6e3bd__ from "@c15t/backend/pkgs/migrations";
|
|
19
19
|
import * as __WEBPACK_EXTERNAL_MODULE_figlet__ from "figlet";
|
|
20
20
|
import * as __WEBPACK_EXTERNAL_MODULE_fs_extra_ce68a66b__ from "fs-extra";
|
|
21
|
+
import * as __WEBPACK_EXTERNAL_MODULE_package_manager_detector_detect_94d6a9ae__ from "package-manager-detector/detect";
|
|
21
22
|
function isC15TOptions(obj) {
|
|
22
23
|
return 'object' == typeof obj && null !== obj && 'appName' in obj;
|
|
23
24
|
}
|
|
@@ -331,114 +332,6 @@ async function detectProjectRoot(cwd, logger) {
|
|
|
331
332
|
return cwd;
|
|
332
333
|
}
|
|
333
334
|
}
|
|
334
|
-
async function isValidProjectRoot(dir) {
|
|
335
|
-
try {
|
|
336
|
-
await __WEBPACK_EXTERNAL_MODULE_node_fs_promises_153e37e0__["default"].access(__WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].join(dir, 'package.json'));
|
|
337
|
-
const files = await __WEBPACK_EXTERNAL_MODULE_node_fs_promises_153e37e0__["default"].readdir(dir);
|
|
338
|
-
return files.some((file)=>'node_modules' === file || 'package-lock.json' === file || 'yarn.lock' === file || 'pnpm-lock.yaml' === file);
|
|
339
|
-
} catch {
|
|
340
|
-
return false;
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
async function detectPackageManagerInDirectory(dir, files, logger) {
|
|
344
|
-
if (files.includes('pnpm-workspace.yaml')) {
|
|
345
|
-
logger?.debug('Found pnpm workspace configuration');
|
|
346
|
-
return {
|
|
347
|
-
name: 'pnpm',
|
|
348
|
-
version: await getPackageManagerVersion('pnpm')
|
|
349
|
-
};
|
|
350
|
-
}
|
|
351
|
-
if (files.includes('yarn.lock') && await isValidProjectRoot(dir)) {
|
|
352
|
-
logger?.debug('Found yarn.lock at root level');
|
|
353
|
-
return {
|
|
354
|
-
name: 'yarn',
|
|
355
|
-
version: await getPackageManagerVersion('yarn')
|
|
356
|
-
};
|
|
357
|
-
}
|
|
358
|
-
if (files.includes('package-lock.json') && await isValidProjectRoot(dir)) {
|
|
359
|
-
logger?.debug('Found package-lock.json at root level');
|
|
360
|
-
return {
|
|
361
|
-
name: 'npm',
|
|
362
|
-
version: await getPackageManagerVersion('npm')
|
|
363
|
-
};
|
|
364
|
-
}
|
|
365
|
-
return null;
|
|
366
|
-
}
|
|
367
|
-
async function findPackageManager(startDir, logger) {
|
|
368
|
-
logger?.debug(`Checking for package manager starting from ${startDir}`);
|
|
369
|
-
if (!await isValidProjectRoot(startDir)) {
|
|
370
|
-
logger?.debug(`${startDir} is not a valid project root, skipping detection`);
|
|
371
|
-
return null;
|
|
372
|
-
}
|
|
373
|
-
let currentDir = startDir;
|
|
374
|
-
let depth = 0;
|
|
375
|
-
const maxDepth = 4;
|
|
376
|
-
while(depth < maxDepth)try {
|
|
377
|
-
logger?.debug(`Checking directory ${currentDir} for package manager files`);
|
|
378
|
-
const files = await __WEBPACK_EXTERNAL_MODULE_node_fs_promises_153e37e0__["default"].readdir(currentDir);
|
|
379
|
-
const packageManager = await detectPackageManagerInDirectory(currentDir, files, logger);
|
|
380
|
-
if (packageManager) return packageManager;
|
|
381
|
-
const parentDir = __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].dirname(currentDir);
|
|
382
|
-
if (parentDir === currentDir) break;
|
|
383
|
-
currentDir = parentDir;
|
|
384
|
-
depth++;
|
|
385
|
-
} catch (error) {
|
|
386
|
-
logger?.debug(`Error checking directory ${currentDir}: ${error instanceof Error ? error.message : String(error)}`);
|
|
387
|
-
break;
|
|
388
|
-
}
|
|
389
|
-
logger?.debug('No package manager found');
|
|
390
|
-
return null;
|
|
391
|
-
}
|
|
392
|
-
async function getPackageManagerVersion(pm) {
|
|
393
|
-
try {
|
|
394
|
-
const { execSync } = await import("node:child_process");
|
|
395
|
-
const version = execSync(`${pm} --version`).toString().trim();
|
|
396
|
-
return version;
|
|
397
|
-
} catch {
|
|
398
|
-
return null;
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
async function detectPackageManager(projectRoot, logger) {
|
|
402
|
-
try {
|
|
403
|
-
logger?.debug(`Detecting package manager in ${projectRoot}`);
|
|
404
|
-
const packageManager = await findPackageManager(projectRoot, logger);
|
|
405
|
-
if (packageManager) {
|
|
406
|
-
logger?.debug(`Detected package manager: ${packageManager.name}`);
|
|
407
|
-
return packageManager;
|
|
408
|
-
}
|
|
409
|
-
} catch (error) {
|
|
410
|
-
logger?.error(`Error detecting package manager: ${error instanceof Error ? error.message : String(error)}`);
|
|
411
|
-
}
|
|
412
|
-
const selectedPackageManager = await __WEBPACK_EXTERNAL_MODULE__clack_prompts_3cae1695__.select({
|
|
413
|
-
message: 'Please select your package manager:',
|
|
414
|
-
options: [
|
|
415
|
-
{
|
|
416
|
-
value: 'npm',
|
|
417
|
-
label: 'npm'
|
|
418
|
-
},
|
|
419
|
-
{
|
|
420
|
-
value: 'yarn',
|
|
421
|
-
label: 'yarn'
|
|
422
|
-
},
|
|
423
|
-
{
|
|
424
|
-
value: 'pnpm',
|
|
425
|
-
label: 'pnpm'
|
|
426
|
-
}
|
|
427
|
-
],
|
|
428
|
-
initialValue: 'npm'
|
|
429
|
-
});
|
|
430
|
-
if (__WEBPACK_EXTERNAL_MODULE__clack_prompts_3cae1695__.isCancel(selectedPackageManager)) {
|
|
431
|
-
logger?.debug('Package manager selection cancelled by user');
|
|
432
|
-
logger?.failed('Package manager selection cancelled. Exiting.');
|
|
433
|
-
process.exit(0);
|
|
434
|
-
}
|
|
435
|
-
const version = await getPackageManagerVersion(selectedPackageManager);
|
|
436
|
-
logger?.debug(`User selected package manager: ${selectedPackageManager} (version: ${version ?? 'unknown'})`);
|
|
437
|
-
return {
|
|
438
|
-
name: selectedPackageManager,
|
|
439
|
-
version
|
|
440
|
-
};
|
|
441
|
-
}
|
|
442
335
|
const TELEMETRY_DISABLED_ENV = 'C15T_TELEMETRY_DISABLED';
|
|
443
336
|
const TelemetryEventName = {
|
|
444
337
|
CLI_INVOKED: 'cli.invoked',
|
|
@@ -799,6 +692,8 @@ export const c15tConfig = {
|
|
|
799
692
|
// Using hosted c15t (consent.io) or self-hosted instance
|
|
800
693
|
mode: 'c15t',
|
|
801
694
|
backendURL: ${useEnvFile ? 'process.env.NEXT_PUBLIC_C15T_URL' : `'${backendURL || 'https://your-instance.c15t.dev'}'`},
|
|
695
|
+
consentCategories: ['necessary', 'marketing'], // Optional: Specify which consent categories to show in the banner.
|
|
696
|
+
ignoreGeoLocation: true, // Useful for development to always view the banner.
|
|
802
697
|
|
|
803
698
|
// Optional: Add callback functions for various events
|
|
804
699
|
callbacks: {
|
|
@@ -910,14 +805,20 @@ function generateOptionsText(mode, backendURL, useEnvFile, proxyNextjs) {
|
|
|
910
805
|
if (proxyNextjs) return `{
|
|
911
806
|
mode: 'c15t',
|
|
912
807
|
backendURL: '/api/c15t',
|
|
808
|
+
consentCategories: ['necessary', 'marketing'], // Optional: Specify which consent categories to show in the banner.
|
|
809
|
+
ignoreGeoLocation: true, // Useful for development to always view the banner.
|
|
913
810
|
}`;
|
|
914
811
|
if (useEnvFile) return `{
|
|
915
812
|
mode: 'c15t',
|
|
916
813
|
backendURL: process.env.NEXT_PUBLIC_C15T_URL!,
|
|
814
|
+
consentCategories: ['necessary', 'marketing'], // Optional: Specify which consent categories to show in the banner.
|
|
815
|
+
ignoreGeoLocation: true, // Useful for development to always view the banner.
|
|
917
816
|
}`;
|
|
918
817
|
return `{
|
|
919
818
|
mode: 'c15t',
|
|
920
819
|
backendURL: '${backendURL || 'https://your-instance.c15t.dev'}',
|
|
820
|
+
consentCategories: ['necessary', 'marketing'], // Optional: Specify which consent categories to show in the banner.
|
|
821
|
+
ignoreGeoLocation: true, // Useful for development to always view the banner.
|
|
921
822
|
}`;
|
|
922
823
|
case 'custom':
|
|
923
824
|
return `{
|
|
@@ -927,6 +828,7 @@ function generateOptionsText(mode, backendURL, useEnvFile, proxyNextjs) {
|
|
|
927
828
|
default:
|
|
928
829
|
return `{
|
|
929
830
|
mode: 'offline',
|
|
831
|
+
consentCategories: ['necessary', 'marketing'], // Optional: Specify which consent categories to show in the banner.
|
|
930
832
|
}`;
|
|
931
833
|
}
|
|
932
834
|
}
|
|
@@ -1083,9 +985,8 @@ function generateRewriteDestination(backendURL, useEnvFile) {
|
|
|
1083
985
|
}
|
|
1084
986
|
function createNewNextConfig(backendURL, useEnvFile) {
|
|
1085
987
|
const { destination, isTemplateLiteral } = generateRewriteDestination(backendURL, useEnvFile);
|
|
1086
|
-
const envImport = useEnvFile ? "import './src/env';\n\n" : '';
|
|
1087
988
|
const destinationValue = isTemplateLiteral ? `\`${destination}\`` : `'${destination}'`;
|
|
1088
|
-
return
|
|
989
|
+
return `import type { NextConfig } from 'next';
|
|
1089
990
|
|
|
1090
991
|
const config: NextConfig = {
|
|
1091
992
|
async rewrites() {
|
|
@@ -1110,7 +1011,6 @@ function createRewriteRule(destination, isTemplateLiteral) {
|
|
|
1110
1011
|
}
|
|
1111
1012
|
function updateExistingConfig(configFile, backendURL, useEnvFile) {
|
|
1112
1013
|
const { destination, isTemplateLiteral } = generateRewriteDestination(backendURL, useEnvFile);
|
|
1113
|
-
if (useEnvFile && !configFile.getFullText().includes("import './src/env'")) configFile.insertText(0, "import './src/env';\n");
|
|
1114
1014
|
const configObject = findConfigObject(configFile);
|
|
1115
1015
|
if (!configObject) return false;
|
|
1116
1016
|
const rewritesProperty = configObject.getProperty('rewrites');
|
|
@@ -1630,10 +1530,9 @@ async function startOnboarding(context, existingConfig) {
|
|
|
1630
1530
|
}
|
|
1631
1531
|
}
|
|
1632
1532
|
async function performOnboarding(context, existingConfig, handleCancel) {
|
|
1633
|
-
const { telemetry, logger } = context;
|
|
1533
|
+
const { telemetry, logger, packageManager } = context;
|
|
1634
1534
|
const isUpdate = !!existingConfig;
|
|
1635
1535
|
const projectRoot = await detectProjectRoot(context.cwd, logger);
|
|
1636
|
-
const packageManager = await detectPackageManager(projectRoot, logger);
|
|
1637
1536
|
const { pkg } = await detectFramework(projectRoot, logger);
|
|
1638
1537
|
if (!pkg) throw new Error('Error detecting framework');
|
|
1639
1538
|
const storageMode = await handleStorageModeSelection(context, handleCancel, existingConfig);
|
|
@@ -2375,6 +2274,66 @@ function createFileSystem(context) {
|
|
|
2375
2274
|
}
|
|
2376
2275
|
};
|
|
2377
2276
|
}
|
|
2277
|
+
const SUPPORTED_PACKAGE_MANAGERS = [
|
|
2278
|
+
'npm',
|
|
2279
|
+
'yarn',
|
|
2280
|
+
'pnpm'
|
|
2281
|
+
];
|
|
2282
|
+
async function getPackageManagerVersion(pm) {
|
|
2283
|
+
try {
|
|
2284
|
+
const { execSync } = await import("node:child_process");
|
|
2285
|
+
const version = execSync(`${pm} --version`).toString().trim();
|
|
2286
|
+
return version;
|
|
2287
|
+
} catch {
|
|
2288
|
+
return null;
|
|
2289
|
+
}
|
|
2290
|
+
}
|
|
2291
|
+
async function detectPackageManager(projectRoot, logger) {
|
|
2292
|
+
try {
|
|
2293
|
+
logger?.debug('Detecting package manager');
|
|
2294
|
+
const pm = await (0, __WEBPACK_EXTERNAL_MODULE_package_manager_detector_detect_94d6a9ae__.detect)({
|
|
2295
|
+
cwd: projectRoot
|
|
2296
|
+
});
|
|
2297
|
+
if (!pm) throw new Error('No package manager detected');
|
|
2298
|
+
logger?.debug(`Detected package manager: ${pm.name}`);
|
|
2299
|
+
if (!SUPPORTED_PACKAGE_MANAGERS.includes(pm.name)) throw new Error(`Unsupported package manager: ${pm.name}`);
|
|
2300
|
+
return {
|
|
2301
|
+
name: pm.name,
|
|
2302
|
+
version: pm.version ?? null
|
|
2303
|
+
};
|
|
2304
|
+
} catch (error) {
|
|
2305
|
+
logger?.error(`Error detecting package manager: ${error instanceof Error ? error.message : String(error)}`);
|
|
2306
|
+
}
|
|
2307
|
+
const selectedPackageManager = await __WEBPACK_EXTERNAL_MODULE__clack_prompts_3cae1695__.select({
|
|
2308
|
+
message: 'Please select your package manager:',
|
|
2309
|
+
options: [
|
|
2310
|
+
{
|
|
2311
|
+
value: 'npm',
|
|
2312
|
+
label: 'npm'
|
|
2313
|
+
},
|
|
2314
|
+
{
|
|
2315
|
+
value: 'yarn',
|
|
2316
|
+
label: 'yarn'
|
|
2317
|
+
},
|
|
2318
|
+
{
|
|
2319
|
+
value: 'pnpm',
|
|
2320
|
+
label: 'pnpm'
|
|
2321
|
+
}
|
|
2322
|
+
],
|
|
2323
|
+
initialValue: 'npm'
|
|
2324
|
+
});
|
|
2325
|
+
if (__WEBPACK_EXTERNAL_MODULE__clack_prompts_3cae1695__.isCancel(selectedPackageManager)) {
|
|
2326
|
+
logger?.debug('Package manager selection cancelled by user');
|
|
2327
|
+
logger?.failed('Package manager selection cancelled. Exiting.');
|
|
2328
|
+
process.exit(0);
|
|
2329
|
+
}
|
|
2330
|
+
const version = await getPackageManagerVersion(selectedPackageManager);
|
|
2331
|
+
logger?.debug(`User selected package manager: ${selectedPackageManager} (version: ${version ?? 'unknown'})`);
|
|
2332
|
+
return {
|
|
2333
|
+
name: selectedPackageManager,
|
|
2334
|
+
version
|
|
2335
|
+
};
|
|
2336
|
+
}
|
|
2378
2337
|
const globalFlags = [
|
|
2379
2338
|
{
|
|
2380
2339
|
names: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/onboarding/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/onboarding/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAWzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiBnD;;;;;GAKG;AACH,wBAAsB,eAAe,CACpC,OAAO,EAAE,UAAU,EACnB,cAAc,CAAC,EAAE,WAAW,GAAG,qBAAqB,GAAG,IAAI,iBA6C3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/onboarding/templates/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,OAAO,EACpB,MAAM,CAAC,EAAE,SAAS,GAChB,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/onboarding/templates/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,OAAO,EACpB,MAAM,CAAC,EAAE,SAAS,GAChB,MAAM,CAiGR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/onboarding/templates/layout.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAOvE,UAAU,wBAAwB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,iBAAiB,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/onboarding/templates/layout.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAOvE,UAAU,wBAAwB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,iBAAiB,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAyKD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,EACvC,WAAW,EACX,IAAI,EACJ,GAAG,EACH,UAAU,EACV,UAAU,EACV,WAAW,GACX,EAAE,wBAAwB,GAAG,OAAO,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;CACzB,CAAC,CA2DD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c15t/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "The CLI for c15t",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": "./dist/index.mjs",
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
"fs-extra": "^11.3.0",
|
|
25
25
|
"jiti": "^2.4.2",
|
|
26
26
|
"open": "^10.1.1",
|
|
27
|
-
"package-manager-detector": "^1.
|
|
27
|
+
"package-manager-detector": "^1.3.0",
|
|
28
28
|
"picocolors": "^1.1.1",
|
|
29
29
|
"posthog-node": "^4.11.7",
|
|
30
30
|
"ts-morph": "^25.0.1",
|
|
31
31
|
"zod": "^3.24.2",
|
|
32
32
|
"@c15t/backend": "1.3.1",
|
|
33
|
-
"@c15t/react": "1.
|
|
33
|
+
"@c15t/react": "1.4.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/figlet": "^1.7.0",
|