@objectstack/core 3.0.3 → 3.0.4

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,5 +1,5 @@
1
1
 
2
- > @objectstack/core@3.0.3 build /home/runner/work/spec/spec/packages/core
2
+ > @objectstack/core@3.0.4 build /home/runner/work/spec/spec/packages/core
3
3
  > tsup --config ../../tsup.config.ts
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -10,13 +10,13 @@
10
10
  CLI Cleaning output folder
11
11
  ESM Build start
12
12
  CJS Build start
13
- CJS dist/index.cjs 136.06 KB
14
- CJS dist/index.cjs.map 280.76 KB
15
- CJS ⚡️ Build success in 92ms
16
- ESM dist/index.js 133.29 KB
17
- ESM dist/index.js.map 279.40 KB
18
- ESM ⚡️ Build success in 92ms
13
+ CJS dist/index.cjs 138.85 KB
14
+ CJS dist/index.cjs.map 287.67 KB
15
+ CJS ⚡️ Build success in 96ms
16
+ ESM dist/index.js 135.90 KB
17
+ ESM dist/index.js.map 286.19 KB
18
+ ESM ⚡️ Build success in 96ms
19
19
  DTS Build start
20
- DTS ⚡️ Build success in 3300ms
21
- DTS dist/index.d.ts 52.67 KB
22
- DTS dist/index.d.cts 52.67 KB
20
+ DTS ⚡️ Build success in 3375ms
21
+ DTS dist/index.d.ts 54.89 KB
22
+ DTS dist/index.d.cts 54.89 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @objectstack/core
2
2
 
3
+ ## 3.0.4
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [d738987]
8
+ - @objectstack/spec@3.0.4
9
+
3
10
  ## 3.0.3
4
11
 
5
12
  ### Patch Changes
package/dist/index.cjs CHANGED
@@ -31,6 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var index_exports = {};
32
32
  __export(index_exports, {
33
33
  ApiRegistry: () => ApiRegistry,
34
+ CORE_FALLBACK_FACTORIES: () => CORE_FALLBACK_FACTORIES,
34
35
  DependencyResolver: () => DependencyResolver,
35
36
  HotReloadManager: () => HotReloadManager,
36
37
  LiteKernel: () => LiteKernel,
@@ -51,6 +52,9 @@ __export(index_exports, {
51
52
  ServiceLifecycle: () => ServiceLifecycle,
52
53
  createApiRegistryPlugin: () => createApiRegistryPlugin,
53
54
  createLogger: () => createLogger,
55
+ createMemoryCache: () => createMemoryCache,
56
+ createMemoryJob: () => createMemoryJob,
57
+ createMemoryQueue: () => createMemoryQueue,
54
58
  createPluginConfigValidator: () => createPluginConfigValidator,
55
59
  createPluginPermissionEnforcer: () => createPluginPermissionEnforcer,
56
60
  getEnv: () => getEnv,
@@ -998,6 +1002,102 @@ var PluginLoader = class {
998
1002
  }
999
1003
  };
1000
1004
 
1005
+ // src/fallbacks/memory-cache.ts
1006
+ function createMemoryCache() {
1007
+ const store = /* @__PURE__ */ new Map();
1008
+ let hits = 0;
1009
+ let misses = 0;
1010
+ return {
1011
+ _fallback: true,
1012
+ _serviceName: "cache",
1013
+ async get(key) {
1014
+ const entry = store.get(key);
1015
+ if (!entry || entry.expires && Date.now() > entry.expires) {
1016
+ store.delete(key);
1017
+ misses++;
1018
+ return void 0;
1019
+ }
1020
+ hits++;
1021
+ return entry.value;
1022
+ },
1023
+ async set(key, value, ttl) {
1024
+ store.set(key, { value, expires: ttl ? Date.now() + ttl * 1e3 : void 0 });
1025
+ },
1026
+ async delete(key) {
1027
+ return store.delete(key);
1028
+ },
1029
+ async has(key) {
1030
+ return store.has(key);
1031
+ },
1032
+ async clear() {
1033
+ store.clear();
1034
+ },
1035
+ async stats() {
1036
+ return { hits, misses, keyCount: store.size };
1037
+ }
1038
+ };
1039
+ }
1040
+
1041
+ // src/fallbacks/memory-queue.ts
1042
+ function createMemoryQueue() {
1043
+ const handlers = /* @__PURE__ */ new Map();
1044
+ let msgId = 0;
1045
+ return {
1046
+ _fallback: true,
1047
+ _serviceName: "queue",
1048
+ async publish(queue, data) {
1049
+ const id = `fallback-msg-${++msgId}`;
1050
+ const fns = handlers.get(queue) ?? [];
1051
+ for (const fn of fns) fn({ id, data, attempts: 1, timestamp: Date.now() });
1052
+ return id;
1053
+ },
1054
+ async subscribe(queue, handler) {
1055
+ handlers.set(queue, [...handlers.get(queue) ?? [], handler]);
1056
+ },
1057
+ async unsubscribe(queue) {
1058
+ handlers.delete(queue);
1059
+ },
1060
+ async getQueueSize() {
1061
+ return 0;
1062
+ },
1063
+ async purge(queue) {
1064
+ handlers.delete(queue);
1065
+ }
1066
+ };
1067
+ }
1068
+
1069
+ // src/fallbacks/memory-job.ts
1070
+ function createMemoryJob() {
1071
+ const jobs = /* @__PURE__ */ new Map();
1072
+ return {
1073
+ _fallback: true,
1074
+ _serviceName: "job",
1075
+ async schedule(name, schedule, handler) {
1076
+ jobs.set(name, { schedule, handler });
1077
+ },
1078
+ async cancel(name) {
1079
+ jobs.delete(name);
1080
+ },
1081
+ async trigger(name, data) {
1082
+ const job = jobs.get(name);
1083
+ if (job?.handler) await job.handler({ jobId: name, data });
1084
+ },
1085
+ async getExecutions() {
1086
+ return [];
1087
+ },
1088
+ async listJobs() {
1089
+ return [...jobs.keys()];
1090
+ }
1091
+ };
1092
+ }
1093
+
1094
+ // src/fallbacks/index.ts
1095
+ var CORE_FALLBACK_FACTORIES = {
1096
+ cache: createMemoryCache,
1097
+ queue: createMemoryQueue,
1098
+ job: createMemoryJob
1099
+ };
1100
+
1001
1101
  // src/kernel.ts
1002
1102
  var ObjectKernel = class {
1003
1103
  constructor(config = {}) {
@@ -1146,8 +1246,15 @@ var ObjectKernel = class {
1146
1246
  this.logger.error(`CRITICAL: Required service missing: ${serviceName}`);
1147
1247
  missingServices.push(serviceName);
1148
1248
  } else if (criticality === "core") {
1149
- this.logger.warn(`CORE: Core service missing, functionality may be degraded: ${serviceName}`);
1150
- missingCoreServices.push(serviceName);
1249
+ const factory = CORE_FALLBACK_FACTORIES[serviceName];
1250
+ if (factory) {
1251
+ const fallback = factory();
1252
+ this.registerService(serviceName, fallback);
1253
+ this.logger.warn(`Service '${serviceName}' not provided \u2014 using in-memory fallback`);
1254
+ } else {
1255
+ this.logger.warn(`CORE: Core service missing, functionality may be degraded: ${serviceName}`);
1256
+ missingCoreServices.push(serviceName);
1257
+ }
1151
1258
  } else {
1152
1259
  this.logger.info(`Info: Optional service not present: ${serviceName}`);
1153
1260
  }
@@ -4395,6 +4502,7 @@ var DependencyResolver = class {
4395
4502
  // Annotate the CommonJS export names for ESM import in node:
4396
4503
  0 && (module.exports = {
4397
4504
  ApiRegistry,
4505
+ CORE_FALLBACK_FACTORIES,
4398
4506
  DependencyResolver,
4399
4507
  HotReloadManager,
4400
4508
  LiteKernel,
@@ -4415,6 +4523,9 @@ var DependencyResolver = class {
4415
4523
  ServiceLifecycle,
4416
4524
  createApiRegistryPlugin,
4417
4525
  createLogger,
4526
+ createMemoryCache,
4527
+ createMemoryJob,
4528
+ createMemoryQueue,
4418
4529
  createPluginConfigValidator,
4419
4530
  createPluginPermissionEnforcer,
4420
4531
  getEnv,