nitropack-nightly 2.11.4-20250306-175805.31dde1e4 → 2.11.4-20250306-223021.f52d522e

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.
@@ -45,7 +45,7 @@ import { Worker } from 'node:worker_threads';
45
45
  import { createProxyServer } from 'httpxy';
46
46
  import nodeCrypto from 'node:crypto';
47
47
  import { resolve as resolve$1, dirname as dirname$1 } from 'node:path';
48
- import * as _youch from 'nitropack/internal/deps/youch';
48
+ import * as _youch from 'youch-redist';
49
49
  import { SourceMapConsumer } from 'source-map';
50
50
  import serveStatic from 'serve-static';
51
51
  import { listen } from 'listhen';
@@ -2392,6 +2392,7 @@ function defineNitroErrorHandler(handler) {
2392
2392
  return handler;
2393
2393
  }
2394
2394
 
2395
+ const { Youch, ErrorParser } = _youch;
2395
2396
  const devErrorHandler = defineNitroErrorHandler(
2396
2397
  async function defaultNitroErrorHandler(error, event) {
2397
2398
  const res = await defaultHandler(error, event);
@@ -2421,7 +2422,7 @@ async function defaultHandler(error, event, opts) {
2421
2422
  }
2422
2423
  }
2423
2424
  await loadStackTrace(error).catch(consola.error);
2424
- const youch = new _youch.Youch();
2425
+ const youch = new Youch();
2425
2426
  if (isSensitive && !opts?.silent) {
2426
2427
  const tags = [error.unhandled && "[unhandled]", error.fatal && "[fatal]"].filter(Boolean).join(" ");
2427
2428
  const ansiError = await (await youch.toANSI(error)).replaceAll(process.cwd(), ".");
@@ -2476,7 +2477,7 @@ async function loadStackTrace(error) {
2476
2477
  if (!(error instanceof Error)) {
2477
2478
  return;
2478
2479
  }
2479
- const parsed = await new _youch.ErrorParser().defineSourceLoader(sourceLoader).parse(error);
2480
+ const parsed = await new ErrorParser().defineSourceLoader(sourceLoader).parse(error);
2480
2481
  const stack = error.message + "\n" + parsed.frames.map((frame) => fmtFrame(frame)).join("\n");
2481
2482
  Object.defineProperty(error, "stack", { value: stack });
2482
2483
  if (error.cause) {
@@ -1,3 +1,3 @@
1
- const version = "2.11.4-20250306-175805.31dde1e4";
1
+ const version = "2.11.4-20250306-223021.f52d522e";
2
2
 
3
3
  export { version };
@@ -1,3 +1,3 @@
1
- const version = "2.11.4-20250306-175805.31dde1e4";
1
+ const version = "2.11.4-20250306-223021.f52d522e";
2
2
 
3
3
  export { version };
@@ -1,3 +1,3 @@
1
- const version = "2.11.4-20250306-175805.31dde1e4";
1
+ const version = "2.11.4-20250306-223021.f52d522e";
2
2
 
3
3
  export { version };
@@ -11,9 +11,10 @@ import nodeCrypto from "node:crypto";
11
11
  import { readFile } from "node:fs/promises";
12
12
  import { resolve, dirname } from "node:path";
13
13
  import consola from "consola";
14
- import * as _youch from "nitropack/internal/deps/youch";
14
+ import * as _youch from "youch-redist";
15
15
  import { SourceMapConsumer } from "source-map";
16
16
  import { defineNitroErrorHandler } from "./utils.mjs";
17
+ const { Youch, ErrorParser } = _youch;
17
18
  export default defineNitroErrorHandler(
18
19
  async function defaultNitroErrorHandler(error, event) {
19
20
  const res = await defaultHandler(error, event);
@@ -43,7 +44,7 @@ export async function defaultHandler(error, event, opts) {
43
44
  }
44
45
  }
45
46
  await loadStackTrace(error).catch(consola.error);
46
- const youch = new _youch.Youch();
47
+ const youch = new Youch();
47
48
  if (isSensitive && !opts?.silent) {
48
49
  const tags = [error.unhandled && "[unhandled]", error.fatal && "[fatal]"].filter(Boolean).join(" ");
49
50
  const ansiError = await (await youch.toANSI(error)).replaceAll(process.cwd(), ".");
@@ -98,7 +99,7 @@ export async function loadStackTrace(error) {
98
99
  if (!(error instanceof Error)) {
99
100
  return;
100
101
  }
101
- const parsed = await new _youch.ErrorParser().defineSourceLoader(sourceLoader).parse(error);
102
+ const parsed = await new ErrorParser().defineSourceLoader(sourceLoader).parse(error);
102
103
  const stack = error.message + "\n" + parsed.frames.map((frame) => fmtFrame(frame)).join("\n");
103
104
  Object.defineProperty(error, "stack", { value: stack });
104
105
  if (error.cause) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nitropack-nightly",
3
- "version": "2.11.4-20250306-175805.31dde1e4",
3
+ "version": "2.11.4-20250306-223021.f52d522e",
4
4
  "description": "Build and Deploy Universal JavaScript Servers",
5
5
  "repository": "nitrojs/nitro",
6
6
  "license": "MIT",
@@ -62,7 +62,6 @@
62
62
  "types": "./types.d.ts",
63
63
  "import": "./dist/types/index.mjs"
64
64
  },
65
- "./internal/deps/youch": "./dist/deps/youch/youch.mjs",
66
65
  "./package.json": "./package.json"
67
66
  },
68
67
  "main": "./dist/core/index.mjs",
@@ -170,7 +169,8 @@
170
169
  "unplugin-utils": "^0.2.4",
171
170
  "unstorage": "^1.15.0",
172
171
  "untyped": "^2.0.0",
173
- "unwasm": "^0.3.9"
172
+ "unwasm": "^0.3.9",
173
+ "youch-redist": "4.1.0-beta.5-1"
174
174
  },
175
175
  "devDependencies": {
176
176
  "@azure/functions": "^3.5.1",
@@ -207,7 +207,7 @@
207
207
  "undici": "^7.4.0",
208
208
  "vitest": "^3.0.7",
209
209
  "xml2js": "^0.6.2",
210
- "youch": "4.1.0-beta.5",
210
+ "youch": "^4.1.0-beta.5",
211
211
  "youch-core": "^0.3.1"
212
212
  },
213
213
  "peerDependencies": {
@@ -1,5 +0,0 @@
1
- #error-cause {
2
- border: 1px solid var(--border);
3
- border-radius: var(--radius);
4
- --pre-bg-color: transparent;
5
- }
@@ -1,55 +0,0 @@
1
- #error-name {
2
- color: var(--danger-fg);
3
- font-size: 16px;
4
- -webkit-font-smoothing: antialiased;
5
- -moz-osx-font-smoothing: grayscale;
6
- }
7
-
8
- #error-title {
9
- color: var(--title-fg);
10
- font-size: 32px;
11
- -webkit-font-smoothing: antialiased;
12
- -moz-osx-font-smoothing: grayscale;
13
- }
14
-
15
- #error-message {
16
- color: var(--danger-fg);
17
- font-size: 22px;
18
- font-weight: 700;
19
- display: flex;
20
- align-items: center;
21
- align-items: flex-start;
22
- gap: 12px;
23
- -webkit-font-smoothing: antialiased;
24
- -moz-osx-font-smoothing: grayscale;
25
- }
26
- #error-message svg {
27
- margin-top: 1.5px;
28
- }
29
-
30
- #error-hint {
31
- border-top: 1px solid var(--border);
32
- padding-top: 15px;
33
- margin-top: 15px;
34
- font-size: 15px;
35
- font-style: italic;
36
- display: flex;
37
- gap: 12px;
38
- align-items: flex-start;
39
- padding-left: 1px;
40
- }
41
- #error-hint svg {
42
- margin-bottom: -2px;
43
- }
44
- #error-hint strong {
45
- color: var(--title-fg);
46
- }
47
- #error-hint a {
48
- color: var(--links-fg);
49
- }
50
-
51
- @media (min-width: 1024px) {
52
- #error-hint {
53
- align-items: center;
54
- }
55
- }
@@ -1,74 +0,0 @@
1
- function showFormattedFrames(button) {
2
- document.querySelector('#all-frames-toggle input[type="checkbox"]').disabled = false
3
- const parent = button.closest('section')
4
-
5
- const formattedFrames = parent.querySelector('#stack-frames-formatted')
6
- formattedFrames.classList.add('visible')
7
-
8
- const rawFrames = parent.querySelector('#stack-frames-raw')
9
- rawFrames.classList.remove('visible')
10
-
11
- button.parentElement.querySelectorAll('button').forEach((btn) => btn.classList.remove('active'))
12
- button.classList.add('active')
13
- }
14
-
15
- function showRawFrames(button) {
16
- document.querySelector('#all-frames-toggle input[type="checkbox"]').disabled = true
17
- const parent = button.closest('section')
18
-
19
- const formattedFrames = parent.querySelector('#stack-frames-formatted')
20
- formattedFrames.classList.remove('visible')
21
-
22
- const rawFrames = parent.querySelector('#stack-frames-raw')
23
- rawFrames.classList.add('visible')
24
-
25
- button.parentElement.querySelectorAll('button').forEach((btn) => btn.classList.remove('active'))
26
- button.classList.add('active')
27
- }
28
-
29
- function toggleFrameSource(parent) {
30
- if (parent.classList.contains('expanded')) {
31
- parent.classList.remove('expanded')
32
- } else {
33
- parent.classList.add('expanded')
34
- }
35
- }
36
-
37
- function toggleAllFrames() {
38
- const wrapper = document.querySelector('#stack-frames-wrapper')
39
- const indicator = document.querySelector('#all-frames-toggle input[type="checkbox"]')
40
- if (indicator.checked) {
41
- wrapper.classList.add('display-all')
42
- } else {
43
- wrapper.classList.remove('display-all')
44
- }
45
- }
46
-
47
- window.addEventListener('DOMContentLoaded', () => {
48
- document.querySelector('#formatted-frames-toggle').addEventListener('click', function () {
49
- showFormattedFrames(this)
50
- })
51
- document.querySelector('#raw-frames-toggle').addEventListener('click', function () {
52
- showRawFrames(this)
53
- })
54
- document
55
- .querySelector('#all-frames-toggle input[type="checkbox"]')
56
- .addEventListener('change', function () {
57
- toggleAllFrames()
58
- })
59
-
60
- document.querySelectorAll('button[class="stack-frame-location"]').forEach((sfl) => {
61
- sfl.addEventListener('click', function (e) {
62
- if (e.target.tagName === 'A') {
63
- return
64
- }
65
- toggleFrameSource(e.target.closest('li'))
66
- })
67
- })
68
-
69
- document.querySelectorAll('button[class="stack-frame-toggle-indicator"]').forEach((sfl) => {
70
- sfl.addEventListener('click', function (e) {
71
- toggleFrameSource(e.target.closest('li'))
72
- })
73
- })
74
- })
@@ -1,206 +0,0 @@
1
- :root {
2
- --frame-bg: var(--slate-2);
3
- --label-bg: var(--green-5);
4
- --label-fg: var(--green-12);
5
- --switch-bg: var(--slate-3);
6
- --switch-active-bg: var(--slate-a4);
7
- --switch-border: var(--slate-7);
8
- }
9
- html.dark {
10
- --frame-bg: var(--slate-2);
11
- --label-bg: var(--green-3);
12
- --label-fg: var(--green-11);
13
- --switch-bg: var(--slate-3);
14
- --switch-active-bg: var(--slate-a4);
15
- --switch-border: var(--slate-7);
16
- }
17
-
18
- #stack-frames-wrapper {
19
- border: 1px solid var(--border);
20
- border-radius: var(--radius);
21
- }
22
-
23
- #stack-frames-header {
24
- display: flex;
25
- justify-content: space-between;
26
- align-items: center;
27
- padding: 10px 16px;
28
- border-radius: var(--radius) var(--radius) 0 0;
29
- }
30
-
31
- #all-frames-toggle {
32
- display: flex;
33
- align-items: center;
34
- gap: 6px;
35
- font-size: 13px;
36
- font-weight: 500;
37
- user-select: none;
38
- }
39
-
40
- #stack-frames {
41
- list-style: none;
42
- }
43
-
44
- .stack-frame {
45
- border-top: 1px solid var(--border);
46
- font-size: 14px;
47
- }
48
- .stack-frame.stack-frame-native {
49
- display: none;
50
- font-style: italic;
51
- }
52
- .stack-frame.stack-frame-native a,
53
- .stack-frame.stack-frame-native code {
54
- color: var(--muted-fg);
55
- }
56
-
57
- #stack-frames-wrapper.display-all .stack-frame.stack-frame-native {
58
- display: block;
59
- }
60
-
61
- .stack-frame-contents {
62
- background: var(--frame-bg);
63
- display: flex;
64
- padding: 0 12px;
65
- align-items: center;
66
- justify-content: space-between;
67
- }
68
- .stack-frame:not(.stack-frame-native) .stack-frame-contents:hover {
69
- background: var(--card-bg);
70
- }
71
- .stack-frame:last-child:not(.expanded) .stack-frame-contents {
72
- border-radius: 0 0 var(--radius) var(--radius);
73
- }
74
-
75
- .stack-frame-location {
76
- display: flex;
77
- flex-direction: column;
78
- overflow: hidden;
79
- gap: 7px;
80
- border: none;
81
- background: none;
82
- flex: 1;
83
- color: inherit;
84
- font: inherit;
85
- padding: 9px 0;
86
- }
87
-
88
- .stack-frame-location a {
89
- text-decoration: none;
90
- white-space: nowrap;
91
- overflow: hidden;
92
- text-overflow: ellipsis;
93
- }
94
- .stack-frame-location span {
95
- white-space: nowrap;
96
- overflow: hidden;
97
- text-overflow: ellipsis;
98
- }
99
- .stack-frame-location code {
100
- font-family: var(--font-sans);
101
- }
102
-
103
- .stack-frame-extras {
104
- display: flex;
105
- gap: 6px;
106
- align-items: center;
107
- }
108
-
109
- .stack-frame-toggle-indicator {
110
- border: none;
111
- border-radius: var(--radius);
112
- height: 22px;
113
- width: 22px;
114
- display: flex;
115
- justify-content: center;
116
- align-items: center;
117
- background: none;
118
- color: inherit;
119
- font: inherit;
120
- }
121
- .stack-frame-toggle-indicator:hover {
122
- border: 1px solid var(--switch-border);
123
- }
124
-
125
- .stack-frame-toggle-indicator svg {
126
- width: 16px;
127
- display: block;
128
- }
129
-
130
- .stack-frame.expanded .stack-frame-toggle-indicator svg {
131
- transform: rotate(180deg);
132
- }
133
-
134
- .frame-label {
135
- padding: 0px 8px;
136
- border-radius: 20px;
137
- align-items: center;
138
- height: 20px;
139
- background: var(--label-bg);
140
- font-size: 12px;
141
- font-weight: 500;
142
- color: var(--label-fg);
143
- display: none;
144
- }
145
- .stack-frame-source {
146
- display: none;
147
- }
148
- .stack-frame.expanded .stack-frame-source {
149
- display: block;
150
- }
151
-
152
- #stack-frames-raw {
153
- --pre-bg-color: transparent;
154
- border-top: 1px solid var(--border);
155
- }
156
- #stack-frames-formatted,
157
- #stack-frames-raw {
158
- display: none;
159
- }
160
- #stack-frames-formatted.visible,
161
- #stack-frames-raw.visible {
162
- display: block;
163
- }
164
-
165
- .toggle-switch {
166
- display: flex;
167
- background: var(--switch-bg);
168
- border: 1px solid var(--switch-border);
169
- border-radius: var(--radius);
170
- }
171
-
172
- .toggle-switch button {
173
- background: none;
174
- border: none;
175
- font-family: inherit;
176
- color: inherit;
177
- font-size: 13px;
178
- font-weight: 500;
179
- padding: 4px 8px;
180
- border-right: 1px solid var(--switch-border);
181
- }
182
-
183
- .toggle-switch button:first-child {
184
- border-radius: var(--radius) 0 0 var(--radius);
185
- }
186
- .toggle-switch button:last-child {
187
- border-radius: 0 var(--radius) var(--radius) 0;
188
- border: none;
189
- }
190
-
191
- .toggle-switch button.active {
192
- background: var(--switch-active-bg);
193
- color: var(--title-fg);
194
- }
195
-
196
- @media (min-width: 768px) {
197
- .stack-frame-location {
198
- flex-direction: row;
199
- }
200
- }
201
-
202
- @media (min-width: 1024px) {
203
- .frame-label {
204
- display: inline-flex;
205
- }
206
- }
@@ -1,122 +0,0 @@
1
- :root {
2
- --error-bg: #ff000632;
3
- --pre-selection-bg: var(--slate-a5);
4
- --line-numbers-fg: var(--slate-a11);
5
- }
6
- html.dark {
7
- --error-bg: #ff173f2d;
8
- --pre-selection-bg: var(--slate-a5);
9
- --line-numbers-fg: var(--slate-a11);
10
- }
11
-
12
- .line-highlight {
13
- position: absolute;
14
- left: 0;
15
- right: 0;
16
- background: var(--error-bg);
17
- height: 24px;
18
- pointer-events: none;
19
- }
20
-
21
- [class*='shj-lang-'] {
22
- white-space: pre;
23
- border-top: 1px solid var(--border);
24
- background: var(--pre-bg-color);
25
- color: var(--pre-fg-color);
26
- line-height: 24px;
27
- box-sizing: border-box;
28
- max-width: min(100%, 100vw);
29
- display: block;
30
- font-size: 12px;
31
- font-family: var(--font-mono);
32
- position: relative;
33
- padding: 10px 12px 12px 12px;
34
- }
35
- [class*='shj-lang-'] * {
36
- -webkit-font-smoothing: initial;
37
- -moz-osx-font-smoothing: initial;
38
- }
39
-
40
- .shj-inline {
41
- margin: 0;
42
- padding: 2px 5px;
43
- display: inline-block;
44
- border-radius: 5px;
45
- }
46
- [class*='shj-lang-']::selection,
47
- [class*='shj-lang-'] ::selection {
48
- background: var(--pre-selection-bg);
49
- }
50
- [class*='shj-lang-'] > div {
51
- display: flex;
52
- overflow: auto;
53
- }
54
- [class*='shj-lang-'] > div :last-child {
55
- flex: 1;
56
- outline: none;
57
- }
58
- .shj-numbers {
59
- padding-left: 5px;
60
- counter-reset: line;
61
- }
62
- .shj-numbers div {
63
- padding-right: 5px;
64
- }
65
- .shj-numbers div:before {
66
- color: var(--line-numbers-fg);
67
- display: block;
68
- content: counter(line);
69
- opacity: 0.5;
70
- text-align: right;
71
- margin-right: 5px;
72
- counter-increment: line;
73
- }
74
- .shj-syn-cmnt {
75
- font-style: italic;
76
- }
77
- .shj-syn-err,
78
- .shj-syn-kwd {
79
- color: var(--dt-symbol-fg-color);
80
- }
81
- .shj-syn-num {
82
- color: var(--dt-number-fg-color);
83
- }
84
- .shj-syn-class {
85
- color: var(--class-label-fg-color);
86
- }
87
-
88
- .shj-numbers,
89
- .shj-syn-cmnt {
90
- color: var(--dt-undefined-fg-color);
91
- }
92
- .shj-syn-insert,
93
- .shj-syn-str {
94
- color: var(--dt-string-fg-color);
95
- }
96
- .shj-syn-bool {
97
- color: var(--dt-boolean-fg-color);
98
- }
99
- .shj-syn-type,
100
- .shj-syn-oper {
101
- color: var(--braces-fg-color);
102
- }
103
- .shj-syn-section,
104
- .shj-syn-func {
105
- color: var(--pre-fg-color);
106
- }
107
- .shj-syn-deleted,
108
- .shj-syn-var {
109
- color: var(--brackets-fg-color);
110
- }
111
- .shj-oneline {
112
- padding: 12px 10px;
113
- }
114
- .shj-multiline.shj-mode-header {
115
- padding: 20px;
116
- }
117
-
118
- @media (min-width: 768px) {
119
- [class*='shj-lang-'] {
120
- border-top: none;
121
- }
122
- }
@@ -1,16 +0,0 @@
1
- function toggleTheme(input) {
2
- if (input.checked) {
3
- document.documentElement.classList.add('dark')
4
- localStorage.setItem('youch-theme', 'dark')
5
- } else {
6
- document.documentElement.classList.remove('dark')
7
- localStorage.setItem('youch-theme', 'light')
8
- }
9
- }
10
-
11
- window.addEventListener('DOMContentLoaded', () => {
12
- document.querySelector('#toggle-theme-checkbox').checked = usesDarkMode()
13
- document.querySelector('#toggle-theme-checkbox').addEventListener('change', function () {
14
- toggleTheme(this)
15
- })
16
- })
@@ -1,55 +0,0 @@
1
- #header-actions {
2
- display: flex;
3
- flex-direction: row-reverse;
4
- }
5
-
6
- #toggle-theme-container {
7
- position: relative;
8
- display: inline-block;
9
- padding-right: 10px;
10
- }
11
-
12
- #toggle-theme-container input[type='checkbox'] {
13
- opacity: 0;
14
- position: absolute;
15
- }
16
-
17
- #toggle-theme-label {
18
- position: relative;
19
- cursor: pointer;
20
- border-radius: 50px;
21
- display: inline-flex;
22
- }
23
-
24
- #toggle-theme-checkbox:focus + #toggle-theme-label {
25
- outline: 2px solid var(--slate-a6);
26
- outline-offset: 4px;
27
- }
28
-
29
- #light-theme-indicator,
30
- #dark-theme-indicator {
31
- position: relative;
32
- z-index: 1;
33
- display: flex;
34
- align-items: center;
35
- justify-content: center;
36
- }
37
-
38
- #toggle-theme-label svg {
39
- width: 30px;
40
- height: 30px;
41
- }
42
-
43
- #toggle-theme-container #dark-theme-indicator {
44
- display: none;
45
- }
46
-
47
- #toggle-theme-container
48
- input[type='checkbox']:checked
49
- + #toggle-theme-label
50
- #light-theme-indicator {
51
- display: none;
52
- }
53
- #toggle-theme-container input[type='checkbox']:checked + #toggle-theme-label #dark-theme-indicator {
54
- display: flex;
55
- }
@@ -1,11 +0,0 @@
1
- function usesDarkMode() {
2
- let youchTheme = localStorage.getItem('youch-theme')
3
- let hasDarkMode = false
4
- if (youchTheme === null) {
5
- hasDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches
6
- } else if (youchTheme === 'dark') {
7
- hasDarkMode = true
8
- }
9
- return hasDarkMode
10
- }
11
- document.documentElement.classList.add(usesDarkMode() ? 'dark' : 'light')