@versu/core 0.6.7 → 0.6.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 (48) hide show
  1. package/README.md +6 -0
  2. package/dist/changelog/index.d.ts.map +1 -1
  3. package/dist/changelog/index.js +16 -8
  4. package/dist/changelog/index.js.map +1 -1
  5. package/dist/git/index.d.ts.map +1 -1
  6. package/dist/git/index.js +27 -11
  7. package/dist/git/index.js.map +1 -1
  8. package/dist/plugins/plugin-loader.d.ts +4 -2
  9. package/dist/plugins/plugin-loader.d.ts.map +1 -1
  10. package/dist/plugins/plugin-loader.js +37 -15
  11. package/dist/plugins/plugin-loader.js.map +1 -1
  12. package/dist/services/adapter-metadata-provider.d.ts.map +1 -1
  13. package/dist/services/adapter-metadata-provider.js +4 -2
  14. package/dist/services/adapter-metadata-provider.js.map +1 -1
  15. package/dist/services/changelog-generator.d.ts.map +1 -1
  16. package/dist/services/changelog-generator.js +9 -3
  17. package/dist/services/changelog-generator.js.map +1 -1
  18. package/dist/services/commit-analyzer.d.ts.map +1 -1
  19. package/dist/services/commit-analyzer.js +16 -6
  20. package/dist/services/commit-analyzer.js.map +1 -1
  21. package/dist/services/configuration-loader.d.ts.map +1 -1
  22. package/dist/services/configuration-loader.js +6 -7
  23. package/dist/services/configuration-loader.js.map +1 -1
  24. package/dist/services/git-operations.d.ts.map +1 -1
  25. package/dist/services/git-operations.js +19 -15
  26. package/dist/services/git-operations.js.map +1 -1
  27. package/dist/services/version-applier.d.ts.map +1 -1
  28. package/dist/services/version-applier.js +25 -10
  29. package/dist/services/version-applier.js.map +1 -1
  30. package/dist/services/version-bumper.d.ts.map +1 -1
  31. package/dist/services/version-bumper.js +43 -14
  32. package/dist/services/version-bumper.js.map +1 -1
  33. package/dist/services/versu-runner.d.ts +7 -0
  34. package/dist/services/versu-runner.d.ts.map +1 -1
  35. package/dist/services/versu-runner.js +97 -51
  36. package/dist/services/versu-runner.js.map +1 -1
  37. package/dist/utils/banner.js +7 -7
  38. package/dist/utils/file.d.ts +1 -0
  39. package/dist/utils/file.d.ts.map +1 -1
  40. package/dist/utils/file.js +14 -0
  41. package/dist/utils/file.js.map +1 -1
  42. package/dist/utils/logger.d.ts +6 -2
  43. package/dist/utils/logger.d.ts.map +1 -1
  44. package/dist/utils/logger.js +12 -4
  45. package/dist/utils/logger.js.map +1 -1
  46. package/dist/utils/version.d.ts +1 -1
  47. package/dist/utils/version.js +1 -1
  48. package/package.json +3 -2
@@ -16,6 +16,7 @@ import { ConfigurationValidatorFactory } from "./configuration-validator.js";
16
16
  import { banner } from "../utils/banner.js";
17
17
  import path from "path";
18
18
  import { PluginLoader } from "../plugins/plugin-loader.js";
19
+ import { pluginContractSchema } from "../plugins/plugin-schema.js";
19
20
  export class VersuRunner {
20
21
  moduleSystemFactory; // Will be initialized in run()
21
22
  moduleRegistry; // Will be initialized in run()
@@ -33,6 +34,7 @@ export class VersuRunner {
33
34
  adapterIdentifierRegistry;
34
35
  adapterMetadataProvider;
35
36
  pluginLoader; // Will be initialized in run()
37
+ configDirectory; // Will be initialized in run()
36
38
  constructor(options) {
37
39
  this.options = {
38
40
  ...options,
@@ -40,48 +42,59 @@ export class VersuRunner {
40
42
  };
41
43
  // Initialize services
42
44
  this.configurationLoader = new ConfigurationLoader(ConfigurationValidatorFactory.create(configSchema));
45
+ this.pluginLoader = new PluginLoader(ConfigurationValidatorFactory.create(pluginContractSchema));
43
46
  }
44
47
  logStartupInfo() {
45
48
  logger.info(banner);
46
- logger.info("Composing the history of your code, one version at a time....");
47
- logger.info("");
48
- logger.info("🚀 Starting VERSU engine...");
49
- logger.info(`Repository: ${this.options.repoRoot}`);
50
- logger.info(`Adapter: ${this.options.adapter || "(auto-detect)"}`);
51
- logger.info(`Dry run: ${this.options.dryRun}`);
52
- logger.info(`Prerelease mode: ${this.options.prereleaseMode}`);
53
- if (this.options.prereleaseMode) {
54
- logger.info(`Prerelease ID: ${this.options.prereleaseId}`);
55
- logger.info(`Bump unchanged modules: ${this.options.bumpUnchanged}`);
56
- }
57
- logger.info(`Add build metadata: ${this.options.addBuildMetadata}`);
58
- logger.info(`Timestamp versions: ${this.options.timestampVersions}`);
59
- logger.info(`Append snapshot: ${this.options.appendSnapshot}`);
60
- logger.info(`Push changes: ${this.options.pushChanges}`);
61
- logger.info(`Generate changelog: ${this.options.generateChangelog}`);
62
- logger.info("🏃 Running VERSU semantic evolution...");
49
+ logger.info("Composing the history of your code, one version at a time");
50
+ logger.info("Starting versioning engine", {
51
+ repository: this.options.repoRoot,
52
+ adapter: this.options.adapter || "(auto-detect)",
53
+ dryRun: this.options.dryRun,
54
+ prereleaseMode: this.options.prereleaseMode,
55
+ prereleaseId: this.options.prereleaseMode
56
+ ? this.options.prereleaseId
57
+ : undefined,
58
+ bumpUnchanged: this.options.prereleaseMode
59
+ ? this.options.bumpUnchanged
60
+ : undefined,
61
+ addBuildMetadata: this.options.addBuildMetadata,
62
+ timestampVersions: this.options.timestampVersions,
63
+ appendSnapshot: this.options.appendSnapshot,
64
+ pushChanges: this.options.pushChanges,
65
+ generateChangelog: this.options.generateChangelog,
66
+ });
63
67
  }
64
68
  logShutdownInfo(result) {
65
69
  if (!result)
66
70
  return;
67
71
  if (result.bumped) {
68
- logger.info(`✅ Successfully updated ${result.changedModules.length} modules`);
72
+ logger.info("Version updates completed", {
73
+ moduleCount: result.changedModules.length,
74
+ });
69
75
  for (const module of result.changedModules) {
70
- logger.info(` ${module.id}: ${module.from} → ${module.to} (${module.bumpType})`);
76
+ logger.debug("Module updated", {
77
+ moduleId: module.id,
78
+ from: module.from,
79
+ to: module.to,
80
+ bumpType: module.bumpType,
81
+ });
71
82
  }
72
83
  if (result.createdTags.length > 0) {
73
- logger.info(`🏷️ Created ${result.createdTags.length} tags: ${result.createdTags.join(", ")}`);
84
+ logger.info("Tags created", { tagCount: result.createdTags.length });
85
+ logger.debug("Tag details", { tags: result.createdTags });
74
86
  }
75
87
  if (result.changelogPaths.length > 0) {
76
- logger.info(`📚 Generated ${result.changelogPaths.length} changelog files`);
88
+ logger.info("Changelog files generated", {
89
+ fileCount: result.changelogPaths.length,
90
+ });
91
+ logger.debug("Changelog paths", { paths: result.changelogPaths });
77
92
  }
78
93
  }
79
94
  else {
80
- logger.info(" No version changes needed");
95
+ logger.info("All versions up to date");
81
96
  }
82
- logger.info("");
83
- logger.info("🎯 VERSU completed successfully!");
84
- logger.info(" Your multiverse has evolved semantically ✨");
97
+ logger.info("Completed successfully");
85
98
  }
86
99
  async run() {
87
100
  this.logStartupInfo();
@@ -95,12 +108,12 @@ export class VersuRunner {
95
108
  this.logShutdownInfo(result);
96
109
  }
97
110
  }
98
- async doRun() {
99
- // Load configuration
100
- const configDirectory = path.join(this.options.repoRoot, ".versu");
101
- this.config = await this.configurationLoader.load(configDirectory);
102
- this.pluginLoader = new PluginLoader();
103
- await this.pluginLoader.loadSelectedPlugins(this.config.plugins);
111
+ async loadConfiguration() {
112
+ this.configDirectory = path.join(this.options.repoRoot, ".versu");
113
+ this.config = await this.configurationLoader.load(this.configDirectory);
114
+ }
115
+ async loadPluginsAndResolveAdapter() {
116
+ await this.pluginLoader.load(this.config.plugins);
104
117
  const plugins = this.pluginLoader.plugins;
105
118
  this.adapterIdentifierRegistry = createAdapterIdentifierRegistry(plugins);
106
119
  this.adapterMetadataProvider = new AdapterMetadataProvider(this.adapterIdentifierRegistry, {
@@ -110,21 +123,22 @@ export class VersuRunner {
110
123
  this.adapter = await this.adapterMetadataProvider.getMetadata();
111
124
  // Initialize module system factory with resolved adapter
112
125
  this.moduleSystemFactory = createModuleSystemFactory(this.adapter.id, plugins.flatMap((plugin) => plugin.adapters), this.options.repoRoot);
113
- // Check if working directory is clean
114
- if (!this.options.dryRun &&
115
- !isWorkingDirectoryClean({ cwd: this.options.repoRoot })) {
116
- throw new Error("Working directory is not clean. Please commit or stash your changes.");
117
- }
126
+ }
127
+ async discoverModulesAndAnalyzeCommits() {
118
128
  // Discover modules and get hierarchy manager
119
- logger.info("🔍 Discovering modules...");
120
- const detector = this.moduleSystemFactory.createDetector(path.resolve(path.join(configDirectory, "project-information.json")));
129
+ const detector = this.moduleSystemFactory.createDetector(path.resolve(path.join(this.configDirectory, "project-information.json")));
121
130
  this.moduleRegistry = new MapModuleRegistry(await detector.detect());
122
131
  // Log discovered modules through hierarchy manager
123
132
  const moduleIds = this.moduleRegistry.getModuleIds();
124
- logger.info(`Found ${moduleIds.length} modules: ${moduleIds.join(", ")}`);
133
+ logger.info("Module discovery completed", {
134
+ count: moduleIds.length,
135
+ modules: moduleIds,
136
+ });
125
137
  // Analyze commits since last release
126
138
  this.commitAnalyzer = new CommitAnalyzer(this.moduleRegistry, this.options.repoRoot);
127
- const moduleCommits = await this.commitAnalyzer.analyzeCommitsSinceLastRelease();
139
+ return await this.commitAnalyzer.analyzeCommitsSinceLastRelease();
140
+ }
141
+ async calculatingBumpsAndApplyingChanges(moduleCommits) {
128
142
  // Initialize version bumper service
129
143
  const versionBumperOptions = {
130
144
  prereleaseMode: this.options.prereleaseMode,
@@ -141,16 +155,6 @@ export class VersuRunner {
141
155
  // Calculate version bumps with cascade effects
142
156
  const processedModuleChanges = await this.versionBumper.calculateVersionBumps(moduleCommits);
143
157
  const discoveredModules = Array.from(this.moduleRegistry.getModules().values());
144
- if (processedModuleChanges.length === 0) {
145
- logger.info("✨ No version changes needed");
146
- return {
147
- bumped: false,
148
- discoveredModules,
149
- changedModules: [],
150
- createdTags: [],
151
- changelogPaths: [],
152
- };
153
- }
154
158
  // Create version manager
155
159
  const versionUpdateStrategy = this.moduleSystemFactory.createVersionUpdateStrategy(this.moduleRegistry);
156
160
  this.versionManager = new VersionManager(this.moduleRegistry, versionUpdateStrategy);
@@ -160,6 +164,9 @@ export class VersuRunner {
160
164
  };
161
165
  this.versionApplier = new VersionApplier(this.versionManager, versionApplierOptions);
162
166
  const changedModules = await this.versionApplier.applyVersionChanges(processedModuleChanges);
167
+ return { discoveredModules, changedModules };
168
+ }
169
+ async generateChangelogs(changedModules, moduleCommits) {
163
170
  this.changelogGenerator = new ChangelogGenerator({
164
171
  generateChangelog: this.options.generateChangelog,
165
172
  repoRoot: this.options.repoRoot,
@@ -168,6 +175,9 @@ export class VersuRunner {
168
175
  });
169
176
  // Generate changelogs
170
177
  const changelogPaths = await this.changelogGenerator.generateChangelogs(changedModules, moduleCommits);
178
+ return changelogPaths;
179
+ }
180
+ async commitChangesAndPush(changedModules) {
171
181
  // Initialize git operations service
172
182
  const gitOperationsOptions = {
173
183
  pushChanges: this.options.pushChanges,
@@ -181,7 +191,43 @@ export class VersuRunner {
181
191
  await this.gitOperations.commitAndPushChanges(changedModules);
182
192
  // Create and push tags
183
193
  const createdTags = await this.gitOperations.createAndPushTags(changedModules);
184
- logger.info("✅ VERSU semantic evolution completed successfully!");
194
+ return createdTags;
195
+ }
196
+ async doRun() {
197
+ logger.startGroup("Loading configuration");
198
+ await this.loadConfiguration();
199
+ logger.endGroup();
200
+ logger.startGroup("Loading plugins and resolving adapter");
201
+ await this.loadPluginsAndResolveAdapter();
202
+ logger.endGroup();
203
+ // Check if working directory is clean
204
+ if (!this.options.dryRun &&
205
+ !isWorkingDirectoryClean({ cwd: this.options.repoRoot })) {
206
+ throw new Error("Working directory is not clean. Please commit or stash your changes.");
207
+ }
208
+ logger.startGroup("Discovering modules and analyzing commits");
209
+ const moduleCommits = await this.discoverModulesAndAnalyzeCommits();
210
+ logger.endGroup();
211
+ logger.startGroup("Calculating version bumps and applying changes");
212
+ const { discoveredModules, changedModules } = await this.calculatingBumpsAndApplyingChanges(moduleCommits);
213
+ if (changedModules.length === 0) {
214
+ logger.info("All versions up to date");
215
+ return {
216
+ bumped: false,
217
+ discoveredModules,
218
+ changedModules: [],
219
+ createdTags: [],
220
+ changelogPaths: [],
221
+ };
222
+ }
223
+ logger.endGroup();
224
+ logger.startGroup("Generating changelogs");
225
+ const changelogPaths = await this.generateChangelogs(changedModules, moduleCommits);
226
+ logger.endGroup();
227
+ logger.startGroup("Committing changes and pushing to remote");
228
+ const createdTags = await this.commitChangesAndPush(changedModules);
229
+ logger.endGroup();
230
+ logger.info("Semantic evolution completed successfully");
185
231
  return {
186
232
  bumped: true,
187
233
  discoveredModules,
@@ -1 +1 @@
1
- {"version":3,"file":"versu-runner.js","sourceRoot":"","sources":["../../src/services/versu-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"versu-runner.js","sourceRoot":"","sources":["../../src/services/versu-runner.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import { VERSION, PACKAGE_NAME } from "./version.js";
2
2
  const info = `${PACKAGE_NAME} v${VERSION}`;
3
3
  export const banner = `
4
- ██╗ ██╗███████╗██████╗ ███████╗██╗ ██╗
5
- ██║ ██║██╔════╝██╔══██╗██╔════╝██║ ██║
6
- ██║ ██║█████╗ ██████╔╝███████╗██║ ██║
7
- ╚██╗ ██╔╝██╔══╝ ██╔══██╗╚════██║██║ ██║
8
- ╚████╔╝ ███████╗██║ ██║███████║╚██████╔╝
9
- ╚═══╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═════╝
4
+ ██╗ ██╗███████╗██████╗ ███████╗██╗ ██╗ ██╗ ▄▄▄▄▄▄▄▄▄▄▄ ██╗
5
+ ██║ ██║██╔════╝██╔══██╗██╔════╝██║ ██║ ██║ ▓▓▓▓▓ ▓▓▓▓▓ ██║
6
+ ██║ ██║█████╗ ██████╔╝███████╗██║ ██║ ██║ ▓▓▓ ▓▓▓▓▓ ▓ ██║
7
+ ╚██╗ ██╔╝██╔══╝ ██╔══██╗╚════██║██║ ██║ ██║ ▓▓▓▓▓ ▓▓▓ ▓ ██║
8
+ ╚████╔╝ ███████╗██║ ██║███████║╚██████╔╝ ██║ ▓▓▓▓ ▓▓▓▓▓▓ ██║
9
+ ╚═══╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ▀▀▀▀▀▀▀▀▀▀▀ ╚═╝
10
10
 
11
- ${info.padStart(44)}
11
+ ${info.padStart(64)}
12
12
  `;
13
13
  //# sourceMappingURL=banner.js.map
@@ -4,4 +4,5 @@
4
4
  * @returns True if the path exists and is accessible, false otherwise
5
5
  */
6
6
  export declare function exists(path: string): Promise<boolean>;
7
+ export declare function getFriendlyPath(from: string, to: string): string;
7
8
  //# sourceMappingURL=file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/utils/file.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAW3D"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/utils/file.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAW3D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAehE"}
@@ -1,4 +1,5 @@
1
1
  import { promises as fs } from "fs";
2
+ import * as path from "path";
2
3
  /**
3
4
  * Checks whether a file or directory exists at the specified path.
4
5
  * @param path - Absolute or relative path to check
@@ -17,4 +18,17 @@ export async function exists(path) {
17
18
  return false;
18
19
  }
19
20
  }
21
+ export function getFriendlyPath(from, to) {
22
+ // 1. Resolve to absolute paths to ensure we aren't comparing "empty" strings
23
+ const absoluteFrom = path.resolve(from);
24
+ const absoluteTo = path.resolve(to);
25
+ const relative = path.relative(absoluteFrom, absoluteTo);
26
+ // 2. Check if the path "escapes" the parent (starts with ..)
27
+ // or if it's an entirely different root (isAbsolute)
28
+ const isOutside = relative.startsWith("..") || path.isAbsolute(relative);
29
+ // 3. If it's the same path, relative is '', so we use '.'
30
+ if (relative === "")
31
+ return ".";
32
+ return isOutside ? absoluteTo : relative;
33
+ }
20
34
  //# sourceMappingURL=file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/utils/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AAEpC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,6BAA6B;QAC7B,wDAAwD;QACxD,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,kEAAkE;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/utils/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,6BAA6B;QAC7B,wDAAwD;QACxD,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,kEAAkE;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,EAAU;IACtD,6EAA6E;IAC7E,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAEzD,6DAA6D;IAC7D,qDAAqD;IACrD,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEzE,0DAA0D;IAC1D,IAAI,QAAQ,KAAK,EAAE;QAAE,OAAO,GAAG,CAAC;IAEhC,OAAO,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3C,CAAC"}
@@ -1,8 +1,12 @@
1
1
  export interface Logger {
2
- debug(message: string): void;
3
- info(message: string): void;
2
+ debug(message: string, context?: Record<string, unknown>): void;
3
+ info(message: string, context?: Record<string, unknown>): void;
4
4
  warning(message: string | Error, context?: Record<string, unknown>): void;
5
5
  error(message: string | Error, context?: Record<string, unknown>): void;
6
+ child(context: Record<string, unknown>): Logger;
7
+ group<T>(name: string, fn: () => Promise<T>): Promise<T>;
8
+ startGroup(name: string): void;
9
+ endGroup(): void;
6
10
  }
7
11
  export declare function initLogger(logger: Logger): void;
8
12
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1E,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACzE;AAYD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,QAExC;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,MAOpB,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/D,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1E,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAExE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAEhD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,IAAI,IAAI,CAAC;CAClB;AAgBD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,QAExC;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,MAcpB,CAAC"}
@@ -1,9 +1,13 @@
1
1
  // default no-op
2
2
  const noopLogger = {
3
- debug: (_message) => { },
4
- info: (_message) => { },
3
+ debug: (_message, _context) => { },
4
+ info: (_message, _context) => { },
5
5
  warning: (_message, _context) => { },
6
6
  error: (_message, _context) => { },
7
+ child: (_context) => noopLogger,
8
+ group: async (_name, fn) => await fn(),
9
+ startGroup: (_name) => { },
10
+ endGroup: () => { },
7
11
  };
8
12
  let _current = noopLogger;
9
13
  export function initLogger(logger) {
@@ -15,9 +19,13 @@ export function initLogger(logger) {
15
19
  * to the mutable `_current` at call-time.
16
20
  */
17
21
  export const logger = {
18
- debug: (message) => _current.debug(message),
19
- info: (message) => _current.info(message),
22
+ debug: (message, context) => _current.debug(message, context),
23
+ info: (message, context) => _current.info(message, context),
20
24
  warning: (message, context) => _current.warning(message, context),
21
25
  error: (message, context) => _current.error(message, context),
26
+ child: (context) => _current.child(context),
27
+ group: async (name, fn) => await _current.group(name, fn),
28
+ startGroup: (name) => _current.startGroup(name),
29
+ endGroup: () => _current.endGroup(),
22
30
  };
23
31
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAOA,gBAAgB;AAChB,MAAM,UAAU,GAAW;IACzB,KAAK,EAAE,CAAC,QAAgB,EAAE,EAAE,GAAE,CAAC;IAC/B,IAAI,EAAE,CAAC,QAAgB,EAAE,EAAE,GAAE,CAAC;IAC9B,OAAO,EAAE,CAAC,QAAwB,EAAE,QAAkC,EAAE,EAAE,GAAE,CAAC;IAC7E,KAAK,EAAE,CAAC,QAAwB,EAAE,QAAkC,EAAE,EAAE,GAAE,CAAC;CAC5E,CAAC;AAEF,IAAI,QAAQ,GAAW,UAAU,CAAC;AAElC,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,QAAQ,GAAG,MAAM,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;IACnD,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IACjD,OAAO,EAAE,CAAC,OAAuB,EAAE,OAAiC,EAAE,EAAE,CACtE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IACpC,KAAK,EAAE,CAAC,OAAuB,EAAE,OAAiC,EAAE,EAAE,CACpE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;CACnC,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAcA,gBAAgB;AAChB,MAAM,UAAU,GAAW;IACzB,KAAK,EAAE,CAAC,QAAgB,EAAE,QAAkC,EAAE,EAAE,GAAE,CAAC;IACnE,IAAI,EAAE,CAAC,QAAgB,EAAE,QAAkC,EAAE,EAAE,GAAE,CAAC;IAClE,OAAO,EAAE,CAAC,QAAwB,EAAE,QAAkC,EAAE,EAAE,GAAE,CAAC;IAC7E,KAAK,EAAE,CAAC,QAAwB,EAAE,QAAkC,EAAE,EAAE,GAAE,CAAC;IAC3E,KAAK,EAAE,CAAC,QAAiC,EAAE,EAAE,CAAC,UAAU;IACxD,KAAK,EAAE,KAAK,EAAK,KAAa,EAAE,EAAoB,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;IACnE,UAAU,EAAE,CAAC,KAAa,EAAE,EAAE,GAAE,CAAC;IACjC,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;CACnB,CAAC;AAEF,IAAI,QAAQ,GAAW,UAAU,CAAC;AAElC,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,QAAQ,GAAG,MAAM,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,KAAK,EAAE,CAAC,OAAe,EAAE,OAAiC,EAAE,EAAE,CAC5D,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;IAClC,IAAI,EAAE,CAAC,OAAe,EAAE,OAAiC,EAAE,EAAE,CAC3D,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;IACjC,OAAO,EAAE,CAAC,OAAuB,EAAE,OAAiC,EAAE,EAAE,CACtE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IACpC,KAAK,EAAE,CAAC,OAAuB,EAAE,OAAiC,EAAE,EAAE,CACpE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;IAClC,KAAK,EAAE,CAAC,OAAgC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;IACpE,KAAK,EAAE,KAAK,EAAK,IAAY,EAAE,EAAoB,EAAE,EAAE,CACrD,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAChC,UAAU,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;IACvD,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE;CACpC,CAAC"}
@@ -1,3 +1,3 @@
1
- export declare const VERSION = "0.6.7";
1
+ export declare const VERSION = "0.6.9";
2
2
  export declare const PACKAGE_NAME = "@versu/core";
3
3
  //# sourceMappingURL=version.d.ts.map
@@ -1,5 +1,5 @@
1
1
  // This file is auto-generated. Do not edit manually.
2
2
  // Run 'npm run generate-version' to update this file.
3
- export const VERSION = "0.6.7";
3
+ export const VERSION = "0.6.9";
4
4
  export const PACKAGE_NAME = "@versu/core";
5
5
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versu/core",
3
- "version": "0.6.7",
3
+ "version": "0.6.9",
4
4
  "description": "VERSU (Core Library)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -33,7 +33,8 @@
33
33
  "license": "MIT",
34
34
  "repository": {
35
35
  "type": "git",
36
- "url": "git+https://github.com/tvcsantos/versu.git"
36
+ "url": "git+https://github.com/tvcsantos/versu.git",
37
+ "directory": "packages/core"
37
38
  },
38
39
  "bugs": {
39
40
  "url": "https://github.com/tvcsantos/versu/issues"