fcad-core-dragon 2.1.0 → 2.1.2

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 (160) hide show
  1. package/.editorconfig +7 -7
  2. package/.gitlab-ci.yml +124 -0
  3. package/.prettierrc +11 -11
  4. package/.vscode/extensions.json +8 -8
  5. package/.vscode/settings.json +46 -16
  6. package/CHANGELOG +520 -520
  7. package/README.md +57 -57
  8. package/documentation/.vitepress/config.js +114 -114
  9. package/documentation/api-examples.md +49 -49
  10. package/documentation/composants/app-base-button.md +58 -58
  11. package/documentation/composants/app-base-error-display.md +59 -59
  12. package/documentation/composants/app-base-popover.md +68 -68
  13. package/documentation/composants/app-comp-audio.md +75 -75
  14. package/documentation/composants/app-comp-branch-buttons.md +111 -111
  15. package/documentation/composants/app-comp-button-progress.md +53 -53
  16. package/documentation/composants/app-comp-carousel.md +53 -53
  17. package/documentation/composants/app-comp-container.md +53 -53
  18. package/documentation/composants/app-comp-input-checkbox-next.md +42 -42
  19. package/documentation/composants/app-comp-input-dropdown-next.md +34 -34
  20. package/documentation/composants/app-comp-input-radio-next.md +39 -39
  21. package/documentation/composants/app-comp-input-text-next.md +35 -35
  22. package/documentation/composants/app-comp-input-text-table-next.md +34 -34
  23. package/documentation/composants/app-comp-input-text-to-fill-dropdown-next.md +53 -53
  24. package/documentation/composants/app-comp-input-text-to-fill-next.md +31 -31
  25. package/documentation/composants/app-comp-jauge.md +31 -31
  26. package/documentation/composants/app-comp-menu-item.md +55 -55
  27. package/documentation/composants/app-comp-menu.md +29 -29
  28. package/documentation/composants/app-comp-navigation.md +41 -41
  29. package/documentation/composants/app-comp-note-call.md +53 -53
  30. package/documentation/composants/app-comp-note-credit.md +53 -53
  31. package/documentation/composants/app-comp-play-bar-next.md +53 -53
  32. package/documentation/composants/app-comp-pop-up-next.md +93 -93
  33. package/documentation/composants/app-comp-quiz-next.md +235 -235
  34. package/documentation/composants/app-comp-quiz-recall.md +53 -53
  35. package/documentation/composants/app-comp-svg-next.md +53 -53
  36. package/documentation/composants/app-comp-table-of-content.md +50 -50
  37. package/documentation/composants/app-comp-video-player.md +82 -82
  38. package/documentation/composants.md +46 -46
  39. package/documentation/composants_critiques/ModelPageComposant.md +53 -53
  40. package/documentation/composants_critiques/app-base-module.md +43 -43
  41. package/documentation/composants_critiques/app-base-page.md +48 -48
  42. package/documentation/composants_critiques/app-base.md +311 -311
  43. package/documentation/composants_critiques/main.md +15 -15
  44. package/documentation/demarrage.md +50 -50
  45. package/documentation/deploiement.md +57 -57
  46. package/documentation/index.md +33 -33
  47. package/documentation/markdown-examples.md +85 -85
  48. package/documentation/public/vite.svg +14 -14
  49. package/documentation/public/vuejs.svg +1 -1
  50. package/documentation/public/vuetify.svg +5 -5
  51. package/eslint.config.js +60 -60
  52. package/junit-report.xml +182 -0
  53. package/package.json +66 -59
  54. package/playwright/index.html +12 -0
  55. package/playwright/index.js +21 -0
  56. package/playwright-ct.config.js +95 -0
  57. package/src/$locales/en.json +157 -157
  58. package/src/$locales/fr.json +120 -120
  59. package/src/assets/data/onboardingMessages.json +47 -47
  60. package/src/components/AppBase.vue +1171 -1169
  61. package/src/components/AppBaseButton.vue +90 -95
  62. package/src/components/AppBaseErrorDisplay.vue +438 -438
  63. package/src/components/AppBaseFlipCard.vue +84 -84
  64. package/src/components/AppBaseModule.vue +1639 -1634
  65. package/src/components/AppBasePage.vue +3 -2
  66. package/src/components/AppBasePopover.vue +41 -41
  67. package/src/components/AppBaseSkeleton.vue +66 -66
  68. package/src/components/AppCompAudio.vue +261 -256
  69. package/src/components/AppCompBranchButtons.vue +508 -508
  70. package/src/components/AppCompButtonProgress.vue +137 -132
  71. package/src/components/AppCompCarousel.vue +342 -336
  72. package/src/components/AppCompContainer.vue +29 -29
  73. package/src/components/AppCompInputCheckBoxNx.vue +325 -323
  74. package/src/components/AppCompInputDropdownNx.vue +302 -299
  75. package/src/components/AppCompInputRadioNx.vue +287 -284
  76. package/src/components/AppCompInputTextNx.vue +156 -153
  77. package/src/components/AppCompInputTextTableNx.vue +205 -202
  78. package/src/components/AppCompInputTextToFillDropdownNx.vue +343 -340
  79. package/src/components/AppCompInputTextToFillNx.vue +316 -313
  80. package/src/components/AppCompJauge.vue +81 -81
  81. package/src/components/AppCompMenu.vue +6 -2
  82. package/src/components/AppCompMenuItem.vue +246 -240
  83. package/src/components/AppCompNavigation.vue +977 -972
  84. package/src/components/AppCompNoteCall.vue +167 -161
  85. package/src/components/AppCompNoteCredit.vue +496 -491
  86. package/src/components/AppCompPlayBarNext.vue +2290 -2288
  87. package/src/components/AppCompPopUpNext.vue +508 -504
  88. package/src/components/AppCompQuizNext.vue +515 -510
  89. package/src/components/AppCompQuizRecall.vue +355 -350
  90. package/src/components/AppCompSVGNext.vue +346 -346
  91. package/src/components/AppCompSettingsMenu.vue +177 -172
  92. package/src/components/AppCompTableOfContent.vue +433 -427
  93. package/src/components/AppCompVideoPlayer.vue +377 -377
  94. package/src/components/AppCompViewDisplay.vue +6 -6
  95. package/src/components/BaseModule.vue +55 -55
  96. package/src/composables/useIdleDetector.js +56 -56
  97. package/src/composables/useQuiz.js +89 -89
  98. package/src/composables/useTimer.js +172 -172
  99. package/src/directives/nvdaFix.js +53 -53
  100. package/src/externalComps/ModuleView.vue +22 -22
  101. package/src/externalComps/SummaryView.vue +91 -91
  102. package/src/main.js +493 -476
  103. package/src/module/stores/appStore.js +960 -947
  104. package/src/module/xapi/ADL.js +520 -520
  105. package/src/module/xapi/Crypto/Hasher.js +241 -241
  106. package/src/module/xapi/Crypto/WordArray.js +278 -278
  107. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  108. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
  109. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  110. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  111. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  112. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  113. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  114. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  115. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  116. package/src/module/xapi/Crypto/index.js +53 -53
  117. package/src/module/xapi/Statement/activity.js +47 -47
  118. package/src/module/xapi/Statement/agent.js +55 -55
  119. package/src/module/xapi/Statement/group.js +26 -26
  120. package/src/module/xapi/Statement/index.js +259 -259
  121. package/src/module/xapi/Statement/statement.js +253 -253
  122. package/src/module/xapi/Statement/statementRef.js +23 -23
  123. package/src/module/xapi/Statement/substatement.js +22 -22
  124. package/src/module/xapi/Statement/verb.js +36 -36
  125. package/src/module/xapi/activitytypes.js +17 -17
  126. package/src/module/xapi/launch.js +157 -157
  127. package/src/module/xapi/utils.js +167 -167
  128. package/src/module/xapi/verbs.js +294 -294
  129. package/src/module/xapi/wrapper.js +1895 -1895
  130. package/src/module/xapi/xapiStatement.js +444 -444
  131. package/src/plugins/analytics.js +34 -34
  132. package/src/plugins/bus.js +12 -8
  133. package/src/plugins/gsap.js +17 -15
  134. package/src/plugins/helper.js +355 -358
  135. package/src/plugins/i18n.js +27 -26
  136. package/src/plugins/idb.js +227 -227
  137. package/src/plugins/save.js +37 -37
  138. package/src/plugins/scorm.js +287 -287
  139. package/src/plugins/xapi.js +11 -11
  140. package/src/public/index.html +33 -33
  141. package/src/router/index.js +57 -57
  142. package/src/router/routes.js +312 -312
  143. package/src/shared/generalfuncs.js +344 -344
  144. package/src/shared/validators.js +1018 -1018
  145. package/tests/component/AppBaseButton.spec.js +53 -0
  146. package/tests/component/pinia.spec.js +24 -0
  147. package/{src/components/tests__ → tests/unit}/AppBaseButton.spec.js +53 -53
  148. package/tests/unit/AppCompInputCheckBoxNx.spec.js +59 -0
  149. package/tests/unit/AppCompInputDropdownNx.spec.js +51 -0
  150. package/tests/unit/AppCompInputRadioNx.spec.js +59 -0
  151. package/tests/unit/AppCompInputTextNx.spec.js +44 -0
  152. package/tests/unit/AppCompInputTextTableNx.spec.js +77 -0
  153. package/tests/unit/AppCompInputTextToFillDropdownNx.spec.js +60 -0
  154. package/tests/unit/AppCompInputTextToFillNx.spec.js +45 -0
  155. package/tests/unit/AppCompQuizNext.spec.js +114 -0
  156. package/tests/unit/AppCompVideoPlayer.spec.js +177 -0
  157. package/{src/components/tests__ → tests/unit}/useTimer.spec.js +91 -91
  158. package/vitest.config.js +28 -19
  159. package/vitest.setup.js +28 -0
  160. package/src/components/AppBaseButton.test.js +0 -21
@@ -1,278 +1,278 @@
1
- import { Base } from './encoders/Base'
2
- import { Hex } from './encoders/Hex'
3
- /**
4
- * An array of 32-bit words.
5
- * @property {Array} words The array of 32-bit words.
6
- * @property {number} sigBytes The number of significant bytes in this word array.
7
- */
8
-
9
- export const WordArray = Base.extend({
10
- /**
11
- * Initializes a newly created word array.
12
- *
13
- * @param {Array} words (Optional) An array of 32-bit words.
14
- * @param {number} sigBytes (Optional) The number of significant bytes in the words.
15
- *
16
- * @example
17
- *
18
- * let wordArray = CryptoJS.lib.WordArray.create();
19
- * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
20
- * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
21
- */
22
- init: function (words, sigBytes) {
23
- words = this.words = words || []
24
-
25
- if (sigBytes != undefined) {
26
- this.sigBytes = sigBytes
27
- } else {
28
- this.sigBytes = words.length * 4
29
- }
30
- },
31
-
32
- /**
33
- * Converts this word array to a string.
34
- *
35
- * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
36
- *
37
- * @return {string} The stringified word array.
38
- *
39
- * @example
40
- *
41
- * let string = wordArray + '';
42
- * let string = wordArray.toString();
43
- * let string = wordArray.toString(CryptoJS.enc.Utf8);
44
- */
45
- toString: function (encoder) {
46
- return (encoder || Hex).stringify(this)
47
- },
48
-
49
- /**
50
- * Concatenates a word array to this word array.
51
- *
52
- * @param {WordArray} wordArray The word array to append.
53
- *
54
- * @return {WordArray} This word array.
55
- *
56
- * @example
57
- *
58
- * wordArray1.concat(wordArray2);
59
- */
60
- concat: function (wordArray) {
61
- // Shortcuts
62
- let thisWords = this.words
63
- let thatWords = wordArray.words
64
- let thisSigBytes = this.sigBytes
65
- let thatSigBytes = wordArray.sigBytes
66
-
67
- // Clamp excess bits
68
- this.clamp()
69
-
70
- // Concat
71
- if (thisSigBytes % 4) {
72
- // Copy one byte at a time
73
- for (let i = 0; i < thatSigBytes; i++) {
74
- let thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
75
- thisWords[(thisSigBytes + i) >>> 2] |=
76
- thatByte << (24 - ((thisSigBytes + i) % 4) * 8)
77
- }
78
- } else if (thatWords.length > 0xffff) {
79
- // Copy one word at a time
80
- for (let i = 0; i < thatSigBytes; i += 4) {
81
- thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]
82
- }
83
- } else {
84
- // Copy all words at once
85
- thisWords.push.apply(thisWords, thatWords)
86
- }
87
- this.sigBytes += thatSigBytes
88
-
89
- // Chainable
90
- return this
91
- },
92
-
93
- /**
94
- * Removes insignificant bits.
95
- *
96
- * @example
97
- *
98
- * wordArray.clamp();
99
- */
100
- clamp: function () {
101
- // Shortcuts
102
- let words = this.words
103
- let sigBytes = this.sigBytes
104
-
105
- // Clamp
106
- words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8)
107
- words.length = Math.ceil(sigBytes / 4)
108
- },
109
-
110
- /**
111
- * Creates a copy of this word array.
112
- *
113
- * @return {WordArray} The clone.
114
- *
115
- * @example
116
- *
117
- * let clone = wordArray.clone();
118
- */
119
- clone: function () {
120
- let clone = Base.clone.call(this)
121
- clone.words = this.words.slice(0)
122
-
123
- return clone
124
- },
125
-
126
- /**
127
- * Creates a word array filled with random bytes.
128
- *
129
- * @param {number} nBytes The number of random bytes to generate.
130
- *
131
- * @return {WordArray} The random word array.
132
- *
133
- * @static
134
- *
135
- * @example
136
- *
137
- * let wordArray = CryptoJS.lib.WordArray.random(16);
138
- */
139
- random: function (nBytes) {
140
- let words = []
141
- for (let i = 0; i < nBytes; i += 4) {
142
- words.push((Math.random() * 0x100000000) | 0)
143
- }
144
-
145
- return new WordArray.init(words, nBytes)
146
- }
147
- })
148
-
149
- // export const WordArray = function() {
150
- // export const WordArray = function() {
151
- // return {
152
- // /**
153
- // * Initializes a newly created word array.
154
- // *
155
- // * @param {Array} words (Optional) An array of 32-bit words.
156
- // * @param {number} sigBytes (Optional) The number of significant bytes in the words.
157
- // *
158
- // * @example
159
- // *
160
- // * let wordArray = CryptoJS.lib.WordArray.create();
161
- // * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
162
- // * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
163
- // */
164
- // init: function(words, sigBytes) {
165
- // words = this.words = words || []
166
-
167
- // if (sigBytes != undefined) {
168
- // this.sigBytes = sigBytes
169
- // } else {
170
- // this.sigBytes = words.length * 4
171
- // }
172
- // },
173
-
174
- // /**
175
- // * Converts this word array to a string.
176
- // *
177
- // * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
178
- // *
179
- // * @return {string} The stringified word array.
180
- // *
181
- // * @example
182
- // *
183
- // * let string = wordArray + '';
184
- // * let string = wordArray.toString();
185
- // * let string = wordArray.toString(CryptoJS.enc.Utf8);
186
- // */
187
- // toString: function(encoder) {
188
- // return encoder.stringify(this)
189
- // },
190
-
191
- // /**
192
- // * Concatenates a word array to this word array.
193
- // * @param {WordArray} wordArray The word array to append.
194
- // * @return {WordArray} This word array.
195
- // * @example
196
- // * wordArray1.concat(wordArray2);
197
- // */
198
- // concat: function(wordArray) {
199
- // // Shortcuts
200
- // let thisWords = this.words
201
- // let thatWords = wordArray.words
202
- // let thisSigBytes = this.sigBytes
203
- // let thatSigBytes = wordArray.sigBytes
204
-
205
- // // Clamp excess bits
206
- // this.clamp()
207
-
208
- // // Concat
209
- // if (thisSigBytes % 4) {
210
- // // Copy one byte at a time
211
- // for (let i = 0; i < thatSigBytes; i++) {
212
- // let thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
213
- // thisWords[(thisSigBytes + i) >>> 2] |=
214
- // thatByte << (24 - ((thisSigBytes + i) % 4) * 8)
215
- // }
216
- // } else if (thatWords.length > 0xffff) {
217
- // // Copy one word at a time
218
- // for (let i = 0; i < thatSigBytes; i += 4) {
219
- // thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]
220
- // }
221
- // } else {
222
- // // Copy all words at once
223
- // thisWords.push.apply(thisWords, thatWords)
224
- // }
225
- // this.sigBytes += thatSigBytes
226
-
227
- // // Chainable
228
- // return this
229
- // },
230
-
231
- // /**
232
- // * Removes insignificant bits.
233
- // *
234
- // * @example
235
- // *
236
- // * wordArray.clamp();
237
- // */
238
- // clamp: function() {
239
- // // Shortcuts
240
- // let words = this.words
241
- // let sigBytes = this.sigBytes
242
-
243
- // // Clamp
244
- // words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8)
245
- // words.length = Math.ceil(sigBytes / 4)
246
- // },
247
-
248
- // /**
249
- // * Creates a copy of this word array.
250
- // * @return {WordArray} The clone.
251
- // * @example
252
- // * let clone = wordArray.clone();
253
- // */
254
- // clone: function() {
255
- // let clone = Base.clone.call(this)
256
- // clone.words = this.words.slice(0)
257
-
258
- // return clone
259
- // },
260
-
261
- // /**
262
- // * Creates a word array filled with random bytes.
263
- // * @param {number} nBytes The number of random bytes to generate.
264
- // * @return {WordArray} The random word array.
265
- // * @static
266
- // * @example
267
- // * let wordArray = CryptoJS.lib.WordArray.random(16);
268
- // */
269
- // random: function(nBytes) {
270
- // let words = []
271
- // for (let i = 0; i < nBytes; i += 4) {
272
- // words.push((Math.random() * 0x100000000) | 0)
273
- // }
274
-
275
- // return new WordArray.init(words, nBytes)
276
- // }
277
- // }
278
- // }
1
+ import { Base } from './encoders/Base'
2
+ import { Hex } from './encoders/Hex'
3
+ /**
4
+ * An array of 32-bit words.
5
+ * @property {Array} words The array of 32-bit words.
6
+ * @property {number} sigBytes The number of significant bytes in this word array.
7
+ */
8
+
9
+ export const WordArray = Base.extend({
10
+ /**
11
+ * Initializes a newly created word array.
12
+ *
13
+ * @param {Array} words (Optional) An array of 32-bit words.
14
+ * @param {number} sigBytes (Optional) The number of significant bytes in the words.
15
+ *
16
+ * @example
17
+ *
18
+ * let wordArray = CryptoJS.lib.WordArray.create();
19
+ * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
20
+ * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
21
+ */
22
+ init: function (words, sigBytes) {
23
+ words = this.words = words || []
24
+
25
+ if (sigBytes != undefined) {
26
+ this.sigBytes = sigBytes
27
+ } else {
28
+ this.sigBytes = words.length * 4
29
+ }
30
+ },
31
+
32
+ /**
33
+ * Converts this word array to a string.
34
+ *
35
+ * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
36
+ *
37
+ * @return {string} The stringified word array.
38
+ *
39
+ * @example
40
+ *
41
+ * let string = wordArray + '';
42
+ * let string = wordArray.toString();
43
+ * let string = wordArray.toString(CryptoJS.enc.Utf8);
44
+ */
45
+ toString: function (encoder) {
46
+ return (encoder || Hex).stringify(this)
47
+ },
48
+
49
+ /**
50
+ * Concatenates a word array to this word array.
51
+ *
52
+ * @param {WordArray} wordArray The word array to append.
53
+ *
54
+ * @return {WordArray} This word array.
55
+ *
56
+ * @example
57
+ *
58
+ * wordArray1.concat(wordArray2);
59
+ */
60
+ concat: function (wordArray) {
61
+ // Shortcuts
62
+ let thisWords = this.words
63
+ let thatWords = wordArray.words
64
+ let thisSigBytes = this.sigBytes
65
+ let thatSigBytes = wordArray.sigBytes
66
+
67
+ // Clamp excess bits
68
+ this.clamp()
69
+
70
+ // Concat
71
+ if (thisSigBytes % 4) {
72
+ // Copy one byte at a time
73
+ for (let i = 0; i < thatSigBytes; i++) {
74
+ let thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
75
+ thisWords[(thisSigBytes + i) >>> 2] |=
76
+ thatByte << (24 - ((thisSigBytes + i) % 4) * 8)
77
+ }
78
+ } else if (thatWords.length > 0xffff) {
79
+ // Copy one word at a time
80
+ for (let i = 0; i < thatSigBytes; i += 4) {
81
+ thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]
82
+ }
83
+ } else {
84
+ // Copy all words at once
85
+ thisWords.push.apply(thisWords, thatWords)
86
+ }
87
+ this.sigBytes += thatSigBytes
88
+
89
+ // Chainable
90
+ return this
91
+ },
92
+
93
+ /**
94
+ * Removes insignificant bits.
95
+ *
96
+ * @example
97
+ *
98
+ * wordArray.clamp();
99
+ */
100
+ clamp: function () {
101
+ // Shortcuts
102
+ let words = this.words
103
+ let sigBytes = this.sigBytes
104
+
105
+ // Clamp
106
+ words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8)
107
+ words.length = Math.ceil(sigBytes / 4)
108
+ },
109
+
110
+ /**
111
+ * Creates a copy of this word array.
112
+ *
113
+ * @return {WordArray} The clone.
114
+ *
115
+ * @example
116
+ *
117
+ * let clone = wordArray.clone();
118
+ */
119
+ clone: function () {
120
+ let clone = Base.clone.call(this)
121
+ clone.words = this.words.slice(0)
122
+
123
+ return clone
124
+ },
125
+
126
+ /**
127
+ * Creates a word array filled with random bytes.
128
+ *
129
+ * @param {number} nBytes The number of random bytes to generate.
130
+ *
131
+ * @return {WordArray} The random word array.
132
+ *
133
+ * @static
134
+ *
135
+ * @example
136
+ *
137
+ * let wordArray = CryptoJS.lib.WordArray.random(16);
138
+ */
139
+ random: function (nBytes) {
140
+ let words = []
141
+ for (let i = 0; i < nBytes; i += 4) {
142
+ words.push((Math.random() * 0x100000000) | 0)
143
+ }
144
+
145
+ return new WordArray.init(words, nBytes)
146
+ }
147
+ })
148
+
149
+ // export const WordArray = function() {
150
+ // export const WordArray = function() {
151
+ // return {
152
+ // /**
153
+ // * Initializes a newly created word array.
154
+ // *
155
+ // * @param {Array} words (Optional) An array of 32-bit words.
156
+ // * @param {number} sigBytes (Optional) The number of significant bytes in the words.
157
+ // *
158
+ // * @example
159
+ // *
160
+ // * let wordArray = CryptoJS.lib.WordArray.create();
161
+ // * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
162
+ // * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
163
+ // */
164
+ // init: function(words, sigBytes) {
165
+ // words = this.words = words || []
166
+
167
+ // if (sigBytes != undefined) {
168
+ // this.sigBytes = sigBytes
169
+ // } else {
170
+ // this.sigBytes = words.length * 4
171
+ // }
172
+ // },
173
+
174
+ // /**
175
+ // * Converts this word array to a string.
176
+ // *
177
+ // * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
178
+ // *
179
+ // * @return {string} The stringified word array.
180
+ // *
181
+ // * @example
182
+ // *
183
+ // * let string = wordArray + '';
184
+ // * let string = wordArray.toString();
185
+ // * let string = wordArray.toString(CryptoJS.enc.Utf8);
186
+ // */
187
+ // toString: function(encoder) {
188
+ // return encoder.stringify(this)
189
+ // },
190
+
191
+ // /**
192
+ // * Concatenates a word array to this word array.
193
+ // * @param {WordArray} wordArray The word array to append.
194
+ // * @return {WordArray} This word array.
195
+ // * @example
196
+ // * wordArray1.concat(wordArray2);
197
+ // */
198
+ // concat: function(wordArray) {
199
+ // // Shortcuts
200
+ // let thisWords = this.words
201
+ // let thatWords = wordArray.words
202
+ // let thisSigBytes = this.sigBytes
203
+ // let thatSigBytes = wordArray.sigBytes
204
+
205
+ // // Clamp excess bits
206
+ // this.clamp()
207
+
208
+ // // Concat
209
+ // if (thisSigBytes % 4) {
210
+ // // Copy one byte at a time
211
+ // for (let i = 0; i < thatSigBytes; i++) {
212
+ // let thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
213
+ // thisWords[(thisSigBytes + i) >>> 2] |=
214
+ // thatByte << (24 - ((thisSigBytes + i) % 4) * 8)
215
+ // }
216
+ // } else if (thatWords.length > 0xffff) {
217
+ // // Copy one word at a time
218
+ // for (let i = 0; i < thatSigBytes; i += 4) {
219
+ // thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]
220
+ // }
221
+ // } else {
222
+ // // Copy all words at once
223
+ // thisWords.push.apply(thisWords, thatWords)
224
+ // }
225
+ // this.sigBytes += thatSigBytes
226
+
227
+ // // Chainable
228
+ // return this
229
+ // },
230
+
231
+ // /**
232
+ // * Removes insignificant bits.
233
+ // *
234
+ // * @example
235
+ // *
236
+ // * wordArray.clamp();
237
+ // */
238
+ // clamp: function() {
239
+ // // Shortcuts
240
+ // let words = this.words
241
+ // let sigBytes = this.sigBytes
242
+
243
+ // // Clamp
244
+ // words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8)
245
+ // words.length = Math.ceil(sigBytes / 4)
246
+ // },
247
+
248
+ // /**
249
+ // * Creates a copy of this word array.
250
+ // * @return {WordArray} The clone.
251
+ // * @example
252
+ // * let clone = wordArray.clone();
253
+ // */
254
+ // clone: function() {
255
+ // let clone = Base.clone.call(this)
256
+ // clone.words = this.words.slice(0)
257
+
258
+ // return clone
259
+ // },
260
+
261
+ // /**
262
+ // * Creates a word array filled with random bytes.
263
+ // * @param {number} nBytes The number of random bytes to generate.
264
+ // * @return {WordArray} The random word array.
265
+ // * @static
266
+ // * @example
267
+ // * let wordArray = CryptoJS.lib.WordArray.random(16);
268
+ // */
269
+ // random: function(nBytes) {
270
+ // let words = []
271
+ // for (let i = 0; i < nBytes; i += 4) {
272
+ // words.push((Math.random() * 0x100000000) | 0)
273
+ // }
274
+
275
+ // return new WordArray.init(words, nBytes)
276
+ // }
277
+ // }
278
+ // }