@selvajs/server 1.0.0-beta.8 → 1.0.0

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 (91) hide show
  1. package/README.md +18 -20
  2. package/dist/access/project-access-input.d.ts +13 -16
  3. package/dist/access/project-access-input.d.ts.map +1 -1
  4. package/dist/access/project-access-input.js +2 -2
  5. package/dist/access/project-access-input.js.map +1 -1
  6. package/dist/compute/idempotency.d.ts +18 -22
  7. package/dist/compute/idempotency.d.ts.map +1 -1
  8. package/dist/compute/idempotency.js +10 -14
  9. package/dist/compute/idempotency.js.map +1 -1
  10. package/dist/compute/index.d.ts.map +1 -1
  11. package/dist/compute/index.js +3 -5
  12. package/dist/compute/index.js.map +1 -1
  13. package/dist/compute/limits.d.ts +70 -86
  14. package/dist/compute/limits.d.ts.map +1 -1
  15. package/dist/compute/limits.js +27 -56
  16. package/dist/compute/limits.js.map +1 -1
  17. package/dist/compute/rate-limit.d.ts +41 -53
  18. package/dist/compute/rate-limit.d.ts.map +1 -1
  19. package/dist/compute/rate-limit.js +27 -35
  20. package/dist/compute/rate-limit.js.map +1 -1
  21. package/dist/compute/remote-definition.d.ts +8 -22
  22. package/dist/compute/remote-definition.d.ts.map +1 -1
  23. package/dist/compute/remote-definition.js +9 -19
  24. package/dist/compute/remote-definition.js.map +1 -1
  25. package/dist/compute/safe-url.d.ts +7 -5
  26. package/dist/compute/safe-url.d.ts.map +1 -1
  27. package/dist/compute/safe-url.js +26 -28
  28. package/dist/compute/safe-url.js.map +1 -1
  29. package/dist/definitions/definition-service.d.ts +13 -38
  30. package/dist/definitions/definition-service.d.ts.map +1 -1
  31. package/dist/definitions/definition-service.js +25 -53
  32. package/dist/definitions/definition-service.js.map +1 -1
  33. package/dist/definitions/index.d.ts +1 -1
  34. package/dist/definitions/index.d.ts.map +1 -1
  35. package/dist/definitions/index.js +0 -4
  36. package/dist/definitions/index.js.map +1 -1
  37. package/dist/definitions/load-for-render.d.ts +23 -20
  38. package/dist/definitions/load-for-render.d.ts.map +1 -1
  39. package/dist/definitions/load-for-render.js +37 -40
  40. package/dist/definitions/load-for-render.js.map +1 -1
  41. package/dist/definitions/schema-extraction.d.ts +11 -14
  42. package/dist/definitions/schema-extraction.d.ts.map +1 -1
  43. package/dist/definitions/schema-extraction.js +17 -26
  44. package/dist/definitions/schema-extraction.js.map +1 -1
  45. package/dist/errors/SentryErrorReporter.d.ts +2 -3
  46. package/dist/errors/SentryErrorReporter.d.ts.map +1 -1
  47. package/dist/errors/SentryErrorReporter.js +10 -14
  48. package/dist/errors/SentryErrorReporter.js.map +1 -1
  49. package/dist/http/body-size.d.ts +8 -11
  50. package/dist/http/body-size.d.ts.map +1 -1
  51. package/dist/http/body-size.js +8 -11
  52. package/dist/http/body-size.js.map +1 -1
  53. package/dist/http/redirect.d.ts +3 -7
  54. package/dist/http/redirect.d.ts.map +1 -1
  55. package/dist/http/redirect.js +8 -8
  56. package/dist/http/redirect.js.map +1 -1
  57. package/dist/http/route-classifier.d.ts +20 -24
  58. package/dist/http/route-classifier.d.ts.map +1 -1
  59. package/dist/http/route-classifier.js +6 -7
  60. package/dist/http/route-classifier.js.map +1 -1
  61. package/dist/http/security-headers.d.ts +13 -15
  62. package/dist/http/security-headers.d.ts.map +1 -1
  63. package/dist/http/security-headers.js +10 -12
  64. package/dist/http/security-headers.js.map +1 -1
  65. package/dist/logging/PinoLogger.d.ts +8 -14
  66. package/dist/logging/PinoLogger.d.ts.map +1 -1
  67. package/dist/logging/PinoLogger.js +29 -35
  68. package/dist/logging/PinoLogger.js.map +1 -1
  69. package/dist/logging/requestId.d.ts +20 -28
  70. package/dist/logging/requestId.d.ts.map +1 -1
  71. package/dist/logging/requestId.js +29 -37
  72. package/dist/logging/requestId.js.map +1 -1
  73. package/dist/ops/index.d.ts.map +1 -1
  74. package/dist/ops/index.js +2 -1
  75. package/dist/ops/index.js.map +1 -1
  76. package/dist/ops/semver.d.ts +22 -24
  77. package/dist/ops/semver.d.ts.map +1 -1
  78. package/dist/ops/semver.js +22 -25
  79. package/dist/ops/semver.js.map +1 -1
  80. package/dist/providers/create-selva-providers.d.ts +19 -27
  81. package/dist/providers/create-selva-providers.d.ts.map +1 -1
  82. package/dist/providers/create-selva-providers.js +28 -34
  83. package/dist/providers/create-selva-providers.js.map +1 -1
  84. package/dist/providers/index.d.ts.map +1 -1
  85. package/dist/providers/index.js +2 -4
  86. package/dist/providers/index.js.map +1 -1
  87. package/dist/tokens/token-codec.d.ts +24 -27
  88. package/dist/tokens/token-codec.d.ts.map +1 -1
  89. package/dist/tokens/token-codec.js +18 -21
  90. package/dist/tokens/token-codec.js.map +1 -1
  91. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../../src/ops/semver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/C;;;;;GAKG;AACH,wBAAgB,WAAW,CAC1B,CAAC,EAAE,MAAM,GACP;IAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAOhE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CASxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAsE7E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,cAAyB,GAChC,OAAO,CAaT"}
1
+ {"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../../src/ops/semver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,WAAW,CAC1B,CAAC,EAAE,MAAM,GACP;IAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAOhE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CASxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAsE7E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,cAAyB,GAChC,OAAO,CAYT"}
@@ -1,15 +1,13 @@
1
1
  /**
2
2
  * Channel-aware semver comparison for update checks. Understands exactly the
3
- * two-channel model Selva-engine deployments publish under: a stable line
4
- * (`x.y.z`, npm `latest`) and a beta line (`x.y.z-beta.N`, npm `beta`).
5
- * Deliberately not a general semver implementation — no build metadata, no
6
- * arbitrary pre-release identifiers.
3
+ * two lines Selva publishes under: stable (`x.y.z`, npm `latest`) and beta
4
+ * (`x.y.z-beta.N`, npm `beta`). Deliberately not general semver — no build
5
+ * metadata, no arbitrary pre-release identifiers.
7
6
  */
8
7
  /**
9
- * Parse `x.y.z` plus an optional `-beta.N` pre-release counter. The
10
- * pre-release number is returned separately so beta-channel comparisons can
11
- * order successive betas of the same x.y.z core. Returns null for anything
12
- * that doesn't lead with a numeric core.
8
+ * Parse `x.y.z` plus an optional `-beta.N` counter. `beta` comes back separate
9
+ * from the core so beta-channel comparisons can order successive betas of one
10
+ * core. Null when the string doesn't lead with a numeric core.
13
11
  */
14
12
  export function parseSemver(v) {
15
13
  const m = /^(\d+)\.(\d+)\.(\d+)(?:-beta\.(\d+))?/.exec(v.trim());
@@ -21,8 +19,8 @@ export function parseSemver(v) {
21
19
  };
22
20
  }
23
21
  /**
24
- * Compare two `x.y.z` cores. Pre-release tails are ignored — callers that care
25
- * about them use `isNewer`, which layers channel rules on top.
22
+ * Compare two `x.y.z` cores, ignoring pre-release tails. Callers that care
23
+ * about those want `isNewer`, which layers the channel rules on top.
26
24
  */
27
25
  export function compareCore(a, b) {
28
26
  const pa = parseSemver(a);
@@ -40,14 +38,14 @@ export function compareCore(a, b) {
40
38
  /**
41
39
  * Does `version` satisfy an `engines.node` range?
42
40
  *
43
- * Deliberately narrow: handles the `>=X`, `>X`, `^X`, `~X`, `=X` and bare-version
44
- * forms Selva and its dependencies actually publish, plus `||` alternatives and
45
- * space-separated conjunctions (`>=18 <21`). Anything it cannot parse returns
46
- * `null` — "unknown", never a false "incompatible", because a wrong block would
47
- * strand an operator who has no way to override a bad parse.
41
+ * Deliberately narrow: handles the `>=`, `>`, `<=`, `<`, `^`, `~`, `=` and
42
+ * bare-version forms Selva and its dependencies publish, plus `||` alternatives
43
+ * and space-separated conjunctions (`>=18 <21`). Anything it can't parse
44
+ * returns `null` for "unknown", never a false "incompatible" — a wrong block
45
+ * would strand an operator with no way to override the bad parse.
48
46
  *
49
- * A full `semver` dependency would subsume this; it isn't warranted for the
50
- * handful of range forms in play (issue #176).
47
+ * A full `semver` dependency would subsume this, but isn't warranted for the
48
+ * handful of range forms in play.
51
49
  */
52
50
  export function satisfiesRange(version, range) {
53
51
  const v = parseSemver(version);
@@ -122,18 +120,18 @@ export function satisfiesRange(version, range) {
122
120
  return anyParsed ? false : null;
123
121
  }
124
122
  /**
125
- * True when `latest` is strictly newer than `current` by semver.
123
+ * True when `latest` is strictly newer than `current`.
126
124
  *
127
- * Stable channel (default): pre-release suffixes are ignored — only stable
125
+ * Stable channel (default): pre-release suffixes are ignored, so only stable
128
126
  * core bumps surface.
129
127
  *
130
- * Beta channel: pre-releases participate. A higher core wins; on an equal
131
- * core, a higher `-beta.N` wins, and a stable (no suffix) outranks any -beta
132
- * of the same core (4.6.0 > 4.6.0-beta.9). This lets an update UI show
133
- * "beta.1 → beta.2" and "beta → stable promotion of the same line".
128
+ * Beta channel: pre-releases participate. A higher core wins; on an equal core
129
+ * a higher `-beta.N` wins, and a stable (no suffix) outranks any -beta of that
130
+ * core (4.6.0 > 4.6.0-beta.9). An update UI can then show both "beta.1 →
131
+ * beta.2" and the promotion of a beta line to stable.
134
132
  *
135
133
  * Unparseable versions fall back to inequality: different strings count as
136
- * "newer" so a weird published version still surfaces, identical ones don't.
134
+ * newer, so an odd published version still surfaces; identical ones don't.
137
135
  */
138
136
  export function isNewer(latest, current, channel = 'stable') {
139
137
  const a = parseSemver(latest);
@@ -146,7 +144,6 @@ export function isNewer(latest, current, channel = 'stable') {
146
144
  if (a.core[i] < b.core[i])
147
145
  return false;
148
146
  }
149
- // Equal core. On the stable channel we don't compare pre-release tails.
150
147
  if (channel !== 'beta')
151
148
  return false;
152
149
  // Stable (beta == null) ranks above any pre-release of the same core.
@@ -1 +1 @@
1
- {"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/ops/semver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/ops/semver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAC1B,CAAS;IAET,MAAM,CAAC,GAAG,uCAAuC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO;QACN,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;KACxC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC/C,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACtC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,KAAa;IAC5D,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpB,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEnC,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,kEAAkE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1F,IAAI,CAAC,CAAC,EAAE,CAAC;gBACR,SAAS,GAAG,KAAK,CAAC;gBAClB,MAAM;YACP,CAAC;YACD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YACvB,MAAM,GAAG,GAAG,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7F,MAAM,MAAM,GAA6B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9E,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE;gBACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;wBAAE,OAAO,CAAC,CAAC;oBACpC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;wBAAE,OAAO,CAAC,CAAC,CAAC;gBACtC,CAAC;gBACD,OAAO,CAAC,CAAC;YACV,CAAC,CAAC,EAAE,CAAC;YAEL,IAAI,EAAW,CAAC;YAChB,QAAQ,EAAE,EAAE,CAAC;gBACZ,KAAK,IAAI;oBACR,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;oBACd,MAAM;gBACP,KAAK,GAAG;oBACP,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;oBACb,MAAM;gBACP,KAAK,IAAI;oBACR,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;oBACd,MAAM;gBACP,KAAK,GAAG;oBACP,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;oBACb,MAAM;gBACP,4EAA4E;gBAC5E,KAAK,GAAG;oBACP,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;oBACzC,MAAM;gBACP,KAAK,GAAG;oBACP,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpE,MAAM;gBACP;oBACC,sEAAsE;oBACtE,oDAAoD;oBACpD,EAAE;wBACD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;4BACvB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;4BACzE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,CAAC,EAAE,EAAE,CAAC;gBACT,GAAG,GAAG,KAAK,CAAC;gBACZ,MAAM;YACP,CAAC;QACF,CAAC;QACD,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,SAAS,GAAG,IAAI,CAAC;QACjB,IAAI,GAAG;YAAE,OAAO,IAAI,CAAC;IACtB,CAAC;IAED,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,OAAO,CACtB,MAAc,EACd,OAAe,EACf,UAA0B,QAAQ;IAElC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,MAAM,KAAK,OAAO,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACzC,CAAC;IACD,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACrC,sEAAsE;IACtE,MAAM,IAAI,GAAG,CAAC,IAAmB,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC"}
@@ -2,11 +2,7 @@ import type { IAuthProvider, IDataProvider, IStorageProvider, ISolveMetricSink,
2
2
  import { type ILogger } from '@selvajs/platform';
3
3
  import { type EnvRecord } from '../compute/limits.js';
4
4
  export type ProviderFactory<T> = (env: EnvRecord) => T;
5
- /**
6
- * The provider implementations available to this deployment, keyed by the
7
- * (lowercase) choice name used in `SELVA_AUTH_PROVIDER` / `SELVA_DATA_PROVIDER`
8
- * / `SELVA_STORAGE_PROVIDER`.
9
- */
5
+ /** Keyed by the lowercased `SELVA_{AUTH,DATA,STORAGE}_PROVIDER` value. */
10
6
  export interface ProviderRegistry {
11
7
  auth: Record<string, ProviderFactory<IAuthProvider>>;
12
8
  data: Record<string, ProviderFactory<IDataProvider>>;
@@ -17,47 +13,43 @@ export interface CreateSelvaProvidersOptions {
17
13
  /** Fallback choice per slot when the env var is unset. Default: `'local'`. */
18
14
  defaults?: Partial<Record<'auth' | 'data' | 'storage', string>>;
19
15
  /**
20
- * Path to an external `selva.config.js` override (absolute or CWD-relative).
21
- * Pass `env.SELVA_CONFIG_PATH` through; when set, the module's default
22
- * export (a `SelvaConfig` or factory) replaces the env-driven wiring.
16
+ * Override module (absolute or CWD-relative); its default export is a
17
+ * `SelvaConfig` or a factory.
23
18
  */
24
19
  configPath?: string;
25
20
  /**
26
- * Boot-summary sink, called once on first `resolve()`. Kept for callers that
27
- * want the rendered one-line string. Default: none — the summary goes to
28
- * `logger` instead, so this library never writes to stdout unbidden.
21
+ * Boot-summary sink, called once on first `resolve()` — for callers that want
22
+ * the rendered string. Default: none, and the summary goes to `logger`
23
+ * instead, so this library never writes to stdout unbidden.
29
24
  */
30
25
  onBoot?: (summary: string) => void;
31
26
  /**
32
- * Structured logger. Receives the boot summary as fields on first `resolve()`
33
- * when `onBoot` is not supplied. Defaults to `NoopLogger`.
27
+ * Receives the boot summary as fields when `onBoot` is unset. Defaults to
28
+ * `NoopLogger`.
34
29
  */
35
30
  logger?: ILogger;
36
31
  }
37
32
  export interface SelvaProviderRuntime {
38
33
  /**
39
- * Memoized provider wiring. The first call instantiates providers from env
40
- * (and may throw if required secrets are missing); subsequent calls return
41
- * the cached config. Never call at build time — provider `fromEnv`
42
- * factories validate required secrets.
34
+ * Memoized wiring. The first call instantiates providers from env and throws
35
+ * if a required secret is missing — never call it at build time.
43
36
  */
44
37
  resolve(): SelvaConfig;
38
+ /** Defaults to `'single'` when the config omits it. */
45
39
  tenancy(): TenancyMode;
46
- /** Resolved branding — every field defaulted so the UI never null-checks. */
40
+ /** Every field defaulted, so the UI never null-checks. */
47
41
  branding(): Required<SelvaBranding>;
48
- /** Safe flag accessor — omitted flags resolve to false. */
42
+ /** Omitted flags resolve to false. */
49
43
  flag(name: keyof SelvaFlags): boolean;
50
- /** Per-solve timing sink; `NoopSolveMetricSink` when the config omits one. */
44
+ /** `NoopSolveMetricSink` when the config omits one. */
51
45
  solveMetricSink(): ISolveMetricSink;
52
46
  }
53
47
  /**
54
- * Build the provider runtime. Loading the *config source* (default factory,
55
- * or the `configPath` override module) happens here and is cheap and
56
- * secret-free — a factory is just a function. The factory is NOT invoked:
57
- * that runs the registry's `fromEnv` factories, which validate required
58
- * secrets, and doing it at import/build time would make merely building the
59
- * app require a full runtime env. Provider instantiation is deferred to the
60
- * first `resolve()`.
48
+ * Loading the config source (default factory, or the `configPath` module) is
49
+ * cheap and secret-free. The factory is deliberately NOT invoked here: that
50
+ * runs the registry's `fromEnv` factories, which validate required secrets, so
51
+ * calling it at import time would make merely building the app require a full
52
+ * runtime env. Providers are instantiated on the first `resolve()`.
61
53
  */
62
54
  export declare function createSelvaProviders(env: EnvRecord, options: CreateSelvaProvidersOptions): Promise<SelvaProviderRuntime>;
63
55
  //# sourceMappingURL=create-selva-providers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-selva-providers.d.ts","sourceRoot":"","sources":["../../src/providers/create-selva-providers.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACX,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,WAAW,EAEX,UAAU,EACV,WAAW,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAkD,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,KAAK,CAAC,CAAC;AAEvD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC;IACrD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACpC;;;;;OAKG;IACH,OAAO,IAAI,WAAW,CAAC;IACvB,OAAO,IAAI,WAAW,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC;IACpC,2DAA2D;IAC3D,IAAI,CAAC,IAAI,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC;IACtC,8EAA8E;IAC9E,eAAe,IAAI,gBAAgB,CAAC;CACpC;AAkGD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACzC,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,2BAA2B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CA+D/B"}
1
+ {"version":3,"file":"create-selva-providers.d.ts","sourceRoot":"","sources":["../../src/providers/create-selva-providers.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACX,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,WAAW,EAEX,UAAU,EACV,WAAW,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAkD,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,KAAK,CAAC,CAAC;AAEvD,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC;IACrD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACpC;;;OAGG;IACH,OAAO,IAAI,WAAW,CAAC;IACvB,uDAAuD;IACvD,OAAO,IAAI,WAAW,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC;IACpC,sCAAsC;IACtC,IAAI,CAAC,IAAI,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC;IACtC,uDAAuD;IACvD,eAAe,IAAI,gBAAgB,CAAC;CACpC;AAiGD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACzC,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,2BAA2B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CA8D/B"}
@@ -1,29 +1,27 @@
1
- // Configurable provider wiring (K5) — the reusable core of the app's
2
- // composition root, extracted so any app built on the engine gets the same
3
- // env-driven provider selection, `selva.config.js` override hook, and lazy
4
- // instantiation without copying it.
1
+ // Configurable provider wiring — the reusable core of an app's composition
2
+ // root.
5
3
  //
6
- // The provider IMPLEMENTATIONS are not bundled: the caller passes a
4
+ // Provider IMPLEMENTATIONS are not bundled: the caller passes a
7
5
  // `ProviderRegistry` mapping choice names (the `SELVA_*_PROVIDER` env values)
8
- // to `fromEnv`-style factories. That keeps this package free of dependencies
9
- // on `@selvajs/local-provider` / `@selvajs/supabase-provider` — a consuming
10
- // app registers exactly the providers it ships.
6
+ // to `fromEnv`-style factories. That keeps this package free of dependencies on
7
+ // `@selvajs/local-provider` / `@selvajs/supabase-provider` — a consuming app
8
+ // registers exactly the providers it ships.
11
9
  //
12
- // Two wiring modes (unchanged from the app):
10
+ // Two wiring modes:
13
11
  //
14
- // Default — providers are picked from env vars (SELVA_AUTH_PROVIDER etc.)
15
- // via the registry. New deployments need only a .env file.
12
+ // Default — providers picked from env vars (SELVA_AUTH_PROVIDER etc.) via the
13
+ // registry. New deployments need only a .env file.
16
14
  //
17
- // Override — pass `configPath` (e.g. env.SELVA_CONFIG_PATH) pointing at an
18
- // external `selva.config.js` (absolute or CWD-relative). It is loaded
19
- // dynamically at boot and replaces the env-driven wiring entirely. The path
20
- // must resolve to an actual `.js` file — there's no TS compiler at runtime.
15
+ // Override — `configPath` points at an external `selva.config.js` (absolute
16
+ // or CWD-relative), loaded dynamically at boot, replacing the env-driven
17
+ // wiring entirely. It must be an actual `.js` file — there's no TS compiler
18
+ // at runtime.
21
19
  import { pathToFileURL } from 'node:url';
22
20
  import { resolve as resolvePath } from 'node:path';
23
21
  import { existsSync } from 'node:fs';
24
22
  import { isFlagEnabled, NoopSolveMetricSink, NoopLogger } from '@selvajs/platform';
25
23
  import { readBool } from '../compute/limits.js';
26
- // Every SelvaFlags key, mapped from `SELVA_FLAG_<KEY>`. The `satisfies` +
24
+ // Every SelvaFlags key, read from `SELVA_FLAG_<KEY>`. The `satisfies` plus the
27
25
  // exhaustiveness check below make adding a platform flag without listing it
28
26
  // here a compile error.
29
27
  const FLAG_KEYS = [
@@ -50,10 +48,10 @@ function pickTenancy(env) {
50
48
  return choice;
51
49
  }
52
50
  /**
53
- * Per-solve metric sink. Supabase's data provider carries a `solveMetrics`
54
- * sink built from its own client bundle — reuse it so timings persist
55
- * automatically. Backends without a metrics table leave it undefined, which
56
- * falls back to `NoopSolveMetricSink` in `solveMetricSink()`.
51
+ * Supabase's data provider carries a `solveMetrics` sink built from its own
52
+ * client bundle — reuse it so timings persist without a second client. Backends
53
+ * with no metrics table return undefined, and `solveMetricSink()` falls back to
54
+ * `NoopSolveMetricSink`.
57
55
  */
58
56
  function pickSolveMetrics(data) {
59
57
  const candidate = data.solveMetrics;
@@ -90,20 +88,17 @@ async function loadConfigSource(options) {
90
88
  if (!existsSync(abs)) {
91
89
  throw new Error(`Config override path ${options.configPath} resolved to ${abs} which does not exist.`);
92
90
  }
93
- // Dynamic specifier — a bundler must not pre-resolve this at build time,
94
- // hence @vite-ignore. pathToFileURL keeps Windows absolute paths valid as
95
- // ESM specifiers.
91
+ // @vite-ignore: a bundler must not pre-resolve this specifier at build time.
92
+ // pathToFileURL keeps Windows absolute paths valid as ESM specifiers.
96
93
  const mod = (await import(/* @vite-ignore */ pathToFileURL(abs).href));
97
94
  return mod.default;
98
95
  }
99
96
  /**
100
- * Build the provider runtime. Loading the *config source* (default factory,
101
- * or the `configPath` override module) happens here and is cheap and
102
- * secret-free — a factory is just a function. The factory is NOT invoked:
103
- * that runs the registry's `fromEnv` factories, which validate required
104
- * secrets, and doing it at import/build time would make merely building the
105
- * app require a full runtime env. Provider instantiation is deferred to the
106
- * first `resolve()`.
97
+ * Loading the config source (default factory, or the `configPath` module) is
98
+ * cheap and secret-free. The factory is deliberately NOT invoked here: that
99
+ * runs the registry's `fromEnv` factories, which validate required secrets, so
100
+ * calling it at import time would make merely building the app require a full
101
+ * runtime env. Providers are instantiated on the first `resolve()`.
107
102
  */
108
103
  export async function createSelvaProviders(env, options) {
109
104
  const raw = await loadConfigSource(options);
@@ -114,10 +109,9 @@ export async function createSelvaProviders(env, options) {
114
109
  if (config)
115
110
  return config;
116
111
  config = typeof raw === 'function' ? raw(env) : raw;
117
- // One-line boot summary so operators can confirm at a glance what got
118
- // wired without grepping env vars or reading the config file. Provider
119
- // names come from the IAuthProvider.name field; data/storage adapters
120
- // don't expose a name, so we infer from the constructor.
112
+ // Boot summary so operators can confirm what got wired without grepping
113
+ // env vars. Auth exposes a `name` field; data/storage adapters don't, so
114
+ // their names come from the constructor.
121
115
  const wiring = {
122
116
  component: 'selva',
123
117
  auth: config.auth.name,
@@ -1 +1 @@
1
- {"version":3,"file":"create-selva-providers.js","sourceRoot":"","sources":["../../src/providers/create-selva-providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-selva-providers.js","sourceRoot":"","sources":["../../src/providers/create-selva-providers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,oBAAoB,EACpB,KAAK,2BAA2B,EAChC,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,oBAAoB,EACpB,KAAK,2BAA2B,EAChC,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,MAAM,6BAA6B,CAAC"}
@@ -1,6 +1,4 @@
1
- // Configurable provider wiring — env-driven provider selection over a
2
- // caller-supplied registry, `selva.config.js` override hook, lazy memoized
3
- // instantiation. The app keeps its own getters (services, error reporting) as
4
- // its composition root; this is the reusable core underneath.
1
+ // Configurable provider wiring — env-driven selection over a caller-supplied
2
+ // registry, with a `selva.config.js` override hook.
5
3
  export { createSelvaProviders } from './create-selva-providers.js';
6
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,2EAA2E;AAC3E,8EAA8E;AAC9E,8DAA8D;AAE9D,OAAO,EACN,oBAAoB,EAKpB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,oDAAoD;AAEpD,OAAO,EACN,oBAAoB,EAKpB,MAAM,6BAA6B,CAAC"}
@@ -2,52 +2,49 @@
2
2
  * HMAC token codec — the primitive behind capability-URL tokens (share links,
3
3
  * invites, and anything shaped like them).
4
4
  *
5
- * ## Two-part design
6
- *
7
- * Each minted token involves TWO secrets:
5
+ * ## Format
6
+ * raw = `<prefix><base64url(32 random bytes)>`
7
+ * hash = base64url( HMAC-SHA256(secret, raw) )
8
8
  *
9
- * 1. **Per-token secret** — generated in `mintRawToken()` from 32 random
10
- * bytes, returned to the caller exactly once at mint time. Different
11
- * every token. This is what end-users carry in `?token=…`.
9
+ * ## Two secrets per token
12
10
  *
13
- * 2. **Instance-wide HMAC secret** (`config.secret`) — used to hash tokens
14
- * for storage. The store sees only `HMAC-SHA256(secret, token)`. A
15
- * DB-only leak therefore can't be replayed: the attacker would need the
16
- * secret too, and it lives in env, not the database.
11
+ * 1. **Per-token entropy** — the 32 random bytes in `mintRawToken()`, handed
12
+ * back exactly once at mint time and never stored. This is what end-users
13
+ * carry in `?token=…`.
17
14
  *
18
- * ## Format
19
- * raw = `<prefix><base64url(32 random bytes)>`
20
- * hash = base64url( HMAC-SHA256(secret, raw) )
15
+ * 2. **Instance-wide HMAC secret** (`config.secret`) — hashes tokens for
16
+ * storage, so the store holds only `HMAC-SHA256(secret, raw)`. A DB-only
17
+ * leak can't be replayed: the attacker also needs the secret, and it lives
18
+ * in env, not the database.
21
19
  *
22
- * The resolution path hashes the supplied token with the same secret and looks
23
- * up by exact match against the stored hash.
20
+ * Resolution hashes the supplied token with the same secret and looks up an
21
+ * exact match against the stored hash.
24
22
  *
25
- * Rotating the secret invalidates every token minted under it — give each
26
- * token family (each prefix) its own secret so they rotate independently.
23
+ * Rotating the secret invalidates every token minted under it — give each token
24
+ * family (each prefix) its own secret so they rotate independently.
27
25
  */
28
26
  /**
29
- * Minimum accepted secret length. Matches the "random ≥32-byte string"
30
- * guidance everywhere these secrets are documented; enforced here so a
31
- * short dev secret can't reach production silently (presence-only checks
32
- * let a 4-char secret through).
27
+ * Minimum accepted secret length, matching the "random ≥32-byte string"
28
+ * guidance these secrets are documented under. Enforced here because a
29
+ * presence-only check lets a 4-char dev secret reach production silently.
33
30
  */
34
31
  export declare const MIN_TOKEN_SECRET_LENGTH = 32;
35
32
  export interface TokenCodecConfig {
36
33
  /** Token-family marker prepended to every raw token, e.g. `share_`. */
37
34
  prefix: string;
38
- /** Instance-wide HMAC secret. Must be at least 32 characters. */
35
+ /** Instance-wide HMAC secret; one per token family so they rotate apart. */
39
36
  secret: string;
40
37
  }
41
38
  export interface TokenCodec {
42
- /** Mint: generate a fresh raw token. Show to the caller exactly once. */
39
+ /** Fresh raw token. Never persisted — show it to the user exactly once. */
43
40
  mintRawToken(): string;
44
- /** Hash a raw token to its store-side representation. */
41
+ /** Raw token to the hash stored in its place. */
45
42
  hashToken(raw: string): string;
46
- /** Constant-time equality for two stored hashes. */
43
+ /** Constant-time compare, so a mismatch leaks no position information. */
47
44
  hashesEqual(a: string, b: string): boolean;
48
- /** Recognize this codec's token format on inbound requests. */
45
+ /** Prefix check — recognizes this family's tokens on inbound requests. */
49
46
  looksLikeToken(value: string): boolean;
50
- /** The configured prefix, for callers that build URLs or error copy. */
47
+ /** For callers building URLs or error copy. */
51
48
  readonly prefix: string;
52
49
  }
53
50
  export declare function createTokenCodec(config: TokenCodecConfig): TokenCodec;
@@ -1 +1 @@
1
- {"version":3,"file":"token-codec.d.ts","sourceRoot":"","sources":["../../src/tokens/token-codec.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAChC,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IAC1B,yEAAyE;IACzE,YAAY,IAAI,MAAM,CAAC;IACvB,yDAAyD;IACzD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,oDAAoD;IACpD,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3C,+DAA+D;IAC/D,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CA2BrE"}
1
+ {"version":3,"file":"token-codec.d.ts","sourceRoot":"","sources":["../../src/tokens/token-codec.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAChC,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IAC1B,2EAA2E;IAC3E,YAAY,IAAI,MAAM,CAAC;IACvB,iDAAiD;IACjD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,0EAA0E;IAC1E,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3C,0EAA0E;IAC1E,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CA2BrE"}
@@ -3,34 +3,31 @@ import { randomBytes, createHmac, timingSafeEqual } from 'node:crypto';
3
3
  * HMAC token codec — the primitive behind capability-URL tokens (share links,
4
4
  * invites, and anything shaped like them).
5
5
  *
6
- * ## Two-part design
7
- *
8
- * Each minted token involves TWO secrets:
6
+ * ## Format
7
+ * raw = `<prefix><base64url(32 random bytes)>`
8
+ * hash = base64url( HMAC-SHA256(secret, raw) )
9
9
  *
10
- * 1. **Per-token secret** — generated in `mintRawToken()` from 32 random
11
- * bytes, returned to the caller exactly once at mint time. Different
12
- * every token. This is what end-users carry in `?token=…`.
10
+ * ## Two secrets per token
13
11
  *
14
- * 2. **Instance-wide HMAC secret** (`config.secret`) — used to hash tokens
15
- * for storage. The store sees only `HMAC-SHA256(secret, token)`. A
16
- * DB-only leak therefore can't be replayed: the attacker would need the
17
- * secret too, and it lives in env, not the database.
12
+ * 1. **Per-token entropy** — the 32 random bytes in `mintRawToken()`, handed
13
+ * back exactly once at mint time and never stored. This is what end-users
14
+ * carry in `?token=…`.
18
15
  *
19
- * ## Format
20
- * raw = `<prefix><base64url(32 random bytes)>`
21
- * hash = base64url( HMAC-SHA256(secret, raw) )
16
+ * 2. **Instance-wide HMAC secret** (`config.secret`) — hashes tokens for
17
+ * storage, so the store holds only `HMAC-SHA256(secret, raw)`. A DB-only
18
+ * leak can't be replayed: the attacker also needs the secret, and it lives
19
+ * in env, not the database.
22
20
  *
23
- * The resolution path hashes the supplied token with the same secret and looks
24
- * up by exact match against the stored hash.
21
+ * Resolution hashes the supplied token with the same secret and looks up an
22
+ * exact match against the stored hash.
25
23
  *
26
- * Rotating the secret invalidates every token minted under it — give each
27
- * token family (each prefix) its own secret so they rotate independently.
24
+ * Rotating the secret invalidates every token minted under it — give each token
25
+ * family (each prefix) its own secret so they rotate independently.
28
26
  */
29
27
  /**
30
- * Minimum accepted secret length. Matches the "random ≥32-byte string"
31
- * guidance everywhere these secrets are documented; enforced here so a
32
- * short dev secret can't reach production silently (presence-only checks
33
- * let a 4-char secret through).
28
+ * Minimum accepted secret length, matching the "random ≥32-byte string"
29
+ * guidance these secrets are documented under. Enforced here because a
30
+ * presence-only check lets a 4-char dev secret reach production silently.
34
31
  */
35
32
  export const MIN_TOKEN_SECRET_LENGTH = 32;
36
33
  export function createTokenCodec(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"token-codec.js","sourceRoot":"","sources":["../../src/tokens/token-codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAsB1C,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACxD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAClC,IAAI,MAAM,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACd,eAAe,MAAM,6BAA6B,uBAAuB,cAAc;YACtF,QAAQ,MAAM,CAAC,MAAM,+CAA+C,CACrE,CAAC;IACH,CAAC;IAED,OAAO;QACN,MAAM;QACN,YAAY;YACX,OAAO,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvD,CAAC;QACD,SAAS,CAAC,GAAW;YACpB,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACrE,CAAC;QACD,WAAW,CAAC,CAAS,EAAE,CAAS;YAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC1C,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,cAAc,CAAC,KAAa;YAC3B,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"token-codec.js","sourceRoot":"","sources":["../../src/tokens/token-codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAsB1C,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACxD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAClC,IAAI,MAAM,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACd,eAAe,MAAM,6BAA6B,uBAAuB,cAAc;YACtF,QAAQ,MAAM,CAAC,MAAM,+CAA+C,CACrE,CAAC;IACH,CAAC;IAED,OAAO;QACN,MAAM;QACN,YAAY;YACX,OAAO,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvD,CAAC;QACD,SAAS,CAAC,GAAW;YACpB,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACrE,CAAC;QACD,WAAW,CAAC,CAAS,EAAE,CAAS;YAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC1C,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,cAAc,CAAC,KAAa;YAC3B,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;KACD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@selvajs/server",
3
- "version": "1.0.0-beta.8",
3
+ "version": "1.0.0",
4
4
  "description": "Transport-agnostic server building blocks for apps built on the Selva engine (limits, rate limiting, SSRF guard, remote-definition fetch, definition service + render loader); the solve core lives in @selvajs/solve/server",
5
5
  "license": "MIT",
6
6
  "author": "VektorNode",
@@ -22,7 +22,7 @@
22
22
  "directory": "packages/server"
23
23
  },
24
24
  "engines": {
25
- "node": ">=22.0.0"
25
+ "node": ">=24.0.0"
26
26
  },
27
27
  "type": "module",
28
28
  "exports": {
@@ -79,9 +79,9 @@
79
79
  "!**/*.spec.*"
80
80
  ],
81
81
  "dependencies": {
82
- "@selvajs/compute": "^4.0.0-beta.5",
83
- "@selvajs/platform": "^0.16.1-beta.2",
84
- "@selvajs/schemas": "^5.0.0-beta.2"
82
+ "@selvajs/compute": "^4.0.0",
83
+ "@selvajs/platform": "^0.17.0",
84
+ "@selvajs/schemas": "^5.0.0"
85
85
  },
86
86
  "peerDependencies": {
87
87
  "@sentry/node": ">=8",
@@ -99,7 +99,7 @@
99
99
  "@types/node": "^26.1.2",
100
100
  "typescript": "~6.0.3",
101
101
  "vitest": "^4.1.10",
102
- "@selvajs/config": "0.0.3"
102
+ "@selvajs/config": "0.0.4"
103
103
  },
104
104
  "scripts": {
105
105
  "build": "tsc",