@getmicdrop/venue-calendar 4.0.110 → 4.0.111

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/{CartView-bMHSoj75.js → CartView-DiSdmuA_.js} +9 -9
  2. package/dist/{CartView-bMHSoj75.js.map → CartView-DiSdmuA_.js.map} +1 -1
  3. package/dist/{Checkout-DDXZc-yj.js → Checkout-DBaNrRya.js} +9 -9
  4. package/dist/{Checkout-DDXZc-yj.js.map → Checkout-DBaNrRya.js.map} +1 -1
  5. package/dist/{Checkout-DG2iHmHC.js → Checkout-DwJr030c.js} +5 -5
  6. package/dist/{Checkout-DG2iHmHC.js.map → Checkout-DwJr030c.js.map} +1 -1
  7. package/dist/{CheckoutTimer-Bwq6a_Hl.js → CheckoutTimer-DPFVh7QG.js} +5 -5
  8. package/dist/{CheckoutTimer-Bwq6a_Hl.js.map → CheckoutTimer-DPFVh7QG.js.map} +1 -1
  9. package/dist/{ClockIcon-ZgeMNNI1.js → ClockIcon-BoEIfS3d.js} +2 -2
  10. package/dist/{ClockIcon-ZgeMNNI1.js.map → ClockIcon-BoEIfS3d.js.map} +1 -1
  11. package/dist/{CollectionView-1pf2C4kX.js → CollectionView-DM3WLpLu.js} +5 -5
  12. package/dist/{CollectionView-1pf2C4kX.js.map → CollectionView-DM3WLpLu.js.map} +1 -1
  13. package/dist/{Event-D3o0fguY.js → Event-DymZpajQ.js} +8 -8
  14. package/dist/{Event-D3o0fguY.js.map → Event-DymZpajQ.js.map} +1 -1
  15. package/dist/{EventPage-DqO-AV8i.js → EventPage-D7GG_BWH.js} +8 -8
  16. package/dist/{EventPage-DqO-AV8i.js.map → EventPage-D7GG_BWH.js.map} +1 -1
  17. package/dist/{Heading-pURRwiIC.js → Heading-C8oOcA05.js} +2 -2
  18. package/dist/{Heading-pURRwiIC.js.map → Heading-C8oOcA05.js.map} +1 -1
  19. package/dist/{ScarcityBadge-ykz32KS9.js → ScarcityBadge-BqJHRkab.js} +2 -2
  20. package/dist/{ScarcityBadge-ykz32KS9.js.map → ScarcityBadge-BqJHRkab.js.map} +1 -1
  21. package/dist/{SeriesPage-BmNk80cF.js → SeriesPage-DsJ9zGPQ.js} +5 -5
  22. package/dist/{SeriesPage-BmNk80cF.js.map → SeriesPage-DsJ9zGPQ.js.map} +1 -1
  23. package/dist/{Spinner-OGA1hrc5.js → Spinner-DPzuHWU6.js} +2 -2
  24. package/dist/{Spinner-OGA1hrc5.js.map → Spinner-DPzuHWU6.js.map} +1 -1
  25. package/dist/{Success-DLlQ54_-.js → Success-C0D_INAc.js} +8 -8
  26. package/dist/{Success-DLlQ54_-.js.map → Success-C0D_INAc.js.map} +1 -1
  27. package/dist/{Text-DMpMLgcU.js → Text-DOd8068v.js} +2 -2
  28. package/dist/{Text-DMpMLgcU.js.map → Text-DOd8068v.js.map} +1 -1
  29. package/dist/{VenueCalendar-ClSRsS6u.js → VenueCalendar-B809Hecp.js} +4308 -4315
  30. package/dist/{VenueCalendar-ClSRsS6u.js.map → VenueCalendar-B809Hecp.js.map} +1 -1
  31. package/dist/{ViewTicketsEmbed-5LMG2xwn.js → ViewTicketsEmbed-BPMp4JM0.js} +5 -5
  32. package/dist/{ViewTicketsEmbed-5LMG2xwn.js.map → ViewTicketsEmbed-BPMp4JM0.js.map} +1 -1
  33. package/dist/{labels-Ws4MJjH5.js → labels-wFEhrJkb.js} +3 -3
  34. package/dist/{labels-Ws4MJjH5.js.map → labels-wFEhrJkb.js.map} +1 -1
  35. package/dist/{modalManager.svelte-BPA2JF6c.js → modalManager.svelte-DjiZPIja.js} +2 -2
  36. package/dist/{modalManager.svelte-BPA2JF6c.js.map → modalManager.svelte-DjiZPIja.js.map} +1 -1
  37. package/dist/{promo-vXx1bxQm.js → promo-DK6Hxogl.js} +2 -2
  38. package/dist/{promo-vXx1bxQm.js.map → promo-DK6Hxogl.js.map} +1 -1
  39. package/dist/{showcase-state-options-9SoS5WuT.js → showcase-state-options-BuPnUf0V.js} +2 -2
  40. package/dist/{showcase-state-options-9SoS5WuT.js.map → showcase-state-options-BuPnUf0V.js.map} +1 -1
  41. package/dist/{transform-BD9xXAq7.js → transform-C6LCkao6.js} +2 -2
  42. package/dist/{transform-BD9xXAq7.js.map → transform-C6LCkao6.js.map} +1 -1
  43. package/dist/{utm-rT0TPh8G.js → utm-DYGTGbVA.js} +2 -2
  44. package/dist/{utm-rT0TPh8G.js.map → utm-DYGTGbVA.js.map} +1 -1
  45. package/dist/venue-calendar.css +1 -1
  46. package/dist/venue-calendar.es.js +2 -2
  47. package/dist/venue-calendar.iife.js +47 -47
  48. package/dist/venue-calendar.iife.js.map +1 -1
  49. package/dist/venue-calendar.umd.js +44 -44
  50. package/dist/venue-calendar.umd.js.map +1 -1
  51. package/package.json +199 -199
  52. package/dist/api/api/client.d.ts +0 -17
  53. package/dist/api/api/cta.d.ts +0 -34
  54. package/dist/api/api/events.d.ts +0 -183
  55. package/dist/api/api/gift-cards.d.ts +0 -108
  56. package/dist/api/api/index.d.ts +0 -46
  57. package/dist/api/api/orders.d.ts +0 -149
  58. package/dist/api/api/promo.d.ts +0 -45
  59. package/dist/api/api/result.d.ts +0 -78
  60. package/dist/api/api/route-manifest.d.ts +0 -179
  61. package/dist/api/api/transformers/address.d.ts +0 -18
  62. package/dist/api/api/transformers/cart.d.ts +0 -19
  63. package/dist/api/api/transformers/collection.d.ts +0 -12
  64. package/dist/api/api/transformers/event.d.ts +0 -173
  65. package/dist/api/api/transformers/giftCard.d.ts +0 -11
  66. package/dist/api/api/transformers/index.d.ts +0 -27
  67. package/dist/api/api/transformers/order.d.ts +0 -44
  68. package/dist/api/api/transformers/performer.d.ts +0 -8
  69. package/dist/api/api/transformers/series.d.ts +0 -12
  70. package/dist/api/api/transformers/venue.d.ts +0 -39
  71. package/dist/api/api/venues.d.ts +0 -33
  72. package/dist/api/api/waitlist.d.ts +0 -49
  73. package/dist/api/api.cjs +0 -2
  74. package/dist/api/api.cjs.map +0 -1
  75. package/dist/api/api.mjs +0 -1302
  76. package/dist/api/api.mjs.map +0 -1
  77. package/dist/api/types.d.ts +0 -483
  78. package/dist/seo/HostSeoController.d.ts +0 -68
  79. package/dist/seo/buildCollectionJsonLd.d.ts +0 -8
  80. package/dist/seo/buildEventJsonLd.d.ts +0 -9
  81. package/dist/seo/buildSeriesJsonLd.d.ts +0 -6
  82. package/dist/seo/helpers.d.ts +0 -88
  83. package/dist/seo/index.d.ts +0 -10
  84. package/dist/seo/seo.cjs +0 -2
  85. package/dist/seo/seo.cjs.map +0 -1
  86. package/dist/seo/seo.mjs +0 -688
  87. package/dist/seo/seo.mjs.map +0 -1
  88. package/dist/seo/types.d.ts +0 -149
package/package.json CHANGED
@@ -1,199 +1,199 @@
1
- {
2
- "name": "@getmicdrop/venue-calendar",
3
- "version": "4.0.110",
4
- "description": "A customizable Svelte calendar component for displaying comedy events",
5
- "type": "module",
6
- "types": "./dist/types/index.d.ts",
7
- "main": "./dist/venue-calendar.umd.js",
8
- "module": "./dist/venue-calendar.es.js",
9
- "exports": {
10
- ".": {
11
- "types": "./dist/types/index.d.ts",
12
- "svelte": "./dist/venue-calendar.es.js",
13
- "import": "./dist/venue-calendar.es.js",
14
- "require": "./dist/venue-calendar.umd.js",
15
- "default": "./dist/venue-calendar.es.js"
16
- },
17
- "./api": {
18
- "types": "./dist/api/index.d.ts",
19
- "import": "./dist/api/api.mjs",
20
- "require": "./dist/api/api.cjs",
21
- "default": "./dist/api/api.mjs"
22
- },
23
- "./seo": {
24
- "types": "./dist/seo/index.d.ts",
25
- "import": "./dist/seo/seo.mjs",
26
- "require": "./dist/seo/seo.cjs",
27
- "default": "./dist/seo/seo.mjs"
28
- },
29
- "./theme": {
30
- "import": "./src/lib/theme.js",
31
- "default": "./src/lib/theme.js"
32
- },
33
- "./dist/venue-calendar.css": "./dist/venue-calendar.css"
34
- },
35
- "files": [
36
- "dist",
37
- "src/lib/theme.js",
38
- "README.md"
39
- ],
40
- "scripts": {
41
- "dev": "vite dev",
42
- "build": "vite build",
43
- "build:lib": "cross-env VC_IIFE_ONLY=1 vite build --config vite.config.lib.js && vite build --config vite.config.lib.js",
44
- "build:api": "vite build --config vite.config.api.js",
45
- "build:seo": "vite build --config vite.config.seo.js",
46
- "build:all": "npm run build:lib && npm run build:api && npm run build:seo",
47
- "preview": "vite preview",
48
- "prepare": "node ./scripts/prepare.js",
49
- "prepublishOnly": "npm run build:all",
50
- "_lint_comment": "Ratchet cap. 2026-05-31: ESLint had NO svelte parser configured, so the entire .svelte tree was unparsed (300 'Unexpected token <' errors) and effectively unlinted. Wired the svelte parser (eslint.config.js) + downgraded the recommended svelte rules to 'warn' for the turn-on wave (mirrors performers-portal). 2026-06-10: ratcheted cap 1638 -> 418. 2026-07-16: burned the whole budget down (unused vars, navigation-without-resolve via resolve(), svelte/reactivity classes, hex -> color constants, @html removal, shadow renames) — cap is now 0 and stays 0; any new warning fails lint.",
51
- "lint": "eslint src --max-warnings 0",
52
- "gate": "sh scripts/gate.sh",
53
- "lint:fix": "eslint src --fix",
54
- "lint:css": "stylelint \"src/**/*.{css,scss,svelte}\" --allow-empty-input",
55
- "lint:css:fix": "stylelint \"src/**/*.{css,scss,svelte}\" --allow-empty-input --fix",
56
- "knip": "knip",
57
- "depcruise": "dependency-cruiser src --config .dependency-cruiser.cjs",
58
- "design-system:check": "node scripts/design-system-check.mjs --report-only",
59
- "design-system:check:strict": "node scripts/design-system-check.mjs --fail-on-new",
60
- "design-system:baseline": "node scripts/design-system-check.mjs --baseline",
61
- "cleanup-check": "node scripts/cleanup-on-destroy-check.mjs --report-only",
62
- "cleanup-check:strict": "node scripts/cleanup-on-destroy-check.mjs --fail-on-new",
63
- "cleanup-baseline": "node scripts/cleanup-on-destroy-check.mjs --baseline",
64
- "checkout-lifecycle-check": "node scripts/checkout-lifecycle-check.mjs --report-only",
65
- "checkout-lifecycle-check:strict": "node scripts/checkout-lifecycle-check.mjs --fail-on-new",
66
- "checkout-lifecycle-baseline": "node scripts/checkout-lifecycle-check.mjs --baseline",
67
- "quantity-clamp-check": "node scripts/quantity-clamp-check.mjs --report-only",
68
- "quantity-clamp-check:strict": "node scripts/quantity-clamp-check.mjs --fail-on-new",
69
- "quantity-clamp-baseline": "node scripts/quantity-clamp-check.mjs --baseline",
70
- "no-new-skips-check": "node scripts/no-new-skips-check.mjs --report-only",
71
- "no-new-skips-check:strict": "node scripts/no-new-skips-check.mjs --fail-on-new",
72
- "no-new-skips-baseline": "node scripts/no-new-skips-check.mjs --baseline",
73
- "no-sc-toast-check": "node scripts/no-sc-toast-check.mjs",
74
- "no-sc-toast-check:report": "node scripts/no-sc-toast-check.mjs --report-only",
75
- "lockfile-sync-check": "node scripts/lockfile-sync-check.mjs",
76
- "lockfile-sync-check:report": "node scripts/lockfile-sync-check.mjs --report-only",
77
- "failopen-loader-check": "node scripts/failopen-loader-check.mjs --report-only",
78
- "failopen-loader-check:strict": "node scripts/failopen-loader-check.mjs --fail-on-new",
79
- "voice:check": "node scripts/vc-copy-voice-ratchet.mjs --report-only",
80
- "voice:check:strict": "node scripts/vc-copy-voice-ratchet.mjs",
81
- "voice:baseline": "node scripts/vc-copy-voice-ratchet.mjs --baseline",
82
- "voice:vendor": "node scripts/gen-voice-rules-vendored.mjs",
83
- "voice:vendor:check": "node scripts/gen-voice-rules-vendored.mjs --check",
84
- "failopen-loader-baseline": "node scripts/failopen-loader-check.mjs --baseline",
85
- "detectors:check": "node scripts/detectors/detectors-wired.mjs",
86
- "class-emits-css-check": "node scripts/class-emits-css-check.mjs",
87
- "token-resolves-check": "node scripts/token-resolves-check.mjs",
88
- "check": "svelte-check --diagnostic-sources \"js,svelte\"",
89
- "check:all": "svelte-check",
90
- "test": "vitest run",
91
- "test:ci-mute-guard": "vitest run scripts/ci-needs-graph.test.js",
92
- "test:routes": "VITE_ROUTE_PROBE=1 vitest run src/lib/api/route-answers-probe.test.ts",
93
- "test:watch": "vitest",
94
- "test:ui": "vitest --ui",
95
- "test:e2e": "playwright test",
96
- "test:e2e:build": "npm run build:lib && playwright test",
97
- "test:e2e:route": "playwright test --config playwright.route.config.js",
98
- "test:e2e:route:build": "npm run build && playwright test --config playwright.route.config.js",
99
- "size": "size-limit",
100
- "size:why": "size-limit --why"
101
- },
102
- "size-limit": [
103
- {
104
- "name": "iife (CDN bundle)",
105
- "path": "dist/venue-calendar.iife.js",
106
- "limit": "660 KB",
107
- "gzip": true
108
- },
109
- {
110
- "name": "es (npm bundle)",
111
- "path": "dist/venue-calendar.es.js",
112
- "limit": "60 KB",
113
- "gzip": true
114
- },
115
- {
116
- "name": "css",
117
- "path": "dist/venue-calendar.css",
118
- "limit": "50 KB",
119
- "gzip": true
120
- }
121
- ],
122
- "keywords": [
123
- "svelte",
124
- "calendar",
125
- "events",
126
- "comedy",
127
- "venue",
128
- "component",
129
- "micdrop"
130
- ],
131
- "author": "MicDrop",
132
- "license": "MIT",
133
- "repository": {
134
- "type": "git",
135
- "url": "git+https://github.com/get-micdrop/venue-calendar.git"
136
- },
137
- "bugs": {
138
- "url": "https://github.com/get-micdrop/venue-calendar/issues"
139
- },
140
- "homepage": "https://github.com/get-micdrop/venue-calendar#readme",
141
- "peerDependencies": {
142
- "svelte": ">=5.56.0"
143
- },
144
- "devDependencies": {
145
- "@eslint/js": "^9.39.1",
146
- "@getmicdrop/svelte-components": "^6.24.138",
147
- "@playwright/test": "^1.60.0",
148
- "@size-limit/file": "^11.1.0",
149
- "@sveltejs/adapter-auto": "^6.1.0",
150
- "@sveltejs/kit": "^2.49.4",
151
- "@sveltejs/vite-plugin-svelte": "^6.2.4",
152
- "@tailwindcss/vite": "^4.0.0",
153
- "@tanstack/svelte-query": "^6.1.34",
154
- "@testing-library/jest-dom": "^6.9.1",
155
- "@testing-library/svelte": "^5.3.1",
156
- "@typescript-eslint/parser": "^8.59.2",
157
- "@vitest/coverage-v8": "^4.0.16",
158
- "cross-env": "^10.1.0",
159
- "dependency-cruiser": "^17.4.0",
160
- "eslint": "^9.7.0",
161
- "eslint-plugin-svelte": "^3.19.0",
162
- "fast-check": "^4.8.0",
163
- "globals": "^16.5.0",
164
- "husky": "^9.1.7",
165
- "jsdom": "^28.0.0",
166
- "knip": "^6.12.1",
167
- "lint-staged": "^16.4.0",
168
- "postcss": "^8.5.15",
169
- "postcss-html": "^1.7.0",
170
- "prettier": "^3.8.3",
171
- "prettier-plugin-svelte": "^3.5.1",
172
- "size-limit": "^11.1.0",
173
- "stylelint": "^16.16.0",
174
- "stylelint-config-standard": "^36.0.1",
175
- "svelte": "^5.56.0",
176
- "svelte-check": "^4.3.5",
177
- "tailwindcss": "^4.0.0",
178
- "typescript": "^5.9.3",
179
- "vite": "^7.0.0",
180
- "vite-plugin-dts": "^4.5.0",
181
- "vitest": "^4.0.16",
182
- "yaml": "2.8.2"
183
- },
184
- "dependencies": {
185
- "@stripe/stripe-js": "^8.0.0",
186
- "js-cookie": "^3.0.5",
187
- "qrcode": "^1.5.4",
188
- "svelte-stripe": "^2.0.0"
189
- },
190
- "lint-staged": {
191
- "*.{js,ts,svelte}": [
192
- "eslint --fix",
193
- "prettier --write"
194
- ],
195
- "*.{json,css,md}": [
196
- "prettier --write"
197
- ]
198
- }
199
- }
1
+ {
2
+ "name": "@getmicdrop/venue-calendar",
3
+ "version": "4.0.111",
4
+ "description": "A customizable Svelte calendar component for displaying comedy events",
5
+ "type": "module",
6
+ "types": "./dist/types/index.d.ts",
7
+ "main": "./dist/venue-calendar.umd.js",
8
+ "module": "./dist/venue-calendar.es.js",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/types/index.d.ts",
12
+ "svelte": "./dist/venue-calendar.es.js",
13
+ "import": "./dist/venue-calendar.es.js",
14
+ "require": "./dist/venue-calendar.umd.js",
15
+ "default": "./dist/venue-calendar.es.js"
16
+ },
17
+ "./api": {
18
+ "types": "./dist/api/index.d.ts",
19
+ "import": "./dist/api/api.mjs",
20
+ "require": "./dist/api/api.cjs",
21
+ "default": "./dist/api/api.mjs"
22
+ },
23
+ "./seo": {
24
+ "types": "./dist/seo/index.d.ts",
25
+ "import": "./dist/seo/seo.mjs",
26
+ "require": "./dist/seo/seo.cjs",
27
+ "default": "./dist/seo/seo.mjs"
28
+ },
29
+ "./theme": {
30
+ "import": "./src/lib/theme.js",
31
+ "default": "./src/lib/theme.js"
32
+ },
33
+ "./dist/venue-calendar.css": "./dist/venue-calendar.css"
34
+ },
35
+ "files": [
36
+ "dist",
37
+ "src/lib/theme.js",
38
+ "README.md"
39
+ ],
40
+ "scripts": {
41
+ "dev": "vite dev",
42
+ "build": "vite build",
43
+ "build:lib": "cross-env VC_IIFE_ONLY=1 vite build --config vite.config.lib.js && vite build --config vite.config.lib.js",
44
+ "build:api": "vite build --config vite.config.api.js",
45
+ "build:seo": "vite build --config vite.config.seo.js",
46
+ "build:all": "npm run build:lib && npm run build:api && npm run build:seo",
47
+ "preview": "vite preview",
48
+ "prepare": "node ./scripts/prepare.js",
49
+ "prepublishOnly": "npm run build:all",
50
+ "_lint_comment": "Ratchet cap. 2026-05-31: ESLint had NO svelte parser configured, so the entire .svelte tree was unparsed (300 'Unexpected token <' errors) and effectively unlinted. Wired the svelte parser (eslint.config.js) + downgraded the recommended svelte rules to 'warn' for the turn-on wave (mirrors performers-portal). 2026-06-10: ratcheted cap 1638 -> 418. 2026-07-16: burned the whole budget down (unused vars, navigation-without-resolve via resolve(), svelte/reactivity classes, hex -> color constants, @html removal, shadow renames) — cap is now 0 and stays 0; any new warning fails lint.",
51
+ "lint": "eslint src --max-warnings 0",
52
+ "gate": "sh scripts/gate.sh",
53
+ "lint:fix": "eslint src --fix",
54
+ "lint:css": "stylelint \"src/**/*.{css,scss,svelte}\" --allow-empty-input",
55
+ "lint:css:fix": "stylelint \"src/**/*.{css,scss,svelte}\" --allow-empty-input --fix",
56
+ "knip": "knip",
57
+ "depcruise": "dependency-cruiser src --config .dependency-cruiser.cjs",
58
+ "design-system:check": "node scripts/design-system-check.mjs --report-only",
59
+ "design-system:check:strict": "node scripts/design-system-check.mjs --fail-on-new",
60
+ "design-system:baseline": "node scripts/design-system-check.mjs --baseline",
61
+ "cleanup-check": "node scripts/cleanup-on-destroy-check.mjs --report-only",
62
+ "cleanup-check:strict": "node scripts/cleanup-on-destroy-check.mjs --fail-on-new",
63
+ "cleanup-baseline": "node scripts/cleanup-on-destroy-check.mjs --baseline",
64
+ "checkout-lifecycle-check": "node scripts/checkout-lifecycle-check.mjs --report-only",
65
+ "checkout-lifecycle-check:strict": "node scripts/checkout-lifecycle-check.mjs --fail-on-new",
66
+ "checkout-lifecycle-baseline": "node scripts/checkout-lifecycle-check.mjs --baseline",
67
+ "quantity-clamp-check": "node scripts/quantity-clamp-check.mjs --report-only",
68
+ "quantity-clamp-check:strict": "node scripts/quantity-clamp-check.mjs --fail-on-new",
69
+ "quantity-clamp-baseline": "node scripts/quantity-clamp-check.mjs --baseline",
70
+ "no-new-skips-check": "node scripts/no-new-skips-check.mjs --report-only",
71
+ "no-new-skips-check:strict": "node scripts/no-new-skips-check.mjs --fail-on-new",
72
+ "no-new-skips-baseline": "node scripts/no-new-skips-check.mjs --baseline",
73
+ "no-sc-toast-check": "node scripts/no-sc-toast-check.mjs",
74
+ "no-sc-toast-check:report": "node scripts/no-sc-toast-check.mjs --report-only",
75
+ "lockfile-sync-check": "node scripts/lockfile-sync-check.mjs",
76
+ "lockfile-sync-check:report": "node scripts/lockfile-sync-check.mjs --report-only",
77
+ "failopen-loader-check": "node scripts/failopen-loader-check.mjs --report-only",
78
+ "failopen-loader-check:strict": "node scripts/failopen-loader-check.mjs --fail-on-new",
79
+ "voice:check": "node scripts/vc-copy-voice-ratchet.mjs --report-only",
80
+ "voice:check:strict": "node scripts/vc-copy-voice-ratchet.mjs",
81
+ "voice:baseline": "node scripts/vc-copy-voice-ratchet.mjs --baseline",
82
+ "voice:vendor": "node scripts/gen-voice-rules-vendored.mjs",
83
+ "voice:vendor:check": "node scripts/gen-voice-rules-vendored.mjs --check",
84
+ "failopen-loader-baseline": "node scripts/failopen-loader-check.mjs --baseline",
85
+ "detectors:check": "node scripts/detectors/detectors-wired.mjs",
86
+ "class-emits-css-check": "node scripts/class-emits-css-check.mjs",
87
+ "token-resolves-check": "node scripts/token-resolves-check.mjs",
88
+ "check": "svelte-check --diagnostic-sources \"js,svelte\"",
89
+ "check:all": "svelte-check",
90
+ "test": "vitest run",
91
+ "test:ci-mute-guard": "vitest run scripts/ci-needs-graph.test.js",
92
+ "test:routes": "VITE_ROUTE_PROBE=1 vitest run src/lib/api/route-answers-probe.test.ts",
93
+ "test:watch": "vitest",
94
+ "test:ui": "vitest --ui",
95
+ "test:e2e": "playwright test",
96
+ "test:e2e:build": "npm run build:lib && playwright test",
97
+ "test:e2e:route": "playwright test --config playwright.route.config.js",
98
+ "test:e2e:route:build": "npm run build && playwright test --config playwright.route.config.js",
99
+ "size": "size-limit",
100
+ "size:why": "size-limit --why"
101
+ },
102
+ "size-limit": [
103
+ {
104
+ "name": "iife (CDN bundle)",
105
+ "path": "dist/venue-calendar.iife.js",
106
+ "limit": "660 KB",
107
+ "gzip": true
108
+ },
109
+ {
110
+ "name": "es (npm bundle)",
111
+ "path": "dist/venue-calendar.es.js",
112
+ "limit": "60 KB",
113
+ "gzip": true
114
+ },
115
+ {
116
+ "name": "css",
117
+ "path": "dist/venue-calendar.css",
118
+ "limit": "50 KB",
119
+ "gzip": true
120
+ }
121
+ ],
122
+ "keywords": [
123
+ "svelte",
124
+ "calendar",
125
+ "events",
126
+ "comedy",
127
+ "venue",
128
+ "component",
129
+ "micdrop"
130
+ ],
131
+ "author": "MicDrop",
132
+ "license": "MIT",
133
+ "repository": {
134
+ "type": "git",
135
+ "url": "git+https://github.com/get-micdrop/venue-calendar.git"
136
+ },
137
+ "bugs": {
138
+ "url": "https://github.com/get-micdrop/venue-calendar/issues"
139
+ },
140
+ "homepage": "https://github.com/get-micdrop/venue-calendar#readme",
141
+ "peerDependencies": {
142
+ "svelte": ">=5.56.0"
143
+ },
144
+ "devDependencies": {
145
+ "@eslint/js": "^9.39.1",
146
+ "@getmicdrop/svelte-components": "^6.24.138",
147
+ "@playwright/test": "^1.60.0",
148
+ "@size-limit/file": "^11.1.0",
149
+ "@sveltejs/adapter-auto": "^6.1.0",
150
+ "@sveltejs/kit": "^2.49.4",
151
+ "@sveltejs/vite-plugin-svelte": "^6.2.4",
152
+ "@tailwindcss/vite": "^4.0.0",
153
+ "@tanstack/svelte-query": "^6.1.34",
154
+ "@testing-library/jest-dom": "^6.9.1",
155
+ "@testing-library/svelte": "^5.3.1",
156
+ "@typescript-eslint/parser": "^8.59.2",
157
+ "@vitest/coverage-v8": "^4.0.16",
158
+ "cross-env": "^10.1.0",
159
+ "dependency-cruiser": "^17.4.0",
160
+ "eslint": "^9.7.0",
161
+ "eslint-plugin-svelte": "^3.19.0",
162
+ "fast-check": "^4.8.0",
163
+ "globals": "^16.5.0",
164
+ "husky": "^9.1.7",
165
+ "jsdom": "^28.0.0",
166
+ "knip": "^6.12.1",
167
+ "lint-staged": "^16.4.0",
168
+ "postcss": "^8.5.15",
169
+ "postcss-html": "^1.7.0",
170
+ "prettier": "^3.8.3",
171
+ "prettier-plugin-svelte": "^3.5.1",
172
+ "size-limit": "^11.1.0",
173
+ "stylelint": "^16.16.0",
174
+ "stylelint-config-standard": "^36.0.1",
175
+ "svelte": "^5.56.0",
176
+ "svelte-check": "^4.3.5",
177
+ "tailwindcss": "^4.0.0",
178
+ "typescript": "^5.9.3",
179
+ "vite": "^7.0.0",
180
+ "vite-plugin-dts": "^4.5.0",
181
+ "vitest": "^4.0.16",
182
+ "yaml": "2.8.2"
183
+ },
184
+ "dependencies": {
185
+ "@stripe/stripe-js": "^8.0.0",
186
+ "js-cookie": "^3.0.5",
187
+ "qrcode": "^1.5.4",
188
+ "svelte-stripe": "^2.0.0"
189
+ },
190
+ "lint-staged": {
191
+ "*.{js,ts,svelte}": [
192
+ "eslint --fix",
193
+ "prettier --write"
194
+ ],
195
+ "*.{json,css,md}": [
196
+ "prettier --write"
197
+ ]
198
+ }
199
+ }
@@ -1,17 +0,0 @@
1
- import { ApiConfig, ApiResponse } from './types.js';
2
- export declare function configureApi(config: Partial<ApiConfig>): void;
3
- export declare function getApiConfig(): Required<ApiConfig>;
4
- export declare function getPublicBaseUrl(): string;
5
- export declare function getLegacyPublicUrl(): string;
6
- export declare function getOrdersV2Url(): string;
7
- /** @deprecated IP is now resolved server-side via request headers. */
8
- export declare function getClientIP(): Promise<string>;
9
- export declare function apiGet<T>(endpoint: string, options?: RequestInit): Promise<ApiResponse<T>>;
10
- export declare function apiPost<T>(endpoint: string, body?: unknown, options?: RequestInit): Promise<ApiResponse<T>>;
11
- export declare function apiPut<T>(endpoint: string, body?: unknown, options?: RequestInit): Promise<ApiResponse<T>>;
12
- export declare function apiDelete<T>(endpoint: string, options?: RequestInit): Promise<ApiResponse<T>>;
13
- /**
14
- * Simple fetch wrapper that returns parsed JSON or null on error.
15
- * Inherits the global timeout + retry policy for GETs.
16
- */
17
- export declare function simpleFetch<T>(url: string, options?: RequestInit): Promise<T | null>;
@@ -1,34 +0,0 @@
1
- import { isHiddenTicketPurchasable } from '@getmicdrop/svelte-components/transforms';
2
- export interface CtaStateOptions {
3
- cancelled?: boolean;
4
- isRegistration?: boolean;
5
- waitlistEnabled?: boolean;
6
- }
7
- export interface CtaState {
8
- text: string;
9
- disabled: boolean;
10
- reason: 'cancelled' | 'event_past' | 'no_tickets' | 'available' | 'coming_soon' | 'sold_out_waitlist' | 'sold_out' | 'sales_ended' | 'hidden_only';
11
- }
12
- interface CtaEvent {
13
- startDateTime?: string | null;
14
- endDateTime?: string | null;
15
- hasPurchasableHiddenTickets?: boolean;
16
- }
17
- interface CtaTicket {
18
- salesChannel?: number;
19
- salesBegin?: string | null;
20
- salesStart?: string | null;
21
- saleBegin?: string | null;
22
- onSaleStart?: string | null;
23
- salesEnd?: string | null;
24
- saleEnd?: string | null;
25
- onSaleEnd?: string | null;
26
- remainingCapacity?: number | null;
27
- quantityRemaining?: number | null;
28
- quantity?: number | null;
29
- soldOut?: boolean;
30
- isHidden?: boolean;
31
- visibility?: number;
32
- }
33
- export { isHiddenTicketPurchasable };
34
- export declare function computeCtaState(event: CtaEvent, tickets: CtaTicket[] | undefined, options?: CtaStateOptions): CtaState;
@@ -1,183 +0,0 @@
1
- import { Result } from './result.js';
2
- import { Event, AvailableTicket, EventPerformersResponse, SeriesOccurrencesResponse, PublicCollectionData, ResolvedEntity } from './types.js';
3
- /**
4
- * Fetch event details, discriminating a real 404 from a transient failure.
5
- *
6
- * The SSR loader (`[id]/[slug]/+page.js`) gates its HTTP status on this: only an
7
- * upstream 404 (`errNotFound`) becomes a page 404. A 5xx, a network error, or a
8
- * timeout is `err(...)` (transient) so the loader can answer 503/retry instead
9
- * of rendering a permanent-looking 404 to a buyer or crawler on a backend blip.
10
- *
11
- * @param eventId - The event ID
12
- * @param customFetch - Optional custom fetch function (for SSR)
13
- * @param password - Optional password for gated events
14
- * @returns `ok(event)`, `errNotFound(...)` for a real 404, or `err(...)` transient
15
- */
16
- export declare function fetchEventDetailsResult(eventId: string | number, customFetch?: typeof fetch, password?: string): Promise<Result<Event>>;
17
- /**
18
- * Fetch event details
19
- *
20
- * Gets full event information including venue and ticket data.
21
- *
22
- * Fail-open adapter over {@link fetchEventDetailsResult}: existing in-widget
23
- * callers (Checkout, CartView, EventPage) keep degrading to `null` on any
24
- * failure. SSR loaders that need to answer 404-vs-503 use the Result variant.
25
- *
26
- * @param eventId - The event ID
27
- * @param customFetch - Optional custom fetch function (for SSR)
28
- * @returns Event details or null on error
29
- */
30
- export declare function fetchEventDetails(eventId: string | number, customFetch?: typeof fetch, password?: string): Promise<Event | null>;
31
- /**
32
- * Fetch available tickets for an event
33
- *
34
- * Returns all ticket types that are currently available for sale.
35
- *
36
- * @param eventId - The event ID
37
- * @returns Array of available tickets
38
- */
39
- export declare function fetchEventTicketsResult(eventId: string | number): Promise<Result<AvailableTicket[]>>;
40
- export declare function fetchEventTickets(eventId: string | number): Promise<AvailableTicket[]>;
41
- /**
42
- * Fetch performers for an event
43
- *
44
- * Returns the lineup with pre-resolved avatar URLs.
45
- *
46
- * @param eventId - The event ID
47
- * @returns Performers list and visibility flag
48
- */
49
- export declare function fetchEventPerformersResult(eventId: string | number): Promise<Result<EventPerformersResponse>>;
50
- export declare function fetchEventPerformers(eventId: string | number): Promise<EventPerformersResponse>;
51
- /**
52
- * Fetch all venues for an organization
53
- *
54
- * @param orgId - The organization ID
55
- * @returns Array of venues
56
- */
57
- export declare function fetchAllVenuesResult(orgId: string | number): Promise<Result<any[]>>;
58
- export declare function fetchAllVenues(orgId: string | number): Promise<any[]>;
59
- /**
60
- * Fetch events for a venue
61
- *
62
- * @param venueId - The venue ID
63
- * @returns Array of events
64
- */
65
- export declare function fetchVenueEventsResult(venueId: string | number): Promise<Result<Event[]>>;
66
- export declare function fetchVenueEvents(venueId: string | number): Promise<Event[]>;
67
- export declare function getMonthEventsResult(venueId: string | number, year: number, month: number): Promise<Result<Event[]>>;
68
- export declare function getMonthEvents(venueId: string | number, year: number, month: number): Promise<Event[]>;
69
- /**
70
- * Get events for an organization for a specific month
71
- *
72
- * @param orgId - The organization ID
73
- * @param year - The year (e.g., 2024)
74
- * @param month - The month (1-12)
75
- * @returns Array of events for the month
76
- */
77
- export declare function getOrgMonthEventsResult(orgId: string | number, year: number, month: number): Promise<Result<Event[]>>;
78
- export declare function getOrgMonthEvents(orgId: string | number, year: number, month: number): Promise<Event[]>;
79
- /**
80
- * Get series occurrences for date selector
81
- *
82
- * Returns all instances of a recurring event series.
83
- *
84
- * @param eventSeriesId - The series ID
85
- * @returns Series occurrences
86
- */
87
- export declare function getSeriesOccurrencesResult(eventSeriesId: number): Promise<Result<SeriesOccurrencesResponse>>;
88
- export declare function getSeriesOccurrences(eventSeriesId: number): Promise<SeriesOccurrencesResponse | null>;
89
- /**
90
- * Fetch series occurrences with CTA state
91
- *
92
- * Returns full series data including availability status.
93
- *
94
- * @param eventSeriesId - The series ID
95
- * @param venueId - The venue ID
96
- * @returns Series occurrences with CTA state
97
- */
98
- export declare function fetchSeriesOccurrencesResult(eventSeriesId: number, venueId: string | number): Promise<Result<SeriesOccurrencesResponse>>;
99
- export declare function fetchSeriesOccurrences(eventSeriesId: number, venueId: string | number): Promise<SeriesOccurrencesResponse | null>;
100
- /**
101
- * Resolve an entity-agnostic public id to its concrete type + data.
102
- *
103
- * The embed deep-link (`#{id}-{slug}`) carries no type prefix, so a cold
104
- * deep link (the show isn't in the loaded calendar month) needs the backend
105
- * to say whether the id is an event, series, or collection before the widget
106
- * can render the right view. This is the same `/api/v2/public/resolve/{id}`
107
- * endpoint get-micdrop.com's `/e/{slugId}` page resolves server-side; here we
108
- * call it cross-origin from the venue's page (the public API already serves
109
- * the calendar cross-origin, so CORS is in place).
110
- *
111
- * @param id - The entity id (numeric, type-agnostic)
112
- * @param slug - Optional slug hint (lets the backend canonicalize)
113
- * @returns `{ type, id, title, data }` or null on failure
114
- */
115
- export declare function resolvePublicEntity(id: string | number, slug?: string): Promise<ResolvedEntity | null>;
116
- /**
117
- * Fetch public collection data
118
- *
119
- * Returns collection info including events list.
120
- * For password-protected collections, pass the password to authenticate.
121
- *
122
- * @param collectionId - The collection ID
123
- * @param password - Optional password for protected collections
124
- * @returns Collection data or null on error
125
- */
126
- export declare function fetchPublicCollection(collectionId: string | number, password?: string): Promise<PublicCollectionData | null>;
127
- /**
128
- * Check collection password
129
- *
130
- * Validates password for password-protected collections.
131
- *
132
- * @param collectionId - The collection ID
133
- * @param password - The password to check
134
- * @returns Whether the password is valid
135
- */
136
- export declare function checkCollectionPassword(collectionId: string | number, password: string): Promise<boolean>;
137
- /**
138
- * Check event password
139
- *
140
- * Validates password for password-protected events.
141
- *
142
- * @param eventId - The event ID
143
- * @param password - The password to check
144
- * @returns Whether the password is valid
145
- */
146
- export declare function checkEventPassword(eventId: string | number, password: string): Promise<{
147
- valid: boolean;
148
- }>;
149
- /**
150
- * Test network connection
151
- *
152
- * Asks whether the public API is reachable.
153
- *
154
- * THE QUESTION IS "DID THE ROUTER ANSWER", NOT "DID THE RESOURCE EXIST" — the
155
- * same distinction route-manifest.ts is built on. Under the old `response.ok`
156
- * rule this probe reported the API DOWN on a healthy backend on EVERY branch,
157
- * for EVERY input, always. Measured against production: HEAD answers 405 on
158
- * every route the backend serves — including `HEAD /events/venue/42` for a venue
159
- * that EXISTS — and the old `HEAD /health` branch answered 404, because the
160
- * router does not serve /health at all. None of those are `ok`. A liveness check
161
- * that always fails is worse than none.
162
- *
163
- * Two changes fix two different things, and they are separable:
164
- *
165
- * 1. THE STATUS RULE is what fixes liveness. Reachable means ANSWERED, not
166
- * `response.ok`. A 400, a 404 or a 405 is the backend talking: it is up.
167
- * Only a transport failure (DNS, TLS, CORS, offline) or a 5xx means it is
168
- * not serving. This rule alone would have made liveness report up, even on
169
- * the old /health probe (404 < 500).
170
- * 2. THE REPOINT is what stops this naming a route the router does not serve —
171
- * the name-resolution gate, and #444. Every branch now names a route the
172
- * backend actually SERVES. There is no id-free public route, so the no-ids
173
- * branch asks a served route about an id that cannot exist: we do not care
174
- * what it says about the venue, only that it said anything at all. This is
175
- * not what fixes liveness.
176
- *
177
- * Do not "simplify" `status < 500` back to `response.ok`. That is the bug.
178
- *
179
- * @param orgId - Optional org ID
180
- * @param venueId - Optional venue ID
181
- * @returns Whether the API answered
182
- */
183
- export declare function testNetworkConnection(orgId?: string | number, venueId?: string | number): Promise<boolean>;