@node-i3x/core 0.1.0 → 0.2.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.
- package/README.md +22 -5
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +29 -15
package/README.md
CHANGED
|
@@ -18,14 +18,19 @@
|
|
|
18
18
|
npm install @node-i3x/core
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
> **Private registry** — this package is published to the `@sterfive` scope on `npm-registry.sterfive.fr`. Make sure your `.npmrc` is configured accordingly.
|
|
22
|
-
|
|
23
21
|
---
|
|
24
22
|
|
|
25
23
|
## Architecture
|
|
26
24
|
|
|
27
25
|
This package follows **hexagonal architecture** (ports & adapters). The domain owns the business logic and exposes well-defined port interfaces; concrete infrastructure is always injected from the outside.
|
|
28
26
|
|
|
27
|
+
<!-- mermaid-img -->
|
|
28
|
+
<p align="center">
|
|
29
|
+
<img src="https://mermaid.ink/svg/Z3JhcGggVEQKICAgIHN1YmdyYXBoICJAbm9kZS1pM3gvY29yZSIKICAgICAgICBkaXJlY3Rpb24gVEIKICAgICAgICBNWyJEb21haW4gTW9kZWxzIl0KICAgICAgICBTWyJTZXJ2aWNlcyJdCiAgICAgICAgUFsiUG9ydHMgKGludGVyZmFjZXMpIl0KICAgICAgICBNQVBbIk1hcHBlciJdCgogICAgICAgIFMgLS0+IE0KICAgICAgICBTIC0tPiBQCiAgICAgICAgUyAtLT4gTUFQCiAgICBlbmQKCiAgICBPUENbIkBub2RlLWkzeC9vcGN1YS1jb25uZWN0b3IiXSAtLi0+fGltcGxlbWVudHN8IFAKICAgIFBTQ1siQG5vZGUtaTN4L3BzZXVkby1zZXNzaW9uLWNvbm5lY3RvciJdIC0uLT58aW1wbGVtZW50c3wgUAogICAgUkVTVFsiQG5vZGUtaTN4L3Jlc3Qtc2VydmVyIl0gLS0+fGNhbGxzfCBTCiAgICBBUFBbIkBub2RlLWkzeC9hcHAiXSAtLT58d2lyZXN8IFMKICAgIEFQUCAtLT58aW5qZWN0c3wgT1BDCiAgICBBUFAgLS0+fGluamVjdHN8IFBTQw==" alt="diagram" />
|
|
30
|
+
</p>
|
|
31
|
+
|
|
32
|
+
<details><summary>Diagram source (mermaid)</summary>
|
|
33
|
+
|
|
29
34
|
```mermaid
|
|
30
35
|
graph TD
|
|
31
36
|
subgraph "@node-i3x/core"
|
|
@@ -48,6 +53,8 @@ graph TD
|
|
|
48
53
|
APP -->|injects| PSC
|
|
49
54
|
```
|
|
50
55
|
|
|
56
|
+
</details>
|
|
57
|
+
|
|
51
58
|
### Domain Models
|
|
52
59
|
|
|
53
60
|
| Type | File | Description |
|
|
@@ -137,6 +144,13 @@ OPC UA `NodeId` values contain a **namespace index** (`ns=2;i=1234`) that is vol
|
|
|
137
144
|
|
|
138
145
|
`@node-i3x/core` solves this with a **3-stage pipeline**:
|
|
139
146
|
|
|
147
|
+
<!-- mermaid-img -->
|
|
148
|
+
<p align="center">
|
|
149
|
+
<img src="https://mermaid.ink/svg/Zmxvd2NoYXJ0IExSCiAgICBBWyJTdGFnZSAxXG5xdWFsaWZpZWROYW1lVG9Oc3UoKSJdIC0tPiBCWyJTdGFnZSAyXG5CRlMgYnJvd3NlLXBhdGhcbmFzc2VtYmx5Il0KICAgIEIgLS0+IENbIlN0YWdlIDNcbnN0YWJsZUkzeElkKCkiXQoKICAgIHN0eWxlIEEgZmlsbDojZTNmMmZkLHN0cm9rZTojMTU2NWMwCiAgICBzdHlsZSBCIGZpbGw6I2U4ZjVlOSxzdHJva2U6IzJlN2QzMgogICAgc3R5bGUgQyBmaWxsOiNmZmYzZTAsc3Ryb2tlOiNlNjUxMDA=" alt="diagram" />
|
|
150
|
+
</p>
|
|
151
|
+
|
|
152
|
+
<details><summary>Diagram source (mermaid)</summary>
|
|
153
|
+
|
|
140
154
|
```mermaid
|
|
141
155
|
flowchart LR
|
|
142
156
|
A["Stage 1\nqualifiedNameToNsu()"] --> B["Stage 2\nBFS browse-path\nassembly"]
|
|
@@ -147,6 +161,8 @@ flowchart LR
|
|
|
147
161
|
style C fill:#fff3e0,stroke:#e65100
|
|
148
162
|
```
|
|
149
163
|
|
|
164
|
+
</details>
|
|
165
|
+
|
|
150
166
|
### Stage 1 — Namespace-URI qualification
|
|
151
167
|
|
|
152
168
|
Each node's browse name is converted from the volatile `ns` index form to a stable URI form:
|
|
@@ -262,7 +278,8 @@ All domain model and port interfaces are re-exported as types:
|
|
|
262
278
|
|
|
263
279
|
This package is dual-licensed:
|
|
264
280
|
|
|
265
|
-
- **[AGPL-3.0-or-later](https://www.gnu.org/licenses/agpl-3.0.html)**
|
|
266
|
-
- **Commercial (LicenseRef-Sterfive-Commercial)**
|
|
281
|
+
- **[AGPL-3.0-or-later](https://www.gnu.org/licenses/agpl-3.0.html)** -- you may use, modify, and distribute this software freely, provided that all derivative works and network-accessible deployments also make their complete source code available under the AGPL.
|
|
282
|
+
- **Commercial (LicenseRef-Sterfive-Commercial)** -- allows proprietary and closed-source use without copyleft obligations. Available from [Sterfive](https://www.sterfive.com).
|
|
283
|
+
|
|
284
|
+
See the root [`LICENSE`](../../LICENSE) and [`LICENSING.md`](../../LICENSING.md) for details.
|
|
267
285
|
|
|
268
|
-
See the root [`LICENSE`](../../LICENSE) file for details.
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var P={debug(){},info(){},warn(){},error(){}},D={debug:console.debug.bind(console),info:console.info.bind(console),warn:console.warn.bind(console),error:console.error.bind(console)};var I=class{constructor(e,o,t){this.dataSource=e;this.modelService=o;this._logger=t}dataSource;modelService;_logger;async readHistory(e,o,t){let s=await this.modelService.getOrBuildModel(),n=o??new Date(Date.now()-36e5),a=t??new Date;return await Promise.all(e.map(async i=>{let u=this.modelService.findNode(s,i);if(!u)return{success:!1,elementId:i,error:{code:404,message:"Element not found"}};try{let c=await this.dataSource.readHistory(u.sourceNodeId,n,a);return{success:!0,elementId:i,result:{isComposition:!1,values:c.map(d=>({value:d.value,quality:d.quality??"Good",timestamp:d.timestamp}))}}}catch{return{success:!1,elementId:i,error:{code:501,message:"History read not supported"}}}}))}};import{createHash as R}from"crypto";var C={Object:"asset",Variable:"property",Method:"action"};function h(m,e){let o=R("sha1").update(m,"utf8").digest("hex").slice(0,16);return`${e}-${o}`}function S(m){return m.eventNotifier?"eventSource":C[m.nodeClass]??"asset"}function T(m,e){return e==="property"?m.typeDefinition??null:null}function b(m,e,o){let t=S(m);return{id:h(o,t),name:m.displayName||m.browseName,kind:t,type:T(m,t),children:e,sourceNodeId:m.sourceNodeId,namespaceUri:m.namespaceUri}}var v=class{constructor(e,o){this.dataSource=e;this.logger=o}dataSource;logger;_cache=null;_buildPromise=null;async getOrBuildModel(){if(this._cache)return this._cache;if(this._buildPromise)return this._buildPromise;this._buildPromise=this._build();try{let e=await this._buildPromise;return this._cache=e,e}finally{this._buildPromise=null}}async preloadModel(){let e=performance.now();this.logger.info("Model preload started");let o=await this._build();return this._cache=o,this.logger.info(`Model preload finished nodes=${o.nodesById.size} roots=${o.rootIds.length} properties=${o.propertyToSource.size} actions=${o.actionToMethod.size} duration_ms=${(performance.now()-e).toFixed(0)}`),o}invalidateCache(){this._cache=null}setCache(e){this._cache=e}findNode(e,o){let t=e.nodesById.get(o);if(t)return t;for(let s of e.nodesById.values())if(s.name===o)return s;return null}parentIdOf(e,o){for(let[t,s]of e.childrenById)if(s.includes(o))return t;return null}async _build(){let e=await this.dataSource.browseTree(),o=new Map;for(let l of e)o.set(l.sourceNodeId,l);let t=new Map;for(let l of e){if(l.parentSourceNodeId==null)continue;let p=t.get(l.parentSourceNodeId);p||(p=[],t.set(l.parentSourceNodeId,p)),p.push(l.sourceNodeId)}let s=new Map,a=e.filter(l=>l.parentSourceNodeId==null).map(l=>({sourceId:l.sourceNodeId,path:l.nsuQualifiedName}));for(;a.length>0;){let{sourceId:l,path:p}=a.shift();s.set(l,p);for(let g of t.get(l)??[]){let f=o.get(g);f&&a.push({sourceId:g,path:`${p}/${f.nsuQualifiedName}`})}}let r=new Map,i=new Map,u=[],c=new Map,d=new Map;for(let[l,p]of o){let f=(t.get(l)??[]).map(M=>{let _=o.get(M),B=s.get(M)??_.nsuQualifiedName;return h(B,S(_))}),j=s.get(l)??p.nsuQualifiedName,y=b(p,f,j);r.set(y.id,y),i.set(y.id,f),p.parentSourceNodeId==null&&u.push(y.id),y.kind==="property"&&c.set(y.id,p.sourceNodeId),y.kind==="action"&&p.parentSourceNodeId!=null&&d.set(y.id,[p.parentSourceNodeId,p.sourceNodeId])}return{nodesById:r,rootIds:u,childrenById:i,propertyToSource:c,actionToMethod:d}}};function O(){return{nodesById:new Map,rootIds:[],childrenById:new Map,propertyToSource:new Map,actionToMethod:new Map}}import{randomUUID as x}from"crypto";var q=200,w=class{constructor(e,o,t,s=5){this.dataSource=e;this.modelService=o;this.logger=t;this._intervalMs=s*1e3}dataSource;modelService;logger;_subs=new Map;_intervalMs;create(e={}){let o=x(),t={subscriptionId:o,clientId:e.clientId??null,displayName:e.displayName??null,monitoredObjects:[],assets:new Map,sourceToAsset:new Map,updates:[],nextSequence:1,runtime:null,waiters:[],mode:"polling"};return this._subs.set(o,t),this.logger.info(`Subscription created id=${o}`),{subscriptionId:o,clientId:t.clientId,displayName:t.displayName}}async register(e,o,t=1){let s=this._getOrCreateSub(e),n=await this.modelService.getOrBuildModel(),a=[],r=[],i=[];for(let u of o){let c=this.modelService.findNode(n,u);if(!c){r.push({elementId:u,error:"Element not found"});continue}let d=this._collectSourceMappings(n,c.id,t,0);this.logger.info(`register: elementId=${u} kind=${c.kind} maxDepth=${t} mappings=${d.size} children=${(n.childrenById.get(c.id)??[]).length}`);let l=d.size>1||d.size===1&&!d.has(c.sourceNodeId);if(d.size===0&&c.kind==="property"){let g=n.propertyToSource.get(c.id)??c.sourceNodeId;d.set(g,c.id)}d.size===0&&this.logger.warn(`register: NO source mappings for ${u} \u2014 children kinds: ${(n.childrenById.get(c.id)??[]).map(g=>n.nodesById.get(g)).filter(Boolean).map(g=>`${g.name}(${g.kind})`).join(", ")}`);let p={assetElementId:u,maxDepth:t,isComposition:l,components:new Map,sourceToProperty:d,sourceNodeIds:[...d.keys()],dirty:!1,debounceTimer:null};for(let g of p.sourceNodeIds){let f=s.sourceToAsset.get(g);f||(f=new Set,s.sourceToAsset.set(g,f)),f.add(u),i.push(g)}s.assets.set(u,p),s.monitoredObjects.push({elementId:u,maxDepth:t}),a.push(u)}return await this._ensureRuntime(s,i),{registered:a,errors:r}}async unregister(e,o){let t=this._requireSub(e),s=[];for(let n of o){t.monitoredObjects=t.monitoredObjects.filter(r=>r.elementId!==n);let a=t.assets.get(n);if(a){a.debounceTimer&&clearTimeout(a.debounceTimer);for(let r of a.sourceNodeIds){let i=t.sourceToAsset.get(r);i&&(i.delete(n),i.size===0&&(t.sourceToAsset.delete(r),s.push(r)))}t.assets.delete(n)}}if(t.runtime&&s.length>0)try{await t.runtime.removeItems(s)}catch{}t.runtime&&t.sourceToAsset.size===0&&(await t.runtime.close(),t.runtime=null)}sync(e,o=0){let t=this._requireSub(e);return t.updates=t.updates.filter(s=>s.sequenceNumber>o),[...t.updates]}acknowledge(e,o){let t=this._subs.get(e);t&&(t.updates=t.updates.filter(s=>s.sequenceNumber>o))}waitForUpdates(e,o,t=3e4){let s=this._requireSub(e),n=s.updates.filter(a=>a.sequenceNumber>o);return n.length>0?Promise.resolve(n):new Promise(a=>{let r=!1,i=c=>{r||(r=!0,clearTimeout(u),s.waiters=s.waiters.filter(d=>d!==i),a(c))},u=setTimeout(()=>i([]),t);s.waiters.push(i)})}async deleteSubscriptions(e){let o=[];for(let t of e){let s=this._subs.get(t);if(!s){o.push({success:!1,subscriptionId:t,error:{code:404,message:"Subscription not found"}});continue}for(let n of s.assets.values())n.debounceTimer&&clearTimeout(n.debounceTimer);if(s.runtime)try{await s.runtime.close()}catch{}this._subs.delete(t),o.push({success:!0,subscriptionId:t})}return o}list(e){return(e?e.map(t=>this._subs.get(t)).filter(Boolean):[...this._subs.values()]).map(t=>({subscriptionId:t.subscriptionId,clientId:t.clientId,displayName:t.displayName,monitoredObjects:[...t.monitoredObjects],mode:t.mode}))}async close(){for(let e of this._subs.values()){for(let o of e.assets.values())o.debounceTimer&&clearTimeout(o.debounceTimer);if(e.runtime)try{await e.runtime.close()}catch{}}this._subs.clear()}_requireSub(e){let o=this._subs.get(e);if(!o)throw Object.assign(new Error(`Subscription '${e}' not found`),{statusCode:404});return o}_getOrCreateSub(e){let o=this._subs.get(e);return o||(this.logger.info(`Auto-creating subscription id=${e}`),o={subscriptionId:e,clientId:null,displayName:null,monitoredObjects:[],assets:new Map,sourceToAsset:new Map,updates:[],nextSequence:1,runtime:null,waiters:[],mode:"polling"},this._subs.set(e,o)),o}_collectSourceMappings(e,o,t,s,n=new Map){let a=e.nodesById.get(o);if(!a)return n;if(a.kind==="property"){let i=e.propertyToSource.get(a.id)??a.sourceNodeId;return i&&n.set(i,a.id),n}if(t>0&&s>=t)return n;let r=e.childrenById.get(o)??[];for(let i of r)this._collectSourceMappings(e,i,t,s+1,n);return n}async _ensureRuntime(e,o){if(!e.runtime)try{e.runtime=await this.dataSource.createMonitoredSubscription({publishingIntervalMs:this._intervalMs}),e.runtime.onDataChange((t,s,n,a)=>{this._onDataChange(e,t,s,n,a)}),e.mode="native"}catch(t){this.logger.warn(`Native subscription failed for ${e.subscriptionId}, falling back to polling: ${t}`),e.mode="polling",this._startPolling(e);return}e.runtime&&o.length>0&&await e.runtime.addItems(o)}_onDataChange(e,o,t,s,n){let a=e.sourceToAsset.get(o);if(!a||a.size===0){this.logger.warn(`_onDataChange: sourceNodeId=${o} NOT in sourceToAsset (size=${e.sourceToAsset.size})`);return}for(let r of a){let i=e.assets.get(r);if(!i)continue;let u=i.sourceToProperty.get(o);u&&(i.components.set(u,{value:t,quality:s,timestamp:n}),i.dirty=!0,this.logger.debug(`_onDataChange: source=${o} \u2192 asset=${r} prop=${u} components=${i.components.size}/${i.sourceToProperty.size}`),i.debounceTimer&&clearTimeout(i.debounceTimer),i.debounceTimer=setTimeout(()=>{this._flushAsset(e,i)},q))}}_flushAsset(e,o){if(!o.dirty)return;o.dirty=!1,o.debounceTimer=null;let t=new Date().toISOString(),s;if(o.isComposition){let r={};for(let[i,u]of o.components)r[i]=u;s={isComposition:!0,value:null,quality:"Good",timestamp:t,components:r}}else{let r=o.components.values().next().value;s={isComposition:!1,value:r?.value??null,quality:r?.quality??"Good",timestamp:r?.timestamp??t}}let n={sequenceNumber:e.nextSequence++,elementId:o.assetElementId,value:s,quality:s.quality,timestamp:s.timestamp};e.updates.push(n),e.updates.length>1e4&&(e.updates=e.updates.slice(-5e3));let a=e.waiters;e.waiters=[];for(let r of a)r([n])}_startPolling(e){(async()=>{for(;this._subs.has(e.subscriptionId)&&e.mode==="polling";){try{let t=[...e.sourceToAsset.keys()];if(t.length>0){let s=await this.dataSource.readValues(t),n=new Date().toISOString();for(let a=0;a<t.length;a++){let r=s[a];r&&this._onDataChange(e,t[a],r.value,r.quality??"Good",r.timestamp??n)}}}catch(t){this.logger.warn(`Poll error for subscription ${e.subscriptionId}: ${t}`)}await new Promise(t=>setTimeout(t,this._intervalMs))}})().catch(()=>{})}};var N=class{constructor(e,o,t){this.dataSource=e;this.modelService=o;this._logger=t}dataSource;modelService;_logger;async readValues(e,o=1){let t=await this.modelService.getOrBuildModel(),s=new Array(e.length),n=[],a=[];for(let r=0;r<e.length;r++){let i=e[r],u=this.modelService.findNode(t,i);if(!u){s[r]={success:!1,elementId:i,error:{code:404,message:"Object value not found"}};continue}u.kind==="property"||!u.children.length?n.push({idx:r,elementId:i,node:u}):a.push({idx:r,elementId:i,node:u})}if(n.length>0){let r=n.map(u=>u.node.sourceNodeId),i;try{i=await this.dataSource.readValues(r)}catch{i=r.map(()=>({value:null,quality:"GoodNoData",timestamp:new Date().toISOString()}))}for(let u=0;u<n.length;u++){let{idx:c,elementId:d}=n[u],l=i[u];s[c]={success:!0,elementId:d,result:{isComposition:!1,value:l?l.value:null,quality:l?l.quality:"GoodNoData",timestamp:l?l.timestamp:new Date().toISOString()}}}}return await Promise.all(a.map(async({idx:r,elementId:i,node:u})=>{let c=await this._readComponents(t,u,o,0);s[r]={success:!0,elementId:i,result:{isComposition:!0,value:null,quality:"Good",timestamp:new Date().toISOString(),components:c.size>0?Object.fromEntries(c):null}}})),s}async writeValue(e,o){let t=await this.modelService.getOrBuildModel(),s=this.modelService.findNode(t,e);if(!s)throw new Error(`Element '${e}' not found`);await this.dataSource.writeValue(s.sourceNodeId,o)}async _readComponents(e,o,t,s){if(t>0&&s>=t)return new Map;let n=e.childrenById.get(o.id)??[],a=[],r=[],i=[];for(let c of n){let d=e.nodesById.get(c);d&&(d.kind==="property"?(a.push(d.id),r.push(d.sourceNodeId)):d.children.length>0&&i.push(d))}let u=new Map;if(r.length>0){let c=await this.dataSource.readValues(r),d=new Date().toISOString();for(let l=0;l<a.length;l++){let p=c[l],g=a[l];g&&u.set(g,{value:p?p.value:null,quality:p?p.quality:"GoodNoData",timestamp:p?p.timestamp:d})}}for(let c of i){let d=await this._readComponents(e,c,t,s+1);for(let[l,p]of d)u.set(l,p)}return u}};export{I as HistoryService,v as ModelService,w as SubscriptionService,N as ValueService,D as consoleLogger,O as emptyBuildResult,S as inferKind,b as mapNode,T as mapType,P as nullLogger,h as stableI3xId};
|
|
1
|
+
var P={debug(){},info(){},warn(){},error(){}},D={debug:(m,...e)=>console.debug(m,...e),info:(m,...e)=>console.info(m,...e),warn:(m,...e)=>console.warn(m,...e),error:(m,...e)=>console.error(m,...e)};var I=class{constructor(e,o,t){this.dataSource=e;this.modelService=o;this._logger=t}dataSource;modelService;_logger;async readHistory(e,o,t){let s=await this.modelService.getOrBuildModel(),n=o??new Date(Date.now()-36e5),a=t??new Date;return await Promise.all(e.map(async i=>{let u=this.modelService.findNode(s,i);if(!u)return{success:!1,elementId:i,error:{code:404,message:"Element not found"}};try{let c=await this.dataSource.readHistory(u.sourceNodeId,n,a);return{success:!0,elementId:i,result:{isComposition:!1,values:c.map(d=>({value:d.value,quality:d.quality??"Good",timestamp:d.timestamp}))}}}catch{return{success:!1,elementId:i,error:{code:501,message:"History read not supported"}}}}))}};import{createHash as R}from"crypto";var C={Object:"asset",Variable:"property",Method:"action"};function h(m,e){let o=R("sha1").update(m,"utf8").digest("hex").slice(0,16);return`${e}-${o}`}function S(m){return m.eventNotifier?"eventSource":C[m.nodeClass]??"asset"}function T(m,e){return e==="property"?m.typeDefinition??null:null}function b(m,e,o){let t=S(m);return{id:h(o,t),name:m.displayName||m.browseName,kind:t,type:T(m,t),children:e,sourceNodeId:m.sourceNodeId,namespaceUri:m.namespaceUri}}var v=class{constructor(e,o){this.dataSource=e;this.logger=o}dataSource;logger;_cache=null;_buildPromise=null;async getOrBuildModel(){if(this._cache)return this._cache;if(this._buildPromise)return this._buildPromise;this._buildPromise=this._build();try{let e=await this._buildPromise;return this._cache=e,e}finally{this._buildPromise=null}}async preloadModel(){let e=performance.now();this.logger.info("Model preload started");let o=await this._build();return this._cache=o,this.logger.info(`Model preload finished nodes=${o.nodesById.size} roots=${o.rootIds.length} properties=${o.propertyToSource.size} actions=${o.actionToMethod.size} duration_ms=${(performance.now()-e).toFixed(0)}`),o}invalidateCache(){this._cache=null}setCache(e){this._cache=e}findNode(e,o){let t=e.nodesById.get(o);if(t)return t;for(let s of e.nodesById.values())if(s.name===o)return s;return null}parentIdOf(e,o){for(let[t,s]of e.childrenById)if(s.includes(o))return t;return null}async _build(){let e=await this.dataSource.browseTree(),o=new Map;for(let l of e)o.set(l.sourceNodeId,l);let t=new Map;for(let l of e){if(l.parentSourceNodeId==null)continue;let p=t.get(l.parentSourceNodeId);p||(p=[],t.set(l.parentSourceNodeId,p)),p.push(l.sourceNodeId)}let s=new Map,a=e.filter(l=>l.parentSourceNodeId==null).map(l=>({sourceId:l.sourceNodeId,path:l.nsuQualifiedName}));for(;a.length>0;){let{sourceId:l,path:p}=a.shift();s.set(l,p);for(let g of t.get(l)??[]){let f=o.get(g);f&&a.push({sourceId:g,path:`${p}/${f.nsuQualifiedName}`})}}let r=new Map,i=new Map,u=[],c=new Map,d=new Map;for(let[l,p]of o){let f=(t.get(l)??[]).map(M=>{let _=o.get(M),B=s.get(M)??_.nsuQualifiedName;return h(B,S(_))}),j=s.get(l)??p.nsuQualifiedName,y=b(p,f,j);r.set(y.id,y),i.set(y.id,f),p.parentSourceNodeId==null&&u.push(y.id),y.kind==="property"&&c.set(y.id,p.sourceNodeId),y.kind==="action"&&p.parentSourceNodeId!=null&&d.set(y.id,[p.parentSourceNodeId,p.sourceNodeId])}return{nodesById:r,rootIds:u,childrenById:i,propertyToSource:c,actionToMethod:d}}};function O(){return{nodesById:new Map,rootIds:[],childrenById:new Map,propertyToSource:new Map,actionToMethod:new Map}}import{randomUUID as x}from"crypto";var q=200,w=class{constructor(e,o,t,s=5){this.dataSource=e;this.modelService=o;this.logger=t;this._intervalMs=s*1e3}dataSource;modelService;logger;_subs=new Map;_intervalMs;create(e={}){let o=x(),t={subscriptionId:o,clientId:e.clientId??null,displayName:e.displayName??null,monitoredObjects:[],assets:new Map,sourceToAsset:new Map,updates:[],nextSequence:1,runtime:null,waiters:[],mode:"polling"};return this._subs.set(o,t),this.logger.info(`Subscription created id=${o}`),{subscriptionId:o,clientId:t.clientId,displayName:t.displayName}}async register(e,o,t=1){let s=this._getOrCreateSub(e),n=await this.modelService.getOrBuildModel(),a=[],r=[],i=[];for(let u of o){let c=this.modelService.findNode(n,u);if(!c){r.push({elementId:u,error:"Element not found"});continue}let d=this._collectSourceMappings(n,c.id,t,0);this.logger.info(`register: elementId=${u} kind=${c.kind} maxDepth=${t} mappings=${d.size} children=${(n.childrenById.get(c.id)??[]).length}`);let l=d.size>1||d.size===1&&!d.has(c.sourceNodeId);if(d.size===0&&c.kind==="property"){let g=n.propertyToSource.get(c.id)??c.sourceNodeId;d.set(g,c.id)}d.size===0&&this.logger.warn(`register: NO source mappings for ${u} \u2014 children kinds: ${(n.childrenById.get(c.id)??[]).map(g=>n.nodesById.get(g)).filter(Boolean).map(g=>`${g.name}(${g.kind})`).join(", ")}`);let p={assetElementId:u,maxDepth:t,isComposition:l,components:new Map,sourceToProperty:d,sourceNodeIds:[...d.keys()],dirty:!1,debounceTimer:null};for(let g of p.sourceNodeIds){let f=s.sourceToAsset.get(g);f||(f=new Set,s.sourceToAsset.set(g,f)),f.add(u),i.push(g)}s.assets.set(u,p),s.monitoredObjects.push({elementId:u,maxDepth:t}),a.push(u)}return await this._ensureRuntime(s,i),{registered:a,errors:r}}async unregister(e,o){let t=this._requireSub(e),s=[];for(let n of o){t.monitoredObjects=t.monitoredObjects.filter(r=>r.elementId!==n);let a=t.assets.get(n);if(a){a.debounceTimer&&clearTimeout(a.debounceTimer);for(let r of a.sourceNodeIds){let i=t.sourceToAsset.get(r);i&&(i.delete(n),i.size===0&&(t.sourceToAsset.delete(r),s.push(r)))}t.assets.delete(n)}}if(t.runtime&&s.length>0)try{await t.runtime.removeItems(s)}catch{}t.runtime&&t.sourceToAsset.size===0&&(await t.runtime.close(),t.runtime=null)}sync(e,o=0){let t=this._requireSub(e);return t.updates=t.updates.filter(s=>s.sequenceNumber>o),[...t.updates]}acknowledge(e,o){let t=this._subs.get(e);t&&(t.updates=t.updates.filter(s=>s.sequenceNumber>o))}waitForUpdates(e,o,t=3e4){let s=this._requireSub(e),n=s.updates.filter(a=>a.sequenceNumber>o);return n.length>0?Promise.resolve(n):new Promise(a=>{let r=!1,i=c=>{r||(r=!0,clearTimeout(u),s.waiters=s.waiters.filter(d=>d!==i),a(c))},u=setTimeout(()=>i([]),t);s.waiters.push(i)})}async deleteSubscriptions(e){let o=[];for(let t of e){let s=this._subs.get(t);if(!s){o.push({success:!1,subscriptionId:t,error:{code:404,message:"Subscription not found"}});continue}for(let n of s.assets.values())n.debounceTimer&&clearTimeout(n.debounceTimer);if(s.runtime)try{await s.runtime.close()}catch{}this._subs.delete(t),o.push({success:!0,subscriptionId:t})}return o}list(e){return(e?e.map(t=>this._subs.get(t)).filter(Boolean):[...this._subs.values()]).map(t=>({subscriptionId:t.subscriptionId,clientId:t.clientId,displayName:t.displayName,monitoredObjects:[...t.monitoredObjects],mode:t.mode}))}async close(){for(let e of this._subs.values()){for(let o of e.assets.values())o.debounceTimer&&clearTimeout(o.debounceTimer);if(e.runtime)try{await e.runtime.close()}catch{}}this._subs.clear()}_requireSub(e){let o=this._subs.get(e);if(!o)throw Object.assign(new Error(`Subscription '${e}' not found`),{statusCode:404});return o}_getOrCreateSub(e){let o=this._subs.get(e);return o||(this.logger.info(`Auto-creating subscription id=${e}`),o={subscriptionId:e,clientId:null,displayName:null,monitoredObjects:[],assets:new Map,sourceToAsset:new Map,updates:[],nextSequence:1,runtime:null,waiters:[],mode:"polling"},this._subs.set(e,o)),o}_collectSourceMappings(e,o,t,s,n=new Map){let a=e.nodesById.get(o);if(!a)return n;if(a.kind==="property"){let i=e.propertyToSource.get(a.id)??a.sourceNodeId;return i&&n.set(i,a.id),n}if(t>0&&s>=t)return n;let r=e.childrenById.get(o)??[];for(let i of r)this._collectSourceMappings(e,i,t,s+1,n);return n}async _ensureRuntime(e,o){if(!e.runtime)try{e.runtime=await this.dataSource.createMonitoredSubscription({publishingIntervalMs:this._intervalMs}),e.runtime.onDataChange((t,s,n,a)=>{this._onDataChange(e,t,s,n,a)}),e.mode="native"}catch(t){this.logger.warn(`Native subscription failed for ${e.subscriptionId}, falling back to polling: ${t}`),e.mode="polling",this._startPolling(e);return}e.runtime&&o.length>0&&await e.runtime.addItems(o)}_onDataChange(e,o,t,s,n){let a=e.sourceToAsset.get(o);if(!a||a.size===0){this.logger.warn(`_onDataChange: sourceNodeId=${o} NOT in sourceToAsset (size=${e.sourceToAsset.size})`);return}for(let r of a){let i=e.assets.get(r);if(!i)continue;let u=i.sourceToProperty.get(o);u&&(i.components.set(u,{value:t,quality:s,timestamp:n}),i.dirty=!0,this.logger.debug(`_onDataChange: source=${o} \u2192 asset=${r} prop=${u} components=${i.components.size}/${i.sourceToProperty.size}`),i.debounceTimer&&clearTimeout(i.debounceTimer),i.debounceTimer=setTimeout(()=>{this._flushAsset(e,i)},q))}}_flushAsset(e,o){if(!o.dirty)return;o.dirty=!1,o.debounceTimer=null;let t=new Date().toISOString(),s;if(o.isComposition){let r={};for(let[i,u]of o.components)r[i]=u;s={isComposition:!0,value:null,quality:"Good",timestamp:t,components:r}}else{let r=o.components.values().next().value;s={isComposition:!1,value:r?.value??null,quality:r?.quality??"Good",timestamp:r?.timestamp??t}}let n={sequenceNumber:e.nextSequence++,elementId:o.assetElementId,value:s,quality:s.quality,timestamp:s.timestamp};e.updates.push(n),e.updates.length>1e4&&(e.updates=e.updates.slice(-5e3));let a=e.waiters;e.waiters=[];for(let r of a)r([n])}_startPolling(e){(async()=>{for(;this._subs.has(e.subscriptionId)&&e.mode==="polling";){try{let t=[...e.sourceToAsset.keys()];if(t.length>0){let s=await this.dataSource.readValues(t),n=new Date().toISOString();for(let a=0;a<t.length;a++){let r=s[a];r&&this._onDataChange(e,t[a],r.value,r.quality??"Good",r.timestamp??n)}}}catch(t){this.logger.warn(`Poll error for subscription ${e.subscriptionId}: ${t}`)}await new Promise(t=>setTimeout(t,this._intervalMs))}})().catch(()=>{})}};var N=class{constructor(e,o,t){this.dataSource=e;this.modelService=o;this._logger=t}dataSource;modelService;_logger;async readValues(e,o=1){let t=await this.modelService.getOrBuildModel(),s=new Array(e.length),n=[],a=[];for(let r=0;r<e.length;r++){let i=e[r],u=this.modelService.findNode(t,i);if(!u){s[r]={success:!1,elementId:i,error:{code:404,message:"Object value not found"}};continue}u.kind==="property"||!u.children.length?n.push({idx:r,elementId:i,node:u}):a.push({idx:r,elementId:i,node:u})}if(n.length>0){let r=n.map(u=>u.node.sourceNodeId),i;try{i=await this.dataSource.readValues(r)}catch{i=r.map(()=>({value:null,quality:"GoodNoData",timestamp:new Date().toISOString()}))}for(let u=0;u<n.length;u++){let{idx:c,elementId:d}=n[u],l=i[u];s[c]={success:!0,elementId:d,result:{isComposition:!1,value:l?l.value:null,quality:l?l.quality:"GoodNoData",timestamp:l?l.timestamp:new Date().toISOString()}}}}return await Promise.all(a.map(async({idx:r,elementId:i,node:u})=>{let c=await this._readComponents(t,u,o,0);s[r]={success:!0,elementId:i,result:{isComposition:!0,value:null,quality:"Good",timestamp:new Date().toISOString(),components:c.size>0?Object.fromEntries(c):null}}})),s}async writeValue(e,o){let t=await this.modelService.getOrBuildModel(),s=this.modelService.findNode(t,e);if(!s)throw new Error(`Element '${e}' not found`);await this.dataSource.writeValue(s.sourceNodeId,o)}async _readComponents(e,o,t,s){if(t>0&&s>=t)return new Map;let n=e.childrenById.get(o.id)??[],a=[],r=[],i=[];for(let c of n){let d=e.nodesById.get(c);d&&(d.kind==="property"?(a.push(d.id),r.push(d.sourceNodeId)):d.children.length>0&&i.push(d))}let u=new Map;if(r.length>0){let c=await this.dataSource.readValues(r),d=new Date().toISOString();for(let l=0;l<a.length;l++){let p=c[l],g=a[l];g&&u.set(g,{value:p?p.value:null,quality:p?p.quality:"GoodNoData",timestamp:p?p.timestamp:d})}}for(let c of i){let d=await this._readComponents(e,c,t,s+1);for(let[l,p]of d)u.set(l,p)}return u}};export{I as HistoryService,v as ModelService,w as SubscriptionService,N as ValueService,D as consoleLogger,O as emptyBuildResult,S as inferKind,b as mapNode,T as mapType,P as nullLogger,h as stableI3xId};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ports/logger.ts","../src/services/history-service.ts","../src/services/mapper.ts","../src/services/model-service.ts","../src/services/subscription-service.ts","../src/services/value-service.ts"],"mappings":"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","names":["nullLogger","consoleLogger","HistoryService","dataSource","modelService","_logger","elementIds","startTime","endTime","model","start","end","elementId","node","history","h","createHash","CLASS_TO_KIND","stableI3xId","browsePath","kind","digest","inferKind","node","mapType","mapNode","childIds","ModelService","dataSource","logger","result","started","model","elementId","direct","n","nodeId","parentId","childIds","sourceNodes","bySourceId","childSourcesByParent","node","list","browsePathBySourceId","queue","sourceId","path","childId","child","nodesById","childrenById","rootIds","propertyToSource","actionToMethod","srcNode","cId","cNode","cPath","stableI3xId","inferKind","browsePath","mapped","mapNode","emptyBuildResult","randomUUID","DEBOUNCE_MS","SubscriptionService","dataSource","modelService","logger","intervalSeconds","opts","subscriptionId","state","elementIds","maxDepth","sub","model","registered","errors","allSourceNodeIds","elementId","node","propMappings","isComposition","source","cid","n","asset","sourceId","set","sourceIdsToRemove","m","acknowledgeSequence","u","upToSequence","afterSequence","timeoutMs","pending","resolve","settled","settle","updates","timer","w","subscriptionIds","results","id","filterIds","s","nodeId","depth","out","childIds","childId","newSourceNodeIds","sourceNodeId","value","quality","timestamp","err","assetIds","assetElementId","propertyElementId","now","compositeValue","components","propId","vqt","firstVqt","update","waiters","sourceIds","values","i","dv","r","ValueService","dataSource","modelService","_logger","elementIds","maxDepth","model","results","leaves","composites","i","elementId","node","sourceIds","l","values","j","idx","dv","components","value","parent","currentDepth","childIds","propIds","propSources","subAssets","childId","child","result","now","pid","subAsset","subComponents","key","vqt"]}
|
|
1
|
+
{"version":3,"sources":["../src/ports/logger.ts","../src/services/history-service.ts","../src/services/mapper.ts","../src/services/model-service.ts","../src/services/subscription-service.ts","../src/services/value-service.ts"],"mappings":"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","names":["nullLogger","consoleLogger","msg","args","HistoryService","dataSource","modelService","_logger","elementIds","startTime","endTime","model","start","end","elementId","node","history","h","createHash","CLASS_TO_KIND","stableI3xId","browsePath","kind","digest","inferKind","node","mapType","mapNode","childIds","ModelService","dataSource","logger","result","started","model","elementId","direct","n","nodeId","parentId","childIds","sourceNodes","bySourceId","childSourcesByParent","node","list","browsePathBySourceId","queue","sourceId","path","childId","child","nodesById","childrenById","rootIds","propertyToSource","actionToMethod","srcNode","cId","cNode","cPath","stableI3xId","inferKind","browsePath","mapped","mapNode","emptyBuildResult","randomUUID","DEBOUNCE_MS","SubscriptionService","dataSource","modelService","logger","intervalSeconds","opts","subscriptionId","state","elementIds","maxDepth","sub","model","registered","errors","allSourceNodeIds","elementId","node","propMappings","isComposition","source","cid","n","asset","sourceId","set","sourceIdsToRemove","m","acknowledgeSequence","u","upToSequence","afterSequence","timeoutMs","pending","resolve","settled","settle","updates","timer","w","subscriptionIds","results","id","filterIds","s","nodeId","depth","out","childIds","childId","newSourceNodeIds","sourceNodeId","value","quality","timestamp","err","assetIds","assetElementId","propertyElementId","now","compositeValue","components","propId","vqt","firstVqt","update","waiters","sourceIds","values","i","dv","r","ValueService","dataSource","modelService","_logger","elementIds","maxDepth","model","results","leaves","composites","i","elementId","node","sourceIds","l","values","j","idx","dv","components","value","parent","currentDepth","childIds","propIds","propSources","subAssets","childId","child","result","now","pid","subAsset","subComponents","key","vqt"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@node-i3x/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "i3X domain core — models, ports, and services (zero dependencies)",
|
|
5
5
|
"license": "AGPL-3.0-or-later OR LicenseRef-Sterfive-Commercial",
|
|
6
6
|
"author": "Sterfive SAS <contact@sterfive.com> (https://sterfive.com)",
|
|
@@ -18,25 +18,39 @@
|
|
|
18
18
|
"type": "commercial",
|
|
19
19
|
"url": "https://sterfive.com"
|
|
20
20
|
},
|
|
21
|
-
"keywords": [
|
|
21
|
+
"keywords": [
|
|
22
|
+
"opcua",
|
|
23
|
+
"opc-ua",
|
|
24
|
+
"i3x",
|
|
25
|
+
"i3x2ua",
|
|
26
|
+
"industrial",
|
|
27
|
+
"iiot",
|
|
28
|
+
"iot",
|
|
29
|
+
"domain",
|
|
30
|
+
"hexagonal-architecture",
|
|
31
|
+
"ports-and-adapters",
|
|
32
|
+
"digital-twin",
|
|
33
|
+
"asset-management",
|
|
34
|
+
"sterfive"
|
|
35
|
+
],
|
|
22
36
|
"type": "module",
|
|
23
|
-
"main": "./
|
|
24
|
-
"types": "./
|
|
37
|
+
"main": "./dist/index.js",
|
|
38
|
+
"types": "./dist/index.d.ts",
|
|
25
39
|
"exports": {
|
|
26
|
-
".":
|
|
40
|
+
".": {
|
|
41
|
+
"types": "./dist/index.d.ts",
|
|
42
|
+
"import": "./dist/index.js"
|
|
43
|
+
}
|
|
27
44
|
},
|
|
28
45
|
"publishConfig": {
|
|
29
|
-
"provenance": true
|
|
30
|
-
"main": "./dist/index.js",
|
|
31
|
-
"types": "./dist/index.d.ts",
|
|
32
|
-
"exports": {
|
|
33
|
-
".": {
|
|
34
|
-
"types": "./dist/index.d.ts",
|
|
35
|
-
"import": "./dist/index.js"
|
|
36
|
-
}
|
|
37
|
-
}
|
|
46
|
+
"provenance": true
|
|
38
47
|
},
|
|
39
|
-
"files": [
|
|
48
|
+
"files": [
|
|
49
|
+
"dist",
|
|
50
|
+
"LICENSE",
|
|
51
|
+
"LICENSE-AGPL-3.0",
|
|
52
|
+
"LICENSING.md"
|
|
53
|
+
],
|
|
40
54
|
"scripts": {
|
|
41
55
|
"build": "tsup",
|
|
42
56
|
"typecheck": "tsc --noEmit"
|