bkper 5.0.0 → 5.1.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.
@@ -1,13 +1,16 @@
1
- import { type AvailableUpgrade, type InstallMethod } from '../upgrade/index.js';
1
+ import { type UpdateNotice } from '../upgrade/index.js';
2
2
  type NotificationType = 'info' | 'warning' | 'error';
3
3
  export interface StartupMaintenanceCallbacks {
4
4
  notify: (message: string, type?: NotificationType) => void;
5
5
  }
6
6
  export interface StartupMaintenanceDependencies {
7
- getAvailableUpgrade: () => Promise<AvailableUpgrade | null>;
8
- isVersionInstalled: (method: InstallMethod, version: string) => Promise<boolean>;
9
- startDetachedUpgrade: (method: InstallMethod, version: string) => void;
7
+ readNotice: () => UpdateNotice | undefined;
8
+ startUpdateCheck: () => boolean;
10
9
  }
10
+ /**
11
+ * Reports the outcome of the last background update and starts the daily
12
+ * check. The install itself runs in the detached update worker.
13
+ */
11
14
  export declare function runStartupMaintenance(callbacks: StartupMaintenanceCallbacks, dependencies?: StartupMaintenanceDependencies): Promise<void>;
12
15
  export {};
13
16
  //# sourceMappingURL=startup-maintenance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"startup-maintenance.d.ts","sourceRoot":"","sources":["../../src/agent/startup-maintenance.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACrB,MAAM,qBAAqB,CAAC;AAE7B,KAAK,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,2BAA2B;IACxC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC9D;AAED,MAAM,WAAW,8BAA8B;IAC3C,mBAAmB,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC5D,kBAAkB,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjF,oBAAoB,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1E;AAcD,wBAAsB,qBAAqB,CACvC,SAAS,EAAE,2BAA2B,EACtC,YAAY,GAAE,8BAA4D,GAC3E,OAAO,CAAC,IAAI,CAAC,CA2Cf"}
1
+ {"version":3,"file":"startup-maintenance.d.ts","sourceRoot":"","sources":["../../src/agent/startup-maintenance.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,KAAK,YAAY,EACpB,MAAM,qBAAqB,CAAC;AAE7B,KAAK,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,2BAA2B;IACxC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC9D;AAED,MAAM,WAAW,8BAA8B;IAC3C,UAAU,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC;IAC3C,gBAAgB,EAAE,MAAM,OAAO,CAAC;CACnC;AASD;;;GAGG;AACH,wBAAsB,qBAAqB,CACvC,SAAS,EAAE,2BAA2B,EACtC,YAAY,GAAE,8BAA4D,GAC3E,OAAO,CAAC,IAAI,CAAC,CAiBf"}
@@ -7,46 +7,30 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { getAvailableUpgrade, isVersionInstalledAsync, startDetachedUpgrade, } from '../upgrade/index.js';
10
+ import { formatUpdateNotice, getUpdateNotice, isUpdateCheckDisabled, maybeStartUpdateCheck, readUpdateState, } from '../upgrade/index.js';
11
11
  function createDefaultDependencies() {
12
12
  return {
13
- getAvailableUpgrade,
14
- isVersionInstalled: isVersionInstalledAsync,
15
- startDetachedUpgrade,
13
+ readNotice: () => getUpdateNotice(readUpdateState()),
14
+ startUpdateCheck: () => maybeStartUpdateCheck(),
16
15
  };
17
16
  }
18
- function getManualUpgradeMessage(latest) {
19
- return `bkper ${latest} available. Run bkper upgrade after exit.`;
20
- }
17
+ /**
18
+ * Reports the outcome of the last background update and starts the daily
19
+ * check. The install itself runs in the detached update worker.
20
+ */
21
21
  export function runStartupMaintenance(callbacks_1) {
22
22
  return __awaiter(this, arguments, void 0, function* (callbacks, dependencies = createDefaultDependencies()) {
23
- if (process.env.BKPER_DISABLE_AUTOUPDATE) {
23
+ if (isUpdateCheckDisabled()) {
24
24
  return;
25
25
  }
26
26
  try {
27
- const availableUpgrade = yield dependencies.getAvailableUpgrade();
28
- if (!availableUpgrade) {
29
- return;
30
- }
31
- if (availableUpgrade.method === 'unknown') {
32
- callbacks.notify(getManualUpgradeMessage(availableUpgrade.latest), 'warning');
33
- return;
34
- }
35
- if (yield dependencies.isVersionInstalled(availableUpgrade.method, availableUpgrade.latest)) {
36
- callbacks.notify(`bkper ${availableUpgrade.latest} is already installed. ` +
37
- `Restart this session to use it.`, 'info');
38
- return;
39
- }
40
- try {
41
- dependencies.startDetachedUpgrade(availableUpgrade.method, availableUpgrade.latest);
42
- callbacks.notify(`Updating bkper to ${availableUpgrade.latest} in background. ` +
43
- `Restart later to use it.`, 'info');
44
- }
45
- catch (_a) {
46
- callbacks.notify(getManualUpgradeMessage(availableUpgrade.latest), 'warning');
27
+ const notice = dependencies.readNotice();
28
+ if (notice) {
29
+ callbacks.notify(formatUpdateNotice(notice), notice.kind === 'installed' ? 'info' : 'warning');
47
30
  }
31
+ dependencies.startUpdateCheck();
48
32
  }
49
- catch (_b) {
33
+ catch (_a) {
50
34
  // Silent failure — never break the TUI
51
35
  }
52
36
  });
@@ -1 +1 @@
1
- {"version":3,"file":"startup-maintenance.js","sourceRoot":"","sources":["../../src/agent/startup-maintenance.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GAGvB,MAAM,qBAAqB,CAAC;AAc7B,SAAS,yBAAyB;IAC9B,OAAO;QACH,mBAAmB;QACnB,kBAAkB,EAAE,uBAAuB;QAC3C,oBAAoB;KACvB,CAAC;AACN,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAc;IAC3C,OAAO,SAAS,MAAM,2CAA2C,CAAC;AACtE,CAAC;AAED,MAAM,UAAgB,qBAAqB;yDACvC,SAAsC,EACtC,eAA+C,yBAAyB,EAAE;QAE1E,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;YACvC,OAAO;QACX,CAAC;QAED,IAAI,CAAC;YACD,MAAM,gBAAgB,GAAG,MAAM,YAAY,CAAC,mBAAmB,EAAE,CAAC;YAClE,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpB,OAAO;YACX,CAAC;YAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACxC,SAAS,CAAC,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC9E,OAAO;YACX,CAAC;YAED,IACI,MAAM,YAAY,CAAC,kBAAkB,CACjC,gBAAgB,CAAC,MAAM,EACvB,gBAAgB,CAAC,MAAM,CAC1B,EACH,CAAC;gBACC,SAAS,CAAC,MAAM,CACZ,SAAS,gBAAgB,CAAC,MAAM,yBAAyB;oBACrD,iCAAiC,EACrC,MAAM,CACT,CAAC;gBACF,OAAO;YACX,CAAC;YAED,IAAI,CAAC;gBACD,YAAY,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACpF,SAAS,CAAC,MAAM,CACZ,qBAAqB,gBAAgB,CAAC,MAAM,kBAAkB;oBAC1D,0BAA0B,EAC9B,MAAM,CACT,CAAC;YACN,CAAC;YAAC,WAAM,CAAC;gBACL,SAAS,CAAC,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;YAClF,CAAC;QACL,CAAC;QAAC,WAAM,CAAC;YACL,uCAAuC;QAC3C,CAAC;IACL,CAAC;CAAA"}
1
+ {"version":3,"file":"startup-maintenance.js","sourceRoot":"","sources":["../../src/agent/startup-maintenance.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACH,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,GAElB,MAAM,qBAAqB,CAAC;AAa7B,SAAS,yBAAyB;IAC9B,OAAO;QACH,UAAU,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;QACpD,gBAAgB,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE;KAClD,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAgB,qBAAqB;yDACvC,SAAsC,EACtC,eAA+C,yBAAyB,EAAE;QAE1E,IAAI,qBAAqB,EAAE,EAAE,CAAC;YAC1B,OAAO;QACX,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACT,SAAS,CAAC,MAAM,CACZ,kBAAkB,CAAC,MAAM,CAAC,EAC1B,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CACnD,CAAC;YACN,CAAC;YACD,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACpC,CAAC;QAAC,WAAM,CAAC;YACL,uCAAuC;QAC3C,CAAC;IACL,CAAC;CAAA"}
package/lib/cli.js CHANGED
@@ -24,7 +24,7 @@ import { registerUpgradeCommand } from './commands/upgrade.js';
24
24
  import { registerOutputOptions } from './commands/cli-helpers.js';
25
25
  import { getAgentCommandArgs, shouldRunAgentCommand, shouldShowHelpForBareInvocation, } from './agent/cli-dispatch.js';
26
26
  import { runAgentCommandInChild } from './agent/agent-command-runner.js';
27
- import { VERSION } from './upgrade/index.js';
27
+ import { VERSION, runCommandUpdateCheck } from './upgrade/index.js';
28
28
  import { getUnsupportedNodeVersionMessage } from './utils/node-version.js';
29
29
  function registerAgentCommands(command) {
30
30
  command
@@ -50,6 +50,10 @@ function main() {
50
50
  process.exit(1);
51
51
  }
52
52
  }
53
+ // Daily background update check (never blocks, installs only safe global copies)
54
+ if (process.argv[2] !== 'upgrade') {
55
+ runCommandUpdateCheck();
56
+ }
53
57
  // Version
54
58
  program.name('bkper');
55
59
  program.version(VERSION, '-v, --version');
package/lib/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ7D"}
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAO7D"}
@@ -12,9 +12,8 @@ export function registerUpgradeCommand(program) {
12
12
  program
13
13
  .command('upgrade [version]')
14
14
  .description('Upgrade bkper CLI to the latest version')
15
- .option('--method <method>', 'Override install method detection (npm, bun, yarn)')
16
- .action((version, options) => __awaiter(this, void 0, void 0, function* () {
17
- yield foregroundUpgrade(version, options.method);
15
+ .action((version) => __awaiter(this, void 0, void 0, function* () {
16
+ yield foregroundUpgrade(version);
18
17
  }));
19
18
  }
20
19
  //# sourceMappingURL=upgrade.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACnD,OAAO;SACF,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,mBAAmB,EAAE,oDAAoD,CAAC;SACjF,MAAM,CAAC,CAAO,OAA2B,EAAE,OAA4B,EAAE,EAAE;QACxE,MAAM,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC,CAAA,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACnD,OAAO;SACF,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,CAAO,OAA2B,EAAE,EAAE;QAC1C,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,CAAA,CAAC,CAAC;AACX,CAAC"}
@@ -244,5 +244,17 @@ The complete API set of event types is listed below. `COMMENT_CREATED` and `COMM
244
244
  | `INTEGRATION_DELETED` | An integration was deleted. |
245
245
  | `BOOK_CREATED` | A book was created. |
246
246
  | `BOOK_AUDITED` | A balances audit completed for the book. |
247
+ | `BOOK_OVERNIGHT` | Daily scheduled event for the book, delivered at or after 01:00 in the book's time zone. |
247
248
  | `BOOK_UPDATED` | Book settings were updated. |
248
249
  | `BOOK_DELETED` | The book was deleted. |
250
+
251
+ ### Scheduled work with `BOOK_OVERNIGHT`
252
+
253
+ `BOOK_OVERNIGHT` lets your app run daily work on a book without waiting for a user action — for example, end-of-day recalculations, fetching external data, or consistency checks.
254
+
255
+ - **When:** once per day, at or after 01:00 in the book's time zone (UTC if the book has no time zone). Delivery may be up to about an hour later.
256
+ - **Which books:** only books where an installed app subscribes to `BOOK_OVERNIGHT`. Books without such an app receive nothing.
257
+ - **What day:** each event represents the local day that just ended. A book gets at most one `BOOK_OVERNIGHT` event per local day.
258
+ - **Idempotency:** the event `id` is stable for the book and day, so use it to skip repeated deliveries.
259
+ - **User:** the event `user` is the book owner. Your handler still runs on behalf of the user who installed the app.
260
+ - **Development webhook:** `webhookUrlDev` is used when the user who installed the app is its owner or one of its developers.
@@ -459,6 +459,7 @@ events:
459
459
  - BOOK_UPDATED
460
460
  - BOOK_DELETED
461
461
  - BOOK_AUDITED
462
+ - BOOK_OVERNIGHT # Daily per-Book event, at or after 01:00 in the Book's time zone
462
463
 
463
464
  # -----------------------------------------------------------------------------
464
465
  # FILE PATTERNS (optional)
@@ -89,7 +89,7 @@ More information at the [Bkper Developer Documentation](https://bkper.com/docs/#
89
89
  - `deprecated?`: `boolean` — Whether the app is deprecated
90
90
  - `description?`: `string` — The App description
91
91
  - `developers?`: `string` — The developers (usernames and domain patterns), comma or space separated
92
- - `events?`: `("FILE_CREATED" | "FILE_UPDATED" | "FILE_DELETED" | "TRANSACTION_CREATED" | "TRANSACTION_UPDATED" | "TRANSACTION_DELETED" | "TRANSACTION_POSTED" | "TRANSACTION_CHECKED" | "TRANSACTION_UNCHECKED" | "TRANSACTION_RESTORED" | "ACCOUNT_CREATED" | "ACCOUNT_UPDATED" | "ACCOUNT_DELETED" | "QUERY_CREATED" | "QUERY_UPDATED" | "QUERY_DELETED" | "GROUP_CREATED" | "GROUP_UPDATED" | "GROUP_DELETED" | "COMMENT_CREATED" | "COMMENT_DELETED" | "COLLABORATOR_ADDED" | "COLLABORATOR_UPDATED" | "COLLABORATOR_REMOVED" | "INTEGRATION_CREATED" | "INTEGRATION_UPDATED" | "INTEGRATION_DELETED" | "BOOK_CREATED" | "BOOK_AUDITED" | "BOOK_UPDATED" | "BOOK_DELETED")[]` — Event types the App listen to
92
+ - `events?`: `("FILE_CREATED" | "FILE_UPDATED" | "FILE_DELETED" | "TRANSACTION_CREATED" | "TRANSACTION_UPDATED" | "TRANSACTION_DELETED" | "TRANSACTION_POSTED" | "TRANSACTION_CHECKED" | "TRANSACTION_UNCHECKED" | "TRANSACTION_RESTORED" | "ACCOUNT_CREATED" | "ACCOUNT_UPDATED" | "ACCOUNT_DELETED" | "QUERY_CREATED" | "QUERY_UPDATED" | "QUERY_DELETED" | "GROUP_CREATED" | "GROUP_UPDATED" | "GROUP_DELETED" | "COMMENT_CREATED" | "COMMENT_DELETED" | "COLLABORATOR_ADDED" | "COLLABORATOR_UPDATED" | "COLLABORATOR_REMOVED" | "INTEGRATION_CREATED" | "INTEGRATION_UPDATED" | "INTEGRATION_DELETED" | "BOOK_CREATED" | "BOOK_AUDITED" | "BOOK_OVERNIGHT" | "BOOK_UPDATED" | "BOOK_DELETED")[]` — Event types the App listen to
93
93
  - `filePatterns?`: `string[]` — File patterns the App handles - wildcard accepted. E.g. *.pdf, *-bank.csv
94
94
  - `id?`: `string` — The unique agent id of the App - this can't be changed after created
95
95
  - `installable?`: `boolean` — Whether this app is installable in a book
@@ -331,7 +331,7 @@ More information at the [Bkper Developer Documentation](https://bkper.com/docs/#
331
331
  - `data?`: `bkper.EventData`
332
332
  - `id?`: `string` — The unique id that identifies the Event
333
333
  - `resource?`: `string` — The resource associated to the Event
334
- - `type?`: `"FILE_CREATED" | "FILE_UPDATED" | "FILE_DELETED" | "TRANSACTION_CREATED" | "TRANSACTION_UPDATED" | "TRANSACTION_DELETED" | "TRANSACTION_POSTED" | "TRANSACTION_CHECKED" | "TRANSACTION_UNCHECKED" | "TRANSACTION_RESTORED" | "ACCOUNT_CREATED" | "ACCOUNT_UPDATED" | "ACCOUNT_DELETED" | "QUERY_CREATED" | "QUERY_UPDATED" | "QUERY_DELETED" | "GROUP_CREATED" | "GROUP_UPDATED" | "GROUP_DELETED" | "COMMENT_CREATED" | "COMMENT_DELETED" | "COLLABORATOR_ADDED" | "COLLABORATOR_UPDATED" | "COLLABORATOR_REMOVED" | "INTEGRATION_CREATED" | "INTEGRATION_UPDATED" | "INTEGRATION_DELETED" | "BOOK_CREATED" | "BOOK_AUDITED" | "BOOK_UPDATED" | "BOOK_DELETED"` — The type of the Event
334
+ - `type?`: `"FILE_CREATED" | "FILE_UPDATED" | "FILE_DELETED" | "TRANSACTION_CREATED" | "TRANSACTION_UPDATED" | "TRANSACTION_DELETED" | "TRANSACTION_POSTED" | "TRANSACTION_CHECKED" | "TRANSACTION_UNCHECKED" | "TRANSACTION_RESTORED" | "ACCOUNT_CREATED" | "ACCOUNT_UPDATED" | "ACCOUNT_DELETED" | "QUERY_CREATED" | "QUERY_UPDATED" | "QUERY_DELETED" | "GROUP_CREATED" | "GROUP_UPDATED" | "GROUP_DELETED" | "COMMENT_CREATED" | "COMMENT_DELETED" | "COLLABORATOR_ADDED" | "COLLABORATOR_UPDATED" | "COLLABORATOR_REMOVED" | "INTEGRATION_CREATED" | "INTEGRATION_UPDATED" | "INTEGRATION_DELETED" | "BOOK_CREATED" | "BOOK_AUDITED" | "BOOK_OVERNIGHT" | "BOOK_UPDATED" | "BOOK_DELETED"` — The type of the Event
335
335
  - `user?`: `bkper.User`
336
336
 
337
337
  ### EventData
@@ -547,6 +547,8 @@ More information at the [Bkper Developer Documentation](https://bkper.com/docs/#
547
547
  - `id?`: `string` — The user unique id
548
548
  - `name?`: `string` — The user display name
549
549
  - `plan?`: `string` — The user plan
550
+ - `planAmount?`: `number` — The confirmed recurring plan total in currency minor units
551
+ - `planCurrency?`: `string` — The confirmed recurring plan currency
550
552
  - `planCycle?`: `"MONTHLY" | "YEARLY"` — The user plan billing cycle
551
553
  - `planOverdue?`: `boolean` — True if subscription payment is overdue
552
554
  - `startedTrial?`: `boolean` — True if user started trial
@@ -1403,6 +1403,7 @@ Enum that represents event types.
1403
1403
  - `BOOK_AUDITED`
1404
1404
  - `BOOK_CREATED`
1405
1405
  - `BOOK_DELETED`
1406
+ - `BOOK_OVERNIGHT` — Daily per-Book event for Apps subscribed to it, delivered at or after 01:00 in the Book's time zone.
1406
1407
  - `BOOK_UPDATED`
1407
1408
  - `COLLABORATOR_ADDED`
1408
1409
  - `COLLABORATOR_REMOVED`
@@ -1,5 +1,6 @@
1
- export { VERSION, detectMethod, detectMethodAsync, fetchLatestVersion, getUpgradeCommand, isVersionInstalledAsync, startDetachedUpgrade, } from './installation.js';
2
- export { autoUpgrade, foregroundUpgrade, getAvailableUpgrade, isNewerVersion, } from './upgrade.js';
3
- export type { InstallMethod } from './installation.js';
4
- export type { AvailableUpgrade } from './upgrade.js';
1
+ export { PACKAGE_DIR, VERSION, detectInstallMethod, fetchLatestVersion, getInstallCommand, getSelfUpdatePlan, } from './installation.js';
2
+ export { foregroundUpgrade, isNewerVersion, runUpgrade } from './upgrade.js';
3
+ export { formatUpdateNotice, getUpdateNotice, isUpdateCheckDisabled, maybeStartUpdateCheck, readUpdateState, runCommandUpdateCheck, } from './update-check.js';
4
+ export type { InstallMethod, SelfUpdatePlan } from './installation.js';
5
+ export type { UpdateNotice } from './update-check.js';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upgrade/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACH,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upgrade/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EACX,OAAO,EACP,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EACH,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,3 +1,4 @@
1
- export { VERSION, detectMethod, detectMethodAsync, fetchLatestVersion, getUpgradeCommand, isVersionInstalledAsync, startDetachedUpgrade, } from './installation.js';
2
- export { autoUpgrade, foregroundUpgrade, getAvailableUpgrade, isNewerVersion, } from './upgrade.js';
1
+ export { PACKAGE_DIR, VERSION, detectInstallMethod, fetchLatestVersion, getInstallCommand, getSelfUpdatePlan, } from './installation.js';
2
+ export { foregroundUpgrade, isNewerVersion, runUpgrade } from './upgrade.js';
3
+ export { formatUpdateNotice, getUpdateNotice, isUpdateCheckDisabled, maybeStartUpdateCheck, readUpdateState, runCommandUpdateCheck, } from './update-check.js';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/upgrade/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACH,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,GACjB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/upgrade/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EACX,OAAO,EACP,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EACH,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,GACxB,MAAM,mBAAmB,CAAC"}
@@ -1,38 +1,72 @@
1
1
  /** Current installed version of the CLI. */
2
2
  export declare const VERSION: string;
3
+ /** Directory of the running bkper package (the folder holding its package.json). */
4
+ export declare const PACKAGE_DIR: string;
3
5
  /** Supported installation methods. */
4
- export type InstallMethod = 'npm' | 'bun' | 'yarn' | 'unknown';
5
- export type CommandRunner = (command: string, timeoutMs: number) => Promise<string>;
6
- export type DetachedCommandStarter = (command: string) => void;
6
+ export type InstallMethod = 'npm' | 'pnpm' | 'yarn' | 'bun' | 'unknown';
7
+ /** Where the running CLI lives and how it was started. */
8
+ export interface RuntimeLocation {
9
+ packageDir: string;
10
+ /** process.argv[1], not symlink-resolved. */
11
+ entrypoint?: string;
12
+ execPath: string;
13
+ isBunRuntime: boolean;
14
+ platform: NodeJS.Platform;
15
+ }
16
+ /** Side effects needed to decide whether the running copy can upgrade itself. */
17
+ export interface SelfUpdateEnvironment {
18
+ homedir: string;
19
+ readCommandOutput: (command: string) => string | undefined;
20
+ isWritable: (dir: string) => boolean;
21
+ }
22
+ export interface InstallPlan {
23
+ kind: 'install';
24
+ method: InstallMethod;
25
+ packageDir: string;
26
+ command: string;
27
+ /** package.json to read after installing, reached through the global root. */
28
+ packageJsonPath: string;
29
+ }
30
+ export interface ManualPlan {
31
+ kind: 'manual';
32
+ method: InstallMethod;
33
+ packageDir: string;
34
+ instruction: string;
35
+ }
36
+ export type SelfUpdatePlan = InstallPlan | ManualPlan;
37
+ export declare function getRuntimeLocation(): RuntimeLocation;
7
38
  /**
8
- * Detects how the CLI was installed by checking global package lists
9
- * for each supported package manager.
39
+ * Detects the package manager from the location of the running code
40
+ * (same rules as Pi's detectInstallMethod).
10
41
  */
11
- export declare function detectMethod(): InstallMethod;
42
+ export declare function detectInstallMethod(location?: RuntimeLocation): InstallMethod;
12
43
  /**
13
- * Async version of installation method detection to avoid blocking the event loop.
44
+ * Infers the npm prefix from a `<prefix>/lib/node_modules/bkper` layout.
45
+ * Windows prefixes look like project installs, so they are never inferred.
14
46
  */
15
- export declare function detectMethodAsync(commandRunner?: CommandRunner): Promise<InstallMethod>;
47
+ export declare function inferNpmPrefix(packageDir: string, platform: NodeJS.Platform): string | undefined;
16
48
  /**
17
- * Checks whether a specific Bkper version is already installed globally.
49
+ * Returns the shell command that installs a version with a package manager.
18
50
  */
19
- export declare function isVersionInstalledAsync(method: InstallMethod, version: string, commandRunner?: CommandRunner): Promise<boolean>;
51
+ export declare function getInstallCommand(method: InstallMethod, version: string, npmPrefix?: string): string | null;
20
52
  /**
21
- * Fetches the latest published version from the npm registry.
22
- * Returns null if the fetch fails.
53
+ * Decides whether the running copy can safely upgrade itself: it must be
54
+ * inside its package manager's global root and writable. Otherwise returns
55
+ * the manual instruction to show. Never suggests sudo.
23
56
  */
24
- export declare function fetchLatestVersion(): Promise<string | null>;
57
+ export declare function getSelfUpdatePlan(version: string, location?: RuntimeLocation, environment?: SelfUpdateEnvironment): SelfUpdatePlan;
25
58
  /**
26
- * Returns the shell command to upgrade the CLI for a given install method and version.
59
+ * Reads a package version from disk, bypassing the module cache.
27
60
  */
28
- export declare function getUpgradeCommand(method: InstallMethod, version: string): string | null;
61
+ export declare function readInstalledVersion(packageJsonPath: string): string | undefined;
29
62
  /**
30
- * Executes the upgrade to the specified version using the given install method.
31
- * Throws if the upgrade command fails.
63
+ * Runs an install command synchronously. BKPER_AUTOUPDATE_COMMAND replaces
64
+ * the command (for tests) but never the safety checks that lead here.
32
65
  */
33
- export declare function executeUpgrade(method: InstallMethod, version: string): void;
66
+ export declare function runInstallCommand(command: string): void;
34
67
  /**
35
- * Starts the upgrade in a detached background process.
68
+ * Fetches the latest published version from the npm registry.
69
+ * Returns null if the fetch fails.
36
70
  */
37
- export declare function startDetachedUpgrade(method: InstallMethod, version: string, commandStarter?: DetachedCommandStarter): void;
71
+ export declare function fetchLatestVersion(timeoutMs?: number): Promise<string | null>;
38
72
  //# sourceMappingURL=installation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../src/upgrade/installation.ts"],"names":[],"mappings":"AAMA,4CAA4C;AAC5C,eAAO,MAAM,OAAO,EAAE,MAAoB,CAAC;AAK3C,sCAAsC;AACtC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AACpF,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAwC/D;;;GAGG;AACH,wBAAgB,YAAY,IAAI,aAAa,CAkB5C;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACnC,aAAa,GAAE,aAAoC,GACpD,OAAO,CAAC,aAAa,CAAC,CAaxB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CACzC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,aAAa,GAAE,aAAoC,GACpD,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWvF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAS3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,cAAc,GAAE,sBAAsD,GACvE,IAAI,CAUN"}
1
+ {"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../src/upgrade/installation.ts"],"names":[],"mappings":"AAUA,4CAA4C;AAC5C,eAAO,MAAM,OAAO,EAAE,MAAoB,CAAC;AAK3C,oFAAoF;AACpF,eAAO,MAAM,WAAW,EAAE,MAGzB,CAAC;AAEF,sCAAsC;AACtC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAExE,0DAA0D;AAC1D,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC7B;AAED,iFAAiF;AACjF,MAAM,WAAW,qBAAqB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3D,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,UAAU,CAAC;AAEtD,wBAAgB,kBAAkB,IAAI,eAAe,CAQpD;AAiCD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,eAAsC,GAAG,aAAa,CAkBnG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,CAWhG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAgBf;AA+FD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,eAAsC,EAChD,WAAW,GAAE,qBAAyD,GACvE,cAAc,CA6ChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOhF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGvD;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBjF"}