@nmnmcc/ability 0.2.0 → 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 (58) hide show
  1. package/README.md +462 -454
  2. package/dist/Authorizer.d.ts +241 -0
  3. package/dist/Authorizer.d.ts.map +1 -0
  4. package/dist/Authorizer.js +340 -0
  5. package/dist/Authorizer.js.map +1 -0
  6. package/dist/Condition.d.ts +915 -0
  7. package/dist/Condition.d.ts.map +1 -0
  8. package/dist/Condition.js +1123 -0
  9. package/dist/Condition.js.map +1 -0
  10. package/dist/Decision.d.ts +131 -0
  11. package/dist/Decision.d.ts.map +1 -0
  12. package/dist/Decision.js +83 -0
  13. package/dist/Decision.js.map +1 -0
  14. package/dist/Domain.d.ts +158 -0
  15. package/dist/Domain.d.ts.map +1 -0
  16. package/dist/Domain.js +76 -0
  17. package/dist/Domain.js.map +1 -0
  18. package/dist/HttpApi.d.ts +173 -0
  19. package/dist/HttpApi.d.ts.map +1 -0
  20. package/dist/HttpApi.js +185 -0
  21. package/dist/HttpApi.js.map +1 -0
  22. package/dist/Policy.d.ts +687 -0
  23. package/dist/Policy.d.ts.map +1 -0
  24. package/dist/Policy.js +1339 -0
  25. package/dist/Policy.js.map +1 -0
  26. package/dist/Principal.d.ts +35 -0
  27. package/dist/Principal.d.ts.map +1 -0
  28. package/dist/Principal.js +37 -0
  29. package/dist/Principal.js.map +1 -0
  30. package/dist/Resource.d.ts +364 -0
  31. package/dist/Resource.d.ts.map +1 -0
  32. package/dist/Resource.js +844 -0
  33. package/dist/Resource.js.map +1 -0
  34. package/dist/Rule.d.ts +275 -0
  35. package/dist/Rule.d.ts.map +1 -0
  36. package/dist/Rule.js +257 -0
  37. package/dist/Rule.js.map +1 -0
  38. package/dist/_virtual/_rolldown/runtime.js +1 -2
  39. package/dist/index.d.ts +9 -3
  40. package/dist/index.js +9 -3
  41. package/package.json +61 -72
  42. package/src/Authorizer.ts +894 -0
  43. package/src/Condition.ts +2997 -0
  44. package/src/Decision.ts +117 -0
  45. package/src/Domain.ts +246 -0
  46. package/src/HttpApi.ts +348 -0
  47. package/src/Policy.ts +3315 -0
  48. package/src/Principal.ts +41 -0
  49. package/src/Resource.ts +1805 -0
  50. package/src/Rule.ts +683 -0
  51. package/src/index.ts +57 -0
  52. package/dist/Ability.d.ts +0 -491
  53. package/dist/Ability.js +0 -207
  54. package/dist/AbilityExtra.d.ts +0 -79
  55. package/dist/AbilityExtra.js +0 -187
  56. package/dist/internal/ability.d.ts +0 -90
  57. package/dist/internal/ability.js +0 -550
  58. package/dist/internal/serializable.js +0 -22
package/dist/Ability.js DELETED
@@ -1,207 +0,0 @@
1
- import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
- import { AliasError as AliasError$1, AuthorizationError as AuthorizationError$1, ConditionError as ConditionError$1, QueryGenerationError as QueryGenerationError$1, RawRuleError as RawRuleError$1, RuleTypeId as RuleTypeId$1, SubjectDetectionError as SubjectDetectionError$1, SubjectTypeId as SubjectTypeId$1, TypeId as TypeId$1, actionsFor as actionsFor$1, check as check$1, createAliasResolver as createAliasResolver$1, define as define$1, detectSubjectType as detectSubjectType$1, fromRawRules as fromRawRules$1, isAbility as isAbility$1, isRule as isRule$1, isSubject as isSubject$1, make as make$1, permittedFields as permittedFields$1, possibleRulesFor as possibleRulesFor$1, relevantRuleFor as relevantRuleFor$1, rulesFor as rulesFor$1, subject as subject$1, toRawRules as toRawRules$1, unwrapSubject as unwrapSubject$1, update as update$1 } from "./internal/ability.js";
3
- //#region src/Ability.ts
4
- var Ability_exports = /* @__PURE__ */ __exportAll({
5
- AliasError: () => AliasError,
6
- AuthorizationError: () => AuthorizationError,
7
- ConditionError: () => ConditionError,
8
- QueryGenerationError: () => QueryGenerationError,
9
- RawRuleError: () => RawRuleError,
10
- RuleTypeId: () => RuleTypeId,
11
- SubjectDetectionError: () => SubjectDetectionError,
12
- SubjectTypeId: () => SubjectTypeId,
13
- TypeId: () => TypeId,
14
- actionsFor: () => actionsFor,
15
- check: () => check,
16
- createAliasResolver: () => createAliasResolver,
17
- define: () => define,
18
- detectSubjectType: () => detectSubjectType,
19
- fromRawRules: () => fromRawRules,
20
- isAbility: () => isAbility,
21
- isRule: () => isRule,
22
- isSubject: () => isSubject,
23
- make: () => make,
24
- permittedFields: () => permittedFields,
25
- possibleRulesFor: () => possibleRulesFor,
26
- relevantRuleFor: () => relevantRuleFor,
27
- rulesFor: () => rulesFor,
28
- subject: () => subject,
29
- toRawRules: () => toRawRules,
30
- unwrapSubject: () => unwrapSubject,
31
- update: () => update
32
- });
33
- /**
34
- * @since 0.1.0
35
- * @category Type Ids
36
- */
37
- const TypeId = TypeId$1;
38
- /**
39
- * @since 0.1.0
40
- * @category Type Ids
41
- */
42
- const SubjectTypeId = SubjectTypeId$1;
43
- /**
44
- * Unique identifier for `Rule` values.
45
- *
46
- * @since 0.1.0
47
- * @category Type Ids
48
- */
49
- const RuleTypeId = RuleTypeId$1;
50
- /**
51
- * @since 0.1.0
52
- * @category Errors
53
- */
54
- const AuthorizationError = AuthorizationError$1;
55
- /**
56
- * @since 0.1.0
57
- * @category Errors
58
- */
59
- const ConditionError = ConditionError$1;
60
- /**
61
- * @since 0.1.0
62
- * @category Errors
63
- */
64
- const RawRuleError = RawRuleError$1;
65
- /**
66
- * @since 0.1.0
67
- * @category Errors
68
- */
69
- const SubjectDetectionError = SubjectDetectionError$1;
70
- /**
71
- * @since 0.1.0
72
- * @category Errors
73
- */
74
- const AliasError = AliasError$1;
75
- /**
76
- * @since 0.1.0
77
- * @category Errors
78
- */
79
- const QueryGenerationError = QueryGenerationError$1;
80
- /**
81
- * Creates an action resolver for an alias map.
82
- *
83
- * @since 0.1.0
84
- * @category Constructors
85
- */
86
- const createAliasResolver = createAliasResolver$1;
87
- /**
88
- * Defines an immutable Ability from a generator-based rule program.
89
- *
90
- * @since 0.1.0
91
- * @category Constructors
92
- */
93
- const define = define$1;
94
- /**
95
- * Constructs an Ability directly from rules.
96
- *
97
- * @since 0.1.0
98
- * @category Constructors
99
- */
100
- const make = make$1;
101
- /**
102
- * Constructs an Ability from JSON-safe rules.
103
- *
104
- * @since 0.1.0
105
- * @category Constructors
106
- */
107
- const fromRawRules = fromRawRules$1;
108
- /**
109
- * Returns a new Ability from raw rules using an existing Ability's options.
110
- *
111
- * @since 0.1.0
112
- * @category Constructors
113
- */
114
- const update = update$1;
115
- /**
116
- * Creates a pure typed subject wrapper without mutating the wrapped value.
117
- *
118
- * @since 0.1.0
119
- * @category Constructors
120
- */
121
- const subject = subject$1;
122
- /**
123
- * Returns whether a value is an Ability.
124
- *
125
- * @since 0.1.0
126
- * @category Guards
127
- */
128
- const isAbility = isAbility$1;
129
- /**
130
- * Returns whether a value is a rule.
131
- *
132
- * @since 0.1.0
133
- * @category Guards
134
- */
135
- const isRule = isRule$1;
136
- /**
137
- * Returns whether a value is a typed subject wrapper.
138
- *
139
- * @since 0.1.0
140
- * @category Guards
141
- */
142
- const isSubject = isSubject$1;
143
- /**
144
- * Unwraps a typed subject wrapper.
145
- *
146
- * @since 0.1.0
147
- * @category Accessors
148
- */
149
- const unwrapSubject = unwrapSubject$1;
150
- /**
151
- * Detects a subject name for a value using an Ability's detection strategy.
152
- *
153
- * @since 0.1.0
154
- * @category Accessors
155
- */
156
- const detectSubjectType = detectSubjectType$1;
157
- /**
158
- * Converts an Ability to JSON-safe raw rules.
159
- *
160
- * @since 0.1.0
161
- * @category Conversions
162
- */
163
- const toRawRules = toRawRules$1;
164
- /**
165
- * Returns rules that may apply for a request before field and condition checks.
166
- *
167
- * @since 0.1.0
168
- * @category Accessors
169
- */
170
- const possibleRulesFor = possibleRulesFor$1;
171
- /**
172
- * Returns rules that may apply for a request after field checks.
173
- *
174
- * @since 0.1.0
175
- * @category Accessors
176
- */
177
- const rulesFor = rulesFor$1;
178
- /**
179
- * Returns the first matching rule for a request, if any.
180
- *
181
- * @since 0.1.0
182
- * @category Accessors
183
- */
184
- const relevantRuleFor = relevantRuleFor$1;
185
- /**
186
- * Returns actions that have rules for a subject.
187
- *
188
- * @since 0.1.0
189
- * @category Accessors
190
- */
191
- const actionsFor = actionsFor$1;
192
- /**
193
- * Checks a request and fails with `AuthorizationError` when the request is not authorized.
194
- *
195
- * @since 0.1.0
196
- * @category Combinators
197
- */
198
- const check = check$1;
199
- /**
200
- * Computes fields permitted for a request.
201
- *
202
- * @since 0.1.0
203
- * @category Combinators
204
- */
205
- const permittedFields = permittedFields$1;
206
- //#endregion
207
- export { Ability_exports, AliasError, AuthorizationError, ConditionError, QueryGenerationError, RawRuleError, RuleTypeId, SubjectDetectionError, SubjectTypeId, TypeId, actionsFor, check, createAliasResolver, define, detectSubjectType, fromRawRules, isAbility, isRule, isSubject, make, permittedFields, possibleRulesFor, relevantRuleFor, rulesFor, subject, toRawRules, unwrapSubject, update };
@@ -1,79 +0,0 @@
1
- import { Ability, ActionAliases, AnyRule, QueryGenerationError, RawRule, RuleQueryRequest, SubjectDetectionError, SubjectMap } from "./Ability.js";
2
- import * as Effect from "effect/Effect";
3
-
4
- //#region src/AbilityExtra.d.ts
5
- declare namespace AbilityExtra_d_exports {
6
- export { LogicalQuery, PackRule, RulesToConditionHooks, packRules, rulesToCondition, rulesToFields, rulesToQuery, unpackRules };
7
- }
8
- /**
9
- * @since 0.1.0
10
- * @category Models
11
- */
12
- type PackRule<Rule extends RawRule = RawRule> = readonly [action: Rule["action"], subject: Rule["subject"], conditions?: Rule["conditions"] | 0, inverted?: 1 | 0, fields?: Rule["fields"] | 0, reason?: string];
13
- /**
14
- * @since 0.1.0
15
- * @category Models
16
- */
17
- interface RulesToConditionHooks<Query> {
18
- readonly and: (conditions: ReadonlyArray<Query>) => Query;
19
- readonly or: (conditions: ReadonlyArray<Query>) => Query;
20
- readonly not: (condition: Query) => Query;
21
- readonly empty: () => Query;
22
- }
23
- /**
24
- * @since 0.1.0
25
- * @category Models
26
- */
27
- type LogicalQuery<Query> = Query | {
28
- readonly $and: ReadonlyArray<LogicalQuery<Query>>;
29
- } | {
30
- readonly $or: ReadonlyArray<LogicalQuery<Query>>;
31
- } | {
32
- readonly $not: LogicalQuery<Query>;
33
- };
34
- /**
35
- * Packs JSON-safe raw rules into a compact tuple format.
36
- *
37
- * @since 0.1.0
38
- * @category Conversions
39
- */
40
- declare const packRules: <Rule extends RawRule>(rules: Iterable<Rule>) => ReadonlyArray<PackRule<Rule>>;
41
- /**
42
- * Unpacks compact raw rules produced by `packRules`.
43
- *
44
- * @since 0.1.0
45
- * @category Conversions
46
- */
47
- declare const unpackRules: <Rule extends RawRule = RawRule>(rules: Iterable<PackRule<Rule>>) => ReadonlyArray<Rule>;
48
- /**
49
- * Extracts scalar condition values as default fields.
50
- *
51
- * @since 0.1.0
52
- * @category Conversions
53
- */
54
- declare const rulesToFields: {
55
- <const Request>(request: Request): <Subjects extends SubjectMap, Rules extends AnyRule, Aliases extends ActionAliases>(self: Ability<Subjects, Rules, Aliases> & (Request extends RuleQueryRequest<Subjects, Rules, Aliases> ? unknown : never)) => Effect.Effect<Readonly<Record<string, unknown>>, QueryGenerationError | SubjectDetectionError>;
56
- <Subjects extends SubjectMap, Rules extends AnyRule, Aliases extends ActionAliases, const Request extends RuleQueryRequest<Subjects, Rules, Aliases>>(self: Ability<Subjects, Rules, Aliases>, request: Request): Effect.Effect<Readonly<Record<string, unknown>>, QueryGenerationError | SubjectDetectionError>;
57
- };
58
- /**
59
- * Converts rules into a caller-defined logical condition.
60
- *
61
- * @since 0.1.0
62
- * @category Conversions
63
- */
64
- declare const rulesToCondition: {
65
- <const Request, Query, E = never, R = never>(request: Request, convert: (rule: AnyRule) => Query | Effect.Effect<Query, E, R>, hooks: RulesToConditionHooks<Query>): <Subjects extends SubjectMap, Rules extends AnyRule, Aliases extends ActionAliases>(self: Ability<Subjects, Rules, Aliases> & (Request extends RuleQueryRequest<Subjects, Rules, Aliases> ? unknown : never)) => Effect.Effect<Query | null, QueryGenerationError | SubjectDetectionError | E, R>;
66
- <Subjects extends SubjectMap, Rules extends AnyRule, Aliases extends ActionAliases, const Request extends RuleQueryRequest<Subjects, Rules, Aliases>, Query, E = never, R = never>(self: Ability<Subjects, Rules, Aliases>, request: Request, convert: (rule: Rules) => Query | Effect.Effect<Query, E, R>, hooks: RulesToConditionHooks<Query>): Effect.Effect<Query | null, QueryGenerationError | SubjectDetectionError | E, R>;
67
- };
68
- /**
69
- * Converts rules into a small generic logical query object.
70
- *
71
- * @since 0.1.0
72
- * @category Conversions
73
- */
74
- declare const rulesToQuery: {
75
- <const Request, Query, E = never, R = never>(request: Request, convert: (rule: AnyRule) => Query | Effect.Effect<Query, E, R>): <Subjects extends SubjectMap, Rules extends AnyRule, Aliases extends ActionAliases>(self: Ability<Subjects, Rules, Aliases> & (Request extends RuleQueryRequest<Subjects, Rules, Aliases> ? unknown : never)) => Effect.Effect<LogicalQuery<Query> | null, QueryGenerationError | SubjectDetectionError | E, R>;
76
- <Subjects extends SubjectMap, Rules extends AnyRule, Aliases extends ActionAliases, const Request extends RuleQueryRequest<Subjects, Rules, Aliases>, Query, E = never, R = never>(self: Ability<Subjects, Rules, Aliases>, request: Request, convert: (rule: Rules) => Query | Effect.Effect<Query, E, R>): Effect.Effect<LogicalQuery<Query> | null, QueryGenerationError | SubjectDetectionError | E, R>;
77
- };
78
- //#endregion
79
- export { AbilityExtra_d_exports, LogicalQuery, PackRule, RulesToConditionHooks, packRules, rulesToCondition, rulesToFields, rulesToQuery, unpackRules };
@@ -1,187 +0,0 @@
1
- import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
- import { cloneSerializable, isPlainObject } from "./internal/serializable.js";
3
- import { QueryGenerationError, rulesFor } from "./Ability.js";
4
- import * as Effect from "effect/Effect";
5
- import { dual } from "effect/Function";
6
- //#region src/AbilityExtra.ts
7
- /**
8
- * Extra helpers for serializing and transforming Ability rules.
9
- *
10
- * Mental model:
11
- * - `AbilityExtra` works with already-defined abilities and JSON-safe rules.
12
- * - Packing preserves rule structure while reducing wire size.
13
- * - Query helpers transform rule lists into caller-owned condition formats.
14
- *
15
- * Common tasks:
16
- * - Compact raw rules with {@link packRules} and {@link unpackRules}.
17
- * - Derive default fields from rule conditions with {@link rulesToFields}.
18
- * - Convert matching rules to logical conditions with {@link rulesToCondition}
19
- * or {@link rulesToQuery}.
20
- *
21
- * Gotchas:
22
- * - Conversion callbacks may be synchronous or Effectful; synchronous throws are
23
- * converted to `QueryGenerationError`.
24
- *
25
- * @since 0.1.0
26
- * @module
27
- */
28
- var AbilityExtra_exports = /* @__PURE__ */ __exportAll({
29
- packRules: () => packRules,
30
- rulesToCondition: () => rulesToCondition,
31
- rulesToFields: () => rulesToFields,
32
- rulesToQuery: () => rulesToQuery,
33
- unpackRules: () => unpackRules
34
- });
35
- const forbiddenPathKeys = new Set([
36
- "__proto__",
37
- "constructor",
38
- "prototype"
39
- ]);
40
- const setByPath = (object, path, value) => {
41
- const keys = path.split(".");
42
- let cursor = object;
43
- let index = 0;
44
- while (index < keys.length - 1) {
45
- const key = keys[index];
46
- if (key === void 0 || forbiddenPathKeys.has(key)) return;
47
- const current = cursor[key];
48
- if (!isPlainObject(current)) {
49
- const next = {};
50
- cursor[key] = next;
51
- cursor = next;
52
- } else cursor = current;
53
- index = index + 1;
54
- }
55
- const lastKey = keys[keys.length - 1];
56
- if (lastKey !== void 0 && !forbiddenPathKeys.has(lastKey)) cursor[lastKey] = value;
57
- };
58
- const packRule = (rule) => {
59
- const packed = [
60
- cloneSerializable(rule.action),
61
- cloneSerializable(rule.subject),
62
- rule.conditions === void 0 ? 0 : cloneSerializable(rule.conditions),
63
- rule.inverted === true ? 1 : 0,
64
- rule.fields === void 0 ? 0 : cloneSerializable(rule.fields),
65
- rule.reason ?? ""
66
- ];
67
- while (packed.length > 2 && (packed[packed.length - 1] === 0 || packed[packed.length - 1] === "" || packed[packed.length - 1] === void 0)) packed.pop();
68
- return Object.freeze(packed);
69
- };
70
- /**
71
- * Packs JSON-safe raw rules into a compact tuple format.
72
- *
73
- * @since 0.1.0
74
- * @category Conversions
75
- */
76
- const packRules = (rules) => Object.freeze(Array.from(rules, packRule));
77
- const unpackRule = (packed) => {
78
- const [action, subject, conditions, inverted, fields, reason] = packed;
79
- const rule = {
80
- action: cloneSerializable(action),
81
- subject: cloneSerializable(subject)
82
- };
83
- if (conditions !== void 0 && conditions !== 0) rule.conditions = cloneSerializable(conditions);
84
- if (inverted === 1) rule.inverted = true;
85
- if (fields !== void 0 && fields !== 0) rule.fields = cloneSerializable(fields);
86
- if (reason !== void 0 && reason !== "") rule.reason = reason;
87
- return Object.freeze(rule);
88
- };
89
- /**
90
- * Unpacks compact raw rules produced by `packRules`.
91
- *
92
- * @since 0.1.0
93
- * @category Conversions
94
- */
95
- const unpackRules = (rules) => Object.freeze(Array.from(rules, unpackRule));
96
- const queryGenerationError = (reason, ruleIndex, cause) => {
97
- const error = { reason };
98
- if (ruleIndex !== void 0) error.ruleIndex = ruleIndex;
99
- if (cause !== void 0) error.cause = cause;
100
- return new QueryGenerationError(error);
101
- };
102
- /**
103
- * Extracts scalar condition values as default fields.
104
- *
105
- * @since 0.1.0
106
- * @category Conversions
107
- */
108
- const rulesToFields = dual(2, Effect.fnUntraced(function* (self, request) {
109
- const rules = yield* rulesFor(self, request);
110
- const fields = {};
111
- let index = 0;
112
- for (const rule of rules) {
113
- if (rule._tag === "Allow" && rule.conditions !== void 0) for (const key of Object.keys(rule.conditions)) {
114
- const value = rule.conditions[key];
115
- if (!isPlainObject(value)) setByPath(fields, key, value);
116
- }
117
- index = index + 1;
118
- }
119
- return Object.freeze(fields);
120
- }));
121
- const convertRule = (rule, convert, ruleIndex) => Effect.flatMap(Effect.try({
122
- try: () => convert(rule),
123
- catch: (cause) => queryGenerationError("Rule conversion failed", ruleIndex, cause)
124
- }), (result) => Effect.isEffect(result) ? result : Effect.succeed(result));
125
- /**
126
- * Converts rules into a caller-defined logical condition.
127
- *
128
- * @since 0.1.0
129
- * @category Conversions
130
- */
131
- const rulesToConditionEffect = Effect.fnUntraced(function* (self, request, convert, hooks) {
132
- const rules = yield* rulesFor(self, request);
133
- const higherDenyBounds = [];
134
- const orConditions = [];
135
- let hasUnconditionalAllow = false;
136
- let index = 0;
137
- while (index < rules.length) {
138
- const rule = rules[index];
139
- if (rule._tag === "Deny") {
140
- if (rule.conditions === void 0) break;
141
- const condition = yield* convertRule(rule, convert, index);
142
- higherDenyBounds.push(hooks.not(condition));
143
- } else {
144
- if (rule.conditions === void 0) {
145
- hasUnconditionalAllow = true;
146
- break;
147
- }
148
- const condition = yield* convertRule(rule, convert, index);
149
- orConditions.push(higherDenyBounds.length === 0 ? condition : hooks.and([condition, ...higherDenyBounds]));
150
- }
151
- index = index + 1;
152
- }
153
- if (hasUnconditionalAllow) {
154
- if (higherDenyBounds.length === 0) return hooks.empty();
155
- if (orConditions.length === 0) return hooks.and(higherDenyBounds);
156
- orConditions.push(hooks.and(higherDenyBounds));
157
- }
158
- if (orConditions.length === 0) return null;
159
- return hooks.or(orConditions);
160
- });
161
- /**
162
- * Converts rules into a caller-defined logical condition.
163
- *
164
- * @since 0.1.0
165
- * @category Conversions
166
- */
167
- const rulesToCondition = dual(4, rulesToConditionEffect);
168
- /**
169
- * Converts rules into a small generic logical query object.
170
- *
171
- * @since 0.1.0
172
- * @category Conversions
173
- */
174
- const rulesToQuery = dual(3, Effect.fnUntraced(function* (self, request, convert) {
175
- const logicalConvert = (rule) => {
176
- const result = convert(rule);
177
- return Effect.isEffect(result) ? result : result;
178
- };
179
- return yield* rulesToConditionEffect(self, request, logicalConvert, {
180
- and: (conditions) => ({ $and: conditions }),
181
- or: (conditions) => ({ $or: conditions }),
182
- not: (condition) => ({ $not: condition }),
183
- empty: () => ({})
184
- });
185
- }));
186
- //#endregion
187
- export { AbilityExtra_exports, packRules, rulesToCondition, rulesToFields, rulesToQuery, unpackRules };
@@ -1,90 +0,0 @@
1
- import * as _$effect_Types0 from "effect/Types";
2
- import * as _$effect_Cause0 from "effect/Cause";
3
-
4
- //#region src/internal/ability.d.ts
5
- /**
6
- * @internal
7
- */
8
- declare const TypeId: unique symbol;
9
- /**
10
- * @internal
11
- */
12
- declare const SubjectTypeId: unique symbol;
13
- /**
14
- * @internal
15
- */
16
- declare const RuleTypeId: unique symbol;
17
- declare const AuthorizationError_base: new <A extends Record<string, any> = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => _$effect_Cause0.YieldableError & {
18
- readonly _tag: "AuthorizationError";
19
- } & Readonly<A>;
20
- /**
21
- * @since 0.1.0
22
- * @category Errors
23
- */
24
- declare class AuthorizationError extends AuthorizationError_base<{
25
- readonly action: string;
26
- readonly subject: string;
27
- readonly field?: string;
28
- readonly reason?: string;
29
- }> {}
30
- declare const ConditionError_base: new <A extends Record<string, any> = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => _$effect_Cause0.YieldableError & {
31
- readonly _tag: "ConditionError";
32
- } & Readonly<A>;
33
- /**
34
- * @since 0.1.0
35
- * @category Errors
36
- */
37
- declare class ConditionError extends ConditionError_base<{
38
- readonly action: string;
39
- readonly subject: string;
40
- readonly field?: string;
41
- readonly cause: unknown;
42
- }> {}
43
- declare const RawRuleError_base: new <A extends Record<string, any> = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => _$effect_Cause0.YieldableError & {
44
- readonly _tag: "RawRuleError";
45
- } & Readonly<A>;
46
- /**
47
- * @since 0.1.0
48
- * @category Errors
49
- */
50
- declare class RawRuleError extends RawRuleError_base<{
51
- readonly reason: string;
52
- readonly ruleIndex?: number;
53
- readonly cause?: unknown;
54
- }> {}
55
- declare const SubjectDetectionError_base: new <A extends Record<string, any> = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => _$effect_Cause0.YieldableError & {
56
- readonly _tag: "SubjectDetectionError";
57
- } & Readonly<A>;
58
- /**
59
- * @since 0.1.0
60
- * @category Errors
61
- */
62
- declare class SubjectDetectionError extends SubjectDetectionError_base<{
63
- readonly reason: string;
64
- readonly cause?: unknown;
65
- }> {}
66
- declare const AliasError_base: new <A extends Record<string, any> = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => _$effect_Cause0.YieldableError & {
67
- readonly _tag: "AliasError";
68
- } & Readonly<A>;
69
- /**
70
- * @since 0.1.0
71
- * @category Errors
72
- */
73
- declare class AliasError extends AliasError_base<{
74
- readonly reason: string;
75
- readonly action?: string;
76
- }> {}
77
- declare const QueryGenerationError_base: new <A extends Record<string, any> = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => _$effect_Cause0.YieldableError & {
78
- readonly _tag: "QueryGenerationError";
79
- } & Readonly<A>;
80
- /**
81
- * @since 0.1.0
82
- * @category Errors
83
- */
84
- declare class QueryGenerationError extends QueryGenerationError_base<{
85
- readonly reason: string;
86
- readonly ruleIndex?: number;
87
- readonly cause?: unknown;
88
- }> {}
89
- //#endregion
90
- export { AliasError, AuthorizationError, ConditionError, QueryGenerationError, RawRuleError, RuleTypeId, SubjectDetectionError, SubjectTypeId, TypeId };