console/scripts/seed-local-env.js
2022-12-28 21:38:03 +01:00

95 lines
2.2 KiB
JavaScript

import { createHive } from '../packages/libraries/client/dist/cjs/index.js';
import { buildSchema, parse } from 'graphql';
async function main() {
const hiveInstance = createHive({
token: process.env.TOKEN,
agent: 'Hive Seed Script',
debug: true,
enabled: true,
reporting: {
enabled: true,
endpoint: process.env.STAGING
? 'https://app.staging.graphql-hive.com/registry'
: process.env.DEV
? 'https://app.dev.graphql-hive.com/registry'
: 'http://localhost:4000/graphql',
author: 'Hive Seed Script',
commit: '1',
},
usage: {
enabled: true,
clientInfo: 'Fake Hive Client',
endpoint: process.env.STAGING
? 'https://app.staging.graphql-hive.com/usage'
: process.env.DEV
? 'https://app.dev.graphql-hive.com/usage'
: 'http://localhost:4001',
max: 10,
sampleRate: 1,
},
});
await hiveInstance.info();
const schema = buildSchema(/* GraphQL */ `
type Query {
field(arg: String): String
nested: NestedQuery!
}
type NestedQuery {
test: String
}
`);
const query1 = parse(/* GraphQL */ `
query test {
field
withArg: field(arg: "test")
nested {
test
}
}
`);
const query2 = parse(/* GraphQL */ `
query testAnother {
field
}
`);
hiveInstance.reportSchema({ schema });
const operationsPerBatch = process.env.OPERATIONS ? parseInt(process.env.OPERATIONS) : 1;
setInterval(
() => {
for (let i = 0; i < operationsPerBatch; i++) {
const randNumber = Math.random() * 100;
console.log(`Reporting usage query...`);
const done = hiveInstance.collectUsage({
document: randNumber > 50 ? query1 : query2,
schema,
variableValues: {},
});
done(
randNumber > 90
? {
data: {},
errors: undefined,
}
: {
data: undefined,
errors: [{ message: 'oops' }],
},
);
}
},
process.env.INTERVAL ? parseInt(process.env.INTERVAL) : 1000,
);
}
main().catch(console.error);