@decaf-ts/ui-decorators 0.20.1 → 0.20.2

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.
Files changed (37) hide show
  1. package/README.md +12 -0
  2. package/dist/ui-decorators.cjs +1 -1
  3. package/lib/cjs/graph/catalog/GraphNodePolicyManifest.cjs +5 -0
  4. package/lib/cjs/graph/catalog/GraphNodePolicyManifest.cjs.map +1 -1
  5. package/lib/cjs/graph/constants.cjs +1 -15
  6. package/lib/cjs/graph/constants.cjs.map +1 -1
  7. package/lib/cjs/graph/document/GraphDecoratedWorkflowCompiler.cjs +67 -10
  8. package/lib/cjs/graph/document/GraphDecoratedWorkflowCompiler.cjs.map +1 -1
  9. package/lib/cjs/graph/document/GraphWorkflowDocumentBuilder.cjs +46 -4
  10. package/lib/cjs/graph/document/GraphWorkflowDocumentBuilder.cjs.map +1 -1
  11. package/lib/cjs/graph/snapshot.cjs +77 -8
  12. package/lib/cjs/graph/snapshot.cjs.map +1 -1
  13. package/lib/cjs/index.cjs +3 -3
  14. package/lib/esm/graph/catalog/GraphNodePolicyManifest.js +5 -0
  15. package/lib/esm/graph/catalog/GraphNodePolicyManifest.js.map +1 -1
  16. package/lib/esm/graph/constants.js +0 -13
  17. package/lib/esm/graph/constants.js.map +1 -1
  18. package/lib/esm/graph/document/GraphDecoratedWorkflowCompiler.js +67 -10
  19. package/lib/esm/graph/document/GraphDecoratedWorkflowCompiler.js.map +1 -1
  20. package/lib/esm/graph/document/GraphWorkflowDocumentBuilder.js +46 -4
  21. package/lib/esm/graph/document/GraphWorkflowDocumentBuilder.js.map +1 -1
  22. package/lib/esm/graph/snapshot.js +77 -8
  23. package/lib/esm/graph/snapshot.js.map +1 -1
  24. package/lib/esm/index.js +3 -3
  25. package/lib/types/graph/catalog/GraphNodePolicyManifest.d.cts +33 -0
  26. package/lib/types/graph/catalog/GraphNodePolicyManifest.d.mts +33 -0
  27. package/lib/types/graph/constants.d.cts +0 -8
  28. package/lib/types/graph/constants.d.mts +0 -8
  29. package/lib/types/graph/document/GraphDecoratedWorkflowCompiler.d.cts +21 -0
  30. package/lib/types/graph/document/GraphDecoratedWorkflowCompiler.d.mts +21 -0
  31. package/lib/types/graph/document/GraphWorkflowDocumentBuilder.d.cts +44 -0
  32. package/lib/types/graph/document/GraphWorkflowDocumentBuilder.d.mts +44 -0
  33. package/lib/types/graph/snapshot.d.cts +8 -1
  34. package/lib/types/graph/snapshot.d.mts +8 -1
  35. package/lib/types/index.d.cts +3 -3
  36. package/lib/types/index.d.mts +3 -3
  37. package/package.json +1 -1
package/README.md CHANGED
@@ -478,6 +478,18 @@ if (errors) {
478
478
  This example demonstrates how to create a complete registration form with various input types and validation rules, all defined declaratively using decorators.
479
479
 
480
480
 
481
+ ## Graph Decorators and Contracts (DECAF-50)
482
+
483
+ `src/graph` ships the shared, browser-safe graph workspace contracts that back the canonical graph frontend (DECAF-50 §4.4.4–§4.12) — engine-free, with no executor/catalogue-runtime/validator/run-store imports reaching here (§4.20 bundle bar):
484
+
485
+ - **Manifests (§4.9–§4.12):** `GraphNodeManifest`/`GraphResolvedNodeManifest` types plus the `graphNodeManifest` compiler that turns `@node`-decorated classes into the published JSON shape (ports, parameters, display, metadata) — the same shape the NestJS catalogue serves and the Angular palette consumes as data, never constructors.
486
+ - **Document/instance model:** `GraphWorkflowDocument`, `GraphNodeInstance`, `GraphInputBinding` (`edge | literal | expression`), and the byte-consistent `GraphWorkflowDocumentSnapshot` the document store persists.
487
+ - **Switch cases:** `SwitchCase`/`SwitchCaseCondition` live under `metadata["switch"]` / the `parameters["switch"]` block — the backend executor reads the same shape, so the editor's case grid and the engine stay aligned.
488
+ - **Builder + legacy serializer:** `GraphWorkflowDocumentBuilder` composes documents fluently; `graphWorkflowDocumentFromLegacySnapshot` converts legacy (pre-P7) canvas snapshots — legacy `node.data` maps into instance `parameters`, legacy `node.metadata` into instance `metadata` — so previously persisted workflows keep reading under the new document store unchanged.
489
+ - **Decorated workflow compiler:** `GraphDecoratedWorkflowCompiler` compiles a decorated workflow class (node defaults plus loop/switch metadata blocks) into a document, letting `@node` classes seed demo graphs without node constructors in the browser path.
490
+
491
+ Detailed walkthroughs live in [workdocs/tutorials/For Developers.md](./workdocs/tutorials/For%20Developers.md).
492
+
481
493
  ## Coding Principles
482
494
 
483
495
  - group similar functionality in folders (analog to namespaces but without any namespace declaration)
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,a,o){"use strict";var s;e.UIMediaBreakPoints=void 0,(s=e.UIMediaBreakPoints||(e.UIMediaBreakPoints={})).SMALL="small",s.MEDIUM="medium",s.LARGE="large",s.XLARGE="xlarge";const n={REFLECT:"ui",UIMODEL:"uimodel",RENDERED_BY:"rendered-by",ELEMENT:"uielement",PROP:"uiprop",CHILD:"uichild",NAME:"name",NAME_PREFIX:"input-",VALIDATION_MESSAGE:"validationMessage",UILISTMODEL:"uilistmodel",UILISTPROP:"uilistprop",UILAYOUT:"uilayout",UILAYOUTPROP:"uilayoutprop",HANDLERS:"handlers",TYPE:"type",SUB_TYPE:"subType",HIDDEN:"hidden",HIDE_FOR:"hide-for",SHOW_FOR:"show-for",RENDER_IF:"render-if",FORMAT:"format",ORDER:"order",PAGE:"page",EVENTS:"events",FIRST:"first",LAST:"last",READ_ONLY:"readonly",SEQUENCE:"sequence",REQUIRED:t.ValidationKeys.REQUIRED,MIN:t.ValidationKeys.MIN,MIN_LENGTH:t.ValidationKeys.MIN_LENGTH,MAX:t.ValidationKeys.MAX,MAX_LENGTH:t.ValidationKeys.MAX_LENGTH,PATTERN:t.ValidationKeys.PATTERN,URL:t.ValidationKeys.URL,STEP:t.ValidationKeys.STEP,DATE:t.ValidationKeys.DATE,EMAIL:t.ValidationKeys.EMAIL,PASSWORD:t.ValidationKeys.PASSWORD,EQUALS:t.ValidationKeys.EQUALS,DIFF:t.ValidationKeys.DIFF,LESS_THAN:t.ValidationKeys.LESS_THAN,LESS_THAN_OR_EQUAL:t.ValidationKeys.LESS_THAN_OR_EQUAL,GREATER_THAN:t.ValidationKeys.GREATER_THAN,GREATER_THAN_OR_EQUAL:t.ValidationKeys.GREATER_THAN_OR_EQUAL},i={[n.EMAIL]:t.EmailValidator,[n.URL]:t.URLValidator,[n.DATE]:t.DateValidator,[n.PASSWORD]:t.PasswordValidator},d={[n.REQUIRED]:t.RequiredValidator,[n.MIN]:t.MinValidator,[n.MAX]:t.MaxValidator,[n.STEP]:t.StepValidator,[n.MIN_LENGTH]:t.MinLengthValidator,[n.MAX_LENGTH]:t.MaxLengthValidator,[n.PATTERN]:t.PatternValidator,[n.EQUALS]:t.EqualsValidator,[n.DIFF]:t.DiffValidator,[n.LESS_THAN]:t.LessThanValidator,[n.LESS_THAN_OR_EQUAL]:t.LessThanOrEqualValidator,[n.GREATER_THAN]:t.GreaterThanValidator,[n.GREATER_THAN_OR_EQUAL]:t.GreaterThanOrEqualValidator},l="yyyy-MM-dd",c={BUTTON:"button",CHECKBOX:"checkbox",COLOR:"color",DATE:n.DATE,DATETIME_LOCAL:"datetime-local",EMAIL:n.EMAIL,FILE:"file",HIDDEN:"hidden",IMAGE:"image",MONTH:"month",NUMBER:"number",PASSWORD:n.PASSWORD,RADIO:"radio",RANGE:"range",RESET:"reset",SEARCH:"search",SUBMIT:"submit",TEL:"tel",TEXT:"text",TEXTAREA:"textarea",SELECT:"select",TIME:"time",URL:n.URL,WEEK:"week"},p=[c.CHECKBOX,c.RADIO],E={cancel:"cancel",confirm:"confirm",submit:"submit",clear:"clear",back:"back",[r.OperationKeys.CREATE]:r.OperationKeys.CREATE,[r.OperationKeys.READ]:r.OperationKeys.READ,[r.OperationKeys.UPDATE]:r.OperationKeys.UPDATE,[r.OperationKeys.DELETE]:r.OperationKeys.DELETE};class u extends r.InternalError{constructor(e){super(e,u.name)}}const f=e=>"function"==typeof e&&/^class\s/.test(e+"");function h(e,t){return a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES,e,t)}function y(e,r,...a){if(e===n.DATE){if(!r)return"";const e=a.shift()||l;return t.formatDate(new Date(r),e)}return r}function M(e){if("number"==typeof e&&!isNaN(e))return e;const t=Number(e);return isNaN(t)?void 0:t}function R(e){if(!e)return e;const t={"&":"&amp;","<":"&lt;",">":"&gt;"};return(""+e).replace(/[&<>]/g,e=>t[e]||e)}function T(e){let r=Date.now();try{t.Model.pk(e.constructor)&&(r=e[t.Model.pk(e.constructor)])}catch(e){}return`${e.constructor.name}-${r}`}class m{static{this.cache={}}constructor(e){this.flavour=e,this.initialized=!1,m.register(this)}translate(e,r=!0){if(r)switch(e){case t.ReservedModels.STRING.name.toLowerCase():return c.TEXT;case t.ReservedModels.NUMBER.name.toLowerCase():case t.ReservedModels.BIGINT.name.toLowerCase():return c.NUMBER;case t.ReservedModels.BOOLEAN.name.toLowerCase():return c.CHECKBOX;case t.ReservedModels.DATE.name.toLowerCase():return c.DATE}else switch(e){case c.SELECT:case c.TEXT:case c.EMAIL:case c.COLOR:case c.PASSWORD:case c.TEL:case c.URL:case c.SEARCH:case c.HIDDEN:case c.TEXTAREA:case c.RADIO:return t.ReservedModels.STRING.name.toLowerCase();case c.NUMBER:return t.ReservedModels.NUMBER.name.toLowerCase();case c.CHECKBOX:return t.ReservedModels.BOOLEAN.name.toLowerCase();case c.DATE:case c.DATETIME_LOCAL:case c.TIME:return t.ReservedModels.DATE.name.toLowerCase()}return e}getClassDecoratorsMetadata(e){return[t.Model.uiModelOf(e.constructor),t.Model.uiListModelOf(e.constructor),t.Model.uiHandlersFor(e.constructor),t.Model.uiLayoutOf(e.constructor)].filter(Boolean)}sortChildrenByOrder(e=[]){return e.sort((r,a)=>{const o=r.props?.order??0,s=a.props?.order??0,i=r=>r===n.FIRST?0:typeof r===t.Primitives.NUMBER?1:r===n.LAST?e.length+e.indexOf(a):1,d=i(o),l=i(s);return d!==l?d-l:1===d&&typeof o===t.Primitives.NUMBER&&typeof s===t.Primitives.NUMBER?o-s:0})}isCustomValidator(e){return!Object.values(t.ValidationKeys).includes(e)&&!Object.values(n).includes(e)}isValidatableByType(e){return Object.keys(i).includes(e)}isValidatableByAttribute(e){return Object.keys(d).includes(e)}toAttributeValue(e,t){if(!Object.keys(d).includes(e))throw Error(`Invalid attribute key "${e}". Expected one of: ${Object.keys(d).join(", ")}.`);return e===n.REQUIRED||t[e]}toFieldDefinition(e,o={},s=!0){const{inheritProps:i,...d}=o;o=d;const p=this.getClassDecoratorsMetadata(e);if(!p.length)throw new u(`No ui definitions set for model ${e.constructor.name}. Did you use @uimodel?`);const E=Object.assign({},...p,i||{}),{tag:f,props:h,item:M,handlers:R}=E,m=t.Model.uiPropertiesOf(e.constructor);let O,g=M?.props||{},L={};const A=(e,t)=>e?[e,t].join("."):t;if(m){const s=a.Metadata.get(e.constructor,t.ValidationKeys.REFLECT)||{};for(const i of m){const d=t.Model.uiDecorationOf(e.constructor,i);let p;try{p=t.Model.uiTypeOf(e.constructor,i)}catch(e){if(!(e instanceof r.NotFoundError))throw e}if(t.Model.uiIsHidden(e.constructor,i)&&!t.Model.uiElementOf(e.constructor,i))throw new u(`@uielement no found in "${i}". It is required to use hiddenOn decorator.`);Object.entries(d).map(([e,t])=>({key:e,props:t})).sort(e=>[n.ELEMENT,n.CHILD].includes(e.key)?-1:1).forEach(r=>{if(!r)throw new u("No decorator found");switch(r.key){case n.PROP:g[i]=r.props;break;case n.CHILD:{const a=r.props?.props?.name||i;try{if(!t.Model.isModel(t.Model.build({},a))&&!t.Model.isPropertyModel(e,a))throw new u(`Child "${a}" must be a model.`)}catch(e){throw new u(`Child "${a}" must be a model.`)}let s;const n=e[i];if("object"!=typeof n||null===n||Array.isArray(n)){const e=r.props.props?.name;s=new(t.Model.get(e))}O=O||[];const d=Object.assign({},o||{},{model:s},{inheritProps:r.props,childOf:A(o?.childOf,i)}),l=this.toFieldDefinition(n||s,d,!1),{inheritProps:c}=d;c&&(l.props=Object.assign({},l.props,c.props||{})),O.push(l);break}case n.UILISTPROP:{L=L||{};const e=r.props;e.name&&(L[e.name]="object"==typeof e?.props&&n.SEQUENCE in e.props?e.props:i);const t=Object.assign({},E.props?.item||{},M?.props||{},e?.props||{},o);g={tag:M?.tag||t.render||"",props:Object.assign({},g?.props,{mapper:L},t)};break}case n.EVENTS:case n.HIDDEN:case n.HIDE_FOR:case n.SHOW_FOR:case n.PAGE:case n.ORDER:case n.UILAYOUTPROP:case n.ELEMENT:{O=O||[];const t=r.props,d=r.key===n.HIDE_FOR?{hideFor:r.props}:r.key===n.SHOW_FOR?{showFor:r.props}:{},p=Object.assign({},g?.props,t.props||{},d,t?.props?.name?{path:A(o?.childOf,t.props.name),childOf:void 0}:{},o,{name:t.props?.name||i});if(r.key===n.ELEMENT){const r={tag:t.tag||g?.tag||f||"",props:p},o=s[i];if(o)for(const e of Object.entries(o).map(([e,t])=>({key:e,props:t})))this.isValidatableByAttribute(e.key)?r.props[this.translate(e.key)]=this.toAttributeValue(e.key,e.props):this.isValidatableByType(e.key)?(e.key===c.DATE&&(r.props[n.FORMAT]=e.props.format||l),r.props[n.TYPE]=e.key):this.isCustomValidator(e.key)&&(p[n.SUB_TYPE]=e.key,e.props?.message&&(p[n.VALIDATION_MESSAGE]=e.props.message));if(!r.props[n.TYPE]){const t=a.Metadata.type(e.constructor,i).name;r.props[n.TYPE]=this.translate(t.toLowerCase(),!0)}r.props.value=y(r.props[n.TYPE],e[i],r.props[n.FORMAT]),O.push(r)}else{const e=O.find(e=>e.props?.name===i||[n.UILAYOUTPROP,n.PAGE,n.EVENTS].includes(r.key)&&(e.props?.childOf===i||e.props?.childOf?.endsWith("."+i)));if(e)if(r.key===n.HIDE_FOR||r.key===n.SHOW_FOR)e.props=Object.assign({},e.props,d);else if(r.key!==n.UILAYOUTPROP)e.props=Object.assign({},e.props,{[r.key]:t});else{const{row:t,col:a,props:o}=r.props;e.props=Object.assign({},o||{},e.props,t,a)}}break}default:throw new u("Invalid key: "+r.key)}})}}o=Object.assign({},h,o,{handlers:R||{}});const D=new Set([...Array.isArray(o?.namespaces)?o.namespaces:[],..."string"==typeof o?.namespace?[o.namespace]:[]].filter(Boolean)),I=o?.operation;O=this.sortChildrenByOrder(O).filter(e=>{const t=e?.props?.hidden||[];if(t.length>0&&t.includes(I))return!1;const r=e?.props?.hideFor||[],a=e?.props?.showFor||[];return!(r.length>0&&[...D].some(e=>r.includes(e))||a.length>0&&![...D].some(e=>a.includes(e)))});const N={tag:f,item:g,props:o,children:O?.length?O:void 0};return s&&(N.rendererId=T(e)),N}static register(e){if(e.flavour in this.cache)throw new r.InternalError(`Rendering engine under ${e.flavour} already exists`);this.cache[e.flavour]=e,this.current=e}static getOrBoot(e){if(e instanceof m)return e;const t=new e;return t.initialize(),t}static get(e){if(!e)return this.getOrBoot(this.current);if(!(e in this.cache))throw new r.InternalError(`Rendering engine under ${e} does not exist`);return this.getOrBoot(this.cache[e])}static render(e,...a){if(!t.Model.get(e.constructor.name)&&!t.Model.fromObject(e))throw new r.InternalError("No model registered found");const o=t.Model.renderedBy(e.constructor);return m.get(o).render(e,...a)}}function O(...e){return(t,r)=>a.propMetadata(h(r,n.HIDDEN),e)(t,r)}function g(...e){return(t,r)=>a.propMetadata(h(r,n.SHOW_FOR),e)(t,r)}function L(e,t){return(r,o)=>{a.propMetadata(h(o,n.EVENTS),{..."object"==typeof e?e:{[e]:t}})(r,o)}}class A extends t.Validator{getMessage(e,...t){return A.translateService?A.translateService.translate(e,...t):super.getMessage(e,...t)}}class D extends o.LoggedClass{constructor(){super(),this.enableDarkMode=!0,this.isDarkMode=!1,this.item={tag:""},this.props={},this.route="",this.borders=!1,this.OperationKeys=r.OperationKeys,this.initialized=!1,this.events={},this.handlers={}}get repository(){return this._repository}set repository(e){this._repository=e}async render(...e){this.log.for(this.render).info(`render for ${this.componentName} with ${JSON.stringify(e)}`)}async refresh(...e){this.log.for(this.refresh).info("Refresh called with args: "+e)}async initialize(...e){this.initialized=!0}async translate(...e){this.log.for(this.translate).info(`translate for ${this.componentName} with ${JSON.stringify(e)}`)}async preview(...e){this.log.for(this.preview).debug("Preview called with args: "+e)}async submit(...e){this.log.for(this.submit).info(`submit for ${this.componentName} with ${JSON.stringify(e)}`)}parseHandlers(e,t){const r={};return Object.entries(e).forEach(([e,a])=>{if(f(a)){const o=new a,s=e in o?o[e]:o.handle;r[e]=s,t.handlers[e]=s}else r[e]=a,t.handlers[e]=a}),r}parseEvents(e,t){const r={};return Object.entries(e).forEach(([e,a])=>{const o=e,s=a();if(f(s)){const a=(new s)[e];a&&(r[o]=a,t.events[o]=a)}else r[o]=a,t.events[o]=a}),r}}class I extends o.LoggedClass{translate(e,t){this.log.for(this.translate).info(`Must translate ${e} with params ${JSON.stringify(t||{})}`)}instant(e,t){this.log.for(this.instant).info(`Must translate ${e} with params ${JSON.stringify(t||{})}`)}}function N(e,t){return(r,o)=>{const s={tag:e||r.name,props:t};return a.metadata(a.Metadata.key(n.REFLECT,n.UIMODEL),s)(r)}}function b(e){return a.apply(a.metadata(a.Metadata.key(n.REFLECT,n.RENDERED_BY),e))}function C(e,t){return(r,o)=>{const s={item:{tag:e||r.name,props:t}};return a.metadata(a.Metadata.key(n.REFLECT,n.UILISTMODEL),s)(r)}}function S(e){return t=>{const r={handlers:e};return a.metadata(a.Metadata.key(n.REFLECT,n.HANDLERS),r)(t)}}function P(t,r=1,o=1,s={}){const i=Object.assign({..."boolean"==typeof r?{flexMode:r,cols:1}:{flexMode:!1,cols:r},rows:o,...Object.assign({breakpoint:e.UIMediaBreakPoints.LARGE},s)});return(e,r)=>(a.metadata(a.Metadata.key(n.REFLECT,n.UILAYOUT),i)(e),N(t,i)(e,r))}function k(e,t=1,r=!1,a={}){let o=[];return"object"==typeof t&&(o=t,t=o.length),N(e,{pages:t,paginated:r,pageTitles:o,props:a})}t.Model.prototype.render=function(...e){return m.render(this,...e)},t.Model.renderedBy=(e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.RENDERED_BY))).bind(t.Model),t.Model.uiPropertiesOf=(e=>{const t=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES));if(t)return Object.keys(t)}).bind(t.Model),t.Model.uiDecorationOf=(e,t,r)=>{const o=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES,t));if(o)return r?o[r]:o},t.Model.uiModelOf=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.UIMODEL)),t.Model.uiElementOf=(e,t)=>a.Metadata.get(e,h(t,n.ELEMENT)),t.Model.uiListModelOf=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.UILISTMODEL)),t.Model.uiHandlersFor=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.HANDLERS)),t.Model.uiLayoutOf=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.UILAYOUT)),t.Model.uiIsHidden=(e,t)=>!!a.Metadata.get(e,h(t,n.HIDDEN)),t.Model.uiIsHiddenOn=(e,t,r)=>{const o=a.Metadata.get(e,h(t,n.HIDDEN));return!!o&&(r?o.includes(r):o)},t.Model.uiTypeOf=(e,t)=>{const o=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES,t));if(!o)throw new r.NotFoundError(`No metadata found for property '${t}' on model '${e.name}'`);const s=Object.keys(o).filter(e=>[n.PROP,n.ELEMENT,n.CHILD].includes(e));if(0===s.length)throw new r.NotFoundError(`No UI type metadata found for property '${t}' on model '${e.name}'`);if(s.length>1)throw new u("Only one type of decoration is allowed. Please choose between @uiprop, @uichild or @uielement");return o[s[0]]},t.Model.uiListItems=(e=>{const t=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES));if(t)return Object.keys(t)}).bind(t.Model);const U=t.ModelBuilder.prototype;U.decorateClass||(U.decorateClass=function(e){return this._classDecorators||(this._classDecorators=[]),this._classDecorators.push(e),this}),U.uimodel=function(e,t){return this.decorateClass(N(e,t))},U.renderedBy=function(e){return this.decorateClass(b(e))},U.uilistmodel=function(e,t){return this.decorateClass(C(e,t))},U.uihandlers=function(e){return this.decorateClass(S(e))},U.uilayout=function(e,t,r,a){return this.decorateClass(P(e,t,r,a))},U.uisteppedmodel=function(e,t,r,a){return this.decorateClass(k(e,t,r,a))};const w="##VERSION##",v="##PACKAGE##";a.Metadata.registerLibrary(v,w),e.ActionRoles=E,e.COMMIT="4873fcd",e.ComponentEventNames={Render:"render",BackButtonClickEvent:"backButtonNavigationEndEvent",Refresh:"RefreshEvent",Click:"ClickEvent",Change:"ChangeEvent",Submit:"SubmitEvent",ValidationError:"validationErrorEvent",ThemeChange:"themeChangeEvent",FormGroupLoaded:"formGroupLoadedEvent"},e.DecafComponent=D,e.DecafEventHandler=class extends D{constructor(){super()}handle(...e){this.log.for(this.handle).info(`component ${this.componentName} handling ${JSON.stringify(e)}`)}handleClick(...e){this.log.for(this.handleClick).info(`component ${this.componentName} handling click ${JSON.stringify(e)}`)}handleAction(...e){this.log.for(this.handleAction).info(`component ${this.componentName} handling action ${JSON.stringify(e)}`)}},e.DecafTranslateService=I,e.ElementPositions={left:"left",center:"center",right:"right",top:"top",bottom:"bottom"},e.ElementSizes={xsmall:"xsmall",small:"small",medium:"medium",default:"default",large:"large",xLarge:"xlarge","2xLarge":"2xlarge",auto:"auto",expand:"expand",block:"block",half:"half",full:"full"},e.FULL_VERSION="0.20.1-4873fcd",e.HTML5CheckTypes=p,e.HTML5DateFormat=l,e.HTML5InputTypes=c,e.LayoutGridGaps={small:"small",medium:"medium",large:"large",collapse:"collapse",none:""},e.PACKAGE_NAME=v,e.RenderingEngine=m,e.RenderingError=u,e.TransactionHooks={BeforeRead:"beforeRead",AfterRead:"afterRead",BeforeCreate:"beforeCreate",AfterCreate:"afterCreate",BeforeUpdate:"beforeUpdate",AfterUpdate:"afterUpdate",BeforeDelete:"beforeDelete",AfterDelete:"afterDelete"},e.UIKeys=n,e.UIValidator=A,e.VERSION=w,e.ValidatableByAttribute=d,e.ValidatableByType=i,e.WindowColorSchemes={light:"light",dark:"dark",undefined:"undefined"},e.escapeHtml=R,e.formatByType=y,e.generateUIModelID=T,e.getUIAttributeKey=h,e.hidden=()=>O(r.OperationKeys.CREATE,r.OperationKeys.READ,r.OperationKeys.UPDATE,r.OperationKeys.DELETE),e.hideFor=(...e)=>(t,r)=>a.propMetadata(h(r,n.HIDE_FOR),e)(t,r),e.hideOn=O,e.isClassConstructor=f,e.parseToNumber=M,e.parseValueByType=function e(a,o,s){let n;switch(a){case Array.name:n=(Array.isArray(o)?o.map(r=>e(t.ReservedModels.STRING.name.toLowerCase(),r,s)):[o]).join(",");break;case c.NUMBER:n=M(o);break;case c.DATE:{const e=s.format;o&&(""+o).trim().length&&(n=typeof o===t.ReservedModels.NUMBER.name.toLowerCase()?new Date(o):o?e?t.parseDate(e,o):new Date(o):void 0);break}default:n=typeof o===t.ReservedModels.OBJECT.name.toLowerCase()?Array.isArray(o)?o.join(","):JSON.stringify(o):typeof o===t.ReservedModels.BOOLEAN.name.toLowerCase()?o:typeof o===t.ReservedModels.STRING.name.toLowerCase()?R(o):n}if(void 0===n)throw new r.InternalError(`Failed to parse value of type ${a} from ${typeof o} - ${o}`);return n},e.renderIf=(...e)=>g(...e),e.renderedBy=b,e.revertHtml=e=>{const t={"&amp;":"&","&lt;":"<","&gt;":">"};return(""+e).replace(/&lt;|&gt;|&amp;/g,e=>t[e]||e)},e.showFor=g,e.uichild=(e,t,r={},o=!1,s=!1)=>(i,d)=>{const l={tag:t,serialize:s,props:Object.assign({},r||{},{name:e||d},o?{customTypes:[Array.name],multiple:!0}:{multiple:r?.multiple||!1})};a.propMetadata(h(d,n.CHILD),l)(i,d)},e.uielement=(e,t,r=!1)=>(o,s)=>{"object"==typeof e&&(t=e,e="");const i={tag:e,serialize:r,props:Object.assign({},t||{},{name:s})};return a.propMetadata(h(s,n.ELEMENT),i)(o,s)},e.uihandlers=S,e.uilayout=P,e.uilayoutprop=(e=1,t=1)=>(r,o)=>{const s={name:o,props:Object.assign({},{row:t,col:e})};a.propMetadata(h(o,n.UILAYOUTPROP),s)(r,o)},e.uilistmodel=C,e.uilistprop=(e=void 0,t)=>(r,o)=>{const s={name:e||o,props:t||{}};a.propMetadata(h(o,n.UILISTPROP),s)(r,o)},e.uimodel=N,e.uion=L,e.uionclick=e=>L("handleClick",e),e.uionrender=e=>L("render",e),e.uiorder=(e=n.FIRST)=>(t,r)=>a.propMetadata(h(r,n.ORDER),e)(t,r),e.uipageprop=(e=1)=>(t,r)=>a.propMetadata(h(r,n.PAGE),e)(t,r),e.uiprop=(e=void 0,t=!1)=>(r,o)=>{const s={name:e||o,stringify:t};a.propMetadata(h(o,n.PROP),s)(r,o)},e.uisteppedmodel=k,e.uitablecol=(e=n.LAST,t)=>(r,o)=>{const s={name:o,props:{sequence:e,...t?{valueParserFn:t}:{}}};a.propMetadata(h(o,n.UILISTPROP),s)(r,o)}},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decorator-validation"),require("@decaf-ts/db-decorators"),require("@decaf-ts/decoration"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decorator-validation","@decaf-ts/db-decorators","@decaf-ts/decoration","@decaf-ts/logging"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["ui-decorators"]={},e.decafTsDecoratorValidation,e.decafTsDbDecorators,e.decafTsDecoration,e.decafTsLogging);
1
+ var e,t;e=this,t=function(e,t,r,a,o){"use strict";var s;e.UIMediaBreakPoints=void 0,(s=e.UIMediaBreakPoints||(e.UIMediaBreakPoints={})).SMALL="small",s.MEDIUM="medium",s.LARGE="large",s.XLARGE="xlarge";const n={REFLECT:"ui",UIMODEL:"uimodel",RENDERED_BY:"rendered-by",ELEMENT:"uielement",PROP:"uiprop",CHILD:"uichild",NAME:"name",NAME_PREFIX:"input-",VALIDATION_MESSAGE:"validationMessage",UILISTMODEL:"uilistmodel",UILISTPROP:"uilistprop",UILAYOUT:"uilayout",UILAYOUTPROP:"uilayoutprop",HANDLERS:"handlers",TYPE:"type",SUB_TYPE:"subType",HIDDEN:"hidden",HIDE_FOR:"hide-for",SHOW_FOR:"show-for",RENDER_IF:"render-if",FORMAT:"format",ORDER:"order",PAGE:"page",EVENTS:"events",FIRST:"first",LAST:"last",READ_ONLY:"readonly",SEQUENCE:"sequence",REQUIRED:t.ValidationKeys.REQUIRED,MIN:t.ValidationKeys.MIN,MIN_LENGTH:t.ValidationKeys.MIN_LENGTH,MAX:t.ValidationKeys.MAX,MAX_LENGTH:t.ValidationKeys.MAX_LENGTH,PATTERN:t.ValidationKeys.PATTERN,URL:t.ValidationKeys.URL,STEP:t.ValidationKeys.STEP,DATE:t.ValidationKeys.DATE,EMAIL:t.ValidationKeys.EMAIL,PASSWORD:t.ValidationKeys.PASSWORD,EQUALS:t.ValidationKeys.EQUALS,DIFF:t.ValidationKeys.DIFF,LESS_THAN:t.ValidationKeys.LESS_THAN,LESS_THAN_OR_EQUAL:t.ValidationKeys.LESS_THAN_OR_EQUAL,GREATER_THAN:t.ValidationKeys.GREATER_THAN,GREATER_THAN_OR_EQUAL:t.ValidationKeys.GREATER_THAN_OR_EQUAL},i={[n.EMAIL]:t.EmailValidator,[n.URL]:t.URLValidator,[n.DATE]:t.DateValidator,[n.PASSWORD]:t.PasswordValidator},d={[n.REQUIRED]:t.RequiredValidator,[n.MIN]:t.MinValidator,[n.MAX]:t.MaxValidator,[n.STEP]:t.StepValidator,[n.MIN_LENGTH]:t.MinLengthValidator,[n.MAX_LENGTH]:t.MaxLengthValidator,[n.PATTERN]:t.PatternValidator,[n.EQUALS]:t.EqualsValidator,[n.DIFF]:t.DiffValidator,[n.LESS_THAN]:t.LessThanValidator,[n.LESS_THAN_OR_EQUAL]:t.LessThanOrEqualValidator,[n.GREATER_THAN]:t.GreaterThanValidator,[n.GREATER_THAN_OR_EQUAL]:t.GreaterThanOrEqualValidator},l="yyyy-MM-dd",c={BUTTON:"button",CHECKBOX:"checkbox",COLOR:"color",DATE:n.DATE,DATETIME_LOCAL:"datetime-local",EMAIL:n.EMAIL,FILE:"file",HIDDEN:"hidden",IMAGE:"image",MONTH:"month",NUMBER:"number",PASSWORD:n.PASSWORD,RADIO:"radio",RANGE:"range",RESET:"reset",SEARCH:"search",SUBMIT:"submit",TEL:"tel",TEXT:"text",TEXTAREA:"textarea",SELECT:"select",TIME:"time",URL:n.URL,WEEK:"week"},p=[c.CHECKBOX,c.RADIO],E={cancel:"cancel",confirm:"confirm",submit:"submit",clear:"clear",back:"back",[r.OperationKeys.CREATE]:r.OperationKeys.CREATE,[r.OperationKeys.READ]:r.OperationKeys.READ,[r.OperationKeys.UPDATE]:r.OperationKeys.UPDATE,[r.OperationKeys.DELETE]:r.OperationKeys.DELETE};class u extends r.InternalError{constructor(e){super(e,u.name)}}const f=e=>"function"==typeof e&&/^class\s/.test(e+"");function h(e,t){return a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES,e,t)}function y(e,r,...a){if(e===n.DATE){if(!r)return"";const e=a.shift()||l;return t.formatDate(new Date(r),e)}return r}function M(e){if("number"==typeof e&&!isNaN(e))return e;const t=Number(e);return isNaN(t)?void 0:t}function R(e){if(!e)return e;const t={"&":"&amp;","<":"&lt;",">":"&gt;"};return(""+e).replace(/[&<>]/g,e=>t[e]||e)}function T(e){let r=Date.now();try{t.Model.pk(e.constructor)&&(r=e[t.Model.pk(e.constructor)])}catch(e){}return`${e.constructor.name}-${r}`}class m{static{this.cache={}}constructor(e){this.flavour=e,this.initialized=!1,m.register(this)}translate(e,r=!0){if(r)switch(e){case t.ReservedModels.STRING.name.toLowerCase():return c.TEXT;case t.ReservedModels.NUMBER.name.toLowerCase():case t.ReservedModels.BIGINT.name.toLowerCase():return c.NUMBER;case t.ReservedModels.BOOLEAN.name.toLowerCase():return c.CHECKBOX;case t.ReservedModels.DATE.name.toLowerCase():return c.DATE}else switch(e){case c.SELECT:case c.TEXT:case c.EMAIL:case c.COLOR:case c.PASSWORD:case c.TEL:case c.URL:case c.SEARCH:case c.HIDDEN:case c.TEXTAREA:case c.RADIO:return t.ReservedModels.STRING.name.toLowerCase();case c.NUMBER:return t.ReservedModels.NUMBER.name.toLowerCase();case c.CHECKBOX:return t.ReservedModels.BOOLEAN.name.toLowerCase();case c.DATE:case c.DATETIME_LOCAL:case c.TIME:return t.ReservedModels.DATE.name.toLowerCase()}return e}getClassDecoratorsMetadata(e){return[t.Model.uiModelOf(e.constructor),t.Model.uiListModelOf(e.constructor),t.Model.uiHandlersFor(e.constructor),t.Model.uiLayoutOf(e.constructor)].filter(Boolean)}sortChildrenByOrder(e=[]){return e.sort((r,a)=>{const o=r.props?.order??0,s=a.props?.order??0,i=r=>r===n.FIRST?0:typeof r===t.Primitives.NUMBER?1:r===n.LAST?e.length+e.indexOf(a):1,d=i(o),l=i(s);return d!==l?d-l:1===d&&typeof o===t.Primitives.NUMBER&&typeof s===t.Primitives.NUMBER?o-s:0})}isCustomValidator(e){return!Object.values(t.ValidationKeys).includes(e)&&!Object.values(n).includes(e)}isValidatableByType(e){return Object.keys(i).includes(e)}isValidatableByAttribute(e){return Object.keys(d).includes(e)}toAttributeValue(e,t){if(!Object.keys(d).includes(e))throw Error(`Invalid attribute key "${e}". Expected one of: ${Object.keys(d).join(", ")}.`);return e===n.REQUIRED||t[e]}toFieldDefinition(e,o={},s=!0){const{inheritProps:i,...d}=o;o=d;const p=this.getClassDecoratorsMetadata(e);if(!p.length)throw new u(`No ui definitions set for model ${e.constructor.name}. Did you use @uimodel?`);const E=Object.assign({},...p,i||{}),{tag:f,props:h,item:M,handlers:R}=E,m=t.Model.uiPropertiesOf(e.constructor);let O,g=M?.props||{},L={};const A=(e,t)=>e?[e,t].join("."):t;if(m){const s=a.Metadata.get(e.constructor,t.ValidationKeys.REFLECT)||{};for(const i of m){const d=t.Model.uiDecorationOf(e.constructor,i);let p;try{p=t.Model.uiTypeOf(e.constructor,i)}catch(e){if(!(e instanceof r.NotFoundError))throw e}if(t.Model.uiIsHidden(e.constructor,i)&&!t.Model.uiElementOf(e.constructor,i))throw new u(`@uielement no found in "${i}". It is required to use hiddenOn decorator.`);Object.entries(d).map(([e,t])=>({key:e,props:t})).sort(e=>[n.ELEMENT,n.CHILD].includes(e.key)?-1:1).forEach(r=>{if(!r)throw new u("No decorator found");switch(r.key){case n.PROP:g[i]=r.props;break;case n.CHILD:{const a=r.props?.props?.name||i;try{if(!t.Model.isModel(t.Model.build({},a))&&!t.Model.isPropertyModel(e,a))throw new u(`Child "${a}" must be a model.`)}catch(e){throw new u(`Child "${a}" must be a model.`)}let s;const n=e[i];if("object"!=typeof n||null===n||Array.isArray(n)){const e=r.props.props?.name;s=new(t.Model.get(e))}O=O||[];const d=Object.assign({},o||{},{model:s},{inheritProps:r.props,childOf:A(o?.childOf,i)}),l=this.toFieldDefinition(n||s,d,!1),{inheritProps:c}=d;c&&(l.props=Object.assign({},l.props,c.props||{})),O.push(l);break}case n.UILISTPROP:{L=L||{};const e=r.props;e.name&&(L[e.name]="object"==typeof e?.props&&n.SEQUENCE in e.props?e.props:i);const t=Object.assign({},E.props?.item||{},M?.props||{},e?.props||{},o);g={tag:M?.tag||t.render||"",props:Object.assign({},g?.props,{mapper:L},t)};break}case n.EVENTS:case n.HIDDEN:case n.HIDE_FOR:case n.SHOW_FOR:case n.PAGE:case n.ORDER:case n.UILAYOUTPROP:case n.ELEMENT:{O=O||[];const t=r.props,d=r.key===n.HIDE_FOR?{hideFor:r.props}:r.key===n.SHOW_FOR?{showFor:r.props}:{},p=Object.assign({},g?.props,t.props||{},d,t?.props?.name?{path:A(o?.childOf,t.props.name),childOf:void 0}:{},o,{name:t.props?.name||i});if(r.key===n.ELEMENT){const r={tag:t.tag||g?.tag||f||"",props:p},o=s[i];if(o)for(const e of Object.entries(o).map(([e,t])=>({key:e,props:t})))this.isValidatableByAttribute(e.key)?r.props[this.translate(e.key)]=this.toAttributeValue(e.key,e.props):this.isValidatableByType(e.key)?(e.key===c.DATE&&(r.props[n.FORMAT]=e.props.format||l),r.props[n.TYPE]=e.key):this.isCustomValidator(e.key)&&(p[n.SUB_TYPE]=e.key,e.props?.message&&(p[n.VALIDATION_MESSAGE]=e.props.message));if(!r.props[n.TYPE]){const t=a.Metadata.type(e.constructor,i).name;r.props[n.TYPE]=this.translate(t.toLowerCase(),!0)}r.props.value=y(r.props[n.TYPE],e[i],r.props[n.FORMAT]),O.push(r)}else{const e=O.find(e=>e.props?.name===i||[n.UILAYOUTPROP,n.PAGE,n.EVENTS].includes(r.key)&&(e.props?.childOf===i||e.props?.childOf?.endsWith("."+i)));if(e)if(r.key===n.HIDE_FOR||r.key===n.SHOW_FOR)e.props=Object.assign({},e.props,d);else if(r.key!==n.UILAYOUTPROP)e.props=Object.assign({},e.props,{[r.key]:t});else{const{row:t,col:a,props:o}=r.props;e.props=Object.assign({},o||{},e.props,t,a)}}break}default:throw new u("Invalid key: "+r.key)}})}}o=Object.assign({},h,o,{handlers:R||{}});const D=new Set([...Array.isArray(o?.namespaces)?o.namespaces:[],..."string"==typeof o?.namespace?[o.namespace]:[]].filter(Boolean)),I=o?.operation;O=this.sortChildrenByOrder(O).filter(e=>{const t=e?.props?.hidden||[];if(t.length>0&&t.includes(I))return!1;const r=e?.props?.hideFor||[],a=e?.props?.showFor||[];return!(r.length>0&&[...D].some(e=>r.includes(e))||a.length>0&&![...D].some(e=>a.includes(e)))});const N={tag:f,item:g,props:o,children:O?.length?O:void 0};return s&&(N.rendererId=T(e)),N}static register(e){if(e.flavour in this.cache)throw new r.InternalError(`Rendering engine under ${e.flavour} already exists`);this.cache[e.flavour]=e,this.current=e}static getOrBoot(e){if(e instanceof m)return e;const t=new e;return t.initialize(),t}static get(e){if(!e)return this.getOrBoot(this.current);if(!(e in this.cache))throw new r.InternalError(`Rendering engine under ${e} does not exist`);return this.getOrBoot(this.cache[e])}static render(e,...a){if(!t.Model.get(e.constructor.name)&&!t.Model.fromObject(e))throw new r.InternalError("No model registered found");const o=t.Model.renderedBy(e.constructor);return m.get(o).render(e,...a)}}function O(...e){return(t,r)=>a.propMetadata(h(r,n.HIDDEN),e)(t,r)}function g(...e){return(t,r)=>a.propMetadata(h(r,n.SHOW_FOR),e)(t,r)}function L(e,t){return(r,o)=>{a.propMetadata(h(o,n.EVENTS),{..."object"==typeof e?e:{[e]:t}})(r,o)}}class A extends t.Validator{getMessage(e,...t){return A.translateService?A.translateService.translate(e,...t):super.getMessage(e,...t)}}class D extends o.LoggedClass{constructor(){super(),this.enableDarkMode=!0,this.isDarkMode=!1,this.item={tag:""},this.props={},this.route="",this.borders=!1,this.OperationKeys=r.OperationKeys,this.initialized=!1,this.events={},this.handlers={}}get repository(){return this._repository}set repository(e){this._repository=e}async render(...e){this.log.for(this.render).info(`render for ${this.componentName} with ${JSON.stringify(e)}`)}async refresh(...e){this.log.for(this.refresh).info("Refresh called with args: "+e)}async initialize(...e){this.initialized=!0}async translate(...e){this.log.for(this.translate).info(`translate for ${this.componentName} with ${JSON.stringify(e)}`)}async preview(...e){this.log.for(this.preview).debug("Preview called with args: "+e)}async submit(...e){this.log.for(this.submit).info(`submit for ${this.componentName} with ${JSON.stringify(e)}`)}parseHandlers(e,t){const r={};return Object.entries(e).forEach(([e,a])=>{if(f(a)){const o=new a,s=e in o?o[e]:o.handle;r[e]=s,t.handlers[e]=s}else r[e]=a,t.handlers[e]=a}),r}parseEvents(e,t){const r={};return Object.entries(e).forEach(([e,a])=>{const o=e,s=a();if(f(s)){const a=(new s)[e];a&&(r[o]=a,t.events[o]=a)}else r[o]=a,t.events[o]=a}),r}}class I extends o.LoggedClass{translate(e,t){this.log.for(this.translate).info(`Must translate ${e} with params ${JSON.stringify(t||{})}`)}instant(e,t){this.log.for(this.instant).info(`Must translate ${e} with params ${JSON.stringify(t||{})}`)}}function N(e,t){return(r,o)=>{const s={tag:e||r.name,props:t};return a.metadata(a.Metadata.key(n.REFLECT,n.UIMODEL),s)(r)}}function b(e){return a.apply(a.metadata(a.Metadata.key(n.REFLECT,n.RENDERED_BY),e))}function C(e,t){return(r,o)=>{const s={item:{tag:e||r.name,props:t}};return a.metadata(a.Metadata.key(n.REFLECT,n.UILISTMODEL),s)(r)}}function S(e){return t=>{const r={handlers:e};return a.metadata(a.Metadata.key(n.REFLECT,n.HANDLERS),r)(t)}}function P(t,r=1,o=1,s={}){const i=Object.assign({..."boolean"==typeof r?{flexMode:r,cols:1}:{flexMode:!1,cols:r},rows:o,...Object.assign({breakpoint:e.UIMediaBreakPoints.LARGE},s)});return(e,r)=>(a.metadata(a.Metadata.key(n.REFLECT,n.UILAYOUT),i)(e),N(t,i)(e,r))}function k(e,t=1,r=!1,a={}){let o=[];return"object"==typeof t&&(o=t,t=o.length),N(e,{pages:t,paginated:r,pageTitles:o,props:a})}t.Model.prototype.render=function(...e){return m.render(this,...e)},t.Model.renderedBy=(e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.RENDERED_BY))).bind(t.Model),t.Model.uiPropertiesOf=(e=>{const t=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES));if(t)return Object.keys(t)}).bind(t.Model),t.Model.uiDecorationOf=(e,t,r)=>{const o=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES,t));if(o)return r?o[r]:o},t.Model.uiModelOf=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.UIMODEL)),t.Model.uiElementOf=(e,t)=>a.Metadata.get(e,h(t,n.ELEMENT)),t.Model.uiListModelOf=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.UILISTMODEL)),t.Model.uiHandlersFor=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.HANDLERS)),t.Model.uiLayoutOf=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.UILAYOUT)),t.Model.uiIsHidden=(e,t)=>!!a.Metadata.get(e,h(t,n.HIDDEN)),t.Model.uiIsHiddenOn=(e,t,r)=>{const o=a.Metadata.get(e,h(t,n.HIDDEN));return!!o&&(r?o.includes(r):o)},t.Model.uiTypeOf=(e,t)=>{const o=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES,t));if(!o)throw new r.NotFoundError(`No metadata found for property '${t}' on model '${e.name}'`);const s=Object.keys(o).filter(e=>[n.PROP,n.ELEMENT,n.CHILD].includes(e));if(0===s.length)throw new r.NotFoundError(`No UI type metadata found for property '${t}' on model '${e.name}'`);if(s.length>1)throw new u("Only one type of decoration is allowed. Please choose between @uiprop, @uichild or @uielement");return o[s[0]]},t.Model.uiListItems=(e=>{const t=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES));if(t)return Object.keys(t)}).bind(t.Model);const U=t.ModelBuilder.prototype;U.decorateClass||(U.decorateClass=function(e){return this._classDecorators||(this._classDecorators=[]),this._classDecorators.push(e),this}),U.uimodel=function(e,t){return this.decorateClass(N(e,t))},U.renderedBy=function(e){return this.decorateClass(b(e))},U.uilistmodel=function(e,t){return this.decorateClass(C(e,t))},U.uihandlers=function(e){return this.decorateClass(S(e))},U.uilayout=function(e,t,r,a){return this.decorateClass(P(e,t,r,a))},U.uisteppedmodel=function(e,t,r,a){return this.decorateClass(k(e,t,r,a))};const w="##VERSION##",v="##PACKAGE##";a.Metadata.registerLibrary(v,w),e.ActionRoles=E,e.COMMIT="f5a4e57",e.ComponentEventNames={Render:"render",BackButtonClickEvent:"backButtonNavigationEndEvent",Refresh:"RefreshEvent",Click:"ClickEvent",Change:"ChangeEvent",Submit:"SubmitEvent",ValidationError:"validationErrorEvent",ThemeChange:"themeChangeEvent",FormGroupLoaded:"formGroupLoadedEvent"},e.DecafComponent=D,e.DecafEventHandler=class extends D{constructor(){super()}handle(...e){this.log.for(this.handle).info(`component ${this.componentName} handling ${JSON.stringify(e)}`)}handleClick(...e){this.log.for(this.handleClick).info(`component ${this.componentName} handling click ${JSON.stringify(e)}`)}handleAction(...e){this.log.for(this.handleAction).info(`component ${this.componentName} handling action ${JSON.stringify(e)}`)}},e.DecafTranslateService=I,e.ElementPositions={left:"left",center:"center",right:"right",top:"top",bottom:"bottom"},e.ElementSizes={xsmall:"xsmall",small:"small",medium:"medium",default:"default",large:"large",xLarge:"xlarge","2xLarge":"2xlarge",auto:"auto",expand:"expand",block:"block",half:"half",full:"full"},e.FULL_VERSION="0.20.2-f5a4e57",e.HTML5CheckTypes=p,e.HTML5DateFormat=l,e.HTML5InputTypes=c,e.LayoutGridGaps={small:"small",medium:"medium",large:"large",collapse:"collapse",none:""},e.PACKAGE_NAME=v,e.RenderingEngine=m,e.RenderingError=u,e.TransactionHooks={BeforeRead:"beforeRead",AfterRead:"afterRead",BeforeCreate:"beforeCreate",AfterCreate:"afterCreate",BeforeUpdate:"beforeUpdate",AfterUpdate:"afterUpdate",BeforeDelete:"beforeDelete",AfterDelete:"afterDelete"},e.UIKeys=n,e.UIValidator=A,e.VERSION=w,e.ValidatableByAttribute=d,e.ValidatableByType=i,e.WindowColorSchemes={light:"light",dark:"dark",undefined:"undefined"},e.escapeHtml=R,e.formatByType=y,e.generateUIModelID=T,e.getUIAttributeKey=h,e.hidden=()=>O(r.OperationKeys.CREATE,r.OperationKeys.READ,r.OperationKeys.UPDATE,r.OperationKeys.DELETE),e.hideFor=(...e)=>(t,r)=>a.propMetadata(h(r,n.HIDE_FOR),e)(t,r),e.hideOn=O,e.isClassConstructor=f,e.parseToNumber=M,e.parseValueByType=function e(a,o,s){let n;switch(a){case Array.name:n=(Array.isArray(o)?o.map(r=>e(t.ReservedModels.STRING.name.toLowerCase(),r,s)):[o]).join(",");break;case c.NUMBER:n=M(o);break;case c.DATE:{const e=s.format;o&&(""+o).trim().length&&(n=typeof o===t.ReservedModels.NUMBER.name.toLowerCase()?new Date(o):o?e?t.parseDate(e,o):new Date(o):void 0);break}default:n=typeof o===t.ReservedModels.OBJECT.name.toLowerCase()?Array.isArray(o)?o.join(","):JSON.stringify(o):typeof o===t.ReservedModels.BOOLEAN.name.toLowerCase()?o:typeof o===t.ReservedModels.STRING.name.toLowerCase()?R(o):n}if(void 0===n)throw new r.InternalError(`Failed to parse value of type ${a} from ${typeof o} - ${o}`);return n},e.renderIf=(...e)=>g(...e),e.renderedBy=b,e.revertHtml=e=>{const t={"&amp;":"&","&lt;":"<","&gt;":">"};return(""+e).replace(/&lt;|&gt;|&amp;/g,e=>t[e]||e)},e.showFor=g,e.uichild=(e,t,r={},o=!1,s=!1)=>(i,d)=>{const l={tag:t,serialize:s,props:Object.assign({},r||{},{name:e||d},o?{customTypes:[Array.name],multiple:!0}:{multiple:r?.multiple||!1})};a.propMetadata(h(d,n.CHILD),l)(i,d)},e.uielement=(e,t,r=!1)=>(o,s)=>{"object"==typeof e&&(t=e,e="");const i={tag:e,serialize:r,props:Object.assign({},t||{},{name:s})};return a.propMetadata(h(s,n.ELEMENT),i)(o,s)},e.uihandlers=S,e.uilayout=P,e.uilayoutprop=(e=1,t=1)=>(r,o)=>{const s={name:o,props:Object.assign({},{row:t,col:e})};a.propMetadata(h(o,n.UILAYOUTPROP),s)(r,o)},e.uilistmodel=C,e.uilistprop=(e=void 0,t)=>(r,o)=>{const s={name:e||o,props:t||{}};a.propMetadata(h(o,n.UILISTPROP),s)(r,o)},e.uimodel=N,e.uion=L,e.uionclick=e=>L("handleClick",e),e.uionrender=e=>L("render",e),e.uiorder=(e=n.FIRST)=>(t,r)=>a.propMetadata(h(r,n.ORDER),e)(t,r),e.uipageprop=(e=1)=>(t,r)=>a.propMetadata(h(r,n.PAGE),e)(t,r),e.uiprop=(e=void 0,t=!1)=>(r,o)=>{const s={name:e||o,stringify:t};a.propMetadata(h(o,n.PROP),s)(r,o)},e.uisteppedmodel=k,e.uitablecol=(e=n.LAST,t)=>(r,o)=>{const s={name:o,props:{sequence:e,...t?{valueParserFn:t}:{}}};a.propMetadata(h(o,n.UILISTPROP),s)(r,o)}},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decorator-validation"),require("@decaf-ts/db-decorators"),require("@decaf-ts/decoration"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decorator-validation","@decaf-ts/db-decorators","@decaf-ts/decoration","@decaf-ts/logging"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["ui-decorators"]={},e.decafTsDecoratorValidation,e.decafTsDbDecorators,e.decafTsDecoration,e.decafTsLogging);
2
2
  //# sourceMappingURL=ui-decorators.cjs.map
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isGraphNodePolicyManifest = isGraphNodePolicyManifest;
4
+ /**
5
+ * Type guard for {@link GraphNodePolicyManifest}: accepts objects whose
6
+ * `inputMode` (when present) is one of the declared
7
+ * {@link GraphNodePolicyInputMode} values.
8
+ */
4
9
  function isGraphNodePolicyManifest(value) {
5
10
  if (!value || typeof value !== "object" || Array.isArray(value))
6
11
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"graph/catalog/GraphNodePolicyManifest.cjs","sourceRoot":"","sources":["graph/catalog/GraphNodePolicyManifest.js"],"names":[],"mappings":";;AAAA,8DAKC;AALD,SAAgB,yBAAyB,CAAC,KAAK;IAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAC3D,OAAO,KAAK,CAAC;IACjB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IAChC,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC;AAC5F,CAAC;AACD,mDAAmD"}
1
+ {"version":3,"file":"graph/catalog/GraphNodePolicyManifest.cjs","sourceRoot":"","sources":["graph/catalog/GraphNodePolicyManifest.js"],"names":[],"mappings":";;AAKA,8DAKC;AAVD;;;;GAIG;AACH,SAAgB,yBAAyB,CAAC,KAAK;IAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAC3D,OAAO,KAAK,CAAC;IACjB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IAChC,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC;AAC5F,CAAC;AACD,mDAAmD"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GRAPH_DEFAULT_CATEGORY_STYLE = exports.GRAPH_VISUAL_STATE_STYLES = exports.PortDirection = exports.GRAPH_CANONICAL_DOCUMENT_ENABLED_DEFAULT = exports.GraphKeys = void 0;
4
- exports.graphCanonicalDocumentEnabled = graphCanonicalDocumentEnabled;
3
+ exports.GRAPH_DEFAULT_CATEGORY_STYLE = exports.GRAPH_VISUAL_STATE_STYLES = exports.PortDirection = exports.GraphKeys = void 0;
5
4
  exports.graphVisualStyleOf = graphVisualStyleOf;
6
5
  exports.registerGraphCategoryStyle = registerGraphCategoryStyle;
7
6
  exports.graphCategoryStyleOf = graphCategoryStyleOf;
@@ -13,19 +12,6 @@ exports.resolveEffectiveIcon = resolveEffectiveIcon;
13
12
  GraphKeys["EDGE"] = "graph.edge";
14
13
  GraphKeys["PORT"] = "graph.port";
15
14
  })(exports.GraphKeys || (exports.GraphKeys = {}));
16
- /**
17
- * Rollout gate for the canonical document pipeline (DECAF-50/P1). Defaults to
18
- * off so existing legacy snapshot/definition flows keep working until the
19
- * save/history cutover. Overridable at runtime via the browser-safe global
20
- * `__DECAF_GRAPH_CANONICAL_DOCUMENT__` flag (no Node/`process` dependency).
21
- */
22
- exports.GRAPH_CANONICAL_DOCUMENT_ENABLED_DEFAULT = false;
23
- function graphCanonicalDocumentEnabled() {
24
- const flag = globalThis["__DECAF_GRAPH_CANONICAL_DOCUMENT__"];
25
- if (typeof flag === "boolean")
26
- return flag;
27
- return exports.GRAPH_CANONICAL_DOCUMENT_ENABLED_DEFAULT;
28
- }
29
15
  (function (PortDirection) {
30
16
  PortDirection["INPUT"] = "input";
31
17
  PortDirection["OUTPUT"] = "output";
@@ -1 +1 @@
1
- {"version":3,"file":"graph/constants.cjs","sourceRoot":"","sources":["graph/constants.js"],"names":[],"mappings":";;;AAcA,sEAKC;AA8BD,gDAEC;AAuBD,gEAEC;AAID,oDAKC;AAKD,sDAIC;AAKD,oDAIC;AAtGD,CAAC,UAAU,SAAS;IAChB,SAAS,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC7B,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;IACjC,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;IACjC,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;AACrC,CAAC,CAAC,CAAC,iBAAS,IAAI,CAAC,iBAAS,GAAG,EAAE,CAAC,CAAC,CAAC;AAClC;;;;;GAKG;AACU,QAAA,wCAAwC,GAAG,KAAK,CAAC;AAC9D,SAAgB,6BAA6B;IACzC,MAAM,IAAI,GAAG,UAAU,CAAC,oCAAoC,CAAC,CAAC;IAC9D,IAAI,OAAO,IAAI,KAAK,SAAS;QACzB,OAAO,IAAI,CAAC;IAChB,OAAO,gDAAwC,CAAC;AACpD,CAAC;AAED,CAAC,UAAU,aAAa;IACpB,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACjC,aAAa,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;IACnC,aAAa,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;AAC/C,CAAC,CAAC,CAAC,qBAAa,IAAI,CAAC,qBAAa,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1C;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG;IACrC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;IACpB,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3C,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3C,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;IACzB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;IACvC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;CAC7B,CAAC;AACF;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,KAAK;IACpC,OAAO,iCAAyB,CAAC,KAAK,CAAC,IAAI,iCAAyB,CAAC,IAAI,CAAC;AAC9E,CAAC;AACD;;;;;;;GAOG;AACH,MAAM,6BAA6B,GAAG,EAAE,CAAC;AACzC;;;GAGG;AACU,QAAA,4BAA4B,GAAG;IACxC,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,YAAY;CACrB,CAAC;AACF;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,QAAQ,EAAE,KAAK;IACtD,6BAA6B,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AACpD,CAAC;AACD;;GAEG;AACH,SAAgB,oBAAoB,CAAC,QAAQ;IACzC,IAAI,QAAQ,IAAI,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,OAAO,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,oCAA4B,CAAC;AACxC,CAAC;AACD;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,aAAa,EAAE,QAAQ;IACzD,IAAI,aAAa;QACb,OAAO,aAAa,CAAC;IACzB,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AAChD,CAAC;AACD;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,YAAY,EAAE,QAAQ;IACvD,IAAI,YAAY;QACZ,OAAO,YAAY,CAAC;IACxB,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,oCAA4B,CAAC,IAAI,CAAC;AACpF,CAAC;AACD,qCAAqC"}
1
+ {"version":3,"file":"graph/constants.cjs","sourceRoot":"","sources":["graph/constants.js"],"names":[],"mappings":";;;AAoCA,gDAEC;AAuBD,gEAEC;AAID,oDAKC;AAKD,sDAIC;AAKD,oDAIC;AAzFD,CAAC,UAAU,SAAS;IAChB,SAAS,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC7B,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;IACjC,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;IACjC,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;AACrC,CAAC,CAAC,CAAC,iBAAS,IAAI,CAAC,iBAAS,GAAG,EAAE,CAAC,CAAC,CAAC;AAElC,CAAC,UAAU,aAAa;IACpB,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACjC,aAAa,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;IACnC,aAAa,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;AAC/C,CAAC,CAAC,CAAC,qBAAa,IAAI,CAAC,qBAAa,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1C;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG;IACrC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;IACpB,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3C,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3C,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;IACzB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;IACvC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;CAC7B,CAAC;AACF;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,KAAK;IACpC,OAAO,iCAAyB,CAAC,KAAK,CAAC,IAAI,iCAAyB,CAAC,IAAI,CAAC;AAC9E,CAAC;AACD;;;;;;;GAOG;AACH,MAAM,6BAA6B,GAAG,EAAE,CAAC;AACzC;;;GAGG;AACU,QAAA,4BAA4B,GAAG;IACxC,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,YAAY;CACrB,CAAC;AACF;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,QAAQ,EAAE,KAAK;IACtD,6BAA6B,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AACpD,CAAC;AACD;;GAEG;AACH,SAAgB,oBAAoB,CAAC,QAAQ;IACzC,IAAI,QAAQ,IAAI,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,OAAO,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,oCAA4B,CAAC;AACxC,CAAC;AACD;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,aAAa,EAAE,QAAQ;IACzD,IAAI,aAAa;QACb,OAAO,aAAa,CAAC;IACzB,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AAChD,CAAC;AACD;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,YAAY,EAAE,QAAQ;IACvD,IAAI,YAAY;QACZ,OAAO,YAAY,CAAC;IACxB,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,oCAA4B,CAAC,IAAI,CAAC;AACpF,CAAC;AACD,qCAAqC"}
@@ -14,6 +14,18 @@ const GRAPH_DATE_TYPE_NAME_FORMATS = {
14
14
  "date-time": "date-time",
15
15
  duration: "duration",
16
16
  };
17
+ /**
18
+ * Compiles a decorated workflow (or an already-resolved
19
+ * {@link GraphWorkflowDefinition}) into a canonical
20
+ * {@link GraphWorkflowDocument}: workflow boundary ports, one instance per
21
+ * node (input-port defaults and loop/switch metadata folded into
22
+ * `parameters`/`metadata`), one edge per relation, plus UI state. Browser-safe:
23
+ * node constructors are never invoked, so `@node` classes can seed demo
24
+ * graphs without engine imports (DECAF-50 §4.4.4).
25
+ *
26
+ * @throws ValidationError when the input cannot be resolved to a decorated
27
+ * graph workflow definition.
28
+ */
17
29
  function graphDecoratedWorkflowCompiler(workflow, options = {}) {
18
30
  const definition = resolveGraphWorkflowDefinition(workflow);
19
31
  const nodes = definition.nodes.map((nodeMetadata) => graphNodeInstanceOf(nodeMetadata, definition, options.positions ?? {}));
@@ -92,7 +104,7 @@ function graphNodeInstanceOf(nodeMetadata, workflow, positions) {
92
104
  nodeDefinition?.kind ??
93
105
  nodeDefinition?.name ??
94
106
  nodeMetadata.id,
95
- parameters: graphNodeParametersOf(nodeDefinition),
107
+ parameters: graphNodeParametersOf(nodeMetadata, nodeDefinition),
96
108
  };
97
109
  if (nodeMetadata.label !== undefined)
98
110
  instance.label = nodeMetadata.label;
@@ -137,20 +149,65 @@ function reflectJsonSafeValue(collected, key, value) {
137
149
  return;
138
150
  }
139
151
  }
140
- function graphNodeParametersOf(nodeDefinition) {
141
- if (!nodeDefinition)
142
- return {};
152
+ /**
153
+ * Loop-configuration fields of legacy `graph.metadata.loop` bags that are
154
+ * node configuration rather than loop-body settings. Per DECAF-50 §4.4.5
155
+ * rule 6 (non-port operation/configuration fields belong in `parameters`),
156
+ * these are carried into the instance's `parameters` so legacy loop
157
+ * round-trips stay lossless; `body`/`maxIterations`/`timeoutMs`/
158
+ * `concurrency` live on {@link GraphLoopConfiguration}.
159
+ */
160
+ const GRAPH_LOOP_PARAMETER_KEYS = [
161
+ "condition",
162
+ "inputPort",
163
+ "outputPort",
164
+ "itemPort",
165
+ "resultPort",
166
+ "statePort",
167
+ "slice",
168
+ ];
169
+ function graphNodeParametersOf(nodeMetadata, nodeDefinition) {
143
170
  const parameters = {};
144
- for (const port of (0, reader_js_1.graphLeafPortsOf)(nodeDefinition.ports)) {
145
- if (port.direction !== "input")
146
- continue;
147
- const defaultValue = graphPortDefaultValueOf(port);
148
- if (defaultValue !== undefined) {
149
- parameters[port.path ?? port.property] = defaultValue;
171
+ if (nodeDefinition) {
172
+ for (const port of (0, reader_js_1.graphLeafPortsOf)(nodeDefinition.ports)) {
173
+ if (port.direction !== "input")
174
+ continue;
175
+ const defaultValue = graphPortDefaultValueOf(port);
176
+ if (defaultValue !== undefined) {
177
+ parameters[port.path ?? port.property] = defaultValue;
178
+ }
179
+ }
180
+ }
181
+ const loopMetadata = graphLegacyLoopMetadataOf(nodeMetadata, nodeDefinition);
182
+ if (loopMetadata) {
183
+ for (const key of GRAPH_LOOP_PARAMETER_KEYS) {
184
+ const value = loopMetadata[key];
185
+ if (value === undefined || typeof value === "function")
186
+ continue;
187
+ if (!(0, GraphJsonValue_js_1.isGraphJsonSafeValue)(value))
188
+ continue;
189
+ try {
190
+ parameters[key] = JSON.parse(JSON.stringify(value));
191
+ }
192
+ catch {
193
+ // skip non-serializable legacy values
194
+ }
150
195
  }
151
196
  }
152
197
  return parameters;
153
198
  }
199
+ /**
200
+ * Reads the legacy `graph.metadata.loop` bag from either the node metadata or
201
+ * the node definition shim, so loop-configuration fields can be split between
202
+ * {@link GraphLoopConfiguration} and instance `parameters` (§4.4.5 rule 6).
203
+ */
204
+ function graphLegacyLoopMetadataOf(nodeMetadata, nodeDefinition) {
205
+ const loopMetadata = nodeMetadata.metadata?.["loop"] ??
206
+ nodeDefinition?.graph?.metadata?.["loop"];
207
+ return loopMetadata && typeof loopMetadata === "object"
208
+ ? loopMetadata
209
+ : undefined;
210
+ }
154
211
  function graphLoopConfigurationOf(nodeMetadata, nodeDefinition) {
155
212
  const loopMetadata = nodeMetadata.metadata?.["loop"] ??
156
213
  nodeDefinition?.graph?.metadata?.["loop"];
@@ -1 +1 @@
1
- {"version":3,"file":"graph/document/GraphDecoratedWorkflowCompiler.cjs","sourceRoot":"","sources":["graph/document/GraphDecoratedWorkflowCompiler.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph/document/GraphDecoratedWorkflowCompiler.cjs","sourceRoot":"","sources":["graph/document/GraphDecoratedWorkflowCompiler.js"],"names":[],"mappings":"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"}
@@ -7,7 +7,17 @@ const GraphJsonValue_js_1 = require("./GraphJsonValue.cjs");
7
7
  const GraphEndpoint_js_1 = require("./GraphEndpoint.cjs");
8
8
  const GraphNodeBinding_js_1 = require("./GraphNodeBinding.cjs");
9
9
  const GraphValueSchema_js_1 = require("./../catalog/GraphValueSchema.cjs");
10
+ /**
11
+ * Fluent builder for the canonical {@link GraphWorkflowDocument}
12
+ * (DECAF-50 §4.4.4). Collects boundary ports, node instances, edges, and
13
+ * optional settings/metadata/UI state, then validates and freezes a
14
+ * defensively-copied document on {@link GraphWorkflowDocumentBuilder.build}.
15
+ */
10
16
  class GraphWorkflowDocumentBuilder {
17
+ /**
18
+ * @param id Document id.
19
+ * @param name Optional document name; defaults to an empty string.
20
+ */
11
21
  constructor(id, name) {
12
22
  this.document = {
13
23
  id,
@@ -18,14 +28,17 @@ class GraphWorkflowDocumentBuilder {
18
28
  edges: [],
19
29
  };
20
30
  }
31
+ /** Appends a workflow input port. */
21
32
  addInput(port) {
22
33
  this.document.inputs.push(port);
23
34
  return this;
24
35
  }
36
+ /** Appends a workflow output port. */
25
37
  addOutput(port) {
26
38
  this.document.outputs.push(port);
27
39
  return this;
28
40
  }
41
+ /** Appends a node instance, defaulting `parameters` to an empty object. */
29
42
  addNode(node) {
30
43
  this.document.nodes.push({
31
44
  ...node,
@@ -33,38 +46,67 @@ class GraphWorkflowDocumentBuilder {
33
46
  });
34
47
  return this;
35
48
  }
49
+ /** Appends an edge instance. */
36
50
  addEdge(edge) {
37
51
  this.document.edges.push(edge);
38
52
  return this;
39
53
  }
54
+ /** Sets (or clears) the document's free-form settings bag. */
40
55
  setSettings(settings) {
41
56
  this.document.settings = settings;
42
57
  return this;
43
58
  }
59
+ /** Sets (or clears) the document's metadata bag. */
44
60
  setMetadata(metadata) {
45
61
  this.document.metadata = metadata;
46
62
  return this;
47
63
  }
64
+ /** Sets (or clears) the document's editor UI state. */
48
65
  setUi(ui) {
49
66
  this.document.ui = ui;
50
67
  return this;
51
68
  }
69
+ /**
70
+ * Validates the accumulated document with
71
+ * {@link assertGraphWorkflowDocumentValid} and returns a deep-ish copy:
72
+ * ports, nodes, and edges are cloned per entry, and the optional
73
+ * `settings`/`metadata`/`ui` bags are only present when explicitly set, so
74
+ * callers never observe builder-internal `undefined` fields.
75
+ *
76
+ * @throws ValidationError when the document fails validation.
77
+ */
52
78
  build() {
53
79
  assertGraphWorkflowDocumentValid(this.document);
54
- return {
80
+ const document = {
55
81
  id: this.document.id,
56
82
  name: this.document.name,
57
83
  inputs: this.document.inputs.map((port) => ({ ...port })),
58
84
  outputs: this.document.outputs.map((port) => ({ ...port })),
59
85
  nodes: this.document.nodes.map((node) => ({ ...node })),
60
86
  edges: this.document.edges.map((edge) => ({ ...edge })),
61
- settings: this.document.settings,
62
- metadata: this.document.metadata,
63
- ui: this.document.ui,
64
87
  };
88
+ if (this.document.settings !== undefined) {
89
+ document.settings = this.document.settings;
90
+ }
91
+ if (this.document.metadata !== undefined) {
92
+ document.metadata = this.document.metadata;
93
+ }
94
+ if (this.document.ui !== undefined) {
95
+ document.ui = this.document.ui;
96
+ }
97
+ return document;
65
98
  }
66
99
  }
67
100
  exports.GraphWorkflowDocumentBuilder = GraphWorkflowDocumentBuilder;
101
+ /**
102
+ * Structural validation gate for a canonical {@link GraphWorkflowDocument}
103
+ * (shared by the frontend builder and the backend nine-stage validator,
104
+ * DECAF-50 §4.8 stage 1 shape rules). Checks unique port/node/edge ids,
105
+ * valid schemas, binding shapes, edge endpoints, and recursively validates
106
+ * nested loop-body documents.
107
+ *
108
+ * @throws ValidationError describing the first invalid aspect found.
109
+ */
68
110
  function assertGraphWorkflowDocumentValid(document, context = { seen: [] }) {
69
111
  if (context.seen.includes(document)) {
70
112
  throw new db_decorators_1.ValidationError(`Document '${describeDocument(document)}' contains a loop body that references itself (cyclic document)`);
@@ -1 +1 @@
1
- {"version":3,"file":"graph/document/GraphWorkflowDocumentBuilder.cjs","sourceRoot":"","sources":["graph/document/GraphWorkflowDocumentBuilder.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph/document/GraphWorkflowDocumentBuilder.cjs","sourceRoot":"","sources":["graph/document/GraphWorkflowDocumentBuilder.js"],"names":[],"mappings":"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"}
@@ -204,6 +204,10 @@ function normalizeEdges(edges, relations) {
204
204
  sourceRef: entry.sourceRef ?? current.sourceRef ?? entry.source ?? current.source,
205
205
  target: entry.target || current.target,
206
206
  targetRef: entry.targetRef ?? current.targetRef ?? entry.target ?? current.target,
207
+ // Labels are document-carried display semantics (§4.4.7): a row merged
208
+ // from a canvas clone that never carried its own label must not erase
209
+ // the relation row's label.
210
+ label: entry.label ?? current.label,
207
211
  metadata: {
208
212
  ...(current.metadata || {}),
209
213
  ...(entry.metadata || {}),
@@ -354,13 +358,61 @@ function boundaryAliasesFor(definition) {
354
358
  aliases.add(definition.name);
355
359
  return aliases;
356
360
  }
357
- function legacyEndpoint(refId, port, aliases) {
361
+ function legacyEndpoint(refId, port, aliases, boundaryPortIds) {
358
362
  const resolvedPort = port ?? "";
359
363
  if (!refId || aliases.has(refId)) {
360
364
  return { scope: "workflow", port: resolvedPort };
361
365
  }
366
+ // The legacy decorated-root canvas rendered workflow input ports as draggable
367
+ // boundary badges (`input-{port}`, port handle `value`). Those bindings stay
368
+ // lossless only when the badge id folds back onto the workflow port it was
369
+ // drawn for (DECAF-50 §4.11); otherwise a workflow port would collapse into
370
+ // one shared boundary endpoint and drop real edges (§4.4.6 canonical form).
371
+ if (refId.startsWith("input-")) {
372
+ const workflowPortId = boundaryPortIds?.get(refId.slice("input-".length) ?? "");
373
+ if (workflowPortId) {
374
+ return {
375
+ scope: "workflow",
376
+ port: workflowPortId,
377
+ };
378
+ }
379
+ }
362
380
  return { scope: "node", nodeId: refId, port: resolvedPort };
363
381
  }
382
+ /**
383
+ * Maps workflow input-property names to their legacy boundary-badge ids
384
+ * (`input-{property}`), so badges drawn on the canvas resolve back to the
385
+ * workflow port they represent (§4.11).
386
+ */
387
+ function boundaryPortIdsFor(snapshot) {
388
+ const map = new Map();
389
+ for (const port of snapshot.definition.inputs) {
390
+ map.set(`input-${port.property}`, port.property);
391
+ }
392
+ return map;
393
+ }
394
+ /**
395
+ * Resolves the decorated definition's own edge labels by canonical endpoint
396
+ * pair, so converted legacy edges that never carried a label on the edge row
397
+ * (canvas-drawn clones merged over the relation rows) still restore the
398
+ * document-carried {@link GraphEdgeInstance.label} (§4.4.7) instead of losing
399
+ * the display affordance on save/reload.
400
+ */
401
+ function legacyRelationLabelByEndpoint(snapshot, aliases, boundaryPortIds) {
402
+ const map = new Map();
403
+ for (const relation of snapshot.definition.relations) {
404
+ const label = typeof relation.label === "string" ? relation.label : undefined;
405
+ if (!label)
406
+ continue;
407
+ const sourceRef = typeof relation.source === "string" ? relation.source : undefined;
408
+ const targetRef = typeof relation.target === "string" ? relation.target : undefined;
409
+ map.set(edgePairKeyOf({
410
+ source: legacyEndpoint(sourceRef, relation.sourcePort, aliases, boundaryPortIds),
411
+ target: legacyEndpoint(targetRef, relation.targetPort, aliases, boundaryPortIds),
412
+ }), label);
413
+ }
414
+ return map;
415
+ }
364
416
  function endpointToLegacyRef(endpoint) {
365
417
  if (endpoint.scope === "workflow") {
366
418
  return { refId: "$workflow", port: endpoint.port };
@@ -423,25 +475,42 @@ function nodeInstanceFromLegacy(node) {
423
475
  }
424
476
  return instance;
425
477
  }
426
- function edgeInstanceFromLegacy(edge, aliases) {
427
- const source = legacyEndpoint(edge.sourceRef ?? edge.source, edge.sourcePort, aliases);
428
- const target = legacyEndpoint(edge.targetRef ?? edge.target, edge.targetPort, aliases);
478
+ function edgeInstanceFromLegacy(edge, aliases, boundaryPortIds, relationLabelByPair) {
479
+ const source = legacyEndpoint(edge.sourceRef ?? edge.source, edge.sourcePort, aliases, boundaryPortIds);
480
+ const target = legacyEndpoint(edge.targetRef ?? edge.target, edge.targetPort, aliases, boundaryPortIds);
429
481
  const instance = {
430
482
  id: edge.id,
431
483
  type: "data",
432
484
  source,
433
485
  target,
434
486
  };
435
- if (edge.label)
436
- instance.label = edge.label;
487
+ const label = edge.label ?? relationLabelByPair?.get(edgePairKeyOf({ source, target }));
488
+ if (label)
489
+ instance.label = label;
437
490
  const metadata = sanitizeToGraphJsonValue(edge.metadata ?? {});
438
491
  if (metadata && Object.keys(metadata).length)
439
492
  instance.metadata = metadata;
440
493
  return instance;
441
494
  }
442
- /** Maps a legacy snapshot to the canonical {@link GraphWorkflowDocument}. */
495
+ /** Endpoint-pair key for edge identity (canonical `GraphEndpoint` shape). */
496
+ function edgePairKeyOf(edge) {
497
+ const keyOf = (endpoint) => endpoint.scope === "node"
498
+ ? `node:${endpoint.nodeId}:${endpoint.port}`
499
+ : `workflow:${endpoint.port}`;
500
+ return `${keyOf(edge.source)}->${keyOf(edge.target)}`;
501
+ }
502
+ /**
503
+ * Maps a legacy (pre-P7) canvas snapshot to the canonical
504
+ * {@link GraphWorkflowDocument} (DECAF-50 §4.4.6): legacy `node.data` becomes
505
+ * instance `parameters`, legacy `node.metadata` becomes instance `metadata`,
506
+ * workflow boundary badges (`input-{port}`) fold back onto their workflow
507
+ * ports, and edge labels missing from cloned edge rows are restored from the
508
+ * decorated definition's relation labels (§4.4.7).
509
+ */
443
510
  function graphWorkflowDocumentFromLegacySnapshot(snapshot) {
444
511
  const aliases = boundaryAliasesFor(snapshot.definition);
512
+ const boundaryPortIds = boundaryPortIdsFor(snapshot);
513
+ const relationLabelByPair = legacyRelationLabelByEndpoint(snapshot, aliases, boundaryPortIds);
445
514
  const inputs = Object.fromEntries(snapshot.state.inputs.map((entry) => [entry.path, sanitizeToGraphJsonValue(entry.value)]));
446
515
  const outputs = Object.fromEntries(snapshot.state.outputs.map((entry) => [entry.path, sanitizeToGraphJsonValue(entry.value)]));
447
516
  const document = {
@@ -450,7 +519,7 @@ function graphWorkflowDocumentFromLegacySnapshot(snapshot) {
450
519
  inputs: snapshot.definition.inputs.map((port) => portInstanceFromDefinition(port, inputs[port.property])),
451
520
  outputs: snapshot.definition.outputs.map((port) => portInstanceFromDefinition(port, outputs[port.property])),
452
521
  nodes: snapshot.state.nodes.map(nodeInstanceFromLegacy),
453
- edges: snapshot.state.edges.map((edge) => edgeInstanceFromLegacy(edge, aliases)),
522
+ edges: snapshot.state.edges.map((edge) => edgeInstanceFromLegacy(edge, aliases, boundaryPortIds, relationLabelByPair)),
454
523
  };
455
524
  if (snapshot.definition.metadata) {
456
525
  const metadata = sanitizeToGraphJsonValue(snapshot.definition.metadata);