@mathrunet/masamune_cloudflare 3.1.6 → 3.1.8
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/CHANGELOG.md +1 -1
- package/README.md +45 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/adapters/rules_middleware.d.ts +45 -0
- package/dist/lib/adapters/rules_middleware.js +42 -0
- package/dist/lib/adapters/rules_middleware.js.map +1 -0
- package/dist/lib/middlewares/index.d.ts +3 -2
- package/dist/lib/middlewares/index.js +7 -2
- package/dist/lib/middlewares/index.js.map +1 -1
- package/dist/lib/middlewares/rules_middleware.d.ts +29 -0
- package/dist/lib/middlewares/rules_middleware.js +36 -0
- package/dist/lib/middlewares/rules_middleware.js.map +1 -0
- package/dist/lib/src/rules/path_matcher.d.ts +33 -0
- package/dist/lib/src/rules/path_matcher.js +127 -0
- package/dist/lib/src/rules/path_matcher.js.map +1 -0
- package/dist/lib/src/rules/rules_engine.d.ts +182 -0
- package/dist/lib/src/rules/rules_engine.js +523 -0
- package/dist/lib/src/rules/rules_engine.js.map +1 -0
- package/dist/lib/src/rules/rules_loader.d.ts +93 -0
- package/dist/lib/src/rules/rules_loader.js +125 -0
- package/dist/lib/src/rules/rules_loader.js.map +1 -0
- package/dist/lib/src/worker_adapter_base.d.ts +14 -0
- package/dist/lib/src/worker_adapter_base.js +12 -0
- package/dist/lib/src/worker_adapter_base.js.map +1 -0
- package/dist/lib/src/workers_auth_adapter_base.d.ts +3 -8
- package/dist/lib/src/workers_auth_adapter_base.js +2 -1
- package/dist/lib/src/workers_auth_adapter_base.js.map +1 -1
- package/dist/lib/src/workers_base.d.ts +32 -0
- package/dist/lib/src/workers_base.js +41 -3
- package/dist/lib/src/workers_base.js.map +1 -1
- package/dist/lib/src/workers_rule_adapter_base.d.ts +27 -0
- package/dist/lib/src/workers_rule_adapter_base.js +28 -0
- package/dist/lib/src/workers_rule_adapter_base.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,125 @@
|
|
|
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", "server"]);
|
|
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 paramNames = new Set();
|
|
56
|
+
for (const segment of segments) {
|
|
57
|
+
const paramName = parseNamedPathParam(segment);
|
|
58
|
+
if ((segment.startsWith("{") || segment.endsWith("}")) && !paramName) {
|
|
59
|
+
throw new Error(`Invalid path parameter segment '${segment}' in rule path: ${path}`);
|
|
60
|
+
}
|
|
61
|
+
if (!paramName) {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (paramNames.has(paramName)) {
|
|
65
|
+
throw new Error(`Duplicate path parameter '${paramName}' in rule path: ${path}`);
|
|
66
|
+
}
|
|
67
|
+
paramNames.add(paramName);
|
|
68
|
+
}
|
|
69
|
+
const deepWildcardIndex = segments.indexOf("**");
|
|
70
|
+
if (deepWildcardIndex >= 0 && deepWildcardIndex !== segments.length - 1) {
|
|
71
|
+
throw new Error(`'**' must be the last segment in rule path: ${path}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function validateRulesEntry(path, entry) {
|
|
75
|
+
if (!isRecord(entry) || Array.isArray(entry)) {
|
|
76
|
+
throw new Error(`Rule entry must be an object: ${path}`);
|
|
77
|
+
}
|
|
78
|
+
const result = {};
|
|
79
|
+
for (const [operation, access] of Object.entries(entry)) {
|
|
80
|
+
if (!allowedOperationKeys.has(operation)) {
|
|
81
|
+
throw new Error(`Unsupported rule operation '${operation}' in ${path}.`);
|
|
82
|
+
}
|
|
83
|
+
result[operation] = validateAccessRule(path, operation, access);
|
|
84
|
+
}
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
function validateAccessRule(path, operation, access) {
|
|
88
|
+
if (typeof access === "string") {
|
|
89
|
+
if (allowedAccessValues.has(access)) {
|
|
90
|
+
return access;
|
|
91
|
+
}
|
|
92
|
+
throw new Error(`Unsupported access rule '${access}' for ${operation} in ${path}.`);
|
|
93
|
+
}
|
|
94
|
+
if (isRecord(access)) {
|
|
95
|
+
if (access.type === "fieldMatch" && typeof access.field === "string" && access.field.length > 0) {
|
|
96
|
+
return {
|
|
97
|
+
type: "fieldMatch",
|
|
98
|
+
field: access.field,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
if (access.type === "field" && typeof access.field === "string" && access.field.length > 0) {
|
|
102
|
+
return {
|
|
103
|
+
type: "field",
|
|
104
|
+
field: access.field,
|
|
105
|
+
...(access.server === true ? { server: true } : {}),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
if (access.type === "path" && typeof access.param === "string" && access.param.length > 0) {
|
|
109
|
+
return {
|
|
110
|
+
type: "path",
|
|
111
|
+
param: access.param,
|
|
112
|
+
...(access.server === true ? { server: true } : {}),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
throw new Error(`Invalid access rule for ${operation} in ${path}.`);
|
|
117
|
+
}
|
|
118
|
+
function parseNamedPathParam(segment) {
|
|
119
|
+
const match = /^\{([A-Za-z_][A-Za-z0-9_]*)\}$/.exec(segment);
|
|
120
|
+
return match?.[1];
|
|
121
|
+
}
|
|
122
|
+
function isRecord(value) {
|
|
123
|
+
return typeof value === "object" && value !== null;
|
|
124
|
+
}
|
|
125
|
+
//# 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":"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"}
|
|
@@ -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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Context
|
|
1
|
+
import { Context } from "hono";
|
|
2
|
+
import { WorkerAdapterBase } from "./worker_adapter_base";
|
|
2
3
|
/**
|
|
3
4
|
* Authentication context for Cloudflare Workers.
|
|
4
5
|
*
|
|
@@ -25,13 +26,7 @@ export interface WorkersAuthContext {
|
|
|
25
26
|
*
|
|
26
27
|
* Cloudflare Workers用の認証アダプターのベースクラス。
|
|
27
28
|
*/
|
|
28
|
-
export declare abstract class WorkersAuthAdapterBase {
|
|
29
|
-
/**
|
|
30
|
-
* Create Hono middleware.
|
|
31
|
-
*
|
|
32
|
-
* Honoミドルウェアを作成します。
|
|
33
|
-
*/
|
|
34
|
-
abstract build(): MiddlewareHandler;
|
|
29
|
+
export declare abstract class WorkersAuthAdapterBase extends WorkerAdapterBase {
|
|
35
30
|
/**
|
|
36
31
|
* Set authentication context.
|
|
37
32
|
*
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WorkersAuthAdapterBase = void 0;
|
|
4
|
+
const worker_adapter_base_1 = require("./worker_adapter_base");
|
|
4
5
|
/**
|
|
5
6
|
* Base class for authentication adapter for Cloudflare Workers.
|
|
6
7
|
*
|
|
7
8
|
* Cloudflare Workers用の認証アダプターのベースクラス。
|
|
8
9
|
*/
|
|
9
|
-
class WorkersAuthAdapterBase {
|
|
10
|
+
class WorkersAuthAdapterBase extends worker_adapter_base_1.WorkerAdapterBase {
|
|
10
11
|
/**
|
|
11
12
|
* Set authentication context.
|
|
12
13
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workers_auth_adapter_base.js","sourceRoot":"","sources":["../../../src/lib/src/workers_auth_adapter_base.ts"],"names":[],"mappings":";;;
|
|
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,7 @@
|
|
|
1
1
|
import { Hono } from "hono";
|
|
2
2
|
import { WorkersAuthAdapterBase } from "./workers_auth_adapter_base";
|
|
3
|
+
import { WorkersRuleAdapterBase } from "./workers_rule_adapter_base";
|
|
4
|
+
import { RulesConfig } from "./rules/rules_loader";
|
|
3
5
|
/**
|
|
4
6
|
* Define Function data for Cloudflare Workers.
|
|
5
7
|
*
|
|
@@ -77,6 +79,12 @@ export declare abstract class WorkersBase {
|
|
|
77
79
|
* 認証ミドルウェアを適用します。
|
|
78
80
|
*/
|
|
79
81
|
protected applyAuthentication(hono: Hono, options: WorkersOptions): Hono;
|
|
82
|
+
/**
|
|
83
|
+
* Apply rules middleware.
|
|
84
|
+
*
|
|
85
|
+
* rulesミドルウェアを適用します。
|
|
86
|
+
*/
|
|
87
|
+
protected applyRules(hono: Hono, options: WorkersOptions): Hono;
|
|
80
88
|
}
|
|
81
89
|
/**
|
|
82
90
|
* Specifies the options for the process.
|
|
@@ -90,10 +98,34 @@ export interface WorkersOptions {
|
|
|
90
98
|
* 認証アダプター。
|
|
91
99
|
*/
|
|
92
100
|
auth?: WorkersAuthAdapterBase | null | undefined;
|
|
101
|
+
/**
|
|
102
|
+
* Rules adapter or rules.json configuration.
|
|
103
|
+
*
|
|
104
|
+
* rulesアダプター、またはrules.json設定。
|
|
105
|
+
*/
|
|
106
|
+
rules?: WorkersRulesOption | null | undefined;
|
|
93
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Rules option for Workers.
|
|
110
|
+
*
|
|
111
|
+
* Workers用rulesオプション。
|
|
112
|
+
*/
|
|
113
|
+
export type WorkersRulesOption = WorkersRuleAdapterBase | RulesConfig;
|
|
94
114
|
/**
|
|
95
115
|
* Merge Workers options.
|
|
96
116
|
*
|
|
97
117
|
* Workersのオプションをマージします。
|
|
98
118
|
*/
|
|
99
119
|
export declare function resolveWorkersOptions(defaultOptions?: WorkersOptions, options?: WorkersOptions): WorkersOptions;
|
|
120
|
+
/**
|
|
121
|
+
* Returns true when rules option is a middleware adapter.
|
|
122
|
+
*
|
|
123
|
+
* rulesオプションがミドルウェアアダプターの場合はtrueを返します。
|
|
124
|
+
*/
|
|
125
|
+
export declare function isWorkersRuleAdapter(rules: WorkersRulesOption | null | undefined): rules is WorkersRuleAdapterBase;
|
|
126
|
+
/**
|
|
127
|
+
* Returns true when rules option is rules.json configuration.
|
|
128
|
+
*
|
|
129
|
+
* rulesオプションがrules.json設定の場合はtrueを返します。
|
|
130
|
+
*/
|
|
131
|
+
export declare function isRulesConfig(rules: WorkersRulesOption | null | undefined): rules is RulesConfig;
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WorkersBase = void 0;
|
|
4
4
|
exports.resolveWorkersOptions = resolveWorkersOptions;
|
|
5
|
+
exports.isWorkersRuleAdapter = isWorkersRuleAdapter;
|
|
6
|
+
exports.isRulesConfig = isRulesConfig;
|
|
5
7
|
/**
|
|
6
8
|
* Define Function data for Cloudflare Workers.
|
|
7
9
|
*
|
|
@@ -72,6 +74,17 @@ class WorkersBase {
|
|
|
72
74
|
}
|
|
73
75
|
return hono;
|
|
74
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Apply rules middleware.
|
|
79
|
+
*
|
|
80
|
+
* rulesミドルウェアを適用します。
|
|
81
|
+
*/
|
|
82
|
+
applyRules(hono, options) {
|
|
83
|
+
if (isWorkersRuleAdapter(options.rules)) {
|
|
84
|
+
hono.use("*", options.rules.build());
|
|
85
|
+
}
|
|
86
|
+
return hono;
|
|
87
|
+
}
|
|
75
88
|
}
|
|
76
89
|
exports.WorkersBase = WorkersBase;
|
|
77
90
|
/**
|
|
@@ -80,12 +93,37 @@ exports.WorkersBase = WorkersBase;
|
|
|
80
93
|
* Workersのオプションをマージします。
|
|
81
94
|
*/
|
|
82
95
|
function resolveWorkersOptions(defaultOptions = {}, options = {}) {
|
|
96
|
+
const defaultAuth = defaultOptions.auth;
|
|
97
|
+
const auth = options.auth;
|
|
98
|
+
const defaultRules = defaultOptions.rules;
|
|
99
|
+
const rules = options.rules;
|
|
83
100
|
return {
|
|
84
101
|
...defaultOptions,
|
|
85
102
|
...options,
|
|
86
|
-
auth:
|
|
87
|
-
?
|
|
88
|
-
:
|
|
103
|
+
auth: auth === undefined
|
|
104
|
+
? defaultAuth
|
|
105
|
+
: auth,
|
|
106
|
+
rules: rules === undefined
|
|
107
|
+
? defaultRules
|
|
108
|
+
: rules,
|
|
89
109
|
};
|
|
90
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Returns true when rules option is a middleware adapter.
|
|
113
|
+
*
|
|
114
|
+
* rulesオプションがミドルウェアアダプターの場合はtrueを返します。
|
|
115
|
+
*/
|
|
116
|
+
function isWorkersRuleAdapter(rules) {
|
|
117
|
+
return !!rules && typeof rules.build === "function";
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Returns true when rules option is rules.json configuration.
|
|
121
|
+
*
|
|
122
|
+
* rulesオプションがrules.json設定の場合はtrueを返します。
|
|
123
|
+
*/
|
|
124
|
+
function isRulesConfig(rules) {
|
|
125
|
+
return !!rules && typeof rules.version === "string" &&
|
|
126
|
+
typeof rules.rules === "object" &&
|
|
127
|
+
rules.rules !== null;
|
|
128
|
+
}
|
|
91
129
|
//# sourceMappingURL=workers_base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workers_base.js","sourceRoot":"","sources":["../../../src/lib/src/workers_base.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"workers_base.js","sourceRoot":"","sources":["../../../src/lib/src/workers_base.ts"],"names":[],"mappings":";;;AAyJA,sDAkBC;AAOD,oDAIC;AAOD,sCAMC;AA9LD;;;;;;;;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,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,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;AA8BD;;;;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;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAChC,KAA4C;IAE5C,OAAO,CAAC,CAAC,KAAK,IAAI,OAAQ,KAAgC,CAAC,KAAK,KAAK,UAAU,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CACzB,KAA4C;IAE5C,OAAO,CAAC,CAAC,KAAK,IAAI,OAAQ,KAAqB,CAAC,OAAO,KAAK,QAAQ;QAChE,OAAQ,KAAqB,CAAC,KAAK,KAAK,QAAQ;QAC/C,KAAqB,CAAC,KAAK,KAAK,IAAI,CAAC;AAC9C,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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workers_rule_adapter_base.js","sourceRoot":"","sources":["../../../src/lib/src/workers_rule_adapter_base.ts"],"names":[],"mappings":";;;AAGA;;;;GAIG;AACH,MAAsB,sBAAsB;IAQxC;;;;OAIG;IACO,eAAe,CACrB,OAAgB,EAChB,MAA6B;QAE7B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACO,eAAe,CAAC,OAAgB;QACtC,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAsC,CAAC;IACrE,CAAC;CACJ;AA5BD,wDA4BC"}
|
package/package.json
CHANGED