@node-i3x/app 0.5.4 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -38,9 +38,11 @@ Options:
38
38
  -H, --host <host> REST API bind address (default: 0.0.0.0)
39
39
  --security-mode <mode> OPC UA security mode (default: None)
40
40
  --optimized-client <mode> Optimized client: auto | disabled
41
- --subscription-interval <seconds> Subscription interval in seconds
41
+ --publish-interval <ms> OPC UA publishing interval in milliseconds
42
+ --sampling-interval <ms> OPC UA sampling interval in milliseconds
42
43
  --log-level <level> debug | info | warn | error
43
- --no-model-preload Skip model preload on startup
44
+ --no-preload Skip model preload on startup
45
+ --preload-strict Exit if model preload fails
44
46
  -c, --config <path> Path to config file
45
47
  -h, --help Show help
46
48
  ```
@@ -52,7 +54,7 @@ i3X uses layered configuration. Each layer overrides the previous:
52
54
  ```
53
55
  1. Built-in defaults
54
56
  2. Config file (i3x.config.yml)
55
- 3. Environment variables (I3X_*)
57
+ 3. Environment variables (NODE_I3X_*)
56
58
  4. CLI arguments (--endpoint, --port, ...)
57
59
  ```
58
60
 
@@ -66,8 +68,9 @@ endpoint: opc.tcp://192.168.1.100:4840
66
68
  port: 8080
67
69
  host: 0.0.0.0
68
70
  logLevel: info
69
- subscriptionInterval: 5
70
- modelPreload: true
71
+ publishIntervalMs: 1000
72
+ samplingIntervalMs: 250
73
+ preload: true
71
74
  ```
72
75
 
73
76
  Supported file names (auto-discovered):
@@ -84,18 +87,20 @@ Supported file names (auto-discovered):
84
87
 
85
88
  ### Environment Variables
86
89
 
87
- All environment variables are prefixed with `I3X_`:
90
+ All environment variables are prefixed with `NODE_I3X_`:
88
91
 
89
92
  | Variable | Config key | Default |
90
93
  |---|---|---|
91
- | `I3X_OPCUA_ENDPOINT` | `endpoint` | `opc.tcp://localhost:4840` |
92
- | `I3X_PORT` | `port` | `8080` |
93
- | `I3X_HOST` | `host` | `0.0.0.0` |
94
- | `I3X_OPCUA_SECURITY_MODE` | `securityMode` | `None` |
95
- | `I3X_OPCUA_OPTIMIZED_CLIENT` | `optimizedClient` | `auto` |
96
- | `I3X_SUBSCRIPTION_INTERVAL_SECONDS` | `subscriptionInterval` | `5` |
97
- | `I3X_LOG_LEVEL` | `logLevel` | `info` |
98
- | `I3X_MODEL_PRELOAD_ON_STARTUP` | `modelPreload` | `true` |
94
+ | `NODE_I3X_OPCUA_ENDPOINT` | `endpoint` | `opc.tcp://localhost:4840` |
95
+ | `NODE_I3X_PORT` | `port` | `8080` |
96
+ | `NODE_I3X_HOST` | `host` | `0.0.0.0` |
97
+ | `NODE_I3X_OPCUA_SECURITY_MODE` | `securityMode` | `None` |
98
+ | `NODE_I3X_OPCUA_OPTIMIZED_CLIENT` | `optimizedClient` | `auto` |
99
+ | `NODE_I3X_PUBLISH_INTERVAL_MS` | `publishIntervalMs` | `1000` |
100
+ | `NODE_I3X_SAMPLING_INTERVAL_MS` | `samplingIntervalMs` | `250` |
101
+ | `NODE_I3X_LOG_LEVEL` | `logLevel` | `info` |
102
+ | `NODE_I3X_PRELOAD` | `preload` | `true` |
103
+ | `NODE_I3X_PRELOAD_STRICT` | `preloadStrict` | `false` |
99
104
 
100
105
  ## Programmatic Usage
101
106
 
package/dist/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
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 u=l("I3X_LOG_LEVEL");u&&(e.logLevel=u);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 m=l("I3X_OPCUA_PASSWORD");m&&(e.password=m);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 S(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),u=` +${s}+`,c=` +${s}+`;console.log(u);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 O(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),u=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 m=await D({dataSource:r,modelService:i,typeService:d,valueService:s,historyService:u,subscriptionService:c,logger:n,readOnly:e.readOnly,apiKey:p,getOpcuaStats:()=>t.getStats()});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 m.listen({port:e.port,host:e.host}),a("ready",`Server listening on ${e.host}:${e.port}`,{port:e.port,host:e.host,apiKey:p,opcuaStartupStats:t.getStats()}),S(o,e,f);let g=async()=>{n.info("Shutting down..."),await m.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 O(n,h.version)});w.parse();
2
+ import{createRequire as j}from"module";import{Command as $}from"commander";import{cosmiconfig as M}from"cosmiconfig";import{load as E}from"js-yaml";var w={endpoint:"opc.tcp://localhost:4840",port:8080,host:"0.0.0.0",securityMode:"Auto",securityPolicy:"Auto",optimizedClient:"auto",publishIntervalMs:1e3,samplingIntervalMs:250,logLevel:"info",preload:!0,preloadStrict:!1,readOnly:!1,requireAuth:!1,experimental:!1};function o(e){return process.env[e]}function h(e){let i=process.env[e];return i?parseInt(i,10):void 0}function I(e){let i=process.env[e];if(i)return i==="1"||i.toLowerCase()==="true"}function D(){let e={},i=o("NODE_I3X_OPCUA_ENDPOINT")??o("NODE_I3X_ENDPOINT");i&&(e.endpoint=i);let t=h("NODE_I3X_PORT");t!==void 0&&(e.port=t);let r=o("NODE_I3X_HOST");r&&(e.host=r);let l=o("NODE_I3X_OPCUA_SECURITY_MODE");l&&(e.securityMode=l);let n=o("NODE_I3X_OPCUA_SECURITY_POLICY");n&&(e.securityPolicy=n);let a=o("NODE_I3X_PKI_FOLDER");a&&(e.pkiFolder=a);let m=o("NODE_I3X_CERTIFICATE_SUBJECT");m&&(e.certificateSubject=m);let c=o("NODE_I3X_OPCUA_OPTIMIZED_CLIENT");(c==="auto"||c==="disabled")&&(e.optimizedClient=c);let p=h("NODE_I3X_PUBLISH_INTERVAL_MS");p!==void 0&&(e.publishIntervalMs=p);let d=h("NODE_I3X_SAMPLING_INTERVAL_MS");d!==void 0&&(e.samplingIntervalMs=d);let g=o("NODE_I3X_LOG_LEVEL");g&&(e.logLevel=g);let f=I("NODE_I3X_PRELOAD");f!==void 0&&(e.preload=f);let y=I("NODE_I3X_PRELOAD_STRICT");y!==void 0&&(e.preloadStrict=y);let u=o("NODE_I3X_OPCUA_USERNAME");u&&(e.username=u);let v=o("NODE_I3X_OPCUA_PASSWORD");v&&(e.password=v);let S=I("NODE_I3X_READ_ONLY");S!==void 0&&(e.readOnly=S);let O=I("NODE_I3X_REQUIRE_AUTH");O!==void 0&&(e.requireAuth=O);let _=I("NODE_I3X_EXPERIMENTAL");_!==void 0&&(e.experimental=_);let C=o("NODE_I3X_API_KEY");return C&&(e.apiKey=C),e}async function P(e,i){let t={},r=M("i3x",{searchPlaces:["i3x.config.yml","i3x.config.yaml","i3x.config.json",".i3xrc",".i3xrc.json",".i3xrc.yml",".i3xrc.yaml","package.json"],loaders:{".yml":(n,a)=>E(a),".yaml":(n,a)=>E(a)}});try{let n=i?await r.load(i):await r.search();n&&!n.isEmpty&&(t=n.config)}catch(n){console.debug(`No config file loaded: ${n.message}`)}let l=D();return{...w,...t,...l,...e}}import{randomBytes as U}from"crypto";import{consoleLogger as T,createI3xStack as L}from"@node-i3x/core";import{OpcUaClient as k,OpcUaDataSourceAdapter as R}from"@node-i3x/opcua-connector";import{createApp as X}from"@node-i3x/rest-server";function A(e,i,t){let r=["",` i3X Server v${e}`,"",` OPC UA: ${i.endpoint}`,` REST: http://${i.host}:${i.port}`,` Auth: ${i.apiKey?`Bearer${i.requireAuth?" (required)":""}`:"none (open)"}`];t!==void 0&&r.push(` Model: ${t} nodes`),r.push(""),r.push(" Press Ctrl+C to stop"),r.push("");let n=Math.max(...r.map(p=>p.length))+2,a="-".repeat(n),m=` +${a}+`,c=` +${a}+`;console.log(m);for(let p of r)console.log(` |${p.padEnd(n)}|`);console.log(c),console.log()}function s(e,i,t){let r={type:"progress",phase:e,message:i,timestamp:Date.now(),...t};typeof process.send=="function"&&process.send(r)}async function b(e,i){let t=T;s("initializing","Creating OPC UA client...");let r=new k({endpointUrl:e.endpoint,securityMode:e.securityMode,securityPolicy:e.securityPolicy,pkiFolder:e.pkiFolder,certificateSubject:e.certificateSubject,optimizedClient:e.optimizedClient,username:e.username,password:e.password},t),l=new R(r,t),{modelService:n,valueService:a,historyService:m,subscriptionService:c,typeService:p}=L(l,t,{publishIntervalMs:e.publishIntervalMs,samplingIntervalMs:e.samplingIntervalMs});s("creating-rest","Creating REST API server...");let d=e.apiKey;if(d==="auto"&&(d=`i3x_sk_${U(16).toString("hex")}`),e.requireAuth&&!d&&(t.error('requireAuth is enabled but no apiKey is configured. Set --api-key <key> (or "auto") to enable Bearer token authentication, or disable requireAuth.'),process.exit(1)),d){let u=e.requireAuth?"enforced":"enabled";t.info(`API authentication ${u} (Bearer token)`)}let g=await X({dataSource:l,modelService:n,typeService:p,valueService:a,historyService:m,subscriptionService:c,logger:t,readOnly:e.readOnly,apiKey:d,experimental:e.experimental,getOpcuaStats:()=>r.getStats()});s("connecting",`Connecting to ${e.endpoint}...`),await l.connect(),s("connected","OPC UA session established");let f;if(e.preload)try{s("preloading-model","Preloading object model..."),f=(await n.preloadModel()).nodesById.size,s("model-loaded",`Model loaded: ${f} nodes`,{nodeCount:f}),s("preloading-types","Preloading type definitions..."),await p.preloadTypes(),s("types-loaded","Type definitions loaded")}catch(u){s("error",`Model preload failed: ${String(u)}`),t.error(`Model preload failed: ${String(u)}`),e.preloadStrict&&process.exit(1)}s("starting-http","Starting HTTP server..."),await g.listen({port:e.port,host:e.host}),s("ready",`Server listening on ${e.host}:${e.port}`,{port:e.port,host:e.host,apiKey:d,opcuaStartupStats:r.getStats()}),A(i,e,f);let y=async()=>{t.info("Shutting down..."),await g.close(),await c.close(),await l.disconnect(),process.exit(0)};process.on("SIGINT",y),process.on("SIGTERM",y)}var q=j(import.meta.url),x=q("../package.json"),N=new $;N.name("i3x").description("Expose OPC UA servers as i3X REST APIs").version(x.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 (None, Sign, SignAndEncrypt, Auto)").option("--security-policy <policy>","OPC UA security policy (e.g. Basic256Sha256)").option("--pki-folder <path>","PKI folder for certificate storage").option("--certificate-subject <subject>","X.500 subject for the client certificate (e.g. /CN=my-app/O=Acme/OU=user@acme.com)").option("--optimized-client <mode>","Optimized client: auto | disabled").option("--publish-interval <ms>","OPC UA publishing interval in milliseconds",parseInt).option("--sampling-interval <ms>","OPC UA sampling interval in milliseconds",parseInt).option("--log-level <level>","Log level: debug | info | warn | error").option("--no-preload","Skip model preload on startup").option("--preload-strict","Exit if model preload fails").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("--experimental","Enable experimental convenience and extension routes").option("--require-auth","Require Bearer token auth (exit if no apiKey is configured)").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 i={};e.endpoint&&(i.endpoint=e.endpoint),e.port!==void 0&&(i.port=e.port),e.host&&(i.host=e.host),e.securityMode&&(i.securityMode=e.securityMode),e.securityPolicy&&(i.securityPolicy=e.securityPolicy),e.pkiFolder&&(i.pkiFolder=e.pkiFolder),e.certificateSubject&&(i.certificateSubject=e.certificateSubject),e.optimizedClient&&(i.optimizedClient=e.optimizedClient),e.publishInterval!==void 0&&(i.publishIntervalMs=e.publishInterval),e.samplingInterval!==void 0&&(i.samplingIntervalMs=e.samplingInterval),e.logLevel&&(i.logLevel=e.logLevel),e.preload===!1&&(i.preload=!1),e.preloadStrict&&(i.preloadStrict=!0),e.username&&(i.username=e.username),e.password&&(i.password=e.password),e.readOnly&&(i.readOnly=!0),e.experimental&&(i.experimental=!0),e.requireAuth&&(i.requireAuth=!0),e.apiKey&&(i.apiKey=e.apiKey);let t=await P(i,e.config);await b(t,x.version)});N.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":"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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"]}
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","securityPolicy","pkiFolder","certSubject","optimizedClient","publishInterval","samplingInterval","logLevel","preload","preloadStrict","username","password","readOnly","requireAuth","experimental","apiKey","resolveConfig","cliArgs","configPath","fileConfig","explorer","_filepath","content","err","envConfig","randomBytes","consoleLogger","createI3xStack","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","valueService","historyService","subscriptionService","typeService","createI3xStack","apiKey","randomBytes","mode","app","createApp","nodeCount","err","printBanner","shutdown","require","createRequire","pkg","program","Command","opts","cliArgs","config","resolveConfig","startServer"]}
package/dist/index.d.ts CHANGED
@@ -3,12 +3,18 @@ interface I3xConfig {
3
3
  port: number;
4
4
  host: string;
5
5
  securityMode: string;
6
+ securityPolicy: string;
7
+ pkiFolder?: string;
8
+ certificateSubject?: string;
6
9
  optimizedClient: 'auto' | 'disabled';
7
- subscriptionInterval: number;
10
+ publishIntervalMs: number;
11
+ samplingIntervalMs: number;
8
12
  logLevel: string;
9
- modelPreload: boolean;
10
- failOnPreloadError: boolean;
13
+ preload: boolean;
14
+ preloadStrict: boolean;
11
15
  readOnly: boolean;
16
+ requireAuth: boolean;
17
+ experimental: boolean;
12
18
  username?: string;
13
19
  password?: string;
14
20
  apiKey?: string;
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{cosmiconfig as P}from"cosmiconfig";import{load as S}from"js-yaml";var O={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 C(e){let t=process.env[e];return t?parseInt(t,10):void 0}function y(e){let t=process.env[e];if(t)return t==="1"||t.toLowerCase()==="true"}function _(){let e={},t=d("I3X_OPCUA_ENDPOINT")??d("I3X_ENDPOINT");t&&(e.endpoint=t);let o=C("I3X_PORT");o!==void 0&&(e.port=o);let n=d("I3X_HOST");n&&(e.host=n);let i=d("I3X_OPCUA_SECURITY_MODE");i&&(e.securityMode=i);let r=d("I3X_OPCUA_OPTIMIZED_CLIENT");(r==="auto"||r==="disabled")&&(e.optimizedClient=r);let s=C("I3X_SUBSCRIPTION_INTERVAL_SECONDS");s!==void 0&&(e.subscriptionInterval=s);let u=d("I3X_LOG_LEVEL");u&&(e.logLevel=u);let c=y("I3X_MODEL_PRELOAD_ON_STARTUP");c!==void 0&&(e.modelPreload=c);let l=y("I3X_FAIL_STARTUP_ON_MODEL_PRELOAD_ERROR");l!==void 0&&(e.failOnPreloadError=l);let p=d("I3X_OPCUA_USERNAME");p&&(e.username=p);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,t){let o={},n=P("i3x",{searchPlaces:["i3x.config.yml","i3x.config.yaml","i3x.config.json",".i3xrc",".i3xrc.json",".i3xrc.yml",".i3xrc.yaml","package.json"],loaders:{".yml":(r,s)=>S(s),".yaml":(r,s)=>S(s)}});try{let r=t?await n.load(t):await n.search();r&&!r.isEmpty&&(o=r.config)}catch{}let i=_();return{...O,...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 v(e,t,o){let n=["",` i3X Server v${e}`,"",` OPC UA: ${t.endpoint}`,` REST: http://${t.host}:${t.port}`];o!==void 0&&n.push(` Model: ${o} nodes`),n.push(""),n.push(" Press Ctrl+C to stop"),n.push("");let r=Math.max(...n.map(l=>l.length))+2,s="-".repeat(r),u=` +${s}+`,c=` +${s}+`;console.log(u);for(let l of n)console.log(` |${l.padEnd(r)}|`);console.log(c),console.log()}function a(e,t,o){let n={type:"progress",phase:e,message:t,timestamp:Date.now(),...o};typeof process.send=="function"&&process.send(n)}async function X(e,t){let o=E;a("initializing","Creating OPC UA client...");let n=new M({endpointUrl:e.endpoint,securityMode:e.securityMode,optimizedClient:e.optimizedClient,username:e.username,password:e.password},o),i=new R(n,o),r=new A(i,o),s=new L(i,r,o),u=new w(i,r,o),c=new T(i,r,o,e.subscriptionInterval),l=new b(i,o);a("creating-rest","Creating REST API server...");let p=e.apiKey;p==="auto"&&(p=`i3x_sk_${h(16).toString("hex")}`),p&&o.info("API authentication enabled (Bearer token)");let m=await U({dataSource:i,modelService:r,typeService:l,valueService:s,historyService:u,subscriptionService:c,logger:o,readOnly:e.readOnly,apiKey:p,getOpcuaStats:()=>n.getStats()});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 r.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:p,opcuaStartupStats:n.getStats()}),v(t,e,f);let g=async()=>{o.info("Shutting down..."),await m.close(),await c.close(),await i.disconnect(),process.exit(0)};process.on("SIGINT",g),process.on("SIGTERM",g)}export{x as resolveConfig,X as startServer};
1
+ import{cosmiconfig as P}from"cosmiconfig";import{load as v}from"js-yaml";var A={endpoint:"opc.tcp://localhost:4840",port:8080,host:"0.0.0.0",securityMode:"Auto",securityPolicy:"Auto",optimizedClient:"auto",publishIntervalMs:1e3,samplingIntervalMs:250,logLevel:"info",preload:!0,preloadStrict:!1,readOnly:!1,requireAuth:!1,experimental:!1};function i(e){return process.env[e]}function y(e){let t=process.env[e];return t?parseInt(t,10):void 0}function _(e){let t=process.env[e];if(t)return t==="1"||t.toLowerCase()==="true"}function b(){let e={},t=i("NODE_I3X_OPCUA_ENDPOINT")??i("NODE_I3X_ENDPOINT");t&&(e.endpoint=t);let o=y("NODE_I3X_PORT");o!==void 0&&(e.port=o);let n=i("NODE_I3X_HOST");n&&(e.host=n);let l=i("NODE_I3X_OPCUA_SECURITY_MODE");l&&(e.securityMode=l);let r=i("NODE_I3X_OPCUA_SECURITY_POLICY");r&&(e.securityPolicy=r);let s=i("NODE_I3X_PKI_FOLDER");s&&(e.pkiFolder=s);let m=i("NODE_I3X_CERTIFICATE_SUBJECT");m&&(e.certificateSubject=m);let c=i("NODE_I3X_OPCUA_OPTIMIZED_CLIENT");(c==="auto"||c==="disabled")&&(e.optimizedClient=c);let p=y("NODE_I3X_PUBLISH_INTERVAL_MS");p!==void 0&&(e.publishIntervalMs=p);let d=y("NODE_I3X_SAMPLING_INTERVAL_MS");d!==void 0&&(e.samplingIntervalMs=d);let I=i("NODE_I3X_LOG_LEVEL");I&&(e.logLevel=I);let f=_("NODE_I3X_PRELOAD");f!==void 0&&(e.preload=f);let g=_("NODE_I3X_PRELOAD_STRICT");g!==void 0&&(e.preloadStrict=g);let u=i("NODE_I3X_OPCUA_USERNAME");u&&(e.username=u);let E=i("NODE_I3X_OPCUA_PASSWORD");E&&(e.password=E);let S=_("NODE_I3X_READ_ONLY");S!==void 0&&(e.readOnly=S);let O=_("NODE_I3X_REQUIRE_AUTH");O!==void 0&&(e.requireAuth=O);let h=_("NODE_I3X_EXPERIMENTAL");h!==void 0&&(e.experimental=h);let C=i("NODE_I3X_API_KEY");return C&&(e.apiKey=C),e}async function N(e,t){let o={},n=P("i3x",{searchPlaces:["i3x.config.yml","i3x.config.yaml","i3x.config.json",".i3xrc",".i3xrc.json",".i3xrc.yml",".i3xrc.yaml","package.json"],loaders:{".yml":(r,s)=>v(s),".yaml":(r,s)=>v(s)}});try{let r=t?await n.load(t):await n.search();r&&!r.isEmpty&&(o=r.config)}catch(r){console.debug(`No config file loaded: ${r.message}`)}let l=b();return{...A,...o,...l,...e}}import{randomBytes as D}from"crypto";import{consoleLogger as M,createI3xStack as T}from"@node-i3x/core";import{OpcUaClient as w,OpcUaDataSourceAdapter as L}from"@node-i3x/opcua-connector";import{createApp as X}from"@node-i3x/rest-server";function x(e,t,o){let n=["",` i3X Server v${e}`,"",` OPC UA: ${t.endpoint}`,` REST: http://${t.host}:${t.port}`,` Auth: ${t.apiKey?`Bearer${t.requireAuth?" (required)":""}`:"none (open)"}`];o!==void 0&&n.push(` Model: ${o} nodes`),n.push(""),n.push(" Press Ctrl+C to stop"),n.push("");let r=Math.max(...n.map(p=>p.length))+2,s="-".repeat(r),m=` +${s}+`,c=` +${s}+`;console.log(m);for(let p of n)console.log(` |${p.padEnd(r)}|`);console.log(c),console.log()}function a(e,t,o){let n={type:"progress",phase:e,message:t,timestamp:Date.now(),...o};typeof process.send=="function"&&process.send(n)}async function R(e,t){let o=M;a("initializing","Creating OPC UA client...");let n=new w({endpointUrl:e.endpoint,securityMode:e.securityMode,securityPolicy:e.securityPolicy,pkiFolder:e.pkiFolder,certificateSubject:e.certificateSubject,optimizedClient:e.optimizedClient,username:e.username,password:e.password},o),l=new L(n,o),{modelService:r,valueService:s,historyService:m,subscriptionService:c,typeService:p}=T(l,o,{publishIntervalMs:e.publishIntervalMs,samplingIntervalMs:e.samplingIntervalMs});a("creating-rest","Creating REST API server...");let d=e.apiKey;if(d==="auto"&&(d=`i3x_sk_${D(16).toString("hex")}`),e.requireAuth&&!d&&(o.error('requireAuth is enabled but no apiKey is configured. Set --api-key <key> (or "auto") to enable Bearer token authentication, or disable requireAuth.'),process.exit(1)),d){let u=e.requireAuth?"enforced":"enabled";o.info(`API authentication ${u} (Bearer token)`)}let I=await X({dataSource:l,modelService:r,typeService:p,valueService:s,historyService:m,subscriptionService:c,logger:o,readOnly:e.readOnly,apiKey:d,experimental:e.experimental,getOpcuaStats:()=>n.getStats()});a("connecting",`Connecting to ${e.endpoint}...`),await l.connect(),a("connected","OPC UA session established");let f;if(e.preload)try{a("preloading-model","Preloading object model..."),f=(await r.preloadModel()).nodesById.size,a("model-loaded",`Model loaded: ${f} nodes`,{nodeCount:f}),a("preloading-types","Preloading type definitions..."),await p.preloadTypes(),a("types-loaded","Type definitions loaded")}catch(u){a("error",`Model preload failed: ${String(u)}`),o.error(`Model preload failed: ${String(u)}`),e.preloadStrict&&process.exit(1)}a("starting-http","Starting HTTP server..."),await I.listen({port:e.port,host:e.host}),a("ready",`Server listening on ${e.host}:${e.port}`,{port:e.port,host:e.host,apiKey:d,opcuaStartupStats:n.getStats()}),x(t,e,f);let g=async()=>{o.info("Shutting down..."),await I.close(),await c.close(),await l.disconnect(),process.exit(0)};process.on("SIGINT",g),process.on("SIGTERM",g)}export{N as resolveConfig,R 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":"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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"]}
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","securityPolicy","pkiFolder","certSubject","optimizedClient","publishInterval","samplingInterval","logLevel","preload","preloadStrict","username","password","readOnly","requireAuth","experimental","apiKey","resolveConfig","cliArgs","configPath","fileConfig","explorer","_filepath","content","err","envConfig","randomBytes","consoleLogger","createI3xStack","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","valueService","historyService","subscriptionService","typeService","createI3xStack","apiKey","randomBytes","mode","app","createApp","nodeCount","err","printBanner","shutdown"]}
@@ -12,10 +12,13 @@ host: 0.0.0.0
12
12
  securityMode: None
13
13
  # optimizedClient: auto
14
14
 
15
- # Domain settings
16
- subscriptionInterval: 5
17
- modelPreload: true
18
- # failOnPreloadError: false
15
+ # OPC UA subscription intervals (milliseconds)
16
+ publishIntervalMs: 1000
17
+ samplingIntervalMs: 250
18
+
19
+ # Model preloading
20
+ preload: true
21
+ # preloadStrict: false
19
22
 
20
23
  # Logging
21
24
  logLevel: info
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@node-i3x/app",
3
- "version": "0.5.4",
3
+ "version": "0.7.0",
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)",
@@ -18,6 +18,7 @@
18
18
  },
19
19
  "exports": {
20
20
  ".": {
21
+ "source": "./src/index.ts",
21
22
  "types": "./dist/index.d.ts",
22
23
  "import": "./dist/index.js"
23
24
  }
@@ -39,9 +40,9 @@
39
40
  "typecheck": "tsc --noEmit"
40
41
  },
41
42
  "dependencies": {
42
- "@node-i3x/core": "0.5.4",
43
- "@node-i3x/opcua-connector": "0.5.4",
44
- "@node-i3x/rest-server": "0.5.4",
43
+ "@node-i3x/core": "0.7.0",
44
+ "@node-i3x/opcua-connector": "0.7.0",
45
+ "@node-i3x/rest-server": "0.7.0",
45
46
  "commander": "^15.0.0",
46
47
  "cosmiconfig": "^9.0.2",
47
48
  "fastify": "^5.8.5",