@chromahq/core 1.0.61 → 1.0.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var core = require('@inversifyjs/core');
4
- var boot = require('./boot-CYBjSPxy.js');
4
+ var boot = require('./boot-BlwTZbY7.js');
5
5
  require('@inversifyjs/container');
6
6
 
7
7
  function Service() {
@@ -29,13 +29,10 @@ class Job {
29
29
  this.data = data;
30
30
  }
31
31
  pause() {
32
- console.log(`Job ${this.constructor.name} paused`);
33
32
  }
34
33
  resume() {
35
- console.log(`Job ${this.constructor.name} resumed`);
36
34
  }
37
35
  stop() {
38
- console.log(`Job ${this.constructor.name} stopped`);
39
36
  }
40
37
  }
41
38
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/decorators/Service.ts","../src/decorators/Message.ts","../src/scheduler/core/Job.ts","../src/scheduler/decorators/Job.ts","../src/scheduler/decorators/Delay.ts","../src/scheduler/decorators/Every.ts","../src/scheduler/decorators/EverySeconds.ts","../src/services/booteable.ts"],"sourcesContent":["import { inject, injectable } from '@inversifyjs/core';\n\nexport function Service() {\n return injectable();\n}\n\nexport const Use = (id: symbol | string | NewableFunction) => inject(id);\nexport const Store = () => Use(Symbol.for('Store'));\nexport const EventBus = () => Use(Symbol.for('EventBus'));\n","import { injectable } from '@inversifyjs/core';\n\nexport abstract class IMessage {\n handle(...args: any[]): Promise<void> | void {\n throw new Error('Method not implemented.');\n }\n}\n\nexport function Message(name: string) {\n return function (constructor: any) {\n injectable()(constructor);\n Reflect.defineMetadata('name', name, constructor);\n return constructor;\n };\n}\n","import { IJob, JobContext } from './IJob';\n\nexport abstract class Job<T = unknown> implements IJob<T> {\n constructor(public readonly data?: T) {}\n\n abstract handle(context?: JobContext): Promise<void> | void;\n\n pause?(): Promise<void> | void {\n console.log(`Job ${this.constructor.name} paused`);\n }\n\n resume?(): Promise<void> | void {\n console.log(`Job ${this.constructor.name} resumed`);\n }\n\n stop?(): Promise<void> | void {\n console.log(`Job ${this.constructor.name} stopped`);\n }\n}\n","import { injectable } from '@inversifyjs/core';\nimport { JobOptions } from '../core/JobOptions';\n\nexport function JobConfig<T extends new (...args: any[]) => any>(options: JobOptions = {}) {\n return function (constructor: any) {\n injectable()(constructor);\n Reflect.defineMetadata('job:options', options, constructor);\n return constructor;\n };\n}\n","import { JobConfig } from './Job';\n\nexport const Delay = (ms: number) => JobConfig({ delay: ms });\n","import { injectable } from '@inversifyjs/core';\n\n/**\n * Options for the Every decorator.\n */\nexport interface EveryOptions {\n /**\n * If true, the job will only execute when the popup (or extension view) is visible.\n * This reduces unnecessary background activity when the user isn't looking at the extension.\n */\n requiresPopup?: boolean;\n\n /**\n * Explicit job name (survives minification). Recommended for production builds.\n */\n name?: string;\n\n /**\n * If true, job starts paused and must be resumed manually via Scheduler.resume()\n */\n startPaused?: boolean;\n\n /**\n * When true, scheduler diagnostics for this job are logged at `info` instead of only `debug`.\n * @see JobOptions.schedulerDebug\n */\n schedulerDebug?: boolean;\n}\n\n/**\n * Decorator for scheduling jobs using cron expressions.\n *\n * @param cron - Cron expression (e.g., '0 *\\/5 * * * *' for every 5 minutes)\n * @param options - Optional configuration for the job\n *\n * @example\n * ```typescript\n * // Basic usage - runs every 5 minutes\n * @Every('0 *\\/5 * * * *')\n * export class MyJob { ... }\n *\n * // With options - only runs when popup is visible\n * @Every('0 *\\/5 * * * *', { requiresPopup: true, name: 'MyJob' })\n * export class MyJob { ... }\n *\n * // Scheduler diagnostics at info for this job only\n * @Every('0 *\\/1 * * * *', { name: 'NoisyJob', schedulerDebug: true })\n * export class NoisyJob { ... }\n * ```\n */\nexport function Every(cron: string, options?: EveryOptions) {\n return function (constructor: any) {\n injectable()(constructor);\n\n // Set explicit name metadata to survive minification\n if (options?.name) {\n Reflect.defineMetadata('name', options.name, constructor);\n }\n\n Reflect.defineMetadata(\n 'job:options',\n {\n cron,\n requiresPopup: options?.requiresPopup ?? false,\n startPaused: options?.startPaused ?? false,\n schedulerDebug: options?.schedulerDebug ?? false,\n },\n constructor,\n );\n return constructor;\n };\n}\n","import { injectable } from '@inversifyjs/core';\n\n/**\n * Options for the EverySeconds decorator.\n */\nexport interface EverySecondsOptions {\n /** If true, job starts paused and must be resumed manually via Scheduler.resume() */\n startPaused?: boolean;\n\n /** Explicit job name (survives minification). Required for production builds. */\n name?: string;\n\n /**\n * If true, the job will only execute when the popup (or extension view) is visible.\n * This reduces unnecessary background activity when the user isn't looking at the extension.\n */\n requiresPopup?: boolean;\n\n /**\n * When true, scheduler diagnostics for this job are logged at `info` instead of only `debug`.\n * @see JobOptions.schedulerDebug\n */\n schedulerDebug?: boolean;\n}\n\n/**\n * Decorator for jobs that run at a specific interval in seconds.\n * Unlike cron expressions which have minute-level granularity,\n * this decorator allows for second-level precision.\n *\n * @param seconds - The interval in seconds between job executions\n * @param options - Optional configuration (startPaused, name, requiresPopup, etc.)\n *\n * @example\n * ```typescript\n * // Auto-starting job (default)\n * @EverySeconds(5, { name: 'MyJob' })\n * export class MyJob implements IJob {\n * async handle(context: JobContext) {\n * console.log('Runs every 5 seconds');\n * }\n * }\n *\n * // Job that only runs when popup is visible\n * @EverySeconds(10, { name: 'UiUpdateJob', requiresPopup: true })\n * export class UiUpdateJob implements IJob {\n * async handle(context: JobContext) {\n * console.log('Only runs when user is viewing extension');\n * }\n * }\n *\n * // Paused job that must be manually resumed\n * @EverySeconds(2, { startPaused: true, name: 'OnDemandJob' })\n * export class OnDemandJob implements IJob {\n * async handle(context: JobContext) {\n * console.log('Runs when resumed');\n * }\n * }\n * ```\n */\nexport function EverySeconds(seconds: number, options?: EverySecondsOptions) {\n return function (constructor: any) {\n injectable()(constructor);\n // Set explicit name metadata to survive minification\n if (options?.name) {\n Reflect.defineMetadata('name', options.name, constructor);\n }\n\n Reflect.defineMetadata(\n 'job:options',\n {\n delay: seconds * 1000,\n recurring: true,\n startPaused: options?.startPaused ?? false,\n requiresPopup: options?.requiresPopup ?? false,\n schedulerDebug: options?.schedulerDebug ?? false,\n },\n constructor,\n );\n return constructor;\n };\n}\n","export abstract class Booteable {\n /**\n * Boot method to be called when the service is initialized.\n * This method can be used to perform any setup or initialization logic.\n */\n abstract boot(): void;\n /**\n * Optional destroy method to be called when the service is being destroyed.\n * This can be used to clean up resources or perform any necessary teardown logic.\n */\n destroy?(): void {\n // Default implementation does nothing\n }\n}\n\nexport function isBooteable(obj: any): obj is Booteable {\n return typeof obj.boot === 'function';\n}\n\nexport function isDestroyable(obj: any): obj is Booteable {\n return typeof obj.destroy === 'function';\n}\n"],"names":["injectable","inject"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/decorators/Service.ts","../src/decorators/Message.ts","../src/scheduler/core/Job.ts","../src/scheduler/decorators/Job.ts","../src/scheduler/decorators/Delay.ts","../src/scheduler/decorators/Every.ts","../src/scheduler/decorators/EverySeconds.ts","../src/services/booteable.ts"],"sourcesContent":["import { inject, injectable } from '@inversifyjs/core';\n\nexport function Service() {\n return injectable();\n}\n\nexport const Use = (id: symbol | string | NewableFunction) => inject(id);\nexport const Store = () => Use(Symbol.for('Store'));\nexport const EventBus = () => Use(Symbol.for('EventBus'));\n","import { injectable } from '@inversifyjs/core';\n\nexport abstract class IMessage {\n handle(...args: any[]): Promise<void> | void {\n throw new Error('Method not implemented.');\n }\n}\n\nexport function Message(name: string) {\n return function (constructor: any) {\n injectable()(constructor);\n Reflect.defineMetadata('name', name, constructor);\n return constructor;\n };\n}\n","import { IJob, JobContext } from './IJob';\n\nexport abstract class Job<T = unknown> implements IJob<T> {\n constructor(public readonly data?: T) {}\n\n abstract handle(context?: JobContext): Promise<void> | void;\n\n pause?(): Promise<void> | void {}\n\n resume?(): Promise<void> | void {}\n\n stop?(): Promise<void> | void {}\n}\n","import { injectable } from '@inversifyjs/core';\nimport { JobOptions } from '../core/JobOptions';\n\nexport function JobConfig<T extends new (...args: any[]) => any>(options: JobOptions = {}) {\n return function (constructor: any) {\n injectable()(constructor);\n Reflect.defineMetadata('job:options', options, constructor);\n return constructor;\n };\n}\n","import { JobConfig } from './Job';\n\nexport const Delay = (ms: number) => JobConfig({ delay: ms });\n","import { injectable } from '@inversifyjs/core';\n\n/**\n * Options for the Every decorator.\n */\nexport interface EveryOptions {\n /**\n * If true, the job will only execute when the popup (or extension view) is visible.\n * This reduces unnecessary background activity when the user isn't looking at the extension.\n */\n requiresPopup?: boolean;\n\n /**\n * Explicit job name (survives minification). Recommended for production builds.\n */\n name?: string;\n\n /**\n * If true, job starts paused and must be resumed manually via Scheduler.resume()\n */\n startPaused?: boolean;\n\n /**\n * When true, scheduler diagnostics for this job are logged at `info` instead of only `debug`.\n * @see JobOptions.schedulerDebug\n */\n schedulerDebug?: boolean;\n}\n\n/**\n * Decorator for scheduling jobs using cron expressions.\n *\n * @param cron - Cron expression (e.g., '0 *\\/5 * * * *' for every 5 minutes)\n * @param options - Optional configuration for the job\n *\n * @example\n * ```typescript\n * // Basic usage - runs every 5 minutes\n * @Every('0 *\\/5 * * * *')\n * export class MyJob { ... }\n *\n * // With options - only runs when popup is visible\n * @Every('0 *\\/5 * * * *', { requiresPopup: true, name: 'MyJob' })\n * export class MyJob { ... }\n *\n * // Scheduler diagnostics at info for this job only\n * @Every('0 *\\/1 * * * *', { name: 'NoisyJob', schedulerDebug: true })\n * export class NoisyJob { ... }\n * ```\n */\nexport function Every(cron: string, options?: EveryOptions) {\n return function (constructor: any) {\n injectable()(constructor);\n\n // Set explicit name metadata to survive minification\n if (options?.name) {\n Reflect.defineMetadata('name', options.name, constructor);\n }\n\n Reflect.defineMetadata(\n 'job:options',\n {\n cron,\n requiresPopup: options?.requiresPopup ?? false,\n startPaused: options?.startPaused ?? false,\n schedulerDebug: options?.schedulerDebug ?? false,\n },\n constructor,\n );\n return constructor;\n };\n}\n","import { injectable } from '@inversifyjs/core';\n\n/**\n * Options for the EverySeconds decorator.\n */\nexport interface EverySecondsOptions {\n /** If true, job starts paused and must be resumed manually via Scheduler.resume() */\n startPaused?: boolean;\n\n /** Explicit job name (survives minification). Required for production builds. */\n name?: string;\n\n /**\n * If true, the job will only execute when the popup (or extension view) is visible.\n * This reduces unnecessary background activity when the user isn't looking at the extension.\n */\n requiresPopup?: boolean;\n\n /**\n * When true, scheduler diagnostics for this job are logged at `info` instead of only `debug`.\n * @see JobOptions.schedulerDebug\n */\n schedulerDebug?: boolean;\n}\n\n/**\n * Decorator for jobs that run at a specific interval in seconds.\n * Unlike cron expressions which have minute-level granularity,\n * this decorator allows for second-level precision.\n *\n * @param seconds - The interval in seconds between job executions\n * @param options - Optional configuration (startPaused, name, requiresPopup, etc.)\n *\n * @example\n * ```typescript\n * // Auto-starting job (default)\n * @EverySeconds(5, { name: 'MyJob' })\n * export class MyJob implements IJob {\n * async handle(context: JobContext) {\n * console.log('Runs every 5 seconds');\n * }\n * }\n *\n * // Job that only runs when popup is visible\n * @EverySeconds(10, { name: 'UiUpdateJob', requiresPopup: true })\n * export class UiUpdateJob implements IJob {\n * async handle(context: JobContext) {\n * console.log('Only runs when user is viewing extension');\n * }\n * }\n *\n * // Paused job that must be manually resumed\n * @EverySeconds(2, { startPaused: true, name: 'OnDemandJob' })\n * export class OnDemandJob implements IJob {\n * async handle(context: JobContext) {\n * console.log('Runs when resumed');\n * }\n * }\n * ```\n */\nexport function EverySeconds(seconds: number, options?: EverySecondsOptions) {\n return function (constructor: any) {\n injectable()(constructor);\n // Set explicit name metadata to survive minification\n if (options?.name) {\n Reflect.defineMetadata('name', options.name, constructor);\n }\n\n Reflect.defineMetadata(\n 'job:options',\n {\n delay: seconds * 1000,\n recurring: true,\n startPaused: options?.startPaused ?? false,\n requiresPopup: options?.requiresPopup ?? false,\n schedulerDebug: options?.schedulerDebug ?? false,\n },\n constructor,\n );\n return constructor;\n };\n}\n","export abstract class Booteable {\n /**\n * Boot method to be called when the service is initialized.\n * This method can be used to perform any setup or initialization logic.\n */\n abstract boot(): void;\n /**\n * Optional destroy method to be called when the service is being destroyed.\n * This can be used to clean up resources or perform any necessary teardown logic.\n */\n destroy?(): void {\n // Default implementation does nothing\n }\n}\n\nexport function isBooteable(obj: any): obj is Booteable {\n return typeof obj.boot === 'function';\n}\n\nexport function isDestroyable(obj: any): obj is Booteable {\n return typeof obj.destroy === 'function';\n}\n"],"names":["injectable","inject"],"mappings":"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"}
package/dist/index.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { inject, injectable } from '@inversifyjs/core';
2
- export { A as AppEventBus, E as EventBusToken, J as JobRegistry, l as JobState, N as NonceService, P as PopupVisibilityService, a as SUBSCRIBE_METADATA_KEY, k as Scheduler, S as Subscribe, e as arePortsClaimed, j as bootstrap, d as claimEarlyPorts, f as container, h as create, b as getNonceService, c as getPopupVisibilityService, g as getSubscribeMetadata, i as isEarlyListenerSetup, s as setupEarlyListener } from './boot-yaI0mE0N.js';
2
+ export { A as AppEventBus, E as EventBusToken, J as JobRegistry, l as JobState, N as NonceService, P as PopupVisibilityService, a as SUBSCRIBE_METADATA_KEY, k as Scheduler, S as Subscribe, e as arePortsClaimed, j as bootstrap, d as claimEarlyPorts, f as container, h as create, b as getNonceService, c as getPopupVisibilityService, g as getSubscribeMetadata, i as isEarlyListenerSetup, s as setupEarlyListener } from './boot-Ap8sFDzW.js';
3
3
  import '@inversifyjs/container';
4
4
 
5
5
  function Service() {
@@ -27,13 +27,10 @@ class Job {
27
27
  this.data = data;
28
28
  }
29
29
  pause() {
30
- console.log(`Job ${this.constructor.name} paused`);
31
30
  }
32
31
  resume() {
33
- console.log(`Job ${this.constructor.name} resumed`);
34
32
  }
35
33
  stop() {
36
- console.log(`Job ${this.constructor.name} stopped`);
37
34
  }
38
35
  }
39
36
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/decorators/Service.ts","../src/decorators/Message.ts","../src/scheduler/core/Job.ts","../src/scheduler/decorators/Job.ts","../src/scheduler/decorators/Delay.ts","../src/scheduler/decorators/Every.ts","../src/scheduler/decorators/EverySeconds.ts","../src/services/booteable.ts"],"sourcesContent":["import { inject, injectable } from '@inversifyjs/core';\n\nexport function Service() {\n return injectable();\n}\n\nexport const Use = (id: symbol | string | NewableFunction) => inject(id);\nexport const Store = () => Use(Symbol.for('Store'));\nexport const EventBus = () => Use(Symbol.for('EventBus'));\n","import { injectable } from '@inversifyjs/core';\n\nexport abstract class IMessage {\n handle(...args: any[]): Promise<void> | void {\n throw new Error('Method not implemented.');\n }\n}\n\nexport function Message(name: string) {\n return function (constructor: any) {\n injectable()(constructor);\n Reflect.defineMetadata('name', name, constructor);\n return constructor;\n };\n}\n","import { IJob, JobContext } from './IJob';\n\nexport abstract class Job<T = unknown> implements IJob<T> {\n constructor(public readonly data?: T) {}\n\n abstract handle(context?: JobContext): Promise<void> | void;\n\n pause?(): Promise<void> | void {\n console.log(`Job ${this.constructor.name} paused`);\n }\n\n resume?(): Promise<void> | void {\n console.log(`Job ${this.constructor.name} resumed`);\n }\n\n stop?(): Promise<void> | void {\n console.log(`Job ${this.constructor.name} stopped`);\n }\n}\n","import { injectable } from '@inversifyjs/core';\nimport { JobOptions } from '../core/JobOptions';\n\nexport function JobConfig<T extends new (...args: any[]) => any>(options: JobOptions = {}) {\n return function (constructor: any) {\n injectable()(constructor);\n Reflect.defineMetadata('job:options', options, constructor);\n return constructor;\n };\n}\n","import { JobConfig } from './Job';\n\nexport const Delay = (ms: number) => JobConfig({ delay: ms });\n","import { injectable } from '@inversifyjs/core';\n\n/**\n * Options for the Every decorator.\n */\nexport interface EveryOptions {\n /**\n * If true, the job will only execute when the popup (or extension view) is visible.\n * This reduces unnecessary background activity when the user isn't looking at the extension.\n */\n requiresPopup?: boolean;\n\n /**\n * Explicit job name (survives minification). Recommended for production builds.\n */\n name?: string;\n\n /**\n * If true, job starts paused and must be resumed manually via Scheduler.resume()\n */\n startPaused?: boolean;\n\n /**\n * When true, scheduler diagnostics for this job are logged at `info` instead of only `debug`.\n * @see JobOptions.schedulerDebug\n */\n schedulerDebug?: boolean;\n}\n\n/**\n * Decorator for scheduling jobs using cron expressions.\n *\n * @param cron - Cron expression (e.g., '0 *\\/5 * * * *' for every 5 minutes)\n * @param options - Optional configuration for the job\n *\n * @example\n * ```typescript\n * // Basic usage - runs every 5 minutes\n * @Every('0 *\\/5 * * * *')\n * export class MyJob { ... }\n *\n * // With options - only runs when popup is visible\n * @Every('0 *\\/5 * * * *', { requiresPopup: true, name: 'MyJob' })\n * export class MyJob { ... }\n *\n * // Scheduler diagnostics at info for this job only\n * @Every('0 *\\/1 * * * *', { name: 'NoisyJob', schedulerDebug: true })\n * export class NoisyJob { ... }\n * ```\n */\nexport function Every(cron: string, options?: EveryOptions) {\n return function (constructor: any) {\n injectable()(constructor);\n\n // Set explicit name metadata to survive minification\n if (options?.name) {\n Reflect.defineMetadata('name', options.name, constructor);\n }\n\n Reflect.defineMetadata(\n 'job:options',\n {\n cron,\n requiresPopup: options?.requiresPopup ?? false,\n startPaused: options?.startPaused ?? false,\n schedulerDebug: options?.schedulerDebug ?? false,\n },\n constructor,\n );\n return constructor;\n };\n}\n","import { injectable } from '@inversifyjs/core';\n\n/**\n * Options for the EverySeconds decorator.\n */\nexport interface EverySecondsOptions {\n /** If true, job starts paused and must be resumed manually via Scheduler.resume() */\n startPaused?: boolean;\n\n /** Explicit job name (survives minification). Required for production builds. */\n name?: string;\n\n /**\n * If true, the job will only execute when the popup (or extension view) is visible.\n * This reduces unnecessary background activity when the user isn't looking at the extension.\n */\n requiresPopup?: boolean;\n\n /**\n * When true, scheduler diagnostics for this job are logged at `info` instead of only `debug`.\n * @see JobOptions.schedulerDebug\n */\n schedulerDebug?: boolean;\n}\n\n/**\n * Decorator for jobs that run at a specific interval in seconds.\n * Unlike cron expressions which have minute-level granularity,\n * this decorator allows for second-level precision.\n *\n * @param seconds - The interval in seconds between job executions\n * @param options - Optional configuration (startPaused, name, requiresPopup, etc.)\n *\n * @example\n * ```typescript\n * // Auto-starting job (default)\n * @EverySeconds(5, { name: 'MyJob' })\n * export class MyJob implements IJob {\n * async handle(context: JobContext) {\n * console.log('Runs every 5 seconds');\n * }\n * }\n *\n * // Job that only runs when popup is visible\n * @EverySeconds(10, { name: 'UiUpdateJob', requiresPopup: true })\n * export class UiUpdateJob implements IJob {\n * async handle(context: JobContext) {\n * console.log('Only runs when user is viewing extension');\n * }\n * }\n *\n * // Paused job that must be manually resumed\n * @EverySeconds(2, { startPaused: true, name: 'OnDemandJob' })\n * export class OnDemandJob implements IJob {\n * async handle(context: JobContext) {\n * console.log('Runs when resumed');\n * }\n * }\n * ```\n */\nexport function EverySeconds(seconds: number, options?: EverySecondsOptions) {\n return function (constructor: any) {\n injectable()(constructor);\n // Set explicit name metadata to survive minification\n if (options?.name) {\n Reflect.defineMetadata('name', options.name, constructor);\n }\n\n Reflect.defineMetadata(\n 'job:options',\n {\n delay: seconds * 1000,\n recurring: true,\n startPaused: options?.startPaused ?? false,\n requiresPopup: options?.requiresPopup ?? false,\n schedulerDebug: options?.schedulerDebug ?? false,\n },\n constructor,\n );\n return constructor;\n };\n}\n","export abstract class Booteable {\n /**\n * Boot method to be called when the service is initialized.\n * This method can be used to perform any setup or initialization logic.\n */\n abstract boot(): void;\n /**\n * Optional destroy method to be called when the service is being destroyed.\n * This can be used to clean up resources or perform any necessary teardown logic.\n */\n destroy?(): void {\n // Default implementation does nothing\n }\n}\n\nexport function isBooteable(obj: any): obj is Booteable {\n return typeof obj.boot === 'function';\n}\n\nexport function isDestroyable(obj: any): obj is Booteable {\n return typeof obj.destroy === 'function';\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/decorators/Service.ts","../src/decorators/Message.ts","../src/scheduler/core/Job.ts","../src/scheduler/decorators/Job.ts","../src/scheduler/decorators/Delay.ts","../src/scheduler/decorators/Every.ts","../src/scheduler/decorators/EverySeconds.ts","../src/services/booteable.ts"],"sourcesContent":["import { inject, injectable } from '@inversifyjs/core';\n\nexport function Service() {\n return injectable();\n}\n\nexport const Use = (id: symbol | string | NewableFunction) => inject(id);\nexport const Store = () => Use(Symbol.for('Store'));\nexport const EventBus = () => Use(Symbol.for('EventBus'));\n","import { injectable } from '@inversifyjs/core';\n\nexport abstract class IMessage {\n handle(...args: any[]): Promise<void> | void {\n throw new Error('Method not implemented.');\n }\n}\n\nexport function Message(name: string) {\n return function (constructor: any) {\n injectable()(constructor);\n Reflect.defineMetadata('name', name, constructor);\n return constructor;\n };\n}\n","import { IJob, JobContext } from './IJob';\n\nexport abstract class Job<T = unknown> implements IJob<T> {\n constructor(public readonly data?: T) {}\n\n abstract handle(context?: JobContext): Promise<void> | void;\n\n pause?(): Promise<void> | void {}\n\n resume?(): Promise<void> | void {}\n\n stop?(): Promise<void> | void {}\n}\n","import { injectable } from '@inversifyjs/core';\nimport { JobOptions } from '../core/JobOptions';\n\nexport function JobConfig<T extends new (...args: any[]) => any>(options: JobOptions = {}) {\n return function (constructor: any) {\n injectable()(constructor);\n Reflect.defineMetadata('job:options', options, constructor);\n return constructor;\n };\n}\n","import { JobConfig } from './Job';\n\nexport const Delay = (ms: number) => JobConfig({ delay: ms });\n","import { injectable } from '@inversifyjs/core';\n\n/**\n * Options for the Every decorator.\n */\nexport interface EveryOptions {\n /**\n * If true, the job will only execute when the popup (or extension view) is visible.\n * This reduces unnecessary background activity when the user isn't looking at the extension.\n */\n requiresPopup?: boolean;\n\n /**\n * Explicit job name (survives minification). Recommended for production builds.\n */\n name?: string;\n\n /**\n * If true, job starts paused and must be resumed manually via Scheduler.resume()\n */\n startPaused?: boolean;\n\n /**\n * When true, scheduler diagnostics for this job are logged at `info` instead of only `debug`.\n * @see JobOptions.schedulerDebug\n */\n schedulerDebug?: boolean;\n}\n\n/**\n * Decorator for scheduling jobs using cron expressions.\n *\n * @param cron - Cron expression (e.g., '0 *\\/5 * * * *' for every 5 minutes)\n * @param options - Optional configuration for the job\n *\n * @example\n * ```typescript\n * // Basic usage - runs every 5 minutes\n * @Every('0 *\\/5 * * * *')\n * export class MyJob { ... }\n *\n * // With options - only runs when popup is visible\n * @Every('0 *\\/5 * * * *', { requiresPopup: true, name: 'MyJob' })\n * export class MyJob { ... }\n *\n * // Scheduler diagnostics at info for this job only\n * @Every('0 *\\/1 * * * *', { name: 'NoisyJob', schedulerDebug: true })\n * export class NoisyJob { ... }\n * ```\n */\nexport function Every(cron: string, options?: EveryOptions) {\n return function (constructor: any) {\n injectable()(constructor);\n\n // Set explicit name metadata to survive minification\n if (options?.name) {\n Reflect.defineMetadata('name', options.name, constructor);\n }\n\n Reflect.defineMetadata(\n 'job:options',\n {\n cron,\n requiresPopup: options?.requiresPopup ?? false,\n startPaused: options?.startPaused ?? false,\n schedulerDebug: options?.schedulerDebug ?? false,\n },\n constructor,\n );\n return constructor;\n };\n}\n","import { injectable } from '@inversifyjs/core';\n\n/**\n * Options for the EverySeconds decorator.\n */\nexport interface EverySecondsOptions {\n /** If true, job starts paused and must be resumed manually via Scheduler.resume() */\n startPaused?: boolean;\n\n /** Explicit job name (survives minification). Required for production builds. */\n name?: string;\n\n /**\n * If true, the job will only execute when the popup (or extension view) is visible.\n * This reduces unnecessary background activity when the user isn't looking at the extension.\n */\n requiresPopup?: boolean;\n\n /**\n * When true, scheduler diagnostics for this job are logged at `info` instead of only `debug`.\n * @see JobOptions.schedulerDebug\n */\n schedulerDebug?: boolean;\n}\n\n/**\n * Decorator for jobs that run at a specific interval in seconds.\n * Unlike cron expressions which have minute-level granularity,\n * this decorator allows for second-level precision.\n *\n * @param seconds - The interval in seconds between job executions\n * @param options - Optional configuration (startPaused, name, requiresPopup, etc.)\n *\n * @example\n * ```typescript\n * // Auto-starting job (default)\n * @EverySeconds(5, { name: 'MyJob' })\n * export class MyJob implements IJob {\n * async handle(context: JobContext) {\n * console.log('Runs every 5 seconds');\n * }\n * }\n *\n * // Job that only runs when popup is visible\n * @EverySeconds(10, { name: 'UiUpdateJob', requiresPopup: true })\n * export class UiUpdateJob implements IJob {\n * async handle(context: JobContext) {\n * console.log('Only runs when user is viewing extension');\n * }\n * }\n *\n * // Paused job that must be manually resumed\n * @EverySeconds(2, { startPaused: true, name: 'OnDemandJob' })\n * export class OnDemandJob implements IJob {\n * async handle(context: JobContext) {\n * console.log('Runs when resumed');\n * }\n * }\n * ```\n */\nexport function EverySeconds(seconds: number, options?: EverySecondsOptions) {\n return function (constructor: any) {\n injectable()(constructor);\n // Set explicit name metadata to survive minification\n if (options?.name) {\n Reflect.defineMetadata('name', options.name, constructor);\n }\n\n Reflect.defineMetadata(\n 'job:options',\n {\n delay: seconds * 1000,\n recurring: true,\n startPaused: options?.startPaused ?? false,\n requiresPopup: options?.requiresPopup ?? false,\n schedulerDebug: options?.schedulerDebug ?? false,\n },\n constructor,\n );\n return constructor;\n };\n}\n","export abstract class Booteable {\n /**\n * Boot method to be called when the service is initialized.\n * This method can be used to perform any setup or initialization logic.\n */\n abstract boot(): void;\n /**\n * Optional destroy method to be called when the service is being destroyed.\n * This can be used to clean up resources or perform any necessary teardown logic.\n */\n destroy?(): void {\n // Default implementation does nothing\n }\n}\n\nexport function isBooteable(obj: any): obj is Booteable {\n return typeof obj.boot === 'function';\n}\n\nexport function isDestroyable(obj: any): obj is Booteable {\n return typeof obj.destroy === 'function';\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chromahq/core",
3
- "version": "1.0.61",
3
+ "version": "1.0.62",
4
4
  "description": "Core library for building Chrome extensions with Chroma framework",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs.js",