@ontrails/permits 1.0.0-beta.14 → 1.0.0-beta.15

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 (60) hide show
  1. package/.turbo/turbo-lint.log +1 -1
  2. package/CHANGELOG.md +7 -0
  3. package/README.md +14 -14
  4. package/dist/auth-layer.d.ts +3 -3
  5. package/dist/auth-layer.js +3 -3
  6. package/dist/auth-resource.d.ts +11 -0
  7. package/dist/auth-resource.d.ts.map +1 -0
  8. package/dist/{auth-provision.js → auth-resource.js} +5 -5
  9. package/dist/auth-resource.js.map +1 -0
  10. package/dist/index.d.ts +3 -3
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +3 -3
  13. package/dist/index.js.map +1 -1
  14. package/dist/permit.d.ts +2 -2
  15. package/dist/permit.js +2 -2
  16. package/dist/rules.d.ts +2 -2
  17. package/dist/rules.d.ts.map +1 -1
  18. package/dist/rules.js.map +1 -1
  19. package/dist/testing.d.ts +4 -4
  20. package/dist/testing.d.ts.map +1 -1
  21. package/dist/testing.js +5 -5
  22. package/dist/testing.js.map +1 -1
  23. package/dist/trails/auth-verify.d.ts +2 -2
  24. package/dist/trails/auth-verify.d.ts.map +1 -1
  25. package/dist/trails/auth-verify.js +4 -4
  26. package/dist/trails/auth-verify.js.map +1 -1
  27. package/package.json +2 -2
  28. package/src/__tests__/{auth-gate.test.ts → auth-layer.test.ts} +11 -11
  29. package/src/__tests__/{auth-provision.test.ts → auth-resource.test.ts} +9 -9
  30. package/src/__tests__/auth-verify.test.ts +7 -7
  31. package/src/__tests__/permit.test.ts +1 -1
  32. package/src/__tests__/testing.test.ts +13 -13
  33. package/src/{auth-gate.ts → auth-layer.ts} +9 -9
  34. package/src/{auth-provision.ts → auth-resource.ts} +4 -4
  35. package/src/index.ts +3 -3
  36. package/src/permit.ts +2 -2
  37. package/src/rules.ts +2 -2
  38. package/src/testing.ts +5 -5
  39. package/src/trails/auth-verify.ts +4 -4
  40. package/tsconfig.tests.json +10 -0
  41. package/tsconfig.tsbuildinfo +1 -1
  42. package/dist/adapter.d.ts +0 -26
  43. package/dist/adapter.d.ts.map +0 -1
  44. package/dist/adapter.js +0 -2
  45. package/dist/adapter.js.map +0 -1
  46. package/dist/adapters/jwt.d.ts +0 -25
  47. package/dist/adapters/jwt.d.ts.map +0 -1
  48. package/dist/adapters/jwt.js +0 -148
  49. package/dist/adapters/jwt.js.map +0 -1
  50. package/dist/auth-gate.d.ts +0 -18
  51. package/dist/auth-gate.d.ts.map +0 -1
  52. package/dist/auth-gate.js +0 -56
  53. package/dist/auth-gate.js.map +0 -1
  54. package/dist/auth-provision.d.ts +0 -11
  55. package/dist/auth-provision.d.ts.map +0 -1
  56. package/dist/auth-provision.js.map +0 -1
  57. package/dist/auth-service.d.ts +0 -10
  58. package/dist/auth-service.d.ts.map +0 -1
  59. package/dist/auth-service.js +0 -21
  60. package/dist/auth-service.js.map +0 -1
@@ -1,3 +1,3 @@
1
1
  $ oxlint ./src
2
2
  Found 0 warnings and 0 errors.
3
- Finished in 57ms on 18 files with 93 rules using 24 threads.
3
+ Finished in 73ms on 18 files with 93 rules using 24 threads.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @ontrails/permits
2
2
 
3
+ ## 1.0.0-beta.15
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [4ad6b25]
8
+ - @ontrails/core@1.0.0-beta.15
9
+
3
10
  ## 1.0.0-beta.14
4
11
 
5
12
  ### Minor Changes
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Scope-based authorization for Trails.
4
4
 
5
- The permits package owns the connector-agnostic `authProvision` and `authGate`. Connector packages bind those declarations to concrete auth logic, just like a trailhead connector binds a topo to CLI, MCP, or HTTP.
5
+ The permits package owns the connector-agnostic `authResource` and `authLayer`. Connector packages bind those declarations to concrete auth logic, just like a surface connector binds a topo to CLI, MCP, or HTTP.
6
6
 
7
7
  ## The core pattern
8
8
 
@@ -12,7 +12,7 @@ The permits package owns the connector-agnostic `authProvision` and `authGate`.
12
12
  export const create = trail('gist.create', {
13
13
  permit: { scopes: ['gist:write'] },
14
14
  blaze: async (input, ctx) => {
15
- // authGate enforces scopes before blaze runs
15
+ // authLayer enforces scopes before blaze runs
16
16
  return Result.ok(newGist);
17
17
  },
18
18
  });
@@ -26,19 +26,19 @@ export const search = trail('gist.search', {
26
26
  });
27
27
  ```
28
28
 
29
- ### 2. Register the auth gate
29
+ ### 2. Register the auth layer
30
30
 
31
31
  ```typescript
32
- import { authGate } from '@ontrails/permits';
32
+ import { authLayer } from '@ontrails/permits';
33
33
 
34
- export const app = topo('my-app', gistModule);
35
- // Register authGate with your trailhead
34
+ export const graph = topo('my-app', gistModule);
35
+ // Register authLayer with your surface
36
36
  ```
37
37
 
38
- The gate reads each trail's `permit` field:
38
+ The layer reads each trail's `permit` field:
39
39
 
40
- - `'public'` or `undefined` — gate passes through
41
- - `{ scopes: [...] }` — gate checks that `ctx.permit` contains all required scopes
40
+ - `'public'` or `undefined` — layer passes through
41
+ - `{ scopes: [...] }` — layer checks that `ctx.permit` contains all required scopes
42
42
 
43
43
  ### 3. Bind a connector at bootstrap
44
44
 
@@ -135,19 +135,19 @@ import { authVerify } from '@ontrails/permits';
135
135
 
136
136
  ## Testing with mock permits
137
137
 
138
- Use `mintTestPermit()` and `mintPermitForTrail()` in tests:
138
+ Use `createTestPermit()` and `createPermitForTrail()` in tests:
139
139
 
140
140
  ```typescript
141
- import { mintTestPermit, mintPermitForTrail } from '@ontrails/permits';
141
+ import { createTestPermit, createPermitForTrail } from '@ontrails/permits';
142
142
 
143
- const permit = mintTestPermit({
143
+ const permit = createTestPermit({
144
144
  id: 'user-123',
145
145
  scopes: ['gist:read', 'gist:write'],
146
146
  roles: ['editor'],
147
147
  });
148
148
 
149
- // Mint a permit matching a trail's requirements
150
- const trailPermit = mintPermitForTrail(myTrail);
149
+ // Create a permit matching a trail's requirements
150
+ const trailPermit = createPermitForTrail(myTrail);
151
151
  // { id: 'test-...', scopes: ['gist:write'] }
152
152
  ```
153
153
 
@@ -9,9 +9,9 @@ import type { Layer } from '@ontrails/core';
9
9
  * all required scopes. A superset is fine; missing scopes produce a
10
10
  * `PermitError`.
11
11
  *
12
- * Because `ctx.follow()` re-enters `executeTrail` (which applies layers),
13
- * this layer automatically re-checks on every invocation in a follow chain.
14
- * No special follow-chain handling is needed — it is built into the
12
+ * Because `ctx.cross()` re-enters `executeTrail` (which applies layers),
13
+ * this layer automatically re-checks on every invocation in a crossing chain.
14
+ * No special crossing-chain handling is needed — it is built into the
15
15
  * architecture.
16
16
  */
17
17
  export declare const authLayer: Layer;
@@ -25,9 +25,9 @@ const findMissing = (required, held) => required.filter((s) => !held.includes(s)
25
25
  * all required scopes. A superset is fine; missing scopes produce a
26
26
  * `PermitError`.
27
27
  *
28
- * Because `ctx.follow()` re-enters `executeTrail` (which applies layers),
29
- * this layer automatically re-checks on every invocation in a follow chain.
30
- * No special follow-chain handling is needed — it is built into the
28
+ * Because `ctx.cross()` re-enters `executeTrail` (which applies layers),
29
+ * this layer automatically re-checks on every invocation in a crossing chain.
30
+ * No special crossing-chain handling is needed — it is built into the
31
31
  * architecture.
32
32
  */
33
33
  export const authLayer = {
@@ -0,0 +1,11 @@
1
+ import type { AuthConnector } from './connectors/connector.js';
2
+ /**
3
+ * Auth resource — manages the auth connector lifecycle.
4
+ *
5
+ * The v1 factory returns a no-op connector that always succeeds (null permit).
6
+ * Real connector configuration will come through `ResourceSpec.config`
7
+ * (TRL-91). The mock factory provides a synthetic connector that always
8
+ * succeeds.
9
+ */
10
+ export declare const authResource: import("@ontrails/core").Resource<AuthConnector>;
11
+ //# sourceMappingURL=auth-resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-resource.d.ts","sourceRoot":"","sources":["../src/auth-resource.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,kDAavB,CAAC"}
@@ -1,13 +1,13 @@
1
- import { Result, provision } from '@ontrails/core';
1
+ import { Result, resource } from '@ontrails/core';
2
2
  /**
3
- * Auth provision — manages the auth connector lifecycle.
3
+ * Auth resource — manages the auth connector lifecycle.
4
4
  *
5
5
  * The v1 factory returns a no-op connector that always succeeds (null permit).
6
- * Real connector configuration will come through `ProvisionSpec.config`
6
+ * Real connector configuration will come through `ResourceSpec.config`
7
7
  * (TRL-91). The mock factory provides a synthetic connector that always
8
8
  * succeeds.
9
9
  */
10
- export const authProvision = provision('auth', {
10
+ export const authResource = resource('auth', {
11
11
  create: (_svc) => Result.ok({
12
12
  // oxlint-disable-next-line require-await -- stub connector satisfies async interface
13
13
  authenticate: async () => Result.ok(null),
@@ -19,4 +19,4 @@ export const authProvision = provision('auth', {
19
19
  authenticate: async () => Result.ok(null),
20
20
  }),
21
21
  });
22
- //# sourceMappingURL=auth-provision.js.map
22
+ //# sourceMappingURL=auth-resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-resource.js","sourceRoot":"","sources":["../src/auth-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAIlD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAgB,MAAM,EAAE;IAC1D,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CACf,MAAM,CAAC,EAAE,CAAC;QACR,qFAAqF;QACrF,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;KAClB,CAAC;IAC5B,WAAW,EAAE,0BAA0B;IACvC,IAAI,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE;IACpC,IAAI,EAAE,GAAG,EAAE,CACT,CAAC;QACC,qFAAqF;QACrF,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;KAC1C,CAAyB;CAC7B,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  export { type AuthConnector, type AuthCredentials, type AuthError, } from './connectors/connector.js';
2
2
  export { createJwtConnector, type JwtConnectorOptions, } from './connectors/jwt.js';
3
- export { authGate } from './auth-gate.js';
4
- export { authProvision } from './auth-provision.js';
3
+ export { authLayer } from './auth-layer.js';
4
+ export { authResource } from './auth-resource.js';
5
5
  export { authVerify } from './trails/auth-verify.js';
6
6
  export { PermitError } from './errors.js';
7
7
  export { type PermitExtractionInput } from './extraction.js';
8
8
  export { type Permit, getPermit } from './permit.js';
9
9
  export { validatePermits, type PermitDiagnostic } from './rules.js';
10
- export { mintTestPermit, mintPermitForTrail } from './testing.js';
10
+ export { createTestPermit, createPermitForTrail } from './testing.js';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  export {} from './connectors/connector.js';
2
2
  export { createJwtConnector, } from './connectors/jwt.js';
3
- export { authGate } from './auth-gate.js';
4
- export { authProvision } from './auth-provision.js';
3
+ export { authLayer } from './auth-layer.js';
4
+ export { authResource } from './auth-resource.js';
5
5
  export { authVerify } from './trails/auth-verify.js';
6
6
  export { PermitError } from './errors.js';
7
7
  export {} from './extraction.js';
8
8
  export { getPermit } from './permit.js';
9
9
  export { validatePermits } from './rules.js';
10
- export { mintTestPermit, mintPermitForTrail } from './testing.js';
10
+ export { createTestPermit, createPermitForTrail } from './testing.js';
11
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAA8B,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAe,SAAS,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,eAAe,EAAyB,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAA8B,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAe,SAAS,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,eAAe,EAAyB,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
package/dist/permit.d.ts CHANGED
@@ -9,8 +9,8 @@ export interface Permit extends BasePermit {
9
9
  * Type-safe accessor for `ctx.permit` with a downcast to `Permit`.
10
10
  *
11
11
  * `TrailContext.permit` is typed as `BasePermit` (id + scopes). This accessor
12
- * returns the full `Permit` when the auth gate has set one. Safe because
13
- * the auth gate is the only writer and always sets a full `Permit`.
12
+ * returns the full `Permit` when the auth layer has set one. Safe because
13
+ * the auth layer is the only writer and always sets a full `Permit`.
14
14
  *
15
15
  * @example
16
16
  * ```typescript
package/dist/permit.js CHANGED
@@ -2,8 +2,8 @@
2
2
  * Type-safe accessor for `ctx.permit` with a downcast to `Permit`.
3
3
  *
4
4
  * `TrailContext.permit` is typed as `BasePermit` (id + scopes). This accessor
5
- * returns the full `Permit` when the auth gate has set one. Safe because
6
- * the auth gate is the only writer and always sets a full `Permit`.
5
+ * returns the full `Permit` when the auth layer has set one. Safe because
6
+ * the auth layer is the only writer and always sets a full `Permit`.
7
7
  *
8
8
  * @example
9
9
  * ```typescript
package/dist/rules.d.ts CHANGED
@@ -6,7 +6,7 @@ export interface PermitDiagnostic {
6
6
  readonly severity: 'error' | 'warning';
7
7
  readonly message: string;
8
8
  }
9
- type AnyTrail = Trail<unknown, unknown>;
9
+ type AnyTrail = Trail<unknown, unknown, unknown>;
10
10
  type Rule = (trails: readonly AnyTrail[]) => readonly PermitDiagnostic[];
11
11
  /**
12
12
  * Destructive trails without a real permit declaration are a governance failure.
@@ -42,6 +42,6 @@ export declare const orphanScopeDetection: Rule;
42
42
  * Returns a flat array of diagnostics from every rule. An empty array
43
43
  * means the topo passes all permit governance checks.
44
44
  */
45
- export declare const validatePermits: (trails: readonly Trail<unknown, unknown>[]) => readonly PermitDiagnostic[];
45
+ export declare const validatePermits: (trails: readonly Trail<unknown, unknown, unknown>[]) => readonly PermitDiagnostic[];
46
46
  export {};
47
47
  //# sourceMappingURL=rules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAM5C,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAMD,KAAK,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACxC,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,KAAK,SAAS,gBAAgB,EAAE,CAAC;AAiBzE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,IAU5B,CAAC;AAMR;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,IAU1B,CAAC;AAgBR;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,IAUlC,CAAC;AA2CJ;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,IAMlC,CAAC;AAaF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,QAAQ,SAAS,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,KACzC,SAAS,gBAAgB,EAA8C,CAAC"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAM5C,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAMD,KAAK,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,KAAK,SAAS,gBAAgB,EAAE,CAAC;AAiBzE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,IAU5B,CAAC;AAMR;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,IAU1B,CAAC;AAgBR;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,IAUlC,CAAC;AA2CJ;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,IAMlC,CAAC;AAaF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,QAAQ,SAAS,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,KAClD,SAAS,gBAAgB,EAA8C,CAAC"}
package/dist/rules.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAqBA,oFAAoF;AACpF,MAAM,SAAS,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;AAEnE,wEAAwE;AACxE,MAAM,SAAS,GAAG,CAAC,CAAW,EAAqB,EAAE;IACnD,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACpD,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAS,CAAC,MAAM,EAAE,EAAE,CACnD,MAAM;KACH,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAC1E;KACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,UAAU,CAAC,CAAC,EAAE,kDAAkD;IACzE,IAAI,EAAE,sBAAsB;IAC5B,QAAQ,EAAE,OAAgB;IAC1B,OAAO,EAAE,CAAC,CAAC,EAAE;CACd,CAAC,CAAC,CAAC;AAER,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAS,CAAC,MAAM,EAAE,EAAE,CACjD,MAAM;KACH,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CACzE;KACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,UAAU,CAAC,CAAC,EAAE,8CAA8C;IACrE,IAAI,EAAE,oBAAoB;IAC1B,QAAQ,EAAE,SAAkB;IAC5B,OAAO,EAAE,CAAC,CAAC,EAAE;CACd,CAAC,CAAC,CAAC;AAER,8EAA8E;AAC9E,+BAA+B;AAC/B,8EAA8E;AAE9E,wEAAwE;AACxE,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAW,EAAE;IACpD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,CACL,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAC3B,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAS,CAAC,MAAM,EAAE,EAAE,CACrD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACnB,SAAS,CAAC,CAAC,CAAC;KACT,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;KAC7C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACf,OAAO,EAAE,UAAU,KAAK,eAAe,CAAC,CAAC,EAAE,4CAA4C;IACvF,IAAI,EAAE,wBAAwB;IAC9B,QAAQ,EAAE,SAAkB;IAC5B,OAAO,EAAE,CAAC,CAAC,EAAE;CACd,CAAC,CAAC,CACN,CAAC;AAEJ,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E,gEAAgE;AAChE,MAAM,aAAa,GAAG,CACpB,MAA2B,EACe,EAAE;IAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,wEAAwE;AACxE,MAAM,sBAAsB,GAAG,CAC7B,MAA2B,EACN,EAAE,CACvB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;AAExE,yDAAyD;AACzD,MAAM,iBAAiB,GAAG,CACxB,QAAkD,EACrB,EAAE,CAC/B,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;KACpB,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC;KACnC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACtB,OAAO,EAAE,UAAU,KAAK,4BAA4B,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB;IAClF,IAAI,EAAE,sBAAsB;IAC5B,QAAQ,EAAE,SAAkB;IAC5B,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;CAC3B,CAAC,CAAC,CAAC;AAER;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAS,CAAC,MAAM,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,QAAQ,GAAoB;IAChC,oBAAoB;IACpB,kBAAkB;IAClB,sBAAsB;IACtB,oBAAoB;CACrB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,MAA0C,EACb,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"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"}
package/dist/testing.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import type { PermitRequirement } from '@ontrails/core';
2
2
  import type { Permit } from './permit.js';
3
3
  /**
4
- * Mint a synthetic test permit with exactly the declared scopes.
4
+ * Create a synthetic test permit with exactly the declared scopes.
5
5
  * No admin permit, no wildcard — tests get only what the trail declares.
6
6
  */
7
- export declare const mintTestPermit: (options?: {
7
+ export declare const createTestPermit: (options?: {
8
8
  readonly id?: string;
9
9
  readonly scopes?: readonly string[];
10
10
  readonly roles?: readonly string[];
@@ -12,9 +12,9 @@ export declare const mintTestPermit: (options?: {
12
12
  }) => Permit;
13
13
  /**
14
14
  * Create a test permit matching a trail's permit requirement.
15
- * Extracts scopes from the requirement and mints a permit with exactly those scopes.
15
+ * Extracts scopes from the requirement and creates a permit with exactly those scopes.
16
16
  */
17
- export declare const mintPermitForTrail: (trail: {
17
+ export declare const createPermitForTrail: (trail: {
18
18
  readonly permit?: PermitRequirement | undefined;
19
19
  }) => Permit | undefined;
20
20
  //# sourceMappingURL=testing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,UAAU;IACvC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,KAAG,MAOF,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACjD,KAAG,MAAM,GAAG,SAKZ,CAAC"}
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAU;IACzC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,KAAG,MAOF,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,OAAO;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACjD,KAAG,MAAM,GAAG,SAKZ,CAAC"}
package/dist/testing.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Mint a synthetic test permit with exactly the declared scopes.
2
+ * Create a synthetic test permit with exactly the declared scopes.
3
3
  * No admin permit, no wildcard — tests get only what the trail declares.
4
4
  */
5
- export const mintTestPermit = (options) => ({
5
+ export const createTestPermit = (options) => ({
6
6
  id: options?.id ??
7
7
  `test-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
8
8
  scopes: [...(options?.scopes ?? [])],
@@ -11,12 +11,12 @@ export const mintTestPermit = (options) => ({
11
11
  });
12
12
  /**
13
13
  * Create a test permit matching a trail's permit requirement.
14
- * Extracts scopes from the requirement and mints a permit with exactly those scopes.
14
+ * Extracts scopes from the requirement and creates a permit with exactly those scopes.
15
15
  */
16
- export const mintPermitForTrail = (trail) => {
16
+ export const createPermitForTrail = (trail) => {
17
17
  if (!trail.permit || trail.permit === 'public') {
18
18
  return undefined;
19
19
  }
20
- return mintTestPermit({ scopes: trail.permit.scopes });
20
+ return createTestPermit({ scopes: trail.permit.scopes });
21
21
  };
22
22
  //# sourceMappingURL=testing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAK9B,EAAU,EAAE,CAAC,CAAC;IACb,EAAE,EACA,OAAO,EAAE,EAAE;QACX,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAChE,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IACpC,GAAG,CAAC,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;IACtE,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;CAC3E,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAElC,EAAsB,EAAE;IACvB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAKhC,EAAU,EAAE,CAAC,CAAC;IACb,EAAE,EACA,OAAO,EAAE,EAAE;QACX,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAChE,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IACpC,GAAG,CAAC,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;IACtE,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;CAC3E,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAEpC,EAAsB,EAAE;IACvB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,gBAAgB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Infrastructure trail that verifies a bearer token and returns the resolved permit.
3
3
  *
4
- * Reads the auth connector from `authProvision` — the connector is configured
4
+ * Reads the auth connector from `authResource` — the connector is configured
5
5
  * at bootstrap (e.g. JWT with HMAC secret). The mock connector always
6
6
  * succeeds with a null permit, so `testAll(app)` works without configuration.
7
7
  */
@@ -18,5 +18,5 @@ export declare const authVerify: import("@ontrails/core").Trail<{
18
18
  roles?: string[] | undefined;
19
19
  tenantId?: string | undefined;
20
20
  } | undefined;
21
- }>;
21
+ }, never>;
22
22
  //# sourceMappingURL=auth-verify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-verify.d.ts","sourceRoot":"","sources":["../../src/trails/auth-verify.ts"],"names":[],"mappings":"AA4CA;;;;;;GAMG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;EAiDrB,CAAC"}
1
+ {"version":3,"file":"auth-verify.d.ts","sourceRoot":"","sources":["../../src/trails/auth-verify.ts"],"names":[],"mappings":"AA4CA;;;;;;GAMG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;SAiDrB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Result, TRAILHEAD_KEY, trail } from '@ontrails/core';
2
2
  import { z } from 'zod';
3
- import { authProvision } from '../auth-provision.js';
3
+ import { authResource } from '../auth-resource.js';
4
4
  const permitSchema = z.object({
5
5
  id: z.string(),
6
6
  metadata: z.record(z.string(), z.unknown()).optional(),
@@ -31,13 +31,13 @@ const getTrailhead = (ctx) => {
31
31
  /**
32
32
  * Infrastructure trail that verifies a bearer token and returns the resolved permit.
33
33
  *
34
- * Reads the auth connector from `authProvision` — the connector is configured
34
+ * Reads the auth connector from `authResource` — the connector is configured
35
35
  * at bootstrap (e.g. JWT with HMAC secret). The mock connector always
36
36
  * succeeds with a null permit, so `testAll(app)` works without configuration.
37
37
  */
38
38
  export const authVerify = trail('auth.verify', {
39
39
  blaze: async (input, ctx) => {
40
- const connector = authProvision.from(ctx);
40
+ const connector = authResource.from(ctx);
41
41
  const result = await connector.authenticate({
42
42
  bearerToken: input.token,
43
43
  requestId: ctx.requestId,
@@ -80,6 +80,6 @@ export const authVerify = trail('auth.verify', {
80
80
  permit: permitSchema.optional(),
81
81
  valid: z.boolean(),
82
82
  }),
83
- provisions: [authProvision],
83
+ resources: [authResource],
84
84
  });
85
85
  //# sourceMappingURL=auth-verify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-verify.js","sourceRoot":"","sources":["../../src/trails/auth-verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-verify.js","sourceRoot":"","sources":["../../src/trails/auth-verify.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ontrails/permits",
3
- "version": "1.0.0-beta.14",
3
+ "version": "1.0.0-beta.15",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./src/index.ts",
@@ -15,7 +15,7 @@
15
15
  "clean": "rm -rf dist *.tsbuildinfo"
16
16
  },
17
17
  "peerDependencies": {
18
- "@ontrails/core": "^1.0.0-beta.13",
18
+ "@ontrails/core": "^1.0.0-beta.14",
19
19
  "zod": "^4.3.5"
20
20
  }
21
21
  }
@@ -1,11 +1,11 @@
1
- /* oxlint-disable require-await -- gate wrappers satisfy async interfaces without awaiting */
1
+ /* oxlint-disable require-await -- layer wrappers satisfy async interfaces without awaiting */
2
2
  import { describe, expect, test } from 'bun:test';
3
3
 
4
4
  import { Result, trail } from '@ontrails/core';
5
5
  import type { TrailContext } from '@ontrails/core';
6
6
  import { z } from 'zod';
7
7
 
8
- import { authGate } from '../auth-gate';
8
+ import { authLayer } from '../auth-layer';
9
9
  import { PermitError } from '../errors';
10
10
 
11
11
  // ---------------------------------------------------------------------------
@@ -27,10 +27,10 @@ const okImpl = async () => Result.ok({ done: true });
27
27
  // Tests
28
28
  // ---------------------------------------------------------------------------
29
29
 
30
- describe('authGate', () => {
30
+ describe('authLayer', () => {
31
31
  test('has correct name and description', () => {
32
- expect(authGate.name).toBe('auth');
33
- expect(authGate.description).toBeDefined();
32
+ expect(authLayer.name).toBe('auth');
33
+ expect(authLayer.description).toBeDefined();
34
34
  });
35
35
 
36
36
  describe('pass-through cases', () => {
@@ -41,7 +41,7 @@ describe('authGate', () => {
41
41
  output: z.object({ done: z.boolean() }),
42
42
  });
43
43
 
44
- const wrapped = authGate.wrap(t, okImpl);
44
+ const wrapped = authLayer.wrap(t, okImpl);
45
45
  const result = await wrapped({}, makeCtx());
46
46
 
47
47
  expect(result.isOk()).toBe(true);
@@ -56,7 +56,7 @@ describe('authGate', () => {
56
56
  permit: 'public',
57
57
  });
58
58
 
59
- const wrapped = authGate.wrap(t, okImpl);
59
+ const wrapped = authLayer.wrap(t, okImpl);
60
60
  const result = await wrapped({}, makeCtx());
61
61
 
62
62
  expect(result.isOk()).toBe(true);
@@ -73,7 +73,7 @@ describe('authGate', () => {
73
73
  });
74
74
 
75
75
  test('passes when ctx.permit has matching scopes', async () => {
76
- const wrapped = authGate.wrap(scopedTrail, okImpl);
76
+ const wrapped = authLayer.wrap(scopedTrail, okImpl);
77
77
  const result = await wrapped(
78
78
  {},
79
79
  makeCtx({ id: 'usr-1', scopes: ['user:read'] })
@@ -84,7 +84,7 @@ describe('authGate', () => {
84
84
  });
85
85
 
86
86
  test('returns error when ctx has no permit', async () => {
87
- const wrapped = authGate.wrap(scopedTrail, okImpl);
87
+ const wrapped = authLayer.wrap(scopedTrail, okImpl);
88
88
  const result = await wrapped({}, makeCtx());
89
89
 
90
90
  expect(result.isErr()).toBe(true);
@@ -101,7 +101,7 @@ describe('authGate', () => {
101
101
  permit: { scopes: ['user:read', 'user:write'] },
102
102
  });
103
103
 
104
- const wrapped = authGate.wrap(multiScopeTrail, okImpl);
104
+ const wrapped = authLayer.wrap(multiScopeTrail, okImpl);
105
105
  const result = await wrapped(
106
106
  {},
107
107
  makeCtx({ id: 'usr-1', scopes: ['user:read'] })
@@ -114,7 +114,7 @@ describe('authGate', () => {
114
114
  });
115
115
 
116
116
  test('passes when permit has superset of required scopes', async () => {
117
- const wrapped = authGate.wrap(scopedTrail, okImpl);
117
+ const wrapped = authLayer.wrap(scopedTrail, okImpl);
118
118
  const result = await wrapped(
119
119
  {},
120
120
  makeCtx({
@@ -1,9 +1,9 @@
1
1
  import { describe, expect, test } from 'bun:test';
2
2
 
3
- import type { ProvisionContext } from '@ontrails/core';
3
+ import type { ResourceContext } from '@ontrails/core';
4
4
 
5
5
  import type { AuthConnector } from '../connectors/connector.js';
6
- import { authProvision } from '../auth-provision.js';
6
+ import { authResource } from '../auth-resource.js';
7
7
  import type { PermitExtractionInput } from '../extraction.js';
8
8
 
9
9
  /** Minimal extraction input for tests. */
@@ -19,7 +19,7 @@ const testInput = (
19
19
  // Helpers
20
20
  // ---------------------------------------------------------------------------
21
21
 
22
- const testSvcCtx: ProvisionContext = {
22
+ const testSvcCtx: ResourceContext = {
23
23
  config: undefined,
24
24
  cwd: '/tmp',
25
25
  env: {},
@@ -30,18 +30,18 @@ const testSvcCtx: ProvisionContext = {
30
30
  // Tests
31
31
  // ---------------------------------------------------------------------------
32
32
 
33
- describe('authProvision', () => {
33
+ describe('authResource', () => {
34
34
  test('has correct id and kind', () => {
35
- expect(authProvision.id).toBe('auth');
36
- expect(authProvision.kind).toBe('provision');
35
+ expect(authResource.id).toBe('auth');
36
+ expect(authResource.kind).toBe('resource');
37
37
  });
38
38
 
39
39
  test('has infrastructure meta', () => {
40
- expect(authProvision.meta).toEqual({ category: 'infrastructure' });
40
+ expect(authResource.meta).toEqual({ category: 'infrastructure' });
41
41
  });
42
42
 
43
43
  test('mock returns an AuthConnector', async () => {
44
- const mock = authProvision.mock?.();
44
+ const mock = authResource.mock?.();
45
45
  expect(mock).toBeDefined();
46
46
 
47
47
  const connector = mock as AuthConnector;
@@ -51,7 +51,7 @@ describe('authProvision', () => {
51
51
  });
52
52
 
53
53
  test('create returns Result.ok with an AuthConnector', async () => {
54
- const result = await authProvision.create(testSvcCtx);
54
+ const result = await authResource.create(testSvcCtx);
55
55
  expect(result.isOk()).toBe(true);
56
56
 
57
57
  const connector = result.unwrap() as AuthConnector;
@@ -8,7 +8,7 @@ import {
8
8
  } from '@ontrails/core';
9
9
 
10
10
  import type { AuthConnector } from '../connectors/connector.js';
11
- import { authProvision } from '../auth-provision.js';
11
+ import { authResource } from '../auth-resource.js';
12
12
  import { createJwtConnector } from '../connectors/jwt.js';
13
13
  import type { Permit } from '../permit.js';
14
14
  import { authVerify } from '../trails/auth-verify.js';
@@ -59,7 +59,7 @@ const TEST_SECRET = 'test-secret-for-hmac-256';
59
59
  const jwtConnector = (): AuthConnector =>
60
60
  createJwtConnector({ secret: TEST_SECRET });
61
61
 
62
- /** Execute auth.verify with a given connector injected as the auth provision. */
62
+ /** Execute auth.verify with a given connector injected as the auth resource. */
63
63
  const runVerify = async (
64
64
  token: string,
65
65
  connector: AuthConnector,
@@ -95,7 +95,7 @@ const runVerify = async (
95
95
  options?.trailhead === undefined
96
96
  ? undefined
97
97
  : { extensions: { [TRAILHEAD_KEY]: options.trailhead } },
98
- provisions: { [authProvision.id]: connector },
98
+ resources: { [authResource.id]: connector },
99
99
  }
100
100
  );
101
101
  return result as Result<
@@ -134,9 +134,9 @@ describe('auth.verify trail', () => {
134
134
  expect(authVerify.examples?.length).toBeGreaterThan(0);
135
135
  });
136
136
 
137
- test('declares authProvision dependency', () => {
138
- expect(authVerify.provisions).toHaveLength(1);
139
- expect(authVerify.provisions[0]?.id).toBe('auth');
137
+ test('declares authResource dependency', () => {
138
+ expect(authVerify.resources).toHaveLength(1);
139
+ expect(authVerify.resources[0]?.id).toBe('auth');
140
140
  });
141
141
  });
142
142
 
@@ -267,7 +267,7 @@ describe('auth.verify trail', () => {
267
267
  authVerify,
268
268
  { token: '' },
269
269
  {
270
- provisions: { [authProvision.id]: jwtConnector() },
270
+ resources: { [authResource.id]: jwtConnector() },
271
271
  }
272
272
  );
273
273
 
@@ -60,7 +60,7 @@ describe('getPermit()', () => {
60
60
  expect(result).toBeUndefined();
61
61
  });
62
62
 
63
- test('preserves extended permit fields from the auth gate', () => {
63
+ test('preserves extended permit fields from the auth layer', () => {
64
64
  const ctx = {
65
65
  permit: {
66
66
  id: 'usr_2',