@bearei/contracts 3.0.0 → 3.2.0

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 CHANGED
@@ -4,6 +4,23 @@ All notable changes to this project are documented in this file. The format is b
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to
5
5
  [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## 3.2.0 — 2026-10-30
8
+
9
+ ### Added
10
+
11
+ - `PAYMENT_CHANNEL`, `PaymentChannel`, `PAYMENT_ENVIRONMENT`, `PaymentEnvironment`,
12
+ `PAYMENT_EVENT_TYPE` and `PaymentEventType`: the channel, environment and event vocabulary of the
13
+ frozen payment event contract between `bearei-pay` and `bearei-subscription`. Values match the
14
+ existing service enums; the release is additive and no existing export changed.
15
+
16
+ ## 3.1.0 — 2026-10-30
17
+
18
+ ### Added
19
+
20
+ - `EMAIL_TEMPLATE` and `EmailTemplate`: the template identifiers accepted by `bearei-email` and used
21
+ by clients to pick an email template. Values are `SIGN_UP_CAPTCHA` and `RESET_PASSWORD_CAPTCHA`.
22
+ The enum is additive; no existing export changed.
23
+
7
24
  ## 3.0.0 — 2026-10-29
8
25
 
9
26
  ### Breaking
package/README.md CHANGED
@@ -5,17 +5,19 @@ runtime dependencies and ships both ESM and CommonJS builds.
5
5
 
6
6
  English | [中文](./README.zh-CN.md)
7
7
 
8
- | Export | Kind | Purpose |
9
- | ------------------------------------------------------ | ----- | --------------------------------------------------- |
10
- | `HTTP_EXCEPTION_CODE`, `HttpExceptionCode` | value | Numeric error codes shared by services and clients |
11
- | `ApiErrorBody` | type | Business error body `{code, message, statusCode}` |
12
- | `DEFAULT_PAGE_SIZE`, `MAX_PAGE_SIZE` | value | Paging limits used by every list endpoint |
13
- | `PaginationQuery`, `PaginatedResult<T>` | type | Paging request fields and page envelope |
14
- | `RESERVED_REQUEST_HEADER`, `ReservedRequestHeaderName` | value | Headers set by the gateway or authentication layer |
15
- | `LANGUAGE`, `Language` | value | Locale values |
16
- | `ORDER`, `Order` | value | Sort order values |
17
- | `PERMISSION`, `Permission` | value | Permission values used by services and clients |
18
- | `SUBSCRIPTION_FEATURE`, `SubscriptionFeature` | value | Subscription feature values scoped like permissions |
8
+ | Export | Kind | Purpose |
9
+ | -------------------------------------------------------------- | ----- | --------------------------------------------------- |
10
+ | `HTTP_EXCEPTION_CODE`, `HttpExceptionCode` | value | Numeric error codes shared by services and clients |
11
+ | `ApiErrorBody` | type | Business error body `{code, message, statusCode}` |
12
+ | `DEFAULT_PAGE_SIZE`, `MAX_PAGE_SIZE` | value | Paging limits used by every list endpoint |
13
+ | `PaginationQuery`, `PaginatedResult<T>` | type | Paging request fields and page envelope |
14
+ | `RESERVED_REQUEST_HEADER`, `ReservedRequestHeaderName` | value | Headers set by the gateway or authentication layer |
15
+ | `LANGUAGE`, `Language` | value | Locale values |
16
+ | `EMAIL_TEMPLATE`, `EmailTemplate` | value | Email template values used by services and clients |
17
+ | `ORDER`, `Order` | value | Sort order values |
18
+ | `PAYMENT_CHANNEL`, `PAYMENT_ENVIRONMENT`, `PAYMENT_EVENT_TYPE` | value | Payment contract vocabulary shared by services |
19
+ | `PERMISSION`, `Permission` | value | Permission values used by services and clients |
20
+ | `SUBSCRIPTION_FEATURE`, `SubscriptionFeature` | value | Subscription feature values scoped like permissions |
19
21
 
20
22
  ## Install
21
23
 
@@ -67,7 +69,8 @@ Only values and types that both ends of a wire boundary must agree on belong her
67
69
  - numeric error codes and error response bodies
68
70
  - query and response shapes shared by API clients and services
69
71
  - reserved request header names
70
- - cross-project enums such as language, sort order, permissions and subscription features
72
+ - cross-project enums such as language, sort order, permissions, subscription features and payment
73
+ contract values
71
74
 
72
75
  Framework-specific code does not belong here: NestJS decorators, guards and interceptors,
73
76
  TypeORM entities, HTTP clients, persistence, and service-only DTOs stay in their own libraries.
package/README.zh-CN.md CHANGED
@@ -5,17 +5,19 @@ ESM 与 CommonJS 两种产物。
5
5
 
6
6
  [English](./README.md) | 中文
7
7
 
8
- | 导出 | 类型 | 用途 |
9
- | ------------------------------------------------------ | ---- | ---------------------------------------- |
10
- | `HTTP_EXCEPTION_CODE`、`HttpExceptionCode` | 值 | 服务与客户端共享的数字错误码 |
11
- | `ApiErrorBody` | 类型 | 业务错误体 `{code, message, statusCode}` |
12
- | `DEFAULT_PAGE_SIZE`、`MAX_PAGE_SIZE` | 值 | 所有列表接口使用的分页上限 |
13
- | `PaginationQuery`、`PaginatedResult<T>` | 类型 | 分页请求字段与分页响应信封 |
14
- | `RESERVED_REQUEST_HEADER`、`ReservedRequestHeaderName` | 值 | 由网关或认证层写入的保留请求头 |
15
- | `LANGUAGE`、`Language` | 值 | 语言值 |
16
- | `ORDER`、`Order` | 值 | 排序值 |
17
- | `PERMISSION`、`Permission` | 值 | 服务与客户端共用的权限值 |
18
- | `SUBSCRIPTION_FEATURE`、`SubscriptionFeature` | 值 | 订阅特性值,与权限使用相同的区域写法 |
8
+ | 导出 | 类型 | 用途 |
9
+ | -------------------------------------------------------------- | ---- | ---------------------------------------- |
10
+ | `HTTP_EXCEPTION_CODE`、`HttpExceptionCode` | 值 | 服务与客户端共享的数字错误码 |
11
+ | `ApiErrorBody` | 类型 | 业务错误体 `{code, message, statusCode}` |
12
+ | `DEFAULT_PAGE_SIZE`、`MAX_PAGE_SIZE` | 值 | 所有列表接口使用的分页上限 |
13
+ | `PaginationQuery`、`PaginatedResult<T>` | 类型 | 分页请求字段与分页响应信封 |
14
+ | `RESERVED_REQUEST_HEADER`、`ReservedRequestHeaderName` | 值 | 由网关或认证层写入的保留请求头 |
15
+ | `LANGUAGE`、`Language` | 值 | 语言值 |
16
+ | `EMAIL_TEMPLATE`、`EmailTemplate` | 值 | 服务与客户端共用的邮件模板值 |
17
+ | `ORDER`、`Order` | 值 | 排序值 |
18
+ | `PAYMENT_CHANNEL`、`PAYMENT_ENVIRONMENT`、`PAYMENT_EVENT_TYPE` | 值 | 支付服务与订阅服务共用的支付契约词表 |
19
+ | `PERMISSION`、`Permission` | 值 | 服务与客户端共用的权限值 |
20
+ | `SUBSCRIPTION_FEATURE`、`SubscriptionFeature` | 值 | 订阅特性值,与权限使用相同的区域写法 |
19
21
 
20
22
  ## 安装
21
23
 
@@ -65,7 +67,7 @@ const page: PaginatedResult<{id: string}> = {
65
67
  - 数字错误码与错误响应体
66
68
  - API 客户端与服务共享的查询、响应结构
67
69
  - 保留请求头名称
68
- - 语言、排序、权限、订阅特性等跨项目枚举
70
+ - 语言、排序、权限、订阅特性、支付契约值等跨项目枚举
69
71
 
70
72
  框架相关代码不放进这里:NestJS 装饰器、守卫、拦截器,TypeORM 实体,HTTP 客户端,持久化,
71
73
  以及仅服务端使用的 DTO 都留在各自的库中。
package/dist/index.d.mts CHANGED
@@ -1,3 +1,9 @@
1
+ declare const EMAIL_TEMPLATE: {
2
+ readonly RESET_PASSWORD_CAPTCHA: "RESET_PASSWORD_CAPTCHA";
3
+ readonly SIGN_UP_CAPTCHA: "SIGN_UP_CAPTCHA";
4
+ };
5
+ type EmailTemplate = (typeof EMAIL_TEMPLATE)[keyof typeof EMAIL_TEMPLATE];
6
+
1
7
  /**
2
8
  * Numeric error codes shared by Bearei services and clients.
3
9
  * Values are part of the wire contract: append new codes, never renumber or reuse.
@@ -87,6 +93,27 @@ interface PaginatedResult<T> {
87
93
  total?: number;
88
94
  }
89
95
 
96
+ declare const PAYMENT_CHANNEL: {
97
+ readonly APPLE_IAP: "APPLE_IAP";
98
+ };
99
+ type PaymentChannel = (typeof PAYMENT_CHANNEL)[keyof typeof PAYMENT_CHANNEL];
100
+ declare const PAYMENT_ENVIRONMENT: {
101
+ readonly PRODUCTION: "PRODUCTION";
102
+ readonly SANDBOX: "SANDBOX";
103
+ };
104
+ type PaymentEnvironment = (typeof PAYMENT_ENVIRONMENT)[keyof typeof PAYMENT_ENVIRONMENT];
105
+ declare const PAYMENT_EVENT_TYPE: {
106
+ readonly ENTERED_GRACE_PERIOD: "ENTERED_GRACE_PERIOD";
107
+ readonly EXPIRED: "EXPIRED";
108
+ readonly PLAN_CHANGED: "PLAN_CHANGED";
109
+ readonly REFUNDED: "REFUNDED";
110
+ readonly REINSTATED: "REINSTATED";
111
+ readonly RENEWED: "RENEWED";
112
+ readonly REVOKED: "REVOKED";
113
+ readonly SUBSCRIBED: "SUBSCRIBED";
114
+ };
115
+ type PaymentEventType = (typeof PAYMENT_EVENT_TYPE)[keyof typeof PAYMENT_EVENT_TYPE];
116
+
90
117
  declare const PERMISSION: {
91
118
  readonly ACTION_LOG_CREATE: "action-log:create";
92
119
  readonly ACTION_LOG_DELETE: "action-log:delete";
@@ -166,5 +193,5 @@ declare const SUBSCRIPTION_FEATURE: {
166
193
  };
167
194
  type SubscriptionFeature = (typeof SUBSCRIPTION_FEATURE)[keyof typeof SUBSCRIPTION_FEATURE];
168
195
 
169
- export { DEFAULT_PAGE_SIZE, HTTP_EXCEPTION_CODE, LANGUAGE, MAX_PAGE_SIZE, ORDER, PERMISSION, RESERVED_REQUEST_HEADER, SUBSCRIPTION_FEATURE };
170
- export type { ApiErrorBody, HttpExceptionCode, Language, Order, PaginatedResult, PaginationQuery, Permission, ReservedRequestHeaderName, SubscriptionFeature };
196
+ export { DEFAULT_PAGE_SIZE, EMAIL_TEMPLATE, HTTP_EXCEPTION_CODE, LANGUAGE, MAX_PAGE_SIZE, ORDER, PAYMENT_CHANNEL, PAYMENT_ENVIRONMENT, PAYMENT_EVENT_TYPE, PERMISSION, RESERVED_REQUEST_HEADER, SUBSCRIPTION_FEATURE };
197
+ export type { ApiErrorBody, EmailTemplate, HttpExceptionCode, Language, Order, PaginatedResult, PaginationQuery, PaymentChannel, PaymentEnvironment, PaymentEventType, Permission, ReservedRequestHeaderName, SubscriptionFeature };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,9 @@
1
+ declare const EMAIL_TEMPLATE: {
2
+ readonly RESET_PASSWORD_CAPTCHA: "RESET_PASSWORD_CAPTCHA";
3
+ readonly SIGN_UP_CAPTCHA: "SIGN_UP_CAPTCHA";
4
+ };
5
+ type EmailTemplate = (typeof EMAIL_TEMPLATE)[keyof typeof EMAIL_TEMPLATE];
6
+
1
7
  /**
2
8
  * Numeric error codes shared by Bearei services and clients.
3
9
  * Values are part of the wire contract: append new codes, never renumber or reuse.
@@ -87,6 +93,27 @@ interface PaginatedResult<T> {
87
93
  total?: number;
88
94
  }
89
95
 
96
+ declare const PAYMENT_CHANNEL: {
97
+ readonly APPLE_IAP: "APPLE_IAP";
98
+ };
99
+ type PaymentChannel = (typeof PAYMENT_CHANNEL)[keyof typeof PAYMENT_CHANNEL];
100
+ declare const PAYMENT_ENVIRONMENT: {
101
+ readonly PRODUCTION: "PRODUCTION";
102
+ readonly SANDBOX: "SANDBOX";
103
+ };
104
+ type PaymentEnvironment = (typeof PAYMENT_ENVIRONMENT)[keyof typeof PAYMENT_ENVIRONMENT];
105
+ declare const PAYMENT_EVENT_TYPE: {
106
+ readonly ENTERED_GRACE_PERIOD: "ENTERED_GRACE_PERIOD";
107
+ readonly EXPIRED: "EXPIRED";
108
+ readonly PLAN_CHANGED: "PLAN_CHANGED";
109
+ readonly REFUNDED: "REFUNDED";
110
+ readonly REINSTATED: "REINSTATED";
111
+ readonly RENEWED: "RENEWED";
112
+ readonly REVOKED: "REVOKED";
113
+ readonly SUBSCRIBED: "SUBSCRIBED";
114
+ };
115
+ type PaymentEventType = (typeof PAYMENT_EVENT_TYPE)[keyof typeof PAYMENT_EVENT_TYPE];
116
+
90
117
  declare const PERMISSION: {
91
118
  readonly ACTION_LOG_CREATE: "action-log:create";
92
119
  readonly ACTION_LOG_DELETE: "action-log:delete";
@@ -166,5 +193,5 @@ declare const SUBSCRIPTION_FEATURE: {
166
193
  };
167
194
  type SubscriptionFeature = (typeof SUBSCRIPTION_FEATURE)[keyof typeof SUBSCRIPTION_FEATURE];
168
195
 
169
- export { DEFAULT_PAGE_SIZE, HTTP_EXCEPTION_CODE, LANGUAGE, MAX_PAGE_SIZE, ORDER, PERMISSION, RESERVED_REQUEST_HEADER, SUBSCRIPTION_FEATURE };
170
- export type { ApiErrorBody, HttpExceptionCode, Language, Order, PaginatedResult, PaginationQuery, Permission, ReservedRequestHeaderName, SubscriptionFeature };
196
+ export { DEFAULT_PAGE_SIZE, EMAIL_TEMPLATE, HTTP_EXCEPTION_CODE, LANGUAGE, MAX_PAGE_SIZE, ORDER, PAYMENT_CHANNEL, PAYMENT_ENVIRONMENT, PAYMENT_EVENT_TYPE, PERMISSION, RESERVED_REQUEST_HEADER, SUBSCRIPTION_FEATURE };
197
+ export type { ApiErrorBody, EmailTemplate, HttpExceptionCode, Language, Order, PaginatedResult, PaginationQuery, PaymentChannel, PaymentEnvironment, PaymentEventType, Permission, ReservedRequestHeaderName, SubscriptionFeature };
package/dist/index.js CHANGED
@@ -21,16 +21,26 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
23
  DEFAULT_PAGE_SIZE: () => DEFAULT_PAGE_SIZE,
24
+ EMAIL_TEMPLATE: () => EMAIL_TEMPLATE,
24
25
  HTTP_EXCEPTION_CODE: () => HTTP_EXCEPTION_CODE,
25
26
  LANGUAGE: () => LANGUAGE,
26
27
  MAX_PAGE_SIZE: () => MAX_PAGE_SIZE,
27
28
  ORDER: () => ORDER,
29
+ PAYMENT_CHANNEL: () => PAYMENT_CHANNEL,
30
+ PAYMENT_ENVIRONMENT: () => PAYMENT_ENVIRONMENT,
31
+ PAYMENT_EVENT_TYPE: () => PAYMENT_EVENT_TYPE,
28
32
  PERMISSION: () => PERMISSION,
29
33
  RESERVED_REQUEST_HEADER: () => RESERVED_REQUEST_HEADER,
30
34
  SUBSCRIPTION_FEATURE: () => SUBSCRIPTION_FEATURE
31
35
  });
32
36
  module.exports = __toCommonJS(index_exports);
33
37
 
38
+ // src/email-template.enum.ts
39
+ var EMAIL_TEMPLATE = {
40
+ RESET_PASSWORD_CAPTCHA: "RESET_PASSWORD_CAPTCHA",
41
+ SIGN_UP_CAPTCHA: "SIGN_UP_CAPTCHA"
42
+ };
43
+
34
44
  // src/error-code.enum.ts
35
45
  var HTTP_EXCEPTION_CODE = {
36
46
  ACCESS_DENIED_FOR_GUEST: 401003,
@@ -94,6 +104,25 @@ var ORDER = {
94
104
  var DEFAULT_PAGE_SIZE = 10;
95
105
  var MAX_PAGE_SIZE = 1024;
96
106
 
107
+ // src/payment.enum.ts
108
+ var PAYMENT_CHANNEL = {
109
+ APPLE_IAP: "APPLE_IAP"
110
+ };
111
+ var PAYMENT_ENVIRONMENT = {
112
+ PRODUCTION: "PRODUCTION",
113
+ SANDBOX: "SANDBOX"
114
+ };
115
+ var PAYMENT_EVENT_TYPE = {
116
+ ENTERED_GRACE_PERIOD: "ENTERED_GRACE_PERIOD",
117
+ EXPIRED: "EXPIRED",
118
+ PLAN_CHANGED: "PLAN_CHANGED",
119
+ REFUNDED: "REFUNDED",
120
+ REINSTATED: "REINSTATED",
121
+ RENEWED: "RENEWED",
122
+ REVOKED: "REVOKED",
123
+ SUBSCRIBED: "SUBSCRIBED"
124
+ };
125
+
97
126
  // src/permission.enum.ts
98
127
  var PERMISSION = {
99
128
  ACTION_LOG_CREATE: "action-log:create",
@@ -175,10 +204,14 @@ var SUBSCRIPTION_FEATURE = {
175
204
  // Annotate the CommonJS export names for ESM import in node:
176
205
  0 && (module.exports = {
177
206
  DEFAULT_PAGE_SIZE,
207
+ EMAIL_TEMPLATE,
178
208
  HTTP_EXCEPTION_CODE,
179
209
  LANGUAGE,
180
210
  MAX_PAGE_SIZE,
181
211
  ORDER,
212
+ PAYMENT_CHANNEL,
213
+ PAYMENT_ENVIRONMENT,
214
+ PAYMENT_EVENT_TYPE,
182
215
  PERMISSION,
183
216
  RESERVED_REQUEST_HEADER,
184
217
  SUBSCRIPTION_FEATURE
package/dist/index.mjs CHANGED
@@ -1,3 +1,9 @@
1
+ // src/email-template.enum.ts
2
+ var EMAIL_TEMPLATE = {
3
+ RESET_PASSWORD_CAPTCHA: "RESET_PASSWORD_CAPTCHA",
4
+ SIGN_UP_CAPTCHA: "SIGN_UP_CAPTCHA"
5
+ };
6
+
1
7
  // src/error-code.enum.ts
2
8
  var HTTP_EXCEPTION_CODE = {
3
9
  ACCESS_DENIED_FOR_GUEST: 401003,
@@ -61,6 +67,25 @@ var ORDER = {
61
67
  var DEFAULT_PAGE_SIZE = 10;
62
68
  var MAX_PAGE_SIZE = 1024;
63
69
 
70
+ // src/payment.enum.ts
71
+ var PAYMENT_CHANNEL = {
72
+ APPLE_IAP: "APPLE_IAP"
73
+ };
74
+ var PAYMENT_ENVIRONMENT = {
75
+ PRODUCTION: "PRODUCTION",
76
+ SANDBOX: "SANDBOX"
77
+ };
78
+ var PAYMENT_EVENT_TYPE = {
79
+ ENTERED_GRACE_PERIOD: "ENTERED_GRACE_PERIOD",
80
+ EXPIRED: "EXPIRED",
81
+ PLAN_CHANGED: "PLAN_CHANGED",
82
+ REFUNDED: "REFUNDED",
83
+ REINSTATED: "REINSTATED",
84
+ RENEWED: "RENEWED",
85
+ REVOKED: "REVOKED",
86
+ SUBSCRIBED: "SUBSCRIBED"
87
+ };
88
+
64
89
  // src/permission.enum.ts
65
90
  var PERMISSION = {
66
91
  ACTION_LOG_CREATE: "action-log:create",
@@ -141,10 +166,14 @@ var SUBSCRIPTION_FEATURE = {
141
166
  };
142
167
  export {
143
168
  DEFAULT_PAGE_SIZE,
169
+ EMAIL_TEMPLATE,
144
170
  HTTP_EXCEPTION_CODE,
145
171
  LANGUAGE,
146
172
  MAX_PAGE_SIZE,
147
173
  ORDER,
174
+ PAYMENT_CHANNEL,
175
+ PAYMENT_ENVIRONMENT,
176
+ PAYMENT_EVENT_TYPE,
148
177
  PERMISSION,
149
178
  RESERVED_REQUEST_HEADER,
150
179
  SUBSCRIPTION_FEATURE
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bearei/contracts",
3
- "version": "3.0.0",
3
+ "version": "3.2.0",
4
4
  "description": "Framework-agnostic wire contracts shared by Bearei services, clients and apps",
5
5
  "keywords": [
6
6
  "bearei",