@netlify/plugin-nextjs 4.40.0 → 4.40.2

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 (164) hide show
  1. package/lib/helpers/edge.js +4 -2
  2. package/lib/templates/getHandler.js +1 -2
  3. package/lib/templates/handlerUtils.js +14 -1
  4. package/lib/templates/server.js +9 -8
  5. package/lib/templates/vendor.js +20 -0
  6. package/package.json +7 -4
  7. package/src/templates/edge/next-dev.js +3 -3
  8. package/src/templates/edge/shims.js +6 -6
  9. package/src/templates/edge-shared/next-utils.ts +3 -3
  10. package/src/templates/edge-shared/utils.ts +1 -1
  11. package/src/templates/vendor/deno.land/std@0.134.0/fmt/colors.ts +536 -0
  12. package/src/templates/vendor/deno.land/std@0.134.0/testing/_diff.ts +360 -0
  13. package/src/templates/vendor/deno.land/std@0.134.0/testing/asserts.ts +866 -0
  14. package/src/templates/vendor/deno.land/std@0.175.0/_util/asserts.ts +25 -0
  15. package/src/templates/vendor/deno.land/std@0.175.0/_util/os.ts +23 -0
  16. package/src/templates/vendor/deno.land/std@0.175.0/async/abortable.ts +149 -0
  17. package/src/templates/vendor/deno.land/std@0.175.0/async/deadline.ts +30 -0
  18. package/src/templates/vendor/deno.land/std@0.175.0/async/debounce.ts +79 -0
  19. package/src/templates/vendor/deno.land/std@0.175.0/async/deferred.ts +48 -0
  20. package/src/templates/vendor/deno.land/std@0.175.0/async/delay.ts +67 -0
  21. package/src/templates/vendor/deno.land/std@0.175.0/async/mod.ts +18 -0
  22. package/src/templates/vendor/deno.land/std@0.175.0/async/mux_async_iterator.ts +97 -0
  23. package/src/templates/vendor/deno.land/std@0.175.0/async/pool.ts +95 -0
  24. package/src/templates/vendor/deno.land/std@0.175.0/async/retry.ts +81 -0
  25. package/src/templates/vendor/deno.land/std@0.175.0/async/tee.ts +100 -0
  26. package/src/templates/vendor/deno.land/std@0.175.0/bytes/index_of_needle.ts +49 -0
  27. package/src/templates/vendor/deno.land/std@0.175.0/crypto/timing_safe_equal.ts +29 -0
  28. package/src/templates/vendor/deno.land/std@0.175.0/datetime/to_imf.ts +45 -0
  29. package/src/templates/vendor/deno.land/std@0.175.0/encoding/base64.ts +144 -0
  30. package/src/templates/vendor/deno.land/std@0.175.0/encoding/base64url.ts +70 -0
  31. package/src/templates/vendor/deno.land/std@0.175.0/flags/mod.ts +785 -0
  32. package/src/templates/vendor/deno.land/std@0.175.0/fmt/colors.ts +569 -0
  33. package/src/templates/vendor/deno.land/std@0.175.0/fmt/printf.ts +939 -0
  34. package/src/templates/vendor/deno.land/std@0.175.0/http/cookie.ts +403 -0
  35. package/src/templates/vendor/deno.land/std@0.175.0/node/_core.ts +77 -0
  36. package/src/templates/vendor/deno.land/std@0.175.0/node/_events.d.ts +848 -0
  37. package/src/templates/vendor/deno.land/std@0.175.0/node/_events.mjs +1033 -0
  38. package/src/templates/vendor/deno.land/std@0.175.0/node/_global.d.ts +66 -0
  39. package/src/templates/vendor/deno.land/std@0.175.0/node/_next_tick.ts +173 -0
  40. package/src/templates/vendor/deno.land/std@0.175.0/node/_process/exiting.ts +4 -0
  41. package/src/templates/vendor/deno.land/std@0.175.0/node/_process/process.ts +131 -0
  42. package/src/templates/vendor/deno.land/std@0.175.0/node/_process/stdio.mjs +7 -0
  43. package/src/templates/vendor/deno.land/std@0.175.0/node/_process/streams.mjs +146 -0
  44. package/src/templates/vendor/deno.land/std@0.175.0/node/_stream.d.ts +1488 -0
  45. package/src/templates/vendor/deno.land/std@0.175.0/node/_stream.mjs +746 -0
  46. package/src/templates/vendor/deno.land/std@0.175.0/node/_util/_util_callbackify.ts +129 -0
  47. package/src/templates/vendor/deno.land/std@0.175.0/node/_utils.ts +206 -0
  48. package/src/templates/vendor/deno.land/std@0.175.0/node/assert.ts +940 -0
  49. package/src/templates/vendor/deno.land/std@0.175.0/node/assertion_error.ts +579 -0
  50. package/src/templates/vendor/deno.land/std@0.175.0/node/async_hooks.ts +331 -0
  51. package/src/templates/vendor/deno.land/std@0.175.0/node/buffer.ts +13 -0
  52. package/src/templates/vendor/deno.land/std@0.175.0/node/events.ts +14 -0
  53. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/buffer.d.ts +2074 -0
  54. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/buffer.mjs +2607 -0
  55. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/crypto/_keys.ts +16 -0
  56. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/crypto/constants.ts +5 -0
  57. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/error_codes.ts +7 -0
  58. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/errors.ts +2867 -0
  59. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/fixed_queue.ts +123 -0
  60. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/hide_stack_frames.ts +16 -0
  61. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/net.ts +95 -0
  62. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/normalize_encoding.mjs +72 -0
  63. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/options.ts +45 -0
  64. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/primordials.mjs +30 -0
  65. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/process/per_thread.mjs +272 -0
  66. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/readline/callbacks.mjs +137 -0
  67. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/readline/utils.mjs +580 -0
  68. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/streams/destroy.mjs +320 -0
  69. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/streams/end-of-stream.mjs +229 -0
  70. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/streams/utils.mjs +242 -0
  71. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/util/comparisons.ts +669 -0
  72. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/util/debuglog.ts +118 -0
  73. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/util/inspect.mjs +2237 -0
  74. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/util/types.ts +113 -0
  75. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/util.mjs +143 -0
  76. package/src/templates/vendor/deno.land/std@0.175.0/node/internal/validators.mjs +317 -0
  77. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/_libuv_winerror.ts +229 -0
  78. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/_listen.ts +16 -0
  79. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/_node.ts +18 -0
  80. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/_timingSafeEqual.ts +12 -0
  81. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/_utils.ts +86 -0
  82. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/_winerror.ts +16873 -0
  83. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/ares.ts +66 -0
  84. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/async_wrap.ts +152 -0
  85. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/buffer.ts +130 -0
  86. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/cares_wrap.ts +541 -0
  87. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/config.ts +3 -0
  88. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/connection_wrap.ts +80 -0
  89. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/constants.ts +900 -0
  90. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/contextify.ts +3 -0
  91. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/credentials.ts +3 -0
  92. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/crypto.ts +14 -0
  93. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/errors.ts +3 -0
  94. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/fs.ts +3 -0
  95. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/fs_dir.ts +3 -0
  96. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/fs_event_wrap.ts +3 -0
  97. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/handle_wrap.ts +50 -0
  98. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/heap_utils.ts +3 -0
  99. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/http_parser.ts +3 -0
  100. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/icu.ts +3 -0
  101. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/inspector.ts +3 -0
  102. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/js_stream.ts +3 -0
  103. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/messaging.ts +3 -0
  104. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/mod.ts +108 -0
  105. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/module_wrap.ts +3 -0
  106. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/native_module.ts +3 -0
  107. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/natives.ts +3 -0
  108. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/node_file.ts +84 -0
  109. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/node_options.ts +39 -0
  110. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/options.ts +3 -0
  111. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/os.ts +3 -0
  112. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/performance.ts +3 -0
  113. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/pipe_wrap.ts +392 -0
  114. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/process_methods.ts +3 -0
  115. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/report.ts +3 -0
  116. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/serdes.ts +3 -0
  117. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/signal_wrap.ts +3 -0
  118. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/spawn_sync.ts +3 -0
  119. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/stream_wrap.ts +354 -0
  120. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/string_decoder.ts +15 -0
  121. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/symbols.ts +27 -0
  122. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/task_queue.ts +3 -0
  123. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/tcp_wrap.ts +488 -0
  124. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/timers.ts +3 -0
  125. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/tls_wrap.ts +3 -0
  126. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/trace_events.ts +3 -0
  127. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/tty_wrap.ts +3 -0
  128. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/types.ts +186 -0
  129. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/udp_wrap.ts +496 -0
  130. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/url.ts +3 -0
  131. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/util.ts +126 -0
  132. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/uv.ts +437 -0
  133. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/v8.ts +3 -0
  134. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/worker.ts +3 -0
  135. package/src/templates/vendor/deno.land/std@0.175.0/node/internal_binding/zlib.ts +3 -0
  136. package/src/templates/vendor/deno.land/std@0.175.0/node/process.ts +705 -0
  137. package/src/templates/vendor/deno.land/std@0.175.0/node/stream.ts +37 -0
  138. package/src/templates/vendor/deno.land/std@0.175.0/node/string_decoder.ts +337 -0
  139. package/src/templates/vendor/deno.land/std@0.175.0/node/util/types.ts +4 -0
  140. package/src/templates/vendor/deno.land/std@0.175.0/node/util.ts +289 -0
  141. package/src/templates/vendor/deno.land/std@0.175.0/path/_constants.ts +49 -0
  142. package/src/templates/vendor/deno.land/std@0.175.0/path/_interface.ts +30 -0
  143. package/src/templates/vendor/deno.land/std@0.175.0/path/_util.ts +194 -0
  144. package/src/templates/vendor/deno.land/std@0.175.0/path/common.ts +40 -0
  145. package/src/templates/vendor/deno.land/std@0.175.0/path/glob.ts +418 -0
  146. package/src/templates/vendor/deno.land/std@0.175.0/path/mod.ts +53 -0
  147. package/src/templates/vendor/deno.land/std@0.175.0/path/posix.ts +487 -0
  148. package/src/templates/vendor/deno.land/std@0.175.0/path/separator.ts +7 -0
  149. package/src/templates/vendor/deno.land/std@0.175.0/path/win32.ts +962 -0
  150. package/src/templates/vendor/deno.land/std@0.175.0/streams/write_all.ts +64 -0
  151. package/src/templates/vendor/deno.land/std@0.175.0/testing/_diff.ts +440 -0
  152. package/src/templates/vendor/deno.land/std@0.175.0/testing/_format.ts +23 -0
  153. package/src/templates/vendor/deno.land/std@0.175.0/testing/asserts.ts +906 -0
  154. package/src/templates/vendor/deno.land/std@0.175.0/types.d.ts +89 -0
  155. package/src/templates/vendor/deno.land/x/html_rewriter@v0.1.0-pre.17/index.ts +133 -0
  156. package/src/templates/vendor/deno.land/x/html_rewriter@v0.1.0-pre.17/vendor/asyncify.js +112 -0
  157. package/src/templates/vendor/deno.land/x/html_rewriter@v0.1.0-pre.17/vendor/html_rewriter.d.ts +88 -0
  158. package/src/templates/vendor/deno.land/x/html_rewriter@v0.1.0-pre.17/vendor/html_rewriter.js +974 -0
  159. package/src/templates/vendor/deno.land/x/path_to_regexp@v6.2.1/index.ts +621 -0
  160. package/src/templates/vendor/esm.sh/v91/next@12.2.5/deno/dist/compiled/cookie.js +13 -0
  161. package/src/templates/vendor/esm.sh/v91/next@12.2.5/deno/dist/server/web/spec-extension/request.js +12 -0
  162. package/src/templates/vendor/esm.sh/v91/next@12.2.5/deno/dist/server/web/spec-extension/response.js +5 -0
  163. package/src/templates/vendor/import_map.json +13 -0
  164. package/src/templates/vendor/raw.githubusercontent.com/worker-tools/resolvable-promise/master/index.ts +50 -0
@@ -0,0 +1,940 @@
1
+ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
2
+ // deno-lint-ignore-file ban-types
3
+ import {
4
+ AssertionError,
5
+ AssertionErrorConstructorOptions,
6
+ } from "./assertion_error.ts";
7
+ import * as asserts from "../testing/asserts.ts";
8
+ import { inspect } from "./util.ts";
9
+ import {
10
+ ERR_AMBIGUOUS_ARGUMENT,
11
+ ERR_INVALID_ARG_TYPE,
12
+ ERR_INVALID_ARG_VALUE,
13
+ ERR_INVALID_RETURN_VALUE,
14
+ ERR_MISSING_ARGS,
15
+ } from "./internal/errors.ts";
16
+ import { isDeepEqual } from "./internal/util/comparisons.ts";
17
+
18
+ function innerFail(obj: {
19
+ actual?: unknown;
20
+ expected?: unknown;
21
+ message?: string | Error;
22
+ operator?: string;
23
+ }) {
24
+ if (obj.message instanceof Error) {
25
+ throw obj.message;
26
+ }
27
+
28
+ throw new AssertionError({
29
+ actual: obj.actual,
30
+ expected: obj.expected,
31
+ message: obj.message,
32
+ operator: obj.operator,
33
+ });
34
+ }
35
+
36
+ interface ExtendedAssertionErrorConstructorOptions
37
+ extends AssertionErrorConstructorOptions {
38
+ generatedMessage?: boolean;
39
+ }
40
+
41
+ // TODO(uki00a): This function is a workaround for setting the `generatedMessage` property flexibly.
42
+ function createAssertionError(
43
+ options: ExtendedAssertionErrorConstructorOptions,
44
+ ): AssertionError {
45
+ const error = new AssertionError(options);
46
+ if (options.generatedMessage) {
47
+ error.generatedMessage = true;
48
+ }
49
+ return error;
50
+ }
51
+
52
+ /** Converts the std assertion error to node.js assertion error */
53
+ function toNode(
54
+ fn: () => void,
55
+ opts?: {
56
+ actual: unknown;
57
+ expected: unknown;
58
+ message?: string | Error;
59
+ operator?: string;
60
+ },
61
+ ) {
62
+ const { operator, message, actual, expected } = opts || {};
63
+ try {
64
+ fn();
65
+ } catch (e) {
66
+ if (e instanceof asserts.AssertionError) {
67
+ if (typeof message === "string") {
68
+ throw new AssertionError({
69
+ operator,
70
+ message,
71
+ actual,
72
+ expected,
73
+ });
74
+ } else if (message instanceof Error) {
75
+ throw message;
76
+ } else {
77
+ throw new AssertionError({
78
+ operator,
79
+ message: e.message,
80
+ actual,
81
+ expected,
82
+ });
83
+ }
84
+ }
85
+ throw e;
86
+ }
87
+ }
88
+
89
+ function assert(actual: unknown, message?: string | Error): asserts actual {
90
+ if (arguments.length === 0) {
91
+ throw new AssertionError({
92
+ message: "No value argument passed to `assert.ok()`",
93
+ });
94
+ }
95
+ toNode(
96
+ () => asserts.assert(actual),
97
+ { message, actual, expected: true },
98
+ );
99
+ }
100
+ const ok = assert;
101
+
102
+ function throws(
103
+ fn: () => void,
104
+ error?: RegExp | Function | Error,
105
+ message?: string,
106
+ ) {
107
+ // Check arg types
108
+ if (typeof fn !== "function") {
109
+ throw new ERR_INVALID_ARG_TYPE("fn", "function", fn);
110
+ }
111
+ if (
112
+ typeof error === "object" && error !== null &&
113
+ Object.getPrototypeOf(error) === Object.prototype &&
114
+ Object.keys(error).length === 0
115
+ ) {
116
+ // error is an empty object
117
+ throw new ERR_INVALID_ARG_VALUE(
118
+ "error",
119
+ error,
120
+ "may not be an empty object",
121
+ );
122
+ }
123
+ if (typeof message === "string") {
124
+ if (
125
+ !(error instanceof RegExp) && typeof error !== "function" &&
126
+ !(error instanceof Error) && typeof error !== "object"
127
+ ) {
128
+ throw new ERR_INVALID_ARG_TYPE("error", [
129
+ "Function",
130
+ "Error",
131
+ "RegExp",
132
+ "Object",
133
+ ], error);
134
+ }
135
+ } else {
136
+ if (
137
+ typeof error !== "undefined" && typeof error !== "string" &&
138
+ !(error instanceof RegExp) && typeof error !== "function" &&
139
+ !(error instanceof Error) && typeof error !== "object"
140
+ ) {
141
+ throw new ERR_INVALID_ARG_TYPE("error", [
142
+ "Function",
143
+ "Error",
144
+ "RegExp",
145
+ "Object",
146
+ ], error);
147
+ }
148
+ }
149
+
150
+ // Checks test function
151
+ try {
152
+ fn();
153
+ } catch (e) {
154
+ if (
155
+ validateThrownError(e, error, message, {
156
+ operator: throws,
157
+ })
158
+ ) {
159
+ return;
160
+ }
161
+ }
162
+ if (message) {
163
+ let msg = `Missing expected exception: ${message}`;
164
+ if (typeof error === "function" && error?.name) {
165
+ msg = `Missing expected exception (${error.name}): ${message}`;
166
+ }
167
+ throw new AssertionError({
168
+ message: msg,
169
+ operator: "throws",
170
+ actual: undefined,
171
+ expected: error,
172
+ });
173
+ } else if (typeof error === "string") {
174
+ // Use case of throws(fn, message)
175
+ throw new AssertionError({
176
+ message: `Missing expected exception: ${error}`,
177
+ operator: "throws",
178
+ actual: undefined,
179
+ expected: undefined,
180
+ });
181
+ } else if (typeof error === "function" && error?.prototype !== undefined) {
182
+ throw new AssertionError({
183
+ message: `Missing expected exception (${error.name}).`,
184
+ operator: "throws",
185
+ actual: undefined,
186
+ expected: error,
187
+ });
188
+ } else {
189
+ throw new AssertionError({
190
+ message: "Missing expected exception.",
191
+ operator: "throws",
192
+ actual: undefined,
193
+ expected: error,
194
+ });
195
+ }
196
+ }
197
+
198
+ function doesNotThrow(
199
+ fn: () => void,
200
+ message?: string,
201
+ ): void;
202
+ function doesNotThrow(
203
+ fn: () => void,
204
+ error?: Function,
205
+ message?: string | Error,
206
+ ): void;
207
+ function doesNotThrow(
208
+ fn: () => void,
209
+ error?: RegExp,
210
+ message?: string,
211
+ ): void;
212
+ function doesNotThrow(
213
+ fn: () => void,
214
+ expected?: Function | RegExp | string,
215
+ message?: string | Error,
216
+ ) {
217
+ // Check arg type
218
+ if (typeof fn !== "function") {
219
+ throw new ERR_INVALID_ARG_TYPE("fn", "function", fn);
220
+ } else if (
221
+ !(expected instanceof RegExp) && typeof expected !== "function" &&
222
+ typeof expected !== "string" && typeof expected !== "undefined"
223
+ ) {
224
+ throw new ERR_INVALID_ARG_TYPE("expected", ["Function", "RegExp"], fn);
225
+ }
226
+
227
+ // Checks test function
228
+ try {
229
+ fn();
230
+ } catch (e) {
231
+ gotUnwantedException(e, expected, message, doesNotThrow);
232
+ }
233
+ }
234
+
235
+ function equal(
236
+ actual: unknown,
237
+ expected: unknown,
238
+ message?: string | Error,
239
+ ) {
240
+ if (arguments.length < 2) {
241
+ throw new ERR_MISSING_ARGS("actual", "expected");
242
+ }
243
+
244
+ if (actual == expected) {
245
+ return;
246
+ }
247
+
248
+ if (Number.isNaN(actual) && Number.isNaN(expected)) {
249
+ return;
250
+ }
251
+
252
+ if (typeof message === "string") {
253
+ throw new AssertionError({
254
+ message,
255
+ });
256
+ } else if (message instanceof Error) {
257
+ throw message;
258
+ }
259
+
260
+ toNode(
261
+ () => asserts.assertStrictEquals(actual, expected),
262
+ {
263
+ message: message || `${actual} == ${expected}`,
264
+ operator: "==",
265
+ actual,
266
+ expected,
267
+ },
268
+ );
269
+ }
270
+ function notEqual(
271
+ actual: unknown,
272
+ expected: unknown,
273
+ message?: string | Error,
274
+ ) {
275
+ if (arguments.length < 2) {
276
+ throw new ERR_MISSING_ARGS("actual", "expected");
277
+ }
278
+
279
+ if (Number.isNaN(actual) && Number.isNaN(expected)) {
280
+ throw new AssertionError({
281
+ message: `${actual} != ${expected}`,
282
+ operator: "!=",
283
+ actual,
284
+ expected,
285
+ });
286
+ }
287
+ if (actual != expected) {
288
+ return;
289
+ }
290
+
291
+ if (typeof message === "string") {
292
+ throw new AssertionError({
293
+ message,
294
+ });
295
+ } else if (message instanceof Error) {
296
+ throw message;
297
+ }
298
+
299
+ toNode(
300
+ () => asserts.assertNotStrictEquals(actual, expected),
301
+ {
302
+ message: message || `${actual} != ${expected}`,
303
+ operator: "!=",
304
+ actual,
305
+ expected,
306
+ },
307
+ );
308
+ }
309
+ function strictEqual(
310
+ actual: unknown,
311
+ expected: unknown,
312
+ message?: string | Error,
313
+ ) {
314
+ if (arguments.length < 2) {
315
+ throw new ERR_MISSING_ARGS("actual", "expected");
316
+ }
317
+
318
+ toNode(
319
+ () => asserts.assertStrictEquals(actual, expected),
320
+ { message, operator: "strictEqual", actual, expected },
321
+ );
322
+ }
323
+ function notStrictEqual(
324
+ actual: unknown,
325
+ expected: unknown,
326
+ message?: string | Error,
327
+ ) {
328
+ if (arguments.length < 2) {
329
+ throw new ERR_MISSING_ARGS("actual", "expected");
330
+ }
331
+
332
+ toNode(
333
+ () => asserts.assertNotStrictEquals(actual, expected),
334
+ { message, actual, expected, operator: "notStrictEqual" },
335
+ );
336
+ }
337
+
338
+ function deepEqual(
339
+ actual: unknown,
340
+ expected: unknown,
341
+ message?: string | Error,
342
+ ) {
343
+ if (arguments.length < 2) {
344
+ throw new ERR_MISSING_ARGS("actual", "expected");
345
+ }
346
+
347
+ if (!isDeepEqual(actual, expected)) {
348
+ innerFail({ actual, expected, message, operator: "deepEqual" });
349
+ }
350
+ }
351
+ function notDeepEqual(
352
+ actual: unknown,
353
+ expected: unknown,
354
+ message?: string | Error,
355
+ ) {
356
+ if (arguments.length < 2) {
357
+ throw new ERR_MISSING_ARGS("actual", "expected");
358
+ }
359
+
360
+ if (isDeepEqual(actual, expected)) {
361
+ innerFail({ actual, expected, message, operator: "notDeepEqual" });
362
+ }
363
+ }
364
+ function deepStrictEqual(
365
+ actual: unknown,
366
+ expected: unknown,
367
+ message?: string | Error,
368
+ ) {
369
+ if (arguments.length < 2) {
370
+ throw new ERR_MISSING_ARGS("actual", "expected");
371
+ }
372
+
373
+ toNode(
374
+ () => asserts.assertEquals(actual, expected),
375
+ { message, actual, expected, operator: "deepStrictEqual" },
376
+ );
377
+ }
378
+ function notDeepStrictEqual(
379
+ actual: unknown,
380
+ expected: unknown,
381
+ message?: string | Error,
382
+ ) {
383
+ if (arguments.length < 2) {
384
+ throw new ERR_MISSING_ARGS("actual", "expected");
385
+ }
386
+
387
+ toNode(
388
+ () => asserts.assertNotEquals(actual, expected),
389
+ { message, actual, expected, operator: "deepNotStrictEqual" },
390
+ );
391
+ }
392
+
393
+ function fail(message?: string | Error): never {
394
+ if (typeof message === "string" || message == null) {
395
+ throw createAssertionError({
396
+ message: message ?? "Failed",
397
+ operator: "fail",
398
+ generatedMessage: message == null,
399
+ });
400
+ } else {
401
+ throw message;
402
+ }
403
+ }
404
+ function match(actual: string, regexp: RegExp, message?: string | Error) {
405
+ if (arguments.length < 2) {
406
+ throw new ERR_MISSING_ARGS("actual", "regexp");
407
+ }
408
+ if (!(regexp instanceof RegExp)) {
409
+ throw new ERR_INVALID_ARG_TYPE("regexp", "RegExp", regexp);
410
+ }
411
+
412
+ toNode(
413
+ () => asserts.assertMatch(actual, regexp),
414
+ { message, actual, expected: regexp, operator: "match" },
415
+ );
416
+ }
417
+
418
+ function doesNotMatch(
419
+ string: string,
420
+ regexp: RegExp,
421
+ message?: string | Error,
422
+ ) {
423
+ if (arguments.length < 2) {
424
+ throw new ERR_MISSING_ARGS("string", "regexp");
425
+ }
426
+ if (!(regexp instanceof RegExp)) {
427
+ throw new ERR_INVALID_ARG_TYPE("regexp", "RegExp", regexp);
428
+ }
429
+ if (typeof string !== "string") {
430
+ if (message instanceof Error) {
431
+ throw message;
432
+ }
433
+ throw new AssertionError({
434
+ message: message ||
435
+ `The "string" argument must be of type string. Received type ${typeof string} (${
436
+ inspect(string)
437
+ })`,
438
+ actual: string,
439
+ expected: regexp,
440
+ operator: "doesNotMatch",
441
+ });
442
+ }
443
+
444
+ toNode(
445
+ () => asserts.assertNotMatch(string, regexp),
446
+ { message, actual: string, expected: regexp, operator: "doesNotMatch" },
447
+ );
448
+ }
449
+
450
+ function strict(actual: unknown, message?: string | Error): asserts actual {
451
+ if (arguments.length === 0) {
452
+ throw new AssertionError({
453
+ message: "No value argument passed to `assert.ok()`",
454
+ });
455
+ }
456
+ assert(actual, message);
457
+ }
458
+
459
+ function rejects(
460
+ // deno-lint-ignore no-explicit-any
461
+ asyncFn: Promise<any> | (() => Promise<any>),
462
+ error?: RegExp | Function | Error,
463
+ ): Promise<void>;
464
+
465
+ function rejects(
466
+ // deno-lint-ignore no-explicit-any
467
+ asyncFn: Promise<any> | (() => Promise<any>),
468
+ message?: string,
469
+ ): Promise<void>;
470
+
471
+ // Intentionally avoid using async/await because test-assert-async.js requires it
472
+ function rejects(
473
+ // deno-lint-ignore no-explicit-any
474
+ asyncFn: Promise<any> | (() => Promise<any>),
475
+ error?: RegExp | Function | Error | string,
476
+ message?: string,
477
+ ) {
478
+ let promise: Promise<void>;
479
+ if (typeof asyncFn === "function") {
480
+ try {
481
+ promise = asyncFn();
482
+ } catch (err) {
483
+ // If `asyncFn` throws an error synchronously, this function returns a rejected promise.
484
+ return Promise.reject(err);
485
+ }
486
+
487
+ if (!isValidThenable(promise)) {
488
+ return Promise.reject(
489
+ new ERR_INVALID_RETURN_VALUE(
490
+ "instance of Promise",
491
+ "promiseFn",
492
+ promise,
493
+ ),
494
+ );
495
+ }
496
+ } else if (!isValidThenable(asyncFn)) {
497
+ return Promise.reject(
498
+ new ERR_INVALID_ARG_TYPE("promiseFn", ["function", "Promise"], asyncFn),
499
+ );
500
+ } else {
501
+ promise = asyncFn;
502
+ }
503
+
504
+ function onFulfilled() {
505
+ let message = "Missing expected rejection";
506
+ if (typeof error === "string") {
507
+ message += `: ${error}`;
508
+ } else if (typeof error === "function" && error.prototype !== undefined) {
509
+ message += ` (${error.name}).`;
510
+ } else {
511
+ message += ".";
512
+ }
513
+ return Promise.reject(createAssertionError({
514
+ message,
515
+ operator: "rejects",
516
+ generatedMessage: true,
517
+ }));
518
+ }
519
+
520
+ // deno-lint-ignore camelcase
521
+ function rejects_onRejected(e: Error) { // TODO(uki00a): In order to `test-assert-async.js` pass, intentionally adds `rejects_` as a prefix.
522
+ if (
523
+ validateThrownError(e, error, message, {
524
+ operator: rejects,
525
+ validationFunctionName: "validate",
526
+ })
527
+ ) {
528
+ return;
529
+ }
530
+ }
531
+
532
+ return promise.then(onFulfilled, rejects_onRejected);
533
+ }
534
+
535
+ function doesNotReject(
536
+ // deno-lint-ignore no-explicit-any
537
+ asyncFn: Promise<any> | (() => Promise<any>),
538
+ error?: RegExp | Function,
539
+ ): Promise<void>;
540
+
541
+ function doesNotReject(
542
+ // deno-lint-ignore no-explicit-any
543
+ asyncFn: Promise<any> | (() => Promise<any>),
544
+ message?: string,
545
+ ): Promise<void>;
546
+
547
+ // Intentionally avoid using async/await because test-assert-async.js requires it
548
+ function doesNotReject(
549
+ // deno-lint-ignore no-explicit-any
550
+ asyncFn: Promise<any> | (() => Promise<any>),
551
+ error?: RegExp | Function | string,
552
+ message?: string,
553
+ ) {
554
+ // deno-lint-ignore no-explicit-any
555
+ let promise: Promise<any>;
556
+ if (typeof asyncFn === "function") {
557
+ try {
558
+ const value = asyncFn();
559
+ if (!isValidThenable(value)) {
560
+ return Promise.reject(
561
+ new ERR_INVALID_RETURN_VALUE(
562
+ "instance of Promise",
563
+ "promiseFn",
564
+ value,
565
+ ),
566
+ );
567
+ }
568
+ promise = value;
569
+ } catch (e) {
570
+ // If `asyncFn` throws an error synchronously, this function returns a rejected promise.
571
+ return Promise.reject(e);
572
+ }
573
+ } else if (!isValidThenable(asyncFn)) {
574
+ return Promise.reject(
575
+ new ERR_INVALID_ARG_TYPE("promiseFn", ["function", "Promise"], asyncFn),
576
+ );
577
+ } else {
578
+ promise = asyncFn;
579
+ }
580
+
581
+ return promise.then(
582
+ () => {},
583
+ (e) => gotUnwantedException(e, error, message, doesNotReject),
584
+ );
585
+ }
586
+
587
+ function gotUnwantedException(
588
+ // deno-lint-ignore no-explicit-any
589
+ e: any,
590
+ expected: RegExp | Function | string | null | undefined,
591
+ message: string | Error | null | undefined,
592
+ operator: Function,
593
+ ): never {
594
+ if (typeof expected === "string") {
595
+ // The use case of doesNotThrow(fn, message);
596
+ throw new AssertionError({
597
+ message:
598
+ `Got unwanted exception: ${expected}\nActual message: "${e.message}"`,
599
+ operator: operator.name,
600
+ });
601
+ } else if (
602
+ typeof expected === "function" && expected.prototype !== undefined
603
+ ) {
604
+ // The use case of doesNotThrow(fn, Error, message);
605
+ if (e instanceof expected) {
606
+ let msg = `Got unwanted exception: ${e.constructor?.name}`;
607
+ if (message) {
608
+ msg += ` ${String(message)}`;
609
+ }
610
+ throw new AssertionError({
611
+ message: msg,
612
+ operator: operator.name,
613
+ });
614
+ } else if (expected.prototype instanceof Error) {
615
+ throw e;
616
+ } else {
617
+ const result = expected(e);
618
+ if (result === true) {
619
+ let msg = `Got unwanted rejection.\nActual message: "${e.message}"`;
620
+ if (message) {
621
+ msg += ` ${String(message)}`;
622
+ }
623
+ throw new AssertionError({
624
+ message: msg,
625
+ operator: operator.name,
626
+ });
627
+ }
628
+ }
629
+ throw e;
630
+ } else {
631
+ if (message) {
632
+ throw new AssertionError({
633
+ message: `Got unwanted exception: ${message}\nActual message: "${
634
+ e ? e.message : String(e)
635
+ }"`,
636
+ operator: operator.name,
637
+ });
638
+ }
639
+ throw new AssertionError({
640
+ message: `Got unwanted exception.\nActual message: "${
641
+ e ? e.message : String(e)
642
+ }"`,
643
+ operator: operator.name,
644
+ });
645
+ }
646
+ }
647
+
648
+ /**
649
+ * Throws `value` if the value is not `null` or `undefined`.
650
+ *
651
+ * @param err
652
+ */
653
+ // deno-lint-ignore no-explicit-any
654
+ function ifError(err: any) {
655
+ if (err !== null && err !== undefined) {
656
+ let message = "ifError got unwanted exception: ";
657
+
658
+ if (typeof err === "object" && typeof err.message === "string") {
659
+ if (err.message.length === 0 && err.constructor) {
660
+ message += err.constructor.name;
661
+ } else {
662
+ message += err.message;
663
+ }
664
+ } else {
665
+ message += inspect(err);
666
+ }
667
+
668
+ const newErr = new AssertionError({
669
+ actual: err,
670
+ expected: null,
671
+ operator: "ifError",
672
+ message,
673
+ stackStartFn: ifError,
674
+ });
675
+
676
+ // Make sure we actually have a stack trace!
677
+ const origStack = err.stack;
678
+
679
+ if (typeof origStack === "string") {
680
+ // This will remove any duplicated frames from the error frames taken
681
+ // from within `ifError` and add the original error frames to the newly
682
+ // created ones.
683
+ const tmp2 = origStack.split("\n");
684
+ tmp2.shift();
685
+
686
+ // Filter all frames existing in err.stack.
687
+ let tmp1 = newErr!.stack?.split("\n");
688
+
689
+ for (const errFrame of tmp2) {
690
+ // Find the first occurrence of the frame.
691
+ const pos = tmp1?.indexOf(errFrame);
692
+
693
+ if (pos !== -1) {
694
+ // Only keep new frames.
695
+ tmp1 = tmp1?.slice(0, pos);
696
+
697
+ break;
698
+ }
699
+ }
700
+
701
+ newErr.stack = `${tmp1?.join("\n")}\n${tmp2.join("\n")}`;
702
+ }
703
+
704
+ throw newErr;
705
+ }
706
+ }
707
+
708
+ interface ValidateThrownErrorOptions {
709
+ operator: Function;
710
+ validationFunctionName?: string;
711
+ }
712
+
713
+ function validateThrownError(
714
+ // deno-lint-ignore no-explicit-any
715
+ e: any,
716
+ error: RegExp | Function | Error | string | null | undefined,
717
+ message: string | undefined | null,
718
+ options: ValidateThrownErrorOptions,
719
+ ): boolean {
720
+ if (typeof error === "string") {
721
+ if (message != null) {
722
+ throw new ERR_INVALID_ARG_TYPE(
723
+ "error",
724
+ ["Object", "Error", "Function", "RegExp"],
725
+ error,
726
+ );
727
+ } else if (typeof e === "object" && e !== null) {
728
+ if (e.message === error) {
729
+ throw new ERR_AMBIGUOUS_ARGUMENT(
730
+ "error/message",
731
+ `The error message "${e.message}" is identical to the message.`,
732
+ );
733
+ }
734
+ } else if (e === error) {
735
+ throw new ERR_AMBIGUOUS_ARGUMENT(
736
+ "error/message",
737
+ `The error "${e}" is identical to the message.`,
738
+ );
739
+ }
740
+ message = error;
741
+ error = undefined;
742
+ }
743
+ if (
744
+ error instanceof Function && error.prototype !== undefined &&
745
+ error.prototype instanceof Error
746
+ ) {
747
+ // error is a constructor
748
+ if (e instanceof error) {
749
+ return true;
750
+ }
751
+ throw createAssertionError({
752
+ message:
753
+ `The error is expected to be an instance of "${error.name}". Received "${e?.constructor?.name}"\n\nError message:\n\n${e?.message}`,
754
+ actual: e,
755
+ expected: error,
756
+ operator: options.operator.name,
757
+ generatedMessage: true,
758
+ });
759
+ }
760
+ if (error instanceof Function) {
761
+ const received = error(e);
762
+ if (received === true) {
763
+ return true;
764
+ }
765
+ throw createAssertionError({
766
+ message: `The ${
767
+ options.validationFunctionName
768
+ ? `"${options.validationFunctionName}" validation`
769
+ : "validation"
770
+ } function is expected to return "true". Received ${
771
+ inspect(received)
772
+ }\n\nCaught error:\n\n${e}`,
773
+ actual: e,
774
+ expected: error,
775
+ operator: options.operator.name,
776
+ generatedMessage: true,
777
+ });
778
+ }
779
+ if (error instanceof RegExp) {
780
+ if (error.test(String(e))) {
781
+ return true;
782
+ }
783
+ throw createAssertionError({
784
+ message:
785
+ `The input did not match the regular expression ${error.toString()}. Input:\n\n'${
786
+ String(e)
787
+ }'\n`,
788
+ actual: e,
789
+ expected: error,
790
+ operator: options.operator.name,
791
+ generatedMessage: true,
792
+ });
793
+ }
794
+ if (typeof error === "object" && error !== null) {
795
+ const keys = Object.keys(error);
796
+ if (error instanceof Error) {
797
+ keys.push("name", "message");
798
+ }
799
+ for (const k of keys) {
800
+ if (e == null) {
801
+ throw createAssertionError({
802
+ message: message || "object is expected to thrown, but got null",
803
+ actual: e,
804
+ expected: error,
805
+ operator: options.operator.name,
806
+ generatedMessage: message == null,
807
+ });
808
+ }
809
+
810
+ if (typeof e === "string") {
811
+ throw createAssertionError({
812
+ message: message ||
813
+ `object is expected to thrown, but got string: ${e}`,
814
+ actual: e,
815
+ expected: error,
816
+ operator: options.operator.name,
817
+ generatedMessage: message == null,
818
+ });
819
+ }
820
+ if (typeof e === "number") {
821
+ throw createAssertionError({
822
+ message: message ||
823
+ `object is expected to thrown, but got number: ${e}`,
824
+ actual: e,
825
+ expected: error,
826
+ operator: options.operator.name,
827
+ generatedMessage: message == null,
828
+ });
829
+ }
830
+ if (!(k in e)) {
831
+ throw createAssertionError({
832
+ message: message || `A key in the expected object is missing: ${k}`,
833
+ actual: e,
834
+ expected: error,
835
+ operator: options.operator.name,
836
+ generatedMessage: message == null,
837
+ });
838
+ }
839
+ const actual = e[k];
840
+ // deno-lint-ignore no-explicit-any
841
+ const expected = (error as any)[k];
842
+ if (typeof actual === "string" && expected instanceof RegExp) {
843
+ match(actual, expected);
844
+ } else {
845
+ deepStrictEqual(actual, expected);
846
+ }
847
+ }
848
+ return true;
849
+ }
850
+ if (typeof error === "undefined") {
851
+ return true;
852
+ }
853
+ throw createAssertionError({
854
+ message: `Invalid expectation: ${error}`,
855
+ operator: options.operator.name,
856
+ generatedMessage: true,
857
+ });
858
+ }
859
+
860
+ // deno-lint-ignore no-explicit-any
861
+ function isValidThenable(maybeThennable: any): boolean {
862
+ if (!maybeThennable) {
863
+ return false;
864
+ }
865
+
866
+ if (maybeThennable instanceof Promise) {
867
+ return true;
868
+ }
869
+
870
+ const isThenable = typeof maybeThennable.then === "function" &&
871
+ typeof maybeThennable.catch === "function";
872
+
873
+ return isThenable && typeof maybeThennable !== "function";
874
+ }
875
+
876
+ Object.assign(strict, {
877
+ AssertionError,
878
+ deepEqual: deepStrictEqual,
879
+ deepStrictEqual,
880
+ doesNotMatch,
881
+ doesNotReject,
882
+ doesNotThrow,
883
+ equal: strictEqual,
884
+ fail,
885
+ ifError,
886
+ match,
887
+ notDeepEqual: notDeepStrictEqual,
888
+ notDeepStrictEqual,
889
+ notEqual: notStrictEqual,
890
+ notStrictEqual,
891
+ ok,
892
+ rejects,
893
+ strict,
894
+ strictEqual,
895
+ throws,
896
+ });
897
+
898
+ export default Object.assign(assert, {
899
+ AssertionError,
900
+ deepEqual,
901
+ deepStrictEqual,
902
+ doesNotMatch,
903
+ doesNotReject,
904
+ doesNotThrow,
905
+ equal,
906
+ fail,
907
+ ifError,
908
+ match,
909
+ notDeepEqual,
910
+ notDeepStrictEqual,
911
+ notEqual,
912
+ notStrictEqual,
913
+ ok,
914
+ rejects,
915
+ strict,
916
+ strictEqual,
917
+ throws,
918
+ });
919
+
920
+ export {
921
+ AssertionError,
922
+ deepEqual,
923
+ deepStrictEqual,
924
+ doesNotMatch,
925
+ doesNotReject,
926
+ doesNotThrow,
927
+ equal,
928
+ fail,
929
+ ifError,
930
+ match,
931
+ notDeepEqual,
932
+ notDeepStrictEqual,
933
+ notEqual,
934
+ notStrictEqual,
935
+ ok,
936
+ rejects,
937
+ strict,
938
+ strictEqual,
939
+ throws,
940
+ };