@itee/client 10.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 (61) hide show
  1. package/CHANGELOG.md +251 -0
  2. package/LICENSE.md +23 -0
  3. package/README.md +76 -0
  4. package/builds/itee-client.cjs.js +6517 -0
  5. package/builds/itee-client.cjs.js.map +1 -0
  6. package/builds/itee-client.cjs.min.js +125 -0
  7. package/builds/itee-client.esm.js +6468 -0
  8. package/builds/itee-client.esm.js.map +1 -0
  9. package/builds/itee-client.esm.min.js +124 -0
  10. package/builds/itee-client.iife.js +6524 -0
  11. package/builds/itee-client.iife.js.map +1 -0
  12. package/builds/itee-client.iife.min.js +125 -0
  13. package/package.json +87 -0
  14. package/sources/client.js +14 -0
  15. package/sources/cores/TAbstractFactory.js +42 -0
  16. package/sources/cores/TCloningFactory.js +39 -0
  17. package/sources/cores/TConstants.js +433 -0
  18. package/sources/cores/TInstancingFactory.js +41 -0
  19. package/sources/cores/TStore.js +303 -0
  20. package/sources/cores/_cores.js +13 -0
  21. package/sources/input_devices/TKeyboardController.js +158 -0
  22. package/sources/input_devices/TMouseController.js +31 -0
  23. package/sources/input_devices/_inputDevices.js +11 -0
  24. package/sources/loaders/TBinaryConverter.js +35 -0
  25. package/sources/loaders/TBinaryReader.js +1029 -0
  26. package/sources/loaders/TBinarySerializer.js +258 -0
  27. package/sources/loaders/TBinaryWriter.js +429 -0
  28. package/sources/loaders/_loaders.js +21 -0
  29. package/sources/loaders/converters/ArrayBinaryConverter.js +33 -0
  30. package/sources/loaders/converters/BooleanBinaryConverter.js +24 -0
  31. package/sources/loaders/converters/DateBinaryConverter.js +21 -0
  32. package/sources/loaders/converters/NullBinaryConverter.js +13 -0
  33. package/sources/loaders/converters/NumberBinaryConverter.js +15 -0
  34. package/sources/loaders/converters/ObjectBinaryConverter.js +101 -0
  35. package/sources/loaders/converters/RegExBinaryConverter.js +11 -0
  36. package/sources/loaders/converters/StringBinaryConverter.js +26 -0
  37. package/sources/loaders/converters/UndefinedBinaryConverter.js +13 -0
  38. package/sources/managers/TDataBaseManager.js +1649 -0
  39. package/sources/managers/_managers.js +10 -0
  40. package/sources/utils/TIdFactory.js +84 -0
  41. package/sources/utils/_utils.js +9 -0
  42. package/sources/webapis/WebAPI.js +773 -0
  43. package/sources/webapis/WebAPIOrigin.js +141 -0
  44. package/sources/webapis/_webapis.js +10 -0
  45. package/sources/webapis/messages/WebAPIMessage.js +75 -0
  46. package/sources/webapis/messages/WebAPIMessageData.js +51 -0
  47. package/sources/webapis/messages/WebAPIMessageError.js +79 -0
  48. package/sources/webapis/messages/WebAPIMessageEvent.js +58 -0
  49. package/sources/webapis/messages/WebAPIMessageProgress.js +91 -0
  50. package/sources/webapis/messages/WebAPIMessageReady.js +66 -0
  51. package/sources/webapis/messages/WebAPIMessageRequest.js +94 -0
  52. package/sources/webapis/messages/WebAPIMessageResponse.js +80 -0
  53. package/sources/webapis/messages/_messages.js +16 -0
  54. package/sources/workers/AbstractWorker.js +149 -0
  55. package/sources/workers/_workers.js +10 -0
  56. package/sources/workers/messages/WorkerMessage.js +33 -0
  57. package/sources/workers/messages/WorkerMessageData.js +30 -0
  58. package/sources/workers/messages/WorkerMessageError.js +32 -0
  59. package/sources/workers/messages/WorkerMessageMethodCall.js +60 -0
  60. package/sources/workers/messages/WorkerMessageProgress.js +67 -0
  61. package/sources/workers/messages/_messages.js +14 -0
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @author [Tristan Valcke]{@link https://github.com/Itee}
3
+ */
4
+
5
+ import {
6
+ isNull,
7
+ isUndefined
8
+ } from '@itee/validators'
9
+ import { WebAPIMessage } from './WebAPIMessage.js'
10
+
11
+ /**
12
+ * @class
13
+ * @classdesc The message response to a message request
14
+ */
15
+ class WebAPIMessageResponse extends WebAPIMessage {
16
+
17
+ /**
18
+ *
19
+ * @type {boolean}
20
+ */
21
+ static isWebApiMessageResponse = true
22
+
23
+ /**
24
+ *
25
+ * @param request
26
+ * @param result
27
+ */
28
+ constructor( request, result ) {
29
+ super( '_response' )
30
+
31
+ this.request = request
32
+ this.result = result
33
+ }
34
+
35
+ /**
36
+ *
37
+ * @returns {*}
38
+ */
39
+ get request() {
40
+ return this._request
41
+ }
42
+
43
+ set request( value ) {
44
+ if ( isNull( value ) ) { return }
45
+ if ( isUndefined( value ) ) { return }
46
+
47
+ this._request = value
48
+ }
49
+
50
+ /**
51
+ *
52
+ * @returns {*}
53
+ */
54
+ get result() {
55
+ return this._result
56
+ }
57
+
58
+ set result( value ) {
59
+ this._result = value
60
+ }
61
+
62
+ /**
63
+ *
64
+ * @returns {{result: *, request: *}}
65
+ */
66
+ toJSON() {
67
+
68
+ return {
69
+ ...super.toJSON(),
70
+ ...{
71
+ request: this.request,
72
+ result: this.result
73
+ }
74
+ }
75
+
76
+ }
77
+
78
+ }
79
+
80
+ export { WebAPIMessageResponse }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @module WebAPI/Messages
3
+ * @description Intermediary export file for webapi messages. Export [WebAPIMessage]{@link WebAPIMessage}, [WebAPIMessageData]{@link WebAPIMessageData}, [WebAPIMessageError]{@link WebAPIMessageError},
4
+ * [WebAPIMessageProgress]{@link WebAPIMessageProgress}, [WebAPIMessageReady]{@link WebAPIMessageReady}, [WebAPIMessageRequest]{@link WebAPIMessageRequest}, and [WebAPIMessageResponse]{@link WebAPIMessageResponse}.
5
+ *
6
+ * @author [Tristan Valcke]{@link https://github.com/Itee}
7
+ * @license [BSD-3-Clause]{@link https://opensource.org/licenses/BSD-3-Clause}
8
+ */
9
+
10
+ export * from './WebAPIMessage.js'
11
+ export * from './WebAPIMessageData.js'
12
+ export * from './WebAPIMessageError.js'
13
+ export * from './WebAPIMessageProgress.js'
14
+ export * from './WebAPIMessageReady.js'
15
+ export * from './WebAPIMessageRequest.js'
16
+ export * from './WebAPIMessageResponse.js'
@@ -0,0 +1,149 @@
1
+ /**
2
+ * @author [Tristan Valcke]{@link https://github.com/Itee}
3
+ */
4
+
5
+ import {
6
+ isArray,
7
+ isArrayBuffer,
8
+ isEmptyString,
9
+ isNotArray,
10
+ isNotDefined,
11
+ isNotString
12
+ } from '@itee/validators'
13
+ import { WorkerMessageData } from './messages/WorkerMessageData.js'
14
+ import { WorkerMessageError } from './messages/WorkerMessageError.js'
15
+ import { WorkerMessageProgress } from './messages/WorkerMessageProgress.js'
16
+
17
+ /**
18
+ * @class
19
+ * @classdesc Base worker interface that allow messaging between callee and caller
20
+ */
21
+ class AbstractWorker {
22
+
23
+ /**
24
+ *
25
+ * @param progress
26
+ */
27
+ postProgress( progress ) {
28
+
29
+ if ( progress.isWorkerMessageProgress ) {
30
+ postMessage( progress.toJSON() )
31
+ } else {
32
+ postMessage( new WorkerMessageProgress( progress.loaded, progress.total ).toJSON() )
33
+ }
34
+
35
+ }
36
+
37
+ /**
38
+ *
39
+ * @param error
40
+ */
41
+ postError( error ) {
42
+
43
+ if ( error.isWorkerMessageError ) {
44
+ postMessage( error.toJSON() )
45
+ } else {
46
+ postMessage( new WorkerMessageError( error ).toJSON() )
47
+ }
48
+
49
+ }
50
+
51
+ /**
52
+ *
53
+ * @param type
54
+ * @param arrayBuffer
55
+ */
56
+ postData( type, arrayBuffer ) {
57
+
58
+ if ( isArray( arrayBuffer ) ) {
59
+ postMessage( new WorkerMessageData( type, arrayBuffer ).toJSON(), [ ...arrayBuffer ] )
60
+ } else if ( isArrayBuffer( arrayBuffer ) ) {
61
+ postMessage( new WorkerMessageData( type, arrayBuffer ).toJSON(), [ arrayBuffer ] )
62
+ } else {
63
+ throw new TypeError( `AbstractWorker.postData: Unable to post data of type [${ type }].` )
64
+ }
65
+
66
+ }
67
+
68
+ /**
69
+ *
70
+ * @param message
71
+ * @returns {boolean}
72
+ */
73
+ onMessage( message ) {
74
+
75
+ if ( isNotDefined( message ) ) {
76
+ this.postError( new Error( 'Message event cannot be null or undefined !' ) )
77
+ return true
78
+ }
79
+
80
+ const data = message.data
81
+ if ( isNotDefined( data ) ) {
82
+ this.postError( new Error( 'Message data cannot be null or undefined !' ) )
83
+ return true
84
+ }
85
+
86
+ const dataType = data.type
87
+ if ( isNotDefined( dataType ) ) {
88
+ this.postError( new Error( 'Message data type cannot be null or undefined !' ) )
89
+ return true
90
+ }
91
+
92
+ if ( data.type === 'methodCall' ) {
93
+
94
+ const methodName = data.method
95
+ if ( isNotDefined( methodName ) ) {
96
+ this.postError( new Error( 'Message of type "methodCall" cannot have null, undefined or empty name !' ) )
97
+ return true
98
+ }
99
+
100
+ if ( isNotString( methodName ) ) {
101
+ this.postError( new Error( 'Message of type "methodCall" expect name to be a string !' ) )
102
+ return true
103
+ }
104
+
105
+ if ( isEmptyString( methodName ) ) {
106
+ this.postError( new Error( 'Message of type "methodCall" expect name to be a non empty string !' ) )
107
+ return true
108
+ }
109
+
110
+ const methodParameters = data.parameters || []
111
+ if ( isNotArray( methodParameters ) ) {
112
+ this.postError( new Error( 'Message of type "methodCall" expect parameters to be an array !' ) )
113
+ return true
114
+ }
115
+
116
+ this._invoke( methodName, methodParameters )
117
+ return true
118
+
119
+ }
120
+
121
+ }
122
+
123
+ /**
124
+ *
125
+ * @param name
126
+ * @param parameters
127
+ * @private
128
+ */
129
+ _invoke( name, parameters = [] ) {
130
+
131
+ try {
132
+
133
+ const result = this[ name ]( ...parameters )
134
+ if ( result ) {
135
+ postMessage( {
136
+ type: name,
137
+ result: result
138
+ } )
139
+ }
140
+
141
+ } catch ( error ) {
142
+ this.postError( error )
143
+ }
144
+
145
+ }
146
+
147
+ }
148
+
149
+ export { AbstractWorker }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @module Workers
3
+ * @description Intermediary export file for workers. Export [AbstractWorker]{@link AbstractWorker} and all worker messages from [Worker/Messages]{@link module:Workers/Messages}.
4
+ *
5
+ * @author [Tristan Valcke]{@link https://github.com/Itee}
6
+ * @license [BSD-3-Clause]{@link https://opensource.org/licenses/BSD-3-Clause}
7
+ */
8
+ export * from './AbstractWorker.js'
9
+
10
+ export * from './messages/_messages.js'
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @author [Tristan Valcke]{@link https://github.com/Itee}
3
+ */
4
+
5
+ class WorkerMessage {
6
+
7
+ static isWorkerMessage = true
8
+
9
+ constructor( type ) {
10
+
11
+ this.type = type
12
+
13
+ }
14
+
15
+ get type() {
16
+ return this._type
17
+ }
18
+
19
+ set type( type ) {
20
+ this._type = type
21
+ }
22
+
23
+ toJSON() {
24
+
25
+ return {
26
+ type: this.type
27
+ }
28
+
29
+ }
30
+
31
+ }
32
+
33
+ export { WorkerMessage }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @author [Tristan Valcke]{@link https://github.com/Itee}
3
+ */
4
+
5
+ import { WorkerMessage } from './WorkerMessage.js'
6
+
7
+ class WorkerMessageData extends WorkerMessage {
8
+
9
+ static isWorkerMessageData = true
10
+
11
+ constructor( type, buffer ) {
12
+ super( type )
13
+
14
+ this.buffer = buffer
15
+ }
16
+
17
+ toJSON() {
18
+
19
+ return {
20
+ ...super.toJSON(),
21
+ ...{
22
+ buffer: this.buffer
23
+ }
24
+ }
25
+
26
+ }
27
+
28
+ }
29
+
30
+ export { WorkerMessageData }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @author [Tristan Valcke]{@link https://github.com/Itee}
3
+ */
4
+
5
+ import { WorkerMessage } from './WorkerMessage.js'
6
+
7
+ class WorkerMessageError extends WorkerMessage {
8
+
9
+ static isWorkerMessageError = true
10
+
11
+ constructor( error ) {
12
+ super( 'error' )
13
+
14
+ this.message = error.message
15
+ this.stack = error.stack
16
+ }
17
+
18
+ toJSON() {
19
+
20
+ return {
21
+ ...super.toJSON(),
22
+ ...{
23
+ message: this.message,
24
+ stack: this.stack
25
+ }
26
+ }
27
+
28
+ }
29
+
30
+ }
31
+
32
+ export { WorkerMessageError }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @author [Tristan Valcke]{@link https://github.com/Itee}
3
+ */
4
+
5
+ import {
6
+ isNotArray,
7
+ isNotString,
8
+ isNull,
9
+ isUndefined
10
+ } from '@itee/validators'
11
+ import { WorkerMessage } from './WorkerMessage.js'
12
+
13
+ class WorkerMessageMethodCall extends WorkerMessage {
14
+
15
+ static isWorkerMessageMethodCall = true
16
+
17
+ constructor( method, parameters = [] ) {
18
+ super( 'methodCall' )
19
+
20
+ this.method = method
21
+ this.parameters = parameters
22
+ }
23
+
24
+ get method() {
25
+ return this._method
26
+ }
27
+
28
+ set method( value ) {
29
+ if ( isNull( value ) ) { return }
30
+ if ( isUndefined( value ) ) { return }
31
+ if ( isNotString( value ) ) { return }
32
+
33
+ this._method = value
34
+ }
35
+
36
+ get parameters() {
37
+ return this._parameters
38
+ }
39
+
40
+ set parameters( value ) {
41
+ if ( isNotArray( value ) ) { return }
42
+
43
+ this._parameters = value
44
+ }
45
+
46
+ toJSON() {
47
+
48
+ return {
49
+ ...super.toJSON(),
50
+ ...{
51
+ method: this.method,
52
+ parameters: this.parameters
53
+ }
54
+ }
55
+
56
+ }
57
+
58
+ }
59
+
60
+ export { WorkerMessageMethodCall }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @author [Tristan Valcke]{@link https://github.com/Itee}
3
+ */
4
+
5
+ import { WorkerMessage } from './WorkerMessage.js'
6
+
7
+ class WorkerMessageProgress extends WorkerMessage {
8
+
9
+ static isWorkerMessageProgress = true
10
+
11
+ constructor( loaded = 0, total = 0 ) {
12
+ super( 'progress' )
13
+
14
+ this.lengthComputable = false
15
+ this.loaded = loaded
16
+ this.total = total
17
+ }
18
+
19
+ get loaded() {
20
+ return this._loaded
21
+ }
22
+
23
+ set loaded( value ) {
24
+ this._loaded = value
25
+ this._checkIfLengthComputable()
26
+ }
27
+
28
+ get total() {
29
+ return this._total
30
+ }
31
+
32
+ set total( value ) {
33
+ this._total = value
34
+ this._checkIfLengthComputable()
35
+ }
36
+
37
+ _checkIfLengthComputable() {
38
+
39
+ this.lengthComputable = false
40
+
41
+ if (
42
+ this._total > 0 &&
43
+ this._total < Number.MAX_SAFE_INTEGER &&
44
+ this._loaded >= 0 &&
45
+ this._loaded < Number.MAX_SAFE_INTEGER
46
+ ) {
47
+ this.lengthComputable = true
48
+ }
49
+
50
+ }
51
+
52
+ toJSON() {
53
+
54
+ return {
55
+ ...super.toJSON(),
56
+ ...{
57
+ lengthComputable: this.lengthComputable,
58
+ loaded: this.loaded,
59
+ total: this.total
60
+ }
61
+ }
62
+
63
+ }
64
+
65
+ }
66
+
67
+ export { WorkerMessageProgress }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @module Workers/Messages
3
+ * @description Intermediary export file for worker messages. Export [WorkerMessage]{@link WorkerMessage}, [WorkerMessageData]{@link WorkerMessageData}, [WorkerMessageError]{@link WorkerMessageError},
4
+ * [WorkerMessageMethodCall]{@link WorkerMessageMethodCall}, and [WorkerMessageProgress]{@link WorkerMessageProgress}.
5
+ *
6
+ * @author [Tristan Valcke]{@link https://github.com/Itee}
7
+ * @license [BSD-3-Clause]{@link https://opensource.org/licenses/BSD-3-Clause}
8
+ */
9
+
10
+ export * from './WorkerMessage.js'
11
+ export * from './WorkerMessageData.js'
12
+ export * from './WorkerMessageError.js'
13
+ export * from './WorkerMessageMethodCall.js'
14
+ export * from './WorkerMessageProgress.js'