@clossys/writer 0.4.0 → 0.5.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.
Files changed (119) hide show
  1. package/README.md +592 -2
  2. package/dist/approval-bypass.d.ts +120 -0
  3. package/dist/approval-bypass.d.ts.map +1 -0
  4. package/dist/approval-bypass.js +2318 -0
  5. package/dist/approval-bypass.js.map +1 -0
  6. package/dist/approval.d.ts +62 -0
  7. package/dist/approval.d.ts.map +1 -0
  8. package/dist/approval.js +421 -0
  9. package/dist/approval.js.map +1 -0
  10. package/dist/approve-cli.d.ts +82 -0
  11. package/dist/approve-cli.d.ts.map +1 -0
  12. package/dist/approve-cli.js +430 -0
  13. package/dist/approve-cli.js.map +1 -0
  14. package/dist/cli.d.ts +15 -0
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +48 -13
  17. package/dist/cli.js.map +1 -1
  18. package/dist/field-options.d.ts +59 -0
  19. package/dist/field-options.d.ts.map +1 -0
  20. package/dist/field-options.js +109 -0
  21. package/dist/field-options.js.map +1 -0
  22. package/dist/front-door-browser.d.ts +5 -0
  23. package/dist/front-door-browser.d.ts.map +1 -0
  24. package/dist/front-door-browser.js +30 -0
  25. package/dist/front-door-browser.js.map +1 -0
  26. package/dist/front-door-core.d.ts +45 -0
  27. package/dist/front-door-core.d.ts.map +1 -0
  28. package/dist/front-door-core.js +224 -0
  29. package/dist/front-door-core.js.map +1 -0
  30. package/dist/front-door.check.d.ts +2 -0
  31. package/dist/front-door.check.d.ts.map +1 -0
  32. package/dist/front-door.check.js +8 -0
  33. package/dist/front-door.check.js.map +1 -0
  34. package/dist/front-door.d.ts +46 -0
  35. package/dist/front-door.d.ts.map +1 -0
  36. package/dist/front-door.js +61 -0
  37. package/dist/front-door.js.map +1 -0
  38. package/dist/generated/advisor-plan-contract.generated.d.ts +3 -0
  39. package/dist/generated/advisor-plan-contract.generated.d.ts.map +1 -0
  40. package/dist/generated/advisor-plan-contract.generated.js +430 -0
  41. package/dist/generated/advisor-plan-contract.generated.js.map +1 -0
  42. package/dist/generated/contract-schema.generated.d.ts +97 -0
  43. package/dist/generated/contract-schema.generated.d.ts.map +1 -0
  44. package/dist/generated/contract-schema.generated.js +496 -0
  45. package/dist/generated/contract-schema.generated.js.map +1 -0
  46. package/dist/index.d.ts +14 -2
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +24 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/messaging-kit.d.ts +113 -0
  51. package/dist/messaging-kit.d.ts.map +1 -0
  52. package/dist/messaging-kit.js +121 -0
  53. package/dist/messaging-kit.js.map +1 -0
  54. package/dist/passage.d.ts +2 -1
  55. package/dist/passage.d.ts.map +1 -1
  56. package/dist/passage.js +2 -1
  57. package/dist/passage.js.map +1 -1
  58. package/dist/plan-authority.d.ts +73 -0
  59. package/dist/plan-authority.d.ts.map +1 -0
  60. package/dist/plan-authority.js +126 -0
  61. package/dist/plan-authority.js.map +1 -0
  62. package/dist/plan-contract.d.ts +16 -0
  63. package/dist/plan-contract.d.ts.map +1 -0
  64. package/dist/plan-contract.js +33 -0
  65. package/dist/plan-contract.js.map +1 -0
  66. package/dist/plan-digest.d.ts +23 -0
  67. package/dist/plan-digest.d.ts.map +1 -0
  68. package/dist/plan-digest.js +82 -0
  69. package/dist/plan-digest.js.map +1 -0
  70. package/dist/plan-rules.d.ts +54 -0
  71. package/dist/plan-rules.d.ts.map +1 -0
  72. package/dist/plan-rules.js +145 -0
  73. package/dist/plan-rules.js.map +1 -0
  74. package/dist/resolve.d.ts +40 -6
  75. package/dist/resolve.d.ts.map +1 -1
  76. package/dist/resolve.js +144 -18
  77. package/dist/resolve.js.map +1 -1
  78. package/dist/scan.d.ts +32 -0
  79. package/dist/scan.d.ts.map +1 -1
  80. package/dist/scan.js +67 -6
  81. package/dist/scan.js.map +1 -1
  82. package/dist/schema.d.ts +1 -0
  83. package/dist/schema.d.ts.map +1 -1
  84. package/dist/schema.js +209 -5
  85. package/dist/schema.js.map +1 -1
  86. package/dist/site-identity.d.ts +88 -0
  87. package/dist/site-identity.d.ts.map +1 -0
  88. package/dist/site-identity.js +82 -0
  89. package/dist/site-identity.js.map +1 -0
  90. package/dist/types.d.ts +65 -7
  91. package/dist/types.d.ts.map +1 -1
  92. package/dist/types.js +9 -7
  93. package/dist/types.js.map +1 -1
  94. package/package.json +11 -6
  95. package/skill/SKILL.md +2 -2
  96. package/src/approval-bypass.ts +2263 -0
  97. package/src/approval.ts +491 -0
  98. package/src/approve-cli.ts +474 -0
  99. package/src/cli.ts +46 -13
  100. package/src/field-options.ts +134 -0
  101. package/src/front-door-browser.ts +31 -0
  102. package/src/front-door-core.ts +265 -0
  103. package/src/front-door.check.ts +10 -0
  104. package/src/front-door.ts +65 -0
  105. package/src/generated/advisor-plan-contract.generated.ts +430 -0
  106. package/src/generated/contract-schema.generated.ts +520 -0
  107. package/src/index.ts +97 -1
  108. package/src/messaging-kit.ts +195 -0
  109. package/src/passage.ts +2 -1
  110. package/src/plan-authority.ts +160 -0
  111. package/src/plan-contract.ts +45 -0
  112. package/src/plan-digest.ts +81 -0
  113. package/src/plan-rules.ts +179 -0
  114. package/src/resolve.ts +185 -19
  115. package/src/scan.ts +97 -6
  116. package/src/schema.ts +223 -5
  117. package/src/site-identity.ts +125 -0
  118. package/src/types.ts +72 -7
  119. package/templates/front-door.en.json +423 -0
package/dist/schema.js CHANGED
@@ -23,6 +23,8 @@
23
23
  * drifted from the sentence — and this is the only place in this package
24
24
  * that catches it.
25
25
  */
26
+ import { COPY_FINGERPRINT_ALGORITHM } from "./fingerprint.js";
27
+ import { isDelegateScopeItem, isEntryInDelegateScope } from "./approval.js";
26
28
  function isPlainObject(value) {
27
29
  return typeof value === "object" && value !== null && !Array.isArray(value);
28
30
  }
@@ -344,6 +346,193 @@ function validateTranslationShape(value, path) {
344
346
  }
345
347
  return findings;
346
348
  }
349
+ /**
350
+ * `YYYY-MM-DDTHH:MM:SS(.sss)?Z` — the one ISO 8601 UTC shape this package
351
+ * accepts for `approvedAt`/`expiresAt`. Also requires `Date.parse` to
352
+ * actually accept it, so a string that merely matches the pattern but names
353
+ * an impossible date (e.g. a bad month) is still rejected.
354
+ */
355
+ const ISO_UTC_TIMESTAMP_RE = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/;
356
+ export function isIsoUtcTimestamp(value) {
357
+ if (typeof value !== "string" || !ISO_UTC_TIMESTAMP_RE.test(value))
358
+ return false;
359
+ const year = Number(value.slice(0, 4));
360
+ const month = Number(value.slice(5, 7));
361
+ const day = Number(value.slice(8, 10));
362
+ const parsed = Date.parse(value);
363
+ if (Number.isNaN(parsed))
364
+ return false;
365
+ const utc = new Date(parsed);
366
+ return utc.getUTCFullYear() === year && utc.getUTCMonth() + 1 === month && utc.getUTCDate() === day;
367
+ }
368
+ /** `textFingerprint` shape: a `sha256` hex digest — 64 lowercase hex characters. */
369
+ const COPY_FINGERPRINT_RE = /^[0-9a-f]{64}$/;
370
+ /**
371
+ * Validates a `CopyRegistryEntry.approval` field, when present. `undefined`
372
+ * is always valid, on any entry — an entry with no approval record keeps
373
+ * resolving exactly as it did before this field existed. Staleness (does
374
+ * `textFingerprint` still match the entry's current `text`) and expiry
375
+ * against "now" are runtime concerns for the resolver (`resolve.ts`) and
376
+ * `assessCopyApprovals` (`approval.ts`), never shape findings here: a
377
+ * registry with a stale or expired record is still a well-formed
378
+ * `CopyRegistry`.
379
+ */
380
+ function validateApprovalShape(value, entryStatus, entryId, path) {
381
+ if (value === undefined)
382
+ return [];
383
+ if (!isPlainObject(value)) {
384
+ return [
385
+ {
386
+ rule: "approval-shape",
387
+ severity: "error",
388
+ message: `${path} must be an object when present, got ${JSON.stringify(value)}.`,
389
+ path,
390
+ },
391
+ ];
392
+ }
393
+ const approvedBy = value.approvedBy;
394
+ const approvedAt = value.approvedAt;
395
+ const textFingerprint = value.textFingerprint;
396
+ const fingerprintAlgorithm = value.fingerprintAlgorithm;
397
+ const delegate = value.delegate;
398
+ const pendingOwnerReview = value.pendingOwnerReview;
399
+ const expiresAt = value.expiresAt;
400
+ const findings = [];
401
+ if (entryStatus !== "approved") {
402
+ findings.push({
403
+ rule: "approval-status-mismatch",
404
+ severity: "error",
405
+ message: `${path} is present but the entry's status is ${JSON.stringify(entryStatus)}, not "approved".`,
406
+ path,
407
+ });
408
+ }
409
+ const isDelegateRecord = approvedBy === "delegate";
410
+ if (approvedBy !== "owner" && approvedBy !== "delegate") {
411
+ findings.push({
412
+ rule: "approval-approved-by",
413
+ severity: "error",
414
+ message: `${path}.approvedBy must be "owner" or "delegate", got ${JSON.stringify(approvedBy)}.`,
415
+ path: `${path}.approvedBy`,
416
+ });
417
+ }
418
+ if (!isIsoUtcTimestamp(approvedAt)) {
419
+ findings.push({
420
+ rule: "approval-approved-at-shape",
421
+ severity: "error",
422
+ message: `${path}.approvedAt must be an ISO 8601 UTC timestamp, got ${JSON.stringify(approvedAt)}.`,
423
+ path: `${path}.approvedAt`,
424
+ });
425
+ }
426
+ if (typeof textFingerprint !== "string" || !COPY_FINGERPRINT_RE.test(textFingerprint)) {
427
+ findings.push({
428
+ rule: "approval-fingerprint-shape",
429
+ severity: "error",
430
+ message: `${path}.textFingerprint must be a 64-character lowercase hex string, got ${JSON.stringify(textFingerprint)}.`,
431
+ path: `${path}.textFingerprint`,
432
+ });
433
+ }
434
+ if (fingerprintAlgorithm !== COPY_FINGERPRINT_ALGORITHM) {
435
+ findings.push({
436
+ rule: "approval-fingerprint-shape",
437
+ severity: "error",
438
+ message: `${path}.fingerprintAlgorithm must be ${JSON.stringify(COPY_FINGERPRINT_ALGORITHM)}, got ${JSON.stringify(fingerprintAlgorithm)}.`,
439
+ path: `${path}.fingerprintAlgorithm`,
440
+ });
441
+ }
442
+ if (isDelegateRecord && delegate === undefined) {
443
+ findings.push({
444
+ rule: "approval-delegate-required",
445
+ severity: "error",
446
+ message: `${path}.delegate is required when approvedBy is "delegate".`,
447
+ path: `${path}.delegate`,
448
+ });
449
+ }
450
+ if (approvedBy === "owner") {
451
+ ["delegate", "pendingOwnerReview", "expiresAt"].forEach((field) => {
452
+ if (value[field] !== undefined) {
453
+ findings.push({
454
+ rule: "approval-delegate-forbidden",
455
+ severity: "error",
456
+ message: `${path}.${field} is forbidden when approvedBy is "owner".`,
457
+ path: `${path}.${field}`,
458
+ });
459
+ }
460
+ });
461
+ }
462
+ // The remaining checks (scope shape, scope membership, pendingOwnerReview,
463
+ // expiresAt) only make sense on an actual delegate record — on an owner
464
+ // record any of these fields is already reported above as forbidden, and
465
+ // shape-checking a field that should not exist would only add noise.
466
+ if (!isDelegateRecord)
467
+ return findings;
468
+ let scopeIsValid = false;
469
+ if (!isPlainObject(delegate)) {
470
+ if (delegate !== undefined) {
471
+ findings.push({
472
+ rule: "approval-delegate-scope-shape",
473
+ severity: "error",
474
+ message: `${path}.delegate must be an object, got ${JSON.stringify(delegate)}.`,
475
+ path: `${path}.delegate`,
476
+ });
477
+ }
478
+ }
479
+ else {
480
+ const delegateId = delegate.id;
481
+ const scope = delegate.scope;
482
+ const idIsValid = isNonEmptyString(delegateId);
483
+ const scopeIsArrayOfItems = Array.isArray(scope) && scope.length > 0 && scope.every((item) => isDelegateScopeItem(item));
484
+ if (!idIsValid || !scopeIsArrayOfItems) {
485
+ findings.push({
486
+ rule: "approval-delegate-scope-shape",
487
+ severity: "error",
488
+ message: `${path}.delegate must have a non-empty string id and a non-empty array scope of well-formed namespace items, got ${JSON.stringify(delegate)}.`,
489
+ path: `${path}.delegate`,
490
+ });
491
+ }
492
+ else {
493
+ scopeIsValid = true;
494
+ }
495
+ if (scopeIsValid && typeof entryId === "string" && !isEntryInDelegateScope(entryId, scope)) {
496
+ findings.push({
497
+ rule: "approval-outside-delegate-scope",
498
+ severity: "error",
499
+ message: `${path}.delegate scope ${JSON.stringify(scope)} does not cover entry id ${JSON.stringify(entryId)}.`,
500
+ path: `${path}.delegate`,
501
+ });
502
+ }
503
+ }
504
+ if (typeof pendingOwnerReview !== "boolean") {
505
+ findings.push({
506
+ rule: "approval-pending-review-shape",
507
+ severity: "error",
508
+ message: `${path}.pendingOwnerReview must be a boolean when approvedBy is "delegate", got ${JSON.stringify(pendingOwnerReview)}.`,
509
+ path: `${path}.pendingOwnerReview`,
510
+ });
511
+ }
512
+ let expiresAtIsValid = false;
513
+ if (expiresAt !== undefined) {
514
+ if (!isIsoUtcTimestamp(expiresAt)) {
515
+ findings.push({
516
+ rule: "approval-expires-at-shape",
517
+ severity: "error",
518
+ message: `${path}.expiresAt must be an ISO 8601 UTC timestamp when present, got ${JSON.stringify(expiresAt)}.`,
519
+ path: `${path}.expiresAt`,
520
+ });
521
+ }
522
+ else {
523
+ expiresAtIsValid = true;
524
+ }
525
+ }
526
+ if (expiresAtIsValid && isIsoUtcTimestamp(approvedAt) && Date.parse(expiresAt) <= Date.parse(approvedAt)) {
527
+ findings.push({
528
+ rule: "approval-expires-before-approved",
529
+ severity: "error",
530
+ message: `${path}.expiresAt ${JSON.stringify(expiresAt)} must be strictly after ${path}.approvedAt ${JSON.stringify(approvedAt)}.`,
531
+ path: `${path}.expiresAt`,
532
+ });
533
+ }
534
+ return findings;
535
+ }
347
536
  /**
348
537
  * Validates the stronger registry shape used to resolve `CopyRef`s. A plain
349
538
  * `CopyRecord` deliberately remains valid for source scanning and voice
@@ -415,6 +604,7 @@ export function validateCopyRegistryShape(value) {
415
604
  });
416
605
  }
417
606
  findings.push(...validateTranslationShape(entry.translation, `entries.${i}.translation`));
607
+ findings.push(...validateApprovalShape(entry.approval, entry.status, entry.id, `entries.${i}.approval`));
418
608
  });
419
609
  }
420
610
  return findings;
@@ -450,11 +640,25 @@ function buildCopyRecord(value) {
450
640
  }
451
641
  function buildCopyRegistry(value) {
452
642
  const record = buildCopyRecord(value);
453
- const entries = value.entries.map((entry) => ({
454
- ...record.entries.find((item) => item.id === entry.id),
455
- status: entry.status,
456
- translation: entry.translation,
457
- }));
643
+ const entries = value.entries.map((entry) => {
644
+ const built = {
645
+ ...record.entries.find((item) => item.id === entry.id),
646
+ status: entry.status,
647
+ translation: entry.translation,
648
+ };
649
+ // Only copy `approval` when the input entry actually has one — an
650
+ // `approval: undefined` key would still make `"approval" in entry` true,
651
+ // breaking the "no record at all" case `resolve.ts` and `approval.ts`
652
+ // both depend on. Copied defensively (a fresh `delegate.scope` array) so
653
+ // the parsed registry never aliases the caller's own input object.
654
+ if (entry.approval !== undefined) {
655
+ const approval = entry.approval;
656
+ built.approval = approval?.delegate
657
+ ? { ...approval, delegate: { ...approval.delegate, scope: [...approval.delegate.scope] } }
658
+ : { ...approval };
659
+ }
660
+ return built;
661
+ });
458
662
  return {
459
663
  ...record,
460
664
  locale: value.locale,
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAaH,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,qDAAqD,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,SAAS,uBAAuB,CAAC,IAAY,EAAE,IAAY;IACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,yBAAyB,CAAC,KAAc,EAAE,IAAY;IAC7D,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,GAAG,IAAI,4DAA4D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;gBACpG,IAAI;aACL;SACF,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACxB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,oCAAoC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;gBAChF,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,2EAA2E;AAC3E,oEAAoE;AACpE,SAAS,sBAAsB,CAAC,KAAc,EAAE,IAAY;IAC1D,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;IACnG,CAAC;IACD,qEAAqE;IACrE,mEAAmE;IACnE,4DAA4D;IAC5D,mEAAmE;IACnE,gEAAgE;IAChE,0CAA0C;IAC1C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEhC,MAAM,QAAQ,GAAkB,EAAE,CAAC;IAEnC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,IAAI,uCAAuC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;YAC5E,IAAI,EAAE,GAAG,IAAI,KAAK;SACnB,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,IAAI,QAAQ,EAAE,oGAAoG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;YACnJ,IAAI,EAAE,GAAG,IAAI,KAAK;SACnB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,IAAI,yCAAyC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;YAChF,IAAI,EAAE,GAAG,IAAI,OAAO;SACrB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,IAAI,4CAA4C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,wDAAwD;YAC3I,IAAI,EAAE,GAAG,IAAI,UAAU;SACxB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,YAAY,EAAE,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC;IAElF,wEAAwE;IACxE,iEAAiE;IACjE,sEAAsE;IACtE,uEAAuE;IACvE,uEAAuE;IACvE,mEAAmE;IACnE,2CAA2C;IAC3C,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1D,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBACxF,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,+BAA+B;oBACrC,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,GAAG,IAAI,iBAAiB,CAAC,cAAc,IAAI,WAAW,IAAI,yBAAyB,IAAI,QAAQ;oBACxG,IAAI,EAAE,GAAG,IAAI,iBAAiB,CAAC,EAAE;iBAClC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,IAAI,yDAAyD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG;YACnG,IAAI,EAAE,GAAG,IAAI,UAAU;SACxB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5D,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,IAAI,2DAA2D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG;YACvG,IAAI,EAAE,GAAG,IAAI,YAAY;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC/E,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,GAAG,IAAI,gEAAgE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG;gBAC3G,IAAI,EAAE,GAAG,IAAI,WAAW;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,kCAAkC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACjH,CAAC;IAED,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAE9B,MAAM,QAAQ,GAAkB,EAAE,CAAC;IAEnC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,sCAAsC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;YACpE,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,iCAAiC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG;YACpE,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE/F,uEAAuE;QACvE,uEAAuE;QACvE,qEAAqE;QACrE,qEAAqE;QACrE,gEAAgE;QAChE,sEAAsE;QACtE,wDAAwD;QACxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAuB,CAAC,CAAC,4BAA4B;QACzE,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBAAE,OAAO;YAClC,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAChE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,WAAW,CAAC,QAAQ,OAAO,wBAAwB,UAAU,4DAA4D;oBAClI,IAAI,EAAE,WAAW,CAAC,KAAK;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,wBAAwB,CAAC,KAAc,EAAE,IAAY;IAC5D,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL;gBACE,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,GAAG,IAAI,wCAAwC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;gBAChF,IAAI;aACL;SACF,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAClD,MAAM,oBAAoB,GAAG,KAAK,CAAC,oBAAoB,CAAC;IACxD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACxC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACxC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAEpC,MAAM,QAAQ,GAAkB,EAAE,CAAC;IAEnC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,sCAAsC;YAC5C,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,IAAI,sDAAsD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG;YAC1G,IAAI,EAAE,GAAG,IAAI,oBAAoB;SAClC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,yCAAyC;YAC/C,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,IAAI,yDAAyD,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG;YAChH,IAAI,EAAE,GAAG,IAAI,uBAAuB;SACrC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,iCAAiC;YACvC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,IAAI,oEAAoE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG;YACnH,IAAI,EAAE,GAAG,IAAI,eAAe;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;QAClE,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,iCAAiC;YACvC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,IAAI,8DAA8D,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG;YAC7G,IAAI,EAAE,GAAG,IAAI,eAAe;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,+BAA+B;YACrC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,IAAI,+EAA+E,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG;YAC5H,IAAI,EAAE,GAAG,IAAI,aAAa;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,+BAA+B;YACrC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,IAAI,4DAA4D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG;YACzG,IAAI,EAAE,GAAG,IAAI,aAAa;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE3C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAE9B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,uBAAuB;YAC7B,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,8CAA8C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG;YAChF,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,yBAAyB;YAC/B,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,yDAAyD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG;YAC7F,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,uBAAuB;YAC7B,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,yDAAyD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG;YAC3F,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACvE,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,sBAAsB;gBAC5B,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,mEAAmE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;gBACnG,IAAI,EAAE,aAAa;aACpB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,iCAAiC;gBACvC,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,yEAAyE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG;gBAC9G,IAAI,EAAE,kBAAkB;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBAAE,OAAO;YAClC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,oBAAoB;oBAC1B,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,WAAW,CAAC,0DAA0D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;oBAC9G,IAAI,EAAE,WAAW,CAAC,SAAS;iBAC5B,CAAC,CAAC;YACL,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,eAAe,CAAC,KAA8B;IACrD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAoB,CAAC;IAE9C,MAAM,YAAY,GAAgB,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,GAA8B,CAAC;QAC7C,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,EAAY;YACtB,IAAI,EAAE,KAAK,CAAC,IAAc;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAiB;YAChC,YAAY,EAAE,CAAC,GAAG,CAAE,KAAK,CAAC,YAAqC,IAAI,EAAE,CAAC,CAAC;YACvE,OAAO,EAAE,KAAK,CAAC,OAA6B;YAC5C,SAAS,EAAE,KAAK,CAAC,SAA+B;YAChD,QAAQ,EAAE,KAAK,CAAC,QAA8B;SAC/C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAY;QACtB,OAAO,EAAE,YAAY;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA8B;IACvD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,OAAO,GAAI,KAAK,CAAC,OAA0C,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChF,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAE;QACvD,MAAM,EAAE,KAAK,CAAC,MAAyB;QACvC,WAAW,EAAE,KAAK,CAAC,WAA+C;KACnE,CAAC,CAAwB,CAAC;IAE3B,OAAO;QACL,GAAG,MAAM;QACT,MAAM,EAAE,KAAK,CAAC,MAAgB;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAkB;QAClC,MAAM,EAAE,KAAK,CAAC,MAAoB;QAClC,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,sDAAsD,MAAM,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,wEAAwE;IACxE,8DAA8D;IAC9D,OAAO,eAAe,CAAC,KAAgC,CAAC,CAAC;AAC3D,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,QAAQ,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,0DAA0D,MAAM,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,iBAAiB,CAAC,KAAgC,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * The site-identity copy kind: a site's name and tagline, resolved from a
3
+ * `CopyRegistry` under two reserved entry ids.
4
+ *
5
+ * A page-metadata consumer needs exactly two short strings — what the site
6
+ * is called and one line about it — and needs them to carry the same
7
+ * approval evidence as any other rendered copy. This module does not add a
8
+ * second approval path for them. It asks `resolveCopyRef` for
9
+ * `"site.name"` and `"site.tagline"`, so whatever that resolver refuses
10
+ * (a draft entry, an approval record that no longer matches its text, an
11
+ * expired delegate approval, a delegate approval on `"production"` without
12
+ * the caller's opt-in, a locale mismatch, an unknown id, an invalid
13
+ * registry or options object) is refused here for the same reason.
14
+ *
15
+ * On top of that resolver this module adds two refusals of its own,
16
+ * because a name and a tagline are literal text rather than templates: an
17
+ * entry that declares placeholders (or whose text the resolver would
18
+ * rewrite), and a resolved text that is blank after trimming.
19
+ *
20
+ * The result is all-or-nothing. Both fields are always attempted so a
21
+ * caller sees every problem at once, but `identity` and `resolutions` are
22
+ * present only when both fields resolved — there is no partial identity.
23
+ * Nothing here throws for any input; malformed input yields a result with
24
+ * `complete: false` and an issue. Nothing here reads a brand-facts record
25
+ * or consumes the result; wiring it into a page-metadata builder is a
26
+ * separate change.
27
+ *
28
+ * No real copy ships here. The ids are reserved names; the words are the
29
+ * consumer's own.
30
+ */
31
+ import type { CopyResolveIssue, CopyResolveIssueReason, CopyResolveOptions } from "./resolve.js";
32
+ import type { CopyRegistry, CopyResolution } from "./types.js";
33
+ /** Reserved copy id for the site's name. */
34
+ export declare const SITE_NAME_COPY_ID = "site.name";
35
+ /** Reserved copy id for the site's tagline. */
36
+ export declare const SITE_TAGLINE_COPY_ID = "site.tagline";
37
+ /** Both reserved site-identity copy ids, name first. */
38
+ export declare const SITE_IDENTITY_COPY_IDS: readonly ["site.name", "site.tagline"];
39
+ /** Which half of the site identity an issue is about. */
40
+ export type SiteIdentityField = "name" | "tagline";
41
+ /**
42
+ * Every reason `resolveSiteIdentity` can report: whatever `resolveCopyRef`
43
+ * refuses, plus the two refusals specific to site identity.
44
+ * `"site-identity-blank"` means the resolved text was empty after trimming;
45
+ * `"site-identity-placeholder"` means the entry declares placeholders or
46
+ * its text is one the resolver would rewrite.
47
+ */
48
+ export type SiteIdentityIssueReason = CopyResolveIssueReason | "site-identity-blank" | "site-identity-placeholder";
49
+ /** One reason a site identity could not be resolved, tagged with its field. */
50
+ export interface SiteIdentityIssue extends Omit<CopyResolveIssue, "reason"> {
51
+ reason: SiteIdentityIssueReason;
52
+ field: SiteIdentityField;
53
+ }
54
+ /**
55
+ * The outcome of `resolveSiteIdentity`. `identity` and `resolutions` are
56
+ * present only when `complete` is `true`; `issues` is empty exactly then.
57
+ */
58
+ export interface SiteIdentityResolution {
59
+ complete: boolean;
60
+ identity?: {
61
+ name: string;
62
+ tagline: string;
63
+ };
64
+ resolutions?: {
65
+ name: CopyResolution;
66
+ tagline: CopyResolution;
67
+ };
68
+ issues: SiteIdentityIssue[];
69
+ }
70
+ /** `CopyResolveOptions` plus the requested locale, which is a ref field for the underlying resolver. */
71
+ export type SiteIdentityOptions = CopyResolveOptions & {
72
+ locale?: string;
73
+ };
74
+ /**
75
+ * Resolves the site's name and tagline from `registry`, under
76
+ * `"site.name"` and `"site.tagline"`. Both are attempted on every call and
77
+ * every issue is reported, tagged with its `field`; `identity` and
78
+ * `resolutions` are returned only when both resolved.
79
+ *
80
+ * `options` are `resolveCopyRef`'s (`target`, `acceptDelegateInProduction`,
81
+ * `now`) plus an optional `locale`, which is forwarded as the ref's locale
82
+ * rather than as an option. Malformed options (including a blank or
83
+ * non-string `locale`) produce an `"invalid-options"` issue per field. Pure
84
+ * apart from the clock read that `now` defaults to; the registry is not
85
+ * modified and no input makes this throw.
86
+ */
87
+ export declare function resolveSiteIdentity(registry: CopyRegistry | unknown, options?: SiteIdentityOptions | unknown): SiteIdentityResolution;
88
+ //# sourceMappingURL=site-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site-identity.d.ts","sourceRoot":"","sources":["../src/site-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D,4CAA4C;AAC5C,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C,+CAA+C;AAC/C,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,wCAAqD,CAAC;AAEzF,yDAAyD;AACzD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG,sBAAsB,GAAG,qBAAqB,GAAG,2BAA2B,CAAC;AAEnH,+EAA+E;AAC/E,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC;IACzE,MAAM,EAAE,uBAAuB,CAAC;IAChC,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,cAAc,CAAA;KAAE,CAAC;IAChE,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAED,wGAAwG;AACxG,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAc3E;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,YAAY,GAAG,OAAO,EAChC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,GACtC,sBAAsB,CAmBxB"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * The site-identity copy kind: a site's name and tagline, resolved from a
3
+ * `CopyRegistry` under two reserved entry ids.
4
+ *
5
+ * A page-metadata consumer needs exactly two short strings — what the site
6
+ * is called and one line about it — and needs them to carry the same
7
+ * approval evidence as any other rendered copy. This module does not add a
8
+ * second approval path for them. It asks `resolveCopyRef` for
9
+ * `"site.name"` and `"site.tagline"`, so whatever that resolver refuses
10
+ * (a draft entry, an approval record that no longer matches its text, an
11
+ * expired delegate approval, a delegate approval on `"production"` without
12
+ * the caller's opt-in, a locale mismatch, an unknown id, an invalid
13
+ * registry or options object) is refused here for the same reason.
14
+ *
15
+ * On top of that resolver this module adds two refusals of its own,
16
+ * because a name and a tagline are literal text rather than templates: an
17
+ * entry that declares placeholders (or whose text the resolver would
18
+ * rewrite), and a resolved text that is blank after trimming.
19
+ *
20
+ * The result is all-or-nothing. Both fields are always attempted so a
21
+ * caller sees every problem at once, but `identity` and `resolutions` are
22
+ * present only when both fields resolved — there is no partial identity.
23
+ * Nothing here throws for any input; malformed input yields a result with
24
+ * `complete: false` and an issue. Nothing here reads a brand-facts record
25
+ * or consumes the result; wiring it into a page-metadata builder is a
26
+ * separate change.
27
+ *
28
+ * No real copy ships here. The ids are reserved names; the words are the
29
+ * consumer's own.
30
+ */
31
+ import { prepareOptions, resolveField } from "./field-options.js";
32
+ /** Reserved copy id for the site's name. */
33
+ export const SITE_NAME_COPY_ID = "site.name";
34
+ /** Reserved copy id for the site's tagline. */
35
+ export const SITE_TAGLINE_COPY_ID = "site.tagline";
36
+ /** Both reserved site-identity copy ids, name first. */
37
+ export const SITE_IDENTITY_COPY_IDS = [SITE_NAME_COPY_ID, SITE_TAGLINE_COPY_ID];
38
+ const FIELDS = [
39
+ { field: "name", id: SITE_NAME_COPY_ID },
40
+ { field: "tagline", id: SITE_TAGLINE_COPY_ID },
41
+ ];
42
+ const LABELS = {
43
+ optionsSubject: "Site identity",
44
+ entrySubject: (id) => `Site identity "${id}"`,
45
+ placeholderReason: "site-identity-placeholder",
46
+ blankReason: "site-identity-blank",
47
+ };
48
+ /**
49
+ * Resolves the site's name and tagline from `registry`, under
50
+ * `"site.name"` and `"site.tagline"`. Both are attempted on every call and
51
+ * every issue is reported, tagged with its `field`; `identity` and
52
+ * `resolutions` are returned only when both resolved.
53
+ *
54
+ * `options` are `resolveCopyRef`'s (`target`, `acceptDelegateInProduction`,
55
+ * `now`) plus an optional `locale`, which is forwarded as the ref's locale
56
+ * rather than as an option. Malformed options (including a blank or
57
+ * non-string `locale`) produce an `"invalid-options"` issue per field. Pure
58
+ * apart from the clock read that `now` defaults to; the registry is not
59
+ * modified and no input makes this throw.
60
+ */
61
+ export function resolveSiteIdentity(registry, options) {
62
+ const prepared = prepareOptions(options);
63
+ const issues = [];
64
+ const resolved = {};
65
+ for (const { field, id } of FIELDS) {
66
+ const outcome = resolveField(registry, field, id, prepared, LABELS);
67
+ issues.push(...outcome.issues);
68
+ if (outcome.resolution)
69
+ resolved[field] = outcome.resolution;
70
+ }
71
+ const name = resolved.name;
72
+ const tagline = resolved.tagline;
73
+ if (issues.length > 0 || !name || !tagline)
74
+ return { complete: false, issues };
75
+ return {
76
+ complete: true,
77
+ identity: { name: name.text, tagline: tagline.text },
78
+ resolutions: { name, tagline },
79
+ issues: [],
80
+ };
81
+ }
82
+ //# sourceMappingURL=site-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site-identity.js","sourceRoot":"","sources":["../src/site-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlE,4CAA4C;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAE7C,+CAA+C;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAEnD,wDAAwD;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,iBAAiB,EAAE,oBAAoB,CAAU,CAAC;AAkCzF,MAAM,MAAM,GAAwD;IAClE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,iBAAiB,EAAE;IACxC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,oBAAoB,EAAE;CAC/C,CAAC;AAEF,MAAM,MAAM,GAAqE;IAC/E,cAAc,EAAE,eAAe;IAC/B,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,EAAE,GAAG;IAC7C,iBAAiB,EAAE,2BAA2B;IAC9C,WAAW,EAAE,qBAAqB;CACnC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgC,EAChC,OAAuC;IAEvC,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAuD,EAAE,CAAC;IACxE,KAAK,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,MAAM,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,UAAU;YAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/D,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/E,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;QACpD,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QAC9B,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC"}
package/dist/types.d.ts CHANGED
@@ -28,13 +28,15 @@
28
28
  * This file ships no example content of anyone's real copy. Every field
29
29
  * here is either required-and-generic or a structural placeholder —
30
30
  * filling in an actual product's actual sentences is a consumer's job.
31
- * See "The single most important constraint" in the README: this package
32
- * is to `@clossys/writer/voice` what `@example/ui` is to
33
- * `@example/ui/tokens` — a vocabulary layer over a contract layer,
34
- * never a source of real words. If a doc comment, a test fixture, or a
35
- * README example in this package ever reads like something a product
36
- * would actually show a user, that is a bug in this package, not a
37
- * feature of it.
31
+ * The one exemption is the shipped US English front-door defaults
32
+ * (`front-door.ts`, `FRONT_DOOR_COPY_EN`, and the README's "Front-door
33
+ * copy" section): a closed, reserved set of ids, owned by this package, whose
34
+ * words ship as data so every sign-in surface need not carry its own. Outside
35
+ * that set this package is to `@clossys/writer/voice` what `@example/ui` is
36
+ * to `@example/ui/tokens` — a vocabulary layer over a contract layer, never a
37
+ * source of real words. If a doc comment, a test fixture, or a README example
38
+ * outside the front-door set ever reads like something a product would
39
+ * actually show a user, that is a bug in this package, not a feature of it.
38
40
  */
39
41
  /**
40
42
  * A stable address for one `CopyEntry`, unique within its `CopyRecord`.
@@ -201,6 +203,40 @@ export interface CopyTranslationProvenance {
201
203
  /** Opaque reviewer identifier, mirroring `translatedBy` — never a personal name. */
202
204
  reviewedBy?: string;
203
205
  }
206
+ /** Who recorded an approval: the copy owner, or a delegate acting for them. */
207
+ export type CopyApprover = "owner" | "delegate";
208
+ /**
209
+ * The delegate an approval was recorded by, and the entry-id namespaces they
210
+ * may approve. `id` is an opaque identifier, never a personal name. Each
211
+ * `scope` item is a dot-separated namespace with no wildcard; an entry is in
212
+ * scope when its id equals an item or starts with `item + "."`.
213
+ */
214
+ export interface CopyDelegateScope {
215
+ id: string;
216
+ scope: string[];
217
+ }
218
+ /**
219
+ * The recorded approval of one registry entry, written by
220
+ * `writer-check approve` rather than by hand. `textFingerprint` pins the
221
+ * approval to the exact text that was approved: once `text` changes, the
222
+ * record no longer matches and the resolver refuses the entry
223
+ * (`approval-stale`) until it is approved again.
224
+ */
225
+ export interface CopyApproval {
226
+ approvedBy: CopyApprover;
227
+ /** ISO 8601 UTC timestamp of the approval. */
228
+ approvedAt: string;
229
+ /** `computeCopyFingerprint(entry.text)` at the moment of approval. */
230
+ textFingerprint: string;
231
+ /** The algorithm `textFingerprint` was computed with — `COPY_FINGERPRINT_ALGORITHM`. */
232
+ fingerprintAlgorithm: string;
233
+ /** Required when `approvedBy` is `"delegate"`; forbidden for `"owner"`. */
234
+ delegate?: CopyDelegateScope;
235
+ /** Required when `approvedBy` is `"delegate"`; forbidden for `"owner"`. */
236
+ pendingOwnerReview?: boolean;
237
+ /** Delegate records only: ISO 8601 UTC expiry, strictly after `approvedAt`. */
238
+ expiresAt?: string;
239
+ }
204
240
  /** A `CopyEntry` that is eligible to participate in a rendered registry. */
205
241
  export interface CopyRegistryEntry extends CopyEntry {
206
242
  status: CopyEntryStatus;
@@ -217,6 +253,12 @@ export interface CopyRegistryEntry extends CopyEntry {
217
253
  * never collapsed into one signal.
218
254
  */
219
255
  translation?: CopyTranslationProvenance;
256
+ /**
257
+ * The approval record, present only on an `approved` entry that has one.
258
+ * Optional: an `approved` entry without a record keeps resolving exactly
259
+ * as it did before this field existed. See `CopyApproval`.
260
+ */
261
+ approval?: CopyApproval;
220
262
  }
221
263
  /**
222
264
  * One consumer's complete, registered set of copy entries. This is the
@@ -240,6 +282,20 @@ export interface CopyRegistry extends CopyRecord {
240
282
  source: CopySource;
241
283
  entries: CopyRegistryEntry[];
242
284
  }
285
+ /** The approval facts a resolution carries (`CopyResolution.approval`). */
286
+ export type CopyResolutionApproval = {
287
+ approvedBy: "owner";
288
+ pendingOwnerReview: false;
289
+ } | {
290
+ approvedBy: "delegate";
291
+ pendingOwnerReview: boolean;
292
+ /**
293
+ * Present only when this delegate-approved entry resolved on "production"
294
+ * because the `approvalPlan` authorized it: that plan's canonical digest.
295
+ * Absent when `acceptDelegateInProduction` authorized it, and on "preview".
296
+ */
297
+ authorizingPlanDigest?: string;
298
+ };
243
299
  /** A successful, fully traced resolution of one copy reference. */
244
300
  export interface CopyResolution {
245
301
  ref: CopyRef;
@@ -249,6 +305,8 @@ export interface CopyResolution {
249
305
  locale: CopyLocale;
250
306
  source: CopySource;
251
307
  entryId: CopyEntryId;
308
+ /** Present only when the resolved entry carries an approval record. */
309
+ approval?: CopyResolutionApproval;
252
310
  }
253
311
  /** Resolver shape for callers that need rendered audience text. */
254
312
  export type CopyResolver = (ref: CopyRef) => CopyResolution | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -28,13 +28,15 @@
28
28
  * This file ships no example content of anyone's real copy. Every field
29
29
  * here is either required-and-generic or a structural placeholder —
30
30
  * filling in an actual product's actual sentences is a consumer's job.
31
- * See "The single most important constraint" in the README: this package
32
- * is to `@clossys/writer/voice` what `@example/ui` is to
33
- * `@example/ui/tokens` — a vocabulary layer over a contract layer,
34
- * never a source of real words. If a doc comment, a test fixture, or a
35
- * README example in this package ever reads like something a product
36
- * would actually show a user, that is a bug in this package, not a
37
- * feature of it.
31
+ * The one exemption is the shipped US English front-door defaults
32
+ * (`front-door.ts`, `FRONT_DOOR_COPY_EN`, and the README's "Front-door
33
+ * copy" section): a closed, reserved set of ids, owned by this package, whose
34
+ * words ship as data so every sign-in surface need not carry its own. Outside
35
+ * that set this package is to `@clossys/writer/voice` what `@example/ui` is
36
+ * to `@example/ui/tokens` — a vocabulary layer over a contract layer, never a
37
+ * source of real words. If a doc comment, a test fixture, or a README example
38
+ * outside the front-door set ever reads like something a product would
39
+ * actually show a user, that is a bug in this package, not a feature of it.
38
40
  */
39
41
  export {};
40
42
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG"}