field-guard 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -42,7 +42,7 @@ import { defineGuard } from "field-guard";
42
42
  type Ctx = { userId: string; role: "admin" | "user" };
43
43
  type User = { id: string; email: string; name: string };
44
44
 
45
- const userGuard = defineGuard<"owner" | "other", Ctx>()({
45
+ const userGuard = defineGuard<Ctx>()({
46
46
  fields: ["id", "email", "name"],
47
47
  policy: {
48
48
  owner: true, // all fields allowed
@@ -65,7 +65,7 @@ const userGuard = defineGuard<"owner" | "other", Ctx>()({
65
65
  Use `.withCheck<T>()` to resolve the access level based on the context and a target object:
66
66
 
67
67
  ```ts
68
- const userGuard = defineGuard<"owner" | "other", Ctx>()({
68
+ const userGuard = defineGuard<Ctx>()({
69
69
  fields: ["id", "email", "name"],
70
70
  policy: {
71
71
  owner: true,
@@ -103,7 +103,7 @@ verdict.coversSome(["email"]); // true — at least one requested field is
103
103
  Use `.withDerive()` to compute additional properties from the context:
104
104
 
105
105
  ```ts
106
- const guard = defineGuard<"public", Ctx>()({
106
+ const guard = defineGuard<Ctx>()({
107
107
  fields: ["id", "email"],
108
108
  policy: { public: true },
109
109
  }).withDerive(({ ctx }) => ({
@@ -149,14 +149,14 @@ mergeFieldVerdicts("intersection", [verdictA, verdictB], fields);
149
149
  This is also available as `mergeVerdicts` on every guard instance:
150
150
 
151
151
  ```ts
152
- const guard = defineGuard<"owner" | "admin", Ctx>()({ /* ... */ });
152
+ const guard = defineGuard<Ctx>()({ /* ... */ });
153
153
 
154
154
  const verdict = guard.mergeVerdicts("union", { owner: true, admin: false });
155
155
  ```
156
156
 
157
157
  ## API Reference
158
158
 
159
- ### `defineGuard<Levels, Context>()`
159
+ ### `defineGuard<Context>()`
160
160
 
161
161
  Returns a factory function that accepts `{ fields, policy }` and returns a guard chain.
162
162
 
@@ -194,4 +194,4 @@ Merges an array of `FieldVerdict` objects using `"union"` or `"intersection"` st
194
194
 
195
195
  ## License
196
196
 
197
- MIT
197
+ MIT
@@ -24,7 +24,7 @@ export type GuardChain<C, L extends string, F extends string, R extends Record<s
24
24
  check: (target: T) => M;
25
25
  }, HasDerive, true>;
26
26
  } : {});
27
- export declare function defineGuard<L extends string, C>(): <F extends string>(params: {
27
+ export declare function defineGuard<C>(): <L extends string, F extends string>(params: {
28
28
  fields: F[];
29
29
  policy: FieldPolicy<L, F>;
30
30
  }) => GuardChain<C, L, F, Record<string, never>, false, false>;
@@ -1 +1 @@
1
- {"version":3,"file":"defineGuard.d.ts","sourceRoot":"","sources":["../src/defineGuard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defineGuard.d.ts","sourceRoot":"","sources":["../src/defineGuard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"defineGuard.js","sourceRoot":"","sources":["../src/defineGuard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defineGuard.js","sourceRoot":"","sources":["../src/defineGuard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA+B,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAA6E,MAAM,YAAY,CAAC;AA8CtH,SAAS,eAAe,CACtB,MAAyB,EACzB,MAAW;IAEX,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,MAAW,CAAC;QAC1B,MAAM,IAAI,GAAG,KAAwC,CAAC;QACtD,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QACxG,MAAM,aAAa,GAAG,eAAe;YACnC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;YACxC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAkC,CACX,CAAC;AAC7B,CAAC;AAED,SAAS,WAAW,CAQlB,MAAW,EACX,UAAiC,EACjC,aAAoG,EACpG,QAA6E,EAC7E,SAAgE;IAEhE,OAAO;QACL,MAAM;QACN,UAAU;QACV,aAAa;QACb,UAAU,CAAoC,EAAmC;YAC/E,MAAM,YAAY,GAAG,QAAQ,CAAC;YAC9B,MAAM,YAAY,GAAG,CAAC,CAAwB,EAAE,EAAE,CAAC,CAAC;gBAClD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,GAAG,EAAE,CAAC,CAAC,CAAC;aACT,CAAC,CAAC;YACH,OAAO,WAAW,CAAmC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QACnH,CAAC;QACD,SAAS;YACP,OAAO,CAAI,EAAuC,EAAE,EAAE;gBACpD,OAAO,WAAW,CAChB,MAAM,EACN,UAAU,EACV,aAAa,EACb,QAAQ,EACR,EAAE,CACH,CAAC;YACJ,CAAC,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,GAAM;YACR,MAAM,UAAU,GAAwB,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;YACnF,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,SAAS;gBACtB,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,MAAW,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE;gBAC9E,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;YACnB,OAAO,MAAW,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,CAAqC,MAAkD,EAAE,EAAE;QAChG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAClC,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,CACrB,IAA4B,EAC5B,KAAkC,EACjB,EAAE;YACnB,MAAM,MAAM,GAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,OAAO,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC;QACF,OAAO,WAAW,CAChB,MAAM,EACN,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,CACV,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1,4 +1,23 @@
1
1
  import { FieldVerdict } from "./types.js";
2
+ /**
3
+ * フィールド判定のマージモード。
4
+ *
5
+ * - `"union"` — いずれかの判定で許可されていればフィールドを許可する(和集合)
6
+ * - `"intersection"` — すべての判定で許可されている場合のみフィールドを許可する(積集合)
7
+ */
2
8
  export type MergeFieldVerdictsMode = "union" | "intersection";
9
+ /**
10
+ * 複数の {@link FieldVerdict} を指定されたモードでマージし、単一の判定結果を返す。
11
+ *
12
+ * - `"union"` モード: いずれかの判定が許可しているフィールドを許可する
13
+ * - `"intersection"` モード: すべての判定が許可しているフィールドのみ許可する
14
+ * - `verdicts` が空の場合、許可フィールドなしの判定を返す
15
+ *
16
+ * @typeParam F - フィールド名を表す文字列リテラル型
17
+ * @param mode - マージモード(`"union"` または `"intersection"`)
18
+ * @param verdicts - マージ対象の判定結果の配列
19
+ * @param fields - 判定対象となるフィールドの全体集合
20
+ * @returns マージされた単一の {@link FieldVerdict}
21
+ */
3
22
  export declare function mergeFieldVerdicts<F extends string>(mode: MergeFieldVerdictsMode, verdicts: FieldVerdict<F>[], fields: F[]): FieldVerdict<F>;
4
23
  //# sourceMappingURL=mergeFieldVerdicts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mergeFieldVerdicts.d.ts","sourceRoot":"","sources":["../src/mergeFieldVerdicts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,cAAc,CAAC;AAE9D,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,IAAI,EAAE,sBAAsB,EAC5B,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAC3B,MAAM,EAAE,CAAC,EAAE,GACV,YAAY,CAAC,CAAC,CAAC,CAYjB"}
1
+ {"version":3,"file":"mergeFieldVerdicts.d.ts","sourceRoot":"","sources":["../src/mergeFieldVerdicts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,cAAc,CAAC;AAE9D;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,IAAI,EAAE,sBAAsB,EAC5B,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAC3B,MAAM,EAAE,CAAC,EAAE,GACV,YAAY,CAAC,CAAC,CAAC,CAYjB"}
@@ -1,4 +1,17 @@
1
1
  import { createVerdict } from "./types.js";
2
+ /**
3
+ * 複数の {@link FieldVerdict} を指定されたモードでマージし、単一の判定結果を返す。
4
+ *
5
+ * - `"union"` モード: いずれかの判定が許可しているフィールドを許可する
6
+ * - `"intersection"` モード: すべての判定が許可しているフィールドのみ許可する
7
+ * - `verdicts` が空の場合、許可フィールドなしの判定を返す
8
+ *
9
+ * @typeParam F - フィールド名を表す文字列リテラル型
10
+ * @param mode - マージモード(`"union"` または `"intersection"`)
11
+ * @param verdicts - マージ対象の判定結果の配列
12
+ * @param fields - 判定対象となるフィールドの全体集合
13
+ * @returns マージされた単一の {@link FieldVerdict}
14
+ */
2
15
  export function mergeFieldVerdicts(mode, verdicts, fields) {
3
16
  if (verdicts.length === 0) {
4
17
  return createVerdict([]);
@@ -1 +1 @@
1
- {"version":3,"file":"mergeFieldVerdicts.js","sourceRoot":"","sources":["../src/mergeFieldVerdicts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,MAAM,YAAY,CAAC;AAIzD,MAAM,UAAU,kBAAkB,CAChC,IAA4B,EAC5B,QAA2B,EAC3B,MAAW;IAEX,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,aAAa,CAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,IAAI,KAAK,OAAO;QACpC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjE,OAAO,aAAa,CAAC,aAAa,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"mergeFieldVerdicts.js","sourceRoot":"","sources":["../src/mergeFieldVerdicts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,MAAM,YAAY,CAAC;AAUzD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAA4B,EAC5B,QAA2B,EAC3B,MAAW;IAEX,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,aAAa,CAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,IAAI,KAAK,OAAO;QACpC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjE,OAAO,aAAa,CAAC,aAAa,CAAC,CAAC;AACtC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "field-guard",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "A lightweight, fully type-safe, field-level access control library for TypeScript",
5
5
  "type": "module",
6
6
  "exports": {
@@ -38,6 +38,7 @@
38
38
  },
39
39
  "sideEffects": false,
40
40
  "devDependencies": {
41
+ "release-it": "^19.2.4",
41
42
  "typescript": "^5.8.3",
42
43
  "vitest": "^4.0.18"
43
44
  }