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,105 +1,105 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base object for prototypal inheritance.
|
|
3
|
-
*/
|
|
4
|
-
export const Base = {
|
|
5
|
-
F: function () {},
|
|
6
|
-
/**
|
|
7
|
-
* Creates a new object that inherits from this object.
|
|
8
|
-
* @param {Object} overrides Properties to copy into the new object.
|
|
9
|
-
* @return {Object} The new object.
|
|
10
|
-
* @static
|
|
11
|
-
* @example
|
|
12
|
-
* var MyType = CryptoJS.lib.Base.extend({
|
|
13
|
-
* field: 'value',
|
|
14
|
-
*
|
|
15
|
-
* method: function () {
|
|
16
|
-
* }
|
|
17
|
-
* });
|
|
18
|
-
*/
|
|
19
|
-
extend: function (overrides) {
|
|
20
|
-
// Spawn
|
|
21
|
-
this.F.prototype = this
|
|
22
|
-
var subtype = new this.F()
|
|
23
|
-
|
|
24
|
-
// Augment
|
|
25
|
-
if (overrides) {
|
|
26
|
-
subtype.mixIn(overrides)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// Create default initializer
|
|
30
|
-
// if (!subtype.hasOwnProperty('init')) {
|
|
31
|
-
if (!Object.prototype.hasOwnProperty.call(subtype, 'init')) {
|
|
32
|
-
subtype.init = function () {
|
|
33
|
-
subtype.$super.init.apply(this, arguments)
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Initializer's prototype is the subtype object
|
|
38
|
-
subtype.init.prototype = subtype
|
|
39
|
-
|
|
40
|
-
// Reference supertype
|
|
41
|
-
subtype.$super = this
|
|
42
|
-
|
|
43
|
-
return subtype
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Extends this object and runs the init method.
|
|
48
|
-
* Arguments to create() will be passed to init().
|
|
49
|
-
* @return {Object} The new object.
|
|
50
|
-
* @static
|
|
51
|
-
* @example
|
|
52
|
-
* var instance = MyType.create();
|
|
53
|
-
*/
|
|
54
|
-
create: function () {
|
|
55
|
-
var instance = this.extend()
|
|
56
|
-
instance.init.apply(instance, arguments)
|
|
57
|
-
|
|
58
|
-
return instance
|
|
59
|
-
},
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Initializes a newly created object.
|
|
63
|
-
* Override this method to add some logic when your objects are created.
|
|
64
|
-
* @example
|
|
65
|
-
* var MyType = CryptoJS.lib.Base.extend({
|
|
66
|
-
* init: function () {
|
|
67
|
-
* // ...
|
|
68
|
-
* }
|
|
69
|
-
* });
|
|
70
|
-
*/
|
|
71
|
-
init: function () {},
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Copies properties into this object.
|
|
75
|
-
* @param {Object} properties The properties to mix in.
|
|
76
|
-
* @example
|
|
77
|
-
* MyType.mixIn({
|
|
78
|
-
* field: 'value'
|
|
79
|
-
* });
|
|
80
|
-
*/
|
|
81
|
-
mixIn: function (properties) {
|
|
82
|
-
for (var propertyName in properties) {
|
|
83
|
-
// if (properties.hasOwnProperty(propertyName)) {
|
|
84
|
-
if (Object.prototype.hasOwnProperty.call(properties, propertyName)) {
|
|
85
|
-
this[propertyName] = properties[propertyName]
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// IE won't copy toString using the loop above
|
|
90
|
-
//if (properties.hasOwnProperty('toString')) {
|
|
91
|
-
if (Object.prototype.hasOwnProperty.call(properties, 'toString')) {
|
|
92
|
-
this.toString = properties.toString
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Creates a copy of this object.
|
|
98
|
-
* @return {Object} The clone.
|
|
99
|
-
* @example
|
|
100
|
-
* var clone = instance.clone();
|
|
101
|
-
*/
|
|
102
|
-
clone: function () {
|
|
103
|
-
return this.init.prototype.extend(this)
|
|
104
|
-
}
|
|
105
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Base object for prototypal inheritance.
|
|
3
|
+
*/
|
|
4
|
+
export const Base = {
|
|
5
|
+
F: function () {},
|
|
6
|
+
/**
|
|
7
|
+
* Creates a new object that inherits from this object.
|
|
8
|
+
* @param {Object} overrides Properties to copy into the new object.
|
|
9
|
+
* @return {Object} The new object.
|
|
10
|
+
* @static
|
|
11
|
+
* @example
|
|
12
|
+
* var MyType = CryptoJS.lib.Base.extend({
|
|
13
|
+
* field: 'value',
|
|
14
|
+
*
|
|
15
|
+
* method: function () {
|
|
16
|
+
* }
|
|
17
|
+
* });
|
|
18
|
+
*/
|
|
19
|
+
extend: function (overrides) {
|
|
20
|
+
// Spawn
|
|
21
|
+
this.F.prototype = this
|
|
22
|
+
var subtype = new this.F()
|
|
23
|
+
|
|
24
|
+
// Augment
|
|
25
|
+
if (overrides) {
|
|
26
|
+
subtype.mixIn(overrides)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Create default initializer
|
|
30
|
+
// if (!subtype.hasOwnProperty('init')) {
|
|
31
|
+
if (!Object.prototype.hasOwnProperty.call(subtype, 'init')) {
|
|
32
|
+
subtype.init = function () {
|
|
33
|
+
subtype.$super.init.apply(this, arguments)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Initializer's prototype is the subtype object
|
|
38
|
+
subtype.init.prototype = subtype
|
|
39
|
+
|
|
40
|
+
// Reference supertype
|
|
41
|
+
subtype.$super = this
|
|
42
|
+
|
|
43
|
+
return subtype
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Extends this object and runs the init method.
|
|
48
|
+
* Arguments to create() will be passed to init().
|
|
49
|
+
* @return {Object} The new object.
|
|
50
|
+
* @static
|
|
51
|
+
* @example
|
|
52
|
+
* var instance = MyType.create();
|
|
53
|
+
*/
|
|
54
|
+
create: function () {
|
|
55
|
+
var instance = this.extend()
|
|
56
|
+
instance.init.apply(instance, arguments)
|
|
57
|
+
|
|
58
|
+
return instance
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Initializes a newly created object.
|
|
63
|
+
* Override this method to add some logic when your objects are created.
|
|
64
|
+
* @example
|
|
65
|
+
* var MyType = CryptoJS.lib.Base.extend({
|
|
66
|
+
* init: function () {
|
|
67
|
+
* // ...
|
|
68
|
+
* }
|
|
69
|
+
* });
|
|
70
|
+
*/
|
|
71
|
+
init: function () {},
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Copies properties into this object.
|
|
75
|
+
* @param {Object} properties The properties to mix in.
|
|
76
|
+
* @example
|
|
77
|
+
* MyType.mixIn({
|
|
78
|
+
* field: 'value'
|
|
79
|
+
* });
|
|
80
|
+
*/
|
|
81
|
+
mixIn: function (properties) {
|
|
82
|
+
for (var propertyName in properties) {
|
|
83
|
+
// if (properties.hasOwnProperty(propertyName)) {
|
|
84
|
+
if (Object.prototype.hasOwnProperty.call(properties, propertyName)) {
|
|
85
|
+
this[propertyName] = properties[propertyName]
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// IE won't copy toString using the loop above
|
|
90
|
+
//if (properties.hasOwnProperty('toString')) {
|
|
91
|
+
if (Object.prototype.hasOwnProperty.call(properties, 'toString')) {
|
|
92
|
+
this.toString = properties.toString
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Creates a copy of this object.
|
|
98
|
+
* @return {Object} The clone.
|
|
99
|
+
* @example
|
|
100
|
+
* var clone = instance.clone();
|
|
101
|
+
*/
|
|
102
|
+
clone: function () {
|
|
103
|
+
return this.init.prototype.extend(this)
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
import { WordArray } from '../WordArray'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Base64 encoding strategy.
|
|
5
|
-
*/
|
|
6
|
-
export const Base64 = function () {
|
|
7
|
-
return {
|
|
8
|
-
/**
|
|
9
|
-
* Converts a word array to a Base64 string.
|
|
10
|
-
*
|
|
11
|
-
* @param {WordArray} wordArray The word array.
|
|
12
|
-
*
|
|
13
|
-
* @return {string} The Base64 string.
|
|
14
|
-
*
|
|
15
|
-
* @static
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
*
|
|
19
|
-
* var base64String = CryptoJS.enc.Base64.stringify(wordArray);
|
|
20
|
-
*/
|
|
21
|
-
stringify: function (wordArray) {
|
|
22
|
-
// Shortcuts
|
|
23
|
-
var words = wordArray.words
|
|
24
|
-
var sigBytes = wordArray.sigBytes
|
|
25
|
-
var map = this._map
|
|
26
|
-
|
|
27
|
-
// Clamp excess bits
|
|
28
|
-
wordArray.clamp()
|
|
29
|
-
|
|
30
|
-
// Convert
|
|
31
|
-
var base64Chars = []
|
|
32
|
-
for (var i = 0; i < sigBytes; i += 3) {
|
|
33
|
-
var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
|
|
34
|
-
var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff
|
|
35
|
-
var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff
|
|
36
|
-
|
|
37
|
-
var triplet = (byte1 << 16) | (byte2 << 8) | byte3
|
|
38
|
-
|
|
39
|
-
for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {
|
|
40
|
-
base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f))
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// Add padding
|
|
45
|
-
var paddingChar = map.charAt(64)
|
|
46
|
-
if (paddingChar) {
|
|
47
|
-
while (base64Chars.length % 4) {
|
|
48
|
-
base64Chars.push(paddingChar)
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return base64Chars.join('')
|
|
53
|
-
},
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Converts a Base64 string to a word array.
|
|
57
|
-
*
|
|
58
|
-
* @param {string} base64Str The Base64 string.
|
|
59
|
-
*
|
|
60
|
-
* @return {WordArray} The word array.
|
|
61
|
-
*
|
|
62
|
-
* @static
|
|
63
|
-
*
|
|
64
|
-
* @example
|
|
65
|
-
*
|
|
66
|
-
* var wordArray = CryptoJS.enc.Base64.parse(base64String);
|
|
67
|
-
*/
|
|
68
|
-
parse: function (base64Str) {
|
|
69
|
-
// Shortcuts
|
|
70
|
-
var base64StrLength = base64Str.length
|
|
71
|
-
var map = this._map
|
|
72
|
-
|
|
73
|
-
// Ignore padding
|
|
74
|
-
var paddingChar = map.charAt(64)
|
|
75
|
-
if (paddingChar) {
|
|
76
|
-
var paddingIndex = base64Str.indexOf(paddingChar)
|
|
77
|
-
if (paddingIndex != -1) {
|
|
78
|
-
base64StrLength = paddingIndex
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Convert
|
|
83
|
-
var words = []
|
|
84
|
-
var nBytes = 0
|
|
85
|
-
for (var i = 0; i < base64StrLength; i++) {
|
|
86
|
-
if (i % 4) {
|
|
87
|
-
var bits1 = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2)
|
|
88
|
-
var bits2 = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2)
|
|
89
|
-
words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8)
|
|
90
|
-
nBytes++
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return WordArray.create(words, nBytes)
|
|
95
|
-
},
|
|
96
|
-
|
|
97
|
-
_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
|
|
98
|
-
}
|
|
99
|
-
}
|
|
1
|
+
import { WordArray } from '../WordArray'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Base64 encoding strategy.
|
|
5
|
+
*/
|
|
6
|
+
export const Base64 = function () {
|
|
7
|
+
return {
|
|
8
|
+
/**
|
|
9
|
+
* Converts a word array to a Base64 string.
|
|
10
|
+
*
|
|
11
|
+
* @param {WordArray} wordArray The word array.
|
|
12
|
+
*
|
|
13
|
+
* @return {string} The Base64 string.
|
|
14
|
+
*
|
|
15
|
+
* @static
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
*
|
|
19
|
+
* var base64String = CryptoJS.enc.Base64.stringify(wordArray);
|
|
20
|
+
*/
|
|
21
|
+
stringify: function (wordArray) {
|
|
22
|
+
// Shortcuts
|
|
23
|
+
var words = wordArray.words
|
|
24
|
+
var sigBytes = wordArray.sigBytes
|
|
25
|
+
var map = this._map
|
|
26
|
+
|
|
27
|
+
// Clamp excess bits
|
|
28
|
+
wordArray.clamp()
|
|
29
|
+
|
|
30
|
+
// Convert
|
|
31
|
+
var base64Chars = []
|
|
32
|
+
for (var i = 0; i < sigBytes; i += 3) {
|
|
33
|
+
var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
|
|
34
|
+
var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff
|
|
35
|
+
var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff
|
|
36
|
+
|
|
37
|
+
var triplet = (byte1 << 16) | (byte2 << 8) | byte3
|
|
38
|
+
|
|
39
|
+
for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {
|
|
40
|
+
base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f))
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Add padding
|
|
45
|
+
var paddingChar = map.charAt(64)
|
|
46
|
+
if (paddingChar) {
|
|
47
|
+
while (base64Chars.length % 4) {
|
|
48
|
+
base64Chars.push(paddingChar)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return base64Chars.join('')
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Converts a Base64 string to a word array.
|
|
57
|
+
*
|
|
58
|
+
* @param {string} base64Str The Base64 string.
|
|
59
|
+
*
|
|
60
|
+
* @return {WordArray} The word array.
|
|
61
|
+
*
|
|
62
|
+
* @static
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
*
|
|
66
|
+
* var wordArray = CryptoJS.enc.Base64.parse(base64String);
|
|
67
|
+
*/
|
|
68
|
+
parse: function (base64Str) {
|
|
69
|
+
// Shortcuts
|
|
70
|
+
var base64StrLength = base64Str.length
|
|
71
|
+
var map = this._map
|
|
72
|
+
|
|
73
|
+
// Ignore padding
|
|
74
|
+
var paddingChar = map.charAt(64)
|
|
75
|
+
if (paddingChar) {
|
|
76
|
+
var paddingIndex = base64Str.indexOf(paddingChar)
|
|
77
|
+
if (paddingIndex != -1) {
|
|
78
|
+
base64StrLength = paddingIndex
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Convert
|
|
83
|
+
var words = []
|
|
84
|
+
var nBytes = 0
|
|
85
|
+
for (var i = 0; i < base64StrLength; i++) {
|
|
86
|
+
if (i % 4) {
|
|
87
|
+
var bits1 = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2)
|
|
88
|
+
var bits2 = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2)
|
|
89
|
+
words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8)
|
|
90
|
+
nBytes++
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return WordArray.create(words, nBytes)
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
import { WordArray } from '../WordArray'
|
|
2
|
-
/**
|
|
3
|
-
* Hex encoding strategy.
|
|
4
|
-
*/
|
|
5
|
-
export const Hex = {
|
|
6
|
-
/**
|
|
7
|
-
* Converts a word array to a hex string.
|
|
8
|
-
*
|
|
9
|
-
* @param {WordArray} wordArray The word array.
|
|
10
|
-
*
|
|
11
|
-
* @return {string} The hex string.
|
|
12
|
-
*
|
|
13
|
-
* @static
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
*
|
|
17
|
-
* var hexString = CryptoJS.enc.Hex.stringify(wordArray);
|
|
18
|
-
*/
|
|
19
|
-
stringify: function (wordArray) {
|
|
20
|
-
// Shortcuts
|
|
21
|
-
var words = wordArray.words
|
|
22
|
-
var sigBytes = wordArray.sigBytes
|
|
23
|
-
|
|
24
|
-
// Convert
|
|
25
|
-
var hexChars = []
|
|
26
|
-
for (var i = 0; i < sigBytes; i++) {
|
|
27
|
-
var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
|
|
28
|
-
hexChars.push((bite >>> 4).toString(16))
|
|
29
|
-
hexChars.push((bite & 0x0f).toString(16))
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return hexChars.join('')
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Converts a hex string to a word array.
|
|
37
|
-
*
|
|
38
|
-
* @param {string} hexStr The hex string.
|
|
39
|
-
*
|
|
40
|
-
* @return {WordArray} The word array.
|
|
41
|
-
*
|
|
42
|
-
* @static
|
|
43
|
-
*
|
|
44
|
-
* @example
|
|
45
|
-
*
|
|
46
|
-
* var wordArray = CryptoJS.enc.Hex.parse(hexString);
|
|
47
|
-
*/
|
|
48
|
-
parse: function (hexStr) {
|
|
49
|
-
// Shortcut
|
|
50
|
-
var hexStrLength = hexStr.length
|
|
51
|
-
|
|
52
|
-
// Convert
|
|
53
|
-
var words = []
|
|
54
|
-
for (var i = 0; i < hexStrLength; i += 2) {
|
|
55
|
-
words[i >>> 3] |=
|
|
56
|
-
parseInt(hexStr.substring(i, 2), 16) << (24 - (i % 8) * 4)
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return new WordArray.init(words, hexStrLength / 2)
|
|
60
|
-
}
|
|
61
|
-
}
|
|
1
|
+
import { WordArray } from '../WordArray'
|
|
2
|
+
/**
|
|
3
|
+
* Hex encoding strategy.
|
|
4
|
+
*/
|
|
5
|
+
export const Hex = {
|
|
6
|
+
/**
|
|
7
|
+
* Converts a word array to a hex string.
|
|
8
|
+
*
|
|
9
|
+
* @param {WordArray} wordArray The word array.
|
|
10
|
+
*
|
|
11
|
+
* @return {string} The hex string.
|
|
12
|
+
*
|
|
13
|
+
* @static
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
*
|
|
17
|
+
* var hexString = CryptoJS.enc.Hex.stringify(wordArray);
|
|
18
|
+
*/
|
|
19
|
+
stringify: function (wordArray) {
|
|
20
|
+
// Shortcuts
|
|
21
|
+
var words = wordArray.words
|
|
22
|
+
var sigBytes = wordArray.sigBytes
|
|
23
|
+
|
|
24
|
+
// Convert
|
|
25
|
+
var hexChars = []
|
|
26
|
+
for (var i = 0; i < sigBytes; i++) {
|
|
27
|
+
var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
|
|
28
|
+
hexChars.push((bite >>> 4).toString(16))
|
|
29
|
+
hexChars.push((bite & 0x0f).toString(16))
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return hexChars.join('')
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Converts a hex string to a word array.
|
|
37
|
+
*
|
|
38
|
+
* @param {string} hexStr The hex string.
|
|
39
|
+
*
|
|
40
|
+
* @return {WordArray} The word array.
|
|
41
|
+
*
|
|
42
|
+
* @static
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
*
|
|
46
|
+
* var wordArray = CryptoJS.enc.Hex.parse(hexString);
|
|
47
|
+
*/
|
|
48
|
+
parse: function (hexStr) {
|
|
49
|
+
// Shortcut
|
|
50
|
+
var hexStrLength = hexStr.length
|
|
51
|
+
|
|
52
|
+
// Convert
|
|
53
|
+
var words = []
|
|
54
|
+
for (var i = 0; i < hexStrLength; i += 2) {
|
|
55
|
+
words[i >>> 3] |=
|
|
56
|
+
parseInt(hexStr.substring(i, 2), 16) << (24 - (i % 8) * 4)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return new WordArray.init(words, hexStrLength / 2)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
import { WordArray } from '../WordArray'
|
|
2
|
-
/**
|
|
3
|
-
* Latin1 encoding strategy.
|
|
4
|
-
*/
|
|
5
|
-
export const Latin1 = function () {
|
|
6
|
-
return {
|
|
7
|
-
/**
|
|
8
|
-
* Converts a word array to a Latin1 string.
|
|
9
|
-
*
|
|
10
|
-
* @param {WordArray} wordArray The word array.
|
|
11
|
-
*
|
|
12
|
-
* @return {string} The Latin1 string.
|
|
13
|
-
*
|
|
14
|
-
* @static
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
*
|
|
18
|
-
* var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
|
|
19
|
-
*/
|
|
20
|
-
stringify: function (wordArray) {
|
|
21
|
-
// Shortcuts
|
|
22
|
-
var words = wordArray.words
|
|
23
|
-
var sigBytes = wordArray.sigBytes
|
|
24
|
-
|
|
25
|
-
// Convert
|
|
26
|
-
var latin1Chars = []
|
|
27
|
-
for (var i = 0; i < sigBytes; i++) {
|
|
28
|
-
var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
|
|
29
|
-
latin1Chars.push(String.fromCharCode(bite))
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return latin1Chars.join('')
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Converts a Latin1 string to a word array.
|
|
37
|
-
*
|
|
38
|
-
* @param {string} latin1Str The Latin1 string.
|
|
39
|
-
*
|
|
40
|
-
* @return {WordArray} The word array.
|
|
41
|
-
*
|
|
42
|
-
* @static
|
|
43
|
-
*
|
|
44
|
-
* @example
|
|
45
|
-
*
|
|
46
|
-
* var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
|
|
47
|
-
*/
|
|
48
|
-
parse: function (latin1Str) {
|
|
49
|
-
// Shortcut
|
|
50
|
-
var latin1StrLength = latin1Str.length
|
|
51
|
-
|
|
52
|
-
// Convert
|
|
53
|
-
var words = []
|
|
54
|
-
for (var i = 0; i < latin1StrLength; i++) {
|
|
55
|
-
words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return new WordArray.init(words, latin1StrLength)
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
1
|
+
import { WordArray } from '../WordArray'
|
|
2
|
+
/**
|
|
3
|
+
* Latin1 encoding strategy.
|
|
4
|
+
*/
|
|
5
|
+
export const Latin1 = function () {
|
|
6
|
+
return {
|
|
7
|
+
/**
|
|
8
|
+
* Converts a word array to a Latin1 string.
|
|
9
|
+
*
|
|
10
|
+
* @param {WordArray} wordArray The word array.
|
|
11
|
+
*
|
|
12
|
+
* @return {string} The Latin1 string.
|
|
13
|
+
*
|
|
14
|
+
* @static
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
*
|
|
18
|
+
* var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
|
|
19
|
+
*/
|
|
20
|
+
stringify: function (wordArray) {
|
|
21
|
+
// Shortcuts
|
|
22
|
+
var words = wordArray.words
|
|
23
|
+
var sigBytes = wordArray.sigBytes
|
|
24
|
+
|
|
25
|
+
// Convert
|
|
26
|
+
var latin1Chars = []
|
|
27
|
+
for (var i = 0; i < sigBytes; i++) {
|
|
28
|
+
var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
|
|
29
|
+
latin1Chars.push(String.fromCharCode(bite))
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return latin1Chars.join('')
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Converts a Latin1 string to a word array.
|
|
37
|
+
*
|
|
38
|
+
* @param {string} latin1Str The Latin1 string.
|
|
39
|
+
*
|
|
40
|
+
* @return {WordArray} The word array.
|
|
41
|
+
*
|
|
42
|
+
* @static
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
*
|
|
46
|
+
* var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
|
|
47
|
+
*/
|
|
48
|
+
parse: function (latin1Str) {
|
|
49
|
+
// Shortcut
|
|
50
|
+
var latin1StrLength = latin1Str.length
|
|
51
|
+
|
|
52
|
+
// Convert
|
|
53
|
+
var words = []
|
|
54
|
+
for (var i = 0; i < latin1StrLength; i++) {
|
|
55
|
+
words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return new WordArray.init(words, latin1StrLength)
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|