wrangler 0.0.0-e178d6fb → 0.0.0-e1c2f5b9
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.
- package/README.md +16 -2
- package/bin/wrangler.js +31 -11
- package/miniflare-dist/index.mjs +1340 -330
- package/package.json +40 -13
- package/src/__tests__/access.test.ts +25 -0
- package/src/__tests__/api-dev.test.ts +238 -0
- package/src/__tests__/api-devregistry.test.js +64 -0
- package/src/__tests__/api.test.ts +80 -0
- package/src/__tests__/configuration.test.ts +683 -470
- package/src/__tests__/d1.test.ts +123 -0
- package/src/__tests__/delete.test.ts +263 -0
- package/src/__tests__/deployments.test.ts +105 -0
- package/src/__tests__/dev.test.tsx +453 -70
- package/src/__tests__/dialogs.test.tsx +40 -0
- package/src/__tests__/generate.test.ts +235 -0
- package/src/__tests__/get-host-from-url.test.ts +16 -0
- package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
- package/src/__tests__/helpers/mock-cfetch.ts +92 -26
- package/src/__tests__/helpers/mock-console.ts +11 -2
- package/src/__tests__/helpers/mock-dialogs.ts +1 -1
- package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -0
- package/src/__tests__/helpers/mock-known-routes.ts +7 -0
- package/src/__tests__/helpers/mock-kv.ts +1 -1
- package/src/__tests__/helpers/mock-oauth-flow.ts +74 -53
- package/src/__tests__/helpers/mock-process.ts +8 -13
- package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
- package/src/__tests__/helpers/msw/handlers/deployments.ts +59 -0
- package/src/__tests__/helpers/msw/handlers/namespaces.ts +104 -0
- package/src/__tests__/helpers/msw/handlers/oauth.ts +31 -0
- package/src/__tests__/helpers/msw/handlers/r2.ts +80 -0
- package/src/__tests__/helpers/msw/handlers/script.ts +75 -0
- package/src/__tests__/helpers/msw/handlers/user.ts +63 -0
- package/src/__tests__/helpers/msw/handlers/zones.ts +22 -0
- package/src/__tests__/helpers/msw/index.ts +21 -0
- package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
- package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
- package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
- package/src/__tests__/helpers/worker-scripts/parent-worker.js +8 -0
- package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
- package/src/__tests__/index.test.ts +103 -97
- package/src/__tests__/init.test.ts +1484 -382
- package/src/__tests__/jest.setup.ts +88 -5
- package/src/__tests__/kv.test.ts +655 -540
- package/src/__tests__/logout.test.ts +47 -0
- package/src/__tests__/metrics.test.ts +95 -45
- package/src/__tests__/middleware.scheduled.test.ts +145 -0
- package/src/__tests__/middleware.test.ts +750 -0
- package/src/__tests__/pages-deployment-tail.test.ts +884 -0
- package/src/__tests__/pages.test.ts +1301 -119
- package/src/__tests__/paths.test.ts +39 -0
- package/src/__tests__/publish.test.ts +2266 -1180
- package/src/__tests__/pubsub.test.ts +211 -88
- package/src/__tests__/queues.test.ts +522 -0
- package/src/__tests__/r2.test.ts +363 -203
- package/src/__tests__/secret.test.ts +261 -59
- package/src/__tests__/tail.test.ts +352 -151
- package/src/__tests__/test-old-node-version.js +3 -3
- package/src/__tests__/tsconfig-sanity.ts +12 -0
- package/src/__tests__/tsconfig.json +8 -0
- package/src/__tests__/tsconfig.tsbuildinfo +1 -0
- package/src/__tests__/type-generation.test.ts +233 -0
- package/src/__tests__/user.test.ts +59 -73
- package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
- package/src/__tests__/validate-dev-props.test.ts +56 -0
- package/src/__tests__/whoami.test.tsx +114 -66
- package/src/__tests__/worker-namespace.test.ts +154 -155
- package/src/api/dev.ts +170 -38
- package/src/api/index.ts +1 -0
- package/src/bundle-reporter.tsx +41 -2
- package/src/bundle.ts +668 -81
- package/src/cfetch/index.ts +40 -3
- package/src/cfetch/internal.ts +144 -32
- package/src/cli.ts +4 -3
- package/src/config/config.ts +27 -3
- package/src/config/environment.ts +131 -7
- package/src/config/index.ts +128 -8
- package/src/config/validation-helpers.ts +19 -6
- package/src/config/validation.ts +411 -14
- package/src/config-cache.ts +3 -2
- package/src/create-worker-preview.ts +31 -6
- package/src/create-worker-upload-form.ts +84 -22
- package/src/d1/backups.tsx +223 -0
- package/src/d1/constants.ts +2 -0
- package/src/d1/create.tsx +63 -0
- package/src/d1/delete.tsx +56 -0
- package/src/d1/execute.tsx +352 -0
- package/src/d1/formatTimeAgo.ts +14 -0
- package/src/d1/index.ts +101 -0
- package/src/d1/list.tsx +48 -0
- package/src/d1/migrations/apply.tsx +196 -0
- package/src/d1/migrations/create.tsx +77 -0
- package/src/d1/migrations/helpers.ts +147 -0
- package/src/d1/migrations/index.tsx +3 -0
- package/src/d1/migrations/list.tsx +79 -0
- package/src/d1/migrations/options.ts +18 -0
- package/src/d1/options.ts +22 -0
- package/src/d1/types.tsx +24 -0
- package/src/d1/utils.ts +48 -0
- package/src/delete.ts +108 -0
- package/src/deployments.ts +83 -0
- package/src/deprecated/index.ts +145 -0
- package/src/dev/dev-vars.ts +11 -8
- package/src/dev/dev.tsx +220 -58
- package/src/dev/get-local-persistence-path.tsx +31 -0
- package/src/dev/local.tsx +740 -181
- package/src/dev/remote.tsx +340 -123
- package/src/dev/start-server.ts +543 -0
- package/src/dev/use-esbuild.ts +61 -7
- package/src/dev/validate-dev-props.ts +31 -0
- package/src/dev-registry.tsx +201 -0
- package/src/dev.tsx +614 -258
- package/src/dialogs.tsx +41 -8
- package/src/{worker-namespace.ts → dispatch-namespace.ts} +23 -22
- package/src/docs/index.ts +97 -0
- package/src/entry.ts +3 -2
- package/src/environment-variables/factory.ts +88 -0
- package/src/environment-variables/misc-variables.ts +30 -0
- package/src/generate/index.ts +300 -0
- package/src/git-client.ts +100 -7
- package/src/index.tsx +249 -1560
- package/src/init.ts +626 -150
- package/src/inspect.ts +137 -32
- package/src/{metrics/is-ci.ts → is-ci.ts} +0 -0
- package/src/is-interactive.ts +4 -0
- package/src/jest.d.ts +4 -0
- package/src/{kv.ts → kv/helpers.ts} +3 -3
- package/src/kv/index.ts +596 -0
- package/src/logger.ts +27 -8
- package/src/metrics/index.ts +1 -0
- package/src/metrics/metrics-config.ts +4 -4
- package/src/metrics/metrics-dispatcher.ts +1 -0
- package/src/metrics/metrics-usage-headers.ts +24 -0
- package/src/metrics/send-event.ts +13 -8
- package/src/miniflare-cli/assets.ts +172 -465
- package/src/miniflare-cli/index.ts +149 -24
- package/src/miniflare-cli/tsconfig.json +9 -0
- package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
- package/src/miniflare-cli/types.ts +11 -0
- package/src/module-collection.ts +12 -3
- package/src/pages/build.tsx +108 -42
- package/src/pages/constants.ts +11 -0
- package/src/pages/deployment-tails.tsx +284 -0
- package/src/pages/deployments.tsx +9 -31
- package/src/pages/dev.tsx +417 -108
- package/src/pages/errors.ts +66 -0
- package/src/pages/functions/buildPlugin.ts +86 -84
- package/src/pages/functions/buildWorker.ts +121 -106
- package/src/pages/functions/routes-consolidation.test.ts +250 -0
- package/src/pages/functions/routes-consolidation.ts +73 -0
- package/src/pages/functions/routes-transformation.test.ts +282 -0
- package/src/pages/functions/routes-transformation.ts +115 -0
- package/src/pages/functions/routes-validation.test.ts +403 -0
- package/src/pages/functions/routes-validation.ts +202 -0
- package/src/pages/functions/tsconfig.json +8 -0
- package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
- package/src/pages/functions.tsx +82 -0
- package/src/pages/hash.tsx +13 -0
- package/src/pages/index.tsx +73 -55
- package/src/pages/projects.tsx +9 -3
- package/src/pages/prompt-select-project.tsx +31 -0
- package/src/pages/publish.tsx +183 -60
- package/src/pages/types.ts +1 -0
- package/src/pages/upload.tsx +107 -56
- package/src/pages/utils.ts +13 -2
- package/src/paths.ts +49 -4
- package/src/proxy.ts +375 -157
- package/src/publish/index.ts +270 -0
- package/src/{publish.ts → publish/publish.ts} +431 -188
- package/src/pubsub/pubsub-commands.tsx +4 -3
- package/src/queues/cli/commands/consumer/add.ts +71 -0
- package/src/queues/cli/commands/consumer/index.ts +22 -0
- package/src/queues/cli/commands/consumer/remove.ts +38 -0
- package/src/queues/cli/commands/create.ts +25 -0
- package/src/queues/cli/commands/delete.ts +26 -0
- package/src/queues/cli/commands/index.ts +36 -0
- package/src/queues/cli/commands/list.ts +25 -0
- package/src/queues/client.ts +135 -0
- package/src/queues/utils.ts +18 -0
- package/src/r2/constants.ts +4 -0
- package/src/r2/helpers.ts +131 -0
- package/src/r2/index.ts +289 -0
- package/src/routes.ts +140 -0
- package/src/secret/index.ts +379 -0
- package/src/sites.tsx +3 -3
- package/src/tail/createTail.ts +379 -0
- package/src/tail/filters.ts +4 -6
- package/src/tail/index.ts +199 -284
- package/src/tail/printing.ts +43 -3
- package/src/tsconfig-sanity.ts +16 -0
- package/src/type-generation.ts +181 -0
- package/src/user/access.ts +68 -0
- package/src/user/auth-variables.ts +113 -0
- package/src/user/choose-account.tsx +1 -1
- package/src/user/index.ts +0 -1
- package/src/user/user.tsx +116 -49
- package/src/utils/collectKeyValues.ts +14 -0
- package/src/whoami.tsx +80 -2
- package/src/worker.ts +69 -9
- package/src/yargs-types.ts +24 -0
- package/src/zones.ts +124 -9
- package/templates/__tests__/pages-dev-util.test.ts +128 -0
- package/templates/__tests__/tsconfig-sanity.ts +12 -0
- package/templates/__tests__/tsconfig.json +8 -0
- package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
- package/templates/d1-beta-facade.js +205 -0
- package/templates/facade.d.ts +14 -0
- package/templates/first-party-worker-module-facade.ts +19 -0
- package/templates/format-dev-errors.ts +33 -0
- package/templates/init-tests/test-jest-new-worker.js +23 -0
- package/templates/init-tests/test-vitest-new-worker.js +24 -0
- package/templates/init-tests/test-vitest-new-worker.ts +25 -0
- package/templates/middleware/common.ts +62 -0
- package/templates/middleware/loader-modules.ts +82 -0
- package/templates/middleware/loader-sw.ts +233 -0
- package/templates/middleware/middleware-miniflare3-json-error.ts +20 -0
- package/templates/middleware/middleware-pretty-error.ts +40 -0
- package/templates/middleware/middleware-scheduled.ts +15 -0
- package/templates/new-worker.js +1 -1
- package/templates/pages-dev-pipeline.ts +31 -0
- package/templates/pages-dev-util.ts +52 -0
- package/templates/pages-shim.ts +4 -1
- package/templates/pages-template-plugin.ts +21 -5
- package/templates/pages-template-worker.ts +37 -9
- package/templates/{static-asset-facade.js → serve-static-assets.ts} +23 -7
- package/templates/service-bindings-module-facade.js +54 -0
- package/templates/service-bindings-sw-facade.js +42 -0
- package/templates/tsconfig-sanity.ts +11 -0
- package/templates/tsconfig.init.json +106 -0
- package/templates/tsconfig.json +5 -102
- package/templates/tsconfig.tsbuildinfo +1 -0
- package/wrangler-dist/cli.d.ts +621 -42
- package/wrangler-dist/cli.js +144441 -102606
- package/src/environment-variables.ts +0 -35
- package/src/faye-websocket.d.ts +0 -6
- package/src/generate.ts +0 -33
- package/src/miniflare-cli/enum-keys.ts +0 -17
- package/src/preview.ts +0 -31
- package/src/r2.ts +0 -50
- package/src/user/env-vars.ts +0 -46
package/src/config/index.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import dotenv from "dotenv";
|
|
1
3
|
import { findUpSync } from "find-up";
|
|
2
4
|
import { logger } from "../logger";
|
|
3
5
|
import { parseTOML, readFileSync } from "../parse";
|
|
6
|
+
import { removeD1BetaPrefix } from "../worker";
|
|
4
7
|
import { normalizeAndValidateConfig } from "./validation";
|
|
5
8
|
import type { CfWorkerInit } from "../worker";
|
|
6
9
|
import type { Config, RawConfig } from "./config";
|
|
10
|
+
import type { CamelCaseKey } from "yargs";
|
|
7
11
|
|
|
8
12
|
export type {
|
|
9
13
|
Config,
|
|
@@ -84,13 +88,17 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
84
88
|
data_blobs,
|
|
85
89
|
durable_objects,
|
|
86
90
|
kv_namespaces,
|
|
91
|
+
queues,
|
|
92
|
+
d1_databases,
|
|
87
93
|
r2_buckets,
|
|
94
|
+
logfwdr,
|
|
88
95
|
services,
|
|
96
|
+
analytics_engine_datasets,
|
|
89
97
|
text_blobs,
|
|
90
98
|
unsafe,
|
|
91
99
|
vars,
|
|
92
100
|
wasm_modules,
|
|
93
|
-
|
|
101
|
+
dispatch_namespaces,
|
|
94
102
|
} = bindings;
|
|
95
103
|
|
|
96
104
|
if (data_blobs !== undefined && Object.keys(data_blobs).length > 0) {
|
|
@@ -137,6 +145,40 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
137
145
|
});
|
|
138
146
|
}
|
|
139
147
|
|
|
148
|
+
if (queues !== undefined && queues.length > 0) {
|
|
149
|
+
output.push({
|
|
150
|
+
type: "Queues",
|
|
151
|
+
entries: queues.map(({ binding, queue_name }) => {
|
|
152
|
+
return {
|
|
153
|
+
key: binding,
|
|
154
|
+
value: queue_name,
|
|
155
|
+
};
|
|
156
|
+
}),
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (d1_databases !== undefined && d1_databases.length > 0) {
|
|
161
|
+
output.push({
|
|
162
|
+
type: "D1 Databases",
|
|
163
|
+
entries: d1_databases.map(
|
|
164
|
+
({ binding, database_name, database_id, preview_database_id }) => {
|
|
165
|
+
let databaseValue = `${database_id}`;
|
|
166
|
+
if (database_name) {
|
|
167
|
+
databaseValue = `${database_name} (${database_id})`;
|
|
168
|
+
}
|
|
169
|
+
//database_id is local when running `wrangler dev --local`
|
|
170
|
+
if (preview_database_id && database_id !== "local") {
|
|
171
|
+
databaseValue += `, Preview: (${preview_database_id})`;
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
key: removeD1BetaPrefix(binding),
|
|
175
|
+
value: databaseValue,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
),
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
|
|
140
182
|
if (r2_buckets !== undefined && r2_buckets.length > 0) {
|
|
141
183
|
output.push({
|
|
142
184
|
type: "R2 Buckets",
|
|
@@ -149,6 +191,18 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
149
191
|
});
|
|
150
192
|
}
|
|
151
193
|
|
|
194
|
+
if (logfwdr !== undefined && logfwdr.bindings.length > 0) {
|
|
195
|
+
output.push({
|
|
196
|
+
type: "logfwdr",
|
|
197
|
+
entries: logfwdr.bindings.map((binding) => {
|
|
198
|
+
return {
|
|
199
|
+
key: binding.name,
|
|
200
|
+
value: binding.destination,
|
|
201
|
+
};
|
|
202
|
+
}),
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
|
|
152
206
|
if (services !== undefined && services.length > 0) {
|
|
153
207
|
output.push({
|
|
154
208
|
type: "Services",
|
|
@@ -166,6 +220,21 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
166
220
|
});
|
|
167
221
|
}
|
|
168
222
|
|
|
223
|
+
if (
|
|
224
|
+
analytics_engine_datasets !== undefined &&
|
|
225
|
+
analytics_engine_datasets.length > 0
|
|
226
|
+
) {
|
|
227
|
+
output.push({
|
|
228
|
+
type: "Analytics Engine Datasets",
|
|
229
|
+
entries: analytics_engine_datasets.map(({ binding, dataset }) => {
|
|
230
|
+
return {
|
|
231
|
+
key: binding,
|
|
232
|
+
value: dataset ?? binding,
|
|
233
|
+
};
|
|
234
|
+
}),
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
|
|
169
238
|
if (text_blobs !== undefined && Object.keys(text_blobs).length > 0) {
|
|
170
239
|
output.push({
|
|
171
240
|
type: "Text Blobs",
|
|
@@ -189,10 +258,20 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
189
258
|
if (vars !== undefined && Object.keys(vars).length > 0) {
|
|
190
259
|
output.push({
|
|
191
260
|
type: "Vars",
|
|
192
|
-
entries: Object.entries(vars).map(([key, value]) =>
|
|
193
|
-
|
|
194
|
-
value
|
|
195
|
-
|
|
261
|
+
entries: Object.entries(vars).map(([key, value]) => {
|
|
262
|
+
let parsedValue;
|
|
263
|
+
if (typeof value === "string") {
|
|
264
|
+
parsedValue = `"${truncate(value)}"`;
|
|
265
|
+
} else if (typeof value === "object") {
|
|
266
|
+
parsedValue = JSON.stringify(value, null, 1);
|
|
267
|
+
} else {
|
|
268
|
+
parsedValue = `${truncate(`${value}`)}`;
|
|
269
|
+
}
|
|
270
|
+
return {
|
|
271
|
+
key,
|
|
272
|
+
value: parsedValue,
|
|
273
|
+
};
|
|
274
|
+
}),
|
|
196
275
|
});
|
|
197
276
|
}
|
|
198
277
|
|
|
@@ -206,10 +285,10 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
206
285
|
});
|
|
207
286
|
}
|
|
208
287
|
|
|
209
|
-
if (
|
|
288
|
+
if (dispatch_namespaces !== undefined && dispatch_namespaces.length > 0) {
|
|
210
289
|
output.push({
|
|
211
|
-
type: "
|
|
212
|
-
entries:
|
|
290
|
+
type: "dispatch namespaces",
|
|
291
|
+
entries: dispatch_namespaces.map(({ binding, namespace }) => {
|
|
213
292
|
return {
|
|
214
293
|
key: binding,
|
|
215
294
|
value: namespace,
|
|
@@ -236,3 +315,44 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
236
315
|
|
|
237
316
|
logger.log(message);
|
|
238
317
|
}
|
|
318
|
+
|
|
319
|
+
type CamelCase<T> = {
|
|
320
|
+
[key in keyof T as key | CamelCaseKey<key>]: T[key];
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
export function withConfig<T extends { config?: string }>(
|
|
324
|
+
handler: (
|
|
325
|
+
t: Omit<CamelCase<T>, "config"> & { config: Config }
|
|
326
|
+
) => Promise<void>
|
|
327
|
+
) {
|
|
328
|
+
return (t: CamelCase<T>) => {
|
|
329
|
+
const { config: configPath, ...rest } = t;
|
|
330
|
+
return handler({ ...rest, config: readConfig(configPath, rest) });
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
export interface DotEnv {
|
|
335
|
+
path: string;
|
|
336
|
+
parsed: dotenv.DotenvParseOutput;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
function tryLoadDotEnv(path: string): DotEnv | undefined {
|
|
340
|
+
try {
|
|
341
|
+
const parsed = dotenv.parse(fs.readFileSync(path));
|
|
342
|
+
return { path, parsed };
|
|
343
|
+
} catch (e) {
|
|
344
|
+
logger.debug(`Failed to load .env file "${path}":`, e);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Loads a dotenv file from <path>, preferring to read <path>.<environment> if
|
|
350
|
+
* <environment> is defined and that file exists.
|
|
351
|
+
*/
|
|
352
|
+
export function loadDotEnv(path: string, env?: string): DotEnv | undefined {
|
|
353
|
+
if (env === undefined) {
|
|
354
|
+
return tryLoadDotEnv(path);
|
|
355
|
+
} else {
|
|
356
|
+
return tryLoadDotEnv(`${path}.${env}`) ?? tryLoadDotEnv(path);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
@@ -383,7 +383,7 @@ export const validateRequiredProperty = (
|
|
|
383
383
|
container: string,
|
|
384
384
|
key: string,
|
|
385
385
|
value: unknown,
|
|
386
|
-
type:
|
|
386
|
+
type: TypeofType,
|
|
387
387
|
choices?: unknown[]
|
|
388
388
|
): boolean => {
|
|
389
389
|
if (container) {
|
|
@@ -417,7 +417,7 @@ export const validateOptionalProperty = (
|
|
|
417
417
|
container: string,
|
|
418
418
|
key: string,
|
|
419
419
|
value: unknown,
|
|
420
|
-
type:
|
|
420
|
+
type: TypeofType,
|
|
421
421
|
choices?: unknown[]
|
|
422
422
|
): boolean => {
|
|
423
423
|
if (value !== undefined) {
|
|
@@ -440,7 +440,7 @@ export const validateTypedArray = (
|
|
|
440
440
|
diagnostics: Diagnostics,
|
|
441
441
|
container: string,
|
|
442
442
|
value: unknown,
|
|
443
|
-
type:
|
|
443
|
+
type: TypeofType
|
|
444
444
|
): boolean => {
|
|
445
445
|
let isValid = true;
|
|
446
446
|
if (!Array.isArray(value)) {
|
|
@@ -472,7 +472,7 @@ export const validateOptionalTypedArray = (
|
|
|
472
472
|
diagnostics: Diagnostics,
|
|
473
473
|
container: string,
|
|
474
474
|
value: unknown,
|
|
475
|
-
type:
|
|
475
|
+
type: TypeofType
|
|
476
476
|
) => {
|
|
477
477
|
if (value !== undefined) {
|
|
478
478
|
return validateTypedArray(diagnostics, container, value, type);
|
|
@@ -486,7 +486,7 @@ export const validateOptionalTypedArray = (
|
|
|
486
486
|
export const isRequiredProperty = <T extends object>(
|
|
487
487
|
obj: object,
|
|
488
488
|
prop: keyof T,
|
|
489
|
-
type:
|
|
489
|
+
type: TypeofType,
|
|
490
490
|
choices?: unknown[]
|
|
491
491
|
): obj is T =>
|
|
492
492
|
hasProperty<T>(obj, prop) &&
|
|
@@ -499,7 +499,7 @@ export const isRequiredProperty = <T extends object>(
|
|
|
499
499
|
export const isOptionalProperty = <T extends object>(
|
|
500
500
|
obj: object,
|
|
501
501
|
prop: keyof T,
|
|
502
|
-
type:
|
|
502
|
+
type: TypeofType
|
|
503
503
|
): obj is T => !hasProperty<T>(obj, prop) || typeof obj[prop] === type;
|
|
504
504
|
|
|
505
505
|
/**
|
|
@@ -582,3 +582,16 @@ const isRecord = (
|
|
|
582
582
|
value: unknown
|
|
583
583
|
): value is Record<string | number | symbol, unknown> =>
|
|
584
584
|
typeof value === "object" && value !== null && !Array.isArray(value);
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* JavaScript `typeof` operator return values.
|
|
588
|
+
*/
|
|
589
|
+
type TypeofType =
|
|
590
|
+
| "string"
|
|
591
|
+
| "number"
|
|
592
|
+
| "bigint"
|
|
593
|
+
| "boolean"
|
|
594
|
+
| "symbol"
|
|
595
|
+
| "undefined"
|
|
596
|
+
| "object"
|
|
597
|
+
| "function";
|