@byu-oit/nuxt-common 3.0.0-beta.0 → 3.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.
- package/README.md +27 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/plugins/appDynamics.js +2 -2
- package/dist/plugins/axios.js +7 -8
- package/dist/plugins/axios.js.map +1 -1
- package/dist/plugins/filters.js +1 -1
- package/dist/plugins/implicit-grant.js +31 -18
- package/dist/plugins/implicit-grant.js.map +1 -1
- package/dist/plugins/vuetify-dialog.js.map +1 -1
- package/package.json +141 -52
package/README.md
CHANGED
|
@@ -1,7 +1,33 @@
|
|
|
1
|
-
# Nuxt
|
|
1
|
+
# Nuxt common library
|
|
2
2
|
|
|
3
3
|
Common packages, plus a small set of plugins, for OIT Vue frontend apps
|
|
4
4
|
|
|
5
|
+
# IMPORTANT
|
|
6
|
+
|
|
7
|
+
This package uses Nuxt 2, which has some... quirks when used with Node 18 or above.
|
|
8
|
+
To get a clean installation, you *must* use the `--legacy-peer-deps` flag for the *initial* installation:
|
|
9
|
+
|
|
10
|
+
- DELETE any existing `package-lock.json`
|
|
11
|
+
- Run `npm install --legacy-peer-deps`
|
|
12
|
+
- Bizarrely, you can now run `npm install` without that legacy flag; the resulting package-lock will be *different* than
|
|
13
|
+
if you run it without first running the legacy-flag version
|
|
14
|
+
|
|
15
|
+
One of the sub-dependencies of Nuxt 2 also requires a legacy OpenSSL environment flag for all nuxt commands.
|
|
16
|
+
In your package.json, for each script that runs the `nuxt` command, prepend
|
|
17
|
+
```
|
|
18
|
+
cross-env NODE_OPTIONS=--openssl-legacy-provider
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
For example:
|
|
22
|
+
```json
|
|
23
|
+
"scripts": {
|
|
24
|
+
"dev": "cross-env NODE_OPTIONS=--openssl-legacy-provider nuxt",
|
|
25
|
+
"build": "cross-env NODE_OPTIONS=--openssl-legacy-provider nuxt build",
|
|
26
|
+
"start": "cross-env NODE_OPTIONS=--openssl-legacy-provider nuxt start",
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
|
|
5
31
|
- ## AppDynamics
|
|
6
32
|
Add AppDynamics monitoring.
|
|
7
33
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import '@nuxtjs/axios';
|
|
2
2
|
import { Module } from '@nuxt/types';
|
|
3
3
|
import { VuetifyDialog } from 'vuetify-dialog';
|
|
4
|
+
import { AxiosError } from 'axios';
|
|
4
5
|
declare module 'vuetify-dialog' {
|
|
5
6
|
interface VuetifyDialog {
|
|
6
7
|
authRefreshRequired: (params: any) => Promise<any>;
|
|
@@ -16,6 +17,11 @@ declare module 'axios' {
|
|
|
16
17
|
noAutoError?: boolean;
|
|
17
18
|
}
|
|
18
19
|
}
|
|
20
|
+
declare module '@nuxtjs/axios' {
|
|
21
|
+
interface NuxtAxiosInstance {
|
|
22
|
+
defaultErrorPopup: (error: AxiosError) => any;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
19
25
|
declare const byuModuleWrapper: Module;
|
|
20
26
|
export default byuModuleWrapper;
|
|
21
27
|
export declare const meta: any;
|
package/dist/index.js
CHANGED
|
@@ -6,22 +6,22 @@ const byuModuleWrapper = async function (moduleOptions) {
|
|
|
6
6
|
const excludedModules = (moduleOptions && moduleOptions.excludedModules) || [];
|
|
7
7
|
const excludedPlugins = (moduleOptions && moduleOptions.excludedPlugins) || [];
|
|
8
8
|
const excludedBuildModules = (moduleOptions && moduleOptions.excludedBuildModules) || [];
|
|
9
|
-
const modules = ['@nuxtjs/axios', 'vuetify-dialog/nuxt'].filter(module => !excludedModules.includes(module));
|
|
10
|
-
const plugins = ['axios', 'implicit-grant', 'filters', 'appDynamics', 'byucomponents', 'vuetify-dialog'].filter(plugin => !excludedPlugins.includes(plugin));
|
|
9
|
+
const modules = ['@nuxtjs/axios', 'vuetify-dialog/nuxt'].filter((module) => !excludedModules.includes(module));
|
|
10
|
+
const plugins = ['axios', 'implicit-grant', 'filters', 'appDynamics', 'byucomponents', 'vuetify-dialog'].filter((plugin) => !excludedPlugins.includes(plugin));
|
|
11
11
|
if (!this.options.modules) {
|
|
12
12
|
this.options.modules = [];
|
|
13
13
|
}
|
|
14
|
-
modules.forEach(module => {
|
|
14
|
+
modules.forEach((module) => {
|
|
15
15
|
this.options.modules.push(module);
|
|
16
16
|
});
|
|
17
|
-
plugins.forEach(plugin => {
|
|
17
|
+
plugins.forEach((plugin) => {
|
|
18
18
|
this.addPlugin({
|
|
19
19
|
src: resolve(__dirname, `plugins/${plugin}.js`),
|
|
20
|
-
options: (moduleOptions && moduleOptions.pluginOptions && moduleOptions.pluginOptions[plugin]) || {}
|
|
20
|
+
options: (moduleOptions && moduleOptions.pluginOptions && moduleOptions.pluginOptions[plugin]) || {},
|
|
21
21
|
});
|
|
22
22
|
});
|
|
23
23
|
// We're inside "buildModules", so we can't simply tweak the nuxt options. Instead, we'll call addModule ourselves
|
|
24
|
-
const buildModules = ['@nuxt/typescript-build', '@nuxtjs/vuetify'].filter(buildModule => !excludedBuildModules.includes(buildModule));
|
|
24
|
+
const buildModules = ['@nuxt/typescript-build', '@nuxtjs/vuetify'].filter((buildModule) => !excludedBuildModules.includes(buildModule));
|
|
25
25
|
const addModule = this.addModule.bind(this);
|
|
26
26
|
await sequence(buildModules, addModule);
|
|
27
27
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE9B,aAAa;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE9B,aAAa;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AA8BtC,MAAM,gBAAgB,GAAW,KAAK,WAAW,aAAa;IAC5D,MAAM,eAAe,GAAG,CAAC,aAAa,IAAI,aAAa,CAAC,eAAe,CAAC,IAAI,EAAE,CAAA;IAC9E,MAAM,eAAe,GAAG,CAAC,aAAa,IAAI,aAAa,CAAC,eAAe,CAAC,IAAI,EAAE,CAAA;IAC9E,MAAM,oBAAoB,GAAG,CAAC,aAAa,IAAI,aAAa,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;IAExF,MAAM,OAAO,GAAG,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9G,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC,MAAM,CAC7G,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC9C,CAAA;IAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACzB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAA;KAC1B;IAED,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,IAAI,CAAC,OAAO,CAAC,OAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,IAAI,CAAC,SAAS,CAAC;YACb,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,WAAW,MAAM,KAAK,CAAC;YAC/C,OAAO,EAAE,CAAC,aAAa,IAAI,aAAa,CAAC,aAAa,IAAI,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;SACrG,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,kHAAkH;IAClH,MAAM,YAAY,GAAG,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,CAAC,MAAM,CACvE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC7D,CAAA;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3C,MAAM,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;AACzC,CAAC,CAAA;AAED,eAAe,gBAAgB,CAAA;AAE/B,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA"}
|
|
@@ -14,8 +14,8 @@ export default (context) => {
|
|
|
14
14
|
beaconUrlHttps: 'https://pdx-col.eum-appdynamics.com',
|
|
15
15
|
useHTTPSAlways: true,
|
|
16
16
|
xd: { enable: false },
|
|
17
|
-
spa: { spa2: true }
|
|
18
|
-
}
|
|
17
|
+
spa: { spa2: true },
|
|
18
|
+
},
|
|
19
19
|
});
|
|
20
20
|
const script = document.createElement('script');
|
|
21
21
|
script.src = '//cdn.appdynamics.com/adrum/adrum-latest.js';
|
package/dist/plugins/axios.js
CHANGED
|
@@ -5,20 +5,16 @@ import { get } from 'lodash';
|
|
|
5
5
|
let refreshDialogVisible = false;
|
|
6
6
|
const errorMessages = [];
|
|
7
7
|
export default (context) => {
|
|
8
|
-
context.$axios.onResponseError(error => {
|
|
8
|
+
context.$axios.onResponseError((error) => {
|
|
9
9
|
if (axios.isCancel(error)) {
|
|
10
10
|
// Explicit cancellation, so do not show "error" message
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
13
|
-
if (error.config &&
|
|
14
|
-
error.response?.status === 401 &&
|
|
15
|
-
JSON.stringify(error.response.data)?.includes?.('code>90090')) {
|
|
13
|
+
if (error.config && error.response?.status === 401) {
|
|
16
14
|
// @ts-ignore Internal var added to config, so we can tell if this is a second automated attempt
|
|
17
15
|
if (!error.config.insideRetry) {
|
|
18
16
|
return retryWithRefreshedToken(error);
|
|
19
17
|
}
|
|
20
|
-
// WSO2 "Invalid Credentials", "Token Expired", etc, are code "90090[X]".
|
|
21
|
-
// We don't bother parsing the full XML doc, just check if that chunk appears in the raw XML string
|
|
22
18
|
// Auto-refresh should happen in iframe background in ./implicit-grant.js
|
|
23
19
|
// If that fails, then we can't auto-refresh, so...
|
|
24
20
|
if (!refreshDialogVisible) {
|
|
@@ -28,7 +24,7 @@ export default (context) => {
|
|
|
28
24
|
.authRefreshRequired({
|
|
29
25
|
failDuringPost,
|
|
30
26
|
persistent: true,
|
|
31
|
-
waitForResult: true
|
|
27
|
+
waitForResult: true,
|
|
32
28
|
})
|
|
33
29
|
// @ts-ignore: Third-party Typescript definition file is not correct: "show" can return a Promise
|
|
34
30
|
.then(() => (refreshDialogVisible = false));
|
|
@@ -39,6 +35,9 @@ export default (context) => {
|
|
|
39
35
|
// Caller has declared that it will handle unknown errors instead of using auto-popup
|
|
40
36
|
return;
|
|
41
37
|
}
|
|
38
|
+
context.$axios.defaultErrorPopup(error);
|
|
39
|
+
});
|
|
40
|
+
context.$axios.defaultErrorPopup = (error) => {
|
|
42
41
|
const text = get(error, 'response.data.errorMessage') ||
|
|
43
42
|
get(error, 'response.data.readable_message') ||
|
|
44
43
|
get(error, 'response.data.metadata.validation_response.message') ||
|
|
@@ -58,7 +57,7 @@ export default (context) => {
|
|
|
58
57
|
}
|
|
59
58
|
});
|
|
60
59
|
}
|
|
61
|
-
}
|
|
60
|
+
};
|
|
62
61
|
let refreshPromise = null;
|
|
63
62
|
function retryWithRefreshedToken(error) {
|
|
64
63
|
if (!refreshPromise) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios.js","sourceRoot":"","sources":["../../src/plugins/axios.ts"],"names":[],"mappings":"AACA,OAAO,KAAqB,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAA;AAE9C,aAAa;AACb,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAE5B,IAAI,oBAAoB,GAAG,KAAK,CAAA;AAChC,MAAM,aAAa,GAAa,EAAE,CAAA;AAElC,eAAe,CAAC,OAAgB,EAAE,EAAE;IAClC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"axios.js","sourceRoot":"","sources":["../../src/plugins/axios.ts"],"names":[],"mappings":"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"}
|
package/dist/plugins/filters.js
CHANGED
|
@@ -5,13 +5,13 @@ import dynamicImportPolyfill from 'dynamic-import-polyfill';
|
|
|
5
5
|
import { isEqual } from 'lodash';
|
|
6
6
|
const AuthRefreshRequired = Vue.extend({
|
|
7
7
|
props: {
|
|
8
|
-
failDuringPost: Boolean
|
|
8
|
+
failDuringPost: Boolean,
|
|
9
9
|
},
|
|
10
10
|
methods: {
|
|
11
11
|
popupAuth() {
|
|
12
12
|
authn.refresh('popup');
|
|
13
13
|
this.$emit('submit');
|
|
14
|
-
}
|
|
14
|
+
},
|
|
15
15
|
},
|
|
16
16
|
// Template compilation doesn't work at runtime in our standard BYU builds, so we
|
|
17
17
|
// manually do the `render` function instead of a `template`
|
|
@@ -27,7 +27,7 @@ const AuthRefreshRequired = Vue.extend({
|
|
|
27
27
|
'Click this "Re-authenticate" button. You will log in through a separate tab and then immediately return to this page.',
|
|
28
28
|
this.failDuringPost
|
|
29
29
|
? h('div', [h('br'), 'If you were in the middle of saving data, you may have to click "Save" again.'])
|
|
30
|
-
: ''
|
|
30
|
+
: '',
|
|
31
31
|
]),
|
|
32
32
|
h('div', { staticClass: 'v-card__actions' }, [
|
|
33
33
|
h('button', {
|
|
@@ -37,45 +37,58 @@ const AuthRefreshRequired = Vue.extend({
|
|
|
37
37
|
$event.stopPropagation();
|
|
38
38
|
// @ts-ignore
|
|
39
39
|
return this.popupAuth($event);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}, [h('span', { staticClass: 'v-btn__content' }, 'Re-authenticate')])
|
|
43
|
-
])
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
}, [h('span', { staticClass: 'v-btn__content' }, 'Re-authenticate')]),
|
|
43
|
+
]),
|
|
44
44
|
]);
|
|
45
|
-
}
|
|
45
|
+
},
|
|
46
46
|
});
|
|
47
47
|
export default (context) => {
|
|
48
48
|
context.$dialog.component('authRefreshRequired', AuthRefreshRequired);
|
|
49
|
-
const oAuthConfig = {
|
|
49
|
+
const oAuthConfig = Object.assign({
|
|
50
50
|
autoRefreshOnTimeout: true,
|
|
51
51
|
logoutRedirect: 'https://www.byu.edu',
|
|
52
52
|
clientId: process.env.NUXT_ENV_OAUTH_CLIENT_ID,
|
|
53
|
-
callbackUrl: process.env.NUXT_ENV_OAUTH_CALLBACK_URL
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
Object.assign(oAuthConfig, context.env.oAuth);
|
|
57
|
-
}
|
|
53
|
+
callbackUrl: process.env.NUXT_ENV_OAUTH_CALLBACK_URL,
|
|
54
|
+
baseUrl: process.env.NUXT_ENV_API_SERVER,
|
|
55
|
+
}, context.env.oAuth);
|
|
58
56
|
if (!oAuthConfig.clientId) {
|
|
59
57
|
// $dialog isn't fully configured when this code runs, so setTimeout bumps this call to the end of the event queue
|
|
60
58
|
setTimeout(() => context.$dialog.error({
|
|
61
59
|
title: 'Configuration Error',
|
|
62
60
|
text: 'This site is not configured correctly',
|
|
63
|
-
persistent: true
|
|
61
|
+
persistent: true,
|
|
64
62
|
}));
|
|
65
63
|
console.error('OAuth environment variables (NUXT_ENV_OAUTH_CLIENT_ID, NUXT_ENV_OAUTH_CALLBACK_URL) not set');
|
|
66
64
|
return;
|
|
67
65
|
}
|
|
68
|
-
|
|
66
|
+
if ('<%= options.baseUrl ? "true" : "" %>') {
|
|
67
|
+
oAuthConfig.baseUrl = '<%= options.baseUrl %>';
|
|
68
|
+
}
|
|
69
|
+
let providerUrl = '';
|
|
70
|
+
if ('<%= options.providerUrl ? "true" : "" %>') {
|
|
71
|
+
providerUrl = '<%= options.providerUrl %>';
|
|
72
|
+
}
|
|
73
|
+
else if ('<%= options.pkce ? "true" : "" %>') {
|
|
74
|
+
providerUrl = 'https://cdn.byu.edu/browser-oauth-pkce/latest/pkce-grant.min.js';
|
|
75
|
+
}
|
|
76
|
+
else if ('<%= options.pkceShim ? "true" : "" %>') {
|
|
77
|
+
providerUrl = 'https://cdn.byu.edu/browser-oauth-implicit/experimental/pkce-shim/implicit-grant.min.js';
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
providerUrl = 'https://cdn.byu.edu/browser-oauth-implicit/latest/implicit-grant.min.js';
|
|
81
|
+
}
|
|
69
82
|
// TODO: If Edge ever natively supports dynamic imports (i.e. "import(xxx)" returns a Promise), then use native
|
|
70
83
|
dynamicImportPolyfill.initialize();
|
|
71
|
-
__import__(/* webpackIgnore: true */ providerUrl).then(implicit => implicit.configure(oAuthConfig));
|
|
84
|
+
__import__(/* webpackIgnore: true */ providerUrl).then((implicit) => implicit.configure(oAuthConfig));
|
|
72
85
|
// External library, so we cannot avoid "new" constructor
|
|
73
86
|
// eslint-disable-next-line no-new
|
|
74
87
|
new authn.AuthenticationObserver(({ state, token, user }) => {
|
|
75
88
|
// Ignore HASH of current path, just get path + query
|
|
76
89
|
const currentPath = {
|
|
77
90
|
path: context.route.path,
|
|
78
|
-
query: context.route.query
|
|
91
|
+
query: context.route.query,
|
|
79
92
|
};
|
|
80
93
|
switch (state) {
|
|
81
94
|
case authn.STATE_UNAUTHENTICATED:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implicit-grant.js","sourceRoot":"","sources":["../../src/plugins/implicit-grant.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAA;AAC9C,aAAa;AACb,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAIhC,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE;QACL,cAAc,EAAE,OAAO;KACxB;IACD,OAAO,EAAE;QACP,SAAS;YACP,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACtB,CAAC;KACF;IACD,iFAAiF;IACjF,4DAA4D;IAC5D,oFAAoF;IACpF,wDAAwD;IACxD,MAAM,CAAC,CAAC;QACN,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,6BAA6B,EAAE,EAAE;YAC9D,CAAC,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,4CAA4C,EAAE,EAAE,4BAA4B,CAAC;YACrG,CAAC,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;gBACxC,iCAAiC;gBACjC,CAAC,CAAC,IAAI,CAAC;gBACP,CAAC,CAAC,IAAI,CAAC;gBACP,uHAAuH;gBACvH,IAAI,CAAC,cAAc;oBACjB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,+EAA+E,CAAC,CAAC;oBACtG,CAAC,CAAC,EAAE;aACP,CAAC;YACF,CAAC,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE;gBAC3C,CAAC,CACC,QAAQ,EACR;oBACE,WAAW,EAAE,2DAA2D;oBACxE,EAAE,EAAE;wBACF,KAAK,EAAE,CAAC,MAAW,EAAE,EAAE;4BACrB,MAAM,CAAC,eAAe,EAAE,CAAA;4BACxB,aAAa;4BACb,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;wBAC/B,CAAC;qBACF;iBACF,EACD,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAClE;aACF,CAAC;SACH,CAAC,CAAA;IACJ,CAAC;CACF,CAAC,CAAA;AAEF,eAAe,CAAC,OAAgB,EAAE,EAAE;IAClC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAA;IAErE,MAAM,WAAW,GAAG;
|
|
1
|
+
{"version":3,"file":"implicit-grant.js","sourceRoot":"","sources":["../../src/plugins/implicit-grant.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vuetify-dialog.js","sourceRoot":"","sources":["../../src/plugins/vuetify-dialog.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"vuetify-dialog.js","sourceRoot":"","sources":["../../src/plugins/vuetify-dialog.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,WAAW,OAAgB;IACvC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;AACzC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@byu-oit/nuxt-common",
|
|
3
|
-
"version": "3.0.0
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "BYU Front End common module for Nuxt.js",
|
|
5
5
|
"author": "BYU Apps Custom",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -18,56 +18,145 @@
|
|
|
18
18
|
"dist"
|
|
19
19
|
],
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@babel/core": "
|
|
22
|
-
"@
|
|
23
|
-
"@
|
|
24
|
-
"@nuxt/
|
|
25
|
-
"@
|
|
26
|
-
"@
|
|
27
|
-
"@
|
|
28
|
-
"@
|
|
29
|
-
"@nuxtjs/
|
|
30
|
-
"@
|
|
31
|
-
"@
|
|
32
|
-
"@
|
|
33
|
-
"@
|
|
34
|
-
"@
|
|
35
|
-
"@
|
|
36
|
-
"@
|
|
37
|
-
"@
|
|
38
|
-
"@
|
|
39
|
-
"@vue
|
|
40
|
-
"@
|
|
41
|
-
"@
|
|
42
|
-
"@vue/
|
|
43
|
-
"@vue/
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"eslint
|
|
53
|
-
"eslint-
|
|
54
|
-
"eslint-
|
|
55
|
-
"eslint-plugin-
|
|
56
|
-
"eslint-plugin-
|
|
57
|
-
"eslint-plugin-
|
|
58
|
-
"eslint-plugin-
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
21
|
+
"@babel/core": "~7.22.17",
|
|
22
|
+
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
|
23
|
+
"@byuweb/browser-oauth": "~1.0.3",
|
|
24
|
+
"@nuxt/components": "npm:@neverendingsupport/nuxt-components@2.2.1-nuxt-components-2.2.2",
|
|
25
|
+
"@nuxt/loading-screen": "npm:@neverendingsupport/nuxt-loading-screen@2.0.4-nuxt-loading-screen-2.0.5",
|
|
26
|
+
"@nuxt/telemetry": "npm:@neverendingsupport/nuxt-telemetry@1.5.0-nuxt-telemetry-1.5.2",
|
|
27
|
+
"@nuxt/types": "npm:@neverendingsupport/nuxt2@2.18.1-types-2.18.6",
|
|
28
|
+
"@nuxt/typescript-build": "~2.1.0",
|
|
29
|
+
"@nuxtjs/axios": "~5.13.6",
|
|
30
|
+
"@nuxtjs/eslint-config": "~10.0.0",
|
|
31
|
+
"@nuxtjs/eslint-config-typescript": "~10.0.0",
|
|
32
|
+
"@nuxtjs/eslint-module": "~3.1.0",
|
|
33
|
+
"@nuxtjs/vuetify": "~1.12.3",
|
|
34
|
+
"@nuxtjs/youch": "npm:@neverendingsupport/nuxt-youch@4.2.3-nuxtjs-youch-4.2.5",
|
|
35
|
+
"@testing-library/jest-dom": "~5.16.5",
|
|
36
|
+
"@types/js-beautify": "~1.13.3",
|
|
37
|
+
"@types/lodash": "~4.14.191",
|
|
38
|
+
"@types/superagent": "~4.1.16",
|
|
39
|
+
"@types/vue-moment": "~4.0.3",
|
|
40
|
+
"@typescript-eslint/eslint-plugin": "~5.52.0",
|
|
41
|
+
"@typescript-eslint/parser": "~5.52.0",
|
|
42
|
+
"@vue/cli-plugin-unit-jest": "~5.0.8",
|
|
43
|
+
"@vue/eslint-config-standard": "~8.0.1",
|
|
44
|
+
"@vue/eslint-config-typescript": "~11.0.2",
|
|
45
|
+
"@vue/server-test-utils": "~1.3.0",
|
|
46
|
+
"@vue/test-utils": "~1.3.4",
|
|
47
|
+
"@vue/vue2-jest": "~27.0.0",
|
|
48
|
+
"babel-polyfill": "~6.26.0",
|
|
49
|
+
"cross-env": "~7.0.3",
|
|
50
|
+
"dotenv": "~16.0.3",
|
|
51
|
+
"dynamic-import-polyfill": "~0.1.1",
|
|
52
|
+
"eslint": "~8.34.0",
|
|
53
|
+
"eslint-config-prettier": "~8.6.0",
|
|
54
|
+
"eslint-config-standard": "~17.0.0",
|
|
55
|
+
"eslint-plugin-import": "~2.27.5",
|
|
56
|
+
"eslint-plugin-jest": "~26.9.0",
|
|
57
|
+
"eslint-plugin-node": "~11.1.0",
|
|
58
|
+
"eslint-plugin-nuxt": "~3.2.0",
|
|
59
|
+
"eslint-plugin-prettier": "~4.2.1",
|
|
60
|
+
"eslint-plugin-promise": "~6.1.1",
|
|
61
|
+
"eslint-plugin-standard": "~5.0.0",
|
|
62
|
+
"eslint-plugin-vue": "~9.9.0",
|
|
63
|
+
"eslint-plugin-vuetify": "~1.1.0",
|
|
64
|
+
"flush-promises": "~1.0.2",
|
|
65
|
+
"husky": "~8.0.3",
|
|
66
|
+
"lodash": "~4.17.21",
|
|
67
|
+
"lru-cache": "~7.14.1",
|
|
68
|
+
"nuxt": "npm:@neverendingsupport/nuxt2@2.18.1-nuxt-2.18.6",
|
|
69
|
+
"nuxt-property-decorator": "~2.9.1",
|
|
70
|
+
"postcss": "~8.4.21",
|
|
71
|
+
"swagger-typescript-codegen": "~3.2.4",
|
|
72
|
+
"ts-jest": "~27.1.5",
|
|
73
|
+
"ts-node": "~10.9.1",
|
|
74
|
+
"vue-moment": "~4.1.0",
|
|
75
|
+
"vuetify-dialog": "~2.0.17",
|
|
76
|
+
"vue": "npm:@neverendingsupport/vue2@2.7.22",
|
|
77
|
+
"vuex": "npm:@neverendingsupport/vuex@3.7.0",
|
|
78
|
+
"vuex-class": "~0.3.2",
|
|
79
|
+
"vuex-mock-store": "~0.0.8",
|
|
80
|
+
"vue-router": "npm:@neverendingsupport/vue-router@3.6.6"
|
|
81
|
+
},
|
|
82
|
+
"overrides": {
|
|
83
|
+
"nuxt": {
|
|
84
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-nuxt-2.18.6"
|
|
85
|
+
},
|
|
86
|
+
"@nuxt/babel-preset-app": {
|
|
87
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-babel-preset-app-2.18.6"
|
|
88
|
+
},
|
|
89
|
+
"@nuxt/builder": {
|
|
90
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-builder-2.18.6"
|
|
91
|
+
},
|
|
92
|
+
"@nuxt/cli": {
|
|
93
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-cli-2.18.6"
|
|
94
|
+
},
|
|
95
|
+
"@nuxt/components": {
|
|
96
|
+
".": "npm:@neverendingsupport/nuxt-components@2.2.1-nuxt-components-2.2.2"
|
|
97
|
+
},
|
|
98
|
+
"@nuxt/config": {
|
|
99
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-config-2.18.6"
|
|
100
|
+
},
|
|
101
|
+
"@nuxt/core": {
|
|
102
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-core-2.18.6"
|
|
103
|
+
},
|
|
104
|
+
"@nuxt/generator": {
|
|
105
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-generator-2.18.6"
|
|
106
|
+
},
|
|
107
|
+
"@nuxt/loading-screen": {
|
|
108
|
+
".": "npm:@neverendingsupport/nuxt-loading-screen@2.0.4-nuxt-loading-screen-2.0.5"
|
|
109
|
+
},
|
|
110
|
+
"@nuxt/nuxt-start": {
|
|
111
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-nuxt-start-2.18.6"
|
|
112
|
+
},
|
|
113
|
+
"@nuxt/server": {
|
|
114
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-server-2.18.6"
|
|
115
|
+
},
|
|
116
|
+
"@nuxt/telemetry": {
|
|
117
|
+
".": "npm:@neverendingsupport/nuxt-telemetry@1.5.0-nuxt-telemetry-1.5.2"
|
|
118
|
+
},
|
|
119
|
+
"@nuxt/types": {
|
|
120
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-types-2.18.6"
|
|
121
|
+
},
|
|
122
|
+
"@nuxt/utils": {
|
|
123
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-utils-2.18.6"
|
|
124
|
+
},
|
|
125
|
+
"@nuxt/vue-app": {
|
|
126
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-vue-app-2.18.6"
|
|
127
|
+
},
|
|
128
|
+
"@nuxt/vue-renderer": {
|
|
129
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-vue-renderer-2.18.6"
|
|
130
|
+
},
|
|
131
|
+
"@nuxt/webpack": {
|
|
132
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-webpack-2.18.6"
|
|
133
|
+
},
|
|
134
|
+
"@nuxtjs/youch": {
|
|
135
|
+
".": "npm:@neverendingsupport/nuxt-youch@4.2.3-nuxtjs-youch-4.2.5"
|
|
136
|
+
},
|
|
137
|
+
"nuxt-start": {
|
|
138
|
+
".": "npm:@neverendingsupport/nuxt2@2.18.1-nuxt-start-2.18.6"
|
|
139
|
+
},
|
|
140
|
+
"vue": {
|
|
141
|
+
".": "npm:@neverendingsupport/vue2@2.7.22"
|
|
142
|
+
},
|
|
143
|
+
"vue-server-renderer": {
|
|
144
|
+
".": "npm:@neverendingsupport/vue2@2.7.22-server-renderer"
|
|
145
|
+
},
|
|
146
|
+
"vue-template-compiler": {
|
|
147
|
+
".": "npm:@neverendingsupport/vue2@2.7.22-template-compiler"
|
|
148
|
+
},
|
|
149
|
+
"@vue/compiler-sfc": {
|
|
150
|
+
".": "npm:@neverendingsupport/vue2@2.7.22-compiler-sfc"
|
|
151
|
+
},
|
|
152
|
+
"vuex": {
|
|
153
|
+
".": "npm:@neverendingsupport/vuex@3.7.0"
|
|
154
|
+
},
|
|
155
|
+
"vue-router": {
|
|
156
|
+
".": "npm:@neverendingsupport/vue-router@3.6.6"
|
|
157
|
+
},
|
|
158
|
+
"serialize-javascript": {
|
|
159
|
+
".": "^6.0.2"
|
|
160
|
+
}
|
|
72
161
|
}
|
|
73
162
|
}
|