@open-mercato/scheduler 0.5.1-develop.2683.4878a05b8e → 0.5.1-develop.2694.732417c5ec

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 +1,2 @@
1
- scheduler built successfully
1
+ [build:scheduler] found 42 entry points
2
+ [build:scheduler] built successfully
package/build.mjs CHANGED
@@ -1,70 +1,10 @@
1
- import * as esbuild from 'esbuild'
2
- import { glob } from 'glob'
3
- import { readFileSync, writeFileSync, existsSync, mkdirSync, copyFileSync } from 'node:fs'
4
- import { dirname, join } from 'node:path'
1
+ import { dirname } from 'node:path'
2
+ import { fileURLToPath } from 'node:url'
3
+ import { buildPackage } from '../../scripts/build-package.mjs'
5
4
 
6
- const entryPoints = await glob('src/**/*.{ts,tsx}', {
7
- ignore: ['**/__tests__/**', '**/*.test.ts', '**/*.test.tsx']
8
- })
9
-
10
- // Plugin to add .js extension to relative imports
11
- const addJsExtension = {
12
- name: 'add-js-extension',
13
- setup(build) {
14
- build.onEnd(async (result) => {
15
- if (result.errors.length > 0) return
16
- const outputFiles = await glob('dist/**/*.js')
17
- for (const file of outputFiles) {
18
- const fileDir = dirname(file)
19
- let content = readFileSync(file, 'utf-8')
20
- // Add .js to relative imports that don't have an extension
21
- content = content.replace(
22
- /from\s+["'](\.[^"']+)["']/g,
23
- (match, path) => {
24
- if (path.endsWith('.js') || path.endsWith('.json')) return match
25
- // Check if it's a directory with index.js
26
- const resolvedPath = join(fileDir, path)
27
- if (existsSync(resolvedPath) && existsSync(join(resolvedPath, 'index.js'))) {
28
- return `from "${path}/index.js"`
29
- }
30
- return `from "${path}.js"`
31
- }
32
- )
33
- content = content.replace(
34
- /import\s*\(\s*["'](\.[^"']+)["']\s*\)/g,
35
- (match, path) => {
36
- if (path.endsWith('.js') || path.endsWith('.json')) return match
37
- // Check if it's a directory with index.js
38
- const resolvedPath = join(fileDir, path)
39
- if (existsSync(resolvedPath) && existsSync(join(resolvedPath, 'index.js'))) {
40
- return `import("${path}/index.js")`
41
- }
42
- return `import("${path}.js")`
43
- }
44
- )
45
- writeFileSync(file, content)
46
- }
47
- })
48
- }
49
- }
5
+ const packageDir = dirname(fileURLToPath(import.meta.url))
50
6
 
51
- await esbuild.build({
52
- entryPoints,
53
- outdir: 'dist',
54
- format: 'esm',
55
- platform: 'node',
56
- target: 'node18',
57
- sourcemap: true,
58
- plugins: [addJsExtension],
7
+ await buildPackage(packageDir, {
8
+ name: 'scheduler',
9
+ copyJson: true,
59
10
  })
60
-
61
- // Copy JSON files (translations, etc.)
62
- const jsonFiles = await glob('src/**/*.json')
63
- for (const jsonFile of jsonFiles) {
64
- const destPath = jsonFile.replace('src/', 'dist/')
65
- const destDir = dirname(destPath)
66
- mkdirSync(destDir, { recursive: true })
67
- copyFileSync(jsonFile, destPath)
68
- }
69
-
70
- console.log('scheduler built successfully')
@@ -8,7 +8,7 @@ var __decorateClass = (decorators, target, key, kind) => {
8
8
  if (kind && result) __defProp(target, key, result);
9
9
  return result;
10
10
  };
11
- import { Entity, PrimaryKey, Property, Index } from "@mikro-orm/core";
11
+ import { Entity, Index, PrimaryKey, Property } from "@mikro-orm/decorators/legacy";
12
12
  let ScheduledJob = class {
13
13
  };
14
14
  __decorateClass([
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/modules/scheduler/data/entities.ts"],
4
- "sourcesContent": ["import { Entity, PrimaryKey, Property, Index } from '@mikro-orm/core'\n\n@Entity({ tableName: 'scheduled_jobs' })\n@Index({ name: 'scheduled_jobs_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'scheduled_jobs_next_run_idx', properties: ['nextRunAt'] })\n@Index({ name: 'scheduled_jobs_scope_idx', properties: ['scopeType', 'isEnabled'] })\nexport class ScheduledJob {\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid', nullable: true })\n organizationId?: string | null\n\n @Property({ name: 'tenant_id', type: 'uuid', nullable: true })\n tenantId?: string | null\n\n @Property({ name: 'scope_type', type: 'text', default: 'tenant' })\n scopeType!: 'system' | 'organization' | 'tenant'\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'schedule_type', type: 'text' })\n scheduleType!: 'cron' | 'interval'\n\n @Property({ name: 'schedule_value', type: 'text' })\n scheduleValue!: string\n\n @Property({ type: 'text', default: 'UTC' })\n timezone!: string\n\n @Property({ name: 'target_type', type: 'text' })\n targetType!: 'queue' | 'command'\n\n @Property({ name: 'target_queue', type: 'text', nullable: true })\n targetQueue?: string | null\n\n @Property({ name: 'target_command', type: 'text', nullable: true })\n targetCommand?: string | null\n\n @Property({ name: 'target_payload', type: 'jsonb', nullable: true })\n targetPayload?: Record<string, unknown> | null\n\n @Property({ name: 'require_feature', type: 'text', nullable: true })\n requireFeature?: string | null\n\n @Property({ name: 'is_enabled', type: 'boolean', default: true })\n isEnabled!: boolean\n\n @Property({ name: 'last_run_at', type: Date, nullable: true })\n lastRunAt?: Date | null\n\n @Property({ name: 'next_run_at', type: Date, nullable: true })\n nextRunAt?: Date | null\n\n @Property({ name: 'source_type', type: 'text', default: 'user' })\n sourceType!: 'user' | 'module'\n\n @Property({ name: 'source_module', type: 'text', nullable: true })\n sourceModule?: string | null\n\n @Property({ name: 'created_at', type: Date, defaultRaw: 'now()' })\n createdAt!: Date\n\n @Property({ name: 'updated_at', type: Date, defaultRaw: 'now()', onUpdate: () => new Date() })\n updatedAt!: Date\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n\n @Property({ name: 'created_by_user_id', type: 'uuid', nullable: true })\n createdByUserId?: string | null\n\n @Property({ name: 'updated_by_user_id', type: 'uuid', nullable: true })\n updatedByUserId?: string | null\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Entity, Index, PrimaryKey, Property } from '@mikro-orm/decorators/legacy'\n\n@Entity({ tableName: 'scheduled_jobs' })\n@Index({ name: 'scheduled_jobs_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'scheduled_jobs_next_run_idx', properties: ['nextRunAt'] })\n@Index({ name: 'scheduled_jobs_scope_idx', properties: ['scopeType', 'isEnabled'] })\nexport class ScheduledJob {\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid', nullable: true })\n organizationId?: string | null\n\n @Property({ name: 'tenant_id', type: 'uuid', nullable: true })\n tenantId?: string | null\n\n @Property({ name: 'scope_type', type: 'text', default: 'tenant' })\n scopeType!: 'system' | 'organization' | 'tenant'\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'schedule_type', type: 'text' })\n scheduleType!: 'cron' | 'interval'\n\n @Property({ name: 'schedule_value', type: 'text' })\n scheduleValue!: string\n\n @Property({ type: 'text', default: 'UTC' })\n timezone!: string\n\n @Property({ name: 'target_type', type: 'text' })\n targetType!: 'queue' | 'command'\n\n @Property({ name: 'target_queue', type: 'text', nullable: true })\n targetQueue?: string | null\n\n @Property({ name: 'target_command', type: 'text', nullable: true })\n targetCommand?: string | null\n\n @Property({ name: 'target_payload', type: 'jsonb', nullable: true })\n targetPayload?: Record<string, unknown> | null\n\n @Property({ name: 'require_feature', type: 'text', nullable: true })\n requireFeature?: string | null\n\n @Property({ name: 'is_enabled', type: 'boolean', default: true })\n isEnabled!: boolean\n\n @Property({ name: 'last_run_at', type: Date, nullable: true })\n lastRunAt?: Date | null\n\n @Property({ name: 'next_run_at', type: Date, nullable: true })\n nextRunAt?: Date | null\n\n @Property({ name: 'source_type', type: 'text', default: 'user' })\n sourceType!: 'user' | 'module'\n\n @Property({ name: 'source_module', type: 'text', nullable: true })\n sourceModule?: string | null\n\n @Property({ name: 'created_at', type: Date, defaultRaw: 'now()' })\n createdAt!: Date\n\n @Property({ name: 'updated_at', type: Date, defaultRaw: 'now()', onUpdate: () => new Date() })\n updatedAt!: Date\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n\n @Property({ name: 'created_by_user_id', type: 'uuid', nullable: true })\n createdByUserId?: string | null\n\n @Property({ name: 'updated_by_user_id', type: 'uuid', nullable: true })\n updatedByUserId?: string | null\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/jest.config.cjs CHANGED
@@ -1,33 +1,31 @@
1
1
  /** @type {import('jest').Config} */
2
2
  module.exports = {
3
- preset: 'ts-jest',
4
3
  testEnvironment: 'node',
5
4
  watchman: false,
6
5
  roots: ['<rootDir>/src'],
7
6
  testMatch: ['**/__tests__/**/*.test.ts'],
7
+ moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
8
8
  moduleNameMapper: {
9
9
  '^@open-mercato/core/(.*)$': '<rootDir>/../core/src/$1',
10
10
  '^@open-mercato/shared/(.*)$': '<rootDir>/../shared/src/$1',
11
11
  '^@open-mercato/queue/(.*)$': '<rootDir>/../queue/src/$1',
12
12
  '^@open-mercato/events/(.*)$': '<rootDir>/../events/src/$1',
13
13
  '^@open-mercato/ui/(.*)$': '<rootDir>/../ui/src/$1',
14
- // Strip .js extensions from relative imports
14
+ // Strip .js extensions from relative imports (@mikro-orm ESM compatibility)
15
15
  '^(\\.{1,2}/.*)\\.js$': '$1',
16
16
  },
17
17
  transform: {
18
- '^.+\\.tsx?$': [
19
- 'ts-jest',
18
+ '^.+\\.(t|j)sx?$': [
19
+ '<rootDir>/../../scripts/jest-mikroorm-transformer.cjs',
20
20
  {
21
21
  tsconfig: {
22
22
  esModuleInterop: true,
23
- moduleResolution: 'node',
23
+ allowJs: true,
24
24
  },
25
25
  },
26
26
  ],
27
27
  },
28
28
  transformIgnorePatterns: [
29
- 'node_modules/(?!(@mikro-orm|@open-mercato)/)',
29
+ 'node_modules/(?!(@mikro-orm)/)',
30
30
  ],
31
- extensionsToTreatAsEsm: ['.ts'],
32
- moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
33
31
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-mercato/scheduler",
3
- "version": "0.5.1-develop.2683.4878a05b8e",
3
+ "version": "0.5.1-develop.2694.732417c5ec",
4
4
  "description": "Database-managed scheduled jobs with admin UI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -58,13 +58,13 @@
58
58
  "./*/*/*/*/*/*.json": "./src/*/*/*/*/*/*.json"
59
59
  },
60
60
  "dependencies": {
61
- "@open-mercato/events": "0.5.1-develop.2683.4878a05b8e",
62
- "@open-mercato/queue": "0.5.1-develop.2683.4878a05b8e",
61
+ "@open-mercato/events": "0.5.1-develop.2694.732417c5ec",
62
+ "@open-mercato/queue": "0.5.1-develop.2694.732417c5ec",
63
63
  "cron-parser": "^5.5.0"
64
64
  },
65
65
  "peerDependencies": {
66
- "@mikro-orm/core": "^6.6.10",
67
- "@open-mercato/shared": "0.5.1-develop.2683.4878a05b8e",
66
+ "@mikro-orm/core": "^7.0.10",
67
+ "@open-mercato/shared": "0.5.1-develop.2694.732417c5ec",
68
68
  "bullmq": "^5.0.0",
69
69
  "ioredis": "^5.0.0",
70
70
  "zod": ">=3.23.0"
@@ -78,7 +78,7 @@
78
78
  }
79
79
  },
80
80
  "devDependencies": {
81
- "@open-mercato/shared": "0.5.1-develop.2683.4878a05b8e",
81
+ "@open-mercato/shared": "0.5.1-develop.2694.732417c5ec",
82
82
  "@types/jest": "^30.0.0",
83
83
  "@types/node": "^25.6.0",
84
84
  "jest": "^30.3.0",
@@ -1,4 +1,4 @@
1
- import { Entity, PrimaryKey, Property, Index } from '@mikro-orm/core'
1
+ import { Entity, Index, PrimaryKey, Property } from '@mikro-orm/decorators/legacy'
2
2
 
3
3
  @Entity({ tableName: 'scheduled_jobs' })
4
4
  @Index({ name: 'scheduled_jobs_org_tenant_idx', properties: ['organizationId', 'tenantId'] })