From: 
Subject: Debian changes

The Debian packaging of node-fullcalendar is maintained in git, using a workflow
similar to the one described in dgit-maint-merge(7).
The Debian delta is represented by this one combined patch; there isn't a
patch queue that can be represented as a quilt series.

A detailed breakdown of the changes is available from their canonical
representation -- git commits in the packaging repository.
For example, to see the changes made by the Debian maintainer in the first
upload of upstream version 1.2.3, you could use:

    % git clone https://git.dgit.debian.org/node-fullcalendar
    % cd node-fullcalendar
    % git log --oneline 1.2.3..debian/1.2.3-1 -- . ':!debian'

(If you have dgit, use `dgit clone node-fullcalendar`, rather than plain `git clone`.)

We don't use debian/source/options single-debian-patch because it has bugs.
Therefore, NMUs etc. may nevertheless have made additional patches.

---

diff --git a/packages/icalendar/src/event-source-def.ts b/packages/icalendar/src/event-source-def.ts
index 227b529a3..233e081ac 100644
--- a/packages/icalendar/src/event-source-def.ts
+++ b/packages/icalendar/src/event-source-def.ts
@@ -1,8 +1,9 @@
 import { EventInput } from '@fullcalendar/core'
 import { EventSourceDef, DateRange, addDays } from '@fullcalendar/core/internal'
-import * as ICAL from 'ical.js'
 import { IcalExpander } from './ical-expander/IcalExpander.js'
 
+type ICalEvent = any
+
 interface ICalFeedMeta {
   url: string
   format: 'ics', // for EventSourceApi
@@ -102,7 +103,7 @@ function expandICalEvents(iCalExpander: IcalExpander, range: DateRange): EventIn
   return expanded
 }
 
-function buildNonDateProps(iCalEvent: ICAL.Event): EventInput {
+function buildNonDateProps(iCalEvent: ICalEvent): EventInput {
   return {
     title: iCalEvent.summary,
     url: extractEventUrl(iCalEvent),
@@ -114,12 +115,12 @@ function buildNonDateProps(iCalEvent: ICAL.Event): EventInput {
   }
 }
 
-function extractEventUrl(iCalEvent: ICAL.Event): string {
+function extractEventUrl(iCalEvent: ICalEvent): string {
   let urlProp = iCalEvent.component.getFirstProperty('url')
   return urlProp ? urlProp.getFirstValue() : ''
 }
 
-function specifiesEnd(iCalEvent: ICAL.Event) {
+function specifiesEnd(iCalEvent: ICalEvent) {
   return Boolean(iCalEvent.component.getFirstProperty('dtend')) ||
     Boolean(iCalEvent.component.getFirstProperty('duration'))
 }
diff --git a/packages/luxon1/src/convert.ts b/packages/luxon1/src/convert.ts
index e20345420..0ddb65ed5 100644
--- a/packages/luxon1/src/convert.ts
+++ b/packages/luxon1/src/convert.ts
@@ -12,7 +12,7 @@ export function toLuxonDateTime(date: Date, calendar: CalendarApi): LuxonDateTim
   return LuxonDateTime.fromJSDate(date, {
     zone: dateEnv.timeZone,
     locale: dateEnv.locale.codes[0],
-  })
+  } as any)
 }
 
 export function toLuxonDuration(duration: Duration, calendar: CalendarApi): LuxonDuration {
@@ -25,7 +25,7 @@ export function toLuxonDuration(duration: Duration, calendar: CalendarApi): Luxo
   return LuxonDuration.fromObject({
     ...duration,
     locale: dateEnv.locale.codes[0],
-  })
+  } as any)
 }
 
 // Internal Utils
@@ -53,5 +53,5 @@ export function arrayToLuxon(arr: number[], timeZone: string, locale?: string):
     minute: arr[4],
     second: arr[5],
     millisecond: arr[6],
-  })
+  } as any)
 }
diff --git a/packages/luxon2/src/convert.ts b/packages/luxon2/src/convert.ts
index 943b099ed..f2a6420d0 100644
--- a/packages/luxon2/src/convert.ts
+++ b/packages/luxon2/src/convert.ts
@@ -12,9 +12,7 @@ export function toLuxonDateTime(date: Date, calendar: CalendarApi): LuxonDateTim
   return LuxonDateTime.fromJSDate(date, {
     zone: dateEnv.timeZone,
     locale: dateEnv.locale.codes[0],
-  } as {
-    zone: string // HACK to allow locale property, which IS supported
-  })
+  } as any) // HACK to allow locale property, which IS supported
 }
 
 export function toLuxonDuration(duration: Duration, calendar: CalendarApi): LuxonDuration {
@@ -26,7 +24,7 @@ export function toLuxonDuration(duration: Duration, calendar: CalendarApi): Luxo
 
   return LuxonDuration.fromObject(duration, {
     locale: dateEnv.locale.codes[0],
-  })
+  } as any)
 }
 
 // Internal Utils
@@ -55,5 +53,5 @@ export function arrayToLuxon(arr: number[], timeZone: string, locale?: string):
   }, {
     locale,
     zone: timeZone,
-  })
+  } as any)
 }
diff --git a/packages/luxon3/src/convert.ts b/packages/luxon3/src/convert.ts
index 943b099ed..f2a6420d0 100644
--- a/packages/luxon3/src/convert.ts
+++ b/packages/luxon3/src/convert.ts
@@ -12,9 +12,7 @@ export function toLuxonDateTime(date: Date, calendar: CalendarApi): LuxonDateTim
   return LuxonDateTime.fromJSDate(date, {
     zone: dateEnv.timeZone,
     locale: dateEnv.locale.codes[0],
-  } as {
-    zone: string // HACK to allow locale property, which IS supported
-  })
+  } as any) // HACK to allow locale property, which IS supported
 }
 
 export function toLuxonDuration(duration: Duration, calendar: CalendarApi): LuxonDuration {
@@ -26,7 +24,7 @@ export function toLuxonDuration(duration: Duration, calendar: CalendarApi): Luxo
 
   return LuxonDuration.fromObject(duration, {
     locale: dateEnv.locale.codes[0],
-  })
+  } as any)
 }
 
 // Internal Utils
@@ -55,5 +53,5 @@ export function arrayToLuxon(arr: number[], timeZone: string, locale?: string):
   }, {
     locale,
     zone: timeZone,
-  })
+  } as any)
 }
diff --git a/scripts/src/pkg/bundle.ts b/scripts/src/pkg/bundle.ts
index 41969ad58..748531d09 100644
--- a/scripts/src/pkg/bundle.ts
+++ b/scripts/src/pkg/bundle.ts
@@ -37,16 +37,14 @@ export async function writeBundles(
   const pkgBundleStruct = await buildPkgBundleStruct(pkgDir, pkgJson)
   const optionsObjs = await buildRollupOptionObjs(pkgBundleStruct, monorepoStruct, isDev)
 
-  await Promise.all(
-    optionsObjs.map(async (options) => {
-      const bundle = await rollup(options)
-      const outputOptionObjs: OutputOptions[] = arrayify(options.output)
-
-      await Promise.all(
-        outputOptionObjs.map((outputOptions) => bundle.write(outputOptions)),
-      )
-    }),
-  )
+  for (const options of optionsObjs) {
+    const bundle = await rollup(options)
+    const outputOptionObjs: OutputOptions[] = arrayify(options.output)
+
+    await Promise.all(
+      outputOptionObjs.map((outputOptions) => bundle.write(outputOptions)),
+    )
+  }
 }
 
 export async function watchBundles(
diff --git a/scripts/src/pkg/utils/rollup-presets.ts b/scripts/src/pkg/utils/rollup-presets.ts
index 76ea5cd51..dc44d8906 100644
--- a/scripts/src/pkg/utils/rollup-presets.ts
+++ b/scripts/src/pkg/utils/rollup-presets.ts
@@ -8,6 +8,7 @@ import sourcemapsPlugin from 'rollup-plugin-sourcemaps'
 import commonjsPluginLib from '@rollup/plugin-commonjs'
 import jsonPluginLib from '@rollup/plugin-json'
 import postcssPluginLib from 'rollup-plugin-postcss'
+import postcssCommentParserLib from 'postcss-comment'
 import replacePluginLib from '@rollup/plugin-replace'
 import { mapProps } from '../../utils/lang.js'
 import { MonorepoStruct } from '../../utils/monorepo-struct.js'
@@ -50,6 +51,7 @@ import {
 const commonjsPlugin = cjsInterop(commonjsPluginLib)
 const jsonPlugin = cjsInterop(jsonPluginLib)
 const postcssPlugin = cjsInterop(postcssPluginLib)
+const postcssCommentParser = cjsInterop(postcssCommentParserLib)
 const replacePlugin = cjsInterop(replacePluginLib)
 
 /*
@@ -390,6 +392,7 @@ function cssPlugin(options?: { inject?: CssInjector | boolean }): Plugin {
       path: joinPaths(standardScriptsDir, 'config/postcss.config.cjs'),
       ctx: {}, // arguments given to config file
     },
+    parser: (postcssCommentParser as any).parse,
     inject: typeof inject === 'object' ?
       (cssVarName: string) => {
         return `import { ${inject.importProp} } from ${JSON.stringify(inject.importId)};\n` +
