@blamejs/core 0.7.1 → 0.7.18
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/CHANGELOG.md +423 -389
- package/README.md +150 -149
- package/bin/blamejs.js +0 -0
- package/index.js +308 -282
- package/lib/api-key.js +660 -672
- package/lib/api-snapshot.js +338 -338
- package/lib/app-shutdown.js +385 -385
- package/lib/app.js +365 -365
- package/lib/archive.js +250 -250
- package/lib/atomic-file.js +544 -544
- package/lib/audit-chain.js +177 -177
- package/lib/audit-sign.js +344 -344
- package/lib/audit-tools.js +677 -677
- package/lib/audit.js +766 -766
- package/lib/auth/jwt.js +311 -311
- package/lib/auth/lockout.js +436 -436
- package/lib/auth/oauth.js +721 -721
- package/lib/auth/passkey.js +181 -181
- package/lib/auth/password.js +594 -594
- package/lib/backup/bundle.js +217 -217
- package/lib/backup/crypto.js +176 -176
- package/lib/backup/index.js +515 -515
- package/lib/backup/manifest.js +282 -282
- package/lib/break-glass.js +1338 -1338
- package/lib/bundler.js +441 -441
- package/lib/cache-redis.js +256 -266
- package/lib/cache.js +1206 -1211
- package/lib/canonical-json.js +115 -115
- package/lib/chain-writer.js +234 -234
- package/lib/cli-helpers.js +206 -206
- package/lib/cli.js +2334 -2334
- package/lib/cluster-provider-db.js +317 -317
- package/lib/cluster-storage.js +226 -226
- package/lib/cluster.js +703 -703
- package/lib/codepoint-class.js +196 -0
- package/lib/config-drift.js +301 -301
- package/lib/consent.js +222 -222
- package/lib/constants.js +191 -191
- package/lib/cookies.js +315 -315
- package/lib/credential-hash.js +322 -322
- package/lib/crypto.js +266 -266
- package/lib/csv.js +275 -286
- package/lib/db-declare-row-policy.js +267 -267
- package/lib/db-declare-view.js +420 -421
- package/lib/db-query.js +406 -406
- package/lib/db-schema.js +319 -319
- package/lib/db.js +1288 -1288
- package/lib/deprecate.js +222 -222
- package/lib/dev.js +335 -335
- package/lib/dual-control.js +473 -473
- package/lib/error-page.js +420 -420
- package/lib/external-db-migrate.js +441 -441
- package/lib/external-db.js +1061 -1061
- package/lib/file-type.js +273 -273
- package/lib/file-upload.js +1136 -0
- package/lib/forms.js +422 -422
- package/lib/framework-error.js +293 -202
- package/lib/framework-schema.js +717 -717
- package/lib/gate-contract.js +971 -0
- package/lib/guard-all.js +405 -0
- package/lib/guard-archive.js +739 -0
- package/lib/guard-csv.js +816 -0
- package/lib/guard-email.js +744 -0
- package/lib/guard-filename.js +724 -0
- package/lib/guard-html.js +976 -0
- package/lib/guard-json.js +729 -0
- package/lib/guard-markdown.js +586 -0
- package/lib/guard-svg.js +976 -0
- package/lib/guard-xml.js +405 -0
- package/lib/guard-yaml.js +529 -0
- package/lib/handlers.js +350 -350
- package/lib/http-client-cookie-jar.js +508 -508
- package/lib/http-client.js +1195 -1195
- package/lib/i18n.js +878 -878
- package/lib/jobs.js +185 -185
- package/lib/log-stream-cloudwatch.js +369 -369
- package/lib/log-stream-local.js +146 -146
- package/lib/log-stream-otlp-grpc.js +410 -410
- package/lib/log-stream-otlp.js +286 -286
- package/lib/log-stream-syslog.js +302 -302
- package/lib/log-stream-webhook.js +199 -199
- package/lib/log-stream.js +330 -330
- package/lib/log.js +500 -500
- package/lib/mail-bounce.js +528 -528
- package/lib/mail-dkim.js +369 -362
- package/lib/mail.js +981 -962
- package/lib/metrics.js +683 -683
- package/lib/middleware/api-encrypt.js +936 -573
- package/lib/middleware/attach-user.js +157 -157
- package/lib/middleware/body-parser.js +1170 -1091
- package/lib/middleware/bot-guard.js +178 -178
- package/lib/middleware/compression.js +452 -452
- package/lib/middleware/cors.js +314 -314
- package/lib/middleware/csp-nonce.js +348 -348
- package/lib/middleware/csrf-protect.js +316 -316
- package/lib/middleware/db-role-for.js +264 -269
- package/lib/middleware/health.js +392 -392
- package/lib/middleware/index.js +79 -79
- package/lib/middleware/rate-limit.js +358 -358
- package/lib/middleware/request-id.js +61 -61
- package/lib/middleware/request-log.js +168 -168
- package/lib/middleware/require-auth.js +104 -104
- package/lib/middleware/security-headers.js +116 -116
- package/lib/middleware/sse.js +166 -166
- package/lib/migrations.js +383 -383
- package/lib/mtls-ca.js +518 -518
- package/lib/mtls-engine-default.js +481 -481
- package/lib/network-dns.js +632 -632
- package/lib/network-heartbeat.js +290 -290
- package/lib/network-nts.js +574 -574
- package/lib/network-proxy.js +265 -265
- package/lib/network-tls.js +328 -328
- package/lib/network.js +233 -233
- package/lib/notify.js +612 -614
- package/lib/ntp-check.js +229 -229
- package/lib/numeric-bounds.js +111 -91
- package/lib/object-store/azure-blob-bucket-ops.js +349 -349
- package/lib/object-store/azure-blob.js +488 -451
- package/lib/object-store/gcs-bucket-ops.js +351 -351
- package/lib/object-store/gcs.js +519 -479
- package/lib/object-store/http-put.js +153 -153
- package/lib/object-store/index.js +197 -197
- package/lib/object-store/sigv4-bucket-ops.js +1092 -1092
- package/lib/object-store/sigv4.js +903 -855
- package/lib/observability.js +151 -151
- package/lib/otel-export.js +269 -269
- package/lib/pagination.js +464 -464
- package/lib/parsers/index.js +80 -80
- package/lib/parsers/safe-env.js +642 -642
- package/lib/parsers/safe-ini.js +292 -292
- package/lib/parsers/safe-toml.js +784 -784
- package/lib/parsers/safe-xml.js +390 -390
- package/lib/parsers/safe-yaml.js +1015 -1015
- package/lib/permissions.js +708 -708
- package/lib/pqc-agent.js +87 -87
- package/lib/pqc-gate.js +279 -279
- package/lib/protobuf-encoder.js +190 -190
- package/lib/protocol-dispatcher.js +161 -161
- package/lib/pubsub-redis.js +167 -177
- package/lib/pubsub.js +429 -429
- package/lib/queue-local.js +476 -476
- package/lib/queue-redis.js +745 -752
- package/lib/queue-sqs.js +319 -319
- package/lib/queue.js +695 -695
- package/lib/redis-client.js +519 -489
- package/lib/request-helpers.js +340 -336
- package/lib/restore-bundle.js +237 -237
- package/lib/restore-rollback.js +259 -259
- package/lib/restore.js +409 -409
- package/lib/retry.js +376 -376
- package/lib/router.js +748 -748
- package/lib/safe-async.js +735 -735
- package/lib/safe-buffer.js +237 -237
- package/lib/safe-json.js +541 -541
- package/lib/safe-schema.js +1266 -1266
- package/lib/safe-url.js +159 -159
- package/lib/scheduler.js +706 -706
- package/lib/security-assert.js +373 -373
- package/lib/seeders.js +618 -630
- package/lib/session.js +478 -478
- package/lib/slug.js +269 -269
- package/lib/ssrf-guard.js +401 -401
- package/lib/static.js +879 -114
- package/lib/storage.js +471 -471
- package/lib/subject.js +281 -281
- package/lib/template.js +791 -791
- package/lib/testing.js +798 -798
- package/lib/time.js +310 -310
- package/lib/totp.js +302 -302
- package/lib/tracing.js +494 -494
- package/lib/uuid.js +132 -132
- package/lib/validate-opts.js +340 -270
- package/lib/vault/index.js +308 -308
- package/lib/vault/rotate.js +784 -784
- package/lib/vault/wrap.js +296 -296
- package/lib/vendor/noble-ciphers.cjs +9 -9
- package/lib/webhook.js +595 -598
- package/lib/websocket.js +1048 -1048
- package/package.json +77 -77
- package/sbom.cyclonedx.json +7 -7
package/lib/parsers/index.js
CHANGED
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Multi-format safe parsers — apply the same security defaults blamejs's
|
|
4
|
-
* b.json provides to other common data interchange formats.
|
|
5
|
-
*
|
|
6
|
-
* Currently shipped:
|
|
7
|
-
* xml — RFC-compliant subset; XXE / DOCTYPE / billion-laughs blocked
|
|
8
|
-
* by default; depth + element + attribute count limits;
|
|
9
|
-
* numeric-character-ref bounds checked
|
|
10
|
-
* toml — TOML 1.0 parsing with depth + size limits;
|
|
11
|
-
* prototype-pollution rejection on dotted-key path segments;
|
|
12
|
-
* strict same-key redefinition (silent overwrite would mask
|
|
13
|
-
* config errors operators DO want surfaced); offset
|
|
14
|
-
* date-times decoded as JS Date, local date-time/date/time
|
|
15
|
-
* preserved as ISO strings (no implicit offset assumption);
|
|
16
|
-
* integers > MAX_SAFE_INTEGER rejected so 64-bit values
|
|
17
|
-
* must be encoded as quoted strings
|
|
18
|
-
* env — .env file loader with size cap, schema validation, change
|
|
19
|
-
* tracking via audit chain, and Levenshtein-based typo
|
|
20
|
-
* detection. Rejects $VAR / ${VAR} expansion (consumers
|
|
21
|
-
* reading process.env later wouldn't know whether the
|
|
22
|
-
* value was literal or expanded). Rejects keys outside
|
|
23
|
-
* POSIX shape `^[A-Z_][A-Z0-9_]*$` by default. Schema
|
|
24
|
-
* registration declares per-key sensitivity tiers
|
|
25
|
-
* (boot-only / runtime / breaking) — `breaking` keys
|
|
26
|
-
* refuse silent change unless `{ allow: [...] }` opt-in.
|
|
27
|
-
* Diff result includes `suspicious` field flagging keys
|
|
28
|
-
* that look like typos of registered keys.
|
|
29
|
-
*
|
|
30
|
-
* yaml — YAML 1.2 safe subset (JSON-shaped YAML). Rejects anchors
|
|
31
|
-
* (billion-laughs), aliases (cycles), tags (`!!python/object`-
|
|
32
|
-
* style deserialization), directives, multi-document
|
|
33
|
-
* streams, complex keys, merge keys (`<<`), and tabs in
|
|
34
|
-
* indentation. YAML 1.2 core-schema type inference (NOT
|
|
35
|
-
* 1.1, which had the "Norway problem" where `country: NO`
|
|
36
|
-
* parsed as `country: false`). Block + flow style;
|
|
37
|
-
* literal `|` and folded `>` block scalars with chomp
|
|
38
|
-
* indicators.
|
|
39
|
-
* env — .env file loader with size cap + schema validation;
|
|
40
|
-
* refuses to expand $VAR references; refuses to silently
|
|
41
|
-
* overwrite existing process.env values unless explicitly
|
|
42
|
-
* opted in. Dev-tooling — production secrets should still
|
|
43
|
-
* come through the operator's secrets-management; this is
|
|
44
|
-
* the local-development convenience.
|
|
45
|
-
* ini — INI / .gitconfig / systemd-unit / php.ini / tox.ini parser.
|
|
46
|
-
* Sections (incl. [parent.child] / [parent "child"] nesting),
|
|
47
|
-
* ; or # comments (inline + leading), single + double quoting
|
|
48
|
-
* with \n / \t / \\ / \" / \' escapes, boolean coercion
|
|
49
|
-
* (true/false/yes/no/on/off), decimal + hex integers + floats.
|
|
50
|
-
* Prototype-pollution defense (__proto__/constructor/prototype
|
|
51
|
-
* rejected); duplicate-key policy throws by default
|
|
52
|
-
* (onDuplicate: "first"|"last" opts in to silent
|
|
53
|
-
* shadowing); section + per-section key + value-bytes
|
|
54
|
-
* caps configurable via opts.
|
|
55
|
-
*
|
|
56
|
-
* Public API:
|
|
57
|
-
* parsers.xml.parse(input, opts?) → object
|
|
58
|
-
* parsers.ini.parse(input, opts?) → object
|
|
59
|
-
* parsers.toml.parse(input, opts?) → object
|
|
60
|
-
* parsers.yaml.parse(input, opts?) → object
|
|
61
|
-
* parsers.env.load(filepath, opts?) → { values, diff }
|
|
62
|
-
*
|
|
63
|
-
* (CSV moved to top-level `b.csv` in v0.5.17 — same surface unified.)
|
|
64
|
-
*
|
|
65
|
-
* Error types: each parser exports its own *SafeError class with .code
|
|
66
|
-
* matching the format (xml/..., toml/..., ini/..., yaml/..., env/...).
|
|
67
|
-
*/
|
|
68
|
-
var safeEnv = require("./safe-env");
|
|
69
|
-
var safeIni = require("./safe-ini");
|
|
70
|
-
var safeToml = require("./safe-toml");
|
|
71
|
-
var safeXml = require("./safe-xml");
|
|
72
|
-
var safeYaml = require("./safe-yaml");
|
|
73
|
-
|
|
74
|
-
module.exports = {
|
|
75
|
-
xml: safeXml,
|
|
76
|
-
toml: safeToml,
|
|
77
|
-
yaml: safeYaml,
|
|
78
|
-
env: safeEnv,
|
|
79
|
-
ini: safeIni,
|
|
80
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Multi-format safe parsers — apply the same security defaults blamejs's
|
|
4
|
+
* b.json provides to other common data interchange formats.
|
|
5
|
+
*
|
|
6
|
+
* Currently shipped:
|
|
7
|
+
* xml — RFC-compliant subset; XXE / DOCTYPE / billion-laughs blocked
|
|
8
|
+
* by default; depth + element + attribute count limits;
|
|
9
|
+
* numeric-character-ref bounds checked
|
|
10
|
+
* toml — TOML 1.0 parsing with depth + size limits;
|
|
11
|
+
* prototype-pollution rejection on dotted-key path segments;
|
|
12
|
+
* strict same-key redefinition (silent overwrite would mask
|
|
13
|
+
* config errors operators DO want surfaced); offset
|
|
14
|
+
* date-times decoded as JS Date, local date-time/date/time
|
|
15
|
+
* preserved as ISO strings (no implicit offset assumption);
|
|
16
|
+
* integers > MAX_SAFE_INTEGER rejected so 64-bit values
|
|
17
|
+
* must be encoded as quoted strings
|
|
18
|
+
* env — .env file loader with size cap, schema validation, change
|
|
19
|
+
* tracking via audit chain, and Levenshtein-based typo
|
|
20
|
+
* detection. Rejects $VAR / ${VAR} expansion (consumers
|
|
21
|
+
* reading process.env later wouldn't know whether the
|
|
22
|
+
* value was literal or expanded). Rejects keys outside
|
|
23
|
+
* POSIX shape `^[A-Z_][A-Z0-9_]*$` by default. Schema
|
|
24
|
+
* registration declares per-key sensitivity tiers
|
|
25
|
+
* (boot-only / runtime / breaking) — `breaking` keys
|
|
26
|
+
* refuse silent change unless `{ allow: [...] }` opt-in.
|
|
27
|
+
* Diff result includes `suspicious` field flagging keys
|
|
28
|
+
* that look like typos of registered keys.
|
|
29
|
+
*
|
|
30
|
+
* yaml — YAML 1.2 safe subset (JSON-shaped YAML). Rejects anchors
|
|
31
|
+
* (billion-laughs), aliases (cycles), tags (`!!python/object`-
|
|
32
|
+
* style deserialization), directives, multi-document
|
|
33
|
+
* streams, complex keys, merge keys (`<<`), and tabs in
|
|
34
|
+
* indentation. YAML 1.2 core-schema type inference (NOT
|
|
35
|
+
* 1.1, which had the "Norway problem" where `country: NO`
|
|
36
|
+
* parsed as `country: false`). Block + flow style;
|
|
37
|
+
* literal `|` and folded `>` block scalars with chomp
|
|
38
|
+
* indicators.
|
|
39
|
+
* env — .env file loader with size cap + schema validation;
|
|
40
|
+
* refuses to expand $VAR references; refuses to silently
|
|
41
|
+
* overwrite existing process.env values unless explicitly
|
|
42
|
+
* opted in. Dev-tooling — production secrets should still
|
|
43
|
+
* come through the operator's secrets-management; this is
|
|
44
|
+
* the local-development convenience.
|
|
45
|
+
* ini — INI / .gitconfig / systemd-unit / php.ini / tox.ini parser.
|
|
46
|
+
* Sections (incl. [parent.child] / [parent "child"] nesting),
|
|
47
|
+
* ; or # comments (inline + leading), single + double quoting
|
|
48
|
+
* with \n / \t / \\ / \" / \' escapes, boolean coercion
|
|
49
|
+
* (true/false/yes/no/on/off), decimal + hex integers + floats.
|
|
50
|
+
* Prototype-pollution defense (__proto__/constructor/prototype
|
|
51
|
+
* rejected); duplicate-key policy throws by default
|
|
52
|
+
* (onDuplicate: "first"|"last" opts in to silent
|
|
53
|
+
* shadowing); section + per-section key + value-bytes
|
|
54
|
+
* caps configurable via opts.
|
|
55
|
+
*
|
|
56
|
+
* Public API:
|
|
57
|
+
* parsers.xml.parse(input, opts?) → object
|
|
58
|
+
* parsers.ini.parse(input, opts?) → object
|
|
59
|
+
* parsers.toml.parse(input, opts?) → object
|
|
60
|
+
* parsers.yaml.parse(input, opts?) → object
|
|
61
|
+
* parsers.env.load(filepath, opts?) → { values, diff }
|
|
62
|
+
*
|
|
63
|
+
* (CSV moved to top-level `b.csv` in v0.5.17 — same surface unified.)
|
|
64
|
+
*
|
|
65
|
+
* Error types: each parser exports its own *SafeError class with .code
|
|
66
|
+
* matching the format (xml/..., toml/..., ini/..., yaml/..., env/...).
|
|
67
|
+
*/
|
|
68
|
+
var safeEnv = require("./safe-env");
|
|
69
|
+
var safeIni = require("./safe-ini");
|
|
70
|
+
var safeToml = require("./safe-toml");
|
|
71
|
+
var safeXml = require("./safe-xml");
|
|
72
|
+
var safeYaml = require("./safe-yaml");
|
|
73
|
+
|
|
74
|
+
module.exports = {
|
|
75
|
+
xml: safeXml,
|
|
76
|
+
toml: safeToml,
|
|
77
|
+
yaml: safeYaml,
|
|
78
|
+
env: safeEnv,
|
|
79
|
+
ini: safeIni,
|
|
80
|
+
};
|