kaven-cli 0.4.1-alpha.0 → 0.4.2-alpha.2

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 (68) hide show
  1. package/README.md +181 -207
  2. package/dist/EnvManager-NMS3NMIE.js +15 -0
  3. package/dist/MarketplaceClient-YCFH2VU4.js +1 -0
  4. package/dist/chunk-JHLQ46NG.js +1 -0
  5. package/dist/index.d.ts +4 -0
  6. package/dist/index.js +248 -304
  7. package/dist/tier-table-DQMPQSI2.js +6 -0
  8. package/package.json +26 -11
  9. package/dist/EnvManager-GQMEZ6NV.js +0 -158
  10. package/dist/MarketplaceClient-IJGRQRC4.js +0 -7
  11. package/dist/chunk-3RG5ZIWI.js +0 -10
  12. package/dist/chunk-GHZX5OAA.js +0 -455
  13. package/dist/commands/aiox/index.js +0 -20
  14. package/dist/commands/auth/login.js +0 -122
  15. package/dist/commands/auth/logout.js +0 -23
  16. package/dist/commands/auth/whoami.js +0 -36
  17. package/dist/commands/cache/index.js +0 -43
  18. package/dist/commands/config/features.js +0 -161
  19. package/dist/commands/config/index.js +0 -95
  20. package/dist/commands/index.js +0 -2
  21. package/dist/commands/init/aiox-bootstrap.js +0 -83
  22. package/dist/commands/init/index.js +0 -210
  23. package/dist/commands/init-ci/index.js +0 -153
  24. package/dist/commands/license/index.js +0 -10
  25. package/dist/commands/license/status.js +0 -44
  26. package/dist/commands/license/tier-table.js +0 -46
  27. package/dist/commands/marketplace/browse.js +0 -186
  28. package/dist/commands/marketplace/install.js +0 -263
  29. package/dist/commands/marketplace/list.js +0 -122
  30. package/dist/commands/module/activate.js +0 -245
  31. package/dist/commands/module/add.js +0 -69
  32. package/dist/commands/module/doctor.js +0 -175
  33. package/dist/commands/module/list.js +0 -51
  34. package/dist/commands/module/publish.js +0 -258
  35. package/dist/commands/module/remove.js +0 -58
  36. package/dist/commands/telemetry/view.js +0 -27
  37. package/dist/commands/upgrade/check.js +0 -162
  38. package/dist/commands/upgrade/index.js +0 -185
  39. package/dist/core/AuthService.js +0 -222
  40. package/dist/core/CacheManager.js +0 -154
  41. package/dist/core/ConfigManager.js +0 -166
  42. package/dist/core/EnvManager.js +0 -196
  43. package/dist/core/ErrorRecovery.js +0 -192
  44. package/dist/core/LicenseService.js +0 -83
  45. package/dist/core/ManifestParser.js +0 -52
  46. package/dist/core/MarkerService.js +0 -62
  47. package/dist/core/ModuleDoctor.js +0 -451
  48. package/dist/core/ModuleInstaller.js +0 -169
  49. package/dist/core/ProjectInitializer.js +0 -183
  50. package/dist/core/RegistryResolver.js +0 -95
  51. package/dist/core/SchemaActivator.js +0 -278
  52. package/dist/core/ScriptRunner.js +0 -73
  53. package/dist/core/SignatureVerifier.js +0 -75
  54. package/dist/core/index.js +0 -2
  55. package/dist/infrastructure/Container.js +0 -37
  56. package/dist/infrastructure/MarketplaceClient.js +0 -425
  57. package/dist/infrastructure/TelemetryBuffer.js +0 -73
  58. package/dist/infrastructure/TransactionalFileSystem.js +0 -77
  59. package/dist/infrastructure/errors.js +0 -63
  60. package/dist/infrastructure/index.js +0 -2
  61. package/dist/lib/capabilities-catalog.js +0 -73
  62. package/dist/lib/module-registry.js +0 -47
  63. package/dist/lib/schema-modifier.js +0 -40
  64. package/dist/tier-table-LAL6PAVW.js +0 -52
  65. package/dist/types/auth.js +0 -2
  66. package/dist/types/manifest.js +0 -45
  67. package/dist/types/markers.js +0 -10
  68. package/dist/types/marketplace.js +0 -2
@@ -1,77 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TransactionalFileSystem = void 0;
7
- const fs_extra_1 = __importDefault(require("fs-extra"));
8
- const path_1 = __importDefault(require("path"));
9
- const glob_1 = require("glob");
10
- class TransactionalFileSystem {
11
- projectRoot;
12
- backupDir;
13
- backupId;
14
- filesToBackup = [];
15
- constructor(projectRoot, backupDir = ".agent/backups") {
16
- this.projectRoot = projectRoot;
17
- this.backupDir = path_1.default.join(projectRoot, backupDir);
18
- this.backupId = `backup_${Date.now()}`;
19
- }
20
- async backup(filePaths) {
21
- const backupPath = path_1.default.join(this.backupDir, this.backupId);
22
- await fs_extra_1.default.ensureDir(backupPath);
23
- for (const file of filePaths) {
24
- const absolutePath = path_1.default.resolve(this.projectRoot, file);
25
- if (!(await fs_extra_1.default.pathExists(absolutePath))) {
26
- throw new Error(`File not found for backup: ${file}`);
27
- }
28
- const relativePath = path_1.default.relative(this.projectRoot, absolutePath);
29
- const backupFile = path_1.default.join(backupPath, relativePath);
30
- await fs_extra_1.default.ensureDir(path_1.default.dirname(backupFile));
31
- await fs_extra_1.default.copy(absolutePath, backupFile);
32
- this.filesToBackup.push(absolutePath);
33
- }
34
- console.log(`📦 Backup created: ${this.backupId}`);
35
- }
36
- async rollback() {
37
- const backupPath = path_1.default.join(this.backupDir, this.backupId);
38
- if (!(await fs_extra_1.default.pathExists(backupPath))) {
39
- throw new Error(`Backup not found: ${this.backupId}`);
40
- }
41
- const files = await (0, glob_1.glob)(`${backupPath}/**/*`, { nodir: true });
42
- for (const backupFile of files) {
43
- const relativePath = path_1.default.relative(backupPath, backupFile);
44
- const targetFile = path_1.default.join(this.projectRoot, relativePath);
45
- await fs_extra_1.default.ensureDir(path_1.default.dirname(targetFile));
46
- await fs_extra_1.default.copy(backupFile, targetFile, { overwrite: true });
47
- }
48
- console.log(`♻️ Rollback complete: ${this.backupId}`);
49
- }
50
- async commit() {
51
- const backupPath = path_1.default.join(this.backupDir, this.backupId);
52
- if (await fs_extra_1.default.pathExists(backupPath)) {
53
- await fs_extra_1.default.remove(backupPath);
54
- }
55
- console.log(`✅ Transaction committed`);
56
- }
57
- getBackupId() {
58
- return this.backupId;
59
- }
60
- async cleanup() {
61
- if (!(await fs_extra_1.default.pathExists(this.backupDir)))
62
- return;
63
- const backups = await fs_extra_1.default.readdir(this.backupDir);
64
- const now = Date.now();
65
- const weekInMs = 7 * 24 * 60 * 60 * 1000;
66
- for (const backup of backups) {
67
- const match = backup.match(/backup_(\d+)/);
68
- if (match) {
69
- const timestamp = parseInt(match[1]);
70
- if (now - timestamp > weekInMs) {
71
- await fs_extra_1.default.remove(path_1.default.join(this.backupDir, backup));
72
- }
73
- }
74
- }
75
- }
76
- }
77
- exports.TransactionalFileSystem = TransactionalFileSystem;
@@ -1,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SignatureVerificationError = exports.NetworkError = exports.ServerError = exports.RateLimitError = exports.NotFoundError = exports.LicenseRequiredError = exports.AuthenticationError = exports.MarketplaceError = void 0;
4
- class MarketplaceError extends Error {
5
- constructor(message) {
6
- super(message);
7
- this.name = "MarketplaceError";
8
- }
9
- }
10
- exports.MarketplaceError = MarketplaceError;
11
- class AuthenticationError extends MarketplaceError {
12
- constructor(message) {
13
- super(message);
14
- this.name = "AuthenticationError";
15
- }
16
- }
17
- exports.AuthenticationError = AuthenticationError;
18
- class LicenseRequiredError extends MarketplaceError {
19
- requiredTier;
20
- constructor(requiredTier, message) {
21
- super(message);
22
- this.requiredTier = requiredTier;
23
- this.name = "LicenseRequiredError";
24
- }
25
- }
26
- exports.LicenseRequiredError = LicenseRequiredError;
27
- class NotFoundError extends MarketplaceError {
28
- constructor(message) {
29
- super(message);
30
- this.name = "NotFoundError";
31
- }
32
- }
33
- exports.NotFoundError = NotFoundError;
34
- class RateLimitError extends MarketplaceError {
35
- retryAfter;
36
- constructor(retryAfter) {
37
- super(`Rate limited. Try again in ${retryAfter}s`);
38
- this.retryAfter = retryAfter;
39
- this.name = "RateLimitError";
40
- }
41
- }
42
- exports.RateLimitError = RateLimitError;
43
- class ServerError extends MarketplaceError {
44
- constructor(message) {
45
- super(message);
46
- this.name = "ServerError";
47
- }
48
- }
49
- exports.ServerError = ServerError;
50
- class NetworkError extends MarketplaceError {
51
- constructor(message) {
52
- super(message);
53
- this.name = "NetworkError";
54
- }
55
- }
56
- exports.NetworkError = NetworkError;
57
- class SignatureVerificationError extends MarketplaceError {
58
- constructor(message) {
59
- super(message);
60
- this.name = "SignatureVerificationError";
61
- }
62
- }
63
- exports.SignatureVerificationError = SignatureVerificationError;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,73 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TIER_DEFAULTS = exports.ALL_CAPABILITIES = void 0;
4
- exports.ALL_CAPABILITIES = [
5
- // --- AUTH ---
6
- { key: "FEATURE_EMAIL_VERIFICATION", type: "boolean", description: "Email verification on signup", category: "Auth", defaultValue: "true" },
7
- { key: "FEATURE_2FA_TOTP", type: "boolean", description: "Two-factor authentication via TOTP", category: "Auth", defaultValue: "false" },
8
- { key: "FEATURE_SSO_SAML", type: "boolean", description: "Single Sign-On via SAML/OIDC", category: "Auth", defaultValue: "false" },
9
- { key: "FEATURE_SOCIAL_LOGIN", type: "boolean", description: "Login via Google, GitHub, etc.", category: "Auth", defaultValue: "true" },
10
- { key: "FEATURE_MAGIC_LINK", type: "boolean", description: "Passwordless login via email", category: "Auth", defaultValue: "false" },
11
- // --- TENANCY ---
12
- { key: "FEATURE_CUSTOM_DOMAIN", type: "boolean", description: "Custom domain per tenant", category: "Tenancy", defaultValue: "false" },
13
- { key: "FEATURE_WHITE_LABEL", type: "boolean", description: "Remove Kaven branding", category: "Tenancy", defaultValue: "false" },
14
- { key: "FEATURE_MULTI_BUSINESS", type: "boolean", description: "Multiple businesses per user", category: "Tenancy", defaultValue: "false" },
15
- { key: "FEATURE_AGENCY_HUB", type: "boolean", description: "Agency management dashboard", category: "Tenancy", defaultValue: "false" },
16
- { key: "FEATURE_TENANT_THEMES", type: "boolean", description: "Custom themes for tenants", category: "Tenancy", defaultValue: "true" },
17
- // --- BILLING ---
18
- { key: "FEATURE_SUBSCRIPTIONS", type: "boolean", description: "Subscription management", category: "Billing", defaultValue: "true" },
19
- { key: "FEATURE_INVOICING", type: "boolean", description: "Automatic invoicing", category: "Billing", defaultValue: "true" },
20
- { key: "FEATURE_USAGE_BILLING", type: "boolean", description: "Metered usage billing", category: "Billing", defaultValue: "false" },
21
- { key: "FEATURE_PADDLE_CHECKOUT", type: "boolean", description: "Paddle payment integration", category: "Billing", defaultValue: "true" },
22
- { key: "FEATURE_PAGUBIT_PIX", type: "boolean", description: "Pix payment support", category: "Billing", defaultValue: "false" },
23
- // --- API ---
24
- { key: "FEATURE_API_ACCESS", type: "boolean", description: "External API access", category: "API", defaultValue: "false" },
25
- { key: "FEATURE_WEBHOOKS", type: "boolean", description: "Outgoing webhooks", category: "API", defaultValue: "false" },
26
- { key: "FEATURE_MARKETPLACE_ACCESS", type: "boolean", description: "Kaven Marketplace access", category: "API", defaultValue: "true" },
27
- { key: "MAX_API_CALLS_MONTH", type: "numeric", description: "Maximum API calls per month", category: "API", defaultValue: "10000" },
28
- { key: "MAX_AGENT_API_CALLS_HOUR", type: "numeric", description: "Maximum agent calls per hour", category: "API", defaultValue: "100" },
29
- // --- LIMITS ---
30
- { key: "MAX_TEAM_MEMBERS", type: "numeric", description: "Maximum team members per tenant", category: "Limits", defaultValue: "5" },
31
- { key: "MAX_PROJECTS", type: "numeric", description: "Maximum projects per tenant", category: "Limits", defaultValue: "3" },
32
- { key: "MAX_STORAGE_GB", type: "numeric", description: "Maximum storage in GB", category: "Limits", defaultValue: "1" },
33
- { key: "MAX_TENANTS", type: "numeric", description: "Maximum sub-tenants", category: "Limits", defaultValue: "1" },
34
- // --- SUPPORT ---
35
- { key: "FEATURE_PRIORITY_SUPPORT", type: "boolean", description: "Priority support queue", category: "Support", defaultValue: "false" },
36
- { key: "FEATURE_AUDIT_COMPLIANCE", type: "boolean", description: "Audit logs and compliance", category: "Support", defaultValue: "false" },
37
- { key: "FEATURE_DATA_EXPORT", type: "boolean", description: "Customer data export", category: "Support", defaultValue: "true" },
38
- ];
39
- exports.TIER_DEFAULTS = {
40
- starter: {
41
- FEATURE_EMAIL_VERIFICATION: true,
42
- FEATURE_SOCIAL_LOGIN: true,
43
- FEATURE_MARKETPLACE_ACCESS: true,
44
- MAX_TEAM_MEMBERS: "5",
45
- MAX_PROJECTS: "3",
46
- MAX_API_CALLS_MONTH: "10000",
47
- MAX_AGENT_API_CALLS_HOUR: "100",
48
- },
49
- complete: {
50
- FEATURE_EMAIL_VERIFICATION: true,
51
- FEATURE_SOCIAL_LOGIN: true,
52
- FEATURE_CUSTOM_DOMAIN: true,
53
- FEATURE_API_ACCESS: true,
54
- FEATURE_MARKETPLACE_ACCESS: true,
55
- MAX_TEAM_MEMBERS: "25",
56
- MAX_PROJECTS: "20",
57
- MAX_API_CALLS_MONTH: "100000",
58
- MAX_AGENT_API_CALLS_HOUR: "500",
59
- },
60
- pro: {
61
- FEATURE_EMAIL_VERIFICATION: true,
62
- FEATURE_SOCIAL_LOGIN: true,
63
- FEATURE_CUSTOM_DOMAIN: true,
64
- FEATURE_WHITE_LABEL: true,
65
- FEATURE_API_ACCESS: true,
66
- FEATURE_MARKETPLACE_ACCESS: true,
67
- MAX_TEAM_MEMBERS: "100",
68
- MAX_PROJECTS: "100",
69
- MAX_API_CALLS_MONTH: "1000000",
70
- MAX_AGENT_API_CALLS_HOUR: "2000",
71
- },
72
- enterprise: {}
73
- };
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MODULE_REGISTRY = void 0;
4
- exports.MODULE_REGISTRY = [
5
- {
6
- id: "core",
7
- name: "Core",
8
- description: "Base models — always active, cannot be deactivated",
9
- models: ["Tenant", "User", "Role", "Capability", "AuthSession", "AuditLog", "RefreshToken", "EmailVerification"],
10
- dependsOn: [],
11
- },
12
- {
13
- id: "billing",
14
- name: "Billing",
15
- description: "Subscriptions, invoices, orders, payments",
16
- models: ["Invoice", "Order", "Subscription", "Plan", "Payment", "Product"],
17
- dependsOn: ["core"],
18
- },
19
- {
20
- id: "projects",
21
- name: "Projects",
22
- description: "Spaces, projects, tasks — project management features",
23
- models: ["Space", "Project", "Task"],
24
- dependsOn: ["core"],
25
- },
26
- {
27
- id: "notifications",
28
- name: "Notifications",
29
- description: "In-app notifications and user preferences",
30
- models: ["Notification", "UserPreference"],
31
- dependsOn: ["core"],
32
- },
33
- {
34
- id: "service-tokens",
35
- name: "Service Tokens",
36
- description: "Agent authentication tokens for AIOX integration",
37
- models: ["ServiceToken"],
38
- dependsOn: ["core"],
39
- },
40
- {
41
- id: "marketing-tracking",
42
- name: "Marketing Tracking",
43
- description: "Ad tracking, GTM, GA4 and Meta CAPI observability",
44
- models: ["TrackingEvent"],
45
- dependsOn: ["core"],
46
- },
47
- ];
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deactivateModels = deactivateModels;
4
- exports.activateModels = activateModels;
5
- exports.isModuleActive = isModuleActive;
6
- /**
7
- * Deactivates models by commenting them out in the Prisma schema
8
- */
9
- function deactivateModels(schemaContent, models) {
10
- let updatedSchema = schemaContent;
11
- for (const modelName of models) {
12
- const modelRegex = new RegExp(`^model ${modelName} \\{[^}]*\\}`, "gm");
13
- updatedSchema = updatedSchema.replace(modelRegex, (match) => match.split("\n").map(line => `// ${line}`).join("\n"));
14
- }
15
- return updatedSchema;
16
- }
17
- /**
18
- * Activates models by uncommenting them in the Prisma schema
19
- */
20
- function activateModels(schemaContent, models) {
21
- let updatedSchema = schemaContent;
22
- for (const modelName of models) {
23
- // Regex matches multiple lines starting with // until the closing brace of the model
24
- const regex = new RegExp(`// model ${modelName} \\{[^}]*// \\}`, "gs");
25
- updatedSchema = updatedSchema.replace(regex, (match) => {
26
- return match.split("\n").map(line => line.replace(/^\/\/ /, "")).join("\n");
27
- });
28
- }
29
- return updatedSchema;
30
- }
31
- /**
32
- * Checks if a module is currently active in the schema
33
- */
34
- function isModuleActive(schemaContent, models) {
35
- if (models.length === 0)
36
- return true;
37
- const firstModel = models[0];
38
- const activeRegex = new RegExp(`^model ${firstModel} \\{`, "m");
39
- return activeRegex.test(schemaContent);
40
- }
@@ -1,52 +0,0 @@
1
- import "./chunk-3RG5ZIWI.js";
2
-
3
- // src/commands/license/tier-table.ts
4
- import Table from "cli-table3";
5
- import chalk from "chalk";
6
- var TIERS = [
7
- { name: "STARTER", price: "$149", projects: "1", tenants: "10", marketplace: false },
8
- { name: "COMPLETE", price: "$399", projects: "1", tenants: "Unlimited", marketplace: false },
9
- { name: "PRO", price: "$799", projects: "5", tenants: "Unlimited", marketplace: true },
10
- { name: "ENTERPRISE", price: "Custom", projects: "Unlimited", tenants: "Unlimited", marketplace: true }
11
- ];
12
- function colorTier(tier) {
13
- switch (tier.toUpperCase()) {
14
- case "STARTER":
15
- return chalk.green(tier);
16
- case "COMPLETE":
17
- return chalk.yellow(tier);
18
- case "PRO":
19
- return chalk.magenta(tier);
20
- case "ENTERPRISE":
21
- return chalk.cyan(tier);
22
- default:
23
- return tier;
24
- }
25
- }
26
- function printTierComparisonTable(userTier, requiredTier) {
27
- console.log(chalk.red("\n\u2717 License tier insufficient\n"));
28
- console.log(` Your tier: ${colorTier(userTier)}`);
29
- console.log(` Required tier: ${colorTier(requiredTier)}
30
- `);
31
- const table = new Table({
32
- head: ["Tier", "Price", "Projects", "Tenants", "Marketplace"],
33
- style: { head: ["cyan"] }
34
- });
35
- for (const t of TIERS) {
36
- const isUser = t.name === userTier.toUpperCase();
37
- const isRequired = t.name === requiredTier.toUpperCase();
38
- const marker = isRequired ? chalk.yellow(" \u2190 required") : isUser ? chalk.dim(" \u2190 you") : "";
39
- table.push([
40
- colorTier(t.name) + marker,
41
- t.price,
42
- t.projects,
43
- t.tenants,
44
- t.marketplace ? chalk.green("\u2713") : chalk.dim("\u2717")
45
- ]);
46
- }
47
- console.log(table.toString());
48
- console.log(chalk.dim("\n Upgrade at: https://kaven.dev/pricing\n"));
49
- }
50
- export {
51
- printTierComparisonTable
52
- };
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ModuleManifestSchema = void 0;
4
- const zod_1 = require("zod");
5
- const DependencySchema = zod_1.z.object({
6
- npm: zod_1.z.array(zod_1.z.string()).default([]),
7
- peerModules: zod_1.z.array(zod_1.z.string()).default([]),
8
- kavenVersion: zod_1.z.string().default(">=0.1.0"),
9
- });
10
- const FileSetSchema = zod_1.z.object({
11
- source: zod_1.z.string(),
12
- dest: zod_1.z.string(),
13
- });
14
- const FilesSchema = zod_1.z.object({
15
- backend: zod_1.z.array(FileSetSchema).default([]),
16
- frontend: zod_1.z.array(FileSetSchema).default([]),
17
- database: zod_1.z.array(FileSetSchema).default([]),
18
- });
19
- const InjectionSchema = zod_1.z.object({
20
- file: zod_1.z.string(),
21
- anchor: zod_1.z.string(),
22
- code: zod_1.z.string(),
23
- moduleName: zod_1.z.string().optional(),
24
- });
25
- const ScriptsSchema = zod_1.z.object({
26
- postInstall: zod_1.z.string().nullable().default(null),
27
- preRemove: zod_1.z.string().nullable().default(null),
28
- });
29
- const EnvVarSchema = zod_1.z.object({
30
- key: zod_1.z.string(),
31
- required: zod_1.z.boolean().default(false),
32
- example: zod_1.z.string().optional(),
33
- });
34
- exports.ModuleManifestSchema = zod_1.z.object({
35
- name: zod_1.z.string().min(1),
36
- version: zod_1.z.string().regex(/^\d+\.\d+\.\d+$/),
37
- description: zod_1.z.string().optional(),
38
- author: zod_1.z.string().default("Kaven"),
39
- license: zod_1.z.string().default("Proprietary"),
40
- dependencies: DependencySchema,
41
- files: FilesSchema,
42
- injections: zod_1.z.array(InjectionSchema),
43
- scripts: ScriptsSchema,
44
- env: zod_1.z.array(EnvVarSchema).default([]),
45
- });
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createMarker = createMarker;
4
- function createMarker(moduleName) {
5
- return {
6
- moduleName,
7
- beginMarker: `// [KAVEN_MODULE:${moduleName} BEGIN]`,
8
- endMarker: `// [KAVEN_MODULE:${moduleName} END]`,
9
- };
10
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });