@almadar/runtime 6.65.0 → 6.67.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,5 +1,5 @@
1
- import { createTickScheduler, EventBus, createUnifiedLoader, MockPersistenceAdapter, InMemoryPersistence, preprocessSchema, normalizeCallSiteConfigToValues, StateMachineManager, parseDurationString, validateEventPayload, formatPayloadValidationError, collectDeclaredConfigDefaults, collectDeclaredEntityDefaults, EffectExecutor } from './chunk-LMYD5UB3.js';
2
- export { InMemoryPersistence, collectDeclaredConfigDefaults } from './chunk-LMYD5UB3.js';
1
+ import { createTickScheduler, EventBus, createUnifiedLoader, MockPersistenceAdapter, InMemoryPersistence, preprocessSchema, normalizeCallSiteConfigToValues, StateMachineManager, parseDurationString, validateEventPayload, formatPayloadValidationError, collectDeclaredConfigDefaults, collectDeclaredEntityDefaults, EffectExecutor } from './chunk-VD774ZUH.js';
2
+ export { InMemoryPersistence, collectDeclaredConfigDefaults } from './chunk-VD774ZUH.js';
3
3
  import { isValidCronExpression } from './chunk-OU3ITB5S.js';
4
4
  import { createContextFromBindings, checkMutationAccess, resolveCallSitePayloadCaptures, applyRowAccess, accessDeniedMessage } from './chunk-ZJ62H3ES.js';
5
5
  import './chunk-T4VDAB4C.js';
@@ -4,7 +4,7 @@ import { seedRandom, randomArrayElement, randomInt, shuffleArray, randomPastDate
4
4
  import { collectTraitRefsFromValue, collectTraitRefsFromEffects } from './chunk-SCRAHWOC.js';
5
5
  import { createLogger, setNamespaceLevel } from '@almadar/logger';
6
6
  import { evaluateGuard, SExpressionEvaluator } from '@almadar/evaluator';
7
- import { OrbitalSchemaSchema, isInlineTrait, isEntityCall, isEntityReference, parseEntityRef, parseImportedTraitRef, isPageReference, isPageReferenceString, isPageReferenceObject, parsePageRef, isReferenceConfigType, configRefEventKnob, normalizeCallSiteConfigToValues, resolveConfigRefEventName } from '@almadar/core';
7
+ import { OrbitalSchemaSchema, isInlineTrait, isEntityCall, isEntityReference, parseEntityRef, parseImportedTraitRef, isPageReference, isPageReferenceString, isPageReferenceObject, parsePageRef, isReferenceConfigType, configRefEventKnob, normalizeCallSiteConfigToValues, resolveConfigRefEventName, eventListPropsOf } from '@almadar/core';
8
8
  export { normalizeCallSiteConfigToValues } from '@almadar/core';
9
9
  import { sampleRowCount, sampleRow } from '@almadar/core/mock';
10
10
 
@@ -3651,6 +3651,8 @@ function renameEventsInRenderUiConfig(node, rename) {
3651
3651
  if (typeof node !== "object") return node;
3652
3652
  const obj = node;
3653
3653
  const next = { ...obj };
3654
+ const rawType = obj.type;
3655
+ const patternType = typeof rawType === "string" ? rawType : void 0;
3654
3656
  for (const [key, value] of Object.entries(obj)) {
3655
3657
  if (key === "action" && typeof value === "string" && !value.startsWith("@")) {
3656
3658
  next[key] = rename(value) ?? value;
@@ -3664,12 +3666,14 @@ function renameEventsInRenderUiConfig(node, rename) {
3664
3666
  next[key] = rename(value) ?? value;
3665
3667
  continue;
3666
3668
  }
3667
- if ((key === "actions" || key === "itemActions") && Array.isArray(value)) {
3669
+ const eventField = patternType !== void 0 ? eventListPropsOf(patternType).get(key) : void 0;
3670
+ if (eventField !== void 0 && Array.isArray(value)) {
3668
3671
  const rewrittenArray = value.map((entry) => {
3669
3672
  if (!entry || typeof entry !== "object" || Array.isArray(entry)) return entry;
3670
3673
  const action = entry;
3671
- if (typeof action.event === "string" && !action.event.startsWith("@")) {
3672
- return { ...action, event: rename(action.event) ?? action.event };
3674
+ const current = action[eventField];
3675
+ if (typeof current === "string" && !current.startsWith("@")) {
3676
+ return { ...action, [eventField]: rename(current) ?? current };
3673
3677
  }
3674
3678
  return action;
3675
3679
  });
@@ -3680,6 +3684,58 @@ function renameEventsInRenderUiConfig(node, rename) {
3680
3684
  }
3681
3685
  return next;
3682
3686
  }
3687
+ function renameEventTypedMembers(value, items, rename) {
3688
+ if (items === void 0 || value === null || value === void 0) return value;
3689
+ if (Array.isArray(value)) {
3690
+ return value.map((entry2) => renameEventTypedMembers(entry2, items, rename));
3691
+ }
3692
+ if (typeof value !== "object") return value;
3693
+ const properties = items.properties;
3694
+ if (properties === void 0) return value;
3695
+ const entry = value;
3696
+ const next = { ...entry };
3697
+ let touched = false;
3698
+ for (const [member, decl] of Object.entries(properties)) {
3699
+ const current = entry[member];
3700
+ if (decl.type === "event") {
3701
+ if (typeof current === "string" && current !== "" && !current.startsWith("@")) {
3702
+ const renamed = rename(current);
3703
+ if (renamed !== void 0 && renamed !== current) {
3704
+ next[member] = renamed;
3705
+ touched = true;
3706
+ }
3707
+ }
3708
+ continue;
3709
+ }
3710
+ if (decl.items !== void 0 && current !== void 0) {
3711
+ const nested = renameEventTypedMembers(current, decl.items, rename);
3712
+ if (nested !== current) {
3713
+ next[member] = nested;
3714
+ touched = true;
3715
+ }
3716
+ }
3717
+ }
3718
+ return touched ? next : value;
3719
+ }
3720
+ function renameEventsInDeclaredConfig(config, rename) {
3721
+ if (config === void 0) return config;
3722
+ let touched = false;
3723
+ const next = {};
3724
+ for (const [knob, field] of Object.entries(config)) {
3725
+ if (field.default === void 0) {
3726
+ next[knob] = field;
3727
+ continue;
3728
+ }
3729
+ const renamedDefault = field.type === "event" ? typeof field.default === "string" && field.default !== "" && !field.default.startsWith("@") ? rename(field.default) ?? field.default : field.default : renameEventTypedMembers(field.default, field.items, rename);
3730
+ if (renamedDefault !== field.default) {
3731
+ next[knob] = { ...field, default: renamedDefault };
3732
+ touched = true;
3733
+ } else {
3734
+ next[knob] = field;
3735
+ }
3736
+ }
3737
+ return touched ? next : config;
3738
+ }
3683
3739
  function renameEventsInEffects(effects, rename) {
3684
3740
  return effects.map((effect) => renameEventRefsInNode(effect, rename));
3685
3741
  }
@@ -4048,6 +4104,7 @@ function applyEventRenames(trait, renames) {
4048
4104
  const nextTriggers = rename(l.triggers) ?? l.triggers;
4049
4105
  return nextEvent === l.event && nextTriggers === l.triggers ? l : { ...l, event: nextEvent, triggers: nextTriggers };
4050
4106
  });
4107
+ const nextConfig = renameEventsInDeclaredConfig(trait.config, rename);
4051
4108
  return {
4052
4109
  ...trait,
4053
4110
  stateMachine: sm ? {
@@ -4057,9 +4114,27 @@ function applyEventRenames(trait, renames) {
4057
4114
  } : sm,
4058
4115
  ...trait.ticks ? { ticks: nextTicks } : {},
4059
4116
  ...trait.listens ? { listens: nextListens } : {},
4117
+ ...nextConfig !== void 0 ? { config: nextConfig } : {},
4060
4118
  emits: nextEmits
4061
4119
  };
4062
4120
  }
4121
+ function applyEventRenamesToCallSiteConfig(config, declared, renames) {
4122
+ if (config === void 0 || declared === void 0) return config;
4123
+ if (!renames || Object.keys(renames).length === 0) return config;
4124
+ const rename = (k) => k !== void 0 && k in renames ? renames[k] : k;
4125
+ let touched = false;
4126
+ const next = { ...config };
4127
+ for (const [knob, value] of Object.entries(config)) {
4128
+ const field = declared[knob];
4129
+ if (field === void 0) continue;
4130
+ const renamed = field.type === "event" ? typeof value === "string" && value !== "" && !value.startsWith("@") ? rename(value) ?? value : value : renameEventTypedMembers(value, field.items, rename);
4131
+ if (renamed !== value) {
4132
+ next[knob] = renamed;
4133
+ touched = true;
4134
+ }
4135
+ }
4136
+ return touched ? next : config;
4137
+ }
4063
4138
  function resolveConfigRefEmitNames(trait, callSiteConfig) {
4064
4139
  const emits = trait.emits ?? [];
4065
4140
  const hasRef = emits.some((em) => configRefEventKnob(em.event) !== void 0);
@@ -4597,6 +4672,7 @@ var ReferenceResolver = class {
4597
4672
  }
4598
4673
  const reboundTrait = applyLinkedEntityRename(configResolvedTrait, linkedEntity);
4599
4674
  const renamedTrait = applyEventRenames(reboundTrait, eventRenames);
4675
+ const renamedConfig = applyEventRenamesToCallSiteConfig(config, reboundTrait.config, eventRenames);
4600
4676
  const finalTrait = listensOverride !== void 0 ? { ...renamedTrait, listens: listensOverride } : renamedTrait;
4601
4677
  if (listensOverride !== void 0) {
4602
4678
  refResolverLog.info("listens-override:imported", {
@@ -4611,7 +4687,7 @@ var ReferenceResolver = class {
4611
4687
  data: {
4612
4688
  trait: finalTrait,
4613
4689
  source: { type: "imported", alias: parsed.alias, traitName: parsed.traitName },
4614
- config,
4690
+ config: renamedConfig,
4615
4691
  linkedEntity
4616
4692
  },
4617
4693
  warnings: []
@@ -4626,6 +4702,7 @@ var ReferenceResolver = class {
4626
4702
  }
4627
4703
  const reboundLocal = applyLinkedEntityRename(configResolvedLocal, linkedEntity);
4628
4704
  const renamedLocalTrait = applyEventRenames(reboundLocal, eventRenames);
4705
+ const renamedLocalConfig = applyEventRenamesToCallSiteConfig(config, reboundLocal.config, eventRenames);
4629
4706
  const finalLocalTrait = listensOverride !== void 0 ? { ...renamedLocalTrait, listens: listensOverride } : renamedLocalTrait;
4630
4707
  if (listensOverride !== void 0) {
4631
4708
  refResolverLog.info("listens-override:local", {
@@ -4640,7 +4717,7 @@ var ReferenceResolver = class {
4640
4717
  data: {
4641
4718
  trait: finalLocalTrait,
4642
4719
  source: { type: "local", name: ref },
4643
- config,
4720
+ config: renamedLocalConfig,
4644
4721
  linkedEntity
4645
4722
  },
4646
4723
  warnings: []
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { EffectExecutor } from './chunk-LMYD5UB3.js';
2
- export { EffectExecutor, EventBus, HANDLER_MANIFEST, InMemoryPersistence, MockPersistenceAdapter, StateMachineManager, TickScheduler, buildEmitsFromTraits, collectDeclaredConfigDefaults, collectDeclaredEntityDefaults, createInitialTraitState, createMockPersistence, createTestExecutor, createTickScheduler, createUnifiedLoader, findInitialState, findTransition, formatPayloadValidationError, getIsolatedCollectionName, getNamespacedEvent, isBrowser, isElectron, isNamespacedEvent, isNode, isValidDurationString, normalizeCallSiteConfigToValues, normalizeEventKey, parseDurationString, parseNamespacedEvent, preprocessSchema, processEvent, validateEventPayload, validatePayloadShapes } from './chunk-LMYD5UB3.js';
1
+ import { EffectExecutor } from './chunk-VD774ZUH.js';
2
+ export { EffectExecutor, EventBus, HANDLER_MANIFEST, InMemoryPersistence, MockPersistenceAdapter, StateMachineManager, TickScheduler, buildEmitsFromTraits, collectDeclaredConfigDefaults, collectDeclaredEntityDefaults, createInitialTraitState, createMockPersistence, createTestExecutor, createTickScheduler, createUnifiedLoader, findInitialState, findTransition, formatPayloadValidationError, getIsolatedCollectionName, getNamespacedEvent, isBrowser, isElectron, isNamespacedEvent, isNode, isValidDurationString, normalizeCallSiteConfigToValues, normalizeEventKey, parseDurationString, parseNamespacedEvent, preprocessSchema, processEvent, validateEventPayload, validatePayloadShapes } from './chunk-VD774ZUH.js';
3
3
  export { cronMatches, cronMinuteKey, isValidCronExpression, parseCron, parseCronField } from './chunk-OU3ITB5S.js';
4
4
  import { createContextFromBindings, applyRowAccess, checkMutationAccess, accessDeniedMessage } from './chunk-ZJ62H3ES.js';
5
5
  export { CALLSITE_PAYLOAD_PREFIX, applyRowAccess, checkMutationAccess, containsBindings, createContextFromBindings, createMinimalContext, deferEntityBindings, extractBindings, interpolateProps, interpolateValue, resolveCallSitePayloadCaptures } from './chunk-ZJ62H3ES.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/runtime",
3
- "version": "6.65.0",
3
+ "version": "6.67.0",
4
4
  "description": "Interpreted runtime for Almadar orbital applications (OrbitalServerRuntime)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -57,11 +57,11 @@
57
57
  "access": "public"
58
58
  },
59
59
  "dependencies": {
60
- "@almadar/core": "^10.75.0",
61
- "@almadar/evaluator": "^2.42.0",
62
- "@almadar/logger": "^1.11.0",
63
- "@almadar/server": "^2.38.0",
64
- "@almadar/std": "^16.195.0"
60
+ "@almadar/core": "^10.77.0",
61
+ "@almadar/evaluator": "^2.43.0",
62
+ "@almadar/logger": "^1.12.0",
63
+ "@almadar/server": "^2.39.0",
64
+ "@almadar/std": "^16.197.0"
65
65
  },
66
66
  "peerDependencies": {
67
67
  "express": "^5.0.0"
@@ -72,7 +72,7 @@
72
72
  }
73
73
  },
74
74
  "devDependencies": {
75
- "@almadar/eslint-plugin": "^2.16.0",
75
+ "@almadar/eslint-plugin": "^2.17.0",
76
76
  "@types/express": "^5.0.0",
77
77
  "@types/node": "^20.0.0",
78
78
  "@typescript-eslint/parser": "8.65.0",