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.
- package/.editorconfig +7 -7
- package/.gitlab-ci.yml +124 -0
- package/.prettierrc +11 -11
- package/.vscode/extensions.json +8 -8
- package/.vscode/settings.json +46 -16
- package/CHANGELOG +520 -520
- package/README.md +57 -57
- package/documentation/.vitepress/config.js +114 -114
- package/documentation/api-examples.md +49 -49
- package/documentation/composants/app-base-button.md +58 -58
- package/documentation/composants/app-base-error-display.md +59 -59
- package/documentation/composants/app-base-popover.md +68 -68
- package/documentation/composants/app-comp-audio.md +75 -75
- package/documentation/composants/app-comp-branch-buttons.md +111 -111
- package/documentation/composants/app-comp-button-progress.md +53 -53
- package/documentation/composants/app-comp-carousel.md +53 -53
- package/documentation/composants/app-comp-container.md +53 -53
- package/documentation/composants/app-comp-input-checkbox-next.md +42 -42
- package/documentation/composants/app-comp-input-dropdown-next.md +34 -34
- package/documentation/composants/app-comp-input-radio-next.md +39 -39
- package/documentation/composants/app-comp-input-text-next.md +35 -35
- package/documentation/composants/app-comp-input-text-table-next.md +34 -34
- package/documentation/composants/app-comp-input-text-to-fill-dropdown-next.md +53 -53
- package/documentation/composants/app-comp-input-text-to-fill-next.md +31 -31
- package/documentation/composants/app-comp-jauge.md +31 -31
- package/documentation/composants/app-comp-menu-item.md +55 -55
- package/documentation/composants/app-comp-menu.md +29 -29
- package/documentation/composants/app-comp-navigation.md +41 -41
- package/documentation/composants/app-comp-note-call.md +53 -53
- package/documentation/composants/app-comp-note-credit.md +53 -53
- package/documentation/composants/app-comp-play-bar-next.md +53 -53
- package/documentation/composants/app-comp-pop-up-next.md +93 -93
- package/documentation/composants/app-comp-quiz-next.md +235 -235
- package/documentation/composants/app-comp-quiz-recall.md +53 -53
- package/documentation/composants/app-comp-svg-next.md +53 -53
- package/documentation/composants/app-comp-table-of-content.md +50 -50
- package/documentation/composants/app-comp-video-player.md +82 -82
- package/documentation/composants.md +46 -46
- package/documentation/composants_critiques/ModelPageComposant.md +53 -53
- package/documentation/composants_critiques/app-base-module.md +43 -43
- package/documentation/composants_critiques/app-base-page.md +48 -48
- package/documentation/composants_critiques/app-base.md +311 -311
- package/documentation/composants_critiques/main.md +15 -15
- package/documentation/demarrage.md +50 -50
- package/documentation/deploiement.md +57 -57
- package/documentation/index.md +33 -33
- package/documentation/markdown-examples.md +85 -85
- package/documentation/public/vite.svg +14 -14
- package/documentation/public/vuejs.svg +1 -1
- package/documentation/public/vuetify.svg +5 -5
- package/eslint.config.js +60 -60
- package/junit-report.xml +182 -0
- package/package.json +66 -59
- package/playwright/index.html +12 -0
- package/playwright/index.js +21 -0
- package/playwright-ct.config.js +95 -0
- package/src/$locales/en.json +157 -157
- package/src/$locales/fr.json +120 -120
- package/src/assets/data/onboardingMessages.json +47 -47
- package/src/components/AppBase.vue +1171 -1169
- package/src/components/AppBaseButton.vue +90 -95
- package/src/components/AppBaseErrorDisplay.vue +438 -438
- package/src/components/AppBaseFlipCard.vue +84 -84
- package/src/components/AppBaseModule.vue +1639 -1634
- package/src/components/AppBasePage.vue +3 -2
- package/src/components/AppBasePopover.vue +41 -41
- package/src/components/AppBaseSkeleton.vue +66 -66
- package/src/components/AppCompAudio.vue +261 -256
- package/src/components/AppCompBranchButtons.vue +508 -508
- package/src/components/AppCompButtonProgress.vue +137 -132
- package/src/components/AppCompCarousel.vue +342 -336
- package/src/components/AppCompContainer.vue +29 -29
- package/src/components/AppCompInputCheckBoxNx.vue +325 -323
- package/src/components/AppCompInputDropdownNx.vue +302 -299
- package/src/components/AppCompInputRadioNx.vue +287 -284
- package/src/components/AppCompInputTextNx.vue +156 -153
- package/src/components/AppCompInputTextTableNx.vue +205 -202
- package/src/components/AppCompInputTextToFillDropdownNx.vue +343 -340
- package/src/components/AppCompInputTextToFillNx.vue +316 -313
- package/src/components/AppCompJauge.vue +81 -81
- package/src/components/AppCompMenu.vue +6 -2
- package/src/components/AppCompMenuItem.vue +246 -240
- package/src/components/AppCompNavigation.vue +977 -972
- package/src/components/AppCompNoteCall.vue +167 -161
- package/src/components/AppCompNoteCredit.vue +496 -491
- package/src/components/AppCompPlayBarNext.vue +2290 -2288
- package/src/components/AppCompPopUpNext.vue +508 -504
- package/src/components/AppCompQuizNext.vue +515 -510
- package/src/components/AppCompQuizRecall.vue +355 -350
- package/src/components/AppCompSVGNext.vue +346 -346
- package/src/components/AppCompSettingsMenu.vue +177 -172
- package/src/components/AppCompTableOfContent.vue +433 -427
- package/src/components/AppCompVideoPlayer.vue +377 -377
- package/src/components/AppCompViewDisplay.vue +6 -6
- package/src/components/BaseModule.vue +55 -55
- package/src/composables/useIdleDetector.js +56 -56
- package/src/composables/useQuiz.js +89 -89
- package/src/composables/useTimer.js +172 -172
- package/src/directives/nvdaFix.js +53 -53
- package/src/externalComps/ModuleView.vue +22 -22
- package/src/externalComps/SummaryView.vue +91 -91
- package/src/main.js +493 -476
- package/src/module/stores/appStore.js +960 -947
- package/src/module/xapi/ADL.js +520 -520
- package/src/module/xapi/Crypto/Hasher.js +241 -241
- package/src/module/xapi/Crypto/WordArray.js +278 -278
- package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
- package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
- package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
- package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
- package/src/module/xapi/Crypto/encoders/Base.js +105 -105
- package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
- package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
- package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
- package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
- package/src/module/xapi/Crypto/index.js +53 -53
- package/src/module/xapi/Statement/activity.js +47 -47
- package/src/module/xapi/Statement/agent.js +55 -55
- package/src/module/xapi/Statement/group.js +26 -26
- package/src/module/xapi/Statement/index.js +259 -259
- package/src/module/xapi/Statement/statement.js +253 -253
- package/src/module/xapi/Statement/statementRef.js +23 -23
- package/src/module/xapi/Statement/substatement.js +22 -22
- package/src/module/xapi/Statement/verb.js +36 -36
- package/src/module/xapi/activitytypes.js +17 -17
- package/src/module/xapi/launch.js +157 -157
- package/src/module/xapi/utils.js +167 -167
- package/src/module/xapi/verbs.js +294 -294
- package/src/module/xapi/wrapper.js +1895 -1895
- package/src/module/xapi/xapiStatement.js +444 -444
- package/src/plugins/analytics.js +34 -34
- package/src/plugins/bus.js +12 -8
- package/src/plugins/gsap.js +17 -15
- package/src/plugins/helper.js +355 -358
- package/src/plugins/i18n.js +27 -26
- package/src/plugins/idb.js +227 -227
- package/src/plugins/save.js +37 -37
- package/src/plugins/scorm.js +287 -287
- package/src/plugins/xapi.js +11 -11
- package/src/public/index.html +33 -33
- package/src/router/index.js +57 -57
- package/src/router/routes.js +312 -312
- package/src/shared/generalfuncs.js +344 -344
- package/src/shared/validators.js +1018 -1018
- package/tests/component/AppBaseButton.spec.js +53 -0
- package/tests/component/pinia.spec.js +24 -0
- package/{src/components/tests__ → tests/unit}/AppBaseButton.spec.js +53 -53
- package/tests/unit/AppCompInputCheckBoxNx.spec.js +59 -0
- package/tests/unit/AppCompInputDropdownNx.spec.js +51 -0
- package/tests/unit/AppCompInputRadioNx.spec.js +59 -0
- package/tests/unit/AppCompInputTextNx.spec.js +44 -0
- package/tests/unit/AppCompInputTextTableNx.spec.js +77 -0
- package/tests/unit/AppCompInputTextToFillDropdownNx.spec.js +60 -0
- package/tests/unit/AppCompInputTextToFillNx.spec.js +45 -0
- package/tests/unit/AppCompQuizNext.spec.js +114 -0
- package/tests/unit/AppCompVideoPlayer.spec.js +177 -0
- package/{src/components/tests__ → tests/unit}/useTimer.spec.js +91 -91
- package/vitest.config.js +28 -19
- package/vitest.setup.js +28 -0
- 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
|
+
// }
|