@rdlabo/workers-hono-kit 0.11.2 → 0.12.0-beta.pr48.sha371f5792ce8a

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 (56) hide show
  1. package/README.md +73 -37
  2. package/dist/aws/sts.d.ts +2 -2
  3. package/dist/aws/sts.js +4 -4
  4. package/dist/business-time/index.d.ts +68 -122
  5. package/dist/business-time/index.js +55 -222
  6. package/dist/container/middleware.d.ts +1 -2
  7. package/dist/container/middleware.js +1 -1
  8. package/dist/db/index.d.ts +95 -20
  9. package/dist/db/index.js +56 -15
  10. package/dist/db/payment-failed.d.ts +1 -1
  11. package/dist/db/payment-failed.js +1 -1
  12. package/dist/index.d.ts +0 -3
  13. package/dist/index.js +0 -3
  14. package/dist/mysql/index.d.ts +9 -0
  15. package/dist/mysql/index.js +8 -0
  16. package/dist/testing/auth.d.ts +1 -1
  17. package/dist/testing/db.d.ts +19 -106
  18. package/dist/testing/db.js +3 -95
  19. package/dist/testing/fakes.d.ts +15 -97
  20. package/dist/testing/fakes.js +12 -104
  21. package/dist/testing/index.d.ts +8 -3
  22. package/dist/testing/index.js +8 -2
  23. package/docs/api-business-time.md +47 -30
  24. package/docs/api-db.md +48 -29
  25. package/docs/api-offline.md +11 -15
  26. package/docs/api-root.md +64 -58
  27. package/docs/api-testing.md +41 -13
  28. package/docs/api.md +35 -12
  29. package/docs/cli.md +11 -7
  30. package/docs/data-layer.md +68 -5
  31. package/docs/development.md +125 -5
  32. package/docs/http-auth.md +15 -0
  33. package/docs/realtime-offline.md +15 -0
  34. package/docs/role-policies.md +4 -4
  35. package/docs/testing-operations.md +25 -2
  36. package/package.json +24 -18
  37. package/scripts/db-baseline.mjs +3 -68
  38. package/scripts/workspace-package-smoke.mjs +206 -0
  39. package/dist/business-time/types.d.ts +0 -9
  40. package/dist/business-time/types.js +0 -5
  41. package/dist/db/columns.d.ts +0 -38
  42. package/dist/db/columns.js +0 -38
  43. package/dist/db/connection.d.ts +0 -74
  44. package/dist/db/connection.js +0 -67
  45. package/dist/db/database.d.ts +0 -249
  46. package/dist/db/database.js +0 -196
  47. package/dist/db/jst.d.ts +0 -45
  48. package/dist/db/jst.js +0 -47
  49. package/dist/db/migrate.d.ts +0 -51
  50. package/dist/db/migrate.js +0 -109
  51. package/dist/db/orm-config.d.ts +0 -127
  52. package/dist/db/orm-config.js +0 -122
  53. package/dist/db/retry.d.ts +0 -28
  54. package/dist/db/retry.js +0 -56
  55. package/dist/db/write-result.d.ts +0 -39
  56. package/dist/db/write-result.js +0 -34
@@ -1,226 +1,59 @@
1
1
  /**
2
- * Explicit JST business-time API (Workers UTC instant ↔ business calendar date / date-time).
3
- *
4
- * @remarks
5
- * - The DB stays on JST. The app does not implicitly rely on the mysql2 `timezone` option; it goes
6
- * through this module to handle JST.
7
- * - Converting to the MySQL wire format is the responsibility of {@link ../db/jst.js | db/jst}.
8
- * - Do not use a `Date`'s local getters (`getHours`, etc.) for business-time decisions.
2
+ * Compatibility re-export of `@rdlabo/workers-timezone`. Prefer importing the standalone package
3
+ * directly. Symbol-level `@deprecated` tags mark each promoted export. Historical offsets and
4
+ * invalid calendar or wall-clock inputs follow the migration behavior documented in
5
+ * `docs/api-business-time.md`.
9
6
  *
10
7
  * @packageDocumentation
11
8
  */
12
- import { BUSINESS_TIMEZONE } from './types.js';
13
- export { BUSINESS_TIMEZONE };
14
- const pad2 = (n) => String(n).padStart(2, '0');
15
- /** Shift an instant so it can be read as a business-TZ wall clock (extract fields with `getUTC*`). */
16
- function toWallClock(instant) {
17
- return new Date(instant.getTime() + BUSINESS_TIMEZONE.offsetMinutes * 60_000);
18
- }
19
- function parseYmd(date) {
20
- const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(date);
21
- if (!m) {
22
- throw new RangeError(`Invalid BusinessDate: ${date}`);
23
- }
24
- return [Number(m[1]), Number(m[2]), Number(m[3])];
25
- }
26
- function parseHms(time) {
27
- const m = /^(\d{1,2}):(\d{2})(?::(\d{2}))?$/.exec(time);
28
- if (!m) {
29
- throw new RangeError(`Invalid business time: ${time}`);
30
- }
31
- return [Number(m[1]), Number(m[2]), Number(m[3] || 0)];
32
- }
33
- /**
34
- * The JST business calendar date of a reference instant.
35
- *
36
- * @param ref - the instant to read; defaults to now.
37
- * @returns the business date as `YYYY-MM-DD`.
38
- * @example
39
- * today(new Date('2026-07-05T20:00:00Z')); // → '2026-07-06' (JST)
40
- */
41
- export function today(ref = new Date()) {
42
- return toBusinessDate(ref);
43
- }
44
- /**
45
- * Convert a UTC instant to a JST business calendar date.
46
- *
47
- * @param instant - the UTC instant to convert.
48
- * @returns the business date as `YYYY-MM-DD`.
49
- */
50
- export function toBusinessDate(instant) {
51
- const wall = toWallClock(instant);
52
- return `${wall.getUTCFullYear()}-${pad2(wall.getUTCMonth() + 1)}-${pad2(wall.getUTCDate())}`;
53
- }
54
- /**
55
- * Normalize a client / DB input to a JST business calendar date `YYYY-MM-DD`.
56
- *
57
- * - A string already in `YYYY-MM-DD` form is returned as-is, **without** constructing a `Date`
58
- * (a birthday is a calendar day, not an instant).
59
- * - ISO 8601 and similar values are converted to a JST calendar date via their instant.
60
- * - Nullish / empty / invalid inputs yield `null`.
61
- *
62
- * @param value - the string, `Date`, or nullish value to normalize.
63
- * @returns the business date as `YYYY-MM-DD`, or `null` when the input cannot be resolved.
64
- * @example
65
- * normalizeBusinessDate('1990-01-15'); // → '1990-01-15' (unchanged)
66
- * normalizeBusinessDate('2026-07-05T20:00:00Z'); // → '2026-07-06' (JST)
67
- * normalizeBusinessDate(''); // → null
68
- */
69
- export function normalizeBusinessDate(value) {
70
- if (value == null) {
71
- return null;
72
- }
73
- if (value instanceof Date) {
74
- if (Number.isNaN(value.getTime())) {
75
- return null;
76
- }
77
- return toBusinessDate(value);
78
- }
79
- const trimmed = value.trim();
80
- if (!trimmed) {
81
- return null;
82
- }
83
- if (/^\d{4}-\d{2}-\d{2}$/.test(trimmed)) {
84
- return trimmed;
85
- }
86
- const isoDatePrefix = /^(\d{4}-\d{2}-\d{2})/.exec(trimmed);
87
- if (isoDatePrefix && !trimmed.includes('T') && !trimmed.includes(' ')) {
88
- return isoDatePrefix[1];
89
- }
90
- const ms = new Date(trimmed).getTime();
91
- if (Number.isNaN(ms)) {
92
- return null;
93
- }
94
- return toBusinessDate(new Date(ms));
95
- }
96
- /**
97
- * Convert a UTC instant to a JST business date-time (`YYYY-MM-DD HH:mm:ss`).
98
- *
99
- * @param instant - the UTC instant to convert.
100
- * @returns the business date-time string.
101
- * @example
102
- * toBusinessDateTime(new Date('2026-07-05T21:00:00Z')); // → '2026-07-06 06:00:00' (JST)
103
- */
104
- export function toBusinessDateTime(instant) {
105
- const wall = toWallClock(instant);
106
- return `${wall.getUTCFullYear()}-${pad2(wall.getUTCMonth() + 1)}-${pad2(wall.getUTCDate())} ${pad2(wall.getUTCHours())}:${pad2(wall.getUTCMinutes())}:${pad2(wall.getUTCSeconds())}`;
107
- }
108
- /** Default pattern for the Nest / foodlabel / winecode `helper.formatDate`. */
109
- export const DEFAULT_BUSINESS_DATETIME_PATTERN = 'YYYY-MM-DDThh:mm:ss';
110
- /**
111
- * Format an instant in the business TZ, compatible with the Nest `helper.formatDate`.
112
- *
113
- * Supported tokens: `YYYY` / `MM` / `DD` / `hh` / `mm` / `ss`, plus `S` for the source instant's
114
- * milliseconds (matching the Nest reference implementation).
115
- *
116
- * @param instant - the UTC instant to format.
117
- * @param pattern - the format pattern; defaults to {@link DEFAULT_BUSINESS_DATETIME_PATTERN}.
118
- * @returns the formatted string.
119
- * @example
120
- * formatBusinessDateTime(new Date('2026-07-05T21:00:00Z')); // → '2026-07-06T06:00:00' (JST)
121
- */
122
- export function formatBusinessDateTime(instant, pattern = DEFAULT_BUSINESS_DATETIME_PATTERN) {
123
- const wall = toWallClock(instant);
124
- let out = pattern;
125
- out = out.replace(/YYYY/g, String(wall.getUTCFullYear()));
126
- out = out.replace(/MM/g, pad2(wall.getUTCMonth() + 1));
127
- out = out.replace(/DD/g, pad2(wall.getUTCDate()));
128
- out = out.replace(/hh/g, pad2(wall.getUTCHours()));
129
- out = out.replace(/mm/g, pad2(wall.getUTCMinutes()));
130
- out = out.replace(/ss/g, pad2(wall.getUTCSeconds()));
131
- const matched = out.match(/S/g);
132
- if (matched) {
133
- const milliSeconds = String(instant.getMilliseconds()).padStart(3, '0');
134
- const length = matched.length;
135
- for (let i = 0; i < length; i++) {
136
- out = out.replace(/S/, milliSeconds.substring(i, i + 1));
137
- }
138
- }
139
- return out;
140
- }
141
- /**
142
- * Parse a JST business date-time string into a UTC instant. Accepts a space or `T` separator
143
- * (`YYYY-MM-DD HH:mm:ss` or `YYYY-MM-DDTHH:mm:ss`).
144
- *
145
- * @param value - the business date-time string to parse.
146
- * @returns the corresponding UTC instant.
147
- * @throws RangeError when `value` is not a valid business date-time.
148
- * @example
149
- * parseBusinessDateTime('2026-07-06 06:00:00'); // → 2026-07-05T21:00:00Z
150
- */
151
- export function parseBusinessDateTime(value) {
152
- const normalized = value.includes('T') ? value.replace('T', ' ') : value;
153
- const m = /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/.exec(normalized);
154
- if (!m) {
155
- throw new RangeError(`Invalid BusinessDateTime: ${value}`);
156
- }
157
- const [, y, mo, d, h, mi, s] = m;
158
- const offsetHours = BUSINESS_TIMEZONE.offsetMinutes / 60;
159
- return new Date(Date.UTC(Number(y), Number(mo) - 1, Number(d), Number(h) - offsetHours, Number(mi), Number(s), 0));
160
- }
161
- /**
162
- * The UTC instant of `00:00:00` on a JST business calendar date.
163
- *
164
- * @param date - the business date as `YYYY-MM-DD`.
165
- * @returns the UTC instant at the start of that business day.
166
- */
167
- export function startOfBusinessDay(date) {
168
- return businessDateTimeInstant(date, '00:00:00');
169
- }
170
- /**
171
- * The UTC instant of `23:59:59` on a JST business calendar date.
172
- *
173
- * @param date - the business date as `YYYY-MM-DD`.
174
- * @returns the UTC instant at the end of that business day.
175
- */
176
- export function endOfBusinessDay(date) {
177
- return businessDateTimeInstant(date, '23:59:59');
178
- }
179
- /**
180
- * Convert a JST business calendar date + wall-clock time to a UTC instant.
181
- *
182
- * @param date - the business date as `YYYY-MM-DD`.
183
- * @param time - the wall-clock time as `HH:mm:ss` (or `HH:mm`).
184
- * @returns the corresponding UTC instant.
185
- * @throws RangeError when `date` or `time` is malformed.
186
- * @example
187
- * businessDateTimeInstant('2026-07-06', '06:00:00'); // → 2026-07-05T21:00:00Z
188
- */
189
- export function businessDateTimeInstant(date, time) {
190
- const [y, mo, d] = parseYmd(date);
191
- const [h, mi, s] = parseHms(time);
192
- const offsetHours = BUSINESS_TIMEZONE.offsetMinutes / 60;
193
- return new Date(Date.UTC(y, mo - 1, d, h - offsetHours, mi, s, 0));
194
- }
195
- /**
196
- * Add a number of calendar days to a JST business calendar date.
197
- *
198
- * @param date - the starting business date as `YYYY-MM-DD`.
199
- * @param days - the number of calendar days to add (may be negative).
200
- * @returns the resulting business date as `YYYY-MM-DD`.
201
- * @example
202
- * addBusinessDays('2026-07-06', 3); // → '2026-07-09'
203
- */
204
- export function addBusinessDays(date, days) {
205
- const anchor = businessDateTimeInstant(date, '12:00:00');
206
- return toBusinessDate(new Date(anchor.getTime() + days * 24 * 60 * 60 * 1000));
207
- }
208
- /**
209
- * The full years of age on a business calendar date (a birthday is a `BusinessDate`, not an instant).
210
- *
211
- * @param birthDate - the birth date as `YYYY-MM-DD`.
212
- * @param asOfDate - the reference business date; defaults to {@link today}.
213
- * @returns the age in completed years.
214
- * @example
215
- * ageOnBusinessDate('1990-07-10', '2026-07-06'); // → 35
216
- */
217
- export function ageOnBusinessDate(birthDate, asOfDate) {
218
- const asOf = asOfDate ?? today();
219
- const [by, bm, bd] = parseYmd(birthDate);
220
- const [ay, am, ad] = parseYmd(asOf);
221
- let age = ay - by;
222
- if (am < bm || (am === bm && ad < bd)) {
223
- age--;
224
- }
225
- return age;
226
- }
9
+ import { BUSINESS_TIMEZONE as businessTimezoneCanonical, BUSINESS_TIME_ZONES as businessTimeZonesCanonical, DEFAULT_BUSINESS_DATETIME_PATTERN as defaultBusinessDatetimePatternCanonical, TIME_ZONES as timeZonesCanonical, addBusinessDays as addBusinessDaysCanonical, addDays as addDaysCanonical, ageOnBusinessDate as ageOnBusinessDateCanonical, businessDateTimeInstant as businessDateTimeInstantCanonical, endOfBusinessDay as endOfBusinessDayCanonical, endOfDay as endOfDayCanonical, formatBusinessDateTime as formatBusinessDateTimeCanonical, getBusinessTimeConfig as getBusinessTimeConfigCanonical, getTimezoneConfig as getTimezoneConfigCanonical, initializeBusinessTime as initializeBusinessTimeCanonical, initializeTimezone as initializeTimezoneCanonical, localDateTimeToInstant as localDateTimeToInstantCanonical, normalizeBusinessDate as normalizeBusinessDateCanonical, parseBusinessDateTime as parseBusinessDateTimeCanonical, startOfBusinessDay as startOfBusinessDayCanonical, startOfDay as startOfDayCanonical, toBusinessDate as toBusinessDateCanonical, toBusinessDateTime as toBusinessDateTimeCanonical, toLocalDate as toLocalDateCanonical, toLocalDateTime as toLocalDateTimeCanonical, today as todayCanonical, } from '@rdlabo/workers-timezone';
10
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
11
+ export const TIME_ZONES = timeZonesCanonical;
12
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
13
+ export const BUSINESS_TIMEZONE = businessTimezoneCanonical;
14
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
15
+ export const BUSINESS_TIME_ZONES = businessTimeZonesCanonical;
16
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
17
+ export const DEFAULT_BUSINESS_DATETIME_PATTERN = defaultBusinessDatetimePatternCanonical;
18
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
19
+ export const initializeTimezone = initializeTimezoneCanonical;
20
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
21
+ export const getTimezoneConfig = getTimezoneConfigCanonical;
22
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
23
+ export const toLocalDate = toLocalDateCanonical;
24
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
25
+ export const toLocalDateTime = toLocalDateTimeCanonical;
26
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
27
+ export const localDateTimeToInstant = localDateTimeToInstantCanonical;
28
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
29
+ export const startOfDay = startOfDayCanonical;
30
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
31
+ export const endOfDay = endOfDayCanonical;
32
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
33
+ export const addDays = addDaysCanonical;
34
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
35
+ export const toBusinessDate = toBusinessDateCanonical;
36
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
37
+ export const toBusinessDateTime = toBusinessDateTimeCanonical;
38
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
39
+ export const businessDateTimeInstant = businessDateTimeInstantCanonical;
40
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
41
+ export const startOfBusinessDay = startOfBusinessDayCanonical;
42
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
43
+ export const endOfBusinessDay = endOfBusinessDayCanonical;
44
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
45
+ export const addBusinessDays = addBusinessDaysCanonical;
46
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
47
+ export const today = todayCanonical;
48
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
49
+ export const normalizeBusinessDate = normalizeBusinessDateCanonical;
50
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
51
+ export const formatBusinessDateTime = formatBusinessDateTimeCanonical;
52
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
53
+ export const parseBusinessDateTime = parseBusinessDateTimeCanonical;
54
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
55
+ export const ageOnBusinessDate = ageOnBusinessDateCanonical;
56
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
57
+ export const initializeBusinessTime = initializeBusinessTimeCanonical;
58
+ /** @deprecated Import from `@rdlabo/workers-timezone` instead. */
59
+ export const getBusinessTimeConfig = getBusinessTimeConfigCanonical;
@@ -1,6 +1,5 @@
1
+ import type { Connection, HyperdriveLike } from '@rdlabo/workers-mysql';
1
2
  import type { Env, MiddlewareHandler } from 'hono';
2
- import type { Connection } from 'mysql2/promise';
3
- import type { HyperdriveLike } from '../db/connection.js';
4
3
  import type { ExecutionContextLike } from '../http/execution-context.js';
5
4
  /** Inputs available while building a per-request application container. */
6
5
  export interface ContainerBuildContext<TEnv extends Env['Bindings']> {
@@ -1,4 +1,4 @@
1
- import { withMysqlConnections } from '../db/connection.js';
1
+ import { withMysqlConnections } from '@rdlabo/workers-mysql';
2
2
  /**
3
3
  * Standard singleton-app container wiring: per-request Hyperdrive connections + `c.set('container')`.
4
4
  *
@@ -1,25 +1,100 @@
1
1
  /**
2
- * Data-layer helpers that depend on `mysql2` (exposed under the `/db` subpath because the package
3
- * root is reserved for web-standard-only code).
4
- *
5
- * @remarks
6
- * This module never depends on the type identity of `drizzle-orm`: the ORM instance is always
7
- * supplied by the consumer. That keeps the kit safe to use even when the kit and the consuming app
8
- * resolve separate copies of `drizzle-orm`.
2
+ * Compatibility re-export of `@rdlabo/workers-mysql` (and its `/drizzle` / `/migrations` entry points).
3
+ * Prefer installing those packages and importing their APIs directly. Symbol-level `@deprecated`
4
+ * tags mark each promoted export; kit-owned payment SQL helpers are not deprecated.
9
5
  *
10
6
  * @packageDocumentation
11
7
  */
12
- export { retryWhenDeadlock } from './retry.js';
13
- export { createMysqlDatabase, createHyperdriveDatabase, databaseFrom } from './database.js';
14
- export type { Database, DisposableDatabase, HyperdriveDatabase, ReadTransaction, QueryRunner, TxOf, CreateMysqlDatabaseOptions, CreateHyperdriveDatabaseOptions, Connection, Pool, } from './database.js';
15
- export { insertIdOf, affectedRowsOf, insertedIdsOf } from './write-result.js';
16
- export type { DzWriteResult } from './write-result.js';
17
- export { hyperdriveConnectionOptions, withMysqlConnections } from './connection.js';
18
- export type { HyperdriveLike, ExecutionContextLike } from './connection.js';
19
- export { MYSQL_TIMEZONE, toJstDate, jstTimestampParams, jstDatetimeParams, jstDateParams } from './jst.js';
20
- export { jstTimestamp, jstDatetime, jstDate, jstOnUpdateNow } from './columns.js';
21
- export { DRIZZLE_ORM_OPTIONS, honoDrizzleConfig, resolveDbSecret } from './orm-config.js';
22
- export type { HonoDrizzleConfigOptions, ResolvedDbSecret } from './orm-config.js';
23
- export { baselineMigrations, readBaselineEntry } from './migrate.js';
24
- export type { BaselineMigrationsOptions, BaselineResult, BaselineEntry } from './migrate.js';
8
+ import { MYSQL_TIMEZONE as mysqlTimezoneCanonical, affectedRowsOf as affectedRowsOfCanonical, createHyperdriveDatabase as createHyperdriveDatabaseCanonical, createMysqlDatabase as createMysqlDatabaseCanonical, databaseFrom as databaseFromCanonical, hyperdriveConnectionOptions as hyperdriveConnectionOptionsCanonical, insertIdOf as insertIdOfCanonical, insertedIdsOf as insertedIdsOfCanonical, jstDateParams as jstDateParamsCanonical, jstDatetimeParams as jstDatetimeParamsCanonical, jstTimestampParams as jstTimestampParamsCanonical, retryWhenDeadlock as retryWhenDeadlockCanonical, toJstDate as toJstDateCanonical, withMysqlConnections as withMysqlConnectionsCanonical } from '@rdlabo/workers-mysql';
9
+ import type { Connection as ConnectionCanonical, CreateHyperdriveDatabaseOptions as CreateHyperdriveDatabaseOptionsCanonical, CreateMysqlDatabaseOptions as CreateMysqlDatabaseOptionsCanonical, Database as DatabaseCanonical, DisposableDatabase as DisposableDatabaseCanonical, DzWriteResult as DzWriteResultCanonical, ExecutionContextLike as ExecutionContextLikeCanonical, HyperdriveDatabase as HyperdriveDatabaseCanonical, HyperdriveLike as HyperdriveLikeCanonical, Pool as PoolCanonical, QueryRunner as QueryRunnerCanonical, ReadTransaction as ReadTransactionCanonical, TxOf as TxOfCanonical } from '@rdlabo/workers-mysql';
10
+ import { DRIZZLE_ORM_OPTIONS as drizzleOrmOptionsCanonical, honoDrizzleConfig as honoDrizzleConfigCanonical, jstDate as jstDateCanonical, jstDatetime as jstDatetimeCanonical, jstOnUpdateNow as jstOnUpdateNowCanonical, jstTimestamp as jstTimestampCanonical, resolveDbSecret as resolveDbSecretCanonical, workersDrizzleConfig as workersDrizzleConfigCanonical } from '@rdlabo/workers-mysql/drizzle';
11
+ import type { HonoDrizzleConfigOptions as HonoDrizzleConfigOptionsCanonical, ResolvedDbSecret as ResolvedDbSecretCanonical, WorkersDrizzleConfigOptions as WorkersDrizzleConfigOptionsCanonical } from '@rdlabo/workers-mysql/drizzle';
12
+ import { baselineMigrations as baselineMigrationsCanonical, readBaselineEntry as readBaselineEntryCanonical } from '@rdlabo/workers-mysql/migrations';
13
+ import type { BaselineEntry as BaselineEntryCanonical, BaselineMigrationsOptions as BaselineMigrationsOptionsCanonical, BaselineResult as BaselineResultCanonical } from '@rdlabo/workers-mysql/migrations';
14
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
15
+ export declare const retryWhenDeadlock: typeof retryWhenDeadlockCanonical;
16
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
17
+ export declare const createMysqlDatabase: typeof createMysqlDatabaseCanonical;
18
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
19
+ export declare const createHyperdriveDatabase: typeof createHyperdriveDatabaseCanonical;
20
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
21
+ export declare const databaseFrom: typeof databaseFromCanonical;
22
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
23
+ export declare const insertIdOf: typeof insertIdOfCanonical;
24
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
25
+ export declare const affectedRowsOf: typeof affectedRowsOfCanonical;
26
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
27
+ export declare const insertedIdsOf: typeof insertedIdsOfCanonical;
28
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
29
+ export declare const hyperdriveConnectionOptions: typeof hyperdriveConnectionOptionsCanonical;
30
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
31
+ export declare const withMysqlConnections: typeof withMysqlConnectionsCanonical;
32
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
33
+ export declare const MYSQL_TIMEZONE: typeof mysqlTimezoneCanonical;
34
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
35
+ export declare const toJstDate: typeof toJstDateCanonical;
36
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
37
+ export declare const jstTimestampParams: typeof jstTimestampParamsCanonical;
38
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
39
+ export declare const jstDatetimeParams: typeof jstDatetimeParamsCanonical;
40
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
41
+ export declare const jstDateParams: typeof jstDateParamsCanonical;
42
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
43
+ export type TxOf<TDrizzle> = TxOfCanonical<TDrizzle>;
44
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
45
+ export type Database<TDrizzle, TTx = TxOfCanonical<TDrizzle>> = DatabaseCanonical<TDrizzle, TTx>;
46
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
47
+ export type DisposableDatabase<TDrizzle, TTx = TxOfCanonical<TDrizzle>> = DisposableDatabaseCanonical<TDrizzle, TTx>;
48
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
49
+ export type HyperdriveDatabase<TDrizzle, TTx = TxOfCanonical<TDrizzle>> = HyperdriveDatabaseCanonical<TDrizzle, TTx>;
50
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
51
+ export type ReadTransaction<TTx> = ReadTransactionCanonical<TTx>;
52
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
53
+ export type QueryRunner = QueryRunnerCanonical;
54
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
55
+ export type CreateMysqlDatabaseOptions<TDrizzle> = CreateMysqlDatabaseOptionsCanonical<TDrizzle>;
56
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
57
+ export type CreateHyperdriveDatabaseOptions<TDrizzle> = CreateHyperdriveDatabaseOptionsCanonical<TDrizzle>;
58
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
59
+ export type Connection = ConnectionCanonical;
60
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
61
+ export type Pool = PoolCanonical;
62
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
63
+ export type DzWriteResult = DzWriteResultCanonical;
64
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
65
+ export type HyperdriveLike = HyperdriveLikeCanonical;
66
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
67
+ export type ExecutionContextLike = ExecutionContextLikeCanonical;
68
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
69
+ export declare const jstTimestamp: typeof jstTimestampCanonical;
70
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
71
+ export declare const jstDatetime: typeof jstDatetimeCanonical;
72
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
73
+ export declare const jstDate: typeof jstDateCanonical;
74
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
75
+ export declare const jstOnUpdateNow: typeof jstOnUpdateNowCanonical;
76
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
77
+ export declare const DRIZZLE_ORM_OPTIONS: typeof drizzleOrmOptionsCanonical;
78
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
79
+ export declare const workersDrizzleConfig: typeof workersDrizzleConfigCanonical;
80
+ /** @deprecated Import `workersDrizzleConfig` from `@rdlabo/workers-mysql/drizzle` instead. */
81
+ export declare const honoDrizzleConfig: typeof honoDrizzleConfigCanonical;
82
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
83
+ export declare const resolveDbSecret: typeof resolveDbSecretCanonical;
84
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
85
+ export type WorkersDrizzleConfigOptions = WorkersDrizzleConfigOptionsCanonical;
86
+ /** @deprecated Import `WorkersDrizzleConfigOptions` from `@rdlabo/workers-mysql/drizzle` instead. */
87
+ export type HonoDrizzleConfigOptions = HonoDrizzleConfigOptionsCanonical;
88
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
89
+ export type ResolvedDbSecret = ResolvedDbSecretCanonical;
90
+ /** @deprecated Import from `@rdlabo/workers-mysql/migrations` instead. */
91
+ export declare const baselineMigrations: typeof baselineMigrationsCanonical;
92
+ /** @deprecated Import from `@rdlabo/workers-mysql/migrations` instead. */
93
+ export declare const readBaselineEntry: typeof readBaselineEntryCanonical;
94
+ /** @deprecated Import from `@rdlabo/workers-mysql/migrations` instead. */
95
+ export type BaselineMigrationsOptions = BaselineMigrationsOptionsCanonical;
96
+ /** @deprecated Import from `@rdlabo/workers-mysql/migrations` instead. */
97
+ export type BaselineResult = BaselineResultCanonical;
98
+ /** @deprecated Import from `@rdlabo/workers-mysql/migrations` instead. */
99
+ export type BaselineEntry = BaselineEntryCanonical;
25
100
  export { reopenGuardedPaymentFailedSet } from './payment-failed.js';
package/dist/db/index.js CHANGED
@@ -1,20 +1,61 @@
1
1
  /**
2
- * Data-layer helpers that depend on `mysql2` (exposed under the `/db` subpath because the package
3
- * root is reserved for web-standard-only code).
4
- *
5
- * @remarks
6
- * This module never depends on the type identity of `drizzle-orm`: the ORM instance is always
7
- * supplied by the consumer. That keeps the kit safe to use even when the kit and the consuming app
8
- * resolve separate copies of `drizzle-orm`.
2
+ * Compatibility re-export of `@rdlabo/workers-mysql` (and its `/drizzle` / `/migrations` entry points).
3
+ * Prefer installing those packages and importing their APIs directly. Symbol-level `@deprecated`
4
+ * tags mark each promoted export; kit-owned payment SQL helpers are not deprecated.
9
5
  *
10
6
  * @packageDocumentation
11
7
  */
12
- export { retryWhenDeadlock } from './retry.js';
13
- export { createMysqlDatabase, createHyperdriveDatabase, databaseFrom } from './database.js';
14
- export { insertIdOf, affectedRowsOf, insertedIdsOf } from './write-result.js';
15
- export { hyperdriveConnectionOptions, withMysqlConnections } from './connection.js';
16
- export { MYSQL_TIMEZONE, toJstDate, jstTimestampParams, jstDatetimeParams, jstDateParams } from './jst.js';
17
- export { jstTimestamp, jstDatetime, jstDate, jstOnUpdateNow } from './columns.js';
18
- export { DRIZZLE_ORM_OPTIONS, honoDrizzleConfig, resolveDbSecret } from './orm-config.js';
19
- export { baselineMigrations, readBaselineEntry } from './migrate.js';
8
+ /* eslint-disable @typescript-eslint/no-deprecated -- compatibility aliases of promoted/canonical APIs */
9
+ import { MYSQL_TIMEZONE as mysqlTimezoneCanonical, affectedRowsOf as affectedRowsOfCanonical, createHyperdriveDatabase as createHyperdriveDatabaseCanonical, createMysqlDatabase as createMysqlDatabaseCanonical, databaseFrom as databaseFromCanonical, hyperdriveConnectionOptions as hyperdriveConnectionOptionsCanonical, insertIdOf as insertIdOfCanonical, insertedIdsOf as insertedIdsOfCanonical, jstDateParams as jstDateParamsCanonical, jstDatetimeParams as jstDatetimeParamsCanonical, jstTimestampParams as jstTimestampParamsCanonical, retryWhenDeadlock as retryWhenDeadlockCanonical, toJstDate as toJstDateCanonical, withMysqlConnections as withMysqlConnectionsCanonical, } from '@rdlabo/workers-mysql';
10
+ import { DRIZZLE_ORM_OPTIONS as drizzleOrmOptionsCanonical, honoDrizzleConfig as honoDrizzleConfigCanonical, jstDate as jstDateCanonical, jstDatetime as jstDatetimeCanonical, jstOnUpdateNow as jstOnUpdateNowCanonical, jstTimestamp as jstTimestampCanonical, resolveDbSecret as resolveDbSecretCanonical, workersDrizzleConfig as workersDrizzleConfigCanonical, } from '@rdlabo/workers-mysql/drizzle';
11
+ import { baselineMigrations as baselineMigrationsCanonical, readBaselineEntry as readBaselineEntryCanonical, } from '@rdlabo/workers-mysql/migrations';
12
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
13
+ export const retryWhenDeadlock = retryWhenDeadlockCanonical;
14
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
15
+ export const createMysqlDatabase = createMysqlDatabaseCanonical;
16
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
17
+ export const createHyperdriveDatabase = createHyperdriveDatabaseCanonical;
18
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
19
+ export const databaseFrom = databaseFromCanonical;
20
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
21
+ export const insertIdOf = insertIdOfCanonical;
22
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
23
+ export const affectedRowsOf = affectedRowsOfCanonical;
24
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
25
+ export const insertedIdsOf = insertedIdsOfCanonical;
26
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
27
+ export const hyperdriveConnectionOptions = hyperdriveConnectionOptionsCanonical;
28
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
29
+ export const withMysqlConnections = withMysqlConnectionsCanonical;
30
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
31
+ export const MYSQL_TIMEZONE = mysqlTimezoneCanonical;
32
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
33
+ export const toJstDate = toJstDateCanonical;
34
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
35
+ export const jstTimestampParams = jstTimestampParamsCanonical;
36
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
37
+ export const jstDatetimeParams = jstDatetimeParamsCanonical;
38
+ /** @deprecated Import from `@rdlabo/workers-mysql` instead. */
39
+ export const jstDateParams = jstDateParamsCanonical;
40
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
41
+ export const jstTimestamp = jstTimestampCanonical;
42
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
43
+ export const jstDatetime = jstDatetimeCanonical;
44
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
45
+ export const jstDate = jstDateCanonical;
46
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
47
+ export const jstOnUpdateNow = jstOnUpdateNowCanonical;
48
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
49
+ export const DRIZZLE_ORM_OPTIONS = drizzleOrmOptionsCanonical;
50
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
51
+ export const workersDrizzleConfig = workersDrizzleConfigCanonical;
52
+ /** @deprecated Import `workersDrizzleConfig` from `@rdlabo/workers-mysql/drizzle` instead. */
53
+ export const honoDrizzleConfig = honoDrizzleConfigCanonical;
54
+ /** @deprecated Import from `@rdlabo/workers-mysql/drizzle` instead. */
55
+ export const resolveDbSecret = resolveDbSecretCanonical;
56
+ /** @deprecated Import from `@rdlabo/workers-mysql/migrations` instead. */
57
+ export const baselineMigrations = baselineMigrationsCanonical;
58
+ /** @deprecated Import from `@rdlabo/workers-mysql/migrations` instead. */
59
+ export const readBaselineEntry = readBaselineEntryCanonical;
60
+ // Payment-domain SQL remains owned by workers-hono-kit rather than the generic MySQL package.
20
61
  export { reopenGuardedPaymentFailedSet } from './payment-failed.js';
@@ -3,7 +3,7 @@ import type { SQL } from 'drizzle-orm';
3
3
  * `payment_failed` persistence helpers (MySQL / Drizzle).
4
4
  *
5
5
  * @remarks
6
- * Lives in the `./db` subpath because it imports `drizzle-orm` (a peer); the web-standard root export
6
+ * Lives in the `./db` subpath because it imports the optional `drizzle-orm` peer; the root export
7
7
  * must stay free of ORM deps. The helper only builds SQL fragments — the consumer's repository
8
8
  * executes them, so it works regardless of the consumer's DB access layer (`db.write` / `helper.query`).
9
9
  */
@@ -3,7 +3,7 @@ import { sql } from 'drizzle-orm';
3
3
  * `payment_failed` persistence helpers (MySQL / Drizzle).
4
4
  *
5
5
  * @remarks
6
- * Lives in the `./db` subpath because it imports `drizzle-orm` (a peer); the web-standard root export
6
+ * Lives in the `./db` subpath because it imports the optional `drizzle-orm` peer; the root export
7
7
  * must stay free of ORM deps. The helper only builds SQL fragments — the consumer's repository
8
8
  * executes them, so it works regardless of the consumer's DB access layer (`db.write` / `helper.query`).
9
9
  */
package/dist/index.d.ts CHANGED
@@ -22,8 +22,6 @@ export { createMaintenanceMiddleware, createMaintenanceWaitHandler, isMaintenanc
22
22
  export type { MaintenanceBody, MaintenanceMiddlewareOptions, MaintenanceWaitOptions, } from './middleware/maintenance.js';
23
23
  export { createIsolateMemo } from './container/isolate-memo.js';
24
24
  export type { IsolateMemo } from './container/isolate-memo.js';
25
- export { createContainerRuntime } from './container/middleware.js';
26
- export type { ContainerBuildContext, ContainerRuntime, ContainerRuntimeOptions } from './container/middleware.js';
27
25
  export { createRolePolicy } from './authorization/role-policy.js';
28
26
  export type { RolePermissionMap, RolePolicy, RolePolicyConfig, RoleRelationMap } from './authorization/role-policy.js';
29
27
  export { getUserProtocol } from './http/user-protocol.js';
@@ -75,7 +73,6 @@ export { classifyAppleRenewal, verifyAppleReceipt } from './iap/apple.js';
75
73
  export type { AppleRenewalClassification, AppleRenewalState, AppleVerifyReceiptResponse, ApplePendingRenewalInfo, AppleLatestReceiptInfo, } from './iap/apple.js';
76
74
  export { classifyGoogleSubscription, getGoogleSubscription, googleAccessToken } from './iap/google.js';
77
75
  export type { GoogleSubscriptionClassification, GoogleSubscriptionState, GoogleSubscriptionPurchase, GoogleOAuthCredentials, } from './iap/google.js';
78
- export { retryWhenDeadlock } from './db/retry.js';
79
76
  export { sendInChunks } from './queue/send.js';
80
77
  export type { QueueLike, QueueSendMessage } from './queue/send.js';
81
78
  export { isNonRetryableQueueError, processBatch } from './queue/consumer.js';
package/dist/index.js CHANGED
@@ -20,7 +20,6 @@ export { AuthTokenMissingError, createAuthMiddleware } from './middleware/auth.j
20
20
  export { perfLog } from './middleware/perf-log.js';
21
21
  export { createMaintenanceMiddleware, createMaintenanceWaitHandler, isMaintenanceEnabled, MAINTENANCE_BODY, MAINTENANCE_CODE, MAINTENANCE_WAIT_PATH, } from './middleware/maintenance.js';
22
22
  export { createIsolateMemo } from './container/isolate-memo.js';
23
- export { createContainerRuntime } from './container/middleware.js';
24
23
  // authorization
25
24
  export { createRolePolicy } from './authorization/role-policy.js';
26
25
  // http
@@ -55,8 +54,6 @@ export { paymentFailureMessageJa, iapFailureKey, UNRESOLVED_PAYMENT_STATUSES } f
55
54
  // in-app purchase (Apple / Google)
56
55
  export { classifyAppleRenewal, verifyAppleReceipt } from './iap/apple.js';
57
56
  export { classifyGoogleSubscription, getGoogleSubscription, googleAccessToken } from './iap/google.js';
58
- // db
59
- export { retryWhenDeadlock } from './db/retry.js';
60
57
  // queue
61
58
  export { sendInChunks } from './queue/send.js';
62
59
  export { isNonRetryableQueueError, processBatch } from './queue/consumer.js';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Hono adapter for `@rdlabo/workers-mysql`.
3
+ *
4
+ * Install `@rdlabo/workers-mysql` before importing this subpath.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export { createContainerRuntime } from '../container/middleware.js';
9
+ export type { ContainerBuildContext, ContainerRuntime, ContainerRuntimeOptions } from '../container/middleware.js';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hono adapter for `@rdlabo/workers-mysql`.
3
+ *
4
+ * Install `@rdlabo/workers-mysql` before importing this subpath.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export { createContainerRuntime } from '../container/middleware.js';
@@ -1,4 +1,4 @@
1
- import type { Pool } from 'mysql2/promise';
1
+ import type { Pool } from '@rdlabo/workers-mysql';
2
2
  import type { DecodedIdToken } from '../firebase/firebase-verifier.js';
3
3
  import type { FakeFirebaseVerifier } from './fakes.js';
4
4
  /**