Merge pull request #8117 from Budibase/lab/mongodb
Add aggregate method to MongoDB
This commit is contained in:
commit
c3f556dc8a
|
@ -3,7 +3,6 @@
|
||||||
"private": true,
|
"private": true,
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@rollup/plugin-json": "^4.0.2",
|
"@rollup/plugin-json": "^4.0.2",
|
||||||
"@types/mongodb": "3.6.3",
|
|
||||||
"@typescript-eslint/parser": "4.28.0",
|
"@typescript-eslint/parser": "4.28.0",
|
||||||
"babel-eslint": "^10.0.3",
|
"babel-eslint": "^10.0.3",
|
||||||
"eslint": "^7.28.0",
|
"eslint": "^7.28.0",
|
||||||
|
|
|
@ -1,7 +1,16 @@
|
||||||
<script>
|
<script>
|
||||||
import Editor from "./QueryEditor.svelte"
|
import Editor from "./QueryEditor.svelte"
|
||||||
import FieldsBuilder from "./QueryFieldsBuilder.svelte"
|
import FieldsBuilder from "./QueryFieldsBuilder.svelte"
|
||||||
import { Label, Input } from "@budibase/bbui"
|
import {
|
||||||
|
Label,
|
||||||
|
Input,
|
||||||
|
Select,
|
||||||
|
Divider,
|
||||||
|
Layout,
|
||||||
|
Icon,
|
||||||
|
Button,
|
||||||
|
ActionButton,
|
||||||
|
} from "@budibase/bbui"
|
||||||
|
|
||||||
const QueryTypes = {
|
const QueryTypes = {
|
||||||
SQL: "sql",
|
SQL: "sql",
|
||||||
|
@ -15,6 +24,8 @@
|
||||||
export let editable = true
|
export let editable = true
|
||||||
export let height = 500
|
export let height = 500
|
||||||
|
|
||||||
|
let stepEditors = []
|
||||||
|
|
||||||
$: urlDisplay =
|
$: urlDisplay =
|
||||||
schema.urlDisplay &&
|
schema.urlDisplay &&
|
||||||
`${datasource.config.url}${
|
`${datasource.config.url}${
|
||||||
|
@ -24,6 +35,39 @@
|
||||||
function updateQuery({ detail }) {
|
function updateQuery({ detail }) {
|
||||||
query.fields[schema.type] = detail.value
|
query.fields[schema.type] = detail.value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function updateEditorsOnDelete(deleteIndex) {
|
||||||
|
for (let i = deleteIndex; i < query.fields.steps?.length - 1; i++) {
|
||||||
|
stepEditors[i].update(query.fields.steps[i + 1].value?.value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function updateEditorsOnSwap(actionIndex, targetIndex) {
|
||||||
|
const target = query.fields.steps[targetIndex].value?.value
|
||||||
|
stepEditors[targetIndex].update(
|
||||||
|
query.fields.steps[actionIndex].value?.value
|
||||||
|
)
|
||||||
|
stepEditors[actionIndex].update(target)
|
||||||
|
}
|
||||||
|
|
||||||
|
function setEditorTemplate(fromKey, toKey, index) {
|
||||||
|
const currentValue = query.fields.steps[index].value?.value
|
||||||
|
if (
|
||||||
|
!currentValue ||
|
||||||
|
currentValue.toString().replace("\\s", "").length < 3 ||
|
||||||
|
schema.steps.filter(step => step.key === fromKey)[0]?.template ===
|
||||||
|
currentValue
|
||||||
|
) {
|
||||||
|
query.fields.steps[index].value.value = schema.steps.filter(
|
||||||
|
step => step.key === toKey
|
||||||
|
)[0]?.template
|
||||||
|
stepEditors[index].update(query.fields.steps[index].value.value)
|
||||||
|
}
|
||||||
|
query.fields.steps[index].key = toKey
|
||||||
|
}
|
||||||
|
|
||||||
|
$: shouldDisplayJsonBox =
|
||||||
|
schema.type === QueryTypes.JSON &&
|
||||||
|
query.fields.extra?.actionType !== "pipeline"
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if schema}
|
{#if schema}
|
||||||
|
@ -38,7 +82,7 @@
|
||||||
value={query.fields.sql}
|
value={query.fields.sql}
|
||||||
parameters={query.parameters}
|
parameters={query.parameters}
|
||||||
/>
|
/>
|
||||||
{:else if schema.type === QueryTypes.JSON}
|
{:else if shouldDisplayJsonBox}
|
||||||
<Editor
|
<Editor
|
||||||
editorHeight={height}
|
editorHeight={height}
|
||||||
label="Query"
|
label="Query"
|
||||||
|
@ -56,6 +100,118 @@
|
||||||
<Input thin outline disabled value={urlDisplay} />
|
<Input thin outline disabled value={urlDisplay} />
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
{:else if query.fields.extra?.actionType === "pipeline"}
|
||||||
|
<br />
|
||||||
|
{#if query.fields.steps?.length === 0}
|
||||||
|
<div class="controls">
|
||||||
|
<Button
|
||||||
|
secondary
|
||||||
|
slot="buttons"
|
||||||
|
on:click={() => {
|
||||||
|
query.fields.steps = [
|
||||||
|
{
|
||||||
|
key: "$match",
|
||||||
|
value: "{\n\t\n}",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}}>Add stage</Button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
{:else}
|
||||||
|
{#each query.fields.steps as step, index}
|
||||||
|
<div class="block">
|
||||||
|
<div class="subblock">
|
||||||
|
<Divider noMargin />
|
||||||
|
<div class="blockSection">
|
||||||
|
<div class="block-options">
|
||||||
|
Stage {index + 1}
|
||||||
|
<div class="block-actions">
|
||||||
|
<div style="margin-right: 24px;">
|
||||||
|
{#if index > 0}
|
||||||
|
<ActionButton
|
||||||
|
quiet
|
||||||
|
on:click={() => {
|
||||||
|
updateEditorsOnSwap(index, index - 1)
|
||||||
|
const target = query.fields.steps[index - 1].key
|
||||||
|
query.fields.steps[index - 1].key =
|
||||||
|
query.fields.steps[index].key
|
||||||
|
query.fields.steps[index].key = target
|
||||||
|
}}
|
||||||
|
icon="ChevronUp"
|
||||||
|
/>
|
||||||
|
{/if}
|
||||||
|
{#if index < query.fields.steps.length - 1}
|
||||||
|
<ActionButton
|
||||||
|
quiet
|
||||||
|
on:click={() => {
|
||||||
|
updateEditorsOnSwap(index, index + 1)
|
||||||
|
const target = query.fields.steps[index + 1].key
|
||||||
|
query.fields.steps[index + 1].key =
|
||||||
|
query.fields.steps[index].key
|
||||||
|
query.fields.steps[index].key = target
|
||||||
|
}}
|
||||||
|
icon="ChevronDown"
|
||||||
|
/>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
<ActionButton
|
||||||
|
on:click={() => {
|
||||||
|
updateEditorsOnDelete(index)
|
||||||
|
query.fields.steps.splice(index, 1)
|
||||||
|
query.fields.steps = [...query.fields.steps]
|
||||||
|
}}
|
||||||
|
icon="DeleteOutline"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<Layout noPadding gap="S">
|
||||||
|
<div class="fields">
|
||||||
|
<div class="block-field">
|
||||||
|
<Select
|
||||||
|
value={step.key}
|
||||||
|
options={schema.steps.map(s => s.key)}
|
||||||
|
on:change={({ detail }) => {
|
||||||
|
setEditorTemplate(step.key, detail, index)
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Editor
|
||||||
|
bind:this={stepEditors[index]}
|
||||||
|
editorHeight={height / 2}
|
||||||
|
mode="json"
|
||||||
|
value={typeof step.value === "string"
|
||||||
|
? step.value
|
||||||
|
: step.value.value}
|
||||||
|
on:change={({ detail }) => {
|
||||||
|
query.fields.steps[index].value = detail
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Layout>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="separator" />
|
||||||
|
{#if index === query.fields.steps.length - 1}
|
||||||
|
<Icon
|
||||||
|
hoverable
|
||||||
|
name="AddCircle"
|
||||||
|
size="S"
|
||||||
|
on:click={() => {
|
||||||
|
query.fields.steps = [
|
||||||
|
...query.fields.steps,
|
||||||
|
{
|
||||||
|
key: "$match",
|
||||||
|
value: "{\n\t\n}",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<br />
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
{/key}
|
{/key}
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -67,4 +223,57 @@
|
||||||
grid-gap: var(--spacing-l);
|
grid-gap: var(--spacing-l);
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
.blockSection {
|
||||||
|
padding: var(--spacing-xl);
|
||||||
|
}
|
||||||
|
.block {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: -6px;
|
||||||
|
}
|
||||||
|
.subblock {
|
||||||
|
width: 480px;
|
||||||
|
font-size: 16px;
|
||||||
|
background-color: var(--background);
|
||||||
|
border: 1px solid var(--spectrum-global-color-gray-300);
|
||||||
|
border-radius: 4px 4px 4px 4px;
|
||||||
|
}
|
||||||
|
.block-options {
|
||||||
|
justify-content: space-between;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding-bottom: 24px;
|
||||||
|
}
|
||||||
|
.block-actions {
|
||||||
|
justify-content: space-between;
|
||||||
|
display: flex;
|
||||||
|
align-items: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fields {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: stretch;
|
||||||
|
gap: var(--spacing-s);
|
||||||
|
}
|
||||||
|
.block-field {
|
||||||
|
display: grid;
|
||||||
|
grid-gap: 5px;
|
||||||
|
}
|
||||||
|
.separator {
|
||||||
|
width: 1px;
|
||||||
|
height: 25px;
|
||||||
|
border-left: 1px dashed var(--grey-4);
|
||||||
|
color: var(--grey-4);
|
||||||
|
/* center horizontally */
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
.controls {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: right;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -33,7 +33,7 @@ module MongoMock {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
mongodb.ObjectID = jest.requireActual("mongodb").ObjectID
|
mongodb.ObjectId = jest.requireActual("mongodb").ObjectId
|
||||||
|
|
||||||
module.exports = mongodb
|
module.exports = mongodb
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@
|
||||||
"koa2-ratelimit": "1.1.1",
|
"koa2-ratelimit": "1.1.1",
|
||||||
"lodash": "4.17.21",
|
"lodash": "4.17.21",
|
||||||
"memorystream": "0.3.1",
|
"memorystream": "0.3.1",
|
||||||
"mongodb": "3.6.3",
|
"mongodb": "4.9",
|
||||||
"mssql": "6.2.3",
|
"mssql": "6.2.3",
|
||||||
"mysql2": "2.3.3",
|
"mysql2": "2.3.3",
|
||||||
"node-fetch": "2.6.7",
|
"node-fetch": "2.6.7",
|
||||||
|
@ -166,7 +166,6 @@
|
||||||
"@types/koa": "2.13.4",
|
"@types/koa": "2.13.4",
|
||||||
"@types/koa__router": "8.0.0",
|
"@types/koa__router": "8.0.0",
|
||||||
"@types/lodash": "4.14.180",
|
"@types/lodash": "4.14.180",
|
||||||
"@types/mongodb": "3.6.3",
|
|
||||||
"@types/node": "14.18.20",
|
"@types/node": "14.18.20",
|
||||||
"@types/node-fetch": "2.6.1",
|
"@types/node-fetch": "2.6.1",
|
||||||
"@types/oracledb": "5.2.2",
|
"@types/oracledb": "5.2.2",
|
||||||
|
|
|
@ -6,13 +6,12 @@ import {
|
||||||
} from "@budibase/types"
|
} from "@budibase/types"
|
||||||
import {
|
import {
|
||||||
MongoClient,
|
MongoClient,
|
||||||
ObjectID,
|
ObjectId,
|
||||||
FilterQuery,
|
Filter,
|
||||||
UpdateQuery,
|
UpdateFilter,
|
||||||
FindOneAndUpdateOption,
|
FindOneAndUpdateOptions,
|
||||||
UpdateOneOptions,
|
UpdateOptions,
|
||||||
UpdateManyOptions,
|
OperationOptions,
|
||||||
CommonOptions,
|
|
||||||
} from "mongodb"
|
} from "mongodb"
|
||||||
|
|
||||||
interface MongoDBConfig {
|
interface MongoDBConfig {
|
||||||
|
@ -57,6 +56,232 @@ const SCHEMA: Integration = {
|
||||||
delete: {
|
delete: {
|
||||||
type: QueryType.JSON,
|
type: QueryType.JSON,
|
||||||
},
|
},
|
||||||
|
aggregate: {
|
||||||
|
type: QueryType.JSON,
|
||||||
|
steps: [
|
||||||
|
{
|
||||||
|
key: "$addFields",
|
||||||
|
template: "{\n\t\n}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$bucket",
|
||||||
|
template: `{
|
||||||
|
"groupBy": "",
|
||||||
|
"boundaries": [],
|
||||||
|
"default": "",
|
||||||
|
"output": {}
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$bucketAuto",
|
||||||
|
template: `{
|
||||||
|
"groupBy": "",
|
||||||
|
"buckets": 1,
|
||||||
|
"output": {},
|
||||||
|
"granularity": "R5"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$changeStream",
|
||||||
|
template: `{
|
||||||
|
"allChangesForCluster": true,
|
||||||
|
"fullDocument": "",
|
||||||
|
"fullDocumentBeforeChange": "",
|
||||||
|
"resumeAfter": 1,
|
||||||
|
"showExpandedEvents": true,
|
||||||
|
"startAfter": {},
|
||||||
|
"startAtOperationTime": ""
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$collStats",
|
||||||
|
template: `{
|
||||||
|
"latencyStats": { "histograms": true } },
|
||||||
|
"storageStats": { "scale": 1 } },
|
||||||
|
"count": {},
|
||||||
|
"queryExecStats": {}
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$count",
|
||||||
|
template: ``,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$densify",
|
||||||
|
template: `{
|
||||||
|
"field": "",
|
||||||
|
"partitionByFields": [],
|
||||||
|
"range": {
|
||||||
|
"step": 1,
|
||||||
|
"unit": 1,
|
||||||
|
"bounds": "full"
|
||||||
|
}
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$documents",
|
||||||
|
template: `[]`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$facet",
|
||||||
|
template: `{\n\t\n}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$fill",
|
||||||
|
template: `{
|
||||||
|
"partitionBy": "",
|
||||||
|
"partitionByFields": [],
|
||||||
|
"sortBy": {},
|
||||||
|
"output": {}
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$geoNear",
|
||||||
|
template: `{
|
||||||
|
"near": {
|
||||||
|
"type": "Point",
|
||||||
|
"coordinates": [
|
||||||
|
-73.98142, 40.71782
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"key": "location",
|
||||||
|
"distanceField": "dist.calculated",
|
||||||
|
"query": { "category": "Parks" }
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$graphLookup",
|
||||||
|
template: `{
|
||||||
|
"from": "",
|
||||||
|
"startWith": "",
|
||||||
|
"connectFromField": "",
|
||||||
|
"connectToField": "",
|
||||||
|
"as": "",
|
||||||
|
"maxDepth": 1,
|
||||||
|
"depthField": "",
|
||||||
|
"restrictSearchWithMatch": {}
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$group",
|
||||||
|
template: `{
|
||||||
|
"_id": ""
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$indexStats",
|
||||||
|
template: "{\n\t\n}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$limit",
|
||||||
|
template: `1`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$listLocalSessions",
|
||||||
|
template: `{\n\t\n}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$listSessions",
|
||||||
|
template: `{\n\t\n}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$lookup",
|
||||||
|
template: `{
|
||||||
|
"from": "",
|
||||||
|
"localField": "",
|
||||||
|
"foreignField": "",
|
||||||
|
"as": ""
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$match",
|
||||||
|
template: "{\n\t\n}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$merge",
|
||||||
|
template: `{
|
||||||
|
"into": {},
|
||||||
|
"on": "_id",
|
||||||
|
"whenMatched": "replace",
|
||||||
|
"whenNotMatched": "insert"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$out",
|
||||||
|
template: `{
|
||||||
|
"db": "",
|
||||||
|
"coll": ""
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$planCacheStats",
|
||||||
|
template: "{\n\t\n}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$project",
|
||||||
|
template: "{\n\t\n}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$redact",
|
||||||
|
template: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$replaceRoot",
|
||||||
|
template: `{ "newRoot": "" }`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$replaceWith",
|
||||||
|
template: ``,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$sample",
|
||||||
|
template: `{ "size": 3 }`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$set",
|
||||||
|
template: "{\n\t\n}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$setWindowFields",
|
||||||
|
template: `{
|
||||||
|
"partitionBy": "",
|
||||||
|
"sortBy": {},
|
||||||
|
"output": {}
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$skip",
|
||||||
|
template: `1`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$sort",
|
||||||
|
template: "{\n\t\n}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$sortByCount",
|
||||||
|
template: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$unionWith",
|
||||||
|
template: `{
|
||||||
|
"coll": "",
|
||||||
|
"pipeline": []
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$unset",
|
||||||
|
template: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "$unwind",
|
||||||
|
template: `{
|
||||||
|
"path": "",
|
||||||
|
"includeArrayIndex": "",
|
||||||
|
"preserveNullAndEmptyArrays": true
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
extra: {
|
extra: {
|
||||||
collection: {
|
collection: {
|
||||||
|
@ -64,8 +289,8 @@ const SCHEMA: Integration = {
|
||||||
type: DatasourceFieldType.STRING,
|
type: DatasourceFieldType.STRING,
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
actionTypes: {
|
actionType: {
|
||||||
displayName: "Action Types",
|
displayName: "Query Type",
|
||||||
type: DatasourceFieldType.LIST,
|
type: DatasourceFieldType.LIST,
|
||||||
required: true,
|
required: true,
|
||||||
data: {
|
data: {
|
||||||
|
@ -73,6 +298,7 @@ const SCHEMA: Integration = {
|
||||||
create: ["insertOne", "insertMany"],
|
create: ["insertOne", "insertMany"],
|
||||||
update: ["updateOne", "updateMany"],
|
update: ["updateOne", "updateMany"],
|
||||||
delete: ["deleteOne", "deleteMany"],
|
delete: ["deleteOne", "deleteMany"],
|
||||||
|
aggregate: ["json", "pipeline"],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -104,7 +330,7 @@ class MongoIntegration implements IntegrationBase {
|
||||||
) {
|
) {
|
||||||
const id = json[field].match(/(?<=objectid\(['"]).*(?=['"]\))/gi)?.[0]
|
const id = json[field].match(/(?<=objectid\(['"]).*(?=['"]\))/gi)?.[0]
|
||||||
if (id) {
|
if (id) {
|
||||||
json[field] = ObjectID.createFromHexString(id)
|
json[field] = ObjectId.createFromHexString(id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -168,7 +394,7 @@ class MongoIntegration implements IntegrationBase {
|
||||||
|
|
||||||
// For mongodb we add an extra actionType to specify
|
// For mongodb we add an extra actionType to specify
|
||||||
// which method we want to call on the collection
|
// which method we want to call on the collection
|
||||||
switch (query.extra.actionTypes) {
|
switch (query.extra.actionType) {
|
||||||
case "insertOne": {
|
case "insertOne": {
|
||||||
return await collection.insertOne(json)
|
return await collection.insertOne(json)
|
||||||
}
|
}
|
||||||
|
@ -177,7 +403,7 @@ class MongoIntegration implements IntegrationBase {
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`actionType ${query.extra.actionTypes} does not exist on DB for create`
|
`actionType ${query.extra.actionType} does not exist on DB for create`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -196,7 +422,7 @@ class MongoIntegration implements IntegrationBase {
|
||||||
const collection = db.collection(query.extra.collection)
|
const collection = db.collection(query.extra.collection)
|
||||||
let json = this.createObjectIds(query.json)
|
let json = this.createObjectIds(query.json)
|
||||||
|
|
||||||
switch (query.extra.actionTypes) {
|
switch (query.extra.actionType) {
|
||||||
case "find": {
|
case "find": {
|
||||||
return await collection.find(json).toArray()
|
return await collection.find(json).toArray()
|
||||||
}
|
}
|
||||||
|
@ -208,9 +434,9 @@ class MongoIntegration implements IntegrationBase {
|
||||||
json = this.parseQueryParams(query.json, "update")
|
json = this.parseQueryParams(query.json, "update")
|
||||||
}
|
}
|
||||||
let findAndUpdateJson = this.createObjectIds(json) as {
|
let findAndUpdateJson = this.createObjectIds(json) as {
|
||||||
filter: FilterQuery<any>
|
filter: Filter<any>
|
||||||
update: UpdateQuery<any>
|
update: UpdateFilter<any>
|
||||||
options: FindOneAndUpdateOption<any>
|
options: FindOneAndUpdateOptions
|
||||||
}
|
}
|
||||||
return await collection.findOneAndUpdate(
|
return await collection.findOneAndUpdate(
|
||||||
findAndUpdateJson.filter,
|
findAndUpdateJson.filter,
|
||||||
|
@ -226,7 +452,7 @@ class MongoIntegration implements IntegrationBase {
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`actionType ${query.extra.actionTypes} does not exist on DB for read`
|
`actionType ${query.extra.actionType} does not exist on DB for read`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -248,29 +474,29 @@ class MongoIntegration implements IntegrationBase {
|
||||||
queryJson = this.parseQueryParams(queryJson, "update")
|
queryJson = this.parseQueryParams(queryJson, "update")
|
||||||
}
|
}
|
||||||
let json = this.createObjectIds(queryJson) as {
|
let json = this.createObjectIds(queryJson) as {
|
||||||
filter: FilterQuery<any>
|
filter: Filter<any>
|
||||||
update: UpdateQuery<any>
|
update: UpdateFilter<any>
|
||||||
options: object
|
options: object
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (query.extra.actionTypes) {
|
switch (query.extra.actionType) {
|
||||||
case "updateOne": {
|
case "updateOne": {
|
||||||
return await collection.updateOne(
|
return await collection.updateOne(
|
||||||
json.filter,
|
json.filter,
|
||||||
json.update,
|
json.update,
|
||||||
json.options as UpdateOneOptions
|
json.options as UpdateOptions
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
case "updateMany": {
|
case "updateMany": {
|
||||||
return await collection.updateMany(
|
return await collection.updateMany(
|
||||||
json.filter,
|
json.filter,
|
||||||
json.update,
|
json.update,
|
||||||
json.options as UpdateManyOptions
|
json.options as UpdateOptions
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`actionType ${query.extra.actionTypes} does not exist on DB for update`
|
`actionType ${query.extra.actionType} does not exist on DB for update`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -292,8 +518,8 @@ class MongoIntegration implements IntegrationBase {
|
||||||
queryJson = this.parseQueryParams(queryJson, "delete")
|
queryJson = this.parseQueryParams(queryJson, "delete")
|
||||||
}
|
}
|
||||||
let json = this.createObjectIds(queryJson) as {
|
let json = this.createObjectIds(queryJson) as {
|
||||||
filter: FilterQuery<any>
|
filter: Filter<any>
|
||||||
options: CommonOptions
|
options: OperationOptions
|
||||||
}
|
}
|
||||||
if (!json.options) {
|
if (!json.options) {
|
||||||
json = {
|
json = {
|
||||||
|
@ -302,7 +528,7 @@ class MongoIntegration implements IntegrationBase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (query.extra.actionTypes) {
|
switch (query.extra.actionType) {
|
||||||
case "deleteOne": {
|
case "deleteOne": {
|
||||||
return await collection.deleteOne(json.filter, json.options)
|
return await collection.deleteOne(json.filter, json.options)
|
||||||
}
|
}
|
||||||
|
@ -311,7 +537,7 @@ class MongoIntegration implements IntegrationBase {
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`actionType ${query.extra.actionTypes} does not exist on DB for delete`
|
`actionType ${query.extra.actionType} does not exist on DB for delete`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -322,6 +548,43 @@ class MongoIntegration implements IntegrationBase {
|
||||||
await this.client.close()
|
await this.client.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async aggregate(query: {
|
||||||
|
json: object
|
||||||
|
steps: any[]
|
||||||
|
extra: { [key: string]: string }
|
||||||
|
}) {
|
||||||
|
try {
|
||||||
|
await this.connect()
|
||||||
|
const db = this.client.db(this.config.db)
|
||||||
|
const collection = db.collection(query.extra.collection)
|
||||||
|
let response = []
|
||||||
|
if (query.extra?.actionType === "pipeline") {
|
||||||
|
for await (const doc of collection.aggregate(
|
||||||
|
query.steps.map(({ key, value }) => {
|
||||||
|
let temp: any = {}
|
||||||
|
temp[key] = JSON.parse(value.value)
|
||||||
|
return this.createObjectIds(temp)
|
||||||
|
})
|
||||||
|
)) {
|
||||||
|
response.push(doc)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const stages: Array<any> = query.json as Array<any>
|
||||||
|
for await (const doc of collection.aggregate(
|
||||||
|
stages ? this.createObjectIds(stages) : []
|
||||||
|
)) {
|
||||||
|
response.push(doc)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return response
|
||||||
|
} catch (err) {
|
||||||
|
console.error("Error writing to mongodb", err)
|
||||||
|
throw err
|
||||||
|
} finally {
|
||||||
|
await this.client.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
|
@ -34,7 +34,7 @@ describe("MongoDB Integration", () => {
|
||||||
await config.integration.create({
|
await config.integration.create({
|
||||||
index: indexName,
|
index: indexName,
|
||||||
json: body,
|
json: body,
|
||||||
extra: { collection: "testCollection", actionTypes: "insertOne" },
|
extra: { collection: "testCollection", actionType: "insertOne" },
|
||||||
})
|
})
|
||||||
expect(config.integration.client.insertOne).toHaveBeenCalledWith(body)
|
expect(config.integration.client.insertOne).toHaveBeenCalledWith(body)
|
||||||
})
|
})
|
||||||
|
@ -44,7 +44,7 @@ describe("MongoDB Integration", () => {
|
||||||
json: {
|
json: {
|
||||||
address: "test",
|
address: "test",
|
||||||
},
|
},
|
||||||
extra: { collection: "testCollection", actionTypes: "find" },
|
extra: { collection: "testCollection", actionType: "find" },
|
||||||
}
|
}
|
||||||
const response = await config.integration.read(query)
|
const response = await config.integration.read(query)
|
||||||
expect(config.integration.client.find).toHaveBeenCalledWith(query.json)
|
expect(config.integration.client.find).toHaveBeenCalledWith(query.json)
|
||||||
|
@ -61,7 +61,7 @@ describe("MongoDB Integration", () => {
|
||||||
opt: "option",
|
opt: "option",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
extra: { collection: "testCollection", actionTypes: "deleteOne" },
|
extra: { collection: "testCollection", actionType: "deleteOne" },
|
||||||
}
|
}
|
||||||
await config.integration.delete(query)
|
await config.integration.delete(query)
|
||||||
expect(config.integration.client.deleteOne).toHaveBeenCalledWith(
|
expect(config.integration.client.deleteOne).toHaveBeenCalledWith(
|
||||||
|
@ -83,7 +83,7 @@ describe("MongoDB Integration", () => {
|
||||||
upsert: false,
|
upsert: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
extra: { collection: "testCollection", actionTypes: "updateOne" },
|
extra: { collection: "testCollection", actionType: "updateOne" },
|
||||||
}
|
}
|
||||||
await config.integration.update(query)
|
await config.integration.update(query)
|
||||||
expect(config.integration.client.updateOne).toHaveBeenCalledWith(
|
expect(config.integration.client.updateOne).toHaveBeenCalledWith(
|
||||||
|
@ -97,7 +97,7 @@ describe("MongoDB Integration", () => {
|
||||||
const restore = disableConsole()
|
const restore = disableConsole()
|
||||||
|
|
||||||
const query = {
|
const query = {
|
||||||
extra: { collection: "testCollection", actionTypes: "deleteOne" },
|
extra: { collection: "testCollection", actionType: "deleteOne" },
|
||||||
}
|
}
|
||||||
|
|
||||||
let error = null
|
let error = null
|
||||||
|
@ -125,19 +125,19 @@ describe("MongoDB Integration", () => {
|
||||||
upsert: false,
|
upsert: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
extra: { collection: "testCollection", actionTypes: "updateOne" },
|
extra: { collection: "testCollection", actionType: "updateOne" },
|
||||||
}
|
}
|
||||||
await config.integration.update(query)
|
await config.integration.update(query)
|
||||||
expect(config.integration.client.updateOne).toHaveBeenCalled()
|
expect(config.integration.client.updateOne).toHaveBeenCalled()
|
||||||
|
|
||||||
const args = config.integration.client.updateOne.mock.calls[0]
|
const args = config.integration.client.updateOne.mock.calls[0]
|
||||||
expect(args[0]).toEqual({
|
expect(args[0]).toEqual({
|
||||||
_id: mongo.ObjectID.createFromHexString("ACBD12345678ABCD12345678"),
|
_id: mongo.ObjectId.createFromHexString("ACBD12345678ABCD12345678"),
|
||||||
name: mongo.ObjectID.createFromHexString("BBBB12345678ABCD12345678"),
|
name: mongo.ObjectId.createFromHexString("BBBB12345678ABCD12345678"),
|
||||||
})
|
})
|
||||||
expect(args[1]).toEqual({
|
expect(args[1]).toEqual({
|
||||||
_id: mongo.ObjectID.createFromHexString("FFFF12345678ABCD12345678"),
|
_id: mongo.ObjectId.createFromHexString("FFFF12345678ABCD12345678"),
|
||||||
name: mongo.ObjectID.createFromHexString("CCCC12345678ABCD12345678"),
|
name: mongo.ObjectId.createFromHexString("CCCC12345678ABCD12345678"),
|
||||||
})
|
})
|
||||||
expect(args[2]).toEqual({
|
expect(args[2]).toEqual({
|
||||||
upsert: false,
|
upsert: false,
|
||||||
|
@ -161,7 +161,7 @@ describe("MongoDB Integration", () => {
|
||||||
upsert: true,
|
upsert: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
extra: { collection: "testCollection", actionTypes: "updateOne" },
|
extra: { collection: "testCollection", actionType: "updateOne" },
|
||||||
}
|
}
|
||||||
await config.integration.update(query)
|
await config.integration.update(query)
|
||||||
expect(config.integration.client.updateOne).toHaveBeenCalled()
|
expect(config.integration.client.updateOne).toHaveBeenCalled()
|
||||||
|
@ -169,12 +169,12 @@ describe("MongoDB Integration", () => {
|
||||||
const args = config.integration.client.updateOne.mock.calls[0]
|
const args = config.integration.client.updateOne.mock.calls[0]
|
||||||
expect(args[0]).toEqual({
|
expect(args[0]).toEqual({
|
||||||
_id: {
|
_id: {
|
||||||
$eq: mongo.ObjectID.createFromHexString("ACBD12345678ABCD12345678"),
|
$eq: mongo.ObjectId.createFromHexString("ACBD12345678ABCD12345678"),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
expect(args[1]).toEqual({
|
expect(args[1]).toEqual({
|
||||||
$set: {
|
$set: {
|
||||||
_id: mongo.ObjectID.createFromHexString("FFFF12345678ABCD12345678"),
|
_id: mongo.ObjectId.createFromHexString("FFFF12345678ABCD12345678"),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
expect(args[2]).toEqual({
|
expect(args[2]).toEqual({
|
||||||
|
@ -200,7 +200,7 @@ describe("MongoDB Integration", () => {
|
||||||
upsert: false,
|
upsert: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
extra: { collection: "testCollection", actionTypes: "findOneAndUpdate" },
|
extra: { collection: "testCollection", actionType: "findOneAndUpdate" },
|
||||||
}
|
}
|
||||||
await config.integration.read(query)
|
await config.integration.read(query)
|
||||||
expect(config.integration.client.findOneAndUpdate).toHaveBeenCalled()
|
expect(config.integration.client.findOneAndUpdate).toHaveBeenCalled()
|
||||||
|
@ -208,7 +208,7 @@ describe("MongoDB Integration", () => {
|
||||||
const args = config.integration.client.findOneAndUpdate.mock.calls[0]
|
const args = config.integration.client.findOneAndUpdate.mock.calls[0]
|
||||||
expect(args[0]).toEqual({
|
expect(args[0]).toEqual({
|
||||||
_id: {
|
_id: {
|
||||||
$eq: mongo.ObjectID.createFromHexString("ACBD12345678ABCD12345678"),
|
$eq: mongo.ObjectId.createFromHexString("ACBD12345678ABCD12345678"),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
expect(args[1]).toEqual({
|
expect(args[1]).toEqual({
|
||||||
|
@ -245,7 +245,7 @@ describe("MongoDB Integration", () => {
|
||||||
{
|
{
|
||||||
"upsert": true
|
"upsert": true
|
||||||
}`,
|
}`,
|
||||||
extra: { collection: "testCollection", actionTypes: "updateOne" },
|
extra: { collection: "testCollection", actionType: "updateOne" },
|
||||||
}
|
}
|
||||||
await config.integration.update(query)
|
await config.integration.update(query)
|
||||||
expect(config.integration.client.updateOne).toHaveBeenCalled()
|
expect(config.integration.client.updateOne).toHaveBeenCalled()
|
||||||
|
@ -253,7 +253,7 @@ describe("MongoDB Integration", () => {
|
||||||
const args = config.integration.client.updateOne.mock.calls[0]
|
const args = config.integration.client.updateOne.mock.calls[0]
|
||||||
expect(args[0]).toEqual({
|
expect(args[0]).toEqual({
|
||||||
_id: {
|
_id: {
|
||||||
$eq: mongo.ObjectID.createFromHexString("ACBD12345678ABCD12345678"),
|
$eq: mongo.ObjectId.createFromHexString("ACBD12345678ABCD12345678"),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
expect(args[1]).toEqual({
|
expect(args[1]).toEqual({
|
||||||
|
@ -300,7 +300,7 @@ describe("MongoDB Integration", () => {
|
||||||
"upsert": true,
|
"upsert": true,
|
||||||
"extra": "ad\\"{\\"d"
|
"extra": "ad\\"{\\"d"
|
||||||
}`,
|
}`,
|
||||||
extra: { collection: "testCollection", actionTypes: "updateOne" },
|
extra: { collection: "testCollection", actionType: "updateOne" },
|
||||||
}
|
}
|
||||||
await config.integration.update(query)
|
await config.integration.update(query)
|
||||||
expect(config.integration.client.updateOne).toHaveBeenCalled()
|
expect(config.integration.client.updateOne).toHaveBeenCalled()
|
||||||
|
@ -308,7 +308,7 @@ describe("MongoDB Integration", () => {
|
||||||
const args = config.integration.client.updateOne.mock.calls[0]
|
const args = config.integration.client.updateOne.mock.calls[0]
|
||||||
expect(args[0]).toEqual({
|
expect(args[0]).toEqual({
|
||||||
_id: {
|
_id: {
|
||||||
$eq: mongo.ObjectID.createFromHexString("ACBD12345678ABCD12345678"),
|
$eq: mongo.ObjectId.createFromHexString("ACBD12345678ABCD12345678"),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
expect(args[1]).toEqual({
|
expect(args[1]).toEqual({
|
||||||
|
|
|
@ -2661,7 +2661,7 @@
|
||||||
"@types/connect" "*"
|
"@types/connect" "*"
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/bson@*", "@types/bson@4.2.0":
|
"@types/bson@4.2.0":
|
||||||
version "4.2.0"
|
version "4.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.2.0.tgz#a2f71e933ff54b2c3bf267b67fa221e295a33337"
|
resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.2.0.tgz#a2f71e933ff54b2c3bf267b67fa221e295a33337"
|
||||||
integrity sha512-ELCPqAdroMdcuxqwMgUpifQyRoTpyYCNr1V9xKyF40VsBobsj+BbWNRvwGchMgBPGqkw655ypkjj2MEF5ywVwg==
|
integrity sha512-ELCPqAdroMdcuxqwMgUpifQyRoTpyYCNr1V9xKyF40VsBobsj+BbWNRvwGchMgBPGqkw655ypkjj2MEF5ywVwg==
|
||||||
|
@ -2887,14 +2887,6 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
|
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
|
||||||
integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
|
integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
|
||||||
|
|
||||||
"@types/mongodb@3.6.3":
|
|
||||||
version "3.6.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.6.3.tgz#5655af409d9e32d5d5ae9a653abf3e5f9c83eb7a"
|
|
||||||
integrity sha512-6YNqGP1hk5bjUFaim+QoFFuI61WjHiHE1BNeB41TA00Xd2K7zG4lcWyLLq/XtIp36uMavvS5hoAUJ+1u/GcX2Q==
|
|
||||||
dependencies:
|
|
||||||
"@types/bson" "*"
|
|
||||||
"@types/node" "*"
|
|
||||||
|
|
||||||
"@types/node-fetch@2.6.1":
|
"@types/node-fetch@2.6.1":
|
||||||
version "2.6.1"
|
version "2.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975"
|
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975"
|
||||||
|
@ -3034,6 +3026,19 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
|
"@types/webidl-conversions@*":
|
||||||
|
version "6.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz#e33bc8ea812a01f63f90481c666334844b12a09e"
|
||||||
|
integrity sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==
|
||||||
|
|
||||||
|
"@types/whatwg-url@^8.2.1":
|
||||||
|
version "8.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-8.2.2.tgz#749d5b3873e845897ada99be4448041d4cc39e63"
|
||||||
|
integrity sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
"@types/webidl-conversions" "*"
|
||||||
|
|
||||||
"@types/yargs-parser@*":
|
"@types/yargs-parser@*":
|
||||||
version "21.0.0"
|
version "21.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
|
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
|
||||||
|
@ -4150,14 +4155,6 @@ bl@^1.0.0:
|
||||||
readable-stream "^2.3.5"
|
readable-stream "^2.3.5"
|
||||||
safe-buffer "^5.1.1"
|
safe-buffer "^5.1.1"
|
||||||
|
|
||||||
bl@^2.2.1:
|
|
||||||
version "2.2.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.1.tgz#8c11a7b730655c5d56898cdc871224f40fd901d5"
|
|
||||||
integrity sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==
|
|
||||||
dependencies:
|
|
||||||
readable-stream "^2.3.5"
|
|
||||||
safe-buffer "^5.1.1"
|
|
||||||
|
|
||||||
bl@^3.0.0:
|
bl@^3.0.0:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.1.tgz#1cbb439299609e419b5a74d7fce2f8b37d8e5c6f"
|
resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.1.tgz#1cbb439299609e419b5a74d7fce2f8b37d8e5c6f"
|
||||||
|
@ -4307,10 +4304,12 @@ bson@*:
|
||||||
dependencies:
|
dependencies:
|
||||||
buffer "^5.6.0"
|
buffer "^5.6.0"
|
||||||
|
|
||||||
bson@^1.1.4:
|
bson@^4.7.0:
|
||||||
version "1.1.6"
|
version "4.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.6.tgz#fb819be9a60cd677e0853aee4ca712a785d6618a"
|
resolved "https://registry.yarnpkg.com/bson/-/bson-4.7.0.tgz#7874a60091ffc7a45c5dd2973b5cad7cded9718a"
|
||||||
integrity sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==
|
integrity sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==
|
||||||
|
dependencies:
|
||||||
|
buffer "^5.6.0"
|
||||||
|
|
||||||
buffer-alloc-unsafe@^1.1.0:
|
buffer-alloc-unsafe@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
|
@ -5318,7 +5317,7 @@ delegates@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
|
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
|
||||||
integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==
|
integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==
|
||||||
|
|
||||||
denque@^1.1.0, denque@^1.4.1:
|
denque@^1.1.0:
|
||||||
version "1.5.1"
|
version "1.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf"
|
resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf"
|
||||||
integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==
|
integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==
|
||||||
|
@ -5328,6 +5327,11 @@ denque@^2.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/denque/-/denque-2.0.1.tgz#bcef4c1b80dc32efe97515744f21a4229ab8934a"
|
resolved "https://registry.yarnpkg.com/denque/-/denque-2.0.1.tgz#bcef4c1b80dc32efe97515744f21a4229ab8934a"
|
||||||
integrity sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==
|
integrity sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==
|
||||||
|
|
||||||
|
denque@^2.1.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1"
|
||||||
|
integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==
|
||||||
|
|
||||||
depd@2.0.0, depd@^2.0.0, depd@~2.0.0:
|
depd@2.0.0, depd@^2.0.0, depd@~2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
|
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
|
||||||
|
@ -7694,6 +7698,11 @@ ip-regex@^2.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
|
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
|
||||||
integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==
|
integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==
|
||||||
|
|
||||||
|
ip@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da"
|
||||||
|
integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==
|
||||||
|
|
||||||
is-accessor-descriptor@^0.1.6:
|
is-accessor-descriptor@^0.1.6:
|
||||||
version "0.1.6"
|
version "0.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
|
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
|
||||||
|
@ -10284,18 +10293,25 @@ moment-timezone@^0.5.15:
|
||||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108"
|
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108"
|
||||||
integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
|
integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
|
||||||
|
|
||||||
mongodb@3.6.3:
|
mongodb-connection-string-url@^2.5.3:
|
||||||
version "3.6.3"
|
version "2.5.3"
|
||||||
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.6.3.tgz#eddaed0cc3598474d7a15f0f2a5b04848489fd05"
|
resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.3.tgz#c0c572b71570e58be2bd52b33dffd1330cfb6990"
|
||||||
integrity sha512-rOZuR0QkodZiM+UbQE5kDsJykBqWi0CL4Ec2i1nrGrUI3KO11r6Fbxskqmq3JK2NH7aW4dcccBuUujAP0ERl5w==
|
integrity sha512-f+/WsED+xF4B74l3k9V/XkTVj5/fxFH2o5ToKXd8Iyi5UhM+sO9u0Ape17Mvl/GkZaFtM0HQnzAG5OTmhKw+tQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
bl "^2.2.1"
|
"@types/whatwg-url" "^8.2.1"
|
||||||
bson "^1.1.4"
|
whatwg-url "^11.0.0"
|
||||||
denque "^1.4.1"
|
|
||||||
require_optional "^1.0.1"
|
mongodb@4.9:
|
||||||
safe-buffer "^5.1.2"
|
version "4.9.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-4.9.0.tgz#58618439b721f2d6f7d38bb10a4612e29d7f1c8a"
|
||||||
|
integrity sha512-tJJEFJz7OQTQPZeVHZJIeSOjMRqc5eSyXTt86vSQENEErpkiG7279tM/GT5AVZ7TgXNh9HQxoa2ZkbrANz5GQw==
|
||||||
|
dependencies:
|
||||||
|
bson "^4.7.0"
|
||||||
|
denque "^2.1.0"
|
||||||
|
mongodb-connection-string-url "^2.5.3"
|
||||||
|
socks "^2.7.0"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
saslprep "^1.0.0"
|
saslprep "^1.0.3"
|
||||||
|
|
||||||
monitor-event-loop-delay@^1.0.0:
|
monitor-event-loop-delay@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
|
@ -12308,14 +12324,6 @@ require-main-filename@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
|
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
|
||||||
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
|
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
|
||||||
|
|
||||||
require_optional@^1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e"
|
|
||||||
integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==
|
|
||||||
dependencies:
|
|
||||||
resolve-from "^2.0.0"
|
|
||||||
semver "^5.1.0"
|
|
||||||
|
|
||||||
requires-port@^1.0.0:
|
requires-port@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
|
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
|
||||||
|
@ -12328,11 +12336,6 @@ resolve-cwd@^3.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
resolve-from "^5.0.0"
|
resolve-from "^5.0.0"
|
||||||
|
|
||||||
resolve-from@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
|
|
||||||
integrity sha512-qpFcKaXsq8+oRoLilkwyc7zHGF5i9Q2/25NIgLQQ/+VVv9rU4qvr6nXVAw1DsnXJyQkZsR4Ytfbtg5ehfcUssQ==
|
|
||||||
|
|
||||||
resolve-from@^4.0.0:
|
resolve-from@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
|
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
|
||||||
|
@ -12519,7 +12522,7 @@ sanitize-s3-objectkey@0.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/sanitize-s3-objectkey/-/sanitize-s3-objectkey-0.0.1.tgz#efa9887cd45275b40234fb4bb12fc5754fe64e7e"
|
resolved "https://registry.yarnpkg.com/sanitize-s3-objectkey/-/sanitize-s3-objectkey-0.0.1.tgz#efa9887cd45275b40234fb4bb12fc5754fe64e7e"
|
||||||
integrity sha512-ZTk7aqLxy4sD40GWcYWoLfbe05XLmkKvh6vGKe13ADlei24xlezcvjgKy1qRArlaIbIMYaqK7PCalvZtulZlaQ==
|
integrity sha512-ZTk7aqLxy4sD40GWcYWoLfbe05XLmkKvh6vGKe13ADlei24xlezcvjgKy1qRArlaIbIMYaqK7PCalvZtulZlaQ==
|
||||||
|
|
||||||
saslprep@^1.0.0:
|
saslprep@^1.0.3:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226"
|
resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226"
|
||||||
integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==
|
integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==
|
||||||
|
@ -12581,7 +12584,7 @@ semver-diff@^3.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
semver "^6.3.0"
|
semver "^6.3.0"
|
||||||
|
|
||||||
"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1:
|
"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0, semver@^5.7.1:
|
||||||
version "5.7.1"
|
version "5.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
||||||
|
@ -12769,6 +12772,11 @@ slice-ansi@^2.1.0:
|
||||||
astral-regex "^1.0.0"
|
astral-regex "^1.0.0"
|
||||||
is-fullwidth-code-point "^2.0.0"
|
is-fullwidth-code-point "^2.0.0"
|
||||||
|
|
||||||
|
smart-buffer@^4.2.0:
|
||||||
|
version "4.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
|
||||||
|
integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
|
||||||
|
|
||||||
snapdragon-node@^2.0.1:
|
snapdragon-node@^2.0.1:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
|
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
|
||||||
|
@ -12869,6 +12877,14 @@ socket.io@^4.5.1:
|
||||||
socket.io-adapter "~2.4.0"
|
socket.io-adapter "~2.4.0"
|
||||||
socket.io-parser "~4.2.0"
|
socket.io-parser "~4.2.0"
|
||||||
|
|
||||||
|
socks@^2.7.0:
|
||||||
|
version "2.7.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.0.tgz#f9225acdb841e874dca25f870e9130990f3913d0"
|
||||||
|
integrity sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==
|
||||||
|
dependencies:
|
||||||
|
ip "^2.0.0"
|
||||||
|
smart-buffer "^4.2.0"
|
||||||
|
|
||||||
sonic-boom@^1.0.2:
|
sonic-boom@^1.0.2:
|
||||||
version "1.4.1"
|
version "1.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-1.4.1.tgz#d35d6a74076624f12e6f917ade7b9d75e918f53e"
|
resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-1.4.1.tgz#d35d6a74076624f12e6f917ade7b9d75e918f53e"
|
||||||
|
@ -13873,6 +13889,13 @@ tr46@^2.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
punycode "^2.1.1"
|
punycode "^2.1.1"
|
||||||
|
|
||||||
|
tr46@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9"
|
||||||
|
integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==
|
||||||
|
dependencies:
|
||||||
|
punycode "^2.1.1"
|
||||||
|
|
||||||
tr46@~0.0.3:
|
tr46@~0.0.3:
|
||||||
version "0.0.3"
|
version "0.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
|
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
|
||||||
|
@ -14432,6 +14455,11 @@ webidl-conversions@^6.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
|
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
|
||||||
integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
|
integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
|
||||||
|
|
||||||
|
webidl-conversions@^7.0.0:
|
||||||
|
version "7.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
|
||||||
|
integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
|
||||||
|
|
||||||
webpack-cli@^4.9.1:
|
webpack-cli@^4.9.1:
|
||||||
version "4.9.2"
|
version "4.9.2"
|
||||||
resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.2.tgz#77c1adaea020c3f9e2db8aad8ea78d235c83659d"
|
resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.2.tgz#77c1adaea020c3f9e2db8aad8ea78d235c83659d"
|
||||||
|
@ -14513,6 +14541,14 @@ whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0:
|
||||||
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
|
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
|
||||||
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
|
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
|
||||||
|
|
||||||
|
whatwg-url@^11.0.0:
|
||||||
|
version "11.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018"
|
||||||
|
integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==
|
||||||
|
dependencies:
|
||||||
|
tr46 "^3.0.0"
|
||||||
|
webidl-conversions "^7.0.0"
|
||||||
|
|
||||||
whatwg-url@^5.0.0:
|
whatwg-url@^5.0.0:
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
|
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
|
||||||
|
|
|
@ -70,6 +70,11 @@ export enum FilterType {
|
||||||
ONE_OF = "oneOf",
|
ONE_OF = "oneOf",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface StepDefinition {
|
||||||
|
key: string
|
||||||
|
template: string
|
||||||
|
}
|
||||||
|
|
||||||
export interface QueryDefinition {
|
export interface QueryDefinition {
|
||||||
type: QueryType
|
type: QueryType
|
||||||
displayName?: string
|
displayName?: string
|
||||||
|
@ -77,6 +82,7 @@ export interface QueryDefinition {
|
||||||
customisable?: boolean
|
customisable?: boolean
|
||||||
fields?: object
|
fields?: object
|
||||||
urlDisplay?: boolean
|
urlDisplay?: boolean
|
||||||
|
steps?: Array<StepDefinition>
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ExtraQueryConfig {
|
export interface ExtraQueryConfig {
|
||||||
|
|
29
yarn.lock
29
yarn.lock
|
@ -986,13 +986,6 @@
|
||||||
estree-walker "^1.0.1"
|
estree-walker "^1.0.1"
|
||||||
picomatch "^2.2.2"
|
picomatch "^2.2.2"
|
||||||
|
|
||||||
"@types/bson@*":
|
|
||||||
version "4.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.2.0.tgz#a2f71e933ff54b2c3bf267b67fa221e295a33337"
|
|
||||||
integrity sha512-ELCPqAdroMdcuxqwMgUpifQyRoTpyYCNr1V9xKyF40VsBobsj+BbWNRvwGchMgBPGqkw655ypkjj2MEF5ywVwg==
|
|
||||||
dependencies:
|
|
||||||
bson "*"
|
|
||||||
|
|
||||||
"@types/estree@0.0.39":
|
"@types/estree@0.0.39":
|
||||||
version "0.0.39"
|
version "0.0.39"
|
||||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
|
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
|
||||||
|
@ -1008,19 +1001,6 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c"
|
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c"
|
||||||
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
|
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
|
||||||
|
|
||||||
"@types/mongodb@3.6.3":
|
|
||||||
version "3.6.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.6.3.tgz#5655af409d9e32d5d5ae9a653abf3e5f9c83eb7a"
|
|
||||||
integrity sha512-6YNqGP1hk5bjUFaim+QoFFuI61WjHiHE1BNeB41TA00Xd2K7zG4lcWyLLq/XtIp36uMavvS5hoAUJ+1u/GcX2Q==
|
|
||||||
dependencies:
|
|
||||||
"@types/bson" "*"
|
|
||||||
"@types/node" "*"
|
|
||||||
|
|
||||||
"@types/node@*":
|
|
||||||
version "17.0.33"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.33.tgz#3c1879b276dc63e73030bb91165e62a4509cd506"
|
|
||||||
integrity sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==
|
|
||||||
|
|
||||||
"@types/node@>= 8":
|
"@types/node@>= 8":
|
||||||
version "18.0.0"
|
version "18.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a"
|
||||||
|
@ -1466,13 +1446,6 @@ braces@^3.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
fill-range "^7.0.1"
|
fill-range "^7.0.1"
|
||||||
|
|
||||||
bson@*:
|
|
||||||
version "4.6.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/bson/-/bson-4.6.3.tgz#d1a9a0b84b9e84b62390811fc5580f6a8b1d858c"
|
|
||||||
integrity sha512-rAqP5hcUVJhXP2MCSNVsf0oM2OGU1So6A9pVRDYayvJ5+hygXHQApf87wd5NlhPM1J9RJnbqxIG/f8QTzRoQ4A==
|
|
||||||
dependencies:
|
|
||||||
buffer "^5.6.0"
|
|
||||||
|
|
||||||
btoa-lite@^1.0.0:
|
btoa-lite@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337"
|
resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337"
|
||||||
|
@ -1483,7 +1456,7 @@ buffer-from@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
|
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
|
||||||
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
|
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
|
||||||
|
|
||||||
buffer@^5.5.0, buffer@^5.6.0:
|
buffer@^5.5.0:
|
||||||
version "5.7.1"
|
version "5.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
|
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
|
||||||
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
|
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
|
||||||
|
|
Loading…
Reference in New Issue