iosignal 1.4.2 → 1.6.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 (52) 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 +2 -2
  6. package/dist/iosignal.esm.js.map +1 -1
  7. package/dist/iosignal.min.js +2 -2
  8. package/dist/iosignal.min.js.map +1 -1
  9. package/index.js +19 -19
  10. package/indexWebBrowser.js +13 -13
  11. package/package.json +59 -60
  12. package/rollup.config.js +69 -69
  13. package/src/api/RedisAPI.js +68 -68
  14. package/src/api/api_constant.js +7 -7
  15. package/src/api/api_reply.js +34 -34
  16. package/src/api/api_sudo.js +96 -96
  17. package/src/auth/Auth_Env.js +78 -78
  18. package/src/auth/Auth_File.js +75 -75
  19. package/src/auth/Auth_Redis.js +50 -50
  20. package/src/auth/BohoAuth.js +168 -168
  21. package/src/client/CongPacket.js +150 -150
  22. package/src/client/IOCongSocket.js +88 -88
  23. package/src/client/IOCore.js +851 -851
  24. package/src/client/IOWS.js +81 -81
  25. package/src/client/IOWebSocket.js +107 -95
  26. package/src/common/constants.js +159 -159
  27. package/src/common/payload.js +82 -82
  28. package/src/common/quotaTable.js +68 -68
  29. package/src/common/util.js +61 -61
  30. package/src/server/FileLogger.js +30 -30
  31. package/src/server/Manager.js +449 -449
  32. package/src/server/Metric.js +154 -154
  33. package/src/server/Server.js +166 -148
  34. package/src/server/ServerRemote.js +227 -227
  35. package/src/server/ServerRemoteCore.js +467 -467
  36. package/src/server/serverOption.js +56 -55
  37. package/test-browser/favicon.ico +0 -0
  38. package/test-browser/index.html +92 -92
  39. package/test-browser/server.js +11 -11
  40. package/test-client-nodejs/client.cjs +17 -17
  41. package/test-client-nodejs/client.mjs +17 -17
  42. package/test-client-nodejs/client_api_reply.mjs +15 -15
  43. package/test-client-nodejs/stateChange.mjs +19 -19
  44. package/test-server/server-Auth_Env.js +19 -19
  45. package/test-server/server-Auth_File.js +12 -12
  46. package/test-server/server-api_reply.js +6 -6
  47. package/test-server/server-api_sudo.js +7 -7
  48. package/test-server/server-commonjs.cjs +8 -8
  49. package/test-server/server-esm.mjs +19 -19
  50. package/test-server/simple-server.mjs +11 -11
  51. package/test-signal-payloadType/signalPack.js +34 -34
  52. 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.6.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
+