adapt-authoring-adaptframework 2.3.3 → 2.4.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.
- package/adapt-authoring.json +3 -0
- package/errors/errors.json +9 -0
- package/lib/AdaptFrameworkModule.js +51 -6
- package/package.json +1 -2
package/adapt-authoring.json
CHANGED
package/errors/errors.json
CHANGED
|
@@ -126,5 +126,14 @@
|
|
|
126
126
|
},
|
|
127
127
|
"description": "Plugin is missing a dependency",
|
|
128
128
|
"statusCode": 500
|
|
129
|
+
},
|
|
130
|
+
"FW_VERSION_NOT_ALLOWED": {
|
|
131
|
+
"data": {
|
|
132
|
+
"version": "The version that is not allowed",
|
|
133
|
+
"targetMajorVersion": "The allowed major version number",
|
|
134
|
+
"allowedRange": "The allowed semver range"
|
|
135
|
+
},
|
|
136
|
+
"description": "Framework version is outside the allowed major version",
|
|
137
|
+
"statusCode": 400
|
|
129
138
|
}
|
|
130
139
|
}
|
|
@@ -70,12 +70,21 @@ class AdaptFrameworkModule extends AbstractModule {
|
|
|
70
70
|
*/
|
|
71
71
|
this.contentMigrations = []
|
|
72
72
|
|
|
73
|
+
const meta = await readJson(path.resolve(this.rootDir, 'adapt-authoring.json'))
|
|
74
|
+
/**
|
|
75
|
+
* The major version of the Adapt framework this module is designed to work with
|
|
76
|
+
* @type {Number}
|
|
77
|
+
*/
|
|
78
|
+
this._targetFrameworkVersion = meta.framework?.targetVersion
|
|
79
|
+
|
|
73
80
|
this.app.waitForModule('content').then(content => {
|
|
74
81
|
content.accessCheckHook.tap(this.checkContentAccess.bind(this))
|
|
75
82
|
})
|
|
76
83
|
|
|
77
84
|
await this.installFramework()
|
|
78
85
|
|
|
86
|
+
process.env.BROWSERSLIST_IGNORE_OLD_DATA = '1'
|
|
87
|
+
|
|
79
88
|
if (this.app.args['update-framework'] === true) {
|
|
80
89
|
await this.updateFramework()
|
|
81
90
|
}
|
|
@@ -101,6 +110,36 @@ class AdaptFrameworkModule extends AbstractModule {
|
|
|
101
110
|
return this._version
|
|
102
111
|
}
|
|
103
112
|
|
|
113
|
+
/**
|
|
114
|
+
* The major version of the Adapt framework this module is designed to work with
|
|
115
|
+
* @type {Number|undefined}
|
|
116
|
+
*/
|
|
117
|
+
get targetFrameworkVersion () {
|
|
118
|
+
return this._targetFrameworkVersion
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Returns a semver range string constrained to the target major version, or undefined if no target is set
|
|
123
|
+
* @type {String|undefined}
|
|
124
|
+
*/
|
|
125
|
+
get targetVersionRange () {
|
|
126
|
+
if (this._targetFrameworkVersion === undefined) return undefined
|
|
127
|
+
return `>=${this._targetFrameworkVersion}.0.0 <${this._targetFrameworkVersion + 1}.0.0`
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Checks whether the given version is compatible with the configured target major version
|
|
132
|
+
* @param {string} version Semver version string to check
|
|
133
|
+
* @throws If the version's major does not match the target major version
|
|
134
|
+
*/
|
|
135
|
+
checkVersionCompatibility (version) {
|
|
136
|
+
if (this._targetFrameworkVersion === undefined) return
|
|
137
|
+
const major = semver.major(version)
|
|
138
|
+
if (major !== this._targetFrameworkVersion) {
|
|
139
|
+
throw this.app.errors.FW_VERSION_NOT_ALLOWED.setData({ version, targetMajorVersion: this._targetFrameworkVersion, allowedRange: this.targetVersionRange })
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
104
143
|
/**
|
|
105
144
|
* Installs a local copy of the Adapt framework
|
|
106
145
|
* @return {Promise}
|
|
@@ -119,10 +158,13 @@ class AdaptFrameworkModule extends AbstractModule {
|
|
|
119
158
|
} catch (e) {
|
|
120
159
|
// package is missing, an install is required
|
|
121
160
|
}
|
|
122
|
-
|
|
161
|
+
if (version) {
|
|
162
|
+
this.checkVersionCompatibility(version)
|
|
163
|
+
}
|
|
164
|
+
await this.runCliCommand('installFramework', { version: version ?? this.targetVersionRange })
|
|
123
165
|
} catch (e) {
|
|
124
166
|
this.log('error', `failed to install framework, ${e.message}`)
|
|
125
|
-
throw this.app.errors.FW_INSTALL_FAILED.setData({ reason: e.message })
|
|
167
|
+
throw e.statusCode ? e : this.app.errors.FW_INSTALL_FAILED.setData({ reason: e.message })
|
|
126
168
|
}
|
|
127
169
|
this.log('verbose', 'INSTALL hook invoke')
|
|
128
170
|
await this.postInstallHook.invoke()
|
|
@@ -134,7 +176,7 @@ class AdaptFrameworkModule extends AbstractModule {
|
|
|
134
176
|
*/
|
|
135
177
|
async getLatestVersion () {
|
|
136
178
|
try {
|
|
137
|
-
return semver.clean(await this.runCliCommand('getLatestFrameworkVersion'))
|
|
179
|
+
return semver.clean(await this.runCliCommand('getLatestFrameworkVersion', { version: this.targetVersionRange }))
|
|
138
180
|
} catch (e) {
|
|
139
181
|
this.log('error', `failed to retrieve framework update data, ${e.message}`)
|
|
140
182
|
throw this.app.errors.FW_LATEST_VERSION_FAILED.setData({ reason: e.message })
|
|
@@ -165,11 +207,14 @@ class AdaptFrameworkModule extends AbstractModule {
|
|
|
165
207
|
*/
|
|
166
208
|
async updateFramework (version) {
|
|
167
209
|
try {
|
|
168
|
-
|
|
210
|
+
if (version) {
|
|
211
|
+
this.checkVersionCompatibility(version)
|
|
212
|
+
}
|
|
213
|
+
await this.runCliCommand('updateFramework', { version: version ?? this.targetVersionRange })
|
|
169
214
|
this._version = await this.runCliCommand('getCurrentFrameworkVersion')
|
|
170
215
|
} catch (e) {
|
|
171
216
|
this.log('error', `failed to update framework, ${e.message}`)
|
|
172
|
-
throw this.app.errors.FW_UPDATE_FAILED.setData({ reason: e.message })
|
|
217
|
+
throw e.statusCode ? e : this.app.errors.FW_UPDATE_FAILED.setData({ reason: e.message })
|
|
173
218
|
}
|
|
174
219
|
this.postUpdateHook.invoke()
|
|
175
220
|
}
|
|
@@ -179,7 +224,7 @@ class AdaptFrameworkModule extends AbstractModule {
|
|
|
179
224
|
*/
|
|
180
225
|
async logStatus () {
|
|
181
226
|
const current = this.version
|
|
182
|
-
const latest = await this.
|
|
227
|
+
const latest = await this.getLatestVersion()
|
|
183
228
|
|
|
184
229
|
this.log('info', `local adapt_framework v${current} installed`)
|
|
185
230
|
if (semver.lt(current, latest)) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adapt-authoring-adaptframework",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Adapt framework integration for the Adapt authoring tool",
|
|
5
5
|
"homepage": "https://github.com/adapt-security/adapt-authoring-adaptframework",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
"test": "node --test --test-force-exit --experimental-test-module-mocks 'tests/**/*.spec.js'"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"adapt-authoring-browserslist": "^1.3.4",
|
|
15
14
|
"adapt-authoring-content": "^2.0.0",
|
|
16
15
|
"adapt-authoring-contentplugin": "^1.0.3",
|
|
17
16
|
"adapt-authoring-core": "^2.0.0",
|