safeseed 0.2.0 → 0.2.1
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 +14 -5
- package/dist/catalog.d.ts +10 -7
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +11 -8
- package/dist/catalog.js.map +1 -1
- package/dist/cli.js +12 -0
- package/dist/cli.js.map +1 -1
- package/dist/generate.d.ts +6 -3
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +19 -5
- package/dist/generate.js.map +1 -1
- package/dist/record.d.ts +1 -1
- package/dist/record.d.ts.map +1 -1
- package/dist/record.js +4 -1
- package/dist/record.js.map +1 -1
- package/dist/verify.d.ts +5 -1
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +25 -2
- package/dist/verify.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# SafeSeed
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/safeseed) [](LICENSE)
|
|
4
|
+
|
|
3
5
|
**Confirmably-synthetic test data by construction.** Generate stand-in data for test, CI, and demo environments from ranges that published standards have reserved as *permanently not real*, bind a tamper-evident record to the output, verify a file stays in range, and scan data you already have for real PII that slipped in.
|
|
4
6
|
|
|
5
7
|
No model, no training data, no backend, no accounts, no telemetry, zero runtime dependencies. It runs entirely on your machine. MIT licensed.
|
|
@@ -21,7 +23,7 @@ SafeSeed takes the other path: **never let real data into the process at all.**
|
|
|
21
23
|
1. **Generate** safe-by-construction test data from the cited reserved ranges (deterministic from a seed, so the output is a committable fixture).
|
|
22
24
|
2. **Attest** with a tamper-evident run record that binds to the file's content hash and states the honesty tier of every field.
|
|
23
25
|
3. **Verify** that a file is still byte-for-byte the generated one *and* that every value is still in range — wire it into CI to fail the build on drift. Strict by default; opt into **column-scoped verify** (`--allow-added-columns`) to attest only the synthetic columns you generated, so a team can add its own business columns (job title, industry) without breaking attestation — added columns are reported as *unattested*, never a silent pass.
|
|
24
|
-
4. **Scan** an *existing* CSV / seed file and flag values that are not in reserved ranges as candidate real PII. Column-scoped verify pairs with scan: verify vouches for the synthetic columns, scan checks the columns you added.
|
|
26
|
+
4. **Scan** an *existing* CSV / seed file and flag values that are not in reserved ranges as candidate real PII. Column-scoped verify pairs with scan: verify vouches for the synthetic columns, scan checks the columns you added. **Know the limit:** scan flags real data *outside* the reserved ranges; real data that happens to look reserved (a real mailbox at `example.com`, a real `555-01xx` line — or, under the old 0.2.0 ranges, a genuine ITIN) will **not** be flagged. A clean scan means "nothing provably-unreserved found," not "no real PII."
|
|
25
27
|
|
|
26
28
|
`verify` and `scan` are **generator-agnostic**: they work on any data file, however it was produced, so you can keep the generator you already use and wrap it.
|
|
27
29
|
|
|
@@ -32,6 +34,9 @@ There is also a self-serve **generator page** (browser, zero network): pick fiel
|
|
|
32
34
|
### CLI
|
|
33
35
|
|
|
34
36
|
```bash
|
|
37
|
+
# Install the CLI (or prefix any command with `npx`, no install needed)
|
|
38
|
+
npm install -g safeseed
|
|
39
|
+
|
|
35
40
|
# Generate 100 rows of safe data + a run record
|
|
36
41
|
safeseed generate \
|
|
37
42
|
--fields email:email,name:fullName,phone:phone,ssn:ssn,card:creditCard \
|
|
@@ -51,10 +56,12 @@ safeseed scan --in legacy.csv --fields email:email,phone:phone,ssn:ssn
|
|
|
51
56
|
safeseed catalog
|
|
52
57
|
```
|
|
53
58
|
|
|
59
|
+
`--seed` defaults to `0`, so a run without it is fully deterministic — identical output every time, on purpose (the output is a committable fixture). Pass `--seed` to vary the dataset.
|
|
60
|
+
|
|
54
61
|
### As a CI gate (GitHub Action)
|
|
55
62
|
|
|
56
63
|
```yaml
|
|
57
|
-
- uses:
|
|
64
|
+
- uses: advokat-frida/safeseed@v0.2.1 # the verify Action
|
|
58
65
|
with:
|
|
59
66
|
data: fixtures/seed.csv
|
|
60
67
|
record: fixtures/seed.record.json
|
|
@@ -94,12 +101,14 @@ Honesty is the credibility here, so the claim has tiers, and every field is labe
|
|
|
94
101
|
| Tier | What it means | Examples | The claim |
|
|
95
102
|
|---|---|---|---|
|
|
96
103
|
| **provably-non-real** | Reserved by a published standard/protocol; the standard itself makes them non-routable/non-registrable. | RFC 2606 email domains, RFC 5737 / 3849 documentation IPs | "Cannot correspond to a real person or system." |
|
|
97
|
-
| **reserved-not-issued** | Reserved by the *issuing authority* and never assigned — strong, but administrative policy, not protocol. | NANPA `555-01xx` phones
|
|
104
|
+
| **reserved-not-issued** | Reserved by the *issuing authority* and never assigned — strong, but administrative policy, not protocol. | NANPA `555-01xx` phones; SSN components no authority issues (area `000`/`666`, group `00`, serial `0000`) | "Never assigned, so no real holder has one; non-real by policy, not protocol." |
|
|
98
105
|
| **designated-test-only** | A valid-looking value processors/sandboxes *designate* for testing. It passes validation. | Card test PANs (`4242…`) | "Non-real by designation, **not** by impossibility." |
|
|
99
106
|
| **structurally-fake** | No standard reserves it, so it is made *self-evidently* fake instead of plausible. | `TEST_Lastname_000142`, `123 Example Way` | "Synthetic token; not derived from any real record." |
|
|
100
107
|
|
|
101
108
|
Stating which tier each field sits in is not a weakness to bury. It is the thing that separates a practitioner from a datasheet.
|
|
102
109
|
|
|
110
|
+
> **The 0.2.1 SSN correction.** SafeSeed 0.2.0 generated SSNs from the `900-999` area range on the theory that the SSA never assigns it — but that range is the IRS ITIN space (`9XX-XX-XXXX`), real issued identifiers, so the "no real holder has one" claim was false for those values. 0.2.1 generates only from components neither the SSA nor the IRS ever issues, narrows the reserved definition to match, and — by design — old 0.2.0 datasets and run records now **fail** `verify` and their `9xx` SSNs are **flagged** by `scan`. Details in [CHANGELOG.md](CHANGELOG.md). One nuance stated plainly: these values are format-*shaped* (`NNN-NN-NNNN`); a strict SSN validator that encodes issuance rules will reject them, and that rejection is exactly the safety property.
|
|
111
|
+
|
|
103
112
|
## What this does **not** prove
|
|
104
113
|
|
|
105
114
|
The fastest way to lose a security reviewer is to claim more than you can defend. So, on purpose:
|
|
@@ -121,7 +130,7 @@ Off-the-shelf fake-data libraries already emit reserved-range values. What is mi
|
|
|
121
130
|
- **RFC 5737** — IPv4 documentation blocks (`192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24`).
|
|
122
131
|
- **RFC 3849** — IPv6 documentation prefix (`2001:db8::/32`).
|
|
123
132
|
- **NANPA / ATIS** — fictitious telephone numbers (`555-0100` through `555-0199`).
|
|
124
|
-
- **SSA SSN randomization** (effective 2011-06-25) — never-assigned
|
|
133
|
+
- **SSA SSN randomization** (effective 2011-06-25) — never-assigned components (area `000`/`666`, group `00`, serial `0000`), confirmed against the [SSA randomization rules](https://www.ssa.gov/employer/randomization.html). The `900-999` areas the SSA also excludes are **deliberately not used**: that space is the [IRS ITIN range](https://www.irs.gov/individuals/individual-taxpayer-identification-number) (`9XX-XX-XXXX`) — real, issued identifiers, with group ranges the IRS has expanded over time.
|
|
125
134
|
- Card numbers are **published processor/sandbox test PANs** (e.g. Stripe testing docs), in the `designated-test-only` tier (they pass Luhn, authorize nowhere).
|
|
126
135
|
|
|
127
136
|
## Development
|
|
@@ -137,7 +146,7 @@ The catalog in [`src/catalog.ts`](src/catalog.ts) is the reusable core: it maps
|
|
|
137
146
|
|
|
138
147
|
## Status
|
|
139
148
|
|
|
140
|
-
Core library, CLI, the `verify` Action, and an interactive browser demo are built and tested (
|
|
149
|
+
Core library, CLI, the `verify` Action, and an interactive browser demo are built and tested (74 tests; CI green). SafeSeed 0.2.0 added per-column hashes and opt-in **column-scoped verify**, a self-serve **generator page**, and a four-tier honesty taxonomy that separates protocol-reserved values from authority-reserved (never-issued) ones; 0.2.1 corrects the SSN reserved range (the ITIN collision — see [CHANGELOG.md](CHANGELOG.md)). The demo lives in [`demo/`](demo/); both the showcase and the generator ship as committed, offline single files at [`demo/safeseed-demo.html`](demo/safeseed-demo.html) and [`demo/safeseed-generator.html`](demo/safeseed-generator.html). Published on npm as [`safeseed`](https://www.npmjs.com/package/safeseed), with the interactive demo live at [advokatfrida.com/safeseed](https://advokatfrida.com/safeseed/). The design record is in [SPEC.md](SPEC.md); the v2 feature spec is in [docs/generator-and-column-scoped-verify.md](docs/generator-and-column-scoped-verify.md).
|
|
141
150
|
|
|
142
151
|
## Support
|
|
143
152
|
|
package/dist/catalog.d.ts
CHANGED
|
@@ -7,13 +7,17 @@
|
|
|
7
7
|
* this one table, which is what makes the promise auditable: review these few
|
|
8
8
|
* hundred cited lines once, and every output inherits the guarantee.
|
|
9
9
|
*
|
|
10
|
-
* Sourcing: the RFC 2606 / 5737 / 3849 reservations
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* Sourcing: the RFC 2606 / 5737 / 3849 reservations are confirmed against primary
|
|
11
|
+
* sources. The SSN space (catalog 2.0.0) uses only components that BOTH the SSA
|
|
12
|
+
* scheme and the IRS ITIN scheme never issue: area 000, area 666, group 00, serial
|
|
13
|
+
* 0000. The 900-999 area range the SSA excludes is deliberately NOT treated as
|
|
14
|
+
* reserved — it is the IRS ITIN space (9XX-XX-XXXX), which contains real, issued
|
|
15
|
+
* taxpayer identifiers, and the IRS has expanded its ITIN group ranges over time.
|
|
16
|
+
* The NANPA 555-0100..0199 fictitious block is well-established; its shipped
|
|
17
|
+
* citation link is the NANPA homepage rather than a deep rule page.
|
|
14
18
|
*/
|
|
15
19
|
import type { FieldType, Tier } from "./types.js";
|
|
16
|
-
export declare const CATALOG_VERSION = "
|
|
20
|
+
export declare const CATALOG_VERSION = "2.0.0";
|
|
17
21
|
/** Inspectable, structured definition of a reserved space. Drives generation,
|
|
18
22
|
* verification, and scanning, and lets tests assert the ranges match standards. */
|
|
19
23
|
export type ReservedSpec = {
|
|
@@ -37,9 +41,8 @@ export type ReservedSpec = {
|
|
|
37
41
|
subscriberEnd: number;
|
|
38
42
|
} | {
|
|
39
43
|
kind: "ssnInvalid";
|
|
44
|
+
/** Areas never issued by the SSA and structurally outside the IRS ITIN space (000, 666). */
|
|
40
45
|
invalidAreas: readonly string[];
|
|
41
|
-
invalidAreaMin: number;
|
|
42
|
-
invalidAreaMax: number;
|
|
43
46
|
invalidGroup: string;
|
|
44
47
|
invalidSerial: string;
|
|
45
48
|
} | {
|
package/dist/catalog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOlD,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC;mFACmF;AACnF,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACrF;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAChF;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACjG;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,4FAA4F;IAC5F,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;CACxB;AAiCD,eAAO,MAAM,OAAO,EAAE,SAAS,YAAY,EAwG1C,CAAC;AAIF,kFAAkF;AAClF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CAIvD;AAUD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAwCtE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE1D"}
|
package/dist/catalog.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { ipv4InCidr, ipv6InPrefix } from "./net.js";
|
|
2
|
-
|
|
2
|
+
// 2.0.0: the ssn reserved range narrowed to exclude areas 900-999 (the IRS ITIN
|
|
3
|
+
// space — real identifiers). Run records made under catalog 1.0.0 with 9xx-area
|
|
4
|
+
// SSNs now fail verify BY DESIGN; verify emits a catalog-version warning so the
|
|
5
|
+
// failure is explained rather than mysterious.
|
|
6
|
+
export const CATALOG_VERSION = "2.0.0";
|
|
3
7
|
// Tier-appropriate claim language. The strong wording ("cannot correspond to a
|
|
4
8
|
// real person") lives ONLY on the protocol-provable tier; every weaker tier
|
|
5
9
|
// deliberately avoids "proof", "impossible", "guarantee", "cannot be real".
|
|
@@ -68,14 +72,12 @@ export const CATALOG = [
|
|
|
68
72
|
{
|
|
69
73
|
field: "ssn",
|
|
70
74
|
tier: "reserved-not-issued",
|
|
71
|
-
citation: "SSA SSN randomization (effective 2011-06-25): never-assigned area
|
|
72
|
-
description: "US SSNs
|
|
75
|
+
citation: "SSA SSN randomization (effective 2011-06-25): never-assigned area 000 / 666, group 00, serial 0000 (ssa.gov/employer/randomization.html). Areas 900-999 are deliberately excluded: that is the IRS ITIN space (9XX-XX-XXXX), which contains real, issued identifiers.",
|
|
76
|
+
description: "US SSN-shaped values containing a component that neither the SSA (for SSNs) nor the IRS (for ITINs) ever issues: area 000 or 666, group 00, or serial 0000. The values are format-shaped (NNN-NN-NNNN); a strict SSN validator that encodes the SSA issuance rules will reject them — that rejection is exactly what makes them provably never-issued.",
|
|
73
77
|
claim: CLAIM_RESERVED_NOT_ISSUED,
|
|
74
78
|
reserved: {
|
|
75
79
|
kind: "ssnInvalid",
|
|
76
80
|
invalidAreas: ["000", "666"],
|
|
77
|
-
invalidAreaMin: 900,
|
|
78
|
-
invalidAreaMax: 999,
|
|
79
81
|
invalidGroup: "00",
|
|
80
82
|
invalidSerial: "0000",
|
|
81
83
|
},
|
|
@@ -175,15 +177,16 @@ export function isReserved(entry, value) {
|
|
|
175
177
|
return nxx === r.centralOfficeCode && line >= r.subscriberStart && line <= r.subscriberEnd;
|
|
176
178
|
}
|
|
177
179
|
case "ssnInvalid": {
|
|
180
|
+
// Reserved = contains a component that is never issued under BOTH the SSA
|
|
181
|
+
// scheme and the IRS ITIN scheme. Deliberately NOT reserved: areas 900-999
|
|
182
|
+
// (ITIN space — real, issued identifiers; catalog 2.0.0 removed them).
|
|
178
183
|
const digits = value.replace(/\D/g, "");
|
|
179
184
|
if (digits.length !== 9)
|
|
180
185
|
return false;
|
|
181
186
|
const area = digits.slice(0, 3);
|
|
182
187
|
const group = digits.slice(3, 5);
|
|
183
188
|
const serial = digits.slice(5);
|
|
184
|
-
|
|
185
|
-
const areaInvalid = r.invalidAreas.includes(area) || (areaNum >= r.invalidAreaMin && areaNum <= r.invalidAreaMax);
|
|
186
|
-
return areaInvalid || group === r.invalidGroup || serial === r.invalidSerial;
|
|
189
|
+
return r.invalidAreas.includes(area) || group === r.invalidGroup || serial === r.invalidSerial;
|
|
187
190
|
}
|
|
188
191
|
case "cardTestNumbers": {
|
|
189
192
|
const digits = value.replace(/\D/g, "");
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -69,6 +69,8 @@ function parseFields(spec) {
|
|
|
69
69
|
function cmdGenerate(p) {
|
|
70
70
|
let schema = [];
|
|
71
71
|
let rows = 0;
|
|
72
|
+
// Deliberate: --seed defaults to 0, so a no-seed run is a repeatable run, not a
|
|
73
|
+
// random one — determinism is the product. Documented in --help and the README.
|
|
72
74
|
let seed = 0;
|
|
73
75
|
let formatValid = true;
|
|
74
76
|
if (typeof p.flags.config === "string") {
|
|
@@ -157,6 +159,9 @@ function cmdScan(p) {
|
|
|
157
159
|
const result = scan({ csv, columns });
|
|
158
160
|
if (result.ok) {
|
|
159
161
|
process.stdout.write(`safeseed scan: clean — ${result.scannedRows} rows, no candidate PII\n`);
|
|
162
|
+
process.stdout.write(" note: scan flags real data OUTSIDE the reserved ranges; real data that happens to look reserved " +
|
|
163
|
+
"(a real mailbox at example.com, a real 555-01xx line) is NOT flagged. " +
|
|
164
|
+
'Clean means "nothing provably-unreserved found," not "no real PII."\n');
|
|
160
165
|
}
|
|
161
166
|
else {
|
|
162
167
|
process.stdout.write(`safeseed scan: ${result.findings.length} candidate(s) across ${result.scannedRows} rows\n`);
|
|
@@ -185,6 +190,13 @@ function printUsage() {
|
|
|
185
190
|
" safeseed version",
|
|
186
191
|
"",
|
|
187
192
|
"Field types: " + [...VALID_TYPES].join(", "),
|
|
193
|
+
"",
|
|
194
|
+
"Notes:",
|
|
195
|
+
" --seed defaults to 0, so runs without it are fully deterministic (identical",
|
|
196
|
+
" output every time); pass --seed to vary the dataset.",
|
|
197
|
+
" scan flags values OUTSIDE the reserved ranges; real data that happens to look",
|
|
198
|
+
' reserved is not flagged — clean means "nothing provably-unreserved found."',
|
|
199
|
+
"",
|
|
188
200
|
"Exit codes: 0 clean · 1 drift/findings · 2 usage/IO error",
|
|
189
201
|
].join("\n") + "\n");
|
|
190
202
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/generate.d.ts
CHANGED
|
@@ -11,9 +11,12 @@ export interface GenerateOptions {
|
|
|
11
11
|
/** Seed for deterministic output. Same seed + schema => identical dataset. */
|
|
12
12
|
seed: number;
|
|
13
13
|
/**
|
|
14
|
-
* Format-valid mode (default true): render values
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* Format-valid mode (default true): render values in the common wire shape while
|
|
15
|
+
* staying in range (10-digit phones, NNN-NN-NNNN SSNs). "Format-valid" means the
|
|
16
|
+
* SHAPE passes — a strict validator that encodes issuance rules (e.g. an SSN
|
|
17
|
+
* checker that rejects group 00 / serial 0000) will still reject the value, and
|
|
18
|
+
* that is by design: never-issued is the safety property. When false, values are
|
|
19
|
+
* rendered in a looser, even-more-obviously-test form.
|
|
17
20
|
*/
|
|
18
21
|
formatValid?: boolean;
|
|
19
22
|
}
|
package/dist/generate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACjB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAyFD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,gBAAgB,CAmBhE"}
|
package/dist/generate.js
CHANGED
|
@@ -14,7 +14,12 @@ const IPV4_BLOCKS = [
|
|
|
14
14
|
[198, 51, 100],
|
|
15
15
|
[203, 0, 113],
|
|
16
16
|
];
|
|
17
|
-
|
|
17
|
+
// Which never-issued SSN component to force on a row: group "00" or serial "0000".
|
|
18
|
+
// Both are structurally excluded by the SSA's own issuance rules AND absent from the
|
|
19
|
+
// IRS ITIN format, so they are never-issued under both schemes. Areas are drawn from
|
|
20
|
+
// 001-899 (skipping 666), which keeps every generated value entirely outside the
|
|
21
|
+
// 9XX ITIN space — robust even if the IRS expands its ITIN group ranges again.
|
|
22
|
+
const SSN_NEVER_ISSUED_MARKERS = ["group", "serial"];
|
|
18
23
|
const STREET_SUFFIX = ["Way", "St", "Ave", "Rd", "Blvd"];
|
|
19
24
|
const CARD_TEST_NUMBERS = [
|
|
20
25
|
"4242424242424242",
|
|
@@ -59,10 +64,19 @@ function generateValue(type, rng, row, formatValid) {
|
|
|
59
64
|
return `555-${line}`;
|
|
60
65
|
}
|
|
61
66
|
case "ssn": {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
67
|
+
// Never-issued under BOTH the SSA scheme and the IRS ITIN scheme (see catalog):
|
|
68
|
+
// a plausible-looking area in 001-899 (never 666, never the 9XX ITIN space),
|
|
69
|
+
// with group forced to "00" or serial forced to "0000" — components neither
|
|
70
|
+
// authority ever issues. Exactly three RNG draws, same as every prior release,
|
|
71
|
+
// so the shared seeded stream stays aligned and all other columns are
|
|
72
|
+
// byte-identical for a given seed.
|
|
73
|
+
const areaDraw = intBetween(rng, 1, 898);
|
|
74
|
+
const area = pad(areaDraw >= 666 ? areaDraw + 1 : areaDraw, 3);
|
|
75
|
+
const marker = pick(rng, SSN_NEVER_ISSUED_MARKERS);
|
|
76
|
+
if (marker === "group") {
|
|
77
|
+
return `${area}-00-${pad(intBetween(rng, 1, 9999), 4)}`;
|
|
78
|
+
}
|
|
79
|
+
return `${area}-${pad(intBetween(rng, 1, 99), 2)}-0000`;
|
|
66
80
|
}
|
|
67
81
|
case "creditCard":
|
|
68
82
|
return pick(rng, CARD_TEST_NUMBERS);
|
package/dist/generate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/record.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { GeneratedDataset } from "./generate.js";
|
|
2
2
|
import type { FieldType, Tier } from "./types.js";
|
|
3
|
-
export declare const SAFESEED_VERSION = "0.2.
|
|
3
|
+
export declare const SAFESEED_VERSION = "0.2.1";
|
|
4
4
|
export interface FieldRecord {
|
|
5
5
|
name: string;
|
|
6
6
|
type: FieldType;
|
package/dist/record.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAQlD,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,QASb,CAAC;AAEZ,wBAAsB,aAAa,CACjC,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,OAAO,CAAC,SAAS,CAAC,CA2BpB"}
|
package/dist/record.js
CHANGED
|
@@ -13,7 +13,10 @@ import { canonicalColumn } from "./csv.js";
|
|
|
13
13
|
// 0.2.0 adds a per-column `sha256` to every FieldRecord (the basis for opt-in
|
|
14
14
|
// column-scoped verify). It is purely additive — strict whole-file verify is
|
|
15
15
|
// unchanged, and a 0.1.0 record without per-column hashes still verifies strictly.
|
|
16
|
-
|
|
16
|
+
// 0.2.1 ships catalog 2.0.0: the ssn reserved range no longer includes areas
|
|
17
|
+
// 900-999 (the IRS ITIN space — real identifiers), so 0.2.0-era records with 9xx
|
|
18
|
+
// SSNs fail verify by design; verify explains this with a catalog-version warning.
|
|
19
|
+
export const SAFESEED_VERSION = "0.2.1";
|
|
17
20
|
export const ATTESTATION = [
|
|
18
21
|
"This run record attests that the named dataset was generated by SafeSeed from",
|
|
19
22
|
"standards-reserved ranges, with no real input data. It is a tamper-evident",
|
package/dist/record.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3C,8EAA8E;AAC9E,6EAA6E;AAC7E,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAgCxC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,+EAA+E;IAC/E,4EAA4E;IAC5E,+EAA+E;IAC/E,8EAA8E;IAC9E,oCAAoC;IACpC,kFAAkF;IAClF,iFAAiF;IACjF,qEAAqE;CACtE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAyB,EACzB,GAAW,EACX,IAA+B;IAE/B,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAkB,MAAM,OAAO,CAAC,GAAG,CAC7C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,MAAM,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SACjD,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IACF,OAAO;QACL,eAAe,EAAE,gBAAgB;QACjC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,eAAe;QACzD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;QAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM;QACN,aAAa;QACb,WAAW,EAAE,WAAW;QACxB,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9E,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3C,8EAA8E;AAC9E,6EAA6E;AAC7E,mFAAmF;AACnF,6EAA6E;AAC7E,iFAAiF;AACjF,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAgCxC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,+EAA+E;IAC/E,4EAA4E;IAC5E,+EAA+E;IAC/E,8EAA8E;IAC9E,oCAAoC;IACpC,kFAAkF;IAClF,iFAAiF;IACjF,qEAAqE;CACtE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAyB,EACzB,GAAW,EACX,IAA+B;IAE/B,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAkB,MAAM,OAAO,CAAC,GAAG,CAC7C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,MAAM,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SACjD,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IACF,OAAO;QACL,eAAe,EAAE,gBAAgB;QACjC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,eAAe;QACzD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;QAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM;QACN,aAAa;QACb,WAAW,EAAE,WAAW;QACxB,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9E,CAAC;AACJ,CAAC"}
|
package/dist/verify.d.ts
CHANGED
|
@@ -16,7 +16,11 @@ export interface VerifyResult {
|
|
|
16
16
|
};
|
|
17
17
|
/** Columns present in the file but not declared in the record (column-scoped mode). */
|
|
18
18
|
unattestedColumns: string[];
|
|
19
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Non-fatal notes, e.g. a 0.1.0 record with no per-column hash → range-only
|
|
21
|
+
* fallback, or a record made under an older catalog whose reserved ranges have
|
|
22
|
+
* since changed (in which case range failures are expected and by design).
|
|
23
|
+
*/
|
|
20
24
|
warnings: string[];
|
|
21
25
|
}
|
|
22
26
|
export interface VerifyOptions {
|
package/dist/verify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAoB7C,MAAM,MAAM,iBAAiB,GACzB,uBAAuB,GACvB,oBAAoB,GACpB,iBAAiB,GACjB,oBAAoB,GACpB,gBAAgB,GAChB,sBAAsB,CAAC;AAE3B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,uFAAuF;IACvF,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAsB,MAAM,CAC1B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,aAAa,GACnB,OAAO,CAAC,YAAY,CAAC,CAEvB;AAkLD,+CAA+C;AAC/C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAErD"}
|
package/dist/verify.js
CHANGED
|
@@ -16,14 +16,34 @@
|
|
|
16
16
|
* verify vouches for the synthetic columns; the columns a team adds are out of
|
|
17
17
|
* scope here and must be checked with `scan`.
|
|
18
18
|
*/
|
|
19
|
-
import { getEntry, isReserved } from "./catalog.js";
|
|
19
|
+
import { CATALOG_VERSION, getEntry, isReserved } from "./catalog.js";
|
|
20
20
|
import { sha256Hex } from "./hash.js";
|
|
21
21
|
import { parseCsv, canonicalColumn } from "./csv.js";
|
|
22
|
+
/**
|
|
23
|
+
* When a record was made under a different catalog, the reserved ranges it was
|
|
24
|
+
* generated against may not be the ranges enforced now — most notably catalog
|
|
25
|
+
* 2.0.0 removed SSN areas 900-999 (the IRS ITIN space, which contains real
|
|
26
|
+
* identifiers), so ssn values from catalog-1.0.0 records fail the range check BY
|
|
27
|
+
* DESIGN. There is deliberately no compatibility mode that re-blesses an old
|
|
28
|
+
* range; this warning exists so the failure is explained, not mysterious.
|
|
29
|
+
*/
|
|
30
|
+
function catalogVersionWarning(record) {
|
|
31
|
+
if (record.catalogVersion === undefined || record.catalogVersion === CATALOG_VERSION)
|
|
32
|
+
return null;
|
|
33
|
+
return (`run record was made under catalog ${record.catalogVersion}; this SafeSeed enforces catalog ${CATALOG_VERSION}. ` +
|
|
34
|
+
`Reserved ranges have changed between catalog versions (2.0.0 removed SSN areas 900-999 — the IRS ITIN space, ` +
|
|
35
|
+
`which holds real identifiers), so any out-of-range failures reported may reflect the corrected ranges rather than ` +
|
|
36
|
+
`tampering. Regenerate the dataset and record with the current version.`);
|
|
37
|
+
}
|
|
22
38
|
export async function verify(csv, record, opts) {
|
|
23
39
|
return opts?.allowAddedColumns ? verifyColumnScoped(csv, record) : verifyStrict(csv, record);
|
|
24
40
|
}
|
|
25
41
|
async function verifyStrict(csv, record) {
|
|
26
42
|
const failures = [];
|
|
43
|
+
const warnings = [];
|
|
44
|
+
const versionWarning = catalogVersionWarning(record);
|
|
45
|
+
if (versionWarning !== null)
|
|
46
|
+
warnings.push(versionWarning);
|
|
27
47
|
const actualHash = await sha256Hex(csv);
|
|
28
48
|
if (actualHash !== record.contentSha256) {
|
|
29
49
|
failures.push({
|
|
@@ -79,12 +99,15 @@ async function verifyStrict(csv, record) {
|
|
|
79
99
|
failures,
|
|
80
100
|
checked: { rows: rows.length, fields: record.fields.length },
|
|
81
101
|
unattestedColumns: [],
|
|
82
|
-
warnings
|
|
102
|
+
warnings,
|
|
83
103
|
};
|
|
84
104
|
}
|
|
85
105
|
async function verifyColumnScoped(csv, record) {
|
|
86
106
|
const failures = [];
|
|
87
107
|
const warnings = [];
|
|
108
|
+
const versionWarning = catalogVersionWarning(record);
|
|
109
|
+
if (versionWarning !== null)
|
|
110
|
+
warnings.push(versionWarning);
|
|
88
111
|
const { columns, rows } = parseCsv(csv);
|
|
89
112
|
// The file must stay rectangular: every row matches the header width. This closes
|
|
90
113
|
// the same hole strict mode closes — a trailing unheadered cell can't smuggle in
|
package/dist/verify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "safeseed",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Confirmably-synthetic test data by construction. Generate, attest, verify, and scan non-production data using standards-reserved \"never-real\" ranges. Zero backend, zero runtime dependencies, MIT.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "git+https://github.com/
|
|
8
|
+
"url": "git+https://github.com/advokat-frida/safeseed.git"
|
|
9
9
|
},
|
|
10
|
-
"homepage": "https://github.com/
|
|
10
|
+
"homepage": "https://github.com/advokat-frida/safeseed#readme",
|
|
11
11
|
"bugs": {
|
|
12
|
-
"url": "https://github.com/
|
|
12
|
+
"url": "https://github.com/advokat-frida/safeseed/issues"
|
|
13
13
|
},
|
|
14
14
|
"type": "module",
|
|
15
15
|
"main": "./dist/index.js",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@types/node": "^22.20.0",
|
|
54
54
|
"typescript": "^5.7.3",
|
|
55
|
-
"vitest": "^
|
|
55
|
+
"vitest": "^4.1.9"
|
|
56
56
|
},
|
|
57
57
|
"allowScripts": {
|
|
58
58
|
"esbuild@0.21.5": true
|