@fatagnus/dink-sdk 1.0.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.
Files changed (51) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +95 -0
  3. package/dist/center/client.d.ts +17 -0
  4. package/dist/center/client.d.ts.map +1 -0
  5. package/dist/center/client.js +147 -0
  6. package/dist/center/client.js.map +1 -0
  7. package/dist/center/index.d.ts +2 -0
  8. package/dist/center/index.d.ts.map +1 -0
  9. package/dist/center/index.js +2 -0
  10. package/dist/center/index.js.map +1 -0
  11. package/dist/edge/client.d.ts +25 -0
  12. package/dist/edge/client.d.ts.map +1 -0
  13. package/dist/edge/client.js +201 -0
  14. package/dist/edge/client.js.map +1 -0
  15. package/dist/edge/index.d.ts +2 -0
  16. package/dist/edge/index.d.ts.map +1 -0
  17. package/dist/edge/index.js +2 -0
  18. package/dist/edge/index.js.map +1 -0
  19. package/dist/generated/index.d.ts +8 -0
  20. package/dist/generated/index.d.ts.map +1 -0
  21. package/dist/generated/index.js +7 -0
  22. package/dist/generated/index.js.map +1 -0
  23. package/dist/generated/jobservice.client.d.ts +19 -0
  24. package/dist/generated/jobservice.client.d.ts.map +1 -0
  25. package/dist/generated/jobservice.client.js +39 -0
  26. package/dist/generated/jobservice.client.js.map +1 -0
  27. package/dist/generated/jobservice.handler.d.ts +21 -0
  28. package/dist/generated/jobservice.handler.d.ts.map +1 -0
  29. package/dist/generated/jobservice.handler.js +62 -0
  30. package/dist/generated/jobservice.handler.js.map +1 -0
  31. package/dist/generated/sensorservice.client.d.ts +17 -0
  32. package/dist/generated/sensorservice.client.d.ts.map +1 -0
  33. package/dist/generated/sensorservice.client.js +31 -0
  34. package/dist/generated/sensorservice.client.js.map +1 -0
  35. package/dist/generated/sensorservice.handler.d.ts +17 -0
  36. package/dist/generated/sensorservice.handler.d.ts.map +1 -0
  37. package/dist/generated/sensorservice.handler.js +53 -0
  38. package/dist/generated/sensorservice.handler.js.map +1 -0
  39. package/dist/generated/types.d.ts +99 -0
  40. package/dist/generated/types.d.ts.map +1 -0
  41. package/dist/generated/types.js +12 -0
  42. package/dist/generated/types.js.map +1 -0
  43. package/dist/index.d.ts +4 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +4 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/types.d.ts +55 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +2 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +78 -0
@@ -0,0 +1,201 @@
1
+ import { connect, StringCodec, headers } from 'nats';
2
+ const sc = StringCodec();
3
+ export class EdgeClient {
4
+ config;
5
+ nc = null;
6
+ services = new Map();
7
+ heartbeatTimer = null;
8
+ appId;
9
+ constructor(config) {
10
+ this.config = {
11
+ heartbeatInterval: 30000,
12
+ reconnectWait: 2000,
13
+ maxReconnects: -1,
14
+ ...config,
15
+ };
16
+ this.appId = config.appId || 'platform';
17
+ }
18
+ async connect() {
19
+ const opts = {
20
+ servers: this.config.serverUrl,
21
+ name: `edge-${this.config.edgeId}`,
22
+ reconnectTimeWait: this.config.reconnectWait,
23
+ maxReconnectAttempts: this.config.maxReconnects,
24
+ };
25
+ if (this.config.apiKey) {
26
+ opts.token = this.config.apiKey;
27
+ }
28
+ this.nc = await connect(opts);
29
+ await this.registerPresence();
30
+ this.startHeartbeat();
31
+ }
32
+ async disconnect() {
33
+ this.stopHeartbeat();
34
+ for (const [name, svc] of this.services) {
35
+ svc.sub.unsubscribe();
36
+ await this.deregisterService(name);
37
+ }
38
+ this.services.clear();
39
+ await this.deregisterPresence();
40
+ if (this.nc) {
41
+ await this.nc.drain();
42
+ this.nc = null;
43
+ }
44
+ }
45
+ async exposeService(handler) {
46
+ if (!this.nc) {
47
+ throw new Error('Not connected');
48
+ }
49
+ const def = handler.definition();
50
+ if (this.services.has(def.name)) {
51
+ throw new Error(`Service ${def.name} already exposed`);
52
+ }
53
+ const subject = `edge.${this.appId}.${this.config.edgeId}.services.${def.name}.>`;
54
+ const sub = this.nc.subscribe(subject, {
55
+ callback: async (err, msg) => {
56
+ if (err) {
57
+ console.error('Service subscription error:', err);
58
+ return;
59
+ }
60
+ const fullMethod = this.extractMethod(msg.subject, def.name);
61
+ // Check if this is a streaming request (ends with .stream)
62
+ if (fullMethod.endsWith('.stream') && handler.handleStream) {
63
+ const method = fullMethod.slice(0, -7); // Remove '.stream' suffix
64
+ await this.handleStreamRequest(handler, method, msg);
65
+ }
66
+ else {
67
+ // Regular request
68
+ try {
69
+ const respData = await handler.handleRequest(fullMethod, msg.data);
70
+ if (msg.reply) {
71
+ msg.respond(respData);
72
+ }
73
+ }
74
+ catch (e) {
75
+ if (msg.reply) {
76
+ const errMsg = e instanceof Error ? e.message : 'Unknown error';
77
+ msg.respond(sc.encode(JSON.stringify({ error: errMsg })));
78
+ }
79
+ }
80
+ }
81
+ },
82
+ });
83
+ this.services.set(def.name, { handler, sub });
84
+ await this.registerService(def);
85
+ }
86
+ async handleStreamRequest(handler, method, msg) {
87
+ if (!this.nc || !handler.handleStream) {
88
+ if (msg.reply) {
89
+ msg.respond(sc.encode(JSON.stringify({ error: 'Streaming not supported' })));
90
+ }
91
+ return;
92
+ }
93
+ try {
94
+ // Parse the stream request to get reply subject and data
95
+ const reqData = JSON.parse(sc.decode(msg.data));
96
+ const replySubject = reqData.reply_subject;
97
+ const requestData = sc.encode(JSON.stringify(reqData.data));
98
+ // Acknowledge the stream request
99
+ if (msg.reply) {
100
+ msg.respond(sc.encode(JSON.stringify({ status: 'streaming' })));
101
+ }
102
+ // Create emit function that publishes to the reply subject
103
+ const nc = this.nc;
104
+ const emit = async (data) => {
105
+ nc.publish(replySubject, data);
106
+ };
107
+ // Call the stream handler
108
+ await handler.handleStream(method, requestData, emit);
109
+ // Send done signal
110
+ nc.publish(`${replySubject}.done`, sc.encode('{}'));
111
+ }
112
+ catch (e) {
113
+ if (msg.reply) {
114
+ const errMsg = e instanceof Error ? e.message : 'Unknown error';
115
+ msg.respond(sc.encode(JSON.stringify({ error: errMsg })));
116
+ }
117
+ }
118
+ }
119
+ async unexposeService(name) {
120
+ const svc = this.services.get(name);
121
+ if (!svc) {
122
+ throw new Error(`Service ${name} not found`);
123
+ }
124
+ svc.sub.unsubscribe();
125
+ await this.deregisterService(name);
126
+ this.services.delete(name);
127
+ }
128
+ isConnected() {
129
+ return this.nc !== null && !this.nc.isClosed();
130
+ }
131
+ extractMethod(subject, serviceName) {
132
+ const prefix = `edge.${this.appId}.${this.config.edgeId}.services.${serviceName}.`;
133
+ if (subject.startsWith(prefix)) {
134
+ return subject.slice(prefix.length);
135
+ }
136
+ return '';
137
+ }
138
+ async registerPresence() {
139
+ if (!this.nc)
140
+ return;
141
+ const req = {
142
+ edge_id: this.config.edgeId,
143
+ name: this.config.edgeName || this.config.edgeId,
144
+ type: 'lite',
145
+ labels: this.config.labels || {},
146
+ };
147
+ await this.nc.request('$EDGE.PRESENCE.REGISTER', sc.encode(JSON.stringify(req)), { timeout: 5000, headers: this.getAuthHeaders() }).catch(() => { });
148
+ }
149
+ async deregisterPresence() {
150
+ if (!this.nc)
151
+ return;
152
+ const req = { edge_id: this.config.edgeId };
153
+ await this.nc.request('$EDGE.PRESENCE.DEREGISTER', sc.encode(JSON.stringify(req)), { timeout: 2000, headers: this.getAuthHeaders() }).catch(() => { });
154
+ }
155
+ async registerService(def) {
156
+ if (!this.nc)
157
+ return;
158
+ const req = {
159
+ name: def.name,
160
+ version: def.version,
161
+ location: 'edge',
162
+ edge_id: this.config.edgeId,
163
+ };
164
+ await this.nc.request('$API.SERVICES.REGISTER', sc.encode(JSON.stringify(req)), { timeout: 5000, headers: this.getAuthHeaders() }).catch(() => { });
165
+ }
166
+ async deregisterService(name) {
167
+ if (!this.nc)
168
+ return;
169
+ const serviceId = `${this.config.edgeId}.${name}`;
170
+ const req = { service_id: serviceId };
171
+ await this.nc.request('$API.SERVICES.DEREGISTER', sc.encode(JSON.stringify(req)), { timeout: 2000, headers: this.getAuthHeaders() }).catch(() => { });
172
+ }
173
+ startHeartbeat() {
174
+ if (this.heartbeatTimer)
175
+ return;
176
+ this.heartbeatTimer = setInterval(() => {
177
+ this.sendHeartbeat();
178
+ }, this.config.heartbeatInterval);
179
+ }
180
+ stopHeartbeat() {
181
+ if (this.heartbeatTimer) {
182
+ clearInterval(this.heartbeatTimer);
183
+ this.heartbeatTimer = null;
184
+ }
185
+ }
186
+ sendHeartbeat() {
187
+ if (!this.nc)
188
+ return;
189
+ const req = { edge_id: this.config.edgeId };
190
+ this.nc.publish('$EDGE.PRESENCE.HEARTBEAT', sc.encode(JSON.stringify(req)), { headers: this.getAuthHeaders() });
191
+ }
192
+ getAuthHeaders() {
193
+ if (!this.config.apiKey) {
194
+ return undefined;
195
+ }
196
+ const h = headers();
197
+ h.set('Authorization', `Bearer ${this.config.apiKey}`);
198
+ return h;
199
+ }
200
+ }
201
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/edge/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { EdgeClient } from './client.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/edge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { EdgeClient } from './client.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/edge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ export * from './types.js';
2
+ export { JobServiceClient, JobServiceDefinition } from './jobservice.client.js';
3
+ export { JobServiceHandler } from './jobservice.handler.js';
4
+ export type { JobServiceServer } from './jobservice.handler.js';
5
+ export { SensorServiceClient, SensorServiceDefinition } from './sensorservice.client.js';
6
+ export { SensorServiceHandler } from './sensorservice.handler.js';
7
+ export type { SensorServiceServer } from './sensorservice.handler.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":"AAEA,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,7 @@
1
+ // Code generated by dink codegen. DO NOT EDIT.
2
+ export * from './types.js';
3
+ export { JobServiceClient, JobServiceDefinition } from './jobservice.client.js';
4
+ export { JobServiceHandler } from './jobservice.handler.js';
5
+ export { SensorServiceClient, SensorServiceDefinition } from './sensorservice.client.js';
6
+ export { SensorServiceHandler } from './sensorservice.handler.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ServiceCaller, Subscription } from '../types.js';
2
+ import type { JobStartRequest, JobStartResponse, JobStatusRequest, JobStatusResponse, JobCancelRequest, JobCancelResponse, JobLogsRequest, JobLogLine, JobProgressRequest, JobProgress } from './types.js';
3
+ export declare class JobServiceClient {
4
+ private edgeId;
5
+ private caller;
6
+ constructor(edgeId: string, caller: ServiceCaller);
7
+ getEdgeId(): string;
8
+ Start(req: JobStartRequest): Promise<JobStartResponse>;
9
+ Status(req: JobStatusRequest): Promise<JobStatusResponse>;
10
+ Cancel(req: JobCancelRequest): Promise<JobCancelResponse>;
11
+ StreamLogs(req: JobLogsRequest, handler: (resp: JobLogLine) => void): Promise<Subscription>;
12
+ StreamProgress(req: JobProgressRequest, handler: (resp: JobProgress) => void): Promise<Subscription>;
13
+ }
14
+ export declare const JobServiceDefinition: {
15
+ name: string;
16
+ version: string;
17
+ methods: string[];
18
+ };
19
+ //# sourceMappingURL=jobservice.client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobservice.client.d.ts","sourceRoot":"","sources":["../../src/generated/jobservice.client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3M,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;IAKjD,SAAS,IAAI,MAAM;IAKb,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUtD,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAUzD,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAUzD,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAW3F,cAAc,CAAC,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;CAW3G;AAED,eAAO,MAAM,oBAAoB;;;;CAUhC,CAAC"}
@@ -0,0 +1,39 @@
1
+ // Code generated by dink codegen. DO NOT EDIT.
2
+ export class JobServiceClient {
3
+ edgeId;
4
+ caller;
5
+ constructor(edgeId, caller) {
6
+ this.edgeId = edgeId;
7
+ this.caller = caller;
8
+ }
9
+ getEdgeId() {
10
+ return this.edgeId;
11
+ }
12
+ async Start(req) {
13
+ return this.caller.call(this.edgeId, 'JobService', 'Start', req);
14
+ }
15
+ async Status(req) {
16
+ return this.caller.call(this.edgeId, 'JobService', 'Status', req);
17
+ }
18
+ async Cancel(req) {
19
+ return this.caller.call(this.edgeId, 'JobService', 'Cancel', req);
20
+ }
21
+ async StreamLogs(req, handler) {
22
+ return this.caller.subscribe(this.edgeId, 'JobService', 'StreamLogs', req, handler);
23
+ }
24
+ async StreamProgress(req, handler) {
25
+ return this.caller.subscribe(this.edgeId, 'JobService', 'StreamProgress', req, handler);
26
+ }
27
+ }
28
+ export const JobServiceDefinition = {
29
+ name: 'JobService',
30
+ version: '1.0.0',
31
+ methods: [
32
+ 'Start',
33
+ 'Status',
34
+ 'Cancel',
35
+ 'StreamLogs',
36
+ 'StreamProgress',
37
+ ],
38
+ };
39
+ //# sourceMappingURL=jobservice.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobservice.client.js","sourceRoot":"","sources":["../../src/generated/jobservice.client.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAK/C,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAS;IACf,MAAM,CAAgB;IAE9B,YAAY,MAAc,EAAE,MAAqB;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAGD,KAAK,CAAC,KAAK,CAAC,GAAoB;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,OAAO,EACP,GAAG,CACJ,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,MAAM,CAAC,GAAqB;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,QAAQ,EACR,GAAG,CACJ,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,MAAM,CAAC,GAAqB;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,QAAQ,EACR,GAAG,CACJ,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,UAAU,CAAC,GAAmB,EAAE,OAAmC;QACvE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAC1B,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,YAAY,EACZ,GAAG,EACH,OAAO,CACR,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,cAAc,CAAC,GAAuB,EAAE,OAAoC;QAChF,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAC1B,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,gBAAgB,EAChB,GAAG,EACH,OAAO,CACR,CAAC;IACJ,CAAC;CAGF;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE;QACP,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,YAAY;QACZ,gBAAgB;KACjB;CACF,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { ServiceHandler, ServiceDefinition } from '../types.js';
2
+ import type { JobStartRequest, JobStartResponse, JobStatusRequest, JobStatusResponse, JobCancelRequest, JobCancelResponse, JobLogsRequest, JobLogLine, JobProgressRequest, JobProgress } from './types.js';
3
+ export interface JobServiceServer {
4
+ Start(req: JobStartRequest): Promise<JobStartResponse>;
5
+ Status(req: JobStatusRequest): Promise<JobStatusResponse>;
6
+ Cancel(req: JobCancelRequest): Promise<JobCancelResponse>;
7
+ StreamLogs(req: JobLogsRequest, stream: {
8
+ send: (msg: JobLogLine) => Promise<void>;
9
+ }): Promise<void>;
10
+ StreamProgress(req: JobProgressRequest, stream: {
11
+ send: (msg: JobProgress) => Promise<void>;
12
+ }): Promise<void>;
13
+ }
14
+ export declare class JobServiceHandler implements ServiceHandler {
15
+ private impl;
16
+ constructor(impl: JobServiceServer);
17
+ definition(): ServiceDefinition;
18
+ handleRequest(method: string, data: Uint8Array): Promise<Uint8Array>;
19
+ handleStream(method: string, data: Uint8Array, emit: (data: Uint8Array) => Promise<void>): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=jobservice.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobservice.handler.d.ts","sourceRoot":"","sources":["../../src/generated/jobservice.handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3M,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1D,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrG,cAAc,CAAC,GAAG,EAAE,kBAAkB,EAAE,MAAM,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/G;AAED,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,IAAI,CAAmB;gBAEnB,IAAI,EAAE,gBAAgB;IAIlC,UAAU,IAAI,iBAAiB;IAczB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAuBpE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB/G"}
@@ -0,0 +1,62 @@
1
+ // Code generated by dink codegen. DO NOT EDIT.
2
+ export class JobServiceHandler {
3
+ impl;
4
+ constructor(impl) {
5
+ this.impl = impl;
6
+ }
7
+ definition() {
8
+ return {
9
+ name: 'JobService',
10
+ version: '1.0.0',
11
+ methods: [
12
+ 'Start',
13
+ 'Status',
14
+ 'Cancel',
15
+ 'StreamLogs',
16
+ 'StreamProgress',
17
+ ],
18
+ };
19
+ }
20
+ async handleRequest(method, data) {
21
+ const decoder = new TextDecoder();
22
+ const encoder = new TextEncoder();
23
+ const req = data.length > 0 ? JSON.parse(decoder.decode(data)) : {};
24
+ switch (method) {
25
+ case 'Start': {
26
+ const resp = await this.impl.Start(req);
27
+ return encoder.encode(JSON.stringify(resp));
28
+ }
29
+ case 'Status': {
30
+ const resp = await this.impl.Status(req);
31
+ return encoder.encode(JSON.stringify(resp));
32
+ }
33
+ case 'Cancel': {
34
+ const resp = await this.impl.Cancel(req);
35
+ return encoder.encode(JSON.stringify(resp));
36
+ }
37
+ default:
38
+ throw new Error(`Unknown method: ${method}`);
39
+ }
40
+ }
41
+ async handleStream(method, data, emit) {
42
+ const decoder = new TextDecoder();
43
+ const encoder = new TextEncoder();
44
+ const req = data.length > 0 ? JSON.parse(decoder.decode(data)) : {};
45
+ const stream = {
46
+ send: async (msg) => {
47
+ await emit(encoder.encode(JSON.stringify(msg)));
48
+ },
49
+ };
50
+ switch (method) {
51
+ case 'StreamLogs':
52
+ await this.impl.StreamLogs(req, stream);
53
+ break;
54
+ case 'StreamProgress':
55
+ await this.impl.StreamProgress(req, stream);
56
+ break;
57
+ default:
58
+ throw new Error(`Unknown streaming method: ${method}`);
59
+ }
60
+ }
61
+ }
62
+ //# sourceMappingURL=jobservice.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobservice.handler.js","sourceRoot":"","sources":["../../src/generated/jobservice.handler.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAa/C,MAAM,OAAO,iBAAiB;IACpB,IAAI,CAAmB;IAE/B,YAAY,IAAsB;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,UAAU;QACR,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE;gBACP,OAAO;gBACP,QAAQ;gBACR,QAAQ;gBACR,YAAY;gBACZ,gBAAgB;aACjB;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,IAAgB;QAClD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpE,QAAQ,MAAM,EAAE,CAAC;YACjB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAsB,CAAC,CAAC;gBAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAuB,CAAC,CAAC;gBAC7D,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAuB,CAAC,CAAC;gBAC7D,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,IAAgB,EAAE,IAAyC;QAC5F,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpE,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;gBAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;SACF,CAAC;QAEF,QAAQ,MAAM,EAAE,CAAC;YACjB,KAAK,YAAY;gBACf,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAqB,EAAE,MAAM,CAAC,CAAC;gBAC1D,MAAM;YACR,KAAK,gBAAgB;gBACnB,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAyB,EAAE,MAAM,CAAC,CAAC;gBAClE,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { ServiceCaller, Subscription } from '../types.js';
2
+ import type { ReadTemperatureRequest, Temperature, SetpointRequest, SetpointResponse, StreamReadingsRequest } from './types.js';
3
+ export declare class SensorServiceClient {
4
+ private edgeId;
5
+ private caller;
6
+ constructor(edgeId: string, caller: ServiceCaller);
7
+ getEdgeId(): string;
8
+ ReadTemperature(req: ReadTemperatureRequest): Promise<Temperature>;
9
+ SetSetpoint(req: SetpointRequest): Promise<SetpointResponse>;
10
+ StreamReadings(req: StreamReadingsRequest, handler: (resp: Temperature) => void): Promise<Subscription>;
11
+ }
12
+ export declare const SensorServiceDefinition: {
13
+ name: string;
14
+ version: string;
15
+ methods: string[];
16
+ };
17
+ //# sourceMappingURL=sensorservice.client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sensorservice.client.d.ts","sourceRoot":"","sources":["../../src/generated/sensorservice.client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEhI,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;IAKjD,SAAS,IAAI,MAAM;IAKb,eAAe,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC;IAUlE,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAU5D,cAAc,CAAC,GAAG,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;CAW9G;AAED,eAAO,MAAM,uBAAuB;;;;CAQnC,CAAC"}
@@ -0,0 +1,31 @@
1
+ // Code generated by dink codegen. DO NOT EDIT.
2
+ export class SensorServiceClient {
3
+ edgeId;
4
+ caller;
5
+ constructor(edgeId, caller) {
6
+ this.edgeId = edgeId;
7
+ this.caller = caller;
8
+ }
9
+ getEdgeId() {
10
+ return this.edgeId;
11
+ }
12
+ async ReadTemperature(req) {
13
+ return this.caller.call(this.edgeId, 'SensorService', 'ReadTemperature', req);
14
+ }
15
+ async SetSetpoint(req) {
16
+ return this.caller.call(this.edgeId, 'SensorService', 'SetSetpoint', req);
17
+ }
18
+ async StreamReadings(req, handler) {
19
+ return this.caller.subscribe(this.edgeId, 'SensorService', 'StreamReadings', req, handler);
20
+ }
21
+ }
22
+ export const SensorServiceDefinition = {
23
+ name: 'SensorService',
24
+ version: '1.0.0',
25
+ methods: [
26
+ 'ReadTemperature',
27
+ 'SetSetpoint',
28
+ 'StreamReadings',
29
+ ],
30
+ };
31
+ //# sourceMappingURL=sensorservice.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sensorservice.client.js","sourceRoot":"","sources":["../../src/generated/sensorservice.client.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAK/C,MAAM,OAAO,mBAAmB;IACtB,MAAM,CAAS;IACf,MAAM,CAAgB;IAE9B,YAAY,MAAc,EAAE,MAAqB;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAGD,KAAK,CAAC,eAAe,CAAC,GAA2B;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,IAAI,CAAC,MAAM,EACX,eAAe,EACf,iBAAiB,EACjB,GAAG,CACJ,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,WAAW,CAAC,GAAoB;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,IAAI,CAAC,MAAM,EACX,eAAe,EACf,aAAa,EACb,GAAG,CACJ,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,cAAc,CAAC,GAA0B,EAAE,OAAoC;QACnF,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAC1B,IAAI,CAAC,MAAM,EACX,eAAe,EACf,gBAAgB,EAChB,GAAG,EACH,OAAO,CACR,CAAC;IACJ,CAAC;CAGF;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE;QACP,iBAAiB;QACjB,aAAa;QACb,gBAAgB;KACjB;CACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { ServiceHandler, ServiceDefinition } from '../types.js';
2
+ import type { ReadTemperatureRequest, Temperature, SetpointRequest, SetpointResponse, StreamReadingsRequest } from './types.js';
3
+ export interface SensorServiceServer {
4
+ ReadTemperature(req: ReadTemperatureRequest): Promise<Temperature>;
5
+ SetSetpoint(req: SetpointRequest): Promise<SetpointResponse>;
6
+ StreamReadings(req: StreamReadingsRequest, stream: {
7
+ send: (msg: Temperature) => Promise<void>;
8
+ }): Promise<void>;
9
+ }
10
+ export declare class SensorServiceHandler implements ServiceHandler {
11
+ private impl;
12
+ constructor(impl: SensorServiceServer);
13
+ definition(): ServiceDefinition;
14
+ handleRequest(method: string, data: Uint8Array): Promise<Uint8Array>;
15
+ handleStream(method: string, data: Uint8Array, emit: (data: Uint8Array) => Promise<void>): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=sensorservice.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sensorservice.handler.d.ts","sourceRoot":"","sources":["../../src/generated/sensorservice.handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEhI,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACnE,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7D,cAAc,CAAC,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClH;AAED,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,IAAI,CAAsB;gBAEtB,IAAI,EAAE,mBAAmB;IAIrC,UAAU,IAAI,iBAAiB;IAYzB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBpE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAmB/G"}
@@ -0,0 +1,53 @@
1
+ // Code generated by dink codegen. DO NOT EDIT.
2
+ export class SensorServiceHandler {
3
+ impl;
4
+ constructor(impl) {
5
+ this.impl = impl;
6
+ }
7
+ definition() {
8
+ return {
9
+ name: 'SensorService',
10
+ version: '1.0.0',
11
+ methods: [
12
+ 'ReadTemperature',
13
+ 'SetSetpoint',
14
+ 'StreamReadings',
15
+ ],
16
+ };
17
+ }
18
+ async handleRequest(method, data) {
19
+ const decoder = new TextDecoder();
20
+ const encoder = new TextEncoder();
21
+ const req = data.length > 0 ? JSON.parse(decoder.decode(data)) : {};
22
+ switch (method) {
23
+ case 'ReadTemperature': {
24
+ const resp = await this.impl.ReadTemperature(req);
25
+ return encoder.encode(JSON.stringify(resp));
26
+ }
27
+ case 'SetSetpoint': {
28
+ const resp = await this.impl.SetSetpoint(req);
29
+ return encoder.encode(JSON.stringify(resp));
30
+ }
31
+ default:
32
+ throw new Error(`Unknown method: ${method}`);
33
+ }
34
+ }
35
+ async handleStream(method, data, emit) {
36
+ const decoder = new TextDecoder();
37
+ const encoder = new TextEncoder();
38
+ const req = data.length > 0 ? JSON.parse(decoder.decode(data)) : {};
39
+ const stream = {
40
+ send: async (msg) => {
41
+ await emit(encoder.encode(JSON.stringify(msg)));
42
+ },
43
+ };
44
+ switch (method) {
45
+ case 'StreamReadings':
46
+ await this.impl.StreamReadings(req, stream);
47
+ break;
48
+ default:
49
+ throw new Error(`Unknown streaming method: ${method}`);
50
+ }
51
+ }
52
+ }
53
+ //# sourceMappingURL=sensorservice.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sensorservice.handler.js","sourceRoot":"","sources":["../../src/generated/sensorservice.handler.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAW/C,MAAM,OAAO,oBAAoB;IACvB,IAAI,CAAsB;IAElC,YAAY,IAAyB;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,UAAU;QACR,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE;gBACP,iBAAiB;gBACjB,aAAa;gBACb,gBAAgB;aACjB;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,IAAgB;QAClD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpE,QAAQ,MAAM,EAAE,CAAC;YACjB,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAA6B,CAAC,CAAC;gBAC5E,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAsB,CAAC,CAAC;gBACjE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,IAAgB,EAAE,IAAyC;QAC5F,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpE,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;gBAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;SACF,CAAC;QAEF,QAAQ,MAAM,EAAE,CAAC;YACjB,KAAK,gBAAgB;gBACnB,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAA4B,EAAE,MAAM,CAAC,CAAC;gBACrE,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF"}