@firela/billclaw-cli 0.1.3

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/LICENSE +21 -0
  2. package/README.md +204 -0
  3. package/bin/billclaw.js +10 -0
  4. package/dist/commands/config.d.ts +11 -0
  5. package/dist/commands/config.d.ts.map +1 -0
  6. package/dist/commands/config.js +112 -0
  7. package/dist/commands/config.js.map +1 -0
  8. package/dist/commands/export.d.ts +11 -0
  9. package/dist/commands/export.d.ts.map +1 -0
  10. package/dist/commands/export.js +106 -0
  11. package/dist/commands/export.js.map +1 -0
  12. package/dist/commands/index.d.ts +46 -0
  13. package/dist/commands/index.d.ts.map +1 -0
  14. package/dist/commands/index.js +22 -0
  15. package/dist/commands/index.js.map +1 -0
  16. package/dist/commands/registry.d.ts +62 -0
  17. package/dist/commands/registry.d.ts.map +1 -0
  18. package/dist/commands/registry.js +77 -0
  19. package/dist/commands/registry.js.map +1 -0
  20. package/dist/commands/setup.d.ts +11 -0
  21. package/dist/commands/setup.d.ts.map +1 -0
  22. package/dist/commands/setup.js +214 -0
  23. package/dist/commands/setup.js.map +1 -0
  24. package/dist/commands/status.d.ts +11 -0
  25. package/dist/commands/status.d.ts.map +1 -0
  26. package/dist/commands/status.js +187 -0
  27. package/dist/commands/status.js.map +1 -0
  28. package/dist/commands/sync.d.ts +11 -0
  29. package/dist/commands/sync.d.ts.map +1 -0
  30. package/dist/commands/sync.js +150 -0
  31. package/dist/commands/sync.js.map +1 -0
  32. package/dist/index.d.ts +15 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +45 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/runtime/config.d.ts +32 -0
  37. package/dist/runtime/config.d.ts.map +1 -0
  38. package/dist/runtime/config.js +105 -0
  39. package/dist/runtime/config.js.map +1 -0
  40. package/dist/runtime/context.d.ts +33 -0
  41. package/dist/runtime/context.d.ts.map +1 -0
  42. package/dist/runtime/context.js +35 -0
  43. package/dist/runtime/context.js.map +1 -0
  44. package/dist/runtime/events.d.ts +24 -0
  45. package/dist/runtime/events.d.ts.map +1 -0
  46. package/dist/runtime/events.js +54 -0
  47. package/dist/runtime/events.js.map +1 -0
  48. package/dist/runtime/index.d.ts +10 -0
  49. package/dist/runtime/index.d.ts.map +1 -0
  50. package/dist/runtime/index.js +10 -0
  51. package/dist/runtime/index.js.map +1 -0
  52. package/dist/runtime/logger.d.ts +41 -0
  53. package/dist/runtime/logger.d.ts.map +1 -0
  54. package/dist/runtime/logger.js +95 -0
  55. package/dist/runtime/logger.js.map +1 -0
  56. package/dist/utils/format.d.ts +62 -0
  57. package/dist/utils/format.d.ts.map +1 -0
  58. package/dist/utils/format.js +153 -0
  59. package/dist/utils/format.js.map +1 -0
  60. package/dist/utils/index.d.ts +6 -0
  61. package/dist/utils/index.d.ts.map +1 -0
  62. package/dist/utils/index.js +6 -0
  63. package/dist/utils/index.js.map +1 -0
  64. package/dist/utils/progress.d.ts +38 -0
  65. package/dist/utils/progress.d.ts.map +1 -0
  66. package/dist/utils/progress.js +70 -0
  67. package/dist/utils/progress.js.map +1 -0
  68. package/package.json +72 -0
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Sync command
3
+ *
4
+ * Manually trigger transaction sync from configured accounts.
5
+ */
6
+ import { Spinner } from "../utils/progress.js";
7
+ import { success, formatStatus } from "../utils/format.js";
8
+ import { Billclaw } from "@firela/billclaw-core";
9
+ /**
10
+ * Run sync command
11
+ */
12
+ async function runSync(context, args) {
13
+ const { runtime } = context;
14
+ const billclaw = new Billclaw(runtime);
15
+ const accountId = args.account;
16
+ const syncAll = args.all ?? false;
17
+ if (syncAll || !accountId) {
18
+ await syncAllAccounts(billclaw);
19
+ }
20
+ else {
21
+ await syncSingleAccount(billclaw, accountId);
22
+ }
23
+ }
24
+ /**
25
+ * Sync all configured accounts
26
+ */
27
+ async function syncAllAccounts(billclaw) {
28
+ const spinner = new Spinner({ text: "Getting accounts..." }).start();
29
+ try {
30
+ const accounts = await billclaw.getAccounts();
31
+ spinner.succeed(`Found ${accounts.length} account(s)`);
32
+ if (accounts.length === 0) {
33
+ console.log("No accounts configured. Run 'billclaw setup' first.");
34
+ return;
35
+ }
36
+ let totalAdded = 0;
37
+ let totalUpdated = 0;
38
+ const errors = [];
39
+ for (const account of accounts) {
40
+ const accountSpinner = new Spinner({
41
+ text: `Syncing ${account.id}...`,
42
+ }).start();
43
+ try {
44
+ let results;
45
+ switch (account.type) {
46
+ case "plaid":
47
+ results = await billclaw.syncPlaid([account.id]);
48
+ break;
49
+ case "gmail":
50
+ results = await billclaw.syncGmail([account.id]);
51
+ break;
52
+ default:
53
+ throw new Error(`Unknown account type: ${account.type}`);
54
+ }
55
+ const added = results.reduce((sum, r) => sum + r.transactionsAdded, 0);
56
+ const updated = results.reduce((sum, r) => sum + r.transactionsUpdated, 0);
57
+ totalAdded += added;
58
+ totalUpdated += updated;
59
+ accountSpinner.succeed(`${account.id}: ${formatStatus("success")} (+${added}, ~${updated})`);
60
+ for (const result of results) {
61
+ if (result.errors) {
62
+ errors.push(...result.errors);
63
+ }
64
+ }
65
+ }
66
+ catch (err) {
67
+ accountSpinner.fail(`${account.id}: ${err.message}`);
68
+ errors.push(`${account.id}: ${err.message}`);
69
+ }
70
+ }
71
+ console.log("");
72
+ console.log("Sync Summary:");
73
+ console.log(` Transactions added: ${totalAdded}`);
74
+ console.log(` Transactions updated: ${totalUpdated}`);
75
+ if (errors.length > 0) {
76
+ console.log(` Errors: ${errors.length}`);
77
+ for (const err of errors) {
78
+ console.log(` - ${err}`);
79
+ }
80
+ }
81
+ else {
82
+ success("All accounts synced successfully!");
83
+ }
84
+ }
85
+ catch (err) {
86
+ spinner.fail("Sync failed");
87
+ throw err;
88
+ }
89
+ }
90
+ /**
91
+ * Sync a single account
92
+ */
93
+ async function syncSingleAccount(billclaw, accountId) {
94
+ const spinner = new Spinner({
95
+ text: `Syncing account ${accountId}...`,
96
+ }).start();
97
+ try {
98
+ const accounts = await billclaw.getAccounts();
99
+ const account = accounts.find((a) => a.id === accountId);
100
+ if (!account) {
101
+ spinner.fail(`Account ${accountId} not found`);
102
+ return;
103
+ }
104
+ let results;
105
+ switch (account.type) {
106
+ case "plaid":
107
+ results = await billclaw.syncPlaid([accountId]);
108
+ break;
109
+ case "gmail":
110
+ results = await billclaw.syncGmail([accountId]);
111
+ break;
112
+ default:
113
+ throw new Error(`Unknown account type: ${account.type}`);
114
+ }
115
+ const added = results.reduce((sum, r) => sum + r.transactionsAdded, 0);
116
+ const updated = results.reduce((sum, r) => sum + r.transactionsUpdated, 0);
117
+ spinner.succeed(`Synced ${accountId}: +${added} new, ${updated} updated`);
118
+ const errors = results.flatMap((r) => r.errors || []);
119
+ if (errors.length > 0) {
120
+ console.log("Errors:");
121
+ for (const err of errors) {
122
+ console.log(` - ${err}`);
123
+ }
124
+ }
125
+ }
126
+ catch (err) {
127
+ spinner.fail(`Sync failed: ${err.message}`);
128
+ throw err;
129
+ }
130
+ }
131
+ /**
132
+ * Sync command definition
133
+ */
134
+ export const syncCommand = {
135
+ name: "sync",
136
+ description: "Manually trigger transaction sync",
137
+ aliases: ["pull"],
138
+ options: [
139
+ {
140
+ flags: "-a, --account <id>",
141
+ description: "Specific account ID to sync",
142
+ },
143
+ {
144
+ flags: "--all",
145
+ description: "Sync all accounts (default)",
146
+ },
147
+ ],
148
+ handler: (context, args) => runSync(context, args),
149
+ };
150
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAS,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD;;GAEG;AACH,KAAK,UAAU,OAAO,CACpB,OAAmB,EACnB,IAAyC;IAEzC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAC3B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAA;IAEtC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAA;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAA;IAEjC,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1B,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;SAAM,CAAC;QACN,MAAM,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,QAAkB;IAC/C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;IAEpE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;QAC7C,OAAO,CAAC,OAAO,CAAC,SAAS,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAA;QAEtD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAA;YAClE,OAAM;QACR,CAAC;QAED,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAI,YAAY,GAAG,CAAC,CAAA;QACpB,MAAM,MAAM,GAAa,EAAE,CAAA;QAE3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC;gBACjC,IAAI,EAAE,WAAW,OAAO,CAAC,EAAE,KAAK;aACjC,CAAC,CAAC,KAAK,EAAE,CAAA;YAEV,IAAI,CAAC;gBACH,IAAI,OAAO,CAAA;gBACX,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;oBACrB,KAAK,OAAO;wBACV,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;wBAChD,MAAK;oBACP,KAAK,OAAO;wBACV,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;wBAChD,MAAK;oBACP;wBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC5D,CAAC;gBAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;gBACtE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAC5B,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,mBAAmB,EACvC,CAAC,CACF,CAAA;gBACD,UAAU,IAAI,KAAK,CAAA;gBACnB,YAAY,IAAI,OAAO,CAAA;gBAEvB,cAAc,CAAC,OAAO,CACpB,GAAG,OAAO,CAAC,EAAE,KAAK,YAAY,CAAC,SAAS,CAAC,MAAM,KAAK,MAAM,OAAO,GAAG,CACrE,CAAA;gBAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBAClB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;oBAC/B,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;gBAC/D,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;YACzD,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QAC5B,OAAO,CAAC,GAAG,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAA;QAClD,OAAO,CAAC,GAAG,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAA;QAEtD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;YACzC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,mCAAmC,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAC3B,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAC9B,QAAkB,EAClB,SAAiB;IAEjB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,IAAI,EAAE,mBAAmB,SAAS,KAAK;KACxC,CAAC,CAAC,KAAK,EAAE,CAAA;IAEV,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAA;QAExD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;YAC9C,OAAM;QACR,CAAC;QAED,IAAI,OAAO,CAAA;QACX,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,OAAO;gBACV,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;gBAC/C,MAAK;YACP,KAAK,OAAO;gBACV,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;gBAC/C,MAAK;YACP;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;QACtE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAA;QAE1E,OAAO,CAAC,OAAO,CAAC,UAAU,SAAS,MAAM,KAAK,SAAS,OAAO,UAAU,CAAC,CAAA;QAEzE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;QACrD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACtB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,gBAAiB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QACtD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAe;IACrC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,mCAAmC;IAChD,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,OAAO,EAAE;QACP;YACE,KAAK,EAAE,oBAAoB;YAC3B,WAAW,EAAE,6BAA6B;SAC3C;QACD;YACE,KAAK,EAAE,OAAO;YACd,WAAW,EAAE,6BAA6B;SAC3C;KACF;IACD,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CACzB,OAAO,CAAC,OAAO,EAAE,IAA2C,CAAC;CAChE,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * BillClaw CLI
3
+ *
4
+ * Standalone command-line interface for financial data management.
5
+ */
6
+ import { Command } from "commander";
7
+ /**
8
+ * Create and configure the CLI program
9
+ */
10
+ export declare function createProgram(): Promise<Command>;
11
+ /**
12
+ * Main entry point
13
+ */
14
+ export declare function main(args?: string[]): Promise<void>;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAqBtD;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvE"}
package/dist/index.js ADDED
@@ -0,0 +1,45 @@
1
+ /**
2
+ * BillClaw CLI
3
+ *
4
+ * Standalone command-line interface for financial data management.
5
+ */
6
+ import { Command } from "commander";
7
+ import { CommandRegistry } from "./commands/registry.js";
8
+ import { allCommands } from "./commands/index.js";
9
+ /**
10
+ * CLI version
11
+ */
12
+ const VERSION = "0.0.1";
13
+ /**
14
+ * Create and configure the CLI program
15
+ */
16
+ export async function createProgram() {
17
+ const program = new Command();
18
+ program
19
+ .name("billclaw")
20
+ .description("BillClaw - Financial data sovereignty with multi-platform support")
21
+ .version(VERSION);
22
+ const registry = new CommandRegistry(program);
23
+ // Register all commands
24
+ for (const commandLoader of allCommands) {
25
+ const commandName = Object.keys(commandLoader)[0];
26
+ const loadCommand = Object.values(commandLoader)[0];
27
+ const command = await loadCommand();
28
+ registry.register(command);
29
+ }
30
+ return program;
31
+ }
32
+ /**
33
+ * Main entry point
34
+ */
35
+ export async function main(args = process.argv) {
36
+ try {
37
+ const program = await createProgram();
38
+ await program.parseAsync(args);
39
+ }
40
+ catch (error) {
41
+ console.error("CLI error:", error);
42
+ process.exit(1);
43
+ }
44
+ }
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD;;GAEG;AACH,MAAM,OAAO,GAAG,OAAO,CAAA;AAEvB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAE7B,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CACV,mEAAmE,CACpE;SACA,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnB,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAE7C,wBAAwB;IACxB,KAAK,MAAM,aAAa,IAAI,WAAW,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAuB,CAAA;QACzE,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAA;QACnC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI;IACtD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAA;QACrC,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * CLI config provider implementation
3
+ *
4
+ * File-based configuration provider for standalone CLI usage.
5
+ */
6
+ import type { ConfigProvider, BillclawConfig } from "@firela/billclaw-core";
7
+ /**
8
+ * CLI config provider options
9
+ */
10
+ export interface CliConfigOptions {
11
+ configDir?: string;
12
+ configPath?: string;
13
+ }
14
+ /**
15
+ * CLI config provider implementation
16
+ */
17
+ export declare class CliConfigProvider implements ConfigProvider {
18
+ private configPath;
19
+ private cachedConfig?;
20
+ constructor(options?: CliConfigOptions);
21
+ getConfig(): Promise<BillclawConfig>;
22
+ getStorageConfig(): Promise<any>;
23
+ updateAccount(accountId: string, updates: Partial<any>): Promise<void>;
24
+ getAccount(accountId: string): Promise<any | null>;
25
+ saveConfig(config: BillclawConfig): Promise<void>;
26
+ private getDefaultConfig;
27
+ }
28
+ /**
29
+ * Create a default CLI config provider
30
+ */
31
+ export declare function createConfigProvider(options?: CliConfigOptions): CliConfigProvider;
32
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE3E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAUD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,YAAY,CAAC,CAAgB;gBAEzB,OAAO,GAAE,gBAAqB;IAKpC,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IAmBpC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC;IAWhC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBtE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAKlD,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvD,OAAO,CAAC,gBAAgB;CAmBzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,gBAAgB,GACzB,iBAAiB,CAEnB"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * CLI config provider implementation
3
+ *
4
+ * File-based configuration provider for standalone CLI usage.
5
+ */
6
+ import * as fs from "node:fs";
7
+ import * as path from "node:path";
8
+ import * as os from "node:os";
9
+ /**
10
+ * Default config directory path
11
+ */
12
+ function getDefaultConfigDir() {
13
+ const home = os.homedir();
14
+ return path.join(home, ".billclaw");
15
+ }
16
+ /**
17
+ * CLI config provider implementation
18
+ */
19
+ export class CliConfigProvider {
20
+ configPath;
21
+ cachedConfig;
22
+ constructor(options = {}) {
23
+ const configDir = options.configDir ?? getDefaultConfigDir();
24
+ this.configPath = options.configPath ?? path.join(configDir, "config.json");
25
+ }
26
+ async getConfig() {
27
+ if (this.cachedConfig) {
28
+ return this.cachedConfig;
29
+ }
30
+ try {
31
+ const content = await fs.promises.readFile(this.configPath, "utf-8");
32
+ this.cachedConfig = JSON.parse(content);
33
+ return this.cachedConfig;
34
+ }
35
+ catch (err) {
36
+ if (err.code === "ENOENT") {
37
+ // Return default config if file doesn't exist
38
+ this.cachedConfig = this.getDefaultConfig();
39
+ return this.cachedConfig;
40
+ }
41
+ throw err;
42
+ }
43
+ }
44
+ async getStorageConfig() {
45
+ const config = await this.getConfig();
46
+ return (config.storage || {
47
+ path: "~/.billclaw/data",
48
+ format: "json",
49
+ encryption: { enabled: false },
50
+ });
51
+ }
52
+ async updateAccount(accountId, updates) {
53
+ const config = await this.getConfig();
54
+ const accountIndex = config.accounts.findIndex((a) => a.id === accountId);
55
+ if (accountIndex === -1) {
56
+ throw new Error(`Account ${accountId} not found`);
57
+ }
58
+ config.accounts[accountIndex] = {
59
+ ...config.accounts[accountIndex],
60
+ ...updates,
61
+ };
62
+ await this.saveConfig(config);
63
+ this.cachedConfig = config;
64
+ }
65
+ async getAccount(accountId) {
66
+ const config = await this.getConfig();
67
+ return config.accounts.find((a) => a.id === accountId) || null;
68
+ }
69
+ async saveConfig(config) {
70
+ const configDir = path.dirname(this.configPath);
71
+ // Ensure config directory exists
72
+ await fs.promises.mkdir(configDir, { recursive: true });
73
+ // Write config atomically
74
+ const tmpPath = `${this.configPath}.tmp`;
75
+ await fs.promises.writeFile(tmpPath, JSON.stringify(config, null, 2), "utf-8");
76
+ await fs.promises.rename(tmpPath, this.configPath);
77
+ this.cachedConfig = config;
78
+ }
79
+ getDefaultConfig() {
80
+ return {
81
+ accounts: [],
82
+ webhooks: [],
83
+ storage: {
84
+ path: path.join(os.homedir(), ".billclaw"),
85
+ format: "json",
86
+ encryption: { enabled: false },
87
+ },
88
+ sync: {
89
+ defaultFrequency: "manual",
90
+ maxRetries: 3,
91
+ retryOnFailure: true,
92
+ },
93
+ plaid: {
94
+ environment: "sandbox",
95
+ },
96
+ };
97
+ }
98
+ }
99
+ /**
100
+ * Create a default CLI config provider
101
+ */
102
+ export function createConfigProvider(options) {
103
+ return new CliConfigProvider(options);
104
+ }
105
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * CLI runtime context
3
+ *
4
+ * Combines logger, config provider, and event emitter for CLI usage.
5
+ */
6
+ import type { RuntimeContext } from "@firela/billclaw-core";
7
+ import { CliLogger, LogLevel } from "./logger.js";
8
+ import { CliConfigProvider } from "./config.js";
9
+ import { CliEventEmitter } from "./events.js";
10
+ /**
11
+ * CLI runtime context options
12
+ */
13
+ export interface CliRuntimeOptions {
14
+ logLevel?: LogLevel;
15
+ colors?: boolean;
16
+ timestamps?: boolean;
17
+ configDir?: string;
18
+ configPath?: string;
19
+ }
20
+ /**
21
+ * CLI runtime context
22
+ */
23
+ export declare class CliRuntimeContext implements RuntimeContext {
24
+ readonly logger: CliLogger;
25
+ readonly config: CliConfigProvider;
26
+ readonly events: CliEventEmitter;
27
+ constructor(options?: CliRuntimeOptions);
28
+ }
29
+ /**
30
+ * Create a default CLI runtime context
31
+ */
32
+ export declare function createRuntimeContext(options?: CliRuntimeOptions): CliRuntimeContext;
33
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/runtime/context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAgB,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAwB,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;gBAEpB,OAAO,GAAE,iBAAsB;CAY5C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,iBAAiB,CAEnB"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * CLI runtime context
3
+ *
4
+ * Combines logger, config provider, and event emitter for CLI usage.
5
+ */
6
+ import { createLogger } from "./logger.js";
7
+ import { createConfigProvider } from "./config.js";
8
+ import { CliEventEmitter } from "./events.js";
9
+ /**
10
+ * CLI runtime context
11
+ */
12
+ export class CliRuntimeContext {
13
+ logger;
14
+ config;
15
+ events;
16
+ constructor(options = {}) {
17
+ this.logger = createLogger({
18
+ level: options.logLevel,
19
+ colors: options.colors,
20
+ timestamps: options.timestamps,
21
+ });
22
+ this.config = createConfigProvider({
23
+ configDir: options.configDir,
24
+ configPath: options.configPath,
25
+ });
26
+ this.events = new CliEventEmitter();
27
+ }
28
+ }
29
+ /**
30
+ * Create a default CLI runtime context
31
+ */
32
+ export function createRuntimeContext(options) {
33
+ return new CliRuntimeContext(options);
34
+ }
35
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/runtime/context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAuB,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAqB,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAa7C;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACnB,MAAM,CAAW;IACjB,MAAM,CAAmB;IACzB,MAAM,CAAiB;IAEhC,YAAY,UAA6B,EAAE;QACzC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;YACzB,KAAK,EAAE,OAAO,CAAC,QAAQ;YACvB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC;YACjC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;IACrC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAA2B;IAE3B,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;AACvC,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * CLI event emitter implementation
3
+ *
4
+ * Simple in-memory event emitter for CLI usage.
5
+ */
6
+ import type { EventEmitter } from "@firela/billclaw-core";
7
+ /**
8
+ * CLI event emitter implementation
9
+ */
10
+ export declare class CliEventEmitter implements EventEmitter {
11
+ private listeners;
12
+ emit(event: string, data?: unknown): void;
13
+ on(event: string, handler: (...args: any[]) => void): void;
14
+ off(event: string, handler: (...args: any[]) => void): void;
15
+ /**
16
+ * Remove all listeners for an event or all events
17
+ */
18
+ removeAll(event?: string): void;
19
+ /**
20
+ * Get the count of listeners for an event
21
+ */
22
+ listenerCount(event: string): number;
23
+ }
24
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/runtime/events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD;;GAEG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAClD,OAAO,CAAC,SAAS,CAAmD;IAEpE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAazC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAO1D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAO3D;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ/B;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAGrC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * CLI event emitter implementation
3
+ *
4
+ * Simple in-memory event emitter for CLI usage.
5
+ */
6
+ /**
7
+ * CLI event emitter implementation
8
+ */
9
+ export class CliEventEmitter {
10
+ listeners = new Map();
11
+ emit(event, data) {
12
+ const handlers = this.listeners.get(event);
13
+ if (handlers) {
14
+ for (const handler of handlers) {
15
+ try {
16
+ handler(data);
17
+ }
18
+ catch (error) {
19
+ console.error(`Error in event handler for ${event}:`, error);
20
+ }
21
+ }
22
+ }
23
+ }
24
+ on(event, handler) {
25
+ if (!this.listeners.has(event)) {
26
+ this.listeners.set(event, new Set());
27
+ }
28
+ this.listeners.get(event).add(handler);
29
+ }
30
+ off(event, handler) {
31
+ const handlers = this.listeners.get(event);
32
+ if (handlers) {
33
+ handlers.delete(handler);
34
+ }
35
+ }
36
+ /**
37
+ * Remove all listeners for an event or all events
38
+ */
39
+ removeAll(event) {
40
+ if (event) {
41
+ this.listeners.delete(event);
42
+ }
43
+ else {
44
+ this.listeners.clear();
45
+ }
46
+ }
47
+ /**
48
+ * Get the count of listeners for an event
49
+ */
50
+ listenerCount(event) {
51
+ return this.listeners.get(event)?.size ?? 0;
52
+ }
53
+ }
54
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/runtime/events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,OAAO,eAAe;IAClB,SAAS,GAAG,IAAI,GAAG,EAAyC,CAAA;IAEpE,IAAI,CAAC,KAAa,EAAE,IAAc;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,CAAA;gBACf,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,KAAK,GAAG,EAAE,KAAK,CAAC,CAAA;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,EAAE,CAAC,KAAa,EAAE,OAAiC;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QACtC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACzC,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,OAAiC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAc;QACtB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACxB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,CAAA;IAC7C,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CLI runtime module
3
+ *
4
+ * Runtime abstractions for standalone CLI usage.
5
+ */
6
+ export { CliLogger, LogLevel, createLogger } from "./logger.js";
7
+ export { CliConfigProvider, createConfigProvider } from "./config.js";
8
+ export { CliEventEmitter } from "./events.js";
9
+ export { CliRuntimeContext, createRuntimeContext } from "./context.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CLI runtime module
3
+ *
4
+ * Runtime abstractions for standalone CLI usage.
5
+ */
6
+ export { CliLogger, LogLevel, createLogger } from "./logger.js";
7
+ export { CliConfigProvider, createConfigProvider } from "./config.js";
8
+ export { CliEventEmitter } from "./events.js";
9
+ export { CliRuntimeContext, createRuntimeContext } from "./context.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * CLI logger implementation
3
+ *
4
+ * Console-based logger with colored output and severity levels.
5
+ */
6
+ import type { Logger } from "@firela/billclaw-core";
7
+ /**
8
+ * Log level enum
9
+ */
10
+ export declare enum LogLevel {
11
+ DEBUG = 0,
12
+ INFO = 1,
13
+ WARN = 2,
14
+ ERROR = 3
15
+ }
16
+ /**
17
+ * CLI logger configuration
18
+ */
19
+ export interface CliLoggerConfig {
20
+ level: LogLevel;
21
+ colors: boolean;
22
+ timestamps: boolean;
23
+ }
24
+ /**
25
+ * CLI logger implementation
26
+ */
27
+ export declare class CliLogger implements Logger {
28
+ private config;
29
+ constructor(config?: Partial<CliLoggerConfig>);
30
+ setLevel(level: LogLevel): void;
31
+ debug(...args: unknown[]): void;
32
+ info(...args: unknown[]): void;
33
+ warn(...args: unknown[]): void;
34
+ error(...args: unknown[]): void;
35
+ private log;
36
+ }
37
+ /**
38
+ * Create a default CLI logger instance
39
+ */
40
+ export declare function createLogger(config?: Partial<CliLoggerConfig>): CliLogger;
41
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/runtime/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD;;GAEG;AACH,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,QAAQ,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;CACpB;AAuBD;;GAEG;AACH,qBAAa,SAAU,YAAW,MAAM;IACtC,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM;IAIjD,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM9B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM9B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/B,OAAO,CAAC,GAAG;CAuBZ;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,CAEzE"}