#!/bin/sh
set -e

node <<'EOF'
const assert = require('assert')
const fs = require('fs')
const vm = require('vm')

const fullcalendar = require('/usr/share/nodejs/fullcalendar/index.cjs')
assert.strictEqual(typeof fullcalendar.Calendar, 'function')

for (const moduleName of [
  'bootstrap',
  'bootstrap5',
  'core',
  'daygrid',
  'google-calendar',
  'icalendar',
  'interaction',
  'list',
  'luxon',
  'luxon2',
  'luxon3',
  'moment',
  'moment-timezone',
  'multimonth',
  'rrule',
  'timegrid',
]) {
  const mod = require(`/usr/share/nodejs/@fullcalendar/${moduleName}/index.cjs`)
  assert.ok(mod.default || mod.Calendar || Object.keys(mod).length, moduleName)
}

for (const filename of [
  '/usr/share/javascript/fullcalendar/index.global.js',
  '/usr/share/javascript/fullcalendar/index.global.min.js',
]) {
  const context = {}
  vm.runInNewContext(fs.readFileSync(filename, 'utf8'), context, { filename })
  assert.strictEqual(typeof context.FullCalendar.Calendar, 'function')
}
EOF

node --input-type=module <<'EOF'
const fullcalendar = await import('/usr/share/nodejs/fullcalendar/index.js')
if (typeof fullcalendar.Calendar !== 'function') {
  throw new Error('fullcalendar ESM did not export Calendar')
}
EOF
