@h-ai/kit 0.1.0-alpha.67 → 0.1.0-alpha.68

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 (44) hide show
  1. package/README.en.md +39 -13
  2. package/README.ja.md +39 -13
  3. package/README.md +39 -13
  4. package/dist/adapter/index.d.ts +17 -2
  5. package/dist/adapter/index.js.map +1 -1
  6. package/dist/browser.d.ts +12 -6
  7. package/dist/browser.js +6 -7
  8. package/dist/browser.js.map +1 -1
  9. package/dist/{chunk-DVW7CQ3H.js → chunk-2PWGJCWX.js} +3 -3
  10. package/dist/chunk-2PWGJCWX.js.map +1 -0
  11. package/dist/{chunk-VOTDAVCB.js → chunk-2YYRP7HH.js} +17 -33
  12. package/dist/chunk-2YYRP7HH.js.map +1 -0
  13. package/dist/{chunk-MLSP67JF.js → chunk-333FGMGQ.js} +59 -111
  14. package/dist/chunk-333FGMGQ.js.map +1 -0
  15. package/dist/chunk-OVRZIDCD.js +175 -0
  16. package/dist/chunk-OVRZIDCD.js.map +1 -0
  17. package/dist/{chunk-L7BTMAKX.js → chunk-P6XH7G4N.js} +3 -6
  18. package/dist/chunk-P6XH7G4N.js.map +1 -0
  19. package/dist/{chunk-NVYIUBU7.js → chunk-XC7I2L3G.js} +2 -2
  20. package/dist/chunk-XC7I2L3G.js.map +1 -0
  21. package/dist/client/index.d.ts +47 -1
  22. package/dist/client/index.js +3 -3
  23. package/dist/client/index.js.map +1 -1
  24. package/dist/index.d.ts +217 -347
  25. package/dist/index.js +138 -83
  26. package/dist/index.js.map +1 -1
  27. package/dist/kit-a2a-types-CwT1AFQu.d.ts +136 -0
  28. package/dist/{index-B7s-0mZl.d.ts → kit-client-auth-HnZIYUia.d.ts} +220 -101
  29. package/dist/kit-crypto-types-Dd24aJ4m.d.ts +194 -0
  30. package/dist/{kit-i18n-D9Qqk-1k.d.ts → kit-i18n-DEzmzE5T.d.ts} +142 -29
  31. package/dist/{kit-types-ByWdbCeO.d.ts → kit-types-CnzhN-AS.d.ts} +240 -162
  32. package/dist/modules/a2a/index.d.ts +13 -111
  33. package/dist/modules/a2a/index.js +2 -2
  34. package/dist/modules/crypto/index.d.ts +28 -195
  35. package/dist/modules/crypto/index.js +3 -3
  36. package/dist/modules/crypto/index.js.map +1 -1
  37. package/package.json +10 -10
  38. package/dist/chunk-DVW7CQ3H.js.map +0 -1
  39. package/dist/chunk-L7BTMAKX.js.map +0 -1
  40. package/dist/chunk-MLSP67JF.js.map +0 -1
  41. package/dist/chunk-NVYIUBU7.js.map +0 -1
  42. package/dist/chunk-QHYNL24G.js +0 -117
  43. package/dist/chunk-QHYNL24G.js.map +0 -1
  44. package/dist/chunk-VOTDAVCB.js.map +0 -1
@@ -0,0 +1,175 @@
1
+ import { core } from '@h-ai/core';
2
+
3
+ // src/kit-i18n.ts
4
+
5
+ // messages/en-US.json
6
+ var en_US_default = {
7
+ kit_a2aAuthFailed: "A2A authentication failed",
8
+ kit_a2aParseError: "Invalid JSON request body",
9
+ kit_a2aCardUnavailable: "Agent card not available",
10
+ $schema: "https://inlang.com/schema/inlang-message-format",
11
+ kit_unauthorized: "Unauthorized",
12
+ kit_forbidden: "Forbidden: missing {permission} permission",
13
+ kit_authNotConfigured: "kit.auth is not configured: pass auth.operations in kit.createHandle()",
14
+ kit_csrfTokenFailed: "Failed to generate CSRF token",
15
+ kit_csrfVerifyFailed: "CSRF token verification failed",
16
+ kit_csrfValidationFailed: "Invalid CSRF token",
17
+ kit_rateLimitExceeded: "Too many requests, please try again later",
18
+ kit_unsupportedContentType: "Unsupported content type",
19
+ kit_parseBodyFailed: "Failed to parse request body",
20
+ kit_encryptFailed: "Encryption failed",
21
+ kit_transportKeyGenerationFailed: "Transport encryption key generation failed",
22
+ kit_transportClientKeyNotFound: "Client key not found",
23
+ kit_transportEncryptFailed: "Transport encryption failed",
24
+ kit_transportEncryptKeyFailed: "Symmetric key encryption failed",
25
+ kit_transportDecryptKeyFailed: "Symmetric key decryption failed",
26
+ kit_transportDecryptFailed: "Transport decryption failed",
27
+ kit_transportInvalidPayload: "Invalid encrypted payload",
28
+ kit_transportKeyExchangeFailed: "Key exchange failed",
29
+ kit_transportClientIdRequired: "Missing X-Client-Id header, key exchange is required for transport encryption",
30
+ kit_signFailed: "Request signing failed",
31
+ kit_authRequired: "Authentication required",
32
+ kit_accessDenied: "Access denied",
33
+ kit_resourceNotFound: "Resource not found",
34
+ kit_internalError: "Internal server error",
35
+ kit_validationFailed: "Validation failed",
36
+ kit_validationRequired: "This field is required",
37
+ kit_validationInvalid: "Invalid input format",
38
+ kit_validationInvalidType: "Invalid field type",
39
+ kit_validationStringMin: "Enter at least {min} characters",
40
+ kit_validationStringMax: "Enter at most {max} characters",
41
+ kit_validationNumberMin: "Value must be at least {min}",
42
+ kit_validationNumberMax: "Value must be at most {max}",
43
+ kit_validationArrayMin: "Select at least {min} item(s)",
44
+ kit_validationArrayMax: "Select at most {max} item(s)",
45
+ kit_validationTooSmall: "Value must be at least {min}",
46
+ kit_validationTooBig: "Value must be at most {max}",
47
+ kit_validationEmail: "Enter a valid email address",
48
+ kit_validationUrl: "Enter a valid URL",
49
+ kit_validationUuid: "Enter a valid UUID",
50
+ kit_validationEnum: "Select a valid option",
51
+ kit_noGuardsPassed: "No guards passed",
52
+ kit_requiredRoles: "Required roles: {roles}",
53
+ kit_requiredPermissions: "Required permissions: {permissions}",
54
+ kit_idRequired: "ID is required",
55
+ kit_rateLimitWindowInvalid: "The rate limit window must be an integer from 1 to 2147483647 milliseconds",
56
+ kit_rateLimitMemoryCapacity: "The development memory rate limit store is full; use a shared backend"
57
+ };
58
+
59
+ // messages/ja-JP.json
60
+ var ja_JP_default = {
61
+ kit_a2aAuthFailed: "A2A\u8A8D\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
62
+ kit_a2aParseError: "\u30EA\u30AF\u30A8\u30B9\u30C8\u672C\u6587\u304C\u6709\u52B9\u306AJSON\u3067\u306F\u3042\u308A\u307E\u305B\u3093",
63
+ kit_a2aCardUnavailable: "\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30AB\u30FC\u30C9\u3092\u5229\u7528\u3067\u304D\u307E\u305B\u3093",
64
+ $schema: "https://inlang.com/schema/inlang-message-format",
65
+ kit_unauthorized: "\u8A8D\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
66
+ kit_forbidden: "\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F: {permission}\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093",
67
+ kit_authNotConfigured: "kit.auth\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002kit.createHandle()\u306Bauth.operations\u3092\u6E21\u3057\u3066\u304F\u3060\u3055\u3044",
68
+ kit_csrfTokenFailed: "CSRF\u30C8\u30FC\u30AF\u30F3\u306E\u751F\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
69
+ kit_csrfVerifyFailed: "CSRF\u30C8\u30FC\u30AF\u30F3\u306E\u691C\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
70
+ kit_csrfValidationFailed: "CSRF\u30C8\u30FC\u30AF\u30F3\u304C\u7121\u52B9\u3067\u3059",
71
+ kit_rateLimitExceeded: "\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u591A\u3059\u304E\u307E\u3059\u3002\u3057\u3070\u3089\u304F\u3057\u3066\u304B\u3089\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044",
72
+ kit_unsupportedContentType: "\u672A\u5BFE\u5FDC\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u30BF\u30A4\u30D7\u3067\u3059",
73
+ kit_parseBodyFailed: "\u30EA\u30AF\u30A8\u30B9\u30C8\u672C\u6587\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
74
+ kit_encryptFailed: "\u6697\u53F7\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
75
+ kit_transportKeyGenerationFailed: "\u901A\u4FE1\u6697\u53F7\u5316\u9375\u306E\u751F\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
76
+ kit_transportClientKeyNotFound: "\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u9375\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
77
+ kit_transportEncryptFailed: "\u901A\u4FE1\u306E\u6697\u53F7\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
78
+ kit_transportEncryptKeyFailed: "\u5BFE\u79F0\u9375\u306E\u6697\u53F7\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
79
+ kit_transportDecryptKeyFailed: "\u5BFE\u79F0\u9375\u306E\u5FA9\u53F7\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
80
+ kit_transportDecryptFailed: "\u901A\u4FE1\u306E\u5FA9\u53F7\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
81
+ kit_transportInvalidPayload: "\u6697\u53F7\u5316\u30DA\u30A4\u30ED\u30FC\u30C9\u304C\u7121\u52B9\u3067\u3059",
82
+ kit_transportKeyExchangeFailed: "\u9375\u4EA4\u63DB\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
83
+ kit_transportClientIdRequired: "X-Client-Id\u30D8\u30C3\u30C0\u30FC\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u901A\u4FE1\u6697\u53F7\u5316\u306B\u306F\u9375\u4EA4\u63DB\u304C\u5FC5\u8981\u3067\u3059",
84
+ kit_signFailed: "\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u7F72\u540D\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
85
+ kit_authRequired: "\u8A8D\u8A3C\u304C\u5FC5\u8981\u3067\u3059",
86
+ kit_accessDenied: "\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F",
87
+ kit_resourceNotFound: "\u30EA\u30BD\u30FC\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
88
+ kit_internalError: "\u30B5\u30FC\u30D0\u30FC\u5185\u90E8\u30A8\u30E9\u30FC",
89
+ kit_validationFailed: "\u5165\u529B\u5185\u5BB9\u306E\u691C\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
90
+ kit_validationRequired: "\u3053\u306E\u9805\u76EE\u306F\u5FC5\u9808\u3067\u3059",
91
+ kit_validationInvalid: "\u5165\u529B\u5F62\u5F0F\u304C\u7121\u52B9\u3067\u3059",
92
+ kit_validationInvalidType: "\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u578B\u304C\u7121\u52B9\u3067\u3059",
93
+ kit_validationStringMin: "{min}\u6587\u5B57\u4EE5\u4E0A\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
94
+ kit_validationStringMax: "{max}\u6587\u5B57\u4EE5\u5185\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
95
+ kit_validationNumberMin: "{min}\u4EE5\u4E0A\u306E\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
96
+ kit_validationNumberMax: "{max}\u4EE5\u4E0B\u306E\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
97
+ kit_validationArrayMin: "{min}\u4EF6\u4EE5\u4E0A\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",
98
+ kit_validationArrayMax: "{max}\u4EF6\u4EE5\u5185\u3067\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",
99
+ kit_validationTooSmall: "{min}\u4EE5\u4E0A\u306E\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
100
+ kit_validationTooBig: "{max}\u4EE5\u4E0B\u306E\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
101
+ kit_validationEmail: "\u6709\u52B9\u306A\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
102
+ kit_validationUrl: "\u6709\u52B9\u306AURL\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
103
+ kit_validationUuid: "\u6709\u52B9\u306AUUID\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
104
+ kit_validationEnum: "\u6709\u52B9\u306A\u9078\u629E\u80A2\u3092\u9078\u3093\u3067\u304F\u3060\u3055\u3044",
105
+ kit_noGuardsPassed: "\u3069\u306E\u30AC\u30FC\u30C9\u3082\u901A\u904E\u3057\u307E\u305B\u3093\u3067\u3057\u305F",
106
+ kit_requiredRoles: "\u5FC5\u8981\u306A\u30ED\u30FC\u30EB: {roles}",
107
+ kit_requiredPermissions: "\u5FC5\u8981\u306A\u6A29\u9650: {permissions}",
108
+ kit_idRequired: "ID\u306F\u5FC5\u9808\u3067\u3059",
109
+ kit_rateLimitWindowInvalid: "\u30EC\u30FC\u30C8\u5236\u9650\u306E\u671F\u9593\u306F1\u301C2147483647\u30DF\u30EA\u79D2\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
110
+ kit_rateLimitMemoryCapacity: "\u958B\u767A\u7528\u30E1\u30E2\u30EA\u30FC\u30EC\u30FC\u30C8\u5236\u9650\u30B9\u30C8\u30A2\u304C\u6E80\u676F\u3067\u3059\u3002\u5171\u6709\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044"
111
+ };
112
+
113
+ // messages/zh-CN.json
114
+ var zh_CN_default = {
115
+ kit_a2aAuthFailed: "A2A \u8EAB\u4EFD\u8BA4\u8BC1\u5931\u8D25",
116
+ kit_a2aParseError: "\u8BF7\u6C42\u4F53\u4E0D\u662F\u6709\u6548\u7684 JSON",
117
+ kit_a2aCardUnavailable: "Agent Card \u4E0D\u53EF\u7528",
118
+ $schema: "https://inlang.com/schema/inlang-message-format",
119
+ kit_unauthorized: "\u672A\u6388\u6743",
120
+ kit_forbidden: "\u6743\u9650\u4E0D\u8DB3\uFF1A\u7F3A\u5C11 {permission} \u6743\u9650",
121
+ kit_authNotConfigured: "kit.auth \u672A\u914D\u7F6E\uFF1A\u8BF7\u5728 kit.createHandle() \u4E2D\u4F20\u5165 auth.operations",
122
+ kit_csrfTokenFailed: "\u751F\u6210 CSRF Token \u5931\u8D25",
123
+ kit_csrfVerifyFailed: "CSRF Token \u9A8C\u8BC1\u5931\u8D25",
124
+ kit_csrfValidationFailed: "CSRF Token \u65E0\u6548",
125
+ kit_rateLimitExceeded: "\u8BF7\u6C42\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",
126
+ kit_unsupportedContentType: "\u4E0D\u652F\u6301\u7684\u5185\u5BB9\u7C7B\u578B",
127
+ kit_parseBodyFailed: "\u8BF7\u6C42\u4F53\u89E3\u6790\u5931\u8D25",
128
+ kit_encryptFailed: "\u52A0\u5BC6\u5931\u8D25",
129
+ kit_transportKeyGenerationFailed: "\u4F20\u8F93\u52A0\u5BC6\u5BC6\u94A5\u5BF9\u751F\u6210\u5931\u8D25",
130
+ kit_transportClientKeyNotFound: "\u5BA2\u6237\u7AEF\u5BC6\u94A5\u672A\u627E\u5230",
131
+ kit_transportEncryptFailed: "\u4F20\u8F93\u52A0\u5BC6\u5931\u8D25",
132
+ kit_transportEncryptKeyFailed: "\u5BF9\u79F0\u5BC6\u94A5\u52A0\u5BC6\u5931\u8D25",
133
+ kit_transportDecryptKeyFailed: "\u5BF9\u79F0\u5BC6\u94A5\u89E3\u5BC6\u5931\u8D25",
134
+ kit_transportDecryptFailed: "\u4F20\u8F93\u89E3\u5BC6\u5931\u8D25",
135
+ kit_transportInvalidPayload: "\u65E0\u6548\u7684\u52A0\u5BC6\u8F7D\u8377",
136
+ kit_transportKeyExchangeFailed: "\u5BC6\u94A5\u4EA4\u6362\u5931\u8D25",
137
+ kit_transportClientIdRequired: "\u7F3A\u5C11 X-Client-Id \u8BF7\u6C42\u5934\uFF0C\u4F20\u8F93\u52A0\u5BC6\u5FC5\u987B\u5148\u5B8C\u6210\u5BC6\u94A5\u4EA4\u6362",
138
+ kit_signFailed: "\u8BF7\u6C42\u7B7E\u540D\u5931\u8D25",
139
+ kit_authRequired: "\u9700\u8981\u8EAB\u4EFD\u8BA4\u8BC1",
140
+ kit_accessDenied: "\u62D2\u7EDD\u8BBF\u95EE",
141
+ kit_resourceNotFound: "\u8D44\u6E90\u672A\u627E\u5230",
142
+ kit_internalError: "\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF",
143
+ kit_validationFailed: "\u6570\u636E\u9A8C\u8BC1\u5931\u8D25",
144
+ kit_validationRequired: "\u6B64\u5B57\u6BB5\u5FC5\u586B",
145
+ kit_validationInvalid: "\u8F93\u5165\u683C\u5F0F\u65E0\u6548",
146
+ kit_validationInvalidType: "\u5B57\u6BB5\u7C7B\u578B\u4E0D\u6B63\u786E",
147
+ kit_validationStringMin: "\u81F3\u5C11\u8F93\u5165 {min} \u4E2A\u5B57\u7B26",
148
+ kit_validationStringMax: "\u6700\u591A\u8F93\u5165 {max} \u4E2A\u5B57\u7B26",
149
+ kit_validationNumberMin: "\u6570\u503C\u4E0D\u80FD\u5C0F\u4E8E {min}",
150
+ kit_validationNumberMax: "\u6570\u503C\u4E0D\u80FD\u5927\u4E8E {max}",
151
+ kit_validationArrayMin: "\u81F3\u5C11\u9009\u62E9 {min} \u9879",
152
+ kit_validationArrayMax: "\u6700\u591A\u9009\u62E9 {max} \u9879",
153
+ kit_validationTooSmall: "\u4E0D\u80FD\u5C0F\u4E8E {min}",
154
+ kit_validationTooBig: "\u4E0D\u80FD\u5927\u4E8E {max}",
155
+ kit_validationEmail: "\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740",
156
+ kit_validationUrl: "\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7F51\u5740",
157
+ kit_validationUuid: "\u8BF7\u8F93\u5165\u6709\u6548\u7684 UUID",
158
+ kit_validationEnum: "\u8BF7\u9009\u62E9\u6709\u6548\u9009\u9879",
159
+ kit_noGuardsPassed: "\u6CA1\u6709\u5B88\u536B\u901A\u8FC7",
160
+ kit_requiredRoles: "\u9700\u8981\u89D2\u8272\uFF1A{roles}",
161
+ kit_requiredPermissions: "\u9700\u8981\u6743\u9650\uFF1A{permissions}",
162
+ kit_idRequired: "ID \u4E0D\u80FD\u4E3A\u7A7A",
163
+ kit_rateLimitWindowInvalid: "\u9650\u6D41\u7A97\u53E3\u5FC5\u987B\u4E3A 1 \u81F3 2147483647 \u7684\u6574\u6570\u6BEB\u79D2",
164
+ kit_rateLimitMemoryCapacity: "\u5F00\u53D1\u5185\u5B58\u9650\u6D41\u5BB9\u91CF\u5DF2\u6EE1\uFF0C\u8BF7\u4F7F\u7528\u5171\u4EAB\u540E\u7AEF"
165
+ };
166
+
167
+ // src/kit-i18n.ts
168
+ var kitM = core.i18n.createMessageGetter({ "zh-CN": zh_CN_default, "en-US": en_US_default, "ja-JP": ja_JP_default });
169
+ function setAllModulesLocale(locale) {
170
+ core.i18n.setGlobalLocale(locale);
171
+ }
172
+
173
+ export { kitM, setAllModulesLocale };
174
+ //# sourceMappingURL=chunk-OVRZIDCD.js.map
175
+ //# sourceMappingURL=chunk-OVRZIDCD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../messages/en-US.json","../messages/ja-JP.json","../messages/zh-CN.json","../src/kit-i18n.ts"],"names":[],"mappings":"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","file":"chunk-OVRZIDCD.js","sourcesContent":["{\n \"kit_a2aAuthFailed\": \"A2A authentication failed\",\n \"kit_a2aParseError\": \"Invalid JSON request body\",\n \"kit_a2aCardUnavailable\": \"Agent card not available\",\n \"$schema\": \"https://inlang.com/schema/inlang-message-format\",\n \"kit_unauthorized\": \"Unauthorized\",\n \"kit_forbidden\": \"Forbidden: missing {permission} permission\",\n \"kit_authNotConfigured\": \"kit.auth is not configured: pass auth.operations in kit.createHandle()\",\n \"kit_csrfTokenFailed\": \"Failed to generate CSRF token\",\n \"kit_csrfVerifyFailed\": \"CSRF token verification failed\",\n \"kit_csrfValidationFailed\": \"Invalid CSRF token\",\n \"kit_rateLimitExceeded\": \"Too many requests, please try again later\",\n \"kit_unsupportedContentType\": \"Unsupported content type\",\n \"kit_parseBodyFailed\": \"Failed to parse request body\",\n \"kit_encryptFailed\": \"Encryption failed\",\n \"kit_transportKeyGenerationFailed\": \"Transport encryption key generation failed\",\n \"kit_transportClientKeyNotFound\": \"Client key not found\",\n \"kit_transportEncryptFailed\": \"Transport encryption failed\",\n \"kit_transportEncryptKeyFailed\": \"Symmetric key encryption failed\",\n \"kit_transportDecryptKeyFailed\": \"Symmetric key decryption failed\",\n \"kit_transportDecryptFailed\": \"Transport decryption failed\",\n \"kit_transportInvalidPayload\": \"Invalid encrypted payload\",\n \"kit_transportKeyExchangeFailed\": \"Key exchange failed\",\n \"kit_transportClientIdRequired\": \"Missing X-Client-Id header, key exchange is required for transport encryption\",\n \"kit_signFailed\": \"Request signing failed\",\n \"kit_authRequired\": \"Authentication required\",\n \"kit_accessDenied\": \"Access denied\",\n \"kit_resourceNotFound\": \"Resource not found\",\n \"kit_internalError\": \"Internal server error\",\n \"kit_validationFailed\": \"Validation failed\",\n \"kit_validationRequired\": \"This field is required\",\n \"kit_validationInvalid\": \"Invalid input format\",\n \"kit_validationInvalidType\": \"Invalid field type\",\n \"kit_validationStringMin\": \"Enter at least {min} characters\",\n \"kit_validationStringMax\": \"Enter at most {max} characters\",\n \"kit_validationNumberMin\": \"Value must be at least {min}\",\n \"kit_validationNumberMax\": \"Value must be at most {max}\",\n \"kit_validationArrayMin\": \"Select at least {min} item(s)\",\n \"kit_validationArrayMax\": \"Select at most {max} item(s)\",\n \"kit_validationTooSmall\": \"Value must be at least {min}\",\n \"kit_validationTooBig\": \"Value must be at most {max}\",\n \"kit_validationEmail\": \"Enter a valid email address\",\n \"kit_validationUrl\": \"Enter a valid URL\",\n \"kit_validationUuid\": \"Enter a valid UUID\",\n \"kit_validationEnum\": \"Select a valid option\",\n \"kit_noGuardsPassed\": \"No guards passed\",\n \"kit_requiredRoles\": \"Required roles: {roles}\",\n \"kit_requiredPermissions\": \"Required permissions: {permissions}\",\n \"kit_idRequired\": \"ID is required\",\n \"kit_rateLimitWindowInvalid\": \"The rate limit window must be an integer from 1 to 2147483647 milliseconds\",\n \"kit_rateLimitMemoryCapacity\": \"The development memory rate limit store is full; use a shared backend\"\n}\n","{\n \"kit_a2aAuthFailed\": \"A2A認証に失敗しました\",\n \"kit_a2aParseError\": \"リクエスト本文が有効なJSONではありません\",\n \"kit_a2aCardUnavailable\": \"エージェントカードを利用できません\",\n \"$schema\": \"https://inlang.com/schema/inlang-message-format\",\n \"kit_unauthorized\": \"認証されていません\",\n \"kit_forbidden\": \"アクセスが拒否されました: {permission}権限がありません\",\n \"kit_authNotConfigured\": \"kit.authが設定されていません。kit.createHandle()にauth.operationsを渡してください\",\n \"kit_csrfTokenFailed\": \"CSRFトークンの生成に失敗しました\",\n \"kit_csrfVerifyFailed\": \"CSRFトークンの検証に失敗しました\",\n \"kit_csrfValidationFailed\": \"CSRFトークンが無効です\",\n \"kit_rateLimitExceeded\": \"リクエストが多すぎます。しばらくしてから再試行してください\",\n \"kit_unsupportedContentType\": \"未対応のコンテンツタイプです\",\n \"kit_parseBodyFailed\": \"リクエスト本文の解析に失敗しました\",\n \"kit_encryptFailed\": \"暗号化に失敗しました\",\n \"kit_transportKeyGenerationFailed\": \"通信暗号化鍵の生成に失敗しました\",\n \"kit_transportClientKeyNotFound\": \"クライアント鍵が見つかりません\",\n \"kit_transportEncryptFailed\": \"通信の暗号化に失敗しました\",\n \"kit_transportEncryptKeyFailed\": \"対称鍵の暗号化に失敗しました\",\n \"kit_transportDecryptKeyFailed\": \"対称鍵の復号に失敗しました\",\n \"kit_transportDecryptFailed\": \"通信の復号に失敗しました\",\n \"kit_transportInvalidPayload\": \"暗号化ペイロードが無効です\",\n \"kit_transportKeyExchangeFailed\": \"鍵交換に失敗しました\",\n \"kit_transportClientIdRequired\": \"X-Client-Idヘッダーがありません。通信暗号化には鍵交換が必要です\",\n \"kit_signFailed\": \"リクエストの署名に失敗しました\",\n \"kit_authRequired\": \"認証が必要です\",\n \"kit_accessDenied\": \"アクセスが拒否されました\",\n \"kit_resourceNotFound\": \"リソースが見つかりません\",\n \"kit_internalError\": \"サーバー内部エラー\",\n \"kit_validationFailed\": \"入力内容の検証に失敗しました\",\n \"kit_validationRequired\": \"この項目は必須です\",\n \"kit_validationInvalid\": \"入力形式が無効です\",\n \"kit_validationInvalidType\": \"フィールドの型が無効です\",\n \"kit_validationStringMin\": \"{min}文字以上で入力してください\",\n \"kit_validationStringMax\": \"{max}文字以内で入力してください\",\n \"kit_validationNumberMin\": \"{min}以上の値を入力してください\",\n \"kit_validationNumberMax\": \"{max}以下の値を入力してください\",\n \"kit_validationArrayMin\": \"{min}件以上選択してください\",\n \"kit_validationArrayMax\": \"{max}件以内で選択してください\",\n \"kit_validationTooSmall\": \"{min}以上の値を入力してください\",\n \"kit_validationTooBig\": \"{max}以下の値を入力してください\",\n \"kit_validationEmail\": \"有効なメールアドレスを入力してください\",\n \"kit_validationUrl\": \"有効なURLを入力してください\",\n \"kit_validationUuid\": \"有効なUUIDを入力してください\",\n \"kit_validationEnum\": \"有効な選択肢を選んでください\",\n \"kit_noGuardsPassed\": \"どのガードも通過しませんでした\",\n \"kit_requiredRoles\": \"必要なロール: {roles}\",\n \"kit_requiredPermissions\": \"必要な権限: {permissions}\",\n \"kit_idRequired\": \"IDは必須です\",\n \"kit_rateLimitWindowInvalid\": \"レート制限の期間は1〜2147483647ミリ秒の整数で指定してください\",\n \"kit_rateLimitMemoryCapacity\": \"開発用メモリーレート制限ストアが満杯です。共有バックエンドを使用してください\"\n}\n","{\n \"kit_a2aAuthFailed\": \"A2A 身份认证失败\",\n \"kit_a2aParseError\": \"请求体不是有效的 JSON\",\n \"kit_a2aCardUnavailable\": \"Agent Card 不可用\",\n \"$schema\": \"https://inlang.com/schema/inlang-message-format\",\n \"kit_unauthorized\": \"未授权\",\n \"kit_forbidden\": \"权限不足:缺少 {permission} 权限\",\n \"kit_authNotConfigured\": \"kit.auth 未配置:请在 kit.createHandle() 中传入 auth.operations\",\n \"kit_csrfTokenFailed\": \"生成 CSRF Token 失败\",\n \"kit_csrfVerifyFailed\": \"CSRF Token 验证失败\",\n \"kit_csrfValidationFailed\": \"CSRF Token 无效\",\n \"kit_rateLimitExceeded\": \"请求过于频繁,请稍后再试\",\n \"kit_unsupportedContentType\": \"不支持的内容类型\",\n \"kit_parseBodyFailed\": \"请求体解析失败\",\n \"kit_encryptFailed\": \"加密失败\",\n \"kit_transportKeyGenerationFailed\": \"传输加密密钥对生成失败\",\n \"kit_transportClientKeyNotFound\": \"客户端密钥未找到\",\n \"kit_transportEncryptFailed\": \"传输加密失败\",\n \"kit_transportEncryptKeyFailed\": \"对称密钥加密失败\",\n \"kit_transportDecryptKeyFailed\": \"对称密钥解密失败\",\n \"kit_transportDecryptFailed\": \"传输解密失败\",\n \"kit_transportInvalidPayload\": \"无效的加密载荷\",\n \"kit_transportKeyExchangeFailed\": \"密钥交换失败\",\n \"kit_transportClientIdRequired\": \"缺少 X-Client-Id 请求头,传输加密必须先完成密钥交换\",\n \"kit_signFailed\": \"请求签名失败\",\n \"kit_authRequired\": \"需要身份认证\",\n \"kit_accessDenied\": \"拒绝访问\",\n \"kit_resourceNotFound\": \"资源未找到\",\n \"kit_internalError\": \"内部服务器错误\",\n \"kit_validationFailed\": \"数据验证失败\",\n \"kit_validationRequired\": \"此字段必填\",\n \"kit_validationInvalid\": \"输入格式无效\",\n \"kit_validationInvalidType\": \"字段类型不正确\",\n \"kit_validationStringMin\": \"至少输入 {min} 个字符\",\n \"kit_validationStringMax\": \"最多输入 {max} 个字符\",\n \"kit_validationNumberMin\": \"数值不能小于 {min}\",\n \"kit_validationNumberMax\": \"数值不能大于 {max}\",\n \"kit_validationArrayMin\": \"至少选择 {min} 项\",\n \"kit_validationArrayMax\": \"最多选择 {max} 项\",\n \"kit_validationTooSmall\": \"不能小于 {min}\",\n \"kit_validationTooBig\": \"不能大于 {max}\",\n \"kit_validationEmail\": \"请输入有效的邮箱地址\",\n \"kit_validationUrl\": \"请输入有效的网址\",\n \"kit_validationUuid\": \"请输入有效的 UUID\",\n \"kit_validationEnum\": \"请选择有效选项\",\n \"kit_noGuardsPassed\": \"没有守卫通过\",\n \"kit_requiredRoles\": \"需要角色:{roles}\",\n \"kit_requiredPermissions\": \"需要权限:{permissions}\",\n \"kit_idRequired\": \"ID 不能为空\",\n \"kit_rateLimitWindowInvalid\": \"限流窗口必须为 1 至 2147483647 的整数毫秒\",\n \"kit_rateLimitMemoryCapacity\": \"开发内存限流容量已满,请使用共享后端\"\n}\n","/**\n * @h-ai/kit — i18n 工具\n *\n * Kit 模块的国际化消息工具,从 @h-ai/core 调用 i18n API。\n * @module kit-i18n\n */\n\nimport { core } from '@h-ai/core'\nimport messagesEnUS from '../messages/en-US.json'\nimport messagesJaJP from '../messages/ja-JP.json'\nimport messagesZhCN from '../messages/zh-CN.json'\n\n/**\n * Kit 中英日消息字典的合法 key 联合。\n * @example 模块内部上下文\n * ```ts\n * const key: KitMessageKey = 'kit_accessDenied'\n * const message = kitM(key)\n * void message\n * ```\n */\ntype KitMessageKey = keyof typeof messagesZhCN\n\n/**\n * 获取 Kit 模块的 i18n 消息\n * @example 模块内部上下文\n * ```ts\n * const message = kitM('kit_accessDenied', { locale: 'en-US' })\n * void message\n * ```\n */\nexport const kitM\n = core.i18n.createMessageGetter<KitMessageKey>({ 'zh-CN': messagesZhCN, 'en-US': messagesEnUS, 'ja-JP': messagesJaJP })\n\n/**\n * 设置浏览器应用语言或 Node 启动默认语言;请求中只更新当前 runWithLocale 上下文。\n *\n * 通过 @h-ai/core 的集中式 locale 管理器,一次调用即可同步所有模块。\n * 各模块的 createMessageGetter 优先读取当前 Node 请求上下文;SSR 必须包裹实际 resolve。\n * @param locale - 支持的应用默认语言;请求中应使用上下文隔离。\n * @example\n * ```ts\n * import { kit } from '@h-ai/kit'\n *\n * // 应用启动时设置默认语言;请求内使用 runWithLocale。\n * kit.i18n.setLocale('en-US')\n * ```\n */\nexport function setAllModulesLocale(locale: string): void {\n core.i18n.setGlobalLocale(locale)\n}\n"]}
@@ -75,10 +75,7 @@ var KitTransportConfigInputSchema = z.union([
75
75
  z.literal(false),
76
76
  z.object({
77
77
  keyExchangePath: AbsolutePathSchema.default("/api/_hai/key-exchange"),
78
- excludePaths: z.array(AbsolutePathSchema).default([]),
79
- requireEncryption: z.boolean().default(true),
80
- encryptResponse: z.boolean().default(true),
81
- maxClients: z.number().int().positive().default(1e4)
78
+ excludePaths: z.array(AbsolutePathSchema).default([])
82
79
  })
83
80
  ]);
84
81
  var ServerConfigInputSchema = z.object({
@@ -117,5 +114,5 @@ function resolveKitConfig(input = {}) {
117
114
  }
118
115
 
119
116
  export { KitConfigSchema, defineCrud, resolveKitConfig, resolveKitTransportConfig, resolveOptions, resolveText };
120
- //# sourceMappingURL=chunk-L7BTMAKX.js.map
121
- //# sourceMappingURL=chunk-L7BTMAKX.js.map
117
+ //# sourceMappingURL=chunk-P6XH7G4N.js.map
118
+ //# sourceMappingURL=chunk-P6XH7G4N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/crud/kit-crud.ts","../src/kit-config.ts"],"names":[],"mappings":"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","file":"chunk-P6XH7G4N.js","sourcesContent":["/**\n * @h-ai/kit — CRUD 操作定义\n *\n * 声明式 CRUD 资源定义工厂函数。\n * @module kit-crud\n */\n\nimport type {\n CrudFieldDef,\n CrudFieldOptions,\n CrudOperations,\n CrudResourceDef,\n CrudTableColumn,\n CrudText,\n} from './kit-crud-types.js'\n\n/**\n * 解析 CrudText 为字符串\n */\nfunction resolveText(text: CrudText): string {\n return typeof text === 'function' ? text() : text\n}\n\n/**\n * 按 order 排序字段\n */\nfunction sortFields(fields: CrudFieldDef[]): CrudFieldDef[] {\n return [...fields].sort((a, b) => (a.order ?? 0) - (b.order ?? 0))\n}\n\n/**\n * 解析选项列表\n */\nfunction resolveOptions(options: CrudFieldOptions | undefined): Array<{ label: string, value: string | number | boolean }> {\n if (!options)\n return []\n return typeof options === 'function' ? options() : options\n}\n\n/**\n * 定义 CRUD 资源\n *\n * 返回 CrudOperations 对象,包含字段过滤、列构建和 API 代理等能力。\n * 与 @h-ai/ui 的 CrudPage 组件配合使用。\n *\n * @param resource - 资源定义\n * @returns CRUD 操作对象\n * @example\n * ```ts\n * import { kit } from '@h-ai/kit'\n *\n * import type { CrudApiDef } from '@h-ai/kit'\n *\n * function articleResource(api: CrudApiDef<{ id: string, title: string }>) {\n * return kit.crud.define({ name: 'article', label: 'Articles', fields: [{ id: 'title', label: 'Title', type: 'string' }], api })\n * }\n * ```\n */\nexport function defineCrud<T = Record<string, unknown>>(\n resource: CrudResourceDef<T>,\n): CrudOperations<T> {\n const fields = resource.fields\n\n function getListFields(): CrudFieldDef[] {\n return sortFields(fields.filter(f => f.inList !== false))\n }\n\n function getFilterFields(): CrudFieldDef[] {\n return sortFields(fields.filter(f => f.filterable === true))\n }\n\n function getCreateFields(): CrudFieldDef[] {\n return sortFields(fields.filter(f => f.inCreate !== false))\n }\n\n function getEditFields(): CrudFieldDef[] {\n return sortFields(fields.filter(f => f.inEdit !== false))\n }\n\n function getDetailFields(): CrudFieldDef[] {\n return sortFields(fields.filter(f => f.inDetail !== false))\n }\n\n function toTableColumns(): CrudTableColumn[] {\n return getListFields().map(f => ({\n key: f.id,\n label: resolveText(f.label),\n width: f.width,\n align: f.align,\n render: f.render\n ? (item: Record<string, unknown>) => f.render!(item[f.id], item)\n : undefined,\n }))\n }\n\n function getDefaultValues(): Record<string, unknown> {\n const defaults: Record<string, unknown> = {}\n for (const f of fields) {\n if (f.defaultValue !== undefined) {\n defaults[f.id] = f.defaultValue\n }\n else if (f.type === 'boolean' || f.type === 'checkbox') {\n defaults[f.id] = false\n }\n else if (f.type === 'multi-select') {\n defaults[f.id] = []\n }\n else if (f.type === 'number') {\n defaults[f.id] = undefined\n }\n else {\n defaults[f.id] = ''\n }\n }\n return defaults\n }\n\n return {\n resource,\n getListFields,\n getFilterFields,\n getCreateFields,\n getEditFields,\n getDetailFields,\n toTableColumns,\n getDefaultValues,\n api: resource.api,\n }\n}\n\n// re-export 解析工具,供 UI 层使用\nexport { resolveOptions, resolveText }\n","/**\n * @h-ai/kit — transport 配置\n *\n * 为 `config/_kit.yml` 提供统一的 transport 配置结构、默认值与校验逻辑,\n * 方便应用层用一份配置同时驱动 `hooks.server.ts` 与 `kit.client.create()`。\n * @module kit-config\n */\n\nimport { z } from 'zod'\n\nconst AbsolutePathSchema = z.custom<`/${string}`>(\n value => typeof value === 'string' && value.startsWith('/'),\n 'path must start with /',\n)\n\n/**\n * 服务器监听配置(对应 `config/_kit.yml` 的 `server`)。\n * @example\n * ```ts\n * import type { KitServerConfig } from '@h-ai/kit'\n *\n * const value: KitServerConfig = { host: '127.0.0.1', port: 3000 }\n * void value\n * ```\n */\nexport interface KitServerConfig {\n readonly host: string\n readonly port: number\n}\n\n/**\n * `config/_kit.yml` 中的服务器监听输入类型。\n * @example\n * ```ts\n * import type { KitServerConfigInput } from '@h-ai/kit'\n *\n * const value: KitServerConfigInput = { port: 4000 }\n * void value\n * ```\n */\nexport type KitServerConfigInput = Partial<KitServerConfig>\n\n/**\n * `config/_kit.yml` 中的 transport 配置。\n * @example\n * ```ts\n * import type { KitTransportConfig } from '@h-ai/kit'\n *\n * const value: KitTransportConfig = { keyExchangePath: '/api/_hai/key-exchange', excludePaths: ['/api/health'] }\n * void value\n * ```\n */\nexport interface KitTransportConfig {\n readonly keyExchangePath: `/${string}`\n readonly excludePaths: readonly `/${string}`[]\n}\n\n/**\n * `config/_kit.yml` 的顶层配置结构。\n * @example\n * ```ts\n * import type { KitConfig } from '@h-ai/kit'\n *\n * const value: KitConfig = { server: { host: '127.0.0.1', port: 3000 }, transport: false }\n * void value\n * ```\n */\nexport interface KitConfig {\n readonly server: KitServerConfig\n readonly transport: false | KitTransportConfig\n}\n\n/**\n * `config/_kit.yml` 中的 transport 输入类型。\n * @example\n * ```ts\n * import type { KitTransportConfigInput } from '@h-ai/kit'\n *\n * const value: KitTransportConfigInput = { excludePaths: ['/api/health'] }\n * void value\n * ```\n */\nexport type KitTransportConfigInput = Partial<{\n readonly keyExchangePath: `/${string}`\n readonly excludePaths: readonly `/${string}`[]\n}>\n\n/**\n * `config/_kit.yml` 的顶层输入类型。\n * @example\n * ```ts\n * import type { KitConfigInput } from '@h-ai/kit'\n *\n * const value: KitConfigInput = { transport: false }\n * void value\n * ```\n */\nexport interface KitConfigInput {\n readonly server?: KitServerConfigInput\n readonly transport?: false | KitTransportConfigInput\n}\n\nconst KitTransportConfigInputSchema = z.union([\n z.literal(false),\n z.object({\n keyExchangePath: AbsolutePathSchema.default('/api/_hai/key-exchange'),\n excludePaths: z.array(AbsolutePathSchema).default([]),\n }),\n])\n\nconst ServerConfigInputSchema = z.object({\n host: z.string().min(1).default('127.0.0.1'),\n port: z.number().int().min(1).max(65535).default(3000),\n})\n\n/**\n * `config/_kit.yml` 对应的配置 Schema。\n * @example\n * ```ts\n * import { KitConfigSchema } from '@h-ai/kit'\n *\n * const config = KitConfigSchema.parse({ server: { port: 3000 }, transport: false })\n * void config\n * ```\n */\nexport const KitConfigSchema = z.object({\n server: ServerConfigInputSchema.optional(),\n transport: KitTransportConfigInputSchema.optional(),\n}).transform(({ server, transport }) => ({\n server: resolveKitServerConfig(server ?? {}),\n transport: resolveKitTransportConfig(transport ?? false),\n}))\n\n/**\n * 读取 `HOST` / `PORT` 环境变量覆盖(环境变量高于配置文件)。\n *\n * 浏览器端 `process` 不存在时安全回退为空;`PORT` 仅采纳 1-65535 的整数。\n */\nfunction readServerEnvOverride(): KitServerConfigInput {\n // eslint-disable-next-line node/prefer-global/process\n const env = typeof process !== 'undefined' ? process.env : undefined\n const override: { host?: string, port?: number } = {}\n const host = env?.HOST\n if (host)\n override.host = host\n const rawPort = env?.PORT\n if (rawPort) {\n const port = Number(rawPort)\n if (Number.isInteger(port) && port >= 1 && port <= 65535)\n override.port = port\n }\n return override\n}\n\n/**\n * 解析服务器监听配置并补齐默认值。\n *\n * 优先级:`HOST` / `PORT` 环境变量 > `config/_kit.yml` 的 `server` > 默认 `127.0.0.1:3000`。\n *\n * @param input - `config/_kit.yml` 中的 server 配置\n * @returns 完整 server 配置\n * @example 模块内部上下文\n * ```ts\n * const config = resolveKitServerConfig({ port: 4000 })\n * // HOST / PORT 环境变量优先于输入。\n * void config.port\n * ```\n */\nexport function resolveKitServerConfig(input: KitServerConfigInput = {}): KitServerConfig {\n return { ...ServerConfigInputSchema.parse(input), ...readServerEnvOverride() }\n}\n\n/**\n * 解析 transport 配置并补齐默认值。\n *\n * @param input - `config/_kit.yml` 中的 transport 配置\n * @returns 完整 transport 配置;`false` 表示关闭\n * @example\n * ```ts\n * import { resolveKitTransportConfig } from '@h-ai/kit'\n *\n * const transport = resolveKitTransportConfig({ excludePaths: ['/api/health'] })\n * if (transport) void transport.keyExchangePath\n * ```\n */\nexport function resolveKitTransportConfig(\n input: false | KitTransportConfigInput = false,\n): false | KitTransportConfig {\n return KitTransportConfigInputSchema.parse(input)\n}\n\n/**\n * 解析 `config/_kit.yml` 顶层配置并补齐默认值。\n *\n * 适合同一份配置同时供 SvelteKit 服务端 hook 与浏览器端 client 读取。\n * @param input - Kit 监听和公开 transport 输入;省略字段按 Schema 补默认值。\n * @returns 已补齐默认值的配置;不合法输入抛出 ZodError。\n * @example\n * ```ts\n * import { resolveKitConfig } from '@h-ai/kit'\n *\n * const config = resolveKitConfig({ transport: false })\n * void config.server.port\n * ```\n */\nexport function resolveKitConfig(input: KitConfigInput = {}): KitConfig {\n return KitConfigSchema.parse(input)\n}\n"]}
@@ -37,5 +37,5 @@ function shouldUseTransportForUrl(url, options = {}) {
37
37
  }
38
38
 
39
39
  export { DEFAULT_TRANSPORT_KEY_EXCHANGE_PATH, resolveTransportPath, shouldExcludeTransportPath, shouldHandleTransportPath, shouldUseTransportForUrl };
40
- //# sourceMappingURL=chunk-NVYIUBU7.js.map
41
- //# sourceMappingURL=chunk-NVYIUBU7.js.map
40
+ //# sourceMappingURL=chunk-XC7I2L3G.js.map
41
+ //# sourceMappingURL=chunk-XC7I2L3G.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/modules/crypto/kit-transport-paths.ts"],"names":[],"mappings":";;;AAkBO,IAAM,mCAAA,GAAsC,CAAA,IAAA,EAAO,kBAAA,CAAmB,yBAAyB,CAAA;AAEtG,IAAM,UAAA,GAAa,OAAA;AACnB,IAAM,cAAA,GAAiB,cAAA;AACvB,IAAM,WAAA,GAAc,cAAA;AAEpB,SAAS,cAAc,QAAA,EAA0B;AAC/C,EAAA,OAAO,SAAS,UAAA,CAAW,GAAG,CAAA,GAAI,QAAA,GAAW,IAAI,QAAQ,CAAA,CAAA;AAC3D;AAYO,SAAS,oBAAoB,QAAA,EAA2B;AAC7D,EAAA,OAAO,QAAA,KAAa,cAAA,IAAkB,QAAA,CAAS,QAAA,CAAS,WAAW,CAAA;AACrE;AAaO,SAAS,yBAAA,CACd,QAAA,EACA,eAAA,GAA0B,mCAAA,EACjB;AACT,EAAA,OAAO,aAAa,eAAA,IAAmB,QAAA,CAAS,WAAW,UAAU,CAAA,IAAK,oBAAoB,QAAQ,CAAA;AACxG;AAcO,SAAS,0BAAA,CACd,QAAA,EACA,YAAA,EACA,eAAA,EACS;AACT,EAAA,IAAI,QAAA,KAAa,eAAA;AACf,IAAA,OAAO,IAAA;AAET,EAAA,OAAO,YAAA,CAAa,IAAA,CAAK,CAAC,WAAA,KAAgB;AACxC,IAAA,MAAM,cAAA,GAAiB,cAAc,WAAW,CAAA;AAChD,IAAA,OAAO,aAAa,cAAA,IAAkB,QAAA,CAAS,UAAA,CAAW,CAAA,EAAG,cAAc,CAAA,CAAA,CAAG,CAAA;AAAA,EAChF,CAAC,CAAA;AACH;AAaO,SAAS,oBAAA,CAAqB,SAAA,EAAmB,MAAA,GAAS,kBAAA,EAA4B;AAC3F,EAAA,OAAO,IAAI,GAAA,CAAI,SAAA,EAAW,MAAM,CAAA,CAAE,QAAA;AACpC;AAoBO,SAAS,wBAAA,CACd,GAAA,EACA,OAAA,GAII,EAAC,EACI;AACT,EAAA,MAAM,UAAA,GAAa,QAAQ,MAAA,IAAU,kBAAA;AACrC,EAAA,MAAM,aAAa,GAAA,YAAe,GAAA,GAAM,MAAM,IAAI,GAAA,CAAI,KAAK,UAAU,CAAA;AAErE,EAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,UAAA,CAAW,MAAA,KAAW,OAAA,CAAQ,MAAA;AAClD,IAAA,OAAO,KAAA;AAET,EAAA,MAAM,eAAA,GAAkB,QAAQ,eAAA,IAAmB,mCAAA;AACnD,EAAA,IAAI,CAAC,yBAAA,CAA0B,UAAA,CAAW,QAAA,EAAU,eAAe,CAAA;AACjE,IAAA,OAAO,KAAA;AAET,EAAA,OAAO,CAAC,2BAA2B,UAAA,CAAW,QAAA,EAAU,QAAQ,YAAA,IAAgB,IAAI,eAAe,CAAA;AACrG","file":"chunk-XC7I2L3G.js","sourcesContent":["/**\n * @h-ai/kit — 传输加密路径匹配工具\n *\n * 统一定义哪些同源请求应纳入 transport 保护范围,供服务端 middleware\n * 与浏览器端 fetch 包装共同复用,避免两端判断漂移。\n * @module kit-transport-paths\n */\n\nimport { TRANSPORT_PROTOCOL } from '@h-ai/crypto'\n\n/**\n * 客户端与服务端共用的默认公开密钥交换路径。\n * @example 模块内部上下文\n * ```ts\n * const endpoint = new URL(DEFAULT_TRANSPORT_KEY_EXCHANGE_PATH, 'https://app.example.com')\n * void endpoint.pathname\n * ```\n */\nexport const DEFAULT_TRANSPORT_KEY_EXCHANGE_PATH = `/api${TRANSPORT_PROTOCOL.DEFAULT_KEY_EXCHANGE_PATH}`\n\nconst API_PREFIX = '/api/'\nconst ROOT_DATA_PATH = '/__data.json'\nconst DATA_SUFFIX = '/__data.json'\n\nfunction normalizePath(pathname: string): string {\n return pathname.startsWith('/') ? pathname : `/${pathname}`\n}\n\n/**\n * 判断路径是否为 SvelteKit 的页面数据端点。\n * @param pathname - URL pathname,不含 query 或 fragment。\n * @returns 是否是页面 __data.json 端点。\n * @example 模块内部上下文\n * ```ts\n * const isData = isSvelteKitDataPath('/articles/__data.json')\n * void isData\n * ```\n */\nexport function isSvelteKitDataPath(pathname: string): boolean {\n return pathname === ROOT_DATA_PATH || pathname.endsWith(DATA_SUFFIX)\n}\n\n/**\n * 判断路径是否属于 transport 保护范围。\n * @param pathname - 待判断的 URL pathname。\n * @param keyExchangePath - 公开密钥交换路径。\n * @returns 是否属于 API、密钥交换或 SvelteKit 数据端点。\n * @example 模块内部上下文\n * ```ts\n * const protectedPath = shouldHandleTransportPath('/api/articles')\n * void protectedPath\n * ```\n */\nexport function shouldHandleTransportPath(\n pathname: string,\n keyExchangePath: string = DEFAULT_TRANSPORT_KEY_EXCHANGE_PATH,\n): boolean {\n return pathname === keyExchangePath || pathname.startsWith(API_PREFIX) || isSvelteKitDataPath(pathname)\n}\n\n/**\n * 判断路径是否应排除 transport。\n * @param pathname - 待判断的 URL pathname。\n * @param excludePaths - 按精确路径或子路径前缀排除的列表。\n * @param keyExchangePath - 始终排除加密载荷处理的密钥交换路径。\n * @returns 是否匹配交换端点、排除路径或其子路径。\n * @example 模块内部上下文\n * ```ts\n * const excluded = shouldExcludeTransportPath('/api/health', ['/api/health'], DEFAULT_TRANSPORT_KEY_EXCHANGE_PATH)\n * void excluded\n * ```\n */\nexport function shouldExcludeTransportPath(\n pathname: string,\n excludePaths: string[],\n keyExchangePath: string,\n): boolean {\n if (pathname === keyExchangePath)\n return true\n\n return excludePaths.some((excludePath) => {\n const normalizedPath = normalizePath(excludePath)\n return pathname === normalizedPath || pathname.startsWith(`${normalizedPath}/`)\n })\n}\n\n/**\n * 从相对/绝对 URL 中提取 pathname。\n * @param urlOrPath - 绝对 URL 或相对路径。\n * @param origin - 解析相对路径的基准 origin。\n * @returns 解析后的 pathname;无效 URL 抛出 TypeError。\n * @example 模块内部上下文\n * ```ts\n * const path = resolveTransportPath('https://app.example.com/api/articles?page=1')\n * void path\n * ```\n */\nexport function resolveTransportPath(urlOrPath: string, origin = 'http://localhost'): string {\n return new URL(urlOrPath, origin).pathname\n}\n\n/**\n * 判断浏览器侧请求是否应走 transport。\n *\n * - 仅处理同源请求\n * - 仅保护 `/api/*` 与 SvelteKit `__data.json`\n * - 命中 `excludePaths` 时透传明文\n * @param url - 待判断的绝对或相对 URL。\n * @param options - 同源基准、密钥交换路径及排除列表。\n * @param options.origin - 当前应用 origin;跨域请求不进入包装。\n * @param options.keyExchangePath - 公开密钥交换路径。\n * @param options.excludePaths - 明文排除路径列表。\n * @returns 是否同源、属于保护范围且未被排除。\n * @example 模块内部上下文\n * ```ts\n * const protectedUrl = shouldUseTransportForUrl('/api/articles', { origin: 'https://app.example.com', excludePaths: ['/api/health'] })\n * void protectedUrl\n * ```\n */\nexport function shouldUseTransportForUrl(\n url: string | URL,\n options: {\n origin?: string\n keyExchangePath?: string\n excludePaths?: string[]\n } = {},\n): boolean {\n const baseOrigin = options.origin ?? 'http://localhost'\n const requestUrl = url instanceof URL ? url : new URL(url, baseOrigin)\n\n if (options.origin && requestUrl.origin !== options.origin)\n return false\n\n const keyExchangePath = options.keyExchangePath ?? DEFAULT_TRANSPORT_KEY_EXCHANGE_PATH\n if (!shouldHandleTransportPath(requestUrl.pathname, keyExchangePath))\n return false\n\n return !shouldExcludeTransportPath(requestUrl.pathname, options.excludePaths ?? [], keyExchangePath)\n}\n"]}
@@ -1,6 +1,52 @@
1
- export { C as ClientTransportConfig, K as KitClient, f as KitClientConfig, a as createKitAuthActions, c as createKitClient, o as createSvelteKitNavAdapter, i as installBrowserTransport, b as installBrowserTransportFetch } from '../index-B7s-0mZl.js';
1
+ export { C as ClientTransportConfig, K as KitClient, e as KitClientConfig, a as createKitAuthActions, c as createKitClient, i as installBrowserTransport, b as installBrowserTransportFetch } from '../kit-client-auth-HnZIYUia.js';
2
2
  import '@h-ai/api-contract';
3
3
  import '@h-ai/core';
4
4
  import '@h-ai/crypto';
5
5
  import '@h-ai/iam';
6
6
  import 'zod';
7
+
8
+ /**
9
+ * @h-ai/kit — SvelteKit 路由适配器
10
+ *
11
+ * 此前位于 `@h-ai/ui/sveltekit`,为避免 `@h-ai/ui` 耦合 SvelteKit,迁移至本模块。
12
+ *
13
+ * 为 `@h-ai/ui` 的 `CrudPage` 等需要“宿主路由”的场景组件提供 SvelteKit 实现。
14
+ * 返回值结构与 `@h-ai/ui` 的 `NavAdapter` 完全一致;TS 通过结构类型自动匹配,
15
+ * 无需在 `@h-ai/kit` 中显式依赖 `@h-ai/ui`。
16
+ *
17
+ * @example
18
+ * ```svelte
19
+ * <script lang='ts'>
20
+ * import { CrudPage } from '@h-ai/ui'
21
+ * import { createSvelteKitNavAdapter } from '@h-ai/kit/client'
22
+ *
23
+ * const nav = createSvelteKitNavAdapter()
24
+ * </script>
25
+ *
26
+ * <CrudPage {crud} {data} {nav} />
27
+ * ```
28
+ *
29
+ * @module kit-nav-adapter
30
+ */
31
+ /**
32
+ * SvelteKit `NavAdapter`:
33
+ *
34
+ * - `pathname` 来自 `$app/state` 的 `page.url.pathname`(响应式)。
35
+ * - `navigate` 使用 `$app/navigation` 的 `goto`,并自动 `invalidateAll`,
36
+ * 触发 `+page.server.ts` 的 `load` 重新执行。
37
+ * - `refresh` 调用 `invalidateAll()`,常用于写操作后刷新列表数据。
38
+ * @returns 读取当前 pathname 并调用 SvelteKit navigate/refresh 的适配器。
39
+ * @example 模块内部上下文
40
+ * ```ts
41
+ * const nav = createSvelteKitNavAdapter()
42
+ * // 仅客户端交互中调用导航;URL 由应用路由提供。
43
+ * await nav.navigate('/articles')
44
+ * ```
45
+ */
46
+ declare function createSvelteKitNavAdapter(): {
47
+ readonly pathname: string;
48
+ readonly navigate: (url: string) => Promise<void>;
49
+ readonly refresh: () => Promise<void>;
50
+ };
51
+
52
+ export { createSvelteKitNavAdapter };
@@ -1,6 +1,6 @@
1
- export { createKitAuthActions, createKitClient, installBrowserTransport, installBrowserTransportFetch } from '../chunk-VOTDAVCB.js';
2
- import '../chunk-NVYIUBU7.js';
3
- import '../chunk-QHYNL24G.js';
1
+ export { createKitAuthActions, createKitClient, installBrowserTransport, installBrowserTransportFetch } from '../chunk-2YYRP7HH.js';
2
+ import '../chunk-XC7I2L3G.js';
3
+ import '../chunk-OVRZIDCD.js';
4
4
  import { invalidateAll, goto } from '$app/navigation';
5
5
  import { page } from '$app/state';
6
6
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/client/kit-nav-adapter.ts"],"names":[],"mappings":";;;;;;AAmCO,SAAS,yBAAA,GAId;AACA,EAAA,OAAO;AAAA,IACL,IAAI,QAAA,GAAW;AACb,MAAA,OAAO,KAAK,GAAA,CAAI,QAAA;AAAA,IAClB,CAAA;AAAA,IACA,MAAM,SAAS,GAAA,EAAa;AAC1B,MAAA,MAAM,IAAA,CAAK,GAAA,EAAK,EAAE,aAAA,EAAe,MAAM,CAAA;AAAA,IACzC,CAAA;AAAA,IACA,MAAM,OAAA,GAAU;AACd,MAAA,MAAM,aAAA,EAAc;AAAA,IACtB;AAAA,GACF;AACF","file":"index.js","sourcesContent":["/**\n * @h-ai/kit — SvelteKit 路由适配器\n *\n * 此前位于 `@h-ai/ui/sveltekit`,为避免 `@h-ai/ui` 耦合 SvelteKit,迁移至本模块。\n *\n * 为 `@h-ai/ui` 的 `CrudPage` 等需要“宿主路由”的场景组件提供 SvelteKit 实现。\n * 返回值结构与 `@h-ai/ui` 的 `NavAdapter` 完全一致;TS 通过结构类型自动匹配,\n * 无需在 `@h-ai/kit` 中显式依赖 `@h-ai/ui`。\n *\n * @example\n * ```svelte\n * <script lang='ts'>\n * import { CrudPage } from '@h-ai/ui'\n * import { createSvelteKitNavAdapter } from '@h-ai/kit/client'\n *\n * const nav = createSvelteKitNavAdapter()\n * </script>\n *\n * <CrudPage {crud} {data} {nav} />\n * ```\n *\n * @module kit-nav-adapter\n */\n\nimport { goto, invalidateAll } from '$app/navigation'\nimport { page } from '$app/state'\n\n/**\n * SvelteKit `NavAdapter`:\n *\n * - `pathname` 来自 `$app/state` 的 `page.url.pathname`(响应式)。\n * - `navigate` 使用 `$app/navigation` 的 `goto`,并自动 `invalidateAll`,\n * 触发 `+page.server.ts` 的 `load` 重新执行。\n * - `refresh` 调用 `invalidateAll()`,常用于写操作后刷新列表数据。\n */\nexport function createSvelteKitNavAdapter(): {\n readonly pathname: string\n readonly navigate: (url: string) => Promise<void>\n readonly refresh: () => Promise<void>\n} {\n return {\n get pathname() {\n return page.url.pathname\n },\n async navigate(url: string) {\n await goto(url, { invalidateAll: true })\n },\n async refresh() {\n await invalidateAll()\n },\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/client/kit-nav-adapter.ts"],"names":[],"mappings":";;;;;;AA0CO,SAAS,yBAAA,GAId;AACA,EAAA,OAAO;AAAA,IACL,IAAI,QAAA,GAAW;AACb,MAAA,OAAO,KAAK,GAAA,CAAI,QAAA;AAAA,IAClB,CAAA;AAAA,IACA,MAAM,SAAS,GAAA,EAAa;AAC1B,MAAA,MAAM,IAAA,CAAK,GAAA,EAAK,EAAE,aAAA,EAAe,MAAM,CAAA;AAAA,IACzC,CAAA;AAAA,IACA,MAAM,OAAA,GAAU;AACd,MAAA,MAAM,aAAA,EAAc;AAAA,IACtB;AAAA,GACF;AACF","file":"index.js","sourcesContent":["/**\n * @h-ai/kit — SvelteKit 路由适配器\n *\n * 此前位于 `@h-ai/ui/sveltekit`,为避免 `@h-ai/ui` 耦合 SvelteKit,迁移至本模块。\n *\n * 为 `@h-ai/ui` 的 `CrudPage` 等需要“宿主路由”的场景组件提供 SvelteKit 实现。\n * 返回值结构与 `@h-ai/ui` 的 `NavAdapter` 完全一致;TS 通过结构类型自动匹配,\n * 无需在 `@h-ai/kit` 中显式依赖 `@h-ai/ui`。\n *\n * @example\n * ```svelte\n * <script lang='ts'>\n * import { CrudPage } from '@h-ai/ui'\n * import { createSvelteKitNavAdapter } from '@h-ai/kit/client'\n *\n * const nav = createSvelteKitNavAdapter()\n * </script>\n *\n * <CrudPage {crud} {data} {nav} />\n * ```\n *\n * @module kit-nav-adapter\n */\n\nimport { goto, invalidateAll } from '$app/navigation'\nimport { page } from '$app/state'\n\n/**\n * SvelteKit `NavAdapter`:\n *\n * - `pathname` 来自 `$app/state` 的 `page.url.pathname`(响应式)。\n * - `navigate` 使用 `$app/navigation` 的 `goto`,并自动 `invalidateAll`,\n * 触发 `+page.server.ts` 的 `load` 重新执行。\n * - `refresh` 调用 `invalidateAll()`,常用于写操作后刷新列表数据。\n * @returns 读取当前 pathname 并调用 SvelteKit navigate/refresh 的适配器。\n * @example 模块内部上下文\n * ```ts\n * const nav = createSvelteKitNavAdapter()\n * // 仅客户端交互中调用导航;URL 由应用路由提供。\n * await nav.navigate('/articles')\n * ```\n */\nexport function createSvelteKitNavAdapter(): {\n readonly pathname: string\n readonly navigate: (url: string) => Promise<void>\n readonly refresh: () => Promise<void>\n} {\n return {\n get pathname() {\n return page.url.pathname\n },\n async navigate(url: string) {\n await goto(url, { invalidateAll: true })\n },\n async refresh() {\n await invalidateAll()\n },\n }\n}\n"]}