@effect-opcua/client 0.1.0-alpha.1

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 (171) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +367 -0
  3. package/dist/Opcua.d.mts +13 -0
  4. package/dist/Opcua.d.mts.map +1 -0
  5. package/dist/Opcua.mjs +23 -0
  6. package/dist/Opcua.mjs.map +1 -0
  7. package/dist/OpcuaClient.d.mts +27 -0
  8. package/dist/OpcuaClient.d.mts.map +1 -0
  9. package/dist/OpcuaClient.mjs +20 -0
  10. package/dist/OpcuaClient.mjs.map +1 -0
  11. package/dist/OpcuaError.d.mts +249 -0
  12. package/dist/OpcuaError.d.mts.map +1 -0
  13. package/dist/OpcuaError.mjs +97 -0
  14. package/dist/OpcuaError.mjs.map +1 -0
  15. package/dist/OpcuaMethod.d.mts +158 -0
  16. package/dist/OpcuaMethod.d.mts.map +1 -0
  17. package/dist/OpcuaMethod.mjs +31 -0
  18. package/dist/OpcuaMethod.mjs.map +1 -0
  19. package/dist/OpcuaSession.d.mts +247 -0
  20. package/dist/OpcuaSession.d.mts.map +1 -0
  21. package/dist/OpcuaSession.mjs +50 -0
  22. package/dist/OpcuaSession.mjs.map +1 -0
  23. package/dist/OpcuaSubscription.d.mts +148 -0
  24. package/dist/OpcuaSubscription.d.mts.map +1 -0
  25. package/dist/OpcuaSubscription.mjs +45 -0
  26. package/dist/OpcuaSubscription.mjs.map +1 -0
  27. package/dist/OpcuaVariable.d.mts +179 -0
  28. package/dist/OpcuaVariable.d.mts.map +1 -0
  29. package/dist/OpcuaVariable.mjs +15 -0
  30. package/dist/OpcuaVariable.mjs.map +1 -0
  31. package/dist/_virtual/rolldown_runtime.mjs +18 -0
  32. package/dist/index.d.mts +8 -0
  33. package/dist/index.mjs +7 -0
  34. package/dist/internal/batch/chunk.d.mts +11 -0
  35. package/dist/internal/batch/chunk.d.mts.map +1 -0
  36. package/dist/internal/batch/chunk.mjs +23 -0
  37. package/dist/internal/batch/chunk.mjs.map +1 -0
  38. package/dist/internal/batch/keyed.d.mts +50 -0
  39. package/dist/internal/batch/keyed.d.mts.map +1 -0
  40. package/dist/internal/batch/keyed.mjs +112 -0
  41. package/dist/internal/batch/keyed.mjs.map +1 -0
  42. package/dist/internal/batch/operations.d.mts +25 -0
  43. package/dist/internal/batch/operations.d.mts.map +1 -0
  44. package/dist/internal/batch/operations.mjs +213 -0
  45. package/dist/internal/batch/operations.mjs.map +1 -0
  46. package/dist/internal/browse/operations.d.mts +15 -0
  47. package/dist/internal/browse/operations.d.mts.map +1 -0
  48. package/dist/internal/browse/operations.mjs +72 -0
  49. package/dist/internal/browse/operations.mjs.map +1 -0
  50. package/dist/internal/client/make.d.mts +16 -0
  51. package/dist/internal/client/make.d.mts.map +1 -0
  52. package/dist/internal/client/make.mjs +76 -0
  53. package/dist/internal/client/make.mjs.map +1 -0
  54. package/dist/internal/common/collections.d.mts +5 -0
  55. package/dist/internal/common/collections.d.mts.map +1 -0
  56. package/dist/internal/common/collections.mjs +10 -0
  57. package/dist/internal/common/collections.mjs.map +1 -0
  58. package/dist/internal/common/constants.d.mts +18 -0
  59. package/dist/internal/common/constants.d.mts.map +1 -0
  60. package/dist/internal/common/constants.mjs +19 -0
  61. package/dist/internal/common/constants.mjs.map +1 -0
  62. package/dist/internal/common/node-id.d.mts +2 -0
  63. package/dist/internal/common/node-id.mjs +1 -0
  64. package/dist/internal/common/options.d.mts +15 -0
  65. package/dist/internal/common/options.d.mts.map +1 -0
  66. package/dist/internal/common/options.mjs +22 -0
  67. package/dist/internal/common/options.mjs.map +1 -0
  68. package/dist/internal/common/predicates.d.mts +8 -0
  69. package/dist/internal/common/predicates.d.mts.map +1 -0
  70. package/dist/internal/common/predicates.mjs +13 -0
  71. package/dist/internal/common/predicates.mjs.map +1 -0
  72. package/dist/internal/data-types/enum.d.mts +2 -0
  73. package/dist/internal/data-types/enum.mjs +3 -0
  74. package/dist/internal/data-types/manager.d.mts +2 -0
  75. package/dist/internal/data-types/manager.mjs +3 -0
  76. package/dist/internal/data-types/model.d.mts +2 -0
  77. package/dist/internal/data-types/model.mjs +1 -0
  78. package/dist/internal/data-types/read.d.mts +14 -0
  79. package/dist/internal/data-types/read.d.mts.map +1 -0
  80. package/dist/internal/data-types/read.mjs +291 -0
  81. package/dist/internal/data-types/read.mjs.map +1 -0
  82. package/dist/internal/data-types/structure.d.mts +2 -0
  83. package/dist/internal/data-types/structure.mjs +3 -0
  84. package/dist/internal/events/model.d.mts +72 -0
  85. package/dist/internal/events/model.d.mts.map +1 -0
  86. package/dist/internal/events/model.mjs +1 -0
  87. package/dist/internal/events/wire.d.mts +37 -0
  88. package/dist/internal/events/wire.d.mts.map +1 -0
  89. package/dist/internal/events/wire.mjs +127 -0
  90. package/dist/internal/events/wire.mjs.map +1 -0
  91. package/dist/internal/metadata/arguments.d.mts +2 -0
  92. package/dist/internal/metadata/arguments.mjs +3 -0
  93. package/dist/internal/metadata/methods.d.mts +2 -0
  94. package/dist/internal/metadata/methods.mjs +3 -0
  95. package/dist/internal/metadata/service.d.mts +23 -0
  96. package/dist/internal/metadata/service.d.mts.map +1 -0
  97. package/dist/internal/metadata/service.mjs +416 -0
  98. package/dist/internal/metadata/service.mjs.map +1 -0
  99. package/dist/internal/metadata/variables.d.mts +3 -0
  100. package/dist/internal/metadata/variables.mjs +3 -0
  101. package/dist/internal/method/arguments.d.mts +48 -0
  102. package/dist/internal/method/arguments.d.mts.map +1 -0
  103. package/dist/internal/method/arguments.mjs +216 -0
  104. package/dist/internal/method/arguments.mjs.map +1 -0
  105. package/dist/internal/method/operations.d.mts +19 -0
  106. package/dist/internal/method/operations.d.mts.map +1 -0
  107. package/dist/internal/method/operations.mjs +111 -0
  108. package/dist/internal/method/operations.mjs.map +1 -0
  109. package/dist/internal/monitoring/options.d.mts +30 -0
  110. package/dist/internal/monitoring/options.d.mts.map +1 -0
  111. package/dist/internal/monitoring/options.mjs +260 -0
  112. package/dist/internal/monitoring/options.mjs.map +1 -0
  113. package/dist/internal/monitoring/requests.d.mts +16 -0
  114. package/dist/internal/monitoring/requests.d.mts.map +1 -0
  115. package/dist/internal/monitoring/requests.mjs +53 -0
  116. package/dist/internal/monitoring/requests.mjs.map +1 -0
  117. package/dist/internal/monitoring/runtime.d.mts +14 -0
  118. package/dist/internal/monitoring/runtime.d.mts.map +1 -0
  119. package/dist/internal/monitoring/runtime.mjs +321 -0
  120. package/dist/internal/monitoring/runtime.mjs.map +1 -0
  121. package/dist/internal/monitoring/samples.d.mts +23 -0
  122. package/dist/internal/monitoring/samples.d.mts.map +1 -0
  123. package/dist/internal/monitoring/samples.mjs +45 -0
  124. package/dist/internal/monitoring/samples.mjs.map +1 -0
  125. package/dist/internal/session/make.d.mts +11 -0
  126. package/dist/internal/session/make.d.mts.map +1 -0
  127. package/dist/internal/session/make.mjs +36 -0
  128. package/dist/internal/session/make.mjs.map +1 -0
  129. package/dist/internal/session/service.d.mts +10 -0
  130. package/dist/internal/session/service.d.mts.map +1 -0
  131. package/dist/internal/session/service.mjs +232 -0
  132. package/dist/internal/session/service.mjs.map +1 -0
  133. package/dist/internal/structures/adapter.d.mts +11 -0
  134. package/dist/internal/structures/adapter.d.mts.map +1 -0
  135. package/dist/internal/structures/adapter.mjs +37 -0
  136. package/dist/internal/structures/adapter.mjs.map +1 -0
  137. package/dist/internal/structures/model.d.mts +21 -0
  138. package/dist/internal/structures/model.d.mts.map +1 -0
  139. package/dist/internal/structures/model.mjs +7 -0
  140. package/dist/internal/structures/model.mjs.map +1 -0
  141. package/dist/internal/structures/runtime.d.mts +28 -0
  142. package/dist/internal/structures/runtime.d.mts.map +1 -0
  143. package/dist/internal/structures/runtime.mjs +119 -0
  144. package/dist/internal/structures/runtime.mjs.map +1 -0
  145. package/dist/internal/subscription/options.d.mts +17 -0
  146. package/dist/internal/subscription/options.d.mts.map +1 -0
  147. package/dist/internal/subscription/options.mjs +51 -0
  148. package/dist/internal/subscription/options.mjs.map +1 -0
  149. package/dist/internal/subscription/runtime.d.mts +15 -0
  150. package/dist/internal/subscription/runtime.d.mts.map +1 -0
  151. package/dist/internal/subscription/runtime.mjs +43 -0
  152. package/dist/internal/subscription/runtime.mjs.map +1 -0
  153. package/dist/internal/values/codec.d.mts +53 -0
  154. package/dist/internal/values/codec.d.mts.map +1 -0
  155. package/dist/internal/values/codec.mjs +117 -0
  156. package/dist/internal/values/codec.mjs.map +1 -0
  157. package/dist/internal/values/normalize.d.mts +33 -0
  158. package/dist/internal/values/normalize.d.mts.map +1 -0
  159. package/dist/internal/values/normalize.mjs +177 -0
  160. package/dist/internal/values/normalize.mjs.map +1 -0
  161. package/dist/internal/values/result.d.mts +16 -0
  162. package/dist/internal/values/result.d.mts.map +1 -0
  163. package/dist/internal/values/result.mjs +15 -0
  164. package/dist/internal/values/result.mjs.map +1 -0
  165. package/dist/internal/variable/operations.d.mts +50 -0
  166. package/dist/internal/variable/operations.d.mts.map +1 -0
  167. package/dist/internal/variable/operations.mjs +192 -0
  168. package/dist/internal/variable/operations.mjs.map +1 -0
  169. package/dist/node-opcua.d.mts +2 -0
  170. package/dist/node-opcua.mjs +3 -0
  171. package/package.json +57 -0
@@ -0,0 +1,50 @@
1
+ import { NodeIdString, ReadResult, ReadableVariableDef, ValueOfVariableDef, VariableAccess, VariableCapability, VariableDef, VariableMetadata, WritableVariableDef, WriteResult } from "../../OpcuaVariable.mjs";
2
+ import "../common/node-id.mjs";
3
+ import { OpcuaStructureRuntime } from "../structures/runtime.mjs";
4
+ import { OpcuaAccessDeniedError, OpcuaEncodeError, OpcuaServiceError } from "../../OpcuaError.mjs";
5
+ import { BatchOptions } from "../batch/chunk.mjs";
6
+ import { ClientSession, DataType, DataValue, NodeId, StatusCode } from "node-opcua";
7
+ import { Effect } from "effect";
8
+
9
+ //#region src/internal/variable/operations.d.ts
10
+ declare const readDataValue: (session: ClientSession, nodeId: NodeIdString) => Effect.Effect<DataValue, OpcuaServiceError, never>;
11
+ declare const readVariable: <const Id extends string, A>(session: ClientSession, def: VariableDef<Id, A, "read" | "readWrite"> | VariableDef<Id, A, VariableAccess>, structureRuntime: OpcuaStructureRuntime) => Effect.Effect<ReadResult<A, Id>, OpcuaServiceError, never>;
12
+ type PreparedReadVariable<Def extends ReadableVariableDef = ReadableVariableDef> = {
13
+ readonly def: Def;
14
+ readonly rawNodeId: NodeId;
15
+ };
16
+ declare const readPreparedVariables: (session: ClientSession, items: ReadonlyArray<PreparedReadVariable>, structureRuntime: OpcuaStructureRuntime, options?: BatchOptions) => Effect.Effect<ReadResult<unknown, string>[], OpcuaServiceError, never>;
17
+ declare const sampleFromDataValue: <const Id extends string, A>(def: VariableDef<Id, A, VariableAccess>, dataValue: DataValue, structureRuntime: OpcuaStructureRuntime) => Effect.Effect<ReadResult<A, Id>, never, never>;
18
+ declare const writeVariable: <const Id extends string, A>(session: ClientSession, def: VariableDef<Id, A, VariableAccess>, metadata: VariableMetadata, value: A, structureRuntime: OpcuaStructureRuntime) => Effect.Effect<WriteResult<Id>, OpcuaEncodeError | OpcuaServiceError, never>;
19
+ type PreparedWriteVariable<Def extends WritableVariableDef = WritableVariableDef> = {
20
+ readonly def: Def;
21
+ readonly metadata: VariableMetadata;
22
+ readonly value: ValueOfVariableDef<Def>;
23
+ readonly rawNodeId: NodeId;
24
+ };
25
+ declare const writePreparedVariables: (session: ClientSession, entries: ReadonlyArray<PreparedWriteVariable>, structureRuntime: OpcuaStructureRuntime, options?: BatchOptions) => Effect.Effect<WriteResult<string>[], OpcuaEncodeError | OpcuaServiceError, never>;
26
+ declare const writeResult: <Id extends string>(nodeId: Id, statusCode: StatusCode) => WriteResult<Id>;
27
+ declare const accessDeniedError: (nodeId: NodeIdString, requestedCapability: VariableCapability, accessLevel: number, userAccessLevel?: number) => OpcuaAccessDeniedError | undefined;
28
+ declare const variableAccessCapabilities: (access: VariableAccess) => ReadonlyArray<VariableCapability>;
29
+ declare const hasAccess: (accessLevel: number, capability: VariableCapability) => boolean;
30
+ declare const variableMetadataFromRaw: (input: {
31
+ readonly nodeId: NodeIdString;
32
+ readonly dataTypeNodeId: NodeId;
33
+ readonly builtInDataType: DataType;
34
+ readonly valueRank: number;
35
+ readonly arrayDimensions?: ReadonlyArray<number>;
36
+ readonly accessLevel: number;
37
+ readonly userAccessLevel?: number;
38
+ }) => VariableMetadata;
39
+ declare const codecMetadata: (metadata: VariableMetadata) => {
40
+ nodeId: string;
41
+ valueRank: number;
42
+ arrayDimensions: readonly number[] | undefined;
43
+ raw: {
44
+ declaredDataType: NodeId;
45
+ builtInDataType: DataType;
46
+ };
47
+ };
48
+ //#endregion
49
+ export { PreparedReadVariable, PreparedWriteVariable, accessDeniedError, codecMetadata, hasAccess, readDataValue, readPreparedVariables, readVariable, sampleFromDataValue, variableAccessCapabilities, variableMetadataFromRaw, writePreparedVariables, writeResult, writeVariable };
50
+ //# sourceMappingURL=operations.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.mts","names":[],"sources":["../../../src/internal/variable/operations.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,192 @@
1
+ import { isGood, normalizeNodeId, normalizeStatusCode, normalizeTimestamp, normalizeVariantInfo } from "../values/normalize.mjs";
2
+ import { accessDeniedError as accessDeniedError$1, serviceError } from "../../OpcuaError.mjs";
3
+ import { Codec } from "../values/codec.mjs";
4
+ import { runChunked } from "../batch/chunk.mjs";
5
+ import { resultFromStatusAndDecode } from "../values/result.mjs";
6
+ import { AccessLevelFlag, AttributeIds, DataType, coerceNodeId } from "node-opcua";
7
+ import { Effect } from "effect";
8
+
9
+ //#region src/internal/variable/operations.ts
10
+ const readDataValue = (session, nodeId) => Effect.tryPromise({
11
+ try: () => session.read({
12
+ nodeId: coerceNodeId(nodeId),
13
+ attributeId: AttributeIds.Value
14
+ }, 0),
15
+ catch: (cause) => serviceError({
16
+ operation: "read",
17
+ nodeId,
18
+ cause
19
+ })
20
+ });
21
+ const readVariable = (session, def, structureRuntime) => Effect.gen(function* () {
22
+ if (Codec.requiresStructureRuntime(def.codec)) yield* structureRuntime.ensureInitialized();
23
+ return yield* sampleFromDataValue(def, yield* readDataValue(session, def.nodeId).pipe(Effect.withSpan("opcua.raw.read", {
24
+ attributes: { "opcua.node_id": def.nodeId },
25
+ kind: "client"
26
+ })), structureRuntime);
27
+ });
28
+ const readPreparedVariables = (session, items, structureRuntime, options) => Effect.gen(function* () {
29
+ if (items.some((item) => Codec.requiresStructureRuntime(item.def.codec))) yield* structureRuntime.ensureInitialized();
30
+ const dataValues = yield* runChunked(items, options, (chunk) => Effect.gen(function* () {
31
+ const readValueIds = chunk.map((item) => ({
32
+ nodeId: item.rawNodeId,
33
+ attributeId: AttributeIds.Value
34
+ }));
35
+ const dataValues$1 = yield* Effect.tryPromise({
36
+ try: () => session.read([...readValueIds], 0),
37
+ catch: (cause) => serviceError({
38
+ operation: "read",
39
+ cause
40
+ })
41
+ }).pipe(Effect.withSpan("opcua.raw.read.batch", {
42
+ attributes: { "opcua.node_count": chunk.length },
43
+ kind: "client"
44
+ }));
45
+ if (dataValues$1.length !== chunk.length) return yield* Effect.fail(serviceError({
46
+ operation: "read",
47
+ cause: `Expected ${chunk.length} DataValues, got ${dataValues$1.length}`
48
+ }));
49
+ return dataValues$1;
50
+ }));
51
+ return yield* Effect.forEach(items, (item, index) => sampleFromDataValue(item.def, dataValues[index], structureRuntime));
52
+ });
53
+ const sampleFromDataValue = (def, dataValue, structureRuntime) => Effect.suspend(() => {
54
+ const base = sampleBase(def.nodeId, dataValue, def.includeRaw ?? false);
55
+ return resultFromStatusAndDecode({
56
+ statusCode: dataValue.statusCode,
57
+ status: base,
58
+ decode: Codec.decode(def.codec, dataValue.value, dataValue, structureRuntime),
59
+ nonGoodStatus: (base$1) => ({
60
+ _tag: "NonGoodStatus",
61
+ ...base$1
62
+ }),
63
+ decodeError: (error, base$1) => ({
64
+ _tag: "DecodeError",
65
+ ...base$1,
66
+ error
67
+ }),
68
+ value: (value) => ({
69
+ _tag: "Value",
70
+ ...base,
71
+ value
72
+ })
73
+ });
74
+ });
75
+ const writeVariable = (session, def, metadata, value, structureRuntime) => Effect.gen(function* () {
76
+ if (Codec.requiresStructureRuntime(def.codec)) yield* structureRuntime.ensureInitialized();
77
+ const variant = yield* Codec.encode(def.codec, value, codecMetadata(metadata), structureRuntime);
78
+ const statusCode = yield* Effect.tryPromise({
79
+ try: () => session.write({
80
+ nodeId: coerceNodeId(def.nodeId),
81
+ attributeId: AttributeIds.Value,
82
+ value: { value: variant }
83
+ }),
84
+ catch: (cause) => serviceError({
85
+ operation: "write",
86
+ nodeId: def.nodeId,
87
+ cause
88
+ })
89
+ }).pipe(Effect.withSpan("opcua.raw.write", {
90
+ attributes: { "opcua.node_id": def.nodeId },
91
+ kind: "client"
92
+ }));
93
+ return writeResult(def.nodeId, statusCode);
94
+ });
95
+ const writePreparedVariables = (session, entries, structureRuntime, options) => Effect.gen(function* () {
96
+ if (entries.some((entry) => Codec.requiresStructureRuntime(entry.def.codec))) yield* structureRuntime.ensureInitialized();
97
+ const statusCodes = yield* runChunked(yield* Effect.forEach(entries, (entry) => encodeWriteValue(entry, structureRuntime)), options, (chunk) => Effect.gen(function* () {
98
+ const statusCodes$1 = yield* Effect.tryPromise({
99
+ try: () => session.write([...chunk]),
100
+ catch: (cause) => serviceError({
101
+ operation: "write",
102
+ cause
103
+ })
104
+ });
105
+ if (statusCodes$1.length !== chunk.length) return yield* Effect.fail(serviceError({
106
+ operation: "write",
107
+ cause: `Expected ${chunk.length} StatusCodes, got ${statusCodes$1.length}`
108
+ }));
109
+ return statusCodes$1;
110
+ }));
111
+ return entries.map((entry, index) => writeResult(entry.def.nodeId, statusCodes[index]));
112
+ });
113
+ const writeResult = (nodeId, statusCode) => isGood(statusCode) ? {
114
+ _tag: "Written",
115
+ nodeId,
116
+ status: normalizeStatusCode(statusCode)
117
+ } : {
118
+ _tag: "NonGoodStatus",
119
+ nodeId,
120
+ status: normalizeStatusCode(statusCode)
121
+ };
122
+ const encodeWriteValue = (entry, structureRuntime) => Effect.gen(function* () {
123
+ const variant = yield* Codec.encode(entry.def.codec, entry.value, codecMetadata(entry.metadata), structureRuntime);
124
+ return {
125
+ nodeId: entry.rawNodeId,
126
+ attributeId: AttributeIds.Value,
127
+ value: { value: variant }
128
+ };
129
+ });
130
+ const accessDeniedError = (nodeId, requestedCapability, accessLevel, userAccessLevel) => {
131
+ const hasNodeAccess = hasAccess(accessLevel, requestedCapability);
132
+ const hasUserAccess = userAccessLevel === void 0 || hasAccess(userAccessLevel, requestedCapability);
133
+ if (!hasNodeAccess || !hasUserAccess) return accessDeniedError$1({
134
+ nodeId,
135
+ requestedCapability,
136
+ accessLevel,
137
+ userAccessLevel
138
+ });
139
+ };
140
+ const variableAccessCapabilities = (access) => {
141
+ switch (access) {
142
+ case "read": return ["read"];
143
+ case "write": return ["write"];
144
+ case "readWrite": return ["read", "write"];
145
+ }
146
+ };
147
+ const hasAccess = (accessLevel, capability) => {
148
+ return (accessLevel & (capability === "read" ? AccessLevelFlag.CurrentRead : AccessLevelFlag.CurrentWrite)) !== 0;
149
+ };
150
+ const variableMetadataFromRaw = (input) => ({
151
+ nodeId: input.nodeId,
152
+ declaredDataType: normalizeNodeId(input.dataTypeNodeId),
153
+ builtInDataType: DataType[input.builtInDataType] ?? String(input.builtInDataType),
154
+ valueRank: input.valueRank,
155
+ arrayDimensions: input.arrayDimensions,
156
+ accessLevel: input.accessLevel,
157
+ userAccessLevel: input.userAccessLevel,
158
+ access: {
159
+ readable: hasAccess(input.accessLevel, "read"),
160
+ writable: hasAccess(input.accessLevel, "write"),
161
+ userReadable: input.userAccessLevel === void 0 || hasAccess(input.userAccessLevel, "read"),
162
+ userWritable: input.userAccessLevel === void 0 || hasAccess(input.userAccessLevel, "write")
163
+ },
164
+ unsafeRaw: {
165
+ declaredDataType: input.dataTypeNodeId,
166
+ builtInDataType: input.builtInDataType
167
+ }
168
+ });
169
+ const codecMetadata = (metadata) => ({
170
+ nodeId: metadata.nodeId,
171
+ valueRank: metadata.valueRank,
172
+ arrayDimensions: metadata.arrayDimensions,
173
+ raw: {
174
+ declaredDataType: metadata.unsafeRaw.declaredDataType,
175
+ builtInDataType: metadata.unsafeRaw.builtInDataType
176
+ }
177
+ });
178
+ const sampleBase = (nodeId, dataValue, includeRaw) => ({
179
+ nodeId,
180
+ status: normalizeStatusCode(dataValue.statusCode),
181
+ sourceTimestamp: normalizeTimestamp(dataValue.sourceTimestamp),
182
+ serverTimestamp: normalizeTimestamp(dataValue.serverTimestamp),
183
+ variant: dataValue.value ? normalizeVariantInfo(dataValue.value) : void 0,
184
+ unsafeRaw: includeRaw ? {
185
+ dataValue,
186
+ variant: dataValue.value
187
+ } : void 0
188
+ });
189
+
190
+ //#endregion
191
+ export { accessDeniedError, codecMetadata, hasAccess, readDataValue, readPreparedVariables, readVariable, sampleFromDataValue, variableAccessCapabilities, variableMetadataFromRaw, writePreparedVariables, writeResult, writeVariable };
192
+ //# sourceMappingURL=operations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.mjs","names":["readValueIds: ReadonlyArray<ReadValueIdOptions>","dataValues","base","statusCodes","makeAccessDeniedError"],"sources":["../../../src/internal/variable/operations.ts"],"sourcesContent":["import {\n AccessLevelFlag,\n AttributeIds,\n DataType,\n NodeId,\n coerceNodeId,\n type ClientSession,\n type DataValue,\n type ReadValueIdOptions,\n type StatusCode,\n type WriteValueOptions,\n} from \"node-opcua\";\nimport { Effect } from \"effect\";\n\nimport { runChunked, type BatchOptions } from \"../batch/chunk.js\";\nimport type { NodeIdString, VariableCapability } from \"../common/node-id.js\";\nimport { Codec, type OpcuaCodec } from \"../values/codec.js\";\nimport {\n accessDeniedError as makeAccessDeniedError,\n serviceError,\n type OpcuaEncodeError,\n type OpcuaServiceError,\n} from \"../../OpcuaError.js\";\nimport {\n isGood,\n normalizeNodeId,\n normalizeStatusCode,\n normalizeTimestamp,\n normalizeVariantInfo,\n} from \"../values/normalize.js\";\nimport { resultFromStatusAndDecode } from \"../values/result.js\";\nimport type { OpcuaStructureRuntime } from \"../structures/runtime.js\";\nimport type {\n ReadResult,\n ReadableVariableDef,\n ValueOfVariableDef,\n VariableAccess,\n VariableDef,\n VariableMetadata,\n WritableVariableDef,\n WriteResult,\n} from \"../../OpcuaVariable.js\";\n\nexport const readDataValue = (session: ClientSession, nodeId: NodeIdString) =>\n Effect.tryPromise({\n try: () =>\n session.read(\n {\n nodeId: coerceNodeId(nodeId),\n attributeId: AttributeIds.Value,\n },\n 0,\n ),\n catch: (cause) => serviceError({ operation: \"read\", nodeId, cause }),\n });\n\nexport const readVariable = <const Id extends string, A>(\n session: ClientSession,\n def:\n | VariableDef<Id, A, \"read\" | \"readWrite\">\n | VariableDef<Id, A, VariableAccess>,\n structureRuntime: OpcuaStructureRuntime,\n) =>\n Effect.gen(function* () {\n if (Codec.requiresStructureRuntime(def.codec)) {\n yield* structureRuntime.ensureInitialized();\n }\n const dataValue = yield* readDataValue(session, def.nodeId).pipe(\n Effect.withSpan(\"opcua.raw.read\", {\n attributes: { \"opcua.node_id\": def.nodeId },\n kind: \"client\",\n }),\n );\n return yield* sampleFromDataValue(def, dataValue, structureRuntime);\n });\n\nexport type PreparedReadVariable<\n Def extends ReadableVariableDef = ReadableVariableDef,\n> = {\n readonly def: Def;\n readonly rawNodeId: NodeId;\n};\n\nexport const readPreparedVariables = (\n session: ClientSession,\n items: ReadonlyArray<PreparedReadVariable>,\n structureRuntime: OpcuaStructureRuntime,\n options?: BatchOptions,\n) =>\n Effect.gen(function* () {\n if (items.some((item) => Codec.requiresStructureRuntime(item.def.codec))) {\n yield* structureRuntime.ensureInitialized();\n }\n const dataValues = yield* runChunked(items, options, (chunk) =>\n Effect.gen(function* () {\n const readValueIds: ReadonlyArray<ReadValueIdOptions> = chunk.map(\n (item) => ({\n nodeId: item.rawNodeId,\n attributeId: AttributeIds.Value,\n }),\n );\n const dataValues = yield* Effect.tryPromise({\n try: () => session.read([...readValueIds], 0),\n catch: (cause) =>\n serviceError({\n operation: \"read\",\n cause,\n }),\n }).pipe(\n Effect.withSpan(\"opcua.raw.read.batch\", {\n attributes: { \"opcua.node_count\": chunk.length },\n kind: \"client\",\n }),\n );\n if (dataValues.length !== chunk.length) {\n return yield* Effect.fail(\n serviceError({\n operation: \"read\",\n cause: `Expected ${chunk.length} DataValues, got ${dataValues.length}`,\n }),\n );\n }\n return dataValues;\n }),\n );\n return yield* Effect.forEach(items, (item, index) =>\n sampleFromDataValue(item.def, dataValues[index]!, structureRuntime),\n );\n });\n\nexport const sampleFromDataValue = <const Id extends string, A>(\n def: VariableDef<Id, A, VariableAccess>,\n dataValue: DataValue,\n structureRuntime: OpcuaStructureRuntime,\n) =>\n Effect.suspend(() => {\n const base = sampleBase(def.nodeId, dataValue, def.includeRaw ?? false);\n return resultFromStatusAndDecode<A, typeof base, ReadResult<A, Id>>({\n statusCode: dataValue.statusCode,\n status: base,\n decode: Codec.decode(\n def.codec,\n dataValue.value,\n dataValue,\n structureRuntime,\n ),\n nonGoodStatus: (base) =>\n ({ _tag: \"NonGoodStatus\", ...base }) as ReadResult<A, Id>,\n decodeError: (error, base) =>\n ({ _tag: \"DecodeError\", ...base, error }) as ReadResult<A, Id>,\n value: (value) =>\n ({\n _tag: \"Value\",\n ...base,\n value: value as unknown as A,\n }) as ReadResult<A, Id>,\n });\n });\n\nexport const writeVariable = <const Id extends string, A>(\n session: ClientSession,\n def: VariableDef<Id, A, VariableAccess>,\n metadata: VariableMetadata,\n value: A,\n structureRuntime: OpcuaStructureRuntime,\n) =>\n Effect.gen(function* () {\n if (Codec.requiresStructureRuntime(def.codec)) {\n yield* structureRuntime.ensureInitialized();\n }\n const variant = yield* Codec.encode(\n def.codec as OpcuaCodec<unknown>,\n value as unknown,\n codecMetadata(metadata),\n structureRuntime,\n );\n const statusCode = yield* Effect.tryPromise({\n try: () =>\n session.write({\n nodeId: coerceNodeId(def.nodeId),\n attributeId: AttributeIds.Value,\n value: { value: variant },\n }),\n catch: (cause) =>\n serviceError({\n operation: \"write\",\n nodeId: def.nodeId,\n cause,\n }),\n }).pipe(\n Effect.withSpan(\"opcua.raw.write\", {\n attributes: { \"opcua.node_id\": def.nodeId },\n kind: \"client\",\n }),\n );\n return writeResult(def.nodeId, statusCode);\n });\n\nexport type PreparedWriteVariable<\n Def extends WritableVariableDef = WritableVariableDef,\n> = {\n readonly def: Def;\n readonly metadata: VariableMetadata;\n readonly value: ValueOfVariableDef<Def>;\n readonly rawNodeId: NodeId;\n};\n\nexport const writePreparedVariables = (\n session: ClientSession,\n entries: ReadonlyArray<PreparedWriteVariable>,\n structureRuntime: OpcuaStructureRuntime,\n options?: BatchOptions,\n) =>\n Effect.gen(function* () {\n if (\n entries.some((entry) => Codec.requiresStructureRuntime(entry.def.codec))\n ) {\n yield* structureRuntime.ensureInitialized();\n }\n const writeValues = yield* Effect.forEach(entries, (entry) =>\n encodeWriteValue(entry, structureRuntime),\n );\n const statusCodes = yield* runChunked(writeValues, options, (chunk) =>\n Effect.gen(function* () {\n const statusCodes = yield* Effect.tryPromise({\n try: () => session.write([...chunk]),\n catch: (cause) =>\n serviceError({\n operation: \"write\",\n cause,\n }),\n });\n if (statusCodes.length !== chunk.length) {\n return yield* Effect.fail(\n serviceError({\n operation: \"write\",\n cause: `Expected ${chunk.length} StatusCodes, got ${statusCodes.length}`,\n }),\n );\n }\n return statusCodes;\n }),\n );\n return entries.map((entry, index) =>\n writeResult(entry.def.nodeId, statusCodes[index]!),\n );\n });\n\nexport const writeResult = <Id extends string>(\n nodeId: Id,\n statusCode: StatusCode,\n): WriteResult<Id> =>\n isGood(statusCode)\n ? { _tag: \"Written\", nodeId, status: normalizeStatusCode(statusCode) }\n : {\n _tag: \"NonGoodStatus\",\n nodeId,\n status: normalizeStatusCode(statusCode),\n };\n\nconst encodeWriteValue = (\n entry: PreparedWriteVariable,\n structureRuntime: OpcuaStructureRuntime,\n): Effect.Effect<WriteValueOptions, OpcuaEncodeError | OpcuaServiceError> =>\n Effect.gen(function* () {\n const variant = yield* Codec.encode(\n entry.def.codec as OpcuaCodec<unknown>,\n entry.value as unknown,\n codecMetadata(entry.metadata),\n structureRuntime,\n );\n return {\n nodeId: entry.rawNodeId,\n attributeId: AttributeIds.Value,\n value: { value: variant },\n };\n });\n\nexport const accessDeniedError = (\n nodeId: NodeIdString,\n requestedCapability: VariableCapability,\n accessLevel: number,\n userAccessLevel?: number,\n) => {\n const hasNodeAccess = hasAccess(accessLevel, requestedCapability);\n const hasUserAccess =\n userAccessLevel === undefined ||\n hasAccess(userAccessLevel, requestedCapability);\n if (!hasNodeAccess || !hasUserAccess) {\n return makeAccessDeniedError({\n nodeId,\n requestedCapability,\n accessLevel,\n userAccessLevel,\n });\n }\n return undefined;\n};\n\nexport const variableAccessCapabilities = (\n access: VariableAccess,\n): ReadonlyArray<VariableCapability> => {\n switch (access) {\n case \"read\":\n return [\"read\"];\n case \"write\":\n return [\"write\"];\n case \"readWrite\":\n return [\"read\", \"write\"];\n }\n};\n\nexport const hasAccess = (\n accessLevel: number,\n capability: VariableCapability,\n) => {\n const flag =\n capability === \"read\"\n ? AccessLevelFlag.CurrentRead\n : AccessLevelFlag.CurrentWrite;\n return (accessLevel & flag) !== 0;\n};\n\nexport const variableMetadataFromRaw = (input: {\n readonly nodeId: NodeIdString;\n readonly dataTypeNodeId: NodeId;\n readonly builtInDataType: DataType;\n readonly valueRank: number;\n readonly arrayDimensions?: ReadonlyArray<number>;\n readonly accessLevel: number;\n readonly userAccessLevel?: number;\n}): VariableMetadata => ({\n nodeId: input.nodeId,\n declaredDataType: normalizeNodeId(input.dataTypeNodeId),\n builtInDataType:\n DataType[input.builtInDataType] ?? String(input.builtInDataType),\n valueRank: input.valueRank,\n arrayDimensions: input.arrayDimensions,\n accessLevel: input.accessLevel,\n userAccessLevel: input.userAccessLevel,\n access: {\n readable: hasAccess(input.accessLevel, \"read\"),\n writable: hasAccess(input.accessLevel, \"write\"),\n userReadable:\n input.userAccessLevel === undefined ||\n hasAccess(input.userAccessLevel, \"read\"),\n userWritable:\n input.userAccessLevel === undefined ||\n hasAccess(input.userAccessLevel, \"write\"),\n },\n unsafeRaw: {\n declaredDataType: input.dataTypeNodeId,\n builtInDataType: input.builtInDataType,\n },\n});\n\nexport const codecMetadata = (metadata: VariableMetadata) => ({\n nodeId: metadata.nodeId,\n valueRank: metadata.valueRank,\n arrayDimensions: metadata.arrayDimensions,\n raw: {\n declaredDataType: metadata.unsafeRaw.declaredDataType,\n builtInDataType: metadata.unsafeRaw.builtInDataType,\n },\n});\n\nconst sampleBase = <Id extends string>(\n nodeId: Id,\n dataValue: DataValue,\n includeRaw: boolean,\n) => ({\n nodeId,\n status: normalizeStatusCode(dataValue.statusCode),\n sourceTimestamp: normalizeTimestamp(dataValue.sourceTimestamp),\n serverTimestamp: normalizeTimestamp(dataValue.serverTimestamp),\n variant: dataValue.value ? normalizeVariantInfo(dataValue.value) : undefined,\n unsafeRaw: includeRaw\n ? {\n dataValue,\n variant: dataValue.value,\n }\n : undefined,\n});\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { AccessLevelFlag, Argument, AttributeIds, BrowseDirection, BrowseResult, ClientMonitoredItemGroup, ClientSession, ClientSubscription, DataType, DataValue, ExpandedNodeId, NodeClass, NodeClassMask, NodeId, OPCUAClient, OPCUAClientOptions, ReadValueIdOptions, ReferenceDescription, ResultMask, StatusCode, StatusCodes, TimestampsToReturn, UserIdentityInfo, UserTokenType, Variant, VariantArrayType, coerceNodeId, makeNodeClassMask, makeResultMask } from "node-opcua";
2
+ export { AccessLevelFlag, type Argument, AttributeIds, BrowseDirection, type BrowseResult, type ClientMonitoredItemGroup, type ClientSession, type ClientSubscription, DataType, type DataValue, type ExpandedNodeId, NodeClass, NodeClassMask, type NodeId, type OPCUAClient, type OPCUAClientOptions, type ReadValueIdOptions, type ReferenceDescription, ResultMask, type StatusCode, StatusCodes, TimestampsToReturn, type UserIdentityInfo, UserTokenType, Variant, VariantArrayType, coerceNodeId, makeNodeClassMask, makeResultMask };
@@ -0,0 +1,3 @@
1
+ import { AccessLevelFlag, AttributeIds, BrowseDirection, DataType, NodeClass, NodeClassMask, ResultMask, StatusCodes, TimestampsToReturn, UserTokenType, Variant, VariantArrayType, coerceNodeId, makeNodeClassMask, makeResultMask } from "node-opcua";
2
+
3
+ export { AccessLevelFlag, AttributeIds, BrowseDirection, DataType, NodeClass, NodeClassMask, ResultMask, StatusCodes, TimestampsToReturn, UserTokenType, Variant, VariantArrayType, coerceNodeId, makeNodeClassMask, makeResultMask };
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@effect-opcua/client",
3
+ "version": "0.1.0-alpha.1",
4
+ "description": "Effect-native OPC-UA client wrapper for node-opcua",
5
+ "license": "Apache-2.0",
6
+ "sideEffects": false,
7
+ "type": "module",
8
+ "files": [
9
+ "LICENSE",
10
+ "README.md",
11
+ "dist",
12
+ "package.json"
13
+ ],
14
+ "engines": {
15
+ "node": ">=22"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/bastikohn/effect-opcua.git",
20
+ "directory": "packages/client"
21
+ },
22
+ "bugs": {
23
+ "url": "https://github.com/bastikohn/effect-opcua/issues"
24
+ },
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/index.d.mts",
31
+ "default": "./dist/index.mjs"
32
+ },
33
+ "./node-opcua": {
34
+ "types": "./dist/node-opcua.d.mts",
35
+ "default": "./dist/node-opcua.mjs"
36
+ },
37
+ "./package.json": "./package.json",
38
+ "./internal/*": null
39
+ },
40
+ "main": "./dist/index.mjs",
41
+ "module": "./dist/index.mjs",
42
+ "types": "./dist/index.d.mts",
43
+ "scripts": {
44
+ "build": "tsdown --config-loader unrun",
45
+ "dev": "tsdown --watch --config-loader unrun",
46
+ "typecheck": "tsc --noEmit --project tsconfig.json",
47
+ "test": "vitest run --passWithNoTests",
48
+ "clean": "rm -rf dist coverage node_modules"
49
+ },
50
+ "peerDependencies": {
51
+ "effect": "4.0.0-beta.79"
52
+ },
53
+ "dependencies": {
54
+ "node-opcua": "^2.170.0"
55
+ },
56
+ "devDependencies": {}
57
+ }