@mathrunet/masamune_cloudflare_turso 3.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/CHANGELOG.md +363 -0
- package/LICENSE +21 -0
- package/README.md +213 -0
- package/dist/functions/test.d.ts +1 -0
- package/dist/functions/test.js +71 -0
- package/dist/functions/test.js.map +1 -0
- package/dist/functions/turso.d.ts +1 -0
- package/dist/functions/turso.js +50 -0
- package/dist/functions/turso.js.map +1 -0
- package/dist/functions/turso_token.d.ts +1 -0
- package/dist/functions/turso_token.js +40 -0
- package/dist/functions/turso_token.js.map +1 -0
- package/dist/functions.d.ts +21 -0
- package/dist/functions.js +24 -0
- package/dist/functions.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +183 -0
- package/dist/lib/api.js +144 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/crud.d.ts +10 -0
- package/dist/lib/crud.js +203 -0
- package/dist/lib/crud.js.map +1 -0
- package/dist/lib/exntensions/firestore.extension.d.ts +247 -0
- package/dist/lib/exntensions/firestore.extension.js +386 -0
- package/dist/lib/exntensions/firestore.extension.js.map +1 -0
- package/dist/lib/exntensions/string.extension.d.ts +214 -0
- package/dist/lib/exntensions/string.extension.js +223 -0
- package/dist/lib/exntensions/string.extension.js.map +1 -0
- package/dist/lib/model_field_value/converters/basic_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/basic_converter.js +51 -0
- package/dist/lib/model_field_value/converters/basic_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/enum_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/enum_converter.js +51 -0
- package/dist/lib/model_field_value/converters/enum_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_counter_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_counter_converter.js +216 -0
- package/dist/lib/model_field_value/converters/model_counter_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_date_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_date_converter.js +271 -0
- package/dist/lib/model_field_value/converters/model_date_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_date_range_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_date_range_converter.js +225 -0
- package/dist/lib/model_field_value/converters/model_date_range_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_geo_value_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_geo_value_converter.js +216 -0
- package/dist/lib/model_field_value/converters/model_geo_value_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_image_uri_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_image_uri_converter.js +184 -0
- package/dist/lib/model_field_value/converters/model_image_uri_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_locale_converter.d.ts +51 -0
- package/dist/lib/model_field_value/converters/model_locale_converter.js +228 -0
- package/dist/lib/model_field_value/converters/model_locale_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_localized_value_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_localized_value_converter.js +145 -0
- package/dist/lib/model_field_value/converters/model_localized_value_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_ref_base_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_ref_base_converter.js +159 -0
- package/dist/lib/model_field_value/converters/model_ref_base_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_search_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_search_converter.js +138 -0
- package/dist/lib/model_field_value/converters/model_search_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_server_command_base_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_server_command_base_converter.js +119 -0
- package/dist/lib/model_field_value/converters/model_server_command_base_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_time_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_time_converter.js +271 -0
- package/dist/lib/model_field_value/converters/model_time_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_time_range_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_time_range_converter.js +225 -0
- package/dist/lib/model_field_value/converters/model_time_range_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_timestamp_converter.d.ts +66 -0
- package/dist/lib/model_field_value/converters/model_timestamp_converter.js +297 -0
- package/dist/lib/model_field_value/converters/model_timestamp_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_timestamp_range_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_timestamp_range_converter.js +225 -0
- package/dist/lib/model_field_value/converters/model_timestamp_range_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_token_converter.d.ts +48 -0
- package/dist/lib/model_field_value/converters/model_token_converter.js +137 -0
- package/dist/lib/model_field_value/converters/model_token_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_uri_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_uri_converter.js +184 -0
- package/dist/lib/model_field_value/converters/model_uri_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_vector_value_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_vector_value_converter.js +125 -0
- package/dist/lib/model_field_value/converters/model_vector_value_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/model_video_uri_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/model_video_uri_converter.js +184 -0
- package/dist/lib/model_field_value/converters/model_video_uri_converter.js.map +1 -0
- package/dist/lib/model_field_value/converters/null_converter.d.ts +49 -0
- package/dist/lib/model_field_value/converters/null_converter.js +72 -0
- package/dist/lib/model_field_value/converters/null_converter.js.map +1 -0
- package/dist/lib/model_field_value/default_model_field_value_converter.d.ts +155 -0
- package/dist/lib/model_field_value/default_model_field_value_converter.js +303 -0
- package/dist/lib/model_field_value/default_model_field_value_converter.js.map +1 -0
- package/dist/lib/model_field_value/model_field_value.d.ts +467 -0
- package/dist/lib/model_field_value/model_field_value.js +665 -0
- package/dist/lib/model_field_value/model_field_value.js.map +1 -0
- package/dist/lib/model_field_value/model_field_value_converter.d.ts +117 -0
- package/dist/lib/model_field_value/model_field_value_converter.js +49 -0
- package/dist/lib/model_field_value/model_field_value_converter.js.map +1 -0
- package/dist/lib/regions.d.ts +6 -0
- package/dist/lib/regions.js +3 -0
- package/dist/lib/regions.js.map +1 -0
- package/dist/lib/request.d.ts +12 -0
- package/dist/lib/request.js +213 -0
- package/dist/lib/request.js.map +1 -0
- package/dist/lib/rules.d.ts +32 -0
- package/dist/lib/rules.js +299 -0
- package/dist/lib/rules.js.map +1 -0
- package/dist/lib/schema.d.ts +15 -0
- package/dist/lib/schema.js +141 -0
- package/dist/lib/schema.js.map +1 -0
- package/dist/lib/src/call_process_function_base.d.ts +39 -0
- package/dist/lib/src/call_process_function_base.js +72 -0
- package/dist/lib/src/call_process_function_base.js.map +1 -0
- package/dist/lib/src/firebase_loader.d.ts +30 -0
- package/dist/lib/src/firebase_loader.js +96 -0
- package/dist/lib/src/firebase_loader.js.map +1 -0
- package/dist/lib/src/firestore_base.d.ts +114 -0
- package/dist/lib/src/firestore_base.js +363 -0
- package/dist/lib/src/firestore_base.js.map +1 -0
- package/dist/lib/src/firestore_triggered_process_function_base.d.ts +40 -0
- package/dist/lib/src/firestore_triggered_process_function_base.js +72 -0
- package/dist/lib/src/firestore_triggered_process_function_base.js.map +1 -0
- package/dist/lib/src/functions_base.d.ts +327 -0
- package/dist/lib/src/functions_base.js +63 -0
- package/dist/lib/src/functions_base.js.map +1 -0
- package/dist/lib/src/functions_data.d.ts +10 -0
- package/dist/lib/src/functions_data.js +19 -0
- package/dist/lib/src/functions_data.js.map +1 -0
- package/dist/lib/src/request_process_function_base.d.ts +39 -0
- package/dist/lib/src/request_process_function_base.js +70 -0
- package/dist/lib/src/request_process_function_base.js.map +1 -0
- package/dist/lib/src/request_process_workders_base.d.ts +37 -0
- package/dist/lib/src/request_process_workders_base.js +27 -0
- package/dist/lib/src/request_process_workders_base.js.map +1 -0
- package/dist/lib/src/schedule_process_function_base.d.ts +33 -0
- package/dist/lib/src/schedule_process_function_base.js +71 -0
- package/dist/lib/src/schedule_process_function_base.js.map +1 -0
- package/dist/lib/src/sql_api_base.d.ts +185 -0
- package/dist/lib/src/sql_api_base.js +83 -0
- package/dist/lib/src/sql_api_base.js.map +1 -0
- package/dist/lib/src/workers_base.d.ts +74 -0
- package/dist/lib/src/workers_base.js +57 -0
- package/dist/lib/src/workers_base.js.map +1 -0
- package/dist/lib/src/workers_data.d.ts +10 -0
- package/dist/lib/src/workers_data.js +21 -0
- package/dist/lib/src/workers_data.js.map +1 -0
- package/dist/lib/token.d.ts +12 -0
- package/dist/lib/token.js +123 -0
- package/dist/lib/token.js.map +1 -0
- package/dist/lib/turso_client.d.ts +14 -0
- package/dist/lib/turso_client.js +130 -0
- package/dist/lib/turso_client.js.map +1 -0
- package/dist/lib/types.d.ts +71 -0
- package/dist/lib/types.js +3 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils.d.ts +82 -0
- package/dist/lib/utils.js +141 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/workers/test.d.ts +1 -0
- package/dist/workers/test.js +14 -0
- package/dist/workers/test.js.map +1 -0
- package/dist/workers/turso.d.ts +1 -0
- package/dist/workers/turso.js +50 -0
- package/dist/workers/turso.js.map +1 -0
- package/dist/workers/turso_token.d.ts +1 -0
- package/dist/workers/turso_token.js +40 -0
- package/dist/workers/turso_token.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for converting [ModelFieldValue] for use in Firestore.
|
|
3
|
+
*
|
|
4
|
+
* Firestoreで利用するための[ModelFieldValue]の変換を行うベースクラス。
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class ModelFieldValueConverter {
|
|
7
|
+
/**
|
|
8
|
+
* Base class for converting [ModelFieldValue] for use in Firestore.
|
|
9
|
+
*
|
|
10
|
+
* Firestoreで利用するための[ModelFieldValue]の変換を行うベースクラス。
|
|
11
|
+
*/
|
|
12
|
+
constructor();
|
|
13
|
+
/**
|
|
14
|
+
* The type of [ModelFieldValue] that can be converted.
|
|
15
|
+
*
|
|
16
|
+
* 変換可能な[ModelFieldValue]の型。
|
|
17
|
+
*/
|
|
18
|
+
abstract type: string;
|
|
19
|
+
/**
|
|
20
|
+
* Convert from Firestore manageable type to [ModelFieldValue].
|
|
21
|
+
*
|
|
22
|
+
* Firestoreで管理可能な型から[ModelFieldValue]に変換します。
|
|
23
|
+
*
|
|
24
|
+
* @param key
|
|
25
|
+
* @param value
|
|
26
|
+
* @param original
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
abstract convertFrom(key: string, value: any, original: {
|
|
30
|
+
[field: string]: any;
|
|
31
|
+
}): {
|
|
32
|
+
[field: string]: any;
|
|
33
|
+
} | null;
|
|
34
|
+
/**
|
|
35
|
+
* Convert from [ModelFieldValue] to Firestore manageable type.
|
|
36
|
+
*
|
|
37
|
+
* [ModelFieldValue]からFirestoreで管理可能な型に変換します。
|
|
38
|
+
*
|
|
39
|
+
* @param key
|
|
40
|
+
* @param value
|
|
41
|
+
* @param original
|
|
42
|
+
* @returns
|
|
43
|
+
*/
|
|
44
|
+
abstract convertTo(key: string, value: any, original: {
|
|
45
|
+
[field: string]: any;
|
|
46
|
+
}): {
|
|
47
|
+
[field: string]: any;
|
|
48
|
+
} | null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Base class for converting [ModelFieldValue] for use in Firestore.
|
|
52
|
+
*
|
|
53
|
+
* Firestoreで利用するための[ModelFieldValue]の変換を行うベースクラス。
|
|
54
|
+
*/
|
|
55
|
+
export declare abstract class FirestoreModelFieldValueConverter {
|
|
56
|
+
/**
|
|
57
|
+
* Base class for converting [ModelFieldValue] for use in Firestore.
|
|
58
|
+
*
|
|
59
|
+
* Firestoreで利用するための[ModelFieldValue]の変換を行うベースクラス。
|
|
60
|
+
*/
|
|
61
|
+
constructor();
|
|
62
|
+
/**
|
|
63
|
+
* The type of [ModelFieldValue] that can be converted.
|
|
64
|
+
*
|
|
65
|
+
* 変換可能な[ModelFieldValue]の型。
|
|
66
|
+
*/
|
|
67
|
+
abstract type: string;
|
|
68
|
+
/**
|
|
69
|
+
* Convert from Firestore manageable type to [ModelFieldValue].
|
|
70
|
+
*
|
|
71
|
+
* Generate and return a [DynamicMap] value from [key] and [value]. [original] is passed the [DynamicMap] before conversion.
|
|
72
|
+
*
|
|
73
|
+
* Return [Null] if there are no changes.
|
|
74
|
+
*
|
|
75
|
+
* Firestoreで管理可能な型から[ModelFieldValue]に変換します。
|
|
76
|
+
*
|
|
77
|
+
* [key]と[value]から[DynamicMap]の値を生成して返してください。[original]は変換前の[DynamicMap]を渡します。
|
|
78
|
+
*
|
|
79
|
+
* 変更がない場合は[Null]を返してください。
|
|
80
|
+
*/
|
|
81
|
+
abstract convertFrom(key: string, value: any, original: {
|
|
82
|
+
[field: string]: any;
|
|
83
|
+
}, firestoreInstance: FirebaseFirestore.Firestore): {
|
|
84
|
+
[field: string]: any;
|
|
85
|
+
} | null;
|
|
86
|
+
/**
|
|
87
|
+
* Convert from [ModelFieldValue] to Firestore manageable type.
|
|
88
|
+
*
|
|
89
|
+
* Generate and return a [DynamicMap] value from [key] and [value]. [original] is passed the [DynamicMap] before conversion.
|
|
90
|
+
*
|
|
91
|
+
* Return [Null] if there are no changes.
|
|
92
|
+
*
|
|
93
|
+
* [ModelFieldValue]からFirestoreで管理可能な型に変換します。
|
|
94
|
+
*
|
|
95
|
+
* [key]と[value]から[DynamicMap]の値を生成して返してください。[original]は変換前の[DynamicMap]を渡します。
|
|
96
|
+
*
|
|
97
|
+
* 変更がない場合は[Null]を返してください。
|
|
98
|
+
*/
|
|
99
|
+
abstract convertTo(key: string, value: any, original: {
|
|
100
|
+
[field: string]: any;
|
|
101
|
+
}, firestoreInstance: FirebaseFirestore.Firestore): {
|
|
102
|
+
[field: string]: any;
|
|
103
|
+
} | null;
|
|
104
|
+
/**
|
|
105
|
+
* Generate a header for ModelFieldValue.
|
|
106
|
+
*
|
|
107
|
+
* ModelFieldValue用のヘッダーを生成します。
|
|
108
|
+
*
|
|
109
|
+
* @returns { { [field: string]: any } }
|
|
110
|
+
* Header for ModelFieldValue.
|
|
111
|
+
*
|
|
112
|
+
* ModelFieldValue用のヘッダー。
|
|
113
|
+
*/
|
|
114
|
+
header(): {
|
|
115
|
+
[field: string]: any;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FirestoreModelFieldValueConverter = exports.ModelFieldValueConverter = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Base class for converting [ModelFieldValue] for use in Firestore.
|
|
6
|
+
*
|
|
7
|
+
* Firestoreで利用するための[ModelFieldValue]の変換を行うベースクラス。
|
|
8
|
+
*/
|
|
9
|
+
class ModelFieldValueConverter {
|
|
10
|
+
/**
|
|
11
|
+
* Base class for converting [ModelFieldValue] for use in Firestore.
|
|
12
|
+
*
|
|
13
|
+
* Firestoreで利用するための[ModelFieldValue]の変換を行うベースクラス。
|
|
14
|
+
*/
|
|
15
|
+
constructor() { }
|
|
16
|
+
}
|
|
17
|
+
exports.ModelFieldValueConverter = ModelFieldValueConverter;
|
|
18
|
+
/**
|
|
19
|
+
* Base class for converting [ModelFieldValue] for use in Firestore.
|
|
20
|
+
*
|
|
21
|
+
* Firestoreで利用するための[ModelFieldValue]の変換を行うベースクラス。
|
|
22
|
+
*/
|
|
23
|
+
class FirestoreModelFieldValueConverter {
|
|
24
|
+
/**
|
|
25
|
+
* Base class for converting [ModelFieldValue] for use in Firestore.
|
|
26
|
+
*
|
|
27
|
+
* Firestoreで利用するための[ModelFieldValue]の変換を行うベースクラス。
|
|
28
|
+
*/
|
|
29
|
+
constructor() { }
|
|
30
|
+
/**
|
|
31
|
+
* Generate a header for ModelFieldValue.
|
|
32
|
+
*
|
|
33
|
+
* ModelFieldValue用のヘッダーを生成します。
|
|
34
|
+
*
|
|
35
|
+
* @returns { { [field: string]: any } }
|
|
36
|
+
* Header for ModelFieldValue.
|
|
37
|
+
*
|
|
38
|
+
* ModelFieldValue用のヘッダー。
|
|
39
|
+
*/
|
|
40
|
+
header() {
|
|
41
|
+
return {
|
|
42
|
+
"@source": "server",
|
|
43
|
+
"@type": this.type,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
;
|
|
47
|
+
}
|
|
48
|
+
exports.FirestoreModelFieldValueConverter = FirestoreModelFieldValueConverter;
|
|
49
|
+
//# sourceMappingURL=model_field_value_converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model_field_value_converter.js","sourceRoot":"","sources":["../../../src/lib/model_field_value/model_field_value_converter.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACH,MAAsB,wBAAwB;IAC1C;;;;OAIG;IACH,gBAAgB,CAAC;CAqCpB;AA3CD,4DA2CC;AAED;;;;GAIG;AACH,MAAsB,iCAAiC;IACnD;;;;OAIG;IACH,gBAAgB,CAAC;IA+CjB;;;;;;;;;OASG;IACH,MAAM;QACF,OAAO;YACH,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,IAAI,CAAC,IAAI;SACrB,CAAC;IACN,CAAC;IAAA,CAAC;CACL;AArED,8EAqEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regions.js","sourceRoot":"","sources":["../../src/lib/regions.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Context } from "hono";
|
|
2
|
+
import { TursoRequestBody, TursoTokenRequestBody } from "./types";
|
|
3
|
+
export declare class HttpError extends Error {
|
|
4
|
+
readonly status: number;
|
|
5
|
+
constructor(status: number, message: string);
|
|
6
|
+
}
|
|
7
|
+
export declare function parseCrudRequest(context: Context): Promise<Required<Pick<TursoRequestBody, "database" | "table">> & TursoRequestBody>;
|
|
8
|
+
export declare function parseTokenRequest(context: Context): Promise<Required<Pick<TursoTokenRequestBody, "database" | "scope">> & TursoTokenRequestBody>;
|
|
9
|
+
export declare function validateIdentifier(value: string, label: string): string;
|
|
10
|
+
export declare function validateLogicalName(value: string, label: string): string;
|
|
11
|
+
export declare function validateIndexKey(value: string): string;
|
|
12
|
+
export declare function jsonError(context: Context, error: unknown): Response;
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpError = void 0;
|
|
4
|
+
exports.parseCrudRequest = parseCrudRequest;
|
|
5
|
+
exports.parseTokenRequest = parseTokenRequest;
|
|
6
|
+
exports.validateIdentifier = validateIdentifier;
|
|
7
|
+
exports.validateLogicalName = validateLogicalName;
|
|
8
|
+
exports.validateIndexKey = validateIndexKey;
|
|
9
|
+
exports.jsonError = jsonError;
|
|
10
|
+
const identifierPattern = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
11
|
+
class HttpError extends Error {
|
|
12
|
+
status;
|
|
13
|
+
constructor(status, message) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.status = status;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.HttpError = HttpError;
|
|
19
|
+
async function parseCrudRequest(context) {
|
|
20
|
+
const method = context.req.method.toUpperCase();
|
|
21
|
+
const body = method === "GET"
|
|
22
|
+
? parseGetRequest(context)
|
|
23
|
+
: await parseJsonBody(context);
|
|
24
|
+
const database = validateLogicalName(body.database ?? "main", "database");
|
|
25
|
+
const table = validateIdentifier(requiredString(body.table, "table"), "table");
|
|
26
|
+
const indexKey = body.indexKey ? validateIndexKey(body.indexKey) : undefined;
|
|
27
|
+
const where = validateWhere(body.where ?? []);
|
|
28
|
+
const orderBy = validateOrderBy(body.orderBy ?? []);
|
|
29
|
+
const limit = validateLimit(body.limit);
|
|
30
|
+
const value = body.value === undefined ? undefined : validateValue(body.value);
|
|
31
|
+
return {
|
|
32
|
+
...body,
|
|
33
|
+
database,
|
|
34
|
+
table,
|
|
35
|
+
indexKey,
|
|
36
|
+
where,
|
|
37
|
+
orderBy,
|
|
38
|
+
limit,
|
|
39
|
+
value,
|
|
40
|
+
count: body.count === true,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async function parseTokenRequest(context) {
|
|
44
|
+
const body = await parseJsonBody(context);
|
|
45
|
+
const database = validateLogicalName(body.database ?? "main", "database");
|
|
46
|
+
if (!Array.isArray(body.scope) || body.scope.length === 0) {
|
|
47
|
+
throw new HttpError(400, "scope is required.");
|
|
48
|
+
}
|
|
49
|
+
const scope = body.scope.map((item) => {
|
|
50
|
+
if (!item || typeof item !== "object") {
|
|
51
|
+
throw new HttpError(400, "scope item must be an object.");
|
|
52
|
+
}
|
|
53
|
+
const table = validateIdentifier(requiredString(item.table, "scope.table"), "scope.table");
|
|
54
|
+
if (!Array.isArray(item.operations) || item.operations.length === 0) {
|
|
55
|
+
throw new HttpError(400, "scope.operations is required.");
|
|
56
|
+
}
|
|
57
|
+
const operations = item.operations.map((operation) => {
|
|
58
|
+
switch (operation) {
|
|
59
|
+
case "read":
|
|
60
|
+
case "write":
|
|
61
|
+
case "get":
|
|
62
|
+
case "create":
|
|
63
|
+
case "update":
|
|
64
|
+
case "delete":
|
|
65
|
+
return operation;
|
|
66
|
+
default:
|
|
67
|
+
throw new HttpError(400, `Unsupported scope operation: ${operation}`);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
return {
|
|
71
|
+
table,
|
|
72
|
+
operations,
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
return {
|
|
76
|
+
...body,
|
|
77
|
+
database,
|
|
78
|
+
scope,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function validateIdentifier(value, label) {
|
|
82
|
+
if (!identifierPattern.test(value)) {
|
|
83
|
+
throw new HttpError(400, `Invalid ${label}: ${value}`);
|
|
84
|
+
}
|
|
85
|
+
return value;
|
|
86
|
+
}
|
|
87
|
+
function validateLogicalName(value, label) {
|
|
88
|
+
if (!/^[A-Za-z0-9_-]+$/.test(value)) {
|
|
89
|
+
throw new HttpError(400, `Invalid ${label}: ${value}`);
|
|
90
|
+
}
|
|
91
|
+
return value;
|
|
92
|
+
}
|
|
93
|
+
function validateIndexKey(value) {
|
|
94
|
+
if (value.length === 0 || value.includes("/")) {
|
|
95
|
+
throw new HttpError(400, `Invalid indexKey: ${value}`);
|
|
96
|
+
}
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
function jsonError(context, error) {
|
|
100
|
+
if (error instanceof HttpError) {
|
|
101
|
+
return context.json({ error: error.message }, error.status);
|
|
102
|
+
}
|
|
103
|
+
if (error instanceof Error) {
|
|
104
|
+
return context.json({ error: error.message }, 500);
|
|
105
|
+
}
|
|
106
|
+
return context.json({ error: "Internal Server Error" }, 500);
|
|
107
|
+
}
|
|
108
|
+
function parseGetRequest(context) {
|
|
109
|
+
const query = context.req.query();
|
|
110
|
+
const where = query.where ? parseJsonString(query.where, "where") : undefined;
|
|
111
|
+
const orderBy = query.orderBy ? parseJsonString(query.orderBy, "orderBy") : undefined;
|
|
112
|
+
const limit = query.limit === undefined ? undefined : Number(query.limit);
|
|
113
|
+
return {
|
|
114
|
+
database: query.database,
|
|
115
|
+
table: query.table,
|
|
116
|
+
indexKey: query.indexKey,
|
|
117
|
+
where,
|
|
118
|
+
orderBy,
|
|
119
|
+
limit,
|
|
120
|
+
count: query.count === "true",
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
async function parseJsonBody(context) {
|
|
124
|
+
try {
|
|
125
|
+
return await context.req.json();
|
|
126
|
+
}
|
|
127
|
+
catch (_) {
|
|
128
|
+
throw new HttpError(400, "Request body must be JSON.");
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function parseJsonString(value, label) {
|
|
132
|
+
try {
|
|
133
|
+
return JSON.parse(value);
|
|
134
|
+
}
|
|
135
|
+
catch (_) {
|
|
136
|
+
throw new HttpError(400, `${label} must be JSON.`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function requiredString(value, label) {
|
|
140
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
141
|
+
throw new HttpError(400, `${label} is required.`);
|
|
142
|
+
}
|
|
143
|
+
return value;
|
|
144
|
+
}
|
|
145
|
+
function validateWhere(where) {
|
|
146
|
+
if (!Array.isArray(where)) {
|
|
147
|
+
throw new HttpError(400, "where must be an array.");
|
|
148
|
+
}
|
|
149
|
+
return where.map((condition) => {
|
|
150
|
+
if (!condition || typeof condition !== "object") {
|
|
151
|
+
throw new HttpError(400, "where condition must be an object.");
|
|
152
|
+
}
|
|
153
|
+
const type = condition.type ?? "equalTo";
|
|
154
|
+
switch (type) {
|
|
155
|
+
case "equalTo":
|
|
156
|
+
case "notEqualTo":
|
|
157
|
+
case "lessThan":
|
|
158
|
+
case "lessThanOrEqualTo":
|
|
159
|
+
case "greaterThan":
|
|
160
|
+
case "greaterThanOrEqualTo":
|
|
161
|
+
case "whereIn":
|
|
162
|
+
case "whereNotIn":
|
|
163
|
+
case "isNull":
|
|
164
|
+
case "isNotNull":
|
|
165
|
+
case "like":
|
|
166
|
+
case "arrayContains":
|
|
167
|
+
case "arrayContainsAny":
|
|
168
|
+
break;
|
|
169
|
+
default:
|
|
170
|
+
throw new HttpError(400, `Unsupported where condition: ${condition.type}`);
|
|
171
|
+
}
|
|
172
|
+
const key = validateIdentifier(requiredString(condition.key, "where.key"), "where.key");
|
|
173
|
+
return {
|
|
174
|
+
type,
|
|
175
|
+
key,
|
|
176
|
+
value: condition.value,
|
|
177
|
+
};
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
function validateOrderBy(orderBy) {
|
|
181
|
+
if (!Array.isArray(orderBy)) {
|
|
182
|
+
throw new HttpError(400, "orderBy must be an array.");
|
|
183
|
+
}
|
|
184
|
+
return orderBy.map((condition) => {
|
|
185
|
+
if (!condition || typeof condition !== "object") {
|
|
186
|
+
throw new HttpError(400, "orderBy condition must be an object.");
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
key: validateIdentifier(requiredString(condition.key, "orderBy.key"), "orderBy.key"),
|
|
190
|
+
descending: condition.descending === true,
|
|
191
|
+
};
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
function validateLimit(limit) {
|
|
195
|
+
if (limit === undefined) {
|
|
196
|
+
return undefined;
|
|
197
|
+
}
|
|
198
|
+
if (!Number.isInteger(limit) || limit <= 0) {
|
|
199
|
+
throw new HttpError(400, "limit must be a positive integer.");
|
|
200
|
+
}
|
|
201
|
+
return limit;
|
|
202
|
+
}
|
|
203
|
+
function validateValue(value) {
|
|
204
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
205
|
+
throw new HttpError(400, "value must be an object.");
|
|
206
|
+
}
|
|
207
|
+
const result = {};
|
|
208
|
+
for (const [key, item] of Object.entries(value)) {
|
|
209
|
+
result[validateIdentifier(key, "value key")] = item;
|
|
210
|
+
}
|
|
211
|
+
return result;
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/lib/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AuthenticationContext, RulesAccessRule, RulesConfig, RulesOperation, RulesOperationKey, TursoTokenScopeInput } from "./types";
|
|
2
|
+
export interface RulesEvaluationInput {
|
|
3
|
+
path: string;
|
|
4
|
+
operation: RulesOperation | RulesOperationKey;
|
|
5
|
+
authentication?: AuthenticationContext | undefined;
|
|
6
|
+
fetchDocument?: (() => Promise<Record<string, unknown> | null | undefined>) | undefined;
|
|
7
|
+
}
|
|
8
|
+
export interface RulesEvaluationResult {
|
|
9
|
+
allowed: boolean;
|
|
10
|
+
rulePath?: string | undefined;
|
|
11
|
+
access?: RulesAccessRule | undefined;
|
|
12
|
+
}
|
|
13
|
+
export declare class RulesEngine {
|
|
14
|
+
constructor(config?: RulesConfig | undefined);
|
|
15
|
+
private readonly config;
|
|
16
|
+
evaluate(input: RulesEvaluationInput): Promise<RulesEvaluationResult>;
|
|
17
|
+
}
|
|
18
|
+
export declare function createTursoRulesEngine(config?: RulesConfig | undefined): RulesEngine;
|
|
19
|
+
export declare function buildRulesPath({ database, table, indexKey, }: {
|
|
20
|
+
database: string;
|
|
21
|
+
table: string;
|
|
22
|
+
indexKey: string;
|
|
23
|
+
}): string;
|
|
24
|
+
export declare function normalizeHttpMethodToRulesOperation(method: string): RulesOperation;
|
|
25
|
+
export declare function normalizeRulesOperation(operation: RulesOperation | RulesOperationKey): RulesOperation;
|
|
26
|
+
export declare function expandRulesOperation(operation: RulesOperationKey): RulesOperation[];
|
|
27
|
+
export declare function filterAllowedScope({ engine, database, scope, authentication, }: {
|
|
28
|
+
engine: RulesEngine;
|
|
29
|
+
database: string;
|
|
30
|
+
scope: TursoTokenScopeInput[];
|
|
31
|
+
authentication?: AuthenticationContext | undefined;
|
|
32
|
+
}): Promise<TursoTokenScopeInput[]>;
|