mirror of
https://github.com/qlik-oss/nebula.js.git
synced 2025-12-19 09:48:18 -05:00
test: migrate mashup tests to use enigma mocker (#725)
This commit is contained in:
@@ -83,17 +83,6 @@ jobs:
|
||||
|
||||
steps:
|
||||
- checkout
|
||||
# start the SSE plugin as early as possible so that the engine
|
||||
# image has enough time to connect to it before tests are run
|
||||
- run:
|
||||
name: Initiate SSE plugin
|
||||
command: |
|
||||
cd test/fixtures/sse
|
||||
echo "{}" > package.json
|
||||
npm install qlik-sse@0.3.0 --no-package-lock
|
||||
rm package.json
|
||||
node start.js
|
||||
background: true
|
||||
|
||||
- restore_cache: *restore_yarn_cache
|
||||
|
||||
|
||||
@@ -70,7 +70,6 @@
|
||||
"prettier": "2.5.0",
|
||||
"pretty-quick": "3.1.2",
|
||||
"qix-faker": "0.3.0",
|
||||
"qlik-sse": "0.3.0",
|
||||
"rollup": "2.60.2",
|
||||
"rollup-plugin-babel": "4.4.0",
|
||||
"rollup-plugin-dependency-flow": "0.3.0",
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
const yargs = require('yargs');
|
||||
|
||||
const mashupServer = require('../test/mashup/server');
|
||||
const sseServer = require('../test/fixtures/sse');
|
||||
const useEngine = require('../commands/serve/lib/engine');
|
||||
|
||||
const args = yargs
|
||||
@@ -12,18 +11,13 @@ const args = yargs
|
||||
type: 'boolean',
|
||||
describe: 'Start the mashup server',
|
||||
})
|
||||
.option('sse', {
|
||||
default: true,
|
||||
type: 'boolean',
|
||||
describe: 'Start the SSE plugin',
|
||||
})
|
||||
.option('engine', {
|
||||
default: false,
|
||||
type: 'boolean',
|
||||
describe: 'Start the engine',
|
||||
}).argv;
|
||||
|
||||
const { start, sse, engine } = args;
|
||||
const { start, engine } = args;
|
||||
|
||||
let hasCleanedUp = false;
|
||||
const services = [];
|
||||
@@ -42,17 +36,6 @@ if (start) {
|
||||
});
|
||||
}
|
||||
|
||||
if (sse) {
|
||||
const s = sseServer;
|
||||
services.push({
|
||||
name: 'SSE plugin server',
|
||||
start: () => {
|
||||
s.start();
|
||||
},
|
||||
stop: () => s.close(),
|
||||
});
|
||||
}
|
||||
|
||||
if (engine) {
|
||||
let e;
|
||||
services.push({
|
||||
|
||||
51
test/fixtures/sse/index.js
vendored
51
test/fixtures/sse/index.js
vendored
@@ -1,51 +0,0 @@
|
||||
const q = require('qlik-sse');
|
||||
|
||||
const s = q.server({
|
||||
identifier: 'heavy',
|
||||
version: '0.1.0',
|
||||
allowScript: true,
|
||||
});
|
||||
|
||||
async function heavy(request) {
|
||||
request.on('data', (bundle) => {
|
||||
const rows = [];
|
||||
let t = 100;
|
||||
try {
|
||||
t = bundle.rows[0].duals[0].numData;
|
||||
} catch (e) {
|
||||
/* */
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
bundle.rows.forEach((row) => {
|
||||
row.duals.forEach((dual) => {
|
||||
rows.push({
|
||||
duals: [{ numData: dual.numData, strData: `$${dual.numData}` }],
|
||||
});
|
||||
});
|
||||
});
|
||||
request.write({ rows });
|
||||
request.end();
|
||||
}, t);
|
||||
});
|
||||
}
|
||||
|
||||
s.addFunction(heavy, {
|
||||
functionType: q.sse.FunctionType.SCALAR,
|
||||
returnType: q.sse.DataType.NUMERIC,
|
||||
params: [
|
||||
{
|
||||
name: 'first',
|
||||
dataType: q.sse.DataType.NUMERIC,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
// start the server
|
||||
/*
|
||||
s.start({
|
||||
port: 50051,
|
||||
});
|
||||
*/
|
||||
|
||||
module.exports = s;
|
||||
3
test/fixtures/sse/start.js
vendored
3
test/fixtures/sse/start.js
vendored
@@ -1,3 +0,0 @@
|
||||
require('./index').start({
|
||||
port: 50051,
|
||||
});
|
||||
@@ -1,25 +0,0 @@
|
||||
export default function connect() {
|
||||
const loadSchema = () => fetch('/node_modules/enigma.js/schemas/3.2.json').then((response) => response.json());
|
||||
|
||||
const createConnection = () =>
|
||||
loadSchema().then((schema) =>
|
||||
window.enigma
|
||||
.create({
|
||||
schema,
|
||||
url: `ws://${window.location.hostname || 'localhost'}:9076/app/${Date.now()}`,
|
||||
})
|
||||
.open()
|
||||
.then((qix) => qix.createSessionApp())
|
||||
);
|
||||
|
||||
return createConnection().then((app) =>
|
||||
app
|
||||
.setScript(
|
||||
`
|
||||
Characters:
|
||||
Load Chr(RecNo()+Ord('A')-1) as Alpha, RecNo() as Num autogenerate 5;
|
||||
`
|
||||
)
|
||||
.then(() => app.doReload().then(() => app))
|
||||
);
|
||||
}
|
||||
@@ -2,8 +2,9 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<script src="/node_modules/enigma.js/enigma.min.js"></script>
|
||||
<script src="/apis/stardust/dist/stardust.dev.js"></script>
|
||||
<script src="/apis/enigma-mocker/dist/enigma-mocker.dev.js"></script>
|
||||
<script src="scenarios.js"></script>
|
||||
|
||||
<style>
|
||||
html,
|
||||
@@ -44,22 +45,5 @@
|
||||
<div class="viz"></div>
|
||||
<div class="actions"></div>
|
||||
</div>
|
||||
<script type="module">
|
||||
import connect from './connect.js';
|
||||
import phases from './phases.js';
|
||||
|
||||
connect().then(async (app) => {
|
||||
const actionsElement = document.querySelector('.actions');
|
||||
const p = phases({ app }).phases;
|
||||
p.forEach((phase) => {
|
||||
const btn = document.createElement('button');
|
||||
btn.textContent = phase.name;
|
||||
btn.setAttribute('data-phase', phase.name.toLowerCase().replace(/\s+/g, '-'));
|
||||
btn.addEventListener('click', phase.action);
|
||||
|
||||
actionsElement.appendChild(btn);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
describe.skip('object lifecycle', () => {
|
||||
describe('object lifecycle', () => {
|
||||
const waitForTextStatus = async (selector, text, options = { timeout: 1000 }) => {
|
||||
await page.waitForSelector(selector, { visible: true });
|
||||
await page.waitForFunction(
|
||||
@@ -8,13 +8,14 @@ describe.skip('object lifecycle', () => {
|
||||
text
|
||||
);
|
||||
};
|
||||
before(async () => {
|
||||
await page.goto(`${process.env.BASE_URL}/visualize/life.html`);
|
||||
await page.waitForSelector('button[data-phase="init-as-bad-type"]', { visible: true });
|
||||
});
|
||||
|
||||
function getScenarioUrl(scenario) {
|
||||
return `${process.env.BASE_URL}/visualize/life.html?scenario=${scenario}`;
|
||||
}
|
||||
|
||||
it('should fail to load unknown type', async () => {
|
||||
await page.click('button[data-phase="init-as-bad-type"]');
|
||||
const url = getScenarioUrl('invalid-type');
|
||||
await page.goto(url);
|
||||
await waitForTextStatus(
|
||||
'[data-tid="error-title"]',
|
||||
"Could not find a version of 'voooz' that supports current object version. Did you forget to register voooz?"
|
||||
@@ -22,7 +23,8 @@ describe.skip('object lifecycle', () => {
|
||||
});
|
||||
|
||||
it('should show spinner and requirements for known type', async () => {
|
||||
await page.click('button[data-phase="set-proper-type"]');
|
||||
const url = getScenarioUrl('valid-type');
|
||||
await page.goto(url);
|
||||
|
||||
// should show loading spinner
|
||||
await page.waitForSelector('.njs-cell [role="progressbar"]', { timeout: 3000 });
|
||||
@@ -32,40 +34,27 @@ describe.skip('object lifecycle', () => {
|
||||
|
||||
// need to fix calc condition view first
|
||||
it('should show calculation unfulfilled', async () => {
|
||||
await page.click('button[data-phase="set-calc-condition"]');
|
||||
const url = getScenarioUrl('calc-unfulfilled');
|
||||
await page.goto(url);
|
||||
await waitForTextStatus('[data-tid="error-title"]', 'The calculation condition is not fulfilled');
|
||||
});
|
||||
|
||||
it('should render error when a hypercube contains a qError', async () => {
|
||||
await page.click('button[data-phase="hypercube-error"]');
|
||||
const url = getScenarioUrl('hypercube-error');
|
||||
await page.goto(url);
|
||||
await waitForTextStatus('[data-tid="error-title"]', 'Error');
|
||||
});
|
||||
|
||||
it('should render when requirements are fulfilled', async () => {
|
||||
await page.click('button[data-phase="fulfill-requirements"]');
|
||||
const url = getScenarioUrl('valid-config');
|
||||
await page.goto(url);
|
||||
await waitForTextStatus('.rendered', 'Success!');
|
||||
});
|
||||
|
||||
it('should render long running query', async () => {
|
||||
await page.click('button[data-phase="long-running-query"]');
|
||||
|
||||
// the cancel button should appear after 2000ms
|
||||
// TODO - fix error thrown when long running query is cancelled
|
||||
// await waitForTextStatus('.njs-cell button', 'Cancel', { timeout: 2500 });
|
||||
// await page.click('.njs-cell button');
|
||||
// await waitForTextStatus('.njs-cell button', 'Retry');
|
||||
|
||||
await waitForTextStatus('.pages', '4001', { timeout: 5000 });
|
||||
});
|
||||
|
||||
it('should render other type', async () => {
|
||||
await page.click('button[data-phase="set-the-other-type"]');
|
||||
await waitForTextStatus('.njs-viz', 'The other one!');
|
||||
});
|
||||
|
||||
it('should destroy', async () => {
|
||||
await page.click('button[data-phase="destroy"]');
|
||||
const url = getScenarioUrl('destroy');
|
||||
await page.goto(url);
|
||||
// wait for some time to ensure destroy has been run and no errors are thrown
|
||||
await page.waitFor(100);
|
||||
await page.waitFor(5000);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,176 +0,0 @@
|
||||
const baseProps = {
|
||||
qInfo: {
|
||||
qType: 'doesnt matter',
|
||||
},
|
||||
visualization: 'my-chart',
|
||||
qHyperCubeDef: {},
|
||||
};
|
||||
|
||||
const badType = {
|
||||
...baseProps,
|
||||
visualization: 'voooz',
|
||||
};
|
||||
|
||||
const otherType = {
|
||||
...baseProps,
|
||||
visualization: 'my-other-chart',
|
||||
};
|
||||
|
||||
const calcCond = {
|
||||
...baseProps,
|
||||
qHyperCubeDef: {
|
||||
qCalcCondition: {
|
||||
qCond: { qv: '0' },
|
||||
},
|
||||
qDimensions: [{ qDef: { qFieldDefs: ['=a'] } }],
|
||||
qMeasures: [{ qDef: { qDef: '=1' } }],
|
||||
},
|
||||
};
|
||||
|
||||
const cubeError = {
|
||||
...baseProps,
|
||||
qHyperCubeDef: {
|
||||
qMode: 'S',
|
||||
qMeasures: [{}],
|
||||
qInterColumnSortOrder: [-2],
|
||||
},
|
||||
};
|
||||
|
||||
const fulfilled = {
|
||||
...baseProps,
|
||||
qHyperCubeDef: {
|
||||
qDimensions: [{ qDef: { qFieldDefs: ['=a'] } }],
|
||||
qMeasures: [{ qDef: { qDef: '=1' } }],
|
||||
},
|
||||
};
|
||||
|
||||
const longRunning = {
|
||||
...baseProps,
|
||||
qHyperCubeDef: {
|
||||
qInitialDataFetch: [
|
||||
{
|
||||
qTop: 0,
|
||||
qLeft: 0,
|
||||
qWidth: 2,
|
||||
qHeight: 10,
|
||||
},
|
||||
],
|
||||
qDimensions: [{ qDef: { qFieldDefs: ['=a'] } }],
|
||||
qMeasures: [{ qDef: { qDef: 'sse.heavy(4001)' } }],
|
||||
},
|
||||
};
|
||||
|
||||
const { useElement, useLayout } = window.stardust;
|
||||
const chart = {
|
||||
qae: {
|
||||
data: {
|
||||
targets: [
|
||||
{
|
||||
path: '/qHyperCubeDef',
|
||||
dimensions: { min: 1, description: () => 'Some dimension' },
|
||||
measures: { min: 1 },
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
component() {
|
||||
const element = useElement();
|
||||
const layout = useLayout();
|
||||
|
||||
element.innerHTML = `
|
||||
<div>
|
||||
<div class="rendered">Success!</div>
|
||||
<div class="pages">${layout.qHyperCube.qDataPages[0] && layout.qHyperCube.qDataPages[0].qMatrix[0][1].qText}</div>
|
||||
</div>
|
||||
`;
|
||||
},
|
||||
};
|
||||
|
||||
const myOtherChart = {
|
||||
component() {
|
||||
useElement().innerText = 'The other one!';
|
||||
},
|
||||
};
|
||||
|
||||
// eslint-disable-next-line
|
||||
const configured = stardust.embed.createConfiguration({
|
||||
types: [
|
||||
{
|
||||
name: 'my-chart',
|
||||
load: () =>
|
||||
new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
resolve(chart);
|
||||
}, 1500);
|
||||
}),
|
||||
},
|
||||
{
|
||||
name: 'my-other-chart',
|
||||
load: () => Promise.resolve(myOtherChart),
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
export default function phases({ app }) {
|
||||
let viz;
|
||||
let obj;
|
||||
return {
|
||||
phases: [
|
||||
{
|
||||
name: 'Init as bad type',
|
||||
action: async () => {
|
||||
if (obj) {
|
||||
throw new Error('Already initiated');
|
||||
}
|
||||
obj = await app.createSessionObject(badType);
|
||||
viz = await configured(app).render({
|
||||
element: document.querySelector('.viz'),
|
||||
id: obj.id,
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Set proper type',
|
||||
action: () => {
|
||||
obj.setProperties(baseProps);
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Set calc condition',
|
||||
action: () => {
|
||||
obj.setProperties(calcCond);
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Hypercube error',
|
||||
action: () => {
|
||||
obj.setProperties(cubeError);
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Fulfill requirements',
|
||||
action: () => {
|
||||
obj.setProperties(fulfilled);
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Long running query',
|
||||
action: () => {
|
||||
obj.setProperties(longRunning);
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Set the other type',
|
||||
action: () => {
|
||||
obj.setProperties(otherType);
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Destroy',
|
||||
action: () => {
|
||||
viz.destroy();
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
495
test/mashup/visualize/scenarios.js
Normal file
495
test/mashup/visualize/scenarios.js
Normal file
@@ -0,0 +1,495 @@
|
||||
const scenarios = {};
|
||||
|
||||
scenarios['invalid-type'] = {
|
||||
name: 'Invalid type',
|
||||
genericObject: {
|
||||
getLayout() {
|
||||
return {
|
||||
qInfo: {
|
||||
qId: 'bb8',
|
||||
},
|
||||
visualization: 'voooz',
|
||||
};
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
scenarios['valid-type'] = {
|
||||
name: 'Valid type',
|
||||
genericObject: {
|
||||
getLayout() {
|
||||
return {
|
||||
qInfo: {
|
||||
qId: 'bb8',
|
||||
qType: 'doesnt matter',
|
||||
},
|
||||
qMeta: {
|
||||
privileges: ['read', 'update', 'delete', 'exportdata'],
|
||||
},
|
||||
qSelectionInfo: {},
|
||||
visualization: 'my-chart',
|
||||
};
|
||||
},
|
||||
getProperties() {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
scenarios['calc-unfulfilled'] = {
|
||||
name: 'Calculations unfulfilled',
|
||||
genericObject: {
|
||||
getLayout() {
|
||||
return {
|
||||
qInfo: {
|
||||
qId: 'bb8',
|
||||
qType: 'doesnt matter',
|
||||
},
|
||||
qMeta: {
|
||||
privileges: ['read', 'update', 'delete', 'exportdata'],
|
||||
},
|
||||
qSelectionInfo: {},
|
||||
visualization: 'my-chart',
|
||||
qHyperCube: {
|
||||
qSize: {
|
||||
qcx: 0,
|
||||
qcy: 0,
|
||||
},
|
||||
qDimensionInfo: [
|
||||
{
|
||||
qFallbackTitle: '=a',
|
||||
qApprMaxGlyphCount: 0,
|
||||
qCardinal: 0,
|
||||
qSortIndicator: 'N',
|
||||
qGroupFallbackTitles: ['=a'],
|
||||
qGroupPos: 0,
|
||||
qStateCounts: {
|
||||
qLocked: 0,
|
||||
qSelected: 0,
|
||||
qOption: 0,
|
||||
qDeselected: 0,
|
||||
qAlternative: 0,
|
||||
qExcluded: 0,
|
||||
qSelectedExcluded: 0,
|
||||
qLockedExcluded: 0,
|
||||
},
|
||||
qTags: [],
|
||||
qError: {
|
||||
qErrorCode: 7014,
|
||||
},
|
||||
qDimensionType: 'D',
|
||||
qGrouping: 'N',
|
||||
qNumFormat: {
|
||||
qType: 'U',
|
||||
qnDec: 10,
|
||||
qUseThou: 0,
|
||||
},
|
||||
qGroupFieldDefs: ['=a'],
|
||||
qMin: 0,
|
||||
qMax: 0,
|
||||
qAttrExprInfo: [],
|
||||
qAttrDimInfo: [],
|
||||
qCardinalities: {
|
||||
qCardinal: 0,
|
||||
qHypercubeCardinal: 0,
|
||||
qAllValuesCardinal: -1,
|
||||
},
|
||||
},
|
||||
],
|
||||
qMeasureInfo: [
|
||||
{
|
||||
qFallbackTitle: '=1',
|
||||
qApprMaxGlyphCount: 0,
|
||||
qCardinal: 0,
|
||||
qSortIndicator: 'N',
|
||||
qNumFormat: {
|
||||
qType: 'U',
|
||||
qnDec: 10,
|
||||
qUseThou: 0,
|
||||
},
|
||||
qMin: 0,
|
||||
qMax: 0,
|
||||
qAttrExprInfo: [],
|
||||
qAttrDimInfo: [],
|
||||
qTrendLines: [],
|
||||
},
|
||||
],
|
||||
qEffectiveInterColumnSortOrder: [1],
|
||||
qGrandTotalRow: [],
|
||||
qDataPages: [],
|
||||
qPivotDataPages: [],
|
||||
qStackedDataPages: [],
|
||||
qMode: 'S',
|
||||
qNoOfLeftDims: -1,
|
||||
qTreeNodesOnDim: [],
|
||||
qColumnOrder: [],
|
||||
qError: {
|
||||
qErrorCode: 7005,
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
getProperties() {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
scenarios['hypercube-error'] = {
|
||||
name: 'Hypercube error',
|
||||
genericObject: {
|
||||
getLayout() {
|
||||
return {
|
||||
qInfo: {
|
||||
qId: 'bb8',
|
||||
qType: 'doesnt matter',
|
||||
},
|
||||
qMeta: {
|
||||
privileges: ['read', 'update', 'delete', 'exportdata'],
|
||||
},
|
||||
qSelectionInfo: {},
|
||||
visualization: 'my-chart',
|
||||
qHyperCube: {
|
||||
qSize: {
|
||||
qcx: 1,
|
||||
qcy: 1,
|
||||
},
|
||||
qDimensionInfo: [],
|
||||
qMeasureInfo: [
|
||||
{
|
||||
qApprMaxGlyphCount: 1,
|
||||
qCardinal: 0,
|
||||
qSortIndicator: 'N',
|
||||
qNumFormat: {
|
||||
qType: 'U',
|
||||
qnDec: 0,
|
||||
qUseThou: 0,
|
||||
},
|
||||
qMin: 'NaN',
|
||||
qMax: 'NaN',
|
||||
qIsAutoFormat: true,
|
||||
qAttrExprInfo: [],
|
||||
qAttrDimInfo: [],
|
||||
qTrendLines: [],
|
||||
},
|
||||
],
|
||||
qEffectiveInterColumnSortOrder: [0],
|
||||
qGrandTotalRow: [
|
||||
{
|
||||
qText: '-',
|
||||
qNum: 'NaN',
|
||||
qElemNumber: -1,
|
||||
qState: 'X',
|
||||
qIsTotalCell: true,
|
||||
},
|
||||
],
|
||||
qDataPages: [],
|
||||
qPivotDataPages: [],
|
||||
qStackedDataPages: [],
|
||||
qMode: 'S',
|
||||
qNoOfLeftDims: -1,
|
||||
qTreeNodesOnDim: [],
|
||||
qColumnOrder: [],
|
||||
qError: {
|
||||
qErrorCode: 7008,
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
getProperties() {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
scenarios['valid-config'] = {
|
||||
name: 'Valid config',
|
||||
genericObject: {
|
||||
getLayout() {
|
||||
return {
|
||||
qInfo: {
|
||||
qId: 'bb8',
|
||||
qType: 'doesnt matter',
|
||||
},
|
||||
qMeta: {
|
||||
privileges: ['read', 'update', 'delete', 'exportdata'],
|
||||
},
|
||||
qSelectionInfo: {},
|
||||
visualization: 'my-chart',
|
||||
qHyperCube: {
|
||||
qSize: {
|
||||
qcx: 2,
|
||||
qcy: 1,
|
||||
},
|
||||
qDimensionInfo: [
|
||||
{
|
||||
qFallbackTitle: '=a',
|
||||
qApprMaxGlyphCount: 1,
|
||||
qCardinal: 0,
|
||||
qSortIndicator: 'N',
|
||||
qGroupFallbackTitles: ['=a'],
|
||||
qGroupPos: 0,
|
||||
qStateCounts: {
|
||||
qLocked: 0,
|
||||
qSelected: 0,
|
||||
qOption: 0,
|
||||
qDeselected: 0,
|
||||
qAlternative: 0,
|
||||
qExcluded: 0,
|
||||
qSelectedExcluded: 0,
|
||||
qLockedExcluded: 0,
|
||||
},
|
||||
qTags: [],
|
||||
qDimensionType: 'D',
|
||||
qGrouping: 'N',
|
||||
qNumFormat: {
|
||||
qType: 'U',
|
||||
qnDec: 0,
|
||||
qUseThou: 0,
|
||||
},
|
||||
qIsAutoFormat: true,
|
||||
qGroupFieldDefs: ['=a'],
|
||||
qMin: 'NaN',
|
||||
qMax: 'NaN',
|
||||
qAttrExprInfo: [],
|
||||
qAttrDimInfo: [],
|
||||
qIsCalculated: true,
|
||||
qCardinalities: {
|
||||
qCardinal: 0,
|
||||
qHypercubeCardinal: 1,
|
||||
qAllValuesCardinal: -1,
|
||||
},
|
||||
},
|
||||
],
|
||||
qMeasureInfo: [
|
||||
{
|
||||
qFallbackTitle: '=1',
|
||||
qApprMaxGlyphCount: 1,
|
||||
qCardinal: 0,
|
||||
qSortIndicator: 'N',
|
||||
qNumFormat: {
|
||||
qType: 'U',
|
||||
qnDec: 0,
|
||||
qUseThou: 0,
|
||||
},
|
||||
qMin: 1,
|
||||
qMax: 1,
|
||||
qIsAutoFormat: true,
|
||||
qAttrExprInfo: [],
|
||||
qAttrDimInfo: [],
|
||||
qTrendLines: [],
|
||||
},
|
||||
],
|
||||
qEffectiveInterColumnSortOrder: [0, 1],
|
||||
qGrandTotalRow: [
|
||||
{
|
||||
qText: '1',
|
||||
qNum: 1,
|
||||
qElemNumber: -1,
|
||||
qState: 'X',
|
||||
qIsTotalCell: true,
|
||||
},
|
||||
],
|
||||
qDataPages: [],
|
||||
qPivotDataPages: [],
|
||||
qStackedDataPages: [],
|
||||
qMode: 'S',
|
||||
qNoOfLeftDims: -1,
|
||||
qTreeNodesOnDim: [],
|
||||
qColumnOrder: [],
|
||||
},
|
||||
};
|
||||
},
|
||||
getProperties() {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
scenarios.destroy = {
|
||||
name: 'Destroy',
|
||||
genericObject: {
|
||||
getLayout() {
|
||||
return {
|
||||
qInfo: {
|
||||
qId: 'bb8',
|
||||
qType: 'doesnt matter',
|
||||
},
|
||||
qMeta: {
|
||||
privileges: ['read', 'update', 'delete', 'exportdata'],
|
||||
},
|
||||
qSelectionInfo: {},
|
||||
visualization: 'my-chart',
|
||||
qHyperCube: {
|
||||
qSize: {
|
||||
qcx: 2,
|
||||
qcy: 1,
|
||||
},
|
||||
qDimensionInfo: [
|
||||
{
|
||||
qFallbackTitle: '=a',
|
||||
qApprMaxGlyphCount: 1,
|
||||
qCardinal: 0,
|
||||
qSortIndicator: 'N',
|
||||
qGroupFallbackTitles: ['=a'],
|
||||
qGroupPos: 0,
|
||||
qStateCounts: {
|
||||
qLocked: 0,
|
||||
qSelected: 0,
|
||||
qOption: 0,
|
||||
qDeselected: 0,
|
||||
qAlternative: 0,
|
||||
qExcluded: 0,
|
||||
qSelectedExcluded: 0,
|
||||
qLockedExcluded: 0,
|
||||
},
|
||||
qTags: [],
|
||||
qDimensionType: 'D',
|
||||
qGrouping: 'N',
|
||||
qNumFormat: {
|
||||
qType: 'U',
|
||||
qnDec: 0,
|
||||
qUseThou: 0,
|
||||
},
|
||||
qIsAutoFormat: true,
|
||||
qGroupFieldDefs: ['=a'],
|
||||
qMin: 'NaN',
|
||||
qMax: 'NaN',
|
||||
qAttrExprInfo: [],
|
||||
qAttrDimInfo: [],
|
||||
qIsCalculated: true,
|
||||
qCardinalities: {
|
||||
qCardinal: 0,
|
||||
qHypercubeCardinal: 1,
|
||||
qAllValuesCardinal: -1,
|
||||
},
|
||||
},
|
||||
],
|
||||
qMeasureInfo: [
|
||||
{
|
||||
qFallbackTitle: '=1',
|
||||
qApprMaxGlyphCount: 1,
|
||||
qCardinal: 0,
|
||||
qSortIndicator: 'N',
|
||||
qNumFormat: {
|
||||
qType: 'U',
|
||||
qnDec: 0,
|
||||
qUseThou: 0,
|
||||
},
|
||||
qMin: 1,
|
||||
qMax: 1,
|
||||
qIsAutoFormat: true,
|
||||
qAttrExprInfo: [],
|
||||
qAttrDimInfo: [],
|
||||
qTrendLines: [],
|
||||
},
|
||||
],
|
||||
qEffectiveInterColumnSortOrder: [0, 1],
|
||||
qGrandTotalRow: [
|
||||
{
|
||||
qText: '1',
|
||||
qNum: 1,
|
||||
qElemNumber: -1,
|
||||
qState: 'X',
|
||||
qIsTotalCell: true,
|
||||
},
|
||||
],
|
||||
qDataPages: [],
|
||||
qPivotDataPages: [],
|
||||
qStackedDataPages: [],
|
||||
qMode: 'S',
|
||||
qNoOfLeftDims: -1,
|
||||
qTreeNodesOnDim: [],
|
||||
qColumnOrder: [],
|
||||
},
|
||||
};
|
||||
},
|
||||
getProperties() {
|
||||
return {};
|
||||
},
|
||||
removeListener() {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
post: (viz) => {
|
||||
window.setTimeout(() => viz.destroy(), 500);
|
||||
},
|
||||
};
|
||||
|
||||
const { useElement, useLayout, embed } = window.stardust;
|
||||
|
||||
const chart = {
|
||||
qae: {
|
||||
data: {
|
||||
targets: [
|
||||
{
|
||||
path: '/qHyperCubeDef',
|
||||
dimensions: { min: 1, description: () => 'Some dimension' },
|
||||
measures: { min: 1 },
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
component() {
|
||||
const element = useElement();
|
||||
const layout = useLayout();
|
||||
|
||||
element.innerHTML = `
|
||||
<div>
|
||||
<div class="rendered">Success!</div>
|
||||
<div class="pages">${layout.qHyperCube.qDataPages[0] && layout.qHyperCube.qDataPages[0].qMatrix[0][1].qText}</div>
|
||||
</div>
|
||||
`;
|
||||
},
|
||||
};
|
||||
|
||||
const configuration = embed.createConfiguration({
|
||||
types: [
|
||||
{
|
||||
name: 'my-chart',
|
||||
load: () =>
|
||||
new Promise((resolve) => {
|
||||
setTimeout(() => resolve(chart), 1500);
|
||||
}),
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
function getScenario() {
|
||||
const queryParams = new URLSearchParams(window.location.search);
|
||||
const id = queryParams.get('scenario');
|
||||
const scenario = scenarios[id];
|
||||
|
||||
if (!scenario) {
|
||||
throw new Error(`No scenario with id "${id}" found`);
|
||||
}
|
||||
|
||||
return scenario;
|
||||
}
|
||||
|
||||
async function render() {
|
||||
const scenario = getScenario();
|
||||
const app = await window.enigmaMocker.fromGenericObjects([scenario.genericObject]);
|
||||
const element = document.querySelector('.viz');
|
||||
const viz = await configuration(app).render({ element, id: 'bb8' });
|
||||
|
||||
if (typeof scenario.post === 'function') {
|
||||
scenario.post(viz);
|
||||
}
|
||||
}
|
||||
|
||||
function addButtons() {
|
||||
const actionsElement = document.querySelector('.actions');
|
||||
|
||||
Object.entries(scenarios).forEach(([id, scenario]) => {
|
||||
const btn = document.createElement('button');
|
||||
btn.textContent = scenario.name;
|
||||
btn.addEventListener('click', () => {
|
||||
window.location = `/visualize/life-mocked.html?scenario=${id}`;
|
||||
});
|
||||
actionsElement.appendChild(btn);
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('load', render);
|
||||
window.addEventListener('load', addButtons);
|
||||
180
yarn.lock
180
yarn.lock
@@ -6118,14 +6118,6 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
|
||||
integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==
|
||||
|
||||
"@types/bytebuffer@^5.0.40":
|
||||
version "5.0.41"
|
||||
resolved "https://registry.yarnpkg.com/@types/bytebuffer/-/bytebuffer-5.0.41.tgz#6850dba4d4cd2846596b4842874d5bfc01cd3db1"
|
||||
integrity sha512-Mdrv4YcaHvpkx25ksqqFaezktx3yZRcd51GZY0rY/9avyaqZdiT/GiWRhfrJhMpgzXqTOSHgGvsumGxJFNiZZA==
|
||||
dependencies:
|
||||
"@types/long" "*"
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/color-convert@^2.0.0":
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.0.tgz#8f5ee6b9e863dcbee5703f5a517ffb13d3ea4e22"
|
||||
@@ -6286,11 +6278,6 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
|
||||
integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
|
||||
|
||||
"@types/long@*":
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9"
|
||||
integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==
|
||||
|
||||
"@types/mdast@^3.0.0":
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb"
|
||||
@@ -7393,14 +7380,6 @@ asap@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
|
||||
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
|
||||
|
||||
ascli@~1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc"
|
||||
integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=
|
||||
dependencies:
|
||||
colour "~0.7.1"
|
||||
optjs "~3.2.2"
|
||||
|
||||
asn1.js@^4.0.0:
|
||||
version "4.10.1"
|
||||
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
|
||||
@@ -8110,13 +8089,6 @@ byte-size@^7.0.0:
|
||||
resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3"
|
||||
integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==
|
||||
|
||||
bytebuffer@~5:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd"
|
||||
integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=
|
||||
dependencies:
|
||||
long "~3"
|
||||
|
||||
bytes@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
|
||||
@@ -8278,7 +8250,7 @@ camelcase-keys@^6.2.2:
|
||||
map-obj "^4.0.0"
|
||||
quick-lru "^4.0.1"
|
||||
|
||||
camelcase@^2.0.0, camelcase@^2.0.1:
|
||||
camelcase@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
|
||||
|
||||
@@ -8698,15 +8670,6 @@ clipboard@^2.0.0:
|
||||
select "^1.1.2"
|
||||
tiny-emitter "^2.0.0"
|
||||
|
||||
cliui@^3.0.3:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
|
||||
integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
|
||||
dependencies:
|
||||
string-width "^1.0.1"
|
||||
strip-ansi "^3.0.1"
|
||||
wrap-ansi "^2.0.0"
|
||||
|
||||
cliui@^4.0.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
|
||||
@@ -8835,11 +8798,6 @@ colors@^1.1.2:
|
||||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
|
||||
integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
|
||||
|
||||
colour@~0.7.1:
|
||||
version "0.7.1"
|
||||
resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778"
|
||||
integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=
|
||||
|
||||
columnify@^1.5.4:
|
||||
version "1.5.4"
|
||||
resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb"
|
||||
@@ -12027,10 +11985,10 @@ glob@7.1.3, glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.3:
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^7.0.5, glob@^7.1.6:
|
||||
version "7.1.6"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
|
||||
glob@^7.1.4:
|
||||
version "7.1.4"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
|
||||
integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
@@ -12039,10 +11997,10 @@ glob@^7.0.5, glob@^7.1.6:
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^7.1.4:
|
||||
version "7.1.4"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
|
||||
integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
|
||||
glob@^7.1.6:
|
||||
version "7.1.6"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
@@ -12232,18 +12190,6 @@ growl@1.10.5:
|
||||
version "1.10.5"
|
||||
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
|
||||
|
||||
grpc@^1.14.1:
|
||||
version "1.24.3"
|
||||
resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.24.3.tgz#92efe28dfc1250dca179b8133e40b4f2341473d9"
|
||||
integrity sha512-EDemzuZTfhM0hgrXqC4PtR76O3t+hTIYJYR5vgiW0yt2WJqo4mhxUqZUirzUQz34Psz7dbLp38C6Cl7Ij2vXRQ==
|
||||
dependencies:
|
||||
"@types/bytebuffer" "^5.0.40"
|
||||
lodash.camelcase "^4.3.0"
|
||||
lodash.clone "^4.5.0"
|
||||
nan "^2.13.2"
|
||||
node-pre-gyp "^0.15.0"
|
||||
protobufjs "^5.0.3"
|
||||
|
||||
gzip-size@5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
|
||||
@@ -14490,11 +14436,6 @@ lodash.camelcase@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
|
||||
|
||||
lodash.clone@^4.5.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6"
|
||||
integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=
|
||||
|
||||
lodash.debounce@^4.0.8:
|
||||
version "4.0.8"
|
||||
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
|
||||
@@ -14592,11 +14533,6 @@ lolex@^4.1.0, lolex@^4.2.0:
|
||||
resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.2.0.tgz#ddbd7f6213ca1ea5826901ab1222b65d714b3cd7"
|
||||
integrity sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==
|
||||
|
||||
long@~3:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
|
||||
integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=
|
||||
|
||||
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
|
||||
@@ -15222,7 +15158,7 @@ minipass-sized@^1.0.3:
|
||||
dependencies:
|
||||
minipass "^3.0.0"
|
||||
|
||||
minipass@^2.2.1, minipass@^2.3.4, minipass@^2.8.6:
|
||||
minipass@^2.2.1, minipass@^2.3.4:
|
||||
version "2.9.0"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
|
||||
integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
|
||||
@@ -15237,7 +15173,7 @@ minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3:
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
minizlib@^1.1.1, minizlib@^1.2.1:
|
||||
minizlib@^1.1.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
|
||||
dependencies:
|
||||
@@ -15449,11 +15385,6 @@ mute-stream@0.0.8, mute-stream@~0.0.4:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
||||
|
||||
nan@^2.13.2:
|
||||
version "2.14.1"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
|
||||
integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
|
||||
|
||||
nan@^2.9.2:
|
||||
version "2.12.1"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552"
|
||||
@@ -15491,15 +15422,6 @@ needle@^2.2.1:
|
||||
iconv-lite "^0.4.4"
|
||||
sax "^1.2.4"
|
||||
|
||||
needle@^2.5.0:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/needle/-/needle-2.5.0.tgz#e6fc4b3cc6c25caed7554bd613a5cf0bac8c31c0"
|
||||
integrity sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==
|
||||
dependencies:
|
||||
debug "^3.2.6"
|
||||
iconv-lite "^0.4.4"
|
||||
sax "^1.2.4"
|
||||
|
||||
negotiator@0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
|
||||
@@ -15690,22 +15612,6 @@ node-pre-gyp@^0.10.0:
|
||||
semver "^5.3.0"
|
||||
tar "^4"
|
||||
|
||||
node-pre-gyp@^0.15.0:
|
||||
version "0.15.0"
|
||||
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz#c2fc383276b74c7ffa842925241553e8b40f1087"
|
||||
integrity sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==
|
||||
dependencies:
|
||||
detect-libc "^1.0.2"
|
||||
mkdirp "^0.5.3"
|
||||
needle "^2.5.0"
|
||||
nopt "^4.0.1"
|
||||
npm-packlist "^1.1.6"
|
||||
npmlog "^4.0.2"
|
||||
rc "^1.2.7"
|
||||
rimraf "^2.6.1"
|
||||
semver "^5.3.0"
|
||||
tar "^4.4.2"
|
||||
|
||||
node-releases@^1.1.61, node-releases@^1.1.70, node-releases@^1.1.71:
|
||||
version "1.1.71"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb"
|
||||
@@ -16239,11 +16145,6 @@ optionator@^0.9.1:
|
||||
type-check "^0.4.0"
|
||||
word-wrap "^1.2.3"
|
||||
|
||||
optjs@~3.2.2:
|
||||
version "3.2.2"
|
||||
resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee"
|
||||
integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4=
|
||||
|
||||
ora@^5.4.1:
|
||||
version "5.4.1"
|
||||
resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18"
|
||||
@@ -16267,13 +16168,6 @@ os-homedir@^1.0.0, os-homedir@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
|
||||
|
||||
os-locale@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
|
||||
integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
|
||||
dependencies:
|
||||
lcid "^1.0.0"
|
||||
|
||||
os-locale@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
|
||||
@@ -17475,16 +17369,6 @@ proto-list@~1.2.1:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
|
||||
|
||||
protobufjs@^5.0.3:
|
||||
version "5.0.3"
|
||||
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17"
|
||||
integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==
|
||||
dependencies:
|
||||
ascli "~1"
|
||||
bytebuffer "~5"
|
||||
glob "^7.0.5"
|
||||
yargs "^3.10.0"
|
||||
|
||||
protocols@^1.1.0, protocols@^1.4.0:
|
||||
version "1.4.7"
|
||||
resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32"
|
||||
@@ -17610,13 +17494,6 @@ qix-faker@0.3.0:
|
||||
dependencies:
|
||||
faker "^4.1.0"
|
||||
|
||||
qlik-sse@0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/qlik-sse/-/qlik-sse-0.3.0.tgz#d251bf1ffd0059d1721e893a58db5fd62560d0fd"
|
||||
integrity sha512-vbhoF7R3qWg4kKTDjN/mnPdbRFmn4gPQIrEp2Q8t1QLChtEAjZJU54OSJd2qzn7F1zHv5I2Zg7CNs2QEw+hP/w==
|
||||
dependencies:
|
||||
grpc "^1.14.1"
|
||||
|
||||
qs@6.7.0:
|
||||
version "6.7.0"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
|
||||
@@ -20121,19 +19998,6 @@ tar@^4, tar@^4.4.8:
|
||||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.2"
|
||||
|
||||
tar@^4.4.2:
|
||||
version "4.4.13"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
|
||||
integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
|
||||
dependencies:
|
||||
chownr "^1.1.1"
|
||||
fs-minipass "^1.2.5"
|
||||
minipass "^2.8.6"
|
||||
minizlib "^1.2.1"
|
||||
mkdirp "^0.5.0"
|
||||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.3"
|
||||
|
||||
tar@^6.0.2:
|
||||
version "6.0.5"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f"
|
||||
@@ -21389,11 +21253,6 @@ wildcard@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
|
||||
integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
|
||||
|
||||
window-size@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876"
|
||||
integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=
|
||||
|
||||
word-wrap@^1.2.3:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
|
||||
@@ -21584,7 +21443,7 @@ xtend@^4.0.1:
|
||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
|
||||
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
|
||||
|
||||
y18n@^3.2.0, y18n@^3.2.1:
|
||||
y18n@^3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
|
||||
integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
|
||||
@@ -21602,7 +21461,7 @@ yallist@^2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
|
||||
|
||||
yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
|
||||
yallist@^3.0.0, yallist@^3.0.2:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
|
||||
|
||||
@@ -21807,19 +21666,6 @@ yargs@^17.0.0:
|
||||
y18n "^5.0.5"
|
||||
yargs-parser "^20.2.2"
|
||||
|
||||
yargs@^3.10.0:
|
||||
version "3.32.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"
|
||||
integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=
|
||||
dependencies:
|
||||
camelcase "^2.0.1"
|
||||
cliui "^3.0.3"
|
||||
decamelize "^1.1.1"
|
||||
os-locale "^1.4.0"
|
||||
string-width "^1.0.1"
|
||||
window-size "^0.1.4"
|
||||
y18n "^3.2.0"
|
||||
|
||||
yauzl@2.4.1:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
|
||||
|
||||
Reference in New Issue
Block a user