@mathrunet/masamune_cloudflare 3.1.5 → 3.1.7

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 (41) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/index.d.ts +8 -1
  3. package/dist/index.js +8 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/adapters/firebase_auth_adapter.d.ts +76 -0
  6. package/dist/lib/adapters/firebase_auth_adapter.js +86 -0
  7. package/dist/lib/adapters/firebase_auth_adapter.js.map +1 -0
  8. package/dist/lib/adapters/none_auth_adapter.d.ts +10 -0
  9. package/dist/lib/adapters/none_auth_adapter.js +18 -0
  10. package/dist/lib/adapters/none_auth_adapter.js.map +1 -0
  11. package/dist/lib/adapters/rules_middleware.d.ts +45 -0
  12. package/dist/lib/adapters/rules_middleware.js +42 -0
  13. package/dist/lib/adapters/rules_middleware.js.map +1 -0
  14. package/dist/lib/middlewares/index.d.ts +3 -2
  15. package/dist/lib/middlewares/index.js +7 -2
  16. package/dist/lib/middlewares/index.js.map +1 -1
  17. package/dist/lib/middlewares/rules_middleware.d.ts +29 -0
  18. package/dist/lib/middlewares/rules_middleware.js +36 -0
  19. package/dist/lib/middlewares/rules_middleware.js.map +1 -0
  20. package/dist/lib/src/rules/path_matcher.d.ts +31 -0
  21. package/dist/lib/src/rules/path_matcher.js +105 -0
  22. package/dist/lib/src/rules/path_matcher.js.map +1 -0
  23. package/dist/lib/src/rules/rules_engine.d.ts +72 -0
  24. package/dist/lib/src/rules/rules_engine.js +174 -0
  25. package/dist/lib/src/rules/rules_engine.js.map +1 -0
  26. package/dist/lib/src/rules/rules_loader.d.ts +73 -0
  27. package/dist/lib/src/rules/rules_loader.js +93 -0
  28. package/dist/lib/src/rules/rules_loader.js.map +1 -0
  29. package/dist/lib/src/worker_adapter_base.d.ts +14 -0
  30. package/dist/lib/src/worker_adapter_base.js +12 -0
  31. package/dist/lib/src/worker_adapter_base.js.map +1 -0
  32. package/dist/lib/src/workers_auth_adapter_base.d.ts +36 -0
  33. package/dist/lib/src/workers_auth_adapter_base.js +21 -0
  34. package/dist/lib/src/workers_auth_adapter_base.js.map +1 -0
  35. package/dist/lib/src/workers_base.d.ts +17 -4
  36. package/dist/lib/src/workers_base.js +23 -5
  37. package/dist/lib/src/workers_base.js.map +1 -1
  38. package/dist/lib/src/workers_rule_adapter_base.d.ts +27 -0
  39. package/dist/lib/src/workers_rule_adapter_base.js +28 -0
  40. package/dist/lib/src/workers_rule_adapter_base.js.map +1 -0
  41. package/package.json +1 -1
@@ -0,0 +1,72 @@
1
+ import { WorkersAuthContext } from "../workers_auth_adapter_base";
2
+ import { RulesAccessRule, RulesConfig, RulesOperation, RulesOperationKey } from "./rules_loader";
3
+ /**
4
+ * Input for evaluating rules.
5
+ *
6
+ * rules評価入力。
7
+ */
8
+ export interface RulesEvaluationInput {
9
+ path: string;
10
+ operation: RulesOperation | RulesOperationKey;
11
+ authentication?: WorkersAuthContext | undefined;
12
+ fetchDocument?: (() => Promise<Record<string, unknown> | null | undefined>) | undefined;
13
+ }
14
+ /**
15
+ * Result of evaluating rules.
16
+ *
17
+ * rules評価結果。
18
+ */
19
+ export interface RulesEvaluationResult {
20
+ allowed: boolean;
21
+ rulePath?: string | undefined;
22
+ access?: RulesAccessRule | undefined;
23
+ }
24
+ /**
25
+ * Arguments for building a rules path.
26
+ *
27
+ * rulesパス生成引数。
28
+ */
29
+ export interface RulesPathArguments {
30
+ database: string;
31
+ table: string;
32
+ indexKey: string;
33
+ }
34
+ /**
35
+ * Rules engine.
36
+ *
37
+ * rules評価エンジン。
38
+ */
39
+ export declare class RulesEngine {
40
+ constructor(config: RulesConfig | unknown);
41
+ private readonly config;
42
+ /**
43
+ * Evaluate rules for the given path and operation.
44
+ *
45
+ * 指定したパスと操作に対してrulesを評価します。
46
+ */
47
+ evaluate(input: RulesEvaluationInput): Promise<RulesEvaluationResult>;
48
+ }
49
+ /**
50
+ * Build a normalized rules path.
51
+ *
52
+ * 正規化されたrulesパスを生成します。
53
+ */
54
+ export declare function buildRulesPath({ database, table, indexKey }: RulesPathArguments): string;
55
+ /**
56
+ * Normalize HTTP method to rules operation.
57
+ *
58
+ * HTTPメソッドをrules操作に正規化します。
59
+ */
60
+ export declare function normalizeHttpMethodToRulesOperation(method: string): RulesOperation;
61
+ /**
62
+ * Normalize rules operation aliases.
63
+ *
64
+ * rules操作エイリアスを正規化します。
65
+ */
66
+ export declare function normalizeRulesOperation(operation: RulesOperation | RulesOperationKey): RulesOperation;
67
+ /**
68
+ * Resolve operation lookup order.
69
+ *
70
+ * 操作の解決順を取得します。
71
+ */
72
+ export declare function resolveRulesOperation(operation: RulesOperation | RulesOperationKey): RulesOperationKey[];
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RulesEngine = void 0;
4
+ exports.buildRulesPath = buildRulesPath;
5
+ exports.normalizeHttpMethodToRulesOperation = normalizeHttpMethodToRulesOperation;
6
+ exports.normalizeRulesOperation = normalizeRulesOperation;
7
+ exports.resolveRulesOperation = resolveRulesOperation;
8
+ const rules_loader_1 = require("./rules_loader");
9
+ const path_matcher_1 = require("./path_matcher");
10
+ /**
11
+ * Rules engine.
12
+ *
13
+ * rules評価エンジン。
14
+ */
15
+ class RulesEngine {
16
+ constructor(config) {
17
+ this.config = (0, rules_loader_1.loadRulesConfig)(config);
18
+ }
19
+ config;
20
+ /**
21
+ * Evaluate rules for the given path and operation.
22
+ *
23
+ * 指定したパスと操作に対してrulesを評価します。
24
+ */
25
+ async evaluate(input) {
26
+ const operation = normalizeRulesOperation(input.operation);
27
+ const matches = Object.keys(this.config.rules)
28
+ .map((rulePath) => (0, path_matcher_1.matchRulePath)(rulePath, input.path))
29
+ .filter((match) => match.matched);
30
+ if (matches.length === 0) {
31
+ return { allowed: false };
32
+ }
33
+ const sortedMatches = (0, path_matcher_1.sortRulePathMatches)(matches);
34
+ const resolved = resolveInheritedRule(sortedMatches.map((match) => {
35
+ return {
36
+ rulePath: match.rulePath,
37
+ entry: this.config.rules[match.rulePath],
38
+ };
39
+ }));
40
+ const access = resolveAccessRule(resolved.entry, operation);
41
+ if (!access) {
42
+ return {
43
+ allowed: false,
44
+ rulePath: resolved.rulePath,
45
+ };
46
+ }
47
+ return {
48
+ allowed: await evaluateAccessRule(access, input.authentication, input.fetchDocument),
49
+ rulePath: resolved.rulePath,
50
+ access,
51
+ };
52
+ }
53
+ }
54
+ exports.RulesEngine = RulesEngine;
55
+ /**
56
+ * Build a normalized rules path.
57
+ *
58
+ * 正規化されたrulesパスを生成します。
59
+ */
60
+ function buildRulesPath({ database, table, indexKey }) {
61
+ return [
62
+ "database",
63
+ encodeRulesPathSegment(database),
64
+ "table",
65
+ encodeRulesPathSegment(table),
66
+ encodeRulesPathSegment(indexKey),
67
+ ].join("/");
68
+ }
69
+ /**
70
+ * Normalize HTTP method to rules operation.
71
+ *
72
+ * HTTPメソッドをrules操作に正規化します。
73
+ */
74
+ function normalizeHttpMethodToRulesOperation(method) {
75
+ switch (method.toUpperCase()) {
76
+ case "GET":
77
+ return "get";
78
+ case "POST":
79
+ return "create";
80
+ case "PUT":
81
+ return "update";
82
+ case "DELETE":
83
+ return "delete";
84
+ default:
85
+ throw new Error(`Unsupported HTTP method for rules: ${method}`);
86
+ }
87
+ }
88
+ /**
89
+ * Normalize rules operation aliases.
90
+ *
91
+ * rules操作エイリアスを正規化します。
92
+ */
93
+ function normalizeRulesOperation(operation) {
94
+ switch (operation) {
95
+ case "read":
96
+ return "get";
97
+ case "write":
98
+ return "create";
99
+ case "get":
100
+ case "create":
101
+ case "update":
102
+ case "delete":
103
+ return operation;
104
+ }
105
+ }
106
+ /**
107
+ * Resolve operation lookup order.
108
+ *
109
+ * 操作の解決順を取得します。
110
+ */
111
+ function resolveRulesOperation(operation) {
112
+ const normalized = normalizeRulesOperation(operation);
113
+ switch (normalized) {
114
+ case "get":
115
+ return ["get", "read"];
116
+ case "create":
117
+ return ["create", "write"];
118
+ case "update":
119
+ return ["update", "write"];
120
+ case "delete":
121
+ return ["delete", "write"];
122
+ }
123
+ }
124
+ function resolveInheritedRule(matches) {
125
+ const inherited = {};
126
+ let rulePath = matches[0]?.rulePath ?? "";
127
+ for (const match of [...matches].reverse()) {
128
+ if (!match.entry) {
129
+ continue;
130
+ }
131
+ rulePath = match.rulePath;
132
+ for (const [operation, access] of Object.entries(match.entry)) {
133
+ inherited[operation] = access;
134
+ }
135
+ }
136
+ return {
137
+ rulePath,
138
+ entry: inherited,
139
+ };
140
+ }
141
+ function resolveAccessRule(entry, operation) {
142
+ for (const operationKey of resolveRulesOperation(operation)) {
143
+ const access = entry[operationKey];
144
+ if (access) {
145
+ return access;
146
+ }
147
+ }
148
+ return undefined;
149
+ }
150
+ async function evaluateAccessRule(access, authentication, fetchDocument) {
151
+ switch (access) {
152
+ case "deny":
153
+ return false;
154
+ case "allow":
155
+ return true;
156
+ case "authenticated":
157
+ return !!authentication?.uid;
158
+ default: {
159
+ const uid = authentication?.uid;
160
+ if (!uid || !fetchDocument) {
161
+ return false;
162
+ }
163
+ const document = await fetchDocument();
164
+ return document?.[access.field] === uid;
165
+ }
166
+ }
167
+ }
168
+ function encodeRulesPathSegment(segment) {
169
+ if (segment.length === 0 || segment.includes("/")) {
170
+ throw new Error(`Invalid rules path segment: ${segment}`);
171
+ }
172
+ return segment;
173
+ }
174
+ //# sourceMappingURL=rules_engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules_engine.js","sourceRoot":"","sources":["../../../../src/lib/src/rules/rules_engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Operation names supported by rules.json.
3
+ *
4
+ * rules.jsonでサポートする操作名。
5
+ */
6
+ export type RulesOperation = "get" | "create" | "update" | "delete";
7
+ /**
8
+ * Operation aliases supported by rules.json.
9
+ *
10
+ * rules.jsonでサポートする操作エイリアス。
11
+ */
12
+ export type RulesOperationAlias = "read" | "write";
13
+ /**
14
+ * Operation keys accepted in a rule entry.
15
+ *
16
+ * ルール内で指定可能な操作キー。
17
+ */
18
+ export type RulesOperationKey = RulesOperation | RulesOperationAlias;
19
+ /**
20
+ * Access rule for an operation.
21
+ *
22
+ * 操作に対するアクセスルール。
23
+ */
24
+ export type RulesAccessRule = "deny" | "allow" | "authenticated" | RulesFieldMatchAccessRule;
25
+ /**
26
+ * Field match access rule.
27
+ *
28
+ * フィールド一致アクセスルール。
29
+ */
30
+ export interface RulesFieldMatchAccessRule {
31
+ type: "fieldMatch";
32
+ field: string;
33
+ }
34
+ /**
35
+ * Rule entry for a matched path.
36
+ *
37
+ * パスに対応するルール定義。
38
+ */
39
+ export type RulesEntry = Partial<Record<RulesOperationKey, RulesAccessRule>>;
40
+ /**
41
+ * Rule map keyed by path pattern.
42
+ *
43
+ * パスパターンをキーにしたルールマップ。
44
+ */
45
+ export type RulesMap = Record<string, RulesEntry>;
46
+ /**
47
+ * rules.json configuration.
48
+ *
49
+ * rules.json設定。
50
+ */
51
+ export interface RulesConfig {
52
+ version: string;
53
+ rules: RulesMap;
54
+ }
55
+ /**
56
+ * Result of loading and validating rules.
57
+ *
58
+ * rulesの読み込み・検証結果。
59
+ */
60
+ export interface LoadedRulesConfig extends RulesConfig {
61
+ }
62
+ /**
63
+ * Load and validate rules configuration.
64
+ *
65
+ * rules設定を読み込み、検証します。
66
+ */
67
+ export declare function loadRulesConfig(input: unknown): LoadedRulesConfig;
68
+ /**
69
+ * Validate a rule path.
70
+ *
71
+ * ルールパスを検証します。
72
+ */
73
+ export declare function validateRulePath(path: string): void;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadRulesConfig = loadRulesConfig;
4
+ exports.validateRulePath = validateRulePath;
5
+ const allowedAccessValues = new Set(["deny", "allow", "authenticated"]);
6
+ const allowedOperationKeys = new Set([
7
+ "get",
8
+ "create",
9
+ "update",
10
+ "delete",
11
+ "read",
12
+ "write",
13
+ ]);
14
+ /**
15
+ * Load and validate rules configuration.
16
+ *
17
+ * rules設定を読み込み、検証します。
18
+ */
19
+ function loadRulesConfig(input) {
20
+ if (!isRecord(input)) {
21
+ throw new Error("Rules config must be an object.");
22
+ }
23
+ if (typeof input.version !== "string" || input.version.length === 0) {
24
+ throw new Error("Rules config version must be a non-empty string.");
25
+ }
26
+ if (!isRecord(input.rules) || Array.isArray(input.rules)) {
27
+ throw new Error("Rules config rules must be an object map.");
28
+ }
29
+ const rules = {};
30
+ for (const [path, entry] of Object.entries(input.rules)) {
31
+ validateRulePath(path);
32
+ rules[path] = validateRulesEntry(path, entry);
33
+ }
34
+ return {
35
+ version: input.version,
36
+ rules,
37
+ };
38
+ }
39
+ /**
40
+ * Validate a rule path.
41
+ *
42
+ * ルールパスを検証します。
43
+ */
44
+ function validateRulePath(path) {
45
+ if (path.length === 0) {
46
+ throw new Error("Rule path must be a non-empty string.");
47
+ }
48
+ if (path.startsWith("/") || path.endsWith("/")) {
49
+ throw new Error(`Rule path must not start or end with '/': ${path}`);
50
+ }
51
+ const segments = path.split("/");
52
+ if (segments.some((segment) => segment.length === 0)) {
53
+ throw new Error(`Rule path must not contain empty segments: ${path}`);
54
+ }
55
+ const deepWildcardIndex = segments.indexOf("**");
56
+ if (deepWildcardIndex >= 0 && deepWildcardIndex !== segments.length - 1) {
57
+ throw new Error(`'**' must be the last segment in rule path: ${path}`);
58
+ }
59
+ }
60
+ function validateRulesEntry(path, entry) {
61
+ if (!isRecord(entry) || Array.isArray(entry)) {
62
+ throw new Error(`Rule entry must be an object: ${path}`);
63
+ }
64
+ const result = {};
65
+ for (const [operation, access] of Object.entries(entry)) {
66
+ if (!allowedOperationKeys.has(operation)) {
67
+ throw new Error(`Unsupported rule operation '${operation}' in ${path}.`);
68
+ }
69
+ result[operation] = validateAccessRule(path, operation, access);
70
+ }
71
+ return result;
72
+ }
73
+ function validateAccessRule(path, operation, access) {
74
+ if (typeof access === "string") {
75
+ if (allowedAccessValues.has(access)) {
76
+ return access;
77
+ }
78
+ throw new Error(`Unsupported access rule '${access}' for ${operation} in ${path}.`);
79
+ }
80
+ if (isRecord(access)) {
81
+ if (access.type === "fieldMatch" && typeof access.field === "string" && access.field.length > 0) {
82
+ return {
83
+ type: "fieldMatch",
84
+ field: access.field,
85
+ };
86
+ }
87
+ }
88
+ throw new Error(`Invalid access rule for ${operation} in ${path}.`);
89
+ }
90
+ function isRecord(value) {
91
+ return typeof value === "object" && value !== null;
92
+ }
93
+ //# sourceMappingURL=rules_loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules_loader.js","sourceRoot":"","sources":["../../../../src/lib/src/rules/rules_loader.ts"],"names":[],"mappings":";;AAwFA,0CAoBC;AAOD,4CAeC;AAzDD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;AACxE,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACjC,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,OAAO;CACV,CAAC,CAAC;AAEH;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IACD,OAAO;QACH,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK;KACR,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,iBAAiB,IAAI,CAAC,IAAI,iBAAiB,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,KAAc;IACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,QAAQ,IAAI,GAAG,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,CAAC,SAA8B,CAAC,GAAG,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,SAAiB,EAAE,MAAe;IACxE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,OAAO,MAAyB,CAAC;QACrC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,SAAS,SAAS,OAAO,IAAI,GAAG,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnB,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9F,OAAO;gBACH,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,MAAM,CAAC,KAAK;aACtB,CAAC;QACN,CAAC;IACL,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,OAAO,IAAI,GAAG,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACvD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { MiddlewareHandler } from "hono";
2
+ /**
3
+ * Base class for worker adapter for Cloudflare Workers.
4
+ *
5
+ * Cloudflare Workers用のワーカーアダプターのベースクラス。
6
+ */
7
+ export declare abstract class WorkerAdapterBase {
8
+ /**
9
+ * Create Hono middleware.
10
+ *
11
+ * Honoミドルウェアを作成します。
12
+ */
13
+ abstract build(): MiddlewareHandler;
14
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkerAdapterBase = void 0;
4
+ /**
5
+ * Base class for worker adapter for Cloudflare Workers.
6
+ *
7
+ * Cloudflare Workers用のワーカーアダプターのベースクラス。
8
+ */
9
+ class WorkerAdapterBase {
10
+ }
11
+ exports.WorkerAdapterBase = WorkerAdapterBase;
12
+ //# sourceMappingURL=worker_adapter_base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker_adapter_base.js","sourceRoot":"","sources":["../../../src/lib/src/worker_adapter_base.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACH,MAAsB,iBAAiB;CAOtC;AAPD,8CAOC"}
@@ -0,0 +1,36 @@
1
+ import { Context } from "hono";
2
+ import { WorkerAdapterBase } from "./worker_adapter_base";
3
+ /**
4
+ * Authentication context for Cloudflare Workers.
5
+ *
6
+ * Cloudflare Workersの認証コンテキスト。
7
+ */
8
+ export interface WorkersAuthContext {
9
+ /**
10
+ * User ID.
11
+ *
12
+ * ユーザーID。
13
+ */
14
+ uid?: string | undefined;
15
+ /**
16
+ * Decoded authentication token.
17
+ *
18
+ * デコード済みの認証トークン。
19
+ */
20
+ token?: {
21
+ [key: string]: any;
22
+ } | undefined;
23
+ }
24
+ /**
25
+ * Base class for authentication adapter for Cloudflare Workers.
26
+ *
27
+ * Cloudflare Workers用の認証アダプターのベースクラス。
28
+ */
29
+ export declare abstract class WorkersAuthAdapterBase extends WorkerAdapterBase {
30
+ /**
31
+ * Set authentication context.
32
+ *
33
+ * 認証コンテキストを設定します。
34
+ */
35
+ protected setAuthContext(context: Context, authentication: WorkersAuthContext): void;
36
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkersAuthAdapterBase = void 0;
4
+ const worker_adapter_base_1 = require("./worker_adapter_base");
5
+ /**
6
+ * Base class for authentication adapter for Cloudflare Workers.
7
+ *
8
+ * Cloudflare Workers用の認証アダプターのベースクラス。
9
+ */
10
+ class WorkersAuthAdapterBase extends worker_adapter_base_1.WorkerAdapterBase {
11
+ /**
12
+ * Set authentication context.
13
+ *
14
+ * 認証コンテキストを設定します。
15
+ */
16
+ setAuthContext(context, authentication) {
17
+ context.set("authentication", authentication);
18
+ }
19
+ }
20
+ exports.WorkersAuthAdapterBase = WorkersAuthAdapterBase;
21
+ //# sourceMappingURL=workers_auth_adapter_base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workers_auth_adapter_base.js","sourceRoot":"","sources":["../../../src/lib/src/workers_auth_adapter_base.ts"],"names":[],"mappings":";;;AACA,+DAA0D;AAuB1D;;;;GAIG;AACH,MAAsB,sBAAuB,SAAQ,uCAAiB;IAClE;;;;OAIG;IACO,cAAc,CACpB,OAAgB,EAChB,cAAkC;QAElC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAClD,CAAC;CACJ;AAZD,wDAYC"}
@@ -1,5 +1,6 @@
1
1
  import { Hono } from "hono";
2
- import { WorkersAuthenticationMiddlewareBase } from "./workers_authentication_middleware_base";
2
+ import { WorkersAuthAdapterBase } from "./workers_auth_adapter_base";
3
+ import { WorkersRuleAdapterBase } from "./workers_rule_adapter_base";
3
4
  /**
4
5
  * Define Function data for Cloudflare Workers.
5
6
  *
@@ -77,6 +78,12 @@ export declare abstract class WorkersBase {
77
78
  * 認証ミドルウェアを適用します。
78
79
  */
79
80
  protected applyAuthentication(hono: Hono, options: WorkersOptions): Hono;
81
+ /**
82
+ * Apply rules middleware.
83
+ *
84
+ * rulesミドルウェアを適用します。
85
+ */
86
+ protected applyRules(hono: Hono, options: WorkersOptions): Hono;
80
87
  }
81
88
  /**
82
89
  * Specifies the options for the process.
@@ -85,11 +92,17 @@ export declare abstract class WorkersBase {
85
92
  */
86
93
  export interface WorkersOptions {
87
94
  /**
88
- * Authentication middleware.
95
+ * Authentication adapter.
96
+ *
97
+ * 認証アダプター。
98
+ */
99
+ auth?: WorkersAuthAdapterBase | null | undefined;
100
+ /**
101
+ * Rules adapter.
89
102
  *
90
- * 認証ミドルウェア。
103
+ * rulesアダプター。
91
104
  */
92
- authentication?: WorkersAuthenticationMiddlewareBase | null | undefined;
105
+ rules?: WorkersRuleAdapterBase | null | undefined;
93
106
  }
94
107
  /**
95
108
  * Merge Workers options.
@@ -67,8 +67,19 @@ class WorkersBase {
67
67
  * 認証ミドルウェアを適用します。
68
68
  */
69
69
  applyAuthentication(hono, options) {
70
- if (options.authentication) {
71
- hono.use("*", options.authentication.build());
70
+ if (options.auth) {
71
+ hono.use("*", options.auth.build());
72
+ }
73
+ return hono;
74
+ }
75
+ /**
76
+ * Apply rules middleware.
77
+ *
78
+ * rulesミドルウェアを適用します。
79
+ */
80
+ applyRules(hono, options) {
81
+ if (options.rules) {
82
+ hono.use("*", options.rules.build());
72
83
  }
73
84
  return hono;
74
85
  }
@@ -80,12 +91,19 @@ exports.WorkersBase = WorkersBase;
80
91
  * Workersのオプションをマージします。
81
92
  */
82
93
  function resolveWorkersOptions(defaultOptions = {}, options = {}) {
94
+ const defaultAuth = defaultOptions.auth;
95
+ const auth = options.auth;
96
+ const defaultRules = defaultOptions.rules;
97
+ const rules = options.rules;
83
98
  return {
84
99
  ...defaultOptions,
85
100
  ...options,
86
- authentication: options.authentication === undefined
87
- ? defaultOptions.authentication
88
- : options.authentication,
101
+ auth: auth === undefined
102
+ ? defaultAuth
103
+ : auth,
104
+ rules: rules === undefined
105
+ ? defaultRules
106
+ : rules,
89
107
  };
90
108
  }
91
109
  //# sourceMappingURL=workers_base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workers_base.js","sourceRoot":"","sources":["../../../src/lib/src/workers_base.ts"],"names":[],"mappings":";;;AA6HA,sDAWC;AArID;;;;;;;;GAQG;AACH,MAAsB,WAAW;IAC7B;;;;;;;;OAQG;IACH,YAAY,EACR,IAAI,EACJ,IAAI,EACJ,IAAI,GAAG,EAAE,EACT,OAAO,GAUV;QACG,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACM,IAAI,CAAS;IAEtB;;;;;OAKG;IACM,IAAI,CAIiB;IAE9B;;;;OAIG;IACM,IAAI,CAAyB;IAEtC;;;;OAIG;IACM,OAAO,CAAiB;IASjC;;;;OAIG;IACO,cAAc,CAAC,iBAAiC,EAAE;QACxD,OAAO,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACO,mBAAmB,CAAC,IAAU,EAAE,OAAuB;QAC7D,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AA5FD,kCA4FC;AAgBD;;;;GAIG;AACH,SAAgB,qBAAqB,CACjC,iBAAiC,EAAE,EACnC,UAA0B,EAAE;IAE5B,OAAO;QACH,GAAG,cAAc;QACjB,GAAG,OAAO;QACV,cAAc,EAAE,OAAO,CAAC,cAAc,KAAK,SAAS;YAChD,CAAC,CAAC,cAAc,CAAC,cAAc;YAC/B,CAAC,CAAC,OAAO,CAAC,cAAc;KAC/B,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"workers_base.js","sourceRoot":"","sources":["../../../src/lib/src/workers_base.ts"],"names":[],"mappings":";;;AAiJA,sDAkBC;AA/JD;;;;;;;;GAQG;AACH,MAAsB,WAAW;IAC7B;;;;;;;;OAQG;IACH,YAAY,EACR,IAAI,EACJ,IAAI,EACJ,IAAI,GAAG,EAAE,EACT,OAAO,GAUV;QACG,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACM,IAAI,CAAS;IAEtB;;;;;OAKG;IACM,IAAI,CAIiB;IAE9B;;;;OAIG;IACM,IAAI,CAAyB;IAEtC;;;;OAIG;IACM,OAAO,CAAiB;IASjC;;;;OAIG;IACO,cAAc,CAAC,iBAAiC,EAAE;QACxD,OAAO,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACO,mBAAmB,CAAC,IAAU,EAAE,OAAuB;QAC7D,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACO,UAAU,CAAC,IAAU,EAAE,OAAuB;QACpD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAxGD,kCAwGC;AAuBD;;;;GAIG;AACH,SAAgB,qBAAqB,CACjC,iBAAiC,EAAE,EACnC,UAA0B,EAAE;IAE5B,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,OAAO;QACH,GAAG,cAAc;QACjB,GAAG,OAAO;QACV,IAAI,EAAE,IAAI,KAAK,SAAS;YACpB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,IAAI;QACV,KAAK,EAAE,KAAK,KAAK,SAAS;YACtB,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,KAAK;KACd,CAAC;AACN,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { Context, MiddlewareHandler } from "hono";
2
+ import { RulesEvaluationResult } from "./rules/rules_engine";
3
+ /**
4
+ * Base class for rules adapter for Cloudflare Workers.
5
+ *
6
+ * Cloudflare Workers用のrulesアダプターのベースクラス。
7
+ */
8
+ export declare abstract class WorkersRuleAdapterBase {
9
+ /**
10
+ * Create Hono middleware.
11
+ *
12
+ * Honoミドルウェアを作成します。
13
+ */
14
+ abstract build(): MiddlewareHandler;
15
+ /**
16
+ * Set rules evaluation result to context.
17
+ *
18
+ * rules評価結果をコンテキストに設定します。
19
+ */
20
+ protected setRulesContext(context: Context, result: RulesEvaluationResult): void;
21
+ /**
22
+ * Get rules evaluation result from context.
23
+ *
24
+ * コンテキストからrules評価結果を取得します。
25
+ */
26
+ protected getRulesContext(context: Context): RulesEvaluationResult | undefined;
27
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkersRuleAdapterBase = void 0;
4
+ /**
5
+ * Base class for rules adapter for Cloudflare Workers.
6
+ *
7
+ * Cloudflare Workers用のrulesアダプターのベースクラス。
8
+ */
9
+ class WorkersRuleAdapterBase {
10
+ /**
11
+ * Set rules evaluation result to context.
12
+ *
13
+ * rules評価結果をコンテキストに設定します。
14
+ */
15
+ setRulesContext(context, result) {
16
+ context.set("rules", result);
17
+ }
18
+ /**
19
+ * Get rules evaluation result from context.
20
+ *
21
+ * コンテキストからrules評価結果を取得します。
22
+ */
23
+ getRulesContext(context) {
24
+ return context.get("rules");
25
+ }
26
+ }
27
+ exports.WorkersRuleAdapterBase = WorkersRuleAdapterBase;
28
+ //# sourceMappingURL=workers_rule_adapter_base.js.map