suparepo 1.11.3
suparepo: ^1.11.3 copied to clipboard
Generate repository/data access layer code from Supabase database schema. Automatically creates CRUD operations, queries, and type-safe API clients.
Changelog #
1.11.3 - 2026-03-11 #
Fixed #
_isImportReferencedで.supafreeze.dartのクラス名がRepository/Customサフィックス付きの識別子に部分一致してしまうバグを修正- 例:
TentameProjectsがTentameProjectsRepositoryに誤マッチし、未使用importが除去されなかった
- 例:
1.11.2 - 2026-03-11 #
Fixed #
.custom.dartファイルの未使用 import(supabase, supafreeze)を自動クリーンアップする機能を追加generateExtensionFile()でメソッドが実際に参照する型のみ import するよう改善
1.11.1 - 2026-03-11 #
Fixed #
.custom.dartから埋め込み時に.supafreeze.dartimport を除外漏れしていたバグを修正- 生成リポジトリファイルで custom import が既存 import と重複するバグを修正
1.11.0 - 2026-03-11 #
Changed #
.custom.dartのカスタムメソッドを生成されるリポジトリクラスにインスタンスメソッドとして埋め込む方式に変更- extension メソッドは Dart の静的ディスパッチにより、テストでサブクラスから override できない問題を解決
.custom.dartファイル自体は extension 形式のまま保持(IDE サポート・編集用)- suparepo 実行時に
.custom.dartを読み取り、生成クラスに直接埋め込む - use_case 側で
.custom.dartの import が不要に - テストの fake リポジトリでカスタムメソッドを正常に override 可能
1.10.1 - 2026-03-11 #
Fixed #
- 複数行フィールド宣言(
static const _x =\n '...';)の後のカスタムメソッドが移行されないバグを修正 - カスタムメソッドが参照する private static field を extension に自動移行するよう対応
1.10.0 - 2026-03-11 #
Added #
- カスタムメソッド自動移行機能
- 再生成時に既存リポジトリファイルのカスタムメソッドを検出
*_repository.custom.dartに extension として自動移行_client→clientの参照を自動置換- 既存
.custom.dartファイルとのマージ対応(重複スキップ) - カスタム import も自動移行
--no-migrateフラグで移行スキップ可能
1.9.0 - 2026-03-11 #
1.8.3 - 2026-03-05 #
Fixed #
- Edge Function エラークラスの
fromFunctionExceptionでe.detailsがMap<String, dynamic>の場合にas Stringキャストで実行時エラーになるバグを修正- Supabase SDK が JSON レスポンスを自動デコードし
Map<String, dynamic>を返す場合に対応 e.detailsの実際の型を switch 式で判定し、String(未デコード)とMap<String, dynamic>(デコード済み)の両方に対応
- Supabase SDK が JSON レスポンスを自動デコードし
1.8.2 - 2026-03-04 #
Fixed #
- Edge Function クライアントの
response.data型キャストエラーを修正- Supabase SDK が
Content-Type: application/jsonのレスポンスを自動デコードしMap<String, dynamic>を返す場合、as List<int>キャストで実行時エラーが発生していた response.dataの実際の型を動的に判定し、List<int>(バイト列)とMap<String, dynamic>(デコード済み)の両方に対応
- Supabase SDK が
1.8.1 - 2026-03-03 #
Fixed #
fromRow()の DateTime 型フィールドでas DateTimeキャストが実行時エラーになるバグを修正- Supabase RPC の JSON レスポンスではタイムスタンプが文字列として返されるため、
DateTime.parse(row['col'] as String)に変更
- Supabase RPC の JSON レスポンスではタイムスタンプが文字列として返されるため、
1.8.0 - 2026-03-03 #
Added #
- Freezed result model generation for RETURNS TABLE functions (
generate_result_models)- Automatically generates
@freezedresult model classes withfromRow()factory for RPC functions usingRETURNS TABLE(col1 type1, ...) - Column names and types are fetched from
pg_proccatalog (proargmodes,proargnames,proallargtypes) - RPC client methods return typed
List<GetMyInviteCodeResult>instead ofList<Map<String, dynamic>> - Model file per function: e.g.
get_my_invite_code_result.dart - Configurable output directory via
result_models_output - Requires
execute_sqlRPC function andbuild_runnerfor Freezed code generation
- Automatically generates
Changed #
- Bumped
supabase_schema_coredependency to^1.3.0 RpcGenerator.generateRpcClient()acceptsgenerateResultModelsandresultModelsImportPrefixparameters
1.7.2 - 2026-03-03 #
Fixed #
- RPC functions using
RETURNS TABLE(...)are now correctly generated asFuture<List<Map<String, dynamic>>>instead ofFuture<void>- PostgreSQL internally represents
RETURNS TABLEasrecord+proretset = true, which was previously treated as void
- PostgreSQL internally represents
Changed #
- Bumped
supabase_schema_coredependency to^1.2.2
1.7.0 - 2026-02-23 #
Added #
- Edge Function error type generation (Freezed sealed class)
- Automatically detects error responses (status 4xx/5xx) from TypeScript source
- Extracts
snake_caseerror codes fromJSON.stringify({ error: "..." })patterns - Generates Freezed sealed class per Edge Function with named constructors for each error code
- Includes
unknownvariant for unrecognized error codes - Includes
fromFunctionExceptionfactory for easyFunctionExceptionparsing - Error class files are output alongside the Edge Function client (e.g.,
submit_campaign_receipt_error.dart)
1.6.2 - 2026-02-23 #
Changed #
- RPC client now uses typed generics on
rpc<T>()calls instead ofrpc<dynamic>()with manual casts- Scalar:
return await _client.rpc<bool>(...)(was_client.rpc<dynamic>(...)+response as bool) - setof:
_client.rpc<List<dynamic>>(...)+response.cast<T>() - void: unchanged (
_client.rpc<void>(...))
- Scalar:
1.6.1 - 2026-02-23 #
Fixed #
execute_sqlviapg_procnow returns all function rows (was only returning the first row due toEXECUTE ... INTOlimitation; fixed by wrapping query withjson_agg)execute_sqlis now automatically excluded from generated RPC client (internal infrastructure, not a user-facing function)
Changed #
- Bumped
supabase_schema_coredependency to^1.2.1
1.6.0 - 2026-02-23 #
Added #
- YAML
return_typesfor manual RPC return type overrides- Specify PostgreSQL type names per function (e.g.
text,bool,setof jsonb) - Takes highest priority over
pg_procauto-correction and OpenAPI spec - No
execute_sqlfunction needed — ideal for projects without it
- Specify PostgreSQL type names per function (e.g.
- Comprehensive README documentation for return type correction
execute_sqlsetup guide with SQL snippet and security notes- Type mapping reference table
- Priority order explanation
1.5.0 - 2026-02-23 #
Added #
- Accurate RPC return type resolution via
pg_proccatalog- Fixes boolean and other scalar functions being generated as
Future<void>instead ofFuture<bool>,Future<int>, etc. - Requires
execute_sqlRPC function; gracefully falls back to OpenAPI spec when unavailable
- Fixes boolean and other scalar functions being generated as
Changed #
- Bumped
supabase_schema_coredependency to^1.2.0
1.4.6 - 2026-02-23 #
Fixed #
- Fixed
argument_type_not_assignableerror in generated Edge Function clientresponse.dataisdynamic, added explicitas List<int>cast forutf8.decode()
1.4.5 - 2026-02-23 #
Fixed #
- Restored RPC/EdgeFunction provider generation in
supabase_client_provider.dart(unified mode)- 1.4.3 accidentally removed RPC/Edge providers from the unified file
- Now: without
client_providers_output, providers are embedded insupabase_client_provider.dart(default) - With
client_providers_output, providers go to a separate file
1.4.4 - 2026-02-23 #
Fixed #
- Added
ignore_for_filedirectives toedge_function_client.dartgenerated code- Suppresses
public_member_api_docs,sort_constructors_first,lines_longer_than_80_charslint warnings
- Suppresses
1.4.3 - 2026-02-23 #
Changed #
- Split RPC/EdgeFunction providers into separate
client_providers.dartfilesupabase_client_provider.dartnow contains onlysupabaseClientprovider- New
client_providers_outputsetting generatesclient_providers.dartwithsupabaseRpcClientandsupabaseEdgeFunctionClientproviders - Fixes
InvalidTypeExceptionwhen gateway package does not depend on data package
1.4.2 - 2026-02-22 #
Changed #
- Moved RPC and Edge Function client providers to unified
client_provider_outputfilesupabase_client_provider.dartnow containssupabaseClient,supabaseRpcClient, andsupabaseEdgeFunctionClientproviders- Removed inline provider generation from
rpc_client.dartandedge_function_client.dart
1.4.0 - 2026-02-22 #
Added #
- Automatic TypeScript type inference for Edge Functions
- Extracts request types from
body as { ... }patterns - Extracts response types from
JSON.stringify({ ... })in success responses - Detects required/optional fields from validation if-statements (
!field,typeofchecks) - Supports
handler.tsdelegation pattern - Type mapping:
string→String,number→int,boolean→bool - Enabled by default (
auto_detect_types: true), YAML model definitions take precedence
- Extracts request types from
- Riverpod provider generation for Edge Function client
- Generates
@Riverpod(keepAlive: true)provider forSupabaseEdgeFunctionClient - Consistent with existing RPC client provider pattern
- Generates
1.3.3 - 2026-02-18 #
Added #
client_provider_output— カスタム出力パスでsupabase_client_provider.dartを任意の場所に生成可能にclient_provider_import— 生成コード内のプロバイダー import パスをカスタマイズ可能に
1.3.2 - 2026-02-18 #
Fixed #
- RPC client: void 戻り値の関数で未使用の
response変数を除去 - RPC client:
rpc()に明示的な型引数を追加しinference_failure_on_function_invocationを解消
1.3.1 - 2026-02-18 #
Fixed #
- Tightened
supabase_schema_corelower bound to^1.1.0(fixes downgrade analysis) - Added example file for pub.dev scoring
- Updated README with
generate_providersandmodel_import_prefixdocumentation
1.3.0 - 2026-02-18 #
Added #
- Riverpod provider generation (
generate_providers)- Optionally generates
@Riverpod(keepAlive: true)providers for each repository and RPC client - Generates
supabase_client_provider.dartfor SupabaseClient DI - Controlled by
generate_providers: trueinsuparepo.yaml
- Optionally generates
- Individual model import prefix (
model_import_prefix)- Import each model file individually instead of a barrel file
- e.g.
model_import_prefix: package:data/importspackage:data/categories.supafreeze.dart
Fixed #
- Fixed
count()method to use correct Supabase SDK API (.select().count(CountOption.exact)) - Added
ignore_for_filedirectives to suppress lint warnings in generated code - Fixed required parameters ordering in RPC client methods
1.2.0 - 2026-02-12 #
Added #
- Configurable Supabase import (
supabase_import)- Allows switching between
package:supabase_flutter/supabase_flutter.dart(default) andpackage:supabase/supabase.dartfor pure Dart packages - Applied to all generators: repository, RPC client, and Edge Function client
- Allows switching between
1.1.0 - 2026-02-11 #
Added #
- RPC client generation (
RpcGenerator)- Detects RPC functions from OpenAPI spec and generates type-safe Dart methods
- Automatic snake_case to camelCase conversion with reserved word escaping
- Edge Function client generation
EdgeFunctionDetector— scans localsupabase/functions/directoryEdgeFunctionGenerator— generates clients with or without typed models- YAML-based request/response model definitions
- Configuration extensions (
RpcConfig,EdgeFunctionConfig)- RPC: enabled, output, include/exclude filters
- Edge Functions: enabled, output, functions_path, include/exclude, model definitions
- CLI (
bin/suparepo.dart)dart run suparepo— generate all enabled outputs--repo/--rpc/--edge— generate specific targets--force— force regenerate all
Changed #
- Added
rpcandedgeFunctionsfields toSuparepoConfig