iosignal 1.4.2 → 1.5.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 (50) hide show
  1. package/README.md +247 -240
  2. package/auth_file.json +13 -13
  3. package/auth_file.mjs +23 -23
  4. package/dist/iosignal.cjs +1 -1
  5. package/dist/iosignal.esm.js.map +1 -1
  6. package/dist/iosignal.min.js.map +1 -1
  7. package/index.js +19 -19
  8. package/indexWebBrowser.js +13 -13
  9. package/package.json +59 -60
  10. package/rollup.config.js +69 -69
  11. package/src/api/RedisAPI.js +68 -68
  12. package/src/api/api_constant.js +7 -7
  13. package/src/api/api_reply.js +34 -34
  14. package/src/api/api_sudo.js +96 -96
  15. package/src/auth/Auth_Env.js +78 -78
  16. package/src/auth/Auth_File.js +75 -75
  17. package/src/auth/Auth_Redis.js +50 -50
  18. package/src/auth/BohoAuth.js +168 -168
  19. package/src/client/CongPacket.js +150 -150
  20. package/src/client/IOCongSocket.js +88 -88
  21. package/src/client/IOCore.js +851 -851
  22. package/src/client/IOWS.js +81 -81
  23. package/src/client/IOWebSocket.js +95 -95
  24. package/src/common/constants.js +159 -159
  25. package/src/common/payload.js +82 -82
  26. package/src/common/quotaTable.js +68 -68
  27. package/src/common/util.js +61 -61
  28. package/src/server/FileLogger.js +30 -30
  29. package/src/server/Manager.js +449 -449
  30. package/src/server/Metric.js +154 -154
  31. package/src/server/Server.js +166 -148
  32. package/src/server/ServerRemote.js +227 -227
  33. package/src/server/ServerRemoteCore.js +467 -467
  34. package/src/server/serverOption.js +56 -55
  35. package/test-browser/favicon.ico +0 -0
  36. package/test-browser/index.html +92 -92
  37. package/test-browser/server.js +11 -11
  38. package/test-client-nodejs/client.cjs +17 -17
  39. package/test-client-nodejs/client.mjs +17 -17
  40. package/test-client-nodejs/client_api_reply.mjs +15 -15
  41. package/test-client-nodejs/stateChange.mjs +19 -19
  42. package/test-server/server-Auth_Env.js +19 -19
  43. package/test-server/server-Auth_File.js +12 -12
  44. package/test-server/server-api_reply.js +6 -6
  45. package/test-server/server-api_sudo.js +7 -7
  46. package/test-server/server-commonjs.cjs +8 -8
  47. package/test-server/server-esm.mjs +19 -19
  48. package/test-server/simple-server.mjs +11 -11
  49. package/test-signal-payloadType/signalPack.js +34 -34
  50. package/test-signal-payloadType/signaling.js +60 -60
package/index.js CHANGED
@@ -1,19 +1,19 @@
1
- export { IOCongSocket } from './src/client/IOCongSocket.js'
2
- export { IOWS as IO } from './src/client/IOWS.js'
3
- export { pack, CongRx } from './src/client/CongPacket.js'
4
- export { Server } from './src/server/Server.js'
5
- export { serverOption } from './src/server/serverOption.js'
6
- export { FileLogger } from './src/server/FileLogger.js'
7
- export * from './src/common/constants.js'
8
-
9
- // boho auth
10
- export * from 'boho'
11
- export { BohoAuth } from './src/auth/BohoAuth.js'
12
- export { Auth_File } from './src/auth/Auth_File.js'
13
- export { Auth_Env } from './src/auth/Auth_Env.js'
14
- export { Auth_Redis } from './src/auth/Auth_Redis.js'
15
-
16
- // api
17
- export * as api_reply from './src/api/api_reply.js'
18
- export * as api_sudo from './src/api/api_sudo.js'
19
- export { RedisAPI } from './src/api/RedisAPI.js'
1
+ export { IOCongSocket } from './src/client/IOCongSocket.js'
2
+ export { IOWS as IO } from './src/client/IOWS.js'
3
+ export { pack, CongRx } from './src/client/CongPacket.js'
4
+ export { Server } from './src/server/Server.js'
5
+ export { serverOption } from './src/server/serverOption.js'
6
+ export { FileLogger } from './src/server/FileLogger.js'
7
+ export * from './src/common/constants.js'
8
+
9
+ // boho auth
10
+ export * from 'boho'
11
+ export { BohoAuth } from './src/auth/BohoAuth.js'
12
+ export { Auth_File } from './src/auth/Auth_File.js'
13
+ export { Auth_Env } from './src/auth/Auth_Env.js'
14
+ export { Auth_Redis } from './src/auth/Auth_Redis.js'
15
+
16
+ // api
17
+ export * as api_reply from './src/api/api_reply.js'
18
+ export * as api_sudo from './src/api/api_sudo.js'
19
+ export { RedisAPI } from './src/api/RedisAPI.js'
@@ -1,13 +1,13 @@
1
- import { IO } from './src/client/IOWebSocket.js'
2
- import { Boho, RAND, MBP, BohoMsg, Meta, MetaSize , sha256, Buffer } from 'boho'
3
-
4
- Boho.RAND = RAND;
5
- Boho.BohoMsg = BohoMsg;
6
- Boho.Meta = Meta;
7
- Boho.MetaSize = MetaSize;
8
- Boho.sha256 = sha256;
9
- IO.Boho = Boho;
10
- IO.MBP = MBP;
11
- IO.Buffer = Buffer;
12
-
13
- export default IO;
1
+ import { IO } from './src/client/IOWebSocket.js'
2
+ import { Boho, RAND, MBP, BohoMsg, Meta, MetaSize , sha256, Buffer } from 'boho'
3
+
4
+ Boho.RAND = RAND;
5
+ Boho.BohoMsg = BohoMsg;
6
+ Boho.Meta = Meta;
7
+ Boho.MetaSize = MetaSize;
8
+ Boho.sha256 = sha256;
9
+ IO.Boho = Boho;
10
+ IO.MBP = MBP;
11
+ IO.Buffer = Buffer;
12
+
13
+ export default IO;
package/package.json CHANGED
@@ -1,60 +1,59 @@
1
- {
2
- "name": "iosignal",
3
- "version": "1.4.2",
4
- "description": "iosignal",
5
- "type": "module",
6
- "main": "./dist/iosignal.cjs",
7
- "exports": {
8
- "import": "./index.js",
9
- "require": "./dist/iosignal.cjs"
10
- },
11
- "browser": "./dist/iosignal.min.js",
12
- "browser_esm": "./dist/iosignal.esm.js",
13
- "esm": "./dist/iosignal.mjs",
14
- "devDependencies": {
15
- "@rollup/plugin-commonjs": "^17.1.0",
16
- "@rollup/plugin-json": "^6.0.1",
17
- "@rollup/plugin-node-resolve": "^11.2.1",
18
- "@rollup/plugin-replace": "^4.0.0",
19
- "@rollup/plugin-terser": "^0.4.4",
20
- "mocha": "^9.2.2",
21
- "redis": "^4.6.12",
22
- "rollup": "^2.79.1"
23
- },
24
- "scripts": {
25
- "build": "rollup -c",
26
- "start": "node ./test-browser/server.js"
27
- },
28
- "engines": {
29
- "node": ">=15.0.0"
30
- },
31
- "author": {
32
- "name": "Lee Dongeun",
33
- "email": "sixgen@gmail.com"
34
- },
35
- "license": "MIT",
36
- "dependencies": {
37
- "boho": "^0.8.2",
38
- "commander": "^9.5.0",
39
- "eventemitter3": "^5.0.1",
40
- "meta-buffer-pack": "^1.4.0",
41
- "ws": "^8.16.0"
42
- },
43
- "optionalDependencies": {
44
- "bufferutil": "^4.0.8",
45
- "utf-8-validate": "^6.0.3"
46
- },
47
- "repository": {
48
- "type": "git",
49
- "url": "git://github.com/remocons/iosignal.git"
50
- },
51
- "homepage": "https://iosignal.net",
52
- "keywords": [
53
- "io",
54
- "pubsub",
55
- "arduino",
56
- "iot",
57
- "auth",
58
- "signal"
59
- ]
60
- }
1
+ {
2
+ "name": "iosignal",
3
+ "version": "1.5.0",
4
+ "description": "iosignal",
5
+ "type": "module",
6
+ "main": "./dist/iosignal.cjs",
7
+ "exports": {
8
+ "import": "./index.js",
9
+ "require": "./dist/iosignal.cjs"
10
+ },
11
+ "browser": "./dist/iosignal.min.js",
12
+ "browser_esm": "./dist/iosignal.esm.js",
13
+ "esm": "./dist/iosignal.mjs",
14
+ "devDependencies": {
15
+ "@rollup/plugin-commonjs": "^17.1.0",
16
+ "@rollup/plugin-json": "^6.0.1",
17
+ "@rollup/plugin-node-resolve": "^11.2.1",
18
+ "@rollup/plugin-replace": "^4.0.0",
19
+ "@rollup/plugin-terser": "^0.4.4",
20
+ "mocha": "^9.2.2",
21
+ "redis": "^4.6.12",
22
+ "rollup": "^2.79.1"
23
+ },
24
+ "scripts": {
25
+ "build": "rollup -c",
26
+ "start": "node ./test-browser/server.js"
27
+ },
28
+ "engines": {
29
+ "node": ">=15.0.0"
30
+ },
31
+ "author": {
32
+ "name": "Lee Dongeun",
33
+ "email": "sixgen@gmail.com"
34
+ },
35
+ "license": "MIT",
36
+ "dependencies": {
37
+ "boho": "^0.8.2",
38
+ "eventemitter3": "^5.0.1",
39
+ "meta-buffer-pack": "^1.4.0",
40
+ "ws": "^8.17.1"
41
+ },
42
+ "optionalDependencies": {
43
+ "bufferutil": "^4.0.8",
44
+ "utf-8-validate": "^6.0.3"
45
+ },
46
+ "repository": {
47
+ "type": "git",
48
+ "url": "git://github.com/remocons/iosignal.git"
49
+ },
50
+ "homepage": "https://iosignal.net",
51
+ "keywords": [
52
+ "io",
53
+ "pubsub",
54
+ "arduino",
55
+ "iot",
56
+ "auth",
57
+ "signal"
58
+ ]
59
+ }
package/rollup.config.js CHANGED
@@ -1,69 +1,69 @@
1
- import replace from '@rollup/plugin-replace'
2
- import resolve from '@rollup/plugin-node-resolve'
3
- import commonjs from '@rollup/plugin-commonjs'
4
- import terser from '@rollup/plugin-terser'
5
- import json from '@rollup/plugin-json'
6
- import pkg from './package.json'
7
-
8
- export default [
9
- {
10
- input: './indexWebBrowser.js',
11
- output: [
12
- {
13
- file: pkg.browser,
14
- format: 'iife',
15
- name: 'IO',
16
- sourcemap: true,
17
- }
18
-
19
- ],
20
- plugins: [
21
- replace({
22
- crypto: '',
23
- delimiters: ['import { webcrypto } from \'', '\''],
24
- preventAssignment: true
25
- }),
26
- resolve(),
27
- commonjs()
28
- ,terser()
29
- ]
30
- }
31
- ,{
32
- input: './src/client/IOWebSocket.js',
33
- output: [
34
- {
35
- file: pkg.browser_esm,
36
- format: 'es', //
37
- sourcemap: true,
38
- }
39
- ],
40
- plugins: [
41
- replace({
42
- crypto: '',
43
- delimiters: ['import { webcrypto } from \'', '\''],
44
- preventAssignment: true
45
- }),
46
- resolve(),
47
- commonjs()
48
- ,terser()
49
- ]
50
- }
51
-
52
- ,{
53
- input: './index.js',
54
- output: [
55
- { file: pkg.main,
56
- format: 'cjs'
57
- }
58
- ],
59
- plugins: [
60
- resolve({
61
- preferBuiltins: true
62
- }),
63
- json(),
64
- commonjs()
65
- ,terser()
66
- ]
67
- }
68
-
69
- ]
1
+ import replace from '@rollup/plugin-replace'
2
+ import resolve from '@rollup/plugin-node-resolve'
3
+ import commonjs from '@rollup/plugin-commonjs'
4
+ import terser from '@rollup/plugin-terser'
5
+ import json from '@rollup/plugin-json'
6
+ import pkg from './package.json'
7
+
8
+ export default [
9
+ {
10
+ input: './indexWebBrowser.js',
11
+ output: [
12
+ {
13
+ file: pkg.browser,
14
+ format: 'iife',
15
+ name: 'IO',
16
+ sourcemap: true,
17
+ }
18
+
19
+ ],
20
+ plugins: [
21
+ replace({
22
+ crypto: '',
23
+ delimiters: ['import { webcrypto } from \'', '\''],
24
+ preventAssignment: true
25
+ }),
26
+ resolve(),
27
+ commonjs()
28
+ ,terser()
29
+ ]
30
+ }
31
+ ,{
32
+ input: './src/client/IOWebSocket.js',
33
+ output: [
34
+ {
35
+ file: pkg.browser_esm,
36
+ format: 'es', //
37
+ sourcemap: true,
38
+ }
39
+ ],
40
+ plugins: [
41
+ replace({
42
+ crypto: '',
43
+ delimiters: ['import { webcrypto } from \'', '\''],
44
+ preventAssignment: true
45
+ }),
46
+ resolve(),
47
+ commonjs()
48
+ ,terser()
49
+ ]
50
+ }
51
+
52
+ ,{
53
+ input: './index.js',
54
+ output: [
55
+ { file: pkg.main,
56
+ format: 'cjs'
57
+ }
58
+ ],
59
+ plugins: [
60
+ resolve({
61
+ preferBuiltins: true
62
+ }),
63
+ json(),
64
+ commonjs()
65
+ ,terser()
66
+ ]
67
+ }
68
+
69
+ ]
@@ -1,68 +1,68 @@
1
- import { STATUS } from './api_constant.js'
2
-
3
- const MIN_LEVEL = 200;
4
- const COMMANDS = [
5
- 'GET', 'SET',
6
- 'HGETALL', 'HGET',
7
- 'HSET', 'SADD',
8
- 'SISMEMBER', 'SMEMBERS',
9
- 'EXISTS', 'SREM',
10
- 'DEL', 'KEYS',
11
- 'SAVE'
12
- ]
13
-
14
- export class RedisAPI{
15
- constructor( redisClient, _minLevel ){
16
- if( !redisClient ){
17
- throw new Error("RedisAPI constructor: no redisClient")
18
- }
19
- this.redisClient = redisClient
20
- this.minLevel = _minLevel ? _minLevel : MIN_LEVEL
21
- this.commands = COMMANDS
22
- }
23
-
24
-
25
- checkPermission(remote ,req){
26
- console.log('checkPermission', remote.level , 'vs', this.minLevel )
27
- if( remote.level >= this.minLevel ){
28
- return true
29
- }else{
30
- return false
31
- }
32
- }
33
-
34
-
35
- async request(remote, req ){
36
-
37
- let result;
38
- let status = STATUS.OK; // *0~127: ok , 128~*255 :error
39
- try {
40
- // console.log(req)
41
- let cmd = req.topic
42
- cmd = cmd.toUpperCase()
43
- if( COMMANDS.includes(cmd)){
44
- console.log('RedisAPI call:', cmd, req.args)
45
-
46
- if( req.args.length > 0 ){
47
- result = await this.redisClient[cmd]( ...req.args )
48
- }else{
49
- result = await this.redisClient[cmd]()
50
- }
51
-
52
- // console.log('RedisAPI: result:', result)
53
-
54
- }else{
55
- // result = 'RedisAPI: no such a cmd '+ cmd;
56
- status = STATUS.ERROR;
57
- }
58
- remote.response( req.mid, status , result)
59
- } catch (e) {
60
- remote.response( req.mid, STATUS.ERROR ,e.message )
61
- }
62
-
63
- }
64
-
65
- }
66
-
67
-
68
-
1
+ import { STATUS } from './api_constant.js'
2
+
3
+ const MIN_LEVEL = 200;
4
+ const COMMANDS = [
5
+ 'GET', 'SET',
6
+ 'HGETALL', 'HGET',
7
+ 'HSET', 'SADD',
8
+ 'SISMEMBER', 'SMEMBERS',
9
+ 'EXISTS', 'SREM',
10
+ 'DEL', 'KEYS',
11
+ 'SAVE'
12
+ ]
13
+
14
+ export class RedisAPI{
15
+ constructor( redisClient, _minLevel ){
16
+ if( !redisClient ){
17
+ throw new Error("RedisAPI constructor: no redisClient")
18
+ }
19
+ this.redisClient = redisClient
20
+ this.minLevel = _minLevel ? _minLevel : MIN_LEVEL
21
+ this.commands = COMMANDS
22
+ }
23
+
24
+
25
+ checkPermission(remote ,req){
26
+ console.log('checkPermission', remote.level , 'vs', this.minLevel )
27
+ if( remote.level >= this.minLevel ){
28
+ return true
29
+ }else{
30
+ return false
31
+ }
32
+ }
33
+
34
+
35
+ async request(remote, req ){
36
+
37
+ let result;
38
+ let status = STATUS.OK; // *0~127: ok , 128~*255 :error
39
+ try {
40
+ // console.log(req)
41
+ let cmd = req.topic
42
+ cmd = cmd.toUpperCase()
43
+ if( COMMANDS.includes(cmd)){
44
+ console.log('RedisAPI call:', cmd, req.args)
45
+
46
+ if( req.args.length > 0 ){
47
+ result = await this.redisClient[cmd]( ...req.args )
48
+ }else{
49
+ result = await this.redisClient[cmd]()
50
+ }
51
+
52
+ // console.log('RedisAPI: result:', result)
53
+
54
+ }else{
55
+ // result = 'RedisAPI: no such a cmd '+ cmd;
56
+ status = STATUS.ERROR;
57
+ }
58
+ remote.response( req.mid, status , result)
59
+ } catch (e) {
60
+ remote.response( req.mid, STATUS.ERROR ,e.message )
61
+ }
62
+
63
+ }
64
+
65
+ }
66
+
67
+
68
+
@@ -1,7 +1,7 @@
1
-
2
- export const STATUS = {
3
- OK: 0,
4
- //0~127: success
5
- //128~255: fail
6
- ERROR: 255
7
- }
1
+
2
+ export const STATUS = {
3
+ OK: 0,
4
+ //0~127: success
5
+ //128~255: fail
6
+ ERROR: 255
7
+ }
@@ -1,34 +1,34 @@
1
-
2
-
3
- import { STATUS } from './api_constant.js'
4
-
5
- const MIN_LEVEL = 0;
6
-
7
- export function checkPermission(remote){
8
- if( remote.level >= MIN_LEVEL ){
9
- return true
10
- }else{
11
- return false
12
- }
13
- }
14
-
15
- export async function echo( remote , req)
16
- {
17
- if( !req.args)
18
- remote.response( req.mid, STATUS.ERROR , 'no message to echo' )
19
- else
20
- remote.response( req.mid, STATUS.OK , req.args )
21
- }
22
-
23
- export async function date( remote , req)
24
- {
25
- let r = new Date().toUTCString()
26
- remote.response( req.mid, STATUS.OK , r)
27
- }
28
-
29
- export async function unixtime( remote , req)
30
- {
31
- let r = Math.floor( Date.now() /1000)
32
- remote.response( req.mid, STATUS.OK , r)
33
- }
34
-
1
+
2
+
3
+ import { STATUS } from './api_constant.js'
4
+
5
+ const MIN_LEVEL = 0;
6
+
7
+ export function checkPermission(remote){
8
+ if( remote.level >= MIN_LEVEL ){
9
+ return true
10
+ }else{
11
+ return false
12
+ }
13
+ }
14
+
15
+ export async function echo( remote , req)
16
+ {
17
+ if( !req.args)
18
+ remote.response( req.mid, STATUS.ERROR , 'no message to echo' )
19
+ else
20
+ remote.response( req.mid, STATUS.OK , req.args )
21
+ }
22
+
23
+ export async function date( remote , req)
24
+ {
25
+ let r = new Date().toUTCString()
26
+ remote.response( req.mid, STATUS.OK , r)
27
+ }
28
+
29
+ export async function unixtime( remote , req)
30
+ {
31
+ let r = Math.floor( Date.now() /1000)
32
+ remote.response( req.mid, STATUS.OK , r)
33
+ }
34
+