@node-i3x/app 0.5.2 → 0.5.3
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/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/cli.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{createRequire as
|
|
2
|
+
import{createRequire as $}from"module";import{Command as k}from"commander";import{cosmiconfig as _}from"cosmiconfig";import{load as v}from"js-yaml";var x={endpoint:"opc.tcp://localhost:4840",port:8080,host:"0.0.0.0",securityMode:"None",optimizedClient:"auto",subscriptionInterval:5,logLevel:"info",modelPreload:!0,failOnPreloadError:!1,readOnly:!1};function l(e){return process.env[e]}function P(e){let o=process.env[e];return o?parseInt(o,10):void 0}function I(e){let o=process.env[e];if(o)return o==="1"||o.toLowerCase()==="true"}function E(){let e={},o=l("I3X_OPCUA_ENDPOINT")??l("I3X_ENDPOINT");o&&(e.endpoint=o);let n=P("I3X_PORT");n!==void 0&&(e.port=n);let t=l("I3X_HOST");t&&(e.host=t);let r=l("I3X_OPCUA_SECURITY_MODE");r&&(e.securityMode=r);let i=l("I3X_OPCUA_OPTIMIZED_CLIENT");(i==="auto"||i==="disabled")&&(e.optimizedClient=i);let s=P("I3X_SUBSCRIPTION_INTERVAL_SECONDS");s!==void 0&&(e.subscriptionInterval=s);let m=l("I3X_LOG_LEVEL");m&&(e.logLevel=m);let c=I("I3X_MODEL_PRELOAD_ON_STARTUP");c!==void 0&&(e.modelPreload=c);let d=I("I3X_FAIL_STARTUP_ON_MODEL_PRELOAD_ERROR");d!==void 0&&(e.failOnPreloadError=d);let p=l("I3X_OPCUA_USERNAME");p&&(e.username=p);let u=l("I3X_OPCUA_PASSWORD");u&&(e.password=u);let f=I("I3X_READ_ONLY");f!==void 0&&(e.readOnly=f);let g=l("I3X_API_KEY");return g&&(e.apiKey=g),e}async function C(e,o){let n={},t=_("i3x",{searchPlaces:["i3x.config.yml","i3x.config.yaml","i3x.config.json",".i3xrc",".i3xrc.json",".i3xrc.yml",".i3xrc.yaml","package.json"],loaders:{".yml":(i,s)=>v(s),".yaml":(i,s)=>v(s)}});try{let i=o?await t.load(o):await t.search();i&&!i.isEmpty&&(n=i.config)}catch{}let r=E();return{...x,...n,...r,...e}}import{randomBytes as A}from"crypto";import{consoleLogger as b,HistoryService as T,ModelService as L,SubscriptionService as U,TypeService as R,ValueService as M}from"@node-i3x/core";import{OpcUaClient as N,OpcUaDataSourceAdapter as X}from"@node-i3x/opcua-connector";import{createApp as D}from"@node-i3x/rest-server";function O(e,o,n){let t=["",` i3X Server v${e}`,"",` OPC UA: ${o.endpoint}`,` REST: http://${o.host}:${o.port}`];n!==void 0&&t.push(` Model: ${n} nodes`),t.push(""),t.push(" Press Ctrl+C to stop"),t.push("");let i=Math.max(...t.map(d=>d.length))+2,s="-".repeat(i),m=` +${s}+`,c=` +${s}+`;console.log(m);for(let d of t)console.log(` |${d.padEnd(i)}|`);console.log(c),console.log()}function a(e,o,n){let t={type:"progress",phase:e,message:o,timestamp:Date.now(),...n};typeof process.send=="function"&&process.send(t)}async function S(e,o){let n=b;a("initializing","Creating OPC UA client...");let t=new N({endpointUrl:e.endpoint,securityMode:e.securityMode,optimizedClient:e.optimizedClient,username:e.username,password:e.password},n),r=new X(t,n),i=new L(r,n),s=new M(r,i,n),m=new T(r,i,n),c=new U(r,i,n,e.subscriptionInterval),d=new R(r,n);a("creating-rest","Creating REST API server...");let p=e.apiKey;p==="auto"&&(p=`i3x_sk_${A(16).toString("hex")}`),p&&n.info("API authentication enabled (Bearer token)");let u=await D({dataSource:r,modelService:i,typeService:d,valueService:s,historyService:m,subscriptionService:c,logger:n,readOnly:e.readOnly,apiKey:p});a("connecting",`Connecting to ${e.endpoint}...`),await r.connect(),a("connected","OPC UA session established");let f;if(e.modelPreload)try{a("preloading-model","Preloading object model..."),f=(await i.preloadModel()).nodesById.size,a("model-loaded",`Model loaded: ${f} nodes`,{nodeCount:f}),a("preloading-types","Preloading type definitions..."),await d.preloadTypes(),a("types-loaded","Type definitions loaded")}catch(y){a("error",`Model preload failed: ${String(y)}`),n.error(`Model preload failed: ${String(y)}`),e.failOnPreloadError&&process.exit(1)}a("starting-http","Starting HTTP server..."),await u.listen({port:e.port,host:e.host}),a("ready",`Server listening on ${e.host}:${e.port}`,{port:e.port,host:e.host,apiKey:p}),O(o,e,f);let g=async()=>{n.info("Shutting down..."),await u.close(),await c.close(),await r.disconnect(),process.exit(0)};process.on("SIGINT",g),process.on("SIGTERM",g)}var z=$(import.meta.url),h=z("../package.json"),w=new k;w.name("i3x").description("Expose OPC UA servers as i3X REST APIs").version(h.version).option("-e, --endpoint <url>","OPC UA endpoint URL").option("-p, --port <port>","REST API port",parseInt).option("-H, --host <host>","REST API bind address").option("--security-mode <mode>","OPC UA security mode").option("--optimized-client <mode>","Optimized client: auto | disabled").option("--subscription-interval <seconds>","Subscription interval in seconds",parseInt).option("--log-level <level>","Log level: debug | info | warn | error").option("--no-model-preload","Skip model preload on startup").option("--username <user>","OPC UA username for UserName identity token").option("--password <pass>","OPC UA password for UserName identity token").option("--read-only","Disable write operations (advertise read-only capabilities)").option("--api-key <key>",'API key for Bearer token auth (use "auto" to generate)').option("-c, --config <path>","Path to config file").action(async e=>{let o={};e.endpoint&&(o.endpoint=e.endpoint),e.port!==void 0&&(o.port=e.port),e.host&&(o.host=e.host),e.securityMode&&(o.securityMode=e.securityMode),e.optimizedClient&&(o.optimizedClient=e.optimizedClient),e.subscriptionInterval!==void 0&&(o.subscriptionInterval=e.subscriptionInterval),e.logLevel&&(o.logLevel=e.logLevel),e.modelPreload===!1&&(o.modelPreload=!1),e.username&&(o.username=e.username),e.password&&(o.password=e.password),e.readOnly&&(o.readOnly=!0),e.apiKey&&(o.apiKey=e.apiKey);let n=await C(o,e.config);await S(n,h.version)});w.parse();
|
|
3
3
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts","../src/config.ts","../src/server.ts","../src/banner.ts"],"mappings":";AAAA,OAAS,iBAAAA,MAAqB,SAC9B,OAAS,WAAAC,MAAe,YCDxB,OAAS,eAAAC,MAAmB,cAC5B,OAAS,QAAQC,MAAgB,
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts","../src/config.ts","../src/server.ts","../src/banner.ts"],"mappings":"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","names":["createRequire","Command","cosmiconfig","loadYaml","DEFAULTS","envStr","key","envInt","v","envBool","fromEnv","result","endpoint","port","host","securityMode","optimizedClient","interval","logLevel","preload","failOnPreload","username","password","readOnly","apiKey","resolveConfig","cliArgs","configPath","fileConfig","explorer","_filepath","content","envConfig","randomBytes","consoleLogger","HistoryService","ModelService","SubscriptionService","TypeService","ValueService","OpcUaClient","OpcUaDataSourceAdapter","createApp","printBanner","version","config","nodeCount","lines","width","l","hr","top","bot","line","sendProgress","phase","message","extra","msg","startServer","config","version","logger","consoleLogger","opcuaClient","OpcUaClient","dataSource","OpcUaDataSourceAdapter","modelService","ModelService","valueService","ValueService","historyService","HistoryService","subscriptionService","SubscriptionService","typeService","TypeService","apiKey","randomBytes","app","createApp","nodeCount","err","printBanner","shutdown","require","createRequire","pkg","program","Command","opts","cliArgs","config","resolveConfig","startServer"]}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{cosmiconfig as
|
|
1
|
+
import{cosmiconfig as O}from"cosmiconfig";import{load as C}from"js-yaml";var S={endpoint:"opc.tcp://localhost:4840",port:8080,host:"0.0.0.0",securityMode:"None",optimizedClient:"auto",subscriptionInterval:5,logLevel:"info",modelPreload:!0,failOnPreloadError:!1,readOnly:!1};function d(e){return process.env[e]}function v(e){let n=process.env[e];return n?parseInt(n,10):void 0}function y(e){let n=process.env[e];if(n)return n==="1"||n.toLowerCase()==="true"}function _(){let e={},n=d("I3X_OPCUA_ENDPOINT")??d("I3X_ENDPOINT");n&&(e.endpoint=n);let o=v("I3X_PORT");o!==void 0&&(e.port=o);let r=d("I3X_HOST");r&&(e.host=r);let i=d("I3X_OPCUA_SECURITY_MODE");i&&(e.securityMode=i);let t=d("I3X_OPCUA_OPTIMIZED_CLIENT");(t==="auto"||t==="disabled")&&(e.optimizedClient=t);let s=v("I3X_SUBSCRIPTION_INTERVAL_SECONDS");s!==void 0&&(e.subscriptionInterval=s);let u=d("I3X_LOG_LEVEL");u&&(e.logLevel=u);let p=y("I3X_MODEL_PRELOAD_ON_STARTUP");p!==void 0&&(e.modelPreload=p);let l=y("I3X_FAIL_STARTUP_ON_MODEL_PRELOAD_ERROR");l!==void 0&&(e.failOnPreloadError=l);let c=d("I3X_OPCUA_USERNAME");c&&(e.username=c);let m=d("I3X_OPCUA_PASSWORD");m&&(e.password=m);let f=y("I3X_READ_ONLY");f!==void 0&&(e.readOnly=f);let g=d("I3X_API_KEY");return g&&(e.apiKey=g),e}async function x(e,n){let o={},r=O("i3x",{searchPlaces:["i3x.config.yml","i3x.config.yaml","i3x.config.json",".i3xrc",".i3xrc.json",".i3xrc.yml",".i3xrc.yaml","package.json"],loaders:{".yml":(t,s)=>C(s),".yaml":(t,s)=>C(s)}});try{let t=n?await r.load(n):await r.search();t&&!t.isEmpty&&(o=t.config)}catch{}let i=_();return{...S,...o,...i,...e}}import{randomBytes as h}from"crypto";import{consoleLogger as E,HistoryService as w,ModelService as A,SubscriptionService as T,TypeService as b,ValueService as L}from"@node-i3x/core";import{OpcUaClient as M,OpcUaDataSourceAdapter as R}from"@node-i3x/opcua-connector";import{createApp as U}from"@node-i3x/rest-server";function P(e,n,o){let r=["",` i3X Server v${e}`,"",` OPC UA: ${n.endpoint}`,` REST: http://${n.host}:${n.port}`];o!==void 0&&r.push(` Model: ${o} nodes`),r.push(""),r.push(" Press Ctrl+C to stop"),r.push("");let t=Math.max(...r.map(l=>l.length))+2,s="-".repeat(t),u=` +${s}+`,p=` +${s}+`;console.log(u);for(let l of r)console.log(` |${l.padEnd(t)}|`);console.log(p),console.log()}function a(e,n,o){let r={type:"progress",phase:e,message:n,timestamp:Date.now(),...o};typeof process.send=="function"&&process.send(r)}async function X(e,n){let o=E;a("initializing","Creating OPC UA client...");let r=new M({endpointUrl:e.endpoint,securityMode:e.securityMode,optimizedClient:e.optimizedClient,username:e.username,password:e.password},o),i=new R(r,o),t=new A(i,o),s=new L(i,t,o),u=new w(i,t,o),p=new T(i,t,o,e.subscriptionInterval),l=new b(i,o);a("creating-rest","Creating REST API server...");let c=e.apiKey;c==="auto"&&(c=`i3x_sk_${h(16).toString("hex")}`),c&&o.info("API authentication enabled (Bearer token)");let m=await U({dataSource:i,modelService:t,typeService:l,valueService:s,historyService:u,subscriptionService:p,logger:o,readOnly:e.readOnly,apiKey:c});a("connecting",`Connecting to ${e.endpoint}...`),await i.connect(),a("connected","OPC UA session established");let f;if(e.modelPreload)try{a("preloading-model","Preloading object model..."),f=(await t.preloadModel()).nodesById.size,a("model-loaded",`Model loaded: ${f} nodes`,{nodeCount:f}),a("preloading-types","Preloading type definitions..."),await l.preloadTypes(),a("types-loaded","Type definitions loaded")}catch(I){a("error",`Model preload failed: ${String(I)}`),o.error(`Model preload failed: ${String(I)}`),e.failOnPreloadError&&process.exit(1)}a("starting-http","Starting HTTP server..."),await m.listen({port:e.port,host:e.host}),a("ready",`Server listening on ${e.host}:${e.port}`,{port:e.port,host:e.host,apiKey:c}),P(n,e,f);let g=async()=>{o.info("Shutting down..."),await m.close(),await p.close(),await i.disconnect(),process.exit(0)};process.on("SIGINT",g),process.on("SIGTERM",g)}export{x as resolveConfig,X as startServer};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config.ts","../src/server.ts","../src/banner.ts"],"mappings":"AAAA,OAAS,eAAAA,MAAmB,cAC5B,OAAS,QAAQC,MAAgB,
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/server.ts","../src/banner.ts"],"mappings":"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","names":["cosmiconfig","loadYaml","DEFAULTS","envStr","key","envInt","v","envBool","fromEnv","result","endpoint","port","host","securityMode","optimizedClient","interval","logLevel","preload","failOnPreload","username","password","readOnly","apiKey","resolveConfig","cliArgs","configPath","fileConfig","explorer","_filepath","content","envConfig","randomBytes","consoleLogger","HistoryService","ModelService","SubscriptionService","TypeService","ValueService","OpcUaClient","OpcUaDataSourceAdapter","createApp","printBanner","version","config","nodeCount","lines","width","hr","top","bot","line","sendProgress","phase","message","extra","msg","startServer","config","version","logger","consoleLogger","opcuaClient","OpcUaClient","dataSource","OpcUaDataSourceAdapter","modelService","ModelService","valueService","ValueService","historyService","HistoryService","subscriptionService","SubscriptionService","typeService","TypeService","apiKey","randomBytes","app","createApp","nodeCount","err","printBanner","shutdown"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@node-i3x/app",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.3",
|
|
4
4
|
"description": "i3X CLI -- expose OPC UA servers as i3X REST APIs",
|
|
5
5
|
"license": "AGPL-3.0-or-later OR LicenseRef-Sterfive-Commercial",
|
|
6
6
|
"author": "Sterfive SAS <contact@sterfive.com> (https://sterfive.com)",
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"typecheck": "tsc --noEmit"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@node-i3x/core": "0.5.
|
|
43
|
-
"@node-i3x/opcua-connector": "0.5.
|
|
44
|
-
"@node-i3x/rest-server": "0.5.
|
|
42
|
+
"@node-i3x/core": "0.5.3",
|
|
43
|
+
"@node-i3x/opcua-connector": "0.5.3",
|
|
44
|
+
"@node-i3x/rest-server": "0.5.3",
|
|
45
45
|
"commander": "^15.0.0",
|
|
46
46
|
"cosmiconfig": "^9.0.2",
|
|
47
47
|
"fastify": "^5.8.5",
|