Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
CollectiveId: {
[Op.not]: 1, // OpenCollective collective
},
},
};
const lastWeekDonations = merge({}, createdLastWeek, donation, excludeOcTeam, credit);
const lastWeekExpenses = merge({}, updatedLastWeek, excludeOcTeam);
const pendingLastWeekExpenses = merge({}, lastWeekExpenses, pendingExpense);
const approvedLastWeekExpenses = merge({}, lastWeekExpenses, approvedExpense);
const rejectedLastWeekExpenses = merge({}, lastWeekExpenses, rejectedExpense);
const paidLastWeekExpenses = merge({}, lastWeekExpenses, paidExpense);
const weekBeforeDonations = merge({}, createdSameWeekPreviousMonth, donation, excludeOcTeam, credit);
const paidWeekBeforeExpenses = merge({}, updatedSameWeekPreviousMonth, excludeOcTeam, paidExpense);
const groupAndOrderBy = (table, attribute = 'currency') => {
return {
plain: false,
group: [`${table}.${attribute}`],
attributes: [[attribute, 'currency']],
order: [attribute],
};
};
const onlyIncludeCollectiveType = {
include: [
{
model: Collective,
as: 'collective',
where: {
export default function run() {
return Promise.props({
// Donation statistics
stripeDonationCount: Transaction.count(merge({}, lastWeekDonations, service('stripe'))),
priorStripeDonationCount: Transaction.count(merge({}, weekBeforeDonations, service('stripe'))),
manualDonationCount: Transaction.count(merge({}, lastWeekDonations, service('opencollective'))),
priorManualDonationCount: Transaction.count(merge({}, weekBeforeDonations, service('opencollective'))),
paypalDonationCount: Transaction.count(merge({}, lastWeekDonations, service('paypal'))),
priorPaypalDonationCount: Transaction.count(merge({}, weekBeforeDonations, service('paypal'))),
revenue: Transaction.aggregate(
'platformFeeInHostCurrency',
'SUM',
merge({}, lastWeekDonations, groupAndOrderBy('Transaction', 'hostCurrency')),
),
priorRevenue: Transaction.aggregate(
paidExpenseAmount: Expense.aggregate('amount', 'SUM', merge({}, paidLastWeekExpenses, groupAndOrderBy('Expense'))),
priorPaidExpenseAmount: Expense.aggregate(
'amount',
'SUM',
merge({}, paidWeekBeforeExpenses, groupAndOrderBy('Expense')),
),
// Collective statistics
activeCollectivesWithTransactions: Transaction.findAll(
merge({ attributes: ['CollectiveId'] }, createdLastWeek, distinct, excludeOcTeam, onlyIncludeCollectiveType),
).map(row => row.CollectiveId),
priorActiveCollectivesWithTransactions: Transaction.findAll(
merge(
{ attributes: ['CollectiveId'] },
createdSameWeekPreviousMonth,
distinct,
excludeOcTeam,
onlyIncludeCollectiveType,
),
).map(row => row.CollectiveId),
activeCollectivesWithExpenses: Expense.findAll(
merge({ attributes: ['CollectiveId'] }, updatedLastWeek, distinct, excludeOcTeam),
).map(row => row.CollectiveId),
priorActiveCollectivesWithExpenses: Expense.findAll(
merge({ attributes: ['CollectiveId'] }, updatedSameWeekPreviousMonth, distinct, excludeOcTeam),
).map(row => row.CollectiveId),
api_key: undefined, // eslint-disable-line camelcase
sso_config: undefined // eslint-disable-line camelcase
},
twitter: null,
og: null,
fb: null,
markdown: {
plugins: [
require('markdown-it-decorate'),
require('markdown-it-emoji')
]
}
}
const nuxtOptions = this.nuxt.options
options = merge(defaults, options, {
publicPath: (nuxtOptions.build || {}).publicPath || defaults.publicPath,
static: nuxtOptions.dev ? defaults.static : (options.static === true),
base: nuxtOptions.dev ? options.devBase || defaults.base : options.base || ''
})
options.rootDir = nuxtOptions.rootDir
options.path = path.resolve(nuxtOptions.rootDir, options.dir)
blog.context = this
blog.addSource(`${options.path}/**/*.md`)
// Register blog routes.
this.extendRoutes((...any) => registerRoutes(options, ...any))
// Register api server.
serve(this, options)
// Register build process.
build(this, options)
'SUM',
merge({}, approvedLastWeekExpenses, groupAndOrderBy('Expense')),
).map(row => `${row.currency} ${formatCurrency(row.SUM, row.currency)}`),
rejectedExpenseAmount: Expense.aggregate(
'amount',
'SUM',
merge({}, rejectedLastWeekExpenses, groupAndOrderBy('Expense')),
).map(row => `${row.currency} ${formatCurrency(row.SUM, row.currency)}`),
paidExpenseAmount: Expense.aggregate('amount', 'SUM', merge({}, paidLastWeekExpenses, groupAndOrderBy('Expense'))),
priorPaidExpenseAmount: Expense.aggregate(
'amount',
'SUM',
merge({}, paidWeekBeforeExpenses, groupAndOrderBy('Expense')),
),
// Collective statistics
activeCollectivesWithTransactions: Transaction.findAll(
merge({ attributes: ['CollectiveId'] }, createdLastWeek, distinct, excludeOcTeam, onlyIncludeCollectiveType),
).map(row => row.CollectiveId),
priorActiveCollectivesWithTransactions: Transaction.findAll(
merge(
{ attributes: ['CollectiveId'] },
createdSameWeekPreviousMonth,
distinct,
excludeOcTeam,
onlyIncludeCollectiveType,
),
// Expense statistics
pendingExpenseCount: Expense.count(pendingLastWeekExpenses),
approvedExpenseCount: Expense.count(approvedLastWeekExpenses),
rejectedExpenseCount: Expense.count(rejectedLastWeekExpenses),
paidExpenseCount: Expense.count(paidLastWeekExpenses),
priorPaidExpenseCount: Expense.count(paidWeekBeforeExpenses),
pendingExpenseAmount: Expense.aggregate(
'amount',
'SUM',
merge({}, pendingLastWeekExpenses, groupAndOrderBy('Expense')),
).map(row => `${row.currency} ${formatCurrency(row.SUM, row.currency)}`),
approvedExpenseAmount: Expense.aggregate(
'amount',
'SUM',
merge({}, approvedLastWeekExpenses, groupAndOrderBy('Expense')),
).map(row => `${row.currency} ${formatCurrency(row.SUM, row.currency)}`),
rejectedExpenseAmount: Expense.aggregate(
'amount',
'SUM',
merge({}, rejectedLastWeekExpenses, groupAndOrderBy('Expense')),
).map(row => `${row.currency} ${formatCurrency(row.SUM, row.currency)}`),
paidExpenseAmount: Expense.aggregate('amount', 'SUM', merge({}, paidLastWeekExpenses, groupAndOrderBy('Expense'))),
const approvedExpense = { where: { status: expenseStatus.APPROVED } };
const rejectedExpense = { where: { status: expenseStatus.REJECTED } };
const paidExpense = { where: { status: expenseStatus.PAID } };
const credit = { where: { type: 'CREDIT' } };
const excludeOcTeam = {
where: {
CollectiveId: {
[Op.not]: 1, // OpenCollective collective
},
},
};
const lastWeekDonations = merge({}, createdLastWeek, donation, excludeOcTeam, credit);
const lastWeekExpenses = merge({}, updatedLastWeek, excludeOcTeam);
const pendingLastWeekExpenses = merge({}, lastWeekExpenses, pendingExpense);
const approvedLastWeekExpenses = merge({}, lastWeekExpenses, approvedExpense);
const rejectedLastWeekExpenses = merge({}, lastWeekExpenses, rejectedExpense);
const paidLastWeekExpenses = merge({}, lastWeekExpenses, paidExpense);
const weekBeforeDonations = merge({}, createdSameWeekPreviousMonth, donation, excludeOcTeam, credit);
const paidWeekBeforeExpenses = merge({}, updatedSameWeekPreviousMonth, excludeOcTeam, paidExpense);
const groupAndOrderBy = (table, attribute = 'currency') => {
return {
plain: false,
group: [`${table}.${attribute}`],
attributes: [[attribute, 'currency']],
order: [attribute],
};
'SUM',
merge({}, rejectedLastWeekExpenses, groupAndOrderBy('Expense')),
).map(row => `${row.currency} ${formatCurrency(row.SUM, row.currency)}`),
paidExpenseAmount: Expense.aggregate('amount', 'SUM', merge({}, paidLastWeekExpenses, groupAndOrderBy('Expense'))),
priorPaidExpenseAmount: Expense.aggregate(
'amount',
'SUM',
merge({}, paidWeekBeforeExpenses, groupAndOrderBy('Expense')),
),
// Collective statistics
activeCollectivesWithTransactions: Transaction.findAll(
merge({ attributes: ['CollectiveId'] }, createdLastWeek, distinct, excludeOcTeam, onlyIncludeCollectiveType),
).map(row => row.CollectiveId),
priorActiveCollectivesWithTransactions: Transaction.findAll(
merge(
{ attributes: ['CollectiveId'] },
createdSameWeekPreviousMonth,
distinct,
excludeOcTeam,
onlyIncludeCollectiveType,
),
).map(row => row.CollectiveId),
activeCollectivesWithExpenses: Expense.findAll(
merge({ attributes: ['CollectiveId'] }, updatedLastWeek, distinct, excludeOcTeam),
).map(row => row.CollectiveId),
merge({}, weekBeforeDonations, groupAndOrderBy('Transaction'), service('stripe')),
),
manualDonationAmount: Transaction.aggregate(
'amount',
'SUM',
merge({}, lastWeekDonations, groupAndOrderBy('Transaction'), service('opencollective')),
),
priorManualDonationAmount: Transaction.aggregate(
'amount',
'SUM',
merge({}, weekBeforeDonations, groupAndOrderBy('Transaction'), service('opencollective')),
),
paypalReceivedCount: Activity.count(merge({}, createdLastWeek, paypalReceived)),
paypalDonationAmount: Transaction.sum('amount', merge({}, lastWeekDonations, service('paypal'))),
priorPaypalDonationAmount: Transaction.sum('amount', merge({}, weekBeforeDonations, service('paypal'))),
// Expense statistics
pendingExpenseCount: Expense.count(pendingLastWeekExpenses),
approvedExpenseCount: Expense.count(approvedLastWeekExpenses),
rejectedExpenseCount: Expense.count(rejectedLastWeekExpenses),
paidExpenseCount: Expense.count(paidLastWeekExpenses),
priorPaidExpenseCount: Expense.count(paidWeekBeforeExpenses),
async function buildConfig (opts) {
const defaultOpts = JSON.parse(optionDefaults.ipfsNodeConfig)
defaultOpts.libp2p = {
config: {
dht: {
// TODO: check if below is needed after js-ipfs is released with DHT disabled
enabled: false
}
}
}
const userOpts = JSON.parse(opts.ipfsNodeConfig)
const ipfsNodeConfig = mergeOptions.call({ concatArrays: true }, defaultOpts, userOpts, { start: false })
// Detect when API or Gateway port is not available (taken by something else)
// We find the next free port and update configuration to use it instead
const multiaddr2port = (ma) => parseInt(new URL(multiaddr2httpUrl(ma)).port, 10)
const gatewayPort = multiaddr2port(ipfsNodeConfig.config.Addresses.Gateway)
const apiPort = multiaddr2port(ipfsNodeConfig.config.Addresses.API)
log(`checking if ports are available: api: ${apiPort}, gateway: ${gatewayPort}`)
const freeGatewayPort = await getPort({ port: getPort.makeRange(gatewayPort, gatewayPort + 100) })
const freeApiPort = await getPort({ port: getPort.makeRange(apiPort, apiPort + 100) })
if (gatewayPort !== freeGatewayPort || apiPort !== freeApiPort) {
log(`updating config to available ports: api: ${freeApiPort}, gateway: ${freeGatewayPort}`)
const addrs = ipfsNodeConfig.config.Addresses
addrs.Gateway = addrs.Gateway.replace(gatewayPort.toString(), freeGatewayPort.toString())
addrs.API = addrs.API.replace(apiPort.toString(), freeApiPort.toString())
}